<?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>56396</bug_id>
          
          <creation_ts>2011-03-15 11:58:04 -0700</creation_ts>
          <short_desc>Update ANGLE to at least r575</short_desc>
          <delta_ts>2011-06-20 19:24:16 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>56337</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>alokp</cc>
    
    <cc>cmarrin</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>367834</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-03-15 11:58:04 -0700</bug_when>
    <thetext>The ANGLE project needs to be updated to at least r575 before Bug 56337 can be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388920</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-04-19 16:57:54 -0700</bug_when>
    <thetext>Alok: Are you working on updating WebKit&apos;s copy of ANGLE?  This is still blocking Bug 56337.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388957</commentid>
    <comment_count>2</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-04-19 17:55:46 -0700</bug_when>
    <thetext>I am working on another ANGLE shader translator feature at the moment.  Once it&apos;s done, I&apos;ll do the rolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398086</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-05-04 11:10:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I am working on another ANGLE shader translator feature at the moment.  Once it&apos;s done, I&apos;ll do the rolling.

I merged the following commits from upstream to unblock Bug 56337:

r572
r573
r574
r575

Committed r85761.  &lt;http://trac.webkit.org/changeset/85761&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423773</commentid>
    <comment_count>4</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-06-20 10:56:17 -0700</bug_when>
    <thetext>Finally I got the Angle shader translator features in.  I&apos;ll roll Angle to r696 as I promised.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424005</commentid>
    <comment_count>5</comment_count>
      <attachid>97873</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-06-20 15:41:58 -0700</bug_when>
    <thetext>Created attachment 97873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424009</commentid>
    <comment_count>6</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-06-20 15:43:08 -0700</bug_when>
    <thetext>This patch has been tested with run-webkit-tests LayoutTests/fast/canvas/webgl and also run-safari with some webgl demos.  Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424013</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-20 15:45:26 -0700</bug_when>
    <thetext>Attachment 97873 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Last 3072 characters of output:
ce/ThirdParty/ANGLE/src/libGLESv2/vertexconversion.h:199:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/libGLESv2/vertexconversion.h:208:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp:3666:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp:4096:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:39:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:40:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:41:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:71:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:72:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:77:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:78:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:79:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:80:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:81:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:82:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:83:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:147:  The parameter name &quot;output&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:242:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:269:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
Total errors found: 1202 in 97 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424084</commentid>
    <comment_count>8</comment_count>
      <attachid>97873</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-06-20 16:54:24 -0700</bug_when>
    <thetext>Comment on attachment 97873
Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424187</commentid>
    <comment_count>9</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-06-20 19:24:16 -0700</bug_when>
    <thetext>Committed r89330: &lt;http://trac.webkit.org/changeset/89330&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97873</attachid>
            <date>2011-06-20 15:41:58 -0700</date>
            <delta_ts>2011-06-20 16:54:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56396-20110620154157.patch</filename>
            <type>text/plain</type>
            <size>778776</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5Mjk5KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NTUyIEBACisyMDExLTA2LTIwICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFOR0xFIHRv
IHI2OTYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
Mzk2CisKKyAgICAgICAgKiBBTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGluY2x1ZGUvRUdML2VnbGV4dC5oOgorICAgICAgICAqIGluY2x1ZGUvR0xTTEFORy9TaGFk
ZXJMYW5nLmg6CisgICAgICAgICogc3JjL2J1aWxkX2FuZ2xlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogc3JjL2NvbW1vbi9kZWJ1Zy5jcHA6CisgICAgICAgIChnbDo6b3V0
cHV0KToKKyAgICAgICAgKGdsOjp0cmFjZSk6CisgICAgICAgIChnbDo6cGVyZkFjdGl2ZSk6Cisg
ICAgICAgIChnbDo6U2NvcGVkUGVyZkV2ZW50SGVscGVyOjpTY29wZWRQZXJmRXZlbnRIZWxwZXIp
OgorICAgICAgICAoZ2w6OlNjb3BlZFBlcmZFdmVudEhlbHBlcjo6flNjb3BlZFBlcmZFdmVudEhl
bHBlcik6CisgICAgICAgICogc3JjL2NvbW1vbi9kZWJ1Zy5oOgorICAgICAgICAqIHNyYy9jb21t
b24vdmVyc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wu
Y3BwOgorICAgICAgICAoQ29uc3RydWN0Q29tcGlsZXIpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9Db2RlR2VuSExTTC5jcHA6CisgICAgICAgIChDb25zdHJ1Y3RDb21waWxlcik6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcDoKKyAgICAgICAgKFRDb21waWxlcjo6Y29tcGls
ZSk6CisgICAgICAgIChUQ29tcGlsZXI6Om1hcExvbmdWYXJpYWJsZU5hbWVzKToKKyAgICAgICAg
KFRDb21waWxlcjo6Z2V0TWFwcGVkTmFtZU1heExlbmd0aCk6CisgICAgICAgIChUQ29tcGlsZXI6
OmdldEV4dGVuc2lvbkJlaGF2aW9yKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29uc3RhbnRV
bmlvbi5oOgorICAgICAgICAoQ29uc3RhbnRVbmlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChD
b25zdGFudFVuaW9uOjpvcGVyYXRvcj4pOgorICAgICAgICAoQ29uc3RhbnRVbmlvbjo6b3BlcmF0
b3I8KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRXh0ZW5zaW9uQmVoYXZpb3IuaDoKKyAgICAg
ICAgKGdldEJlaGF2aW9yU3RyaW5nKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRm9yTG9vcFVu
cm9sbC5jcHA6IEFkZGVkLgorICAgICAgICAoRm9yTG9vcFVucm9sbDo6RmlsbExvb3BJbmRleElu
Zm8pOgorICAgICAgICAoRm9yTG9vcFVucm9sbDo6U3RlcCk6CisgICAgICAgIChGb3JMb29wVW5y
b2xsOjpTYXRpc2ZpZXNMb29wQ29uZGl0aW9uKToKKyAgICAgICAgKEZvckxvb3BVbnJvbGw6Ok5l
ZWRzVG9SZXBsYWNlU3ltYm9sV2l0aFZhbHVlKToKKyAgICAgICAgKEZvckxvb3BVbnJvbGw6Okdl
dExvb3BJbmRleFZhbHVlKToKKyAgICAgICAgKEZvckxvb3BVbnJvbGw6OlB1c2gpOgorICAgICAg
ICAoRm9yTG9vcFVucm9sbDo6UG9wKToKKyAgICAgICAgKEZvckxvb3BVbnJvbGw6OmdldExvb3BJ
bmNyZW1lbnQpOgorICAgICAgICAoRm9yTG9vcFVucm9sbDo6ZXZhbHVhdGVJbnRDb25zdGFudCk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaDogQWRkZWQuCisgICAgICAg
IChGb3JMb29wVW5yb2xsOjpGb3JMb29wVW5yb2xsKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
SW5pdGlhbGl6ZS5jcHA6CisgICAgICAgIChCdWlsdEluRnVuY3Rpb25zVmVydGV4KToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKE1hcExvbmdWYXJpYWJsZU5hbWVzOjpNYXBMb25nVmFyaWFibGVOYW1lcyk6CisgICAgICAg
IChNYXBMb25nVmFyaWFibGVOYW1lczo6dmlzaXRTeW1ib2wpOgorICAgICAgICAoTWFwTG9uZ1Zh
cmlhYmxlTmFtZXM6OnZpc2l0Q29uc3RhbnRVbmlvbik6CisgICAgICAgIChNYXBMb25nVmFyaWFi
bGVOYW1lczo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6OnZp
c2l0VW5hcnkpOgorICAgICAgICAoTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6OnZpc2l0U2VsZWN0aW9u
KToKKyAgICAgICAgKE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAg
ICAgIChNYXBMb25nVmFyaWFibGVOYW1lczo6dmlzaXRMb29wKToKKyAgICAgICAgKE1hcExvbmdW
YXJpYWJsZU5hbWVzOjp2aXNpdEJyYW5jaCk6CisgICAgICAgIChNYXBMb25nVmFyaWFibGVOYW1l
czo6bWFwVmFyeWluZ0xvbmdOYW1lKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvTWFwTG9uZ1Zh
cmlhYmxlTmFtZXMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEVTU0wu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFRPdXRwdXRFU1NMOjpUT3V0cHV0RVNTTCk6CisgICAgICAg
IChUT3V0cHV0RVNTTDo6d3JpdGVWYXJpYWJsZVByZWNpc2lvbik6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL091dHB1dEVTU0wuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1
dEdMU0wuY3BwOgorICAgICAgICAoVE91dHB1dEdMU0w6OlRPdXRwdXRHTFNMKToKKyAgICAgICAg
KFRPdXRwdXRHTFNMOjp3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvT3V0cHV0R0xTTC5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMQmFz
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjpUT3V0cHV0R0xTTEJhc2Up
OgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjp3cml0ZVRyaXBsZXQpOgorICAgICAgICAoVE91
dHB1dEdMU0xCYXNlOjp3cml0ZVZhcmlhYmxlVHlwZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJh
c2U6OndyaXRlRnVuY3Rpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6
d3JpdGVDb25zdGFudFVuaW9uKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRTeW1i
b2wpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAg
ICAgICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdEJpbmFyeSk6CisgICAgICAgIChUT3V0cHV0R0xT
TEJhc2U6OnZpc2l0VW5hcnkpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdFNlbGVj
dGlvbik6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QWdncmVnYXRlKToKKyAgICAg
ICAgKFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRMb29wKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFz
ZTo6dmlzaXRCcmFuY2gpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdENvZGVCbG9j
ayk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmg6IEFkZGVkLgorICAg
ICAgICAoVE91dHB1dEdMU0xCYXNlOjpvYmpTaW5rKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
T3V0cHV0SExTTC5jcHA6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6T3V0cHV0SExTTCk6Cisg
ICAgICAgIChzaDo6T3V0cHV0SExTTDo6aGVhZGVyKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNM
Ojp2aXNpdFVuYXJ5KToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZSk6
CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoc2g6
Ok91dHB1dEhMU0w6OnZpc2l0TG9vcCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRC
cmFuY2gpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3ApOgor
ICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Om91dHB1dExpbmVEaXJlY3RpdmUpOgorICAgICAgICAq
IHNyYy9jb21waWxlci9PdXRwdXRITFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1BhcnNl
SGVscGVyLmNwcDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnByZWNpc2lvbkVycm9yQ2hlY2sp
OgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNrKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvUGFyc2VIZWxwZXIuaDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OlRQYXJzZUNvbnRl
eHQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9TaEhhbmRsZS5oOgorICAgICAgICAqIHNyYy9j
b21waWxlci9TaGFkZXJMYW5nLmNwcDoKKyAgICAgICAgKGdldFZhcmlhYmxlSW5mbyk6CisgICAg
ICAgIChTaENvbnN0cnVjdENvbXBpbGVyKToKKyAgICAgICAgKFNoR2V0SW5mbyk6CisgICAgICAg
IChTaEdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChTaEdldEFjdGl2ZVVuaWZvcm0pOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9UcmFuc2xhdG9yRVNTTC5jcHA6IEFkZGVkLgorICAgICAgICAo
VHJhbnNsYXRvckVTU0w6OlRyYW5zbGF0b3JFU1NMKToKKyAgICAgICAgKFRyYW5zbGF0b3JFU1NM
Ojp0cmFuc2xhdGUpOgorICAgICAgICAoVHJhbnNsYXRvckVTU0w6OndyaXRlRXh0ZW5zaW9uQmVo
YXZpb3IpOgorICAgICAgICAqIHNyYy9jb21waWxlci9UcmFuc2xhdG9yRVNTTC5oOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHA6CisgICAgICAg
IChWYWxpZGF0ZUxpbWl0YXRpb25zOjp2aXNpdEJpbmFyeSk6CisgICAgICAgIChWYWxpZGF0ZUxp
bWl0YXRpb25zOjp2aXNpdExvb3ApOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYWxpZGF0ZUxp
bWl0YXRpb25zLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHA6Cisg
ICAgICAgIChnZXRWYXJpYWJsZUluZm8pOgorICAgICAgICAoZ2V0QnVpbHRJblZhcmlhYmxlSW5m
byk6CisgICAgICAgIChnZXRVc2VyRGVmaW5lZFZhcmlhYmxlSW5mbyk6CisgICAgICAgIChDb2xs
ZWN0QXR0cmlic1VuaWZvcm1zOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL1ZhcmlhYmxlSW5mby5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9WZXJzaW9uR0xTTC5j
cHA6CisgICAgICAgIChUVmVyc2lvbkdMU0w6OnZpc2l0U3ltYm9sKToKKyAgICAgICAgKFRWZXJz
aW9uR0xTTDo6dmlzaXRDb25zdGFudFVuaW9uKToKKyAgICAgICAgKFRWZXJzaW9uR0xTTDo6dmlz
aXRCaW5hcnkpOgorICAgICAgICAoVFZlcnNpb25HTFNMOjp2aXNpdFVuYXJ5KToKKyAgICAgICAg
KFRWZXJzaW9uR0xTTDo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoVFZlcnNpb25HTFNMOjp2
aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUVmVyc2lvbkdMU0w6OnZpc2l0TG9vcCk6CisgICAg
ICAgIChUVmVyc2lvbkdMU0w6OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
VmVyc2lvbkdMU0wuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy55OgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHA6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L2dsc2xhbmdfdGFiLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oOgor
ICAgICAgICAoVEludGVybUxvb3A6OlRJbnRlcm1Mb29wKToKKyAgICAgICAgKFRJbnRlcm1Mb29w
OjpzZXRVbnJvbGxGbGFnKToKKyAgICAgICAgKFRJbnRlcm1Mb29wOjpnZXRVbnJvbGxGbGFnKToK
KyAgICAgICAgKFRJbnRlcm1TeW1ib2w6OlRJbnRlcm1TeW1ib2wpOgorICAgICAgICAoVEludGVy
bVN5bWJvbDo6c2V0SWQpOgorICAgICAgICAoVEludGVybVN5bWJvbDo6c2V0U3ltYm9sKToKKyAg
ICAgICAgKFRJbnRlcm1TeW1ib2w6OmdldE9yaWdpbmFsU3ltYm9sKToKKyAgICAgICAgKFRJbnRl
cm1BZ2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybUFnZ3JlZ2F0
ZTo6c2V0RW5kTGluZSk6CisgICAgICAgIChUSW50ZXJtQWdncmVnYXRlOjpnZXRFbmRMaW5lKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2F0b20uYzoKKyAgICAgICAgKEFk
ZFN0cmluZyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9jb21waWxlLmg6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9jcHAuYzoKKyAgICAgICAgKENQ
UGVsc2UpOgorICAgICAgICAoZXZhbCk6CisgICAgICAgIChDUFBpZik6CisgICAgICAgIChDUFBp
ZmRlZik6CisgICAgICAgIChyZWFkQ1BQbGluZSk6CisgICAgICAgIChDaGtDb3JyZWN0RWxzZU5l
c3RpbmcpOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvY3Bwc3RydWN0LmM6
CisgICAgICAgIChSZXNldFByZXByb2Nlc3Nvcik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9zY2FubmVyLmM6CisgICAgICAgIChieXRlX3NjYW4pOgorICAgICAgICAoeXls
ZXhfQ1BQKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3NjYW5uZXIuaDoK
KyAgICAgICAgKiBzcmMvbGliRUdML0NvbmZpZy5jcHA6CisgICAgICAgIChlZ2w6OkNvbmZpZzo6
Q29uZmlnKToKKyAgICAgICAgKGVnbDo6Q29uZmlnOjpzZXQpOgorICAgICAgICAoZWdsOjpDb25m
aWdTZXQ6OmFkZCk6CisgICAgICAgIChlZ2w6OkNvbmZpZ1NldDo6Z2V0Q29uZmlncyk6CisgICAg
ICAgICogc3JjL2xpYkVHTC9Db25maWcuaDoKKyAgICAgICAgKiBzcmMvbGliRUdML0Rpc3BsYXku
Y3BwOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpEaXNwbGF5KToKKyAgICAgICAgKGVnbDo6RGlz
cGxheTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OnRlcm1pbmF0ZSk6Cisg
ICAgICAgIChlZ2w6OkRpc3BsYXk6OmdldENvbmZpZ0F0dHJpYik6CisgICAgICAgIChlZ2w6OkRp
c3BsYXk6OmNyZWF0ZURldmljZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmNyZWF0ZVdpbmRv
d1N1cmZhY2UpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpjcmVhdGVPZmZzY3JlZW5TdXJmYWNl
KToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6Y3JlYXRlQ29udGV4dCk6CisgICAgICAgIChlZ2w6
OkRpc3BsYXk6OmRlc3Ryb3lDb250ZXh0KToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6aXNJbml0
aWFsaXplZCk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmdldEFkYXB0ZXJJZGVudGlmaWVyKToK
KyAgICAgICAgKGVnbDo6RGlzcGxheTo6aXNEZXZpY2VMb3N0KToKKyAgICAgICAgKGVnbDo6RGlz
cGxheTo6Z2V0QnVmZmVyUG9vbCk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmluaXRFeHRlbnNp
b25TdHJpbmcpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpnZXRFeHRlbnNpb25TdHJpbmcpOgor
ICAgICAgICAoZWdsOjpEaXNwbGF5OjpnZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCk6CisgICAgICAg
IChlZ2w6OkRpc3BsYXk6OmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKiBz
cmMvbGliRUdML0Rpc3BsYXkuaDoKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6aXNEM2Q5RXhEZXZp
Y2UpOgorICAgICAgICAqIHNyYy9saWJFR0wvU3VyZmFjZS5jcHA6CisgICAgICAgIChlZ2w6OlN1
cmZhY2U6OlN1cmZhY2UpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjppbml0aWFsaXplKToKKyAg
ICAgICAgKGVnbDo6U3VyZmFjZTo6cmVsZWFzZSk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnJl
c2V0U3dhcENoYWluKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZVdpbmRvd1Byb2MpOgorICAgICAg
ICAoZWdsOjpTdXJmYWNlOjpzdWJjbGFzc1dpbmRvdyk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6
OnVuc3ViY2xhc3NXaW5kb3cpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpzd2FwKToKKyAgICAg
ICAgKGVnbDo6U3VyZmFjZTo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGVnbDo6U3VyZmFj
ZTo6Z2V0T2Zmc2NyZWVuVGV4dHVyZSk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OmdldFRleHR1
cmVGb3JtYXQpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpnZXRUZXh0dXJlVGFyZ2V0KToKKyAg
ICAgICAgKGVnbDo6U3VyZmFjZTo6c2V0Qm91bmRUZXh0dXJlKToKKyAgICAgICAgKGVnbDo6U3Vy
ZmFjZTo6Z2V0Qm91bmRUZXh0dXJlKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0Rm9ybWF0
KToKKyAgICAgICAgKiBzcmMvbGliRUdML1N1cmZhY2UuaDoKKyAgICAgICAgKGVnbDo6U3VyZmFj
ZTo6Z2V0U2hhcmVIYW5kbGUpOgorICAgICAgICAqIHNyYy9saWJFR0wvbGliRUdMLmNwcDoKKyAg
ICAgICAgKHZhbGlkYXRlRGlzcGxheSk6CisgICAgICAgICh2YWxpZGF0ZUNvbmZpZyk6CisgICAg
ICAgICh2YWxpZGF0ZUNvbnRleHQpOgorICAgICAgICAodmFsaWRhdGVTdXJmYWNlKToKKyAgICAg
ICAgKiBzcmMvbGliRUdML2xpYkVHTC5yYzogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkVHTC9s
aWJFR0wudmNwcm9qOgorICAgICAgICAqIHNyYy9saWJFR0wvbWFpbi5jcHA6CisgICAgICAgIChE
bGxNYWluKToKKyAgICAgICAgKiBzcmMvbGliRUdML21haW4uaDoKKyAgICAgICAgKiBzcmMvbGli
RUdML3Jlc291cmNlLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQmxpdC5jcHA6
CisgICAgICAgIChnbDo6QmxpdDo6aW5pdEdlb21ldHJ5KToKKyAgICAgICAgKGdsOjpCbGl0Ojpj
b3B5KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0JsaXQuaDoKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL0J1ZmZlci5jcHA6CisgICAgICAgIChnbDo6QnVmZmVyOjpCdWZmZXIpOgorICAgICAg
ICAoZ2w6OkJ1ZmZlcjo6fkJ1ZmZlcik6CisgICAgICAgIChnbDo6QnVmZmVyOjpidWZmZXJEYXRh
KToKKyAgICAgICAgKGdsOjpCdWZmZXI6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2w6OkJ1
ZmZlcjo6Z2V0U3RhdGljVmVydGV4QnVmZmVyKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OmdldFN0
YXRpY0luZGV4QnVmZmVyKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OmludmFsaWRhdGVTdGF0aWNE
YXRhKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OnByb21vdGVTdGF0aWNVc2FnZSk6CisgICAgICAg
ICogc3JjL2xpYkdMRVN2Mi9CdWZmZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0NvbnRl
eHQuY3BwOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6On5Db250ZXh0KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjptYWtlQ3VycmVudCk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6bWFya0FsbFN0YXRlRGlydHkpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnNldEFjdGl2ZVNhbXBsZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmNyZWF0ZUZy
YW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpjcmVhdGVGZW5jZSk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmRlbGV0ZUZlbmNlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpiaW5kVGV4dHVyZTJEKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpiaW5kVGV4dHVyZUN1YmVNYXApOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmdldFRleHR1cmUyRCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0VGV4dHVyZUN1
YmVNYXApOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFNhbXBsZXJUZXh0dXJlKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChnbDo6Q29udGV4dDo6YXBw
bHlSZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5U3RhdGUpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5VmVydGV4QnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjphcHBseVNoYWRlcnMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5VGV4dHVyZXMp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnJlYWRQaXhlbHMpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmNsZWFyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkcmF3QXJyYXlzKToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmZpbmlz
aCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Zmx1c2gpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmRyYXdDbG9zaW5nTGluZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0TWF4aW11bVZlcnRl
eFRleHR1cmVJbWFnZVVuaXRzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRNYXhpbXVtQ29t
YmluZWRUZXh0dXJlSW1hZ2VVbml0cyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNO
b25Qb3dlcjJUZXh0dXJlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkZXRhY2hUZXh0dXJlKToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRJbmNvbXBsZXRlVGV4dHVyZSk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6aW5pdEV4dGVuc2lvblN0cmluZyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOjpW
ZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhEZWNsYXJhdGlvbkNh
Y2hlOjp+VmVydGV4RGVjbGFyYXRpb25DYWNoZSk6CisgICAgICAgIChnbDo6VmVydGV4RGVjbGFy
YXRpb25DYWNoZTo6YXBwbHlEZWNsYXJhdGlvbik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9D
b250ZXh0Lmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHA6CisgICAg
ICAgIChnbDo6RnJhbWVidWZmZXI6Omxvb2t1cFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6
RnJhbWVidWZmZXI6OmNvbXBsZXRlbmVzcyk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9GcmFt
ZWJ1ZmZlci5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmNwcDog
QWRkZWQuCisgICAgICAgIChnbDo6SGFuZGxlQWxsb2NhdG9yOjpIYW5kbGVBbGxvY2F0b3IpOgor
ICAgICAgICAoZ2w6OkhhbmRsZUFsbG9jYXRvcjo6fkhhbmRsZUFsbG9jYXRvcik6CisgICAgICAg
IChnbDo6SGFuZGxlQWxsb2NhdG9yOjpzZXRCYXNlSGFuZGxlKToKKyAgICAgICAgKGdsOjpIYW5k
bGVBbGxvY2F0b3I6OmFsbG9jYXRlKToKKyAgICAgICAgKGdsOjpIYW5kbGVBbGxvY2F0b3I6OnJl
bGVhc2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmg6IEFkZGVk
LgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvSW5kZXhEYXRhTWFuYWdlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoZ2w6OkluZGV4RGF0YU1hbmFnZXI6OkluZGV4RGF0YU1hbmFnZXIpOgorICAgICAg
ICAoZ2w6OkluZGV4RGF0YU1hbmFnZXI6On5JbmRleERhdGFNYW5hZ2VyKToKKyAgICAgICAgKGds
Ojpjb252ZXJ0SW5kaWNlcyk6CisgICAgICAgIChnbDo6Y29tcHV0ZVJhbmdlKToKKyAgICAgICAg
KGdsOjpJbmRleERhdGFNYW5hZ2VyOjpwcmVwYXJlSW5kZXhEYXRhKToKKyAgICAgICAgKGdsOjpJ
bmRleERhdGFNYW5hZ2VyOjppbmRleFNpemUpOgorICAgICAgICAoZ2w6OkluZGV4RGF0YU1hbmFn
ZXI6OnR5cGVTaXplKToKKyAgICAgICAgKGdsOjpJbmRleEJ1ZmZlcjo6SW5kZXhCdWZmZXIpOgor
ICAgICAgICAoZ2w6OkluZGV4QnVmZmVyOjp+SW5kZXhCdWZmZXIpOgorICAgICAgICAoZ2w6Oklu
ZGV4QnVmZmVyOjpnZXRCdWZmZXIpOgorICAgICAgICAoZ2w6OkluZGV4QnVmZmVyOjp1bm1hcCk6
CisgICAgICAgIChnbDo6U3RyZWFtaW5nSW5kZXhCdWZmZXI6OlN0cmVhbWluZ0luZGV4QnVmZmVy
KToKKyAgICAgICAgKGdsOjpTdHJlYW1pbmdJbmRleEJ1ZmZlcjo6flN0cmVhbWluZ0luZGV4QnVm
ZmVyKToKKyAgICAgICAgKGdsOjpTdHJlYW1pbmdJbmRleEJ1ZmZlcjo6bWFwKToKKyAgICAgICAg
KGdsOjpTdHJlYW1pbmdJbmRleEJ1ZmZlcjo6cmVzZXJ2ZVNwYWNlKToKKyAgICAgICAgKGdsOjpT
dGF0aWNJbmRleEJ1ZmZlcjo6U3RhdGljSW5kZXhCdWZmZXIpOgorICAgICAgICAoZ2w6OlN0YXRp
Y0luZGV4QnVmZmVyOjp+U3RhdGljSW5kZXhCdWZmZXIpOgorICAgICAgICAoZ2w6OlN0YXRpY0lu
ZGV4QnVmZmVyOjptYXApOgorICAgICAgICAoZ2w6OlN0YXRpY0luZGV4QnVmZmVyOjpyZXNlcnZl
U3BhY2UpOgorICAgICAgICAoZ2w6OlN0YXRpY0luZGV4QnVmZmVyOjpsb29rdXBUeXBlKToKKyAg
ICAgICAgKGdsOjpTdGF0aWNJbmRleEJ1ZmZlcjo6bG9va3VwUmFuZ2UpOgorICAgICAgICAoZ2w6
OlN0YXRpY0luZGV4QnVmZmVyOjphZGRSYW5nZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9J
bmRleERhdGFNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoZ2w6OkluZGV4QnVmZmVyOjpzaXpl
KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1Byb2dyYW0uY3BwOgorICAgICAgICAoZ2w6OlBy
b2dyYW06OmdldFNlbWFudGljSW5kZXgpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldFNhbXBs
ZXJNYXBwaW5nKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRTYW1wbGVyVGV4dHVyZVR5cGUp
OgorICAgICAgICAoZ2w6OlByb2dyYW06OmNvbXBpbGVUb0JpbmFyeSk6CisgICAgICAgIChnbDo6
UHJvZ3JhbTo6cGFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpsaW5rVmFyeWlu
Z3MpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmxpbmspOgorICAgICAgICAoZ2w6OlByb2dyYW06
OmxpbmtVbmlmb3Jtcyk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6ZGVmaW5lVW5pZm9ybSk6Cisg
ICAgICAgIChnbDo6UHJvZ3JhbTo6YXBwbHlVbmlmb3JtMWl2KToKKyAgICAgICAgKGdsOjpQcm9n
cmFtOjphcHBlbmRUb0luZm9Mb2dTYW5pdGl6ZWQpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnVu
bGluayk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCk6
CisgICAgICAgIChnbDo6UHJvZ3JhbTo6dmFsaWRhdGUpOgorICAgICAgICAoZ2w6OlByb2dyYW06
OnZhbGlkYXRlU2FtcGxlcnMpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUHJvZ3JhbS5oOgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcDoKKyAgICAgICAgKGdsOjpS
ZW5kZXJidWZmZXI6OmdldFdpZHRoKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldEhl
aWdodCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRJbnRlcm5hbEZvcm1hdCk6Cisg
ICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRSZWRTaXplKToKKyAgICAgICAgKGdsOjpSZW5k
ZXJidWZmZXI6OmdldEdyZWVuU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRC
bHVlU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRBbHBoYVNpemUpOgorICAg
ICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTaXplKToKKyAgICAgICAgKGdsOjpSZW5k
ZXJidWZmZXI6OmdldFN0ZW5jaWxTaXplKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6Omdl
dFNhbXBsZXMpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OlJlbmRlcmJ1ZmZl
clN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFdpZHRoKToK
KyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRIZWlnaHQpOgorICAgICAgICAo
Z2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEludGVybmFsRm9ybWF0KToKKyAgICAgICAgKGds
OjpSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRSZWRTaXplKToKKyAgICAgICAgKGdsOjpSZW5kZXJi
dWZmZXJTdG9yYWdlOjpnZXRHcmVlblNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0
b3JhZ2U6OmdldEJsdWVTaXplKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlOjpn
ZXRBbHBoYVNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldERlcHRo
U2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0U3RlbmNpbFNpemUp
OgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEQzREZvcm1hdCk6CisgICAg
ICAgIChnbDo6Q29sb3JidWZmZXI6OkNvbG9yYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb2xvcmJ1
ZmZlcjo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OkNvbG9yYnVmZmVyOjpnZXRIZWlnaHQpOgor
ICAgICAgICAoZ2w6OkNvbG9yYnVmZmVyOjpnZXRJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChn
bDo6Q29sb3JidWZmZXI6OmdldFR5cGUpOgorICAgICAgICAoZ2w6OkNvbG9yYnVmZmVyOjpnZXRE
M0RGb3JtYXQpOgorICAgICAgICAoZ2w6OkNvbG9yYnVmZmVyOjppc0NvbG9yYnVmZmVyKToKKyAg
ICAgICAgKGdsOjpDb2xvcmJ1ZmZlcjo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpE
ZXB0aFN0ZW5jaWxidWZmZXI6OkRlcHRoU3RlbmNpbGJ1ZmZlcik6CisgICAgICAgIChnbDo6RGVw
dGhidWZmZXI6OkRlcHRoYnVmZmVyKToKKyAgICAgICAgKGdsOjpTdGVuY2lsYnVmZmVyOjpTdGVu
Y2lsYnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oOgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKGdsOjpS
ZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5h
Z2VyOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Y3JlYXRl
UHJvZ3JhbSk6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVUZXh0dXJlKToK
KyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoZ2w6OlJl
c291cmNlTWFuYWdlcjo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFn
ZXI6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6ZGVsZXRl
VGV4dHVyZSk6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Y2hlY2tUZXh0dXJlQWxsb2NhdGlv
bik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL1NoYWRlci5jcHA6CisgICAgICAgIChnbDo6U2hhZGVyOjpTaGFkZXIp
OgorICAgICAgICAoZ2w6OlNoYWRlcjo6Y29tcGlsZVRvSExTTCk6CisgICAgICAgICogc3JjL2xp
YkdMRVN2Mi9TaGFkZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1RleHR1cmUuY3BwOgor
ICAgICAgICAoZ2w6OlRleHR1cmU6OkltYWdlOjpJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVy
ZTo6SW1hZ2U6On5JbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6SW1hZ2U6OmlzUmVuZGVy
YWJsZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6SW1hZ2U6OmdldEQzREZvcm1hdCk6CisgICAg
ICAgIChnbDo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c2V0TWlu
RmlsdGVyKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpzZXRNYWdGaWx0ZXIpOgorICAgICAgICAo
Z2w6OlRleHR1cmU6OnNldFdyYXBTKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpzZXRXcmFwVCk6
CisgICAgICAgIChnbDo6VGV4dHVyZTo6bG9hZEltYWdlRGF0YSk6CisgICAgICAgIChnbDo6VGV4
dHVyZTo6bG9hZEFscGhhSW1hZ2VEYXRhKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpsb2FkQWxw
aGFGbG9hdEltYWdlRGF0YSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6bG9hZEFscGhhSGFsZkZs
b2F0SW1hZ2VEYXRhKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpsb2FkTHVtaW5hbmNlSW1hZ2VE
YXRhKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpsb2FkTHVtaW5hbmNlRmxvYXRJbWFnZURhdGEp
OgorICAgICAgICAoZ2w6OlRleHR1cmU6OmxvYWRMdW1pbmFuY2VIYWxmRmxvYXRJbWFnZURhdGEp
OgorICAgICAgICAoZ2w6OlRleHR1cmU6OmxvYWRMdW1pbmFuY2VBbHBoYUltYWdlRGF0YSk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZTo6bG9hZEx1bWluYW5jZUFscGhhRmxvYXRJbWFnZURhdGEpOgor
ICAgICAgICAoZ2w6OlRleHR1cmU6OmxvYWRMdW1pbmFuY2VBbHBoYUhhbGZGbG9hdEltYWdlRGF0
YSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6bG9hZFJHQlVCeXRlSW1hZ2VEYXRhKToKKyAgICAg
ICAgKGdsOjpUZXh0dXJlOjpsb2FkUkdCNTY1SW1hZ2VEYXRhKToKKyAgICAgICAgKGdsOjpUZXh0
dXJlOjpsb2FkUkdCRmxvYXRJbWFnZURhdGEpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmxvYWRS
R0JIYWxmRmxvYXRJbWFnZURhdGEpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmxvYWRSR0JBVUJ5
dGVJbWFnZURhdGFTU0UyKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpsb2FkUkdCQVVCeXRlSW1h
Z2VEYXRhKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpsb2FkUkdCQTQ0NDRJbWFnZURhdGEpOgor
ICAgICAgICAoZ2w6OlRleHR1cmU6OmxvYWRSR0JBNTU1MUltYWdlRGF0YSk6CisgICAgICAgIChn
bDo6VGV4dHVyZTo6bG9hZFJHQkFGbG9hdEltYWdlRGF0YSk6CisgICAgICAgIChnbDo6VGV4dHVy
ZTo6bG9hZFJHQkFIYWxmRmxvYXRJbWFnZURhdGEpOgorICAgICAgICAoZ2w6OlRleHR1cmU6Omxv
YWRCR1JBSW1hZ2VEYXRhKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpsb2FkQ29tcHJlc3NlZElt
YWdlRGF0YSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAg
IChnbDo6VGV4dHVyZTo6c2V0SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OnNldENvbXBy
ZXNzZWRJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c3ViSW1hZ2UpOgorICAgICAgICAo
Z2w6OlRleHR1cmU6OnN1YkltYWdlQ29tcHJlc3NlZCk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6
Y29weVRvSW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldFRleHR1cmUpOgorICAgICAg
ICAoZ2w6OlRleHR1cmU6OmlzRGlydHlQYXJhbWV0ZXIpOgorICAgICAgICAoZ2w6OlRleHR1cmU6
OmlzRGlydHlJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6cmVzZXREaXJ0eSk6CisgICAg
ICAgIChnbDo6VGV4dHVyZTo6Z2V0U2VyaWFsKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpjcmVh
dGlvbkxldmVscyk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6bGV2ZWxDb3VudCk6CisgICAgICAg
IChnbDo6VGV4dHVyZTo6aXNzdWVTZXJpYWwpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6VGV4
dHVyZTJEKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6On5UZXh0dXJlMkQpOgorICAgICAgICAo
Z2w6OlRleHR1cmUyRDo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0SGVp
Z2h0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldEludGVybmFsRm9ybWF0KToKKyAgICAg
ICAgKGdsOjpUZXh0dXJlMkQ6OmdldFR5cGUpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0
RDNERm9ybWF0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnJlZGVmaW5lVGV4dHVyZSk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZTJEOjpzZXRJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJE
OjpiaW5kVGV4SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6cmVsZWFzZVRleEltYWdl
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnNldENvbXByZXNzZWRJbWFnZSk6CisgICAgICAg
IChnbDo6VGV4dHVyZTJEOjpjb21taXRSZWN0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmNv
cHlJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpjb3B5U3ViSW1hZ2UpOgorICAgICAg
ICAoZ2w6OlRleHR1cmUyRDo6aXNDb21wbGV0ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpp
c0NvbXByZXNzZWQpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0QmFzZVRleHR1cmUpOgor
ICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4
dHVyZTJEOjp1cGRhdGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmNvbnZlcnRU
b1JlbmRlclRhcmdldCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpnZW5lcmF0ZU1pcG1hcHMp
OgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGds
OjpUZXh0dXJlMkQ6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVN
YXA6OmdldFdpZHRoKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0SGVpZ2h0KToK
KyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0SW50ZXJuYWxGb3JtYXQpOgorICAgICAg
ICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRUeXBlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3Vi
ZU1hcDo6Z2V0RDNERm9ybWF0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1h
Z2VQb3NYKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdYKToKKyAg
ICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NZKToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdZKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1h
cDo6c2V0SW1hZ2VQb3NaKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VO
ZWdaKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0Q29tcHJlc3NlZEltYWdlKToK
KyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Y29tbWl0UmVjdCk6CisgICAgICAgIChnbDo6
VGV4dHVyZUN1YmVNYXA6OmlzQ29tcGxldGUpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFw
Ojppc0NvbXByZXNzZWQpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRCYXNlVGV4
dHVyZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmNyZWF0ZVRleHR1cmUpOgorICAg
ICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjp1cGRhdGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlQ3ViZU1hcDo6Y29udmVydFRvUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0
dXJlQ3ViZU1hcDo6c2V0SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpyZWRl
ZmluZVRleHR1cmUpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpjb3B5SW1hZ2UpOgor
ICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRDdWJlTWFwU3VyZmFjZSk6CisgICAgICAg
IChnbDo6VGV4dHVyZUN1YmVNYXA6OmNvcHlTdWJJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVy
ZUN1YmVNYXA6OmdlbmVyYXRlTWlwbWFwcyk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6
OmdldFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmdldFJlbmRl
clRhcmdldCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmg6CisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoZ2w6
OlZlcnRleERhdGFNYW5hZ2VyOjpWZXJ0ZXhEYXRhTWFuYWdlcik6CisgICAgICAgIChnbDo6VmVy
dGV4RGF0YU1hbmFnZXI6On5WZXJ0ZXhEYXRhTWFuYWdlcik6CisgICAgICAgIChnbDo6VmVydGV4
RGF0YU1hbmFnZXI6OndyaXRlQXR0cmlidXRlRGF0YSk6CisgICAgICAgIChnbDo6VmVydGV4RGF0
YU1hbmFnZXI6OnByZXBhcmVWZXJ0ZXhEYXRhKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhEYXRhTWFu
YWdlcjo6c3BhY2VSZXF1aXJlZCk6CisgICAgICAgIChnbDo6VmVydGV4RGF0YU1hbmFnZXI6OmNo
ZWNrVmVydGV4Q2Fwcyk6CisgICAgICAgIChnbDo6VmVydGV4RGF0YU1hbmFnZXI6OnR5cGVJbmRl
eCk6CisgICAgICAgIChnbDo6VmVydGV4QnVmZmVyOjpWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAo
Z2w6OlZlcnRleEJ1ZmZlcjo6flZlcnRleEJ1ZmZlcik6CisgICAgICAgIChnbDo6VmVydGV4QnVm
ZmVyOjp1bm1hcCk6CisgICAgICAgIChnbDo6VmVydGV4QnVmZmVyOjpnZXRCdWZmZXIpOgorICAg
ICAgICAoZ2w6OkNvbnN0YW50VmVydGV4QnVmZmVyOjpDb25zdGFudFZlcnRleEJ1ZmZlcik6Cisg
ICAgICAgIChnbDo6Q29uc3RhbnRWZXJ0ZXhCdWZmZXI6On5Db25zdGFudFZlcnRleEJ1ZmZlcik6
CisgICAgICAgIChnbDo6QXJyYXlWZXJ0ZXhCdWZmZXI6OkFycmF5VmVydGV4QnVmZmVyKToKKyAg
ICAgICAgKGdsOjpBcnJheVZlcnRleEJ1ZmZlcjo6fkFycmF5VmVydGV4QnVmZmVyKToKKyAgICAg
ICAgKGdsOjpBcnJheVZlcnRleEJ1ZmZlcjo6YWRkUmVxdWlyZWRTcGFjZSk6CisgICAgICAgIChn
bDo6QXJyYXlWZXJ0ZXhCdWZmZXI6OmFkZFJlcXVpcmVkU3BhY2VGb3IpOgorICAgICAgICAoZ2w6
OlN0cmVhbWluZ1ZlcnRleEJ1ZmZlcjo6U3RyZWFtaW5nVmVydGV4QnVmZmVyKToKKyAgICAgICAg
KGdsOjpTdHJlYW1pbmdWZXJ0ZXhCdWZmZXI6On5TdHJlYW1pbmdWZXJ0ZXhCdWZmZXIpOgorICAg
ICAgICAoZ2w6OlN0cmVhbWluZ1ZlcnRleEJ1ZmZlcjo6bWFwKToKKyAgICAgICAgKGdsOjpTdHJl
YW1pbmdWZXJ0ZXhCdWZmZXI6OnJlc2VydmVSZXF1aXJlZFNwYWNlKToKKyAgICAgICAgKGdsOjpT
dGF0aWNWZXJ0ZXhCdWZmZXI6OlN0YXRpY1ZlcnRleEJ1ZmZlcik6CisgICAgICAgIChnbDo6U3Rh
dGljVmVydGV4QnVmZmVyOjp+U3RhdGljVmVydGV4QnVmZmVyKToKKyAgICAgICAgKGdsOjpTdGF0
aWNWZXJ0ZXhCdWZmZXI6Om1hcCk6CisgICAgICAgIChnbDo6U3RhdGljVmVydGV4QnVmZmVyOjpy
ZXNlcnZlUmVxdWlyZWRTcGFjZSk6CisgICAgICAgIChnbDo6U3RhdGljVmVydGV4QnVmZmVyOjps
b29rdXBBdHRyaWJ1dGUpOgorICAgICAgICAoZ2w6OlZlcnRleERhdGFNYW5hZ2VyOjpmb3JtYXRD
b252ZXJ0ZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvVmVydGV4RGF0YU1hbmFnZXIuaDog
QWRkZWQuCisgICAgICAgIChnbDo6QXJyYXlWZXJ0ZXhCdWZmZXI6OnNpemUpOgorICAgICAgICAo
Z2w6OlZlcnRleERhdGFNYW5hZ2VyOjpkaXJ0eUN1cnJlbnRWYWx1ZSk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwOgorICAgICAgICAodmFsaWRJbWFnZVNpemUpOgorICAg
ICAgICAoRXh0ZW5zaW9uOjpnbEJpbmRUZXhJbWFnZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9saWJHTEVTdjIuZGVmOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyLnJjOiBB
ZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3Byb2o6CisgICAgICAg
ICogc3JjL2xpYkdMRVN2Mi9tYWluLmNwcDoKKyAgICAgICAgKGVycm9yKToKKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL21hdGh1dGlsLmg6CisgICAgICAgIChnbDo6Y2xhbXApOgorICAgICAgICAo
Z2w6OmNsYW1wMDEpOgorICAgICAgICAoZ2w6OnRyYW5zZm9ybVBpeGVsUmVjdCk6CisgICAgICAg
IChnbDo6dHJhbnNmb3JtUGl4ZWxZT2Zmc2V0KToKKyAgICAgICAgKGdsOjphZGp1c3RXaW5kaW5n
KToKKyAgICAgICAgKGdsOjpzdXBwb3J0c1NTRTIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
cmVzb3VyY2UuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuY3Bw
OgorICAgICAgICAoZ2w6OkNvbXB1dGVDb21wcmVzc2VkUGl0Y2gpOgorICAgICAgICAoZXMyZHg6
OkNvbnZlcnRDdWJlRmFjZSk6CisgICAgICAgIChlczJkeDo6Q29udmVydFByaW1pdGl2ZVR5cGUp
OgorICAgICAgICAoZXMyZHg6OkNvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQpOgorICAgICAgICAo
ZXMyZHg6OkdldE11bHRpc2FtcGxlVHlwZUZyb21TYW1wbGVzKToKKyAgICAgICAgKGR4MmVzOjpH
ZXRTdGVuY2lsU2l6ZSk6CisgICAgICAgIChkeDJlczo6R2V0QWxwaGFTaXplKToKKyAgICAgICAg
KGR4MmVzOjpHZXRSZWRTaXplKToKKyAgICAgICAgKGR4MmVzOjpHZXRHcmVlblNpemUpOgorICAg
ICAgICAoZHgyZXM6OkdldEJsdWVTaXplKToKKyAgICAgICAgKGR4MmVzOjpHZXREZXB0aFNpemUp
OgorICAgICAgICAoZ2V0VGVtcFBhdGgpOgorICAgICAgICAod3JpdGVGaWxlKToKKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL3V0aWxpdGllcy5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvdmVy
dGV4Y29udmVyc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKGdsOjpJZGVudGl0eTo6Y29udmVydCk6
CisgICAgICAgIChnbDo6Q2FzdDo6Y29udmVydCk6CisgICAgICAgIChnbDo6Tm9ybWFsaXplOjpj
b252ZXJ0KToKKyAgICAgICAgKGdsOjpGaXhlZFRvRmxvYXQ6OmNvbnZlcnQpOgorICAgICAgICAo
Z2w6OlNpbXBsZURlZmF1bHRWYWx1ZXM6Onplcm8pOgorICAgICAgICAoZ2w6OlNpbXBsZURlZmF1
bHRWYWx1ZXM6Om9uZSk6CisgICAgICAgIChnbDo6Tm9ybWFsaXplZERlZmF1bHRWYWx1ZXM6Onpl
cm8pOgorICAgICAgICAoZ2w6Ok5vcm1hbGl6ZWREZWZhdWx0VmFsdWVzOjpvbmUpOgorICAgICAg
ICAoZ2w6OlZlcnRleERhdGFDb252ZXJ0ZXI6OmNvbnZlcnRBcnJheSk6CisgICAgICAgIChnbDo6
VmVydGV4RGF0YUNvbnZlcnRlcjo6cG9pbnRlckFkZEJ5dGVzKToKKyAgICAgICAgKGdsOjpWZXJ0
ZXhEYXRhQ29udmVydGVyOjpjb3B5Q29tcG9uZW50KToKKwogMjAxMS0wNS0yNCAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBhcnQgMiBvZiAyOiA8aHR0cDov
L3dlYmtpdC5vcmcvYi82MDgwNT4gRW5hYmxlIC1XbmV3bGluZS1lb2Ygb24gQU5HTEUKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2
ICsyMywxNiBAQAogCQk5MEQ5QjExODEyRTExREQ2MDAyRDQyNTUgLyogVmFyaWFibGVJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjExMDEy
RTExREQ2MDAyRDQyNTUgLyogVmFyaWFibGVJbmZvLmggKi87IH07CiAJCTkwRDlCMTE5MTJFMTFE
RDYwMDJENDI1NSAvKiBWZXJzaW9uR0xTTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjExMTEyRTExREQ2MDAyRDQyNTUgLyogVmVyc2lvbkdM
U0wuY3BwICovOyB9OwogCQk5MEQ5QjExQTEyRTExREQ2MDAyRDQyNTUgLyogVmVyc2lvbkdMU0wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMTEy
MTJFMTFERDYwMDJENDI1NSAvKiBWZXJzaW9uR0xTTC5oICovOyB9OworCQlBMEFBQkUyQzEzQUZF
ODEwMDBGMkVCRDEgLyogRm9yTG9vcFVucm9sbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMEFBQkUyQTEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9v
cFVucm9sbC5jcHAgKi87IH07CisJCUEwQUFCRTJEMTNBRkU4MTAwMEYyRUJEMSAvKiBGb3JMb29w
VW5yb2xsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MEFBQkUyQjEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVucm9sbC5oICovOyB9OworCQlBMEFB
QkUzMDEzQUZFODMwMDBGMkVCRDEgLyogTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTBBQUJFMkUxM0FGRTgzMDAw
RjJFQkQxIC8qIE1hcExvbmdWYXJpYWJsZU5hbWVzLmNwcCAqLzsgfTsKKwkJQTBBQUJFMzExM0FG
RTgzMDAwRjJFQkQxIC8qIE1hcExvbmdWYXJpYWJsZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMEFBQkUyRjEzQUZFODMwMDBGMkVCRDEgLyog
TWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCAqLzsgfTsKKwkJQTBBQUJFMzQxM0FGRTg0NzAwRjJFQkQx
IC8qIE91dHB1dEdMU0xCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEwQUFCRTMyMTNBRkU4NDcwMEYyRUJEMSAvKiBPdXRwdXRHTFNMQmFzZS5j
cHAgKi87IH07CisJCUEwQUFCRTM1MTNBRkU4NDcwMEYyRUJEMSAvKiBPdXRwdXRHTFNMQmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTBBQUJFMzMx
M0FGRTg0NzAwRjJFQkQxIC8qIE91dHB1dEdMU0xCYXNlLmggKi87IH07CisJCUEwQUFCRTQ0MTNB
RkU5NDUwMEYyRUJEMSAvKiBPdXRwdXRFU1NMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwQUFCRTQyMTNBRkU5NDUwMEYyRUJEMSAvKiBPdXRwdXRF
U1NMLmNwcCAqLzsgfTsKKwkJQTBBQUJFNDUxM0FGRTk0NTAwRjJFQkQxIC8qIE91dHB1dEVTU0wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwQUFCRTQz
MTNBRkU5NDUwMEYyRUJEMSAvKiBPdXRwdXRFU1NMLmggKi87IH07CisJCUEwQUFCRTQ4MTNBRkU5
NjEwMEYyRUJEMSAvKiBUcmFuc2xhdG9yRVNTTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMEFBQkU0NjEzQUZFOTYxMDBGMkVCRDEgLyogVHJhbnNs
YXRvckVTU0wuY3BwICovOyB9OworCQlBMEFBQkU0OTEzQUZFOTYxMDBGMkVCRDEgLyogVHJhbnNs
YXRvckVTU0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEwQUFCRTQ3MTNBRkU5NjEwMEYyRUJEMSAvKiBUcmFuc2xhdG9yRVNTTC5oICovOyB9OwogCQlG
QjM5RDI3MTEyMDBGMzVBMDAwODhFNjkgLyogQ29kZUdlbkdMU0wuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIzOUQyMjIxMjAwRjM1QTAwMDg4RTY5
IC8qIENvZGVHZW5HTFNMLmNwcCAqLzsgfTsKIAkJRkIzOUQyNzUxMjAwRjM1QTAwMDg4RTY5IC8q
IGRlYnVnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZCMzlEMjI2MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5jcHAgKi87IH07CiAJCUZCMzlEMjc5
MTIwMEYzNUEwMDA4OEU2OSAvKiBJbmZvU2luay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDIyQTEyMDBGMzVBMDAwODhFNjkgLyogSW5mb1Np
bmsuY3BwICovOyB9OwpAQCAtNzMsNiArODMsMTYgQEAKIAkJOTBEOUIxMTAxMkUxMURENjAwMkQ0
MjU1IC8qIFZhcmlhYmxlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
YXJpYWJsZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTBEOUIxMTExMkUx
MURENjAwMkQ0MjU1IC8qIFZlcnNpb25HTFNMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFZlcnNpb25HTFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTBEOUIxMTIxMkUxMURENjAwMkQ0MjU1IC8qIFZlcnNpb25HTFNMLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnNpb25HTFNMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUEwQUFCRTJBMTNBRkU4MTAwMEYyRUJEMSAvKiBGb3JMb29wVW5yb2xsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvckxvb3BVbnJvbGwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMEFBQkUyQjEzQUZFODEwMDBGMkVCRDEgLyog
Rm9yTG9vcFVucm9sbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JMb29w
VW5yb2xsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEwQUFCRTJFMTNBRkU4MzAw
MEYyRUJEMSAvKiBNYXBMb25nVmFyaWFibGVOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNYXBMb25nVmFyaWFibGVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUEwQUFCRTJGMTNBRkU4MzAwMEYyRUJEMSAvKiBNYXBMb25nVmFyaWFi
bGVOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBMb25nVmFyaWFi
bGVOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMEFBQkUzMjEzQUZFODQ3
MDBGMkVCRDEgLyogT3V0cHV0R0xTTEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gT3V0cHV0R0xTTEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMEFBQkUzMzEzQUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0R0xTTEJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3V0cHV0R0xTTEJhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTBBQUJFNDIxM0FGRTk0NTAwRjJFQkQxIC8qIE91dHB1dEVTU0wu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3V0cHV0RVNTTC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEwQUFCRTQzMTNBRkU5NDUwMEYyRUJEMSAv
KiBPdXRwdXRFU1NMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE91dHB1dEVT
U0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTBBQUJFNDYxM0FGRTk2MTAwRjJF
QkQxIC8qIFRyYW5zbGF0b3JFU1NMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRyYW5zbGF0b3JFU1NMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTBBQUJFNDcxM0FGRTk2MTAwRjJFQkQxIC8qIFRyYW5zbGF0b3JFU1NMLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zbGF0b3JFU1NMLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZCMzlEMEQxMTIwMEYwRTMwMDA4OEU2OSAvKiBsaWJBTkdMRS5hICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJBTkdMRS5hOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQlGQjM5RDE4NjEyMDBGMjYyMDAwODhFNjkgLyogQmFzZVR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VUeXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGQjM5RDE4NzEyMDBGMjYyMDAwODhFNjkgLyogQ29kZUdl
bkdMU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGluY2x1ZGVJbkluZGV4ID0gMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb2RlR2VuR0xTTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zNDAsNiArMzYwLDE2IEBACiAJCUZCMzlEMjIwMTIwMEYzNUEwMDA4OEU2OSAvKiBjb21waWxl
ciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTBBQUJF
MzIxM0FGRTg0NzAwRjJFQkQxIC8qIE91dHB1dEdMU0xCYXNlLmNwcCAqLywKKwkJCQlBMEFBQkUz
MzEzQUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0R0xTTEJhc2UuaCAqLywKKwkJCQlBMEFBQkU0NjEz
QUZFOTYxMDBGMkVCRDEgLyogVHJhbnNsYXRvckVTU0wuY3BwICovLAorCQkJCUEwQUFCRTQ3MTNB
RkU5NjEwMEYyRUJEMSAvKiBUcmFuc2xhdG9yRVNTTC5oICovLAorCQkJCUEwQUFCRTQyMTNBRkU5
NDUwMEYyRUJEMSAvKiBPdXRwdXRFU1NMLmNwcCAqLywKKwkJCQlBMEFBQkU0MzEzQUZFOTQ1MDBG
MkVCRDEgLyogT3V0cHV0RVNTTC5oICovLAorCQkJCUEwQUFCRTJFMTNBRkU4MzAwMEYyRUJEMSAv
KiBNYXBMb25nVmFyaWFibGVOYW1lcy5jcHAgKi8sCisJCQkJQTBBQUJFMkYxM0FGRTgzMDAwRjJF
QkQxIC8qIE1hcExvbmdWYXJpYWJsZU5hbWVzLmggKi8sCisJCQkJQTBBQUJFMkExM0FGRTgxMDAw
RjJFQkQxIC8qIEZvckxvb3BVbnJvbGwuY3BwICovLAorCQkJCUEwQUFCRTJCMTNBRkU4MTAwMEYy
RUJEMSAvKiBGb3JMb29wVW5yb2xsLmggKi8sCiAJCQkJRkIzOUQyNDQxMjAwRjM1QTAwMDg4RTY5
IC8qIHByZXByb2Nlc3NvciAqLywKIAkJCQlGQjM5RDIyMTEyMDBGMzVBMDAwODhFNjkgLyogQmFz
ZVR5cGVzLmggKi8sCiAJCQkJRkIzOUQyMjIxMjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5HTFNM
LmNwcCAqLywKQEAgLTQ1NSw2ICs0ODUsMTEgQEAKIAkJCQk5MEQ5QjExNjEyRTExREQ2MDAyRDQy
NTUgLyogVmFsaWRhdGVMaW1pdGF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMTgx
MkUxMURENjAwMkQ0MjU1IC8qIFZhcmlhYmxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBE
OUIxMUExMkUxMURENjAwMkQ0MjU1IC8qIFZlcnNpb25HTFNMLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBMEFBQkUyRDEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVucm9sbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTBBQUJFMzExM0FGRTgzMDAwRjJFQkQxIC8qIE1hcExvbmdWYXJpYWJsZU5hbWVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMEFBQkUzNTEzQUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0
R0xTTEJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUEwQUFCRTQ1MTNBRkU5NDUwMEYyRUJEMSAv
KiBPdXRwdXRFU1NMLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMEFBQkU0OTEzQUZFOTYxMDBGMkVC
RDEgLyogVHJhbnNsYXRvckVTU0wuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNTQwLDYgKzU3NSwxMSBA
QAogCQkJCTkwRDlCMTE1MTJFMTFERDYwMDJENDI1NSAvKiBWYWxpZGF0ZUxpbWl0YXRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkwRDlCMTE3MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJs
ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTBEOUIxMTkxMkUxMURENjAwMkQ0MjU1IC8q
IFZlcnNpb25HTFNMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEwQUFCRTJDMTNBRkU4MTAwMEYy
RUJEMSAvKiBGb3JMb29wVW5yb2xsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEwQUFCRTMwMTNB
RkU4MzAwMEYyRUJEMSAvKiBNYXBMb25nVmFyaWFibGVOYW1lcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBMEFBQkUzNDEzQUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0R0xTTEJhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTBBQUJFNDQxM0FGRTk0NTAwRjJFQkQxIC8qIE91dHB1dEVTU0wuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTBBQUJFNDgxM0FGRTk2MTAwRjJFQkQxIC8qIFRyYW5zbGF0
b3JFU1NMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
aW5jbHVkZS9FR0wvZWdsZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvaW5jbHVkZS9FR0wvZWdsZXh0LmgJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw2
ICsyMTUsMTkgQEAgdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMUwogdHlw
ZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMR0VUU1lOQ0FUVFJJQk5WUFJPQykg
KEVHTFN5bmNOViBzeW5jLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKTsKICNlbmRp
ZgogCisjaWZuZGVmIEVHTF9BTkdMRV9xdWVyeV9zdXJmYWNlX3BvaW50ZXIKKyNkZWZpbmUgRUdM
X0FOR0xFX3F1ZXJ5X3N1cmZhY2VfcG9pbnRlciAxCisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZ
UEVTCitFR0xBUEkgRUdMQm9vbGVhbiBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMRGlz
cGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZh
bHVlKTsKKyNlbmRpZgordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMUVVF
UllTVVJGQUNFUE9JTlRFUkFOR0xFUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1
cmZhY2UsIEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSk7CisjZW5kaWYKKworI2lmbmRl
ZiBFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUKKyNkZWZpbmUg
RUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1cmVfMmRfc2hhcmVfaGFuZGxlCisjZGVmaW5lIEVH
TF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUgMHgzMjAwCisjZW5kaWYKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkocmV2aXNpb24gODkyODYp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw3ICsxNyw3IEBAIGV4dGVybiAiQyIgewogCiAvLyBWZXJz
aW9uIG51bWJlciBmb3Igc2hhZGVyIHRyYW5zbGF0aW9uIEFQSS4KIC8vIEl0IGlzIGluY3JlbWVu
dGVkIGV2ZXJ5dGltZSB0aGUgQVBJIGNoYW5nZXMuCi0jZGVmaW5lIFNIX1ZFUlNJT04gMTAzCisj
ZGVmaW5lIFNIX1ZFUlNJT04gMTA1CiAKIC8vCiAvLyBUaGUgbmFtZXMgb2YgdGhlIGZvbGxvd2lu
ZyBlbnVtcyBoYXZlIGJlZW4gZGVyaXZlZCBieSByZXBsYWNpbmcgR0wgcHJlZml4CkBAIC0zNiw2
ICszNiwxMiBAQCB0eXBlZGVmIGVudW0gewogfSBTaFNoYWRlclNwZWM7CiAKIHR5cGVkZWYgZW51
bSB7CisgIFNIX0VTU0xfT1VUUFVUID0gMHg4QjQ1LAorICBTSF9HTFNMX09VVFBVVCA9IDB4OEI0
NiwKKyAgU0hfSExTTF9PVVRQVVQgPSAweDhCNDcKK30gU2hTaGFkZXJPdXRwdXQ7CisKK3R5cGVk
ZWYgZW51bSB7CiAgIFNIX05PTkUgICAgICAgICAgID0gMCwKICAgU0hfSU5UICAgICAgICAgICAg
PSAweDE0MDQsCiAgIFNIX0ZMT0FUICAgICAgICAgID0gMHgxNDA2LApAQCAtNjIsMTYgKzY4LDIw
IEBAIHR5cGVkZWYgZW51bSB7CiAgIFNIX0FDVElWRV9VTklGT1JNUyAgICAgICAgICAgICA9ICAw
eDhCODYsCiAgIFNIX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggICA9ICAweDhCODcsCiAgIFNI
X0FDVElWRV9BVFRSSUJVVEVTICAgICAgICAgICA9ICAweDhCODksCi0gIFNIX0FDVElWRV9BVFRS
SUJVVEVfTUFYX0xFTkdUSCA9ICAweDhCOEEKKyAgU0hfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVO
R1RIID0gIDB4OEI4QSwKKyAgU0hfTUFQUEVEX05BTUVfTUFYX0xFTkdUSCAgICAgID0gIDB4OEI4
QgogfSBTaFNoYWRlckluZm87CiAKIC8vIENvbXBpbGUgb3B0aW9ucy4KIHR5cGVkZWYgZW51bSB7
Ci0gIFNIX1ZBTElEQVRFICAgICAgICAgICAgICAgPSAwLAotICBTSF9WQUxJREFURV9MT09QX0lO
REVYSU5HID0gMHgwMDAxLAotICBTSF9JTlRFUk1FRElBVEVfVFJFRSAgICAgID0gMHgwMDAyLAot
ICBTSF9PQkpFQ1RfQ09ERSAgICAgICAgICAgID0gMHgwMDA0LAotICBTSF9BVFRSSUJVVEVTX1VO
SUZPUk1TICAgID0gMHgwMDA4CisgIFNIX1ZBTElEQVRFICAgICAgICAgICAgICAgID0gMCwKKyAg
U0hfVkFMSURBVEVfTE9PUF9JTkRFWElORyAgPSAweDAwMDEsCisgIFNIX0lOVEVSTUVESUFURV9U
UkVFICAgICAgID0gMHgwMDAyLAorICBTSF9PQkpFQ1RfQ09ERSAgICAgICAgICAgICA9IDB4MDAw
NCwKKyAgU0hfQVRUUklCVVRFU19VTklGT1JNUyAgICAgPSAweDAwMDgsCisgIFNIX0xJTkVfRElS
RUNUSVZFUyAgICAgICAgID0gMHgwMDEwLAorICBTSF9TT1VSQ0VfUEFUSCAgICAgICAgICAgICA9
IDB4MDAyMCwKKyAgU0hfTUFQX0xPTkdfVkFSSUFCTEVfTkFNRVMgPSAweDAwNDAKIH0gU2hDb21w
aWxlT3B0aW9uczsKIAogLy8KQEAgLTEyNCwxMyArMTM0LDE3IEBAIHR5cGVkZWYgdm9pZCogU2hI
YW5kbGU7CiAvLwogLy8gRHJpdmVyIGNhbGxzIHRoZXNlIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSBj
b21waWxlciBvYmplY3RzLgogLy8KLS8vIFJldHVybnMgdGhlIGhhbmRsZSBvZiBjb25zdHJ1Y3Rl
ZCBjb21waWxlci4KKy8vIFJldHVybnMgdGhlIGhhbmRsZSBvZiBjb25zdHJ1Y3RlZCBjb21waWxl
ciwgbnVsbCBpZiB0aGUgcmVxdWVzdGVkIGNvbXBpbGVyIGlzCisvLyBub3Qgc3VwcG9ydGVkLgog
Ly8gUGFyYW1ldGVyczoKIC8vIHR5cGU6IFNwZWNpZmllcyB0aGUgdHlwZSBvZiBzaGFkZXIgLSBT
SF9GUkFHTUVOVF9TSEFERVIgb3IgU0hfVkVSVEVYX1NIQURFUi4KIC8vIHNwZWM6IFNwZWNpZmll
cyB0aGUgbGFuZ3VhZ2Ugc3BlYyB0aGUgY29tcGlsZXIgbXVzdCBjb25mb3JtIHRvIC0KIC8vICAg
ICAgIFNIX0dMRVMyX1NQRUMgb3IgU0hfV0VCR0xfU1BFQy4KKy8vIG91dHB1dDogU3BlY2lmaWVz
IHRoZSBvdXRwdXQgY29kZSB0eXBlIC0gU0hfRVNTTF9PVVRQVVQsIFNIX0dMU0xfT1VUUFVULAor
Ly8gICAgICAgICBvciBTSF9ITFNMX09VVFBVVC4KIC8vIHJlc291cmNlczogU3BlY2lmaWVzIHRo
ZSBidWlsdC1pbiByZXNvdXJjZXMuCiBTaEhhbmRsZSBTaENvbnN0cnVjdENvbXBpbGVyKFNoU2hh
ZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMqIHJlc291cmNlcyk7CiB2b2lkIFNoRGVzdHJ1Y3Qo
U2hIYW5kbGUgaGFuZGxlKTsKIApAQCAtMTgzLDYgKzE5Nyw4IEBAIGludCBTaENvbXBpbGUoCiAv
LyBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIOiB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0
IGFjdGl2ZSB1bmlmb3JtCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZSBuYW1lIGluY2x1ZGluZyB0aGUgbnVsbAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVybWluYXRpb24gY2hhcmFjdGVyLgorLy8gU0hfTUFQUEVEX05BTUVfTUFYX0xFTkdUSDog
dGhlIGxlbmd0aCBvZiB0aGUgbWFwcGVkIHZhcmlhYmxlIG5hbWUgaW5jbHVkaW5nCisvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGUgbnVsbCB0ZXJtaW5hdGlvbiBjaGFyYWN0ZXIuCiAv
LyAKIC8vIHBhcmFtczogUmVxdWVzdGVkIHBhcmFtZXRlcgogdm9pZCBTaEdldEluZm8oY29uc3Qg
U2hIYW5kbGUgaGFuZGxlLCBTaFNoYWRlckluZm8gcG5hbWUsIGludCogcGFyYW1zKTsKQEAgLTIy
MSwxMiArMjM3LDE4IEBAIHZvaWQgU2hHZXRPYmplY3RDb2RlKGNvbnN0IFNoSGFuZGxlIGhhbmQK
IC8vICAgICAgIGFjY29tb2RhdGUgdGhlIGF0dHJpYnV0ZSB2YXJpYWJsZSBuYW1lLiBUaGUgc2l6
ZSBvZiB0aGUgYnVmZmVyCiAvLyAgICAgICByZXF1aXJlZCB0byBzdG9yZSB0aGUgYXR0cmlidXRl
IHZhcmlhYmxlIG5hbWUgY2FuIGJlIG9idGFpbmVkIGJ5CiAvLyAgICAgICBjYWxsaW5nIFNoR2V0
SW5mbyB3aXRoIFNIX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSC4KKy8vIG1hcHBlZE5hbWU6
IFJldHVybnMgYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG1hcHBlZCBu
YW1lIG9mCisvLyAgICAgICAgICAgICB0aGUgYXR0cmlidXRlIHZhcmlhYmxlLCBJdCBpcyBhc3N1
bWVkIHRoYXQgbWFwcGVkTmFtZSBoYXMgZW5vdWdoCisvLyAgICAgICAgICAgICBtZW1vcnkgKFNI
X01BUFBFRF9OQU1FX01BWF9MRU5HVEgpLCBvciBOVUxMIGlmIGRvbid0IGNhcmUKKy8vICAgICAg
ICAgICAgIGFib3V0IHRoZSBtYXBwZWQgbmFtZS4gSWYgdGhlIG5hbWUgaXMgbm90IG1hcHBlZCwg
dGhlbiBuYW1lIGFuZAorLy8gICAgICAgICAgICAgbWFwcGVkTmFtZSBhcmUgdGhlIHNhbWUuCiB2
b2lkIFNoR2V0QWN0aXZlQXR0cmliKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGxlbmd0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBzaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICBTaERhdGFUeXBlKiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciogbWFwcGVkTmFtZSk7CiAKIC8vIFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQg
YW4gYWN0aXZlIHVuaWZvcm0gdmFyaWFibGUuCiAvLyBQYXJhbWV0ZXJzOgpAQCAtMjQyLDEyICsy
NjQsMTggQEAgdm9pZCBTaEdldEFjdGl2ZUF0dHJpYihjb25zdCBTaEhhbmRsZSBoYQogLy8gICAg
ICAgYWNjb21vZGF0ZSB0aGUgdW5pZm9ybSB2YXJpYWJsZSBuYW1lLiBUaGUgc2l6ZSBvZiB0aGUg
YnVmZmVyIHJlcXVpcmVkCiAvLyAgICAgICB0byBzdG9yZSB0aGUgdW5pZm9ybSB2YXJpYWJsZSBu
YW1lIGNhbiBiZSBvYnRhaW5lZCBieSBjYWxsaW5nCiAvLyAgICAgICBTaEdldEluZm8gd2l0aCBT
SF9BQ1RJVkVfVU5JRk9STVNfTUFYX0xFTkdUSC4KKy8vIG1hcHBlZE5hbWU6IFJldHVybnMgYSBu
dWxsIHRlcm1pbmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG1hcHBlZCBuYW1lIG9mCisvLyAg
ICAgICAgICAgICB0aGUgdW5pZm9ybSB2YXJpYWJsZSwgSXQgaXMgYXNzdW1lZCB0aGF0IG1hcHBl
ZE5hbWUgaGFzIGVub3VnaAorLy8gICAgICAgICAgICAgbWVtb3J5IChTSF9NQVBQRURfTkFNRV9N
QVhfTEVOR1RIKSwgb3IgTlVMTCBpZiBkb24ndCBjYXJlCisvLyAgICAgICAgICAgICBhYm91dCB0
aGUgbWFwcGVkIG5hbWUuIElmIHRoZSBuYW1lIGlzIG5vdCBtYXBwZWQsIHRoZW4gbmFtZSBhbmQK
Ky8vICAgICAgICAgICAgIG1hcHBlZE5hbWUgYXJlIHRoZSBzYW1lLgogdm9pZCBTaEdldEFjdGl2
ZVVuaWZvcm0oY29uc3QgU2hIYW5kbGUgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBsZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQqIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBTaERh
dGFUeXBlKiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogbmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciogbWFwcGVkTmFtZSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEzLDEzNiArMTMsMTMyIEBACiAJCQlidWlsZFBoYXNlcyA9ICgK
IAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJRkIzQzUwNjQxMUY3OTI5NzAwODFGNUJB
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkJQTE1RTc4QkVDREZGMjBCQzNGRkYwNDBB
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkJQkEyNDZDQTE5NDM1QTlGQThBQzY5MTQ2
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkJRTRBM0QzM0NBNDlEMDEzNTUwQjhCQTVG
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwogCQkJbmFtZSA9IEFsbDsKIAkJCXBy
b2R1Y3ROYW1lID0gQWxsOwogCQl9OwotCQkzMTM0OUQ2NjVGQUU2NDJBRUI0OTEzNUUgLyogQU5H
TEUgU3VwcG9ydCAqLyA9IHsKLQkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKLQkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSAwQUE1NDgyNUJGNURGMEEzRkJBOTJCNjAgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkFOR0xFIFN1cHBvcnQiICov
OwotCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJRkEwRDcxMjVEQjA2QTdBNzcxNkE1OTEwIC8qIEFj
dGlvbiAiZmxleF9nbHNsYW5nIiAqLywKLQkJCQkwRDUxM0Y4QjkyMzk0OUMxNTZEQjAyQzUgLyog
QWN0aW9uICJiaXNvbl9nbHNsYW5nIiAqLywKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0J
CQkpOwotCQkJbmFtZSA9ICJBTkdMRSBTdXBwb3J0IjsKLQkJCXByb2R1Y3ROYW1lID0gInRyYW5z
bGF0b3JfY29tbW9uIFN1cHBvcnQiOwotCQl9OwogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJCTA1NTYzQURG
RUExNTExNkQ3MjMzMzMyRiAvKiBRdWFsaWZpZXJBbGl2ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0ODU3RTE4Nzk5RDMzMkMzMEVGNDYwQzcgLyog
UXVhbGlmaWVyQWxpdmUuY3BwICovOyB9OworCQkwOEE3OTMzQkQyRjc4QTg2QjkwMjAwRjYgLyog
Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEExMThFNTAwM0U1QzBFMjUzQzUzODM5IC8qIENvbXBpbGVyLmNwcCAqLzsgfTsKIAkJMEEy
MTY5NDkxMDNFMUUyMjhGOUMxMkYwIC8qIEluaXRpYWxpemVEbGwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjBDMzk5OEM5Q0U2NkRFMEM1QjBGRDk5
IC8qIEluaXRpYWxpemVEbGwuY3BwICovOyB9OworCQkwQUMxODk3RTQ2MUEwRDQ3NThFM0RDRTMg
LyogVmVyc2lvbkdMU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjcyN0FFQzkwNjcxMkVDMjM4MDQxNDY0IC8qIFZlcnNpb25HTFNMLmNwcCAqLzsg
fTsKKwkJMEU5NDU2RjQ2NEUxNjM5MkQxQ0NEMDMwIC8qIFZhbGlkYXRlTGltaXRhdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjE0OEQ5NjdC
OEQyODhBODI2N0JGRjNBIC8qIFZhbGlkYXRlTGltaXRhdGlvbnMuY3BwICovOyB9OworCQkwRUMw
OUIzQjI1NDgyOUY4RjFEOTUyRDMgLyogRm9yTG9vcFVucm9sbC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1REM5QjY0N0UxMEY2NUY2NjE0MkVDQzEg
LyogRm9yTG9vcFVucm9sbC5jcHAgKi87IH07CisJCTFFRDFEMkM3Qzc0QzZCNjI1QUZCMUNDRiAv
KiBWYXJpYWJsZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjdDMTFFRTEwRkVEMjk3OTkzMUZGQzExIC8qIFZhcmlhYmxlSW5mby5jcHAgKi87
IH07CisJCTI5NjQ2NjU2NkQ4QzBGMDIzQTU1Mzc2MCAvKiBTZWFyY2hTeW1ib2wuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI4QTZERURERjA4REIz
NzAzOTRBN0FEIC8qIFNlYXJjaFN5bWJvbC5jcHAgKi87IH07CisJCTJFN0MwRDM4MDRCODMwOEE0
OTNEOUI0QiAvKiBnbHNsYW5nX3RhYi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzRjY4QTZBQTgxMTQ5NTcxOEE2OTM4QzAgLyogZ2xzbGFuZ190YWIu
Y3BwICovOyB9OworCQkzMDIxRTBCRjFCQzg0NDJGRjFGMkYyQjQgLyogZ2xzbGFuZ19sZXguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNBNTdDNkQ0
MTM3NzNBRUJBM0M0N0E2IC8qIGdsc2xhbmdfbGV4LmNwcCAqLzsgfTsKIAkJMzA2NUQyOUU5N0ZB
QzZFMTI3Mzg4RDE1IC8qIEluaXRpYWxpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0RjJFRDBEODJEN0JCQ0E0RTlFRUVBIC8qIEluaXRpYWxp
emUuY3BwICovOyB9OwogCQkzMkIxREJDRDZCODNGMjE0NkQ3ODdBNjIgLyogYXRvbS5jIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM5QjQ2MTZBNjVBNUFC
RUY5MUZENkRDIC8qIGF0b20uYyAqLzsgfTsKIAkJMzVCRTFCQkVFNjEzNUExQ0IwNjA4RUE4IC8q
IGNwcHN0cnVjdC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODA1OEEwQTJBMEEwMjM4Njg2NzUxN0VBIC8qIGNwcHN0cnVjdC5jICovOyB9OwogCQkzQTk2
RTlDQUM4QTI1QUYxNTY0QjY1MkMgLyogbWVtb3J5LmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTRGNDQyQTI2MDZGRUM1NUYxMkEyOEUgLyogbWVtb3J5
LmMgKi87IH07CisJCTNGMTgzODlCQ0I4OTM3MEE5MzA2NjdGNCAvKiBUcmFuc2xhdG9yR0xTTC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkI3MERD
NzRBMjFGQkNENjY1QUJERjkgLyogVHJhbnNsYXRvckdMU0wuY3BwICovOyB9OwogCQk0MEZDMTg5
QjhBMjQ2RURGMTRDMkZERTMgLyogaW50ZXJtT3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFQUY2RjMxMjZDMkVDNDM5Nzc4NUMzRiAvKiBpbnRl
cm1PdXQuY3BwICovOyB9OworCQk0QjRCREU3QUQ2MjY2QjM5RUQ0M0MyRDQgLyogQ29kZUdlbkhM
U0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQ5
NTQ5RENDQUY0NTBFQjc2MTUyMEUxIC8qIENvZGVHZW5ITFNMLmNwcCAqLzsgfTsKIAkJNTBERjAw
MDA1Q0M0MjEyRjZGQjEyOTFEIC8qIEludGVybWVkaWF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjdDNDg2QzM3MEE3MjkzOEZFODE2MEYgLyog
SW50ZXJtZWRpYXRlLmNwcCAqLzsgfTsKKwkJNTVDQkQ4NzU3M0I4MDNBMTczQUM5MTI5IC8qIHV0
aWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0VF
NzIxNUE3QUI0RUY3MUM5N0QyNTQ1IC8qIHV0aWwuY3BwICovOyB9OworCQk1RjdCNTJBNTREQ0U4
MTU1RUQ5NEVDRjggLyogT3V0cHV0SExTTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QTVCNUJCMjUyNjgwMjQ3OUUxOUY5OTMgLyogT3V0cHV0SExT
TC5jcHAgKi87IH07CiAJCTZGOUY4NzUwMTdBNjhBQkU1RDM5RkYxOSAvKiBQYXJzZUhlbHBlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZDODMx
QTc1RUJFMDA5QTk4NjE3OTYgLyogUGFyc2VIZWxwZXIuY3BwICovOyB9OwogCQk4ODhGMTM4MjQ5
OEUyRDc0QUYyODAxQzggLyogZGVidWcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEFCQTIzMEZFQTM2NTRCMDMwRTRDNEZCIC8qIGRlYnVnLmNwcCAq
LzsgfTsKKwkJODk2QjcyMEJEMjFGNjc0OUE3RDgzRjMwIC8qIE1hcExvbmdWYXJpYWJsZU5hbWVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Q0Yx
RjgzRTg0MjkwMUM0MkQ0NDgyNSAvKiBNYXBMb25nVmFyaWFibGVOYW1lcy5jcHAgKi87IH07CisJ
CTkzQTQxQUYwMzZFNUVGODdCMzY2QjU2MyAvKiBUcmFuc2xhdG9yRVNTTC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQTNBMjYwRjUzNzlBN0UyNjU1
RDQwRjMgLyogVHJhbnNsYXRvckVTU0wuY3BwICovOyB9OworCQk5ODg2QkNENUQwREQ2OUI2RkRF
MDlERDggLyogVW5mb2xkU2VsZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzExQTQ4QTBCRjE2QjFDQkQ3N0FDOSAvKiBVbmZvbGRTZWxlY3Qu
Y3BwICovOyB9OworCQk5QjExMUI4M0ZCNjM2RkQ1Q0RFQzMyQTAgLyogT3V0cHV0R0xTTEJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNERjAx
RjAwMkFERTlEQjhBM0VGNEZFIC8qIE91dHB1dEdMU0xCYXNlLmNwcCAqLzsgfTsKIAkJOUU4REZF
MUNDRUYwMzhCRjJCNjU0MjhDIC8qIHBhcnNlQ29uc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDJDOUM4RUI0QTdFRkY1QjY3RkY5REJGIC8qIHBh
cnNlQ29uc3QuY3BwICovOyB9OwogCQlBQzIzRjU4RkREM0M1NUY1Q0ExOEVFRDcgLyogUmVtb3Zl
VHJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NDM2RUZGMDY5MTNGQ0IxOUMzNTIyQTcgLyogUmVtb3ZlVHJlZS5jcHAgKi87IH07CiAJCUFEODU1
MTdGMDg2RkRDRUYzOTQ3QzQwMyAvKiBzeW1ib2xzLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMDEzQTcyNDBCREFFOEE2MTQxM0Q4QzAgLyogc3ltYm9s
cy5jICovOyB9OwogCQlCNDg1ODQxN0U1NDM2NUJFOENERTM5MTkgLyogb3Nzb3VyY2VfcG9zaXgu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkUyNTg0
ODYwMDVGNjY5NkNDMDMxNjIyIC8qIG9zc291cmNlX3Bvc2l4LmNwcCAqLzsgfTsKIAkJQjhCRDI2
ODVBMTZCMTg4Q0NERkIwNTJCIC8qIFNoYWRlckxhbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTZDN0U5OUJBNTAwQTg0QzM1MjE2RkUwIC8qIFNo
YWRlckxhbmcuY3BwICovOyB9OwogCQlCRUJCRjRGMDgxOUVBM0QwMzk3N0E4RkMgLyogSW5mb1Np
bmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2
OTI3QkU1RDNDMkM4MkY4NjExMURGIC8qIEluZm9TaW5rLmNwcCAqLzsgfTsKKwkJQzRBQUIyQkI0
NTk0QzBEQTMxOERDQjFDIC8qIE91dHB1dEVTU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREIyOTE3QzVCNjI0NzEyMzY0REU0QTc1IC8qIE91dHB1
dEVTU0wuY3BwICovOyB9OworCQlDNzVFQjkyOTJBMEREQTQ1NTkyQThBQ0YgLyogT3V0cHV0R0xT
TC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OEI3
NDAyQ0MwN0EwNTlGRUY1RUMzNTEgLyogT3V0cHV0R0xTTC5jcHAgKi87IH07CiAJCUNCN0YwRUYw
RDZBODlGQThDNERGNTUxMyAvKiBjcHAuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI3NTcwN0IzOTNCN0VBQjdERDk5OTlDQiAvKiBjcHAuYyAqLzsgfTsK
KwkJRDU2RjdEMDBFOUIxNjJFNDE2RDM3REYwIC8qIENvZGVHZW5HTFNMLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3QjExMjdDNzVCNTc2RkMwMEQ3
NEFFRCAvKiBDb2RlR2VuR0xTTC5jcHAgKi87IH07CiAJCUUxQzdDNURGRjBCMkRGRUMwOTM4N0Y0
RSAvKiBQb29sQWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjY0RUFCRTczOEZDNjY2QTVFNEUyRjQyIC8qIFBvb2xBbGxvYy5jcHAgKi87IH07
CiAJCUU4QzcyN0FBOEU5REM1RTdCNTg4NTdERiAvKiB0b2tlbnMuYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMDA3NDVEQTk5MTRGREUyNzREMDNENSAv
KiB0b2tlbnMuYyAqLzsgfTsKKwkJRTk5RDZEODBEQkYwNUVDRTcxMDhCMjZEIC8qIFRyYW5zbGF0
b3JITFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMzREFGRjZCRjEyQkI3RjQ3ODRENkM3RSAvKiBUcmFuc2xhdG9ySExTTC5jcHAgKi87IH07CiAJ
CUYwOThGNDYzRURBQkNGMDc2OTAwNzY3OCAvKiBzY2FubmVyLmMgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjNBQTY5NERGOUE0NDU1QTgxMzIzNEQgLyog
c2Nhbm5lci5jICovOyB9OwogCQlGNUFFMkEyOTJERkFGOEMxNTg0MTJBQTIgLyogSW50ZXJtVHJh
dmVyc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzRGRTk4OEVGOUEyOTM4NjdFNUM3NzFCIC8qIEludGVybVRyYXZlcnNlLmNwcCAqLzsgfTsKIAkJ
RjZBQkQ1OEY4Q0FCNzY0MUQ4QkZFOTM1IC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3RTVCMEYwNDYzNUU2MDkwRjBERThF
RiAvKiBTeW1ib2xUYWJsZS5jcHAgKi87IH07Ci0JCUZCM0M1MDU3MTFGNzkyNEEwMDgxRjVCQSAv
KiBDb2RlR2VuR0xTTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCN0IxMTI3Qzc1QjU3NkZDMDBENzRBRUQgLyogQ29kZUdlbkdMU0wuY3BwICovOyB9
OwotCQlGQjNDNTA1ODExRjc5MjRBMDA4MUY1QkEgLyogT3V0cHV0R0xTTC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OEI3NDAyQ0MwN0EwNTlGRUY1
RUMzNTEgLyogT3V0cHV0R0xTTC5jcHAgKi87IH07Ci0JCUZCM0M1MDU5MTFGNzkyNEEwMDgxRjVC
QSAvKiBUcmFuc2xhdG9yR0xTTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RkI3MERDNzRBMjFGQkNENjY1QUJERjkgLyogVHJhbnNsYXRvckdMU0wu
Y3BwICovOyB9OwotCQlGQjNDNTA5MjExRjc5NENFMDA4MUY1QkEgLyogZGVidWcuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFCQTIzMEZFQTM2NTRC
MDMwRTRDNEZCIC8qIGRlYnVnLmNwcCAqLzsgfTsKLQkJRkIzQzUwOTMxMUY3OTRDRTAwODFGNUJB
IC8qIEluZm9TaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFNjkyN0JFNUQzQzJDODJGODYxMTFERiAvKiBJbmZvU2luay5jcHAgKi87IH07Ci0J
CUZCM0M1MDk0MTFGNzk0Q0UwMDgxRjVCQSAvKiBJbml0aWFsaXplLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEYyRUQwRDgyRDdCQkNBNEU5RUVF
QSAvKiBJbml0aWFsaXplLmNwcCAqLzsgfTsKLQkJRkIzQzUwOTUxMUY3OTRDRTAwODFGNUJBIC8q
IEluaXRpYWxpemVEbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjBDMzk5OEM5Q0U2NkRFMEM1QjBGRDk5IC8qIEluaXRpYWxpemVEbGwuY3BwICov
OyB9OwotCQlGQjNDNTA5NjExRjc5NENFMDA4MUY1QkEgLyogSW50ZXJtZWRpYXRlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGN0M0ODZDMzcwQTcy
OTM4RkU4MTYwRiAvKiBJbnRlcm1lZGlhdGUuY3BwICovOyB9OwotCQlGQjNDNTA5NzExRjc5NENF
MDA4MUY1QkEgLyogaW50ZXJtT3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERFQUY2RjMxMjZDMkVDNDM5Nzc4NUMzRiAvKiBpbnRlcm1PdXQuY3Bw
ICovOyB9OwotCQlGQjNDNTA5ODExRjc5NENFMDA4MUY1QkEgLyogSW50ZXJtVHJhdmVyc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGRTk4OEVG
OUEyOTM4NjdFNUM3NzFCIC8qIEludGVybVRyYXZlcnNlLmNwcCAqLzsgfTsKLQkJRkIzQzUwOUEx
MUY3OTRDRTAwODFGNUJBIC8qIG9zc291cmNlX3Bvc2l4LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFMjU4NDg2MDA1RjY2OTZDQzAzMTYyMiAvKiBv
c3NvdXJjZV9wb3NpeC5jcHAgKi87IH07Ci0JCUZCM0M1MDlCMTFGNzk0Q0UwMDgxRjVCQSAvKiBw
YXJzZUNvbnN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEQyQzlDOEVCNEE3RUZGNUI2N0ZGOURCRiAvKiBwYXJzZUNvbnN0LmNwcCAqLzsgfTsKLQkJ
RkIzQzUwOUMxMUY3OTRDRTAwODFGNUJBIC8qIFBhcnNlSGVscGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkM4MzFBNzVFQkUwMDlBOTg2MTc5
NiAvKiBQYXJzZUhlbHBlci5jcHAgKi87IH07Ci0JCUZCM0M1MDlEMTFGNzk0Q0UwMDgxRjVCQSAv
KiBQb29sQWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjY0RUFCRTczOEZDNjY2QTVFNEUyRjQyIC8qIFBvb2xBbGxvYy5jcHAgKi87IH07Ci0J
CUZCM0M1MDlFMTFGNzk0Q0UwMDgxRjVCQSAvKiBRdWFsaWZpZXJBbGl2ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0ODU3RTE4Nzk5RDMzMkMzMEVG
NDYwQzcgLyogUXVhbGlmaWVyQWxpdmUuY3BwICovOyB9OwotCQlGQjNDNTA5RjExRjc5NENFMDA4
MUY1QkEgLyogUmVtb3ZlVHJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNDM2RUZGMDY5MTNGQ0IxOUMzNTIyQTcgLyogUmVtb3ZlVHJlZS5jcHAg
Ki87IH07Ci0JCUZCM0M1MEEwMTFGNzk0Q0UwMDgxRjVCQSAvKiBTaGFkZXJMYW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2QzdFOTlCQTUwMEE4
NEMzNTIxNkZFMCAvKiBTaGFkZXJMYW5nLmNwcCAqLzsgfTsKLQkJRkIzQzUwQTExMUY3OTRDRTAw
ODFGNUJBIC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI3RTVCMEYwNDYzNUU2MDkwRjBERThFRiAvKiBTeW1ib2xUYWJsZS5j
cHAgKi87IH07Ci0JCUZCM0M1MEE0MTFGNzk0RkYwMDgxRjVCQSAvKiBhdG9tLmMgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzlCNDYxNkE2NUE1QUJFRjkx
RkQ2REMgLyogYXRvbS5jICovOyB9OwotCQlGQjNDNTBBNTExRjc5NEZGMDA4MUY1QkEgLyogY3Bw
LmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzU3MDdC
MzkzQjdFQUI3REQ5OTk5Q0IgLyogY3BwLmMgKi87IH07Ci0JCUZCM0M1MEE2MTFGNzk0RkYwMDgx
RjVCQSAvKiBjcHBzdHJ1Y3QuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgwNThBMEEyQTBBMDIzODY4Njc1MTdFQSAvKiBjcHBzdHJ1Y3QuYyAqLzsgfTsK
LQkJRkIzQzUwQTcxMUY3OTRGRjAwODFGNUJBIC8qIG1lbW9yeS5jIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk0RjQ0MkEyNjA2RkVDNTVGMTJBMjhFIC8q
IG1lbW9yeS5jICovOyB9OwotCQlGQjNDNTBBODExRjc5NEZGMDA4MUY1QkEgLyogc2Nhbm5lci5j
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkYzQUE2OTRE
RjlBNDQ1NUE4MTMyMzREIC8qIHNjYW5uZXIuYyAqLzsgfTsKLQkJRkIzQzUwQTkxMUY3OTRGRjAw
ODFGNUJBIC8qIHN5bWJvbHMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYwMTNBNzI0MEJEQUU4QTYxNDEzRDhDMCAvKiBzeW1ib2xzLmMgKi87IH07Ci0J
CUZCM0M1MEFBMTFGNzk0RkYwMDgxRjVCQSAvKiB0b2tlbnMuYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMDA3NDVEQTk5MTRGREUyNzREMDNENSAvKiB0
b2tlbnMuYyAqLzsgfTsKLQkJRkIzQzUwQUIxMUY3OTUxQjAwODFGNUJBIC8qIFRyYW5zbGF0b3JH
TFNMLmggaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREQz
QjdFM0I3QjM1QTBCODQ2OUFCODcgLyogVHJhbnNsYXRvckdMU0wuaCAqLzsgfTsKLQkJRkIzQzUw
QUMxMUY3OTUxQjAwODFGNUJBIC8qIE91dHB1dEdMU0wuaCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDYxQ0IwQkNFNTRFMDY5RDcxRjkyMCAvKiBPdXRw
dXRHTFNMLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KLQkJRTY5QkZCRTJEMTI3MjYyMEU0
NkMzRjhBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJMUY3MjQyNDk2MTAzRURG
MjlDQzI1RDg3IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENv
bnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IERBMTg4RDhDNkJGODA3MzEy
MjUzOTEzMSAvKiBQcm9qZWN0IG9iamVjdCAqLzsKIAkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1v
dGVHbG9iYWxJRFN0cmluZyA9IDMxMzQ5RDY2NUZBRTY0MkFFQjQ5MTM1RTsKLQkJCXJlbW90ZUlu
Zm8gPSAidHJhbnNsYXRvcl9jb21tb24gU3VwcG9ydCI7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IEE4MzhFOTU3NEIzRkYxNDc5MURCREFCMTsKKwkJCXJlbW90ZUluZm8gPSB0cmFuc2xhdG9y
X2hsc2w7CiAJCX07Ci0JCUZCM0M1MDYzMTFGNzkyOTcwMDgxRjVCQSAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7CisJCTU1RDVGOUJGNzI3RTRBM0I2NjM3ODAyQiAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQlj
b250YWluZXJQb3J0YWwgPSBEQTE4OEQ4QzZCRjgwNzMxMjI1MzkxMzEgLyogUHJvamVjdCBvYmpl
Y3QgKi87CiAJCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBGQjND
NTA1NTExRjc5MjRBMDA4MUY1QkE7Ci0JCQlyZW1vdGVJbmZvID0gYW5nbGU7CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDZGNEZEMzVDQjNERkM4OUQ3MEVDRDQzMjsKKwkJCXJlbW90ZUluZm8g
PSB0cmFuc2xhdG9yX2NvbW1vbjsKIAkJfTsKLQkJRkIzQzUwRDAxMUY3OUNDQzAwODFGNUJBIC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJNjBEMzU0NkFDMjdCMDk0RDZDQTA0Q0Q2
IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0
ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IERBMTg4RDhDNkJGODA3MzEyMjUzOTEzMSAv
KiBQcm9qZWN0IG9iamVjdCAqLzsKIAkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJ
RFN0cmluZyA9IDMxMzQ5RDY2NUZBRTY0MkFFQjQ5MTM1RTsKLQkJCXJlbW90ZUluZm8gPSAiQU5H
TEUgU3VwcG9ydCI7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDU4OTJDN0EzNjk1MzMwNDM3
QUZFNTcxNDsKKwkJCXJlbW90ZUluZm8gPSB0cmFuc2xhdG9yX2dsc2w7CiAJCX07CiAvKiBFbmQg
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVy
ZW5jZSBzZWN0aW9uICovCiAJCTA1NkZFQURDN0Q5NUM2RDRDOUNGMTExMyAvKiBzY2FubmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHNjYW5uZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEExMThFNTAwM0U1QzBFMjUzQzUzODM5IC8qIENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEEzQTI2MEY1
Mzc5QTdFMjY1NUQ0MEYzIC8qIFRyYW5zbGF0b3JFU1NMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRyYW5zbGF0b3JFU1NMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEM5QjQ2
MTZBNjVBNUFCRUY5MUZENkRDIC8qIGF0b20uYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gYXRvbS5jOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMjBBRDBBM0I3NjQyRkI1QTlBRTNBNTYgLyogVmVy
c2lvbkdMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVyc2lvbkdMU0wuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTJFQUYwMjgzMTFFRUE0NzUzRTgyODE4IC8qIFBvb2xBbGxvYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQb29sQWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTUzQkYwNkJGMTJDNkY1MDQ5NkM2MTU2IC8qIGxvY2FsaW50ZXJtZWRpYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGxvY2FsaW50ZXJtZWRpYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE4MkJBRDUwRDRFNThCODg0RjVFQjlGMyAvKiBGb3JMb29wVW5yb2xsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvckxvb3BVbnJvbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjI4QTZE
RURERjA4REIzNzAzOTRBN0FEIC8qIFNlYXJjaFN5bWJvbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTZWFyY2hTeW1ib2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyN0MxMUVF
MTBGRUQyOTc5OTMxRkZDMTEgLyogVmFyaWFibGVJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFZhcmlhYmxlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI3RTRDN0VE
MEI4MkUxOERDQkVERjFDOSAvKiBCYXNlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZVR5cGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NEY0NDJBMjYwNkZFQzU1RjEyQTI4
RSAvKiBtZW1vcnkuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gbWVtb3J5LmM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJBNzY1Qjg2Q0JBRjBENEEzRTY5RENBNyAvKiBVbmZvbGRTZWxlY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVW5mb2xkU2VsZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEMDA3NDVEQTk5MTRGREUyNzREMDNENSAvKiB0b2tlbnMuYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0g
dG9rZW5zLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFN0M5QjZFNkRCNzUxRTEy
QTJGNkNCNiAvKiBJbml0aWFsaXplR2xvYmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbml0aWFsaXpl
R2xvYmFscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzREREQzc3MjE2MjAyQTRE
RTE4MDhCREIgLyogbGlidHJhbnNsYXRvcl9jb21tb24uYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gbGlidHJhbnNsYXRvcl9jb21tb24uYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKKwkJM0VFNzIxNUE3QUI0RUY3MUM5N0QyNTQ1IC8qIHV0aWwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gdXRpbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNG
NjhBNkFBODExNDk1NzE4QTY5MzhDMCAvKiBnbHNsYW5nX3RhYi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBnbHNsYW5nX3RhYi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGN0M0
ODZDMzcwQTcyOTM4RkU4MTYwRiAvKiBJbnRlcm1lZGlhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW50ZXJtZWRpYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDg1N0Ux
ODc5OUQzMzJDMzBFRjQ2MEM3IC8qIFF1YWxpZmllckFsaXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFF1YWxpZmllckFsaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDhC
NzQwMkNDMDdBMDU5RkVGNUVDMzUxIC8qIE91dHB1dEdMU0wuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gT3V0cHV0R0xTTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5N0M1QzI0
RUVGNDY2RkI0QjUwQTI1OSAvKiBnbHNsYW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFCQTIzMEZFQTM2NTRCMDMwRTRDNEZCIC8q
IGRlYnVnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGRlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNEZDRjMyQ0IyRDhBNDJDOTMwQTY2QjAwIC8qIGdsc2xhbmdfdGFiLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGdsc2xhbmdfdGFiLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyOEZGMjAxODM5QzZGMjMzRTI2RkZEQSAvKiBjcHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY3Bw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU2QzdFOTlCQTUwMEE4NEMzNTIxNkZF
MCAvKiBTaGFkZXJMYW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRlckxhbmcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0NGMUY4M0U4NDI5MDFDNDJENDQ4MjUgLyog
TWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwTG9uZ1Zhcmlh
YmxlTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODBCMkEzMUY3QzUx
QTU5QjQwRjExQTMgLyogY29tcGlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb21waWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVBMjE1OTlDNTlCQzFBNzVBN0ZBQkEzNCAvKiBPdXRw
dXRITFNMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE91dHB1dEhMU0wuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUQ5OTM1NEM0RDgxODdEMzg0QzgxMjA3IC8qIFZhcmlhYmxlSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWYXJpYWJsZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNURDOUI2NDdFMTBGNjVGNjYxNDJFQ0MxIC8qIEZvckxvb3BVbnJvbGwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRm9yTG9vcFVucm9sbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTYwQzM5OThDOUNFNjZERTBDNUIwRkQ5OSAvKiBJbml0aWFsaXplRGxsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluaXRpYWxpemVEbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2QkI2NkFCNTg3Mzg2OEUyMzY3NUI2REIgLyogT3V0cHV0RVNTTC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPdXRwdXRFU1NMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCQkM4MjI0
QjlEOEUyMzREMTE3RkEwQyAvKiBwcmVwcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHByZXByb2Nl
c3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUwMjU2NTExMkU2OTM0RDAwQjM0
MzFGIC8qIGdsc2xhbmdfbGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IGdsc2xhbmdfbGV4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUwMjU2
NTIxMkU2OTM0RDAwQjM0MzFGIC8qIGdsc2xhbmdfdGFiLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xhbmdfdGFiLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNkUwMjU2NTMxMkU2OTM0RDAwQjM0MzFGIC8qIGdsc2xhbmdfdGFiLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmdfdGFiLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZFMDI1NjU0MTJFNjkzNEQwMEIzNDMxRiAvKiBnbHNsYW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkU2OTI3QkU1RDNDMkM4MkY4NjExMURGIC8qIEluZm9TaW5rLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluZm9TaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkZCNzBEQzc0QTIxRkJDRDY2NUFCREY5IC8qIFRyYW5zbGF0b3JHTFNMLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRyYW5zbGF0b3JHTFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzNBNTdDNkQ0MTM3NzNBRUJBM0M0N0E2IC8qIGdsc2xhbmdfbGV4LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IGdsc2xhbmdfbGV4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzk5REM5NjExRUUyRUEzQkE3Q0Y1NDc3IC8qIGludGVybWVkaWF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBpbnRlcm1lZGlhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M2
QkIxMkFCMDk5NTU2Q0YzNzlENzhGIC8qIFN5bWJvbFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5
bWJvbFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdEOUNGMzc2REM1Nzk5
QjRDNkIzMzMxRSAvKiBzeW1ib2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHN5bWJvbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODA1OEEwQTJBMEEwMjM4Njg2NzUxN0VBIC8qIGNwcHN0
cnVjdC5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmM7IHBhdGggPSBjcHBzdHJ1Y3QuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODFDQzQyNDVBOEU1QUI1NTg0RDMzNkYzIC8qIE1hcExvbmdWYXJpYWJsZU5hbWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hcExvbmdWYXJpYWJsZU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzMTM5OURFRTVEQUJBMDk1NzBGQjNFNyAvKiBtZW1vcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gbWVtb3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1MTNG
QUM2OTlEQjE1NThEMUQ0OUE0OCAvKiBJbml0aWFsaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluaXRp
YWxpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU4NDVGRkY1QThFNjMzNjQz
MDgyMzZEIC8qIEluaXRpYWxpemVQYXJzZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5pdGlh
bGl6ZVBhcnNlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OUE2RjdC
MUFEMzkxOEU2NERGNzZFQjEgLyogc2xnbG9iYWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHNsZ2xvYmFs
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MDI1NDg0MkQ3Mjk3NTY3MkMyRTlB
OTMgLyogVmFsaWRhdGVMaW1pdGF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZUxpbWl0
YXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDYxQ0IwQkNFNTRFMDY5
RDcxRjkyMCAvKiBPdXRwdXRHTFNMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE91dHB1dEdMU0wuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUyNzZBQTZCMzZGQzFCMUQ5MTNGQ0U0IC8qIGRl
YnVnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGRlYnVnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3NkM4MzFBNzVFQkUwMDlBOTg2MTc5NiAvKiBQYXJzZUhlbHBlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQYXJzZUhlbHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNTAsMTYgKzE0NiwyMiBAQAogCQk5Q0VEM0FGRjFFNjFCNDVFRTEwMDU2NTYgLyogYXRvbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBhdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlE
NDdCMUFDODJFNEVFODU5QUM1NDI0MyAvKiBRdWFsaWZpZXJBbGl2ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBRdWFsaWZpZXJBbGl2ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMENFNDM2
MzE4NDkyNzZBMzExODdDN0IgLyogSW5pdGlhbGl6ZURsbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbml0
aWFsaXplRGxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNjQ0QjAwRTkzMDRD
NDA3RkRDNUY0NyAvKiBsaWJ0cmFuc2xhdG9yX2dsc2wuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gbGlidHJhbnNsYXRvcl9nbHNsLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCUE0NDdGNzVGMzNEQTRDNEMxMjNBQzk1MiAvKiBsaWJ0cmFuc2xhdG9yX2hs
c2wuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJj
aGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGlidHJhbnNsYXRvcl9obHNsLmE7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUE1MUM3MjhCNjE1QjQxRTFE
NTlFOTkwMiAvKiB1dGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHV0aWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTU0RjJFRDBEODJEN0JCQ0E0RTlFRUVBIC8qIEluaXRpYWxpemUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUFBNTNCNjYzMkM3NkY5MDVERjA4RTU2NCAvKiBUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRTY1RTEzOUFFMTBE
RTlFRkFEOEQ1QjEgLyogU2hIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hIYW5kbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUU3Njc0QzUyQkREREIyOEFGNUZGRDlGIC8qIHVu
aXN0ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSB1bmlzdGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjE0OEQ5NjdCOEQyODhBODI2N0JGRjNBIC8qIFZhbGlkYXRlTGltaXRhdGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUIyRjVDQTExRUVBOTJERjIzODRFRkQ5MyAvKiBDb25zdGFudFVu
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0YW50VW5pb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjQzNkVGRjA2OTEzRkNCMTlDMzUyMkE3IC8qIFJlbW92ZVRyZWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVtb3ZlVHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUI1NUIzNTlDRjdFNDg2REJDNDlCQkYwQSAvKiBPdXRwdXRHTFNMQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBPdXRwdXRHTFNMQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCNjRFQUJFNzM4RkM2NjZBNUU0RTJGNDIgLyogUG9vbEFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvb2xBbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3NTcw
N0IzOTNCN0VBQjdERDk5OTlDQiAvKiBjcHAuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gY3BwLmM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3QjExMjdDNzVCNTc2RkMwMEQ3NEFFRCAvKiBDb2Rl
R2VuR0xTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlR2VuR0xTTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3RTVCMEYwNDYzNUU2MDkwRjBERThFRiAvKiBTeW1ib2xU
YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xUYWJsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDREYwMUYwMDJBREU5REI4QTNFRjRGRSAvKiBPdXRwdXRHTFNM
QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdXRwdXRHTFNMQmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFMjU4NDg2MDA1RjY2OTZDQzAzMTYyMiAvKiBvc3NvdXJj
ZV9wb3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBvc3NvdXJjZV9wb3NpeC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzREFGRjZCRjEyQkI3RjQ3ODRENkM3RSAvKiBUcmFu
c2xhdG9ySExTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2xhdG9ySExTTC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0OTU0OURDQ0FGNDUwRUI3NjE1MjBFMSAvKiBD
b2RlR2VuSExTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlR2VuSExTTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEsMTUgKzE3MywxOSBAQAogCQlEMTNDMzY5M0I5
RTQwRDM3RjJGQUIzNEEgLyogdG9rZW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHRva2Vucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMkM5QzhFQjRBN0VGRjVCNjdGRjlEQkYgLyogcGFy
c2VDb25zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBwYXJzZUNvbnN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDQwRjc4Q0I5QkEwQzg5OTIxRkEzMTlEIC8qIFJlbW92ZVRy
ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlENTNEREQwQ0RGMTVFRTFERDAxRjFBMjAgLyogVHJhbnNsYXRvckVTU0wuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVHJhbnNsYXRvckVTU0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJREIyOTE3QzVCNjI0NzEyMzY0REU0QTc1IC8qIE91dHB1dEVTU0wuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gT3V0cHV0RVNTTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURE
RDNCN0UzQjdCMzVBMEI4NDY5QUI4NyAvKiBUcmFuc2xhdG9yR0xTTC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUcmFuc2xhdG9yR0xTTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERUFGNkYz
MTI2QzJFQzQzOTc3ODVDM0YgLyogaW50ZXJtT3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGlu
dGVybU91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFRUFGQzYxOEEzQjMz
RjFGQkZFMzUzNiAvKiBNTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1NYXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM3MTFBNDhBMEJGMTZCMUNCRDc3QUM5IC8qIFVuZm9sZFNlbGVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmZvbGRTZWxlY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0EyOUI2RTlDMjFCNjdDMjVGRjBEMkIgLyogVHJhbnNsYXRvckhM
U0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNsYXRvckhMU0wuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjAxM0E3MjQwQkRBRThBNjE0MTNEOEMwIC8qIHN5bWJvbHMuYyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5j
OyBwYXRoID0gc3ltYm9scy5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGM0UwOURD
OEUxQkY1RDI5NThBQUNFREUgLyogU2VhcmNoU3ltYm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlYXJj
aFN5bWJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNzI3QUVDOTA2NzEyRUMy
MzgwNDE0NjQgLyogVmVyc2lvbkdMU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmVyc2lvbkdM
U0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNzQ2MThGMThGRTU0NDgxMTUw
MTdDNDQgLyogQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGN0IyOTcxRDRFQjM4MzZCOTRCN0VDQUYgLyogSW5mb1NpbmsuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5mb1NpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RkIzQzUwNUQxMUY3OTI0QTAwODFGNUJBIC8qIGxpYmFuZ2xlLmEgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IGxpYmFuZ2xlLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CisJCUY5OUU3MzdEM0ZGRDMwQ0E1RTM1NDE1MCAvKiBjb21tb24uZ3lwaSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb21t
b24uZ3lwaTsgcGF0aCA9IC4uL2J1aWxkL2NvbW1vbi5neXBpOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRjNBQTY5NERGOUE0NDU1QTgxMzIzNEQgLyogc2Nhbm5lci5jICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7
IHBhdGggPSBzY2FubmVyLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJY
RmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKQEAgLTE5MSw3ICsxOTcsMTQgQEAKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKLQkJRkIzQzUw
NUExMUY3OTI0QTAwODFGNUJBIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCUNBNzFDQkE2MzNFRkM2
MzE2NkJFQzlGMyAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CisJCUZFMzY3OUEwOTU1QjI1RUI3QkYxMTZFNiAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCkBAIC0yMjgsMTYgKzI0MSwxNSBAQAogCQkxOTZEQjZBQjAwNkJC
ODM1MDNDN0Q3ODYgLyogU291cmNlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKLQkJCQk2RTAyNTY1MTEyRTY5MzREMDBCMzQzMUYgLyogZ2xzbGFuZ19sZXguY3Bw
ICovLAotCQkJCTZFMDI1NjUyMTJFNjkzNEQwMEIzNDMxRiAvKiBnbHNsYW5nX3RhYi5jcHAgKi8s
Ci0JCQkJNkUwMjU2NTMxMkU2OTM0RDAwQjM0MzFGIC8qIGdsc2xhbmdfdGFiLmggKi8sCi0JCQkJ
NkUwMjU2NTQxMkU2OTM0RDAwQjM0MzFGIC8qIGdsc2xhbmcuaCAqLywKIAkJCQkwRThENjVGNTg0
RkRCODREQUFCRDM5NjkgLyogcHJlcHJvY2Vzc29yICovLAogCQkJCTI3RTRDN0VEMEI4MkUxOERD
QkVERjFDOSAvKiBCYXNlVHlwZXMuaCAqLywKIAkJCQlCN0IxMTI3Qzc1QjU3NkZDMDBENzRBRUQg
LyogQ29kZUdlbkdMU0wuY3BwICovLAogCQkJCUM0OTU0OURDQ0FGNDUwRUI3NjE1MjBFMSAvKiBD
b2RlR2VuSExTTC5jcHAgKi8sCiAJCQkJRjc0NjE4RjE4RkU1NDQ4MTE1MDE3QzQ0IC8qIENvbW1v
bi5oICovLAorCQkJCTBBMTE4RTUwMDNFNUMwRTI1M0M1MzgzOSAvKiBDb21waWxlci5jcHAgKi8s
CiAJCQkJQjJGNUNBMTFFRUE5MkRGMjM4NEVGRDkzIC8qIENvbnN0YW50VW5pb24uaCAqLywKKwkJ
CQk1REM5QjY0N0UxMEY2NUY2NjE0MkVDQzEgLyogRm9yTG9vcFVucm9sbC5jcHAgKi8sCisJCQkJ
MTgyQkFENTBENEU1OEI4ODRGNUVCOUYzIC8qIEZvckxvb3BVbnJvbGwuaCAqLywKIAkJCQk2RTY5
MjdCRTVEM0MyQzgyRjg2MTExREYgLyogSW5mb1NpbmsuY3BwICovLAogCQkJCUY3QjI5NzFENEVC
MzgzNkI5NEI3RUNBRiAvKiBJbmZvU2luay5oICovLAogCQkJCUE1NEYyRUQwRDgyRDdCQkNBNEU5
RUVFQSAvKiBJbml0aWFsaXplLmNwcCAqLywKQEAgLTI0OSw4ICsyNjEsMTQgQEAKIAkJCQlDNEZF
OTg4RUY5QTI5Mzg2N0U1Qzc3MUIgLyogSW50ZXJtVHJhdmVyc2UuY3BwICovLAogCQkJCTNGN0M0
ODZDMzcwQTcyOTM4RkU4MTYwRiAvKiBJbnRlcm1lZGlhdGUuY3BwICovLAogCQkJCURFRUFGQzYx
OEEzQjMzRjFGQkZFMzUzNiAvKiBNTWFwLmggKi8sCisJCQkJNTdDRjFGODNFODQyOTAxQzQyRDQ0
ODI1IC8qIE1hcExvbmdWYXJpYWJsZU5hbWVzLmNwcCAqLywKKwkJCQk4MUNDNDI0NUE4RTVBQjU1
ODREMzM2RjMgLyogTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCAqLywKKwkJCQlEQjI5MTdDNUI2MjQ3
MTIzNjRERTRBNzUgLyogT3V0cHV0RVNTTC5jcHAgKi8sCisJCQkJNkJCNjZBQjU4NzM4NjhFMjM2
NzVCNkRCIC8qIE91dHB1dEVTU0wuaCAqLywKIAkJCQk0OEI3NDAyQ0MwN0EwNTlGRUY1RUMzNTEg
LyogT3V0cHV0R0xTTC5jcHAgKi8sCiAJCQkJOTNENjFDQjBCQ0U1NEUwNjlENzFGOTIwIC8qIE91
dHB1dEdMU0wuaCAqLywKKwkJCQlCQ0RGMDFGMDAyQURFOURCOEEzRUY0RkUgLyogT3V0cHV0R0xT
TEJhc2UuY3BwICovLAorCQkJCUI1NUIzNTlDRjdFNDg2REJDNDlCQkYwQSAvKiBPdXRwdXRHTFNM
QmFzZS5oICovLAogCQkJCTlBNUI1QkIyNTI2ODAyNDc5RTE5Rjk5MyAvKiBPdXRwdXRITFNMLmNw
cCAqLywKIAkJCQk1QTIxNTk5QzU5QkMxQTc1QTdGQUJBMzQgLyogT3V0cHV0SExTTC5oICovLAog
CQkJCTk3NkM4MzFBNzVFQkUwMDlBOTg2MTc5NiAvKiBQYXJzZUhlbHBlci5jcHAgKi8sCkBAIC0y
NjEsMTAgKzI3OSwxNCBAQAogCQkJCTlENDdCMUFDODJFNEVFODU5QUM1NDI0MyAvKiBRdWFsaWZp
ZXJBbGl2ZS5oICovLAogCQkJCUI0MzZFRkYwNjkxM0ZDQjE5QzM1MjJBNyAvKiBSZW1vdmVUcmVl
LmNwcCAqLywKIAkJCQlENDBGNzhDQjlCQTBDODk5MjFGQTMxOUQgLyogUmVtb3ZlVHJlZS5oICov
LAorCQkJCTIyOEE2REVEREYwOERCMzcwMzk0QTdBRCAvKiBTZWFyY2hTeW1ib2wuY3BwICovLAor
CQkJCUYzRTA5REM4RTFCRjVEMjk1OEFBQ0VERSAvKiBTZWFyY2hTeW1ib2wuaCAqLywKIAkJCQlB
RTY1RTEzOUFFMTBERTlFRkFEOEQ1QjEgLyogU2hIYW5kbGUuaCAqLywKIAkJCQk1NkM3RTk5QkE1
MDBBODRDMzUyMTZGRTAgLyogU2hhZGVyTGFuZy5jcHAgKi8sCiAJCQkJQjdFNUIwRjA0NjM1RTYw
OTBGMERFOEVGIC8qIFN5bWJvbFRhYmxlLmNwcCAqLywKIAkJCQk3QzZCQjEyQUIwOTk1NTZDRjM3
OUQ3OEYgLyogU3ltYm9sVGFibGUuaCAqLywKKwkJCQkwQTNBMjYwRjUzNzlBN0UyNjU1RDQwRjMg
LyogVHJhbnNsYXRvckVTU0wuY3BwICovLAorCQkJCUQ1M0RERDBDREYxNUVFMUREMDFGMUEyMCAv
KiBUcmFuc2xhdG9yRVNTTC5oICovLAogCQkJCTZGQjcwREM3NEEyMUZCQ0Q2NjVBQkRGOSAvKiBU
cmFuc2xhdG9yR0xTTC5jcHAgKi8sCiAJCQkJREREM0I3RTNCN0IzNUEwQjg0NjlBQjg3IC8qIFRy
YW5zbGF0b3JHTFNMLmggKi8sCiAJCQkJQzNEQUZGNkJGMTJCQjdGNDc4NEQ2QzdFIC8qIFRyYW5z
bGF0b3JITFNMLmNwcCAqLywKQEAgLTI3Miw4ICsyOTQsMTggQEAKIAkJCQlBQTUzQjY2MzJDNzZG
OTA1REYwOEU1NjQgLyogVHlwZXMuaCAqLywKIAkJCQlFMzcxMUE0OEEwQkYxNkIxQ0JENzdBQzkg
LyogVW5mb2xkU2VsZWN0LmNwcCAqLywKIAkJCQkyQTc2NUI4NkNCQUYwRDRBM0U2OURDQTcgLyog
VW5mb2xkU2VsZWN0LmggKi8sCisJCQkJQjE0OEQ5NjdCOEQyODhBODI2N0JGRjNBIC8qIFZhbGlk
YXRlTGltaXRhdGlvbnMuY3BwICovLAorCQkJCTkwMjU0ODQyRDcyOTc1NjcyQzJFOUE5MyAvKiBW
YWxpZGF0ZUxpbWl0YXRpb25zLmggKi8sCisJCQkJMjdDMTFFRTEwRkVEMjk3OTkzMUZGQzExIC8q
IFZhcmlhYmxlSW5mby5jcHAgKi8sCisJCQkJNUQ5OTM1NEM0RDgxODdEMzg0QzgxMjA3IC8qIFZh
cmlhYmxlSW5mby5oICovLAorCQkJCUY3MjdBRUM5MDY3MTJFQzIzODA0MTQ2NCAvKiBWZXJzaW9u
R0xTTC5jcHAgKi8sCisJCQkJMTIwQUQwQTNCNzY0MkZCNUE5QUUzQTU2IC8qIFZlcnNpb25HTFNM
LmggKi8sCiAJCQkJNEFCQTIzMEZFQTM2NTRCMDMwRTRDNEZCIC8qIGRlYnVnLmNwcCAqLywKIAkJ
CQk5NTI3NkFBNkIzNkZDMUIxRDkxM0ZDRTQgLyogZGVidWcuaCAqLywKKwkJCQk0OTdDNUMyNEVF
RjQ2NkZCNEI1MEEyNTkgLyogZ2xzbGFuZy5oICovLAorCQkJCTczQTU3QzZENDEzNzczQUVCQTND
NDdBNiAvKiBnbHNsYW5nX2xleC5jcHAgKi8sCisJCQkJM0Y2OEE2QUE4MTE0OTU3MThBNjkzOEMw
IC8qIGdsc2xhbmdfdGFiLmNwcCAqLywKKwkJCQk0RkNGMzJDQjJEOEE0MkM5MzBBNjZCMDAgLyog
Z2xzbGFuZ190YWIuaCAqLywKIAkJCQlERUFGNkYzMTI2QzJFQzQzOTc3ODVDM0YgLyogaW50ZXJt
T3V0LmNwcCAqLywKIAkJCQk3OTlEQzk2MTFFRTJFQTNCQTdDRjU0NzcgLyogaW50ZXJtZWRpYXRl
LmggKi8sCiAJCQkJMTUzQkYwNkJGMTJDNkY1MDQ5NkM2MTU2IC8qIGxvY2FsaW50ZXJtZWRpYXRl
LmggKi8sCkBAIC0yODEsNiArMzEzLDggQEAKIAkJCQlCRTI1ODQ4NjAwNUY2Njk2Q0MwMzE2MjIg
Lyogb3Nzb3VyY2VfcG9zaXguY3BwICovLAogCQkJCUQyQzlDOEVCNEE3RUZGNUI2N0ZGOURCRiAv
KiBwYXJzZUNvbnN0LmNwcCAqLywKIAkJCQlBRTc2NzRDNTJCREREQjI4QUY1RkZEOUYgLyogdW5p
c3RkLmggKi8sCisJCQkJM0VFNzIxNUE3QUI0RUY3MUM5N0QyNTQ1IC8qIHV0aWwuY3BwICovLAor
CQkJCUE1MUM3MjhCNjE1QjQxRTFENTlFOTkwMiAvKiB1dGlsLmggKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IFNvdXJjZTsKIAkJCXBhdGggPSBjb21waWxlcjsKQEAgLTI5OSw2ICszMzMsNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDRjJCNjJFMDgyMEM4MzFBRjgx
MkQwMDAgLyogYnVpbGRfYW5nbGUuZ3lwICovLAorCQkJCUY5OUU3MzdEM0ZGRDMwQ0E1RTM1NDE1
MCAvKiBjb21tb24uZ3lwaSAqLywKIAkJCSk7CiAJCQluYW1lID0gQnVpbGQ7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMzA3LDcgKzM0Miw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTNERERDNzcyMTYyMDJBNERFMTgwOEJEQiAvKiBsaWJ0cmFu
c2xhdG9yX2NvbW1vbi5hICovLAotCQkJCUZCM0M1MDVEMTFGNzkyNEEwMDgxRjVCQSAvKiBsaWJh
bmdsZS5hICovLAorCQkJCUExNjQ0QjAwRTkzMDRDNDA3RkRDNUY0NyAvKiBsaWJ0cmFuc2xhdG9y
X2dsc2wuYSAqLywKKwkJCQlBNDQ3Rjc1RjMzREE0QzRDMTIzQUM5NTIgLyogbGlidHJhbnNsYXRv
cl9obHNsLmEgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTMxNSw2ICszNTEsMjIgQEAKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTU4OTJDN0EzNjk1
MzMwNDM3QUZFNTcxNCAvKiB0cmFuc2xhdG9yX2dsc2wgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRp
dmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gOEI4ODE1Q0EyRUZFNjBGRDBD
MDM2MUJGIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0
cmFuc2xhdG9yX2dsc2wiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJQkFCQ0U3MjExMDZC
NUMxNTI3RUZFRjBEIC8qIFNvdXJjZXMgKi8sCisJCQkJQ0E3MUNCQTYzM0VGQzYzMTY2QkVDOUYz
IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlk
ZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IHRyYW5zbGF0b3JfZ2xzbDsKKwkJCXBy
b2R1Y3ROYW1lID0gdHJhbnNsYXRvcl9nbHNsOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IEExNjQ0
QjAwRTkzMDRDNDA3RkRDNUY0NyAvKiBsaWJ0cmFuc2xhdG9yX2dsc2wuYSAqLzsKKwkJCXByb2R1
Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9Owog
CQk2RjRGRDM1Q0IzREZDODlENzBFQ0Q0MzIgLyogdHJhbnNsYXRvcl9jb21tb24gKi8gPSB7CiAJ
CQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMzRC
QjM4RTNBNzQ0MThCMkEwNjNCNDlFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJ0cmFuc2xhdG9yX2NvbW1vbiIgKi87CkBAIC0zMjUsMjggKzM3NywyNiBA
QAogCQkJYnVpbGRSdWxlcyA9ICgKIAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJMjkx
RUUwNDIwMkVDNzk2NzgzNUZDQzM4IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwog
CQkJbmFtZSA9IHRyYW5zbGF0b3JfY29tbW9uOwogCQkJcHJvZHVjdE5hbWUgPSB0cmFuc2xhdG9y
X2NvbW1vbjsKIAkJCXByb2R1Y3RSZWZlcmVuY2UgPSAzREREQzc3MjE2MjAyQTRERTE4MDhCREIg
LyogbGlidHJhbnNsYXRvcl9jb21tb24uYSAqLzsKIAkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBs
ZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOwogCQl9OwotCQlGQjNDNTA1NTExRjc5MjRB
MDA4MUY1QkEgLyogYW5nbGUgKi8gPSB7CisJCUE4MzhFOTU3NEIzRkYxNDc5MURCREFCMSAvKiB0
cmFuc2xhdG9yX2hsc2wgKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gRkIzQzUwNUIxMUY3OTI0QTAwODFGNUJBIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJhbmdsZSIgKi87CisJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gQzcxRTc5Qzc4MjlGRDc5NkNGNjIxQjQ0IC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0cmFuc2xhdG9yX2hsc2wiICov
OwogCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJRkIzQzUwNTYxMUY3OTI0QTAwODFGNUJBIC8qIFNv
dXJjZXMgKi8sCi0JCQkJRkIzQzUwNUExMUY3OTI0QTAwODFGNUJBIC8qIEZyYW1ld29ya3MgKi8s
CisJCQkJMDVGM0JDQTk1MTg3NzBCRTNGMUUwQTM4IC8qIFNvdXJjZXMgKi8sCisJCQkJRkUzNjc5
QTA5NTVCMjVFQjdCRjExNkU2IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJYnVpbGRSdWxl
cyA9ICgKIAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJRkIzQzUwRDExMUY3OUNDQzAw
ODFGNUJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwotCQkJbmFtZSA9IGFuZ2xl
OwotCQkJcHJvZHVjdE5hbWUgPSB0cmFuc2xhdG9yX2dsc2w7Ci0JCQlwcm9kdWN0UmVmZXJlbmNl
ID0gRkIzQzUwNUQxMUY3OTI0QTAwODFGNUJBIC8qIGxpYmFuZ2xlLmEgKi87CisJCQluYW1lID0g
dHJhbnNsYXRvcl9obHNsOworCQkJcHJvZHVjdE5hbWUgPSB0cmFuc2xhdG9yX2hsc2w7CisJCQlw
cm9kdWN0UmVmZXJlbmNlID0gQTQ0N0Y3NUYzM0RBNEM0QzEyM0FDOTUyIC8qIGxpYnRyYW5zbGF0
b3JfaGxzbC5hICovOwogCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5s
aWJyYXJ5LnN0YXRpYyI7CiAJCX07CiAvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8K
QEAgLTM2MCw3NCArNDEwLDYxIEBACiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEU1OUY4
RkU0QTgwOTlFOEREQ0E0Q0U3IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJv
amVjdCAiYnVpbGRfYW5nbGUiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUg
My4xIjsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwotCQkJa25vd25SZWdpb25zID0g
KAotCQkJCUVuZ2xpc2gsCi0JCQkJSmFwYW5lc2UsCi0JCQkJRnJlbmNoLAotCQkJCUdlcm1hbiwK
LQkJCSk7CiAJCQltYWluR3JvdXAgPSA1QkJFRkY5QjkxNzM4Mjk3Qjk1QzU2OEQ7CiAJCQlwcm9q
ZWN0RGlyUGF0aCA9ICIiOwogCQkJcHJvamVjdFJvb3QgPSAiIjsKIAkJCXRhcmdldHMgPSAoCiAJ
CQkJMTU2M0Q5OTE2QkZEQUQ4NTMwMzJDRTFBIC8qIEFsbCAqLywKIAkJCQk2RjRGRDM1Q0IzREZD
ODlENzBFQ0Q0MzIgLyogdHJhbnNsYXRvcl9jb21tb24gKi8sCi0JCQkJMzEzNDlENjY1RkFFNjQy
QUVCNDkxMzVFIC8qIEFOR0xFIFN1cHBvcnQgKi8sCi0JCQkJRkIzQzUwNTUxMUY3OTI0QTAwODFG
NUJBIC8qIGFuZ2xlICovLAorCQkJCTU4OTJDN0EzNjk1MzMwNDM3QUZFNTcxNCAvKiB0cmFuc2xh
dG9yX2dsc2wgKi8sCisJCQkJQTgzOEU5NTc0QjNGRjE0NzkxREJEQUIxIC8qIHRyYW5zbGF0b3Jf
aGxzbCAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKLS8q
IEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCTBENTEzRjhCOTIz
OTQ5QzE1NkRCMDJDNSAvKiBBY3Rpb24gImJpc29uX2dsc2xhbmciICovID0gewotCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCQkwNUYzQkNBOTUxODc3MEJFM0YxRTBBMzggLyogU291cmNlcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJKTsKLQkJCWlucHV0UGF0aHMgPSAoCi0JCQkJY29t
cGlsZXIvZ2xzbGFuZy55LAotCQkJKTsKLQkJCW5hbWUgPSAiQWN0aW9uIFwiYmlzb25fZ2xzbGFu
Z1wiIjsKLQkJCW91dHB1dFBhdGhzID0gKAotCQkJCSIkKElOVEVSTUVESUFURV9ESVIpL2dsc2xh
bmdfdGFiLmNwcCIsCi0JCQkJIiQoSU5URVJNRURJQVRFX0RJUikvZ2xzbGFuZ190YWIuaCIsCisJ
CQkJNEI0QkRFN0FENjI2NkIzOUVENDNDMkQ0IC8qIENvZGVHZW5ITFNMLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTVGN0I1MkE1NERDRTgxNTVFRDk0RUNGOCAvKiBPdXRwdXRITFNMLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUU5OUQ2RDgwREJGMDVFQ0U3MTA4QjI2RCAvKiBUcmFuc2xhdG9ySExT
TC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5ODg2QkNENUQwREQ2OUI2RkRFMDlERDggLyogVW5m
b2xkU2VsZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5NjQ2NjU2NkQ4QzBGMDIzQTU1Mzc2
MCAvKiBTZWFyY2hTeW1ib2wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCQlzaGVsbFBhdGggPSAvYmluL3NoOwot
CQkJc2hlbGxTY3JpcHQgPSAiZWNobyBub3RlOiBcIkV4ZWN1dGluZyBiaXNvbiBvbiBjb21waWxl
ci9nbHNsYW5nLnlcIlxuZXhlYyBiaXNvbiAtLW5vLWxpbmVzIFwiLS1kZWZpbmVzPSR7SU5URVJN
RURJQVRFX0RJUn0vZ2xzbGFuZ190YWIuaFwiIFwiLS1za2VsZXRvbj15YWNjLmNcIiBcIi0tb3V0
cHV0PSR7SU5URVJNRURJQVRFX0RJUn0vZ2xzbGFuZ190YWIuY3BwXCIgY29tcGlsZXIvZ2xzbGFu
Zy55XG5leGl0IDFcbiI7Ci0JCQlzaG93RW52VmFyc0luTG9nID0gMDsKIAkJfTsKLQkJRkEwRDcx
MjVEQjA2QTdBNzcxNkE1OTEwIC8qIEFjdGlvbiAiZmxleF9nbHNsYW5nIiAqLyA9IHsKLQkJCWlz
YSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJQkFCQ0U3MjExMDZCNUMxNTI3RUZFRjBE
IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCSk7Ci0JCQlpbnB1
dFBhdGhzID0gKAotCQkJCWNvbXBpbGVyL2dsc2xhbmcubCwKLQkJCSk7Ci0JCQluYW1lID0gIkFj
dGlvbiBcImZsZXhfZ2xzbGFuZ1wiIjsKLQkJCW91dHB1dFBhdGhzID0gKAotCQkJCSIkKElOVEVS
TUVESUFURV9ESVIpL2dsc2xhbmcuY3BwIiwKKwkJCQlENTZGN0QwMEU5QjE2MkU0MTZEMzdERjAg
LyogQ29kZUdlbkdMU0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEVDMDlCM0IyNTQ4MjlGOEYx
RDk1MkQzIC8qIEZvckxvb3BVbnJvbGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzRBQUIyQkI0
NTk0QzBEQTMxOERDQjFDIC8qIE91dHB1dEVTU0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUIx
MTFCODNGQjYzNkZENUNERUMzMkEwIC8qIE91dHB1dEdMU0xCYXNlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUM3NUVCOTI5MkEwRERBNDU1OTJBOEFDRiAvKiBPdXRwdXRHTFNMLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTkzQTQxQUYwMzZFNUVGODdCMzY2QjU2MyAvKiBUcmFuc2xhdG9yRVNTTC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkzRjE4Mzg5QkNCODkzNzBBOTMwNjY3RjQgLyogVHJhbnNs
YXRvckdMU0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEFDMTg5N0U0NjFBMEQ0NzU4RTNEQ0Uz
IC8qIFZlcnNpb25HTFNMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJ
CXNoZWxsU2NyaXB0ID0gImVjaG8gbm90ZTogXCJFeGVjdXRpbmcgZmxleCBvbiBjb21waWxlci9n
bHNsYW5nLmxcIlxuZXhlYyBmbGV4IC0tbm9saW5lIC0tbm91bmlzdGQgXCItLW91dGZpbGU9JHtJ
TlRFUk1FRElBVEVfRElSfS9nbHNsYW5nLmNwcFwiIGNvbXBpbGVyL2dsc2xhbmcubFxuZXhpdCAx
XG4iOwotCQkJc2hvd0VudlZhcnNJbkxvZyA9IDA7CiAJCX07Ci0vKiBFbmQgUEJYU2hlbGxTY3Jp
cHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLwogCQlFQUEyMkNBNjNGRDU3MkZDQ0I5MTNEMjIgLyogU291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTA4QTc5MzNCRDJGNzhBODZCOTAyMDBGNiAvKiBD
b21waWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4ODhGMTM4MjQ5OEUyRDc0QUYyODAxQzgg
LyogZGVidWcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzAyMUUwQkYxQkM4NDQyRkYxRjJGMkI0
IC8qIGdsc2xhbmdfbGV4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJFN0MwRDM4MDRCODMwOEE0
OTNEOUI0QiAvKiBnbHNsYW5nX3RhYi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRUJCRjRGMDgx
OUVBM0QwMzk3N0E4RkMgLyogSW5mb1NpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzA2NUQy
OUU5N0ZBQzZFMTI3Mzg4RDE1IC8qIEluaXRpYWxpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEEyMTY5NDkxMDNFMUUyMjhGOUMxMkYwIC8qIEluaXRpYWxpemVEbGwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTBERjAwMDA1Q0M0MjEyRjZGQjEyOTFEIC8qIEludGVybWVkaWF0ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MEZDMTg5QjhBMjQ2RURGMTRDMkZERTMgLyogaW50ZXJtT3V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUY1QUUyQTI5MkRGQUY4QzE1ODQxMkFBMiAvKiBJbnRlcm1U
cmF2ZXJzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4OTZCNzIwQkQyMUY2NzQ5QTdEODNGMzAg
LyogTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUU4REZFMUND
RUYwMzhCRjJCNjU0MjhDIC8qIHBhcnNlQ29uc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkY5
Rjg3NTAxN0E2OEFCRTVEMzlGRjE5IC8qIFBhcnNlSGVscGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUxQzdDNURGRjBCMkRGRUMwOTM4N0Y0RSAvKiBQb29sQWxsb2MuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC00MzUsNiArNDcyLDkgQEAKIAkJCQlBQzIzRjU4RkREM0M1NUY1Q0ExOEVFRDcgLyog
UmVtb3ZlVHJlZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCOEJEMjY4NUExNkIxODhDQ0RGQjA1
MkIgLyogU2hhZGVyTGFuZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNkFCRDU4RjhDQUI3NjQx
RDhCRkU5MzUgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTVDQkQ4NzU3
M0I4MDNBMTczQUM5MTI5IC8qIHV0aWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEU5NDU2RjQ2
NEUxNjM5MkQxQ0NEMDMwIC8qIFZhbGlkYXRlTGltaXRhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMUVEMUQyQzdDNzRDNkI2MjVBRkIxQ0NGIC8qIFZhcmlhYmxlSW5mby5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzMkIxREJDRDZCODNGMjE0NkQ3ODdBNjIgLyogYXRvbS5jIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0I3RjBFRjBENkE4OUZBOEM0REY1NTEzIC8qIGNwcC5jIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzVCRTFCQkVFNjEzNUExQ0IwNjA4RUE4IC8qIGNwcHN0cnVjdC5jIGluIFNvdXJj
ZXMgKi8sCkBAIC00NDYsMTU0ICs0ODYsMjAwIEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Ci0JCUZCM0M1MDU2MTFGNzkyNEEwMDgxRjVC
QSAvKiBTb3VyY2VzICovID0gewotCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7Ci0JCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJRkIzQzUwQUIx
MUY3OTUxQjAwODFGNUJBIC8qIFRyYW5zbGF0b3JHTFNMLmggaW4gU291cmNlcyAqLywKLQkJCQlG
QjNDNTBBQzExRjc5NTFCMDA4MUY1QkEgLyogT3V0cHV0R0xTTC5oIGluIFNvdXJjZXMgKi8sCi0J
CQkJRkIzQzUwQTQxMUY3OTRGRjAwODFGNUJBIC8qIGF0b20uYyBpbiBTb3VyY2VzICovLAotCQkJ
CUZCM0M1MEE1MTFGNzk0RkYwMDgxRjVCQSAvKiBjcHAuYyBpbiBTb3VyY2VzICovLAotCQkJCUZC
M0M1MEE2MTFGNzk0RkYwMDgxRjVCQSAvKiBjcHBzdHJ1Y3QuYyBpbiBTb3VyY2VzICovLAotCQkJ
CUZCM0M1MEE3MTFGNzk0RkYwMDgxRjVCQSAvKiBtZW1vcnkuYyBpbiBTb3VyY2VzICovLAotCQkJ
CUZCM0M1MEE4MTFGNzk0RkYwMDgxRjVCQSAvKiBzY2FubmVyLmMgaW4gU291cmNlcyAqLywKLQkJ
CQlGQjNDNTBBOTExRjc5NEZGMDA4MUY1QkEgLyogc3ltYm9scy5jIGluIFNvdXJjZXMgKi8sCi0J
CQkJRkIzQzUwQUExMUY3OTRGRjAwODFGNUJBIC8qIHRva2Vucy5jIGluIFNvdXJjZXMgKi8sCi0J
CQkJRkIzQzUwNTcxMUY3OTI0QTAwODFGNUJBIC8qIENvZGVHZW5HTFNMLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUZCM0M1MDkyMTFGNzk0Q0UwMDgxRjVCQSAvKiBkZWJ1Zy5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlGQjNDNTA5MzExRjc5NENFMDA4MUY1QkEgLyogSW5mb1NpbmsuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRkIzQzUwOTQxMUY3OTRDRTAwODFGNUJBIC8qIEluaXRpYWxpemUuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRkIzQzUwOTUxMUY3OTRDRTAwODFGNUJBIC8qIEluaXRpYWxp
emVEbGwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkIzQzUwOTYxMUY3OTRDRTAwODFGNUJBIC8q
IEludGVybWVkaWF0ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGQjNDNTA5NzExRjc5NENFMDA4
MUY1QkEgLyogaW50ZXJtT3V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZCM0M1MDk4MTFGNzk0
Q0UwMDgxRjVCQSAvKiBJbnRlcm1UcmF2ZXJzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGQjND
NTA5QTExRjc5NENFMDA4MUY1QkEgLyogb3Nzb3VyY2VfcG9zaXguY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJRkIzQzUwNTgxMUY3OTI0QTAwODFGNUJBIC8qIE91dHB1dEdMU0wuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRkIzQzUwOUIxMUY3OTRDRTAwODFGNUJBIC8qIHBhcnNlQ29uc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJRkIzQzUwOUMxMUY3OTRDRTAwODFGNUJBIC8qIFBhcnNlSGVscGVy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZCM0M1MDlEMTFGNzk0Q0UwMDgxRjVCQSAvKiBQb29s
QWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkIzQzUwOUUxMUY3OTRDRTAwODFGNUJBIC8q
IFF1YWxpZmllckFsaXZlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZCM0M1MDlGMTFGNzk0Q0Uw
MDgxRjVCQSAvKiBSZW1vdmVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZCM0M1MEEwMTFG
Nzk0Q0UwMDgxRjVCQSAvKiBTaGFkZXJMYW5nLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZCM0M1
MEExMTFGNzk0Q0UwMDgxRjVCQSAvKiBTeW1ib2xUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlGQjNDNTA1OTExRjc5MjRBMDA4MUY1QkEgLyogVHJhbnNsYXRvckdMU0wuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
Ci0JCX07CiAvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KLQkJMjkxRUUwNDIwMkVDNzk2NzgzNUZD
QzM4IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCUExNUU3OEJFQ0RGRjIwQkMzRkZG
MDQwQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKLQkJCXRhcmdldCA9IDMxMzQ5RDY2NUZBRTY0MkFFQjQ5MTM1RSAvKiBBTkdMRSBT
dXBwb3J0ICovOwotCQkJdGFyZ2V0UHJveHkgPSBFNjlCRkJFMkQxMjcyNjIwRTQ2QzNGOEEgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQkJdGFyZ2V0ID0gNkY0RkQzNUNCM0RGQzg5RDcw
RUNENDMyIC8qIHRyYW5zbGF0b3JfY29tbW9uICovOworCQkJdGFyZ2V0UHJveHkgPSA1NUQ1RjlC
RjcyN0U0QTNCNjYzNzgwMkIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9OwotCQlG
QjNDNTA2NDExRjc5Mjk3MDA4MUY1QkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJ
QkEyNDZDQTE5NDM1QTlGQThBQzY5MTQ2IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gRkIzQzUwNTUxMUY3OTI0
QTAwODFGNUJBIC8qIGFuZ2xlICovOwotCQkJdGFyZ2V0UHJveHkgPSBGQjNDNTA2MzExRjc5Mjk3
MDA4MUY1QkEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQkJdGFyZ2V0ID0gNTg5MkM3
QTM2OTUzMzA0MzdBRkU1NzE0IC8qIHRyYW5zbGF0b3JfZ2xzbCAqLzsKKwkJCXRhcmdldFByb3h5
ID0gNjBEMzU0NkFDMjdCMDk0RDZDQTA0Q0Q2IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsK
IAkJfTsKLQkJRkIzQzUwRDExMUY3OUNDQzAwODFGNUJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8gPSB7CisJCUU0QTNEMzNDQTQ5RDAxMzU1MEI4QkE1RiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKLQkJCXRhcmdldCA9IDMxMzQ5
RDY2NUZBRTY0MkFFQjQ5MTM1RSAvKiBBTkdMRSBTdXBwb3J0ICovOwotCQkJdGFyZ2V0UHJveHkg
PSBGQjNDNTBEMDExRjc5Q0NDMDA4MUY1QkEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwor
CQkJdGFyZ2V0ID0gQTgzOEU5NTc0QjNGRjE0NzkxREJEQUIxIC8qIHRyYW5zbGF0b3JfaGxzbCAq
LzsKKwkJCXRhcmdldFByb3h5ID0gMUY3MjQyNDk2MTAzRURGMjlDQzI1RDg3IC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLzsKIAkJfTsKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwotCQkwMEJG
MkVCQ0JERjU2NzhGNEJBMkZBOTIgLyogRGVmYXVsdCAqLyA9IHsKKwkJMzIyQThDNjI0MjNCNTk1
RTExQkFENDJEIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9IEFsbDsKKwkJCX07CisJ
CQluYW1lID0gRGVidWc7CisJCX07CisJCTREQTQyQTc4RDNCODU1QzlDRDhGNjU4RCAvKiBSZWxl
YXNlICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRp
bmdzID0gewotCQkJCVBST0RVQ1RfTkFNRSA9ICJ0cmFuc2xhdG9yX2NvbW1vbiBTdXBwb3J0IjsK
KwkJCQlFWEVDVVRBQkxFX1BSRUZJWCA9IGxpYjsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklO
SVRJT05TID0gKAorCQkJCQkiXCJBTkdMRV9ESVNBQkxFX1RSQUNFXCIiLAorCQkJCQkiXCJBTkdM
RV9DT01QSUxFX09QVElNSVpBVElPTl9MRVZFTD1EM0RDT01QSUxFX09QVElNSVpBVElPTl9MRVZF
TDBcIiIsCisJCQkJKTsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLAorCQkJ
CQkuLi9pbmNsdWRlLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gdHJhbnNsYXRvcl9jb21t
b247CiAJCQl9OwotCQkJbmFtZSA9IERlZmF1bHQ7CisJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsK
LQkJMUExMkFBNUQ2NUFDREU3MUFFMDg5RUUzIC8qIERlZmF1bHQgKi8gPSB7CisJCTRGODUxRjVC
QTVGQTQzRTlFMEI5Q0I4NiAvKiBSZWxlYXNlICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCVBST0RVQ1RfTkFNRSA9IEFsbDsK
IAkJCX07Ci0JCQluYW1lID0gRGVmYXVsdDsKKwkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwotCQkx
RjNGMTIxOEI1MTM1RkJCMDY3REU4MDkgLyogRGVmYXVsdCAqLyA9IHsKKwkJODhBREM5Mjg1NTE5
QTY2ODgwOEI1MUVFIC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOwor
CQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJcIkFOR0xFX0RJU0FC
TEVfVFJBQ0VcIiIsCisJCQkJCSJcIkFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMPUQz
RENPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMMFwiIiwKKwkJCQkpOwogCQkJCUhFQURFUl9TRUFS
Q0hfUEFUSFMgPSAoCiAJCQkJCS4sCiAJCQkJCS4uL2luY2x1ZGUsCiAJCQkJKTsKLQkJCQlQUk9E
VUNUX05BTUUgPSB0cmFuc2xhdG9yX2NvbW1vbjsKKwkJCQlQUk9EVUNUX05BTUUgPSB0cmFuc2xh
dG9yX2dsc2w7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk5REM2NkUxRkY5MzQ5
Q0RDQzhENTJDNDYgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSU5URVJNRURJQVRFX0RJUiA9ICIkKFBST0pF
Q1RfREVSSVZFRF9GSUxFX0RJUikvJChDT05GSUdVUkFUSU9OKSI7CisJCQkJU0hBUkVEX0lOVEVS
TUVESUFURV9ESVIgPSAiJChTWU1ST09UKS9EZXJpdmVkU291cmNlcy8kKENPTkZJR1VSQVRJT04p
IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUFGN0MyQ0QxMEM2RkVBMDc2QjE0
MUU2RSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdD
Q19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJcIkFOR0xFX0RJU0FCTEVfVFJB
Q0VcIiIsCisJCQkJCSJcIkFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMPUQzRENPTVBJ
TEVfT1BUSU1JWkFUSU9OX0xFVkVMMFwiIiwKKwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFU
SFMgPSAoCisJCQkJCS4sCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJKTsKKwkJCQlQUk9EVUNUX05B
TUUgPSB0cmFuc2xhdG9yX2dsc2w7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJ
CUIwOTZGQUYwMzJEQjE5QUI2MzdEMzhGMCAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVYRUNVVEFCTEVf
UFJFRklYID0gbGliOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJ
CSJcIkFOR0xFX0RJU0FCTEVfVFJBQ0VcIiIsCisJCQkJCSJcIkFOR0xFX0NPTVBJTEVfT1BUSU1J
WkFUSU9OX0xFVkVMPUQzRENPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMMFwiIiwKKwkJCQkpOwor
CQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4sCisJCQkJCS4uL2luY2x1ZGUsCisJ
CQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSB0cmFuc2xhdG9yX2hsc2w7CiAJCQl9OwotCQkJbmFt
ZSA9IERlZmF1bHQ7CisJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKLQkJQkM1NzkzQzlBMUZGMDIx
QTgxQzY2NTU5IC8qIERlZmF1bHQgKi8gPSB7CisJCUM0NTQ2QjE0QjBFQjVFQjhDNUQzOURDMiAv
KiBSZWxlYXNlICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWls
ZFNldHRpbmdzID0gewotCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7Ci0J
CQkJQ09ORklHVVJBVElPTl9CVUlMRF9ESVIgPSAiJChCVUlMRF9ESVIpLyQoQ09ORklHVVJBVElP
TikkKEVGRkVDVElWRV9QTEFURk9STV9OQU1FKSI7CiAJCQkJSU5URVJNRURJQVRFX0RJUiA9ICIk
KFBST0pFQ1RfREVSSVZFRF9GSUxFX0RJUikvJChDT05GSUdVUkFUSU9OKSI7Ci0JCQkJT0JKUk9P
VCA9ICIiOwotCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CiAJCQkJU0hBUkVEX0lOVEVSTUVE
SUFURV9ESVIgPSAiJChTWU1ST09UKS9EZXJpdmVkU291cmNlcy8kKENPTkZJR1VSQVRJT04pIjsK
LQkJCQlTWU1ST09UID0gIiQoQlVJTERfRElSKSI7CiAJCQl9OwotCQkJbmFtZSA9IERlZmF1bHQ7
CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJRjAyOUUwRDM2OUZBRkVBNDZCREFGQ0VFIC8q
IERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19QUkVQUk9D
RVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJcIkFOR0xFX0RJU0FCTEVfVFJBQ0VcIiIsCisJ
CQkJCSJcIkFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMPUQzRENPTVBJTEVfT1BUSU1J
WkFUSU9OX0xFVkVMMFwiIiwKKwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJ
CQkJCS4sCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSB0cmFu
c2xhdG9yX2hsc2w7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOwogCQl9OwotCQlGQjNDNTA1QzEx
Rjc5MjRBMDA4MUY1QkEgLyogRGVmYXVsdCAqLyA9IHsKKwkJRkYwMUNERjQ1OTRFMEZGOUU1ODFC
MzE5IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQli
dWlsZFNldHRpbmdzID0gewogCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19Q
UkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJcIkFOR0xFX0RJU0FCTEVfVFJBQ0Vc
IiIsCisJCQkJCSJcIkFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMPUQzRENPTVBJTEVf
T1BUSU1JWkFUSU9OX0xFVkVMMFwiIiwKKwkJCQkpOwogCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMg
PSAoCiAJCQkJCS4sCiAJCQkJCS4uL2luY2x1ZGUsCiAJCQkJKTsKLQkJCQlQUk9EVUNUX05BTUUg
PSBhbmdsZTsKKwkJCQlQUk9EVUNUX05BTUUgPSB0cmFuc2xhdG9yX2NvbW1vbjsKIAkJCX07Ci0J
CQluYW1lID0gRGVmYXVsdDsKKwkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKIC8qIEVuZCBYQ0J1aWxk
Q29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qg
c2VjdGlvbiAqLwotCQkwQUE1NDgyNUJGNURGMEEzRkJBOTJCNjAgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkFOR0xFIFN1cHBvcnQiICovID0gewor
CQkwRTU5RjhGRTRBODA5OUU4RERDQTRDRTcgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhQcm9qZWN0ICJidWlsZF9hbmdsZSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKLQkJCQkwMEJGMkVCQ0JERjU2NzhG
NEJBMkZBOTIgLyogRGVmYXVsdCAqLywKKwkJCQk5REM2NkUxRkY5MzQ5Q0RDQzhENTJDNDYgLyog
RGVidWcgKi8sCisJCQkJQzQ1NDZCMTRCMEVCNUVCOEM1RDM5REMyIC8qIFJlbGVhc2UgKi8sCiAJ
CQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAxOwotCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25OYW1lID0gRGVmYXVsdDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IERlYnVnOwogCQl9OwotCQkwRTU5RjhGRTRBODA5OUU4RERDQTRDRTcgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJidWlsZF9hbmdsZSIgKi8gPSB7CisJCTM0QkIz
OEUzQTc0NDE4QjJBMDYzQjQ5RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAidHJhbnNsYXRvcl9jb21tb24iICovID0gewogCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJQkM1NzkzQzlBMUZG
MDIxQTgxQzY2NTU5IC8qIERlZmF1bHQgKi8sCisJCQkJRkYwMUNERjQ1OTRFMEZGOUU1ODFCMzE5
IC8qIERlYnVnICovLAorCQkJCTREQTQyQTc4RDNCODU1QzlDRDhGNjU4RCAvKiBSZWxlYXNlICov
LAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMTsKLQkJCWRlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSA9IERlZmF1bHQ7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBEZWJ1ZzsKIAkJfTsKLQkJMzRCQjM4RTNBNzQ0MThCMkEwNjNCNDlFIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0cmFuc2xhdG9yX2NvbW1vbiIg
Ki8gPSB7CisJCTc3Q0VGQjdCNDBGMDVCMEE4MDRFNkIyQiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiQWxsIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29u
ZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTFGM0YxMjE4
QjUxMzVGQkIwNjdERTgwOSAvKiBEZWZhdWx0ICovLAorCQkJCTMyMkE4QzYyNDIzQjU5NUUxMUJB
RDQyRCAvKiBEZWJ1ZyAqLywKKwkJCQk0Rjg1MUY1QkE1RkE0M0U5RTBCOUNCODYgLyogUmVsZWFz
ZSAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7Ci0JCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBEZWZhdWx0OworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25OYW1lID0gRGVidWc7CiAJCX07Ci0JCTc3Q0VGQjdCNDBGMDVCMEE4MDRFNkIyQiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiQWxsIiAqLyA9IHsK
KwkJOEI4ODE1Q0EyRUZFNjBGRDBDMDM2MUJGIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJ0cmFuc2xhdG9yX2dsc2wiICovID0gewogCQkJaXNhID0gWEND
b25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJMUExMkFB
NUQ2NUFDREU3MUFFMDg5RUUzIC8qIERlZmF1bHQgKi8sCisJCQkJODhBREM5Mjg1NTE5QTY2ODgw
OEI1MUVFIC8qIERlYnVnICovLAorCQkJCUFGN0MyQ0QxMEM2RkVBMDc2QjE0MUU2RSAvKiBSZWxl
YXNlICovLAogCQkJKTsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMTsKLQkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IERlZmF1bHQ7CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBEZWJ1ZzsKIAkJfTsKLQkJRkIzQzUwNUIxMUY3OTI0QTAwODFGNUJBIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJhbmdsZSIgKi8gPSB7
CisJCUM3MUU3OUM3ODI5RkQ3OTZDRjYyMUI0NCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWE5hdGl2ZVRhcmdldCAidHJhbnNsYXRvcl9obHNsIiAqLyA9IHsKIAkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCUZCM0M1
MDVDMTFGNzkyNEEwMDgxRjVCQSAvKiBEZWZhdWx0ICovLAorCQkJCUYwMjlFMEQzNjlGQUZFQTQ2
QkRBRkNFRSAvKiBEZWJ1ZyAqLywKKwkJCQlCMDk2RkFGMDMyREIxOUFCNjM3RDM4RjAgLyogUmVs
ZWFzZSAqLywKIAkJCSk7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7Ci0J
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBEZWZhdWx0OworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25OYW1lID0gRGVidWc7CiAJCX07CiAvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0
aW9uICovCiAJfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVi
dWcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
ZGVidWcuY3BwCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vZGVidWcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICsxLDk3IEBACi0vLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0vLyBkZWJ1Zy5jcHA6IERlYnVnZ2luZyB1dGlsaXRpZXMuCi0KLSNp
bmNsdWRlICJjb21tb24vZGVidWcuaCIKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8
c3RkYXJnLmg+Ci0KLSNpZm5kZWYgVFJBQ0VfT1VUUFVUX0ZJTEUKLSNkZWZpbmUgVFJBQ0VfT1VU
UFVUX0ZJTEUgImRlYnVnLnR4dCIKLSNlbmRpZgotCi1zdGF0aWMgYm9vbCB0cmFjZV9vbiA9IHRy
dWU7Ci0KLW5hbWVzcGFjZSBnbAotewotdm9pZCB0cmFjZShjb25zdCBjaGFyICpmb3JtYXQsIC4u
LikKLXsKLSNpZiAhZGVmaW5lZChBTkdMRV9ESVNBQkxFX1RSQUNFKSAKLSAgICBpZiAodHJhY2Vf
b24pCi0gICAgewotICAgICAgICBpZiAoZm9ybWF0KQotICAgICAgICB7Ci0gICAgICAgICAgICBG
SUxFICpmaWxlID0gZm9wZW4oVFJBQ0VfT1VUUFVUX0ZJTEUsICJhIik7Ci0KLSAgICAgICAgICAg
IGlmIChmaWxlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhX2xpc3QgdmFyYXJn
OwotICAgICAgICAgICAgICAgIHZhX3N0YXJ0KHZhcmFyZywgZm9ybWF0KTsKLSAgICAgICAgICAg
ICAgICB2ZnByaW50ZihmaWxlLCBmb3JtYXQsIHZhcmFyZyk7Ci0gICAgICAgICAgICAgICAgdmFf
ZW5kKHZhcmFyZyk7Ci0KLSAgICAgICAgICAgICAgICBmY2xvc2UoZmlsZSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYgLy8gIWRlZmluZWQoQU5HTEVfRElTQUJMRV9U
UkFDRSkKLX0KLX0KKy8vDQorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisvLw0KKw0KKy8vIGRlYnVnLmNwcDogRGVi
dWdnaW5nIHV0aWxpdGllcy4NCisNCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiDQorDQorI2lu
Y2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0ZGFyZy5oPg0KKyNpbmNsdWRlIDxkM2Q5Lmg+
DQorI2luY2x1ZGUgPHdpbmRvd3MuaD4NCisNCituYW1lc3BhY2UgZ2wNCit7DQorDQordHlwZWRl
ZiB2b2lkIChXSU5BUEkgKlBlcmZPdXRwdXRGdW5jdGlvbikoRDNEQ09MT1IsIExQQ1dTVFIpOw0K
Kw0KK3N0YXRpYyB2b2lkIG91dHB1dChib29sIHRyYWNlRmlsZURlYnVnT25seSwgUGVyZk91dHB1
dEZ1bmN0aW9uIHBlcmZGdW5jLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmFyYXJnKQ0K
K3sNCisjaWYgIWRlZmluZWQoQU5HTEVfRElTQUJMRV9QRVJGKQ0KKyAgICBpZiAocGVyZkFjdGl2
ZSgpKQ0KKyAgICB7DQorICAgICAgICBjaGFyIG1lc3NhZ2VbNDA5Nl07DQorICAgICAgICBpbnQg
bGVuID0gdnNwcmludGZfcyhtZXNzYWdlLCBmb3JtYXQsIHZhcmFyZyk7DQorICAgICAgICBpZiAo
bGVuIDwgMCkNCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQor
DQorICAgICAgICAvLyBUaGVyZSBhcmUgbm8gQVNDSUkgdmFyaWFudHMgb2YgdGhlc2UgRDNEUEVS
RiBmdW5jdGlvbnMuDQorICAgICAgICB3Y2hhcl90IHdpZGVNZXNzYWdlWzQwOTZdOw0KKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkNCisgICAgICAgIHsNCisgICAgICAgICAg
ICB3aWRlTWVzc2FnZVtpXSA9IG1lc3NhZ2VbaV07DQorICAgICAgICB9DQorICAgICAgICB3aWRl
TWVzc2FnZVtsZW5dID0gMDsNCisNCisgICAgICAgIHBlcmZGdW5jKDAsIHdpZGVNZXNzYWdlKTsN
CisgICAgfQ0KKyNlbmRpZg0KKw0KKyNpZiAhZGVmaW5lZChBTkdMRV9ESVNBQkxFX1RSQUNFKQ0K
KyNpZiBkZWZpbmVkKE5ERUJVRykNCisgICAgaWYgKHRyYWNlRmlsZURlYnVnT25seSkNCisgICAg
ew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorI2VuZGlmDQorDQorICAgIEZJTEUqIGZpbGUg
PSBmb3BlbihUUkFDRV9PVVRQVVRfRklMRSwgImEiKTsNCisgICAgaWYgKGZpbGUpDQorICAgIHsN
CisgICAgICAgIHZmcHJpbnRmKGZpbGUsIGZvcm1hdCwgdmFyYXJnKTsNCisgICAgICAgIGZjbG9z
ZShmaWxlKTsNCisgICAgfQ0KKyNlbmRpZg0KK30NCisNCit2b2lkIHRyYWNlKGJvb2wgdHJhY2VG
aWxlRGVidWdPbmx5LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikNCit7DQorICAgIHZhX2xpc3Qg
dmFyYXJnOw0KKyAgICB2YV9zdGFydCh2YXJhcmcsIGZvcm1hdCk7DQorICAgIG91dHB1dCh0cmFj
ZUZpbGVEZWJ1Z09ubHksIEQzRFBFUkZfU2V0TWFya2VyLCBmb3JtYXQsIHZhcmFyZyk7DQorICAg
IHZhX2VuZCh2YXJhcmcpOw0KK30NCisNCitib29sIHBlcmZBY3RpdmUoKQ0KK3sNCisjaWYgZGVm
aW5lZChBTkdMRV9ESVNBQkxFX1BFUkYpDQorICAgIHJldHVybiBmYWxzZTsNCisjZWxzZQ0KKyAg
ICBzdGF0aWMgYm9vbCBhY3RpdmUgPSBEM0RQRVJGX0dldFN0YXR1cygpICE9IDA7DQorICAgIHJl
dHVybiBhY3RpdmU7DQorI2VuZGlmDQorfQ0KKw0KK1Njb3BlZFBlcmZFdmVudEhlbHBlcjo6U2Nv
cGVkUGVyZkV2ZW50SGVscGVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQ0KK3sNCisgICAgdmFf
bGlzdCB2YXJhcmc7DQorICAgIHZhX3N0YXJ0KHZhcmFyZywgZm9ybWF0KTsNCisgICAgb3V0cHV0
KHRydWUsIHJlaW50ZXJwcmV0X2Nhc3Q8UGVyZk91dHB1dEZ1bmN0aW9uPihEM0RQRVJGX0JlZ2lu
RXZlbnQpLCBmb3JtYXQsIHZhcmFyZyk7DQorICAgIHZhX2VuZCh2YXJhcmcpOw0KK30NCisNCitT
Y29wZWRQZXJmRXZlbnRIZWxwZXI6On5TY29wZWRQZXJmRXZlbnRIZWxwZXIoKQ0KK3sNCisjaWYg
IWRlZmluZWQoQU5HTEVfRElTQUJMRV9QRVJGKQ0KKyAgICBpZiAocGVyZkFjdGl2ZSgpKQ0KKyAg
ICB7DQorICAgICAgICBEM0RQRVJGX0VuZEV2ZW50KCk7DQorICAgIH0NCisjZW5kaWYNCit9DQor
fQ0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgJKHJl
dmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw0OSArMTIsODcgQEAKICNpbmNsdWRlIDxzdGRpby5o
PgogI2luY2x1ZGUgPGFzc2VydC5oPgogCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KworI2lmICFkZWZpbmVkKFRSQUNFX09VVFBVVF9GSUxFKQorI2RlZmluZSBUUkFDRV9PVVRQVVRf
RklMRSAiZGVidWcudHh0IgorI2VuZGlmCisKIG5hbWVzcGFjZSBnbAogewogICAgIC8vIE91dHB1
dHMgdGV4dCB0byB0aGUgZGVidWdnaW5nIGxvZwotICAgIHZvaWQgdHJhY2UoY29uc3QgY2hhciAq
Zm9ybWF0LCAuLi4pOworICAgIHZvaWQgdHJhY2UoYm9vbCB0cmFjZUZpbGVEZWJ1Z09ubHksIGNv
bnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKKworICAgIC8vIFJldHVybnMgd2hldGhlciBEM0RQRVJG
IGlzIGFjdGl2ZS4KKyAgICBib29sIHBlcmZBY3RpdmUoKTsKKworICAgIC8vIFBhaXJzIGEgRDNE
IGJlZ2luIGV2ZW50IHdpdGggYW4gZW5kIGV2ZW50LgorICAgIGNsYXNzIFNjb3BlZFBlcmZFdmVu
dEhlbHBlcgorICAgIHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkUGVyZkV2ZW50SGVs
cGVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKTsKKyAgICAgICAgflNjb3BlZFBlcmZFdmVudEhl
bHBlcigpOworCisgICAgICBwcml2YXRlOgorICAgICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oU2NvcGVkUGVyZkV2ZW50SGVscGVyKTsKKyAgICB9OwogfQogCiAvLyBBIG1hY3JvIHRvIG91
dHB1dCBhIHRyYWNlIG9mIGEgZnVuY3Rpb24gY2FsbCBhbmQgaXRzIGFyZ3VtZW50cyB0byB0aGUg
ZGVidWdnaW5nIGxvZwotI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIWRlZmluZWQoQU5HTEVfRElT
QUJMRV9UUkFDRSkgCi0gICAgI2RlZmluZSBUUkFDRShtZXNzYWdlLCAuLi4pIGdsOjp0cmFjZSgi
dHJhY2U6ICVzIm1lc3NhZ2UiXG4iLCBfX0ZVTkNUSU9OX18sIF9fVkFfQVJHU19fKQorI2lmIGRl
ZmluZWQoQU5HTEVfRElTQUJMRV9UUkFDRSkgJiYgZGVmaW5lZChBTkdMRV9ESVNBQkxFX1BFUkYp
CisjZGVmaW5lIFRSQUNFKG1lc3NhZ2UsIC4uLikgKHZvaWQoMCkpCiAjZWxzZQotICAgICNkZWZp
bmUgVFJBQ0UoLi4uKSAoKHZvaWQpMCkKKyNkZWZpbmUgVFJBQ0UobWVzc2FnZSwgLi4uKSBnbDo6
dHJhY2UodHJ1ZSwgInRyYWNlOiAlcyglZCk6ICJtZXNzYWdlIlxuIiwgX19GVU5DVElPTl9fLCBf
X0xJTkVfXywgX19WQV9BUkdTX18pCiAjZW5kaWYKIAotLy8gQSBtYWNybyB0byBvdXRwdXQgYSBm
dW5jdGlvbiBjYWxsIGFuZCBpdHMgYXJndW1lbnRzIHRvIHRoZSBkZWJ1Z2dpbmcgbG9nLCB0byBk
ZW5vdGUgYW4gaXRlbSBpbiBuZWVkIG9mIGZpeGluZy4gV2lsbCBvY2N1ciBldmVuIGluIHJlbGVh
c2UgbW9kZS4KLSNkZWZpbmUgRklYTUUobWVzc2FnZSwgLi4uKSBnbDo6dHJhY2UoImZpeG1lOiAl
cyJtZXNzYWdlIlxuIiwgX19GVU5DVElPTl9fLCBfX1ZBX0FSR1NfXykKKy8vIEEgbWFjcm8gdG8g
b3V0cHV0IGEgZnVuY3Rpb24gY2FsbCBhbmQgaXRzIGFyZ3VtZW50cyB0byB0aGUgZGVidWdnaW5n
IGxvZywgdG8gZGVub3RlIGFuIGl0ZW0gaW4gbmVlZCBvZiBmaXhpbmcuCisjaWYgZGVmaW5lZChB
TkdMRV9ESVNBQkxFX1RSQUNFKSAmJiBkZWZpbmVkKEFOR0xFX0RJU0FCTEVfUEVSRikKKyNkZWZp
bmUgRklYTUUobWVzc2FnZSwgLi4uKSAodm9pZCgwKSkKKyNlbHNlCisjZGVmaW5lIEZJWE1FKG1l
c3NhZ2UsIC4uLikgZ2w6OnRyYWNlKGZhbHNlLCAiZml4bWU6ICVzKCVkKTogIm1lc3NhZ2UiXG4i
LCBfX0ZVTkNUSU9OX18sIF9fTElORV9fLCBfX1ZBX0FSR1NfXykKKyNlbmRpZgogCi0vLyBBIG1h
Y3JvIHRvIG91dHB1dCBhIGZ1bmN0aW9uIGNhbGwgYW5kIGl0cyBhcmd1bWVudHMgdG8gdGhlIGRl
YnVnZ2luZyBsb2csIGluIGNhc2Ugb2YgZXJyb3IuIFdpbGwgb2NjdXIgZXZlbiBpbiByZWxlYXNl
IG1vZGUuCi0jZGVmaW5lIEVSUihtZXNzYWdlLCAuLi4pIGdsOjp0cmFjZSgiZXJyOiAlcyJtZXNz
YWdlIlxuIiwgX19GVU5DVElPTl9fLCBfX1ZBX0FSR1NfXykKKy8vIEEgbWFjcm8gdG8gb3V0cHV0
IGEgZnVuY3Rpb24gY2FsbCBhbmQgaXRzIGFyZ3VtZW50cyB0byB0aGUgZGVidWdnaW5nIGxvZywg
aW4gY2FzZSBvZiBlcnJvci4KKyNpZiBkZWZpbmVkKEFOR0xFX0RJU0FCTEVfVFJBQ0UpICYmIGRl
ZmluZWQoQU5HTEVfRElTQUJMRV9QRVJGKQorI2RlZmluZSBFUlIobWVzc2FnZSwgLi4uKSAodm9p
ZCgwKSkKKyNlbHNlCisjZGVmaW5lIEVSUihtZXNzYWdlLCAuLi4pIGdsOjp0cmFjZShmYWxzZSwg
ImVycjogJXMoJWQpOiAibWVzc2FnZSJcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18sIF9fVkFf
QVJHU19fKQorI2VuZGlmCisKKy8vIEEgbWFjcm8gdG8gbG9nIGEgcGVyZm9ybWFuY2UgZXZlbnQg
YXJvdW5kIGEgc2NvcGUuCisjaWYgZGVmaW5lZChBTkdMRV9ESVNBQkxFX1RSQUNFKSAmJiBkZWZp
bmVkKEFOR0xFX0RJU0FCTEVfUEVSRikKKyNkZWZpbmUgRVZFTlQobWVzc2FnZSwgLi4uKSAodm9p
ZCgwKSkKKyNlbHNlCisjZGVmaW5lIEVWRU5UKG1lc3NhZ2UsIC4uLikgZ2w6OlNjb3BlZFBlcmZF
dmVudEhlbHBlciBzY29wZWRQZXJmRXZlbnRIZWxwZXIgIyMgX19MSU5FX18oX19GVU5DVElPTl9f
IG1lc3NhZ2UgIlxuIiwgX19WQV9BUkdTX18pOworI2VuZGlmCiAKIC8vIEEgbWFjcm8gYXNzZXJ0
aW5nIGEgY29uZGl0aW9uIGFuZCBvdXRwdXR0aW5nIGZhaWx1cmVzIHRvIHRoZSBkZWJ1ZyBsb2cK
KyNpZiAhZGVmaW5lZChOREVCVUcpCiAjZGVmaW5lIEFTU0VSVChleHByZXNzaW9uKSBkbyB7IFwK
ICAgICBpZighKGV4cHJlc3Npb24pKSBcCiAgICAgICAgIEVSUigiXHQhIEFzc2VydCBmYWlsZWQg
aW4gJXMoJWQpOiAiI2V4cHJlc3Npb24iXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsgXAot
ICAgIGFzc2VydChleHByZXNzaW9uKTsgXAorICAgICAgICBhc3NlcnQoZXhwcmVzc2lvbik7IFwK
ICAgICB9IHdoaWxlKDApCi0KKyNlbHNlCisjZGVmaW5lIEFTU0VSVChleHByZXNzaW9uKSAodm9p
ZCgwKSkKKyNlbmRpZgogCiAvLyBBIG1hY3JvIHRvIGluZGljYXRlIHVuaW1wbGVtZW50ZWQgZnVu
Y3Rpb25hbGl0eQotI2lmbmRlZiBOREVCVUcKLSAgICAjZGVmaW5lIFVOSU1QTEVNRU5URUQoKSBk
byB7IFwKLSAgICAgICAgRklYTUUoIlx0ISBVbmltcGxlbWVudGVkOiAlcyglZClcbiIsIF9fRlVO
Q1RJT05fXywgX19MSU5FX18pOyBcCi0gICAgICAgIGFzc2VydChmYWxzZSk7IFwKLSAgICAgICAg
fSB3aGlsZSgwKQorI2lmICFkZWZpbmVkKE5ERUJVRykKKyNkZWZpbmUgVU5JTVBMRU1FTlRFRCgp
IGRvIHsgXAorICAgIEZJWE1FKCJcdCEgVW5pbXBsZW1lbnRlZDogJXMoJWQpXG4iLCBfX0ZVTkNU
SU9OX18sIF9fTElORV9fKTsgXAorICAgIGFzc2VydChmYWxzZSk7IFwKKyAgICB9IHdoaWxlKDAp
CiAjZWxzZQogICAgICNkZWZpbmUgVU5JTVBMRU1FTlRFRCgpIEZJWE1FKCJcdCEgVW5pbXBsZW1l
bnRlZDogJXMoJWQpXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKQogI2VuZGlmCiAKIC8vIEEg
bWFjcm8gZm9yIGNvZGUgd2hpY2ggaXMgbm90IGV4cGVjdGVkIHRvIGJlIHJlYWNoZWQgdW5kZXIg
dmFsaWQgYXNzdW1wdGlvbnMKLSNpZm5kZWYgTkRFQlVHCi0gICAgI2RlZmluZSBVTlJFQUNIQUJM
RSgpIGRvIHsgXAotICAgICAgICBFUlIoIlx0ISBVbnJlYWNoYWJsZSByZWFjaGVkOiAlcyglZClc
biIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOyBcCi0gICAgICAgIGFzc2VydChmYWxzZSk7IFwK
LSAgICAgICAgfSB3aGlsZSgwKQorI2lmICFkZWZpbmVkKE5ERUJVRykKKyNkZWZpbmUgVU5SRUFD
SEFCTEUoKSBkbyB7IFwKKyAgICBFUlIoIlx0ISBVbnJlYWNoYWJsZSByZWFjaGVkOiAlcyglZClc
biIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOyBcCisgICAgYXNzZXJ0KGZhbHNlKTsgXAorICAg
IH0gd2hpbGUoMCkKICNlbHNlCiAgICAgI2RlZmluZSBVTlJFQUNIQUJMRSgpIEVSUigiXHQhIFVu
cmVhY2hhYmxlIHJlYWNoZWQ6ICVzKCVkKVxuIiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXykKICNl
bmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9u
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3Zl
cnNpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorI2RlZmluZSBNQUpPUl9WRVJT
SU9OIDAKKyNkZWZpbmUgTUlOT1JfVkVSU0lPTiAwCisjZGVmaW5lIEJVSUxEX1ZFUlNJT04gMAor
I2RlZmluZSBCVUlMRF9SRVZJU0lPTiA2OTYKKworI2RlZmluZSBTVFJJTkdJRlkoeCkgI3gKKyNk
ZWZpbmUgTUFDUk9fU1RSSU5HSUZZKHgpIFNUUklOR0lGWSh4KQorCisjZGVmaW5lIFJFVklTSU9O
X1NUUklORyBNQUNST19TVFJJTkdJRlkoQlVJTERfUkVWSVNJT04pCisjZGVmaW5lIFZFUlNJT05f
U1RSSU5HIE1BQ1JPX1NUUklOR0lGWShNQUpPUl9WRVJTSU9OKSAiLiIgTUFDUk9fU1RSSU5HSUZZ
KE1JTk9SX1ZFUlNJT04pICIuIiBNQUNST19TVFJJTkdJRlkoQlVJTERfVkVSU0lPTikgIi4iIE1B
Q1JPX1NUUklOR0lGWShCVUlMRF9SRVZJU0lPTikKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVyc2lvbi5oCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcAkocmV2aXNpb24gODkyODYpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01LDE1ICs1LDI0IEBACiAvLwogCiAjaW5jbHVkZSAiY29tcGlsZXIv
VHJhbnNsYXRvckdMU0wuaCIKKyNpbmNsdWRlICJjb21waWxlci9UcmFuc2xhdG9yRVNTTC5oIgog
CiAvLwogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHByb3ZpZGVkIHRvIGNyZWF0ZSB0aGUgYWN0
dWFsCiAvLyBjb21waWxlIG9iamVjdCB1c2VkIGJ5IGhpZ2hlciBsZXZlbCBjb2RlLiAgSXQgcmV0
dXJucwogLy8gYSBzdWJjbGFzcyBvZiBUQ29tcGlsZXIuCiAvLwotVENvbXBpbGVyKiBDb25zdHJ1
Y3RDb21waWxlcihTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCitUQ29tcGls
ZXIqIENvbnN0cnVjdENvbXBpbGVyKAorICAgIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNw
ZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQogewotICAgIHJldHVybiBuZXcgVHJhbnNs
YXRvckdMU0wodHlwZSwgc3BlYyk7CisgICAgc3dpdGNoIChvdXRwdXQpIHsKKyAgICAgIGNhc2Ug
U0hfR0xTTF9PVVRQVVQ6CisgICAgICAgIHJldHVybiBuZXcgVHJhbnNsYXRvckdMU0wodHlwZSwg
c3BlYyk7CisgICAgICBjYXNlIFNIX0VTU0xfT1VUUFVUOgorICAgICAgICByZXR1cm4gbmV3IFRy
YW5zbGF0b3JFU1NMKHR5cGUsIHNwZWMpOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQogfQogCiAvLwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0NvZGVHZW5ITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkhMU0wuY3BwCShyZXZpc2lvbiA4OTI4NikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuSExTTC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExLDkgKzExLDE1IEBACiAvLyBjb21waWxlIG9iamVjdCB1c2VkIGJ5
IGhpZ2hlciBsZXZlbCBjb2RlLiAgSXQgcmV0dXJucwogLy8gYSBzdWJjbGFzcyBvZiBUQ29tcGls
ZXIuCiAvLwotVENvbXBpbGVyKiBDb25zdHJ1Y3RDb21waWxlcihTaFNoYWRlclR5cGUgdHlwZSwg
U2hTaGFkZXJTcGVjIHNwZWMpCitUQ29tcGlsZXIqIENvbnN0cnVjdENvbXBpbGVyKAorICAgIFNo
U2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0
KQogewotICAgIHJldHVybiBuZXcgVHJhbnNsYXRvckhMU0wodHlwZSwgc3BlYyk7CisgIHN3aXRj
aCAob3V0cHV0KSB7CisgICAgY2FzZSBTSF9ITFNMX09VVFBVVDoKKyAgICAgIHJldHVybiBuZXcg
VHJhbnNsYXRvckhMU0wodHlwZSwgc3BlYyk7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBO
VUxMOworICB9CiB9CiAKIC8vCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9Db21waWxlci5jcHAJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOCw2ICs4LDcgQEAKICNpbmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL1NoSGFuZGxlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvVmFsaWRhdGVMaW1p
dGF0aW9ucy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgiCiAK
IG5hbWVzcGFjZSB7CiBib29sIEluaXRpYWxpemVTeW1ib2xUYWJsZSgKQEAgLTE3LDcgKzE4LDkg
QEAgYm9vbCBJbml0aWFsaXplU3ltYm9sVGFibGUoCiB7CiAgICAgVEludGVybWVkaWF0ZSBpbnRl
cm1lZGlhdGUoaW5mb1NpbmspOwogICAgIFRFeHRlbnNpb25CZWhhdmlvciBleHRCZWhhdmlvcjsK
LSAgICBUUGFyc2VDb250ZXh0IHBhcnNlQ29udGV4dChzeW1ib2xUYWJsZSwgZXh0QmVoYXZpb3Is
IGludGVybWVkaWF0ZSwgdHlwZSwgc3BlYywgaW5mb1NpbmspOworICAgIC8vIFRoZSBidWlsdGlu
cyBkZWxpYmVyYXRlbHkgZG9uJ3Qgc3BlY2lmeSBwcmVjaXNpb25zIGZvciB0aGUgZnVuY3Rpb24K
KyAgICAvLyBhcmd1bWVudHMgYW5kIHJldHVybiB0eXBlcy4gRm9yIHRoYXQgcmVhc29uIHdlIGRv
bid0IHRyeSB0byBjaGVjayB0aGVtLgorICAgIFRQYXJzZUNvbnRleHQgcGFyc2VDb250ZXh0KHN5
bWJvbFRhYmxlLCBleHRCZWhhdmlvciwgaW50ZXJtZWRpYXRlLCB0eXBlLCBzcGVjLCAwLCBmYWxz
ZSwgTlVMTCwgaW5mb1NpbmspOwogCiAgICAgR2xvYmFsUGFyc2VDb250ZXh0ID0gJnBhcnNlQ29u
dGV4dDsKIApAQCAtMTE1LDkgKzExOCwxOSBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25z
dCBjaGFyKiBjb25zCiAgICAgaWYgKHNoYWRlclNwZWMgPT0gU0hfV0VCR0xfU1BFQykKICAgICAg
ICAgY29tcGlsZU9wdGlvbnMgfD0gU0hfVkFMSURBVEVfTE9PUF9JTkRFWElORzsKIAorICAgIC8v
IEZpcnN0IHN0cmluZyBpcyBwYXRoIG9mIHNvdXJjZSBmaWxlIGlmIGZsYWcgaXMgc2V0LiBUaGUg
YWN0dWFsIHNvdXJjZSBmb2xsb3dzLgorICAgIGNvbnN0IGNoYXIqIHNvdXJjZVBhdGggPSBOVUxM
OworICAgIGludCBmaXJzdFNvdXJjZSA9IDA7CisgICAgaWYgKGNvbXBpbGVPcHRpb25zICYgU0hf
U09VUkNFX1BBVEgpCisgICAgeworICAgICAgICBzb3VyY2VQYXRoID0gc2hhZGVyU3RyaW5nc1sw
XTsKKyAgICAgICAgKytmaXJzdFNvdXJjZTsKKyAgICB9CisKICAgICBUSW50ZXJtZWRpYXRlIGlu
dGVybWVkaWF0ZShpbmZvU2luayk7CiAgICAgVFBhcnNlQ29udGV4dCBwYXJzZUNvbnRleHQoc3lt
Ym9sVGFibGUsIGV4dGVuc2lvbkJlaGF2aW9yLCBpbnRlcm1lZGlhdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywgaW5mb1NpbmspOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclR5cGUsIHNoYWRlclNwZWMsIGNvbXBp
bGVPcHRpb25zLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVBh
dGgsIGluZm9TaW5rKTsKICAgICBHbG9iYWxQYXJzZUNvbnRleHQgPSAmcGFyc2VDb250ZXh0Owog
CiAgICAgLy8gV2UgcHJlc2VydmUgc3ltYm9scyBhdCB0aGUgYnVpbHQtaW4gbGV2ZWwgZnJvbSBj
b21waWxlLXRvLWNvbXBpbGUuCkBAIC0xMjgsNyArMTQxLDcgQEAgYm9vbCBUQ29tcGlsZXI6OmNv
bXBpbGUoY29uc3QgY2hhciogY29ucwogCiAgICAgLy8gUGFyc2Ugc2hhZGVyLgogICAgIGJvb2wg
c3VjY2VzcyA9Ci0gICAgICAgIChQYVBhcnNlU3RyaW5ncyhudW1TdHJpbmdzLCBzaGFkZXJTdHJp
bmdzLCBOVUxMLCAmcGFyc2VDb250ZXh0KSA9PSAwKSAmJgorICAgICAgICAoUGFQYXJzZVN0cmlu
Z3MobnVtU3RyaW5ncyAtIGZpcnN0U291cmNlLCAmc2hhZGVyU3RyaW5nc1tmaXJzdFNvdXJjZV0s
IE5VTEwsICZwYXJzZUNvbnRleHQpID09IDApICYmCiAgICAgICAgIChwYXJzZUNvbnRleHQudHJl
ZVJvb3QgIT0gTlVMTCk7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgVEludGVybU5vZGUq
IHJvb3QgPSBwYXJzZUNvbnRleHQudHJlZVJvb3Q7CkBAIC0xMzcsMTQgKzE1MCwyMCBAQCBib29s
IFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgIGlmIChzdWNjZXNz
ICYmIChjb21waWxlT3B0aW9ucyAmIFNIX1ZBTElEQVRFX0xPT1BfSU5ERVhJTkcpKQogICAgICAg
ICAgICAgc3VjY2VzcyA9IHZhbGlkYXRlTGltaXRhdGlvbnMocm9vdCk7CiAKKyAgICAgICAgLy8g
Q2FsbCBtYXBMb25nVmFyaWFibGVOYW1lcygpIGJlZm9yZSBjb2xsZWN0QXR0cmlic1VuaWZvcm1z
KCkgc28gaW4KKyAgICAgICAgLy8gY29sbGVjdEF0dHJpYnNVbmlmb3JtcygpIHdlIGFscmVhZHkg
aGF2ZSB0aGUgbWFwcGVkIHN5bWJvbCBuYW1lcyBhbmQKKyAgICAgICAgLy8gd2UgY291bGQgY29t
cG9zaXRlIG1hcHBlZCBhbmQgb3JpZ2luYWwgdmFyaWFibGUgbmFtZXMuCisgICAgICAgIGlmIChj
b21waWxlT3B0aW9ucyAmIFNIX01BUF9MT05HX1ZBUklBQkxFX05BTUVTKQorICAgICAgICAgICAg
bWFwTG9uZ1ZhcmlhYmxlTmFtZXMocm9vdCk7CisKKyAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNv
bXBpbGVPcHRpb25zICYgU0hfQVRUUklCVVRFU19VTklGT1JNUykpCisgICAgICAgICAgICBjb2xs
ZWN0QXR0cmlic1VuaWZvcm1zKHJvb3QpOworCiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21w
aWxlT3B0aW9ucyAmIFNIX0lOVEVSTUVESUFURV9UUkVFKSkKICAgICAgICAgICAgIGludGVybWVk
aWF0ZS5vdXRwdXRUcmVlKHJvb3QpOwogCiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxl
T3B0aW9ucyAmIFNIX09CSkVDVF9DT0RFKSkKICAgICAgICAgICAgIHRyYW5zbGF0ZShyb290KTsK
LQotICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9BVFRSSUJVVEVT
X1VOSUZPUk1TKSkKLSAgICAgICAgICAgIGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMocm9vdCk7CiAg
ICAgfQogCiAgICAgLy8gQ2xlYW51cCBtZW1vcnkuCkBAIC0xODcsMyArMjA2LDE5IEBAIHZvaWQg
VENvbXBpbGVyOjpjb2xsZWN0QXR0cmlic1VuaWZvcm1zKFQKICAgICBDb2xsZWN0QXR0cmlic1Vu
aWZvcm1zIGNvbGxlY3QoYXR0cmlicywgdW5pZm9ybXMpOwogICAgIHJvb3QtPnRyYXZlcnNlKCZj
b2xsZWN0KTsKIH0KKwordm9pZCBUQ29tcGlsZXI6Om1hcExvbmdWYXJpYWJsZU5hbWVzKFRJbnRl
cm1Ob2RlKiByb290KQoreworICAgIE1hcExvbmdWYXJpYWJsZU5hbWVzIG1hcCh2YXJ5aW5nTG9u
Z05hbWVNYXApOworICAgIHJvb3QtPnRyYXZlcnNlKCZtYXApOworfQorCitpbnQgVENvbXBpbGVy
OjpnZXRNYXBwZWROYW1lTWF4TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTUFYX0lERU5U
SUZJRVJfTkFNRV9TSVpFICsgMTsKK30KKworY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBUQ29t
cGlsZXI6OmdldEV4dGVuc2lvbkJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXh0ZW5z
aW9uQmVoYXZpb3I7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvQ29uc3RhbnRVbmlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9Db25zdGFudFVuaW9uLmgJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsMjYgKzI2LDE3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBpbnQgaSkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpID09IGlDb25zdCkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIGkgPT0gaUNvbnN0OwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBmbG9h
dCBmKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGYgPT0gZkNvbnN0KQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gZiA9
PSBmQ29uc3Q7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGJvb2wgYikgY29u
c3QKICAgICB7Ci0gICAgICAgIGlmIChiID09IGJDb25zdCkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGIgPT0gYkNvbnN0
OwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb25zdGFudFVuaW9uJiBjb25z
dGFudCkgY29uc3QKQEAgLTU1LDIwICs0NiwxMSBAQCBwdWJsaWM6CiAKICAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgaWYgKGNvbnN0YW50
LmlDb25zdCA9PSBpQ29uc3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0YW50LmlDb25zdCA9PSBpQ29u
c3Q7CiAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICBpZiAoY29uc3RhbnQuZkNv
bnN0ID09IGZDb25zdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gY29uc3RhbnQuZkNvbnN0ID09IGZDb25zdDsK
ICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgaWYgKGNvbnN0YW50LmJDb25zdCA9
PSBiQ29uc3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0YW50LmJDb25zdCA9PSBiQ29uc3Q7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEw
MSwxOCArODMsMTEgQEAgcHVibGljOgogICAgICAgICBhc3NlcnQodHlwZSA9PSBjb25zdGFudC50
eXBlKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRWJ0SW50OgotICAg
ICAgICAgICAgaWYgKGlDb25zdCA+IGNvbnN0YW50LmlDb25zdCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0
dXJuIGlDb25zdCA+IGNvbnN0YW50LmlDb25zdDsKICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAg
ICAgICAgICAgIGlmIChmQ29uc3QgPiBjb25zdGFudC5mQ29uc3QpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybiBmQ29uc3QgPiBjb25zdGFudC5mQ29uc3Q7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBhc3NlcnQoZmFsc2UgJiYgIkRlZmF1bHQgbWlzc2luZyIpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIEludmFsaWQgb3BlcmF0
aW9uLCBoYW5kbGVkIGF0IHNlbWFudGljIGFuYWx5c2lzCiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMjMsMTggKzk4LDExIEBAIHB1YmxpYzoKICAgICAgICAgYXNzZXJ0
KHR5cGUgPT0gY29uc3RhbnQudHlwZSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAg
ICBjYXNlIEVidEludDoKLSAgICAgICAgICAgIGlmIChpQ29uc3QgPCBjb25zdGFudC5pQ29uc3Qp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybiBpQ29uc3QgPCBjb25zdGFudC5pQ29uc3Q7CiAgICAgICAg
IGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICBpZiAoZkNvbnN0IDwgY29uc3RhbnQuZkNvbnN0
KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4gZkNvbnN0IDwgY29uc3RhbnQuZkNvbnN0OwogICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgYXNzZXJ0KGZhbHNlICYmICJEZWZhdWx0IG1pc3Npbmci
KTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsg
ICAvLyBJbnZhbGlkIG9wZXJhdGlvbiwgaGFuZGxlZCBhdCBzZW1hbnRpYyBhbmFseXNpcwogICAg
ICAgICB9CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmgJKHJl
dmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0V4
dGVuc2lvbkJlaGF2aW9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDIyIEBAIHR5cGVk
ZWYgZW51bSB7CiAgICAgRUJoRGlzYWJsZQogfSBUQmVoYXZpb3I7CiAKK2lubGluZSBjb25zdCBj
aGFyKiBnZXRCZWhhdmlvclN0cmluZyhUQmVoYXZpb3IgYikKK3sKKyAgICBzd2l0Y2goYikgewor
ICAgICAgY2FzZSBFQmhSZXF1aXJlOgorICAgICAgICByZXR1cm4gInJlcXVpcmUiOworICAgICAg
Y2FzZSBFQmhFbmFibGU6CisgICAgICAgIHJldHVybiAiZW5hYmxlIjsKKyAgICAgIGNhc2UgRUJo
V2FybjoKKyAgICAgICAgcmV0dXJuICJ3YXJuIjsKKyAgICAgIGNhc2UgRUJoRGlzYWJsZToKKyAg
ICAgICAgcmV0dXJuICJkaXNhYmxlIjsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBO
VUxMOworICAgIH0KK30KKwogdHlwZWRlZiBUTWFwPFRTdHJpbmcsIFRCZWhhdmlvcj4gVEV4dGVu
c2lvbkJlaGF2aW9yOwogCiAjZW5kaWYgLy8gX0VYVEVOU0lPTl9UQUJMRV9JTkNMVURFRF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9y
TG9vcFVucm9sbC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcy
IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvRm9yTG9vcFVucm9s
bC5oIgorCit2b2lkIEZvckxvb3BVbnJvbGw6OkZpbGxMb29wSW5kZXhJbmZvKFRJbnRlcm1Mb29w
KiBub2RlLCBUTG9vcEluZGV4SW5mbyYgaW5mbykKK3sKKyAgICBBU1NFUlQobm9kZS0+Z2V0VHlw
ZSgpID09IEVMb29wRm9yKTsKKyAgICBBU1NFUlQobm9kZS0+Z2V0VW5yb2xsRmxhZygpKTsKKwor
ICAgIFRJbnRlcm1Ob2RlKiBpbml0ID0gbm9kZS0+Z2V0SW5pdCgpOworICAgIEFTU0VSVChpbml0
ICE9IE5VTEwpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGRlY2wgPSBpbml0LT5nZXRBc0FnZ3Jl
Z2F0ZSgpOworICAgIEFTU0VSVCgoZGVjbCAhPSBOVUxMKSAmJiAoZGVjbC0+Z2V0T3AoKSA9PSBF
T3BEZWNsYXJhdGlvbikpOworICAgIFRJbnRlcm1TZXF1ZW5jZSYgZGVjbFNlcSA9IGRlY2wtPmdl
dFNlcXVlbmNlKCk7CisgICAgQVNTRVJUKGRlY2xTZXEuc2l6ZSgpID09IDEpOworICAgIFRJbnRl
cm1CaW5hcnkqIGRlY2xJbml0ID0gZGVjbFNlcVswXS0+Z2V0QXNCaW5hcnlOb2RlKCk7CisgICAg
QVNTRVJUKChkZWNsSW5pdCAhPSBOVUxMKSAmJiAoZGVjbEluaXQtPmdldE9wKCkgPT0gRU9wSW5p
dGlhbGl6ZSkpOworICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGRlY2xJbml0LT5nZXRMZWZ0
KCktPmdldEFzU3ltYm9sTm9kZSgpOworICAgIEFTU0VSVChzeW1ib2wgIT0gTlVMTCk7CisgICAg
QVNTRVJUKHN5bWJvbC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KTsKKworICAgIGluZm8uaWQg
PSBzeW1ib2wtPmdldElkKCk7CisKKyAgICBBU1NFUlQoZGVjbEluaXQtPmdldFJpZ2h0KCkgIT0g
TlVMTCk7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIGluaXROb2RlID0gZGVjbEluaXQtPmdl
dFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgIEFTU0VSVChpbml0Tm9kZSAhPSBO
VUxMKTsKKworICAgIGluZm8uaW5pdFZhbHVlID0gZXZhbHVhdGVJbnRDb25zdGFudChpbml0Tm9k
ZSk7CisgICAgaW5mby5jdXJyZW50VmFsdWUgPSBpbmZvLmluaXRWYWx1ZTsKKworICAgIFRJbnRl
cm1Ob2RlKiBjb25kID0gbm9kZS0+Z2V0Q29uZGl0aW9uKCk7CisgICAgQVNTRVJUKGNvbmQgIT0g
TlVMTCk7CisgICAgVEludGVybUJpbmFyeSogYmluT3AgPSBjb25kLT5nZXRBc0JpbmFyeU5vZGUo
KTsKKyAgICBBU1NFUlQoYmluT3AgIT0gTlVMTCk7CisgICAgQVNTRVJUKGJpbk9wLT5nZXRSaWdo
dCgpICE9IE5VTEwpOworICAgIEFTU0VSVChiaW5PcC0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFu
dFVuaW9uKCkgIT0gTlVMTCk7CisKKyAgICBpbmZvLmluY3JlbWVudFZhbHVlID0gZ2V0TG9vcElu
Y3JlbWVudChub2RlKTsKKyAgICBpbmZvLnN0b3BWYWx1ZSA9IGV2YWx1YXRlSW50Q29uc3RhbnQo
CisgICAgICAgIGJpbk9wLT5nZXRSaWdodCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKSk7CisgICAg
aW5mby5vcCA9IGJpbk9wLT5nZXRPcCgpOworfQorCit2b2lkIEZvckxvb3BVbnJvbGw6OlN0ZXAo
KQoreworICAgIEFTU0VSVChtTG9vcEluZGV4U3RhY2suc2l6ZSgpID4gMCk7CisgICAgVExvb3BJ
bmRleEluZm8mIGluZm8gPSBtTG9vcEluZGV4U3RhY2tbbUxvb3BJbmRleFN0YWNrLnNpemUoKSAt
IDFdOworICAgIGluZm8uY3VycmVudFZhbHVlICs9IGluZm8uaW5jcmVtZW50VmFsdWU7Cit9CisK
K2Jvb2wgRm9yTG9vcFVucm9sbDo6U2F0aXNmaWVzTG9vcENvbmRpdGlvbigpCit7CisgICAgQVNT
RVJUKG1Mb29wSW5kZXhTdGFjay5zaXplKCkgPiAwKTsKKyAgICBUTG9vcEluZGV4SW5mbyYgaW5m
byA9IG1Mb29wSW5kZXhTdGFja1ttTG9vcEluZGV4U3RhY2suc2l6ZSgpIC0gMV07CisgICAgLy8g
UmVsYXRpb25hbCBvcGVyYXRvciBpcyBvbmUgb2Y6ID4gPj0gPCA8PSA9PSBvciAhPS4KKyAgICBz
d2l0Y2ggKGluZm8ub3ApIHsKKyAgICAgIGNhc2UgRU9wRXF1YWw6CisgICAgICAgIHJldHVybiAo
aW5mby5jdXJyZW50VmFsdWUgPT0gaW5mby5zdG9wVmFsdWUpOworICAgICAgY2FzZSBFT3BOb3RF
cXVhbDoKKyAgICAgICAgcmV0dXJuIChpbmZvLmN1cnJlbnRWYWx1ZSAhPSBpbmZvLnN0b3BWYWx1
ZSk7CisgICAgICBjYXNlIEVPcExlc3NUaGFuOgorICAgICAgICByZXR1cm4gKGluZm8uY3VycmVu
dFZhbHVlIDwgaW5mby5zdG9wVmFsdWUpOworICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKKyAg
ICAgICAgcmV0dXJuIChpbmZvLmN1cnJlbnRWYWx1ZSA+IGluZm8uc3RvcFZhbHVlKTsKKyAgICAg
IGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKKyAgICAgICAgcmV0dXJuIChpbmZvLmN1cnJlbnRWYWx1
ZSA8PSBpbmZvLnN0b3BWYWx1ZSk7CisgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6Cisg
ICAgICAgIHJldHVybiAoaW5mby5jdXJyZW50VmFsdWUgPj0gaW5mby5zdG9wVmFsdWUpOworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEZvckxvb3BVbnJvbGw6Ok5lZWRzVG9SZXBsYWNlU3ltYm9sV2l0aFZh
bHVlKFRJbnRlcm1TeW1ib2wqIHN5bWJvbCkKK3sKKyAgICBmb3IgKFRWZWN0b3I8VExvb3BJbmRl
eEluZm8+OjppdGVyYXRvciBpID0gbUxvb3BJbmRleFN0YWNrLmJlZ2luKCk7CisgICAgICAgICBp
ICE9IG1Mb29wSW5kZXhTdGFjay5lbmQoKTsKKyAgICAgICAgICsraSkgeworICAgICAgICBpZiAo
aS0+aWQgPT0gc3ltYm9sLT5nZXRJZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworaW50IEZvckxvb3BVbnJvbGw6OkdldExvb3BJbmRl
eFZhbHVlKFRJbnRlcm1TeW1ib2wqIHN5bWJvbCkKK3sKKyAgICBmb3IgKFRWZWN0b3I8VExvb3BJ
bmRleEluZm8+OjppdGVyYXRvciBpID0gbUxvb3BJbmRleFN0YWNrLmJlZ2luKCk7CisgICAgICAg
ICBpICE9IG1Mb29wSW5kZXhTdGFjay5lbmQoKTsKKyAgICAgICAgICsraSkgeworICAgICAgICBp
ZiAoaS0+aWQgPT0gc3ltYm9sLT5nZXRJZCgpKQorICAgICAgICAgICAgcmV0dXJuIGktPmN1cnJl
bnRWYWx1ZTsKKyAgICB9CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgRm9yTG9vcFVucm9sbDo6UHVzaChUTG9vcEluZGV4SW5mbyYgaW5mbykKK3sKKyAg
ICBtTG9vcEluZGV4U3RhY2sucHVzaF9iYWNrKGluZm8pOworfQorCit2b2lkIEZvckxvb3BVbnJv
bGw6OlBvcCgpCit7CisgICAgbUxvb3BJbmRleFN0YWNrLnBvcF9iYWNrKCk7Cit9CisKK2ludCBG
b3JMb29wVW5yb2xsOjpnZXRMb29wSW5jcmVtZW50KFRJbnRlcm1Mb29wKiBub2RlKQoreworICAg
IFRJbnRlcm1Ob2RlKiBleHByID0gbm9kZS0+Z2V0RXhwcmVzc2lvbigpOworICAgIEFTU0VSVChl
eHByICE9IE5VTEwpOworICAgIC8vIGZvciBleHByZXNzaW9uIGhhcyBvbmUgb2YgdGhlIGZvbGxv
d2luZyBmb3JtczoKKyAgICAvLyAgICAgbG9vcF9pbmRleCsrCisgICAgLy8gICAgIGxvb3BfaW5k
ZXgtLQorICAgIC8vICAgICBsb29wX2luZGV4ICs9IGNvbnN0YW50X2V4cHJlc3Npb24KKyAgICAv
LyAgICAgbG9vcF9pbmRleCAtPSBjb25zdGFudF9leHByZXNzaW9uCisgICAgLy8gICAgICsrbG9v
cF9pbmRleAorICAgIC8vICAgICAtLWxvb3BfaW5kZXgKKyAgICAvLyBUaGUgbGFzdCB0d28gZm9y
bXMgYXJlIG5vdCBzcGVjaWZpZWQgaW4gdGhlIHNwZWMsIGJ1dCBJIGFtIGFzc3VtaW5nCisgICAg
Ly8gaXRzIGFuIG92ZXJzaWdodC4KKyAgICBUSW50ZXJtVW5hcnkqIHVuT3AgPSBleHByLT5nZXRB
c1VuYXJ5Tm9kZSgpOworICAgIFRJbnRlcm1CaW5hcnkqIGJpbk9wID0gdW5PcCA/IE5VTEwgOiBl
eHByLT5nZXRBc0JpbmFyeU5vZGUoKTsKKworICAgIFRPcGVyYXRvciBvcCA9IEVPcE51bGw7Cisg
ICAgVEludGVybUNvbnN0YW50VW5pb24qIGluY3JlbWVudE5vZGUgPSBOVUxMOworICAgIGlmICh1
bk9wICE9IE5VTEwpIHsKKyAgICAgICAgb3AgPSB1bk9wLT5nZXRPcCgpOworICAgIH0gZWxzZSBp
ZiAoYmluT3AgIT0gTlVMTCkgeworICAgICAgICBvcCA9IGJpbk9wLT5nZXRPcCgpOworICAgICAg
ICBBU1NFUlQoYmluT3AtPmdldFJpZ2h0KCkgIT0gTlVMTCk7CisgICAgICAgIGluY3JlbWVudE5v
ZGUgPSBiaW5PcC0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgICAgIEFT
U0VSVChpbmNyZW1lbnROb2RlICE9IE5VTEwpOworICAgIH0KKworICAgIGludCBpbmNyZW1lbnQg
PSAwOworICAgIC8vIFRoZSBvcGVyYXRvciBpcyBvbmUgb2Y6ICsrIC0tICs9IC09LgorICAgIHN3
aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBFT3BQb3N0SW5jcmVtZW50OgorICAgICAgICBjYXNl
IEVPcFByZUluY3JlbWVudDoKKyAgICAgICAgICAgIEFTU0VSVCgodW5PcCAhPSBOVUxMKSAmJiAo
YmluT3AgPT0gTlVMTCkpOworICAgICAgICAgICAgaW5jcmVtZW50ID0gMTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVPcFBvc3REZWNyZW1lbnQ6CisgICAgICAgIGNhc2UgRU9w
UHJlRGVjcmVtZW50OgorICAgICAgICAgICAgQVNTRVJUKCh1bk9wICE9IE5VTEwpICYmIChiaW5P
cCA9PSBOVUxMKSk7CisgICAgICAgICAgICBpbmNyZW1lbnQgPSAtMTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcEFkZEFzc2lnbjoKKyAgICAgICAgICAgIEFTU0VSVCgodW5P
cCA9PSBOVUxMKSAmJiAoYmluT3AgIT0gTlVMTCkpOworICAgICAgICAgICAgaW5jcmVtZW50ID0g
ZXZhbHVhdGVJbnRDb25zdGFudChpbmNyZW1lbnROb2RlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcFN1YkFzc2lnbjoKKyAgICAgICAgICAgIEFTU0VSVCgodW5PcCA9PSBO
VUxMKSAmJiAoYmluT3AgIT0gTlVMTCkpOworICAgICAgICAgICAgaW5jcmVtZW50ID0gLSBldmFs
dWF0ZUludENvbnN0YW50KGluY3JlbWVudE5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgIH0KKworICAgIHJl
dHVybiBpbmNyZW1lbnQ7Cit9CisKK2ludCBGb3JMb29wVW5yb2xsOjpldmFsdWF0ZUludENvbnN0
YW50KFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlKQoreworICAgIEFTU0VSVCgobm9kZSAhPSBO
VUxMKSAmJiAobm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSAhPSBOVUxMKSk7CisgICAgcmV0
dXJuIG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpOworfQorCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9y
TG9vcFVucm9sbC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9y
TG9vcFVucm9sbC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKKworc3Ry
dWN0IFRMb29wSW5kZXhJbmZvIHsKKyAgICBpbnQgaWQ7CisgICAgaW50IGluaXRWYWx1ZTsKKyAg
ICBpbnQgc3RvcFZhbHVlOworICAgIGludCBpbmNyZW1lbnRWYWx1ZTsKKyAgICBUT3BlcmF0b3Ig
b3A7CisgICAgaW50IGN1cnJlbnRWYWx1ZTsKK307CisKK2NsYXNzIEZvckxvb3BVbnJvbGwgewor
cHVibGljOgorICAgIEZvckxvb3BVbnJvbGwoKSB7IH0KKworICAgIHZvaWQgRmlsbExvb3BJbmRl
eEluZm8oVEludGVybUxvb3AqIG5vZGUsIFRMb29wSW5kZXhJbmZvJiBpbmZvKTsKKworICAgIC8v
IFVwZGF0ZSB0aGUgaW5mby5jdXJyZW50VmFsdWUgZm9yIHRoZSBuZXh0IGxvb3AgaXRlcmF0aW9u
LgorICAgIHZvaWQgU3RlcCgpOworCisgICAgLy8gUmV0dXJuIGZhbHNlIGlmIGxvb3AgY29uZGl0
aW9uIGlzIG5vIGxvbmdlciBzYXRpc2ZpZWQuCisgICAgYm9vbCBTYXRpc2ZpZXNMb29wQ29uZGl0
aW9uKCk7CisKKyAgICAvLyBDaGVjayBpZiB0aGUgc3ltYm9sIGlzIHRoZSBpbmRleCBvZiBhIGxv
b3AgdGhhdCdzIHVucm9sbGVkLgorICAgIGJvb2wgTmVlZHNUb1JlcGxhY2VTeW1ib2xXaXRoVmFs
dWUoVEludGVybVN5bWJvbCogc3ltYm9sKTsKKworICAgIC8vIFJldHVybiB0aGUgY3VycmVudCB2
YWx1ZSBvZiBhIGdpdmVuIGxvb3AgaW5kZXggc3ltYm9sLgorICAgIGludCBHZXRMb29wSW5kZXhW
YWx1ZShUSW50ZXJtU3ltYm9sKiBzeW1ib2wpOworCisgICAgdm9pZCBQdXNoKFRMb29wSW5kZXhJ
bmZvJiBpbmZvKTsKKyAgICB2b2lkIFBvcCgpOworCitwcml2YXRlOgorICAgIGludCBnZXRMb29w
SW5jcmVtZW50KFRJbnRlcm1Mb29wKiBub2RlKTsKKworICAgIGludCBldmFsdWF0ZUludENvbnN0
YW50KFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlKTsKKworICAgIFRWZWN0b3I8VExvb3BJbmRl
eEluZm8+IG1Mb29wSW5kZXhTdGFjazsKK307CisKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcAkocmV2aXNpb24gODky
ODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MywxNyArMzUzLDE1IEBAIHN0YXRpYyBUU3RyaW5nIEJ1
aWx0SW5GdW5jdGlvbnNWZXJ0ZXgoY28KICAgICAvLwogICAgIC8vIFRleHR1cmUgRnVuY3Rpb25z
LgogICAgIC8vCi0gICAgaWYgKHJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA+
IDApIHsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlcjJE
IHNhbXBsZXIsIHZlYzIgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0gICAg
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxl
ciwgdmVjNCBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1
cmVDdWJlKHNhbXBsZXJDdWJlIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLQotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRExvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVj
MiBjb29yZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
dGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjMyBjb29yZCwgZmxvYXQgbG9k
KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvakxvZChz
YW1wbGVyMkQgc2FtcGxlciwgdmVjNCBjb29yZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZUN1YmVMb2Qoc2FtcGxlckN1YmUgc2FtcGxlciwg
dmVjMyBjb29yZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgfQorICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgdGV4dHVyZTJEKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkKTsiKSk7CisgICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2
ZWMzIGNvb3JkKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9q
KHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCB0ZXh0dXJlQ3ViZShzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7
CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRExvZChzYW1wbGVyMkQgc2Ft
cGxlciwgdmVjMiBjb29yZCwgZmxvYXQgbG9kKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCB0ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9h
dCBsb2QpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qo
c2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQsIGZsb2F0IGxvZCk7IikpOworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZUN1YmVMb2Qoc2FtcGxlckN1YmUgc2FtcGxlciwgdmVj
MyBjb29yZCwgZmxvYXQgbG9kKTsiKSk7CiAKICAgICByZXR1cm4gczsKIH0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL01hcExv
bmdWYXJpYWJsZU5hbWVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci9N
YXBMb25nVmFyaWFibGVOYW1lcy5oIgorCituYW1lc3BhY2UgeworCitUU3RyaW5nIG1hcExvbmdO
YW1lKGludCBpZCwgY29uc3QgVFN0cmluZyYgbmFtZSwgYm9vbCBpc1ZhcnlpbmcpCit7CisgICAg
QVNTRVJUKG5hbWUuc2l6ZSgpID4gTUFYX0lERU5USUZJRVJfTkFNRV9TSVpFKTsKKyAgICBUU3Ry
aW5nU3RyZWFtIHN0cmVhbTsKKyAgICBzdHJlYW0gPDwgIndlYmdsXyI7CisgICAgaWYgKGlzVmFy
eWluZykKKyAgICAgICAgc3RyZWFtIDw8ICJ2IjsKKyAgICBzdHJlYW0gPDwgaWQgPDwgIl8iOwor
ICAgIHN0cmVhbSA8PCBuYW1lLnN1YnN0cigwLCBNQVhfSURFTlRJRklFUl9OQU1FX1NJWkUgLSBz
dHJlYW0uc3RyKCkuc2l6ZSgpKTsKKyAgICByZXR1cm4gc3RyZWFtLnN0cigpOworfQorCit9ICAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK01hcExvbmdWYXJpYWJsZU5hbWVzOjpNYXBMb25nVmFy
aWFibGVOYW1lcygKKyAgICBUTWFwPFRTdHJpbmcsIFRTdHJpbmc+JiB2YXJ5aW5nTG9uZ05hbWVN
YXApCisgICAgOiBtVmFyeWluZ0xvbmdOYW1lTWFwKHZhcnlpbmdMb25nTmFtZU1hcCkKK3sKK30K
Kwordm9pZCBNYXBMb25nVmFyaWFibGVOYW1lczo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCog
c3ltYm9sKQoreworICAgIEFTU0VSVChzeW1ib2wgIT0gTlVMTCk7CisgICAgaWYgKHN5bWJvbC0+
Z2V0U3ltYm9sKCkuc2l6ZSgpID4gTUFYX0lERU5USUZJRVJfTkFNRV9TSVpFKSB7CisgICAgICAg
IHN3aXRjaCAoc3ltYm9sLT5nZXRRdWFsaWZpZXIoKSkgeworICAgICAgICAgIGNhc2UgRXZxVmFy
eWluZ0luOgorICAgICAgICAgIGNhc2UgRXZxVmFyeWluZ091dDoKKyAgICAgICAgICBjYXNlIEV2
cUludmFyaWFudFZhcnlpbmdJbjoKKyAgICAgICAgICBjYXNlIEV2cUludmFyaWFudFZhcnlpbmdP
dXQ6CisgICAgICAgICAgICBzeW1ib2wtPnNldFN5bWJvbCgKKyAgICAgICAgICAgICAgICBtYXBW
YXJ5aW5nTG9uZ05hbWUoc3ltYm9sLT5nZXRTeW1ib2woKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHN5bWJvbC0+c2V0U3ltYm9sKAorICAg
ICAgICAgICAgICAgIG1hcExvbmdOYW1lKHN5bWJvbC0+Z2V0SWQoKSwgc3ltYm9sLT5nZXRTeW1i
b2woKSwgZmFsc2UpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9OworICAgIH0KK30K
Kwordm9pZCBNYXBMb25nVmFyaWFibGVOYW1lczo6dmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1D
b25zdGFudFVuaW9uKikKK3sKK30KKworYm9vbCBNYXBMb25nVmFyaWFibGVOYW1lczo6dmlzaXRC
aW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkqKQoreworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkq
KQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2
aXNpdFNlbGVjdGlvbihWaXNpdCwgVEludGVybVNlbGVjdGlvbiopCit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6OnZpc2l0QWdncmVnYXRlKFZpc2l0
LCBUSW50ZXJtQWdncmVnYXRlKikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNYXBM
b25nVmFyaWFibGVOYW1lczo6dmlzaXRMb29wKFZpc2l0LCBUSW50ZXJtTG9vcCogbm9kZSkKK3sK
KyAgICBpZiAobm9kZS0+Z2V0SW5pdCgpKQorICAgICAgICBub2RlLT5nZXRJbml0KCktPnRyYXZl
cnNlKHRoaXMpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE1hcExvbmdWYXJpYWJsZU5h
bWVzOjp2aXNpdEJyYW5jaChWaXNpdCwgVEludGVybUJyYW5jaCopCit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK1RTdHJpbmcgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6Om1hcFZhcnlpbmdMb25nTmFt
ZShjb25zdCBUU3RyaW5nJiBuYW1lKQoreworICAgIFRNYXA8VFN0cmluZywgVFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbVZhcnlpbmdMb25nTmFtZU1hcC5maW5kKG5hbWUpOworICAgIGlm
IChpdCAhPSBtVmFyeWluZ0xvbmdOYW1lTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gKCppdCku
c2Vjb25kOworCisgICAgaW50IGlkID0gbVZhcnlpbmdMb25nTmFtZU1hcC5zaXplKCk7CisgICAg
VFN0cmluZyBtYXBwZWROYW1lID0gbWFwTG9uZ05hbWUoaWQsIG5hbWUsIHRydWUpOworICAgIG1W
YXJ5aW5nTG9uZ05hbWVNYXAuaW5zZXJ0KAorICAgICAgICBUTWFwPFRTdHJpbmcsIFRTdHJpbmc+
Ojp2YWx1ZV90eXBlKG5hbWUsIG1hcHBlZE5hbWUpKTsKKyAgICByZXR1cm4gbWFwcGVkTmFtZTsK
K30KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1z
dHlsZQogICArIExGCgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L01hcExvbmdWYXJpYWJsZU5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFt
ZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
I2lmbmRlZiBDT01QSUxFUl9NQVBfTE9OR19WQVJJQUJMRV9OQU1FU19IXworI2RlZmluZSBDT01Q
SUxFUl9NQVBfTE9OR19WQVJJQUJMRV9OQU1FU19IXworCisjaW5jbHVkZSAiR0xTTEFORy9TaGFk
ZXJMYW5nLmgiCisKKyNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKKyNpbmNsdWRl
ICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKKworLy8gVGhpcyBzaXplIGRvZXMgbm90IGluY2x1
ZGUgJ1wwJyBpbiB0aGUgZW5kLgorI2RlZmluZSBNQVhfSURFTlRJRklFUl9OQU1FX1NJWkUgMzIK
KworLy8gVHJhdmVyc2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIG1hcCBhdHRyaWJ1dGVzIGFuZCB1
bmlmb3JtcyBuYW1lcyB0aGF0IGFyZQorLy8gbG9uZ2VyIHRoYW4gTUFYX0lERU5USUZJRVJfTkFN
RV9TSVpFIHRvIE1BWF9JREVOVElGSUVSX05BTUVfU0laRS4KK2NsYXNzIE1hcExvbmdWYXJpYWJs
ZU5hbWVzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgeworcHVibGljOgorICAgIE1hcExvbmdW
YXJpYWJsZU5hbWVzKFRNYXA8VFN0cmluZywgVFN0cmluZz4mIHZhcnlpbmdMb25nTmFtZU1hcCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCopOworICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRVbmFyeShWaXNpdCwgVEludGVybVVuYXJ5Kik7CisgICAgdmlydHVh
bCBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uKik7CisgICAgdmly
dHVhbCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKik7CisgICAg
dmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AqKTsKKyAgICB2aXJ0dWFs
IGJvb2wgdmlzaXRCcmFuY2goVmlzaXQsIFRJbnRlcm1CcmFuY2gqKTsKKworcHJpdmF0ZToKKyAg
ICBUU3RyaW5nIG1hcFZhcnlpbmdMb25nTmFtZShjb25zdCBUU3RyaW5nJiBuYW1lKTsKKworICAg
IFRNYXA8VFN0cmluZywgVFN0cmluZz4mIG1WYXJ5aW5nTG9uZ05hbWVNYXA7Cit9OworCisjZW5k
aWYgIC8vIENPTVBJTEVSX01BUF9MT05HX1ZBUklBQkxFX05BTUVTX0hfCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTWFwTG9uZ1Zhcmlh
YmxlTmFtZXMuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0RVNTTC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEVT
U0wuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL091dHB1dEVTU0wuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvT3V0cHV0RVNTTC5oIgorCitUT3V0cHV0
RVNTTDo6VE91dHB1dEVTU0woVEluZm9TaW5rQmFzZSYgb2JqU2luaykKKyAgICA6IFRPdXRwdXRH
TFNMQmFzZShvYmpTaW5rKQoreworfQorCitib29sIFRPdXRwdXRFU1NMOjp3cml0ZVZhcmlhYmxl
UHJlY2lzaW9uKFRQcmVjaXNpb24gcHJlY2lzaW9uKQoreworICAgIGlmIChwcmVjaXNpb24gPT0g
RWJwVW5kZWZpbmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBUSW5mb1NpbmtCYXNl
JiBvdXQgPSBvYmpTaW5rKCk7CisgICAgb3V0IDw8IGdldFByZWNpc2lvblN0cmluZyhwcmVjaXNp
b24pOworICAgIHJldHVybiB0cnVlOworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEVTU0wuY3BwCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9PdXRwdXRFU1NMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEVTU0wuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRFU1NMLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjEgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYgQ1JPU1NDT01Q
SUxFUkdMU0xfT1VUUFVURVNTTF9IXworI2RlZmluZSBDUk9TU0NPTVBJTEVSR0xTTF9PVVRQVVRF
U1NMX0hfCisKKyNpbmNsdWRlICJjb21waWxlci9PdXRwdXRHTFNMQmFzZS5oIgorCitjbGFzcyBU
T3V0cHV0RVNTTCA6IHB1YmxpYyBUT3V0cHV0R0xTTEJhc2UKK3sKK3B1YmxpYzoKKyAgICBUT3V0
cHV0RVNTTChUSW5mb1NpbmtCYXNlJiBvYmpTaW5rKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1
YWwgYm9vbCB3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKFRQcmVjaXNpb24gcHJlY2lzaW9uKTsKK307
CisKKyNlbmRpZiAgLy8gQ1JPU1NDT01QSUxFUkdMU0xfT1VUUFVURVNTTF9IXwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEVT
U0wuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3Bw
CShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9PdXRwdXRHTFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2OTAgKzEsMTcgQEAKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCiAjaW5jbHVkZSAiY29tcGlsZXIvT3V0
cHV0R0xTTC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgiCi0KLW5hbWVzcGFjZQotewot
VFN0cmluZyBnZXRUeXBlTmFtZShjb25zdCBUVHlwZSYgdHlwZSkKLXsKLSAgICBUSW5mb1NpbmtC
YXNlIG91dDsKLSAgICBpZiAodHlwZS5pc01hdHJpeCgpKQotICAgIHsKLSAgICAgICAgb3V0IDw8
ICJtYXQiOwotICAgICAgICBvdXQgPDwgdHlwZS5nZXROb21pbmFsU2l6ZSgpOwotICAgIH0KLSAg
ICBlbHNlIGlmICh0eXBlLmlzVmVjdG9yKCkpCi0gICAgewotICAgICAgICBzd2l0Y2ggKHR5cGUu
Z2V0QmFzaWNUeXBlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IG91
dCA8PCAidmVjIjsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEVidEludDogb3V0IDw8ICJpdmVj
IjsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEVidEJvb2w6IG91dCA8PCAiYnZlYyI7IGJyZWFr
OwotICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgb3V0IDw8IHR5cGUuZ2V0Tm9taW5hbFNpemUoKTsKLSAgICB9Ci0gICAgZWxzZQot
ICAgIHsKLSAgICAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQotICAg
ICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0VHlwZU5hbWUoKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgb3V0IDw8IHR5cGUuZ2V0QmFzaWNTdHJpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIFRT
dHJpbmcob3V0LmNfc3RyKCkpOwotfQotCi1UU3RyaW5nIGFycmF5QnJhY2tldHMoY29uc3QgVFR5
cGUmIHR5cGUpCi17Ci0gICAgQVNTRVJUKHR5cGUuaXNBcnJheSgpKTsKLSAgICBUSW5mb1NpbmtC
YXNlIG91dDsKLSAgICBvdXQgPDwgIlsiIDw8IHR5cGUuZ2V0QXJyYXlTaXplKCkgPDwgIl0iOwot
ICAgIHJldHVybiBUU3RyaW5nKG91dC5jX3N0cigpKTsKLX0KLQotYm9vbCBpc1NpbmdsZVN0YXRl
bWVudChUSW50ZXJtTm9kZSogbm9kZSkgewotICAgIGlmIChjb25zdCBUSW50ZXJtQWdncmVnYXRl
KiBhZ2dyZWdhdGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIChhZ2dyZWdhdGUtPmdldE9wKCkgIT0gRU9wRnVuY3Rpb24pICYmCi0gICAgICAgICAgICAg
ICAoYWdncmVnYXRlLT5nZXRPcCgpICE9IEVPcFNlcXVlbmNlKTsKLSAgICB9Ci0gICAgZWxzZSBp
ZiAoY29uc3QgVEludGVybVNlbGVjdGlvbiogc2VsZWN0aW9uID0gbm9kZS0+Z2V0QXNTZWxlY3Rp
b25Ob2RlKCkpCi0gICAgewotICAgICAgICAvLyBUZXJuYXJ5IG9wZXJhdG9ycyBhcmUgdXN1YWxs
eSBwYXJ0IG9mIGFuIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0gICAgICAgIC8vIFRoaXMgaGFuZGxl
cyB0aG9zZSByYXJlIGNhc2VzIGluIHdoaWNoIHRoZXkgYXJlIGFsbCBieSB0aGVtc2VsdmVzLgot
ICAgICAgICByZXR1cm4gc2VsZWN0aW9uLT51c2VzVGVybmFyeU9wZXJhdG9yKCk7Ci0gICAgfQot
ICAgIGVsc2UgaWYgKG5vZGUtPmdldEFzTG9vcE5vZGUoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci19ICAvLyBuYW1lc3BhY2UKIAog
VE91dHB1dEdMU0w6OlRPdXRwdXRHTFNMKFRJbmZvU2lua0Jhc2UmIG9ialNpbmspCi0gICAgOiBU
SW50ZXJtVHJhdmVyc2VyKHRydWUsIHRydWUsIHRydWUpLAotICAgICAgbU9ialNpbmsob2JqU2lu
ayksCi0gICAgICBtRGVjbGFyaW5nVmFyaWFibGVzKGZhbHNlKQotewotfQotCi12b2lkIFRPdXRw
dXRHTFNMOjp3cml0ZVRyaXBsZXQoVmlzaXQgdmlzaXQsIGNvbnN0IGNoYXIqIHByZVN0ciwgY29u
c3QgY2hhciogaW5TdHIsIGNvbnN0IGNoYXIqIHBvc3RTdHIpCisgICAgOiBUT3V0cHV0R0xTTEJh
c2Uob2JqU2luaykKIHsKLSAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBvYmpTaW5rKCk7Ci0gICAg
aWYgKHZpc2l0ID09IFByZVZpc2l0ICYmIHByZVN0cikKLSAgICB7Ci0gICAgICAgIG91dCA8PCBw
cmVTdHI7Ci0gICAgfQotICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlzaXQgJiYgaW5TdHIpCi0g
ICAgewotICAgICAgICBvdXQgPDwgaW5TdHI7Ci0gICAgfQotICAgIGVsc2UgaWYgKHZpc2l0ID09
IFBvc3RWaXNpdCAmJiBwb3N0U3RyKQotICAgIHsKLSAgICAgICAgb3V0IDw8IHBvc3RTdHI7Ci0g
ICAgfQotfQotCi12b2lkIFRPdXRwdXRHTFNMOjp3cml0ZVZhcmlhYmxlVHlwZShjb25zdCBUVHlw
ZSYgdHlwZSkKLXsKLSAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBvYmpTaW5rKCk7Ci0gICAgVFF1
YWxpZmllciBxdWFsaWZpZXIgPSB0eXBlLmdldFF1YWxpZmllcigpOwotICAgIC8vIFRPRE8oYWxv
a3ApOiBWYWxpZGF0ZSBxdWFsaWZpZXIgZm9yIHZhcmlhYmxlIGRlY2xhcmF0aW9ucy4KLSAgICBp
ZiAoKHF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpICYmIChxdWFsaWZpZXIgIT0gRXZxR2xvYmFs
KSkKLSAgICAgICAgb3V0IDw8IHR5cGUuZ2V0UXVhbGlmaWVyU3RyaW5nKCkgPDwgIiAiOwotCi0g
ICAgLy8gRGVjbGFyZSB0aGUgc3RydWN0IGlmIHdlIGhhdmUgbm90IGRvbmUgc28gYWxyZWFkeS4K
LSAgICBpZiAoKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSAmJgotICAgICAgICAo
bURlY2xhcmVkU3RydWN0cy5maW5kKHR5cGUuZ2V0VHlwZU5hbWUoKSkgPT0gbURlY2xhcmVkU3Ry
dWN0cy5lbmQoKSkpCi0gICAgewotICAgICAgICBvdXQgPDwgInN0cnVjdCAiIDw8IHR5cGUuZ2V0
VHlwZU5hbWUoKSA8PCAie1xuIjsKLSAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBzdHJ1Y3R1cmUg
PSB0eXBlLmdldFN0cnVjdCgpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IE5VTEwpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVy
ZSlbaV0udHlwZTsKLSAgICAgICAgICAgIEFTU0VSVChmaWVsZFR5cGUgIT0gTlVMTCk7Ci0gICAg
ICAgICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkVHlwZSkgPDwgIiAiIDw8IGZpZWxkVHlw
ZS0+Z2V0RmllbGROYW1lKCk7Ci0gICAgICAgICAgICBpZiAoZmllbGRUeXBlLT5pc0FycmF5KCkp
Ci0gICAgICAgICAgICAgICAgb3V0IDw8IGFycmF5QnJhY2tldHMoKmZpZWxkVHlwZSk7Ci0gICAg
ICAgICAgICBvdXQgPDwgIjtcbiI7Ci0gICAgICAgIH0KLSAgICAgICAgb3V0IDw8ICJ9IjsKLSAg
ICAgICAgbURlY2xhcmVkU3RydWN0cy5pbnNlcnQodHlwZS5nZXRUeXBlTmFtZSgpKTsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1lKHR5cGUpOwotICAg
IH0KLX0KLQotdm9pZCBUT3V0cHV0R0xTTDo6d3JpdGVGdW5jdGlvblBhcmFtZXRlcnMoY29uc3Qg
VEludGVybVNlcXVlbmNlJiBhcmdzKQotewotICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNp
bmsoKTsKLSAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGFy
Z3MuYmVnaW4oKTsKLSAgICAgICAgIGl0ZXIgIT0gYXJncy5lbmQoKTsgKytpdGVyKQotICAgIHsK
LSAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCogYXJnID0gKCppdGVyKS0+Z2V0QXNTeW1ib2xO
b2RlKCk7Ci0gICAgICAgIEFTU0VSVChhcmcgIT0gTlVMTCk7Ci0KLSAgICAgICAgY29uc3QgVFR5
cGUmIHR5cGUgPSBhcmctPmdldFR5cGUoKTsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIg
PSB0eXBlLmdldFF1YWxpZmllcigpOwotICAgICAgICAvLyBUT0RPKGFsb2twKTogVmFsaWRhdGUg
cXVhbGlmaWVyIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuCi0gICAgICAgIGlmICgocXVhbGlmaWVy
ICE9IEV2cVRlbXBvcmFyeSkgJiYgKHF1YWxpZmllciAhPSBFdnFHbG9iYWwpKQotICAgICAgICAg
ICAgb3V0IDw8IHR5cGUuZ2V0UXVhbGlmaWVyU3RyaW5nKCkgPDwgIiAiOwotCi0gICAgICAgIG91
dCA8PCBnZXRUeXBlTmFtZSh0eXBlKTsKLQotICAgICAgICBjb25zdCBUU3RyaW5nJiBuYW1lID0g
YXJnLT5nZXRTeW1ib2woKTsKLSAgICAgICAgaWYgKCFuYW1lLmVtcHR5KCkpCi0gICAgICAgICAg
ICBvdXQgPDwgIiAiIDw8IG5hbWU7Ci0gICAgICAgIGlmICh0eXBlLmlzQXJyYXkoKSkKLSAgICAg
ICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKHR5cGUpOwotCi0gICAgICAgIC8vIFB1dCBhIGNv
bW1hIGlmIHRoaXMgaXMgbm90IHRoZSBsYXN0IGFyZ3VtZW50LgotICAgICAgICBpZiAoaXRlciAh
PSBhcmdzLmVuZCgpIC0gMSkKLSAgICAgICAgICAgIG91dCA8PCAiLCAiOwotICAgIH0KIH0KIAot
Y29uc3QgQ29uc3RhbnRVbmlvbiogVE91dHB1dEdMU0w6OndyaXRlQ29uc3RhbnRVbmlvbihjb25z
dCBUVHlwZSYgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ29uc3RhbnRVbmlvbiogcENvbnN0VW5pb24pCitib29sIFRPdXRw
dXRHTFNMOjp3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKFRQcmVjaXNpb24pCiB7Ci0gICAgVEluZm9T
aW5rQmFzZSYgb3V0ID0gb2JqU2luaygpOwotCi0gICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0U3RydWN0KQotICAgIHsKLSAgICAgICAgb3V0IDw8IHR5cGUuZ2V0VHlwZU5hbWUoKSA8
PCAiKCI7Ci0gICAgICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1
Y3QoKTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBOVUxMKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zdCBUVHlwZSogZmllbGRUeXBlID0gKCpzdHJ1Y3R1cmUpW2ldLnR5cGU7Ci0g
ICAgICAgICAgICBBU1NFUlQoZmllbGRUeXBlICE9IE5VTEwpOwotICAgICAgICAgICAgcENvbnN0
VW5pb24gPSB3cml0ZUNvbnN0YW50VW5pb24oKmZpZWxkVHlwZSwgcENvbnN0VW5pb24pOwotICAg
ICAgICAgICAgaWYgKGkgIT0gc3RydWN0dXJlLT5zaXplKCkgLSAxKSBvdXQgPDwgIiwgIjsKLSAg
ICAgICAgfQotICAgICAgICBvdXQgPDwgIikiOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICBpbnQgc2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICBib29sIHdyaXRl
VHlwZSA9IHNpemUgPiAxOwotICAgICAgICBpZiAod3JpdGVUeXBlKSBvdXQgPDwgZ2V0VHlwZU5h
bWUodHlwZSkgPDwgIigiOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSwg
KytwQ29uc3RVbmlvbikKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChwQ29uc3RVbmlv
bi0+Z2V0VHlwZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRWJ0Rmxv
YXQ6IG91dCA8PCBwQ29uc3RVbmlvbi0+Z2V0RkNvbnN0KCk7IGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0SW50OiBvdXQgPDwgcENvbnN0VW5pb24tPmdldElDb25zdCgpOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6IG91dCA8PCBwQ29uc3RVbmlvbi0+Z2V0QkNv
bnN0KCk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaSAhPSBzaXplIC0gMSkgb3V0IDw8ICIsICI7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHdyaXRlVHlwZSkgb3V0IDw8ICIpIjsKLSAgICB9Ci0g
ICAgcmV0dXJuIHBDb25zdFVuaW9uOwotfQotCi12b2lkIFRPdXRwdXRHTFNMOjp2aXNpdFN5bWJv
bChUSW50ZXJtU3ltYm9sKiBub2RlKQotewotICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNp
bmsoKTsKLSAgICBvdXQgPDwgbm9kZS0+Z2V0U3ltYm9sKCk7Ci0KLSAgICBpZiAobURlY2xhcmlu
Z1ZhcmlhYmxlcyAmJiBub2RlLT5nZXRUeXBlKCkuaXNBcnJheSgpKQotICAgICAgICBvdXQgPDwg
YXJyYXlCcmFja2V0cyhub2RlLT5nZXRUeXBlKCkpOwotfQotCi12b2lkIFRPdXRwdXRHTFNMOjp2
aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUpCi17Ci0gICAgd3Jp
dGVDb25zdGFudFVuaW9uKG5vZGUtPmdldFR5cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKSk7Ci19Ci0KLWJvb2wgVE91dHB1dEdMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBU
SW50ZXJtQmluYXJ5KiBub2RlKQotewotICAgIGJvb2wgdmlzaXRDaGlsZHJlbiA9IHRydWU7Ci0g
ICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2luaygpOwotICAgIHN3aXRjaCAobm9kZS0+Z2V0
T3AoKSkKLSAgICB7Ci0gICAgICAgIGNhc2UgRU9wSW5pdGlhbGl6ZToKLSAgICAgICAgICAgIGlm
ICh2aXNpdCA9PSBJblZpc2l0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dCA8
PCAiID0gIjsKLSAgICAgICAgICAgICAgICAvLyBSSFMgb2YgaW5pdGlhbGl6ZSBpcyBub3QgYmVp
bmcgZGVjbGFyZWQuCi0gICAgICAgICAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyA9IGZhbHNl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wQXNz
aWduOiB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiA9ICIsICIpIik7IGJyZWFrOwotICAgICAg
ICBjYXNlIEVPcEFkZEFzc2lnbjogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgKz0gIiwgIiki
KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wU3ViQXNzaWduOiB3cml0ZVRyaXBsZXQodmlzaXQs
ICIoIiwgIiAtPSAiLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BEaXZBc3NpZ246IHdy
aXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIC89ICIsICIpIik7IGJyZWFrOwotICAgICAgICAvLyBO
b3RpY2UgdGhlIGZhbGwtdGhyb3VnaC4KLSAgICAgICAgY2FzZSBFT3BNdWxBc3NpZ246IAotICAg
ICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4QXNzaWduOgotICAgICAgICBjYXNlIEVPcFZl
Y3RvclRpbWVzU2NhbGFyQXNzaWduOgotICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFy
QXNzaWduOgotICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4QXNzaWduOgotICAgICAg
ICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgKj0gIiwgIikiKTsKLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3Q6Ci0gICAgICAgIGNhc2UgRU9w
SW5kZXhJbmRpcmVjdDoKLSAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgTlVMTCwgIlsi
LCAiXSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RT
dHJ1Y3Q6Ci0gICAgICAgICAgICBpZiAodmlzaXQgPT0gSW5WaXNpdCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBvdXQgPDwgIi4iOwotICAgICAgICAgICAgICAgIC8vIFRPRE8oYWxv
a3ApOiBBU1NFUlQKLSAgICAgICAgICAgICAgICBvdXQgPDwgbm9kZS0+Z2V0VHlwZSgpLmdldEZp
ZWxkTmFtZSgpOwotICAgICAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVPcFZlY3RvclN3aXp6
bGU6Ci0gICAgICAgICAgICBpZiAodmlzaXQgPT0gSW5WaXNpdCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBvdXQgPDwgIi4iOwotICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdh
dGUqIHJpZ2h0Q2hpbGQgPSBub2RlLT5nZXRSaWdodCgpLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAg
ICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSYgc2VxdWVuY2UgPSByaWdodENoaWxkLT5nZXRT
ZXF1ZW5jZSgpOwotICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRv
ciBzaXQgPSBzZXF1ZW5jZS5iZWdpbigpOyBzaXQgIT0gc2VxdWVuY2UuZW5kKCk7ICsrc2l0KQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5p
b24qIGVsZW1lbnQgPSAoKnNpdCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwotICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoZWxlbWVudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KTsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmdldE5vbWluYWxTaXplKCkgPT0gMSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnN0YW50VW5pb24mIGRhdGEgPSBlbGVtZW50LT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpWzBdOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGF0
YS5nZXRUeXBlKCkgPT0gRWJ0SW50KTsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkYXRh
LmdldElDb25zdCgpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDA6IG91dCA8PCAieCI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAxOiBvdXQgPDwgInkiOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
Mjogb3V0IDw8ICJ6IjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG91
dCA8PCAidyI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgdmlzaXRDaGlsZHJlbiA9IGZhbHNlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFT3BBZGQ6IHdyaXRlVHJpcGxldCh2
aXNpdCwgIigiLCAiICsgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wU3ViOiB3cml0
ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAtICIsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVP
cE11bDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgKiAiLCAiKSIpOyBicmVhazsKLSAgICAg
ICAgY2FzZSBFT3BEaXY6IHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIC8gIiwgIikiKTsgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRU9wTW9kOiBVTklNUExFTUVOVEVEKCk7IGJyZWFrOwotICAgICAg
ICBjYXNlIEVPcEVxdWFsOiB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiA9PSAiLCAiKSIpOyBi
cmVhazsKLSAgICAgICAgY2FzZSBFT3BOb3RFcXVhbDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIs
ICIgIT0gIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wTGVzc1RoYW46IHdyaXRlVHJp
cGxldCh2aXNpdCwgIigiLCAiIDwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wR3Jl
YXRlclRoYW46IHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiID4gIiwgIikiKTsgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIg
PD0gIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDogd3Jp
dGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgPj0gIiwgIikiKTsgYnJlYWs7Ci0KLSAgICAgICAgLy8g
Tm90aWNlIHRoZSBmYWxsLXRocm91Z2guCi0gICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2Fs
YXI6Ci0gICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6Ci0gICAgICAgIGNhc2UgRU9w
TWF0cml4VGltZXNWZWN0b3I6Ci0gICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6Ci0g
ICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6Ci0gICAgICAgICAgICB3cml0ZVRyaXBs
ZXQodmlzaXQsICIoIiwgIiAqICIsICIpIik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBjYXNlIEVPcExvZ2ljYWxPcjogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgfHwgIiwgIiki
KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjogd3JpdGVUcmlwbGV0KHZpc2l0
LCAiKCIsICIgXl4gIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDog
d3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgJiYgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiB2aXNpdENo
aWxkcmVuOwotfQotCi1ib29sIFRPdXRwdXRHTFNMOjp2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBU
SW50ZXJtVW5hcnkqIG5vZGUpCi17Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQotICAgIHsK
LSAgICAgICAgY2FzZSBFT3BOZWdhdGl2ZTogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKC0iLCBOVUxM
LCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BWZWN0b3JMb2dpY2FsTm90OiB3cml0ZVRy
aXBsZXQodmlzaXQsICJub3QoIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9w
TG9naWNhbE5vdDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCEiLCBOVUxMLCAiKSIpOyBicmVhazsK
LQotICAgICAgICBjYXNlIEVPcFBvc3RJbmNyZW1lbnQ6IHdyaXRlVHJpcGxldCh2aXNpdCwgIigi
LCBOVUxMLCAiKyspIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcFBvc3REZWNyZW1lbnQ6IHdy
aXRlVHJpcGxldCh2aXNpdCwgIigiLCBOVUxMLCAiLS0pIik7IGJyZWFrOwotICAgICAgICBjYXNl
IEVPcFByZUluY3JlbWVudDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCsrIiwgTlVMTCwgIikiKTsg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wUHJlRGVjcmVtZW50OiB3cml0ZVRyaXBsZXQodmlzaXQs
ICIoLS0iLCBOVUxMLCAiKSIpOyBicmVhazsKLQotICAgICAgICBjYXNlIEVPcENvbnZJbnRUb0Jv
b2w6Ci0gICAgICAgIGNhc2UgRU9wQ29udkZsb2F0VG9Cb29sOgotICAgICAgICAgICAgc3dpdGNo
IChub2RlLT5nZXRPcGVyYW5kKCktPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgMTogd3JpdGVUcmlwbGV0KHZpc2l0LCAiYm9v
bCgiLCBOVUxMLCAiKSIpOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiB3cml0ZVRy
aXBsZXQodmlzaXQsICJidmVjMigiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDM6IHdyaXRlVHJpcGxldCh2aXNpdCwgImJ2ZWMzKCIsIE5VTEwsICIpIik7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgNDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiYnZlYzQoIiwg
TlVMTCwgIikiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVPcENv
bnZCb29sVG9GbG9hdDoKLSAgICAgICAgY2FzZSBFT3BDb252SW50VG9GbG9hdDoKLSAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+Z2V0T3BlcmFuZCgpLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUo
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IHdyaXRlVHJpcGxldCh2
aXNpdCwgImZsb2F0KCIsIE5VTEwsICIpIik7ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDI6IHdyaXRlVHJpcGxldCh2aXNpdCwgInZlYzIoIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAzOiB3cml0ZVRyaXBsZXQodmlzaXQsICJ2ZWMzKCIsIE5VTEwsICIp
Iik7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDogd3JpdGVUcmlwbGV0KHZpc2l0LCAi
dmVjNCgiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRU9wQ29udkZsb2F0VG9JbnQ6Ci0gICAgICAgIGNhc2UgRU9wQ29udkJvb2xUb0ludDoKLSAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0T3BlcmFuZCgpLT5nZXRUeXBlKCkuZ2V0Tm9taW5h
bFNpemUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IHdyaXRlVHJp
cGxldCh2aXNpdCwgImludCgiLCBOVUxMLCAiKSIpOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAyOiB3cml0ZVRyaXBsZXQodmlzaXQsICJpdmVjMigiLCBOVUxMLCAiKSIpOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDM6IHdyaXRlVHJpcGxldCh2aXNpdCwgIml2ZWMzKCIsIE5V
TEwsICIpIik7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDogd3JpdGVUcmlwbGV0KHZp
c2l0LCAiaXZlYzQoIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgRU9wUmFkaWFuczogd3JpdGVUcmlwbGV0KHZpc2l0LCAicmFkaWFucygiLCBO
VUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BEZWdyZWVzOiB3cml0ZVRyaXBsZXQo
dmlzaXQsICJkZWdyZWVzKCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcFNp
bjogd3JpdGVUcmlwbGV0KHZpc2l0LCAic2luKCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAg
ICBjYXNlIEVPcENvczogd3JpdGVUcmlwbGV0KHZpc2l0LCAiY29zKCIsIE5VTEwsICIpIik7IGJy
ZWFrOwotICAgICAgICBjYXNlIEVPcFRhbjogd3JpdGVUcmlwbGV0KHZpc2l0LCAidGFuKCIsIE5V
TEwsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcEFzaW46IHdyaXRlVHJpcGxldCh2aXNp
dCwgImFzaW4oIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wQWNvczogd3Jp
dGVUcmlwbGV0KHZpc2l0LCAiYWNvcygiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2Fz
ZSBFT3BBdGFuOiB3cml0ZVRyaXBsZXQodmlzaXQsICJhdGFuKCIsIE5VTEwsICIpIik7IGJyZWFr
OwotCi0gICAgICAgIGNhc2UgRU9wRXhwOiB3cml0ZVRyaXBsZXQodmlzaXQsICJleHAoIiwgTlVM
TCwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wTG9nOiB3cml0ZVRyaXBsZXQodmlzaXQs
ICJsb2coIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRXhwMjogd3JpdGVU
cmlwbGV0KHZpc2l0LCAiZXhwMigiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBF
T3BMb2cyOiB3cml0ZVRyaXBsZXQodmlzaXQsICJsb2cyKCIsIE5VTEwsICIpIik7IGJyZWFrOwot
ICAgICAgICBjYXNlIEVPcFNxcnQ6IHdyaXRlVHJpcGxldCh2aXNpdCwgInNxcnQoIiwgTlVMTCwg
IikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wSW52ZXJzZVNxcnQ6IHdyaXRlVHJpcGxldCh2
aXNpdCwgImludmVyc2VzcXJ0KCIsIE5VTEwsICIpIik7IGJyZWFrOwotCi0gICAgICAgIGNhc2Ug
RU9wQWJzOiB3cml0ZVRyaXBsZXQodmlzaXQsICJhYnMoIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRU9wU2lnbjogd3JpdGVUcmlwbGV0KHZpc2l0LCAic2lnbigiLCBOVUxMLCAi
KSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BGbG9vcjogd3JpdGVUcmlwbGV0KHZpc2l0LCAi
Zmxvb3IoIiwgTlVMTCwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wQ2VpbDogd3JpdGVU
cmlwbGV0KHZpc2l0LCAiY2VpbCgiLCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBF
T3BGcmFjdDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiZnJhY3QoIiwgTlVMTCwgIikiKTsgYnJlYWs7
Ci0KLSAgICAgICAgY2FzZSBFT3BMZW5ndGg6IHdyaXRlVHJpcGxldCh2aXNpdCwgImxlbmd0aCgi
LCBOVUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BOb3JtYWxpemU6IHdyaXRlVHJp
cGxldCh2aXNpdCwgIm5vcm1hbGl6ZSgiLCBOVUxMLCAiKSIpOyBicmVhazsKLQotICAgICAgICBj
YXNlIEVPcERGZHg6IHdyaXRlVHJpcGxldCh2aXNpdCwgImRGZHgoIiwgTlVMTCwgIikiKTsgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRU9wREZkeTogd3JpdGVUcmlwbGV0KHZpc2l0LCAiZEZkeSgiLCBO
VUxMLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BGd2lkdGg6IHdyaXRlVHJpcGxldCh2
aXNpdCwgImZ3aWR0aCgiLCBOVUxMLCAiKSIpOyBicmVhazsKLQotICAgICAgICBjYXNlIEVPcEFu
eTogd3JpdGVUcmlwbGV0KHZpc2l0LCAiYW55KCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAg
ICBjYXNlIEVPcEFsbDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiYWxsKCIsIE5VTEwsICIpIik7IGJy
ZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IGJyZWFrOwotICAgIH0KLQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFRPdXRwdXRHTFNMOjp2aXNpdFNlbGVjdGlvbihW
aXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiogbm9kZSkKLXsKLSAgICBUSW5mb1NpbmtCYXNl
JiBvdXQgPSBvYmpTaW5rKCk7Ci0KLSAgICBpZiAobm9kZS0+dXNlc1Rlcm5hcnlPcGVyYXRvcigp
KQotICAgIHsKLSAgICAgICAgLy8gTm90aWNlIHR3byBicmFja2V0cyBhdCB0aGUgYmVnaW5uaW5n
IGFuZCBlbmQuIFRoZSBvdXRlciBvbmVzCi0gICAgICAgIC8vIGVuY2Fwc3VsYXRlIHRoZSB3aG9s
ZSB0ZXJuYXJ5IGV4cHJlc3Npb24uIFRoaXMgcHJlc2VydmVzIHRoZQotICAgICAgICAvLyBvcmRl
ciBvZiBwcmVjZWRlbmNlIHdoZW4gdGVybmFyeSBleHByZXNzaW9ucyBhcmUgdXNlZCBpbiBhCi0g
ICAgICAgIC8vIGNvbXBvdW5kIGV4cHJlc3Npb24sIGkuZS4sIGMgPSAyICogKGEgPCBiID8gMSA6
IDIpLgotICAgICAgICBvdXQgPDwgIigoIjsKLSAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCkt
PnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBvdXQgPDwgIikgPyAoIjsKLSAgICAgICAgbm9kZS0+
Z2V0VHJ1ZUJsb2NrKCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBvdXQgPDwgIikgOiAoIjsK
LSAgICAgICAgbm9kZS0+Z2V0RmFsc2VCbG9jaygpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAg
b3V0IDw8ICIpKSI7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiaWYg
KCI7Ci0gICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAg
ICAgb3V0IDw8ICIpXG4iOwotCi0gICAgICAgIGluY3JlbWVudERlcHRoKCk7Ci0gICAgICAgIHZp
c2l0Q29kZUJsb2NrKG5vZGUtPmdldFRydWVCbG9jaygpKTsKLQotICAgICAgICBpZiAobm9kZS0+
Z2V0RmFsc2VCbG9jaygpKQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImVsc2VcbiI7
Ci0gICAgICAgICAgICB2aXNpdENvZGVCbG9jayhub2RlLT5nZXRGYWxzZUJsb2NrKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIGRlY3JlbWVudERlcHRoKCk7Ci0gICAgfQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotYm9vbCBUT3V0cHV0R0xTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1BZ2dyZWdhdGUqIG5vZGUpCi17Ci0gICAgYm9vbCB2aXNpdENoaWxkcmVuID0gdHJ1ZTsK
LSAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBvYmpTaW5rKCk7Ci0gICAgc3dpdGNoIChub2RlLT5n
ZXRPcCgpKQotICAgIHsKLSAgICAgICAgY2FzZSBFT3BTZXF1ZW5jZTogewotICAgICAgICAgICAg
Ly8gU2NvcGUgdGhlIHNlcXVlbmNlcyBleGNlcHQgd2hlbiBhdCB0aGUgZ2xvYmFsIHNjb3BlLgot
ICAgICAgICAgICAgaWYgKGRlcHRoID4gMCkgb3V0IDw8ICJ7XG4iOwotCi0gICAgICAgICAgICBp
bmNyZW1lbnREZXB0aCgpOwotICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlJiBzZXF1
ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1
ZW5jZTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHNlcXVlbmNlLmJlZ2luKCk7Ci0gICAgICAgICAg
ICAgICAgIGl0ZXIgIT0gc2VxdWVuY2UuZW5kKCk7ICsraXRlcikKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBUSW50ZXJtTm9kZSogbm9kZSA9ICppdGVyOwotICAgICAgICAgICAgICAg
IEFTU0VSVChub2RlICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIG5vZGUtPnRyYXZlcnNlKHRo
aXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKGlzU2luZ2xlU3RhdGVtZW50KG5vZGUpKQotICAg
ICAgICAgICAgICAgICAgICBvdXQgPDwgIjtcbiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBkZWNyZW1lbnREZXB0aCgpOwotCi0gICAgICAgICAgICAvLyBTY29wZSB0aGUgc2VxdWVuY2Vz
IGV4Y2VwdCB3aGVuIGF0IHRoZSBnbG9iYWwgc2NvcGUuCi0gICAgICAgICAgICBpZiAoZGVwdGgg
PiAwKSBvdXQgPDwgIn1cbiI7Ci0gICAgICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEVPcFByb3RvdHlwZTog
ewotICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCi0gICAgICAgICAgICBBU1NF
UlQodmlzaXQgPT0gUHJlVmlzaXQpOwotICAgICAgICAgICAgVFN0cmluZyByZXR1cm5UeXBlID0g
Z2V0VHlwZU5hbWUobm9kZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgIG91dCA8PCByZXR1cm5U
eXBlIDw8ICIgIiA8PCBub2RlLT5nZXROYW1lKCk7Ci0KLSAgICAgICAgICAgIG91dCA8PCAiKCI7
Ci0gICAgICAgICAgICB3cml0ZUZ1bmN0aW9uUGFyYW1ldGVycyhub2RlLT5nZXRTZXF1ZW5jZSgp
KTsKLSAgICAgICAgICAgIG91dCA8PCAiKSI7Ci0KLSAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4g
PSBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRU9w
RnVuY3Rpb246IHsKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCi0gICAgICAg
ICAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOwotICAgICAgICAgICAgVFN0cmluZyByZXR1
cm5UeXBlID0gZ2V0VHlwZU5hbWUobm9kZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgIFRTdHJp
bmcgZnVuY3Rpb25OYW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobm9kZS0+Z2V0TmFtZSgp
KTsKLSAgICAgICAgICAgIG91dCA8PCByZXR1cm5UeXBlIDw8ICIgIiA8PCBmdW5jdGlvbk5hbWU7
Ci0KLSAgICAgICAgICAgIGluY3JlbWVudERlcHRoKCk7Ci0gICAgICAgICAgICAvLyBGdW5jdGlv
biBkZWZpbml0aW9uIG5vZGUgY29udGFpbnMgb25lIG9yIHR3byBjaGlsZHJlbiBub2RlcwotICAg
ICAgICAgICAgLy8gcmVwcmVzZW50aW5nIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIGZ1bmN0aW9u
IGJvZHkuIFRoZSBsYXR0ZXIKLSAgICAgICAgICAgIC8vIGlzIG5vdCBwcmVzZW50IGluIGNhc2Ug
b2YgZW1wdHkgZnVuY3Rpb24gYm9kaWVzLgotICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVl
bmNlJiBzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgICAgICAgICBBU1NFUlQo
KHNlcXVlbmNlLnNpemUoKSA9PSAxKSB8fCAoc2VxdWVuY2Uuc2l6ZSgpID09IDIpKTsKLSAgICAg
ICAgICAgIFRJbnRlcm1TZXF1ZW5jZTo6Y29uc3RfaXRlcmF0b3Igc2VxSXRlciA9IHNlcXVlbmNl
LmJlZ2luKCk7Ci0KLSAgICAgICAgICAgIC8vIFRyYXZlcnNlIGZ1bmN0aW9uIHBhcmFtZXRlcnMu
Ci0gICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlKiBwYXJhbXMgPSAoKnNlcUl0ZXIpLT5nZXRB
c0FnZ3JlZ2F0ZSgpOwotICAgICAgICAgICAgQVNTRVJUKHBhcmFtcyAhPSBOVUxMKTsKLSAgICAg
ICAgICAgIEFTU0VSVChwYXJhbXMtPmdldE9wKCkgPT0gRU9wUGFyYW1ldGVycyk7Ci0gICAgICAg
ICAgICBwYXJhbXMtPnRyYXZlcnNlKHRoaXMpOwotCi0gICAgICAgICAgICAvLyBUcmF2ZXJzZSBm
dW5jdGlvbiBib2R5LgotICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSogYm9keSA9ICsrc2Vx
SXRlciAhPSBzZXF1ZW5jZS5lbmQoKSA/Ci0gICAgICAgICAgICAgICAgKCpzZXFJdGVyKS0+Z2V0
QXNBZ2dyZWdhdGUoKSA6IE5VTEw7Ci0gICAgICAgICAgICB2aXNpdENvZGVCbG9jayhib2R5KTsK
LSAgICAgICAgICAgIGRlY3JlbWVudERlcHRoKCk7Ci0gCi0gICAgICAgICAgICAvLyBGdWxseSBw
cm9jZXNzZWQ7IG5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4uCi0gICAgICAgICAgICB2aXNpdENo
aWxkcmVuID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIEVPcEZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCi0gICAg
ICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgVFN0cmluZyBmdW5jdGlvbk5hbWUgPSBURnVuY3Rpb246OnVubWFuZ2xlTmFtZShub2Rl
LT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgIG91dCA8PCBmdW5jdGlvbk5hbWUgPDwgIigi
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQg
PDwgIikiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
RU9wUGFyYW1ldGVyczogewotICAgICAgICAgICAgLy8gRnVuY3Rpb24gcGFyYW1ldGVycy4KLSAg
ICAgICAgICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7Ci0gICAgICAgICAgICBvdXQgPDwg
IigiOwotICAgICAgICAgICAgd3JpdGVGdW5jdGlvblBhcmFtZXRlcnMobm9kZS0+Z2V0U2VxdWVu
Y2UoKSk7Ci0gICAgICAgICAgICBvdXQgPDwgIikiOwotICAgICAgICAgICAgdmlzaXRDaGlsZHJl
biA9IGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBF
T3BEZWNsYXJhdGlvbjogewotICAgICAgICAgICAgLy8gVmFyaWFibGUgZGVjbGFyYXRpb24uCi0g
ICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlJiBzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVl
bmNlKCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgVEludGVybVR5cGVkKiB2YXJpYWJsZSA9IHNl
cXVlbmNlLmZyb250KCktPmdldEFzVHlwZWQoKTsKLSAgICAgICAgICAgICAgICB3cml0ZVZhcmlh
YmxlVHlwZSh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAi
OwotICAgICAgICAgICAgICAgIG1EZWNsYXJpbmdWYXJpYWJsZXMgPSB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKLSAgICAgICAgICAgICAgICBtRGVjbGFy
aW5nVmFyaWFibGVzID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtRGVjbGFyaW5nVmFyaWFibGVzID0gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIEVPcENvbnN0cnVjdEZsb2F0OiB3cml0ZVRyaXBsZXQodmlzaXQsICJmbG9hdCgiLCBOVUxM
LCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOiB3cml0ZVRyaXBs
ZXQodmlzaXQsICJ2ZWMyKCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcENv
bnN0cnVjdFZlYzM6IHdyaXRlVHJpcGxldCh2aXNpdCwgInZlYzMoIiwgIiwgIiwgIikiKTsgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjNDogd3JpdGVUcmlwbGV0KHZpc2l0LCAi
dmVjNCgiLCAiLCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCb29s
OiB3cml0ZVRyaXBsZXQodmlzaXQsICJib29sKCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdEJWZWMyOiB3cml0ZVRyaXBsZXQodmlzaXQsICJidmVjMigiLCAi
LCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMzogd3JpdGVU
cmlwbGV0KHZpc2l0LCAiYnZlYzMoIiwgIiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0QlZlYzQ6IHdyaXRlVHJpcGxldCh2aXNpdCwgImJ2ZWM0KCIsICIsICIsICIp
Iik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEludDogd3JpdGVUcmlwbGV0KHZp
c2l0LCAiaW50KCIsIE5VTEwsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcENvbnN0cnVj
dElWZWMyOiB3cml0ZVRyaXBsZXQodmlzaXQsICJpdmVjMigiLCAiLCAiLCAiKSIpOyBicmVhazsK
LSAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMzogd3JpdGVUcmlwbGV0KHZpc2l0LCAiaXZl
YzMoIiwgIiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzQ6
IHdyaXRlVHJpcGxldCh2aXNpdCwgIml2ZWM0KCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDI6IHdyaXRlVHJpcGxldCh2aXNpdCwgIm1hdDIoIiwgIiwg
IiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0Mzogd3JpdGVUcmlw
bGV0KHZpc2l0LCAibWF0MygiLCAiLCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RNYXQ0OiB3cml0ZVRyaXBsZXQodmlzaXQsICJtYXQ0KCIsICIsICIsICIpIik7IGJy
ZWFrOwotICAgICAgICBjYXNlIEVPcENvbnN0cnVjdFN0cnVjdDoKLSAgICAgICAgICAgIGlmICh2
aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBU
VHlwZSYgdHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlw
ZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwotICAgICAgICAgICAgICAgIG91dCA8PCB0
eXBlLmdldFR5cGVOYW1lKCkgPDwgIigiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBv
dXQgPDwgIiwgIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIikiOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjogd3JpdGVUcmlwbGV0KHZpc2l0
LCAibGVzc1RoYW4oIiwgIiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wR3JlYXRl
clRoYW46IHdyaXRlVHJpcGxldCh2aXNpdCwgImdyZWF0ZXJUaGFuKCIsICIsICIsICIpIik7IGJy
ZWFrOwotICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6IHdyaXRlVHJpcGxldCh2aXNpdCwg
Imxlc3NUaGFuRXF1YWwoIiwgIiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wR3Jl
YXRlclRoYW5FcXVhbDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiZ3JlYXRlclRoYW5FcXVhbCgiLCAi
LCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BWZWN0b3JFcXVhbDogd3JpdGVUcmlw
bGV0KHZpc2l0LCAiZXF1YWwoIiwgIiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9w
VmVjdG9yTm90RXF1YWw6IHdyaXRlVHJpcGxldCh2aXNpdCwgIm5vdEVxdWFsKCIsICIsICIsICIp
Iik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcENvbW1hOiB3cml0ZVRyaXBsZXQodmlzaXQsIE5V
TEwsICIsICIsIE5VTEwpOyBicmVhazsKLQotICAgICAgICBjYXNlIEVPcE1vZDogd3JpdGVUcmlw
bGV0KHZpc2l0LCAibW9kKCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAgICBjYXNlIEVPcFBv
dzogd3JpdGVUcmlwbGV0KHZpc2l0LCAicG93KCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAg
ICBjYXNlIEVPcEF0YW46IHdyaXRlVHJpcGxldCh2aXNpdCwgImF0YW4oIiwgIiwgIiwgIikiKTsg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wTWluOiB3cml0ZVRyaXBsZXQodmlzaXQsICJtaW4oIiwg
IiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wTWF4OiB3cml0ZVRyaXBsZXQodmlz
aXQsICJtYXgoIiwgIiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wQ2xhbXA6IHdy
aXRlVHJpcGxldCh2aXNpdCwgImNsYW1wKCIsICIsICIsICIpIik7IGJyZWFrOwotICAgICAgICBj
YXNlIEVPcE1peDogd3JpdGVUcmlwbGV0KHZpc2l0LCAibWl4KCIsICIsICIsICIpIik7IGJyZWFr
OwotICAgICAgICBjYXNlIEVPcFN0ZXA6IHdyaXRlVHJpcGxldCh2aXNpdCwgInN0ZXAoIiwgIiwg
IiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wU21vb3RoU3RlcDogd3JpdGVUcmlwbGV0
KHZpc2l0LCAic21vb3Roc3RlcCgiLCAiLCAiLCAiKSIpOyBicmVhazsKLQotICAgICAgICBjYXNl
IEVPcERpc3RhbmNlOiB3cml0ZVRyaXBsZXQodmlzaXQsICJkaXN0YW5jZSgiLCAiLCAiLCAiKSIp
OyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BEb3Q6IHdyaXRlVHJpcGxldCh2aXNpdCwgImRvdCgi
LCAiLCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BDcm9zczogd3JpdGVUcmlwbGV0
KHZpc2l0LCAiY3Jvc3MoIiwgIiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRmFj
ZUZvcndhcmQ6IHdyaXRlVHJpcGxldCh2aXNpdCwgImZhY2Vmb3J3YXJkKCIsICIsICIsICIpIik7
IGJyZWFrOwotICAgICAgICBjYXNlIEVPcFJlZmxlY3Q6IHdyaXRlVHJpcGxldCh2aXNpdCwgInJl
ZmxlY3QoIiwgIiwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wUmVmcmFjdDogd3Jp
dGVUcmlwbGV0KHZpc2l0LCAicmVmcmFjdCgiLCAiLCAiLCAiKSIpOyBicmVhazsKLSAgICAgICAg
Y2FzZSBFT3BNdWw6IHdyaXRlVHJpcGxldCh2aXNpdCwgIm1hdHJpeENvbXBNdWx0KCIsICIsICIs
ICIpIik7IGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IGJyZWFrOwot
ICAgIH0KLSAgICByZXR1cm4gdmlzaXRDaGlsZHJlbjsKLX0KLQotYm9vbCBUT3V0cHV0R0xTTDo6
dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCogbm9kZSkKLXsKLSAgICBUSW5mb1Np
bmtCYXNlJiBvdXQgPSBvYmpTaW5rKCk7Ci0KLSAgICBpbmNyZW1lbnREZXB0aCgpOwotICAgIC8v
IExvb3AgaGVhZGVyLgotICAgIFRMb29wVHlwZSBsb29wVHlwZSA9IG5vZGUtPmdldFR5cGUoKTsK
LSAgICBpZiAobG9vcFR5cGUgPT0gRUxvb3BGb3IpICAvLyBmb3IgbG9vcAotICAgIHsKLSAgICAg
ICAgb3V0IDw8ICJmb3IgKCI7Ci0gICAgICAgIGlmIChub2RlLT5nZXRJbml0KCkpCi0gICAgICAg
ICAgICBub2RlLT5nZXRJbml0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBvdXQgPDwgIjsg
IjsKLQotICAgICAgICBpZiAobm9kZS0+Z2V0Q29uZGl0aW9uKCkpCi0gICAgICAgICAgICBub2Rl
LT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgIG91dCA8PCAiOyAiOwot
Ci0gICAgICAgIGlmIChub2RlLT5nZXRFeHByZXNzaW9uKCkpCi0gICAgICAgICAgICBub2RlLT5n
ZXRFeHByZXNzaW9uKCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBvdXQgPDwgIilcbiI7Ci0g
ICAgfQotICAgIGVsc2UgaWYgKGxvb3BUeXBlID09IEVMb29wV2hpbGUpICAvLyB3aGlsZSBsb29w
Ci0gICAgewotICAgICAgICBvdXQgPDwgIndoaWxlICgiOwotICAgICAgICBBU1NFUlQobm9kZS0+
Z2V0Q29uZGl0aW9uKCkgIT0gTlVMTCk7Ci0gICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50
cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgb3V0IDw8ICIpXG4iOwotICAgIH0KLSAgICBlbHNlICAv
LyBkby13aGlsZSBsb29wCi0gICAgewotICAgICAgICBBU1NFUlQobG9vcFR5cGUgPT0gRUxvb3BE
b1doaWxlKTsKLSAgICAgICAgb3V0IDw8ICJkb1xuIjsKLSAgICB9Ci0KLSAgICAvLyBMb29wIGJv
ZHkuCi0gICAgdmlzaXRDb2RlQmxvY2sobm9kZS0+Z2V0Qm9keSgpKTsKLQotICAgIC8vIExvb3Ag
Zm9vdGVyLgotICAgIGlmIChsb29wVHlwZSA9PSBFTG9vcERvV2hpbGUpICAvLyBkby13aGlsZSBs
b29wCi0gICAgewotICAgICAgICBvdXQgPDwgIndoaWxlICgiOwotICAgICAgICBBU1NFUlQobm9k
ZS0+Z2V0Q29uZGl0aW9uKCkgIT0gTlVMTCk7Ci0gICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigp
LT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgb3V0IDw8ICIpO1xuIjsKLSAgICB9Ci0gICAgZGVj
cmVtZW50RGVwdGgoKTsKLQotICAgIC8vIE5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4uIFRoZXkg
aGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkIGluCi0gICAgLy8gdGhpcyBmdW5jdGlvbi4KICAg
ICByZXR1cm4gZmFsc2U7CiB9Ci0KLWJvb2wgVE91dHB1dEdMU0w6OnZpc2l0QnJhbmNoKFZpc2l0
IHZpc2l0LCBUSW50ZXJtQnJhbmNoKiBub2RlKQotewotICAgIHN3aXRjaCAobm9kZS0+Z2V0Rmxv
d09wKCkpCi0gICAgewotICAgICAgICBjYXNlIEVPcEtpbGw6IHdyaXRlVHJpcGxldCh2aXNpdCwg
ImRpc2NhcmQiLCBOVUxMLCBOVUxMKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wQnJlYWs6IHdy
aXRlVHJpcGxldCh2aXNpdCwgImJyZWFrIiwgTlVMTCwgTlVMTCk7IGJyZWFrOwotICAgICAgICBj
YXNlIEVPcENvbnRpbnVlOiB3cml0ZVRyaXBsZXQodmlzaXQsICJjb250aW51ZSIsIE5VTEwsIE5V
TEwpOyBicmVhazsKLSAgICAgICAgY2FzZSBFT3BSZXR1cm46IHdyaXRlVHJpcGxldCh2aXNpdCwg
InJldHVybiAiLCBOVUxMLCBOVUxMKTsgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7IGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFRPdXRw
dXRHTFNMOjp2aXNpdENvZGVCbG9jayhUSW50ZXJtTm9kZSogbm9kZSkgewotICAgIFRJbmZvU2lu
a0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKLSAgICBpZiAobm9kZSAhPSBOVUxMKQotICAgIHsKLSAg
ICAgICAgbm9kZS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgIC8vIFNpbmdsZSBzdGF0ZW1lbnRz
IG5vdCBwYXJ0IG9mIGEgc2VxdWVuY2UgbmVlZCB0byBiZSB0ZXJtaW5hdGVkCi0gICAgICAgIC8v
IHdpdGggc2VtaS1jb2xvbi4KLSAgICAgICAgaWYgKGlzU2luZ2xlU3RhdGVtZW50KG5vZGUpKQot
ICAgICAgICAgICAgb3V0IDw8ICI7XG4iOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAg
ICBvdXQgPDwgIntcbn1cbiI7ICAvLyBFbXB0eSBjb2RlIGJsb2NrLgotICAgIH0KLX0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wu
aAkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvT3V0cHV0R0xTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC03LDQzICs3LDE1IEBACiAjaWZuZGVmIENS
T1NTQ09NUElMRVJHTFNMX09VVFBVVEdMU0xfSF8KICNkZWZpbmUgQ1JPU1NDT01QSUxFUkdMU0xf
T1VUUFVUR0xTTF9IXwogCi0jaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgImNvbXBpbGVyL091dHB1
dEdMU0xCYXNlLmgiCiAKLSNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKLSNpbmNs
dWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgotCi1jbGFzcyBUT3V0cHV0R0xTTCA6IHB1Ymxp
YyBUSW50ZXJtVHJhdmVyc2VyCitjbGFzcyBUT3V0cHV0R0xTTCA6IHB1YmxpYyBUT3V0cHV0R0xT
TEJhc2UKIHsKIHB1YmxpYzoKICAgICBUT3V0cHV0R0xTTChUSW5mb1NpbmtCYXNlJiBvYmpTaW5r
KTsKIAogcHJvdGVjdGVkOgotICAgIFRJbmZvU2lua0Jhc2UmIG9ialNpbmsoKSB7IHJldHVybiBt
T2JqU2luazsgfQotICAgIHZvaWQgd3JpdGVUcmlwbGV0KFZpc2l0IHZpc2l0LCBjb25zdCBjaGFy
KiBwcmVTdHIsIGNvbnN0IGNoYXIqIGluU3RyLCBjb25zdCBjaGFyKiBwb3N0U3RyKTsKLSAgICB2
b2lkIHdyaXRlVmFyaWFibGVUeXBlKGNvbnN0IFRUeXBlJiB0eXBlKTsKLSAgICB2b2lkIHdyaXRl
RnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSYgYXJncyk7Ci0gICAgY29u
c3QgQ29uc3RhbnRVbmlvbiogd3JpdGVDb25zdGFudFVuaW9uKGNvbnN0IFRUeXBlJiB0eXBlLCBj
b25zdCBDb25zdGFudFVuaW9uKiBwQ29uc3RVbmlvbik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRTeW1ib2woVEludGVybVN5bWJvbCogbm9kZSk7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q29u
c3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSk7Ci0gICAgdmlydHVhbCBib29s
IHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5KiBub2RlKTsKLSAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5KiBub2RlKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rp
b24qIG5vZGUpOwotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwg
VEludGVybUFnZ3JlZ2F0ZSogbm9kZSk7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNp
dCB2aXNpdCwgVEludGVybUxvb3AqIG5vZGUpOwotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJyYW5j
aChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCogbm9kZSk7Ci0KLSAgICB2b2lkIHZpc2l0Q29k
ZUJsb2NrKFRJbnRlcm1Ob2RlKiBub2RlKTsKLQotcHJpdmF0ZToKLSAgICBUSW5mb1NpbmtCYXNl
JiBtT2JqU2luazsKLSAgICBib29sIG1EZWNsYXJpbmdWYXJpYWJsZXM7Ci0KLSAgICAvLyBTdHJ1
Y3RzIGFyZSBkZWNsYXJlZCBhcyB0aGUgdHJlZSBpcyB0cmF2ZXJzZWQuIFRoaXMgc2V0IGNvbnRh
aW5zIGFsbAotICAgIC8vIHRoZSBzdHJ1Y3RzIGFscmVhZHkgZGVjbGFyZWQuIEl0IGlzIG1haW50
YWluZWQgc28gdGhhdCBhIHN0cnVjdCBpcwotICAgIC8vIGRlY2xhcmVkIG9ubHkgb25jZS4KLSAg
ICB0eXBlZGVmIHN0ZDo6c2V0PFRTdHJpbmc+IERlY2xhcmVkU3RydWN0czsKLSAgICBEZWNsYXJl
ZFN0cnVjdHMgbURlY2xhcmVkU3RydWN0czsKKyAgICB2aXJ0dWFsIGJvb2wgd3JpdGVWYXJpYWJs
ZVByZWNpc2lvbihUUHJlY2lzaW9uKTsKIH07CiAKICNlbmRpZiAgLy8gQ1JPU1NDT01QSUxFUkdM
U0xfT1VUUFVUR0xTTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL091dHB1dEdMU0xCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3MDcgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRl
ICJjb21waWxlci9PdXRwdXRHTFNMQmFzZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgi
CisKK25hbWVzcGFjZQoreworVFN0cmluZyBnZXRUeXBlTmFtZShjb25zdCBUVHlwZSYgdHlwZSkK
K3sKKyAgICBUSW5mb1NpbmtCYXNlIG91dDsKKyAgICBpZiAodHlwZS5pc01hdHJpeCgpKQorICAg
IHsKKyAgICAgICAgb3V0IDw8ICJtYXQiOworICAgICAgICBvdXQgPDwgdHlwZS5nZXROb21pbmFs
U2l6ZSgpOworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlLmlzVmVjdG9yKCkpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKHR5cGUuZ2V0QmFzaWNUeXBlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNhc2UgRWJ0RmxvYXQ6IG91dCA8PCAidmVjIjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVi
dEludDogb3V0IDw8ICJpdmVjIjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVidEJvb2w6IG91
dCA8PCAiYnZlYyI7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgb3V0IDw8IHR5cGUuZ2V0Tm9taW5hbFNpemUoKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0U3RydWN0KQorICAgICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0VHlwZU5hbWUoKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0QmFzaWNTdHJpbmcoKTsKKyAg
ICB9CisgICAgcmV0dXJuIFRTdHJpbmcob3V0LmNfc3RyKCkpOworfQorCitUU3RyaW5nIGFycmF5
QnJhY2tldHMoY29uc3QgVFR5cGUmIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUuaXNBcnJheSgp
KTsKKyAgICBUSW5mb1NpbmtCYXNlIG91dDsKKyAgICBvdXQgPDwgIlsiIDw8IHR5cGUuZ2V0QXJy
YXlTaXplKCkgPDwgIl0iOworICAgIHJldHVybiBUU3RyaW5nKG91dC5jX3N0cigpKTsKK30KKwor
Ym9vbCBpc1NpbmdsZVN0YXRlbWVudChUSW50ZXJtTm9kZSogbm9kZSkgeworICAgIGlmIChjb25z
dCBUSW50ZXJtQWdncmVnYXRlKiBhZ2dyZWdhdGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIChhZ2dyZWdhdGUtPmdldE9wKCkgIT0gRU9wRnVuY3Rpb24p
ICYmCisgICAgICAgICAgICAgICAoYWdncmVnYXRlLT5nZXRPcCgpICE9IEVPcFNlcXVlbmNlKTsK
KyAgICB9CisgICAgZWxzZSBpZiAoY29uc3QgVEludGVybVNlbGVjdGlvbiogc2VsZWN0aW9uID0g
bm9kZS0+Z2V0QXNTZWxlY3Rpb25Ob2RlKCkpCisgICAgeworICAgICAgICAvLyBUZXJuYXJ5IG9w
ZXJhdG9ycyBhcmUgdXN1YWxseSBwYXJ0IG9mIGFuIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAg
ICAgIC8vIFRoaXMgaGFuZGxlcyB0aG9zZSByYXJlIGNhc2VzIGluIHdoaWNoIHRoZXkgYXJlIGFs
bCBieSB0aGVtc2VsdmVzLgorICAgICAgICByZXR1cm4gc2VsZWN0aW9uLT51c2VzVGVybmFyeU9w
ZXJhdG9yKCk7CisgICAgfQorICAgIGVsc2UgaWYgKG5vZGUtPmdldEFzTG9vcE5vZGUoKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9Cit9
ICAvLyBuYW1lc3BhY2UKKworVE91dHB1dEdMU0xCYXNlOjpUT3V0cHV0R0xTTEJhc2UoVEluZm9T
aW5rQmFzZSYgb2JqU2luaykKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgdHJ1ZSwgdHJ1
ZSksCisgICAgICBtT2JqU2luayhvYmpTaW5rKSwKKyAgICAgIG1EZWNsYXJpbmdWYXJpYWJsZXMo
ZmFsc2UpCit7Cit9CisKK3ZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZVRyaXBsZXQoVmlzaXQg
dmlzaXQsIGNvbnN0IGNoYXIqIHByZVN0ciwgY29uc3QgY2hhciogaW5TdHIsIGNvbnN0IGNoYXIq
IHBvc3RTdHIpCit7CisgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2luaygpOworICAgIGlm
ICh2aXNpdCA9PSBQcmVWaXNpdCAmJiBwcmVTdHIpCisgICAgeworICAgICAgICBvdXQgPDwgcHJl
U3RyOworICAgIH0KKyAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0ICYmIGluU3RyKQorICAg
IHsKKyAgICAgICAgb3V0IDw8IGluU3RyOworICAgIH0KKyAgICBlbHNlIGlmICh2aXNpdCA9PSBQ
b3N0VmlzaXQgJiYgcG9zdFN0cikKKyAgICB7CisgICAgICAgIG91dCA8PCBwb3N0U3RyOworICAg
IH0KK30KKwordm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlVmFyaWFibGVUeXBlKGNvbnN0IFRU
eXBlJiB0eXBlKQoreworICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKyAgICBU
UXVhbGlmaWVyIHF1YWxpZmllciA9IHR5cGUuZ2V0UXVhbGlmaWVyKCk7CisgICAgLy8gVE9ETyhh
bG9rcCk6IFZhbGlkYXRlIHF1YWxpZmllciBmb3IgdmFyaWFibGUgZGVjbGFyYXRpb25zLgorICAg
IGlmICgocXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgJiYgKHF1YWxpZmllciAhPSBFdnFHbG9i
YWwpKQorICAgICAgICBvdXQgPDwgdHlwZS5nZXRRdWFsaWZpZXJTdHJpbmcoKSA8PCAiICI7Cisg
ICAgLy8gRGVjbGFyZSB0aGUgc3RydWN0IGlmIHdlIGhhdmUgbm90IGRvbmUgc28gYWxyZWFkeS4K
KyAgICBpZiAoKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSAmJgorICAgICAgICAo
bURlY2xhcmVkU3RydWN0cy5maW5kKHR5cGUuZ2V0VHlwZU5hbWUoKSkgPT0gbURlY2xhcmVkU3Ry
dWN0cy5lbmQoKSkpCisgICAgeworICAgICAgICBvdXQgPDwgInN0cnVjdCAiIDw8IHR5cGUuZ2V0
VHlwZU5hbWUoKSA8PCAie1xuIjsKKyAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBzdHJ1Y3R1cmUg
PSB0eXBlLmdldFN0cnVjdCgpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IE5VTEwpOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVy
ZSlbaV0udHlwZTsKKyAgICAgICAgICAgIEFTU0VSVChmaWVsZFR5cGUgIT0gTlVMTCk7CisgICAg
ICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZFR5cGUtPmdldFByZWNpc2lv
bigpKSkKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAiOworICAgICAgICAgICAgb3V0IDw8IGdl
dFR5cGVOYW1lKCpmaWVsZFR5cGUpIDw8ICIgIiA8PCBmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgp
OworICAgICAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpKQorICAgICAgICAgICAgICAg
IG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZFR5cGUpOworICAgICAgICAgICAgb3V0IDw8ICI7
XG4iOworICAgICAgICB9CisgICAgICAgIG91dCA8PCAifSI7CisgICAgICAgIG1EZWNsYXJlZFN0
cnVjdHMuaW5zZXJ0KHR5cGUuZ2V0VHlwZU5hbWUoKSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIGlmICh3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKHR5cGUuZ2V0UHJlY2lzaW9uKCkp
KQorICAgICAgICAgICAgb3V0IDw8ICIgIjsKKyAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1lKHR5
cGUpOworICAgIH0KK30KKwordm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlRnVuY3Rpb25QYXJh
bWV0ZXJzKGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSYgYXJncykKK3sKKyAgICBUSW5mb1NpbmtCYXNl
JiBvdXQgPSBvYmpTaW5rKCk7CisgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBhcmdzLmJlZ2luKCk7CisgICAgICAgICBpdGVyICE9IGFyZ3MuZW5kKCk7ICsr
aXRlcikKKyAgICB7CisgICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wqIGFyZyA9ICgqaXRlcikt
PmdldEFzU3ltYm9sTm9kZSgpOworICAgICAgICBBU1NFUlQoYXJnICE9IE5VTEwpOworCisgICAg
ICAgIGNvbnN0IFRUeXBlJiB0eXBlID0gYXJnLT5nZXRUeXBlKCk7CisgICAgICAgIHdyaXRlVmFy
aWFibGVUeXBlKHR5cGUpOworCisgICAgICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUgPSBhcmctPmdl
dFN5bWJvbCgpOworICAgICAgICBpZiAoIW5hbWUuZW1wdHkoKSkKKyAgICAgICAgICAgIG91dCA8
PCAiICIgPDwgbmFtZTsKKyAgICAgICAgaWYgKHR5cGUuaXNBcnJheSgpKQorICAgICAgICAgICAg
b3V0IDw8IGFycmF5QnJhY2tldHModHlwZSk7CisKKyAgICAgICAgLy8gUHV0IGEgY29tbWEgaWYg
dGhpcyBpcyBub3QgdGhlIGxhc3QgYXJndW1lbnQuCisgICAgICAgIGlmIChpdGVyICE9IGFyZ3Mu
ZW5kKCkgLSAxKQorICAgICAgICAgICAgb3V0IDw8ICIsICI7CisgICAgfQorfQorCitjb25zdCBD
b25zdGFudFVuaW9uKiBUT3V0cHV0R0xTTEJhc2U6OndyaXRlQ29uc3RhbnRVbmlvbihjb25zdCBU
VHlwZSYgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvbnN0YW50VW5pb24qIHBDb25zdFVuaW9uKQoreworICAgIFRJ
bmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKworICAgIGlmICh0eXBlLmdldEJhc2ljVHlw
ZSgpID09IEVidFN0cnVjdCkKKyAgICB7CisgICAgICAgIG91dCA8PCB0eXBlLmdldFR5cGVOYW1l
KCkgPDwgIigiOworICAgICAgICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0
U3RydWN0KCk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkKKyAgICAgICAgewor
ICAgICAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBl
OworICAgICAgICAgICAgQVNTRVJUKGZpZWxkVHlwZSAhPSBOVUxMKTsKKyAgICAgICAgICAgIHBD
b25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUsIHBDb25zdFVuaW9uKTsK
KyAgICAgICAgICAgIGlmIChpICE9IHN0cnVjdHVyZS0+c2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7
CisgICAgICAgIH0KKyAgICAgICAgb3V0IDw8ICIpIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgaW50IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgYm9vbCB3
cml0ZVR5cGUgPSBzaXplID4gMTsKKyAgICAgICAgaWYgKHdyaXRlVHlwZSkgb3V0IDw8IGdldFR5
cGVOYW1lKHR5cGUpIDw8ICIoIjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyAr
K2ksICsrcENvbnN0VW5pb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAocENvbnN0
VW5pb24tPmdldFR5cGUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEVi
dEZsb2F0OiBvdXQgPDwgcENvbnN0VW5pb24tPmdldEZDb25zdCgpOyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIEVidEludDogb3V0IDw8IHBDb25zdFVuaW9uLT5nZXRJQ29uc3QoKTsgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiBvdXQgPDwgcENvbnN0VW5pb24tPmdl
dEJDb25zdCgpOyBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGkgIT0gc2l6ZSAtIDEpIG91dCA8PCAi
LCAiOworICAgICAgICB9CisgICAgICAgIGlmICh3cml0ZVR5cGUpIG91dCA8PCAiKSI7CisgICAg
fQorICAgIHJldHVybiBwQ29uc3RVbmlvbjsKK30KKwordm9pZCBUT3V0cHV0R0xTTEJhc2U6OnZp
c2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSYgb3V0
ID0gb2JqU2luaygpOworICAgIGlmIChtTG9vcFVucm9sbC5OZWVkc1RvUmVwbGFjZVN5bWJvbFdp
dGhWYWx1ZShub2RlKSkKKyAgICAgICAgb3V0IDw8IG1Mb29wVW5yb2xsLkdldExvb3BJbmRleFZh
bHVlKG5vZGUpOworICAgIGVsc2UKKyAgICAgICAgb3V0IDw8IG5vZGUtPmdldFN5bWJvbCgpOwor
CisgICAgaWYgKG1EZWNsYXJpbmdWYXJpYWJsZXMgJiYgbm9kZS0+Z2V0VHlwZSgpLmlzQXJyYXko
KSkKKyAgICAgICAgb3V0IDw8IGFycmF5QnJhY2tldHMobm9kZS0+Z2V0VHlwZSgpKTsKK30KKwor
dm9pZCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRV
bmlvbiogbm9kZSkKK3sKKyAgICB3cml0ZUNvbnN0YW50VW5pb24obm9kZS0+Z2V0VHlwZSgpLCBu
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKK30KKworYm9vbCBUT3V0cHV0R0xTTEJhc2U6
OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5KiBub2RlKQoreworICAgIGJv
b2wgdmlzaXRDaGlsZHJlbiA9IHRydWU7CisgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2lu
aygpOworICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICB7CisgICAgICAgIGNhc2UgRU9w
SW5pdGlhbGl6ZToKKyAgICAgICAgICAgIGlmICh2aXNpdCA9PSBJblZpc2l0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiID0gIjsKKyAgICAgICAgICAgICAgICAvLyBS
SFMgb2YgaW5pdGlhbGl6ZSBpcyBub3QgYmVpbmcgZGVjbGFyZWQuCisgICAgICAgICAgICAgICAg
bURlY2xhcmluZ1ZhcmlhYmxlcyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wQXNzaWduOiB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwg
IiA9ICIsICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcEFkZEFzc2lnbjogd3JpdGVUcmlw
bGV0KHZpc2l0LCAiKCIsICIgKz0gIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wU3Vi
QXNzaWduOiB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAtPSAiLCAiKSIpOyBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BEaXZBc3NpZ246IHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIC89ICIs
ICIpIik7IGJyZWFrOworICAgICAgICAvLyBOb3RpY2UgdGhlIGZhbGwtdGhyb3VnaC4KKyAgICAg
ICAgY2FzZSBFT3BNdWxBc3NpZ246IAorICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4
QXNzaWduOgorICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOgorICAgICAg
ICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOgorICAgICAgICBjYXNlIEVPcE1hdHJp
eFRpbWVzTWF0cml4QXNzaWduOgorICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIs
ICIgKj0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRU9wSW5k
ZXhEaXJlY3Q6CisgICAgICAgIGNhc2UgRU9wSW5kZXhJbmRpcmVjdDoKKyAgICAgICAgICAgIHdy
aXRlVHJpcGxldCh2aXNpdCwgTlVMTCwgIlsiLCAiXSIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CisgICAgICAgICAgICBpZiAodmlzaXQg
PT0gSW5WaXNpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi4iOwor
ICAgICAgICAgICAgICAgIC8vIFRPRE8oYWxva3ApOiBBU1NFUlQKKyAgICAgICAgICAgICAgICBv
dXQgPDwgbm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpOworICAgICAgICAgICAgICAgIHZp
c2l0Q2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcFZlY3RvclN3aXp6bGU6CisgICAgICAgICAgICBpZiAodmlzaXQgPT0g
SW5WaXNpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi4iOworICAg
ICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUqIHJpZ2h0Q2hpbGQgPSBub2RlLT5nZXRSaWdo
dCgpLT5nZXRBc0FnZ3JlZ2F0ZSgpOworICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSYg
c2VxdWVuY2UgPSByaWdodENoaWxkLT5nZXRTZXF1ZW5jZSgpOworICAgICAgICAgICAgICAgIGZv
ciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBzaXQgPSBzZXF1ZW5jZS5iZWdpbigpOyBzaXQg
IT0gc2VxdWVuY2UuZW5kKCk7ICsrc2l0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24qIGVsZW1lbnQgPSAoKnNpdCktPmdldEFzQ29u
c3RhbnRVbmlvbigpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudC0+Z2V0QmFz
aWNUeXBlKCkgPT0gRWJ0SW50KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQt
PmdldE5vbWluYWxTaXplKCkgPT0gMSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnN0
YW50VW5pb24mIGRhdGEgPSBlbGVtZW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpWzBdOworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoZGF0YS5nZXRUeXBlKCkgPT0gRWJ0SW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLmdldElDb25zdCgpKQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IG91dCA8PCAieCI7IGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiBvdXQgPDwgInkiOyBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogb3V0IDw8ICJ6IjsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIDM6IG91dCA8PCAidyI7IGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmlzaXRDaGlsZHJl
biA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBFT3BBZGQ6IHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiICsgIiwgIikiKTsgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wU3ViOiB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAtICIsICIp
Iik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcE11bDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIs
ICIgKiAiLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BEaXY6IHdyaXRlVHJpcGxldCh2
aXNpdCwgIigiLCAiIC8gIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTW9kOiBVTklN
UExFTUVOVEVEKCk7IGJyZWFrOworICAgICAgICBjYXNlIEVPcEVxdWFsOiB3cml0ZVRyaXBsZXQo
dmlzaXQsICIoIiwgIiA9PSAiLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BOb3RFcXVh
bDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgIT0gIiwgIikiKTsgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wTGVzc1RoYW46IHdyaXRlVHJpcGxldCh2aXNpdCwgIigiLCAiIDwgIiwgIikiKTsg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46IHdyaXRlVHJpcGxldCh2aXNpdCwg
IigiLCAiID4gIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDog
d3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgPD0gIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wR3JlYXRlclRoYW5FcXVhbDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgPj0gIiwg
IikiKTsgYnJlYWs7CisKKyAgICAgICAgLy8gTm90aWNlIHRoZSBmYWxsLXRocm91Z2guCisgICAg
ICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6CisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGlt
ZXNNYXRyaXg6CisgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNWZWN0b3I6CisgICAgICAgIGNh
c2UgRU9wTWF0cml4VGltZXNTY2FsYXI6CisgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRy
aXg6CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgIiAqICIsICIpIik7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjogd3JpdGVUcmlw
bGV0KHZpc2l0LCAiKCIsICIgfHwgIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9n
aWNhbFhvcjogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgXl4gIiwgIikiKTsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKCIsICIgJiYg
IiwgIikiKTsgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IGJyZWFrOwor
ICAgIH0KKworICAgIHJldHVybiB2aXNpdENoaWxkcmVuOworfQorCitib29sIFRPdXRwdXRHTFNM
QmFzZTo6dmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5KiBub2RlKQoreworICAg
IHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICB7CisgICAgICAgIGNhc2UgRU9wTmVnYXRpdmU6
IHdyaXRlVHJpcGxldCh2aXNpdCwgIigtIiwgTlVMTCwgIikiKTsgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wVmVjdG9yTG9naWNhbE5vdDogd3JpdGVUcmlwbGV0KHZpc2l0LCAibm90KCIsIE5VTEws
ICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6IHdyaXRlVHJpcGxldCh2
aXNpdCwgIighIiwgTlVMTCwgIikiKTsgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFT3BQb3N0SW5j
cmVtZW50OiB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgTlVMTCwgIisrKSIpOyBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BQb3N0RGVjcmVtZW50OiB3cml0ZVRyaXBsZXQodmlzaXQsICIoIiwgTlVM
TCwgIi0tKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BQcmVJbmNyZW1lbnQ6IHdyaXRlVHJp
cGxldCh2aXNpdCwgIigrKyIsIE5VTEwsICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcFBy
ZURlY3JlbWVudDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiKC0tIiwgTlVMTCwgIikiKTsgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBFT3BDb252SW50VG9Cb29sOgorICAgICAgICBjYXNlIEVPcENvbnZG
bG9hdFRvQm9vbDoKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0T3BlcmFuZCgpLT5nZXRU
eXBlKCkuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
YXNlIDE6IHdyaXRlVHJpcGxldCh2aXNpdCwgImJvb2woIiwgTlVMTCwgIikiKTsgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgMjogd3JpdGVUcmlwbGV0KHZpc2l0LCAiYnZlYzIoIiwgTlVM
TCwgIikiKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiB3cml0ZVRyaXBsZXQodmlz
aXQsICJidmVjMygiLCBOVUxMLCAiKSIpOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6
IHdyaXRlVHJpcGxldCh2aXNpdCwgImJ2ZWM0KCIsIE5VTEwsICIpIik7IGJyZWFrOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb252Qm9vbFRvRmxvYXQ6CisgICAgICAgIGNh
c2UgRU9wQ29udkludFRvRmxvYXQ6CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wZXJh
bmQoKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY2FzZSAxOiB3cml0ZVRyaXBsZXQodmlzaXQsICJmbG9hdCgiLCBOVUxMLCAiKSIp
OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOiB3cml0ZVRyaXBsZXQodmlzaXQsICJ2
ZWMyKCIsIE5VTEwsICIpIik7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogd3JpdGVU
cmlwbGV0KHZpc2l0LCAidmVjMygiLCBOVUxMLCAiKSIpOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDQ6IHdyaXRlVHJpcGxldCh2aXNpdCwgInZlYzQoIiwgTlVMTCwgIikiKTsgYnJlYWs7
CisgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcENvbnZGbG9hdFRvSW50OgorICAg
ICAgICBjYXNlIEVPcENvbnZCb29sVG9JbnQ6CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdl
dE9wZXJhbmQoKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSAxOiB3cml0ZVRyaXBsZXQodmlzaXQsICJpbnQoIiwgTlVMTCwg
IikiKTsgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogd3JpdGVUcmlwbGV0KHZpc2l0
LCAiaXZlYzIoIiwgTlVMTCwgIikiKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiB3
cml0ZVRyaXBsZXQodmlzaXQsICJpdmVjMygiLCBOVUxMLCAiKSIpOyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDQ6IHdyaXRlVHJpcGxldCh2aXNpdCwgIml2ZWM0KCIsIE5VTEwsICIpIik7
IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVPcFJhZGlhbnM6IHdy
aXRlVHJpcGxldCh2aXNpdCwgInJhZGlhbnMoIiwgTlVMTCwgIikiKTsgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wRGVncmVlczogd3JpdGVUcmlwbGV0KHZpc2l0LCAiZGVncmVlcygiLCBOVUxMLCAi
KSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BTaW46IHdyaXRlVHJpcGxldCh2aXNpdCwgInNp
bigiLCBOVUxMLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb3M6IHdyaXRlVHJpcGxl
dCh2aXNpdCwgImNvcygiLCBOVUxMLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BUYW46
IHdyaXRlVHJpcGxldCh2aXNpdCwgInRhbigiLCBOVUxMLCAiKSIpOyBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BBc2luOiB3cml0ZVRyaXBsZXQodmlzaXQsICJhc2luKCIsIE5VTEwsICIpIik7IGJy
ZWFrOworICAgICAgICBjYXNlIEVPcEFjb3M6IHdyaXRlVHJpcGxldCh2aXNpdCwgImFjb3MoIiwg
TlVMTCwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQXRhbjogd3JpdGVUcmlwbGV0KHZp
c2l0LCAiYXRhbigiLCBOVUxMLCAiKSIpOyBicmVhazsKKworICAgICAgICBjYXNlIEVPcEV4cDog
d3JpdGVUcmlwbGV0KHZpc2l0LCAiZXhwKCIsIE5VTEwsICIpIik7IGJyZWFrOworICAgICAgICBj
YXNlIEVPcExvZzogd3JpdGVUcmlwbGV0KHZpc2l0LCAibG9nKCIsIE5VTEwsICIpIik7IGJyZWFr
OworICAgICAgICBjYXNlIEVPcEV4cDI6IHdyaXRlVHJpcGxldCh2aXNpdCwgImV4cDIoIiwgTlVM
TCwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9nMjogd3JpdGVUcmlwbGV0KHZpc2l0
LCAibG9nMigiLCBOVUxMLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BTcXJ0OiB3cml0
ZVRyaXBsZXQodmlzaXQsICJzcXJ0KCIsIE5VTEwsICIpIik7IGJyZWFrOworICAgICAgICBjYXNl
IEVPcEludmVyc2VTcXJ0OiB3cml0ZVRyaXBsZXQodmlzaXQsICJpbnZlcnNlc3FydCgiLCBOVUxM
LCAiKSIpOyBicmVhazsKKworICAgICAgICBjYXNlIEVPcEFiczogd3JpdGVUcmlwbGV0KHZpc2l0
LCAiYWJzKCIsIE5VTEwsICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcFNpZ246IHdyaXRl
VHJpcGxldCh2aXNpdCwgInNpZ24oIiwgTlVMTCwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wRmxvb3I6IHdyaXRlVHJpcGxldCh2aXNpdCwgImZsb29yKCIsIE5VTEwsICIpIik7IGJyZWFr
OworICAgICAgICBjYXNlIEVPcENlaWw6IHdyaXRlVHJpcGxldCh2aXNpdCwgImNlaWwoIiwgTlVM
TCwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wRnJhY3Q6IHdyaXRlVHJpcGxldCh2aXNp
dCwgImZyYWN0KCIsIE5VTEwsICIpIik7IGJyZWFrOworCisgICAgICAgIGNhc2UgRU9wTGVuZ3Ro
OiB3cml0ZVRyaXBsZXQodmlzaXQsICJsZW5ndGgoIiwgTlVMTCwgIikiKTsgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wTm9ybWFsaXplOiB3cml0ZVRyaXBsZXQodmlzaXQsICJub3JtYWxpemUoIiwg
TlVMTCwgIikiKTsgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFT3BERmR4OiB3cml0ZVRyaXBsZXQo
dmlzaXQsICJkRmR4KCIsIE5VTEwsICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcERGZHk6
IHdyaXRlVHJpcGxldCh2aXNpdCwgImRGZHkoIiwgTlVMTCwgIikiKTsgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wRndpZHRoOiB3cml0ZVRyaXBsZXQodmlzaXQsICJmd2lkdGgoIiwgTlVMTCwgIiki
KTsgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFT3BBbnk6IHdyaXRlVHJpcGxldCh2aXNpdCwgImFu
eSgiLCBOVUxMLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BBbGw6IHdyaXRlVHJpcGxl
dCh2aXNpdCwgImFsbCgiLCBOVUxMLCAiKSIpOyBicmVhazsKKworICAgICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOyBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtU2Vs
ZWN0aW9uKiBub2RlKQoreworICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKwor
ICAgIGlmIChub2RlLT51c2VzVGVybmFyeU9wZXJhdG9yKCkpCisgICAgeworICAgICAgICAvLyBO
b3RpY2UgdHdvIGJyYWNrZXRzIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZC4gVGhlIG91dGVyIG9u
ZXMKKyAgICAgICAgLy8gZW5jYXBzdWxhdGUgdGhlIHdob2xlIHRlcm5hcnkgZXhwcmVzc2lvbi4g
VGhpcyBwcmVzZXJ2ZXMgdGhlCisgICAgICAgIC8vIG9yZGVyIG9mIHByZWNlZGVuY2Ugd2hlbiB0
ZXJuYXJ5IGV4cHJlc3Npb25zIGFyZSB1c2VkIGluIGEKKyAgICAgICAgLy8gY29tcG91bmQgZXhw
cmVzc2lvbiwgaS5lLiwgYyA9IDIgKiAoYSA8IGIgPyAxIDogMikuCisgICAgICAgIG91dCA8PCAi
KCgiOworICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAg
ICAgIG91dCA8PCAiKSA/ICgiOworICAgICAgICBub2RlLT5nZXRUcnVlQmxvY2soKS0+dHJhdmVy
c2UodGhpcyk7CisgICAgICAgIG91dCA8PCAiKSA6ICgiOworICAgICAgICBub2RlLT5nZXRGYWxz
ZUJsb2NrKCktPnRyYXZlcnNlKHRoaXMpOworICAgICAgICBvdXQgPDwgIikpIjsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJpZiAoIjsKKyAgICAgICAgbm9kZS0+Z2V0
Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMpOworICAgICAgICBvdXQgPDwgIilcbiI7CisKKyAg
ICAgICAgaW5jcmVtZW50RGVwdGgoKTsKKyAgICAgICAgdmlzaXRDb2RlQmxvY2sobm9kZS0+Z2V0
VHJ1ZUJsb2NrKCkpOworCisgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiZWxzZVxuIjsKKyAgICAgICAgICAgIHZpc2l0Q29k
ZUJsb2NrKG5vZGUtPmdldEZhbHNlQmxvY2soKSk7CisgICAgICAgIH0KKyAgICAgICAgZGVjcmVt
ZW50RGVwdGgoKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRPdXRwdXRH
TFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqIG5v
ZGUpCit7CisgICAgYm9vbCB2aXNpdENoaWxkcmVuID0gdHJ1ZTsKKyAgICBUSW5mb1NpbmtCYXNl
JiBvdXQgPSBvYmpTaW5rKCk7CisgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQorICAgIHsKKyAg
ICAgICAgY2FzZSBFT3BTZXF1ZW5jZTogeworICAgICAgICAgICAgLy8gU2NvcGUgdGhlIHNlcXVl
bmNlcyBleGNlcHQgd2hlbiBhdCB0aGUgZ2xvYmFsIHNjb3BlLgorICAgICAgICAgICAgaWYgKGRl
cHRoID4gMCkgb3V0IDw8ICJ7XG4iOworCisgICAgICAgICAgICBpbmNyZW1lbnREZXB0aCgpOwor
ICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlJiBzZXF1ZW5jZSA9IG5vZGUtPmdldFNl
cXVlbmNlKCk7CisgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHNlcXVlbmNlLmJlZ2luKCk7CisgICAgICAgICAgICAgICAgIGl0ZXIgIT0gc2Vx
dWVuY2UuZW5kKCk7ICsraXRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUSW50
ZXJtTm9kZSogbm9kZSA9ICppdGVyOworICAgICAgICAgICAgICAgIEFTU0VSVChub2RlICE9IE5V
TEwpOworICAgICAgICAgICAgICAgIG5vZGUtPnRyYXZlcnNlKHRoaXMpOworCisgICAgICAgICAg
ICAgICAgaWYgKGlzU2luZ2xlU3RhdGVtZW50KG5vZGUpKQorICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgIjtcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWNyZW1lbnREZXB0aCgp
OworCisgICAgICAgICAgICAvLyBTY29wZSB0aGUgc2VxdWVuY2VzIGV4Y2VwdCB3aGVuIGF0IHRo
ZSBnbG9iYWwgc2NvcGUuCisgICAgICAgICAgICBpZiAoZGVwdGggPiAwKSBvdXQgPDwgIn1cbiI7
CisgICAgICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEVPcFByb3RvdHlwZTogeworICAgICAgICAgICAgLy8g
RnVuY3Rpb24gZGVjbGFyYXRpb24uCisgICAgICAgICAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlz
aXQpOworICAgICAgICAgICAgVFN0cmluZyByZXR1cm5UeXBlID0gZ2V0VHlwZU5hbWUobm9kZS0+
Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIG91dCA8PCByZXR1cm5UeXBlIDw8ICIgIiA8PCBub2Rl
LT5nZXROYW1lKCk7CisKKyAgICAgICAgICAgIG91dCA8PCAiKCI7CisgICAgICAgICAgICB3cml0
ZUZ1bmN0aW9uUGFyYW1ldGVycyhub2RlLT5nZXRTZXF1ZW5jZSgpKTsKKyAgICAgICAgICAgIG91
dCA8PCAiKSI7CisKKyAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRU9wRnVuY3Rpb246IHsKKyAgICAg
ICAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCisgICAgICAgICAgICBBU1NFUlQodmlzaXQg
PT0gUHJlVmlzaXQpOworICAgICAgICAgICAgd3JpdGVWYXJpYWJsZVR5cGUobm9kZS0+Z2V0VHlw
ZSgpKTsKKyAgICAgICAgICAgIG91dCA8PCAiICIgPDwgVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUo
bm9kZS0+Z2V0TmFtZSgpKTsKKworICAgICAgICAgICAgaW5jcmVtZW50RGVwdGgoKTsKKyAgICAg
ICAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24gbm9kZSBjb250YWlucyBvbmUgb3IgdHdvIGNo
aWxkcmVuIG5vZGVzCisgICAgICAgICAgICAvLyByZXByZXNlbnRpbmcgZnVuY3Rpb24gcGFyYW1l
dGVycyBhbmQgZnVuY3Rpb24gYm9keS4gVGhlIGxhdHRlcgorICAgICAgICAgICAgLy8gaXMgbm90
IHByZXNlbnQgaW4gY2FzZSBvZiBlbXB0eSBmdW5jdGlvbiBib2RpZXMuCisgICAgICAgICAgICBj
b25zdCBUSW50ZXJtU2VxdWVuY2UmIHNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKKyAg
ICAgICAgICAgIEFTU0VSVCgoc2VxdWVuY2Uuc2l6ZSgpID09IDEpIHx8IChzZXF1ZW5jZS5zaXpl
KCkgPT0gMikpOworICAgICAgICAgICAgVEludGVybVNlcXVlbmNlOjpjb25zdF9pdGVyYXRvciBz
ZXFJdGVyID0gc2VxdWVuY2UuYmVnaW4oKTsKKworICAgICAgICAgICAgLy8gVHJhdmVyc2UgZnVu
Y3Rpb24gcGFyYW1ldGVycy4KKyAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUqIHBhcmFtcyA9
ICgqc2VxSXRlciktPmdldEFzQWdncmVnYXRlKCk7CisgICAgICAgICAgICBBU1NFUlQocGFyYW1z
ICE9IE5VTEwpOworICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy0+Z2V0T3AoKSA9PSBFT3BQYXJh
bWV0ZXJzKTsKKyAgICAgICAgICAgIHBhcmFtcy0+dHJhdmVyc2UodGhpcyk7CisKKyAgICAgICAg
ICAgIC8vIFRyYXZlcnNlIGZ1bmN0aW9uIGJvZHkuCisgICAgICAgICAgICBUSW50ZXJtQWdncmVn
YXRlKiBib2R5ID0gKytzZXFJdGVyICE9IHNlcXVlbmNlLmVuZCgpID8KKyAgICAgICAgICAgICAg
ICAoKnNlcUl0ZXIpLT5nZXRBc0FnZ3JlZ2F0ZSgpIDogTlVMTDsKKyAgICAgICAgICAgIHZpc2l0
Q29kZUJsb2NrKGJvZHkpOworICAgICAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKKyAKKyAgICAg
ICAgICAgIC8vIEZ1bGx5IHByb2Nlc3NlZDsgbm8gbmVlZCB0byB2aXNpdCBjaGlsZHJlbi4KKyAg
ICAgICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOgorICAgICAgICAgICAgLy8gRnVu
Y3Rpb24gY2FsbC4KKyAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBUU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IFRGdW5jdGlvbjo6
dW5tYW5nbGVOYW1lKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgb3V0IDw8IGZ1
bmN0aW9uTmFtZSA8PCAiKCI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICh2
aXNpdCA9PSBJblZpc2l0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAi
LCAiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG91dCA8PCAiKSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBFT3BQYXJhbWV0ZXJzOiB7CisgICAgICAgICAgICAvLyBGdW5jdGlv
biBwYXJhbWV0ZXJzLgorICAgICAgICAgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsKKyAg
ICAgICAgICAgIG91dCA8PCAiKCI7CisgICAgICAgICAgICB3cml0ZUZ1bmN0aW9uUGFyYW1ldGVy
cyhub2RlLT5nZXRTZXF1ZW5jZSgpKTsKKyAgICAgICAgICAgIG91dCA8PCAiKSI7CisgICAgICAg
ICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEVPcERlY2xhcmF0aW9uOiB7CisgICAgICAgICAgICAvLyBWYXJpYWJs
ZSBkZWNsYXJhdGlvbi4KKyAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UmIHNlcXVlbmNl
ID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBUSW50ZXJtVHlw
ZWQqIHZhcmlhYmxlID0gc2VxdWVuY2UuZnJvbnQoKS0+Z2V0QXNUeXBlZCgpOworICAgICAgICAg
ICAgICAgIHdyaXRlVmFyaWFibGVUeXBlKHZhcmlhYmxlLT5nZXRUeXBlKCkpOworICAgICAgICAg
ICAgICAgIG91dCA8PCAiICI7CisgICAgICAgICAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyA9
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZp
c2l0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiLCAiOworICAgICAg
ICAgICAgICAgIG1EZWNsYXJpbmdWYXJpYWJsZXMgPSB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1EZWNsYXJpbmdW
YXJpYWJsZXMgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0RmxvYXQ6IHdyaXRlVHJpcGxldCh2aXNp
dCwgImZsb2F0KCIsIE5VTEwsICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcENvbnN0cnVj
dFZlYzI6IHdyaXRlVHJpcGxldCh2aXNpdCwgInZlYzIoIiwgIiwgIiwgIikiKTsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMzogd3JpdGVUcmlwbGV0KHZpc2l0LCAidmVjMygi
LCAiLCAiLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWM0OiB3cml0
ZVRyaXBsZXQodmlzaXQsICJ2ZWM0KCIsICIsICIsICIpIik7IGJyZWFrOworICAgICAgICBjYXNl
IEVPcENvbnN0cnVjdEJvb2w6IHdyaXRlVHJpcGxldCh2aXNpdCwgImJvb2woIiwgTlVMTCwgIiki
KTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzI6IHdyaXRlVHJpcGxldCh2
aXNpdCwgImJ2ZWMyKCIsICIsICIsICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdEJWZWMzOiB3cml0ZVRyaXBsZXQodmlzaXQsICJidmVjMygiLCAiLCAiLCAiKSIpOyBicmVh
azsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjNDogd3JpdGVUcmlwbGV0KHZpc2l0LCAi
YnZlYzQoIiwgIiwgIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0SW50
OiB3cml0ZVRyaXBsZXQodmlzaXQsICJpbnQoIiwgTlVMTCwgIikiKTsgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wQ29uc3RydWN0SVZlYzI6IHdyaXRlVHJpcGxldCh2aXNpdCwgIml2ZWMyKCIsICIs
ICIsICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMzOiB3cml0ZVRy
aXBsZXQodmlzaXQsICJpdmVjMygiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RJVmVjNDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiaXZlYzQoIiwgIiwgIiwgIiki
KTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0Mjogd3JpdGVUcmlwbGV0KHZp
c2l0LCAibWF0MigiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RNYXQzOiB3cml0ZVRyaXBsZXQodmlzaXQsICJtYXQzKCIsICIsICIsICIpIik7IGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6IHdyaXRlVHJpcGxldCh2aXNpdCwgIm1hdDQo
IiwgIiwgIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0U3RydWN0Ogor
ICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNvbnN0IFRUeXBlJiB0eXBlID0gbm9kZS0+Z2V0VHlwZSgpOworICAgICAgICAg
ICAgICAgIEFTU0VSVCh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCk7CisgICAgICAg
ICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0VHlwZU5hbWUoKSA8PCAiKCI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG91dCA8PCAiLCAiOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiKSI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVPcExlc3NUaGFuOiB3
cml0ZVRyaXBsZXQodmlzaXQsICJsZXNzVGhhbigiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BHcmVhdGVyVGhhbjogd3JpdGVUcmlwbGV0KHZpc2l0LCAiZ3JlYXRlclRoYW4o
IiwgIiwgIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDogd3Jp
dGVUcmlwbGV0KHZpc2l0LCAibGVzc1RoYW5FcXVhbCgiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOiB3cml0ZVRyaXBsZXQodmlzaXQsICJncmVh
dGVyVGhhbkVxdWFsKCIsICIsICIsICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcFZlY3Rv
ckVxdWFsOiB3cml0ZVRyaXBsZXQodmlzaXQsICJlcXVhbCgiLCAiLCAiLCAiKSIpOyBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BWZWN0b3JOb3RFcXVhbDogd3JpdGVUcmlwbGV0KHZpc2l0LCAibm90
RXF1YWwoIiwgIiwgIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29tbWE6IHdyaXRl
VHJpcGxldCh2aXNpdCwgTlVMTCwgIiwgIiwgTlVMTCk7IGJyZWFrOworCisgICAgICAgIGNhc2Ug
RU9wTW9kOiB3cml0ZVRyaXBsZXQodmlzaXQsICJtb2QoIiwgIiwgIiwgIikiKTsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wUG93OiB3cml0ZVRyaXBsZXQodmlzaXQsICJwb3coIiwgIiwgIiwgIiki
KTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQXRhbjogd3JpdGVUcmlwbGV0KHZpc2l0LCAiYXRh
bigiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNaW46IHdyaXRlVHJpcGxl
dCh2aXNpdCwgIm1pbigiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNYXg6
IHdyaXRlVHJpcGxldCh2aXNpdCwgIm1heCgiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BDbGFtcDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiY2xhbXAoIiwgIiwgIiwgIikiKTsg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wTWl4OiB3cml0ZVRyaXBsZXQodmlzaXQsICJtaXgoIiwg
IiwgIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wU3RlcDogd3JpdGVUcmlwbGV0KHZp
c2l0LCAic3RlcCgiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BTbW9vdGhT
dGVwOiB3cml0ZVRyaXBsZXQodmlzaXQsICJzbW9vdGhzdGVwKCIsICIsICIsICIpIik7IGJyZWFr
OworCisgICAgICAgIGNhc2UgRU9wRGlzdGFuY2U6IHdyaXRlVHJpcGxldCh2aXNpdCwgImRpc3Rh
bmNlKCIsICIsICIsICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcERvdDogd3JpdGVUcmlw
bGV0KHZpc2l0LCAiZG90KCIsICIsICIsICIpIik7IGJyZWFrOworICAgICAgICBjYXNlIEVPcENy
b3NzOiB3cml0ZVRyaXBsZXQodmlzaXQsICJjcm9zcygiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BGYWNlRm9yd2FyZDogd3JpdGVUcmlwbGV0KHZpc2l0LCAiZmFjZWZvcndh
cmQoIiwgIiwgIiwgIikiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUmVmbGVjdDogd3JpdGVU
cmlwbGV0KHZpc2l0LCAicmVmbGVjdCgiLCAiLCAiLCAiKSIpOyBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BSZWZyYWN0OiB3cml0ZVRyaXBsZXQodmlzaXQsICJyZWZyYWN0KCIsICIsICIsICIpIik7
IGJyZWFrOworICAgICAgICBjYXNlIEVPcE11bDogd3JpdGVUcmlwbGV0KHZpc2l0LCAibWF0cml4
Q29tcE11bHQoIiwgIiwgIiwgIikiKTsgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB2aXNpdENoaWxkcmVuOworfQorCiti
b29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCog
bm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBvYmpTaW5rKCk7CisKKyAgICBpbmNy
ZW1lbnREZXB0aCgpOworICAgIC8vIExvb3AgaGVhZGVyLgorICAgIFRMb29wVHlwZSBsb29wVHlw
ZSA9IG5vZGUtPmdldFR5cGUoKTsKKyAgICBpZiAobG9vcFR5cGUgPT0gRUxvb3BGb3IpICAvLyBm
b3IgbG9vcAorICAgIHsKKyAgICAgICAgaWYgKCFub2RlLT5nZXRVbnJvbGxGbGFnKCkpIHsKKyAg
ICAgICAgICAgIG91dCA8PCAiZm9yICgiOworICAgICAgICAgICAgaWYgKG5vZGUtPmdldEluaXQo
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5nZXRJbml0KCktPnRyYXZlcnNlKHRoaXMpOworICAg
ICAgICAgICAgb3V0IDw8ICI7ICI7CisKKyAgICAgICAgICAgIGlmIChub2RlLT5nZXRDb25kaXRp
b24oKSkKKyAgICAgICAgICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhp
cyk7CisgICAgICAgICAgICBvdXQgPDwgIjsgIjsKKworICAgICAgICAgICAgaWYgKG5vZGUtPmdl
dEV4cHJlc3Npb24oKSkKKyAgICAgICAgICAgICAgICBub2RlLT5nZXRFeHByZXNzaW9uKCktPnRy
YXZlcnNlKHRoaXMpOworICAgICAgICAgICAgb3V0IDw8ICIpXG4iOworICAgICAgICB9CisgICAg
fQorICAgIGVsc2UgaWYgKGxvb3BUeXBlID09IEVMb29wV2hpbGUpICAvLyB3aGlsZSBsb29wCisg
ICAgeworICAgICAgICBvdXQgPDwgIndoaWxlICgiOworICAgICAgICBBU1NFUlQobm9kZS0+Z2V0
Q29uZGl0aW9uKCkgIT0gTlVMTCk7CisgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2
ZXJzZSh0aGlzKTsKKyAgICAgICAgb3V0IDw8ICIpXG4iOworICAgIH0KKyAgICBlbHNlICAvLyBk
by13aGlsZSBsb29wCisgICAgeworICAgICAgICBBU1NFUlQobG9vcFR5cGUgPT0gRUxvb3BEb1do
aWxlKTsKKyAgICAgICAgb3V0IDw8ICJkb1xuIjsKKyAgICB9CisKKyAgICAvLyBMb29wIGJvZHku
CisgICAgaWYgKG5vZGUtPmdldFVucm9sbEZsYWcoKSkKKyAgICB7CisgICAgICAgIFRMb29wSW5k
ZXhJbmZvIGluZGV4SW5mbzsKKyAgICAgICAgbUxvb3BVbnJvbGwuRmlsbExvb3BJbmRleEluZm8o
bm9kZSwgaW5kZXhJbmZvKTsKKyAgICAgICAgbUxvb3BVbnJvbGwuUHVzaChpbmRleEluZm8pOwor
ICAgICAgICB3aGlsZSAobUxvb3BVbnJvbGwuU2F0aXNmaWVzTG9vcENvbmRpdGlvbigpKQorICAg
ICAgICB7CisgICAgICAgICAgICB2aXNpdENvZGVCbG9jayhub2RlLT5nZXRCb2R5KCkpOworICAg
ICAgICAgICAgbUxvb3BVbnJvbGwuU3RlcCgpOworICAgICAgICB9CisgICAgICAgIG1Mb29wVW5y
b2xsLlBvcCgpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB2aXNpdENvZGVCbG9j
ayhub2RlLT5nZXRCb2R5KCkpOworICAgIH0KKworICAgIC8vIExvb3AgZm9vdGVyLgorICAgIGlm
IChsb29wVHlwZSA9PSBFTG9vcERvV2hpbGUpICAvLyBkby13aGlsZSBsb29wCisgICAgeworICAg
ICAgICBvdXQgPDwgIndoaWxlICgiOworICAgICAgICBBU1NFUlQobm9kZS0+Z2V0Q29uZGl0aW9u
KCkgIT0gTlVMTCk7CisgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlz
KTsKKyAgICAgICAgb3V0IDw8ICIpO1xuIjsKKyAgICB9CisgICAgZGVjcmVtZW50RGVwdGgoKTsK
KworICAgIC8vIE5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4uIFRoZXkgaGF2ZSBiZWVuIGFscmVh
ZHkgcHJvY2Vzc2VkIGluCisgICAgLy8gdGhpcyBmdW5jdGlvbi4KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVElu
dGVybUJyYW5jaCogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPmdldEZsb3dPcCgpKQorICAg
IHsKKyAgICAgICAgY2FzZSBFT3BLaWxsOiB3cml0ZVRyaXBsZXQodmlzaXQsICJkaXNjYXJkIiwg
TlVMTCwgTlVMTCk7IGJyZWFrOworICAgICAgICBjYXNlIEVPcEJyZWFrOiB3cml0ZVRyaXBsZXQo
dmlzaXQsICJicmVhayIsIE5VTEwsIE5VTEwpOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb250
aW51ZTogd3JpdGVUcmlwbGV0KHZpc2l0LCAiY29udGludWUiLCBOVUxMLCBOVUxMKTsgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wUmV0dXJuOiB3cml0ZVRyaXBsZXQodmlzaXQsICJyZXR1cm4gIiwg
TlVMTCwgTlVMTCk7IGJyZWFrOworICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyBicmVh
azsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBUT3V0cHV0R0xTTEJhc2U6
OnZpc2l0Q29kZUJsb2NrKFRJbnRlcm1Ob2RlKiBub2RlKSB7CisgICAgVEluZm9TaW5rQmFzZSAm
b3V0ID0gb2JqU2luaygpOworICAgIGlmIChub2RlICE9IE5VTEwpCisgICAgeworICAgICAgICBu
b2RlLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgLy8gU2luZ2xlIHN0YXRlbWVudHMgbm90IHBh
cnQgb2YgYSBzZXF1ZW5jZSBuZWVkIHRvIGJlIHRlcm1pbmF0ZWQKKyAgICAgICAgLy8gd2l0aCBz
ZW1pLWNvbG9uLgorICAgICAgICBpZiAoaXNTaW5nbGVTdGF0ZW1lbnQobm9kZSkpCisgICAgICAg
ICAgICBvdXQgPDwgIjtcbiI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG91dCA8
PCAie1xufVxuIjsgIC8vIEVtcHR5IGNvZGUgYmxvY2suCisgICAgfQorfQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xC
YXNlLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xT
TEJhc2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRHTFNMQmFzZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisjaWZuZGVmIENST1NTQ09NUElMRVJHTFNMX09VVFBVVEdMU0xCQVNF
X0hfCisjZGVmaW5lIENST1NTQ09NUElMRVJHTFNMX09VVFBVVEdMU0xCQVNFX0hfCisKKyNpbmNs
dWRlIDxzZXQ+CisKKyNpbmNsdWRlICJjb21waWxlci9Gb3JMb29wVW5yb2xsLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxw
ZXIuaCIKKworY2xhc3MgVE91dHB1dEdMU0xCYXNlIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIK
K3sKK3B1YmxpYzoKKyAgICBUT3V0cHV0R0xTTEJhc2UoVEluZm9TaW5rQmFzZSYgb2JqU2luayk7
CisKK3Byb3RlY3RlZDoKKyAgICBUSW5mb1NpbmtCYXNlJiBvYmpTaW5rKCkgeyByZXR1cm4gbU9i
alNpbms7IH0KKyAgICB2b2lkIHdyaXRlVHJpcGxldChWaXNpdCB2aXNpdCwgY29uc3QgY2hhciog
cHJlU3RyLCBjb25zdCBjaGFyKiBpblN0ciwgY29uc3QgY2hhciogcG9zdFN0cik7CisgICAgdm9p
ZCB3cml0ZVZhcmlhYmxlVHlwZShjb25zdCBUVHlwZSYgdHlwZSk7CisgICAgdmlydHVhbCBib29s
IHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbiBwcmVjaXNpb24pID0gMDsKKyAgICB2
b2lkIHdyaXRlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSYgYXJncyk7
CisgICAgY29uc3QgQ29uc3RhbnRVbmlvbiogd3JpdGVDb25zdGFudFVuaW9uKGNvbnN0IFRUeXBl
JiB0eXBlLCBjb25zdCBDb25zdGFudFVuaW9uKiBwQ29uc3RVbmlvbik7CisKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogbm9kZSk7CisgICAgdmlydHVhbCB2b2lk
IHZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSk7CisgICAgdmly
dHVhbCBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5KiBub2RlKTsK
KyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5KiBu
b2RlKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRl
cm1TZWxlY3Rpb24qIG5vZGUpOworICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNp
dCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSk7CisgICAgdmlydHVhbCBib29sIHZpc2l0
TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AqIG5vZGUpOworICAgIHZpcnR1YWwgYm9vbCB2
aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCogbm9kZSk7CisKKyAgICB2b2lk
IHZpc2l0Q29kZUJsb2NrKFRJbnRlcm1Ob2RlKiBub2RlKTsKKworcHJpdmF0ZToKKyAgICBUSW5m
b1NpbmtCYXNlJiBtT2JqU2luazsKKyAgICBib29sIG1EZWNsYXJpbmdWYXJpYWJsZXM7CisKKyAg
ICAvLyBTdHJ1Y3RzIGFyZSBkZWNsYXJlZCBhcyB0aGUgdHJlZSBpcyB0cmF2ZXJzZWQuIFRoaXMg
c2V0IGNvbnRhaW5zIGFsbAorICAgIC8vIHRoZSBzdHJ1Y3RzIGFscmVhZHkgZGVjbGFyZWQuIEl0
IGlzIG1haW50YWluZWQgc28gdGhhdCBhIHN0cnVjdCBpcworICAgIC8vIGRlY2xhcmVkIG9ubHkg
b25jZS4KKyAgICB0eXBlZGVmIHN0ZDo6c2V0PFRTdHJpbmc+IERlY2xhcmVkU3RydWN0czsKKyAg
ICBEZWNsYXJlZFN0cnVjdHMgbURlY2xhcmVkU3RydWN0czsKKworICAgIEZvckxvb3BVbnJvbGwg
bUxvb3BVbnJvbGw7Cit9OworCisjZW5kaWYgIC8vIENST1NTQ09NUElMRVJHTFNMX09VVFBVVEdM
U0xCQVNFX0hfCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
T3V0cHV0SExTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL091dHB1dEhMU0wuY3BwCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
IC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAt
MzMsOCArMzMsMTEgQEAgT3V0cHV0SExTTDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZjbwog
ICAgIG1Vc2VzVGV4dHVyZTJEX2JpYXMgPSBmYWxzZTsKICAgICBtVXNlc1RleHR1cmUyRFByb2og
PSBmYWxzZTsKICAgICBtVXNlc1RleHR1cmUyRFByb2pfYmlhcyA9IGZhbHNlOworICAgIG1Vc2Vz
VGV4dHVyZTJEUHJvakxvZCA9IGZhbHNlOworICAgIG1Vc2VzVGV4dHVyZTJETG9kID0gZmFsc2U7
CiAgICAgbVVzZXNUZXh0dXJlQ3ViZSA9IGZhbHNlOwogICAgIG1Vc2VzVGV4dHVyZUN1YmVfYmlh
cyA9IGZhbHNlOworICAgIG1Vc2VzVGV4dHVyZUN1YmVMb2QgPSBmYWxzZTsKICAgICBtVXNlc0Rl
cHRoUmFuZ2UgPSBmYWxzZTsKICAgICBtVXNlc0ZyYWdDb29yZCA9IGZhbHNlOwogICAgIG1Vc2Vz
UG9pbnRDb29yZCA9IGZhbHNlOwpAQCAtMTk2LDExICsxOTksMjUgQEAgdm9pZCBPdXRwdXRITFNM
OjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIHVuaWZvcm1zOwogICAgICAgICBvdXQgPDwgIlxu
IjsKIAorICAgICAgICAvLyBUaGUgdGV4dHVyZSBmZXRjaCBmdW5jdGlvbnMgImZsaXAiIHRoZSBZ
IGNvb3JkaW5hdGUgaW4gb25lIHdheSBvciBhbm90aGVyLiBUaGlzIGlzIGJlY2F1c2UgdGV4dHVy
ZXMgYXJlIHN0b3JlZAorICAgICAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIE9wZW5HTCBjb252ZW50
aW9uLCBpLmUuICgwLCAwKSBpcyAiYm90dG9tIGxlZnQiLCByYXRoZXIgdGhhbiB0aGUgRDNEIGNv
bnZlbnRpb24gd2hlcmUgKDAsIDApCisgICAgICAgIC8vIGlzICJ0b3AgbGVmdCIuIFNpbmNlIHRo
ZSBITFNMIHRleHR1cmUgZmV0Y2ggZnVuY3Rpb25zIGV4cGVjdCB0ZXh0dXJlcyB0byBiZSBzdG9y
ZWQgYWNjb3JkaW5nIHRvIHRoZSBEM0QKKyAgICAgICAgLy8gY29udmVudGlvbiwgdGhlIFkgY29v
cmRpbmF0ZSBwYXNzZWQgdG8gdGhlc2UgZnVuY3Rpb25zIGlzIGFkanVzdGVkIHRvIGNvbXBlbnNh
dGUuCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoZSBzaW1wbGVzdCBjYXNlIGlzIHRleHR1cmUy
RCB3aGVyZSB0aGUgbWFwcGluZyBpcyBZIC0+IDEtWSwgd2hpY2ggbWFwcyBbMCwgMV0gLT4gWzEs
IDBdLgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgdGV4dHVyZTJEUHJvaiBmdW5jdGlvbnMg
YXJlIG1vcmUgY29tcGxpY2F0ZWQgYmVjYXVzZSB0aGUgcHJvamVjdGlvbiBkaXZpZGVzIGJ5IGVp
dGhlciBaIG9yIFcuIEZvciB0aGUgdmVjMworICAgICAgICAvLyBjYXNlLCB0aGUgbWFwcGluZyBp
cyBZIC0+IFotWSBvciBZL1ogLT4gMS1ZL1osIHdoaWNoIGFnYWluIG1hcHMgWzAsIDFdIC0+IFsx
LCAwXS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gRm9yIGN1YmUgdGV4dHVyZXMgdGhlIG1hcHBp
bmcgaXMgWSAtPiAtWSwgd2hpY2ggbWFwcyBbLTEsIDFdIC0+IFsxLCAtMV0uIFRoaXMgaXMgbm90
IHN1ZmZpY2llbnQgb24gaXRzIG93biBmb3IgdGhlCisgICAgICAgIC8vICtZIGFuZCAtWSBmYWNl
cywgd2hpY2ggYXJlIG5vdyBvbiB0aGUgIndyb25nIHNpZGVzIiBvZiB0aGUgY3ViZS4gVGhpcyBp
cyBjb21wZW5zYXRlZCBmb3IgYnkgZXhjaGFuZ2luZyB0aGUKKyAgICAgICAgLy8gK1kgYW5kIC1Z
IGZhY2VzIGV2ZXJ5d2hlcmUgZWxzZSB0aHJvdWdob3V0IHRoZSBjb2RlLgorICAgICAgICAKICAg
ICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJEKQogICAgICAgICB7CiAgICAgICAgICAgICBvdXQgPDwg
ImZsb2F0NCBnbF90ZXh0dXJlMkQoc2FtcGxlcjJEIHMsIGZsb2F0MiB0KVxuIgogICAgICAgICAg
ICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkQocywg
dCk7XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkQocywgZmxvYXQyKHQu
eCwgMSAtIHQueSkpO1xuIgogICAgICAgICAgICAgICAgICAgICJ9XG4iCiAgICAgICAgICAgICAg
ICAgICAgIlxuIjsKICAgICAgICAgfQpAQCAtMjA5LDcgKzIyNiw3IEBAIHZvaWQgT3V0cHV0SExT
TDo6aGVhZGVyKCkKICAgICAgICAgewogICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4
dHVyZTJEKHNhbXBsZXIyRCBzLCBmbG9hdDIgdCwgZmxvYXQgYmlhcylcbiIKICAgICAgICAgICAg
ICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEYmlhcyhz
LCBmbG9hdDQodC54LCB0LnksIDAsIGJpYXMpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQueCwgMSAtIHQueSwgMCwgYmlhcykpO1xuIgog
ICAgICAgICAgICAgICAgICAgICJ9XG4iCiAgICAgICAgICAgICAgICAgICAgIlxuIjsKICAgICAg
ICAgfQpAQCAtMjE4LDEyICsyMzUsMTIgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBs
ZXIyRCBzLCBmbG9hdDMgdClcbiIKICAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAg
ICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEcHJvaihzLCBmbG9hdDQodC54LCB0LnksIDAsIHQu
eikpO1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEcHJvaihzLCBmbG9h
dDQodC54LCB0LnogLSB0LnksIDAsIHQueikpO1xuIgogICAgICAgICAgICAgICAgICAgICJ9XG4i
CiAgICAgICAgICAgICAgICAgICAgIlxuIgogICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xf
dGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQ0IHQpXG4iCiAgICAgICAgICAgICAgICAg
ICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRHByb2oocywgdCk7
XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRwcm9qKHMsIGZsb2F0NCh0
LngsIHQudyAtIHQueSwgdC56LCB0LncpKTtcbiIKICAgICAgICAgICAgICAgICAgICAifVxuIgog
ICAgICAgICAgICAgICAgICAgICJcbiI7CiAgICAgICAgIH0KQEAgLTIzMiwxMiArMjQ5LDEyIEBA
IHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgewogICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQzIHQsIGZsb2F0IGJp
YXMpXG4iCiAgICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCBiaWFz
KSk7XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRiaWFzKHMsIGZsb2F0
NCh0LnggLyB0LnosIDEgLSAodC55IC8gdC56KSwgMCwgYmlhcykpO1xuIgogICAgICAgICAgICAg
ICAgICAgICJ9XG4iCiAgICAgICAgICAgICAgICAgICAgIlxuIgogICAgICAgICAgICAgICAgICAg
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQ0IHQsIGZsb2F0IGJp
YXMpXG4iCiAgICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQueCAvIHQudywgdC55IC8gdC53LCAwLCBiaWFz
KSk7XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRiaWFzKHMsIGZsb2F0
NCh0LnggLyB0LncsIDEgLSAodC55IC8gdC53KSwgMCwgYmlhcykpO1xuIgogICAgICAgICAgICAg
ICAgICAgICJ9XG4iCiAgICAgICAgICAgICAgICAgICAgIlxuIjsKICAgICAgICAgfQpAQCAtMjQ2
LDcgKzI2Myw3IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgewogICAgICAg
ICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywgZmxvYXQz
IHQpXG4iCiAgICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0ZXhDVUJFKHMsIHQpO1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHRleENVQkUocywgZmxvYXQzKHQueCwgLXQueSwgdC56KSk7XG4iCiAgICAgICAgICAgICAgICAg
ICAgIn1cbiIKICAgICAgICAgICAgICAgICAgICAiXG4iOwogICAgICAgICB9CkBAIC0yNTUsNyAr
MjcyLDcgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICB7CiAgICAgICAgICAg
ICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZShzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdCwg
ZmxvYXQgYmlhcylcbiIKICAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHRleENVQkViaWFzKHMsIGZsb2F0NCh0LngsIHQueSwgdC56LCBiaWFz
KSk7XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRWJpYXMocywgZmxv
YXQ0KHQueCwgLXQueSwgdC56LCBiaWFzKSk7XG4iCiAgICAgICAgICAgICAgICAgICAgIn1cbiIK
ICAgICAgICAgICAgICAgICAgICAiXG4iOwogICAgICAgICB9CkBAIC0zMzEsNiArMzQ4LDg0IEBA
IHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgICAgICAgICJcbiI7CiAgICAgICAg
IG91dCA8PCAgdW5pZm9ybXM7CiAgICAgICAgIG91dCA8PCAiXG4iOworCisgICAgICAgIC8vIFRo
ZSB0ZXh0dXJlIGZldGNoIGZ1bmN0aW9ucyAiZmxpcCIgdGhlIFkgY29vcmRpbmF0ZSBpbiBvbmUg
d2F5IG9yIGFub3RoZXIuIFRoaXMgaXMgYmVjYXVzZSB0ZXh0dXJlcyBhcmUgc3RvcmVkCisgICAg
ICAgIC8vIGFjY29yZGluZyB0byB0aGUgT3BlbkdMIGNvbnZlbnRpb24sIGkuZS4gKDAsIDApIGlz
ICJib3R0b20gbGVmdCIsIHJhdGhlciB0aGFuIHRoZSBEM0QgY29udmVudGlvbiB3aGVyZSAoMCwg
MCkKKyAgICAgICAgLy8gaXMgInRvcCBsZWZ0Ii4gU2luY2UgdGhlIEhMU0wgdGV4dHVyZSBmZXRj
aCBmdW5jdGlvbnMgZXhwZWN0IHRleHR1cmVzIHRvIGJlIHN0b3JlZCBhY2NvcmRpbmcgdG8gdGhl
IEQzRAorICAgICAgICAvLyBjb252ZW50aW9uLCB0aGUgWSBjb29yZGluYXRlIHBhc3NlZCB0byB0
aGVzZSBmdW5jdGlvbnMgaXMgYWRqdXN0ZWQgdG8gY29tcGVuc2F0ZS4KKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gVGhlIHNpbXBsZXN0IGNhc2UgaXMgdGV4dHVyZTJEIHdoZXJlIHRoZSBtYXBwaW5n
IGlzIFkgLT4gMS1ZLCB3aGljaCBtYXBzIFswLCAxXSAtPiBbMSwgMF0uCisgICAgICAgIC8vCisg
ICAgICAgIC8vIFRoZSB0ZXh0dXJlMkRQcm9qIGZ1bmN0aW9ucyBhcmUgbW9yZSBjb21wbGljYXRl
ZCBiZWNhdXNlIHRoZSBwcm9qZWN0aW9uIGRpdmlkZXMgYnkgZWl0aGVyIFogb3IgVy4gRm9yIHRo
ZSB2ZWMzCisgICAgICAgIC8vIGNhc2UsIHRoZSBtYXBwaW5nIGlzIFkgLT4gWi1ZIG9yIFkvWiAt
PiAxLVkvWiwgd2hpY2ggYWdhaW4gbWFwcyBbMCwgMV0gLT4gWzEsIDBdLgorICAgICAgICAvLwor
ICAgICAgICAvLyBGb3IgY3ViZSB0ZXh0dXJlcyB0aGUgbWFwcGluZyBpcyBZIC0+IC1ZLCB3aGlj
aCBtYXBzIFstMSwgMV0gLT4gWzEsIC0xXS4gVGhpcyBpcyBub3Qgc3VmZmljaWVudCBvbiBpdHMg
b3duIGZvciB0aGUKKyAgICAgICAgLy8gK1kgYW5kIC1ZIGZhY2VzLCB3aGljaCBhcmUgbm93IG9u
IHRoZSAid3Jvbmcgc2lkZXMiIG9mIHRoZSBjdWJlLiBUaGlzIGlzIGNvbXBlbnNhdGVkIGZvciBi
eSBleGNoYW5naW5nIHRoZQorICAgICAgICAvLyArWSBhbmQgLVkgZmFjZXMgZXZlcnl3aGVyZSBl
bHNlIHRocm91Z2hvdXQgdGhlIGNvZGUuCisgICAgICAgIAorICAgICAgICBpZiAobVVzZXNUZXh0
dXJlMkQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUy
RChzYW1wbGVyMkQgcywgZmxvYXQyIHQpXG4iCisgICAgICAgICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54LCAxIC0g
dC55LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAg
ICAgICAiXG4iOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJETG9kKQor
ICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRMb2Qoc2Ft
cGxlcjJEIHMsIGZsb2F0MiB0LCBmbG9hdCBsb2QpXG4iCisgICAgICAgICAgICAgICAgICAgIntc
biIKKyAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54
LCAxIC0gdC55LCAwLCBsb2QpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAg
ICAgICAgICAgICAgICJcbiI7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVVzZXNUZXh0dXJl
MkRQcm9qKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJl
MkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDMgdClcbiIKKyAgICAgICAgICAgICAgICAgICAie1xu
IgorICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0Lngg
LyB0LnosIDEgLSB0LnkgLyB0LnosIDAsIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAifVxu
IgorICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGds
X3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0NCB0KVxuIgorICAgICAgICAgICAgICAg
ICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxv
YXQ0KHQueCAvIHQudywgMSAtIHQueSAvIHQudywgMCwgMCkpO1xuIgorICAgICAgICAgICAgICAg
ICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChtVXNlc1RleHR1cmUyRFByb2pMb2QpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8
PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHMsIGZsb2F0MyB0LCBmbG9h
dCBsb2QpXG4iCisgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC56LCAxIC0gdC55IC8gdC56LCAw
LCBsb2QpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2Qoc2Ft
cGxlcjJEIHMsIGZsb2F0NCB0LCBmbG9hdCBsb2QpXG4iCisgICAgICAgICAgICAgICAgICAgIntc
biIKKyAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54
IC8gdC53LCAxIC0gdC55IC8gdC53LCAwLCBsb2QpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAi
fVxuIgorICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bVVzZXNUZXh0dXJlQ3ViZSkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQg
Z2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCisgICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFbG9kKHMs
IGZsb2F0NCh0LngsIC10LnksIHQueiwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICJ9XG4i
CisgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtVXNl
c1RleHR1cmVDdWJlTG9kKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBn
bF90ZXh0dXJlQ3ViZUxvZChzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdCwgZmxvYXQgbG9kKVxuIgor
ICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dGV4Q1VCRWxvZChzLCBmbG9hdDQodC54LCAtdC55LCB0LnosIGxvZCkpO1xuIgorICAgICAgICAg
ICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIGlmIChtVXNlc0ZyYWdDb29yZCkKQEAgLTk2OCw3ICsxMDYzLDcgQEAgYm9vbCBP
dXRwdXRITFNMOjp2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LAogICAgICAgY2FzZSBFT3BMZW5ndGg6
ICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAibGVuZ3RoKCIsICIiLCAiKSIpOyAgICBi
cmVhazsKICAgICAgIGNhc2UgRU9wTm9ybWFsaXplOiAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNp
dCwgIm5vcm1hbGl6ZSgiLCAiIiwgIikiKTsgYnJlYWs7CiAgICAgICBjYXNlIEVPcERGZHg6ICAg
ICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJkZHgoIiwgIiIsICIpIik7ICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BERmR5OiAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCAiZGR5KCIsICIiLCAiKSIpOyAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wREZkeTogICAg
ICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIigtZGR5KCIsICIiLCAiKSkiKTsgICAgYnJl
YWs7CiAgICAgICBjYXNlIEVPcEZ3aWR0aDogICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQs
ICJmd2lkdGgoIiwgIiIsICIpIik7ICAgIGJyZWFrOyAgICAgICAgCiAgICAgICBjYXNlIEVPcEFu
eTogICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJhbnkoIiwgIiIsICIpIik7ICAg
ICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BBbGw6ICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0
KHZpc2l0LCAiYWxsKCIsICIiLCAiKSIpOyAgICAgICBicmVhazsKQEAgLTk4OSw2ICsxMDg0LDcg
QEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAobUluc2lkZUZ1bmN0aW9uKQogICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKICAgICAgICAgICAg
ICAgICBvdXQgPDwgIntcbiI7CiAKICAgICAgICAgICAgICAgICBtU2NvcGVEZXB0aCsrOwpAQCAt
MTAwNSw2ICsxMTAxLDggQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2
aQogCiAgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gbm9k
ZS0+Z2V0U2VxdWVuY2UoKS5iZWdpbigpOyBzaXQgIT0gbm9kZS0+Z2V0U2VxdWVuY2UoKS5lbmQo
KTsgc2l0KyspCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZSgoKnNpdCktPmdldExpbmUoKSk7CisKICAgICAgICAgICAgICAgICBpZiAoaXNTaW5nbGVT
dGF0ZW1lbnQoKnNpdCkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBt
VW5mb2xkU2VsZWN0LT50cmF2ZXJzZSgqc2l0KTsKQEAgLTEwMTcsNiArMTExNSw3IEBAIGJvb2wg
T3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAgaWYgKG1J
bnNpZGVGdW5jdGlvbikKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldEVuZExpbmUoKSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ9
XG4iOwogCiAgICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgtLTsKQEAgLTExNTcsMTMgKzEyNTYs
MTYgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogCiAgICAgICAg
ICAgICAgICAgc2VxdWVuY2UuZXJhc2Uoc2VxdWVuY2UuYmVnaW4oKSk7CiAKLSAgICAgICAgICAg
ICAgICBvdXQgPDwgIilcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIntcbiI7Ci0KKyAgICAg
ICAgICAgICAgICBvdXQgPDwgIilcbiI7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAg
IG91dCA8PCAie1xuIjsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtSW5zaWRl
RnVuY3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAodmlz
aXQgPT0gUG9zdFZpc2l0KQogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dHB1dExp
bmVEaXJlY3RpdmUobm9kZS0+Z2V0RW5kTGluZSgpKTsKICAgICAgICAgICAgICAgICBvdXQgPDwg
In1cbiI7CiAKICAgICAgICAgICAgICAgICBtSW5zaWRlRnVuY3Rpb24gPSBmYWxzZTsKQEAgLTEy
MjYsMTUgKzEzMjgsMzMgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2
aQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5h
bWUgPT0gInRleHR1cmUyRExvZCIpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBSZXF1aXJlcyB0aGUgdmVydGV4IHNo
YWRlciB0ZXh0dXJlIHNhbXBsaW5nIGV4dGVuc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCisgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRMb2QgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImds
X3RleHR1cmUyRExvZCgiOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmUyRFByb2pMb2QiKQogICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gUmVx
dWlyZXMgdGhlIHZlcnRleCBzaGFkZXIgdGV4dHVyZSBzYW1wbGluZyBleHRlbnNpb24KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1V
c2VzVGV4dHVyZTJEUHJvakxvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJEUHJvakxvZCgiOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVD
dWJlTG9kIikKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
VU5JTVBMRU1FTlRFRCgpOyAgIC8vIFJlcXVpcmVzIHRoZSB2ZXJ0ZXggc2hhZGVyIHRleHR1cmUg
c2FtcGxpbmcgZXh0ZW5zaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0
U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmVDdWJlTG9kID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFD
SEFCTEUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlQ3Vi
ZUxvZCgiOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
VU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMzg4LDIzICsxNTA4LDMwIEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmkKIAogICAgICAgICBub2Rl
LT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CiAKLSAgICAgICAgb3V0IDw8ICIpXG4i
Ci0gICAgICAgICAgICAgICAie1xuIjsKKyAgICAgICAgb3V0IDw8ICIpXG4iOworICAgICAgICAK
KyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBv
dXQgPDwgIntcbiI7CiAKICAgICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQogICAgICAg
ICB7CiAgICAgICAgICAgICBub2RlLT5nZXRUcnVlQmxvY2soKS0+dHJhdmVyc2UodGhpcyk7CiAg
ICAgICAgIH0KIAorICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7
CiAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAgICAgICAgaWYgKG5vZGUtPmdldEZhbHNlQmxv
Y2soKSkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJlbHNlXG4iCi0gICAgICAgICAg
ICAgICAgICAgIntcbiI7CisgICAgICAgICAgICBvdXQgPDwgImVsc2VcbiI7CisKKyAgICAgICAg
ICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkp
OworICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCisgICAgICAgICAgICBvdXRwdXRMaW5lRGly
ZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpKTsKICAgICAgICAgICAgIG5v
ZGUtPmdldEZhbHNlQmxvY2soKS0+dHJhdmVyc2UodGhpcyk7CiAKKyAgICAgICAgICAgIG91dHB1
dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkpOwogICAgICAg
ICAgICAgb3V0IDw8ICI7fVxuIjsKICAgICAgICAgfQogICAgIH0KQEAgLTE0MjgsOCArMTU1NSwx
MCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgCiAKICAgICBpZiAo
bm9kZS0+Z2V0VHlwZSgpID09IEVMb29wRG9XaGlsZSkKICAgICB7Ci0gICAgICAgIG91dCA8PCAi
ZG9cbiIKLSAgICAgICAgICAgICAgICJ7XG4iOworICAgICAgICBvdXQgPDwgImRvXG4iOworCisg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0
IDw8ICJ7XG4iOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTQ2OSw4ICsxNTk4LDEwIEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCAKICAgICAgICAgICAgIG5v
ZGUtPmdldEV4cHJlc3Npb24oKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgIH0KIAotICAgICAg
ICBvdXQgPDwgIilcbiIKLSAgICAgICAgICAgICAgICJ7XG4iOworICAgICAgICBvdXQgPDwgIilc
biI7CisgICAgICAgIAorICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUo
KSk7CisgICAgICAgIG91dCA8PCAie1xuIjsKICAgICB9CiAKICAgICBpZiAobm9kZS0+Z2V0Qm9k
eSgpKQpAQCAtMTQ3OCwxMCArMTYwOSwxMiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChW
aXNpdCB2aXNpdCwgCiAgICAgICAgIG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAg
ICAgfQogCisgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOwogICAgIG91
dCA8PCAifVxuIjsKIAogICAgIGlmIChub2RlLT5nZXRUeXBlKCkgPT0gRUxvb3BEb1doaWxlKQog
ICAgIHsKKyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRDb25kaXRpb24oKS0+
Z2V0TGluZSgpKTsKICAgICAgICAgb3V0IDw8ICJ3aGlsZShcbiI7CiAKICAgICAgICAgbm9kZS0+
Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMpOwpAQCAtMTUwMCw5ICsxNjMzLDkgQEAgYm9v
bCBPdXRwdXRITFNMOjp2aXNpdEJyYW5jaChWaXNpdCB2aXNpdAogCiAgICAgc3dpdGNoIChub2Rl
LT5nZXRGbG93T3AoKSkKICAgICB7Ci0gICAgICBjYXNlIEVPcEtpbGw6ICAgICBvdXRwdXRUcmlw
bGV0KHZpc2l0LCAiZGlzY2FyZCIsICIiLCAiIik7ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQnJl
YWs6ICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJicmVhayIsICIiLCAiIik7ICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFT3BDb250aW51ZTogb3V0cHV0VHJpcGxldCh2aXNpdCwgImNvbnRpbnVlIiwg
IiIsICIiKTsgYnJlYWs7CisgICAgICBjYXNlIEVPcEtpbGw6ICAgICBvdXRwdXRUcmlwbGV0KHZp
c2l0LCAiZGlzY2FyZDtcbiIsICIiLCAiIik7ICBicmVhazsKKyAgICAgIGNhc2UgRU9wQnJlYWs6
ICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJicmVhaztcbiIsICIiLCAiIik7ICAgIGJyZWFrOwor
ICAgICAgY2FzZSBFT3BDb250aW51ZTogb3V0cHV0VHJpcGxldCh2aXNpdCwgImNvbnRpbnVlO1xu
IiwgIiIsICIiKTsgYnJlYWs7CiAgICAgICBjYXNlIEVPcFJldHVybjoKICAgICAgICAgaWYgKHZp
c2l0ID09IFByZVZpc2l0KQogICAgICAgICB7CkBAIC0xNTE3LDcgKzE2NTAsMTAgQEAgYm9vbCBP
dXRwdXRITFNMOjp2aXNpdEJyYW5jaChWaXNpdCB2aXNpdAogICAgICAgICB9CiAgICAgICAgIGVs
c2UgaWYgKHZpc2l0ID09IFBvc3RWaXNpdCkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8
ICI7XG4iOworICAgICAgICAgICAgaWYgKG5vZGUtPmdldEV4cHJlc3Npb24oKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIjtcbiI7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwpAQCAt
MTY2OSw3ICsxODA1LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJ
bgogCiAgICAgICAgIGlmIChjb21wYXJhdG9yID09IEVPcExlc3NUaGFuKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpbnQgaXRlcmF0aW9ucyA9IChsaW1pdCAtIGluaXRpYWwgKyAxKSAvIGluY3Jl
bWVudDsKKyAgICAgICAgICAgIGludCBpdGVyYXRpb25zID0gKGxpbWl0IC0gaW5pdGlhbCkgLyBp
bmNyZW1lbnQ7CiAKICAgICAgICAgICAgIGlmIChpdGVyYXRpb25zIDw9IDI1NSkKICAgICAgICAg
ICAgIHsKQEAgLTE2NzgsOCArMTgxNCw4IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNz
aXZlTG9vcChUSW4KIAogICAgICAgICAgICAgd2hpbGUgKGl0ZXJhdGlvbnMgPiAwKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGludCByZW1haW5kZXIgPSAobGltaXQgLSBpbml0aWFs
ICsgMSkgJSBpbmNyZW1lbnQ7Ci0gICAgICAgICAgICAgICAgaW50IGNsYW1wZWRMaW1pdCA9IGlu
aXRpYWwgKyBpbmNyZW1lbnQgKiBzdGQ6Om1pbigyNTUsIGl0ZXJhdGlvbnMpIC0gMSAtIHJlbWFp
bmRlcjsKKyAgICAgICAgICAgICAgICBpbnQgcmVtYWluZGVyID0gKGxpbWl0IC0gaW5pdGlhbCkg
JSBpbmNyZW1lbnQ7CisgICAgICAgICAgICAgICAgaW50IGNsYW1wZWRMaW1pdCA9IGluaXRpYWwg
KyBpbmNyZW1lbnQgKiBzdGQ6Om1pbigyNTUsIGl0ZXJhdGlvbnMpOwogCiAgICAgICAgICAgICAg
ICAgLy8gZm9yKGludCBpbmRleCA9IGluaXRpYWw7IGluZGV4IDwgY2xhbXBlZExpbWl0OyBpbmRl
eCArPSBpbmNyZW1lbnQpCiAKQEAgLTE2OTcsMTQgKzE4MzMsMTcgQEAgYm9vbCBPdXRwdXRITFNM
OjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAgICAgICAgICAgICAgIGluZGV4LT50cmF2ZXJz
ZSh0aGlzKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIiArPSAiOwogICAgICAgICAgICAgICAg
IG91dCA8PCBpbmNyZW1lbnQ7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIpXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICJ7XG4iOworICAgICAgICAgICAgICAgIG91dCA8PCAiKVxuIjsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmdldEJvZHkoKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAgICAg
ICAgfQogCisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5l
KCkpOwogICAgICAgICAgICAgICAgIG91dCA8PCAifVxuIjsKIAogICAgICAgICAgICAgICAgIGlu
aXRpYWwgKz0gMjU1ICogaW5jcmVtZW50OwpAQCAtMTczNyw2ICsxODc2LDIyIEBAIHZvaWQgT3V0
cHV0SExTTDo6b3V0cHV0VHJpcGxldChWaXNpdCB2aXMKICAgICB9CiB9CiAKK3ZvaWQgT3V0cHV0
SExTTDo6b3V0cHV0TGluZURpcmVjdGl2ZShpbnQgbGluZSkKK3sKKyAgICBpZiAoKG1Db250ZXh0
LmNvbXBpbGVPcHRpb25zICYgU0hfTElORV9ESVJFQ1RJVkVTKSAmJiAobGluZSA+IDApKQorICAg
IHsKKyAgICAgICAgbUJvZHkgPDwgIlxuIjsKKyAgICAgICAgbUJvZHkgPDwgIiNsaW5lICIgPDwg
bGluZTsKKworICAgICAgICBpZiAobUNvbnRleHQuc291cmNlUGF0aCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbUJvZHkgPDwgIiBcIiIgPDwgbUNvbnRleHQuc291cmNlUGF0aCA8PCAiXCIiOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtQm9keSA8PCAiXG4iOworICAgIH0KK30KKwog
VFN0cmluZyBPdXRwdXRITFNMOjphcmd1bWVudFN0cmluZyhjb25zdCBUSW50ZXJtU3ltYm9sICpz
eW1ib2wpCiB7CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBzeW1ib2wtPmdldFF1YWxpZmll
cigpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhM
U0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
T3V0cHV0SExTTC5oCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9PdXRwdXRITFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTQ5LDYgKzQ5LDcgQEAg
Y2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVycwogICAgIGJvb2wgaXNTaW5n
bGVTdGF0ZW1lbnQoVEludGVybU5vZGUgKm5vZGUpOwogICAgIGJvb2wgaGFuZGxlRXhjZXNzaXZl
TG9vcChUSW50ZXJtTG9vcCAqbm9kZSk7CiAgICAgdm9pZCBvdXRwdXRUcmlwbGV0KFZpc2l0IHZp
c2l0LCBjb25zdCBUU3RyaW5nICZwcmVTdHJpbmcsIGNvbnN0IFRTdHJpbmcgJmluU3RyaW5nLCBj
b25zdCBUU3RyaW5nICZwb3N0U3RyaW5nKTsKKyAgICB2b2lkIG91dHB1dExpbmVEaXJlY3RpdmUo
aW50IGxpbmUpOwogICAgIFRTdHJpbmcgYXJndW1lbnRTdHJpbmcoY29uc3QgVEludGVybVN5bWJv
bCAqc3ltYm9sKTsKICAgICBpbnQgdmVjdG9yU2l6ZShjb25zdCBUVHlwZSAmdHlwZSkgY29uc3Q7
CiAKQEAgLTc1LDEwICs3NiwxMyBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1U
cmF2ZXJzCiAgICAgLy8gUGFyYW1ldGVycyBkZXRlcm1pbmluZyB3aGF0IGdvZXMgaW4gdGhlIGhl
YWRlciBvdXRwdXQKICAgICBib29sIG1Vc2VzVGV4dHVyZTJEOwogICAgIGJvb2wgbVVzZXNUZXh0
dXJlMkRfYmlhczsKKyAgICBib29sIG1Vc2VzVGV4dHVyZTJETG9kOwogICAgIGJvb2wgbVVzZXNU
ZXh0dXJlMkRQcm9qOwogICAgIGJvb2wgbVVzZXNUZXh0dXJlMkRQcm9qX2JpYXM7CisgICAgYm9v
bCBtVXNlc1RleHR1cmUyRFByb2pMb2Q7CiAgICAgYm9vbCBtVXNlc1RleHR1cmVDdWJlOwogICAg
IGJvb2wgbVVzZXNUZXh0dXJlQ3ViZV9iaWFzOworICAgIGJvb2wgbVVzZXNUZXh0dXJlQ3ViZUxv
ZDsKICAgICBib29sIG1Vc2VzRGVwdGhSYW5nZTsKICAgICBib29sIG1Vc2VzRnJhZ0Nvb3JkOwog
ICAgIGJvb2wgbVVzZXNQb2ludENvb3JkOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwCShyZXZpc2lvbiA4OTI4NikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEsOCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmJp
bmFyeU9wRXJyb3IoaW50IGxpCiB9CiAKIGJvb2wgVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJy
b3JDaGVjayhpbnQgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSl7
CisgICAgaWYgKCFjaGVja3NQcmVjaXNpb25FcnJvcnMpCisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBzd2l0Y2goIHR5cGUgKXsKICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICBpZiggcHJl
Y2lzaW9uID09IEVicFVuZGVmaW5lZCApewpAQCAtNTYwLDcgKzU2Miw3IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAgICAgfQogICAgIH0KIAotICAgIFRJ
bnRlcm1UeXBlZCogdHlwZWQgPSBub2RlLT5nZXRBc1R5cGVkKCk7CisgICAgVEludGVybVR5cGVk
ICp0eXBlZCA9IG5vZGUgPyBub2RlLT5nZXRBc1R5cGVkKCkgOiAwOwogICAgIGlmICh0eXBlZCA9
PSAwKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJjb25zdHJ1Y3RvciBhcmd1bWVudCBkb2VzIG5v
dCBoYXZlIGEgdHlwZSIsICJjb25zdHJ1Y3RvciIsICIiKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC04ODIsMTYgKzg4NCwxNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRDb25zdEVy
cm9yQ2hlCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1i
b29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBp
ZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5p
dEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0
eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICBpZiAocmVzZXJ2ZWRFcnJvckNoZWNr
KGxpbmUsIGlkZW50aWZpZXIpKQogICAgICAgICByZWNvdmVyKCk7CiAKLSAgICBUVmFyaWFibGUq
IHZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgmaWRlbnRpZmllciwgVFR5cGUodHlwZSkpOworICAg
IHZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgmaWRlbnRpZmllciwgVFR5cGUodHlwZSkpOwogCiAg
ICAgaWYgKCEgc3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKICAgICAgICAgZXJyb3Io
bGluZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSwgIiIpOwog
ICAgICAgICBkZWxldGUgdmFyaWFibGU7CisgICAgICAgIHZhcmlhYmxlID0gMDsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvUGFyc2VIZWxwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAkocmV2aXNpb24gODkyODYpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsMTYgKzMwLDE4IEBAIHN0cnVjdCBUUHJhZ21hIHsKIC8vIHRoZXkgY2FuIGJl
IHBhc3NlZCB0byB0aGUgcGFyc2VyIHdpdGhvdXQgbmVlZGluZyBhIGdsb2JhbC4KIC8vCiBzdHJ1
Y3QgVFBhcnNlQ29udGV4dCB7Ci0gICAgVFBhcnNlQ29udGV4dChUU3ltYm9sVGFibGUmIHN5bXQs
IGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZXh0LCBUSW50ZXJtZWRpYXRlJiBpbnRlcm0sIFNo
U2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgVEluZm9TaW5rJiBpcykgOgotICAg
ICAgICAgICAgaW50ZXJtZWRpYXRlKGludGVybSksIHN5bWJvbFRhYmxlKHN5bXQpLCBleHRlbnNp
b25CZWhhdmlvcihleHQpLCBpbmZvU2luayhpcyksIHNoYWRlclR5cGUodHlwZSksIHNoYWRlclNw
ZWMoc3BlYyksIHRyZWVSb290KDApLAorICAgIFRQYXJzZUNvbnRleHQoVFN5bWJvbFRhYmxlJiBz
eW10LCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dCwgVEludGVybWVkaWF0ZSYgaW50ZXJtLCBTaFNo
YWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGludCBvcHRpb25zLCBib29sIGNoZWNr
c1ByZWNFcnJvcnMsIGNvbnN0IGNoYXIqIHNvdXJjZVBhdGgsIFRJbmZvU2luayYgaXMpIDoKKyAg
ICAgICAgICAgIGludGVybWVkaWF0ZShpbnRlcm0pLCBzeW1ib2xUYWJsZShzeW10KSwgZXh0ZW5z
aW9uQmVoYXZpb3IoZXh0KSwgaW5mb1NpbmsoaXMpLCBzaGFkZXJUeXBlKHR5cGUpLCBzaGFkZXJT
cGVjKHNwZWMpLCBjb21waWxlT3B0aW9ucyhvcHRpb25zKSwgY2hlY2tzUHJlY2lzaW9uRXJyb3Jz
KGNoZWNrc1ByZWNFcnJvcnMpLCBzb3VyY2VQYXRoKHNvdXJjZVBhdGgpLCB0cmVlUm9vdCgwKSwK
ICAgICAgICAgICAgIHJlY292ZXJlZEZyb21FcnJvcihmYWxzZSksIG51bUVycm9ycygwKSwgbGV4
QWZ0ZXJUeXBlKGZhbHNlKSwgbG9vcE5lc3RpbmdMZXZlbCgwKSwKICAgICAgICAgICAgIGluVHlw
ZVBhcmVuKGZhbHNlKSwgc2Nhbm5lcihOVUxMKSwgY29udGV4dFByYWdtYSh0cnVlLCBmYWxzZSkg
eyAgfQogICAgIFRJbnRlcm1lZGlhdGUmIGludGVybWVkaWF0ZTsgLy8gdG8gaG9sZCBhbmQgYnVp
bGQgYSBwYXJzZSB0cmVlCiAgICAgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZTsgICAvLyBzeW1i
b2wgdGFibGUgdGhhdCBnb2VzIHdpdGggdGhlIGxhbmd1YWdlIGN1cnJlbnRseSBiZWluZyBwYXJz
ZWQKLSAgICBURXh0ZW5zaW9uQmVoYXZpb3IgZXh0ZW5zaW9uQmVoYXZpb3I7ICAvLyBtYXBwaW5n
IGJldHdlZW4gc3VwcG9ydGVkIGV4dGVuc2lvbnMgYW5kIGN1cnJlbnQgYmVoYXZpb3IuCisgICAg
VEV4dGVuc2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcjsgIC8vIG1hcHBpbmcgYmV0d2Vl
biBzdXBwb3J0ZWQgZXh0ZW5zaW9ucyBhbmQgY3VycmVudCBiZWhhdmlvci4KICAgICBUSW5mb1Np
bmsmIGluZm9TaW5rOwogICAgIFNoU2hhZGVyVHlwZSBzaGFkZXJUeXBlOyAgICAgICAgICAgICAg
Ly8gdmVydGV4IG9yIGZyYWdtZW50IGxhbmd1YWdlIChmdXR1cmU6IHBhY2sgb3IgdW5wYWNrKQog
ICAgIFNoU2hhZGVyU3BlYyBzaGFkZXJTcGVjOyAgICAgICAgICAgICAgLy8gVGhlIGxhbmd1YWdl
IHNwZWNpZmljYXRpb24gY29tcGlsZXIgY29uZm9ybXMgdG8gLSBHTEVTMiBvciBXZWJHTC4KKyAg
ICBpbnQgY29tcGlsZU9wdGlvbnM7CisgICAgY29uc3QgY2hhciogc291cmNlUGF0aDsgICAgICAv
LyBQYXRoIG9mIHNvdXJjZSBmaWxlIG9yIE5VTEwuCiAgICAgVEludGVybU5vZGUqIHRyZWVSb290
OyAgICAgICAvLyByb290IG9mIHBhcnNlIHRyZWUgYmVpbmcgY3JlYXRlZAogICAgIGJvb2wgcmVj
b3ZlcmVkRnJvbUVycm9yOyAgICAgLy8gdHJ1ZSBpZiBhIHBhcnNlIGVycm9yIGhhcyBvY2N1cnJl
ZCwgYnV0IHdlIGNvbnRpbnVlIHRvIHBhcnNlCiAgICAgaW50IG51bUVycm9yczsKQEAgLTQ4LDYg
KzUwLDcgQEAgc3RydWN0IFRQYXJzZUNvbnRleHQgewogICAgIGJvb2wgaW5UeXBlUGFyZW47ICAg
ICAgICAgICAgLy8gdHJ1ZSBpZiBpbiBwYXJlbnRoZXNlcywgbG9va2luZyBvbmx5IGZvciBhbiBp
ZGVudGlmaWVyCiAgICAgY29uc3QgVFR5cGUqIGN1cnJlbnRGdW5jdGlvblR5cGU7ICAvLyB0aGUg
cmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50bHkgYmVpbmcgcGFyc2Vk
CiAgICAgYm9vbCBmdW5jdGlvblJldHVybnNWYWx1ZTsgICAvLyB0cnVlIGlmIGEgbm9uLXZvaWQg
ZnVuY3Rpb24gaGFzIGEgcmV0dXJuCisgICAgYm9vbCBjaGVja3NQcmVjaXNpb25FcnJvcnM7ICAv
LyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkIHdoZW4gYSB2YXJpYWJsZSBpcyBk
ZWNsYXJlZCB3aXRob3V0IHByZWNpc2lvbiwgZXhwbGljaXQgb3IgaW1wbGljaXQuCiAKICAgICB2
b2lkIGVycm9yKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIq
IHRva2VuLAogICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvRm9ybWF0LCAuLi4p
OwpAQCAtNzksNyArODIsNyBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAgICAgYm9vbCBwYXJh
bWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNv
bnN0IFRUeXBlJiB0eXBlKTsKICAgICBib29sIGNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSk7
CiAgICAgYm9vbCBub25Jbml0Q29uc3RFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVu
dGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSk7Ci0gICAgYm9vbCBub25Jbml0RXJyb3JDaGVjayhp
bnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUpOworICAgIGJv
b2wgbm9uSW5pdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7CiAgICAgYm9vbCBwYXJhbUVycm9y
Q2hlY2soaW50IGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVh
bGlmaWVyLCBUVHlwZSogdHlwZSk7CiAgICAgYm9vbCBleHRlbnNpb25FcnJvckNoZWNrKGludCBs
aW5lLCBjb25zdCBUU3RyaW5nJik7CiAgICAgY29uc3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24o
aW50IGxpbmUsIFRGdW5jdGlvbiogcGZuQ2FsbCwgYm9vbCAqYnVpbHRJbiA9IDApOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgJKHJl
dmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1No
SGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIFRJ
bmZvU2luayYgZ2V0SW5mb1NpbmsoKSB7IHJldHVybiBpbmZvU2luazsgfQogICAgIGNvbnN0IFRW
YXJpYWJsZUluZm9MaXN0JiBnZXRBdHRyaWJzKCkgY29uc3QgeyByZXR1cm4gYXR0cmliczsgfQog
ICAgIGNvbnN0IFRWYXJpYWJsZUluZm9MaXN0JiBnZXRVbmlmb3JtcygpIGNvbnN0IHsgcmV0dXJu
IHVuaWZvcm1zOyB9CisgICAgaW50IGdldE1hcHBlZE5hbWVNYXhMZW5ndGgoKSBjb25zdDsKIAog
cHJvdGVjdGVkOgogICAgIFNoU2hhZGVyVHlwZSBnZXRTaGFkZXJUeXBlKCkgY29uc3QgeyByZXR1
cm4gc2hhZGVyVHlwZTsgfQpAQCAtNzAsOCArNzEsMTIgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
dmFsaWRhdGVMaW1pdGF0aW9ucyhUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gQ29sbGVjdCBp
bmZvIGZvciBhbGwgYXR0cmlicyBhbmQgdW5pZm9ybXMuCiAgICAgdm9pZCBjb2xsZWN0QXR0cmli
c1VuaWZvcm1zKFRJbnRlcm1Ob2RlKiByb290KTsKKyAgICAvLyBNYXAgbG9uZyB2YXJpYWJsZSBu
YW1lcyBpbnRvIHNob3J0ZXIgb25lcy4KKyAgICB2b2lkIG1hcExvbmdWYXJpYWJsZU5hbWVzKFRJ
bnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBUcmFuc2xhdGUgdG8gb2JqZWN0IGNvZGUuCiAgICAg
dmlydHVhbCB2b2lkIHRyYW5zbGF0ZShUSW50ZXJtTm9kZSogcm9vdCkgPSAwOworICAgIC8vIEdl
dCBidWlsdC1pbiBleHRlbnNpb25zIHdpdGggZGVmYXVsdCBiZWhhdmlvci4KKyAgICBjb25zdCBU
RXh0ZW5zaW9uQmVoYXZpb3ImIGdldEV4dGVuc2lvbkJlaGF2aW9yKCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgU2hTaGFkZXJUeXBlIHNoYWRlclR5cGU7CkBAIC04Nyw2ICs5Miw5IEBAIHByaXZh
dGU6CiAgICAgVEluZm9TaW5rIGluZm9TaW5rOyAgLy8gT3V0cHV0IHNpbmsuCiAgICAgVFZhcmlh
YmxlSW5mb0xpc3QgYXR0cmliczsgIC8vIEFjdGl2ZSBhdHRyaWJ1dGVzIGluIHRoZSBjb21waWxl
ZCBzaGFkZXIuCiAgICAgVFZhcmlhYmxlSW5mb0xpc3QgdW5pZm9ybXM7ICAvLyBBY3RpdmUgdW5p
Zm9ybXMgaW4gdGhlIGNvbXBpbGVkIHNoYWRlci4KKworICAgIC8vIFBhaXIgb2YgbG9uZyB2YXJ5
aW5nIHZhcmliYWxlIG5hbWUgPG9yaWdpbmFsTmFtZSwgbWFwcGVkTmFtZT4uCisgICAgVE1hcDxU
U3RyaW5nLCBUU3RyaW5nPiB2YXJ5aW5nTG9uZ05hbWVNYXA7CiB9OwogCiAvLwpAQCAtOTgsNyAr
MTA2LDggQEAgcHJpdmF0ZToKIC8vIGRlc3Ryb3kgdGhlIG1hY2hpbmUgZGVwZW5kZW50IG9iamVj
dHMsIHdoaWNoIGNvbnRhaW4gdGhlCiAvLyBhYm92ZSBtYWNoaW5lIGluZGVwZW5kZW50IGluZm9y
bWF0aW9uLgogLy8KLVRDb21waWxlciogQ29uc3RydWN0Q29tcGlsZXIoU2hTaGFkZXJUeXBlIHR5
cGUsIFNoU2hhZGVyU3BlYyBzcGVjKTsKK1RDb21waWxlciogQ29uc3RydWN0Q29tcGlsZXIoCisg
ICAgU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1dCBv
dXRwdXQpOwogdm9pZCBEZWxldGVDb21waWxlcihUQ29tcGlsZXIqKTsKIAogI2VuZGlmIC8vIF9T
SEhBTkRMRV9JTkNMVURFRF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9TaGFkZXJMYW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw4IEBAIHN0YXRpYyB2b2lkIGdldFZhcmlhYmxlSW5mbyhTaFNoYWRl
ckluZm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGxlbmd0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQqIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hEYXRhVHlwZSogdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBu
YW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciogbWFwcGVkTmFtZSkKIHsKICAgICBpZiAoIWhhbmRsZSB8
fCAhc2l6ZSB8fCAhdHlwZSB8fCAhbmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTksNiArNjAs
OCBAQCBzdGF0aWMgdm9pZCBnZXRWYXJpYWJsZUluZm8oU2hTaGFkZXJJbmZvCiAgICAgKnNpemUg
PSB2YXJJbmZvLnNpemU7CiAgICAgKnR5cGUgPSB2YXJJbmZvLnR5cGU7CiAgICAgc3RyY3B5KG5h
bWUsIHZhckluZm8ubmFtZS5jX3N0cigpKTsKKyAgICBpZiAobWFwcGVkTmFtZSkKKyAgICAgICAg
c3RyY3B5KG1hcHBlZE5hbWUsIHZhckluZm8ubWFwcGVkTmFtZS5jX3N0cigpKTsKIH0KIAogLy8K
QEAgLTEwNywxMiArMTEwLDEzIEBAIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0
SW5SZXMKIC8vIERyaXZlciBjYWxscyB0aGVzZSB0byBjcmVhdGUgYW5kIGRlc3Ryb3kgY29tcGls
ZXIgb2JqZWN0cy4KIC8vCiBTaEhhbmRsZSBTaENvbnN0cnVjdENvbXBpbGVyKFNoU2hhZGVyVHlw
ZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hTaGFkZXJPdXRwdXQgb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTaEJ1aWx0SW5SZXNvdXJjZXMqIHJlc291cmNlcykKIHsKICAgICBpZiAoIUluaXRUaHJlYWQo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBUU2hIYW5kbGVCYXNlKiBiYXNlID0gc3RhdGlj
X2Nhc3Q8VFNoSGFuZGxlQmFzZSo+KENvbnN0cnVjdENvbXBpbGVyKHR5cGUsIHNwZWMpKTsKKyAg
ICBUU2hIYW5kbGVCYXNlKiBiYXNlID0gc3RhdGljX2Nhc3Q8VFNoSGFuZGxlQmFzZSo+KENvbnN0
cnVjdENvbXBpbGVyKHR5cGUsIHNwZWMsIG91dHB1dCkpOwogICAgIFRDb21waWxlciogY29tcGls
ZXIgPSBiYXNlLT5nZXRBc0NvbXBpbGVyKCk7CiAgICAgaWYgKGNvbXBpbGVyID09IDApCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtMTk0LDcgKzE5OCw5IEBAIHZvaWQgU2hHZXRJbmZvKGNvbnN0IFNo
SGFuZGxlIGhhbmRsZSwgU2gKICAgICBjYXNlIFNIX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdU
SDoKICAgICAgICAgKnBhcmFtcyA9IGdldFZhcmlhYmxlTWF4TGVuZ3RoKGNvbXBpbGVyLT5nZXRB
dHRyaWJzKCkpOwogICAgICAgICBicmVhazsKLQorICAgIGNhc2UgU0hfTUFQUEVEX05BTUVfTUFY
X0xFTkdUSDoKKyAgICAgICAgKnBhcmFtcyA9IGNvbXBpbGVyLT5nZXRNYXBwZWROYW1lTWF4TGVu
Z3RoKCk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAg
fQogfQpAQCAtMjM2LDEwICsyNDIsMTEgQEAgdm9pZCBTaEdldEFjdGl2ZUF0dHJpYihjb25zdCBT
aEhhbmRsZSBoYQogICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGxlbmd0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgaW50KiBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICBTaERhdGFU
eXBlKiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1lKQorICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBt
YXBwZWROYW1lKQogewogICAgIGdldFZhcmlhYmxlSW5mbyhTSF9BQ1RJVkVfQVRUUklCVVRFUywK
LSAgICAgICAgICAgICAgICAgICAgaGFuZGxlLCBpbmRleCwgbGVuZ3RoLCBzaXplLCB0eXBlLCBu
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLCBpbmRleCwgbGVuZ3RoLCBzaXplLCB0
eXBlLCBuYW1lLCBtYXBwZWROYW1lKTsKIH0KIAogdm9pZCBTaEdldEFjdGl2ZVVuaWZvcm0oY29u
c3QgU2hIYW5kbGUgaGFuZGxlLApAQCAtMjQ3LDggKzI1NCw5IEBAIHZvaWQgU2hHZXRBY3RpdmVV
bmlmb3JtKGNvbnN0IFNoSGFuZGxlIGgKICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbGVu
Z3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBzaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgU2hEYXRhVHlwZSogdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIq
IG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciogbWFwcGVkTmFtZSkKIHsKICAgICBnZXRWYXJpYWJsZUluZm8oU0hf
QUNUSVZFX1VOSUZPUk1TLAotICAgICAgICAgICAgICAgICAgICBoYW5kbGUsIGluZGV4LCBsZW5n
dGgsIHNpemUsIHR5cGUsIG5hbWUpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUsIGluZGV4
LCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUsIG1hcHBlZE5hbWUpOwogfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckVT
U0wuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1RyYW5zbGF0b3JFU1NMLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmgiCisK
KyNpbmNsdWRlICJjb21waWxlci9PdXRwdXRFU1NMLmgiCisKK1RyYW5zbGF0b3JFU1NMOjpUcmFu
c2xhdG9yRVNTTChTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCisgICAgOiBU
Q29tcGlsZXIodHlwZSwgc3BlYykgeworfQorCit2b2lkIFRyYW5zbGF0b3JFU1NMOjp0cmFuc2xh
dGUoVEludGVybU5vZGUqIHJvb3QpIHsKKyAgICBUSW5mb1NpbmtCYXNlJiBzaW5rID0gZ2V0SW5m
b1NpbmsoKS5vYmo7CisKKyAgICAvLyBXcml0ZSBidWlsdC1pbiBleHRlbnNpb24gYmVoYXZpb3Jz
LgorICAgIHdyaXRlRXh0ZW5zaW9uQmVoYXZpb3IoKTsKKworICAgIC8vIFdyaXRlIHRyYW5zbGF0
ZWQgc2hhZGVyLgorICAgIFRPdXRwdXRFU1NMIG91dHB1dEVTU0woc2luayk7CisgICAgcm9vdC0+
dHJhdmVyc2UoJm91dHB1dEVTU0wpOworfQorCit2b2lkIFRyYW5zbGF0b3JFU1NMOjp3cml0ZUV4
dGVuc2lvbkJlaGF2aW9yKCkgeworICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBnZXRJbmZvU2lu
aygpLm9iajsKKyAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGVuc2lvbkJlaGF2aW9y
ID0gZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKTsKKyAgICBmb3IgKFRFeHRlbnNpb25CZWhhdmlvcjo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IGV4dGVuc2lvbkJlaGF2aW9yLmJlZ2luKCk7CisgICAgICAg
ICBpdGVyICE9IGV4dGVuc2lvbkJlaGF2aW9yLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgc2lu
ayA8PCAiI2V4dGVuc2lvbiAiIDw8IGl0ZXItPmZpcnN0IDw8ICIgOiAiCisgICAgICAgICAgICAg
PDwgZ2V0QmVoYXZpb3JTdHJpbmcoaXRlci0+c2Vjb25kKSA8PCAiXG4iOworICAgIH0KK30KClBy
b3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9U
cmFuc2xhdG9yRVNTTC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExG
CgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JF
U1NMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1RyYW5zbGF0b3JFU1NMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckVTU0wuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SRVNT
TF9IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SRVNTTF9IXworCisjaW5jbHVkZSAiY29t
cGlsZXIvU2hIYW5kbGUuaCIKKworY2xhc3MgVHJhbnNsYXRvckVTU0wgOiBwdWJsaWMgVENvbXBp
bGVyIHsKK3B1YmxpYzoKKyAgICBUcmFuc2xhdG9yRVNTTChTaFNoYWRlclR5cGUgdHlwZSwgU2hT
aGFkZXJTcGVjIHNwZWMpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIHRyYW5zbGF0
ZShUSW50ZXJtTm9kZSogcm9vdCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB3cml0ZUV4dGVuc2lv
bkJlaGF2aW9yKCk7Cit9OworCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JFU1NMX0hf
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvVHJhbnNsYXRvckVTU0wuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsg
TEYKCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFsaWRhdGVM
aW1pdGF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3BwCShyZXZpc2lvbiA4OTI4NikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTcsNiArMTcsMTcgQEAgYm9vbCBJc0xvb3BJbmRleChjb25z
dCBUSW50ZXJtU3ltYm9sKiBzeQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBNYXJrTG9v
cEZvclVucm9sbChjb25zdCBUSW50ZXJtU3ltYm9sKiBzeW1ib2wsIFRMb29wU3RhY2smIHN0YWNr
KSB7CisgICAgZm9yIChUTG9vcFN0YWNrOjppdGVyYXRvciBpID0gc3RhY2suYmVnaW4oKTsgaSAh
PSBzdGFjay5lbmQoKTsgKytpKSB7CisgICAgICAgIGlmIChpLT5pbmRleC5pZCA9PSBzeW1ib2wt
PmdldElkKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChpLT5sb29wICE9IE5VTEwpOworICAgICAg
ICAgICAgaS0+bG9vcC0+c2V0VW5yb2xsRmxhZyh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KKyAgICBVTlJFQUNIQUJMRSgpOworfQorCiAvLyBUcmF2ZXJzZXMg
YSBub2RlIHRvIGNoZWNrIGlmIGl0IHJlcHJlc2VudHMgYSBjb25zdGFudCBpbmRleCBleHByZXNz
aW9uLgogLy8gRGVmaW5pdGlvbjoKIC8vIGNvbnN0YW50LWluZGV4LWV4cHJlc3Npb25zIGFyZSBh
IHN1cGVyc2V0IG9mIGNvbnN0YW50LWV4cHJlc3Npb25zLgpAQCAtNTQsNiArNjUsNDggQEAgcHJp
dmF0ZToKICAgICBib29sIG1WYWxpZDsKICAgICBjb25zdCBUTG9vcFN0YWNrJiBtTG9vcFN0YWNr
OwogfTsKKworLy8gVHJhdmVyc2VzIGEgbm9kZSB0byBjaGVjayBpZiBpdCB1c2VzIGEgbG9vcCBp
bmRleC4KKy8vIElmIGFuIGludCBsb29wIGluZGV4IGlzIHVzZWQgaW4gaXRzIGJvZHkgYXMgYSBz
YW1wbGVyIGFycmF5IGluZGV4LAorLy8gbWFyayB0aGUgbG9vcCBmb3IgdW5yb2xsLgorY2xhc3Mg
VmFsaWRhdGVMb29wSW5kZXhFeHByIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgeworcHVibGlj
OgorICAgIFZhbGlkYXRlTG9vcEluZGV4RXhwcihUTG9vcFN0YWNrJiBzdGFjaykKKyAgICAgICAg
OiBtVXNlc0Zsb2F0TG9vcEluZGV4KGZhbHNlKSwKKyAgICAgICAgICBtVXNlc0ludExvb3BJbmRl
eChmYWxzZSksCisgICAgICAgICAgbUxvb3BTdGFjayhzdGFjaykge30KKworICAgIGJvb2wgdXNl
c0Zsb2F0TG9vcEluZGV4KCkgY29uc3QgeyByZXR1cm4gbVVzZXNGbG9hdExvb3BJbmRleDsgfQor
ICAgIGJvb2wgdXNlc0ludExvb3BJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1Vc2VzSW50TG9vcElu
ZGV4OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogc3lt
Ym9sKSB7CisgICAgICAgIGlmIChJc0xvb3BJbmRleChzeW1ib2wsIG1Mb29wU3RhY2spKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHN5bWJvbC0+Z2V0QmFzaWNUeXBlKCkpIHsKKyAgICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICBtVXNlc0Zsb2F0TG9vcEluZGV4ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6
CisgICAgICAgICAgICAgICAgbVVzZXNJbnRMb29wSW5kZXggPSB0cnVlOworICAgICAgICAgICAg
ICAgIE1hcmtMb29wRm9yVW5yb2xsKHN5bWJvbCwgbUxvb3BTdGFjayk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9uKikge30KKyAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkqKSB7IHJldHVybiB0cnVl
OyB9CisgICAgdmlydHVhbCBib29sIHZpc2l0VW5hcnkoVmlzaXQsIFRJbnRlcm1VbmFyeSopIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQsIFRJ
bnRlcm1TZWxlY3Rpb24qKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHZpc2l0
QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKikgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCB2aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29wKikgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCwgVEludGVybUJyYW5jaCop
IHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1Vc2VzRmxvYXRMb29wSW5k
ZXg7CisgICAgYm9vbCBtVXNlc0ludExvb3BJbmRleDsKKyAgICBUTG9vcFN0YWNrJiBtTG9vcFN0
YWNrOworfTsKIH0gIC8vIG5hbWVzcGFjZQogCiBWYWxpZGF0ZUxpbWl0YXRpb25zOjpWYWxpZGF0
ZUxpbWl0YXRpb25zKFNoU2hhZGVyVHlwZSBzaGFkZXJUeXBlLApAQCAtODAsNyArMTMzLDI4IEBA
IGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmlzaXRCaW5hcnkoVmkKICAgICAvLyBDaGVjayBp
bmRleGluZy4KICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpIHsKICAgICAgIGNhc2UgRU9wSW5k
ZXhEaXJlY3Q6CisgICAgICAgIHZhbGlkYXRlSW5kZXhpbmcobm9kZSk7CisgICAgICAgIGJyZWFr
OwogICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OgorI2lmIGRlZmluZWQoX19BUFBMRV9fKQor
ICAgICAgICAvLyBMb29wIHVucm9sbGluZyBpcyBhIHdvcmstYXJvdW5kIGZvciBhIE1hYyBDZyBj
b21waWxlciBidWcgd2hlcmUgaXQKKyAgICAgICAgLy8gY3Jhc2hlcyB3aGVuIGEgc2FtcGxlciBh
cnJheSdzIGluZGV4IGlzIGFsc28gdGhlIGxvb3AgaW5kZXguCisgICAgICAgIC8vIE9uY2UgQXBw
bGUgZml4ZXMgdGhpcyBidWcsIHdlIHNob3VsZCByZW1vdmUgdGhlIGNvZGUgaW4gdGhpcyBDTC4K
KyAgICAgICAgLy8gU2VlIGh0dHA6Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzQzMzEwNDgvLgor
ICAgICAgICBpZiAoKG5vZGUtPmdldExlZnQoKSAhPSBOVUxMKSAmJiAobm9kZS0+Z2V0UmlnaHQo
KSAhPSBOVUxMKSAmJgorICAgICAgICAgICAgKG5vZGUtPmdldExlZnQoKS0+Z2V0QXNTeW1ib2xO
b2RlKCkpKSB7CisgICAgICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBub2RlLT5nZXRM
ZWZ0KCktPmdldEFzU3ltYm9sTm9kZSgpOworICAgICAgICAgICAgaWYgKElzU2FtcGxlcihzeW1i
b2wtPmdldEJhc2ljVHlwZSgpKSAmJiBzeW1ib2wtPmlzQXJyYXkoKSkgeworICAgICAgICAgICAg
ICAgIFZhbGlkYXRlTG9vcEluZGV4RXhwciB2YWxpZGF0ZShtTG9vcFN0YWNrKTsKKyAgICAgICAg
ICAgICAgICBub2RlLT5nZXRSaWdodCgpLT50cmF2ZXJzZSgmdmFsaWRhdGUpOworICAgICAgICAg
ICAgICAgIGlmICh2YWxpZGF0ZS51c2VzRmxvYXRMb29wSW5kZXgoKSkgeworICAgICAgICAgICAg
ICAgICAgICBlcnJvcihub2RlLT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJzYW1wbGVyIGFycmF5IGluZGV4IGlzIGZsb2F0IGxvb3AgaW5kZXgiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZm9yIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisjZW5kaWYKICAgICAgICAgdmFsaWRhdGVJbmRleGluZyhub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OiBicmVhazsKQEAgLTEyMCw2ICsxOTQsNyBAQCBib29s
IFZhbGlkYXRlTGltaXRhdGlvbnM6OnZpc2l0TG9vcChWaXNpCiAKICAgICBUTG9vcEluZm8gaW5m
bzsKICAgICBtZW1zZXQoJmluZm8sIDAsIHNpemVvZihUTG9vcEluZm8pKTsKKyAgICBpbmZvLmxv
b3AgPSBub2RlOwogICAgIGlmICghdmFsaWRhdGVGb3JMb29wSGVhZGVyKG5vZGUsICZpbmZvKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmgJKHJldmlz
aW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhbGlk
YXRlTGltaXRhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsNyBAQCBzdHJ1Y3Qg
VExvb3BJbmZvIHsKICAgICBzdHJ1Y3QgVEluZGV4IHsKICAgICAgICAgaW50IGlkOyAgLy8gc3lt
Ym9sIGlkLgogICAgIH0gaW5kZXg7CisgICAgVEludGVybUxvb3AqIGxvb3A7CiB9OwogdHlwZWRl
ZiBUVmVjdG9yPFRMb29wSW5mbz4gVExvb3BTdGFjazsKIApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHJldmlz
aW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Zhcmlh
YmxlSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDMyICs3MCwzNyBAQCBzdGF0aWMgU2hE
YXRhVHlwZSBnZXRWYXJpYWJsZURhdGFUeXBlKGNvCiAKIHN0YXRpYyB2b2lkIGdldEJ1aWx0SW5W
YXJpYWJsZUluZm8oY29uc3QgVFR5cGUmIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG1hcHBlZE5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRWYXJpYWJsZUluZm9MaXN0JiBpbmZvTGlzdCk7CiBzdGF0aWMgdm9p
ZCBnZXRVc2VyRGVmaW5lZFZhcmlhYmxlSW5mbyhjb25zdCBUVHlwZSYgdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nJiBtYXBwZWRO
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFZhcmlhYmxlSW5m
b0xpc3QmIGluZm9MaXN0KTsKIAogLy8gUmV0dXJucyBpbmZvIGZvciBhbiBhdHRyaWJ1dGUgb3Ig
dW5pZm9ybS4KIHN0YXRpYyB2b2lkIGdldFZhcmlhYmxlSW5mbyhjb25zdCBUVHlwZSYgdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nJiBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG1hcHBlZE5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIGluZm9MaXN0KQogewogICAg
IGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICBpZiAodHlw
ZS5pc0FycmF5KCkpIHsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHlwZS5nZXRB
cnJheVNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgVFN0cmluZyBsbmFtZSA9IG5hbWUg
KyBhcnJheUJyYWNrZXRzKGkpOwotICAgICAgICAgICAgICAgIGdldFVzZXJEZWZpbmVkVmFyaWFi
bGVJbmZvKHR5cGUsIGxuYW1lLCBpbmZvTGlzdCk7CisgICAgICAgICAgICAgICAgVFN0cmluZyBs
bWFwcGVkTmFtZSA9IG1hcHBlZE5hbWUgKyBhcnJheUJyYWNrZXRzKGkpOworICAgICAgICAgICAg
ICAgIGdldFVzZXJEZWZpbmVkVmFyaWFibGVJbmZvKHR5cGUsIGxuYW1lLCBsbWFwcGVkTmFtZSwg
aW5mb0xpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Z2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8odHlwZSwgbmFtZSwgaW5mb0xpc3QpOworICAgICAg
ICAgICAgZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8odHlwZSwgbmFtZSwgbWFwcGVkTmFtZSwg
aW5mb0xpc3QpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZ2V0QnVpbHRJblZh
cmlhYmxlSW5mbyh0eXBlLCBuYW1lLCBpbmZvTGlzdCk7CisgICAgICAgIGdldEJ1aWx0SW5WYXJp
YWJsZUluZm8odHlwZSwgbmFtZSwgbWFwcGVkTmFtZSwgaW5mb0xpc3QpOwogICAgIH0KIH0KIAog
dm9pZCBnZXRCdWlsdEluVmFyaWFibGVJbmZvKGNvbnN0IFRUeXBlJiB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFN0cmluZyYgbWFwcGVkTmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgaW5mb0xpc3QpCiB7CiAgICAgQVNTRVJUKHR5
cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KTsKQEAgLTEwMyw5ICsxMDgsMTEgQEAgdm9p
ZCBnZXRCdWlsdEluVmFyaWFibGVJbmZvKGNvbnN0IFRUeXBlJgogICAgIFRWYXJpYWJsZUluZm8g
dmFySW5mbzsKICAgICBpZiAodHlwZS5pc0FycmF5KCkpIHsKICAgICAgICAgdmFySW5mby5uYW1l
ID0gKG5hbWUgKyAiWzBdIikuY19zdHIoKTsKKyAgICAgICAgdmFySW5mby5tYXBwZWROYW1lID0g
KG1hcHBlZE5hbWUgKyAiWzBdIikuY19zdHIoKTsKICAgICAgICAgdmFySW5mby5zaXplID0gdHlw
ZS5nZXRBcnJheVNpemUoKTsKICAgICB9IGVsc2UgewogICAgICAgICB2YXJJbmZvLm5hbWUgPSBu
YW1lLmNfc3RyKCk7CisgICAgICAgIHZhckluZm8ubWFwcGVkTmFtZSA9IG1hcHBlZE5hbWUuY19z
dHIoKTsKICAgICAgICAgdmFySW5mby5zaXplID0gMTsKICAgICB9CiAgICAgdmFySW5mby50eXBl
ID0gZ2V0VmFyaWFibGVEYXRhVHlwZSh0eXBlKTsKQEAgLTExNCwxNiArMTIxLDE3IEBAIHZvaWQg
Z2V0QnVpbHRJblZhcmlhYmxlSW5mbyhjb25zdCBUVHlwZSYKIAogdm9pZCBnZXRVc2VyRGVmaW5l
ZFZhcmlhYmxlSW5mbyhjb25zdCBUVHlwZSYgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFN0cmluZyYgbWFwcGVkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIGluZm9MaXN0KQogewogICAgIEFTU0VSVCh0eXBl
LmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCk7CiAKLSAgICBUU3RyaW5nIGxuYW1lID0gbmFt
ZSArICIuIjsKICAgICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7
CiAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsK
ICAgICAgICAgZ2V0VmFyaWFibGVJbmZvKCpmaWVsZFR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsbmFtZSArIGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lICsgIi4iICsgZmllbGRUeXBlLT5nZXRGaWVsZE5hbWUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgKyAiLiIgKyBmaWVsZFR5cGUtPmdldEZpZWxkTmFt
ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xpc3QpOwogICAgIH0KIH0KQEAgLTE4
Niw3ICsxOTQsOSBAQCBib29sIENvbGxlY3RBdHRyaWJzVW5pZm9ybXM6OnZpc2l0QWdncmVnCiAg
ICAgICAgICAgICAgICAgLy8gY2Fubm90IGJlIGluaXRpYWxpemVkIGluIGEgc2hhZGVyLCB3ZSBt
dXN0IGhhdmUgb25seQogICAgICAgICAgICAgICAgIC8vIFRJbnRlcm1TeW1ib2wgbm9kZXMgaW4g
dGhlIHNlcXVlbmNlLgogICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYWJsZSAhPSBOVUxMKTsK
LSAgICAgICAgICAgICAgICBnZXRWYXJpYWJsZUluZm8odmFyaWFibGUtPmdldFR5cGUoKSwgdmFy
aWFibGUtPmdldFN5bWJvbCgpLAorICAgICAgICAgICAgICAgIGdldFZhcmlhYmxlSW5mbyh2YXJp
YWJsZS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+Z2V0T3JpZ2luYWxTeW1ib2woKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPmdldFN5bWJvbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmZvTGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmgJKHJldmlzaW9u
IDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxl
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsMTIgQEAKIC8vCi0vLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCiAvLwogCisjaWZuZGVmIENPTVBJTEVSX1ZBUklBQkxFX0lORk9fSF8K
KyNkZWZpbmUgQ09NUElMRVJfVkFSSUFCTEVfSU5GT19IXworCiAjaW5jbHVkZSAiR0xTTEFORy9T
aGFkZXJMYW5nLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKQEAgLTEx
LDYgKzE0LDcgQEAKIC8vIEl0IGlzIGN1cnJlbnRseSBiZWluZyB1c2VkIHRvIHN0b3JlIGluZm8g
YWJvdXQgYWN0aXZlIGF0dHJpYnMgYW5kIHVuaWZvcm1zLgogc3RydWN0IFRWYXJpYWJsZUluZm8g
ewogICAgIFRQZXJzaXN0U3RyaW5nIG5hbWU7CisgICAgVFBlcnNpc3RTdHJpbmcgbWFwcGVkTmFt
ZTsKICAgICBTaERhdGFUeXBlIHR5cGU7CiAgICAgaW50IHNpemU7CiB9OwpAQCAtMzYsMyArNDAs
NCBAQCBwcml2YXRlOgogICAgIFRWYXJpYWJsZUluZm9MaXN0JiBtVW5pZm9ybXM7CiB9OwogCisj
ZW5kaWYgIC8vIENPTVBJTEVSX1ZBUklBQkxFX0lORk9fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9WZXJzaW9uR0xTTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZlcnNpb25HTFNMLmNwcAkocmV2aXNp
b24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmVyc2lv
bkdMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05LDEzICs5LDE3IEBACiBzdGF0aWMgY29uc3Qg
aW50IEdMU0xfVkVSU0lPTl8xMTAgPSAxMTA7CiBzdGF0aWMgY29uc3QgaW50IEdMU0xfVkVSU0lP
Tl8xMjAgPSAxMjA7CiAKLS8vIFdlIG5lZWQgdG8gc2NhbiBmb3IgdHdvIHRoaW5nczoKKy8vIFdl
IG5lZWQgdG8gc2NhbiBmb3IgdGhyZWUgdGhpbmdzOgogLy8gMS4gImludmFyaWFudCIga2V5d29y
ZDogVGhpcyBjYW4gb2NjdXIgaW4gYm90aCAtIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycwog
Ly8gICAgYnV0IG9ubHkgYXQgdGhlIGdsb2JhbCBzY29wZS4KIC8vIDIuICJnbF9Qb2ludENvb3Jk
IiBidWlsdC1pbiB2YXJpYWJsZTogVGhpcyBjYW4gb25seSBvY2N1ciBpbiBmcmFnbWVudCBzaGFk
ZXIKIC8vICAgIGJ1dCBpbnNpZGUgYW55IHNjb3BlLgotLy8gU28gd2UgbmVlZCB0byBzY2FuIHRo
ZSBlbnRpcmUgZnJhZ21lbnQgc2hhZGVyIGJ1dCBvbmx5IHRoZSBnbG9iYWwgc2NvcGUKLS8vIG9m
IHZlcnRleCBzaGFkZXIuCisvLyAzLiBDYWxsIHRvIGEgbWF0cml4IGNvbnN0cnVjdG9yIHdpdGgg
YW5vdGhlciBtYXRyaXggYXMgYXJndW1lbnQuCisvLyAgICAoVGhlc2UgY29uc3RydWN0b3JzIHdl
cmUgcmVzZXJ2ZWQgaW4gR0xTTCB2ZXJzaW9uIDEuMTAuKQorLy8KKy8vIElmIGl0IHdlcmVuJ3Qg
Zm9yICgzKSB0aGVuIHdlIHdvdWxkIG9ubHkgbmVlZCB0byBzY2FuIHRoZSBnbG9iYWwKKy8vIHNj
b3BlIG9mIHRoZSB2ZXJ0ZXggc2hhZGVyLiBIb3dldmVyLCB3ZSBuZWVkIHRvIHNjYW4gdGhlIGVu
dGlyZQorLy8gc2hhZGVyIGluIGJvdGggY2FzZXMuCiAvLwogLy8gVE9ETyhhbG9rcCk6IFRoZSBm
b2xsb3dpbmcgdHdvIGNhc2VzIG9mIGludmFyaWFudCBkZWNhbGFyYXRpb24gZ2V0IGxvc3QKIC8v
IGR1cmluZyBwYXJzaW5nIC0gdGhleSBkbyBub3QgZ2V0IGNhcnJpZWQgb3ZlciB0byB0aGUgaW50
ZXJtZWRpYXRlIHRyZWUuCkBAIC0zNCw0MCArMzgsMzIgQEAgVFZlcnNpb25HTFNMOjpUVmVyc2lv
bkdMU0woU2hTaGFkZXJUeXBlIAogCiB2b2lkIFRWZXJzaW9uR0xTTDo6dmlzaXRTeW1ib2woVElu
dGVybVN5bWJvbCogbm9kZSkKIHsKLSAgICBBU1NFUlQobVNoYWRlclR5cGUgPT0gU0hfRlJBR01F
TlRfU0hBREVSKTsKLQogICAgIGlmIChub2RlLT5nZXRTeW1ib2woKSA9PSAiZ2xfUG9pbnRDb29y
ZCIpCiAgICAgICAgIHVwZGF0ZVZlcnNpb24oR0xTTF9WRVJTSU9OXzEyMCk7CiB9CiAKIHZvaWQg
VFZlcnNpb25HTFNMOjp2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qKQog
ewotICAgIEFTU0VSVChtU2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpOwogfQogCiBi
b29sIFRWZXJzaW9uR0xTTDo6dmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkqKQogewot
ICAgIEFTU0VSVChtU2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBib29sIFRWZXJzaW9uR0xTTDo6dmlzaXRVbmFyeShWaXNpdCwgVEludGVy
bVVuYXJ5KikKIHsKLSAgICBBU1NFUlQobVNoYWRlclR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVS
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBUVmVyc2lvbkdMU0w6OnZpc2l0U2VsZWN0
aW9uKFZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uKikKIHsKLSAgICBBU1NFUlQobVNoYWRlclR5cGUg
PT0gU0hfRlJBR01FTlRfU0hBREVSKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBUVmVy
c2lvbkdMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKiBub2RlKQog
ewotICAgIC8vIFdlIG5lZWQgdG8gc2NhbiB0aGUgZW50aXJlIGZyYWdtZW50IHNoYWRlciBidXQg
b25seSB0aGUgZ2xvYmFsIHNjb3BlCi0gICAgLy8gb2YgdmVydGV4IHNoYWRlci4KLSAgICBib29s
IHZpc2l0Q2hpbGRyZW4gPSBtU2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIgPyB0cnVl
IDogZmFsc2U7CisgICAgYm9vbCB2aXNpdENoaWxkcmVuID0gdHJ1ZTsKIAogICAgIHN3aXRjaCAo
bm9kZS0+Z2V0T3AoKSkgewogICAgICAgY2FzZSBFT3BTZXF1ZW5jZToKQEAgLTgzLDYgKzc5LDE5
IEBAIGJvb2wgVFZlcnNpb25HTFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKICAgICAgIH0KKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MjoKKyAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MzoKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NDog
eworICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UmIHNlcXVlbmNlID0gbm9kZS0+Z2V0U2Vx
dWVuY2UoKTsKKyAgICAgICAgaWYgKHNlcXVlbmNlLnNpemUoKSA9PSAxKSB7CisgICAgICAgICAg
VEludGVybVR5cGVkKiB0eXBlZCA9IHNlcXVlbmNlLmZyb250KCktPmdldEFzVHlwZWQoKTsKKyAg
ICAgICAgICBpZiAodHlwZWQgJiYgdHlwZWQtPmlzTWF0cml4KCkpIHsKKyAgICAgICAgICAgIHVw
ZGF0ZVZlcnNpb24oR0xTTF9WRVJTSU9OXzEyMCk7CisgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgICAgfQorCiAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CiAK
QEAgLTkxLDEzICsxMDAsMTEgQEAgYm9vbCBUVmVyc2lvbkdMU0w6OnZpc2l0QWdncmVnYXRlKFZp
c2l0LAogCiBib29sIFRWZXJzaW9uR0xTTDo6dmlzaXRMb29wKFZpc2l0LCBUSW50ZXJtTG9vcCop
CiB7Ci0gICAgQVNTRVJUKG1TaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUik7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgVFZlcnNpb25HTFNMOjp2aXNpdEJyYW5jaChWaXNpdCwg
VEludGVybUJyYW5jaCopCiB7Ci0gICAgQVNTRVJUKG1TaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5U
X1NIQURFUik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9WZXJzaW9uR0xTTC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WZXJzaW9uR0xTTC5oCShyZXZpc2lvbiA4OTI4
NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WZXJzaW9uR0xTTC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMTUgQEAKIC8vICAgLSBpbnZhcmlhbnQga2V5
d29yZCBhbmQgaXRzIHN1cHBvcnQuCiAvLyAgIC0gYysrIHN0eWxlIG5hbWUgaGlkaW5nIHJ1bGVz
LgogLy8gICAtIGJ1aWx0LWluIHZhcmlhYmxlIGdsX1BvaW50Q29vcmQgZm9yIGZyYWdtZW50IHNo
YWRlcnMuCisvLyAgIC0gbWF0cml4IGNvbnN0cnVjdG9ycyB0YWtpbmcgbWF0cml4IGFzIGFyZ3Vt
ZW50LgogLy8KIGNsYXNzIFRWZXJzaW9uR0xTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsK
IHB1YmxpYzoKICAgICBUVmVyc2lvbkdMU0woU2hTaGFkZXJUeXBlIHR5cGUpOwogCi0gICAgLy8g
UmV0dXJucyAxMjAgaWYgImludmFyaWFudCIga2V5d29yZCBvciAiZ2xfUG9pbnRDb29yZCIgaXMg
dXNlZAotICAgIC8vIGluIHRoZSBzaGFkZXIuIEVsc2UgMTEwIGlzIHJldHVybmVkLgorICAgIC8v
IFJldHVybnMgMTIwIGlmICJpbnZhcmlhbnQiIGtleXdvcmQsICJnbF9Qb2ludENvb3JkIiwgb3IK
KyAgICAvLyBtYXRyaXgvbWF0cml4IGNvbnN0cnVjdG9ycyBhcmUgdXNlZCBpbiB0aGUgc2hhZGVy
LiBFbHNlIDExMCBpcworICAgIC8vIHJldHVybmVkLgogICAgIGludCBnZXRWZXJzaW9uKCkgeyBy
ZXR1cm4gbVZlcnNpb247IH0KIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJt
U3ltYm9sKik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xz
bGFuZy55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9nbHNsYW5nLnkJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2dsc2xhbmcueQkod29ya2luZyBjb3B5KQpAQCAtNTkxLDE3ICs1OTEsMTAg
QEAgZnVuY3Rpb25fY2FsbF9oZWFkZXIKIC8vIEdyYW1tYXIgTm90ZTogIENvbnN0cnVjdG9ycyBs
b29rIGxpa2UgZnVuY3Rpb25zLCBidXQgYXJlIHJlY29nbml6ZWQgYXMgdHlwZXMuCiAKIGZ1bmN0
aW9uX2lkZW50aWZpZXIKLSAgICA6IHR5cGVfc3BlY2lmaWVyIHsKKyAgICA6IHR5cGVfc3BlY2lm
aWVyX25vbmFycmF5IHsKICAgICAgICAgLy8KICAgICAgICAgLy8gQ29uc3RydWN0b3IKICAgICAg
ICAgLy8KLSAgICAgICAgaWYgKCQxLmFycmF5KSB7Ci0gICAgICAgICAgICAvLyBDb25zdHJ1Y3Rv
cnMgZm9yIGFycmF5cyBhcmUgbm90IGFsbG93ZWQuCi0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5cGUiLCAiYXJyYXkiLCAiIik7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAkMS5zZXRBcnJheShm
YWxzZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBUT3BlcmF0b3Igb3AgPSBFT3BOdWxsOwogICAg
ICAgICBpZiAoJDEudXNlckRlZikgewogICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RTdHJ1
Y3Q7CkBAIC0xMTc2LDE2ICsxMTY5LDEwIEBAIHBhcmFtZXRlcl90eXBlX3NwZWNpZmllcgogaW5p
dF9kZWNsYXJhdG9yX2xpc3QKICAgICA6IHNpbmdsZV9kZWNsYXJhdGlvbiB7CiAgICAgICAgICQk
ID0gJDE7Ci0gICAgICAgIAotICAgICAgICBpZiAoJCQudHlwZS5wcmVjaXNpb24gPT0gRWJwVW5k
ZWZpbmVkKSB7Ci0gICAgICAgICAgICAkJC50eXBlLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmdldERlZmF1bHRQcmVjaXNpb24oJDEudHlwZS50eXBlKTsKLSAgICAgICAgICAgIGlm
IChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCQxLmxpbmUsICQkLnR5cGUucHJlY2lzaW9u
LCAkMS50eXBlLnR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xp
c3QgQ09NTUEgSURFTlRJRklFUiB7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlwZSksICQzLmxp
bmUpLCAkMy5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDMuc3RyaW5nLCBUVHlwZSgkMS50eXBlKSwgJDMu
bGluZSk7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIHN5bWJvbCwgJDMubGluZSk7CiAgICAgICAg
IAogICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMy5saW5l
LCAkJC50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTExOTMsOCAr
MTE4MCwxMSBAQCBpbml0X2RlY2xhcmF0b3JfbGlzdAogICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdENvbnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5p
dEVycm9yQ2hlY2soJDMubGluZSwgKiQzLnN0cmluZywgJCQudHlwZSkpCisgICAgICAgIFRWYXJp
YWJsZSogdmFyaWFibGUgPSAwOworICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hl
Y2soJDMubGluZSwgKiQzLnN0cmluZywgJCQudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICBpZiAoc3ltYm9sICYmIHZhcmlhYmxlKQorICAg
ICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgfQog
ICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQg
UklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJv
ckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQpAQCAtMTIzMCwxMiArMTIyMCwxMiBAQCBpbml0X2Rl
Y2xhcmF0b3JfbGlzdAogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hl
Y2soJDQubGluZSwgJDUsIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7Ci0gICAgICAgICAg
ICBUVmFyaWFibGUqIHZhcmlhYmxlOworICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9
IDA7CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQ0LmxpbmUsICok
My5zdHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoJDEudHlwZSk7CiAgICAg
ICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5v
ZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgdHlwZSwg
JDMubGluZSksICQzLmxpbmUpOworICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgp
IDogMCwgKiQzLnN0cmluZywgdHlwZSwgJDMubGluZSksICQzLmxpbmUpOwogICAgICAgICB9CiAg
ICAgfQogICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBFUVVBTCBp
bml0aWFsaXplciB7CkBAIC0xMjY2LDcgKzEyNTYsOCBAQCBzaW5nbGVfZGVjbGFyYXRpb24KICAg
ICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoJDEpLCAk
MS5saW5lKSwgJDEubGluZSk7CiAgICAgfQogICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURF
TlRJRklFUiB7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQy
LnN0cmluZywgVFR5cGUoJDEpLCAkMi5saW5lKSwgJDIubGluZSk7CisgICAgICAgIFRJbnRlcm1T
eW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0
cmluZywgVFR5cGUoJDEpLCAkMi5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAkMi5saW5lKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQy
LmxpbmUsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwpAQCAtMTI3
NiwyOCArMTI2NywxOSBAQCBzaW5nbGVfZGVjbGFyYXRpb24KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgJCQudHlwZSA9ICQxOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JD
aGVjaygkMi5saW5lLCAqJDIuc3RyaW5nLCAkJC50eXBlKSkKKyAgICAgICAgVFZhcmlhYmxlKiB2
YXJpYWJsZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygkMi5s
aW5lLCAqJDIuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CisgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCisgICAgICAgICAg
ICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICB9CiAgICAgfCBm
dWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VU
IHsKLSAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1h
a2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5n
LCBUVHlwZSgkMSksICQyLmxpbmUpLCAkMi5saW5lKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLQotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENv
bnN0RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nLCAkMSkpCi0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJ1bnNpemVk
IGFycmF5IGRlY2xhcmF0aW9ucyBub3Qgc3VwcG9ydGVkIiwgJDIuc3RyaW5nLT5jX3N0cigpLCAi
Iik7CisgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAorICAgICAgICBUSW50ZXJtU3ltYm9s
KiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcs
IFRUeXBlKCQxKSwgJDIubGluZSk7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7CiAgICAgICAg
ICQkLnR5cGUgPSAkMTsKLQotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVj
aygkMy5saW5lLCAkMSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxp
bmUsICQxKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAkMS5zZXRBcnJheSh0cnVlKTsKLSAgICAgICAgICAgIFRWYXJpYWJsZSog
dmFyaWFibGU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQzLmxp
bmUsICokMi5zdHJpbmcsICQxLCB2YXJpYWJsZSkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICB9CiAgICAgfQogICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUg
SURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VU
IHsKICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCQxKTsKQEAgLTEzMDUsNyArMTI4Nyw4IEBA
IHNpbmdsZV9kZWNsYXJhdGlvbgogICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JD
aGVjaygkMi5saW5lLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dy
ZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIHR5cGUsICQyLmxpbmUpLCAkMi5saW5l
KTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCB0eXBlLCAkMi5saW5lKTsKKyAgICAgICAgJCQuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9s
LCAkMi5saW5lKTsKICAgICAgICAgCiAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKQEAgLTEzMjMsOSArMTMwNiwxMSBAQCBzaW5nbGVfZGVjbGFyYXRpb24KICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICQxLnNldEFycmF5KHRydWUs
IHNpemUpOwotICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKKyAgICAgICAgICAgIFRW
YXJpYWJsZSogdmFyaWFibGUgPSAwOwogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJy
b3JDaGVjaygkMy5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQogICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1i
b2wpCisgICAgICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQo
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElG
SUVSIEVRVUFMIGluaXRpYWxpemVyIHsKQEAgLTE0OTEsNiArMTQ3NiwxMyBAQCB0eXBlX3F1YWxp
ZmllcgogdHlwZV9zcGVjaWZpZXIKICAgICA6IHR5cGVfc3BlY2lmaWVyX25vX3ByZWMgewogICAg
ICAgICAkJCA9ICQxOworCisgICAgICAgIGlmICgkJC5wcmVjaXNpb24gPT0gRWJwVW5kZWZpbmVk
KSB7CisgICAgICAgICAgICAkJC5wcmVjaXNpb24gPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXRE
ZWZhdWx0UHJlY2lzaW9uKCQxLnR5cGUpOworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNp
c2lvbkVycm9yQ2hlY2soJDEubGluZSwgJCQucHJlY2lzaW9uLCAkMS50eXBlKSkgeworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQog
ICAgIH0KICAgICB8IHByZWNpc2lvbl9xdWFsaWZpZXIgdHlwZV9zcGVjaWZpZXJfbm9fcHJlYyB7
CiAgICAgICAgICQkID0gJDI7CkBAIC0xNjk0LDYgKzE2ODYsNyBAQCBzdHJ1Y3RfZGVjbGFyYXRp
b24KICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgkMS50eXBlKTsKICAgICAgICAgICAg
IHR5cGUtPnNldE5vbWluYWxTaXplKCQxLnNpemUpOwogICAgICAgICAgICAgdHlwZS0+c2V0TWF0
cml4KCQxLm1hdHJpeCk7CisgICAgICAgICAgICB0eXBlLT5zZXRQcmVjaXNpb24oJDEucHJlY2lz
aW9uKTsKIAogICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgYXJyYXlzIG9mIGFycmF5cwogICAg
ICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkgewpAQCAtMTc3MCw4ICsxNzYzLDEwIEBAIHNp
bXBsZV9zdGF0ZW1lbnQKIGNvbXBvdW5kX3N0YXRlbWVudAogICAgIDogTEVGVF9CUkFDRSBSSUdI
VF9CUkFDRSB7ICQkID0gMDsgfQogICAgIHwgTEVGVF9CUkFDRSB7IGNvbnRleHQtPnN5bWJvbFRh
YmxlLnB1c2goKTsgfSBzdGF0ZW1lbnRfbGlzdCB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgp
OyB9IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgaWYgKCQzICE9IDApCisgICAgICAgIGlmICgkMyAh
PSAwKSB7CiAgICAgICAgICAgICAkMy0+c2V0T3AoRU9wU2VxdWVuY2UpOworICAgICAgICAgICAg
JDMtPnNldEVuZExpbmUoJDUubGluZSk7CisgICAgICAgIH0KICAgICAgICAgJCQgPSAkMzsKICAg
ICB9CiAgICAgOwpAQCAtMTc4Nyw4ICsxNzgyLDEwIEBAIGNvbXBvdW5kX3N0YXRlbWVudF9ub19u
ZXdfc2NvcGUKICAgICAgICAgJCQgPSAwOwogICAgIH0KICAgICB8IExFRlRfQlJBQ0Ugc3RhdGVt
ZW50X2xpc3QgUklHSFRfQlJBQ0UgewotICAgICAgICBpZiAoJDIpCisgICAgICAgIGlmICgkMikg
ewogICAgICAgICAgICAgJDItPnNldE9wKEVPcFNlcXVlbmNlKTsKKyAgICAgICAgICAgICQyLT5z
ZXRFbmRMaW5lKCQzLmxpbmUpOworICAgICAgICB9CiAgICAgICAgICQkID0gJDI7CiAgICAgfQog
ICAgIDsKQEAgLTIwNjEsNiArMjA1OCw5IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAg
JCQtPmdldEFzQWdncmVnYXRlKCktPnNldE9wdGltaXplKGNvbnRleHQtPmNvbnRleHRQcmFnbWEu
b3B0aW1pemUpOwogICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RGVidWcoY29udGV4
dC0+Y29udGV4dFByYWdtYS5kZWJ1Zyk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5h
ZGRUb1ByYWdtYVRhYmxlKGNvbnRleHQtPmNvbnRleHRQcmFnbWEucHJhZ21hVGFibGUpOworCisg
ICAgICAgIGlmICgkMyAmJiAkMy0+Z2V0QXNBZ2dyZWdhdGUoKSkKKyAgICAgICAgICAgICQkLT5n
ZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRFbmRMaW5lKCQzLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRFbmRM
aW5lKCkpOwogICAgIH0KICAgICA7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAkocmV2aXNpb24gODkyODYpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDcgQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAg
ICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9Ci0vKiBMaW5lIDE4NyBvZiB5YWNjLmMuICAqLwor
LyogTGluZSAxOTMgb2YgeWFjYy5jLiAgKi8KIAogCVlZU1RZUEU7CiAjIGRlZmluZSB5eXN0eXBl
IFlZU1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCkBAIC00MTUsNyAr
NDE1LDcgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2OwogI2RlZmluZSBZWVNJWkVf
TUFYSU1VTSAoKFlZU0laRV9UKSAtMSkKIAogI2lmbmRlZiBZWV8KLSMgaWYgWVlFTkFCTEVfTkxT
CisjIGlmIGRlZmluZWQgWVlFTkFCTEVfTkxTICYmIFlZRU5BQkxFX05MUwogIyAgaWYgRU5BQkxF
X05MUwogIyAgIGluY2x1ZGUgPGxpYmludGwuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBT
UEFDRSAqLwogIyAgIGRlZmluZSBZWV8obXNnaWQpIGRnZXR0ZXh0ICgiYmlzb24tcnVudGltZSIs
IG1zZ2lkKQpAQCAtNTgwLDcgKzU4MCw3IEBAIHVuaW9uIHl5YWxsb2MKIC8qIFlZRklOQUwgLS0g
U3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCiAjZGVmaW5lIFlZRklO
QUwgIDY5CiAvKiBZWUxBU1QgLS0gTGFzdCBpbmRleCBpbiBZWVRBQkxFLiAgKi8KLSNkZWZpbmUg
WVlMQVNUICAgMTMzNAorI2RlZmluZSBZWUxBU1QgICAxMzYyCiAKIC8qIFlZTlRPS0VOUyAtLSBO
dW1iZXIgb2YgdGVybWluYWxzLiAgKi8KICNkZWZpbmUgWVlOVE9LRU5TICA5NApAQCAtNjc0LDcg
KzY3NCw3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlyaHNbXSA9CiAgICAgICA5Nywg
ICAgNTEsICAgIC0xLCAgICA5NywgICAgNTIsICAgIC0xLCAgIDEyMiwgICAgLTEsICAgMTAwLCAg
ICAtMSwKICAgICAgMTAxLCAgICAtMSwgICAgOTcsICAgIDc2LCAgIDEwMSwgICAgLTEsICAgMTAz
LCAgICA3MSwgICAgLTEsICAgMTAyLAogICAgICAgNzEsICAgIC0xLCAgIDEwNCwgICAgMzksICAg
IC0xLCAgIDEwNCwgICAgLTEsICAgMTA0LCAgIDEyMCwgICAgLTEsCi0gICAgIDEwMywgICAgNzcs
ICAgMTIwLCAgICAtMSwgICAxMDUsICAgIDcwLCAgICAtMSwgICAxMzcsICAgIC0xLCAgICA0MywK
KyAgICAgMTAzLCAgICA3NywgICAxMjAsICAgIC0xLCAgIDEwNSwgICAgNzAsICAgIC0xLCAgIDE0
MCwgICAgLTEsICAgIDQzLAogICAgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgOTcsICAgIC0xLCAg
ICA1MSwgICAxMDYsICAgIC0xLCAgICA1MiwgICAxMDYsCiAgICAgICAtMSwgICAxMDcsICAgMTA2
LCAgICAtMSwgICAgODQsICAgIC0xLCAgICA4MiwgICAgLTEsICAgIDgxLCAgICAtMSwKICAgICAg
MTA2LCAgICAtMSwgICAxMDgsICAgIDg1LCAgIDEwNiwgICAgLTEsICAgMTA4LCAgICA4NiwgICAx
MDYsICAgIC0xLApAQCAtNzMxLDI0ICs3MzEsMjQgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50
MTYgeXlybGluZVtdID0KIHsKICAgICAgICAwLCAgIDE1MywgICAxNTMsICAgMTg4LCAgIDE5MSwg
ICAyMDQsICAgMjA5LCAgIDIxNCwgICAyMjAsICAgMjIzLAogICAgICAyOTYsICAgMjk5LCAgIDQw
OCwgICA0MTgsICAgNDMxLCAgIDQzOSwgICA1MzgsICAgNTQxLCAgIDU0OSwgICA1NTMsCi0gICAg
IDU2MCwgICA1NjQsICAgNTcxLCAgIDU3NywgICA1ODYsICAgNTk0LCAgIDY1NiwgICA2NjMsICAg
NjczLCAgIDY3NiwKLSAgICAgNjg2LCAgIDY5NiwgICA3MTcsICAgNzE4LCAgIDcxOSwgICA3MjQs
ICAgNzI1LCAgIDczNCwgICA3NDYsICAgNzQ3LAotICAgICA3NTUsICAgNzY2LCAgIDc3MCwgICA3
NzEsICAgNzgxLCAgIDc5MSwgICA4MDEsICAgODE0LCAgIDgxNSwgICA4MjUsCi0gICAgIDgzOCwg
ICA4NDIsICAgODQ2LCAgIDg1MCwgICA4NTEsICAgODY0LCAgIDg2NSwgICA4NzgsICAgODc5LCAg
IDg5MiwKLSAgICAgODkzLCAgIDkxMCwgICA5MTEsICAgOTI0LCAgIDkyNSwgICA5MjYsICAgOTI3
LCAgIDkyOCwgICA5MzIsICAgOTM1LAotICAgICA5NDYsICAgOTU0LCAgIDk3OSwgICA5ODQsICAg
OTkxLCAgMTAyNywgIDEwMzAsICAxMDM3LCAgMTA0NSwgIDEwNjYsCi0gICAgMTA4NSwgIDEwOTYs
ICAxMTI1LCAgMTEzMCwgIDExNDAsICAxMTQ1LCAgMTE1NSwgIDExNTgsICAxMTYxLCAgMTE2NCwK
LSAgICAxMTcwLCAgMTE3NywgIDExODcsICAxMTk5LCAgMTIxNywgIDEyNDEsICAxMjY0LCAgMTI2
OCwgIDEyODIsICAxMzAyLAotICAgIDEzMzEsICAxMzUxLCAgMTQyNywgIDE0MzYsICAxNDU5LCAg
MTQ2MiwgIDE0NjgsICAxNDc2LCAgMTQ4NCwgIDE0OTIsCi0gICAgMTQ5NSwgIDE1MDIsICAxNTA1
LCAgMTUwOCwgIDE1MTQsICAxNTE3LCAgMTUzMiwgIDE1MzYsICAxNTQwLCAgMTU0NCwKLSAgICAx
NTUzLCAgMTU1OCwgIDE1NjMsICAxNTY4LCAgMTU3MywgIDE1NzgsICAxNTgzLCAgMTU4OCwgIDE1
OTMsICAxNTk4LAotICAgIDE2MDQsICAxNjEwLCAgMTYxNiwgIDE2MjEsICAxNjI2LCAgMTYzMSwg
IDE2NDQsICAxNjU3LCAgMTY2NSwgIDE2NjgsCi0gICAgMTY4MywgIDE3MTQsICAxNzE4LCAgMTcy
NCwgIDE3MzIsICAxNzQ4LCAgMTc1MiwgIDE3NTYsICAxNzU3LCAgMTc2MywKLSAgICAxNzY0LCAg
MTc2NSwgIDE3NjYsICAxNzY3LCAgMTc3MSwgIDE3NzIsICAxNzcyLCAgMTc3MiwgIDE3ODAsICAx
NzgxLAotICAgIDE3ODYsICAxNzg5LCAgMTc5NywgIDE4MDAsICAxODA2LCAgMTgwNywgIDE4MTEs
ICAxODE5LCAgMTgyMywgIDE4MzMsCi0gICAgMTgzOCwgIDE4NTUsICAxODU1LCAgMTg2MCwgIDE4
NjAsICAxODY3LCAgMTg2NywgIDE4NzUsICAxODc4LCAgMTg4NCwKLSAgICAxODg3LCAgMTg5Mywg
IDE4OTcsICAxOTA0LCAgMTkxMSwgIDE5MTgsICAxOTI1LCAgMTkzNiwgIDE5NDUsICAxOTQ5LAot
ICAgIDE5NTYsICAxOTU5LCAgMTk2NSwgIDE5NjUKKyAgICAgNTYwLCAgIDU2NCwgICA1NzEsICAg
NTc3LCAgIDU4NiwgICA1OTQsICAgNjQ5LCAgIDY1NiwgICA2NjYsICAgNjY5LAorICAgICA2Nzks
ICAgNjg5LCAgIDcxMCwgICA3MTEsICAgNzEyLCAgIDcxNywgICA3MTgsICAgNzI3LCAgIDczOSwg
ICA3NDAsCisgICAgIDc0OCwgICA3NTksICAgNzYzLCAgIDc2NCwgICA3NzQsICAgNzg0LCAgIDc5
NCwgICA4MDcsICAgODA4LCAgIDgxOCwKKyAgICAgODMxLCAgIDgzNSwgICA4MzksICAgODQzLCAg
IDg0NCwgICA4NTcsICAgODU4LCAgIDg3MSwgICA4NzIsICAgODg1LAorICAgICA4ODYsICAgOTAz
LCAgIDkwNCwgICA5MTcsICAgOTE4LCAgIDkxOSwgICA5MjAsICAgOTIxLCAgIDkyNSwgICA5Mjgs
CisgICAgIDkzOSwgICA5NDcsICAgOTcyLCAgIDk3NywgICA5ODQsICAxMDIwLCAgMTAyMywgIDEw
MzAsICAxMDM4LCAgMTA1OSwKKyAgICAxMDc4LCAgMTA4OSwgIDExMTgsICAxMTIzLCAgMTEzMywg
IDExMzgsICAxMTQ4LCAgMTE1MSwgIDExNTQsICAxMTU3LAorICAgIDExNjMsICAxMTcwLCAgMTE3
MywgIDExODksICAxMjA3LCAgMTIzMSwgIDEyNTQsICAxMjU4LCAgMTI3NiwgIDEyODQsCisgICAg
MTMxNiwgIDEzMzYsICAxNDEyLCAgMTQyMSwgIDE0NDQsICAxNDQ3LCAgMTQ1MywgIDE0NjEsICAx
NDY5LCAgMTQ3NywKKyAgICAxNDg3LCAgMTQ5NCwgIDE0OTcsICAxNTAwLCAgMTUwNiwgIDE1MDks
ICAxNTI0LCAgMTUyOCwgIDE1MzIsICAxNTM2LAorICAgIDE1NDUsICAxNTUwLCAgMTU1NSwgIDE1
NjAsICAxNTY1LCAgMTU3MCwgIDE1NzUsICAxNTgwLCAgMTU4NSwgIDE1OTAsCisgICAgMTU5Niwg
IDE2MDIsICAxNjA4LCAgMTYxMywgIDE2MTgsICAxNjIzLCAgMTYzNiwgIDE2NDksICAxNjU3LCAg
MTY2MCwKKyAgICAxNjc1LCAgMTcwNywgIDE3MTEsICAxNzE3LCAgMTcyNSwgIDE3NDEsICAxNzQ1
LCAgMTc0OSwgIDE3NTAsICAxNzU2LAorICAgIDE3NTcsICAxNzU4LCAgMTc1OSwgIDE3NjAsICAx
NzY0LCAgMTc2NSwgIDE3NjUsICAxNzY1LCAgMTc3NSwgIDE3NzYsCisgICAgMTc4MSwgIDE3ODQs
ICAxNzk0LCAgMTc5NywgIDE4MDMsICAxODA0LCAgMTgwOCwgIDE4MTYsICAxODIwLCAgMTgzMCwK
KyAgICAxODM1LCAgMTg1MiwgIDE4NTIsICAxODU3LCAgMTg1NywgIDE4NjQsICAxODY0LCAgMTg3
MiwgIDE4NzUsICAxODgxLAorICAgIDE4ODQsICAxODkwLCAgMTg5NCwgIDE5MDEsICAxOTA4LCAg
MTkxNSwgIDE5MjIsICAxOTMzLCAgMTk0MiwgIDE5NDYsCisgICAgMTk1MywgIDE5NTYsICAxOTYy
LCAgMTk2MgogfTsKICNlbmRpZgogCkBAIC04OTIsMTAgKzg5MiwxMCBAQCBzdGF0aWMgY29uc3Qg
eXl0eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQogICAgICAgMzgsICAgIDQxLCAgICA0MiwgICAgNDcs
ICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NSwgICAgNTcsCiAgICAgICA1OSwgICAg
NzAsICAgICAwLCAgICAyNSwgICAgNzMsICAgICAwLCAgIDE0MywgICAgIDAsICAgMTQxLCAgIDEz
NywKICAgICAgMTM5LCAgICAgMCwgICAgIDAsICAgMTczLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTU1LAotICAgICAxNjAsICAgMTY0LCAgICAzNSwgICAgNjEsICAgIDY4
LCAgICAgMCwgICAxNDYsICAgICAwLCAgIDEwMiwgICAxNDksCisgICAgIDE2MCwgICAxNjQsICAg
IDM1LCAgICA2MSwgICAgNjgsICAgICAwLCAgIDE0NiwgICAgIDAsICAgMTE0LCAgIDE0OSwKICAg
ICAgMTYyLCAgIDE0OCwgICAxNDcsICAgICAwLCAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1Mywg
ICAgODAsICAgIDgyLAogICAgICAgODQsICAgICAwLCAgICAgMCwgICAgOTgsICAgICAwLCAgIDE0
NSwgICAxMDAsICAgIDI5LCAgICAzMCwgICAgIDAsCi0gICAgICAxMiwgICAgMTMsICAgICAwLCAg
ICAgMCwgICAgMTksICAgIDE4LCAgICAgMCwgICAxMTYsICAgIDIyLCAgICAyNCwKKyAgICAgIDEy
LCAgICAxMywgICAgIDAsICAgICAwLCAgICAxOSwgICAgMTgsICAgICAwLCAgICAyMCwgICAgMjIs
ICAgIDI0LAogICAgICAgMzEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMTE1LCAgIDEzNiwgICAgIDAsICAgICAwLCAgIDE0MCwKICAgICAgMTg0LCAgIDE4
MywgICAgIDAsICAgMTc1LCAgICAgMCwgICAxODcsICAgMTg1LCAgICAgMCwgICAxNzEsICAgMTU0
LApAQCAtOTE3LDcgKzkxNyw3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlkZWZnb3Rv
W10gPQogICAgICAxMDYsICAgMTA3LCAgIDE0MiwgICAxMDksICAgMTEwLCAgIDExMSwgICAxMTIs
ICAgMTEzLCAgIDExNCwgICAxMTUsCiAgICAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOSwgICAx
MjAsICAgMTQzLCAgIDE0NCwgICAyMTYsICAgMTQ1LCAgIDEyMiwKICAgICAgMTQ2LCAgIDE0Nywg
ICAgMzIsICAgIDMzLCAgICAzNCwgICAgNzksICAgIDYwLCAgICA2MSwgICAgODAsICAgIDM1LAot
ICAgICAgMzYsICAgIDM3LCAgICAzOCwgICAxMjMsICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQz
LCAgICA3NCwgICAgNzUsCisgICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAg
IDQxLCAgIDEyMywgICAgNDMsICAgIDc0LCAgICA3NSwKICAgICAgMTI3LCAgIDEyOCwgICAxNjYs
ICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDIxMCwgICAyNzAsICAgMjg4LAogICAgICAy
ODksICAgMTUzLCAgIDE1NCwgICAxNTUsICAgMjc4LCAgIDI2OSwgICAxNTYsICAgMjUzLCAgIDIw
MiwgICAyNTAsCiAgICAgIDI2NSwgICAyNzUsICAgMjc2LCAgIDE1NywgICAgNDQsICAgIDQ1LCAg
ICA0NiwgICAgNTMKQEAgLTkyOCw4NiArOTI4LDg2IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50
MTYgeXlkZWZnb3RvW10gPQogI2RlZmluZSBZWVBBQ1RfTklORiAtMjUwCiBzdGF0aWMgY29uc3Qg
eXl0eXBlX2ludDE2IHl5cGFjdFtdID0KIHsKLSAgICAxMjI1LCAgICAzNiwgIC0yNTAsICAtMjUw
LCAgLTI1MCwgICAxNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLAorICAgIDEyMTgsICAg
LTEzLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgIDEzNywgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0y
NTAsCiAgICAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwg
IC0yNTAsICAtMjUwLCAgLTI1MCwKLSAgICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1
MCwgICAtMzMsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLAotICAgIC0yNTAsICAgLTYwLCAg
IC0yMiwgICAtMTcsICAgIDIxLCAgIC02MiwgIC0yNTAsICAgIDIyLCAgMTI2NiwgIC0yNTAsCi0g
ICAgMTI5MCwgIC0yNTAsICAgIDExLCAgLTI1MCwgIDExMzgsICAtMjUwLCAgLTI1MCwgIC0yNTAs
ICAtMjUwLCAgMTI5MCwKLSAgICAgIDE0LCAgMTI2NiwgIC0yNTAsICAgIDI3LCAgLTI1MCwgICAg
MzQsICAgIDQxLCAgLTI1MCwgIC0yNTAsICAtMjUwLAotICAgIC0yNTAsICAxMjY2LCAgIDEyOSwg
ICAgNjEsICAtMjUwLCAgICAxNywgIC0yNTAsICAtMjUwLCAgIDkwOCwgIC0yNTAsCi0gICAgLTI1
MCwgICAgMzEsICAxMjY2LCAgICA3MiwgIDEwNDIsICAtMjUwLCAgIDI4MywgIC0yNTAsICAtMjUw
LCAgLTI1MCwKLSAgICAtMjUwLCAgICA5MCwgIDEyNjYsICAgLTQ2LCAgLTI1MCwgICAxOTQsICAg
OTA4LCAgICA2NSwgIC0yNTAsICAtMjUwLAotICAgIC0yNTAsICAtMjUwLCAgIDkwOCwgICA5MDgs
ICAgOTA4LCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsCi0gICAgIC00MCwgIC0y
NTAsICAtMjUwLCAgLTI1MCwgICAgODAsICAgLTI1LCAgIDk3NSwgICAgODcsICAtMjUwLCAgIDkw
OCwKLSAgICAgIDM1LCAgICAxMywgIC0yNTAsICAgLTI2LCAgICA2OCwgIC0yNTAsICAtMjUwLCAg
LTI1MCwgICAxMTAsICAgMTA5LAotICAgICAtNTQsICAtMjUwLCAgICA5NiwgIC0yNTAsICAtMjUw
LCAgMTA4MywgICAgOTgsICAgIDMzLCAgLTI1MCwgIC0yNTAsCi0gICAgLTI1MCwgICAgOTEsICAg
IDkyLCAgLTI1MCwgICAxMDQsICAgMTA3LCAgICA5OSwgICA3NjAsICAgMTA4LCAgIDEwNSwKLSAg
ICAtMjUwLCAgLTI1MCwgICAgMjQsICAtMjUwLCAgLTI1MCwgICAgMzcsICAtMjUwLCAgIC02MCwg
ICAxMTIsICAtMjUwLAotICAgIC0yNTAsICAtMjUwLCAgLTI1MCwgICAzNjUsICAtMjUwLCAgLTI1
MCwgIC0yNTAsICAtMjUwLCAgIDExMSwgIC0yNTAsCi0gICAgLTI1MCwgICA4MjcsICAgOTA4LCAg
LTI1MCwgICAxMTMsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgICAgNCwKLSAgICAtMjUw
LCAgLTI1MCwgICA5MDgsICAxMTc5LCAgLTI1MCwgIC0yNTAsICAgOTA4LCAgIDExNCwgIC0yNTAs
ICAtMjUwLAotICAgIC0yNTAsICAgOTA4LCAgIDkwOCwgICA5MDgsICAgOTA4LCAgIDkwOCwgICA5
MDgsICAgOTA4LCAgIDkwOCwgICA5MDgsCi0gICAgIDkwOCwgICA5MDgsICAgOTA4LCAgIDkwOCwg
ICA5MDgsICAtMjUwLCAgLTI1MCwgICA5MDgsICAgIDcyLCAgLTI1MCwKLSAgICAtMjUwLCAgLTI1
MCwgICA0NDcsICAtMjUwLCAgIDkwOCwgIC0yNTAsICAtMjUwLCAgICA0MiwgIC0yNTAsICAtMjUw
LAotICAgICA0NDcsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgICA5MDgsICAg
OTA4LCAgLTI1MCwgIC0yNTAsCi0gICAgLTI1MCwgICA5MDgsICAtMjUwLCAgIDExNSwgIC0yNTAs
ICAtMjUwLCAgLTI1MCwgICAxMTYsICAgMTE3LCAgLTI1MCwKLSAgICAgMTIwLCAgLTI1MCwgIC0y
NTAsICAtMjUwLCAgLTI1MCwgICAgMzUsICAgIDM1LCAgLTI1MCwgIC0yNTAsICAtMjUwLAotICAg
IC0yNTAsICAgLTI2LCAgIC0yNiwgIC0yNTAsICAgMTEwLCAgIDEwOSwgICAgNTEsICAgMTE5LCAg
LTI1MCwgICAxNDQsCi0gICAgIDYxMSwgICAgMjMsICAtMjUwLCAgIDY5MywgICA0NDcsICAtMjUw
LCAgLTI1MCwgICAxMjIsICAtMjUwLCAgLTI1MCwKLSAgICAgOTA4LCAgLTI1MCwgICAxMjMsICAt
MjUwLCAgLTI1MCwgICA2OTMsICAgNDQ3LCAgIDExNywgICAxNTMsICAgMTI2LAotICAgICAxMjgs
ICAtMjUwLCAgLTI1MCwgICA5MDgsICAtMjUwLCAgIDEyNywgICAxMzcsICAgMTcxLCAgLTI1MCwg
ICAxMzAsCi0gICAgIDUyOSwgIC0yNTAsICAgIDI4LCAgIDkwOCwgICA1MjksICAgNDQ3LCAgIDkw
OCwgIC0yNTAsICAtMjUwLCAgLTI1MCwKLSAgICAgMTMxLCAgIDExNywgIC0yNTAsICAtMjUwLCAg
LTI1MCwgIC0yNTAKKyAgICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgICAtMjgs
ICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLAorICAgIC0yNTAsICAgLTU1LCAgIC0zOCwgICAg
LTQsICAgIDMzLCAgIC0yMCwgIC0yNTAsICAgIDQ0LCAgMTI1OSwgIC0yNTAsCisgICAgMTMxOCwg
IC0yNTAsICAgIDE4LCAgLTI1MCwgIDExNzYsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAg
MTMxOCwKKyAgICAgLTIyLCAgMTI1OSwgIC0yNTAsICAgIDI5LCAgLTI1MCwgICAgODUsICAgIDcz
LCAgLTI1MCwgIC0yNTAsICAtMjUwLAorICAgIC0yNTAsICAxMjU5LCAgIDExMywgICAgNzAsICAt
MjUwLCAgICAxMywgIC0yNTAsICAtMjUwLCAgIDk0OSwgIC0yNTAsCisgICAgLTI1MCwgICAgNDks
ICAxMjU5LCAgICA5MCwgIDEwODAsICAtMjUwLCAgIDI4MywgIC0yNTAsICAtMjUwLCAgLTI1MCwK
KyAgICAtMjUwLCAgIDEwMSwgIDEyNTksICAgLTU2LCAgLTI1MCwgICA3NTcsICAgOTQ5LCAgICA4
MCwgIC0yNTAsICAtMjUwLAorICAgIC0yNTAsICAtMjUwLCAgIDk0OSwgICA5NDksICAgOTQ5LCAg
LTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsCisgICAgIC0zMywgIC0yNTAsICAtMjUw
LCAgLTI1MCwgICAgODEsICAgLTE1LCAgMTAxMywgICAgOTIsICAtMjUwLCAgIDk0OSwKKyAgICAg
IDUyLCAgIC03NSwgIC0yNTAsICAgLTI1LCAgICA0MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgICAx
MDYsICAgMTA1LAorICAgICAtNDYsICAtMjUwLCAgICA5MywgIC0yNTAsICAtMjUwLCAgMTEyMSwg
ICAgOTUsICAgICA5LCAgLTI1MCwgIC0yNTAsCisgICAgLTI1MCwgICAgODgsICAgIDg5LCAgLTI1
MCwgICAxMDAsICAgMTAyLCAgICA5MSwgICA4MjEsICAgMTA0LCAgIDEwMywKKyAgICAtMjUwLCAg
LTI1MCwgICAgNjYsICAtMjUwLCAgLTI1MCwgICAgMjAsICAtMjUwLCAgIC01NSwgICAgNzksICAt
MjUwLAorICAgIC0yNTAsICAtMjUwLCAgLTI1MCwgICAzNjUsICAtMjUwLCAgLTI1MCwgIC0yNTAs
ICAtMjUwLCAgIDEwNywgIC0yNTAsCisgICAgLTI1MCwgICA4ODUsICAgOTQ5LCAgLTI1MCwgICAx
MDksICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgICAtNiwKKyAgICAtMjUwLCAgLTI1MCwg
ICA5NDksICAxMjgzLCAgLTI1MCwgIC0yNTAsICAgOTQ5LCAgIDExMCwgIC0yNTAsICAtMjUwLAor
ICAgIC0yNTAsICAgOTQ5LCAgIDk0OSwgICA5NDksICAgOTQ5LCAgIDk0OSwgICA5NDksICAgOTQ5
LCAgIDk0OSwgICA5NDksCisgICAgIDk0OSwgICA5NDksICAgOTQ5LCAgIDk0OSwgICA5NDksICAt
MjUwLCAgLTI1MCwgICA5NDksICAgIDkwLCAgLTI1MCwKKyAgICAtMjUwLCAgLTI1MCwgICA0NDcs
ICAtMjUwLCAgIDk0OSwgIC0yNTAsICAtMjUwLCAgICAzNCwgIC0yNTAsICAtMjUwLAorICAgICA0
NDcsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgICA5NDksICAgOTQ5LCAgLTI1
MCwgIC0yNTAsCisgICAgLTI1MCwgICA5NDksICAtMjUwLCAgIDExMSwgIC0yNTAsICAtMjUwLCAg
LTI1MCwgICAxMTIsICAgIDk5LCAgLTI1MCwKKyAgICAgMTE2LCAgLTI1MCwgIC0yNTAsICAtMjUw
LCAgLTI1MCwgICAgNTIsICAgIDUyLCAgLTI1MCwgIC0yNTAsICAtMjUwLAorICAgIC0yNTAsICAg
LTI1LCAgIC0yNSwgIC0yNTAsICAgMTA2LCAgIDEwNSwgICAgNzcsICAgMTE0LCAgLTI1MCwgICAx
MjUsCisgICAgIDYxMSwgICAgIDQsICAtMjUwLCAgIDY5MywgICA0NDcsICAtMjUwLCAgLTI1MCwg
ICAxMTUsICAtMjUwLCAgLTI1MCwKKyAgICAgOTQ5LCAgLTI1MCwgICAxMTksICAtMjUwLCAgLTI1
MCwgICA2OTMsICAgNDQ3LCAgICA5OSwgICAxMzQsICAgMTIyLAorICAgICAxMDgsICAtMjUwLCAg
LTI1MCwgICA5NDksICAtMjUwLCAgIDExNywgICAxMjMsICAgMTc0LCAgLTI1MCwgICAxMjAsCisg
ICAgIDUyOSwgIC0yNTAsICAgICA3LCAgIDk0OSwgICA1MjksICAgNDQ3LCAgIDk0OSwgIC0yNTAs
ICAtMjUwLCAgLTI1MCwKKyAgICAgMTE4LCAgICA5OSwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0y
NTAKIH07CiAKIC8qIFlZUEdPVE9bTlRFUk0tTlVNXS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBl
X2ludDE2IHl5cGdvdG9bXSA9CiB7Ci0gICAgLTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0y
NTAsICAtMjUwLCAgLTI1MCwgICAgMzksICAtMjUwLCAgLTI1MCwKLSAgICAtMjUwLCAgLTI1MCwg
ICAtNDUsICAtMjUwLCAgIC0xOCwgIC0yNTAsICAgLTc5LCAgIC0zMCwgIC0yNTAsICAtMjUwLAot
ICAgIC0yNTAsICAgIDM4LCAgICA1MiwgICAgMjAsICAtMjUwLCAgIC02MywgICAtODUsICAtMjUw
LCAgIC05MiwgICAtNzEsCi0gICAgICAgNiwgICAgIDksICAtMjUwLCAgLTI1MCwgIC0yNTAsICAg
MTMyLCAgIDE3MiwgICAxNjYsICAgMTQ4LCAgLTI1MCwKLSAgICAtMjUwLCAgLTI0NiwgICAtMjEs
ICAgICAwLCAgIDIyNiwgICAtMjQsICAtMjUwLCAgLTI1MCwgICAxNjIsICAgLTY2LAotICAgIC0y
NTAsICAgIDQ1LCAgLTE1OSwgICAgLTMsICAtMTM2LCAgLTI0OSwgIC0yNTAsICAtMjUwLCAgLTI1
MCwgICAtMzYsCi0gICAgIDE5NiwgICAgNDYsICAgICAxLCAgLTI1MCwgIC0yNTAsICAgLTEzLCAg
LTI1MCwgIC0yNTAsICAtMjUwLCAgLTI1MCwKLSAgICAtMjUwLCAgLTI1MCwgIC0yNTAsICAtMjUw
LCAgLTI1MCwgICAyMTEsICAtMjUwLCAgLTI1MAorICAgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0y
NTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsICAgIDIyLCAgLTI1MCwgIC0yNTAsCisgICAgLTI1MCwg
IC0yNTAsICAgIDMxLCAgLTI1MCwgICAtMjcsICAtMjUwLCAgIC03OSwgICAtMzAsICAtMjUwLCAg
LTI1MCwKKyAgICAtMjUwLCAgICAgNSwgICAgIDgsICAgIDEyLCAgLTI1MCwgICAtNjMsICAgLTg1
LCAgLTI1MCwgICAtOTIsICAgLTgyLAorICAgICAgMTAsICAgIDExLCAgLTI1MCwgIC0yNTAsICAt
MjUwLCAgIDEyMSwgICAxNDksICAgMTQ0LCAgIDEyNiwgIC0yNTAsCisgICAgLTI1MCwgIC0yMzMs
ICAgLTIxLCAgIC0yNCwgICAyMDIsICAgLTIzLCAgICAgMCwgIC0yNTAsICAgMTM5LCAgIC02NiwK
KyAgICAtMjUwLCAgICAyNywgIC0xNTYsICAgLTQxLCAgLTE0OSwgIC0yNDksICAtMjUwLCAgLTI1
MCwgIC0yNTAsICAgLTU4LAorICAgICAxNzYsICAgIDE3LCAgIC0xOSwgIC0yNTAsICAtMjUwLCAg
IC0zNSwgIC0yNTAsICAtMjUwLCAgLTI1MCwgIC0yNTAsCisgICAgLTI1MCwgIC0yNTAsICAtMjUw
LCAgLTI1MCwgIC0yNTAsICAgMTg4LCAgLTI1MCwgIC0yNTAKIH07CiAKIC8qIFlZVEFCTEVbWVlQ
QUNUW1NUQVRFLU5VTV1dLiAgV2hhdCB0byBkbyBpbiBzdGF0ZSBTVEFURS1OVU0uICBJZgogICAg
cG9zaXRpdmUsIHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBuZWdhdGl2ZSwgcmVkdWNlIHRoZSBydWxl
IHdoaWNoCiAgICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAgSWYgemVybywgZG8gd2hhdCBZWURF
RkFDVCBzYXlzLgogICAgSWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuICAqLwotI2RlZmlu
ZSBZWVRBQkxFX05JTkYgLTc2CisjZGVmaW5lIFlZVEFCTEVfTklORiAtMTE3CiBzdGF0aWMgY29u
c3QgeXl0eXBlX2ludDE2IHl5dGFibGVbXSA9CiB7Ci0gICAgICAzOSwgICAxNjUsICAgMTY5LCAg
IDIyNCwgICAxOTMsICAgMTIxLCAgICAzMCwgICAyNjgsICAgMTMwLCAgICAzMSwKLSAgICAgIDUw
LCAgIDE3MCwgICAxNzEsICAgIDYyLCAgIDE2NCwgICAgNjMsICAgIDY3LCAgIDIyMCwgICAgNjQs
ICAgMjY4LAotICAgICAgNTIsICAgMTc4LCAgIDEyMSwgICAxMDgsICAgIDU2LCAgICA3MSwgICAx
NjEsICAgMTg1LCAgIDE4NiwgICAgIDYsCi0gICAgICAgNywgICAyODcsICAgMTcyLCAgIDE2Miwg
ICAgNjIsICAgMjg3LCAgIDE3MywgICAgNTYsICAgIDY2LCAgIDE5NCwKLSAgICAgMTA4LCAgICA1
MSwgICAgIDYsICAgICA3LCAgICAzOSwgICAyMDcsICAgMTc1LCAgIDE2NywgICAxNjgsICAgIDU0
LAotICAgICAgMzAsICAgIDczLCAgIDE3NiwgICAgMzEsICAgIDU3LCAgICA1OCwgICAgNTksICAg
IDIzLCAgICAyNCwgICAxMzAsCi0gICAgICA1NSwgICAgODEsICAgMTg3LCAgIDE4OCwgICAxODAs
ICAgIDY1LCAgIDI0OSwgICAgNTcsICAgIDU4LCAgICA1OSwKLSAgICAgIDIzLCAgICAyNCwgICAg
NzMsICAgIDQ3LCAgICA3MywgICAyMjYsICAgMTQ4LCAgIDE2NSwgICAgNDcsICAgIDQ4LAotICAg
ICAyMjgsICAgMjE3LCAgICA4MSwgICAgNjgsICAgMjExLCAgIDIxMiwgICAyMTMsICAgIDg0LCAg
ICA3MiwgICAgODUsCi0gICAgIDIyMywgICAyMzIsICAgLTc1LCAgIDIxNCwgICAyNjYsICAgMTgz
LCAgICA4NiwgICAxODQsICAgMTIxLCAgIDI5MCwKLSAgICAgMjE3LCAgICA3NiwgICAyNDYsICAg
MjE1LCAgICA4MywgICAyMTcsICAgMjM3LCAgIDIzOCwgICAyMzksICAgMjQwLAotICAgICAxOTgs
ICAgMTI0LCAgIDI1MSwgICAxOTksICAgMjE3LCAgIDEyNiwgICAxMDgsICAgMjE4LCAgIDIyMCwg
ICAyMTcsCi0gICAgIDE4MSwgICAxODIsICAgMjUyLCAgIDE4OSwgICAxOTAsICAgIDczLCAgIDI0
NywgICAyOTQsICAgMjE3LCAgIDI2MCwKLSAgICAgMjc3LCAgIDI1NSwgICAyNTYsICAgMTU4LCAg
IDEyMSwgICAtMjYsICAgMjMzLCAgIDIzNCwgICAxMDgsICAgMTA4LAotICAgICAxMDgsICAgMTA4
LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAyOTMs
Ci0gICAgIDI1NywgICAxNzQsICAgMTA4LCAgIDE0OCwgICAgIDIsICAgICAzLCAgICAgNCwgICAx
NzksICAgMTIxLCAgIDI0MSwKLSAgICAgMjQyLCAgIDI2NywgICAgNTcsICAgIDU4LCAgICA1OSwg
ICAyMzUsICAgMjM2LCAgIDE5MSwgICAxOTIsICAgMTk1LAotICAgICAxOTcsICAgMjAwLCAgIDIw
MSwgICAyNjcsICAgMjAzLCAgIDI3MiwgICAxMDgsICAgMjA0LCAgIDIwOCwgICAyMDUsCi0gICAg
IDIwOSwgICAyODIsICAgLTI1LCAgIDIyMSwgICAyNjIsICAgLTIwLCAgIDIyNSwgICAyODUsICAg
MjU4LCAgIDI1OSwKLSAgICAgLTI3LCAgIDI5MSwgICAyNjEsICAgMjczLCAgIDIxNywgICAyNzEs
ICAgMjc5LCAgIDI4MCwgICAgIDIsICAgICAzLAotICAgICAgIDQsICAgMTY1LCAgIDE0OCwgICAy
ODEsICAgICA4LCAgICAgOSwgICAgMTAsICAgMjgzLCAgIDI4NCwgICAyODYsCi0gICAgIDE0OCwg
ICAyOTUsICAgMjMxLCAgIDI0NSwgICAxNTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwKLSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LCAgICA3OCwgICAgODIsICAgMjQzLAotICAgICAxNjAsICAgIDQ5LCAgICAyNSwgICAgMjYsICAg
MTI1LCAgICAyNywgICAgMjgsICAgIDg3LCAgICAyOSwgICAgODgsCi0gICAgICA4OSwgICAgOTAs
ICAgIDkxLCAgIDI0OCwgICAyNDQsICAgIDkyLCAgICA5MywgICAyNjMsICAgMjkyLCAgICA3NywK
LSAgICAgMTQ4LCAgIDI2NCwgICAyNzQsICAgMTQ4LCAgIDE0OCwgICAgNzAsICAgMjU0LCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAg
IDE0OCwgICAxNDgsICAgMTYzLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAgMCwKKyAgICAg
IDQyLCAgIDE2NSwgICAxNjksICAgMTY0LCAgIDIyMCwgICAxMjEsICAgMjI0LCAgIDE4MywgICAx
MzAsICAgMTg0LAorICAgICAgMzAsICAgIDMxLCAgIDE5MywgICAgNjIsICAgIDY2LCAgICA1MCwg
ICAxNjEsICAgIDY3LCAgIDE3MCwgICAxNzEsCisgICAgIDI2OCwgICAxNzgsICAgMTIxLCAgIDE2
MiwgICAgNDcsICAgIDUyLCAgICA3MSwgICAgNzMsICAgMTg1LCAgIDE4NiwKKyAgICAgIDQ4LCAg
IDI4NywgICAyNjgsICAgIDU0LCAgICA2MiwgICAyODcsICAgIDU2LCAgICA4MSwgICAgNDIsICAg
MTcyLAorICAgICAgNDIsICAgICA2LCAgICAgNywgICAxNzMsICAgIDQyLCAgIDIwNywgICAgNTEs
ICAgMTk0LCAgICA3MywgICAgNDIsCisgICAgICA3MywgICAgNDIsICAgIDcyLCAgIDI0OSwgICAg
MzAsICAgIDMxLCAgIDE3NSwgICAgNjMsICAgIDgxLCAgIDEzMCwKKyAgICAgIDY0LCAgICA0Miwg
ICAxNzYsICAgMTg3LCAgIDE4OCwgICAyMjYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDIzLAor
ICAgICAgMjQsICAgMjE3LCAgICA0MiwgICAgNTUsICAgIDQyLCAgIDI2NiwgICAxNDgsICAgMTY1
LCAgIDI5MCwgICAyMjMsCisgICAgIDIyOCwgICAyMTcsICAgIDQyLCAgICA4NCwgICAyMTcsICAg
IDg1LCAgIDE5OCwgICAgNjUsICAgIDU2LCAgIDE5OSwKKyAgICAgIDY4LCAgIDIzMiwgICAgODYs
ICAgICA2LCAgICAgNywgICAxODksICAgMTkwLCAgIDIxNywgICAxMjEsICAgMTA4LAorICAgICAy
MTgsICAgIDczLCAgIDI0NiwgICAgNzYsICAgLTc1LCAgIDIyMCwgICAyMzcsICAgMjM4LCAgIDIz
OSwgICAyNDAsCisgICAgICA0NywgICAyMTcsICAgMjUxLCAgICA4MywgICAyNTIsICAgMjQ3LCAg
IDEwOCwgICAyNzcsICAgIDU3LCAgICA1OCwKKyAgICAgIDU5LCAgICAyMywgICAgMjQsICAgMTY3
LCAgIDE2OCwgICAgNDIsICAgMjExLCAgIDIxMiwgICAyMTMsICAgMTI0LAorICAgICAyOTQsICAg
MjU1LCAgIDI1NiwgICAxMjYsICAgMTIxLCAgIDIxNCwgICAyOTMsICAgMTgxLCAgIDE4MiwgICAy
NTcsCisgICAgIDE4MCwgICAgIDIsICAgICAzLCAgICAgNCwgICAxNTgsICAgMjE1LCAgICA1Nywg
ICAgNTgsICAgIDU5LCAgIC0yNSwKKyAgICAgLTI2LCAgICA2OCwgICAxNzQsICAgMTQ4LCAgIDIx
NywgICAyNjAsICAgMjM1LCAgIDIzNiwgICAxMjEsICAgMjQxLAorICAgICAyNDIsICAgMjY3LCAg
IDE3OSwgICAxOTEsICAgMTkyLCAgIDI2MiwgICAxOTUsICAgMTk3LCAgIDIwMCwgICAyMDEsCisg
ICAgIDIwMywgICAyMDUsICAgMjA0LCAgIDI2NywgICAyMDgsICAgMjcyLCAgIDIxNywgICAyNzks
ICAgMjA5LCAgIDIyMSwKKyAgICAtMTE2LCAgIDI4MiwgICAyMjUsICAgMjgxLCAgIDI1OCwgICAy
NTksICAgLTI3LCAgIDI2MSwgICAyNzEsICAgMjczLAorICAgICAyODUsICAgMjkxLCAgIDEwOCwg
ICAyODAsICAgMjg0LCAgIDIzMSwgICAyNDMsICAgMjgzLCAgIDI5NSwgICAyODYsCisgICAgIDI0
NCwgICAxNjUsICAgMTQ4LCAgIDE1OSwgICAgNzgsICAgMjQ1LCAgICA4MiwgICAgNDksICAgMTYw
LCAgIDI2MywKKyAgICAgMTQ4LCAgIDEyNSwgICAyMzMsICAgMjM0LCAgIDEwOCwgICAxMDgsICAg
MTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LAorICAgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgs
ICAgMTA4LCAgIDI0OCwgICAyOTIsICAgMjU0LCAgIDEwOCwgICAgNzcsCisgICAgIDI3NCwgICAy
NjQsICAgIDcwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAxNDgsICAgICAwLCAgIDEwOCwgICAxNDgsICAgMTQ4
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgIDE0OCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAogICAgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgIDE0
OCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCiAgICAgICAgNSwgICAgIDYsICAgICA3LCAg
ICAgOCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwKICAgICAgMTM0
LCAgIDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUs
ICAgIDE2LApAQCAtMTA1Niw5NiArMTA1Niw5OSBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2
IHl5dGFibGVbXSA9CiAgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4
LCAgICA4NywgICAgMjksICAgIDg4LCAgICA4OSwKICAgICAgIDkwLCAgICA5MSwgICAgIDAsICAg
ICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDIsICAgICAzLCAgICAg
NCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAg
ICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
Ci0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDI1LCAgICAyNiwKLSAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDg3LCAgICAyOSwg
ICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAotICAgICAgIDAsICAgIDkyLCAgICA5
MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKLSAgICAgIDk0LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLAotICAgICAyMDYsICAgIDk1LCAgICA5NiwgICAg
IDAsICAgIDk3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAg
ICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAw
LCAgICA5NywgICAgMTEsICAgIDEyLAogICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCiAgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwK
ICAgICAgIDg3LCAgICAyOSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAg
MCwgICAgOTIsICAgIDkzLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwKLSAgICAg
MjIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
OTUsICAgIDk2LAotICAgICAgIDAsICAgIDk3LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksCi0gICAgICAxMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwKLSAgICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAg
IDIxLAotICAgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUs
ICAgIDI2LCAgICAgMCwgICAgMjcsCi0gICAgICAyOCwgICAgODcsICAgIDI5LCAgICA4OCwgICAg
ODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwKLSAgICAgIDkzLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAot
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NCwgICAgIDIsCi0gICAgICAgMywgICAgIDQsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICA5NSwKLSAgICAgIDk2LCAgICAgMCwgICAgOTcs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LAorICAgICAx
NjMsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5
NSwgICAgOTYsCisgICAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAg
ICAwLCAgICAyNywgICAgMjgsICAgIDg3LCAgICAyOSwgICAgODgsICAgIDg5LCAgICA5MCwgICAg
OTEsCisgICAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgIDk0LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsCisg
ICAgICAgMCwgICAyMDYsICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwKICAgICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgMjUsICAgMTc3LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICA4NywgICAgMjksCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDg3
LCAgICAyOSwKICAgICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAg
IDkyLCAgICA5MywgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgIDk1LCAg
ICA5NiwgICAgIDAsICAgIDk3LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEy
LCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCi0gICAgICAxOCwgICAgMTksICAg
IDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgIDAsICAgIDI5LCAgICAgMiwg
ICAgIDMsICAgICA0LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5
NCwgICAgIDAsICAgICAwLCAgIDIyMiwgICAgIDgsCisgICAgICAgOSwgICAgMTAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywKKyAgICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLAorICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDI1LCAgICAyNiwgICAgIDAsCisgICAgICAyNywgICAgMjgsICAgIDg3LCAgICAyOSwg
ICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwKKyAgICAgIDkyLCAgICA5
MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgOTQsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDks
ICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAotICAg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgMTI5LCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4
LCAgICAgMCwgICAgMjksICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNjksICAgICAwLAotICAgICAgIDAs
ICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDksCi0gICAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTk2LCAgICAxMSwKKyAgICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAorICAgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgMjUsICAgMTc3LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICA4NywgICAg
MjksICAgIDg4LCAgICA4OSwKKyAgICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5Miwg
ICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICA5NSwgICAgOTYs
ICAgICAwLCAgICA5NywgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCisgICAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAg
ICAyNiwKKyAgICAgICAwLCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAgIDIsICAgICAz
LCAgICAgNCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwK
KyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAxMjksICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgICAwLCAg
ICAyOSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA2OSwgICAgIDAsICAgICAwLCAgICAgMSwKKyAgICAg
ICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxOTYsICAgIDExLCAgICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAg
ICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
ICAwLAorICAgICAgMjksICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksCisgICAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwKICAgICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAog
ICAgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAgMCwgICAgMjcsCiAgICAgICAyOCwgICAgIDAsICAgIDI5LCAgICAgMiwgICAgIDMsICAg
ICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwKICAgICAgICA5LCAgICAxMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAx
OSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgIDI3LCAgICAyOCwgICAyMjksICAgIDI5
LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIzMCwgICAgIDEsICAgICAyLAotICAgICAgIDMsICAg
ICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwKLSAgICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgIDIzLCAg
ICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAgMCwgICAgMjksCi0g
ICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDks
ICAgIDEwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAgICAg
OCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4
LCAgICAgMCwKLSAgICAgIDI5LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAg
IDE2LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsCi0gICAgICAgMCwgICAg
MjcsICAgIDI4LCAgICAgMCwgICAgMjkKKyAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICA4LCAg
ICAgOSwgICAgMTAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLAorICAgICAgMjcsICAgIDI4
LCAgICAgMCwgICAgMjksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYs
CisgICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywg
ICAgMjgsICAgMjI5LCAgICAyOSwgICAgIDgsICAgICA5LAorICAgICAgMTAsICAgMjMwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsCisgICAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAg
IDIwLCAgICAyMSwKKyAgICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LAorICAgICAgMjgsICAgICAwLCAgICAyOQogfTsK
IAogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewotICAgICAgIDAsICAg
IDg2LCAgICA5NCwgICAxNjIsICAgIDU4LCAgICA2OCwgICAgIDAsICAgMjUzLCAgICA3NCwgICAg
IDAsCi0gICAgICA0MywgICAgNTEsICAgIDUyLCAgICAzNCwgICAgODUsICAgIDc3LCAgICA0MCwg
ICAxNTMsICAgIDgwLCAgIDI2NSwKLSAgICAgIDgwLCAgIDEwNiwgICAgODUsICAgIDY4LCAgICAg
MywgICAgNDksICAgIDcyLCAgICA1MywgICAgNTQsICAgICA4LAotICAgICAgIDksICAgMjgwLCAg
ICA3MiwgICAgNzksICAgIDU1LCAgIDI4NCwgICAgNzYsICAgICAzLCAgICAzOCwgICAgOTMsCi0g
ICAgICA4NSwgICAgNzQsICAgICA4LCAgICAgOSwgICAgNDQsICAgMTM3LCAgICA3MSwgICAgOTIs
ICAgIDkzLCAgICA3MSwKLSAgICAgIDQ0LCAgICA1MSwgICAgNzcsICAgIDQ0LCAgICAzMywgICAg
MzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgMTI1LAotICAgICAgNzcsICAgIDYxLCAgICA4OCwg
ICAgODksICAgMTA5LCAgICA0MywgICAyMDIsICAgIDMzLCAgICAzNCwgICAgMzUsCi0gICAgICAz
NiwgICAgMzcsICAgIDcyLCAgICAzNywgICAgNzQsICAgIDcxLCAgICA3NiwgICAxNjIsICAgIDM3
LCAgICA0MywKLSAgICAgMTcyLCAgICA3NywgICAgODIsICAgIDcyLCAgICA2MCwgICAgNjEsICAg
IDYyLCAgICA3MCwgICAgNzQsICAgIDcyLAotICAgICAxNjEsICAgMTc2LCAgICA3MSwgICAgNjks
ICAgIDcxLCAgICA4MiwgICAgNzksICAgIDg0LCAgIDE2MSwgICAgNzEsCi0gICAgICA3NywgICAg
NzQsICAgMTk0LCAgICA3OSwgICAgNDMsICAgIDc3LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4
OCwKLSAgICAgIDc3LCAgICA4MCwgICAyMDQsICAgIDgwLCAgICA3NywgICAgNDMsICAgMTYxLCAg
ICA4MCwgICAyNTQsICAgIDc3LAotICAgICAgODUsICAgIDg2LCAgICA4MCwgICAgNTUsICAgIDU2
LCAgIDEyNSwgICAxOTcsICAgMjg2LCAgICA3NywgICAgNzgsCi0gICAgIDI2NiwgICAyMTYsICAg
MjE3LCAgICA0MywgICAxOTcsICAgIDcwLCAgIDE4MSwgICAxODIsICAgMTgzLCAgIDE4NCwKLSAg
ICAgMTg1LCAgIDE4NiwgICAxODcsICAgMTg4LCAgIDE4OSwgICAxOTAsICAgMTkxLCAgIDE5Miwg
ICAxOTMsICAgMjg1LAotICAgICAyMjEsICAgIDcxLCAgIDE5NywgICAxNTMsICAgICA0LCAgICAg
NSwgICAgIDYsICAgIDcwLCAgIDIyMSwgICAxODksCi0gICAgIDE5MCwgICAyNTMsICAgIDMzLCAg
ICAzNCwgICAgMzUsICAgMTgzLCAgIDE4NCwgICAgNTcsICAgIDU5LCAgICA3MywKLSAgICAgIDcy
LCAgICA4MCwgICAgODAsICAgMjY1LCAgICA3MCwgICAyNjAsICAgMjIxLCAgICA3MCwgICAgNzAs
ICAgIDgwLAotICAgICAgNzUsICAgMjczLCAgICA3MCwgICAgNzIsICAgIDQwLCAgICA3MSwgICAg
NzMsICAgIDE2LCAgICA3MywgICAgNzMsCi0gICAgICA3MCwgICAyODMsICAgIDczLCAgICA3MCwg
ICAgNzcsICAgIDczLCAgICA0MywgICAgNzEsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgIDI4
NiwgICAyMDIsICAgIDc1LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICA4MCwgICAgNzEsICAgIDc5
LAotICAgICAyMTAsICAgIDgwLCAgIDE3MywgICAxOTMsICAgIDgyLCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsCi0gICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgNTUsICAgIDYyLCAgIDE5MSwKLSAgICAgIDgyLCAgICAgNSwgICAg
MzgsICAgIDM5LCAgICA3MiwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAg
ICAgNDYsICAgIDQ3LCAgICA0OCwgICAxOTgsICAgMTkyLCAgICA1MSwgICAgNTIsICAgMjUwLCAg
IDI4NCwgICAgNTMsCi0gICAgIDI1MCwgICAyNTAsICAgMjY1LCAgIDI1MywgICAyNTQsICAgIDQ0
LCAgIDIxMCwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3MCwgICAyNjUsICAgMjY2LCAgICA3MywgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIC0xLCAgICA4NCwg
ICAgLTEsCisgICAgICAgMCwgICAgODYsICAgIDk0LCAgICA4NSwgICAxNTMsICAgIDY4LCAgIDE2
MiwgICAgODIsICAgIDc0LCAgICA4NCwKKyAgICAgICAwLCAgICAgMCwgICAgNTgsICAgIDM0LCAg
ICAzOCwgICAgNDMsICAgIDcyLCAgICA0MCwgICAgNTEsICAgIDUyLAorICAgICAyNTMsICAgMTA2
LCAgICA4NSwgICAgNzksICAgIDM3LCAgICA4MCwgICAgNDksICAgIDUxLCAgICA1MywgICAgNTQs
CisgICAgICA0MywgICAyODAsICAgMjY1LCAgICA3MSwgICAgNTUsICAgMjg0LCAgICAgMywgICAg
NjEsICAgIDM4LCAgICA3MiwKKyAgICAgIDQwLCAgICAgOCwgICAgIDksICAgIDc2LCAgICA0NCwg
ICAxMzcsICAgIDc0LCAgICA5MywgICAgNzIsICAgIDQ5LAorICAgICAgNzQsICAgIDUxLCAgICA3
NCwgICAyMDIsICAgIDQ0LCAgICA0NCwgICAgNzEsICAgIDc3LCAgICA4MiwgICAxMjUsCisgICAg
ICA4MCwgICAgNjEsICAgIDc3LCAgICA4OCwgICAgODksICAgIDcxLCAgICAzMywgICAgMzQsICAg
IDM1LCAgICAzNiwKKyAgICAgIDM3LCAgICA3NywgICAgNzIsICAgIDc3LCAgICA3NCwgICAgNzEs
ICAgIDc2LCAgIDE2MiwgICAgNzEsICAgMTYxLAorICAgICAxNzIsICAgIDc3LCAgICA4MiwgICAg
NzAsICAgIDc3LCAgICA3MiwgICAgNzcsICAgIDQzLCAgICAgMywgICAgODAsCisgICAgICA3Miwg
ICAxNzYsICAgIDc5LCAgICAgOCwgICAgIDksICAgIDU1LCAgICA1NiwgICAgNzcsICAgMTYxLCAg
ICA2OCwKKyAgICAgIDgwLCAgIDEyNSwgICAxOTQsICAgIDc0LCAgICA3MSwgICAyNTQsICAgMTg1
LCAgIDE4NiwgICAxODcsICAgMTg4LAorICAgICAgMzcsICAgIDc3LCAgIDIwNCwgICAgNDMsICAg
IDgwLCAgIDE5NywgICAgODUsICAgMjY2LCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICA5MiwgICAgOTMsICAgMTI1LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA4MCwK
KyAgICAgMjg2LCAgIDIxNiwgICAyMTcsICAgIDQzLCAgIDE5NywgICAgNjksICAgMjg1LCAgICA4
NSwgICAgODYsICAgMjIxLAorICAgICAxMDksICAgICA0LCAgICAgNSwgICAgIDYsICAgIDQzLCAg
ICA3OSwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgNzAsCisgICAgICA3MCwgICAgNzIsICAgIDcx
LCAgIDE1MywgICAgNzcsICAgIDc4LCAgIDE4MywgICAxODQsICAgMjIxLCAgIDE4OSwKKyAgICAg
MTkwLCAgIDI1MywgICAgNzAsICAgIDU3LCAgICA1OSwgICAgNDAsICAgIDczLCAgICA3MiwgICAg
ODAsICAgIDgwLAorICAgICAgNzAsICAgIDgwLCAgICA3MCwgICAyNjUsICAgIDcwLCAgIDI2MCwg
ICAgNzcsICAgIDQzLCAgICA3NSwgICAgNzIsCisgICAgICA3MCwgICAyNzMsICAgIDczLCAgICA3
NSwgICAgNzMsICAgIDczLCAgICA3MCwgICAgNzMsICAgIDczLCAgICA3MCwKKyAgICAgIDE2LCAg
IDI4MywgICAxNjEsICAgIDcxLCAgICA3MSwgICAxNzMsICAgMTkxLCAgICA4MCwgICAgODAsICAg
IDc5LAorICAgICAxOTIsICAgMjg2LCAgIDIwMiwgICAgODIsICAgIDU1LCAgIDE5MywgICAgNjIs
ICAgICA1LCAgICA4MiwgICAyNTAsCisgICAgIDIxMCwgICAgNzIsICAgMTgxLCAgIDE4MiwgICAx
ODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwKKyAgICAgMTg5LCAgIDE5MCwg
ICAxOTEsICAgMTkyLCAgIDE5MywgICAxOTgsICAgMjg0LCAgIDIxMCwgICAxOTcsICAgIDUzLAor
ICAgICAyNjUsICAgMjUwLCAgICA0NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgMjUwLCAgICAtMSwgICAyMjEs
ICAgMjUzLCAgIDI1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDI2NSwgICAyNjYsICAgIC0xLCAgICAt
MSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgMjgwLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgIDI4NCwgICAyODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAogICAgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
LTEsCiAgICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwKQEAgLTExOTQsNjQgKzExOTcsNjcgQEAgc3RhdGljIGNvbnN0
IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEs
ICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCiAgICAgICA0NywgICAg
NDgsICAgIC0xLCAgICAtMSwgICAgNTEsICAgIDUyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzAsICAgICA0
LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAxMCwgICAgMTEsICAg
IDEyLCAgICAtMSwgICAgODEsICAgIDgyLCAgICAtMSwgICAgODQsICAgIC0xLCAgICAtMSwKLSAg
ICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywg
ICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAg
ICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICAtMSwKLSAgICAgIC0x
LCAgICA1MSwgICAgNTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MCwgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwKLSAgICAgIDgwLCAgICA4
MSwgICAgODIsICAgIC0xLCAgICA4NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIy
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzAsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDEwLCAgICAxMSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEs
ICAgIDgyLCAgICAtMSwgICAgODQsICAgIDIxLCAgICAyMiwKICAgICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAogICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAg
ICA0MSwgICAgNDIsCiAgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4
LCAgICAtMSwgICAgLTEsICAgIDUxLCAgICA1MiwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcwLCAgICAtMSwg
ICAgLTEsCi0gICAgICA3MywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDgxLCAgICA4MiwKLSAgICAgIC0xLCAgICA4NCwgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLAotICAgICAgMTIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEs
Ci0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLAotICAgICAgNDIsICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIC0xLCAgICAtMSwgICAgNTEsCi0gICAg
ICA1MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNzAsICAgICA0LAotICAgICAgIDUsICAgICA2LCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgODEsCi0gICAgICA4Miwg
ICAgLTEsICAgIDg0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAg
ICAyNCwKKyAgICAgIDczLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgODEsICAgIDgyLAorICAgICAgLTEsICAgIDg0LCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCisgICAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwK
KyAgICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LAorICAgICAgLTEsICAgIC0xLCAgICA1MSwgICAgNTIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAg
IC0xLCAgICA3MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
LTEsICAgIC0xLAorICAgICAgLTEsICAgIDgwLCAgICA4MSwgICAgODIsICAgIC0xLCAgICA4NCwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsCiAgICAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
IDQ0LAogICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIC0xLCAgICAtMSwgICAgNTEs
ICAgIDUyLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzAsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgODEsICAgIDgy
LCAgICAtMSwgICAgODQsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
MzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICAtMSwgICAgNDQsICAgICA0LCAgICAg
NSwgICAgIDYsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcwLCAg
ICAtMSwgICAgLTEsICAgIDczLCAgICAxMCwKKyAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIDg0LAorICAgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAg
MzAsCisgICAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMzgsICAgIDM5LCAgICAtMSwKKyAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0
NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgLTEsICAgIC0xLAorICAgICAgNTEsICAgIDUyLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3MCwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgNzUsICAgIC0x
LCAgICAtMSwKLSAgICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IC0xLCAgICA0NCwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMCwgICAgLTEsCi0gICAgICAtMSwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAx
MSwKLSAgICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgNzUsICAgIDIxLAorICAgICAgODEsICAgIDgyLCAgICAtMSwgICAgODQsICAgIDIx
LCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAg
ICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwg
ICAgNDUsICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICAtMSwgICAgLTEsICAgIDUxLCAgICA1
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDcwLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEs
ICAgIC0xLAorICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIDgxLCAgICA4MiwgICAg
LTEsICAgIDg0LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKKyAgICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5
LAorICAgICAgLTEsICAgIDQxLCAgICA0MiwgICAgLTEsICAgIDQ0LCAgICAgNCwgICAgIDUsICAg
ICA2LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAg
MjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICA3NSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMzgsCisgICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgLTEsICAgIDQ0
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAgLTEsICAgICAzLAorICAgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3
NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAorICAgICAgLTEsICAgIC0x
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgLTEs
CisgICAgICA0NCwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAg
IDksICAgIDEwLCAgICAxMSwKKyAgICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLAogICAgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsCiAgICAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IC0xLCAgICA0MSwKICAgICAgIDQyLCAgICAtMSwgICAgNDQsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLAogICAgICAgMTEsICAgIDEyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwKLSAgICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzOCwgICAgMzksICAgIC0xLAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDQ4LCAgICAgMywgICAgIDQsCi0gICAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAy
MiwgICAgMjMsICAgIDI0LAotICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgMzYsICAgIDM3
LCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIC0xLCAgICA0NCwKLSAgICAg
ICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IC0xLAotICAgICAgNDQsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwKLSAgICAgIC0xLCAgICA0MSwg
ICAgNDIsICAgIC0xLCAgICA0NAorICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsCisgICAgICA0MSwgICAgNDIsICAg
IC0xLCAgICA0NCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKKyAg
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICAxMCwgICAgMTEsCisgICAgICAxMiwgICAgNDgsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwKKyAgICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLAorICAgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MzgsICAgIDM5LCAgICAtMSwgICAgNDEsCisgICAgICA0MiwgICAgLTEsICAgIDQ0CiB9OwogCiAv
KiBZWVNUT1NbU1RBVEUtTlVNXSAtLSBUaGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vz
c2luZwpAQCAtMTI3MCw5ICsxMjc2LDkgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0
b3NbXSA9CiAgICAgICA0NywgICAgNDgsICAgIDUxLCAgICA1MiwgICAgNzAsICAgIDgxLCAgICA4
MiwgICAgODQsICAgIDk1LCAgICA5NiwKICAgICAgIDk3LCAgICA5OSwgICAxMDAsICAgMTAxLCAg
IDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAgMTA3LAogICAgICAxMDgsICAgMTA5
LCAgIDExMCwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcs
Ci0gICAgIDExOCwgICAxMTksICAgMTIzLCAgIDEzNywgICAgODAsICAgMTQyLCAgICA0MywgICAx
NDQsICAgMTQ1LCAgICA3NSwKKyAgICAgMTE4LCAgIDExOSwgICAxMjMsICAgMTQwLCAgICA4MCwg
ICAxNDIsICAgIDQzLCAgIDE0NCwgICAxNDUsICAgIDc1LAogICAgICAxNDMsICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwgICAgNzQsCi0gICAg
ICA3NSwgICAgODAsICAgMTA2LCAgIDExOSwgICAxMjAsICAgMTIyLCAgIDEyNCwgICAxMjUsICAg
MTM3LCAgIDE0NywKKyAgICAgIDc1LCAgICA4MCwgICAxMDYsICAgMTE5LCAgIDEyMCwgICAxMjIs
ICAgMTI0LCAgIDEyNSwgICAxNDAsICAgMTQ3LAogICAgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAx
NTUsICAgMTU2LCAgIDE1NywgICAxNjAsICAgMTY3LCAgICA0MywgICAxMjksCiAgICAgIDEzMiwg
ICAgNzIsICAgIDc5LCAgICA3MywgICAxMjMsICAgMTIwLCAgIDE0NiwgICAxMDYsICAgMTA2LCAg
IDEyMiwKICAgICAgIDUxLCAgICA1MiwgICAgNzIsICAgIDc2LCAgICA3MSwgICAgNzEsICAgIDc3
LCAgICAzOSwgICAxMjAsICAgIDcwLApAQCAtMTM2MSw3ICsxMzY3LDcgQEAgd2hpbGUgKFlZSUQg
KDApKQogICAgd2Ugd29uJ3QgYnJlYWsgdXNlciBjb2RlOiB3aGVuIHRoZXNlIGFyZSB0aGUgbG9j
YXRpb25zIHdlIGtub3cuICAqLwogCiAjaWZuZGVmIFlZX0xPQ0FUSU9OX1BSSU5UCi0jIGlmIFlZ
TFRZUEVfSVNfVFJJVklBTAorIyBpZiBkZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxU
WVBFX0lTX1RSSVZJQUwKICMgIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpCQkJ
XAogICAgICBmcHJpbnRmIChGaWxlLCAiJWQuJWQtJWQuJWQiLAkJCVwKIAkgICAgICAoTG9jKS5m
aXJzdF9saW5lLCAoTG9jKS5maXJzdF9jb2x1bW4sCVwKQEAgLTI2MTQsMTMgKzI2MjAsNiBAQCB5
eXJlZHVjZToKICAgICAgICAgLy8KICAgICAgICAgLy8gQ29uc3RydWN0b3IKICAgICAgICAgLy8K
LSAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5hcnJheSkgewotICAg
ICAgICAgICAgLy8gQ29uc3RydWN0b3JzIGZvciBhcnJheXMgYXJlIG5vdCBhbGxvd2VkLgotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxp
bmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsICJhcnJheSIsICIiKTsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKS5zZXRBcnJheShmYWxzZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBUT3BlcmF0
b3Igb3AgPSBFT3BOdWxsOwogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpLnVzZXJEZWYpIHsKICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0U3RydWN0OwpAQCAt
MzM2MCwyMCArMzM1OSwxNCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwotICAgICAgICAKLSAgICAgICAgaWYg
KCh5eXZhbC5pbnRlcm0pLnR5cGUucHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCkgewotICAgICAg
ICAgICAgKHl5dmFsLmludGVybSkudHlwZS5wcmVjaXNpb24gPSBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5nZXREZWZhdWx0UHJlY2lzaW9uKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkudHlwZS50eXBl
KTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCh5eXZzcFso
MSkgLSAoMSldLmludGVybSkubGluZSwgKHl5dmFsLmludGVybSkudHlwZS5wcmVjaXNpb24sICh5
eXZzcFsoMSkgLSAoMSldLmludGVybSkudHlwZS50eXBlKSkgewotICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgIDt9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSA5MjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKDAsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtKS50eXBlKSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKSwgKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygzKSAtICgzKV0u
bGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkudHlwZSksICh5eXZz
cFsoMykgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkg
LSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgc3ltYm9sLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgp
LmxpbmUpOwogICAgICAgICAKICAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2YWwuaW50ZXJtKS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTMzODEsOCArMzM3NCwxMSBA
QCB5eXJlZHVjZToKICAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2so
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJp
bmcsICh5eXZhbC5pbnRlcm0pLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dmFsLmlu
dGVybSkudHlwZSkpCisgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOworICAgICAgICBp
ZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5l
LCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIHZh
cmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgaWYgKHN5
bWJvbCAmJiB2YXJpYWJsZSkKKyAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdl
dFVuaXF1ZUlkKCkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM0MjYsMTIgKzM0MjIsMTIg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVj
aygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoNSkgLSAoNildLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUuc2V0QXJyYXko
dHJ1ZSwgc2l6ZSk7Ci0gICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlOworICAgICAgICAg
ICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAo
NildLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxl
KSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlw
ZSB0eXBlID0gVFR5cGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKTsKICAgICAgICAg
ICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSku
aW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5
dnNwWygxKSAtICg2KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNw
WygzKSAtICg2KV0ubGV4KS5saW5lKSwgKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoNildLmludGVybSkuaW50ZXJtTm9k
ZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5n
ZXRVbmlxdWVJZCgpIDogMCwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCB0eXBlLCAo
eXl2c3BbKDMpIC0gKDYpXS5sZXgpLmxpbmUpLCAoeXl2c3BbKDMpIC0gKDYpXS5sZXgpLmxpbmUp
OwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKQEAgLTM0NzEsNyArMzQ2Nyw4IEBAIHl5
cmVkdWNlOgogICBjYXNlIDk3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmlu
ZywgVFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKSwgKHl5dnNwWygyKSAtICgy
KV0ubGV4KS5saW5lKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgVElu
dGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAq
KHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS50eXBlKSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdn
cmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikg
LSAoMildLmxleCkubGluZSwgKHl5dmFsLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CkBAIC0zNDgxLDMyICszNDc4LDIzIEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLnR5cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVj
aygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0
cmluZywgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUg
PSAwOworICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5p
bnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
KyAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKKyAgICAgICAgICAgIHN5bWJvbC0+c2V0
SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSA5ODoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZz
cFsoMSkgLSAoNCldLmludGVybS50eXBlKSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSks
ICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoY29u
dGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxp
bmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCi0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0KLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hl
Y2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5z
dHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCi0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCld
LmxleCkubGluZSwgInVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQiLCAo
eXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSwgIiIpOworICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJp
bmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSksICh5eXZzcFsoMikgLSAo
NCldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFso
MSkgLSAoNCldLmludGVybS50eXBlKTsKLQotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBl
RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDQpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS50eXBlKSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZz
cFsoMykgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSk7Ci0gICAg
ICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCB2YXJpYWJs
ZSkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICB9CiAgICAg
O30KICAgICBicmVhazsKIApAQCAtMzUxOCw3ICszNTA2LDggQEAgeXlyZWR1Y2U6CiAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCku
bGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB0eXBlLnNldEFycmF5U2l6
ZShzaXplKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCgwLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eXZzcFsoMikg
LSAoNSldLmxleCkubGluZSksICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7CisgICAgICAg
IFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wo
MCwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCB0eXBlLCAoeXl2c3BbKDIpIC0gKDUp
XS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eXZzcFsoMikgLSAo
NSldLmxleCkubGluZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVh
bGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkg
LSAoNSldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CkBA
IC0zNTM2LDkgKzM1MjUsMTEgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSku
c2V0QXJyYXkodHJ1ZSwgc2l6ZSk7Ci0gICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlOwor
ICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7CiAgICAgICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKih5eXZz
cFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSks
IHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAg
ICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQorICAgICAgICAgICAgICAgIHN5bWJvbC0+c2V0
SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVh
azsKQEAgLTM2NjcsNiArMzY1OCwxMyBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKKworICAg
ICAgICBpZiAoKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24gPT0gRWJwVW5kZWZpbmVkKSB7
CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmdldERlZmF1bHRQcmVjaXNpb24oKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpLnR5cGUpOworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9yQ2hlY2so
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUsICh5eXZhbC5pbnRlcm0udHlwZSku
cHJlY2lzaW9uLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSkpIHsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
ICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zOTcxLDYgKzM5NjksNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkudHlwZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXROb21pbmFsU2l6ZSgoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkuc2l6ZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXRNYXRyaXgoKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCk7CisgICAgICAgICAgICB0eXBlLT5z
ZXRQcmVjaXNpb24oKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnByZWNpc2lvbik7CiAK
ICAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgICAg
IGlmICh0eXBlLT5pc0FycmF5KCkpIHsKQEAgLTQwOTQsOCArNDA5MywxMCBAQCB5eXJlZHVjZToK
ICAgY2FzZSAxNTc6CiAKICAgICB7Ci0gICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtQWdncmVnYXRlKSAhPSAwKQorICAgICAgICBpZiAoKHl5dnNwWygzKSAtICg1KV0u
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgIT0gMCkgewogICAgICAgICAgICAgKHl5dnNwWygzKSAt
ICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldE9wKEVPcFNlcXVlbmNlKTsKKyAgICAg
ICAgICAgICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRFbmRM
aW5lKCh5eXZzcFsoNSkgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgIH0KICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmlu
dGVybUFnZ3JlZ2F0ZSk7CiAgICAgO30KICAgICBicmVhazsKQEAgLTQxMjAsOCArNDEyMSwxMCBA
QCB5eXJlZHVjZToKICAgY2FzZSAxNjE6CiAKICAgICB7Ci0gICAgICAgIGlmICgoeXl2c3BbKDIp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSkKKyAgICAgICAgaWYgKCh5eXZzcFsoMikg
LSAoMyldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDIp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOworICAg
ICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVu
ZExpbmUoKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgfQogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVy
bUFnZ3JlZ2F0ZSk7CiAgICAgO30KICAgICBicmVhazsKQEAgLTQ0ODEsNiArNDQ4NCw5IEBAIHl5
cmVkdWNlOgogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0
ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0LT5jb250ZXh0UHJhZ21hLm9wdGltaXplKTsKICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RGVidWco
Y29udGV4dC0+Y29udGV4dFByYWdtYS5kZWJ1Zyk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPmFkZFRvUHJhZ21hVGFibGUoY29udGV4dC0+Y29u
dGV4dFByYWdtYS5wcmFnbWFUYWJsZSk7CisKKyAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoMyld
LmludGVybS5pbnRlcm1Ob2RlKSAmJiAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtTm9k
ZSktPmdldEFzQWdncmVnYXRlKCkpCisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRFbmRMaW5lKCh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+Z2V0RW5kTGluZSgpKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
Z2xzbGFuZ190YWIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvZ2xzbGFuZ190YWIuaAkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYyLDcgKzI2Miw3IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICB9OwogICAgIH0g
aW50ZXJtOwogfQotLyogTGluZSAxNDg5IG9mIHlhY2MuYy4gICovCisvKiBMaW5lIDE1Mjkgb2Yg
eWFjYy5jLiAgKi8KIAogCVlZU1RZUEU7CiAjIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUgLyogb2Jz
b2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCShyZXZpc2lvbiA4OTI4
NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1lZGlhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjc5LDcgKzI3OSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGluaXQoYUluaXQpLAogICAgICAgICAgICAgY29uZChhQ29uZCksCiAgICAgICAgICAgICBleHBy
KGFFeHByKSwKLSAgICAgICAgICAgIGJvZHkoYUJvZHkpIHsgfQorICAgICAgICAgICAgYm9keShh
Qm9keSksCisgICAgICAgICAgICB1bnJvbGxGbGFnKGZhbHNlKSB7IH0KIAogICAgIHZpcnR1YWwg
VEludGVybUxvb3AqIGdldEFzTG9vcE5vZGUoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVh
bCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKTsKQEAgLTI5MCwxMiArMjkxLDE3IEBA
IHB1YmxpYzoKICAgICBUSW50ZXJtVHlwZWQqIGdldEV4cHJlc3Npb24oKSB7IHJldHVybiBleHBy
OyB9CiAgICAgVEludGVybU5vZGUqIGdldEJvZHkoKSB7IHJldHVybiBib2R5OyB9CiAKKyAgICB2
b2lkIHNldFVucm9sbEZsYWcoYm9vbCBmbGFnKSB7IHVucm9sbEZsYWcgPSBmbGFnOyB9CisgICAg
Ym9vbCBnZXRVbnJvbGxGbGFnKCkgeyByZXR1cm4gdW5yb2xsRmxhZzsgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgVExvb3BUeXBlIHR5cGU7CiAgICAgVEludGVybU5vZGUqIGluaXQ7ICAvLyBmb3ItbG9v
cCBpbml0aWFsaXphdGlvbgogICAgIFRJbnRlcm1UeXBlZCogY29uZDsgLy8gbG9vcCBleGl0IGNv
bmRpdGlvbgogICAgIFRJbnRlcm1UeXBlZCogZXhwcjsgLy8gZm9yLWxvb3AgZXhwcmVzc2lvbgog
ICAgIFRJbnRlcm1Ob2RlKiBib2R5OyAgLy8gbG9vcCBib2R5CisKKyAgICBib29sIHVucm9sbEZs
YWc7IC8vIFdoZXRoZXIgdGhlIGxvb3Agc2hvdWxkIGJlIHVucm9sbGVkIG9yIG5vdC4KIH07CiAK
IC8vCkBAIC0zMjYsMTcgKzMzMiwyMyBAQCBwdWJsaWM6CiAgICAgLy8gcGVyIHByb2Nlc3MgZ2xv
YmFscG9vbGFsbG9jYXRvciwgdGhlbiBpdCBjYXVzZXMgaW5jcmVhc2VkIG1lbW9yeSB1c2FnZSBw
ZXIgY29tcGlsZQogICAgIC8vIGl0IGlzIGVzc2VudGlhbCB0byB1c2UgInN5bWJvbCA9IHN5bSIg
dG8gYXNzaWduIHRvIHN5bWJvbAogICAgIFRJbnRlcm1TeW1ib2woaW50IGksIGNvbnN0IFRTdHJp
bmcmIHN5bSwgY29uc3QgVFR5cGUmIHQpIDogCi0gICAgICAgICAgICBUSW50ZXJtVHlwZWQodCks
IGlkKGkpICB7IHN5bWJvbCA9IHN5bTt9IAorICAgICAgICAgICAgVEludGVybVR5cGVkKHQpLCBp
ZChpKSAgeyBzeW1ib2wgPSBzeW07IG9yaWdpbmFsU3ltYm9sID0gc3ltOyB9IAogCiAgICAgaW50
IGdldElkKCkgY29uc3QgeyByZXR1cm4gaWQ7IH0KICAgICBjb25zdCBUU3RyaW5nJiBnZXRTeW1i
b2woKSBjb25zdCB7IHJldHVybiBzeW1ib2w7IH0KIAorICAgIHZvaWQgc2V0SWQoaW50IG5ld0lk
KSB7IGlkID0gbmV3SWQ7IH0KKyAgICB2b2lkIHNldFN5bWJvbChjb25zdCBUU3RyaW5nJiBzeW0p
IHsgc3ltYm9sID0gc3ltOyB9CisKKyAgICBjb25zdCBUU3RyaW5nJiBnZXRPcmlnaW5hbFN5bWJv
bCgpIGNvbnN0IHsgcmV0dXJuIG9yaWdpbmFsU3ltYm9sOyB9CisKICAgICB2aXJ0dWFsIHZvaWQg
dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciopOwogICAgIHZpcnR1YWwgVEludGVybVN5bWJvbCog
Z2V0QXNTeW1ib2xOb2RlKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgaW50
IGlkOwogICAgIFRTdHJpbmcgc3ltYm9sOworICAgIFRTdHJpbmcgb3JpZ2luYWxTeW1ib2w7CiB9
OwogCiBjbGFzcyBUSW50ZXJtQ29uc3RhbnRVbmlvbiA6IHB1YmxpYyBUSW50ZXJtVHlwZWQgewpA
QCAtNDIwLDcgKzQzMiw3IEBAIHR5cGVkZWYgVE1hcDxUU3RyaW5nLCBUU3RyaW5nPiBUUHJhZ21h
VGEKIC8vCiBjbGFzcyBUSW50ZXJtQWdncmVnYXRlIDogcHVibGljIFRJbnRlcm1PcGVyYXRvciB7
CiBwdWJsaWM6Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSgpIDogVEludGVybU9wZXJhdG9yKEVPcE51
bGwpLCB1c2VyRGVmaW5lZChmYWxzZSksIHByYWdtYVRhYmxlKDApIHsgfQorICAgIFRJbnRlcm1B
Z2dyZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihFT3BOdWxsKSwgdXNlckRlZmluZWQoZmFsc2Up
LCBwcmFnbWFUYWJsZSgwKSwgZW5kTGluZSgwKSB7IH0KICAgICBUSW50ZXJtQWdncmVnYXRlKFRP
cGVyYXRvciBvKSA6IFRJbnRlcm1PcGVyYXRvcihvKSwgcHJhZ21hVGFibGUoMCkgeyB9CiAgICAg
flRJbnRlcm1BZ2dyZWdhdGUoKSB7IGRlbGV0ZSBwcmFnbWFUYWJsZTsgfQogCkBAIC00NDEsNiAr
NDUzLDggQEAgcHVibGljOgogICAgIGJvb2wgZ2V0RGVidWcoKSB7IHJldHVybiBkZWJ1ZzsgfQog
ICAgIHZvaWQgYWRkVG9QcmFnbWFUYWJsZShjb25zdCBUUHJhZ21hVGFibGUmIHBUYWJsZSk7CiAg
ICAgY29uc3QgVFByYWdtYVRhYmxlJiBnZXRQcmFnbWFUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICpw
cmFnbWFUYWJsZTsgfQorICAgIHZvaWQgc2V0RW5kTGluZShUU291cmNlTG9jIGxpbmUpIHsgZW5k
TGluZSA9IGxpbmU7IH0KKyAgICBUU291cmNlTG9jIGdldEVuZExpbmUoKSBjb25zdCB7IHJldHVy
biBlbmRMaW5lOyB9CiAKIHByb3RlY3RlZDoKICAgICBUSW50ZXJtQWdncmVnYXRlKGNvbnN0IFRJ
bnRlcm1BZ2dyZWdhdGUmKTsgLy8gZGlzYWxsb3cgY29weSBjb25zdHJ1Y3RvcgpAQCAtNDUyLDYg
KzQ2Niw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG9wdGltaXplOwogICAgIGJvb2wgZGVidWc7
CiAgICAgVFByYWdtYVRhYmxlICpwcmFnbWFUYWJsZTsKKyAgICBUU291cmNlTG9jIGVuZExpbmU7
CiB9OwogCiAvLwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9hdG9tLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9hdG9tLmMJKHJldmlzaW9uIDg5Mjg2KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9hdG9tLmMJKHdv
cmtpbmcgY29weSkKQEAgLTE4MiwxMiArMTgyLDEzIEBAIHN0YXRpYyBpbnQgQWRkU3RyaW5nKFN0
cmluZ1RhYmxlICpzdGFibGUKICAgICBjaGFyICpzdHI7CiAKICAgICBsZW4gPSAoaW50KSBzdHJs
ZW4ocyk7Ci0gICAgaWYgKHN0YWJsZS0+bmV4dEZyZWUgKyBsZW4gKyAxID49IHN0YWJsZS0+c2l6
ZSkgeworICAgIHdoaWxlIChzdGFibGUtPm5leHRGcmVlICsgbGVuICsgMSA+PSBzdGFibGUtPnNp
emUpIHsKICAgICAgICAgYXNzZXJ0KHN0YWJsZS0+c2l6ZSA8IDEwMDAwMDApOwogICAgICAgICBz
dHIgPSAoY2hhciAqKSBtYWxsb2Moc3RhYmxlLT5zaXplKjIpOwogICAgICAgICBtZW1jcHkoc3Ry
LCBzdGFibGUtPnN0cmluZ3MsIHN0YWJsZS0+c2l6ZSk7CiAgICAgICAgIGZyZWUoc3RhYmxlLT5z
dHJpbmdzKTsKICAgICAgICAgc3RhYmxlLT5zdHJpbmdzID0gc3RyOworICAgICAgICBzdGFibGUt
PnNpemUgPSBzdGFibGUtPnNpemUqMjsKICAgICB9CiAgICAgbG9jID0gc3RhYmxlLT5uZXh0RnJl
ZTsKICAgICBzdHJjcHkoJnN0YWJsZS0+c3RyaW5nc1tsb2NdLCBzKTsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvY29tcGlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvY29tcGlsZS5oCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvY29tcGlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw2ICs1OSw3IEBAIHR5cGVkZWYgc3RydWN0IE9wdGlvbnNfUmVjewogICAgIGludCBEdW1wQXRv
bVRhYmxlOwogfSBPcHRpb25zOwogCisjZGVmaW5lIE1BWF9JRl9ORVNUSU5HICA2NAogc3RydWN0
IENQUFN0cnVjdF9SZWMgewogICAgIC8vIFB1YmxpYyBtZW1iZXJzCiAgICAgU291cmNlTG9jICpw
TGFzdFNvdXJjZUxvYzsgIC8vIFNldCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzdGF0ZW1lbnQgYnkg
dGhlIHRyZWUgd2Fsa2VycwpAQCAtODAsNyArODEsNyBAQCBzdHJ1Y3QgQ1BQU3RydWN0X1JlYyB7
CiAgICAgLy8gUHJpdmF0ZSBtZW1iZXJzOgogICAgIFNvdXJjZUxvYyBsdG9rZW5Mb2M7CiAJaW50
IGlmZGVwdGg7ICAgICAgICAgICAgICAgIC8vY3VycmVudCAjaWYtI2Vsc2UtI2VuZGlmIG5lc3Rp
bmcgaW4gdGhlIGNwcC5jIGZpbGUgKHByZS1wcm9jZXNzb3IpICAgIAotICAgIGludCBlbHNlZGVw
dGhbNjRdOyAgICAgICAgICAvL0tlZXAgYSB0cmFjayBvZiAjaWYgZGVwdGguLk1heCBhbGxvd2Vk
IGlzIDY0LiAgIAorICAgIGludCBlbHNlZGVwdGhbTUFYX0lGX05FU1RJTkddOy8vS2VlcCBhIHRy
YWNrIG9mICNpZiBkZXB0aC4uTWF4IGFsbG93ZWQgaXMgNjQuCiAgICAgaW50IGVsc2V0cmFja2Vy
OyAgICAgICAgICAgIC8vI2lmLSNlbHNlIGFuZCAjZW5kaWYgY29uc3RydWN0cy4uLkNvdW50ZXIu
CiAgICAgY29uc3QgY2hhciAqRXJyTXNnOwogICAgIGludCBDb21waWxlRXJyb3I7ICAgICAgICAg
ICAvL0luZGljYXRlIGNvbXBpbGUgZXJyb3Igd2hlbiAjZXJyb3IsICNlbHNlLCNlbGlmIG1pc21h
dGNoLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9jcHAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL2NwcC5jCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvY3BwLmMJKHdvcmtpbmcgY29w
eSkKQEAgLTg0LDcgKzg0LDYgQEAgc3RhdGljIGludCBleHRlbnNpb25BdG9tID0gMDsKIAogc3Rh
dGljIFNjb3BlICptYWNyb3MgPSAwOwogI2RlZmluZSBNQVhfTUFDUk9fQVJHUyAgNjQKLSNkZWZp
bmUgTUFYX0lGX05FU1RJTkcgIDY0CiAKIHN0YXRpYyBTb3VyY2VMb2MgaWZsb2M7IC8qIG91dGVy
bW9zdCAjaWYgKi8KIApAQCAtMjg1LDE4ICsyODQsMzAgQEAgc3RhdGljIGludCBDUFBlbHNlKGlu
dCBtYXRjaGVsc2UsIHl5c3R5cAogICAgICAgICBhdG9tID0geXlsdmFscHAtPnNjX2lkZW50Owog
ICAgICAgICBpZiAoYXRvbSA9PSBpZkF0b20gfHwgYXRvbSA9PSBpZmRlZkF0b20gfHwgYXRvbSA9
PSBpZm5kZWZBdG9tKXsKICAgICAgICAgICAgIGRlcHRoKys7IGNwcC0+aWZkZXB0aCsrOyBjcHAt
PmVsc2V0cmFja2VyKys7CisgICAgICAgICAgICBpZiAoY3BwLT5pZmRlcHRoID4gTUFYX0lGX05F
U1RJTkcpIHsKKyAgICAgICAgICAgICAgICBDUFBFcnJvclRvSW5mb0xvZygibWF4ICNpZiBuZXN0
aW5nIGRlcHRoIGV4Y2VlZGVkIik7CisgICAgICAgICAgICAgICAgY3BwLT5Db21waWxlRXJyb3Ig
PSAxOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLy8gc2FuaXR5IGNoZWNrIGVsc2V0cmFja2VyCisgICAgICAgICAgICBpZiAoY3BwLT5lbHNl
dHJhY2tlciA8IDAgfHwgY3BwLT5lbHNldHJhY2tlciA+PSBNQVhfSUZfTkVTVElORykgeworICAg
ICAgICAgICAgICAgIENQUEVycm9yVG9JbmZvTG9nKCJtaXNtYXRjaGVkICNpZi8jZW5kaWYgc3Rh
dGVtZW50cyIpOworICAgICAgICAgICAgICAgIGNwcC0+Q29tcGlsZUVycm9yID0gMTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNwcC0+ZWxz
ZWRlcHRoW2NwcC0+ZWxzZXRyYWNrZXJdID0gMDsKLQkJfQotCQllbHNlIGlmIChhdG9tID09IGVu
ZGlmQXRvbSkgeworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGF0b20gPT0gZW5kaWZBdG9t
KSB7CiAgICAgICAgICAgICBpZigtLWRlcHRoPDApewotCQkJICAgIC0tY3BwLT5lbHNldHJhY2tl
cjsKKyAgICAgICAgICAgICAgICBpZiAoY3BwLT5lbHNldHJhY2tlcikKKyAgICAgICAgICAgICAg
ICAgICAgLS1jcHAtPmVsc2V0cmFja2VyOwogICAgICAgICAgICAgICAgIGlmIChjcHAtPmlmZGVw
dGgpIAogICAgICAgICAgICAgICAgICAgICAtLWNwcC0+aWZkZXB0aDsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0gICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLS1j
cHAtPmVsc2V0cmFja2VyOwotICAgICAgICAgICAgICAgIC0tY3BwLT5pZmRlcHRoOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLS1jcHAtPmVsc2V0cmFja2VyOworICAgICAgICAgICAgLS1j
cHAtPmlmZGVwdGg7CisgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoKChpbnQpKG1hdGNoZWxz
ZSkgIT0gMCkmJiBkZXB0aD09MCkgewogCQkJaWYgKGF0b20gPT0gZWxzZUF0b20gKSB7CiAgICAg
ICAgICAgICAgICAgdG9rZW4gPSBjcHAtPmN1cnJlbnRJbnB1dC0+c2NhbihjcHAtPmN1cnJlbnRJ
bnB1dCwgeXlsdmFscHApOwpAQCAtMzI1LDYgKzMzNiw3IEBAIHN0YXRpYyBpbnQgQ1BQZWxzZShp
bnQgbWF0Y2hlbHNlLCB5eXN0eXAKICAgICAgICAgZWxzZSBpZigoYXRvbT09ZWxzZUF0b20pICYm
ICghQ2hrQ29ycmVjdEVsc2VOZXN0aW5nKCkpKXsKICAgICAgICAgICAgIENQUEVycm9yVG9JbmZv
TG9nKCIjZWxzZSBhZnRlciBhICNlbHNlIik7CiAgICAgICAgICAgICBjcHAtPkNvbXBpbGVFcnJv
cj0xOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAl9OwogICAgIHJldHVybiB0
b2tlbjsKQEAgLTQ1Niw2ICs0NjgsMTcgQEAgc3RhdGljIGludCBldmFsKGludCB0b2tlbiwgaW50
IHByZWMsIGludAogICAgICAgICB2YWwgPSAqcmVzOwogICAgICAgICB0b2tlbiA9IGNwcC0+Y3Vy
cmVudElucHV0LT5zY2FuKGNwcC0+Y3VycmVudElucHV0LCB5eWx2YWxwcCk7CiAgICAgICAgIHRv
a2VuID0gZXZhbCh0b2tlbiwgYmlub3BbaV0ucHJlYywgcmVzLCBlcnIsIHl5bHZhbHBwKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChiaW5vcFtpXS5vcCA9PSBvcF9kaXYgfHwgYmlub3BbaV0ub3Ag
PT0gb3BfbW9kKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoKnJlcyA9PSAwKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIENQUEVycm9yVG9JbmZvTG9nKCJwcmVwcm9jZXNzb3Ig
ZGl2aWRlIG9yIG1vZHVsbyBieSB6ZXJvIik7CisgICAgICAgICAgICAgICAgKmVyciA9IDE7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
ICAgICAgICAgKnJlcyA9IGJpbm9wW2ldLm9wKHZhbCwgKnJlcyk7CiAgICAgfQogICAgIHJldHVy
biB0b2tlbjsKQEAgLTQ2OSwxNSArNDkyLDI0IEBAIGVycm9yOgogc3RhdGljIGludCBDUFBpZih5
eXN0eXBlcHAgKiB5eWx2YWxwcCkgewogICAgIGludCB0b2tlbiA9IGNwcC0+Y3VycmVudElucHV0
LT5zY2FuKGNwcC0+Y3VycmVudElucHV0LCB5eWx2YWxwcCk7CiAgICAgaW50IHJlcyA9IDAsIGVy
ciA9IDA7Ci0JY3BwLT5lbHNldHJhY2tlcisrOwotICAgIGNwcC0+ZWxzZWRlcHRoW2NwcC0+ZWxz
ZXRyYWNrZXJdID0gMDsKKwogICAgIGlmICghY3BwLT5pZmRlcHRoKyspCiAgICAgICAgIGlmbG9j
ID0gKmNwcC0+dG9rZW5Mb2M7Ci0JaWYoY3BwLT5pZmRlcHRoID5NQVhfSUZfTkVTVElORyl7Cisg
ICAgaWYoY3BwLT5pZmRlcHRoID4gTUFYX0lGX05FU1RJTkcpewogICAgICAgICBDUFBFcnJvclRv
SW5mb0xvZygibWF4ICNpZiBuZXN0aW5nIGRlcHRoIGV4Y2VlZGVkIik7Ci0JCXJldHVybiAwOwot
CX0KLQl0b2tlbiA9IGV2YWwodG9rZW4sIE1JTl9QUkVDLCAmcmVzLCAmZXJyLCB5eWx2YWxwcCk7
CisgICAgICAgIGNwcC0+Q29tcGlsZUVycm9yID0gMTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIGNwcC0+ZWxzZXRyYWNrZXIrKzsKKyAgICAvLyBzYW5pdHkgY2hlY2sgZWxzZXRyYWNr
ZXIKKyAgICBpZiAoY3BwLT5lbHNldHJhY2tlciA8IDAgfHwgY3BwLT5lbHNldHJhY2tlciA+PSBN
QVhfSUZfTkVTVElORykgeworICAgICAgICBDUFBFcnJvclRvSW5mb0xvZygibWlzbWF0Y2hlZCAj
aWYvI2VuZGlmIHN0YXRlbWVudHMiKTsKKyAgICAgICAgY3BwLT5Db21waWxlRXJyb3IgPSAxOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3BwLT5lbHNlZGVwdGhbY3BwLT5lbHNldHJh
Y2tlcl0gPSAwOworCisgICAgdG9rZW4gPSBldmFsKHRva2VuLCBNSU5fUFJFQywgJnJlcywgJmVy
ciwgeXlsdmFscHApOwogICAgIGlmICh0b2tlbiAhPSAnXG4nKSB7CiAgICAgICAgIENQUFdhcm5p
bmdUb0luZm9Mb2coInVuZXhwZWN0ZWQgdG9rZW5zIGZvbGxvd2luZyAjaWYgcHJlcHJvY2Vzc29y
IGRpcmVjdGl2ZSAtIGV4cGVjdGVkIGEgbmV3bGluZSIpOwogICAgICAgICB3aGlsZSAodG9rZW4g
IT0gJ1xuJykgewpAQCAtNDk5LDEyICs1MzEsMjAgQEAgc3RhdGljIGludCBDUFBpZmRlZihpbnQg
ZGVmaW5lZCwgeXlzdHlwZQogewogICAgIGludCB0b2tlbiA9IGNwcC0+Y3VycmVudElucHV0LT5z
Y2FuKGNwcC0+Y3VycmVudElucHV0LCB5eWx2YWxwcCk7CiAgICAgaW50IG5hbWUgPSB5eWx2YWxw
cC0+c2NfaWRlbnQ7Ci0JaWYoKytjcHAtPmlmZGVwdGggPk1BWF9JRl9ORVNUSU5HKXsKLQkgICAg
Q1BQRXJyb3JUb0luZm9Mb2coIm1heCAjaWYgbmVzdGluZyBkZXB0aCBleGNlZWRlZCIpOwotCQly
ZXR1cm4gMDsKLQl9Ci0JY3BwLT5lbHNldHJhY2tlcisrOworICAgIGlmKCsrY3BwLT5pZmRlcHRo
ID4gTUFYX0lGX05FU1RJTkcpeworICAgICAgICBDUFBFcnJvclRvSW5mb0xvZygibWF4ICNpZiBu
ZXN0aW5nIGRlcHRoIGV4Y2VlZGVkIik7CisgICAgICAgIGNwcC0+Q29tcGlsZUVycm9yID0gMTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGNwcC0+ZWxzZXRyYWNrZXIrKzsKKyAgICAv
LyBzYW5pdHkgY2hlY2sgZWxzZXRyYWNrZXIKKyAgICBpZiAoY3BwLT5lbHNldHJhY2tlciA8IDAg
fHwgY3BwLT5lbHNldHJhY2tlciA+PSBNQVhfSUZfTkVTVElORykgeworICAgICAgICBDUFBFcnJv
clRvSW5mb0xvZygibWlzbWF0Y2hlZCAjaWYvI2VuZGlmIHN0YXRlbWVudHMiKTsKKyAgICAgICAg
Y3BwLT5Db21waWxlRXJyb3IgPSAxOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgY3Bw
LT5lbHNlZGVwdGhbY3BwLT5lbHNldHJhY2tlcl0gPSAwOworCiAgICAgaWYgKHRva2VuICE9IENQ
UF9JREVOVElGSUVSKSB7CiAgICAgICAgICAgICBkZWZpbmVkID8gQ1BQRXJyb3JUb0luZm9Mb2co
ImlmZGVmIik6Q1BQRXJyb3JUb0luZm9Mb2coImlmbmRlZiIpOwogICAgIH0gZWxzZSB7CkBAIC03
NDgsNiArNzg4LDcgQEAgaW50IHJlYWRDUFBsaW5lKHl5c3R5cGVwcCAqIHl5bHZhbHBwKQogICAg
ICAgICAgICAgICAgICBpZiAoIWNwcC0+aWZkZXB0aCApewogICAgICAgICAgICAgICAgICAgICAg
Q1BQRXJyb3JUb0luZm9Mb2coIiNlbHNlIG1pc21hdGNoIik7CiAgICAgICAgICAgICAgICAgICAg
ICBjcHAtPkNvbXBpbGVFcnJvcj0xOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgdG9rZW4gPSBjcHAtPmN1cnJlbnRJ
bnB1dC0+c2NhbihjcHAtPmN1cnJlbnRJbnB1dCwgeXlsdmFscHApOwogICAgICAgICAgICAgICAg
ICBpZiAodG9rZW4gIT0gJ1xuJykgewpAQCAtNzYzLDE0ICs4MDQsMTcgQEAgaW50IHJlYWRDUFBs
aW5lKHl5c3R5cGVwcCAqIHl5bHZhbHBwKQogCQkJICAgICB0b2tlbiA9IENQUGVsc2UoMCwgeXls
dmFscHApOwogICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICBDUFBFcnJvclRv
SW5mb0xvZygiI2Vsc2UgYWZ0ZXIgYSAjZWxzZSIpOwotICAgICAgICAgICAgICAgICBjcHAtPmlm
ZGVwdGg9MDsKKyAgICAgICAgICAgICAgICAgY3BwLT5pZmRlcHRoID0gMDsKKyAgICAgICAgICAg
ICAgICAgY3BwLT5lbHNldHJhY2tlciA9IDA7CiAgICAgICAgICAgICAgICAgIGNwcC0+cGFzdEZp
cnN0U3RhdGVtZW50ID0gMTsKKyAgICAgICAgICAgICAgICAgY3BwLT5Db21waWxlRXJyb3IgPSAx
OwogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICB9CiAJCX0gZWxzZSBp
ZiAoeXlsdmFscHAtPnNjX2lkZW50ID09IGVsaWZBdG9tKSB7CiAgICAgICAgICAgICBpZiAoIWNw
cC0+aWZkZXB0aCl7CiAgICAgICAgICAgICAgICAgIENQUEVycm9yVG9JbmZvTG9nKCIjZWxpZiBt
aXNtYXRjaCIpOwogICAgICAgICAgICAgICAgICBjcHAtPkNvbXBpbGVFcnJvcj0xOworICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAvLyB0aGlz
IHRva2VuIGlzIHJlYWxseSBhIGRvbnQgY2FyZSwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gZWF0IHRo
ZSB0b2tlbnMKICAgICAgICAgICAgIHRva2VuID0gY3BwLT5jdXJyZW50SW5wdXQtPnNjYW4oY3Bw
LT5jdXJyZW50SW5wdXQsIHl5bHZhbHBwKTsgCkBAIC03NzksMTggKzgyMywyMiBAQCBpbnQgcmVh
ZENQUGxpbmUoeXlzdHlwZXBwICogeXlsdmFscHApCiAgICAgICAgICAgICAgICAgaWYgKHRva2Vu
IDw9IDApIHsgLy8gRU9GIG9yIGVycm9yCiAgICAgICAgICAgICAgICAgICAgIENQUEVycm9yVG9J
bmZvTG9nKCJ1bmV4cGVjdCB0b2tlbnMgZm9sbG93aW5nICNlbGlmIHByZXByb2Nlc3NvciBkaXJl
Y3RpdmUgLSBleHBlY3RlZCBhIG5ld2xpbmUiKTsKICAgICAgICAgICAgICAgICAgICAgY3BwLT5D
b21waWxlRXJyb3IgPSAxOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCQkg
ICAgdG9rZW4gPSBDUFBlbHNlKDAsIHl5bHZhbHBwKTsKICAgICAgICAgfSBlbHNlIGlmICh5eWx2
YWxwcC0+c2NfaWRlbnQgPT0gZW5kaWZBdG9tKSB7Ci0JCSAgICAgLS1jcHAtPmVsc2V0cmFja2Vy
OwogICAgICAgICAgICAgIGlmICghY3BwLT5pZmRlcHRoKXsKICAgICAgICAgICAgICAgICAgQ1BQ
RXJyb3JUb0luZm9Mb2coIiNlbmRpZiBtaXNtYXRjaCIpOwogICAgICAgICAgICAgICAgICBjcHAt
PkNvbXBpbGVFcnJvcj0xOworICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgZWxzZQotCQkJICAJIC0tY3BwLT5pZmRlcHRoOworICAgICAgICAg
ICAgICAgICAtLWNwcC0+aWZkZXB0aDsKKworICAgICAgICAgICAgIGlmIChjcHAtPmVsc2V0cmFj
a2VyKQorICAgICAgICAgICAgICAgICAtLWNwcC0+ZWxzZXRyYWNrZXI7CisKIAkgICAgfSBlbHNl
IGlmICh5eWx2YWxwcC0+c2NfaWRlbnQgPT0gaWZBdG9tKSB7CiAgICAgICAgICAgICAgdG9rZW4g
PSBDUFBpZih5eWx2YWxwcCk7CiAgICAgICAgIH0gZWxzZSBpZiAoeXlsdmFscHAtPnNjX2lkZW50
ID09IGlmZGVmQXRvbSkgewpAQCAtMTA1MSw5ICsxMDk5LDE0IEBAIGludCBNYWNyb0V4cGFuZChp
bnQgYXRvbSwgeXlzdHlwZXBwICogeXkKIAogaW50IENoa0NvcnJlY3RFbHNlTmVzdGluZyh2b2lk
KQogewotICAgIGlmKGNwcC0+ZWxzZWRlcHRoW2NwcC0+ZWxzZXRyYWNrZXJdPT0wKXsKLQkgIGNw
cC0+ZWxzZWRlcHRoW2NwcC0+ZWxzZXRyYWNrZXJdPTE7Ci0gICAgICByZXR1cm4gMTsgICAgICAg
ICAgCisgICAgLy8gc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSBlbHNldHJhY2tlciBpcyBpbiBh
IHZhbGlkIHJhbmdlCisgICAgaWYgKGNwcC0+ZWxzZXRyYWNrZXIgPCAwIHx8IGNwcC0+ZWxzZXRy
YWNrZXIgPj0gTUFYX0lGX05FU1RJTkcpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgaWYgKGNwcC0+ZWxzZWRlcHRoW2NwcC0+ZWxzZXRyYWNrZXJdID09IDApIHsKKyAgICAgICAg
Y3BwLT5lbHNlZGVwdGhbY3BwLT5lbHNldHJhY2tlcl0gPSAxOworICAgICAgICByZXR1cm4gMTsK
ICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2NwcHN0cnVjdC5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvY3Bwc3RydWN0LmMJ
KHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9jcHBzdHJ1Y3QuYwkod29ya2luZyBjb3B5KQpAQCAtOTIsMTIgKzkyLDEy
IEBAIGludCBSZXNldFByZXByb2Nlc3Nvcih2b2lkKQogCiAgICAgY3BwLT5sYXN0U291cmNlTG9j
LmZpbGUgPSAwOwogICAgIGNwcC0+bGFzdFNvdXJjZUxvYy5saW5lID0gMDsKLQljcHAtPnBDPTA7
Ci0gICAgY3BwLT5Db21waWxlRXJyb3I9MDsgCi0JY3BwLT5pZmRlcHRoPTA7Ci0gICAgZm9yKGNw
cC0+ZWxzZXRyYWNrZXI9MDsgY3BwLT5lbHNldHJhY2tlcjw2NDsgY3BwLT5lbHNldHJhY2tlcisr
KQotCQljcHAtPmVsc2VkZXB0aFtjcHAtPmVsc2V0cmFja2VyXT0wOyAKLQljcHAtPmVsc2V0cmFj
a2VyPTA7CisgICAgY3BwLT5wQyA9IDA7CisgICAgY3BwLT5Db21waWxlRXJyb3IgPSAwOworICAg
IGNwcC0+aWZkZXB0aCA9IDA7CisgICAgZm9yKGNwcC0+ZWxzZXRyYWNrZXIgPSAwOyBjcHAtPmVs
c2V0cmFja2VyIDwgTUFYX0lGX05FU1RJTkc7IGNwcC0+ZWxzZXRyYWNrZXIrKykKKyAgICAgICAg
Y3BwLT5lbHNlZGVwdGhbY3BwLT5lbHNldHJhY2tlcl0gPSAwOworICAgIGNwcC0+ZWxzZXRyYWNr
ZXIgPSAwOwogICAgIGNwcC0+dG9rZW5zQmVmb3JlRU9GID0gMDsKICAgICByZXR1cm4gMTsKIH0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
c2Nhbm5lci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3Ivc2Nhbm5lci5jCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Ivc2Nhbm5lci5jCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGljIGludCBieXRlX3NjYW4oSW5wdXRT
cmMgKmluLCB5eXN0eQogICAgICAgICAgICAgICAgIEFQUEVORF9DSEFSX1MoY2gsIHl5bHZhbHBw
LT5zeW1ib2xfbmFtZSwgbGVuLCBNQVhfU1lNQk9MX05BTUVfTEVOKTsKICAgICAgICAgICAgICAg
ICBjaCA9IGNwcC0+Y3VycmVudElucHV0LT5nZXRjaChjcHAtPmN1cnJlbnRJbnB1dCwgeXlsdmFs
cHApOwogICAgICAgICAgICAgfSB3aGlsZSAoY2ggPj0gJzAnICYmIGNoIDw9ICc5Jyk7Ci0gICAg
ICAgICAgICBpZiAoY2ggPT0gJy4nIHx8IGNoID09ICdlJyB8fCBjaCA9PSAnZicgfHwgY2ggPT0g
J2gnIHx8IGNoID09ICd4J3x8IGNoID09ICdFJykgeworICAgICAgICAgICAgaWYgKGNoID09ICcu
JyB8fCBjaCA9PSAnZScgfHwgY2ggPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGxG
bG9hdENvbnN0KGNoLCBsZW4sIHl5bHZhbHBwKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0KGxlbiA8PSBNQVhfU1lNQk9MX05BTUVfTEVOKTsKQEAgLTU1OCwx
MSArNTU4LDkgQEAgc3RhdGljIGludCBieXRlX3NjYW4oSW5wdXRTcmMgKmluLCB5eXN0eQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgcmV0dXJuICdcbic7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICcqJykgewotICAgICAgICAgICAgICAgIGlu
dCBubGNvdW50ID0gMDsKICAgICAgICAgICAgICAgICBjaCA9IGNwcC0+Y3VycmVudElucHV0LT5n
ZXRjaChjcHAtPmN1cnJlbnRJbnB1dCwgeXlsdmFscHApOwogICAgICAgICAgICAgICAgIGRvIHsK
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGNoICE9ICcqJykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNoID09ICdcbicpIG5sY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjaCA9PSBFT0YpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFBFcnJv
clRvSW5mb0xvZygiRU9GIElOIENPTU1FTlQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLTE7CkBAIC01NzUsOSArNTczLDYgQEAgc3RhdGljIGludCBieXRlX3NjYW4oSW5w
dXRTcmMgKmluLCB5eXN0eQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSB3aGlsZSAoY2ggIT0gJy8nKTsK
LSAgICAgICAgICAgICAgICBpZiAobmxjb3VudCkgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gJ1xuJzsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8gR28gdHJ5IGl0
IGFnYWluLi4uCiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICc9JykgewogICAgICAgICAg
ICAgICAgIHJldHVybiBDUFBfRElWX0FTU0lHTjsKQEAgLTYyMSw2ICs2MTYsMTIgQEAgaW50IHl5
bGV4X0NQUChjaGFyKiBidWYsIGludCBtYXhTaXplKQogICAgICAgICB0b2tlbiA9IGNwcC0+Y3Vy
cmVudElucHV0LT5zY2FuKGNwcC0+Y3VycmVudElucHV0LCAmeXlsdmFscHApOwogICAgICAgICBp
ZihjaGVja19FT0YodG9rZW4pKQogICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICh0
b2tlbiA8IDApIHsKKyAgICAgICAgICAgIC8vIFRoaXMgY2hlY2sgbWF5IG5lZWQgdG8gYmUgaW1w
cm92ZWQgdG8gc3VwcG9ydCBVVEYtOAorICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBpbiBjb21t
ZW50cy4KKyAgICAgICAgICAgIENQUEVycm9yVG9JbmZvTG9nKCJwcmVwcm9jZXNzb3IgZW5jb3Vu
dGVyZWQgbm9uLUFTQ0lJIGNoYXJhY3RlciBpbiBzaGFkZXIgc291cmNlIik7CisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4gPT0gJyMnKSB7CiAgICAg
ICAgICAgICBpZiAoY3BwLT5wcmV2aW91c190b2tlbiA9PSAnXG4nfHwgY3BwLT5wcmV2aW91c190
b2tlbiA9PSAwKSB7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSByZWFkQ1BQbGluZSgmeXlsdmFs
cHApOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9zY2FubmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zY2FubmVyLmgJKHJldmlzaW9uIDg5Mjg2KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zY2FubmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgTlZJRElBIEhBUyBCRUVOIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSQogI2RlZmluZSBfX1NDQU5ORVJfSCAxCiAKIC8vIFRoZXNlIGxlbmd0
aHMgZG8gbm90IGluY2x1ZGUgdGhlIE5VTEwgdGVybWluYXRvci4KLSNkZWZpbmUgTUFYX1NZTUJP
TF9OQU1FX0xFTiAxMjcKKyNkZWZpbmUgTUFYX1NZTUJPTF9OQU1FX0xFTiAyNTYKICNkZWZpbmUg
TUFYX1NUUklOR19MRU4gNTExCiAKICNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvcGFy
c2VyLmgiCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9Db25m
aWcuY3BwCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJFR0wvQ29uZmlnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksMTAgKzE5LDEwIEBAIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBlZ2wKIHsKLUNvbmZpZzo6Q29uZmlnKEQzRERJ
U1BMQVlNT0RFIGRpc3BsYXlNb2RlLCBFR0xpbnQgbWluSW50ZXJ2YWwsIEVHTGludCBtYXhJbnRl
cnZhbCwgRDNERk9STUFUIHJlbmRlclRhcmdldEZvcm1hdCwgRDNERk9STUFUIGRlcHRoU3RlbmNp
bEZvcm1hdCwgRUdMaW50IG11bHRpU2FtcGxlKQorQ29uZmlnOjpDb25maWcoRDNERElTUExBWU1P
REUgZGlzcGxheU1vZGUsIEVHTGludCBtaW5JbnRlcnZhbCwgRUdMaW50IG1heEludGVydmFsLCBE
M0RGT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0LCBEM0RGT1JNQVQgZGVwdGhTdGVuY2lsRm9ybWF0
LCBFR0xpbnQgbXVsdGlTYW1wbGUsIEVHTGludCB0ZXhXaWR0aCwgRUdMaW50IHRleEhlaWdodCkK
ICAgICA6IG1EaXNwbGF5TW9kZShkaXNwbGF5TW9kZSksIG1SZW5kZXJUYXJnZXRGb3JtYXQocmVu
ZGVyVGFyZ2V0Rm9ybWF0KSwgbURlcHRoU3RlbmNpbEZvcm1hdChkZXB0aFN0ZW5jaWxGb3JtYXQp
LCBtTXVsdGlTYW1wbGUobXVsdGlTYW1wbGUpCiB7Ci0gICAgc2V0KGRpc3BsYXlNb2RlLCBtaW5J
bnRlcnZhbCwgbWF4SW50ZXJ2YWwsIHJlbmRlclRhcmdldEZvcm1hdCwgZGVwdGhTdGVuY2lsRm9y
bWF0LCBtdWx0aVNhbXBsZSk7CisgICAgc2V0KGRpc3BsYXlNb2RlLCBtaW5JbnRlcnZhbCwgbWF4
SW50ZXJ2YWwsIHJlbmRlclRhcmdldEZvcm1hdCwgZGVwdGhTdGVuY2lsRm9ybWF0LCBtdWx0aVNh
bXBsZSwgdGV4V2lkdGgsIHRleEhlaWdodCk7CiB9CiAKIHZvaWQgQ29uZmlnOjpzZXREZWZhdWx0
cygpCkBAIC02Miw4ICs2MiwxMCBAQCB2b2lkIENvbmZpZzo6c2V0RGVmYXVsdHMoKQogICAgIG1U
cmFuc3BhcmVudEJsdWVWYWx1ZSA9IEVHTF9ET05UX0NBUkU7CiB9CiAKLXZvaWQgQ29uZmlnOjpz
ZXQoRDNERElTUExBWU1PREUgZGlzcGxheU1vZGUsIEVHTGludCBtaW5JbnRlcnZhbCwgRUdMaW50
IG1heEludGVydmFsLCBEM0RGT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0LCBEM0RGT1JNQVQgZGVw
dGhTdGVuY2lsRm9ybWF0LCBFR0xpbnQgbXVsdGlTYW1wbGUpCit2b2lkIENvbmZpZzo6c2V0KEQz
RERJU1BMQVlNT0RFIGRpc3BsYXlNb2RlLCBFR0xpbnQgbWluSW50ZXJ2YWwsIEVHTGludCBtYXhJ
bnRlcnZhbCwgRDNERk9STUFUIHJlbmRlclRhcmdldEZvcm1hdCwgRDNERk9STUFUIGRlcHRoU3Rl
bmNpbEZvcm1hdCwgRUdMaW50IG11bHRpU2FtcGxlLCBFR0xpbnQgdGV4V2lkdGgsIEVHTGludCB0
ZXhIZWlnaHQpCiB7CisgICAgbUJpbmRUb1RleHR1cmVSR0IgPSBFR0xfRkFMU0U7CisgICAgbUJp
bmRUb1RleHR1cmVSR0JBID0gRUdMX0ZBTFNFOwogICAgIHN3aXRjaCAocmVuZGVyVGFyZ2V0Rm9y
bWF0KQogICAgIHsKICAgICAgIGNhc2UgRDNERk1UX0ExUjVHNUI1OgpAQCAtODYsNiArODgsNyBA
QCB2b2lkIENvbmZpZzo6c2V0KEQzRERJU1BMQVlNT0RFIGRpc3BsYXlNCiAgICAgICAgIG1HcmVl
blNpemUgPSA4OwogICAgICAgICBtQmx1ZVNpemUgPSA4OwogICAgICAgICBtQWxwaGFTaXplID0g
ODsKKyAgICAgICAgbUJpbmRUb1RleHR1cmVSR0JBID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgICBjYXNlIEQzREZNVF9SNUc2QjU6CiAgICAgICAgIG1CdWZmZXJTaXplID0gMTY7CkBAIC0x
MDAsNiArMTAzLDcgQEAgdm9pZCBDb25maWc6OnNldChEM0RESVNQTEFZTU9ERSBkaXNwbGF5TQog
ICAgICAgICBtR3JlZW5TaXplID0gODsKICAgICAgICAgbUJsdWVTaXplID0gODsKICAgICAgICAg
bUFscGhhU2l6ZSA9IDA7CisgICAgICAgIG1CaW5kVG9UZXh0dXJlUkdCID0gdHJ1ZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgogICAgICAgICBVTlJFQUNIQUJMRSgpOyAgIC8vIE90
aGVyIGZvcm1hdHMgc2hvdWxkIG5vdCBiZSB2YWxpZApAQCAtMTA3LDggKzExMSw2IEBAIHZvaWQg
Q29uZmlnOjpzZXQoRDNERElTUExBWU1PREUgZGlzcGxheU0KIAogICAgIG1MdW1pbmFuY2VTaXpl
ID0gMDsKICAgICBtQWxwaGFNYXNrU2l6ZSA9IDA7Ci0gICAgbUJpbmRUb1RleHR1cmVSR0IgPSBF
R0xfRkFMU0U7Ci0gICAgbUJpbmRUb1RleHR1cmVSR0JBID0gRUdMX0ZBTFNFOwogICAgIG1Db2xv
ckJ1ZmZlclR5cGUgPSBFR0xfUkdCX0JVRkZFUjsKICAgICBtQ29uZmlnQ2F2ZWF0ID0gKGRpc3Bs
YXlNb2RlLkZvcm1hdCA9PSByZW5kZXJUYXJnZXRGb3JtYXQpID8gRUdMX05PTkUgOiBFR0xfU0xP
V19DT05GSUc7CiAgICAgbUNvbmZpZ0lEID0gMDsKQEAgLTExNiw2ICsxMTgsMTAgQEAgdm9pZCBD
b25maWc6OnNldChEM0RESVNQTEFZTU9ERSBkaXNwbGF5TQogCiAgICAgc3dpdGNoIChkZXB0aFN0
ZW5jaWxGb3JtYXQpCiAgICAgeworICAgICAgY2FzZSBEM0RGTVRfVU5LTk9XTjoKKyAgICAgICAg
bURlcHRoU2l6ZSA9IDA7CisgICAgICAgIG1TdGVuY2lsU2l6ZSA9IDA7CisgICAgICAgIGJyZWFr
OwogLy8gICAgY2FzZSBEM0RGTVRfRDE2X0xPQ0tBQkxFOgogLy8gICAgICBtRGVwdGhTaXplID0g
MTY7CiAvLyAgICAgIG1TdGVuY2lsU2l6ZSA9IDA7CkBAIC0xNTgsOSArMTY0LDkgQEAgdm9pZCBD
b25maWc6OnNldChEM0RESVNQTEFZTU9ERSBkaXNwbGF5TQogCiAgICAgbUxldmVsID0gMDsKICAg
ICBtTWF0Y2hOYXRpdmVQaXhtYXAgPSBFR0xfTk9ORTsKLSAgICBtTWF4UEJ1ZmZlcldpZHRoID0g
MDsKLSAgICBtTWF4UEJ1ZmZlckhlaWdodCA9IDA7Ci0gICAgbU1heFBCdWZmZXJQaXhlbHMgPSAw
OworICAgIG1NYXhQQnVmZmVyV2lkdGggPSB0ZXhXaWR0aDsKKyAgICBtTWF4UEJ1ZmZlckhlaWdo
dCA9IHRleEhlaWdodDsKKyAgICBtTWF4UEJ1ZmZlclBpeGVscyA9IHRleFdpZHRoKnRleEhlaWdo
dDsKICAgICBtTWF4U3dhcEludGVydmFsID0gbWF4SW50ZXJ2YWw7CiAgICAgbU1pblN3YXBJbnRl
cnZhbCA9IG1pbkludGVydmFsOwogICAgIG1OYXRpdmVSZW5kZXJhYmxlID0gRUdMX0ZBTFNFOwpA
QCAtMjgyLDkgKzI4OCw5IEBAIENvbmZpZ1NldDo6Q29uZmlnU2V0KCkKIHsKIH0KIAotdm9pZCBD
b25maWdTZXQ6OmFkZChEM0RESVNQTEFZTU9ERSBkaXNwbGF5TW9kZSwgRUdMaW50IG1pblN3YXBJ
bnRlcnZhbCwgRUdMaW50IG1heFN3YXBJbnRlcnZhbCwgRDNERk9STUFUIHJlbmRlclRhcmdldEZv
cm1hdCwgRDNERk9STUFUIGRlcHRoU3RlbmNpbEZvcm1hdCwgRUdMaW50IG11bHRpU2FtcGxlKQor
dm9pZCBDb25maWdTZXQ6OmFkZChEM0RESVNQTEFZTU9ERSBkaXNwbGF5TW9kZSwgRUdMaW50IG1p
blN3YXBJbnRlcnZhbCwgRUdMaW50IG1heFN3YXBJbnRlcnZhbCwgRDNERk9STUFUIHJlbmRlclRh
cmdldEZvcm1hdCwgRDNERk9STUFUIGRlcHRoU3RlbmNpbEZvcm1hdCwgRUdMaW50IG11bHRpU2Ft
cGxlLCBFR0xpbnQgdGV4V2lkdGgsIEVHTGludCB0ZXhIZWlnaHQpCiB7Ci0gICAgQ29uZmlnIGNv
bmZpZyhkaXNwbGF5TW9kZSwgbWluU3dhcEludGVydmFsLCBtYXhTd2FwSW50ZXJ2YWwsIHJlbmRl
clRhcmdldEZvcm1hdCwgZGVwdGhTdGVuY2lsRm9ybWF0LCBtdWx0aVNhbXBsZSk7CisgICAgQ29u
ZmlnIGNvbmZpZyhkaXNwbGF5TW9kZSwgbWluU3dhcEludGVydmFsLCBtYXhTd2FwSW50ZXJ2YWws
IHJlbmRlclRhcmdldEZvcm1hdCwgZGVwdGhTdGVuY2lsRm9ybWF0LCBtdWx0aVNhbXBsZSwgdGV4
V2lkdGgsIHRleEhlaWdodCk7CiAKICAgICBtU2V0Lmluc2VydChjb25maWcpOwogfQpAQCAtMzM3
LDYgKzM0Myw5IEBAIGJvb2wgQ29uZmlnU2V0OjpnZXRDb25maWdzKEVHTENvbmZpZyAqY28KICAg
ICAgICAgICAgICAgY2FzZSBFR0xfUkVOREVSQUJMRV9UWVBFOiAgICAgICAgICAgbWF0Y2ggPSAo
Y29uZmlnLT5tUmVuZGVyYWJsZVR5cGUgJiBhdHRyaWJ1dGVbMV0pID09IGF0dHJpYnV0ZVsxXTsg
YnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgRUdMX01BVENIX05BVElWRV9QSVhNQVA6ICAgICAg
IG1hdGNoID0gZmFsc2U7IFVOSU1QTEVNRU5URUQoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEVHTF9DT05GT1JNQU5UOiAgICAg
ICAgICAgICAgICBtYXRjaCA9IChjb25maWctPm1Db25mb3JtYW50ICYgYXR0cmlidXRlWzFdKSA9
PSBhdHRyaWJ1dGVbMV07ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTUFYX1BC
VUZGRVJfV0lEVEg6ICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1NYXhQQnVmZmVyV2lkdGggPj0g
YXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
RUdMX01BWF9QQlVGRkVSX0hFSUdIVDogICAgICAgIG1hdGNoID0gY29uZmlnLT5tTWF4UEJ1ZmZl
ckhlaWdodCA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9QSVhFTFM6ICAgICAgICBtYXRjaCA9IGNvbmZpZy0+
bU1heFBCdWZmZXJQaXhlbHMgPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Nv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wv
Q29uZmlnLmgJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkVHTC9Db25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDEwIEBAIGNsYXNz
IERpc3BsYXk7CiBjbGFzcyBDb25maWcKIHsKICAgcHVibGljOgotICAgIENvbmZpZyhEM0RESVNQ
TEFZTU9ERSBkaXNwbGF5TW9kZSwgRUdMaW50IG1pblN3YXBJbnRlcnZhbCwgRUdMaW50IG1heFN3
YXBJbnRlcnZhbCwgRDNERk9STUFUIHJlbmRlclRhcmdldEZvcm1hdCwgRDNERk9STUFUIGRlcHRo
U3RlbmNpbEZvcm1hdCwgRUdMaW50IG11bHRpU2FtcGxlKTsKKyAgICBDb25maWcoRDNERElTUExB
WU1PREUgZGlzcGxheU1vZGUsIEVHTGludCBtaW5Td2FwSW50ZXJ2YWwsIEVHTGludCBtYXhTd2Fw
SW50ZXJ2YWwsIEQzREZPUk1BVCByZW5kZXJUYXJnZXRGb3JtYXQsIEQzREZPUk1BVCBkZXB0aFN0
ZW5jaWxGb3JtYXQsIEVHTGludCBtdWx0aVNhbXBsZSwgRUdMaW50IHRleFdpZHRoLCBFR0xpbnQg
dGV4SGVpZ2h0KTsKIAogICAgIHZvaWQgc2V0RGVmYXVsdHMoKTsKLSAgICB2b2lkIHNldChEM0RE
SVNQTEFZTU9ERSBkaXNwbGF5TW9kZSwgRUdMaW50IG1pblN3YXBJbnRlcnZhbCwgRUdMaW50IG1h
eFN3YXBJbnRlcnZhbCwgRDNERk9STUFUIHJlbmRlclRhcmdldEZvcm1hdCwgRDNERk9STUFUIGRl
cHRoU3RlbmNpbEZvcm1hdCwgRUdMaW50IG11bHRpU2FtcGxlKTsKKyAgICB2b2lkIHNldChEM0RE
SVNQTEFZTU9ERSBkaXNwbGF5TW9kZSwgRUdMaW50IG1pblN3YXBJbnRlcnZhbCwgRUdMaW50IG1h
eFN3YXBJbnRlcnZhbCwgRDNERk9STUFUIHJlbmRlclRhcmdldEZvcm1hdCwgRDNERk9STUFUIGRl
cHRoU3RlbmNpbEZvcm1hdCwgRUdMaW50IG11bHRpU2FtcGxlLCBFR0xpbnQgdGV4V2lkdGgsIEVH
TGludCB0ZXhIZWlnaHQpOwogICAgIEVHTENvbmZpZyBnZXRIYW5kbGUoKSBjb25zdDsKIAogICAg
IGNvbnN0IEQzRERJU1BMQVlNT0RFIG1EaXNwbGF5TW9kZTsKQEAgLTk5LDcgKzk5LDcgQEAgY2xh
c3MgQ29uZmlnU2V0CiAgIHB1YmxpYzoKICAgICBDb25maWdTZXQoKTsKIAotICAgIHZvaWQgYWRk
KEQzRERJU1BMQVlNT0RFIGRpc3BsYXlNb2RlLCBFR0xpbnQgbWluU3dhcEludGVydmFsLCBFR0xp
bnQgbWF4U3dhcEludGVydmFsLCBEM0RGT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0LCBEM0RGT1JN
QVQgZGVwdGhTdGVuY2lsRm9ybWF0LCBFR0xpbnQgbXVsdGlTYW1wbGUpOworICAgIHZvaWQgYWRk
KEQzRERJU1BMQVlNT0RFIGRpc3BsYXlNb2RlLCBFR0xpbnQgbWluU3dhcEludGVydmFsLCBFR0xp
bnQgbWF4U3dhcEludGVydmFsLCBEM0RGT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0LCBEM0RGT1JN
QVQgZGVwdGhTdGVuY2lsRm9ybWF0LCBFR0xpbnQgbXVsdGlTYW1wbGUsIEVHTGludCB0ZXhXaWR0
aCwgRUdMaW50IHRleEhlaWdodCk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICBib29s
IGdldENvbmZpZ3MoRUdMQ29uZmlnICpjb25maWdzLCBjb25zdCBFR0xpbnQgKmF0dHJpYkxpc3Qs
IEVHTGludCBjb25maWdTaXplLCBFR0xpbnQgKm51bUNvbmZpZyk7CiAgICAgY29uc3QgZWdsOjpD
b25maWcgKmdldChFR0xDb25maWcgY29uZmlnSGFuZGxlKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJFR0wvRGlzcGxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmNwcAkocmV2aXNpb24gODkyODYpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
IC8vCkBAIC0xNCwxMSArMTQsMjAgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJj
b21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKIAogI2luY2x1
ZGUgImxpYkVHTC9tYWluLmgiCiAKLSNkZWZpbmUgUkVGX1JBU1QgMCAgICAgICAgLy8gQ2FuIGFs
c28gYmUgZW5hYmxlZCBieSBkZWZpbmluZyBGT1JDRV9SRUZfUkFTVCBpbiB0aGUgcHJvamVjdCdz
IHByZWRlZmluZWQgbWFjcm9zCi0jZGVmaW5lIEVOQUJMRV9EM0Q5RVggMSAgIC8vIEVuYWJsZXMg
dXNlIG9mIHRoZSBJRGlyZWN0M0Q5RXggaW50ZXJmYWNlLCB3aGVuIGF2YWlsYWJsZQorLy8gQ2Fu
IGFsc28gYmUgZW5hYmxlZCBieSBkZWZpbmluZyBGT1JDRV9SRUZfUkFTVCBpbiB0aGUgcHJvamVj
dCdzIHByZWRlZmluZWQgbWFjcm9zCisjZGVmaW5lIFJFRl9SQVNUIDAKKworLy8gVGhlICJEZWJ1
ZyBUaGlzIFBpeGVsLi4uIiBmZWF0dXJlIGluIFBJWCBvZnRlbiBmYWlscyB3aGVuIHVzaW5nIHRo
ZQorLy8gRDNEOUV4IGludGVyZmFjZXMuICBJbiBvcmRlciB0byBnZXQgZGVidWcgcGl4ZWwgdG8g
d29yayBvbiBhIFZpc3RhL1dpbiA3CisvLyBtYWNoaW5lLCBkZWZpbmUgIkFOR0xFX0VOQUJMRV9E
M0Q5RVg9MCIgaW4geW91ciBwcm9qZWN0IGZpbGUuCisjaWYgIWRlZmluZWQoQU5HTEVfRU5BQkxF
X0QzRDlFWCkKKy8vIEVuYWJsZXMgdXNlIG9mIHRoZSBJRGlyZWN0M0Q5RXggaW50ZXJmYWNlLCB3
aGVuIGF2YWlsYWJsZQorI2RlZmluZSBBTkdMRV9FTkFCTEVfRDNEOUVYIDEKKyNlbmRpZiAvLyAh
ZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOUVYKQogCiBuYW1lc3BhY2UgZWdsCiB7CkBAIC0yNyw4
ICszNiw5IEBAIERpc3BsYXk6OkRpc3BsYXkoSERDIGRldmljZUNvbnRleHQpIDogbUQKICAgICBt
RDNkOU1vZHVsZSA9IE5VTEw7CiAgICAgCiAgICAgbUQzZDkgPSBOVUxMOwotICAgIG1EM2Q5ZXgg
PSBOVUxMOworICAgIG1EM2Q5RXggPSBOVUxMOwogICAgIG1EZXZpY2UgPSBOVUxMOworICAgIG1E
ZXZpY2VFeCA9IE5VTEw7CiAgICAgbURldmljZVdpbmRvdyA9IE5VTEw7CiAKICAgICBtQWRhcHRl
ciA9IEQzREFEQVBURVJfREVGQVVMVDsKQEAgLTU1LDM3ICs2NSwyOCBAQCBib29sIERpc3BsYXk6
OmluaXRpYWxpemUoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBtRDNkOU1v
ZHVsZSA9IExvYWRMaWJyYXJ5KFRFWFQoImQzZDkuZGxsIikpOworICAgIG1EM2Q5TW9kdWxlID0g
R2V0TW9kdWxlSGFuZGxlKFRFWFQoImQzZDkuZGxsIikpOwogICAgIGlmIChtRDNkOU1vZHVsZSA9
PSBOVUxMKQogICAgIHsKICAgICAgICAgdGVybWluYXRlKCk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICB0eXBlZGVmIElEaXJlY3QzRDkqIChXSU5BUEkgKkRpcmVjdDNEQ3Jl
YXRlOUZ1bmMpKFVJTlQpOwotICAgIERpcmVjdDNEQ3JlYXRlOUZ1bmMgRGlyZWN0M0RDcmVhdGU5
UHRyID0gcmVpbnRlcnByZXRfY2FzdDxEaXJlY3QzRENyZWF0ZTlGdW5jPihHZXRQcm9jQWRkcmVz
cyhtRDNkOU1vZHVsZSwgIkRpcmVjdDNEQ3JlYXRlOSIpKTsKLQotICAgIGlmIChEaXJlY3QzRENy
ZWF0ZTlQdHIgPT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIHRlcm1pbmF0ZSgpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgdHlwZWRlZiBIUkVTVUxUIChXSU5BUEkgKkRpcmVj
dDNEQ3JlYXRlOUV4RnVuYykoVUlOVCwgSURpcmVjdDNEOUV4KiopOwogICAgIERpcmVjdDNEQ3Jl
YXRlOUV4RnVuYyBEaXJlY3QzRENyZWF0ZTlFeFB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGlyZWN0
M0RDcmVhdGU5RXhGdW5jPihHZXRQcm9jQWRkcmVzcyhtRDNkOU1vZHVsZSwgIkRpcmVjdDNEQ3Jl
YXRlOUV4IikpOwogCiAgICAgLy8gVXNlIERpcmVjdDNEOUV4IGlmIGF2YWlsYWJsZS4gQW1vbmcg
b3RoZXIgdGhpbmdzLCB0aGlzIHZlcnNpb24gaXMgbGVzcwogICAgIC8vIGluY2xpbmVkIHRvIHJl
cG9ydCBhIGxvc3QgY29udGV4dCwgZm9yIGV4YW1wbGUgd2hlbiB0aGUgdXNlciBzd2l0Y2hlcwog
ICAgIC8vIGRlc2t0b3AuIERpcmVjdDNEOUV4IGlzIGF2YWlsYWJsZSBpbiBXaW5kb3dzIFZpc3Rh
IGFuZCBsYXRlciBpZiBzdWl0YWJsZSBkcml2ZXJzIGFyZSBhdmFpbGFibGUuCi0gICAgaWYgKEVO
QUJMRV9EM0Q5RVggJiYgRGlyZWN0M0RDcmVhdGU5RXhQdHIgJiYgU1VDQ0VFREVEKERpcmVjdDNE
Q3JlYXRlOUV4UHRyKEQzRF9TREtfVkVSU0lPTiwgJm1EM2Q5ZXgpKSkKKyAgICBpZiAoQU5HTEVf
RU5BQkxFX0QzRDlFWCAmJiBEaXJlY3QzRENyZWF0ZTlFeFB0ciAmJiBTVUNDRUVERUQoRGlyZWN0
M0RDcmVhdGU5RXhQdHIoRDNEX1NES19WRVJTSU9OLCAmbUQzZDlFeCkpKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1EM2Q5ZXgpOwotICAgICAgICBtRDNkOWV4LT5RdWVyeUludGVyZmFjZShJSURf
SURpcmVjdDNEOSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtRDNkOSkpOworICAgICAgICBB
U1NFUlQobUQzZDlFeCk7CisgICAgICAgIG1EM2Q5RXgtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRGly
ZWN0M0Q5LCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1EM2Q5KSk7CiAgICAgICAgIEFTU0VS
VChtRDNkOSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIG1EM2Q5ID0gRGlyZWN0
M0RDcmVhdGU5UHRyKEQzRF9TREtfVkVSU0lPTik7CisgICAgICAgIG1EM2Q5ID0gRGlyZWN0M0RD
cmVhdGU5KEQzRF9TREtfVkVSU0lPTik7CiAgICAgfQogCiAgICAgaWYgKG1EM2Q5KQpAQCAtMTQw
LDYgKzE0MSw4IEBAIGJvb2wgRGlzcGxheTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIGlmIChtRGV2
aWNlQ2Fwcy5QcmVzZW50YXRpb25JbnRlcnZhbHMgJiBEM0RQUkVTRU5UX0lOVEVSVkFMX1RIUkVF
KSAgICAge21NaW5Td2FwSW50ZXJ2YWwgPSBzdGQ6Om1pbihtTWluU3dhcEludGVydmFsLCAzKTsg
bU1heFN3YXBJbnRlcnZhbCA9IHN0ZDo6bWF4KG1NYXhTd2FwSW50ZXJ2YWwsIDMpO30KICAgICAg
ICAgaWYgKG1EZXZpY2VDYXBzLlByZXNlbnRhdGlvbkludGVydmFscyAmIEQzRFBSRVNFTlRfSU5U
RVJWQUxfRk9VUikgICAgICB7bU1pblN3YXBJbnRlcnZhbCA9IHN0ZDo6bWluKG1NaW5Td2FwSW50
ZXJ2YWwsIDQpOyBtTWF4U3dhcEludGVydmFsID0gc3RkOjptYXgobU1heFN3YXBJbnRlcnZhbCwg
NCk7fQogCisgICAgICAgIG1EM2Q5LT5HZXRBZGFwdGVySWRlbnRpZmllcihtQWRhcHRlciwgMCwg
Jm1BZGFwdGVySWRlbnRpZmllcik7CisKICAgICAgICAgY29uc3QgRDNERk9STUFUIHJlbmRlclRh
cmdldEZvcm1hdHNbXSA9CiAgICAgICAgIHsKICAgICAgICAgICAgIEQzREZNVF9BMVI1RzVCNSwK
QEAgLTE1Miw2ICsxNTUsNyBAQCBib29sIERpc3BsYXk6OmluaXRpYWxpemUoKQogCiAgICAgICAg
IGNvbnN0IEQzREZPUk1BVCBkZXB0aFN0ZW5jaWxGb3JtYXRzW10gPQogICAgICAgICB7CisgICAg
ICAgICAgICBEM0RGTVRfVU5LTk9XTiwKICAgICAgICAgLy8gIEQzREZNVF9EMTZfTE9DS0FCTEUs
CiAgICAgICAgICAgICBEM0RGTVRfRDMyLAogICAgICAgICAvLyAgRDNERk1UX0QxNVMxLApAQCAt
MTc5LDE3ICsxODMsMjYgQEAgYm9vbCBEaXNwbGF5Ojppbml0aWFsaXplKCkKICAgICAgICAgICAg
ICAgICBmb3IgKGludCBkZXB0aFN0ZW5jaWxJbmRleCA9IDA7IGRlcHRoU3RlbmNpbEluZGV4IDwg
c2l6ZW9mKGRlcHRoU3RlbmNpbEZvcm1hdHMpIC8gc2l6ZW9mKEQzREZPUk1BVCk7IGRlcHRoU3Rl
bmNpbEluZGV4KyspCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBEM0RG
T1JNQVQgZGVwdGhTdGVuY2lsRm9ybWF0ID0gZGVwdGhTdGVuY2lsRm9ybWF0c1tkZXB0aFN0ZW5j
aWxJbmRleF07Ci0gICAgICAgICAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbUQzZDktPkNo
ZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2Rl
LkZvcm1hdCwgRDNEVVNBR0VfREVQVEhTVEVOQ0lMLCBEM0RSVFlQRV9TVVJGQUNFLCBkZXB0aFN0
ZW5jaWxGb3JtYXQpOworICAgICAgICAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IEQzRF9P
SzsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmKGRlcHRoU3Rl
bmNpbEZvcm1hdCAhPSBEM0RGTVRfVU5LTk9XTikKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1B
ZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0Vf
REVQVEhTVEVOQ0lMLCBEM0RSVFlQRV9TVVJGQUNFLCBkZXB0aFN0ZW5jaWxGb3JtYXQpOworICAg
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChy
ZXN1bHQpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IG1EM2Q5LT5DaGVja0RlcHRoU3RlbmNpbE1hdGNoKG1BZGFwdGVyLCBt
RGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgcmVuZGVyVGFyZ2V0Rm9ybWF0
LCBkZXB0aFN0ZW5jaWxGb3JtYXQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGVwdGhT
dGVuY2lsRm9ybWF0ICE9IEQzREZNVF9VTktOT1dOKQorICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1EM2Q5LT5DaGVja0RlcHRo
U3RlbmNpbE1hdGNoKG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZv
cm1hdCwgcmVuZGVyVGFyZ2V0Rm9ybWF0LCBkZXB0aFN0ZW5jaWxGb3JtYXQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVE
KHJlc3VsdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IGVudW1lcmF0ZSBtdWx0aS1zYW1wbGluZwogCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZmlnU2V0LmFkZChjdXJyZW50RGlzcGxheU1vZGUsIG1NaW5T
d2FwSW50ZXJ2YWwsIG1NYXhTd2FwSW50ZXJ2YWwsIHJlbmRlclRhcmdldEZvcm1hdCwgZGVwdGhT
dGVuY2lsRm9ybWF0LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdTZXQu
YWRkKGN1cnJlbnREaXNwbGF5TW9kZSwgbU1pblN3YXBJbnRlcnZhbCwgbU1heFN3YXBJbnRlcnZh
bCwgcmVuZGVyVGFyZ2V0Rm9ybWF0LCBkZXB0aFN0ZW5jaWxGb3JtYXQsIDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGV2aWNlQ2Fwcy5NYXhUZXh0dXJlV2lk
dGgsIG1EZXZpY2VDYXBzLk1heFRleHR1cmVIZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjE1LDYg
KzIyOCw4IEBAIGJvb2wgRGlzcGxheTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKKyAgICBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7CisKICAgICBzdGF0aWMgY29u
c3QgVENIQVIgd2luZG93TmFtZVtdID0gVEVYVCgiQW5nbGVIaWRkZW5XaW5kb3ciKTsKICAgICBz
dGF0aWMgY29uc3QgVENIQVIgY2xhc3NOYW1lW10gPSBURVhUKCJTVEFUSUMiKTsKIApAQCAtMjM4
LDcgKzI1Myw3IEBAIHZvaWQgRGlzcGxheTo6dGVybWluYXRlKCkKICAgICBpZiAobURldmljZSkK
ICAgICB7CiAgICAgICAgIC8vIElmIHRoZSBkZXZpY2UgaXMgbG9zdCwgcmVzZXQgaXQgZmlyc3Qg
dG8gcHJldmVudCBsZWF2aW5nIHRoZSBkcml2ZXIgaW4gYW4gdW5zdGFibGUgc3RhdGUKLSAgICAg
ICAgaWYgKEZBSUxFRChtRGV2aWNlLT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpKSkKKyAgICAgICAg
aWYgKGlzRGV2aWNlTG9zdCgpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXNldERldmljZSgp
OwogICAgICAgICB9CkBAIC0yNDcsNiArMjYyLDEyIEBAIHZvaWQgRGlzcGxheTo6dGVybWluYXRl
KCkKICAgICAgICAgbURldmljZSA9IE5VTEw7CiAgICAgfQogCisgICAgaWYgKG1EZXZpY2VFeCkK
KyAgICB7CisgICAgICAgIG1EZXZpY2VFeC0+UmVsZWFzZSgpOworICAgICAgICBtRGV2aWNlRXgg
PSBOVUxMOworICAgIH0KKwogICAgIGlmIChtRDNkOSkKICAgICB7CiAgICAgICAgIG1EM2Q5LT5S
ZWxlYXNlKCk7CkBAIC0yNTksMTUgKzI4MCwxNCBAQCB2b2lkIERpc3BsYXk6OnRlcm1pbmF0ZSgp
CiAgICAgICAgIG1EZXZpY2VXaW5kb3cgPSBOVUxMOwogICAgIH0KICAgICAKLSAgICBpZiAobUQz
ZDlleCkKKyAgICBpZiAobUQzZDlFeCkKICAgICB7Ci0gICAgICAgIG1EM2Q5ZXgtPlJlbGVhc2Uo
KTsKLSAgICAgICAgbUQzZDlleCA9IE5VTEw7CisgICAgICAgIG1EM2Q5RXgtPlJlbGVhc2UoKTsK
KyAgICAgICAgbUQzZDlFeCA9IE5VTEw7CiAgICAgfQogCiAgICAgaWYgKG1EM2Q5TW9kdWxlKQog
ICAgIHsKLSAgICAgICAgRnJlZUxpYnJhcnkobUQzZDlNb2R1bGUpOwogICAgICAgICBtRDNkOU1v
ZHVsZSA9IE5VTEw7CiAgICAgfQogfQpAQCAtMzMyLDYgKzM1Miw5IEBAIGJvb2wgRGlzcGxheTo6
Z2V0Q29uZmlnQXR0cmliKEVHTENvbmZpZyAKICAgICAgIGNhc2UgRUdMX1JFTkRFUkFCTEVfVFlQ
RTogICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1SZW5kZXJhYmxlVHlwZTsgICAg
ICAgICBicmVhazsKICAgICAgIGNhc2UgRUdMX01BVENIX05BVElWRV9QSVhNQVA6ICAgICAgICp2
YWx1ZSA9IGZhbHNlOyBVTklNUExFTUVOVEVEKCk7ICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgIGNhc2UgRUdMX0NPTkZPUk1BTlQ6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3Vy
YXRpb24tPm1Db25mb3JtYW50OyAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01B
WF9QQlVGRkVSX1dJRFRIOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQQnVm
ZmVyV2lkdGg7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX0hFSUdI
VDogICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQQnVmZmVySGVpZ2h0OyAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX1BJWEVMUzogICAgICAgICp2YWx1
ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQQnVmZmVyUGl4ZWxzOyAgICAgICBicmVhazsKICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zNjIsNiArMzg1LDEy
IEBAIGJvb2wgRGlzcGxheTo6Y3JlYXRlRGV2aWNlKCkKICAgICAgICAgfQogICAgIH0KIAorICAg
IGlmIChtRDNkOUV4KQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+UXVlcnlJbnRl
cmZhY2UoSUlEX0lEaXJlY3QzRERldmljZTlFeCwgKHZvaWQqKikgJm1EZXZpY2VFeCk7CisgICAg
ICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgfQorCiAgICAgLy8gUGVybWFuZW50
IG5vbi1kZWZhdWx0IHN0YXRlcwogICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1BP
SU5UU1BSSVRFRU5BQkxFLCBUUlVFKTsKIApAQCAtMzkzLDE0ICs0MjIsMTYyIEBAIGJvb2wgRGlz
cGxheTo6cmVzZXREZXZpY2UoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1TdXJmYWNlICpEaXNw
bGF5OjpjcmVhdGVXaW5kb3dTdXJmYWNlKEhXTkQgd2luZG93LCBFR0xDb25maWcgY29uZmlnKQor
RUdMU3VyZmFjZSBEaXNwbGF5OjpjcmVhdGVXaW5kb3dTdXJmYWNlKEhXTkQgd2luZG93LCBFR0xD
b25maWcgY29uZmlnLCBjb25zdCBFR0xpbnQgKmF0dHJpYkxpc3QpCiB7CiAgICAgY29uc3QgQ29u
ZmlnICpjb25maWd1cmF0aW9uID0gbUNvbmZpZ1NldC5nZXQoY29uZmlnKTsKIAorICAgIGlmIChh
dHRyaWJMaXN0KQorICAgIHsKKyAgICAgICAgd2hpbGUgKCphdHRyaWJMaXN0ICE9IEVHTF9OT05F
KQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGF0dHJpYkxpc3RbMF0pCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1JFTkRFUl9CVUZGRVI6CisgICAgICAgICAg
ICAgICAgc3dpdGNoIChhdHRyaWJMaXN0WzFdKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgIGNhc2UgRUdMX0JBQ0tfQlVGRkVSOgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1NJTkdMRV9CVUZGRVI6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7ICAg
Ly8gUmVuZGVyaW5nIGRpcmVjdGx5IHRvIGZyb250IGJ1ZmZlciBub3Qgc3VwcG9ydGVkCisgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1ZHX0NPTE9SU1BB
Q0U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9OT19T
VVJGQUNFKTsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfVkdfQUxQSEFfRk9STUFUOgorICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7Cisg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9C
QURfQVRUUklCVVRFLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGF0dHJpYkxpc3QgKz0gMjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChoYXNFeGlz
dGluZ1dpbmRvd1N1cmZhY2Uod2luZG93KSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihF
R0xfQkFEX0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorCiAgICAgU3VyZmFjZSAqc3Vy
ZmFjZSA9IG5ldyBTdXJmYWNlKHRoaXMsIGNvbmZpZ3VyYXRpb24sIHdpbmRvdyk7CisKKyAgICBp
ZiAoIXN1cmZhY2UtPmluaXRpYWxpemUoKSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBzdXJmYWNl
OworICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CisgICAgfQorCiAgICAgbVN1cmZhY2VT
ZXQuaW5zZXJ0KHN1cmZhY2UpOwogCi0gICAgcmV0dXJuIHN1cmZhY2U7CisgICAgcmV0dXJuIHN1
Y2Nlc3Moc3VyZmFjZSk7Cit9CisKK0VHTFN1cmZhY2UgRGlzcGxheTo6Y3JlYXRlT2Zmc2NyZWVu
U3VyZmFjZShFR0xDb25maWcgY29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUsIGNvbnN0IEVHTGlu
dCAqYXR0cmliTGlzdCkKK3sKKyAgICBFR0xpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAg
IEVHTGVudW0gdGV4dHVyZUZvcm1hdCA9IEVHTF9OT19URVhUVVJFOworICAgIEVHTGVudW0gdGV4
dHVyZVRhcmdldCA9IEVHTF9OT19URVhUVVJFOworICAgIGNvbnN0IENvbmZpZyAqY29uZmlndXJh
dGlvbiA9IG1Db25maWdTZXQuZ2V0KGNvbmZpZyk7CisKKyAgICBpZiAoYXR0cmliTGlzdCkKKyAg
ICB7CisgICAgICAgIHdoaWxlICgqYXR0cmliTGlzdCAhPSBFR0xfTk9ORSkKKyAgICAgICAgewor
ICAgICAgICAgICAgc3dpdGNoIChhdHRyaWJMaXN0WzBdKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICBjYXNlIEVHTF9XSURUSDoKKyAgICAgICAgICAgICAgICB3aWR0aCA9IGF0dHJpYkxp
c3RbMV07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0hF
SUdIVDoKKyAgICAgICAgICAgICAgICBoZWlnaHQgPSBhdHRyaWJMaXN0WzFdOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9MQVJHRVNUX1BCVUZGRVI6Cisg
ICAgICAgICAgICAgICAgaWYgKGF0dHJpYkxpc3RbMV0gIT0gRUdMX0ZBTFNFKQorICAgICAgICAg
ICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAvLyBGSVhNRQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFX0ZPUk1BVDoKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGF0dHJpYkxpc3RbMV0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgY2FzZSBFR0xfTk9fVEVYVFVSRToKKyAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1RF
WFRVUkVfUkdCOgorICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV9SR0JBOgorICAg
ICAgICAgICAgICAgICAgICB0ZXh0dXJlRm9ybWF0ID0gYXR0cmliTGlzdFsxXTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNF
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgRUdMX1RFWFRVUkVfVEFSR0VUOgorICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0
cmliTGlzdFsxXSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEVH
TF9OT19URVhUVVJFOgorICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV8yRDoKKyAg
ICAgICAgICAgICAgICAgICAgdGV4dHVyZVRhcmdldCA9IGF0dHJpYkxpc3RbMV07CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQVRUUklCVVRFLCBFR0xfTk9fU1VSRkFD
RSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEVHTF9NSVBNQVBfVEVYVFVSRToKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmli
TGlzdFsxXSAhPSBFR0xfRkFMU0UpCisgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdM
X0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBFR0xfVkdfQ09MT1JTUEFDRToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAg
ICBjYXNlIEVHTF9WR19BTFBIQV9GT1JNQVQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEVHTF9CQURfTUFUQ0gsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19T
VVJGQUNFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXR0cmliTGlzdCArPSAyOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCBFR0xfTk9fU1VSRkFD
RSk7CisgICAgfQorCisgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCisgICAgewor
ICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsK
KyAgICB9CisKKyAgICBpZiAodGV4dHVyZUZvcm1hdCAhPSBFR0xfTk9fVEVYVFVSRSAmJiAhZ2V0
Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSAmJiAoIWdsOjppc1BvdzIod2lkdGgpIHx8ICFnbDo6
aXNQb3cyKGhlaWdodCkpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfTUFU
Q0gsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAoKHRleHR1cmVGb3JtYXQgIT0g
RUdMX05PX1RFWFRVUkUgJiYgdGV4dHVyZVRhcmdldCA9PSBFR0xfTk9fVEVYVFVSRSkgfHwKKyAg
ICAgICAgKHRleHR1cmVGb3JtYXQgPT0gRUdMX05PX1RFWFRVUkUgJiYgdGV4dHVyZVRhcmdldCAh
PSBFR0xfTk9fVEVYVFVSRSkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9N
QVRDSCwgRUdMX05PX1NVUkZBQ0UpOworICAgIH0KKworICAgIGlmICghKGNvbmZpZ3VyYXRpb24t
Pm1TdXJmYWNlVHlwZSAmIEVHTF9QQlVGRkVSX0JJVCkpCisgICAgeworICAgICAgICByZXR1cm4g
ZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX1NVUkZBQ0UpOworICAgIH0KKworICAgIGlmICgo
dGV4dHVyZUZvcm1hdCA9PSBFR0xfVEVYVFVSRV9SR0IgJiYgY29uZmlndXJhdGlvbi0+bUJpbmRU
b1RleHR1cmVSR0IgIT0gRUdMX1RSVUUpIHx8CisgICAgICAgICh0ZXh0dXJlRm9ybWF0ID09IEVH
TF9URVhUVVJFX1JHQkEgJiYgY29uZmlndXJhdGlvbi0+bUJpbmRUb1RleHR1cmVSR0JBICE9IEVH
TF9UUlVFKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwg
RUdMX05PX1NVUkZBQ0UpOworICAgIH0KKworICAgIFN1cmZhY2UgKnN1cmZhY2UgPSBuZXcgU3Vy
ZmFjZSh0aGlzLCBjb25maWd1cmF0aW9uLCBzaGFyZUhhbmRsZSwgd2lkdGgsIGhlaWdodCwgdGV4
dHVyZUZvcm1hdCwgdGV4dHVyZVRhcmdldCk7CisKKyAgICBpZiAoIXN1cmZhY2UtPmluaXRpYWxp
emUoKSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBzdXJmYWNlOworICAgICAgICByZXR1cm4gRUdM
X05PX1NVUkZBQ0U7CisgICAgfQorCisgICAgbVN1cmZhY2VTZXQuaW5zZXJ0KHN1cmZhY2UpOwor
CisgICAgcmV0dXJuIHN1Y2Nlc3Moc3VyZmFjZSk7CiB9CiAKIEVHTENvbnRleHQgRGlzcGxheTo6
Y3JlYXRlQ29udGV4dChFR0xDb25maWcgY29uZmlnSGFuZGxlLCBjb25zdCBnbDo6Q29udGV4dCAq
c2hhcmVDb250ZXh0KQpAQCAtNDEyLDggKzU4OSwxNCBAQCBFR0xDb250ZXh0IERpc3BsYXk6OmNy
ZWF0ZUNvbnRleHQoRUdMQ29uCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQog
ICAgIH0KLSAgICBlbHNlIGlmIChGQUlMRUQobURldmljZS0+VGVzdENvb3BlcmF0aXZlTGV2ZWwo
KSkpICAgLy8gTG9zdCBkZXZpY2UKKyAgICBlbHNlIGlmIChpc0RldmljZUxvc3QoKSkgICAvLyBM
b3N0IGRldmljZQogICAgIHsKKyAgICAgICAgLy8gUmVsZWFzZSBzdXJmYWNlIHJlc291cmNlcyB0
byBtYWtlIHRoZSBSZXNldCgpIHN1Y2NlZWQKKyAgICAgICAgZm9yIChTdXJmYWNlU2V0OjppdGVy
YXRvciBzdXJmYWNlID0gbVN1cmZhY2VTZXQuYmVnaW4oKTsgc3VyZmFjZSAhPSBtU3VyZmFjZVNl
dC5lbmQoKTsgc3VyZmFjZSsrKQorICAgICAgICB7CisgICAgICAgICAgICAoKnN1cmZhY2UpLT5y
ZWxlYXNlKCk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoIXJlc2V0RGV2aWNlKCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDQ0LDE3ICs2MjcsOSBAQCB2b2lk
IERpc3BsYXk6OmRlc3Ryb3lDb250ZXh0KGdsOjpDb250ZXh0CiB7CiAgICAgZ2xEZXN0cm95Q29u
dGV4dChjb250ZXh0KTsKICAgICBtQ29udGV4dFNldC5lcmFzZShjb250ZXh0KTsKLQotICAgIGlm
IChtQ29udGV4dFNldC5lbXB0eSgpICYmIG1EZXZpY2UgJiYgRkFJTEVEKG1EZXZpY2UtPlRlc3RD
b29wZXJhdGl2ZUxldmVsKCkpKSAgIC8vIExhc3QgY29udGV4dCBvZiBhIGxvc3QgZGV2aWNlCi0g
ICAgewotICAgICAgICBmb3IgKFN1cmZhY2VTZXQ6Oml0ZXJhdG9yIHN1cmZhY2UgPSBtU3VyZmFj
ZVNldC5iZWdpbigpOyBzdXJmYWNlICE9IG1TdXJmYWNlU2V0LmVuZCgpOyBzdXJmYWNlKyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgICgqc3VyZmFjZSktPnJlbGVhc2UoKTsKLSAgICAgICAgfQkK
LSAgICB9CiB9CiAKLWJvb2wgRGlzcGxheTo6aXNJbml0aWFsaXplZCgpCitib29sIERpc3BsYXk6
OmlzSW5pdGlhbGl6ZWQoKSBjb25zdAogewogICAgIHJldHVybiBtRDNkOSAhPSBOVUxMICYmIG1D
b25maWdTZXQuc2l6ZSgpID4gMDsKIH0KQEAgLTUxNSw2ICs2OTAsMjMgQEAgRDNEQ0FQUzkgRGlz
cGxheTo6Z2V0RGV2aWNlQ2FwcygpCiAgICAgcmV0dXJuIG1EZXZpY2VDYXBzOwogfQogCitEM0RB
REFQVEVSX0lERU5USUZJRVI5ICpEaXNwbGF5OjpnZXRBZGFwdGVySWRlbnRpZmllcigpCit7Cisg
ICAgcmV0dXJuICZtQWRhcHRlcklkZW50aWZpZXI7Cit9CisKK2Jvb2wgRGlzcGxheTo6aXNEZXZp
Y2VMb3N0KCkKK3sKKyAgICBpZiAobURldmljZUV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEZB
SUxFRChtRGV2aWNlRXgtPkNoZWNrRGV2aWNlU3RhdGUoTlVMTCkpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICByZXR1cm4gRkFJTEVEKG1EZXZpY2UtPlRlc3RDb29wZXJhdGl2ZUxl
dmVsKCkpOworICAgIH0KK30KKwogdm9pZCBEaXNwbGF5OjpnZXRNdWx0aVNhbXBsZVN1cHBvcnQo
RDNERk9STUFUIGZvcm1hdCwgYm9vbCAqbXVsdGlTYW1wbGVBcnJheSkKIHsKICAgICBmb3IgKGlu
dCBtdWx0aVNhbXBsZUluZGV4ID0gMDsgbXVsdGlTYW1wbGVJbmRleCA8PSBEM0RNVUxUSVNBTVBM
RV8xNl9TQU1QTEVTOyBtdWx0aVNhbXBsZUluZGV4KyspCkBAIC02MDgsNyArODAwLDcgQEAgYm9v
bCBEaXNwbGF5OjpnZXRMdW1pbmFuY2VBbHBoYVRleHR1cmVTdQogCiBEM0RQT09MIERpc3BsYXk6
OmdldEJ1ZmZlclBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0CiB7Ci0gICAgaWYgKG1EM2Q5ZXggIT0g
TlVMTCkKKyAgICBpZiAobUQzZDlFeCAhPSBOVUxMKQogICAgIHsKICAgICAgICAgcmV0dXJuIEQz
RFBPT0xfREVGQVVMVDsKICAgICB9CkBAIC02NTYsNCArODQ4LDUwIEBAIEQzRFBSRVNFTlRfUEFS
QU1FVEVSUyBEaXNwbGF5OjpnZXREZWZhdWwKIAogICAgIHJldHVybiBwcmVzZW50UGFyYW1ldGVy
czsKIH0KKwordm9pZCBEaXNwbGF5Ojppbml0RXh0ZW5zaW9uU3RyaW5nKCkKK3sKKyAgICBtRXh0
ZW5zaW9uU3RyaW5nICs9ICJFR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVyICI7CisKKyAg
ICBpZiAoaXNEM2Q5RXhEZXZpY2UoKSkgeworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJF
R0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUgIjsKKyAgICAgICAg
bUV4dGVuc2lvblN0cmluZyArPSAiRUdMX0FOR0xFX2QzZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1
ZmZlciAiOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZW5kID0gbUV4dGVu
c2lvblN0cmluZy5maW5kX2xhc3Rfbm90X29mKCcgJyk7CisgICAgaWYgKGVuZCAhPSBzdGQ6OnN0
cmluZzo6bnBvcykKKyAgICB7CisgICAgICAgIG1FeHRlbnNpb25TdHJpbmcucmVzaXplKGVuZCsx
KTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIgKkRpc3BsYXk6OmdldEV4dGVuc2lvblN0cmluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1FeHRlbnNpb25TdHJpbmcuY19zdHIoKTsKK30KKworLy8g
T25seSBEaXJlY3QzRCAxMCByZWFkeSBkZXZpY2VzIHN1cHBvcnQgYWxsIHRoZSBuZWNlc3Nhcnkg
dmVydGV4IHRleHR1cmUgZm9ybWF0cy4KKy8vIFdlIHRlc3QgdGhpcyB1c2luZyBEM0Q5IGJ5IGNo
ZWNraW5nIHN1cHBvcnQgZm9yIHRoZSBSMTZGIGZvcm1hdC4KK2Jvb2wgRGlzcGxheTo6Z2V0VmVy
dGV4VGV4dHVyZVN1cHBvcnQoKSBjb25zdAoreworICAgIGlmICghaXNJbml0aWFsaXplZCgpIHx8
IG1EZXZpY2VDYXBzLlBpeGVsU2hhZGVyVmVyc2lvbiA8IEQzRFBTX1ZFUlNJT04oMywgMCkpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgRDNERElTUExBWU1PREUg
Y3VycmVudERpc3BsYXlNb2RlOworICAgIG1EM2Q5LT5HZXRBZGFwdGVyRGlzcGxheU1vZGUobUFk
YXB0ZXIsICZjdXJyZW50RGlzcGxheU1vZGUpOworCisgICAgSFJFU1VMVCByZXN1bHQgPSBtRDNk
OS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxh
eU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9RVUVSWV9WRVJURVhURVhUVVJFLCBEM0RSVFlQRV9URVhU
VVJFLCBEM0RGTVRfUjE2Rik7CisKKyAgICByZXR1cm4gU1VDQ0VFREVEKHJlc3VsdCk7Cit9CisK
K2Jvb2wgRGlzcGxheTo6Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSBjb25zdAoreworICAg
IHJldHVybiAhKG1EZXZpY2VDYXBzLlRleHR1cmVDYXBzICYgRDNEUFRFWFRVUkVDQVBTX1BPVzIp
ICYmCisgICAgICAgICAgICEobURldmljZUNhcHMuVGV4dHVyZUNhcHMgJiBEM0RQVEVYVFVSRUNB
UFNfQ1VCRU1BUF9QT1cyKSAmJgorICAgICAgICAgICAhKG1EZXZpY2VDYXBzLlRleHR1cmVDYXBz
ICYgRDNEUFRFWFRVUkVDQVBTX05PTlBPVzJDT05ESVRJT05BTCk7Cit9CisKIH0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvRGlzcGxheS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvRGlzcGxheS5oCShyZXZpc2lvbiA4
OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvRGlzcGxheS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIC8vCkBAIC00MiwxMyArNDIsMTQgQEAgY2xhc3MgRGlzcGxheQogICAgIGJvb2wgZ2V0
Q29uZmlncyhFR0xDb25maWcgKmNvbmZpZ3MsIGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCwgRUdM
aW50IGNvbmZpZ1NpemUsIEVHTGludCAqbnVtQ29uZmlnKTsKICAgICBib29sIGdldENvbmZpZ0F0
dHJpYihFR0xDb25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKTsK
IAotICAgIGVnbDo6U3VyZmFjZSAqY3JlYXRlV2luZG93U3VyZmFjZShIV05EIHdpbmRvdywgRUdM
Q29uZmlnIGNvbmZpZyk7CisgICAgRUdMU3VyZmFjZSBjcmVhdGVXaW5kb3dTdXJmYWNlKEhXTkQg
d2luZG93LCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBFR0xpbnQgKmF0dHJpYkxpc3QpOworICAg
IEVHTFN1cmZhY2UgY3JlYXRlT2Zmc2NyZWVuU3VyZmFjZShFR0xDb25maWcgY29uZmlnLCBIQU5E
TEUgc2hhcmVIYW5kbGUsIGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCk7CiAgICAgRUdMQ29udGV4
dCBjcmVhdGVDb250ZXh0KEVHTENvbmZpZyBjb25maWdIYW5kbGUsIGNvbnN0IGdsOjpDb250ZXh0
ICpzaGFyZUNvbnRleHQpOwogCiAgICAgdm9pZCBkZXN0cm95U3VyZmFjZShlZ2w6OlN1cmZhY2Ug
KnN1cmZhY2UpOwogICAgIHZvaWQgZGVzdHJveUNvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQp
OwogCi0gICAgYm9vbCBpc0luaXRpYWxpemVkKCk7CisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1ZhbGlkQ29uZmlnKEVHTENvbmZpZyBjb25maWcpOwogICAgIGJv
b2wgaXNWYWxpZENvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQpOwogICAgIGJvb2wgaXNWYWxp
ZFN1cmZhY2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKQEAgLTU5LDYgKzYwLDggQEAgY2xhc3Mg
RGlzcGxheQogCiAgICAgdmlydHVhbCBJRGlyZWN0M0REZXZpY2U5ICpnZXREZXZpY2UoKTsKICAg
ICB2aXJ0dWFsIEQzRENBUFM5IGdldERldmljZUNhcHMoKTsKKyAgICB2aXJ0dWFsIEQzREFEQVBU
RVJfSURFTlRJRklFUjkgKmdldEFkYXB0ZXJJZGVudGlmaWVyKCk7CisgICAgYm9vbCBpc0Rldmlj
ZUxvc3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TXVsdGlTYW1wbGVTdXBwb3J0KEQzREZPUk1B
VCBmb3JtYXQsIGJvb2wgKm11bHRpU2FtcGxlQXJyYXkpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRD
b21wcmVzc2VkVGV4dHVyZVN1cHBvcnQoKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0RXZlbnRRdWVy
eVN1cHBvcnQoKTsKQEAgLTY2LDggKzY5LDEzIEBAIGNsYXNzIERpc3BsYXkKICAgICB2aXJ0dWFs
IGJvb2wgZ2V0SGFsZkZsb2F0VGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpy
ZW5kZXJhYmxlKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0THVtaW5hbmNlVGV4dHVyZVN1cHBvcnQo
KTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0THVtaW5hbmNlQWxwaGFUZXh0dXJlU3VwcG9ydCgpOwor
ICAgIHZpcnR1YWwgYm9vbCBnZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBnZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgRDNEUE9PTCBnZXRCdWZmZXJQb29sKERXT1JEIHVzYWdlKSBjb25zdDsKIAorICAgIGJvb2wg
aXNEM2Q5RXhEZXZpY2UoKSB7IHJldHVybiBtRDNkOUV4ICE9IE5VTEw7IH0KKyAgICBjb25zdCBj
aGFyICpnZXRFeHRlbnNpb25TdHJpbmcoKSBjb25zdDsKKwogICBwcml2YXRlOgogICAgIERJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihEaXNwbGF5KTsKIApAQCAtODAsOSArODgsMTEgQEAgY2xhc3Mg
RGlzcGxheQogICAgIFVJTlQgbUFkYXB0ZXI7CiAgICAgRDNEREVWVFlQRSBtRGV2aWNlVHlwZTsK
ICAgICBJRGlyZWN0M0Q5ICptRDNkOTsgIC8vIEFsd2F5cyB2YWxpZCBhZnRlciBzdWNjZXNzZnVs
IGluaXRpYWxpemF0aW9uLgotICAgIElEaXJlY3QzRDlFeCAqbUQzZDlleDsgIC8vIE1pZ2h0IGJl
IG51bGwgaWYgRDNEOUV4IGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgSURpcmVjdDNEOUV4ICptRDNk
OUV4OyAgLy8gTWlnaHQgYmUgbnVsbCBpZiBEM0Q5RXggaXMgbm90IHN1cHBvcnRlZC4KICAgICBJ
RGlyZWN0M0REZXZpY2U5ICptRGV2aWNlOworICAgIElEaXJlY3QzRERldmljZTlFeCAqbURldmlj
ZUV4OyAgLy8gTWlnaHQgYmUgbnVsbCBpZiBEM0Q5RXggaXMgbm90IHN1cHBvcnRlZC4KICAgICBE
M0RDQVBTOSBtRGV2aWNlQ2FwczsKKyAgICBEM0RBREFQVEVSX0lERU5USUZJRVI5IG1BZGFwdGVy
SWRlbnRpZmllcjsKICAgICBIV05EIG1EZXZpY2VXaW5kb3c7CiAKICAgICBib29sIG1TY2VuZVN0
YXJ0ZWQ7CkBAIC05OSw2ICsxMDksOSBAQCBjbGFzcyBEaXNwbGF5CiAKICAgICBib29sIGNyZWF0
ZURldmljZSgpOwogICAgIGJvb2wgcmVzZXREZXZpY2UoKTsKKworICAgIHZvaWQgaW5pdEV4dGVu
c2lvblN0cmluZygpOworICAgIHN0ZDo6c3RyaW5nIG1FeHRlbnNpb25TdHJpbmc7CiB9OwogfQog
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvU3VyZmFjZS5j
cHAJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVH
TC9TdXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMsMjEgKzEzLDQzIEBACiAjaW5jbHVk
ZSAibGliRUdML1N1cmZhY2UuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCiAKICNpbmNsdWRlICJsaWJFR0wvbWFpbi5oIgogI2lu
Y2x1ZGUgImxpYkVHTC9EaXNwbGF5LmgiCiAKKyNpbmNsdWRlIDxkd21hcGkuaD4KKwogbmFtZXNw
YWNlIGVnbAogeworCituYW1lc3BhY2UKK3sKK2NvbnN0IGludCB2ZXJzaW9uV2luZG93c1Zpc3Rh
ID0gTUFLRVdPUkQoMHgwMCwgMHgwNik7Citjb25zdCBpbnQgdmVyc2lvbldpbmRvd3M3ID0gTUFL
RVdPUkQoMHgwMSwgMHgwNik7CisKKy8vIFJldHVybiB0aGUgdmVyc2lvbiBvZiB0aGUgb3BlcmF0
aW5nIHN5c3RlbSBpbiBhIGZvcm1hdCBzdWl0YWJsZSBmb3Igb3JkZXJpbmcKKy8vIGNvbXBhcmlz
b24uCitpbnQgZ2V0Q29tcGFyYWJsZU9TVmVyc2lvbigpCit7CisgICAgRFdPUkQgdmVyc2lvbiA9
IEdldFZlcnNpb24oKTsKKyAgICBpbnQgbWFqb3JWZXJzaW9uID0gTE9CWVRFKExPV09SRCh2ZXJz
aW9uKSk7CisgICAgaW50IG1pbm9yVmVyc2lvbiA9IEhJQllURShMT1dPUkQodmVyc2lvbikpOwor
ICAgIHJldHVybiBNQUtFV09SRChtaW5vclZlcnNpb24sIG1ham9yVmVyc2lvbik7Cit9Cit9CisK
IFN1cmZhY2U6OlN1cmZhY2UoRGlzcGxheSAqZGlzcGxheSwgY29uc3QgQ29uZmlnICpjb25maWcs
IEhXTkQgd2luZG93KSAKICAgICA6IG1EaXNwbGF5KGRpc3BsYXkpLCBtQ29uZmlnKGNvbmZpZyks
IG1XaW5kb3cod2luZG93KQogewogICAgIG1Td2FwQ2hhaW4gPSBOVUxMOwogICAgIG1EZXB0aFN0
ZW5jaWwgPSBOVUxMOwotICAgIG1CYWNrQnVmZmVyID0gTlVMTDsKLSAgICBtRmxpcFRleHR1cmUg
PSBOVUxMOwotICAgIG1GbGlwU3RhdGUgPSBOVUxMOwotICAgIG1QcmVGbGlwU3RhdGUgPSBOVUxM
OworICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxMOworICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gTlVM
TDsKKyAgICBtU2hhcmVIYW5kbGUgPSBOVUxMOworICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICBt
VGV4dHVyZUZvcm1hdCA9IEVHTF9OT19URVhUVVJFOworICAgIG1UZXh0dXJlVGFyZ2V0ID0gRUdM
X05PX1RFWFRVUkU7CiAKICAgICBtUGl4ZWxBc3BlY3RSYXRpbyA9IChFR0xpbnQpKDEuMCAqIEVH
TF9ESVNQTEFZX1NDQUxJTkcpOyAgIC8vIEZJWE1FOiBEZXRlcm1pbmUgYWN0dWFsIHBpeGVsIGFz
cGVjdCByYXRpbwogICAgIG1SZW5kZXJCdWZmZXIgPSBFR0xfQkFDS19CVUZGRVI7CkBAIC0zNiw3
ICs1OCwyNSBAQCBTdXJmYWNlOjpTdXJmYWNlKERpc3BsYXkgKmRpc3BsYXksIGNvbnN0CiAgICAg
c2V0U3dhcEludGVydmFsKDEpOwogCiAgICAgc3ViY2xhc3NXaW5kb3coKTsKLSAgICByZXNldFN3
YXBDaGFpbigpOworfQorCitTdXJmYWNlOjpTdXJmYWNlKERpc3BsYXkgKmRpc3BsYXksIGNvbnN0
IENvbmZpZyAqY29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUsIEVHTGludCB3aWR0aCwgRUdMaW50
IGhlaWdodCwgRUdMZW51bSB0ZXh0dXJlRm9ybWF0LCBFR0xlbnVtIHRleHR1cmVUeXBlKQorICAg
IDogbURpc3BsYXkoZGlzcGxheSksIG1XaW5kb3coTlVMTCksIG1Db25maWcoY29uZmlnKSwgbVNo
YXJlSGFuZGxlKHNoYXJlSGFuZGxlKSwgbVdpZHRoKHdpZHRoKSwgbUhlaWdodChoZWlnaHQpCit7
CisgICAgbVN3YXBDaGFpbiA9IE5VTEw7CisgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAg
bVJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgbU9mZnNjcmVlblRleHR1cmUgPSBOVUxMOworICAg
IG1XaW5kb3dTdWJjbGFzc2VkID0gZmFsc2U7CisgICAgbVRleHR1cmUgPSBOVUxMOworICAgIG1U
ZXh0dXJlRm9ybWF0ID0gdGV4dHVyZUZvcm1hdDsKKyAgICBtVGV4dHVyZVRhcmdldCA9IHRleHR1
cmVUeXBlOworCisgICAgbVBpeGVsQXNwZWN0UmF0aW8gPSAoRUdMaW50KSgxLjAgKiBFR0xfRElT
UExBWV9TQ0FMSU5HKTsgICAvLyBGSVhNRTogRGV0ZXJtaW5lIGFjdHVhbCBwaXhlbCBhc3BlY3Qg
cmF0aW8KKyAgICBtUmVuZGVyQnVmZmVyID0gRUdMX0JBQ0tfQlVGRkVSOworICAgIG1Td2FwQmVo
YXZpb3IgPSBFR0xfQlVGRkVSX1BSRVNFUlZFRDsKKyAgICBtU3dhcEludGVydmFsID0gLTE7Cisg
ICAgc2V0U3dhcEludGVydmFsKDEpOwogfQogCiBTdXJmYWNlOjp+U3VyZmFjZSgpCkBAIC00NSw2
ICs4NSwzNCBAQCBTdXJmYWNlOjp+U3VyZmFjZSgpCiAgICAgcmVsZWFzZSgpOwogfQogCitib29s
IFN1cmZhY2U6OmluaXRpYWxpemUoKQoreworICAgIEFTU0VSVCghbVN3YXBDaGFpbiAmJiAhbU9m
ZnNjcmVlblRleHR1cmUgJiYgIW1EZXB0aFN0ZW5jaWwpOworCisgICAgaWYgKCFyZXNldFN3YXBD
aGFpbigpKQorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTW9kaWZ5IHByZXNlbnQgcGFy
YW1ldGVycyBmb3IgdGhpcyB3aW5kb3csIGlmIHdlIGFyZSBjb21wb3NpdGVkLAorICAgIC8vIHRv
IG1pbmltaXplIHRoZSBhbW91bnQgb2YgcXVldWluZyBkb25lIGJ5IERXTSBiZXR3ZWVuIG91ciBj
YWxscyB0bworICAgIC8vIHByZXNlbnQgYW5kIHRoZSBhY3R1YWwgc2NyZWVuLgorICAgIGlmICht
V2luZG93ICYmIChnZXRDb21wYXJhYmxlT1NWZXJzaW9uKCkgPj0gdmVyc2lvbldpbmRvd3NWaXN0
YSkpIHsKKyAgICAgIEJPT0wgaXNDb21wb3NpdGVkOworICAgICAgSFJFU1VMVCByZXN1bHQgPSBE
d21Jc0NvbXBvc2l0aW9uRW5hYmxlZCgmaXNDb21wb3NpdGVkKTsKKyAgICAgIGlmIChTVUNDRUVE
RUQocmVzdWx0KSAmJiBpc0NvbXBvc2l0ZWQpIHsKKyAgICAgICAgRFdNX1BSRVNFTlRfUEFSQU1F
VEVSUyBwcmVzZW50UGFyYW1zOworICAgICAgICBtZW1zZXQoJnByZXNlbnRQYXJhbXMsIDAsIHNp
emVvZihwcmVzZW50UGFyYW1zKSk7CisgICAgICAgIHByZXNlbnRQYXJhbXMuY2JTaXplID0gc2l6
ZW9mKERXTV9QUkVTRU5UX1BBUkFNRVRFUlMpOworICAgICAgICBwcmVzZW50UGFyYW1zLmNCdWZm
ZXIgPSAyOworCisgICAgICAgIHJlc3VsdCA9IER3bVNldFByZXNlbnRQYXJhbWV0ZXJzKG1XaW5k
b3csICZwcmVzZW50UGFyYW1zKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAg
ICAgIEVSUigiVW5hYmxlIHRvIHNldCBwcmVzZW50IHBhcmFtZXRlcnM6ICUwODFYIiwgcmVzdWx0
KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBTdXJmYWNl
OjpyZWxlYXNlKCkKIHsKICAgICBpZiAobVN3YXBDaGFpbikKQEAgLTUzLDY4ICsxMjEsODUgQEAg
dm9pZCBTdXJmYWNlOjpyZWxlYXNlKCkKICAgICAgICAgbVN3YXBDaGFpbiA9IE5VTEw7CiAgICAg
fQogCi0gICAgaWYgKG1CYWNrQnVmZmVyKQotICAgIHsKLSAgICAgICAgbUJhY2tCdWZmZXItPlJl
bGVhc2UoKTsKLSAgICAgICAgbUJhY2tCdWZmZXIgPSBOVUxMOwotICAgIH0KLQogICAgIGlmICht
RGVwdGhTdGVuY2lsKQogICAgIHsKICAgICAgICAgbURlcHRoU3RlbmNpbC0+UmVsZWFzZSgpOwog
ICAgICAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsKICAgICB9CiAKLSAgICBpZiAobUZsaXBUZXh0
dXJlKQorICAgIGlmIChtUmVuZGVyVGFyZ2V0KQogICAgIHsKLSAgICAgICAgbUZsaXBUZXh0dXJl
LT5SZWxlYXNlKCk7Ci0gICAgICAgIG1GbGlwVGV4dHVyZSA9IE5VTEw7CisgICAgICAgIG1SZW5k
ZXJUYXJnZXQtPlJlbGVhc2UoKTsKKyAgICAgICAgbVJlbmRlclRhcmdldCA9IE5VTEw7CiAgICAg
fQogCi0gICAgaWYgKG1GbGlwU3RhdGUpCisgICAgaWYgKG1PZmZzY3JlZW5UZXh0dXJlKQogICAg
IHsKLSAgICAgICAgbUZsaXBTdGF0ZS0+UmVsZWFzZSgpOwotICAgICAgICBtRmxpcFN0YXRlID0g
TlVMTDsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbU9m
ZnNjcmVlblRleHR1cmUgPSBOVUxMOwogICAgIH0KIAotICAgIGlmIChtUHJlRmxpcFN0YXRlKQor
ICAgIGlmIChtVGV4dHVyZSkKICAgICB7Ci0gICAgICAgIG1QcmVGbGlwU3RhdGUtPlJlbGVhc2Uo
KTsKLSAgICAgICAgbVByZUZsaXBTdGF0ZSA9IE5VTEw7CisgICAgICAgIG1UZXh0dXJlLT5yZWxl
YXNlVGV4SW1hZ2UoKTsKKyAgICAgICAgbVRleHR1cmUgPSBOVUxMOwogICAgIH0KIH0KIAotdm9p
ZCBTdXJmYWNlOjpyZXNldFN3YXBDaGFpbigpCitib29sIFN1cmZhY2U6OnJlc2V0U3dhcENoYWlu
KCkKIHsKKyAgICBpZiAoIW1XaW5kb3cpCisgICAgeworICAgICAgICByZXR1cm4gcmVzZXRTd2Fw
Q2hhaW4obVdpZHRoLCBtSGVpZ2h0KTsKKyAgICB9CisKICAgICBSRUNUIHdpbmRvd1JlY3Q7CiAg
ICAgaWYgKCFHZXRDbGllbnRSZWN0KGdldFdpbmRvd0hhbmRsZSgpLCAmd2luZG93UmVjdCkpCiAg
ICAgewogICAgICAgICBBU1NFUlQoZmFsc2UpOwogCiAgICAgICAgIEVSUigiQ291bGQgbm90IHJl
dHJpZXZlIHRoZSB3aW5kb3cgZGltZW5zaW9ucyIpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXNldFN3YXBDaGFpbih3aW5kb3dSZWN0LnJp
Z2h0IC0gd2luZG93UmVjdC5sZWZ0LCB3aW5kb3dSZWN0LmJvdHRvbSAtIHdpbmRvd1JlY3QudG9w
KTsKKyAgICByZXR1cm4gcmVzZXRTd2FwQ2hhaW4od2luZG93UmVjdC5yaWdodCAtIHdpbmRvd1Jl
Y3QubGVmdCwgd2luZG93UmVjdC5ib3R0b20gLSB3aW5kb3dSZWN0LnRvcCk7CiB9CiAKLXZvaWQg
U3VyZmFjZTo6cmVzZXRTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZm
ZXJIZWlnaHQpCitib29sIFN1cmZhY2U6OnJlc2V0U3dhcENoYWluKGludCBiYWNrYnVmZmVyV2lk
dGgsIGludCBiYWNrYnVmZmVySGVpZ2h0KQogewogICAgIElEaXJlY3QzRERldmljZTkgKmRldmlj
ZSA9IG1EaXNwbGF5LT5nZXREZXZpY2UoKTsKIAogICAgIGlmIChkZXZpY2UgPT0gTlVMTCkKICAg
ICB7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAg
IC8vIEV2aWN0IGFsbCBub24tcmVuZGVyIHRhcmdldCB0ZXh0dXJlcyB0byBzeXN0ZW0gbWVtb3J5
IGFuZCByZWxlYXNlIGFsbCByZXNvdXJjZXMKICAgICAvLyBiZWZvcmUgcmVhbGxvY2F0aW5nIHRo
ZW0gdG8gZnJlZSB1cCBhcyBtdWNoIHZpZGVvIG1lbW9yeSBhcyBwb3NzaWJsZS4KICAgICBkZXZp
Y2UtPkV2aWN0TWFuYWdlZFJlc291cmNlcygpOwogICAgIHJlbGVhc2UoKTsKLSAgICAKKwogICAg
IEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVzZW50UGFyYW1ldGVycyA9IHswfTsKKyAgICBIUkVT
VUxUIHJlc3VsdDsKKworICAgIGJvb2wgdXNlRmxpcEV4ID0gKGdldENvbXBhcmFibGVPU1ZlcnNp
b24oKSA+PSB2ZXJzaW9uV2luZG93czcpICYmIG1EaXNwbGF5LT5pc0QzZDlFeERldmljZSgpOwor
CisgICAgLy8gRmxpcEV4IGNhdXNlcyB1bnNlZW1seSBzdHJldGNoaW5nIHdoZW4gcmVzaXppbmcg
d2luZG93cyBBTkQgd2hlbiBvbmUKKyAgICAvLyBkcmF3cyBvdXRzaWRlIG9mIHRoZSBXTV9QQUlO
VCBjYWxsYmFjay4gV2hpbGUgdGhpcyBpcyBzZWxkb20gYSBwcm9ibGVtIGluCisgICAgLy8gc2lu
Z2xlIHByb2Nlc3MgYXBwbGljYXRpb25zLCBpdCBpcyBwYXJ0aWN1YXJseSBub3RpY2VhYmxlIGlu
IG11bHRpcHJvY2VzcworICAgIC8vIGFwcGxpY2F0aW9ucy4gVGhlcmVmb3JlLCBpZiB0aGUgY3Jl
YXRvciBwcm9jZXNzIG9mIG91ciB3aW5kb3cgaXMgbm90IGluCisgICAgLy8gdGhlIGN1cnJlbnQg
cHJvY2VzcywgZGlzYWJsZSB1c2Ugb2YgRmxpcEV4LgorICAgIERXT1JEIHdpbmRvd1BJRDsKKyAg
ICBHZXRXaW5kb3dUaHJlYWRQcm9jZXNzSWQobVdpbmRvdywgJndpbmRvd1BJRCk7CisgICAgaWYo
d2luZG93UElEICE9IEdldEN1cnJlbnRQcm9jZXNzSWQoKSkKKyAgICB1c2VGbGlwRXggPSBmYWxz
ZTsKIAogICAgIHByZXNlbnRQYXJhbWV0ZXJzLkF1dG9EZXB0aFN0ZW5jaWxGb3JtYXQgPSBtQ29u
ZmlnLT5tRGVwdGhTdGVuY2lsRm9ybWF0OworICAgIC8vIFdlIHNldCBCYWNrQnVmZmVyQ291bnQg
PSAxIGV2ZW4gd2hlbiB3ZSB1c2UgRDNEU1dBUEVGRkVDVF9GTElQRVguCisgICAgLy8gV2UgZG8g
dGhpcyBiZWNhdXNlIERpcmVjdFggZG9jcyBhcmUgYSBiaXQgdmFndWUgd2hldGhlciB0byBzZXQg
dGhpcyB0byAxCisgICAgLy8gb3IgMi4gVGhlIHJ1bnRpbWUgc2VlbXMgdG8gYWNjZXB0IDEsIHNv
IHdlIHNwZWN1bGF0ZSB0aGF0IGVpdGhlciBpdCBpcworICAgIC8vIGZvcmNpbmcgaXQgdG8gMiB3
aXRob3V0IHRlbGxpbmcgdXMsIG9yIGJldHRlciwgZG9pbmcgc29tZXRoaW5nIHNtYXJ0CisgICAg
Ly8gYmVoaW5kIHRoZSBzY2VuZXMga25vd2luZyB0aGF0IHdlIGRvbid0IG5lZWQgbW9yZS4KICAg
ICBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVyQ291bnQgPSAxOwogICAgIHByZXNlbnRQYXJh
bWV0ZXJzLkJhY2tCdWZmZXJGb3JtYXQgPSBtQ29uZmlnLT5tUmVuZGVyVGFyZ2V0Rm9ybWF0Owog
ICAgIHByZXNlbnRQYXJhbWV0ZXJzLkVuYWJsZUF1dG9EZXB0aFN0ZW5jaWwgPSBGQUxTRTsKQEAg
LTEyMyw1OSArMjA4LDY1IEBAIHZvaWQgU3VyZmFjZTo6cmVzZXRTd2FwQ2hhaW4oaW50IGJhY2ti
dWYKICAgICBwcmVzZW50UGFyYW1ldGVycy5NdWx0aVNhbXBsZVF1YWxpdHkgPSAwOyAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBVbmltcGxlbWVudGVkCiAgICAgcHJlc2VudFBhcmFtZXRlcnMu
TXVsdGlTYW1wbGVUeXBlID0gRDNETVVMVElTQU1QTEVfTk9ORTsgICAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZAogICAgIHByZXNlbnRQYXJhbWV0ZXJzLlByZXNlbnRhdGlvbkludGVydmFsID0gbVBy
ZXNlbnRJbnRlcnZhbDsKLSAgICBwcmVzZW50UGFyYW1ldGVycy5Td2FwRWZmZWN0ID0gRDNEU1dB
UEVGRkVDVF9ESVNDQVJEOworICAgIC8vIFVzZSBmbGlwRXggb24gV2luNyBvciBncmVhdGVyLgor
ICAgIGlmKHVzZUZsaXBFeCkKKyAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLlN3YXBFZmZlY3QgPSBE
M0RTV0FQRUZGRUNUX0ZMSVBFWDsKKyAgICBlbHNlCisgICAgICBwcmVzZW50UGFyYW1ldGVycy5T
d2FwRWZmZWN0ID0gRDNEU1dBUEVGRkVDVF9ESVNDQVJEOwogICAgIHByZXNlbnRQYXJhbWV0ZXJz
LldpbmRvd2VkID0gVFJVRTsKICAgICBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVyV2lkdGgg
PSBiYWNrYnVmZmVyV2lkdGg7CiAgICAgcHJlc2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlckhlaWdo
dCA9IGJhY2tidWZmZXJIZWlnaHQ7CiAKLSAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlQWRkaXRpb25hbFN3YXBDaGFpbigmcHJlc2VudFBhcmFtZXRlcnMsICZtU3dhcENoYWluKTsK
LQotICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICBpZiAobVdpbmRvdykKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09
IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUFkZGl0aW9u
YWxTd2FwQ2hhaW4oJnByZXNlbnRQYXJhbWV0ZXJzLCAmbVN3YXBDaGFpbik7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgSEFORExFICpwU2hhcmVIYW5kbGUgPSBOVUxMOworICAgICAgICBpZiAobURp
c3BsYXktPmlzRDNkOUV4RGV2aWNlKCkpIHsKKyAgICAgICAgICAgIHBTaGFyZUhhbmRsZSA9ICZt
U2hhcmVIYW5kbGU7CisgICAgICAgIH0KIAotICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUg
YWRkaXRpb25hbCBzd2FwIGNoYWluczogJTA4bFgiLCByZXN1bHQpOwotICAgICAgICByZWxlYXNl
KCk7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DKTsKKyAgICAgICAgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlKHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0
aCwgcHJlc2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlckhlaWdodCwgMSwgRDNEVVNBR0VfUkVOREVS
VEFSR0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudFBh
cmFtZXRlcnMuQmFja0J1ZmZlckZvcm1hdCwgRDNEUE9PTF9ERUZBVUxULCAmbU9mZnNjcmVlblRl
eHR1cmUsIHBTaGFyZUhhbmRsZSk7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVEZXB0aFN0ZW5jaWxTdXJmYWNlKHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0aCwg
cHJlc2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlckhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuQXV0b0RlcHRoU3Rl
bmNpbEZvcm1hdCwgcHJlc2VudFBhcmFtZXRlcnMuTXVsdGlTYW1wbGVUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5N
dWx0aVNhbXBsZVF1YWxpdHksIEZBTFNFLCAmbURlcHRoU3RlbmNpbCwgTlVMTCk7Ci0KICAgICBp
ZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewogICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVS
Ul9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKIAotICAgICAg
ICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgZGVwdGhzdGVuY2lsIHN1cmZhY2UgZm9yIG5ldyBzd2Fw
IGNoYWluOiAlMDhsWCIsIHJlc3VsdCk7CisgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBh
ZGRpdGlvbmFsIHN3YXAgY2hhaW5zIG9yIG9mZnNjcmVlbiBzdXJmYWNlczogJTA4bFgiLCByZXN1
bHQpOwogICAgICAgICByZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FM
TE9DKTsKKyAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIGZhbHNlKTsKICAgICB9
CiAKLSAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotCi0gICAgcmVzdWx0ID0gZGV2aWNl
LT5DcmVhdGVUZXh0dXJlKHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0aCwgcHJlc2Vu
dFBhcmFtZXRlcnMuQmFja0J1ZmZlckhlaWdodCwgMSwgRDNEVVNBR0VfUkVOREVSVEFSR0VULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5CYWNr
QnVmZmVyRm9ybWF0LCBEM0RQT09MX0RFRkFVTFQsICZtRmxpcFRleHR1cmUsIE5VTEwpOworICAg
IGlmIChtQ29uZmlnLT5tRGVwdGhTdGVuY2lsRm9ybWF0ICE9IEQzREZNVF9VTktOT1dOKQorICAg
IHsKKyAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5jaWxTdXJmYWNlKHBy
ZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0aCwgcHJlc2VudFBhcmFtZXRlcnMuQmFja0J1
ZmZlckhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkF1dG9EZXB0aFN0ZW5jaWxGb3JtYXQsIHByZXNlbnRQ
YXJhbWV0ZXJzLk11bHRpU2FtcGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLk11bHRpU2FtcGxlUXVhbGl0
eSwgRkFMU0UsICZtRGVwdGhTdGVuY2lsLCBOVUxMKTsKKyAgICB9CiAKICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCiAgICAgewogICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJ
REVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKIAotICAgICAgICBFUlIoIkNv
dWxkIG5vdCBjcmVhdGUgZmxpcCB0ZXh0dXJlIGZvciBuZXcgc3dhcCBjaGFpbjogJTA4bFgiLCBy
ZXN1bHQpOworICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgZGVwdGhzdGVuY2lsIHN1cmZh
Y2UgZm9yIG5ldyBzd2FwIGNoYWluOiAlMDhsWCIsIHJlc3VsdCk7CiAgICAgICAgIHJlbGVhc2Uo
KTsKLSAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MpOworICAgICAgICByZXR1cm4g
ZXJyb3IoRUdMX0JBRF9BTExPQywgZmFsc2UpOworICAgIH0KKworICAgIGlmIChtV2luZG93KSB7
CisgICAgICAgIG1Td2FwQ2hhaW4tPkdldEJhY2tCdWZmZXIoMCwgRDNEQkFDS0JVRkZFUl9UWVBF
X01PTk8sICZtUmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgSW52YWxpZGF0ZVJlY3QobVdpbmRvdywg
TlVMTCwgRkFMU0UpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5H
ZXRTdXJmYWNlTGV2ZWwoMCwgJm1SZW5kZXJUYXJnZXQpOwogICAgIH0KIAotICAgIG1Td2FwQ2hh
aW4tPkdldEJhY2tCdWZmZXIoMCwgRDNEQkFDS0JVRkZFUl9UWVBFX01PTk8sICZtQmFja0J1ZmZl
cik7CiAgICAgbVdpZHRoID0gcHJlc2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlcldpZHRoOwogICAg
IG1IZWlnaHQgPSBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVySGVpZ2h0OwogCiAgICAgbVBy
ZXNlbnRJbnRlcnZhbERpcnR5ID0gZmFsc2U7Ci0KLSAgICBJbnZhbGlkYXRlUmVjdChtV2luZG93
LCBOVUxMLCBGQUxTRSk7Ci0KLSAgICAvLyBUaGUgZmxpcCBzdGF0ZSBibG9jayByZWNvcmRlZCBt
RmxpcFRleHR1cmUgc28gaXQgaXMgbm93IGludmFsaWQuCi0gICAgcmVsZWFzZVJlY29yZGVkU3Rh
dGUoZGV2aWNlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogSFdORCBTdXJmYWNlOjpnZXRXaW5k
b3dIYW5kbGUoKQpAQCAtMTgzLDE4MSArMjc0LDc1IEBAIEhXTkQgU3VyZmFjZTo6Z2V0V2luZG93
SGFuZGxlKCkKICAgICByZXR1cm4gbVdpbmRvdzsKIH0KIAotdm9pZCBTdXJmYWNlOjp3cml0ZVJl
Y29yZGFibGVGbGlwU3RhdGUoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlKQotewotICAgIC8vIERp
c2FibGUgYWxsIHBpcGVsaW5lIG9wZXJhdGlvbnMKLSAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX1pFTkFCTEUsIEQzRFpCX0ZBTFNFKTsKLSAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX0ZJTExNT0RFLCBEM0RGSUxMX1NPTElEKTsKLSAgICBkZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX0FMUEhBVEVTVEVOQUJMRSwgRkFMU0UpOwotICAgIGRldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfQUxQSEFCTEVOREVOQUJMRSwgRkFMU0UpOwotICAgIGRldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfQ1VMTE1PREUsIEQzRENVTExfTk9ORSk7Ci0gICAgZGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBGQUxTRSk7Ci0gICAgZGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19DTElQUExBTkVFTkFCTEUsIDApOwotICAgIGRldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwgRDNEQ09MT1JXUklURUVOQUJMRV9BTFBI
QSB8IEQzRENPTE9SV1JJVEVFTkFCTEVfQkxVRSB8IEQzRENPTE9SV1JJVEVFTkFCTEVfR1JFRU4g
fCBEM0RDT0xPUldSSVRFRU5BQkxFX1JFRCk7Ci0gICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19TUkdCV1JJVEVFTkFCTEUsIEZBTFNFKTsKLSAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX1NDSVNTT1JURVNURU5BQkxFLCBGQUxTRSk7Ci0gICAgZGV2aWNlLT5TZXRQaXhlbFNo
YWRlcihOVUxMKTsKLSAgICBkZXZpY2UtPlNldFZlcnRleFNoYWRlcihOVUxMKTsKLQotICAgIC8v
IEp1c3Qgc2FtcGxlIHRoZSB0ZXh0dXJlCi0gICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0
ZSgwLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOwotICAgIGRldmljZS0+U2V0
VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0NPTE9SQVJHMSwgRDNEVEFfVEVYVFVSRSk7Ci0g
ICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgxLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9Q
X0RJU0FCTEUpOwotICAgIGRldmljZS0+U2V0VGV4dHVyZSgwLCBOVUxMKTsgICAvLyBUaGUgYWN0
dWFsIHRleHR1cmUgd2lsbCBjaGFuZ2UgYWZ0ZXIgcmVzaXppbmcuIEJ1dCB0aGUgcHJlLWZsaXAg
c3RhdGUgYmxvY2sgbXVzdCBzYXZlL3Jlc3RvcmUgdGhlIHRleHR1cmUuCi0gICAgZGV2aWNlLT5T
ZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9NQUdGSUxURVIsIEQzRFRFWEZfUE9JTlQpOwotICAg
IGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfTUlORklMVEVSLCBEM0RURVhGX1BP
SU5UKTsKLSAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1QX1NSR0JURVhUVVJF
LCBGQUxTRSk7Ci0gICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9BRERSRVNT
VSwgRDNEVEFERFJFU1NfQ0xBTVApOwotICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQz
RFNBTVBfQUREUkVTU1YsIEQzRFRBRERSRVNTX0NMQU1QKTsKLSAgICBkZXZpY2UtPlNldEZWRihE
M0RGVkZfWFlaUkhXIHwgRDNERlZGX1RFWDEpOwotCi0gICAgUkVDVCBzY2lzc29yUmVjdCA9IHsw
fTsgICAvLyBTY2lzc29yaW5nIGlzIGRpc2FibGVkIGZvciBmbGlwcGluZywgYnV0IHdlIG5lZWQg
dGhpcyB0byBjYXB0dXJlIGFuZCByZXN0b3JlIHRoZSBvbGQgcmVjdGFuZ2xlCi0gICAgZGV2aWNl
LT5TZXRTY2lzc29yUmVjdCgmc2Npc3NvclJlY3QpOwotICAgIEQzRFZJRVdQT1JUOSB2aWV3cG9y
dCA9IHswLCAwLCBtV2lkdGgsIG1IZWlnaHQsIDAuMGYsIDEuMGZ9OwotICAgIGRldmljZS0+U2V0
Vmlld3BvcnQoJnZpZXdwb3J0KTsKLX0KLQotdm9pZCBTdXJmYWNlOjphcHBseUZsaXBTdGF0ZShJ
RGlyZWN0M0REZXZpY2U5ICpkZXZpY2UpCi17Ci0gICAgSFJFU1VMVCBocjsKLQotICAgIGlmICht
RmxpcFN0YXRlID09IE5VTEwpCi0gICAgewotICAgICAgICAvLyBDcmVhdGUgdHdvIHN0YXRlIGJs
b2NrcyBib3RoIHJlY29yZGluZyB0aGUgc3RhdGVzIHRoYXQgYXJlIGNoYW5nZWQgd2hlbiBzd2Fw
cGluZy4KLQotICAgICAgICAvLyBtUHJlRmxpcFN0YXRlIHdpbGwgcmVjb3JkIHRoZSBvcmlnaW5h
bCBzdGF0ZSBlYWNoIGVudHJ5LgotICAgICAgICBociA9IGRldmljZS0+QmVnaW5TdGF0ZUJsb2Nr
KCk7Ci0gICAgICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKLSAgICAgICAgd3JpdGVSZWNvcmRh
YmxlRmxpcFN0YXRlKGRldmljZSk7Ci0gICAgICAgIGhyID0gZGV2aWNlLT5FbmRTdGF0ZUJsb2Nr
KCZtUHJlRmxpcFN0YXRlKTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikgfHwgaHIgPT0g
RDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgaHIgPT0gRV9PVVRPRk1FTU9SWSk7Ci0KLSAgICAg
ICAgaWYgKFNVQ0NFRURFRChocikpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1QcmVGbGlwU3Rh
dGUtPkNhcHR1cmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIG1GbGlwU3RhdGUgd2lsbCBy
ZWNvcmQgdGhlIHN0YXRlIGZvciB0aGUgc3dhcCBvcGVyYXRpb24uCi0gICAgICAgIGhyID0gZGV2
aWNlLT5CZWdpblN0YXRlQmxvY2soKTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwot
Ci0gICAgICAgIHdyaXRlUmVjb3JkYWJsZUZsaXBTdGF0ZShkZXZpY2UpOwotCi0gICAgICAgIGhy
ID0gZGV2aWNlLT5FbmRTdGF0ZUJsb2NrKCZtRmxpcFN0YXRlKTsKLSAgICAgICAgQVNTRVJUKFNV
Q0NFRURFRChocikgfHwgaHIgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgaHIgPT0gRV9P
VVRPRk1FTU9SWSk7Ci0KLSAgICAgICAgaWYgKEZBSUxFRChocikpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIG1GbGlwU3RhdGUgPSBOVUxMOwotICAgICAgICAgICAgbVByZUZsaXBTdGF0ZS0+UmVs
ZWFzZSgpOwotICAgICAgICAgICAgbVByZUZsaXBTdGF0ZSA9IE5VTEw7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBociA9IG1GbGlwU3RhdGUtPkFwcGx5
KCk7Ci0gICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgaHIgPSBtUHJlRmxpcFN0YXRlLT5DYXB0dXJlKCk7
Ci0gICAgICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKLSAgICAgICAgaHIgPSBtRmxpcFN0YXRl
LT5BcHBseSgpOwotICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7Ci0gICAgfQogCi0gICAg
ZGV2aWNlLT5HZXRSZW5kZXJUYXJnZXQoMCwgJm1QcmVGbGlwQmFja0J1ZmZlcik7Ci0gICAgZGV2
aWNlLT5HZXREZXB0aFN0ZW5jaWxTdXJmYWNlKCZtUHJlRmxpcERlcHRoU3RlbmNpbCk7CisjZGVm
aW5lIGtTdXJmYWNlUHJvcGVydHkgX1RFWFQoIkVnbDo6U3VyZmFjZU93bmVyIikKKyNkZWZpbmUg
a1BhcmVudFduZFByb2MgX1RFWFQoIkVnbDo6U3VyZmFjZVBhcmVudFduZFByb2MiKQogCi0gICAg
ZGV2aWNlLT5TZXRSZW5kZXJUYXJnZXQoMCwgbUJhY2tCdWZmZXIpOwotICAgIGRldmljZS0+U2V0
RGVwdGhTdGVuY2lsU3VyZmFjZShOVUxMKTsKK3N0YXRpYyBMUkVTVUxUIENBTExCQUNLIFN1cmZh
Y2VXaW5kb3dQcm9jKEhXTkQgaHduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd3BhcmFtLCBMUEFS
QU0gbHBhcmFtKQoreworICBpZiAobWVzc2FnZSA9PSBXTV9TSVpFKQorICB7CisgICAgICBTdXJm
YWNlKiBzdXJmID0gcmVpbnRlcnByZXRfY2FzdDxTdXJmYWNlKj4oR2V0UHJvcChod25kLCBrU3Vy
ZmFjZVByb3BlcnR5KSk7CisgICAgICBpZihzdXJmKQorICAgICAgeworICAgICAgICAgIHN1cmYt
PmNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7CisgICAgICB9CisgIH0KKyAgV05EUFJPQyBw
cmV2V25kRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V05EUFJPQyA+KEdldFByb3AoaHduZCwga1Bh
cmVudFduZFByb2MpKTsKKyAgcmV0dXJuIENhbGxXaW5kb3dQcm9jKHByZXZXbmRGdW5jLCBod25k
LCBtZXNzYWdlLCB3cGFyYW0sIGxwYXJhbSk7CiB9CiAKLXZvaWQgU3VyZmFjZTo6cmVzdG9yZVN0
YXRlKElEaXJlY3QzRERldmljZTkgKmRldmljZSkKK3ZvaWQgU3VyZmFjZTo6c3ViY2xhc3NXaW5k
b3coKQogewotICAgIGRldmljZS0+U2V0UmVuZGVyVGFyZ2V0KDAsIG1QcmVGbGlwQmFja0J1ZmZl
cik7Ci0gICAgZGV2aWNlLT5TZXREZXB0aFN0ZW5jaWxTdXJmYWNlKG1QcmVGbGlwRGVwdGhTdGVu
Y2lsKTsKKyAgICBpZiAoIW1XaW5kb3cpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQog
Ci0gICAgaWYgKG1QcmVGbGlwQmFja0J1ZmZlcikKKyAgICBEV09SRCBwcm9jZXNzSWQ7CisgICAg
RFdPUkQgdGhyZWFkSWQgPSBHZXRXaW5kb3dUaHJlYWRQcm9jZXNzSWQobVdpbmRvdywgJnByb2Nl
c3NJZCk7CisgICAgaWYgKHByb2Nlc3NJZCAhPSBHZXRDdXJyZW50UHJvY2Vzc0lkKCkgfHwgdGhy
ZWFkSWQgIT0gR2V0Q3VycmVudFRocmVhZElkKCkpCiAgICAgewotICAgICAgICBtUHJlRmxpcEJh
Y2tCdWZmZXItPlJlbGVhc2UoKTsKLSAgICAgICAgbVByZUZsaXBCYWNrQnVmZmVyID0gTlVMTDsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtUHJlRmxpcERlcHRoU3RlbmNpbCkK
KyAgICBTZXRMYXN0RXJyb3IoMCk7CisgICAgTE9ORyBvbGRXbmRQcm9jID0gU2V0V2luZG93TG9u
ZyhtV2luZG93LCBHV0xfV05EUFJPQywgcmVpbnRlcnByZXRfY2FzdDxMT05HPihTdXJmYWNlV2lu
ZG93UHJvYykpOworICAgIGlmKG9sZFduZFByb2MgPT0gMCAmJiBHZXRMYXN0RXJyb3IoKSAhPSBF
UlJPUl9TVUNDRVNTKQogICAgIHsKLSAgICAgICAgbVByZUZsaXBEZXB0aFN0ZW5jaWwtPlJlbGVh
c2UoKTsKLSAgICAgICAgbVByZUZsaXBEZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgICAgICBtV2lu
ZG93U3ViY2xhc3NlZCA9IGZhbHNlOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbVBy
ZUZsaXBTdGF0ZS0+QXBwbHkoKTsKKyAgICBTZXRQcm9wKG1XaW5kb3csIGtTdXJmYWNlUHJvcGVy
dHksIHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPih0aGlzKSk7CisgICAgU2V0UHJvcChtV2luZG93
LCBrUGFyZW50V25kUHJvYywgcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KG9sZFduZFByb2MpKTsK
KyAgICBtV2luZG93U3ViY2xhc3NlZCA9IHRydWU7CiB9CiAKLS8vIE9uIHRoZSBuZXh0IGZsaXAs
IHRoaXMgd2lsbCBjYXVzZSB0aGUgc3RhdGUgdG8gYmUgcmVjb3JkZWQgZnJvbSBzY3JhdGNoLgot
Ly8gSW4gcGFydGljdWxhciB3ZSBuZWVkIHRvIGRvIHRoaXMgaWYgdGhlIGZsaXAgdGV4dHVyZSBj
aGFuZ2VzLgotdm9pZCBTdXJmYWNlOjpyZWxlYXNlUmVjb3JkZWRTdGF0ZShJRGlyZWN0M0REZXZp
Y2U5ICpkZXZpY2UpCit2b2lkIFN1cmZhY2U6OnVuc3ViY2xhc3NXaW5kb3coKQogewotICAgIGlm
IChtRmxpcFN0YXRlKQorICAgIGlmKCFtV2luZG93U3ViY2xhc3NlZCkKICAgICB7Ci0gICAgICAg
IG1GbGlwU3RhdGUtPlJlbGVhc2UoKTsKLSAgICAgICAgbUZsaXBTdGF0ZSA9IE5VTEw7CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobVByZUZsaXBTdGF0ZSkKKyAgICAvLyB1bi1z
dWJjbGFzcworICAgIExPTkcgcGFyZW50V25kRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TE9ORz4o
R2V0UHJvcChtV2luZG93LCBrUGFyZW50V25kUHJvYykpOworCisgICAgLy8gQ2hlY2sgdGhlIHdp
bmRvd3Byb2MgaXMgc3RpbGwgU3VyZmFjZVdpbmRvd1Byb2MuCisgICAgLy8gSWYgdGhpcyBhc3Nl
cnQgZmFpbHMsIHRoZW4gaXQgaXMgbGlrZWx5IHRoZSBhcHBsaWNhdGlvbiBoYXMgc3ViY2xhc3Nl
ZCB0aGUKKyAgICAvLyBod25kIGFzIHdlbGwgYW5kIGRpZCBub3QgdW5zdWJjbGFzcyBiZWZvcmUg
ZGVzdHJveWluZyBpdHMgRUdMIGNvbnRleHQuIFRoZQorICAgIC8vIGFwcGxpY2F0aW9uIHNob3Vs
ZCBiZSBtb2RpZmllZCB0byBlaXRoZXIgc3ViY2xhc3MgYmVmb3JlIGluaXRpYWxpemluZyB0aGUK
KyAgICAvLyBFR0wgY29udGV4dCwgb3IgdG8gdW5zdWJjbGFzcyBiZWZvcmUgZGVzdHJveWluZyB0
aGUgRUdMIGNvbnRleHQuCisgICAgaWYocGFyZW50V25kRnVuYykKICAgICB7Ci0gICAgICAgIG1Q
cmVGbGlwU3RhdGUtPlJlbGVhc2UoKTsKLSAgICAgICAgbVByZUZsaXBTdGF0ZSA9IE5VTEw7Cisg
ICAgICAgIExPTkcgcHJldlduZEZ1bmMgPSBTZXRXaW5kb3dMb25nKG1XaW5kb3csIEdXTF9XTkRQ
Uk9DLCBwYXJlbnRXbmRGdW5jKTsKKyAgICAgICAgQVNTRVJUKHByZXZXbmRGdW5jID09IHJlaW50
ZXJwcmV0X2Nhc3Q8TE9ORz4oU3VyZmFjZVdpbmRvd1Byb2MpKTsKICAgICB9Ci19Ci0jZGVmaW5l
IGtTdXJmYWNlUHJvcGVydHkgX1RFWFQoIkVnbDo6U3VyZmFjZU93bmVyIikKLSNkZWZpbmUga1Bh
cmVudFduZFByb2MgX1RFWFQoIkVnbDo6U3VyZmFjZVBhcmVudFduZFByb2MiKQotCi1zdGF0aWMg
TFJFU1VMVCBDQUxMQkFDSyBTdXJmYWNlV2luZG93UHJvYyhIV05EIGh3bmQsIFVJTlQgbWVzc2Fn
ZSwgV1BBUkFNIHdwYXJhbSwgTFBBUkFNIGxwYXJhbSkgewotICBpZiAobWVzc2FnZSA9PSBXTV9T
SVpFKSB7Ci0gICAgICBTdXJmYWNlKiBzdXJmID0gcmVpbnRlcnByZXRfY2FzdDxTdXJmYWNlKj4o
R2V0UHJvcChod25kLCBrU3VyZmFjZVByb3BlcnR5KSk7Ci0gICAgICBpZihzdXJmKSB7Ci0gICAg
ICAgIHN1cmYtPmNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7Ci0gICAgICB9Ci0gIH0KLSAg
V05EUFJPQyBwcmV2V25kRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V05EUFJPQyA+KEdldFByb3Ao
aHduZCwga1BhcmVudFduZFByb2MpKTsKLSAgcmV0dXJuIENhbGxXaW5kb3dQcm9jKHByZXZXbmRG
dW5jLCBod25kLCBtZXNzYWdlLCB3cGFyYW0sIGxwYXJhbSk7Ci19CiAKLXZvaWQgU3VyZmFjZTo6
c3ViY2xhc3NXaW5kb3coKQotewotICBTZXRMYXN0RXJyb3IoMCk7Ci0gIExPTkcgb2xkV25kUHJv
YyA9IFNldFdpbmRvd0xvbmcobVdpbmRvdywgR1dMX1dORFBST0MsIHJlaW50ZXJwcmV0X2Nhc3Q8
TE9ORz4oU3VyZmFjZVdpbmRvd1Byb2MpKTsKLSAgaWYob2xkV25kUHJvYyA9PSAwICYmIEdldExh
c3RFcnJvcigpICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICBSZW1vdmVQcm9wKG1XaW5kb3csIGtT
dXJmYWNlUHJvcGVydHkpOworICAgIFJlbW92ZVByb3AobVdpbmRvdywga1BhcmVudFduZFByb2Mp
OwogICAgIG1XaW5kb3dTdWJjbGFzc2VkID0gZmFsc2U7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAg
U2V0UHJvcChtV2luZG93LCBrU3VyZmFjZVByb3BlcnR5LCByZWludGVycHJldF9jYXN0PEhBTkRM
RT4odGhpcykpOwotICBTZXRQcm9wKG1XaW5kb3csIGtQYXJlbnRXbmRQcm9jLCByZWludGVycHJl
dF9jYXN0PEhBTkRMRT4ob2xkV25kUHJvYykpOwotICBtV2luZG93U3ViY2xhc3NlZCA9IHRydWU7
Ci19Ci0KLXZvaWQgU3VyZmFjZTo6dW5zdWJjbGFzc1dpbmRvdygpCi17Ci0gIGlmKCFtV2luZG93
U3ViY2xhc3NlZCkKLSAgICByZXR1cm47Ci0KLSAgLy8gdW4tc3ViY2xhc3MKLSAgTE9ORyBwYXJl
bnRXbmRGdW5jID0gcmVpbnRlcnByZXRfY2FzdDxMT05HPihHZXRQcm9wKG1XaW5kb3csIGtQYXJl
bnRXbmRQcm9jKSk7Ci0KLSAgLy8gQ2hlY2sgdGhlIHdpbmRvd3Byb2MgaXMgc3RpbGwgU3VyZmFj
ZVdpbmRvd1Byb2MuCi0gIC8vIElmIHRoaXMgYXNzZXJ0IGZhaWxzLCB0aGVuIGl0IGlzIGxpa2Vs
eSB0aGUgYXBwbGljYXRpb24gaGFzIHN1YmNsYXNzZWQgdGhlCi0gIC8vIGh3bmQgYXMgd2VsbCBh
bmQgZGlkIG5vdCB1bnN1YmNsYXNzIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBFR0wgY29udGV4dC4g
VGhlCi0gIC8vIGFwcGxpY2F0aW9uIHNob3VsZCBiZSBtb2RpZmllZCB0byBlaXRoZXIgc3ViY2xh
c3MgYmVmb3JlIGluaXRpYWxpemluZyB0aGUKLSAgLy8gRUdMIGNvbnRleHQsIG9yIHRvIHVuc3Vi
Y2xhc3MgYmVmb3JlIGRlc3Ryb3lpbmcgdGhlIEVHTCBjb250ZXh0LgotICBpZihwYXJlbnRXbmRG
dW5jKSB7Ci0gICAgTE9ORyBwcmV2V25kRnVuYyA9IFNldFdpbmRvd0xvbmcobVdpbmRvdywgR1dM
X1dORFBST0MsIHBhcmVudFduZEZ1bmMpOwotICAgIEFTU0VSVChwcmV2V25kRnVuYyA9PSByZWlu
dGVycHJldF9jYXN0PExPTkc+KFN1cmZhY2VXaW5kb3dQcm9jKSk7Ci0gIH0KLQotICBSZW1vdmVQ
cm9wKG1XaW5kb3csIGtTdXJmYWNlUHJvcGVydHkpOwotICBSZW1vdmVQcm9wKG1XaW5kb3csIGtQ
YXJlbnRXbmRQcm9jKTsKLSAgbVdpbmRvd1N1YmNsYXNzZWQgPSBmYWxzZTsKIH0KIAogYm9vbCBT
dXJmYWNlOjpjaGVja0Zvck91dE9mRGF0ZVN3YXBDaGFpbigpCkBAIC00MDIsMzAgKzM4NywxMCBA
QCBEV09SRCBTdXJmYWNlOjpjb252ZXJ0SW50ZXJ2YWwoRUdMaW50IGluCiAgICAgcmV0dXJuIEQz
RFBSRVNFTlRfSU5URVJWQUxfREVGQVVMVDsKIH0KIAotCiBib29sIFN1cmZhY2U6OnN3YXAoKQog
ewogICAgIGlmIChtU3dhcENoYWluKQogICAgIHsKLSAgICAgICAgSURpcmVjdDNERGV2aWNlOSAq
ZGV2aWNlID0gbURpc3BsYXktPmdldERldmljZSgpOwotCi0gICAgICAgIGFwcGx5RmxpcFN0YXRl
KGRldmljZSk7Ci0gICAgICAgIGRldmljZS0+U2V0VGV4dHVyZSgwLCBtRmxpcFRleHR1cmUpOwot
Ci0gICAgICAgIC8vIFJlbmRlciB0aGUgdGV4dHVyZSB1cHNpZGUgZG93biBpbnRvIHRoZSBiYWNr
IGJ1ZmZlcgotICAgICAgICAvLyBUZXhjb29yZHMgYXJlIGNob3NlbiB0byBmbGlwIHRoZSByZW5k
ZXJUYXJnZXQgYWJvdXQgaXRzIFkgYXhpcy4KLSAgICAgICAgZmxvYXQgdyA9IHN0YXRpY19jYXN0
PGZsb2F0PihnZXRXaWR0aCgpKTsKLSAgICAgICAgZmxvYXQgaCA9IHN0YXRpY19jYXN0PGZsb2F0
PihnZXRIZWlnaHQoKSk7Ci0gICAgICAgIGZsb2F0IHF1YWRbNF1bNl0gPSB7ezAgLSAwLjVmLCAw
IC0gMC41ZiwgMC4wZiwgMS4wZiwgMC4wZiwgMS4wZn0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAge3cgLSAwLjVmLCAwIC0gMC41ZiwgMC4wZiwgMS4wZiwgMS4wZiwgMS4wZn0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAge3cgLSAwLjVmLCBoIC0gMC41ZiwgMC4wZiwgMS4wZiwg
MS4wZiwgMC4wZn0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgezAgLSAwLjVmLCBoIC0g
MC41ZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZn19OyAgIC8vIHgsIHksIHosIHJodywgdSwgdgot
Ci0gICAgICAgIG1EaXNwbGF5LT5zdGFydFNjZW5lKCk7Ci0gICAgICAgIGRldmljZS0+RHJhd1By
aW1pdGl2ZVVQKEQzRFBUX1RSSUFOR0xFRkFOLCAyLCBxdWFkLCA2ICogc2l6ZW9mKGZsb2F0KSk7
Ci0KLSAgICAgICAgcmVzdG9yZVN0YXRlKGRldmljZSk7Ci0KICAgICAgICAgbURpc3BsYXktPmVu
ZFNjZW5lKCk7CiAKICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtU3dhcENoYWluLT5QcmVzZW50
KE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIDApOwpAQCAtNDM1LDcgKzQwMCw3IEBAIGJvb2wgU3Vy
ZmFjZTo6c3dhcCgpCiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgZmFs
c2UpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9T
VCkKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCB8fCByZXN1bHQgPT0g
RDNERVJSX0RFVklDRUhVTkcgfHwgcmVzdWx0ID09IEQzREVSUl9ERVZJQ0VSRU1PVkVEKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgZmFsc2Up
OwogICAgICAgICB9CkBAIC00NjAsMTQgKzQyNSwxMiBAQCBFR0xpbnQgU3VyZmFjZTo6Z2V0SGVp
Z2h0KCkgY29uc3QKIAogSURpcmVjdDNEU3VyZmFjZTkgKlN1cmZhY2U6OmdldFJlbmRlclRhcmdl
dCgpCiB7Ci0gICAgSURpcmVjdDNEU3VyZmFjZTkgKnRleHR1cmVTdXJmYWNlID0gTlVMTDsKLQot
ICAgIGlmIChtRmxpcFRleHR1cmUpCisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCiAgICAgewotICAg
ICAgICBtRmxpcFRleHR1cmUtPkdldFN1cmZhY2VMZXZlbCgwLCAmdGV4dHVyZVN1cmZhY2UpOwor
ICAgICAgICBtUmVuZGVyVGFyZ2V0LT5BZGRSZWYoKTsKICAgICB9CiAKLSAgICByZXR1cm4gdGV4
dHVyZVN1cmZhY2U7CisgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXQ7CiB9CiAKIElEaXJlY3QzRFN1
cmZhY2U5ICpTdXJmYWNlOjpnZXREZXB0aFN0ZW5jaWwoKQpAQCAtNDgwLDYgKzQ0MywxNiBAQCBJ
RGlyZWN0M0RTdXJmYWNlOSAqU3VyZmFjZTo6Z2V0RGVwdGhTdGVuCiAgICAgcmV0dXJuIG1EZXB0
aFN0ZW5jaWw7CiB9CiAKK0lEaXJlY3QzRFRleHR1cmU5ICpTdXJmYWNlOjpnZXRPZmZzY3JlZW5U
ZXh0dXJlKCkKK3sKKyAgICBpZiAobU9mZnNjcmVlblRleHR1cmUpCisgICAgeworICAgICAgICBt
T2Zmc2NyZWVuVGV4dHVyZS0+QWRkUmVmKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1PZmZzY3Jl
ZW5UZXh0dXJlOworfQorCiB2b2lkIFN1cmZhY2U6OnNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50
ZXJ2YWwpCiB7CiAgICAgaWYgKG1Td2FwSW50ZXJ2YWwgPT0gaW50ZXJ2YWwpCkBAIC00OTQsNCAr
NDY3LDI5IEBAIHZvaWQgU3VyZmFjZTo6c2V0U3dhcEludGVydmFsKEVHTGludCBpbnQKICAgICBt
UHJlc2VudEludGVydmFsID0gY29udmVydEludGVydmFsKG1Td2FwSW50ZXJ2YWwpOwogICAgIG1Q
cmVzZW50SW50ZXJ2YWxEaXJ0eSA9IHRydWU7CiB9CisKK0VHTGVudW0gU3VyZmFjZTo6Z2V0VGV4
dHVyZUZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlRm9ybWF0OworfQorCitF
R0xlbnVtIFN1cmZhY2U6OmdldFRleHR1cmVUYXJnZXQoKSBjb25zdAoreworICAgIHJldHVybiBt
VGV4dHVyZVRhcmdldDsKK30KKwordm9pZCBTdXJmYWNlOjpzZXRCb3VuZFRleHR1cmUoZ2w6OlRl
eHR1cmUyRCAqdGV4dHVyZSkKK3sKKyAgICBtVGV4dHVyZSA9IHRleHR1cmU7Cit9CisKK2dsOjpU
ZXh0dXJlMkQgKlN1cmZhY2U6OmdldEJvdW5kVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1UZXh0dXJlOworfQorCitEM0RGT1JNQVQgU3VyZmFjZTo6Z2V0Rm9ybWF0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbUNvbmZpZy0+bVJlbmRlclRhcmdldEZvcm1hdDsKK30KIH0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvU3VyZmFjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvU3VyZmFjZS5oCShyZXZpc2lvbiA4
OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvU3VyZmFjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNyw2ICsxNywxMSBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xl
dXRpbHMuaCIKIAorbmFtZXNwYWNlIGdsCit7CitjbGFzcyBUZXh0dXJlMkQ7Cit9CisKIG5hbWVz
cGFjZSBlZ2wKIHsKIGNsYXNzIERpc3BsYXk7CkBAIC0yNiwxMSArMzEsMTMgQEAgY2xhc3MgU3Vy
ZmFjZQogewogICBwdWJsaWM6CiAgICAgU3VyZmFjZShEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlnLCBIV05EIHdpbmRvdyk7CisgICAgU3VyZmFjZShEaXNwbGF5ICpk
aXNwbGF5LCBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUsIEVH
TGludCB3aWR0aCwgRUdMaW50IGhlaWdodCwgRUdMZW51bSB0ZXh0dXJlRm9ybWF0LCBFR0xlbnVt
IHRleHR1cmVUYXJnZXQpOwogCiAgICAgflN1cmZhY2UoKTsKIAorICAgIGJvb2wgaW5pdGlhbGl6
ZSgpOwogICAgIHZvaWQgcmVsZWFzZSgpOwotICAgIHZvaWQgcmVzZXRTd2FwQ2hhaW4oKTsKKyAg
ICBib29sIHJlc2V0U3dhcENoYWluKCk7CiAKICAgICBIV05EIGdldFdpbmRvd0hhbmRsZSgpOwog
ICAgIGJvb2wgc3dhcCgpOwpAQCAtNDAsMzMgKzQ3LDM2IEBAIGNsYXNzIFN1cmZhY2UKIAogICAg
IHZpcnR1YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdldFJlbmRlclRhcmdldCgpOwogICAgIHZpcnR1
YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdldERlcHRoU3RlbmNpbCgpOworICAgIHZpcnR1YWwgSURp
cmVjdDNEVGV4dHVyZTkgKmdldE9mZnNjcmVlblRleHR1cmUoKTsKKworICAgIEhBTkRMRSBnZXRT
aGFyZUhhbmRsZSgpIHsgcmV0dXJuIG1TaGFyZUhhbmRsZTsgfQogCiAgICAgdm9pZCBzZXRTd2Fw
SW50ZXJ2YWwoRUdMaW50IGludGVydmFsKTsKICAgICBib29sIGNoZWNrRm9yT3V0T2ZEYXRlU3dh
cENoYWluKCk7ICAgLy8gUmV0dXJucyB0cnVlIGlmIHN3YXBjaGFpbiBjaGFuZ2VkIGR1ZSB0byBy
ZXNpemUgb3IgaW50ZXJ2YWwgdXBkYXRlCiAKKyAgICB2aXJ0dWFsIEVHTGVudW0gZ2V0VGV4dHVy
ZUZvcm1hdCgpIGNvbnN0OworICAgIHZpcnR1YWwgRUdMZW51bSBnZXRUZXh0dXJlVGFyZ2V0KCkg
Y29uc3Q7CisgICAgdmlydHVhbCBEM0RGT1JNQVQgZ2V0Rm9ybWF0KCkgY29uc3Q7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Qm91bmRUZXh0dXJlKGdsOjpUZXh0dXJlMkQgKnRleHR1cmUpOworICAg
IHZpcnR1YWwgZ2w6OlRleHR1cmUyRCAqZ2V0Qm91bmRUZXh0dXJlKCkgY29uc3Q7CisKIHByaXZh
dGU6CiAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFN1cmZhY2UpOwogCiAgICAgRGlzcGxh
eSAqY29uc3QgbURpc3BsYXk7CiAgICAgSURpcmVjdDNEU3dhcENoYWluOSAqbVN3YXBDaGFpbjsK
LSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbUJhY2tCdWZmZXI7CiAgICAgSURpcmVjdDNEU3VyZmFj
ZTkgKm1EZXB0aFN0ZW5jaWw7Ci0gICAgSURpcmVjdDNEVGV4dHVyZTkgKm1GbGlwVGV4dHVyZTsK
KyAgICBJRGlyZWN0M0RTdXJmYWNlOSogbVJlbmRlclRhcmdldDsKKyAgICBJRGlyZWN0M0RUZXh0
dXJlOSogbU9mZnNjcmVlblRleHR1cmU7CisKKyAgICBIQU5ETEUgbVNoYXJlSGFuZGxlOwogCiAg
ICAgdm9pZCBzdWJjbGFzc1dpbmRvdygpOwogICAgIHZvaWQgdW5zdWJjbGFzc1dpbmRvdygpOwot
ICAgIHZvaWQgcmVzZXRTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZm
ZXJIZWlnaHQpOworICAgIGJvb2wgcmVzZXRTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwg
aW50IGJhY2tidWZmZXJIZWlnaHQpOwogICAgIHN0YXRpYyBEV09SRCBjb252ZXJ0SW50ZXJ2YWwo
RUdMaW50IGludGVydmFsKTsKIAotICAgIHZvaWQgYXBwbHlGbGlwU3RhdGUoSURpcmVjdDNERGV2
aWNlOSAqZGV2aWNlKTsKLSAgICB2b2lkIHJlc3RvcmVTdGF0ZShJRGlyZWN0M0REZXZpY2U5ICpk
ZXZpY2UpOwotICAgIHZvaWQgd3JpdGVSZWNvcmRhYmxlRmxpcFN0YXRlKElEaXJlY3QzRERldmlj
ZTkgKmRldmljZSk7Ci0gICAgdm9pZCByZWxlYXNlUmVjb3JkZWRTdGF0ZShJRGlyZWN0M0REZXZp
Y2U5ICpkZXZpY2UpOwotICAgIElEaXJlY3QzRFN0YXRlQmxvY2s5ICptRmxpcFN0YXRlOwotICAg
IElEaXJlY3QzRFN0YXRlQmxvY2s5ICptUHJlRmxpcFN0YXRlOwotICAgIElEaXJlY3QzRFN1cmZh
Y2U5ICptUHJlRmxpcEJhY2tCdWZmZXI7Ci0gICAgSURpcmVjdDNEU3VyZmFjZTkgKm1QcmVGbGlw
RGVwdGhTdGVuY2lsOwotCiAgICAgY29uc3QgSFdORCBtV2luZG93OyAgICAgICAgICAgIC8vIFdp
bmRvdyB0aGF0IHRoZSBzdXJmYWNlIGlzIGNyZWF0ZWQgZm9yLgogICAgIGJvb2wgbVdpbmRvd1N1
YmNsYXNzZWQ7ICAgICAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB3ZSBzdWNjZXNzZnVsbHkgc3Vi
Y2xhc3NlZCBtV2luZG93IGZvciBXTV9SRVNJWkUgaG9va2luZwogICAgIGNvbnN0IGVnbDo6Q29u
ZmlnICptQ29uZmlnOyAgICAvLyBFR0wgY29uZmlnIHN1cmZhY2Ugd2FzIGNyZWF0ZWQgd2l0aApA
QCAtODEsMTMgKzkxLDE0IEBAIHByaXZhdGU6CiAgICAgRUdMaW50IG1QaXhlbEFzcGVjdFJhdGlv
OyAgICAgIC8vIERpc3BsYXkgYXNwZWN0IHJhdGlvCiAgICAgRUdMZW51bSBtUmVuZGVyQnVmZmVy
OyAgICAgICAgIC8vIFJlbmRlciBidWZmZXIKICAgICBFR0xlbnVtIG1Td2FwQmVoYXZpb3I7ICAg
ICAgICAgLy8gQnVmZmVyIHN3YXAgYmVoYXZpb3IKLS8vICBFR0xlbnVtIHRleHR1cmVGb3JtYXQ7
ICAgICAgICAgLy8gRm9ybWF0IG9mIHRleHR1cmU6IFJHQiwgUkdCQSwgb3Igbm8gdGV4dHVyZQot
Ly8gIEVHTGVudW0gdGV4dHVyZVRhcmdldDsgICAgICAgICAvLyBUeXBlIG9mIHRleHR1cmU6IDJE
IG9yIG5vIHRleHR1cmUKKyAgICBFR0xlbnVtIG1UZXh0dXJlRm9ybWF0OyAgICAgICAgLy8gRm9y
bWF0IG9mIHRleHR1cmU6IFJHQiwgUkdCQSwgb3Igbm8gdGV4dHVyZQorICAgIEVHTGVudW0gbVRl
eHR1cmVUYXJnZXQ7ICAgICAgICAvLyBUeXBlIG9mIHRleHR1cmU6IDJEIG9yIG5vIHRleHR1cmUK
IC8vICBFR0xlbnVtIHZnQWxwaGFGb3JtYXQ7ICAgICAgICAgLy8gQWxwaGEgZm9ybWF0IGZvciBP
cGVuVkcKIC8vICBFR0xlbnVtIHZnQ29sb3JTcGFjZTsgICAgICAgICAgLy8gQ29sb3Igc3BhY2Ug
Zm9yIE9wZW5WRwogICAgIEVHTGludCBtU3dhcEludGVydmFsOwogICAgIERXT1JEIG1QcmVzZW50
SW50ZXJ2YWw7CiAgICAgYm9vbCBtUHJlc2VudEludGVydmFsRGlydHk7CisgICAgZ2w6OlRleHR1
cmUyRCAqbVRleHR1cmU7CiB9OwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliRUdML2xpYkVHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSwx
MyArOSwxNSBAQAogI2luY2x1ZGUgPGV4Y2VwdGlvbj4KIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgorI2luY2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgogCiAjaW5jbHVkZSAibGli
RUdML21haW4uaCIKICNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgogCiAKLWJvb2wgdmFsaWRh
dGUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQorYm9vbCB2YWxpZGF0ZURpc3BsYXkoZWdsOjpEaXNw
bGF5ICpkaXNwbGF5KQogewogICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQogICAg
IHsKQEAgLTMwLDkgKzMyLDkgQEAgYm9vbCB2YWxpZGF0ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgdmFsaWRhdGUoZWdsOjpEaXNwbGF5ICpkaXNw
bGF5LCBFR0xDb25maWcgY29uZmlnKQorYm9vbCB2YWxpZGF0ZUNvbmZpZyhlZ2w6OkRpc3BsYXkg
KmRpc3BsYXksIEVHTENvbmZpZyBjb25maWcpCiB7Ci0gICAgaWYgKCF2YWxpZGF0ZShkaXNwbGF5
KSkKKyAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC00NSw5ICs0Nyw5IEBAIGJvb2wgdmFsaWRhdGUoZWdsOjpE
aXNwbGF5ICpkaXNwbGF5LCBFR0wKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCB2YWxpZGF0
ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGdsOjpDb250ZXh0ICpjb250ZXh0KQorYm9vbCB2YWxp
ZGF0ZUNvbnRleHQoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBnbDo6Q29udGV4dCAqY29udGV4dCkK
IHsKLSAgICBpZiAoIXZhbGlkYXRlKGRpc3BsYXkpKQorICAgIGlmICghdmFsaWRhdGVEaXNwbGF5
KGRpc3BsYXkpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTYwLDkg
KzYyLDkgQEAgYm9vbCB2YWxpZGF0ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGdsOgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIHZhbGlkYXRlKGVnbDo6RGlzcGxheSAqZGlzcGxheSwgZWds
OjpTdXJmYWNlICpzdXJmYWNlKQorYm9vbCB2YWxpZGF0ZVN1cmZhY2UoZWdsOjpEaXNwbGF5ICpk
aXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCiB7Ci0gICAgaWYgKCF2YWxpZGF0ZShkaXNw
bGF5KSkKKyAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSkKICAgICB7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC03OSw3ICs4MSw3IEBAIGV4dGVybiAiQyIKIHsKIEVH
TGludCBfX3N0ZGNhbGwgZWdsR2V0RXJyb3Iodm9pZCkKIHsKLSAgICBUUkFDRSgiKCkiKTsKKyAg
ICBFVkVOVCgiKCkiKTsKIAogICAgIEVHTGludCBlcnJvciA9IGVnbDo6Z2V0Q3VycmVudEVycm9y
KCk7CiAKQEAgLTkzLDcgKzk1LDcgQEAgRUdMaW50IF9fc3RkY2FsbCBlZ2xHZXRFcnJvcih2b2lk
KQogCiBFR0xEaXNwbGF5IF9fc3RkY2FsbCBlZ2xHZXREaXNwbGF5KEVHTE5hdGl2ZURpc3BsYXlU
eXBlIGRpc3BsYXlfaWQpCiB7Ci0gICAgVFJBQ0UoIihFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNw
bGF5X2lkID0gMHglMC44cCkiLCBkaXNwbGF5X2lkKTsKKyAgICBFVkVOVCgiKEVHTE5hdGl2ZURp
c3BsYXlUeXBlIGRpc3BsYXlfaWQgPSAweCUwLjhwKSIsIGRpc3BsYXlfaWQpOwogCiAgICAgdHJ5
CiAgICAgewpAQCAtMTIwLDcgKzEyMiw3IEBAIEVHTERpc3BsYXkgX19zdGRjYWxsIGVnbEdldERp
c3BsYXkoRUdMTmEKIAogRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsSW5pdGlhbGl6ZShFR0xEaXNw
bGF5IGRweSwgRUdMaW50ICptYWpvciwgRUdMaW50ICptaW5vcikKIHsKLSAgICBUUkFDRSgiKEVH
TERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMaW50ICptYWpvciA9IDB4JTAuOHAsIEVHTGludCAq
bWlub3IgPSAweCUwLjhwKSIsCisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAs
IEVHTGludCAqbWFqb3IgPSAweCUwLjhwLCBFR0xpbnQgKm1pbm9yID0gMHglMC44cCkiLAogICAg
ICAgICAgIGRweSwgbWFqb3IsIG1pbm9yKTsKIAogICAgIHRyeQpAQCAtMTUyLDcgKzE1NCw3IEBA
IEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbEluaXRpYWxpemUoRUdMRGkKIAogRUdMQm9vbGVhbiBf
X3N0ZGNhbGwgZWdsVGVybWluYXRlKEVHTERpc3BsYXkgZHB5KQogewotICAgIFRSQUNFKCIoRUdM
RGlzcGxheSBkcHkgPSAweCUwLjhwKSIsIGRweSk7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRw
eSA9IDB4JTAuOHApIiwgZHB5KTsKIAogICAgIHRyeQogICAgIHsKQEAgLTE3NywxMyArMTc5LDEz
IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFRlcm1pbmF0ZShFR0xEaXMKIAogY29uc3QgY2hh
ciAqX19zdGRjYWxsIGVnbFF1ZXJ5U3RyaW5nKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgbmFtZSkK
IHsKLSAgICBUUkFDRSgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMaW50IG5hbWUgPSAl
ZCkiLCBkcHksIG5hbWUpOworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBF
R0xpbnQgbmFtZSA9ICVkKSIsIGRweSwgbmFtZSk7CiAKICAgICB0cnkKICAgICB7CiAgICAgICAg
IGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7
CiAKLSAgICAgICAgaWYgKCF2YWxpZGF0ZShkaXNwbGF5KSkKKyAgICAgICAgaWYgKCF2YWxpZGF0
ZURpc3BsYXkoZGlzcGxheSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwog
ICAgICAgICB9CkBAIC0xOTMsMTEgKzE5NSwxMSBAQCBjb25zdCBjaGFyICpfX3N0ZGNhbGwgZWds
UXVlcnlTdHJpbmcoRUdMCiAgICAgICAgICAgY2FzZSBFR0xfQ0xJRU5UX0FQSVM6CiAgICAgICAg
ICAgICByZXR1cm4gc3VjY2VzcygiT3BlbkdMX0VTIik7CiAgICAgICAgICAgY2FzZSBFR0xfRVhU
RU5TSU9OUzoKLSAgICAgICAgICAgIHJldHVybiBzdWNjZXNzKCIiKTsKKyAgICAgICAgICAgIHJl
dHVybiBkaXNwbGF5LT5nZXRFeHRlbnNpb25TdHJpbmcoKTsKICAgICAgICAgICBjYXNlIEVHTF9W
RU5ET1I6Ci0gICAgICAgICAgICByZXR1cm4gc3VjY2VzcygiVHJhbnNHYW1pbmcgSW5jLiIpOwor
ICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoIkdvb2dsZSBJbmMuIik7CiAgICAgICAgICAgY2Fz
ZSBFR0xfVkVSU0lPTjoKLSAgICAgICAgICAgIHJldHVybiBzdWNjZXNzKCIxLjQgKGdpdC1kZXZl
bCAiX19EQVRFX18iICIgX19USU1FX18iKSIpOworICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3Mo
IjEuNCAoQU5HTEUgIlZFUlNJT05fU1RSSU5HIikiKTsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgKGNvbnN0IGNoYXIqKU5VTEwpOwpAQCAtMjEy
LDcgKzIxNCw3IEBAIGNvbnN0IGNoYXIgKl9fc3RkY2FsbCBlZ2xRdWVyeVN0cmluZyhFR0wKIAog
RUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsR2V0Q29uZmlncyhFR0xEaXNwbGF5IGRweSwgRUdMQ29u
ZmlnICpjb25maWdzLCBFR0xpbnQgY29uZmlnX3NpemUsIEVHTGludCAqbnVtX2NvbmZpZykKIHsK
LSAgICBUUkFDRSgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmlnICpjb25maWdz
ID0gMHglMC44cCwgIgorICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xD
b25maWcgKmNvbmZpZ3MgPSAweCUwLjhwLCAiCiAgICAgICAgICAgIkVHTGludCBjb25maWdfc2l6
ZSA9ICVkLCBFR0xpbnQgKm51bV9jb25maWcgPSAweCUwLjhwKSIsCiAgICAgICAgICAgZHB5LCBj
b25maWdzLCBjb25maWdfc2l6ZSwgbnVtX2NvbmZpZyk7CiAKQEAgLTIyMCw3ICsyMjIsNyBAQCBF
R0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xHZXRDb25maWdzKEVHTERpCiAgICAgewogICAgICAgICBl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOwog
Ci0gICAgICAgIGlmICghdmFsaWRhdGUoZGlzcGxheSkpCisgICAgICAgIGlmICghdmFsaWRhdGVE
aXNwbGF5KGRpc3BsYXkpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNF
OwogICAgICAgICB9CkBAIC0yNDksNyArMjUxLDcgQEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWds
R2V0Q29uZmlncyhFR0xEaQogCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xDaG9vc2VDb25maWco
RUdMRGlzcGxheSBkcHksIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QsIEVHTENvbmZpZyAqY29u
ZmlncywgRUdMaW50IGNvbmZpZ19zaXplLCBFR0xpbnQgKm51bV9jb25maWcpCiB7Ci0gICAgVFJB
Q0UoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3Qg
PSAweCUwLjhwLCAiCisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIGNvbnN0
IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwLCAiCiAgICAgICAgICAgIkVHTENvbmZpZyAq
Y29uZmlncyA9IDB4JTAuOHAsIEVHTGludCBjb25maWdfc2l6ZSA9ICVkLCBFR0xpbnQgKm51bV9j
b25maWcgPSAweCUwLjhwKSIsCiAgICAgICAgICAgZHB5LCBhdHRyaWJfbGlzdCwgY29uZmlncywg
Y29uZmlnX3NpemUsIG51bV9jb25maWcpOwogCkBAIC0yNTcsNyArMjU5LDcgQEAgRUdMQm9vbGVh
biBfX3N0ZGNhbGwgZWdsQ2hvb3NlQ29uZmlnKEVHTAogICAgIHsKICAgICAgICAgZWdsOjpEaXNw
bGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKIAotICAgICAg
ICBpZiAoIXZhbGlkYXRlKGRpc3BsYXkpKQorICAgICAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShk
aXNwbGF5KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICAg
ICAgfQpAQCAtMjg4LDE0ICsyOTAsMTQgQEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsQ2hvb3Nl
Q29uZmlnKEVHTAogCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xHZXRDb25maWdBdHRyaWIoRUdM
RGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAq
dmFsdWUpCiB7Ci0gICAgVFJBQ0UoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbmZp
ZyBjb25maWcgPSAweCUwLjhwLCBFR0xpbnQgYXR0cmlidXRlID0gJWQsIEVHTGludCAqdmFsdWUg
PSAweCUwLjhwKSIsCisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENv
bmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xpbnQgYXR0cmlidXRlID0gJWQsIEVHTGludCAqdmFs
dWUgPSAweCUwLjhwKSIsCiAgICAgICAgICAgZHB5LCBjb25maWcsIGF0dHJpYnV0ZSwgdmFsdWUp
OwogCiAgICAgdHJ5CiAgICAgewogICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0
aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOwogCi0gICAgICAgIGlmICghdmFsaWRhdGUoZGlz
cGxheSwgY29uZmlnKSkKKyAgICAgICAgaWYgKCF2YWxpZGF0ZUNvbmZpZyhkaXNwbGF5LCBjb25m
aWcpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgICAgICB9
CkBAIC0zMTcsMTQgKzMxOSwxNCBAQCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xHZXRDb25maWdB
dHRyaWIoCiAKIEVHTFN1cmZhY2UgX19zdGRjYWxsIGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoRUdM
RGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luLCBj
b25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KQogewotICAgIFRSQUNFKCIoRUdMRGlzcGxheSBkcHkg
PSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgRUdMTmF0aXZlV2luZG93VHlw
ZSB3aW4gPSAweCUwLjhwLCAiCisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAs
IEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbiA9IDB4
JTAuOHAsICIKICAgICAgICAgICAiY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCA9IDB4JTAuOHAp
IiwgZHB5LCBjb25maWcsIHdpbiwgYXR0cmliX2xpc3QpOwogCiAgICAgdHJ5CiAgICAgewogICAg
ICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihk
cHkpOwogCi0gICAgICAgIGlmICghdmFsaWRhdGUoZGlzcGxheSwgY29uZmlnKSkKKyAgICAgICAg
aWYgKCF2YWxpZGF0ZUNvbmZpZyhkaXNwbGF5LCBjb25maWcpKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CiAgICAgICAgIH0KQEAgLTMzNiw0MyArMzM4LDcg
QEAgRUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlV2luZG93U3VyZgogICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEVHTF9CQURfTkFUSVZFX1dJTkRPVywgRUdMX05PX1NVUkZBQ0UpOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKGF0dHJpYl9saXN0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICB3aGlsZSAoKmF0dHJpYl9saXN0ICE9IEVHTF9OT05FKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHN3aXRjaCAoYXR0cmliX2xpc3RbMF0pCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgY2FzZSBFR0xfUkVOREVSX0JVRkZFUjoKLSAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChhdHRyaWJfbGlzdFsxXSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRUdMX0JBQ0tfQlVGRkVSOgotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfU0lOR0xFX0JVRkZF
UjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01BVENILCBF
R0xfTk9fU1VSRkFDRSk7ICAgLy8gUmVuZGVyaW5nIGRpcmVjdGx5IHRvIGZyb250IGJ1ZmZlciBu
b3Qgc3VwcG9ydGVkCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZB
Q0UpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfVkdfQ09MT1JTUEFDRToKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9OT19TVVJGQUNFKTsKLSAgICAg
ICAgICAgICAgICAgIGNhc2UgRUdMX1ZHX0FMUEhBX0ZPUk1BVDoKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9OT19TVVJGQUNFKTsKLSAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xf
QkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGF0dHJpYl9saXN0ICs9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoZGlzcGxheS0+aGFzRXhpc3RpbmdXaW5kb3dTdXJmYWNlKHdpbmRvdykp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xf
Tk9fU1VSRkFDRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSAo
RUdMU3VyZmFjZSlkaXNwbGF5LT5jcmVhdGVXaW5kb3dTdXJmYWNlKHdpbmRvdywgY29uZmlnKTsK
LQotICAgICAgICByZXR1cm4gc3VjY2VzcyhzdXJmYWNlKTsKKyAgICAgICAgcmV0dXJuIGRpc3Bs
YXktPmNyZWF0ZVdpbmRvd1N1cmZhY2Uod2luZG93LCBjb25maWcsIGF0dHJpYl9saXN0KTsKICAg
ICB9CiAgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQogICAgIHsKQEAgLTM4NCwyMSArMzUwLDE5
IEBAIEVHTFN1cmZhY2UgX19zdGRjYWxsIGVnbENyZWF0ZVdpbmRvd1N1cmYKIAogRUdMU3VyZmFj
ZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENv
bmZpZyBjb25maWcsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpCiB7Ci0gICAgVFJBQ0UoIihF
R0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBjb25z
dCBFR0xpbnQgKmF0dHJpYl9saXN0ID0gMHglMC44cCkiLAorICAgIEVWRU5UKCIoRUdMRGlzcGxh
eSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgY29uc3QgRUdMaW50
ICphdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwKICAgICAgICAgICBkcHksIGNvbmZpZywgYXR0cmli
X2xpc3QpOwogCiAgICAgdHJ5CiAgICAgewogICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkg
PSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOwogCi0gICAgICAgIGlmICghdmFsaWRh
dGUoZGlzcGxheSwgY29uZmlnKSkKKyAgICAgICAgaWYgKCF2YWxpZGF0ZUNvbmZpZyhkaXNwbGF5
LCBjb25maWcpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7
CiAgICAgICAgIH0KIAotICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKLQotICAg
ICAgICByZXR1cm4gc3VjY2VzcyhFR0xfTk9fRElTUExBWSk7CisgICAgICAgIHJldHVybiBkaXNw
bGF5LT5jcmVhdGVPZmZzY3JlZW5TdXJmYWNlKGNvbmZpZywgTlVMTCwgYXR0cmliX2xpc3QpOwog
ICAgIH0KICAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCiAgICAgewpAQCAtNDEwLDIxICszNzQs
MjEgQEAgRUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlUGJ1ZmZlclN1cgogCiBFR0xTdXJm
YWNlIF9fc3RkY2FsbCBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xD
b25maWcgY29uZmlnLCBFR0xOYXRpdmVQaXhtYXBUeXBlIHBpeG1hcCwgY29uc3QgRUdMaW50ICph
dHRyaWJfbGlzdCkKIHsKLSAgICBUUkFDRSgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdM
Q29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIEVHTE5hdGl2ZVBpeG1hcFR5cGUgcGl4bWFwID0gMHgl
MC44cCwgIgorICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcg
Y29uZmlnID0gMHglMC44cCwgRUdMTmF0aXZlUGl4bWFwVHlwZSBwaXhtYXAgPSAweCUwLjhwLCAi
CiAgICAgICAgICAgImNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsIGRweSwg
Y29uZmlnLCBwaXhtYXAsIGF0dHJpYl9saXN0KTsKIAogICAgIHRyeQogICAgIHsKICAgICAgICAg
ZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsK
IAotICAgICAgICBpZiAoIXZhbGlkYXRlKGRpc3BsYXksIGNvbmZpZykpCisgICAgICAgIGlmICgh
dmFsaWRhdGVDb25maWcoZGlzcGxheSwgY29uZmlnKSkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIEVHTF9OT19TVVJGQUNFOwogICAgICAgICB9CiAKICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOyAgIC8vIEZJWE1FCiAKLSAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoRUdMX05PX0RJU1BMQVkp
OworICAgICAgICByZXR1cm4gc3VjY2VzcyhFR0xfTk9fU1VSRkFDRSk7CiAgICAgfQogICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKICAgICB7CkBAIC00MzYsMTMgKzQwMCwxNCBAQCBFR0xTdXJm
YWNlIF9fc3RkY2FsbCBlZ2xDcmVhdGVQaXhtYXBTdXJmCiAKIEVHTEJvb2xlYW4gX19zdGRjYWxs
IGVnbERlc3Ryb3lTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UpCiB7
Ci0gICAgVFJBQ0UoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFj
ZSA9IDB4JTAuOHApIiwgZHB5LCBzdXJmYWNlKTsKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5
ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCkiLCBkcHksIHN1cmZhY2Up
OwogCiAgICAgdHJ5CiAgICAgewogICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0
aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1
cmZhY2UgPSBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihzdXJmYWNlKTsKIAotICAgICAgICBp
ZiAoIXZhbGlkYXRlKGRpc3BsYXkpKQorICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFjZShkaXNw
bGF5LCBlZ2xTdXJmYWNlKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxT
RTsKICAgICAgICAgfQpAQCAtNDY2LDE0ICs0MzEsMTUgQEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwg
ZWdsRGVzdHJveVN1cmZhY2UoRQogCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xRdWVyeVN1cmZh
Y2UoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwg
RUdMaW50ICp2YWx1ZSkKIHsKLSAgICBUUkFDRSgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwg
RUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMaW50IGF0dHJpYnV0ZSA9ICVkLCBFR0xp
bnQgKnZhbHVlID0gMHglMC44cCkiLAorICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUw
LjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0xpbnQgYXR0cmlidXRlID0gJWQs
IEVHTGludCAqdmFsdWUgPSAweCUwLjhwKSIsCiAgICAgICAgICAgZHB5LCBzdXJmYWNlLCBhdHRy
aWJ1dGUsIHZhbHVlKTsKIAogICAgIHRyeQogICAgIHsKICAgICAgICAgZWdsOjpEaXNwbGF5ICpk
aXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAgICAgZWdsOjpT
dXJmYWNlICplZ2xTdXJmYWNlID0gKGVnbDo6U3VyZmFjZSopc3VyZmFjZTsKIAotICAgICAgICBp
ZiAoIXZhbGlkYXRlKGRpc3BsYXkpKQorICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFjZShkaXNw
bGF5LCBlZ2xTdXJmYWNlKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxT
RTsKICAgICAgICAgfQpAQCAtNDgzLDggKzQ0OSw2IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVn
bFF1ZXJ5U3VyZmFjZShFR0wKICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX1NVUkZB
Q0UsIEVHTF9GQUxTRSk7CiAgICAgICAgIH0KIAotICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1
cmZhY2UgPSAoZWdsOjpTdXJmYWNlKilzdXJmYWNlOwotCiAgICAgICAgIHN3aXRjaCAoYXR0cmli
dXRlKQogICAgICAgICB7CiAgICAgICAgICAgY2FzZSBFR0xfVkdfQUxQSEFfRk9STUFUOgpAQCAt
NTQ5LDkgKzUxMyw0OCBAQCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xRdWVyeVN1cmZhY2UoRUdM
CiAgICAgcmV0dXJuIEVHTF9GQUxTRTsKIH0KIAorRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsUXVl
cnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2Us
IEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkKK3sKKyAgICBUUkFDRSgiKEVHTERpc3Bs
YXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMaW50IGF0
dHJpYnV0ZSA9ICVkLCB2b2lkICoqdmFsdWUgPSAweCUwLjhwKSIsCisgICAgICAgICAgZHB5LCBz
dXJmYWNlLCBhdHRyaWJ1dGUsIHZhbHVlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWds
OjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAg
ICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gKGVnbDo6U3VyZmFjZSopc3VyZmFjZTsK
KworICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBFR0xfRkFMU0UpOworICAgICAgICB9CisK
KyAgICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEVH
TF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEU6CisgICAgICAgICAgICAqdmFsdWUg
PSAodm9pZCopIGVnbFN1cmZhY2UtPmdldFNoYXJlSGFuZGxlKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURf
QVRUUklCVVRFLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN1Y2Nl
c3MoRUdMX1RSVUUpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9CisK
KyAgICByZXR1cm4gRUdMX0ZBTFNFOworfQorCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xCaW5k
QVBJKEVHTGVudW0gYXBpKQogewotICAgIFRSQUNFKCIoRUdMZW51bSBhcGkgPSAweCVYKSIsIGFw
aSk7CisgICAgRVZFTlQoIihFR0xlbnVtIGFwaSA9IDB4JVgpIiwgYXBpKTsKIAogICAgIHRyeQog
ICAgIHsKQEAgLTU4MCw3ICs1ODMsNyBAQCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xCaW5kQVBJ
KEVHTGVudW0gCiAKIEVHTGVudW0gX19zdGRjYWxsIGVnbFF1ZXJ5QVBJKHZvaWQpCiB7Ci0gICAg
VFJBQ0UoIigpIik7CisgICAgRVZFTlQoIigpIik7CiAKICAgICB0cnkKICAgICB7CkBAIC01OTgs
NyArNjAxLDcgQEAgRUdMZW51bSBfX3N0ZGNhbGwgZWdsUXVlcnlBUEkodm9pZCkKIAogRUdMQm9v
bGVhbiBfX3N0ZGNhbGwgZWdsV2FpdENsaWVudCh2b2lkKQogewotICAgIFRSQUNFKCIoKSIpOwor
ICAgIEVWRU5UKCIoKSIpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtNjE2LDcgKzYxOSw3IEBAIEVH
TEJvb2xlYW4gX19zdGRjYWxsIGVnbFdhaXRDbGllbnQodm9pZCkKIAogRUdMQm9vbGVhbiBfX3N0
ZGNhbGwgZWdsUmVsZWFzZVRocmVhZCh2b2lkKQogewotICAgIFRSQUNFKCIoKSIpOworICAgIEVW
RU5UKCIoKSIpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtNjM0LDcgKzYzNyw3IEBAIEVHTEJvb2xl
YW4gX19zdGRjYWxsIGVnbFJlbGVhc2VUaHJlYWQodm8KIAogRUdMU3VyZmFjZSBfX3N0ZGNhbGwg
ZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoRUdMRGlzcGxheSBkcHksIEVHTGVudW0g
YnVmdHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgRUdMQ29uZmlnIGNvbmZpZywgY29uc3Qg
RUdMaW50ICphdHRyaWJfbGlzdCkKIHsKLSAgICBUUkFDRSgiKEVHTERpc3BsYXkgZHB5ID0gMHgl
MC44cCwgRUdMZW51bSBidWZ0eXBlID0gMHglWCwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciA9IDB4
JTAuOHAsICIKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMZW51bSBi
dWZ0eXBlID0gMHglWCwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciA9IDB4JTAuOHAsICIKICAgICAg
ICAgICAiRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xp
c3QgPSAweCUwLjhwKSIsCiAgICAgICAgICAgZHB5LCBidWZ0eXBlLCBidWZmZXIsIGNvbmZpZywg
YXR0cmliX2xpc3QpOwogCkBAIC02NDIsMTQgKzY0NSwxNyBAQCBFR0xTdXJmYWNlIF9fc3RkY2Fs
bCBlZ2xDcmVhdGVQYnVmZmVyRnJvCiAgICAgewogICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3Bs
YXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOwogCi0gICAgICAgIGlmICghdmFs
aWRhdGUoZGlzcGxheSwgY29uZmlnKSkKKyAgICAgICAgaWYgKCF2YWxpZGF0ZUNvbmZpZyhkaXNw
bGF5LCBjb25maWcpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZB
Q0U7CiAgICAgICAgIH0KIAotICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAg
ICAgICAgaWYgKGJ1ZnR5cGUgIT0gRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdM
RSB8fCAhYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JB
RF9QQVJBTUVURVIsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVy
biBzdWNjZXNzKEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXktPmNyZWF0
ZU9mZnNjcmVlblN1cmZhY2UoY29uZmlnLCAoSEFORExFKWJ1ZmZlciwgYXR0cmliX2xpc3QpOwog
ICAgIH0KICAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCiAgICAgewpAQCAtNjYxLDE0ICs2Njcs
MTUgQEAgRUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlUGJ1ZmZlckZybwogCiBFR0xCb29s
ZWFuIF9fc3RkY2FsbCBlZ2xTdXJmYWNlQXR0cmliKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNl
IHN1cmZhY2UsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCB2YWx1ZSkKIHsKLSAgICBUUkFDRSgi
KEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwg
RUdMaW50IGF0dHJpYnV0ZSA9ICVkLCBFR0xpbnQgdmFsdWUgPSAlZCkiLAorICAgIEVWRU5UKCIo
RUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBF
R0xpbnQgYXR0cmlidXRlID0gJWQsIEVHTGludCB2YWx1ZSA9ICVkKSIsCiAgICAgICAgICAgZHB5
LCBzdXJmYWNlLCBhdHRyaWJ1dGUsIHZhbHVlKTsKIAogICAgIHRyeQogICAgIHsKICAgICAgICAg
ZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsK
KyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nhc3Q8ZWdsOjpTdXJm
YWNlKj4oc3VyZmFjZSk7CiAKLSAgICAgICAgaWYgKCF2YWxpZGF0ZShkaXNwbGF5KSkKKyAgICAg
ICAgaWYgKCF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgICAgIH0KQEAgLTY4NywxOCArNjk0
LDM5IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFN1cmZhY2VBdHRyaWIoRUcKIAogRUdMQm9v
bGVhbiBfX3N0ZGNhbGwgZWdsQmluZFRleEltYWdlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNl
IHN1cmZhY2UsIEVHTGludCBidWZmZXIpCiB7Ci0gICAgVFJBQ0UoIihFR0xEaXNwbGF5IGRweSA9
IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBidWZmZXIgPSAl
ZCkiLCBkcHksIHN1cmZhY2UsIGJ1ZmZlcik7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9
IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBidWZmZXIgPSAl
ZCkiLCBkcHksIHN1cmZhY2UsIGJ1ZmZlcik7CiAKICAgICB0cnkKICAgICB7CiAgICAgICAgIGVn
bDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7Cisg
ICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFj
ZSo+KHN1cmZhY2UpOwogCi0gICAgICAgIGlmICghdmFsaWRhdGUoZGlzcGxheSkpCisgICAgICAg
IGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgICAgICB9CiAKLSAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgIGlmIChidWZmZXIgIT0gRUdMX0JBQ0tfQlVG
RkVSKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9QQVJBTUVU
RVIsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3VyZmFjZSA9PSBFR0xf
Tk9fU1VSRkFDRSB8fCBlZ2xTdXJmYWNlLT5nZXRXaW5kb3dIYW5kbGUoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChlZ2xTdXJmYWNlLT5nZXRCb3VuZFRleHR1cmUoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUNDRVNTLCBFR0xfRkFM
U0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVnbFN1cmZhY2UtPmdldFRleHR1cmVGb3Jt
YXQoKSA9PSBFR0xfTk9fVEVYVFVSRSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBnbEJp
bmRUZXhJbWFnZShlZ2xTdXJmYWNlKTsKIAogICAgICAgICByZXR1cm4gc3VjY2VzcyhFR0xfVFJV
RSk7CiAgICAgfQpAQCAtNzEyLDE4ICs3NDAsMzkgQEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWds
QmluZFRleEltYWdlKEVHTAogCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xSZWxlYXNlVGV4SW1h
Z2UoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikKIHsK
LSAgICBUUkFDRSgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNl
ID0gMHglMC44cCwgRUdMaW50IGJ1ZmZlciA9ICVkKSIsIGRweSwgc3VyZmFjZSwgYnVmZmVyKTsK
KyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNl
ID0gMHglMC44cCwgRUdMaW50IGJ1ZmZlciA9ICVkKSIsIGRweSwgc3VyZmFjZSwgYnVmZmVyKTsK
IAogICAgIHRyeQogICAgIHsKICAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGlj
X2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJm
YWNlID0gc3RhdGljX2Nhc3Q8ZWdsOjpTdXJmYWNlKj4oc3VyZmFjZSk7CiAKLSAgICAgICAgaWYg
KCF2YWxpZGF0ZShkaXNwbGF5KSkKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxh
eSwgZWdsU3VyZmFjZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7
CiAgICAgICAgIH0KIAotICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAg
ICAgaWYgKGJ1ZmZlciAhPSBFR0xfQkFDS19CVUZGRVIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBlcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFIHx8IGVnbFN1cmZhY2UtPmdl
dFdpbmRvd0hhbmRsZSgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdM
X0JBRF9TVVJGQUNFLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVnbFN1
cmZhY2UtPmdldFRleHR1cmVGb3JtYXQoKSA9PSBFR0xfTk9fVEVYVFVSRSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9GQUxTRSk7CisgICAg
ICAgIH0KKworICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gZWdsU3VyZmFjZS0+Z2V0
Qm91bmRUZXh0dXJlKCk7CisKKyAgICAgICAgaWYgKHRleHR1cmUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHRleHR1cmUtPnJlbGVhc2VUZXhJbWFnZSgpOworICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIHN1Y2Nlc3MoRUdMX1RSVUUpOwogICAgIH0KQEAgLTczNywxMyArNzg2LDEzIEBAIEVH
TEJvb2xlYW4gX19zdGRjYWxsIGVnbFJlbGVhc2VUZXhJbWFnZSgKIAogRUdMQm9vbGVhbiBfX3N0
ZGNhbGwgZWdsU3dhcEludGVydmFsKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgaW50ZXJ2YWwpCiB7
Ci0gICAgVFJBQ0UoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTGludCBpbnRlcnZhbCA9
ICVkKSIsIGRweSwgaW50ZXJ2YWwpOworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUw
LjhwLCBFR0xpbnQgaW50ZXJ2YWwgPSAlZCkiLCBkcHksIGludGVydmFsKTsKIAogICAgIHRyeQog
ICAgIHsKICAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpE
aXNwbGF5Kj4oZHB5KTsKIAotICAgICAgICBpZiAoIXZhbGlkYXRlKGRpc3BsYXkpKQorICAgICAg
ICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIEVHTF9GQUxTRTsKICAgICAgICAgfQpAQCAtNzY5LDcgKzgxOCw3IEBAIEVHTEJvb2xl
YW4gX19zdGRjYWxsIGVnbFN3YXBJbnRlcnZhbChFR0wKIAogRUdMQ29udGV4dCBfX3N0ZGNhbGwg
ZWdsQ3JlYXRlQ29udGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMQ29u
dGV4dCBzaGFyZV9jb250ZXh0LCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KQogewotICAgIFRS
QUNFKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44
cCwgRUdMQ29udGV4dCBzaGFyZV9jb250ZXh0ID0gMHglMC44cCwgIgorICAgIEVWRU5UKCIoRUdM
RGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgRUdMQ29u
dGV4dCBzaGFyZV9jb250ZXh0ID0gMHglMC44cCwgIgogICAgICAgICAgICJjb25zdCBFR0xpbnQg
KmF0dHJpYl9saXN0ID0gMHglMC44cCkiLCBkcHksIGNvbmZpZywgc2hhcmVfY29udGV4dCwgYXR0
cmliX2xpc3QpOwogCiAgICAgdHJ5CkBAIC03OTgsNyArODQ3LDcgQEAgRUdMQ29udGV4dCBfX3N0
ZGNhbGwgZWdsQ3JlYXRlQ29udGV4dChFRwogCiAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxh
eSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CiAKLSAgICAgICAgaWYgKCF2YWxp
ZGF0ZShkaXNwbGF5LCBjb25maWcpKQorICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3Bs
YXksIGNvbmZpZykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fQ09OVEVY
VDsKICAgICAgICAgfQpAQCAtODE3LDEzICs4NjYsMTQgQEAgRUdMQ29udGV4dCBfX3N0ZGNhbGwg
ZWdsQ3JlYXRlQ29udGV4dChFRwogCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xEZXN0cm95Q29u
dGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgpCiB7Ci0gICAgVFJBQ0UoIihFR0xE
aXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCkiLCBkcHksIGN0
eCk7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4
ID0gMHglMC44cCkiLCBkcHksIGN0eCk7CiAKICAgICB0cnkKICAgICB7CiAgICAgICAgIGVnbDo6
RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihjdHgp
OwogCi0gICAgICAgIGlmICghdmFsaWRhdGUoZGlzcGxheSkpCisgICAgICAgIGlmICghdmFsaWRh
dGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gRUdMX0ZBTFNFOwogICAgICAgICB9CkBAIC04MzMsNyArODgzLDcgQEAgRUdMQm9vbGVhbiBf
X3N0ZGNhbGwgZWdsRGVzdHJveUNvbnRleHQoRQogICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVH
TF9CQURfQ09OVEVYVCwgRUdMX0ZBTFNFKTsKICAgICAgICAgfQogCi0gICAgICAgIGRpc3BsYXkt
PmRlc3Ryb3lDb250ZXh0KChnbDo6Q29udGV4dCopY3R4KTsKKyAgICAgICAgZGlzcGxheS0+ZGVz
dHJveUNvbnRleHQoY29udGV4dCk7CiAKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoRUdMX1RSVUUp
OwogICAgIH0KQEAgLTg0Nyw3ICs4OTcsNyBAQCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xEZXN0
cm95Q29udGV4dChFCiAKIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbE1ha2VDdXJyZW50KEVHTERp
c3BsYXkgZHB5LCBFR0xTdXJmYWNlIGRyYXcsIEVHTFN1cmZhY2UgcmVhZCwgRUdMQ29udGV4dCBj
dHgpCiB7Ci0gICAgVFJBQ0UoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ug
ZHJhdyA9IDB4JTAuOHAsIEVHTFN1cmZhY2UgcmVhZCA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4
ID0gMHglMC44cCkiLAorICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xT
dXJmYWNlIGRyYXcgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHJlYWQgPSAweCUwLjhwLCBFR0xDb250
ZXh0IGN0eCA9IDB4JTAuOHApIiwKICAgICAgICAgICBkcHksIGRyYXcsIHJlYWQsIGN0eCk7CiAK
ICAgICB0cnkKQEAgLTg1NiwxOCArOTA2LDE4IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbE1h
a2VDdXJyZW50KEVHTEQKICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCo+KGN0eCk7CiAgICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9
IGRpc3BsYXktPmdldERldmljZSgpOwogCi0gICAgICAgIGlmICghZGV2aWNlIHx8IEZBSUxFRChk
ZXZpY2UtPlRlc3RDb29wZXJhdGl2ZUxldmVsKCkpKQorICAgICAgICBpZiAoIWRldmljZSB8fCBk
aXNwbGF5LT5pc0RldmljZUxvc3QoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEVHTF9DT05URVhUX0xPU1QsIEVHTF9GQUxTRSk7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoY3R4ICE9IEVHTF9OT19DT05URVhUICYmICF2YWxpZGF0ZShkaXNwbGF5LCBjb250ZXh0KSkK
KyAgICAgICAgaWYgKGN0eCAhPSBFR0xfTk9fQ09OVEVYVCAmJiAhdmFsaWRhdGVDb250ZXh0KGRp
c3BsYXksIGNvbnRleHQpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNF
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChkcmF3ICE9IEVHTF9OT19TVVJGQUNFICYmICF2
YWxpZGF0ZShkaXNwbGF5LCBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihkcmF3KSkpIHx8Ci0g
ICAgICAgICAgICAocmVhZCAhPSBFR0xfTk9fU1VSRkFDRSAmJiAhdmFsaWRhdGUoZGlzcGxheSwg
c3RhdGljX2Nhc3Q8ZWdsOjpTdXJmYWNlKj4ocmVhZCkpKSkKKyAgICAgICAgaWYgKChkcmF3ICE9
IEVHTF9OT19TVVJGQUNFICYmICF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgc3RhdGljX2Nhc3Q8
ZWdsOjpTdXJmYWNlKj4oZHJhdykpKSB8fAorICAgICAgICAgICAgKHJlYWQgIT0gRUdMX05PX1NV
UkZBQ0UgJiYgIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZh
Y2UqPihyZWFkKSkpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwog
ICAgICAgICB9CkBAIC04NzcsNiArOTI3LDkgQEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsTWFr
ZUN1cnJlbnQoRUdMRAogICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCiAg
ICAgICAgIH0KIAorICAgICAgICBlZ2w6OlN1cmZhY2UqIHByZXZpb3VzRHJhdyA9IHN0YXRpY19j
YXN0PGVnbDo6U3VyZmFjZSo+KGVnbDo6Z2V0Q3VycmVudERyYXdTdXJmYWNlKCkpOworICAgICAg
ICBlZ2w6OlN1cmZhY2UqIHByZXZpb3VzUmVhZCA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+
KGVnbDo6Z2V0Q3VycmVudFJlYWRTdXJmYWNlKCkpOworCiAgICAgICAgIGVnbDo6c2V0Q3VycmVu
dERpc3BsYXkoZHB5KTsKICAgICAgICAgZWdsOjpzZXRDdXJyZW50RHJhd1N1cmZhY2UoZHJhdyk7
CiAgICAgICAgIGVnbDo6c2V0Q3VycmVudFJlYWRTdXJmYWNlKHJlYWQpOwpAQCAtODk1LDcgKzk0
OCw3IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbE1ha2VDdXJyZW50KEVHTEQKIAogRUdMQ29u
dGV4dCBfX3N0ZGNhbGwgZWdsR2V0Q3VycmVudENvbnRleHQodm9pZCkKIHsKLSAgICBUUkFDRSgi
KCkiKTsKKyAgICBFVkVOVCgiKCkiKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTkxMyw3ICs5NjYs
NyBAQCBFR0xDb250ZXh0IF9fc3RkY2FsbCBlZ2xHZXRDdXJyZW50Q29udGV4CiAKIEVHTFN1cmZh
Y2UgX19zdGRjYWxsIGVnbEdldEN1cnJlbnRTdXJmYWNlKEVHTGludCByZWFkZHJhdykKIHsKLSAg
ICBUUkFDRSgiKEVHTGludCByZWFkZHJhdyA9ICVkKSIsIHJlYWRkcmF3KTsKKyAgICBFVkVOVCgi
KEVHTGludCByZWFkZHJhdyA9ICVkKSIsIHJlYWRkcmF3KTsKIAogICAgIHRyeQogICAgIHsKQEAg
LTk0Miw3ICs5OTUsNyBAQCBFR0xTdXJmYWNlIF9fc3RkY2FsbCBlZ2xHZXRDdXJyZW50U3VyZmFj
CiAKIEVHTERpc3BsYXkgX19zdGRjYWxsIGVnbEdldEN1cnJlbnREaXNwbGF5KHZvaWQpCiB7Ci0g
ICAgVFJBQ0UoIigpIik7CisgICAgRVZFTlQoIigpIik7CiAKICAgICB0cnkKICAgICB7CkBAIC05
NjAsMTQgKzEwMTMsMTUgQEAgRUdMRGlzcGxheSBfX3N0ZGNhbGwgZWdsR2V0Q3VycmVudERpc3Bs
YQogCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xRdWVyeUNvbnRleHQoRUdMRGlzcGxheSBkcHks
IEVHTENvbnRleHQgY3R4LCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQogewotICAg
IFRSQUNFKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb250ZXh0IGN0eCA9IDB4JTAu
OHAsIEVHTGludCBhdHRyaWJ1dGUgPSAlZCwgRUdMaW50ICp2YWx1ZSA9IDB4JTAuOHApIiwKKyAg
ICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29udGV4dCBjdHggPSAweCUw
LjhwLCBFR0xpbnQgYXR0cmlidXRlID0gJWQsIEVHTGludCAqdmFsdWUgPSAweCUwLjhwKSIsCiAg
ICAgICAgICAgZHB5LCBjdHgsIGF0dHJpYnV0ZSwgdmFsdWUpOwogCiAgICAgdHJ5CiAgICAgewog
ICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkq
PihkcHkpOworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0Kj4oY3R4KTsKIAotICAgICAgICBpZiAoIXZhbGlkYXRlKGRpc3BsYXkpKQorICAgICAg
ICBpZiAoIXZhbGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KSkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICAgICAgfQpAQCAtOTg2LDcgKzEwNDAsNyBA
QCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xRdWVyeUNvbnRleHQoRUdMCiAKIEVHTEJvb2xlYW4g
X19zdGRjYWxsIGVnbFdhaXRHTCh2b2lkKQogewotICAgIFRSQUNFKCIoKSIpOworICAgIEVWRU5U
KCIoKSIpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMTAwNCw3ICsxMDU4LDcgQEAgRUdMQm9vbGVh
biBfX3N0ZGNhbGwgZWdsV2FpdEdMKHZvaWQpCiAKIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFdh
aXROYXRpdmUoRUdMaW50IGVuZ2luZSkKIHsKLSAgICBUUkFDRSgiKEVHTGludCBlbmdpbmUgPSAl
ZCkiLCBlbmdpbmUpOworICAgIEVWRU5UKCIoRUdMaW50IGVuZ2luZSA9ICVkKSIsIGVuZ2luZSk7
CiAKICAgICB0cnkKICAgICB7CkBAIC0xMDIyLDEzICsxMDc2LDE0IEBAIEVHTEJvb2xlYW4gX19z
dGRjYWxsIGVnbFdhaXROYXRpdmUoRUdMaW4KIAogRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsU3dh
cEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSkKIHsKLSAgICBUUkFD
RSgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44
cCkiLCBkcHksIHN1cmZhY2UpOworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhw
LCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwKSIsIGRweSwgc3VyZmFjZSk7CiAKICAgICB0
cnkKICAgICB7CiAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVn
bDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IChl
Z2w6OlN1cmZhY2UqKXN1cmZhY2U7CiAKLSAgICAgICAgaWYgKCF2YWxpZGF0ZShkaXNwbGF5KSkK
KyAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgICAgIH0KQEAgLTEwMzgs
OCArMTA5Myw2IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFN3YXBCdWZmZXJzKEVHTEQKICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX1NVUkZBQ0UsIEVHTF9GQUxTRSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSAoZWdsOjpTdXJmYWNl
KilzdXJmYWNlOwotCiAgICAgICAgIGlmIChlZ2xTdXJmYWNlLT5zd2FwKCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzKEVHTF9UUlVFKTsKQEAgLTEwNTUsMTMgKzExMDgs
MTQgQEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsU3dhcEJ1ZmZlcnMoRUdMRAogCiBFR0xCb29s
ZWFuIF9fc3RkY2FsbCBlZ2xDb3B5QnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBz
dXJmYWNlLCBFR0xOYXRpdmVQaXhtYXBUeXBlIHRhcmdldCkKIHsKLSAgICBUUkFDRSgiKEVHTERp
c3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMTmF0
aXZlUGl4bWFwVHlwZSB0YXJnZXQgPSAweCUwLjhwKSIsIGRweSwgc3VyZmFjZSwgdGFyZ2V0KTsK
KyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNl
ID0gMHglMC44cCwgRUdMTmF0aXZlUGl4bWFwVHlwZSB0YXJnZXQgPSAweCUwLjhwKSIsIGRweSwg
c3VyZmFjZSwgdGFyZ2V0KTsKIAogICAgIHRyeQogICAgIHsKICAgICAgICAgZWdsOjpEaXNwbGF5
ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAgICAgZWds
OjpTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nhc3Q8ZWdsOjpTdXJmYWNlKj4oc3VyZmFj
ZSk7CiAKLSAgICAgICAgaWYgKCF2YWxpZGF0ZShkaXNwbGF5KSkKKyAgICAgICAgaWYgKCF2YWxp
ZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSkpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CiAgICAgICAgIH0KQEAgLTEwODAsNyArMTEzNCw3IEBAIEVHTEJv
b2xlYW4gX19zdGRjYWxsIGVnbENvcHlCdWZmZXJzKEVHTEQKIAogX19lZ2xNdXN0Q2FzdFRvUHJv
cGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBfX3N0ZGNhbGwgZWdsR2V0UHJvY0FkZHJlc3MoY29uc3Qg
Y2hhciAqcHJvY25hbWUpCiB7Ci0gICAgVFJBQ0UoIihjb25zdCBjaGFyICpwcm9jbmFtZSA9IFwi
JXNcIikiLCBwcm9jbmFtZSk7CisgICAgRVZFTlQoIihjb25zdCBjaGFyICpwcm9jbmFtZSA9IFwi
JXNcIikiLCBwcm9jbmFtZSk7CiAKICAgICB0cnkKICAgICB7CkBAIC0xMDkyLDYgKzExNDYsNyBA
QCBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlCiAKICAgICAgICAgc3Rh
dGljIGNvbnN0IEV4dGVuc2lvbiBlZ2xFeHRlbnNpb25zW10gPQogICAgICAgICB7CisgICAgICAg
ICAgICB7ImVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSIsIChfX2VnbE11c3RDYXN0VG9Qcm9w
ZXJGdW5jdGlvblBvaW50ZXJUeXBlKWVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRX0sCiAgICAg
ICAgICAgICB7IiIsIE5VTEx9LAogICAgICAgICB9OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5yYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5yYwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnJjCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwMiBAQAorLy8gTWljcm9zb2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIHJlc291cmNlIHNj
cmlwdC4KKy8vCisjaW5jbHVkZSAicmVzb3VyY2UuaCIKKworI2RlZmluZSBBUFNUVURJT19SRUFE
T05MWV9TWU1CT0xTCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIEdlbmVyYXRlZCBmcm9t
IHRoZSBURVhUSU5DTFVERSAyIHJlc291cmNlLgorLy8KKyNpbmNsdWRlICJhZnhyZXMuaCIKKyNp
bmNsdWRlICIuLi9jb21tb24vdmVyc2lvbi5oIgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI3Vu
ZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v
IEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcworCisjaWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RM
TCkgfHwgZGVmaW5lZChBRlhfVEFSR19FTlUpCisjaWZkZWYgX1dJTjMyCitMQU5HVUFHRSBMQU5H
X0VOR0xJU0gsIFNVQkxBTkdfRU5HTElTSF9VUworI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKKyNl
bmRpZiAvL19XSU4zMgorCisjaWZkZWYgQVBTVFVESU9fSU5WT0tFRAorLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KKy8vCisvLyBURVhUSU5DTFVERQorLy8KKworMSBURVhUSU5DTFVERSAKK0JFR0lOCisg
ICAgInJlc291cmNlLmhcMCIKK0VORAorCisyIFRFWFRJTkNMVURFIAorQkVHSU4KKyAgICAiI2lu
Y2x1ZGUgIiJhZnhyZXMuaCIiXHJcbiIKKyAgICAiI2luY2x1ZGUgIiIuLi9jb21tb24vdmVyc2lv
bi5oIiJcMCIKK0VORAorCiszIFRFWFRJTkNMVURFIAorQkVHSU4KKyAgICAiXHJcbiIKKyAgICAi
XDAiCitFTkQKKworI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQKKworCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLworLy8KKy8vIFZlcnNpb24KKy8vCisKK1ZTX1ZFUlNJT05fSU5GTyBWRVJTSU9O
SU5GTworIEZJTEVWRVJTSU9OIE1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixCVUlMRF9WRVJT
SU9OLEJVSUxEX1JFVklTSU9OCisgUFJPRFVDVFZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9W
RVJTSU9OLEJVSUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJT04KKyBGSUxFRkxBR1NNQVNLIDB4MTdM
CisjaWZkZWYgX0RFQlVHCisgRklMRUZMQUdTIDB4MUwKKyNlbHNlCisgRklMRUZMQUdTIDB4MEwK
KyNlbmRpZgorIEZJTEVPUyAweDRMCisgRklMRVRZUEUgMHgyTAorIEZJTEVTVUJUWVBFIDB4MEwK
K0JFR0lOCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIEJM
T0NLICIwNDA5MDRiMCIKKyAgICAgICAgQkVHSU4KKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVz
Y3JpcHRpb24iLCAiQU5HTEUgbGliRUdMIER5bmFtaWMgTGluayBMaWJyYXJ5IgorICAgICAgICAg
ICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgVkVSU0lPTl9TVFJJTkcKKyAgICAgICAgICAgIFZBTFVF
ICJJbnRlcm5hbE5hbWUiLCAibGliRUdMIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJp
Z2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiIKKyAgICAgICAgICAgIFZBTFVF
ICJPcmlnaW5hbEZpbGVuYW1lIiwgImxpYkVHTC5kbGwiCisgICAgICAgICAgICBWQUxVRSAiUHJp
dmF0ZUJ1aWxkIiwgVkVSU0lPTl9TVFJJTkcKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFt
ZSIsICJBTkdMRSBsaWJFR0wgRHluYW1pYyBMaW5rIExpYnJhcnkiCisgICAgICAgICAgICBWQUxV
RSAiUHJvZHVjdFZlcnNpb24iLCBWRVJTSU9OX1NUUklORworICAgICAgICBFTkQKKyAgICBFTkQK
KyAgICBCTE9DSyAiVmFyRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgVkFMVUUgIlRyYW5z
bGF0aW9uIiwgMHg0MDksIDEyMDAKKyAgICBFTkQKK0VORAorCisjZW5kaWYgICAgLy8gRW5nbGlz
aCAoVS5TLikgcmVzb3VyY2VzCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisKKworI2lmbmRlZiBB
UFNUVURJT19JTlZPS0VECisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIEdlbmVyYXRlZCBm
cm9tIHRoZSBURVhUSU5DTFVERSAzIHJlc291cmNlLgorLy8KKworCisvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworI2VuZGlmICAgIC8vIG5vdCBBUFNUVURJT19JTlZPS0VECkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wudmNwcm9qCShyZXZpc2lvbiA4
OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsMTAgQEAKIAkJCS8+CiAJCQk8VG9vbAogCQkJ
CU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJkeGd1aWQu
bGliIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImQzZDkubGliIGR4Z3VpZC5saWIgZHdt
YXBpLmxpYiIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCiAJCQkJTW9kdWxlRGVmaW5pdGlvbkZp
bGU9ImxpYkVHTC5kZWYiCisJCQkJRGVsYXlMb2FkRExMcz0iZHdtYXBpLmRsbCIKIAkJCQlHZW5l
cmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCiAJCQkJU3ViU3lzdGVtPSIyIgogCQkJCVJhbmRv
bWl6ZWRCYXNlQWRkcmVzcz0iMSIKQEAgLTE0MCw5ICsxNDEsMTAgQEAKIAkJCS8+CiAJCQk8VG9v
bAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJk
eGd1aWQubGliIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImQzZDkubGliIGR4Z3VpZC5s
aWIgZHdtYXBpLmxpYiIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJTW9kdWxlRGVmaW5p
dGlvbkZpbGU9ImxpYkVHTC5kZWYiCisJCQkJRGVsYXlMb2FkRExMcz0iZHdtYXBpLmxpYiIKIAkJ
CQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCiAJCQkJU3ViU3lzdGVtPSIyIgogCQkJ
CU9wdGltaXplUmVmZXJlbmNlcz0iMiIKQEAgLTIzOCwxNCArMjQwLDI2IEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii5ccmVzb3VyY2UuaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLlxTdXJmYWNlLmgiCiAJ
CQkJPgogCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNvbW1vblx2
ZXJzaW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbGUKIAkJCVJl
bGF0aXZlUGF0aD0iLlxsaWJFR0wuZGVmIgogCQkJPgogCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlS
ZWxhdGl2ZVBhdGg9Ii5cbGliRUdMLnJjIgorCQkJPgorCQk8L0ZpbGU+CiAJPC9GaWxlcz4KIAk8
R2xvYmFscz4KIAk8L0dsb2JhbHM+CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliRUdML21haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvbWFpbi5jcHAJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkVHTC9tYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgsMTYgKzE4LDE2
IEBAIEJPT0wgV0lOQVBJIERsbE1haW4oSElOU1RBTkNFIGluc3RhbmNlLCAKICAgICB7CiAgICAg
ICBjYXNlIERMTF9QUk9DRVNTX0FUVEFDSDoKICAgICAgICAgewotICAgICAgICAgICAgI2lmbmRl
ZiBOREVCVUcKLSAgICAgICAgICAgICAgICBGSUxFICpkZWJ1ZyA9IGZvcGVuKCJkZWJ1Zy50eHQi
LCAicnQiKTsKKyNpZiAhZGVmaW5lZChBTkdMRV9ESVNBQkxFX1RSQUNFKQorICAgICAgICAgICAg
RklMRSAqZGVidWcgPSBmb3BlbihUUkFDRV9PVVRQVVRfRklMRSwgInJ0Iik7CiAKLSAgICAgICAg
ICAgICAgICBpZiAoZGVidWcpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBmY2xvc2UoZGVidWcpOwotICAgICAgICAgICAgICAgICAgICBkZWJ1ZyA9IGZvcGVuKCJkZWJ1
Zy50eHQiLCAid3QiKTsgICAvLyBFcmFzZQotICAgICAgICAgICAgICAgICAgICBmY2xvc2UoZGVi
dWcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAg
aWYgKGRlYnVnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZjbG9zZShkZWJ1Zyk7
CisgICAgICAgICAgICAgICAgZGVidWcgPSBmb3BlbihUUkFDRV9PVVRQVVRfRklMRSwgInd0Iik7
ICAgLy8gRXJhc2UKKyAgICAgICAgICAgICAgICBmY2xvc2UoZGVidWcpOworICAgICAgICAgICAg
fQorI2VuZGlmCiAKICAgICAgICAgICAgIGN1cnJlbnRUTFMgPSBUbHNBbGxvYygpOwogCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML21haW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML21haW4uaAkocmV2aXNpb24gODky
ODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML21haW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQAogCiAjZGVmaW5lIEVHTEFQSQogI2luY2x1ZGUgPEVH
TC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CiAKIG5hbWVzcGFjZSBlZ2wKIHsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvcmVzb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML3Jlc291cmNlLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML3Jlc291cmNl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKy8ve3tOT19ERVBFTkRFTkNJRVN9fQor
Ly8gTWljcm9zb2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIGluY2x1ZGUgZmlsZS4KKy8vIFVzZWQg
YnkgbGliRUdMLnJjCisKKy8vIE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzCisv
LyAKKyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisjaWZuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZ
TUJPTFMKKyNkZWZpbmUgX0FQU19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxMDEKKyNkZWZp
bmUgX0FQU19ORVhUX0NPTU1BTkRfVkFMVUUgICAgICAgICA0MDAwMQorI2RlZmluZSBfQVBTX05F
WFRfQ09OVFJPTF9WQUxVRSAgICAgICAgIDEwMDEKKyNkZWZpbmUgX0FQU19ORVhUX1NZTUVEX1ZB
TFVFICAgICAgICAgICAxMDEKKyNlbmRpZgorI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML3Jlc291cmNlLmgKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9CbGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL0JsaXQuY3BwCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQmxpdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1NSwxNiArMTU1LDIzIEBAIHZvaWQgQmxpdDo6aW5pdEdlb21ldHJ5KCkKIAogICAgIElE
aXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwogCi0gICAgSFJFU1VMVCBociA9
IGRldmljZS0+Q3JlYXRlVmVydGV4QnVmZmVyKHNpemVvZihxdWFkKSwgRDNEVVNBR0VfV1JJVEVP
TkxZLCAwLCBEM0RQT09MX0RFRkFVTFQsICZtUXVhZFZlcnRleEJ1ZmZlciwgTlVMTCk7CisgICAg
SFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVZlcnRleEJ1ZmZlcihzaXplb2YocXVhZCks
IEQzRFVTQUdFX1dSSVRFT05MWSwgMCwgRDNEUE9PTF9ERUZBVUxULCAmbVF1YWRWZXJ0ZXhCdWZm
ZXIsIE5VTEwpOwogCi0gICAgaWYgKEZBSUxFRChocikpCisgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGhyID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8
IGhyID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9P
VVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgcmV0
dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIHZvaWQgKmxvY2tQdHIg
PSBOVUxMOworICAgIHJlc3VsdCA9IG1RdWFkVmVydGV4QnVmZmVyLT5Mb2NrKDAsIDAsICZsb2Nr
UHRyLCAwKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSB8fCBsb2NrUHRyID09IE5VTEwpCisg
ICAgeworICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8
IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOwogICAgIH0KIAotICAgIHZvaWQgKmxvY2tQdHI7Ci0gICAgbVF1YWRWZXJ0ZXhC
dWZmZXItPkxvY2soMCwgMCwgJmxvY2tQdHIsIDApOwogICAgIG1lbWNweShsb2NrUHRyLCBxdWFk
LCBzaXplb2YocXVhZCkpOwogICAgIG1RdWFkVmVydGV4QnVmZmVyLT5VbmxvY2soKTsKIApAQCAt
MTc0LDEwICsxODEsMTEgQEAgdm9pZCBCbGl0Ojppbml0R2VvbWV0cnkoKQogICAgICAgICBEM0RE
RUNMX0VORCgpCiAgICAgfTsKIAotICAgIGhyID0gZGV2aWNlLT5DcmVhdGVWZXJ0ZXhEZWNsYXJh
dGlvbihlbGVtZW50cywgJm1RdWFkVmVydGV4RGVjbGFyYXRpb24pOwotICAgIGlmIChGQUlMRUQo
aHIpKQorICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVmVydGV4RGVjbGFyYXRpb24oZWxlbWVu
dHMsICZtUXVhZFZlcnRleERlY2xhcmF0aW9uKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChociA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBo
ciA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VU
T0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CiAgICAgICAgIHJldHVy
biBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKICAgICB9CiB9CkBAIC0yODcsNiArMjk1LDM0IEBA
IGJvb2wgQmxpdDo6Ym94RmlsdGVyKElEaXJlY3QzRFN1cmZhY2U5ICoKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorYm9vbCBCbGl0Ojpjb3B5KElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0
IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCkKK3sKKyAgICBJRGlyZWN0M0REZXZp
Y2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKKworICAgIEQzRFNVUkZBQ0VfREVTQyBzb3VyY2VE
ZXNjOworICAgIEQzRFNVUkZBQ0VfREVTQyBkZXN0RGVzYzsKKyAgICBzb3VyY2UtPkdldERlc2Mo
JnNvdXJjZURlc2MpOworICAgIGRlc3QtPkdldERlc2MoJmRlc3REZXNjKTsKKworICAgIGlmIChz
b3VyY2VEZXNjLkZvcm1hdCA9PSBkZXN0RGVzYy5Gb3JtYXQgJiYgZGVzdERlc2MuVXNhZ2UgJiBE
M0RVU0FHRV9SRU5ERVJUQVJHRVQpICAgLy8gQ2FuIHVzZSBTdHJldGNoUmVjdAorICAgIHsKKyAg
ICAgICAgUkVDVCBkZXN0UmVjdCA9IHt4b2Zmc2V0LCB5b2Zmc2V0LCB4b2Zmc2V0ICsgKHNvdXJj
ZVJlY3QucmlnaHQgLSBzb3VyY2VSZWN0LmxlZnQpLCB5b2Zmc2V0ICsgKHNvdXJjZVJlY3QuYm90
dG9tIC0gc291cmNlUmVjdC50b3ApfTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2Ut
PlN0cmV0Y2hSZWN0KHNvdXJjZSwgJnNvdXJjZVJlY3QsIGRlc3QsICZkZXN0UmVjdCwgRDNEVEVY
Rl9QT0lOVCk7CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3Vs
dCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZvcm1hdENvbnZlcnQoc291cmNlLCBzb3VyY2VSZWN0LCBkZXN0Rm9ybWF0LCB4
b2Zmc2V0LCB5b2Zmc2V0LCBkZXN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
Ym9vbCBCbGl0Ojpmb3JtYXRDb252ZXJ0KElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0
IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCkKIHsKICAgICBJRGlyZWN0M0RUZXh0
dXJlOSAqdGV4dHVyZSA9IGNvcHlTdXJmYWNlVG9UZXh0dXJlKHNvdXJjZSwgc291cmNlUmVjdCk7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0JsaXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0JsaXQuaAko
cmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L0JsaXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMTAgQEAgY2xhc3MgQmxpdAogCiAg
ICAgLy8gQ29weSBmcm9tIHNvdXJjZSBzdXJmYWNlIHRvIGRlc3Qgc3VyZmFjZS4KICAgICAvLyBz
b3VyY2VSZWN0LCB4b2Zmc2V0LCB5b2Zmc2V0IGFyZSBpbiBEM0QgY29vcmRpbmF0ZXMgKDAsMCBp
biB1cHBlci1sZWZ0KQorICAgIGJvb2wgY29weShJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlLCBj
b25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpOworCisgICAgLy8gQ29weSBm
cm9tIHNvdXJjZSBzdXJmYWNlIHRvIGRlc3Qgc3VyZmFjZS4KKyAgICAvLyBzb3VyY2VSZWN0LCB4
b2Zmc2V0LCB5b2Zmc2V0IGFyZSBpbiBEM0QgY29vcmRpbmF0ZXMgKDAsMCBpbiB1cHBlci1sZWZ0
KQogICAgIC8vIHNvdXJjZSBpcyBpbnRlcnByZXRlZCBhcyBSR0JBIGFuZCBkZXN0Rm9ybWF0IHNw
ZWNpZmllcyB0aGUgZGVzaXJlZCByZXN1bHQgZm9ybWF0LiBGb3IgZXhhbXBsZSwgaWYgZGVzdEZv
cm1hdCA9IEdMX1JHQiwgdGhlIGFscGhhIGNoYW5uZWwgd2lsbCBiZSBmb3JjZWQgdG8gMC4KICAg
ICBib29sIGZvcm1hdENvbnZlcnQoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgY29uc3QgUkVD
VCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KTsKIApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQnVmZmVyLmNwcAkocmV2aXNpb24gODkyODYp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1ZmZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExLDggKzExLDggQEAKICNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVy
LmgiCiAKICNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9n
ZW9tZXRyeS9WZXJ0ZXhEYXRhTWFuYWdlci5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9nZW9tZXRy
eS9JbmRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1ZlcnRleERhdGFNYW5h
Z2VyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0luZGV4RGF0YU1hbmFnZXIuaCIKIAogbmFtZXNw
YWNlIGdsCiB7CkBAIC0yMywxNSArMjMsMTYgQEAgQnVmZmVyOjpCdWZmZXIoR0x1aW50IGlkKSA6
IFJlZkNvdW50T2JqZQogICAgIG1TaXplID0gMDsKICAgICBtVXNhZ2UgPSBHTF9EWU5BTUlDX0RS
QVc7CiAKLSAgICBtVmVydGV4QnVmZmVyID0gTlVMTDsKLSAgICBtSW5kZXhCdWZmZXIgPSBOVUxM
OworICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBOVUxMOworICAgIG1TdGF0aWNJbmRleEJ1ZmZl
ciA9IE5VTEw7CisgICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKIH0KIAogQnVmZmVyOjp+QnVm
ZmVyKCkKIHsKICAgICBkZWxldGVbXSBtQ29udGVudHM7Ci0gICAgZGVsZXRlIG1WZXJ0ZXhCdWZm
ZXI7Ci0gICAgZGVsZXRlIG1JbmRleEJ1ZmZlcjsKKyAgICBkZWxldGUgbVN0YXRpY1ZlcnRleEJ1
ZmZlcjsKKyAgICBkZWxldGUgbVN0YXRpY0luZGV4QnVmZmVyOwogfQogCiB2b2lkIEJ1ZmZlcjo6
YnVmZmVyRGF0YShjb25zdCB2b2lkICpkYXRhLCBHTHNpemVpcHRyIHNpemUsIEdMZW51bSB1c2Fn
ZSkKQEAgLTYwLDQ3ICs2MSw1NSBAQCB2b2lkIEJ1ZmZlcjo6YnVmZmVyRGF0YShjb25zdCB2b2lk
ICpkYXRhCiAKICAgICBpZiAodXNhZ2UgPT0gR0xfU1RBVElDX0RSQVcpCiAgICAgewotICAgICAg
ICBtVmVydGV4QnVmZmVyID0gbmV3IFN0YXRpY1ZlcnRleEJ1ZmZlcihnZXREZXZpY2UoKSk7Ci0g
ICAgICAgIG1JbmRleEJ1ZmZlciA9IG5ldyBTdGF0aWNJbmRleEJ1ZmZlcihnZXREZXZpY2UoKSk7
CisgICAgICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBuZXcgU3RhdGljVmVydGV4QnVmZmVyKGdl
dERldmljZSgpKTsKKyAgICAgICAgbVN0YXRpY0luZGV4QnVmZmVyID0gbmV3IFN0YXRpY0luZGV4
QnVmZmVyKGdldERldmljZSgpKTsKICAgICB9CiB9CiAKIHZvaWQgQnVmZmVyOjpidWZmZXJTdWJE
YXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xpbnRwdHIgb2Zmc2V0KQog
ewogICAgIG1lbWNweShtQ29udGVudHMgKyBvZmZzZXQsIGRhdGEsIHNpemUpOwotCi0gICAgaWYg
KChtVmVydGV4QnVmZmVyICYmIG1WZXJ0ZXhCdWZmZXItPnNpemUoKSAhPSAwKSB8fCAobUluZGV4
QnVmZmVyICYmIG1JbmRleEJ1ZmZlci0+c2l6ZSgpICE9IDApKQorICAgIAorICAgIGlmICgobVN0
YXRpY1ZlcnRleEJ1ZmZlciAmJiBtU3RhdGljVmVydGV4QnVmZmVyLT5zaXplKCkgIT0gMCkgfHwg
KG1TdGF0aWNJbmRleEJ1ZmZlciAmJiBtU3RhdGljSW5kZXhCdWZmZXItPnNpemUoKSAhPSAwKSkK
ICAgICB7CiAgICAgICAgIGludmFsaWRhdGVTdGF0aWNEYXRhKCk7Ci0KLSAgICAgICAgaWYgKG1V
c2FnZSA9PSBHTF9TVEFUSUNfRFJBVykKLSAgICAgICAgewotICAgICAgICAgICAgLy8gSWYgYXBw
bGljYXRpb25zIHVwZGF0ZSB0aGUgYnVmZmVyIGRhdGEgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVl
biB1c2VkIGluIGEgZHJhdyBjYWxsLAotICAgICAgICAgICAgLy8gaXQgbW9zdCBsaWtlbHkgaXNu
J3QgdXNlZCBhcyBhIHN0YXRpYyBidWZmZXIgc28gd2Ugc2hvdWxkIGZhbGwgYmFjayB0byBzdHJl
YW1pbmcgdXNhZ2UKLSAgICAgICAgICAgIC8vIGZvciBiZXN0IHBlcmZvcm1hbmNlLiBTbyBpZ25v
cmUgdGhlIHVzYWdlIGhpbnQgYW5kIGRvbid0IGNyZWF0ZSBuZXcgc3RhdGljIGJ1ZmZlcnMuCi0g
ICAgICAgIC8vICBtVmVydGV4QnVmZmVyID0gbmV3IFN0YXRpY1ZlcnRleEJ1ZmZlcihnZXREZXZp
Y2UoKSk7Ci0gICAgICAgIC8vICBtSW5kZXhCdWZmZXIgPSBuZXcgU3RhdGljSW5kZXhCdWZmZXIo
Z2V0RGV2aWNlKCkpOwotICAgICAgICB9CiAgICAgfQogfQogCi1TdGF0aWNWZXJ0ZXhCdWZmZXIg
KkJ1ZmZlcjo6Z2V0VmVydGV4QnVmZmVyKCkKK1N0YXRpY1ZlcnRleEJ1ZmZlciAqQnVmZmVyOjpn
ZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoKQogewotICAgIHJldHVybiBtVmVydGV4QnVmZmVyOworICAg
IHJldHVybiBtU3RhdGljVmVydGV4QnVmZmVyOwogfQogCi1TdGF0aWNJbmRleEJ1ZmZlciAqQnVm
ZmVyOjpnZXRJbmRleEJ1ZmZlcigpCitTdGF0aWNJbmRleEJ1ZmZlciAqQnVmZmVyOjpnZXRTdGF0
aWNJbmRleEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIG1JbmRleEJ1ZmZlcjsKKyAgICByZXR1cm4g
bVN0YXRpY0luZGV4QnVmZmVyOwogfQogCiB2b2lkIEJ1ZmZlcjo6aW52YWxpZGF0ZVN0YXRpY0Rh
dGEoKQogewotICAgIGRlbGV0ZSBtVmVydGV4QnVmZmVyOwotICAgIG1WZXJ0ZXhCdWZmZXIgPSBO
VUxMOworICAgIGRlbGV0ZSBtU3RhdGljVmVydGV4QnVmZmVyOworICAgIG1TdGF0aWNWZXJ0ZXhC
dWZmZXIgPSBOVUxMOworCisgICAgZGVsZXRlIG1TdGF0aWNJbmRleEJ1ZmZlcjsKKyAgICBtU3Rh
dGljSW5kZXhCdWZmZXIgPSBOVUxMOworCisgICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKK30K
IAotICAgIGRlbGV0ZSBtSW5kZXhCdWZmZXI7Ci0gICAgbUluZGV4QnVmZmVyID0gTlVMTDsKKy8v
IENyZWF0ZXMgc3RhdGljIGJ1ZmZlcnMgaWYgc3VmZmljaWVudCB1c2VkIGRhdGEgaGFzIGJlZW4g
bGVmdCB1bm1vZGlmaWVkCit2b2lkIEJ1ZmZlcjo6cHJvbW90ZVN0YXRpY1VzYWdlKGludCBkYXRh
U2l6ZSkKK3sKKyAgICBpZiAoIW1TdGF0aWNWZXJ0ZXhCdWZmZXIgJiYgIW1TdGF0aWNJbmRleEJ1
ZmZlcikKKyAgICB7CisgICAgICAgIG1Vbm1vZGlmaWVkRGF0YVVzZSArPSBkYXRhU2l6ZTsKKwor
ICAgICAgICBpZiAobVVubW9kaWZpZWREYXRhVXNlID4gMyAqIG1TaXplKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtU3RhdGljVmVydGV4QnVmZmVyID0gbmV3IFN0YXRpY1ZlcnRleEJ1ZmZlcihn
ZXREZXZpY2UoKSk7CisgICAgICAgICAgICBtU3RhdGljSW5kZXhCdWZmZXIgPSBuZXcgU3RhdGlj
SW5kZXhCdWZmZXIoZ2V0RGV2aWNlKCkpOworICAgICAgICB9CisgICAgfQogfQogCiB9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQnVmZmVyLmgJKHJl
dmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9C
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTAgQEAgY2xhc3MgQnVmZmVyIDog
cHVibGljIFJlZkNvdW50T2JqZWN0CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
U2l6ZTsgfQogICAgIEdMZW51bSB1c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1Vc2FnZTsgfQogCi0g
ICAgU3RhdGljVmVydGV4QnVmZmVyICpnZXRWZXJ0ZXhCdWZmZXIoKTsKLSAgICBTdGF0aWNJbmRl
eEJ1ZmZlciAqZ2V0SW5kZXhCdWZmZXIoKTsKKyAgICBTdGF0aWNWZXJ0ZXhCdWZmZXIgKmdldFN0
YXRpY1ZlcnRleEJ1ZmZlcigpOworICAgIFN0YXRpY0luZGV4QnVmZmVyICpnZXRTdGF0aWNJbmRl
eEJ1ZmZlcigpOwogICAgIHZvaWQgaW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsKKyAgICB2b2lkIHBy
b21vdGVTdGF0aWNVc2FnZShpbnQgZGF0YVNpemUpOwogCiAgIHByaXZhdGU6CiAgICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKEJ1ZmZlcik7CkBAIC01MCw4ICs1MSw5IEBAIGNsYXNzIEJ1ZmZl
ciA6IHB1YmxpYyBSZWZDb3VudE9iamVjdAogICAgIHNpemVfdCBtU2l6ZTsKICAgICBHTGVudW0g
bVVzYWdlOwogCi0gICAgU3RhdGljVmVydGV4QnVmZmVyICptVmVydGV4QnVmZmVyOwotICAgIFN0
YXRpY0luZGV4QnVmZmVyICptSW5kZXhCdWZmZXI7CisgICAgU3RhdGljVmVydGV4QnVmZmVyICpt
U3RhdGljVmVydGV4QnVmZmVyOworICAgIFN0YXRpY0luZGV4QnVmZmVyICptU3RhdGljSW5kZXhC
dWZmZXI7CisgICAgc2l6ZV90IG1Vbm1vZGlmaWVkRGF0YVVzZTsKIH07CiAKIH0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQ29udGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmNwcAko
cmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHly
aWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0yNSwxNyArMjUsMjMgQEAKICNpbmNsdWRlICJs
aWJHTEVTdjIvUmVuZGVyQnVmZmVyLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL1NoYWRlci5oIgog
I2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL2dlb21l
dHJ5L1ZlcnRleERhdGFNYW5hZ2VyLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL2dlb21ldHJ5L0lu
ZGV4RGF0YU1hbmFnZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVmVydGV4RGF0YU1hbmFnZXIu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvSW5kZXhEYXRhTWFuYWdlci5oIgogCiAjdW5kZWYgbmVh
cgogI3VuZGVmIGZhcgogCituYW1lc3BhY2UKK3sKKyAgICBlbnVtIHsgQ0xPU0lOR19JTkRFWF9C
VUZGRVJfU0laRSA9IDQwOTYgfTsKK30KKwogbmFtZXNwYWNlIGdsCiB7Ci1Db250ZXh0OjpDb250
ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNv
bnRleHQpCi0gICAgOiBtQ29uZmlnKGNvbmZpZykKK0NvbnRleHQ6OkNvbnRleHQoY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZywgY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCkgOiBtQ29u
ZmlnKGNvbmZpZykKIHsKKyAgICBtRmVuY2VIYW5kbGVBbGxvY2F0b3Iuc2V0QmFzZUhhbmRsZSgw
KTsKKwogICAgIHNldENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7CiAKICAgICBt
U3RhdGUuZGVwdGhDbGVhclZhbHVlID0gMS4wZjsKQEAgLTE0MCw2ICsxNDYsNyBAQCBDb250ZXh0
OjpDb250ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25mCiAgICAgbVZlcnRleERhdGFNYW5hZ2Vy
ID0gTlVMTDsKICAgICBtSW5kZXhEYXRhTWFuYWdlciA9IE5VTEw7CiAgICAgbUJsaXQgPSBOVUxM
OworICAgIG1DbG9zaW5nSUIgPSBOVUxMOwogCiAgICAgbUludmFsaWRFbnVtID0gZmFsc2U7CiAg
ICAgbUludmFsaWRWYWx1ZSA9IGZhbHNlOwpAQCAtMTg0LDE1ICsxOTEsMTUgQEAgQ29udGV4dDo6
fkNvbnRleHQoKQogICAgICAgICBtTXVsdGlTYW1wbGVTdXBwb3J0LmVyYXNlKG1NdWx0aVNhbXBs
ZVN1cHBvcnQuYmVnaW4oKSk7CiAgICAgfQogCi0gICAgZm9yIChpbnQgdHlwZSA9IDA7IHR5cGUg
PCBTQU1QTEVSX1RZUEVfQ09VTlQ7IHR5cGUrKykKKyAgICBmb3IgKGludCB0eXBlID0gMDsgdHlw
ZSA8IFRFWFRVUkVfVFlQRV9DT1VOVDsgdHlwZSsrKQogICAgIHsKLSAgICAgICAgZm9yIChpbnQg
c2FtcGxlciA9IDA7IHNhbXBsZXIgPCBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUzsgc2FtcGxlcisr
KQorICAgICAgICBmb3IgKGludCBzYW1wbGVyID0gMDsgc2FtcGxlciA8IE1BWF9DT01CSU5FRF9U
RVhUVVJFX0lNQUdFX1VOSVRTX1ZURjsgc2FtcGxlcisrKQogICAgICAgICB7CiAgICAgICAgICAg
ICBtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxlcl0uc2V0KE5VTEwpOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgZm9yIChpbnQgdHlwZSA9IDA7IHR5cGUgPCBTQU1QTEVSX1RZUEVf
Q09VTlQ7IHR5cGUrKykKKyAgICBmb3IgKGludCB0eXBlID0gMDsgdHlwZSA8IFRFWFRVUkVfVFlQ
RV9DT1VOVDsgdHlwZSsrKQogICAgIHsKICAgICAgICAgbUluY29tcGxldGVUZXh0dXJlc1t0eXBl
XS5zZXQoTlVMTCk7CiAgICAgfQpAQCAtMjEyLDYgKzIxOSw3IEBAIENvbnRleHQ6On5Db250ZXh0
KCkKICAgICBkZWxldGUgbVZlcnRleERhdGFNYW5hZ2VyOwogICAgIGRlbGV0ZSBtSW5kZXhEYXRh
TWFuYWdlcjsKICAgICBkZWxldGUgbUJsaXQ7CisgICAgZGVsZXRlIG1DbG9zaW5nSUI7CiAKICAg
ICBpZiAobU1hc2tlZENsZWFyU2F2ZWRTdGF0ZSkKICAgICB7CkBAIC0yMzQsNiArMjQyLDggQEAg
dm9pZCBDb250ZXh0OjptYWtlQ3VycmVudChlZ2w6OkRpc3BsYXkgKgogICAgICAgICBtQmxpdCA9
IG5ldyBCbGl0KHRoaXMpOwogCiAgICAgICAgIG1TdXBwb3J0c1NoYWRlck1vZGVsMyA9IG1EZXZp
Y2VDYXBzLlBpeGVsU2hhZGVyVmVyc2lvbiA9PSBEM0RQU19WRVJTSU9OKDMsIDApOworICAgICAg
ICBtU3VwcG9ydHNWZXJ0ZXhUZXh0dXJlID0gZGlzcGxheS0+Z2V0VmVydGV4VGV4dHVyZVN1cHBv
cnQoKTsKKyAgICAgICAgbVN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZSA9IGRpc3BsYXktPmdldE5v
blBvd2VyMlRleHR1cmVTdXBwb3J0KCk7CiAKICAgICAgICAgbU1heFRleHR1cmVEaW1lbnNpb24g
PSBzdGQ6Om1pbihzdGQ6Om1pbigoaW50KW1EZXZpY2VDYXBzLk1heFRleHR1cmVXaWR0aCwgKGlu
dCltRGV2aWNlQ2Fwcy5NYXhUZXh0dXJlSGVpZ2h0KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoaW50KWdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9TSVpF
KTsKQEAgLTMxOSwxMSArMzI5LDIxIEBAIHZvaWQgQ29udGV4dDo6bWFrZUN1cnJlbnQoZWdsOjpE
aXNwbGF5ICoKIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgYWxsIG9mIHRoZSBzdGF0ZS1yZWxh
dGVkIGRpcnR5IGZsYWdzLCBzbyB0aGF0IGFsbCBzdGF0ZSBpcyBzZXQgZHVyaW5nIG5leHQgcHJl
LWRyYXcuCiB2b2lkIENvbnRleHQ6Om1hcmtBbGxTdGF0ZURpcnR5KCkKIHsKKyAgICBmb3IgKGlu
dCB0ID0gMDsgdCA8IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTOyB0KyspCisgICAgeworICAgICAg
ICBtQXBwbGllZFRleHR1cmVTZXJpYWxQU1t0XSA9IDA7CisgICAgfQorCisgICAgZm9yIChpbnQg
dCA9IDA7IHQgPCBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGOyB0KyspCisgICAg
eworICAgICAgICBtQXBwbGllZFRleHR1cmVTZXJpYWxWU1t0XSA9IDA7CisgICAgfQorCisgICAg
bUFwcGxpZWRQcm9ncmFtU2VyaWFsID0gMDsKICAgICBtQXBwbGllZFJlbmRlclRhcmdldFNlcmlh
bCA9IDA7CiAgICAgbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbCA9IDA7CiAgICAgbUFwcGxpZWRT
dGVuY2lsYnVmZmVyU2VyaWFsID0gMDsKICAgICBtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQgPSBm
YWxzZTsKLSAgICBtQXBwbGllZFByb2dyYW0gPSAwOwogCiAgICAgbUNsZWFyU3RhdGVEaXJ0eSA9
IHRydWU7CiAgICAgbUN1bGxTdGF0ZURpcnR5ID0gdHJ1ZTsKQEAgLTcxMCw3ICs3MzAsNyBAQCB2
b2lkIENvbnRleHQ6OnNldERlcHRoTWFzayhib29sIG1hc2spCiAgICAgfQogfQogCi12b2lkIENv
bnRleHQ6OnNldEFjdGl2ZVNhbXBsZXIoaW50IGFjdGl2ZSkKK3ZvaWQgQ29udGV4dDo6c2V0QWN0
aXZlU2FtcGxlcih1bnNpZ25lZCBpbnQgYWN0aXZlKQogewogICAgIG1TdGF0ZS5hY3RpdmVTYW1w
bGVyID0gYWN0aXZlOwogfQpAQCAtODE0LDEyICs4MzQsNyBAQCBHTHVpbnQgQ29udGV4dDo6Y3Jl
YXRlUmVuZGVyYnVmZmVyKCkKIC8vIFJldHVybnMgYW4gdW51c2VkIGZyYW1lYnVmZmVyIG5hbWUK
IEdMdWludCBDb250ZXh0OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7Ci0gICAgdW5zaWduZWQgaW50
IGhhbmRsZSA9IDE7Ci0KLSAgICB3aGlsZSAobUZyYW1lYnVmZmVyTWFwLmZpbmQoaGFuZGxlKSAh
PSBtRnJhbWVidWZmZXJNYXAuZW5kKCkpCi0gICAgewotICAgICAgICBoYW5kbGUrKzsKLSAgICB9
CisgICAgR0x1aW50IGhhbmRsZSA9IG1GcmFtZWJ1ZmZlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0
ZSgpOwogCiAgICAgbUZyYW1lYnVmZmVyTWFwW2hhbmRsZV0gPSBOVUxMOwogCkBAIC04MjgsMTIg
Kzg0Myw3IEBAIEdMdWludCBDb250ZXh0OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiAKIEdMdWludCBD
b250ZXh0OjpjcmVhdGVGZW5jZSgpCiB7Ci0gICAgdW5zaWduZWQgaW50IGhhbmRsZSA9IDA7Ci0K
LSAgICB3aGlsZSAobUZlbmNlTWFwLmZpbmQoaGFuZGxlKSAhPSBtRmVuY2VNYXAuZW5kKCkpCi0g
ICAgewotICAgICAgICBoYW5kbGUrKzsKLSAgICB9CisgICAgR0x1aW50IGhhbmRsZSA9IG1GZW5j
ZUhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwogCiAgICAgbUZlbmNlTWFwW2hhbmRsZV0gPSBu
ZXcgRmVuY2U7CiAKQEAgLTg4OCw2ICs4OTgsNyBAQCB2b2lkIENvbnRleHQ6OmRlbGV0ZUZyYW1l
YnVmZmVyKEdMdWludCBmCiAgICAgewogICAgICAgICBkZXRhY2hGcmFtZWJ1ZmZlcihmcmFtZWJ1
ZmZlcik7CiAKKyAgICAgICAgbUZyYW1lYnVmZmVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UoZnJh
bWVidWZmZXJPYmplY3QtPmZpcnN0KTsKICAgICAgICAgZGVsZXRlIGZyYW1lYnVmZmVyT2JqZWN0
LT5zZWNvbmQ7CiAgICAgICAgIG1GcmFtZWJ1ZmZlck1hcC5lcmFzZShmcmFtZWJ1ZmZlck9iamVj
dCk7CiAgICAgfQpAQCAtODk5LDYgKzkxMCw3IEBAIHZvaWQgQ29udGV4dDo6ZGVsZXRlRmVuY2Uo
R0x1aW50IGZlbmNlKQogCiAgICAgaWYgKGZlbmNlT2JqZWN0ICE9IG1GZW5jZU1hcC5lbmQoKSkK
ICAgICB7CisgICAgICAgIG1GZW5jZUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKGZlbmNlT2JqZWN0
LT5maXJzdCk7CiAgICAgICAgIGRlbGV0ZSBmZW5jZU9iamVjdC0+c2Vjb25kOwogICAgICAgICBt
RmVuY2VNYXAuZXJhc2UoZmVuY2VPYmplY3QpOwogICAgIH0KQEAgLTk1NSwxNiArOTY3LDE2IEBA
IHZvaWQgQ29udGV4dDo6YmluZEVsZW1lbnRBcnJheUJ1ZmZlcih1bnMKIAogdm9pZCBDb250ZXh0
OjpiaW5kVGV4dHVyZTJEKEdMdWludCB0ZXh0dXJlKQogewotICAgIG1SZXNvdXJjZU1hbmFnZXIt
PmNoZWNrVGV4dHVyZUFsbG9jYXRpb24odGV4dHVyZSwgU0FNUExFUl8yRCk7CisgICAgbVJlc291
cmNlTWFuYWdlci0+Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbih0ZXh0dXJlLCBURVhUVVJFXzJEKTsK
IAotICAgIG1TdGF0ZS5zYW1wbGVyVGV4dHVyZVtTQU1QTEVSXzJEXVttU3RhdGUuYWN0aXZlU2Ft
cGxlcl0uc2V0KGdldFRleHR1cmUodGV4dHVyZSkpOworICAgIG1TdGF0ZS5zYW1wbGVyVGV4dHVy
ZVtURVhUVVJFXzJEXVttU3RhdGUuYWN0aXZlU2FtcGxlcl0uc2V0KGdldFRleHR1cmUodGV4dHVy
ZSkpOwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRUZXh0dXJlQ3ViZU1hcChHTHVpbnQgdGV4dHVy
ZSkKIHsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1RleHR1cmVBbGxvY2F0aW9uKHRleHR1
cmUsIFNBTVBMRVJfQ1VCRSk7CisgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tUZXh0dXJlQWxs
b2NhdGlvbih0ZXh0dXJlLCBURVhUVVJFX0NVQkUpOwogCi0gICAgbVN0YXRlLnNhbXBsZXJUZXh0
dXJlW1NBTVBMRVJfQ1VCRV1bbVN0YXRlLmFjdGl2ZVNhbXBsZXJdLnNldChnZXRUZXh0dXJlKHRl
eHR1cmUpKTsKKyAgICBtU3RhdGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV9DVUJFXVttU3RhdGUu
YWN0aXZlU2FtcGxlcl0uc2V0KGdldFRleHR1cmUodGV4dHVyZSkpOwogfQogCiB2b2lkIENvbnRl
eHQ6OmJpbmRSZWFkRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQpAQCAtMTA3MywxNSAr
MTA4NSwxNSBAQCBQcm9ncmFtICpDb250ZXh0OjpnZXRDdXJyZW50UHJvZ3JhbSgpCiAKIFRleHR1
cmUyRCAqQ29udGV4dDo6Z2V0VGV4dHVyZTJEKCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGV4dHVyZTJEKj4oZ2V0U2FtcGxlclRleHR1cmUobVN0YXRlLmFjdGl2ZVNhbXBsZXIsIFNBTVBM
RVJfMkQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZTJEKj4oZ2V0U2FtcGxlclRl
eHR1cmUobVN0YXRlLmFjdGl2ZVNhbXBsZXIsIFRFWFRVUkVfMkQpKTsKIH0KIAogVGV4dHVyZUN1
YmVNYXAgKkNvbnRleHQ6OmdldFRleHR1cmVDdWJlTWFwKCkKIHsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VGV4dHVyZUN1YmVNYXAqPihnZXRTYW1wbGVyVGV4dHVyZShtU3RhdGUuYWN0aXZlU2Ft
cGxlciwgU0FNUExFUl9DVUJFKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVDdWJl
TWFwKj4oZ2V0U2FtcGxlclRleHR1cmUobVN0YXRlLmFjdGl2ZVNhbXBsZXIsIFRFWFRVUkVfQ1VC
RSkpOwogfQogCi1UZXh0dXJlICpDb250ZXh0OjpnZXRTYW1wbGVyVGV4dHVyZSh1bnNpZ25lZCBp
bnQgc2FtcGxlciwgU2FtcGxlclR5cGUgdHlwZSkKK1RleHR1cmUgKkNvbnRleHQ6OmdldFNhbXBs
ZXJUZXh0dXJlKHVuc2lnbmVkIGludCBzYW1wbGVyLCBUZXh0dXJlVHlwZSB0eXBlKQogewogICAg
IEdMdWludCB0ZXhpZCA9IG1TdGF0ZS5zYW1wbGVyVGV4dHVyZVt0eXBlXVtzYW1wbGVyXS5pZCgp
OwogCkBAIC0xMDkwLDggKzExMDIsOCBAQCBUZXh0dXJlICpDb250ZXh0OjpnZXRTYW1wbGVyVGV4
dHVyZSh1bnNpCiAgICAgICAgIHN3aXRjaCAodHlwZSkKICAgICAgICAgewogICAgICAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgY2FzZSBTQU1QTEVSXzJEOiByZXR1cm4g
bVRleHR1cmUyRFplcm8uZ2V0KCk7Ci0gICAgICAgICAgY2FzZSBTQU1QTEVSX0NVQkU6IHJldHVy
biBtVGV4dHVyZUN1YmVNYXBaZXJvLmdldCgpOworICAgICAgICAgIGNhc2UgVEVYVFVSRV8yRDog
cmV0dXJuIG1UZXh0dXJlMkRaZXJvLmdldCgpOworICAgICAgICAgIGNhc2UgVEVYVFVSRV9DVUJF
OiByZXR1cm4gbVRleHR1cmVDdWJlTWFwWmVyby5nZXQoKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTE4Myw4ICsxMTk1LDggQEAgYm9vbCBDb250ZXh0OjpnZXRJbnRlZ2VydihHTGVudW0gcG5h
bWUsIAogICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlM6ICAgICAgICAgICAgICAgKnBh
cmFtcyA9IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOiAgICAgICAqcGFyYW1zID0gZ2w6
Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOyAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xf
TUFYX1ZBUllJTkdfVkVDVE9SUzogICAgICAgICAgICAgICpwYXJhbXMgPSBnZXRNYXhpbXVtVmFy
eWluZ1ZlY3RvcnMoKTsgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9NQVhfQ09NQklO
RURfVEVYVFVSRV9JTUFHRV9VTklUUzogKnBhcmFtcyA9IGdsOjpNQVhfQ09NQklORURfVEVYVFVS
RV9JTUFHRV9VTklUUzsgYnJlYWs7Ci0gICAgICBjYXNlIEdMX01BWF9WRVJURVhfVEVYVFVSRV9J
TUFHRV9VTklUUzogICAqcGFyYW1zID0gZ2w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklU
UzsgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5J
VFM6ICpwYXJhbXMgPSBnZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpOyBicmVh
azsKKyAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOiAgICpwYXJh
bXMgPSBnZXRNYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKTsgIGJyZWFrOwogICAgICAg
Y2FzZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUzogICAgICAgICAgKnBhcmFtcyA9IGdsOjpN
QVhfVEVYVFVSRV9JTUFHRV9VTklUUzsgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX01B
WF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6ICAgICAqcGFyYW1zID0gZ2V0TWF4aW11bUZyYWdt
ZW50VW5pZm9ybVZlY3RvcnMoKTsgICBicmVhazsKICAgICAgIGNhc2UgR0xfTUFYX1JFTkRFUkJV
RkZFUl9TSVpFOiAgICAgICAgICAgICpwYXJhbXMgPSBnZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGlt
ZW5zaW9uKCk7ICAgIGJyZWFrOwpAQCAtMTM3MiwyNCArMTM4NCwyNCBAQCBib29sIENvbnRleHQ6
OmdldEludGVnZXJ2KEdMZW51bSBwbmFtZSwgCiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBH
TF9URVhUVVJFX0JJTkRJTkdfMkQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtU3RhdGUu
YWN0aXZlU2FtcGxlciA8IDAgfHwgbVN0YXRlLmFjdGl2ZVNhbXBsZXIgPiBnbDo6TUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFMgLSAxKQorICAgICAgICAgICAgaWYgKG1TdGF0ZS5hY3RpdmVTYW1wbGVy
IDwgMCB8fCBtU3RhdGUuYWN0aXZlU2FtcGxlciA+IGdldE1heGltdW1Db21iaW5lZFRleHR1cmVJ
bWFnZVVuaXRzKCkgLSAxKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuc2FtcGxlclRleHR1cmVb
U0FNUExFUl8yRF1bbVN0YXRlLmFjdGl2ZVNhbXBsZXJdLmlkKCk7CisgICAgICAgICAgICAqcGFy
YW1zID0gbVN0YXRlLnNhbXBsZXJUZXh0dXJlW1RFWFRVUkVfMkRdW21TdGF0ZS5hY3RpdmVTYW1w
bGVyXS5pZCgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9URVhU
VVJFX0JJTkRJTkdfQ1VCRV9NQVA6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtU3RhdGUu
YWN0aXZlU2FtcGxlciA8IDAgfHwgbVN0YXRlLmFjdGl2ZVNhbXBsZXIgPiBnbDo6TUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFMgLSAxKQorICAgICAgICAgICAgaWYgKG1TdGF0ZS5hY3RpdmVTYW1wbGVy
IDwgMCB8fCBtU3RhdGUuYWN0aXZlU2FtcGxlciA+IGdldE1heGltdW1Db21iaW5lZFRleHR1cmVJ
bWFnZVVuaXRzKCkgLSAxKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuc2FtcGxlclRleHR1cmVb
U0FNUExFUl9DVUJFXVttU3RhdGUuYWN0aXZlU2FtcGxlcl0uaWQoKTsKKyAgICAgICAgICAgICpw
YXJhbXMgPSBtU3RhdGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV9DVUJFXVttU3RhdGUuYWN0aXZl
U2FtcGxlcl0uaWQoKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6
CkBAIC0xNTcyLDkgKzE1ODQsNyBAQCBib29sIENvbnRleHQ6OmFwcGx5UmVuZGVyVGFyZ2V0KGJv
b2wgaWduCiAKICAgICBpZiAoIWZyYW1lYnVmZmVyT2JqZWN0IHx8IGZyYW1lYnVmZmVyT2JqZWN0
LT5jb21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKICAgICB7Ci0gICAg
ICAgIGVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKLQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVS
X09QRVJBVElPTiwgZmFsc2UpOwogICAgIH0KIAogICAgIElEaXJlY3QzRFN1cmZhY2U5ICpyZW5k
ZXJUYXJnZXQgPSBmcmFtZWJ1ZmZlck9iamVjdC0+Z2V0UmVuZGVyVGFyZ2V0KCk7CkBAIC0xNjQ3
LDEwICsxNjU3LDExIEBAIGJvb2wgQ29udGV4dDo6YXBwbHlSZW5kZXJUYXJnZXQoYm9vbCBpZ24K
ICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgdmlld3BvcnQuWCA9IHN0ZDo6bWF4KG1T
dGF0ZS52aWV3cG9ydFgsIDApOwotICAgICAgICB2aWV3cG9ydC5ZID0gc3RkOjptYXgobVN0YXRl
LnZpZXdwb3J0WSwgMCk7Ci0gICAgICAgIHZpZXdwb3J0LldpZHRoID0gc3RkOjptaW4obVN0YXRl
LnZpZXdwb3J0V2lkdGgsIChpbnQpZGVzYy5XaWR0aCAtIChpbnQpdmlld3BvcnQuWCk7Ci0gICAg
ICAgIHZpZXdwb3J0LkhlaWdodCA9IHN0ZDo6bWluKG1TdGF0ZS52aWV3cG9ydEhlaWdodCwgKGlu
dClkZXNjLkhlaWdodCAtIChpbnQpdmlld3BvcnQuWSk7CisgICAgICAgIFJFQ1QgcmVjdCA9IHRy
YW5zZm9ybVBpeGVsUmVjdChtU3RhdGUudmlld3BvcnRYLCBtU3RhdGUudmlld3BvcnRZLCBtU3Rh
dGUudmlld3BvcnRXaWR0aCwgbVN0YXRlLnZpZXdwb3J0SGVpZ2h0LCBkZXNjLkhlaWdodCk7Cisg
ICAgICAgIHZpZXdwb3J0LlggPSBjbGFtcChyZWN0LmxlZnQsIDBMLCBzdGF0aWNfY2FzdDxMT05H
PihkZXNjLldpZHRoKSk7CisgICAgICAgIHZpZXdwb3J0LlkgPSBjbGFtcChyZWN0LnRvcCwgMEws
IHN0YXRpY19jYXN0PExPTkc+KGRlc2MuSGVpZ2h0KSk7CisgICAgICAgIHZpZXdwb3J0LldpZHRo
ID0gY2xhbXAocmVjdC5yaWdodCAtIHJlY3QubGVmdCwgMEwsIHN0YXRpY19jYXN0PExPTkc+KGRl
c2MuV2lkdGgpIC0gc3RhdGljX2Nhc3Q8TE9ORz4odmlld3BvcnQuWCkpOworICAgICAgICB2aWV3
cG9ydC5IZWlnaHQgPSBjbGFtcChyZWN0LmJvdHRvbSAtIHJlY3QudG9wLCAwTCwgc3RhdGljX2Nh
c3Q8TE9ORz4oZGVzYy5IZWlnaHQpIC0gc3RhdGljX2Nhc3Q8TE9ORz4odmlld3BvcnQuWSkpOwog
ICAgICAgICB2aWV3cG9ydC5NaW5aID0gek5lYXI7CiAgICAgICAgIHZpZXdwb3J0Lk1heFogPSB6
RmFyOwogICAgIH0KQEAgLTE2NjYsMTIgKzE2NzcsMTEgQEAgYm9vbCBDb250ZXh0OjphcHBseVJl
bmRlclRhcmdldChib29sIGlnbgogICAgIHsKICAgICAgICAgaWYgKG1TdGF0ZS5zY2lzc29yVGVz
dCkKICAgICAgICAgewotICAgICAgICAgICAgUkVDVCByZWN0ID0ge21TdGF0ZS5zY2lzc29yWCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuc2Npc3NvclksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgbVN0YXRlLnNjaXNzb3JYICsgbVN0YXRlLnNjaXNzb3JXaWR0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBtU3RhdGUuc2Npc3NvclkgKyBtU3RhdGUuc2Npc3NvckhlaWdo
dH07Ci0gICAgICAgICAgICByZWN0LnJpZ2h0ID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8VUlOVD4o
cmVjdC5yaWdodCksIGRlc2MuV2lkdGgpOwotICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBzdGQ6
Om1pbihzdGF0aWNfY2FzdDxVSU5UPihyZWN0LmJvdHRvbSksIGRlc2MuSGVpZ2h0KTsKKyAgICAg
ICAgICAgIFJFQ1QgcmVjdCA9IHRyYW5zZm9ybVBpeGVsUmVjdChtU3RhdGUuc2Npc3NvclgsIG1T
dGF0ZS5zY2lzc29yWSwgbVN0YXRlLnNjaXNzb3JXaWR0aCwgbVN0YXRlLnNjaXNzb3JIZWlnaHQs
IGRlc2MuSGVpZ2h0KTsKKyAgICAgICAgICAgIHJlY3QubGVmdCA9IGNsYW1wKHJlY3QubGVmdCwg
MEwsIHN0YXRpY19jYXN0PExPTkc+KGRlc2MuV2lkdGgpKTsKKyAgICAgICAgICAgIHJlY3QudG9w
ID0gY2xhbXAocmVjdC50b3AsIDBMLCBzdGF0aWNfY2FzdDxMT05HPihkZXNjLkhlaWdodCkpOwor
ICAgICAgICAgICAgcmVjdC5yaWdodCA9IGNsYW1wKHJlY3QucmlnaHQsIDBMLCBzdGF0aWNfY2Fz
dDxMT05HPihkZXNjLldpZHRoKSk7CisgICAgICAgICAgICByZWN0LmJvdHRvbSA9IGNsYW1wKHJl
Y3QuYm90dG9tLCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4oZGVzYy5IZWlnaHQpKTsKICAgICAgICAg
ICAgIGRldmljZS0+U2V0U2Npc3NvclJlY3QoJnJlY3QpOwogICAgICAgICAgICAgZGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19TQ0lTU09SVEVTVEVOQUJMRSwgVFJVRSk7CiAgICAgICAgIH0K
QEAgLTE2ODgsNyArMTY5OCw3IEBAIGJvb2wgQ29udGV4dDo6YXBwbHlSZW5kZXJUYXJnZXQoYm9v
bCBpZ24KICAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldEN1cnJlbnRQcm9ncmFt
KCk7CiAKICAgICAgICAgR0xpbnQgaGFsZlBpeGVsU2l6ZSA9IHByb2dyYW1PYmplY3QtPmdldER4
SGFsZlBpeGVsU2l6ZUxvY2F0aW9uKCk7Ci0gICAgICAgIEdMZmxvYXQgeHlbMl0gPSB7MS4wZiAv
IHZpZXdwb3J0LldpZHRoLCAxLjBmIC8gdmlld3BvcnQuSGVpZ2h0fTsKKyAgICAgICAgR0xmbG9h
dCB4eVsyXSA9IHsxLjBmIC8gdmlld3BvcnQuV2lkdGgsIC0xLjBmIC8gdmlld3BvcnQuSGVpZ2h0
fTsKICAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybTJmdihoYWxmUGl4ZWxTaXplLCAx
LCB4eSk7CiAKICAgICAgICAgR0xpbnQgdmlld3BvcnQgPSBwcm9ncmFtT2JqZWN0LT5nZXREeFZp
ZXdwb3J0TG9jYXRpb24oKTsKQEAgLTE3MTUsMjEgKzE3MjUsMzIgQEAgdm9pZCBDb250ZXh0Ojph
cHBseVN0YXRlKEdMZW51bSBkcmF3TW9kZQogICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9
IGdldERldmljZSgpOwogICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRDdXJyZW50UHJv
Z3JhbSgpOwogCisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gZ2V0RHJhd0Zy
YW1lYnVmZmVyKCk7CisKKyAgICBHTGVudW0gYWRqdXN0ZWRGcm9udEZhY2UgPSBhZGp1c3RXaW5k
aW5nKG1TdGF0ZS5mcm9udEZhY2UpOworCiAgICAgR0xpbnQgZnJvbnRDQ1cgPSBwcm9ncmFtT2Jq
ZWN0LT5nZXREeEZyb250Q0NXTG9jYXRpb24oKTsKLSAgICBHTGludCBjY3cgPSAobVN0YXRlLmZy
b250RmFjZSA9PSBHTF9DQ1cpOworICAgIEdMaW50IGNjdyA9IChhZGp1c3RlZEZyb250RmFjZSA9
PSBHTF9DQ1cpOwogICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm0xaXYoZnJvbnRDQ1csIDEs
ICZjY3cpOwogCiAgICAgR0xpbnQgcG9pbnRzT3JMaW5lcyA9IHByb2dyYW1PYmplY3QtPmdldER4
UG9pbnRzT3JMaW5lc0xvY2F0aW9uKCk7CiAgICAgR0xpbnQgYWx3YXlzRnJvbnQgPSAhaXNUcmlh
bmdsZU1vZGUoZHJhd01vZGUpOwogICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm0xaXYocG9p
bnRzT3JMaW5lcywgMSwgJmFsd2F5c0Zyb250KTsKIAotICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlck9iamVjdCA9IGdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIGVnbDo6RGlzcGxheSAqZGlz
cGxheSA9IGdldERpc3BsYXkoKTsKKyAgICBEM0RBREFQVEVSX0lERU5USUZJRVI5ICppZGVudGlm
aWVyID0gZGlzcGxheS0+Z2V0QWRhcHRlcklkZW50aWZpZXIoKTsKKyAgICBib29sIHplcm9Db2xv
ck1hc2tBbGxvd2VkID0gaWRlbnRpZmllci0+VmVuZG9ySWQgIT0gMHgxMDAyOworICAgIC8vIEFw
cGFyZW50bHkgc29tZSBBVEkgY2FyZHMgaGF2ZSBhIGJ1ZyB3aGVyZSBhIGRyYXcgd2l0aCBhIHpl
cm8gY29sb3IKKyAgICAvLyB3cml0ZSBtYXNrIGNhbiBjYXVzZSBsYXRlciBkcmF3cyB0byBoYXZl
IGluY29ycmVjdCByZXN1bHRzLiBJbnN0ZWFkLAorICAgIC8vIHNldCBhIG5vbnplcm8gY29sb3Ig
d3JpdGUgbWFzayBidXQgbW9kaWZ5IHRoZSBibGVuZCBzdGF0ZSBzbyB0aGF0IG5vCisgICAgLy8g
ZHJhd2luZyBpcyBkb25lLgorICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXBy
b2plY3QvaXNzdWVzL2RldGFpbD9pZD0xNjkKIAogICAgIGlmIChtQ3VsbFN0YXRlRGlydHkgfHwg
bUZyb250RmFjZURpcnR5KQogICAgIHsKICAgICAgICAgaWYgKG1TdGF0ZS5jdWxsRmFjZSkKICAg
ICAgICAgewotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DVUxMTU9E
RSwgZXMyZHg6OkNvbnZlcnRDdWxsTW9kZShtU3RhdGUuY3VsbE1vZGUsIG1TdGF0ZS5mcm9udEZh
Y2UpKTsKKyAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ1VMTE1PREUs
IGVzMmR4OjpDb252ZXJ0Q3VsbE1vZGUobVN0YXRlLmN1bGxNb2RlLCBhZGp1c3RlZEZyb250RmFj
ZSkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtMTc0MSw3ICsxNzYy
LDcgQEAgdm9pZCBDb250ZXh0OjphcHBseVN0YXRlKEdMZW51bSBkcmF3TW9kZQogCiAgICAgaWYg
KG1EZXB0aFN0YXRlRGlydHkpCiAgICAgewotICAgICAgICBpZiAobVN0YXRlLmRlcHRoVGVzdCAm
JiBmcmFtZWJ1ZmZlck9iamVjdC0+Z2V0RGVwdGhidWZmZXJUeXBlKCkgIT0gR0xfTk9ORSkKKyAg
ICAgICAgaWYgKG1TdGF0ZS5kZXB0aFRlc3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIGRldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwgRDNEWkJfVFJVRSk7CiAgICAgICAgICAg
ICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pGVU5DLCBlczJkeDo6Q29udmVydENvbXBh
cmlzb24obVN0YXRlLmRlcHRoRnVuYykpOwpAQCAtMTc1NCw2ICsxNzc1LDEyIEBAIHZvaWQgQ29u
dGV4dDo6YXBwbHlTdGF0ZShHTGVudW0gZHJhd01vZGUKICAgICAgICAgbURlcHRoU3RhdGVEaXJ0
eSA9IGZhbHNlOwogICAgIH0KIAorICAgIGlmICghemVyb0NvbG9yTWFza0FsbG93ZWQgJiYgKG1N
YXNrU3RhdGVEaXJ0eSB8fCBtQmxlbmRTdGF0ZURpcnR5KSkKKyAgICB7CisgICAgICAgIG1CbGVu
ZFN0YXRlRGlydHkgPSB0cnVlOworICAgICAgICBtTWFza1N0YXRlRGlydHkgPSB0cnVlOworICAg
IH0KKwogICAgIGlmIChtQmxlbmRTdGF0ZURpcnR5KQogICAgIHsKICAgICAgICAgaWYgKG1TdGF0
ZS5ibGVuZCkKQEAgLTE3ODYsNyArMTgxMyw2IEBAIHZvaWQgQ29udGV4dDo6YXBwbHlTdGF0ZShH
TGVudW0gZHJhd01vZGUKICAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX1NSQ0JMRU5EQUxQSEEsIGVzMmR4OjpDb252ZXJ0QmxlbmRGdW5jKG1TdGF0ZS5zb3VyY2VC
bGVuZEFscGhhKSk7CiAgICAgICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19ERVNUQkxFTkRBTFBIQSwgZXMyZHg6OkNvbnZlcnRCbGVuZEZ1bmMobVN0YXRlLmRlc3RCbGVu
ZEFscGhhKSk7CiAgICAgICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19C
TEVORE9QQUxQSEEsIGVzMmR4OjpDb252ZXJ0QmxlbmRPcChtU3RhdGUuYmxlbmRFcXVhdGlvbkFs
cGhhKSk7Ci0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsK
QEAgLTE4MjQsMzIgKzE4NTAsMzIgQEAgdm9pZCBDb250ZXh0OjphcHBseVN0YXRlKEdMZW51bSBk
cmF3TW9kZQogICAgICAgICAgICAgZ2w6OkRlcHRoU3RlbmNpbGJ1ZmZlciAqc3RlbmNpbGJ1ZmZl
ciA9IGZyYW1lYnVmZmVyT2JqZWN0LT5nZXRTdGVuY2lsYnVmZmVyKCk7CiAgICAgICAgICAgICBH
THVpbnQgbWF4U3RlbmNpbCA9ICgxIDw8IHN0ZW5jaWxidWZmZXItPmdldFN0ZW5jaWxTaXplKCkp
IC0gMTsKIAotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShtU3RhdGUuZnJvbnRG
YWNlID09IEdMX0NDVyA/IEQzRFJTX1NURU5DSUxXUklURU1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJ
TFdSSVRFTUFTSywgbVN0YXRlLnN0ZW5jaWxXcml0ZW1hc2spOwotICAgICAgICAgICAgZGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShtU3RhdGUuZnJvbnRGYWNlID09IEdMX0NDVyA/IEQzRFJTX1NURU5D
SUxGVU5DIDogRDNEUlNfQ0NXX1NURU5DSUxGVU5DLCAKKyAgICAgICAgICAgIGRldmljZS0+U2V0
UmVuZGVyU3RhdGUoYWRqdXN0ZWRGcm9udEZhY2UgPT0gR0xfQ0NXID8gRDNEUlNfU1RFTkNJTFdS
SVRFTUFTSyA6IEQzRFJTX0NDV19TVEVOQ0lMV1JJVEVNQVNLLCBtU3RhdGUuc3RlbmNpbFdyaXRl
bWFzayk7CisgICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVzdGVkRnJvbnRG
YWNlID09IEdMX0NDVyA/IEQzRFJTX1NURU5DSUxGVU5DIDogRDNEUlNfQ0NXX1NURU5DSUxGVU5D
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMyZHg6OkNvbnZlcnRDb21w
YXJpc29uKG1TdGF0ZS5zdGVuY2lsRnVuYykpOwogCi0gICAgICAgICAgICBkZXZpY2UtPlNldFJl
bmRlclN0YXRlKG1TdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ0NXID8gRDNEUlNfU1RFTkNJTFJFRiA6
IEQzRFJTX0NDV19TVEVOQ0lMUkVGLCAobVN0YXRlLnN0ZW5jaWxSZWYgPCAoR0xpbnQpbWF4U3Rl
bmNpbCkgPyBtU3RhdGUuc3RlbmNpbFJlZiA6IG1heFN0ZW5jaWwpOwotICAgICAgICAgICAgZGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShtU3RhdGUuZnJvbnRGYWNlID09IEdMX0NDVyA/IEQzRFJTX1NU
RU5DSUxNQVNLIDogRDNEUlNfQ0NXX1NURU5DSUxNQVNLLCBtU3RhdGUuc3RlbmNpbE1hc2spOwor
ICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZyb250RmFjZSA9PSBH
TF9DQ1cgPyBEM0RSU19TVEVOQ0lMUkVGIDogRDNEUlNfQ0NXX1NURU5DSUxSRUYsIChtU3RhdGUu
c3RlbmNpbFJlZiA8IChHTGludCltYXhTdGVuY2lsKSA/IG1TdGF0ZS5zdGVuY2lsUmVmIDogbWF4
U3RlbmNpbCk7CisgICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVzdGVkRnJv
bnRGYWNlID09IEdMX0NDVyA/IEQzRFJTX1NURU5DSUxNQVNLIDogRDNEUlNfQ0NXX1NURU5DSUxN
QVNLLCBtU3RhdGUuc3RlbmNpbE1hc2spOwogCi0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRl
clN0YXRlKG1TdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ0NXID8gRDNEUlNfU1RFTkNJTEZBSUwgOiBE
M0RSU19DQ1dfU1RFTkNJTEZBSUwsIAorICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShhZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DQ1cgPyBEM0RSU19TVEVOQ0lMRkFJTCA6IEQzRFJT
X0NDV19TVEVOQ0lMRkFJTCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVz
MmR4OjpDb252ZXJ0U3RlbmNpbE9wKG1TdGF0ZS5zdGVuY2lsRmFpbCkpOwotICAgICAgICAgICAg
ZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShtU3RhdGUuZnJvbnRGYWNlID09IEdMX0NDVyA/IEQzRFJT
X1NURU5DSUxaRkFJTCA6IEQzRFJTX0NDV19TVEVOQ0lMWkZBSUwsIAorICAgICAgICAgICAgZGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DQ1cgPyBEM0RSU19T
VEVOQ0lMWkZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTFpGQUlMLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXMyZHg6OkNvbnZlcnRTdGVuY2lsT3AobVN0YXRlLnN0ZW5jaWxQ
YXNzRGVwdGhGYWlsKSk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKG1TdGF0
ZS5mcm9udEZhY2UgPT0gR0xfQ0NXID8gRDNEUlNfU1RFTkNJTFBBU1MgOiBEM0RSU19DQ1dfU1RF
TkNJTFBBU1MsIAorICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZy
b250RmFjZSA9PSBHTF9DQ1cgPyBEM0RSU19TVEVOQ0lMUEFTUyA6IEQzRFJTX0NDV19TVEVOQ0lM
UEFTUywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzMmR4OjpDb252ZXJ0
U3RlbmNpbE9wKG1TdGF0ZS5zdGVuY2lsUGFzc0RlcHRoUGFzcykpOwogCi0gICAgICAgICAgICBk
ZXZpY2UtPlNldFJlbmRlclN0YXRlKG1TdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ1cgPyBEM0RSU19T
VEVOQ0lMV1JJVEVNQVNLIDogRDNEUlNfQ0NXX1NURU5DSUxXUklURU1BU0ssIG1TdGF0ZS5zdGVu
Y2lsQmFja1dyaXRlbWFzayk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKG1T
dGF0ZS5mcm9udEZhY2UgPT0gR0xfQ1cgPyBEM0RSU19TVEVOQ0lMRlVOQyA6IEQzRFJTX0NDV19T
VEVOQ0lMRlVOQywgCisgICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVzdGVk
RnJvbnRGYWNlID09IEdMX0NXID8gRDNEUlNfU1RFTkNJTFdSSVRFTUFTSyA6IEQzRFJTX0NDV19T
VEVOQ0lMV1JJVEVNQVNLLCBtU3RhdGUuc3RlbmNpbEJhY2tXcml0ZW1hc2spOworICAgICAgICAg
ICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShhZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DVyA/IEQz
RFJTX1NURU5DSUxGVU5DIDogRDNEUlNfQ0NXX1NURU5DSUxGVU5DLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXMyZHg6OkNvbnZlcnRDb21wYXJpc29uKG1TdGF0ZS5zdGVu
Y2lsQmFja0Z1bmMpKTsKIAotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShtU3Rh
dGUuZnJvbnRGYWNlID09IEdMX0NXID8gRDNEUlNfU1RFTkNJTFJFRiA6IEQzRFJTX0NDV19TVEVO
Q0lMUkVGLCAobVN0YXRlLnN0ZW5jaWxCYWNrUmVmIDwgKEdMaW50KW1heFN0ZW5jaWwpID8gbVN0
YXRlLnN0ZW5jaWxCYWNrUmVmIDogbWF4U3RlbmNpbCk7Ci0gICAgICAgICAgICBkZXZpY2UtPlNl
dFJlbmRlclN0YXRlKG1TdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ1cgPyBEM0RSU19TVEVOQ0lMTUFT
SyA6IEQzRFJTX0NDV19TVEVOQ0lMTUFTSywgbVN0YXRlLnN0ZW5jaWxCYWNrTWFzayk7CisgICAg
ICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVzdGVkRnJvbnRGYWNlID09IEdMX0NX
ID8gRDNEUlNfU1RFTkNJTFJFRiA6IEQzRFJTX0NDV19TVEVOQ0lMUkVGLCAobVN0YXRlLnN0ZW5j
aWxCYWNrUmVmIDwgKEdMaW50KW1heFN0ZW5jaWwpID8gbVN0YXRlLnN0ZW5jaWxCYWNrUmVmIDog
bWF4U3RlbmNpbCk7CisgICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKGFkanVzdGVk
RnJvbnRGYWNlID09IEdMX0NXID8gRDNEUlNfU1RFTkNJTE1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJ
TE1BU0ssIG1TdGF0ZS5zdGVuY2lsQmFja01hc2spOwogCi0gICAgICAgICAgICBkZXZpY2UtPlNl
dFJlbmRlclN0YXRlKG1TdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ1cgPyBEM0RSU19TVEVOQ0lMRkFJ
TCA6IEQzRFJTX0NDV19TVEVOQ0lMRkFJTCwgCisgICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRl
clN0YXRlKGFkanVzdGVkRnJvbnRGYWNlID09IEdMX0NXID8gRDNEUlNfU1RFTkNJTEZBSUwgOiBE
M0RSU19DQ1dfU1RFTkNJTEZBSUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlczJkeDo6Q29udmVydFN0ZW5jaWxPcChtU3RhdGUuc3RlbmNpbEJhY2tGYWlsKSk7Ci0gICAg
ICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKG1TdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ1cg
PyBEM0RSU19TVEVOQ0lMWkZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTFpGQUlMLCAKKyAgICAgICAg
ICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoYWRqdXN0ZWRGcm9udEZhY2UgPT0gR0xfQ1cgPyBE
M0RSU19TVEVOQ0lMWkZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTFpGQUlMLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXMyZHg6OkNvbnZlcnRTdGVuY2lsT3AobVN0YXRlLnN0
ZW5jaWxCYWNrUGFzc0RlcHRoRmFpbCkpOwotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShtU3RhdGUuZnJvbnRGYWNlID09IEdMX0NXID8gRDNEUlNfU1RFTkNJTFBBU1MgOiBEM0RS
U19DQ1dfU1RFTkNJTFBBU1MsIAorICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShh
ZGp1c3RlZEZyb250RmFjZSA9PSBHTF9DVyA/IEQzRFJTX1NURU5DSUxQQVNTIDogRDNEUlNfQ0NX
X1NURU5DSUxQQVNTLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXMyZHg6
OkNvbnZlcnRTdGVuY2lsT3AobVN0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcykpOwogICAg
ICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTE4NTgsMTIgKzE4ODQsMjcgQEAgdm9pZCBDb250ZXh0
OjphcHBseVN0YXRlKEdMZW51bSBkcmF3TW9kZQogICAgICAgICB9CiAKICAgICAgICAgbVN0ZW5j
aWxTdGF0ZURpcnR5ID0gZmFsc2U7CisgICAgICAgIG1Gcm9udEZhY2VEaXJ0eSA9IGZhbHNlOwog
ICAgIH0KIAogICAgIGlmIChtTWFza1N0YXRlRGlydHkpCiAgICAgewotICAgICAgICBkZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUsIGVzMmR4OjpDb252ZXJ0Q29s
b3JNYXNrKG1TdGF0ZS5jb2xvck1hc2tSZWQsIG1TdGF0ZS5jb2xvck1hc2tHcmVlbiwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbVN0YXRlLmNvbG9yTWFza0JsdWUsIG1TdGF0ZS5jb2xvck1hc2tB
bHBoYSkpOworICAgICAgICBpbnQgY29sb3JNYXNrID0gZXMyZHg6OkNvbnZlcnRDb2xvck1hc2so
bVN0YXRlLmNvbG9yTWFza1JlZCwgbVN0YXRlLmNvbG9yTWFza0dyZWVuLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5jb2xvck1hc2tCbHVl
LCBtU3RhdGUuY29sb3JNYXNrQWxwaGEpOworICAgICAgICBpZiAoY29sb3JNYXNrID09IDAgJiYg
IXplcm9Db2xvck1hc2tBbGxvd2VkKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBFbmFibGUg
Z3JlZW4gY2hhbm5lbCwgYnV0IHNldCBibGVuZGluZyBzbyBub3RoaW5nIHdpbGwgYmUgZHJhd24u
CisgICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFC
TEUsIEQzRENPTE9SV1JJVEVFTkFCTEVfR1JFRU4pOworICAgICAgICAgICAgZGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBUUlVFKTsKKworICAgICAgICAgICAg
ZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TUkNCTEVORCwgRDNEQkxFTkRfWkVSTyk7Cisg
ICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RFU1RCTEVORCwgRDNEQkxF
TkRfT05FKTsKKyAgICAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQkxFTkRP
UCwgRDNEQkxFTkRPUF9BREQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5BQkxF
LCBjb2xvck1hc2spOworICAgICAgICB9CiAgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfWldSSVRFRU5BQkxFLCBtU3RhdGUuZGVwdGhNYXNrID8gVFJVRSA6IEZBTFNFKTsKIAog
ICAgICAgICBtTWFza1N0YXRlRGlydHkgPSBmYWxzZTsKQEAgLTE4OTIsNDggKzE5MzMsNDEgQEAg
dm9pZCBDb250ZXh0OjphcHBseVN0YXRlKEdMZW51bSBkcmF3TW9kZQogCiAgICAgaWYgKG1TYW1w
bGVTdGF0ZURpcnR5KQogICAgIHsKLSAgICAgICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0LT5pc011
bHRpc2FtcGxlKCkpCisgICAgICAgIGlmIChtU3RhdGUuc2FtcGxlQWxwaGFUb0NvdmVyYWdlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobVN0YXRlLnNhbXBsZUFscGhhVG9Db3ZlcmFnZSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBGSVhNRSgiU2FtcGxlIGFscGhhIHRvIGNv
dmVyYWdlIGlzIHVuaW1wbGVtZW50ZWQuIik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBG
SVhNRSgiU2FtcGxlIGFscGhhIHRvIGNvdmVyYWdlIGlzIHVuaW1wbGVtZW50ZWQuIik7CisgICAg
ICAgIH0KIAotICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19NVUxUSVNB
TVBMRUFOVElBTElBUywgVFJVRSk7Ci0gICAgICAgICAgICBpZiAobVN0YXRlLnNhbXBsZUNvdmVy
YWdlKQorICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFQU5U
SUFMSUFTLCBUUlVFKTsKKyAgICAgICAgaWYgKG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IG1hc2sgPSAwOworICAgICAgICAgICAgaWYg
KG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZVZhbHVlICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IG1hc2sgPSAwOwotICAgICAgICAgICAgICAgIGlmIChtU3Rh
dGUuc2FtcGxlQ292ZXJhZ2VWYWx1ZSAhPSAwKQorICAgICAgICAgICAgICAgIGZsb2F0IHRocmVz
aG9sZCA9IDAuNWY7CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZyYW1l
YnVmZmVyT2JqZWN0LT5nZXRTYW1wbGVzKCk7ICsraSkKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHRocmVzaG9sZCA9IDAuNWY7CisgICAgICAgICAgICAgICAg
ICAgIG1hc2sgPDw9IDE7CiAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBmcmFtZWJ1ZmZlck9iamVjdC0+Z2V0U2FtcGxlcygpOyArK2kpCisgICAgICAgICAgICAgICAg
ICAgIGlmICgoaSArIDEpICogbVN0YXRlLnNhbXBsZUNvdmVyYWdlVmFsdWUgPj0gdGhyZXNob2xk
KQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDw8
PSAxOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgKyAxKSAqIG1TdGF0ZS5zYW1w
bGVDb3ZlcmFnZVZhbHVlID49IHRocmVzaG9sZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQgKz0gMS4wZjsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXNrIHw9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQgKz0gMS4wZjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1hc2sgfD0gMTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobVN0YXRlLnNh
bXBsZUNvdmVyYWdlSW52ZXJ0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgbWFzayA9IH5tYXNrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGRl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1QTEVNQVNLLCBtYXNrKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZUludmVydCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFTUFTSywgMHhGRkZG
RkZGRik7CisgICAgICAgICAgICAgICAgbWFzayA9IH5tYXNrOwogICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFTUFTSywg
bWFzayk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBk
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFQU5USUFMSUFTLCBGQUxTRSk7
CisgICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFTUFT
SywgMHhGRkZGRkZGRik7CiAgICAgICAgIH0KIAogICAgICAgICBtU2FtcGxlU3RhdGVEaXJ0eSA9
IGZhbHNlOwpAQCAtMTk0NSwzNyArMTk3OSwxOSBAQCB2b2lkIENvbnRleHQ6OmFwcGx5U3RhdGUo
R0xlbnVtIGRyYXdNb2RlCiAKICAgICAgICAgbURpdGhlclN0YXRlRGlydHkgPSBmYWxzZTsKICAg
ICB9Ci0KLSAgICBtRnJvbnRGYWNlRGlydHkgPSBmYWxzZTsKLX0KLQotLy8gRmlsbCBpbiB0aGUg
c2VtYW50aWNJbmRleCBmaWVsZCBvZiB0aGUgYXJyYXkgb2YgVHJhbnNsYXRlZEF0dHJpYnV0ZXMg
YmFzZWQgb24gdGhlIGFjdGl2ZSBHTFNMIHByb2dyYW0uCi12b2lkIENvbnRleHQ6Omxvb2t1cEF0
dHJpYnV0ZU1hcHBpbmcoVHJhbnNsYXRlZEF0dHJpYnV0ZSAqYXR0cmlidXRlcykKLXsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQotICAgIHsKLSAgICAg
ICAgaWYgKGF0dHJpYnV0ZXNbaV0uYWN0aXZlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhdHRy
aWJ1dGVzW2ldLnNlbWFudGljSW5kZXggPSBnZXRDdXJyZW50UHJvZ3JhbSgpLT5nZXRTZW1hbnRp
Y0luZGV4KGkpOwotICAgICAgICB9Ci0gICAgfQogfQogCiBHTGVudW0gQ29udGV4dDo6YXBwbHlW
ZXJ0ZXhCdWZmZXIoR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiB7Ci0gICAgVHJhbnNsYXRl
ZEF0dHJpYnV0ZSB0cmFuc2xhdGVkW01BWF9WRVJURVhfQVRUUklCU107CisgICAgVHJhbnNsYXRl
ZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW01BWF9WRVJURVhfQVRUUklCU107CiAKLSAgICBHTGVudW0g
ZXJyID0gbVZlcnRleERhdGFNYW5hZ2VyLT5wcmVwYXJlVmVydGV4RGF0YShmaXJzdCwgY291bnQs
IHRyYW5zbGF0ZWQpOworICAgIEdMZW51bSBlcnIgPSBtVmVydGV4RGF0YU1hbmFnZXItPnByZXBh
cmVWZXJ0ZXhEYXRhKGZpcnN0LCBjb3VudCwgYXR0cmlidXRlcyk7CiAgICAgaWYgKGVyciAhPSBH
TF9OT19FUlJPUikKICAgICB7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogCi0gICAgbG9v
a3VwQXR0cmlidXRlTWFwcGluZyh0cmFuc2xhdGVkKTsKLQotICAgIG1WZXJ0ZXhEYXRhTWFuYWdl
ci0+c2V0dXBBdHRyaWJ1dGVzKHRyYW5zbGF0ZWQpOwotCi0gICAgcmV0dXJuIEdMX05PX0VSUk9S
OworICAgIHJldHVybiBtVmVydGV4RGVjbGFyYXRpb25DYWNoZS5hcHBseURlY2xhcmF0aW9uKGF0
dHJpYnV0ZXMsIGdldEN1cnJlbnRQcm9ncmFtKCkpOwogfQogCiAvLyBBcHBsaWVzIHRoZSBpbmRp
Y2VzIGFuZCBlbGVtZW50IGFycmF5IGJpbmRpbmdzIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQpA
QCAtMjAwMywxMSArMjAxOSwxMCBAQCB2b2lkIENvbnRleHQ6OmFwcGx5U2hhZGVycygpCiAgICAg
ZGV2aWNlLT5TZXRWZXJ0ZXhTaGFkZXIodmVydGV4U2hhZGVyKTsKICAgICBkZXZpY2UtPlNldFBp
eGVsU2hhZGVyKHBpeGVsU2hhZGVyKTsKIAotICAgIGlmIChwcm9ncmFtT2JqZWN0LT5nZXRTZXJp
YWwoKSAhPSBtQXBwbGllZFByb2dyYW0pCisgICAgaWYgKHByb2dyYW1PYmplY3QtPmdldFNlcmlh
bCgpICE9IG1BcHBsaWVkUHJvZ3JhbVNlcmlhbCkKICAgICB7CiAgICAgICAgIHByb2dyYW1PYmpl
Y3QtPmRpcnR5QWxsVW5pZm9ybXMoKTsKLSAgICAgICAgcHJvZ3JhbU9iamVjdC0+ZGlydHlBbGxT
YW1wbGVycygpOwotICAgICAgICBtQXBwbGllZFByb2dyYW0gPSBwcm9ncmFtT2JqZWN0LT5nZXRT
ZXJpYWwoKTsKKyAgICAgICAgbUFwcGxpZWRQcm9ncmFtU2VyaWFsID0gcHJvZ3JhbU9iamVjdC0+
Z2V0U2VyaWFsKCk7CiAgICAgfQogCiAgICAgcHJvZ3JhbU9iamVjdC0+YXBwbHlVbmlmb3Jtcygp
OwpAQCAtMjAxNiw1NCArMjAzMSw4MSBAQCB2b2lkIENvbnRleHQ6OmFwcGx5U2hhZGVycygpCiAv
LyBBcHBsaWVzIHRoZSB0ZXh0dXJlcyBhbmQgc2FtcGxlciBzdGF0ZXMgdG8gdGhlIERpcmVjdDNE
IDkgZGV2aWNlCiB2b2lkIENvbnRleHQ6OmFwcGx5VGV4dHVyZXMoKQogeworICAgIGFwcGx5VGV4
dHVyZXMoU0FNUExFUl9QSVhFTCk7CisKKyAgICBpZiAobVN1cHBvcnRzVmVydGV4VGV4dHVyZSkK
KyAgICB7CisgICAgICAgIGFwcGx5VGV4dHVyZXMoU0FNUExFUl9WRVJURVgpOworICAgIH0KK30K
KworLy8gRm9yIGVhY2ggRGlyZWN0M0QgOSBzYW1wbGVyIG9mIGVpdGhlciB0aGUgcGl4ZWwgb3Ig
dmVydGV4IHN0YWdlLAorLy8gbG9va3MgdXAgdGhlIGNvcnJlc3BvbmRpbmcgT3BlbkdMIHRleHR1
cmUgaW1hZ2UgdW5pdCBhbmQgdGV4dHVyZSB0eXBlLAorLy8gYW5kIHNldHMgdGhlIHRleHR1cmUg
YW5kIGl0cyBhZGRyZXNzaW5nL2ZpbHRlcmluZyBzdGF0ZSAob3IgTlVMTCB3aGVuIGluYWN0aXZl
KS4KK3ZvaWQgQ29udGV4dDo6YXBwbHlUZXh0dXJlcyhTYW1wbGVyVHlwZSB0eXBlKQorewogICAg
IElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwogICAgIFByb2dyYW0gKnBy
b2dyYW1PYmplY3QgPSBnZXRDdXJyZW50UHJvZ3JhbSgpOwogCi0gICAgZm9yIChpbnQgc2FtcGxl
ciA9IDA7IHNhbXBsZXIgPCBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUzsgc2FtcGxlcisrKQorICAg
IGludCBzYW1wbGVyQ291bnQgPSAodHlwZSA9PSBTQU1QTEVSX1BJWEVMKSA/IE1BWF9URVhUVVJF
X0lNQUdFX1VOSVRTIDogTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTX1ZURjsgICAvLyBS
YW5nZSBvZiBEaXJlY3QzRCA5IHNhbXBsZXJzIG9mIGdpdmVuIHNhbXBsZXIgdHlwZQorCisgICAg
Zm9yIChpbnQgc2FtcGxlckluZGV4ID0gMDsgc2FtcGxlckluZGV4IDwgc2FtcGxlckNvdW50OyBz
YW1wbGVySW5kZXgrKykKICAgICB7Ci0gICAgICAgIGludCB0ZXh0dXJlVW5pdCA9IHByb2dyYW1P
YmplY3QtPmdldFNhbXBsZXJNYXBwaW5nKHNhbXBsZXIpOworICAgICAgICBpbnQgdGV4dHVyZVVu
aXQgPSBwcm9ncmFtT2JqZWN0LT5nZXRTYW1wbGVyTWFwcGluZyh0eXBlLCBzYW1wbGVySW5kZXgp
OyAgIC8vIE9wZW5HTCB0ZXh0dXJlIGltYWdlIHVuaXQgaW5kZXgKKyAgICAgICAgaW50IGQzZFNh
bXBsZXIgPSAodHlwZSA9PSBTQU1QTEVSX1BJWEVMKSA/IHNhbXBsZXJJbmRleCA6IEQzRFZFUlRF
WFRFWFRVUkVTQU1QTEVSMCArIHNhbXBsZXJJbmRleDsKKyAgICAgICAgdW5zaWduZWQgaW50ICph
cHBsaWVkVGV4dHVyZVNlcmlhbCA9ICh0eXBlID09IFNBTVBMRVJfUElYRUwpID8gbUFwcGxpZWRU
ZXh0dXJlU2VyaWFsUFMgOiBtQXBwbGllZFRleHR1cmVTZXJpYWxWUzsKKwogICAgICAgICBpZiAo
dGV4dHVyZVVuaXQgIT0gLTEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNhbXBsZXJUeXBlIHRl
eHR1cmVUeXBlID0gcHJvZ3JhbU9iamVjdC0+Z2V0U2FtcGxlclR5cGUoc2FtcGxlcik7CisgICAg
ICAgICAgICBUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSA9IHByb2dyYW1PYmplY3QtPmdldFNhbXBs
ZXJUZXh0dXJlVHlwZSh0eXBlLCBzYW1wbGVySW5kZXgpOwogCiAgICAgICAgICAgICBUZXh0dXJl
ICp0ZXh0dXJlID0gZ2V0U2FtcGxlclRleHR1cmUodGV4dHVyZVVuaXQsIHRleHR1cmVUeXBlKTsK
IAotICAgICAgICAgICAgaWYgKHByb2dyYW1PYmplY3QtPmlzU2FtcGxlckRpcnR5KHNhbXBsZXIp
IHx8IHRleHR1cmUtPmlzRGlydHkoKSkKKyAgICAgICAgICAgIGlmIChhcHBsaWVkVGV4dHVyZVNl
cmlhbFtzYW1wbGVySW5kZXhdICE9IHRleHR1cmUtPmdldFNlcmlhbCgpIHx8IHRleHR1cmUtPmlz
RGlydHlQYXJhbWV0ZXIoKSB8fCB0ZXh0dXJlLT5pc0RpcnR5SW1hZ2UoKSkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNDb21wbGV0ZSgpKQorICAgICAgICAg
ICAgICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqZDNkVGV4dHVyZSA9IHRleHR1cmUtPmdldFRl
eHR1cmUoKTsKKworICAgICAgICAgICAgICAgIGlmIChkM2RUZXh0dXJlKQogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHdyYXBTID0gdGV4dHVyZS0+Z2V0V3Jh
cFMoKTsKLSAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHdyYXBUID0gdGV4dHVyZS0+Z2V0V3Jh
cFQoKTsKLSAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1pbkZpbHRlciA9IHRleHR1cmUtPmdl
dE1pbkZpbHRlcigpOwotICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWFnRmlsdGVyID0gdGV4
dHVyZS0+Z2V0TWFnRmlsdGVyKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT5TZXRT
YW1wbGVyU3RhdGUoc2FtcGxlciwgRDNEU0FNUF9BRERSRVNTVSwgZXMyZHg6OkNvbnZlcnRUZXh0
dXJlV3JhcCh3cmFwUykpOwotICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFNhbXBsZXJT
dGF0ZShzYW1wbGVyLCBEM0RTQU1QX0FERFJFU1NWLCBlczJkeDo6Q29udmVydFRleHR1cmVXcmFw
KHdyYXBUKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUo
c2FtcGxlciwgRDNEU0FNUF9NQUdGSUxURVIsIGVzMmR4OjpDb252ZXJ0TWFnRmlsdGVyKG1hZ0Zp
bHRlcikpOwotICAgICAgICAgICAgICAgICAgICBEM0RURVhUVVJFRklMVEVSVFlQRSBkM2RNaW5G
aWx0ZXIsIGQzZE1pcEZpbHRlcjsKLSAgICAgICAgICAgICAgICAgICAgZXMyZHg6OkNvbnZlcnRN
aW5GaWx0ZXIobWluRmlsdGVyLCAmZDNkTWluRmlsdGVyLCAmZDNkTWlwRmlsdGVyKTsKLSAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoc2FtcGxlciwgRDNEU0FNUF9N
SU5GSUxURVIsIGQzZE1pbkZpbHRlcik7Ci0gICAgICAgICAgICAgICAgICAgIGRldmljZS0+U2V0
U2FtcGxlclN0YXRlKHNhbXBsZXIsIEQzRFNBTVBfTUlQRklMVEVSLCBkM2RNaXBGaWx0ZXIpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoYXBwbGllZFRleHR1cmVTZXJpYWxbc2FtcGxlckluZGV4
XSAhPSB0ZXh0dXJlLT5nZXRTZXJpYWwoKSB8fCB0ZXh0dXJlLT5pc0RpcnR5UGFyYW1ldGVyKCkp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB3
cmFwUyA9IHRleHR1cmUtPmdldFdyYXBTKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gd3JhcFQgPSB0ZXh0dXJlLT5nZXRXcmFwVCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1pbkZpbHRlciA9IHRleHR1cmUtPmdldE1pbkZpbHRlcigpOworICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG1hZ0ZpbHRlciA9IHRleHR1cmUtPmdldE1hZ0ZpbHRlcigpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1w
bGVyLCBEM0RTQU1QX0FERFJFU1NVLCBlczJkeDo6Q29udmVydFRleHR1cmVXcmFwKHdyYXBTKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1w
bGVyLCBEM0RTQU1QX0FERFJFU1NWLCBlczJkeDo6Q29udmVydFRleHR1cmVXcmFwKHdyYXBUKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNh
bXBsZXIsIEQzRFNBTVBfTUFHRklMVEVSLCBlczJkeDo6Q29udmVydE1hZ0ZpbHRlcihtYWdGaWx0
ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEQzRFRFWFRVUkVGSUxURVJUWVBFIGQzZE1p
bkZpbHRlciwgZDNkTWlwRmlsdGVyOworICAgICAgICAgICAgICAgICAgICAgICAgZXMyZHg6OkNv
bnZlcnRNaW5GaWx0ZXIobWluRmlsdGVyLCAmZDNkTWluRmlsdGVyLCAmZDNkTWlwRmlsdGVyKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBs
ZXIsIEQzRFNBTVBfTUlORklMVEVSLCBkM2RNaW5GaWx0ZXIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9NSVBGSUxU
RVIsIGQzZE1pcEZpbHRlcik7CisgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgICAgICBkZXZpY2UtPlNldFRleHR1cmUoc2FtcGxlciwgdGV4dHVyZS0+Z2V0VGV4dHVyZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGxpZWRUZXh0dXJlU2VyaWFsW3NhbXBsZXJJ
bmRleF0gIT0gdGV4dHVyZS0+Z2V0U2VyaWFsKCkgfHwgdGV4dHVyZS0+aXNEaXJ0eUltYWdlKCkp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZS0+
U2V0VGV4dHVyZShkM2RTYW1wbGVyLCBkM2RUZXh0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFRleHR1cmUoc2FtcGxlciwgZ2V0
SW5jb21wbGV0ZVRleHR1cmUodGV4dHVyZVR5cGUpLT5nZXRUZXh0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICBkZXZpY2UtPlNldFRleHR1cmUoZDNkU2FtcGxlciwgZ2V0SW5jb21wbGV0ZVRl
eHR1cmUodGV4dHVyZVR5cGUpLT5nZXRUZXh0dXJlKCkpOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0U2FtcGxlckRpcnR5
KHNhbXBsZXIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhcHBsaWVkVGV4dHVyZVNlcmlhbFtz
YW1wbGVySW5kZXhdID0gdGV4dHVyZS0+Z2V0U2VyaWFsKCk7CisgICAgICAgICAgICAgICAgdGV4
dHVyZS0+cmVzZXREaXJ0eSgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVs
c2UKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHByb2dyYW1PYmplY3QtPmlzU2FtcGxlckRp
cnR5KHNhbXBsZXIpKQorICAgICAgICAgICAgaWYgKGFwcGxpZWRUZXh0dXJlU2VyaWFsW3NhbXBs
ZXJJbmRleF0gIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXZpY2UtPlNl
dFRleHR1cmUoc2FtcGxlciwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+
c2V0U2FtcGxlckRpcnR5KHNhbXBsZXIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkZXZpY2Ut
PlNldFRleHR1cmUoZDNkU2FtcGxlciwgTlVMTCk7CisgICAgICAgICAgICAgICAgYXBwbGllZFRl
eHR1cmVTZXJpYWxbc2FtcGxlckluZGV4XSA9IDA7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0g
ICAKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMjExNiwyMCArMjE1OCwyMSBAQCB2b2lkIENv
bnRleHQ6OnJlYWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgCiAKICAgICAgICAgc3dpdGNoIChyZXN1
bHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgRDNERVJSX0RSSVZFUklOVEVSTkFMRVJS
T1I6Ci0gICAgICAgICAgICBjYXNlIEQzREVSUl9ERVZJQ0VMT1NUOgotICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47ICAg
Ly8gTm8gc2Vuc2libGUgZXJyb3IgdG8gZ2VuZXJhdGUKKyAgICAgICAgICBjYXNlIEQzREVSUl9E
UklWRVJJTlRFUk5BTEVSUk9SOgorICAgICAgICAgIGNhc2UgRDNERVJSX0RFVklDRUxPU1Q6Cisg
ICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm47ICAg
Ly8gTm8gc2Vuc2libGUgZXJyb3IgdG8gZ2VuZXJhdGUKICAgICAgICAgfQogICAgIH0KIAogICAg
IEQzRExPQ0tFRF9SRUNUIGxvY2s7Ci0gICAgUkVDVCByZWN0ID0ge3N0ZDo6bWF4KHgsIDApLAot
ICAgICAgICAgICAgICAgICBzdGQ6Om1heCh5LCAwKSwKLSAgICAgICAgICAgICAgICAgc3RkOjpt
aW4oeCArIHdpZHRoLCAoaW50KWRlc2MuV2lkdGgpLAotICAgICAgICAgICAgICAgICBzdGQ6Om1p
bih5ICsgaGVpZ2h0LCAoaW50KWRlc2MuSGVpZ2h0KX07CisgICAgUkVDVCByZWN0ID0gdHJhbnNm
b3JtUGl4ZWxSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIGRlc2MuSGVpZ2h0KTsKKyAgICByZWN0
LmxlZnQgPSBjbGFtcChyZWN0LmxlZnQsIDBMLCBzdGF0aWNfY2FzdDxMT05HPihkZXNjLldpZHRo
KSk7CisgICAgcmVjdC50b3AgPSBjbGFtcChyZWN0LnRvcCwgMEwsIHN0YXRpY19jYXN0PExPTkc+
KGRlc2MuSGVpZ2h0KSk7CisgICAgcmVjdC5yaWdodCA9IGNsYW1wKHJlY3QucmlnaHQsIDBMLCBz
dGF0aWNfY2FzdDxMT05HPihkZXNjLldpZHRoKSk7CisgICAgcmVjdC5ib3R0b20gPSBjbGFtcChy
ZWN0LmJvdHRvbSwgMEwsIHN0YXRpY19jYXN0PExPTkc+KGRlc2MuSGVpZ2h0KSk7CiAKICAgICBy
ZXN1bHQgPSBzeXN0ZW1TdXJmYWNlLT5Mb2NrUmVjdCgmbG9jaywgJnJlY3QsIEQzRExPQ0tfUkVB
RE9OTFkpOwogCkBAIC0yMTQxLDEwICsyMTg0LDEwIEBAIHZvaWQgQ29udGV4dDo6cmVhZFBpeGVs
cyhHTGludCB4LCBHTGludCAKICAgICAgICAgcmV0dXJuOyAgIC8vIE5vIHNlbnNpYmxlIGVycm9y
IHRvIGdlbmVyYXRlCiAgICAgfQogCi0gICAgdW5zaWduZWQgY2hhciAqc291cmNlID0gKHVuc2ln
bmVkIGNoYXIqKWxvY2sucEJpdHM7CisgICAgdW5zaWduZWQgY2hhciAqc291cmNlID0gKCh1bnNp
Z25lZCBjaGFyKilsb2NrLnBCaXRzKSArIGxvY2suUGl0Y2ggKiAocmVjdC5ib3R0b20gLSByZWN0
LnRvcCAtIDEpOwogICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSAodW5zaWduZWQgY2hhciopcGl4
ZWxzOwogICAgIHVuc2lnbmVkIHNob3J0ICpkZXN0MTYgPSAodW5zaWduZWQgc2hvcnQqKXBpeGVs
czsKLQorICAgIGludCBpbnB1dFBpdGNoID0gLWxvY2suUGl0Y2g7CiAgICAgR0xzaXplaSBvdXRw
dXRQaXRjaCA9IENvbXB1dGVQaXRjaCh3aWR0aCwgZm9ybWF0LCB0eXBlLCBtU3RhdGUucGFja0Fs
aWdubWVudCk7CiAKICAgICBmb3IgKGludCBqID0gMDsgaiA8IHJlY3QuYm90dG9tIC0gcmVjdC50
b3A7IGorKykKQEAgLTIxNTcsNyArMjIwMCw3IEBAIHZvaWQgQ29udGV4dDo6cmVhZFBpeGVscyhH
TGludCB4LCBHTGludCAKICAgICAgICAgICAgIC8vIGFuIFJHQkEgc291cmNlIGJ1ZmZlci4gIE5v
dGUgdGhhdCBidWZmZXJzIHdpdGggbm8KICAgICAgICAgICAgIC8vIGFscGhhIGdvIHRocm91Z2gg
dGhlIHNsb3cgcGF0aCBiZWxvdy4KICAgICAgICAgICAgIG1lbWNweShkZXN0ICsgaiAqIG91dHB1
dFBpdGNoLAotICAgICAgICAgICAgICAgICAgIHNvdXJjZSArIGogKiBsb2NrLlBpdGNoLAorICAg
ICAgICAgICAgICAgICAgIHNvdXJjZSArIGogKiBpbnB1dFBpdGNoLAogICAgICAgICAgICAgICAg
ICAgIChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSAqIDQpOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KQEAgLTIxNzMsNyArMjIxNiw3IEBAIHZvaWQgQ29udGV4dDo6cmVhZFBpeGVs
cyhHTGludCB4LCBHTGludCAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgY2FzZSBEM0RG
TVRfUjVHNkI1OgogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgcmdiID0gKih1bnNpZ25lZCBzaG9ydCopKHNvdXJjZSArIDIgKiBpICsgaiAqIGxv
Y2suUGl0Y2gpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZ2IgPSAqKHVu
c2lnbmVkIHNob3J0Kikoc291cmNlICsgMiAqIGkgKyBqICogaW5wdXRQaXRjaCk7CiAKICAgICAg
ICAgICAgICAgICAgICAgYSA9IDEuMGY7CiAgICAgICAgICAgICAgICAgICAgIGIgPSAocmdiICYg
MHgwMDFGKSAqICgxLjBmIC8gMHgwMDFGKTsKQEAgLTIxODMsNyArMjIyNiw3IEBAIHZvaWQgQ29u
dGV4dDo6cmVhZFBpeGVscyhHTGludCB4LCBHTGludCAKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6CiAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBhcmdiID0gKih1bnNpZ25lZCBzaG9y
dCopKHNvdXJjZSArIDIgKiBpICsgaiAqIGxvY2suUGl0Y2gpOworICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBhcmdiID0gKih1bnNpZ25lZCBzaG9ydCopKHNvdXJjZSArIDIgKiBp
ICsgaiAqIGlucHV0UGl0Y2gpOwogCiAgICAgICAgICAgICAgICAgICAgIGEgPSAoYXJnYiAmIDB4
ODAwMCkgPyAxLjBmIDogMC4wZjsKICAgICAgICAgICAgICAgICAgICAgYiA9IChhcmdiICYgMHgw
MDFGKSAqICgxLjBmIC8gMHgwMDFGKTsKQEAgLTIxOTMsNyArMjIzNiw3IEBAIHZvaWQgQ29udGV4
dDo6cmVhZFBpeGVscyhHTGludCB4LCBHTGludCAKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CiAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9ICoodW5zaWduZWQgaW50Kikoc291
cmNlICsgNCAqIGkgKyBqICogbG9jay5QaXRjaCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBhcmdiID0gKih1bnNpZ25lZCBpbnQqKShzb3VyY2UgKyA0ICogaSArIGogKiBpbnB1
dFBpdGNoKTsKIAogICAgICAgICAgICAgICAgICAgICBhID0gKGFyZ2IgJiAweEZGMDAwMDAwKSAq
ICgxLjBmIC8gMHhGRjAwMDAwMCk7CiAgICAgICAgICAgICAgICAgICAgIGIgPSAoYXJnYiAmIDB4
MDAwMDAwRkYpICogKDEuMGYgLyAweDAwMDAwMEZGKTsKQEAgLTIyMDMsNyArMjI0Niw3IEBAIHZv
aWQgQ29udGV4dDo6cmVhZFBpeGVscyhHTGludCB4LCBHTGludCAKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6CiAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeHJnYiA9ICoodW5zaWduZWQg
aW50Kikoc291cmNlICsgNCAqIGkgKyBqICogbG9jay5QaXRjaCk7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCB4cmdiID0gKih1bnNpZ25lZCBpbnQqKShzb3VyY2UgKyA0ICogaSAr
IGogKiBpbnB1dFBpdGNoKTsKIAogICAgICAgICAgICAgICAgICAgICBhID0gMS4wZjsKICAgICAg
ICAgICAgICAgICAgICAgYiA9ICh4cmdiICYgMHgwMDAwMDBGRikgKiAoMS4wZiAvIDB4MDAwMDAw
RkYpOwpAQCAtMjIxMyw3ICsyMjU2LDcgQEAgdm9pZCBDb250ZXh0OjpyZWFkUGl4ZWxzKEdMaW50
IHgsIEdMaW50IAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEQz
REZNVF9BMlIxMEcxMEIxMDoKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBhcmdiID0gKih1bnNpZ25lZCBpbnQqKShzb3VyY2UgKyA0ICogaSArIGog
KiBsb2NrLlBpdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFyZ2IgPSAq
KHVuc2lnbmVkIGludCopKHNvdXJjZSArIDQgKiBpICsgaiAqIGlucHV0UGl0Y2gpOwogCiAgICAg
ICAgICAgICAgICAgICAgIGEgPSAoYXJnYiAmIDB4QzAwMDAwMDApICogKDEuMGYgLyAweEMwMDAw
MDAwKTsKICAgICAgICAgICAgICAgICAgICAgYiA9IChhcmdiICYgMHgwMDAwMDNGRikgKiAoMS4w
ZiAvIDB4MDAwMDAzRkYpOwpAQCAtMjIyNCwxMCArMjI2NywxMCBAQCB2b2lkIENvbnRleHQ6OnJl
YWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgCiAgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0EzMkIz
MkczMlIzMkY6CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAvLyBmbG9h
dCBmb3JtYXRzIGluIEQzRCBhcmUgc3RvcmVkIHJnYmEsIHJhdGhlciB0aGFuIHRoZSBvdGhlciB3
YXkgcm91bmQKLSAgICAgICAgICAgICAgICAgICAgciA9ICooKGZsb2F0Kikoc291cmNlICsgMTYg
KiBpICsgaiAqIGxvY2suUGl0Y2gpICsgMCk7Ci0gICAgICAgICAgICAgICAgICAgIGcgPSAqKChm
bG9hdCopKHNvdXJjZSArIDE2ICogaSArIGogKiBsb2NrLlBpdGNoKSArIDEpOwotICAgICAgICAg
ICAgICAgICAgICBiID0gKigoZmxvYXQqKShzb3VyY2UgKyAxNiAqIGkgKyBqICogbG9jay5QaXRj
aCkgKyAyKTsKLSAgICAgICAgICAgICAgICAgICAgYSA9ICooKGZsb2F0Kikoc291cmNlICsgMTYg
KiBpICsgaiAqIGxvY2suUGl0Y2gpICsgMyk7CisgICAgICAgICAgICAgICAgICAgIHIgPSAqKChm
bG9hdCopKHNvdXJjZSArIDE2ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDApOworICAgICAgICAg
ICAgICAgICAgICBnID0gKigoZmxvYXQqKShzb3VyY2UgKyAxNiAqIGkgKyBqICogaW5wdXRQaXRj
aCkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgYiA9ICooKGZsb2F0Kikoc291cmNlICsgMTYg
KiBpICsgaiAqIGlucHV0UGl0Y2gpICsgMik7CisgICAgICAgICAgICAgICAgICAgIGEgPSAqKChm
bG9hdCopKHNvdXJjZSArIDE2ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDMpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSBEM0RG
TVRfQTE2QjE2RzE2UjE2RjoKQEAgLTIyMzUsNyArMjI3OCw3IEBAIHZvaWQgQ29udGV4dDo6cmVh
ZFBpeGVscyhHTGludCB4LCBHTGludCAKICAgICAgICAgICAgICAgICAgICAgLy8gZmxvYXQgZm9y
bWF0cyBpbiBEM0QgYXJlIHN0b3JlZCByZ2JhLCByYXRoZXIgdGhhbiB0aGUgb3RoZXIgd2F5IHJv
dW5kCiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGFiZ3JbNF07CiAKLSAgICAgICAgICAgICAg
ICAgICAgRDNEWEZsb2F0MTZUbzMyQXJyYXkoYWJnciwgKEQzRFhGTE9BVDE2Kikoc291cmNlICsg
OCAqIGkgKyBqICogbG9jay5QaXRjaCksIDQpOworICAgICAgICAgICAgICAgICAgICBEM0RYRmxv
YXQxNlRvMzJBcnJheShhYmdyLCAoRDNEWEZMT0FUMTYqKShzb3VyY2UgKyA4ICogaSArIGogKiBp
bnB1dFBpdGNoKSwgNCk7CiAKICAgICAgICAgICAgICAgICAgICAgYSA9IGFiZ3JbM107CiAgICAg
ICAgICAgICAgICAgICAgIGIgPSBhYmdyWzJdOwpAQCAtMjMzMCw5ICsyMzczLDcgQEAgdm9pZCBD
b250ZXh0OjpjbGVhcihHTGJpdGZpZWxkIG1hc2spCiAKICAgICBpZiAoIWZyYW1lYnVmZmVyT2Jq
ZWN0IHx8IGZyYW1lYnVmZmVyT2JqZWN0LT5jb21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZF
Ul9DT01QTEVURSkKICAgICB7Ci0gICAgICAgIGVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJf
T1BFUkFUSU9OKTsKLQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBlcnJvcihHTF9J
TlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7CiAgICAgfQogCiAgICAgZWdsOjpEaXNwbGF5
ICpkaXNwbGF5ID0gZ2V0RGlzcGxheSgpOwpAQCAtMjM3NSw3ICsyNDE2LDcgQEAgdm9pZCBDb250
ZXh0OjpjbGVhcihHTGJpdGZpZWxkIG1hc2spCiAgICAgICAgICAgICBEM0RTVVJGQUNFX0RFU0Mg
ZGVzYzsKICAgICAgICAgICAgIGRlcHRoU3RlbmNpbC0+R2V0RGVzYygmZGVzYyk7CiAKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBzdGVuY2lsU2l6ZSA9IGVzMmR4OjpHZXRTdGVuY2lsU2l6ZShk
ZXNjLkZvcm1hdCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RlbmNpbFNpemUgPSBkeDJl
czo6R2V0U3RlbmNpbFNpemUoZGVzYy5Gb3JtYXQpOwogICAgICAgICAgICAgc3RlbmNpbFVubWFz
a2VkID0gKDB4MSA8PCBzdGVuY2lsU2l6ZSkgLSAxOwogCiAgICAgICAgICAgICBpZiAoc3RlbmNp
bFVubWFza2VkICE9IDB4MCkKQEAgLTIzOTYsOSArMjQzNyw5IEBAIHZvaWQgQ29udGV4dDo6Y2xl
YXIoR0xiaXRmaWVsZCBtYXNrKQogICAgIH0KIAogICAgIEQzRENPTE9SIGNvbG9yID0gRDNEQ09M
T1JfQVJHQih1bm9ybTw4PihtU3RhdGUuY29sb3JDbGVhclZhbHVlLmFscGhhKSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVub3JtPDg+KG1TdGF0ZS5jb2xv
ckNsZWFyVmFsdWUucmVkKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVub3JtPDg+KG1TdGF0ZS5jb2xvckNsZWFyVmFsdWUuZ3JlZW4pLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5vcm08OD4obVN0YXRlLmNvbG9y
Q2xlYXJWYWx1ZS5ibHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
b3JtPDg+KG1TdGF0ZS5jb2xvckNsZWFyVmFsdWUucmVkKSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVub3JtPDg+KG1TdGF0ZS5jb2xvckNsZWFyVmFsdWUuZ3JlZW4pLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5vcm08OD4obVN0YXRlLmNvbG9y
Q2xlYXJWYWx1ZS5ibHVlKSk7CiAgICAgZmxvYXQgZGVwdGggPSBjbGFtcDAxKG1TdGF0ZS5kZXB0
aENsZWFyVmFsdWUpOwogICAgIGludCBzdGVuY2lsID0gbVN0YXRlLnN0ZW5jaWxDbGVhclZhbHVl
ICYgMHgwMDAwMDBGRjsKIApAQCAtMjQxMiw3ICsyNDUzLDcgQEAgdm9pZCBDb250ZXh0OjpjbGVh
cihHTGJpdGZpZWxkIG1hc2spCiAgICAgRDNEU1VSRkFDRV9ERVNDIGRlc2M7CiAgICAgcmVuZGVy
VGFyZ2V0LT5HZXREZXNjKCZkZXNjKTsKIAotICAgIGJvb2wgYWxwaGFVbm1hc2tlZCA9IChlczJk
eDo6R2V0QWxwaGFTaXplKGRlc2MuRm9ybWF0KSA9PSAwKSB8fCBtU3RhdGUuY29sb3JNYXNrQWxw
aGE7CisgICAgYm9vbCBhbHBoYVVubWFza2VkID0gKGR4MmVzOjpHZXRBbHBoYVNpemUoZGVzYy5G
b3JtYXQpID09IDApIHx8IG1TdGF0ZS5jb2xvck1hc2tBbHBoYTsKIAogICAgIGNvbnN0IGJvb2wg
bmVlZE1hc2tlZFN0ZW5jaWxDbGVhciA9IChmbGFncyAmIEQzRENMRUFSX1NURU5DSUwpICYmCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1TdGF0ZS5zdGVuY2lsV3Jp
dGVtYXNrICYgc3RlbmNpbFVubWFza2VkKSAhPSBzdGVuY2lsVW5tYXNrZWQ7CkBAIC0yNDQ0LDcg
KzI0ODUsMTMgQEAgdm9pZCBDb250ZXh0OjpjbGVhcihHTGJpdGZpZWxkIG1hc2spCiAgICAgICAg
ICAgICBkZXZpY2UtPlNldFBpeGVsU2hhZGVyKE5VTEwpOwogICAgICAgICAgICAgZGV2aWNlLT5T
ZXRWZXJ0ZXhTaGFkZXIoTlVMTCk7CiAgICAgICAgICAgICBkZXZpY2UtPlNldEZWRihEM0RGVkZf
WFlaUkhXIHwgRDNERlZGX0RJRkZVU0UpOwotICAgICAgICAgICAgZGV2aWNlLT5TZXRUZXh0dXJl
U3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX0RJU0FCTEUpOworICAgICAgICAg
ICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TRVBBUkFURUFMUEhBQkxFTkRFTkFCTEUs
IFRSVUUpOworICAgICAgICAgICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RU
U1NfQ09MT1JPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOworICAgICAgICAgICAgZGV2aWNlLT5TZXRU
ZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAg
ICAgICAgICAgIGRldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0FMUEhBT1As
IEQzRFRPUF9TRUxFQ1RBUkcxKTsKKyAgICAgICAgICAgIGRldmljZS0+U2V0VGV4dHVyZVN0YWdl
U3RhdGUoMCwgRDNEVFNTX0FMUEhBQVJHMSwgRDNEVEFfVEZBQ1RPUik7CisgICAgICAgICAgICBk
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1RFWFRVUkVGQUNUT1IsIGNvbG9yKTsKKyAgICAg
ICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1QTEVNQVNLLCAweEZG
RkZGRkZGKTsKIAogICAgICAgICAgICAgaHIgPSBkZXZpY2UtPkVuZFN0YXRlQmxvY2soJm1NYXNr
ZWRDbGVhclNhdmVkU3RhdGUpOwogICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikgfHwg
aHIgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgaHIgPT0gRV9PVVRPRk1FTU9SWSk7CkBA
IC0yNDY5LDEwICsyNTE2LDcgQEAgdm9pZCBDb250ZXh0OjpjbGVhcihHTGJpdGZpZWxkIG1hc2sp
CiAKICAgICAgICAgaWYgKGZsYWdzICYgRDNEQ0xFQVJfVEFSR0VUKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUsICht
U3RhdGUuY29sb3JNYXNrUmVkICAgPyBEM0RDT0xPUldSSVRFRU5BQkxFX1JFRCAgIDogMCkgfAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobVN0YXRlLmNvbG9yTWFza0dyZWVuID8gRDNEQ09MT1JXUklURUVOQUJMRV9HUkVFTiA6IDAp
IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKG1TdGF0ZS5jb2xvck1hc2tCbHVlICA/IEQzRENPTE9SV1JJVEVFTkFCTEVfQkxVRSAg
OiAwKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChtU3RhdGUuY29sb3JNYXNrQWxwaGEgPyBEM0RDT0xPUldSSVRFRU5BQkxFX0FM
UEhBIDogMCkpOworICAgICAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xP
UldSSVRFRU5BQkxFLCBlczJkeDo6Q29udmVydENvbG9yTWFzayhtU3RhdGUuY29sb3JNYXNrUmVk
LCBtU3RhdGUuY29sb3JNYXNrR3JlZW4sIG1TdGF0ZS5jb2xvck1hc2tCbHVlLCBtU3RhdGUuY29s
b3JNYXNrQWxwaGEpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTI0
OTgsNDIgKzI1NDIsMzggQEAgdm9pZCBDb250ZXh0OjpjbGVhcihHTGJpdGZpZWxkIG1hc2spCiAK
ICAgICAgICAgZGV2aWNlLT5TZXRQaXhlbFNoYWRlcihOVUxMKTsKICAgICAgICAgZGV2aWNlLT5T
ZXRWZXJ0ZXhTaGFkZXIoTlVMTCk7Ci0gICAgICAgIGRldmljZS0+U2V0RlZGKEQzREZWRl9YWVpS
SFcgfCBEM0RGVkZfRElGRlVTRSk7Ci0gICAgICAgIGRldmljZS0+U2V0VGV4dHVyZVN0YWdlU3Rh
dGUoMCwgRDNEVFNTX0NPTE9ST1AsIEQzRFRPUF9ESVNBQkxFKTsKLQotICAgICAgICBzdHJ1Y3Qg
VmVydGV4Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0IHgsIHksIHosIHc7Ci0gICAgICAg
ICAgICBEM0RDT0xPUiBkaWZmdXNlOwotICAgICAgICB9OwotCi0gICAgICAgIFZlcnRleCBxdWFk
WzRdOwotICAgICAgICBxdWFkWzBdLnggPSAwLjBmOwotICAgICAgICBxdWFkWzBdLnkgPSAoZmxv
YXQpZGVzYy5IZWlnaHQ7Ci0gICAgICAgIHF1YWRbMF0ueiA9IDAuMGY7Ci0gICAgICAgIHF1YWRb
MF0udyA9IDEuMGY7Ci0gICAgICAgIHF1YWRbMF0uZGlmZnVzZSA9IGNvbG9yOwotCi0gICAgICAg
IHF1YWRbMV0ueCA9IChmbG9hdClkZXNjLldpZHRoOwotICAgICAgICBxdWFkWzFdLnkgPSAoZmxv
YXQpZGVzYy5IZWlnaHQ7Ci0gICAgICAgIHF1YWRbMV0ueiA9IDAuMGY7Ci0gICAgICAgIHF1YWRb
MV0udyA9IDEuMGY7Ci0gICAgICAgIHF1YWRbMV0uZGlmZnVzZSA9IGNvbG9yOwotCi0gICAgICAg
IHF1YWRbMl0ueCA9IDAuMGY7Ci0gICAgICAgIHF1YWRbMl0ueSA9IDAuMGY7Ci0gICAgICAgIHF1
YWRbMl0ueiA9IDAuMGY7Ci0gICAgICAgIHF1YWRbMl0udyA9IDEuMGY7Ci0gICAgICAgIHF1YWRb
Ml0uZGlmZnVzZSA9IGNvbG9yOwotCi0gICAgICAgIHF1YWRbM10ueCA9IChmbG9hdClkZXNjLldp
ZHRoOwotICAgICAgICBxdWFkWzNdLnkgPSAwLjBmOwotICAgICAgICBxdWFkWzNdLnogPSAwLjBm
OwotICAgICAgICBxdWFkWzNdLncgPSAxLjBmOwotICAgICAgICBxdWFkWzNdLmRpZmZ1c2UgPSBj
b2xvcjsKKyAgICAgICAgZGV2aWNlLT5TZXRGVkYoRDNERlZGX1hZWlJIVyk7CisgICAgICAgIGRl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0VQQVJBVEVBTFBIQUJMRU5ERU5BQkxFLCBUUlVF
KTsKKyAgICAgICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JP
UCwgRDNEVE9QX1NFTEVDVEFSRzEpOworICAgICAgICBkZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0
YXRlKDAsIEQzRFRTU19DT0xPUkFSRzEsIEQzRFRBX1RGQUNUT1IpOworICAgICAgICBkZXZpY2Ut
PlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19BTFBIQU9QLCBEM0RUT1BfU0VMRUNUQVJH
MSk7CisgICAgICAgIGRldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0FMUEhB
QVJHMSwgRDNEVEFfVEZBQ1RPUik7CisgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfVEVYVFVSRUZBQ1RPUiwgY29sb3IpOworICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX01VTFRJU0FNUExFTUFTSywgMHhGRkZGRkZGRik7CisKKyAgICAgICAgZmxvYXQgcXVh
ZFs0XVs0XTsgICAvLyBBIHF1YWRyaWxhdGVyYWwgY292ZXJpbmcgdGhlIHRhcmdldCwgYWxpZ25l
ZCB0byBtYXRjaCB0aGUgZWRnZXMKKyAgICAgICAgcXVhZFswXVswXSA9IC0wLjVmOworICAgICAg
ICBxdWFkWzBdWzFdID0gZGVzYy5IZWlnaHQgLSAwLjVmOworICAgICAgICBxdWFkWzBdWzJdID0g
MC4wZjsKKyAgICAgICAgcXVhZFswXVszXSA9IDEuMGY7CisKKyAgICAgICAgcXVhZFsxXVswXSA9
IGRlc2MuV2lkdGggLSAwLjVmOworICAgICAgICBxdWFkWzFdWzFdID0gZGVzYy5IZWlnaHQgLSAw
LjVmOworICAgICAgICBxdWFkWzFdWzJdID0gMC4wZjsKKyAgICAgICAgcXVhZFsxXVszXSA9IDEu
MGY7CisKKyAgICAgICAgcXVhZFsyXVswXSA9IC0wLjVmOworICAgICAgICBxdWFkWzJdWzFdID0g
LTAuNWY7CisgICAgICAgIHF1YWRbMl1bMl0gPSAwLjBmOworICAgICAgICBxdWFkWzJdWzNdID0g
MS4wZjsKKworICAgICAgICBxdWFkWzNdWzBdID0gZGVzYy5XaWR0aCAtIDAuNWY7CisgICAgICAg
IHF1YWRbM11bMV0gPSAtMC41ZjsKKyAgICAgICAgcXVhZFszXVsyXSA9IDAuMGY7CisgICAgICAg
IHF1YWRbM11bM10gPSAxLjBmOwogCiAgICAgICAgIGRpc3BsYXktPnN0YXJ0U2NlbmUoKTsKLSAg
ICAgICAgZGV2aWNlLT5EcmF3UHJpbWl0aXZlVVAoRDNEUFRfVFJJQU5HTEVTVFJJUCwgMiwgcXVh
ZCwgc2l6ZW9mKFZlcnRleCkpOworICAgICAgICBkZXZpY2UtPkRyYXdQcmltaXRpdmVVUChEM0RQ
VF9UUklBTkdMRVNUUklQLCAyLCBxdWFkLCBzaXplb2YoZmxvYXRbNF0pKTsKIAogICAgICAgICBp
ZiAoZmxhZ3MgJiBEM0RDTEVBUl9aQlVGRkVSKQogICAgICAgICB7CkBAIC0yNTg5LDcgKzI2Mjks
NyBAQCB2b2lkIENvbnRleHQ6OmRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMCiAgICAgYXBwbHlT
aGFkZXJzKCk7CiAgICAgYXBwbHlUZXh0dXJlcygpOwogCi0gICAgaWYgKCFnZXRDdXJyZW50UHJv
Z3JhbSgpLT52YWxpZGF0ZVNhbXBsZXJzKCkpCisgICAgaWYgKCFnZXRDdXJyZW50UHJvZ3JhbSgp
LT52YWxpZGF0ZVNhbXBsZXJzKGZhbHNlKSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CiAgICAgfQpAQCAtMjY1Niw3ICsyNjk2LDcgQEAgdm9pZCBD
b250ZXh0OjpkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIAogICAgIGFwcGx5U2hhZGVycygpOwog
ICAgIGFwcGx5VGV4dHVyZXMoKTsKIAotICAgIGlmICghZ2V0Q3VycmVudFByb2dyYW0oKS0+dmFs
aWRhdGVTYW1wbGVycygpKQorICAgIGlmICghZ2V0Q3VycmVudFByb2dyYW0oKS0+dmFsaWRhdGVT
YW1wbGVycyhmYWxzZSkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwogICAgIH0KQEAgLTI2NzksNDggKzI3MTksNzcgQEAgdm9pZCBDb250ZXh0Ojpm
aW5pc2goKQogICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IGdldERpc3BsYXkoKTsKICAgICBJ
RGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKICAgICBJRGlyZWN0M0RRdWVy
eTkgKm9jY2x1c2lvblF1ZXJ5ID0gTlVMTDsKKyAgICBIUkVTVUxUIHJlc3VsdDsKIAotICAgIEhS
RVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVRdWVyeShEM0RRVUVSWVRZUEVfT0NDTFVTSU9O
LCAmb2NjbHVzaW9uUXVlcnkpOwotCi0gICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURF
T01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICByZXN1bHQgPSBkZXZpY2Ut
PkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9PQ0NMVVNJT04sICZvY2NsdXNpb25RdWVyeSk7Cisg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgICAgICBFUlIoIkNyZWF0ZVF1ZXJ5IGZhaWxlZCBocj0leFxuIiwg
cmVzdWx0KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8
fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChmYWxz
ZSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3Vs
dCkpOwotCi0gICAgaWYgKG9jY2x1c2lvblF1ZXJ5KQorICAgIElEaXJlY3QzRFN0YXRlQmxvY2s5
ICpzYXZlZFN0YXRlID0gTlVMTDsKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVN0YXRlQmxv
Y2soRDNEU0JUX0FMTCwgJnNhdmVkU3RhdGUpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAg
ICB7Ci0gICAgICAgIElEaXJlY3QzRFN0YXRlQmxvY2s5ICpzYXZlZFN0YXRlID0gTlVMTDsKLSAg
ICAgICAgZGV2aWNlLT5DcmVhdGVTdGF0ZUJsb2NrKEQzRFNCVF9BTEwsICZzYXZlZFN0YXRlKTsK
LQotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG9jY2x1c2lvblF1ZXJ5LT5Jc3N1ZShEM0RJU1NV
RV9CRUdJTik7Ci0gICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0KLSAgICAgICAg
Ly8gUmVuZGVyIHNvbWV0aGluZyBvdXRzaWRlIHRoZSByZW5kZXIgdGFyZ2V0Ci0gICAgICAgIGRl
dmljZS0+U2V0UGl4ZWxTaGFkZXIoTlVMTCk7Ci0gICAgICAgIGRldmljZS0+U2V0VmVydGV4U2hh
ZGVyKE5VTEwpOwotICAgICAgICBkZXZpY2UtPlNldEZWRihEM0RGVkZfWFlaUkhXKTsKLSAgICAg
ICAgZmxvYXQgZGF0YVs0XSA9IHstMS4wZiwgLTEuMGYsIC0xLjBmLCAxLjBmfTsKLSAgICAgICAg
ZGlzcGxheS0+c3RhcnRTY2VuZSgpOwotICAgICAgICBkZXZpY2UtPkRyYXdQcmltaXRpdmVVUChE
M0RQVF9QT0lOVExJU1QsIDEsIGRhdGEsIHNpemVvZihkYXRhKSk7Ci0KLSAgICAgICAgcmVzdWx0
ID0gb2NjbHVzaW9uUXVlcnktPklzc3VlKEQzRElTU1VFX0VORCk7Ci0gICAgICAgIEFTU0VSVChT
VUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIEVSUigiQ3JlYXRlU3RhdGVCbG9jayBmYWlsZWQg
aHI9JXhcbiIsIHJlc3VsdCk7CisgICAgICAgIG9jY2x1c2lvblF1ZXJ5LT5SZWxlYXNlKCk7CiAK
LSAgICAgICAgd2hpbGUgKG9jY2x1c2lvblF1ZXJ5LT5HZXREYXRhKE5VTEwsIDAsIEQzREdFVERB
VEFfRkxVU0gpID09IFNfRkFMU0UpCisgICAgICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX09VVE9G
VklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIC8vIEtlZXAgcG9sbGluZywgYnV0IGFsbG93IG90aGVyIHRocmVhZHMgdG8gZG8gc29t
ZXRoaW5nIHVzZWZ1bCBmaXJzdAotICAgICAgICAgICAgU2xlZXAoMCk7CisgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CiAgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIHJlc3VsdCA9IG9jY2x1c2lv
blF1ZXJ5LT5Jc3N1ZShEM0RJU1NVRV9CRUdJTik7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQor
ICAgIHsKKyAgICAgICAgRVJSKCJvY2NsdXNpb25RdWVyeS0+SXNzdWUoQkVHSU4pIGZhaWxlZCBo
cj0leFxuIiwgcmVzdWx0KTsKICAgICAgICAgb2NjbHVzaW9uUXVlcnktPlJlbGVhc2UoKTsKKyAg
ICAgICAgc2F2ZWRTdGF0ZS0+UmVsZWFzZSgpOworICAgICAgICBBU1NFUlQoZmFsc2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgIGlmIChzYXZlZFN0YXRlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBzYXZlZFN0YXRlLT5BcHBseSgpOwotICAgICAgICAgICAgc2F2ZWRTdGF0
ZS0+UmVsZWFzZSgpOwotICAgICAgICB9CisgICAgLy8gUmVuZGVyIHNvbWV0aGluZyBvdXRzaWRl
IHRoZSByZW5kZXIgdGFyZ2V0CisgICAgZGV2aWNlLT5TZXRQaXhlbFNoYWRlcihOVUxMKTsKKyAg
ICBkZXZpY2UtPlNldFZlcnRleFNoYWRlcihOVUxMKTsKKyAgICBkZXZpY2UtPlNldEZWRihEM0RG
VkZfWFlaUkhXKTsKKyAgICBmbG9hdCBkYXRhWzRdID0gey0xLjBmLCAtMS4wZiwgLTEuMGYsIDEu
MGZ9OworICAgIGRpc3BsYXktPnN0YXJ0U2NlbmUoKTsKKyAgICBkZXZpY2UtPkRyYXdQcmltaXRp
dmVVUChEM0RQVF9QT0lOVExJU1QsIDEsIGRhdGEsIHNpemVvZihkYXRhKSk7CisKKyAgICByZXN1
bHQgPSBvY2NsdXNpb25RdWVyeS0+SXNzdWUoRDNESVNTVUVfRU5EKTsKKyAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCisgICAgeworICAgICAgICBFUlIoIm9jY2x1c2lvblF1ZXJ5LT5Jc3N1ZShFTkQp
IGZhaWxlZCBocj0leFxuIiwgcmVzdWx0KTsKKyAgICAgICAgb2NjbHVzaW9uUXVlcnktPlJlbGVh
c2UoKTsKKyAgICAgICAgc2F2ZWRTdGF0ZS0+QXBwbHkoKTsKKyAgICAgICAgc2F2ZWRTdGF0ZS0+
UmVsZWFzZSgpOworICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgd2hpbGUgKChyZXN1bHQgPSBvY2NsdXNpb25RdWVyeS0+R2V0RGF0YShOVUxMLCAw
LCBEM0RHRVREQVRBX0ZMVVNIKSkgPT0gU19GQUxTRSkKKyAgICB7CisgICAgICAgIC8vIEtlZXAg
cG9sbGluZywgYnV0IGFsbG93IG90aGVyIHRocmVhZHMgdG8gZG8gc29tZXRoaW5nIHVzZWZ1bCBm
aXJzdAorICAgICAgICBTbGVlcCgwKTsKKyAgICB9CisKKyAgICBvY2NsdXNpb25RdWVyeS0+UmVs
ZWFzZSgpOworICAgIHNhdmVkU3RhdGUtPkFwcGx5KCk7CisgICAgc2F2ZWRTdGF0ZS0+UmVsZWFz
ZSgpOworCisgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCkKKyAgICB7CisgICAg
ICAgIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgIH0KIH0KIApAQCAtMjcyOCwyOCArMjc5
NywzNSBAQCB2b2lkIENvbnRleHQ6OmZsdXNoKCkKIHsKICAgICBJRGlyZWN0M0REZXZpY2U5ICpk
ZXZpY2UgPSBnZXREZXZpY2UoKTsKICAgICBJRGlyZWN0M0RRdWVyeTkgKmV2ZW50UXVlcnkgPSBO
VUxMOworICAgIEhSRVNVTFQgcmVzdWx0OwogCi0gICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2Ut
PkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9FVkVOVCwgJmV2ZW50UXVlcnkpOwotCi0gICAgaWYg
KHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1F
TU9SWSkKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9FVkVO
VCwgJmV2ZW50UXVlcnkpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgRVJSKCJDcmVhdGVRdWVy
eSBmYWlsZWQgaHI9JXhcbiIsIHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gRDNERVJS
X09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNT
RVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLQotICAgIGlmIChldmVudFF1ZXJ5KQorICAgIHJlc3Vs
dCA9IGV2ZW50UXVlcnktPklzc3VlKEQzRElTU1VFX0VORCk7CisgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQogICAgIHsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBldmVudFF1ZXJ5LT5Jc3N1ZShE
M0RJU1NVRV9FTkQpOwotICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotCi0gICAg
ICAgIHJlc3VsdCA9IGV2ZW50UXVlcnktPkdldERhdGEoTlVMTCwgMCwgRDNER0VUREFUQV9GTFVT
SCk7CisgICAgICAgIEVSUigiZXZlbnRRdWVyeS0+SXNzdWUoRU5EKSBmYWlsZWQgaHI9JXhcbiIs
IHJlc3VsdCk7CisgICAgICAgIEFTU0VSVChmYWxzZSk7CiAgICAgICAgIGV2ZW50UXVlcnktPlJl
bGVhc2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICBpZiAocmVzdWx0ID09
IEQzREVSUl9ERVZJQ0VMT1NUKQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKLSAgICAgICAgfQorICAgIHJlc3VsdCA9IGV2ZW50UXVlcnktPkdldERhdGEo
TlVMTCwgMCwgRDNER0VUREFUQV9GTFVTSCk7CisgICAgZXZlbnRRdWVyeS0+UmVsZWFzZSgpOwor
CisgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCkKKyAgICB7CisgICAgICAgIGVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgIH0KIH0KIApAQCAtMjc1Nyw0OSArMjgzMyw1NyBA
QCB2b2lkIENvbnRleHQ6OmRyYXdDbG9zaW5nTGluZSh1bnNpZ25lZCBpCiB7CiAgICAgSURpcmVj
dDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7CiAgICAgSURpcmVjdDNESW5kZXhCdWZm
ZXI5ICppbmRleEJ1ZmZlciA9IE5VTEw7Ci0gICAgSFJFU1VMVCByZXN1bHQgPSBEM0RFUlJfSU5W
QUxJRENBTEw7CisgICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICBVSU5UIG9mZnNldDsK
IAogICAgIGlmIChzdXBwb3J0czMyYml0SW5kaWNlcygpKQogICAgIHsKLSAgICAgICAgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVJbmRleEJ1ZmZlcig4LCBEM0RVU0FHRV9XUklURU9OTFksIEQzREZN
VF9JTkRFWDMyLCBEM0RQT09MX0RFRkFVTFQsICZpbmRleEJ1ZmZlciwgMCk7CisgICAgICAgIGNv
bnN0IGludCBzcGFjZU5lZWRlZCA9IDIgKiBzaXplb2YodW5zaWduZWQgaW50KTsKIAotICAgICAg
ICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgICAgIGlmICghbUNsb3NpbmdJQikKICAgICAg
ICAgewotICAgICAgICAgICAgdW5zaWduZWQgaW50ICpkYXRhOwotICAgICAgICAgICAgcmVzdWx0
ID0gaW5kZXhCdWZmZXItPkxvY2soMCwgMCwgKHZvaWQqKikmZGF0YSwgMCk7CisgICAgICAgICAg
ICBtQ2xvc2luZ0lCID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVyKGRldmljZSwgQ0xPU0lOR19J
TkRFWF9CVUZGRVJfU0laRSwgRDNERk1UX0lOREVYMzIpOworICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBkYXRhWzBdID0gbGFzdDsKLSAgICAgICAgICAgICAgICBkYXRhWzFdID0gZmlyc3Q7Ci0gICAg
ICAgICAgICB9CisgICAgICAgIG1DbG9zaW5nSUItPnJlc2VydmVTcGFjZShzcGFjZU5lZWRlZCwg
R0xfVU5TSUdORURfSU5UKTsKKworICAgICAgICB1bnNpZ25lZCBpbnQgKmRhdGEgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQqPihtQ2xvc2luZ0lCLT5tYXAoc3BhY2VOZWVkZWQsICZvZmZzZXQp
KTsKKyAgICAgICAgaWYgKGRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbMF0gPSBs
YXN0OworICAgICAgICAgICAgZGF0YVsxXSA9IGZpcnN0OworICAgICAgICAgICAgbUNsb3NpbmdJ
Qi0+dW5tYXAoKTsKKyAgICAgICAgICAgIG9mZnNldCAvPSA0OworICAgICAgICAgICAgc3VjY2Vl
ZGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBy
ZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUluZGV4QnVmZmVyKDQsIEQzRFVTQUdFX1dSSVRFT05MWSwg
RDNERk1UX0lOREVYMTYsIEQzRFBPT0xfREVGQVVMVCwgJmluZGV4QnVmZmVyLCAwKTsKKyAgICAg
ICAgY29uc3QgaW50IHNwYWNlTmVlZGVkID0gMiAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCk7CiAK
LSAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICBpZiAoIW1DbG9zaW5nSUIp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpkYXRhOwotICAgICAgICAg
ICAgcmVzdWx0ID0gaW5kZXhCdWZmZXItPkxvY2soMCwgMCwgKHZvaWQqKikmZGF0YSwgMCk7Cisg
ICAgICAgICAgICBtQ2xvc2luZ0lCID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVyKGRldmljZSwg
Q0xPU0lOR19JTkRFWF9CVUZGRVJfU0laRSwgRDNERk1UX0lOREVYMTYpOworICAgICAgICB9CiAK
LSAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBkYXRhWzBdID0gbGFzdDsKLSAgICAgICAgICAgICAgICBkYXRhWzFdID0gZmly
c3Q7Ci0gICAgICAgICAgICB9CisgICAgICAgIG1DbG9zaW5nSUItPnJlc2VydmVTcGFjZShzcGFj
ZU5lZWRlZCwgR0xfVU5TSUdORURfU0hPUlQpOworCisgICAgICAgIHVuc2lnbmVkIHNob3J0ICpk
YXRhID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQqPihtQ2xvc2luZ0lCLT5tYXAoc3BhY2VO
ZWVkZWQsICZvZmZzZXQpKTsKKyAgICAgICAgaWYgKGRhdGEpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRhdGFbMF0gPSBsYXN0OworICAgICAgICAgICAgZGF0YVsxXSA9IGZpcnN0OworICAgICAg
ICAgICAgbUNsb3NpbmdJQi0+dW5tYXAoKTsKKyAgICAgICAgICAgIG9mZnNldCAvPSAyOworICAg
ICAgICAgICAgc3VjY2VlZGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBp
ZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgaWYgKHN1Y2NlZWRlZCkKICAgICB7Ci0gICAgICAg
IGluZGV4QnVmZmVyLT5VbmxvY2soKTsKLSAgICAgICAgZGV2aWNlLT5TZXRJbmRpY2VzKGluZGV4
QnVmZmVyKTsKKyAgICAgICAgZGV2aWNlLT5TZXRJbmRpY2VzKG1DbG9zaW5nSUItPmdldEJ1ZmZl
cigpKTsKIAotICAgICAgICBkZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKEQzRFBUX0xJTkVM
SVNULCAwLCAwLCAyLCAwLCAxKTsKLQotICAgICAgICBpbmRleEJ1ZmZlci0+UmVsZWFzZSgpOwor
ICAgICAgICBkZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKEQzRFBUX0xJTkVMSVNULCAwLCAw
LCBsYXN0LCBvZmZzZXQsIDEpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMjkxNyw2ICsz
MDAxLDE2IEBAIGludCBDb250ZXh0OjpnZXRNYXhpbXVtVmFyeWluZ1ZlY3RvcnMoKSAKICAgICBy
ZXR1cm4gbVN1cHBvcnRzU2hhZGVyTW9kZWwzID8gTUFYX1ZBUllJTkdfVkVDVE9SU19TTTMgOiBN
QVhfVkFSWUlOR19WRUNUT1JTX1NNMjsKIH0KIAordW5zaWduZWQgaW50IENvbnRleHQ6OmdldE1h
eGltdW1WZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBw
b3J0c1ZlcnRleFRleHR1cmUgPyBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGIDog
MDsKK30KKwordW5zaWduZWQgaW50IENvbnRleHQ6OmdldE1heGltdW1Db21iaW5lZFRleHR1cmVJ
bWFnZVVuaXRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMg
KyBnZXRNYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKTsKK30KKwogaW50IENvbnRleHQ6
OmdldE1heGltdW1GcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bVN1cHBvcnRzU2hhZGVyTW9kZWwzID8gTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU19TTTMg
OiBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTX1NNMjsKQEAgLTMwMjYsNiArMzEyMCwxMSBA
QCBib29sIENvbnRleHQ6OnN1cHBvcnRzMzJiaXRJbmRpY2VzKCkgY29uCiAgICAgcmV0dXJuIG1T
dXBwb3J0czMyYml0SW5kaWNlczsKIH0KIAorYm9vbCBDb250ZXh0OjpzdXBwb3J0c05vblBvd2Vy
MlRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJl
OworfQorCiB2b2lkIENvbnRleHQ6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyKQogewogICAg
IC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuOSBwYWdlIDIyOgpAQCAtMzA1Nyw5ICsz
MTU2LDkgQEAgdm9pZCBDb250ZXh0OjpkZXRhY2hUZXh0dXJlKEdMdWludCB0ZXh0dQogICAgIC8v
IElmIGEgdGV4dHVyZSBvYmplY3QgaXMgZGVsZXRlZCwgaXQgaXMgYXMgaWYgYWxsIHRleHR1cmUg
dW5pdHMgd2hpY2ggYXJlIGJvdW5kIHRvIHRoYXQgdGV4dHVyZSBvYmplY3QgYXJlCiAgICAgLy8g
cmVib3VuZCB0byB0ZXh0dXJlIG9iamVjdCB6ZXJvCiAKLSAgICBmb3IgKGludCB0eXBlID0gMDsg
dHlwZSA8IFNBTVBMRVJfVFlQRV9DT1VOVDsgdHlwZSsrKQorICAgIGZvciAoaW50IHR5cGUgPSAw
OyB0eXBlIDwgVEVYVFVSRV9UWVBFX0NPVU5UOyB0eXBlKyspCiAgICAgewotICAgICAgICBmb3Ig
KGludCBzYW1wbGVyID0gMDsgc2FtcGxlciA8IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTOyBzYW1w
bGVyKyspCisgICAgICAgIGZvciAoaW50IHNhbXBsZXIgPSAwOyBzYW1wbGVyIDwgTUFYX0NPTUJJ
TkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGOyBzYW1wbGVyKyspCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxlcl0uaWQoKSA9PSB0
ZXh0dXJlKQogICAgICAgICAgICAgewpAQCAtMzEzNCw3ICszMjMzLDcgQEAgdm9pZCBDb250ZXh0
OjpkZXRhY2hSZW5kZXJidWZmZXIoR0x1aW50IAogICAgIH0KIH0KIAotVGV4dHVyZSAqQ29udGV4
dDo6Z2V0SW5jb21wbGV0ZVRleHR1cmUoU2FtcGxlclR5cGUgdHlwZSkKK1RleHR1cmUgKkNvbnRl
eHQ6OmdldEluY29tcGxldGVUZXh0dXJlKFRleHR1cmVUeXBlIHR5cGUpCiB7CiAgICAgVGV4dHVy
ZSAqdCA9IG1JbmNvbXBsZXRlVGV4dHVyZXNbdHlwZV0uZ2V0KCk7CiAKQEAgLTMxNDYsMjYgKzMy
NDUsMjYgQEAgVGV4dHVyZSAqQ29udGV4dDo6Z2V0SW5jb21wbGV0ZVRleHR1cmUoUwogICAgICAg
ICB7CiAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAg
ICAgICAgICAvLyBkZWZhdWx0IGZhbGxzIHRocm91Z2ggdG8gU0FNUExFUl8yRAorICAgICAgICAg
ICAgLy8gZGVmYXVsdCBmYWxscyB0aHJvdWdoIHRvIFRFWFRVUkVfMkQKIAotICAgICAgICAgIGNh
c2UgU0FNUExFUl8yRDoKKyAgICAgICAgICBjYXNlIFRFWFRVUkVfMkQ6CiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgVGV4dHVyZTJEICppbmNvbXBsZXRlMmQgPSBuZXcgVGV4dHVyZTJE
KFRleHR1cmU6OklOQ09NUExFVEVfVEVYVFVSRV9JRCk7Ci0gICAgICAgICAgICAgICAgaW5jb21w
bGV0ZTJkLT5zZXRJbWFnZSgwLCBHTF9SR0JBLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCAxLCBjb2xvcik7CisgICAgICAgICAgICAgICAgaW5jb21wbGV0ZTJkLT5zZXRJbWFnZSgw
LCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAxLCBjb2xvcik7CiAgICAgICAgICAg
ICAgICAgdCA9IGluY29tcGxldGUyZDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgY2FzZSBTQU1QTEVSX0NVQkU6CisgICAgICAgICAgY2FzZSBURVhUVVJF
X0NVQkU6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIFRleHR1cmVDdWJlTWFwICppbmNv
bXBsZXRlQ3ViZSA9IG5ldyBUZXh0dXJlQ3ViZU1hcChUZXh0dXJlOjpJTkNPTVBMRVRFX1RFWFRV
UkVfSUQpOwogCi0gICAgICAgICAgICAgIGluY29tcGxldGVDdWJlLT5zZXRJbWFnZVBvc1goMCwg
R0xfUkdCQSwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMSwgY29sb3IpOwotICAg
ICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VOZWdYKDAsIEdMX1JHQkEsIDEsIDEs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKLSAgICAgICAgICAgICAgaW5j
b21wbGV0ZUN1YmUtPnNldEltYWdlUG9zWSgwLCBHTF9SR0JBLCAxLCAxLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCAxLCBjb2xvcik7Ci0gICAgICAgICAgICAgIGluY29tcGxldGVDdWJlLT5z
ZXRJbWFnZU5lZ1koMCwgR0xfUkdCQSwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
MSwgY29sb3IpOwotICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VQb3NaKDAs
IEdMX1JHQkEsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKLSAg
ICAgICAgICAgICAgaW5jb21wbGV0ZUN1YmUtPnNldEltYWdlTmVnWigwLCBHTF9SR0JBLCAxLCAx
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAxLCBjb2xvcik7CisgICAgICAgICAgICAgIGlu
Y29tcGxldGVDdWJlLT5zZXRJbWFnZVBvc1goMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgMSwgY29sb3IpOworICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VO
ZWdYKDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKKyAgICAg
ICAgICAgICAgaW5jb21wbGV0ZUN1YmUtPnNldEltYWdlUG9zWSgwLCAxLCAxLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCAxLCBjb2xvcik7CisgICAgICAgICAgICAgIGluY29tcGxldGVDdWJl
LT5zZXRJbWFnZU5lZ1koMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMSwgY29s
b3IpOworICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VQb3NaKDAsIDEsIDEs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKKyAgICAgICAgICAgICAgaW5j
b21wbGV0ZUN1YmUtPnNldEltYWdlTmVnWigwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCAxLCBjb2xvcik7CiAKICAgICAgICAgICAgICAgdCA9IGluY29tcGxldGVDdWJlOwogICAg
ICAgICAgICAgfQpAQCAtMzI2Myw2ICszMzYyLDExIEBAIHZvaWQgQ29udGV4dDo6aW5pdEV4dGVu
c2lvblN0cmluZygpCiAgICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkdMX09FU19lbGVtZW50
X2luZGV4X3VpbnQgIjsKICAgICB9CiAKKyAgICBpZiAoc3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJl
KCkpCisgICAgeworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfdGV4dHVyZV9u
cG90ICI7CisgICAgfQorCiAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBlbmQgPSBtRXh0ZW5z
aW9uU3RyaW5nLmZpbmRfbGFzdF9ub3Rfb2YoJyAnKTsKICAgICBpZiAoZW5kICE9IHN0ZDo6c3Ry
aW5nOjpucG9zKQogICAgIHsKQEAgLTMyOTUsNiArMzM5OSwxMSBAQCB2b2lkIENvbnRleHQ6OmJs
aXRGcmFtZWJ1ZmZlcihHTGludCBzcmNYCiAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CiAgICAgfQogCisgICAgaW50IHJlYWRCdWZmZXJXaWR0aCA9IHJlYWRGcmFt
ZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0V2lkdGgoKTsKKyAgICBpbnQgcmVhZEJ1ZmZl
ckhlaWdodCA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0SGVpZ2h0KCk7
CisgICAgaW50IGRyYXdCdWZmZXJXaWR0aCA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZm
ZXIoKS0+Z2V0V2lkdGgoKTsKKyAgICBpbnQgZHJhd0J1ZmZlckhlaWdodCA9IGRyYXdGcmFtZWJ1
ZmZlci0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0SGVpZ2h0KCk7CisKICAgICBSRUNUIHNvdXJjZVJl
Y3Q7CiAgICAgUkVDVCBkZXN0UmVjdDsKIApAQCAtMzMxMywyMSArMzQyMiwxOSBAQCB2b2lkIENv
bnRleHQ6OmJsaXRGcmFtZWJ1ZmZlcihHTGludCBzcmNYCiAgICAgICAgIGRlc3RSZWN0LnJpZ2h0
ID0gZHN0WDA7CiAgICAgfQogCi0gICAgLy8gQXJndW1lbnRzIHRvIFN0cmV0Y2hSZWN0IG11c3Qg
YmUgaW4gRDNELXN0eWxlICgwLXRvcCkgY29vcmRpbmF0ZXMsIHNvIHdlIG11c3QgCi0gICAgLy8g
ZmxpcCBvdXIgWS12YWx1ZXMgaGVyZQogICAgIGlmIChzcmNZMCA8IHNyY1kxKQogICAgIHsKLSAg
ICAgICAgc291cmNlUmVjdC5ib3R0b20gPSBzcmNZMTsKLSAgICAgICAgZGVzdFJlY3QuYm90dG9t
ID0gZHN0WTE7Ci0gICAgICAgIHNvdXJjZVJlY3QudG9wID0gc3JjWTA7Ci0gICAgICAgIGRlc3RS
ZWN0LnRvcCA9IGRzdFkwOworICAgICAgICBzb3VyY2VSZWN0LnRvcCA9IHJlYWRCdWZmZXJIZWln
aHQgLSBzcmNZMTsKKyAgICAgICAgZGVzdFJlY3QudG9wID0gZHJhd0J1ZmZlckhlaWdodCAtIGRz
dFkxOworICAgICAgICBzb3VyY2VSZWN0LmJvdHRvbSA9IHJlYWRCdWZmZXJIZWlnaHQgLSBzcmNZ
MDsKKyAgICAgICAgZGVzdFJlY3QuYm90dG9tID0gZHJhd0J1ZmZlckhlaWdodCAtIGRzdFkwOwog
ICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBzb3VyY2VSZWN0LmJvdHRvbSA9IHNyY1kw
OwotICAgICAgICBkZXN0UmVjdC5ib3R0b20gPSBkc3RZMDsKLSAgICAgICAgc291cmNlUmVjdC50
b3AgPSBzcmNZMTsKLSAgICAgICAgZGVzdFJlY3QudG9wID0gZHN0WTE7CisgICAgICAgIHNvdXJj
ZVJlY3QudG9wID0gcmVhZEJ1ZmZlckhlaWdodCAtIHNyY1kwOworICAgICAgICBkZXN0UmVjdC50
b3AgPSBkcmF3QnVmZmVySGVpZ2h0IC0gZHN0WTA7CisgICAgICAgIHNvdXJjZVJlY3QuYm90dG9t
ID0gcmVhZEJ1ZmZlckhlaWdodCAtIHNyY1kxOworICAgICAgICBkZXN0UmVjdC5ib3R0b20gPSBk
cmF3QnVmZmVySGVpZ2h0IC0gZHN0WTE7CiAgICAgfQogCiAgICAgUkVDVCBzb3VyY2VTY2lzc29y
ZWRSZWN0ID0gc291cmNlUmVjdDsKQEAgLTMzODIsMTEgKzM0ODksNiBAQCB2b2lkIENvbnRleHQ6
OmJsaXRGcmFtZWJ1ZmZlcihHTGludCBzcmNYCiAgICAgICAgIGRlc3RUcmltbWVkUmVjdC5sZWZ0
ICs9IHhEaWZmOwogICAgIH0KIAotICAgIGludCByZWFkQnVmZmVyV2lkdGggPSByZWFkRnJhbWVi
dWZmZXItPmdldENvbG9yYnVmZmVyKCktPmdldFdpZHRoKCk7Ci0gICAgaW50IHJlYWRCdWZmZXJI
ZWlnaHQgPSByZWFkRnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKCktPmdldEhlaWdodCgpOwot
ICAgIGludCBkcmF3QnVmZmVyV2lkdGggPSBkcmF3RnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVy
KCktPmdldFdpZHRoKCk7Ci0gICAgaW50IGRyYXdCdWZmZXJIZWlnaHQgPSBkcmF3RnJhbWVidWZm
ZXItPmdldENvbG9yYnVmZmVyKCktPmdldEhlaWdodCgpOwotCiAgICAgaWYgKHNvdXJjZVRyaW1t
ZWRSZWN0LnJpZ2h0ID4gcmVhZEJ1ZmZlcldpZHRoKQogICAgIHsKICAgICAgICAgaW50IHhEaWZm
ID0gc291cmNlVHJpbW1lZFJlY3QucmlnaHQgLSByZWFkQnVmZmVyV2lkdGg7CkBAIC0zNTUxLDYg
KzM2NTMsODggQEAgdm9pZCBDb250ZXh0OjpibGl0RnJhbWVidWZmZXIoR0xpbnQgc3JjWAogICAg
IH0KIH0KIAorVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6VmVydGV4RGVjbGFyYXRpb25DYWNoZSgp
IDogbU1heExydSgwKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNX1ZFUlRFWF9ERUNM
X0NBQ0hFX0VOVFJJRVM7IGkrKykKKyAgICB7CisgICAgICAgIG1WZXJ0ZXhEZWNsQ2FjaGVbaV0u
dmVydGV4RGVjbGFyYXRpb24gPSBOVUxMOworICAgICAgICBtVmVydGV4RGVjbENhY2hlW2ldLmxy
dUNvdW50ID0gMDsKKyAgICB9Cit9CisKK1ZlcnRleERlY2xhcmF0aW9uQ2FjaGU6On5WZXJ0ZXhE
ZWNsYXJhdGlvbkNhY2hlKCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9WRVJURVhf
REVDTF9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBpZiAobVZlcnRleERlY2xD
YWNoZVtpXS52ZXJ0ZXhEZWNsYXJhdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgbVZlcnRl
eERlY2xDYWNoZVtpXS52ZXJ0ZXhEZWNsYXJhdGlvbi0+UmVsZWFzZSgpOworICAgICAgICB9Cisg
ICAgfQorfQorCitHTGVudW0gVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6YXBwbHlEZWNsYXJhdGlv
bihUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbXSwgUHJvZ3JhbSAqcHJvZ3JhbSkKK3sK
KyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKKworICAgIEQzRFZF
UlRFWEVMRU1FTlQ5IGVsZW1lbnRzW01BWF9WRVJURVhfQVRUUklCUyArIDFdOworICAgIEQzRFZF
UlRFWEVMRU1FTlQ5ICplbGVtZW50ID0gJmVsZW1lbnRzWzBdOworCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChhdHRy
aWJ1dGVzW2ldLmFjdGl2ZSkKKyAgICAgICAgeworICAgICAgICAgICAgZGV2aWNlLT5TZXRTdHJl
YW1Tb3VyY2UoaSwgYXR0cmlidXRlc1tpXS52ZXJ0ZXhCdWZmZXIsIGF0dHJpYnV0ZXNbaV0ub2Zm
c2V0LCBhdHRyaWJ1dGVzW2ldLnN0cmlkZSk7CisKKyAgICAgICAgICAgIGVsZW1lbnQtPlN0cmVh
bSA9IGk7CisgICAgICAgICAgICBlbGVtZW50LT5PZmZzZXQgPSAwOworICAgICAgICAgICAgZWxl
bWVudC0+VHlwZSA9IGF0dHJpYnV0ZXNbaV0udHlwZTsKKyAgICAgICAgICAgIGVsZW1lbnQtPk1l
dGhvZCA9IEQzRERFQ0xNRVRIT0RfREVGQVVMVDsKKyAgICAgICAgICAgIGVsZW1lbnQtPlVzYWdl
ID0gRDNEREVDTFVTQUdFX1RFWENPT1JEOworICAgICAgICAgICAgZWxlbWVudC0+VXNhZ2VJbmRl
eCA9IHByb2dyYW0tPmdldFNlbWFudGljSW5kZXgoaSk7CisgICAgICAgICAgICBlbGVtZW50Kys7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgRDNEVkVSVEVYRUxFTUVOVDkg
ZW5kID0gRDNEREVDTF9FTkQoKTsKKyAgICAqKGVsZW1lbnQrKykgPSBlbmQ7CisKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IE5VTV9WRVJURVhfREVDTF9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAg
eworICAgICAgICBWZXJ0ZXhEZWNsQ2FjaGVFbnRyeSAqZW50cnkgPSAmbVZlcnRleERlY2xDYWNo
ZVtpXTsKKyAgICAgICAgaWYgKG1lbWNtcChlbnRyeS0+Y2FjaGVkRWxlbWVudHMsIGVsZW1lbnRz
LCAoZWxlbWVudCAtIGVsZW1lbnRzKSAqIHNpemVvZihEM0RWRVJURVhFTEVNRU5UOSkpID09IDAg
JiYgZW50cnktPnZlcnRleERlY2xhcmF0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBlbnRy
eS0+bHJ1Q291bnQgPSArK21NYXhMcnU7CisgICAgICAgICAgICBkZXZpY2UtPlNldFZlcnRleERl
Y2xhcmF0aW9uKGVudHJ5LT52ZXJ0ZXhEZWNsYXJhdGlvbik7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHJldHVybiBHTF9OT19FUlJPUjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFZlcnRl
eERlY2xDYWNoZUVudHJ5ICpsYXN0Q2FjaGUgPSBtVmVydGV4RGVjbENhY2hlOworCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBOVU1fVkVSVEVYX0RFQ0xfQ0FDSEVfRU5UUklFUzsgaSsrKQorICAg
IHsKKyAgICAgICAgaWYgKG1WZXJ0ZXhEZWNsQ2FjaGVbaV0ubHJ1Q291bnQgPCBsYXN0Q2FjaGUt
PmxydUNvdW50KQorICAgICAgICB7CisgICAgICAgICAgICBsYXN0Q2FjaGUgPSAmbVZlcnRleERl
Y2xDYWNoZVtpXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsYXN0Q2FjaGUtPnZlcnRl
eERlY2xhcmF0aW9uICE9IE5VTEwpCisgICAgeworICAgICAgICBsYXN0Q2FjaGUtPnZlcnRleERl
Y2xhcmF0aW9uLT5SZWxlYXNlKCk7CisgICAgICAgIGxhc3RDYWNoZS0+dmVydGV4RGVjbGFyYXRp
b24gPSBOVUxMOworICAgIH0KKworICAgIG1lbWNweShsYXN0Q2FjaGUtPmNhY2hlZEVsZW1lbnRz
LCBlbGVtZW50cywgKGVsZW1lbnQgLSBlbGVtZW50cykgKiBzaXplb2YoRDNEVkVSVEVYRUxFTUVO
VDkpKTsKKyAgICBkZXZpY2UtPkNyZWF0ZVZlcnRleERlY2xhcmF0aW9uKGVsZW1lbnRzLCAmbGFz
dENhY2hlLT52ZXJ0ZXhEZWNsYXJhdGlvbik7CisgICAgZGV2aWNlLT5TZXRWZXJ0ZXhEZWNsYXJh
dGlvbihsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uKTsKKyAgICBsYXN0Q2FjaGUtPmxydUNv
dW50ID0gKyttTWF4THJ1OworCisgICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCiB9CiAKIGV4
dGVybiAiQyIKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQ29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvQ29udGV4dC5oCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xOCw5ICsxOCwxMSBAQAog
I2luY2x1ZGUgPGQzZDkuaD4KIAogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxoYXNoX21hcD4K
IAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL1Jl
c291cmNlTWFuYWdlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaCIK
ICNpbmNsdWRlICJsaWJHTEVTdjIvUmVmQ291bnRPYmplY3QuaCIKIAogbmFtZXNwYWNlIGVnbApA
QCAtNDYsNiArNDgsNyBAQCBjbGFzcyBSZW5kZXJidWZmZXI7CiBjbGFzcyBSZW5kZXJidWZmZXJT
dG9yYWdlOwogY2xhc3MgQ29sb3JidWZmZXI7CiBjbGFzcyBEZXB0aGJ1ZmZlcjsKK2NsYXNzIFN0
cmVhbWluZ0luZGV4QnVmZmVyOwogY2xhc3MgU3RlbmNpbGJ1ZmZlcjsKIGNsYXNzIERlcHRoU3Rl
bmNpbGJ1ZmZlcjsKIGNsYXNzIFZlcnRleERhdGFNYW5hZ2VyOwpAQCAtNTksOSArNjIsOSBAQCBl
bnVtCiAgICAgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgPSAyNTYgLSAyLCAgIC8vIDI1NiBp
cyB0aGUgbWluaW11bSBmb3IgU00yLCBhbmQgaW4gcHJhY3RpY2UgdGhlIG1heGltdW0gZm9yIERY
OS4gUmVzZXJ2ZSBzcGFjZSBmb3IgZHhfSGFsZlBpeGVsU2l6ZSBhbmQgZHhfRGVwdGhSYW5nZS4K
ICAgICBNQVhfVkFSWUlOR19WRUNUT1JTX1NNMiA9IDgsCiAgICAgTUFYX1ZBUllJTkdfVkVDVE9S
U19TTTMgPSAxMCwKLSAgICBNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyA9IDE2LAot
ICAgIE1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyA9IDAsCiAgICAgTUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFMgPSAxNiwKKyAgICBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRG
ID0gNCwgICAvLyBGb3IgZGV2aWNlcyBzdXBwb3J0aW5nIHZlcnRleCB0ZXh0dXJlIGZldGNoCisg
ICAgTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGID0gTUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFMgKyBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGLCAgICAKICAgICBN
QVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTX1NNMiA9IDMyIC0gMywgICAgLy8gUmVzZXJ2ZSBz
cGFjZSBmb3IgZHhfVmlld3BvcnQsIGR4X0RlcHRoLCBhbmQgZHhfRGVwdGhSYW5nZS4gZHhfUG9p
bnRPckxpbmVzIGFuZCBkeF9Gcm9udENDVyB1c2Ugc2VwYXJhdGUgYm9vbCByZWdpc3RlcnMuCiAg
ICAgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU19TTTMgPSAyMjQgLSAzLAogICAgIE1BWF9E
UkFXX0JVRkZFUlMgPSAxLApAQCAtMjAzLDcgKzIwNiw3IEBAIHN0cnVjdCBTdGF0ZQogICAgIGJv
b2wgY29sb3JNYXNrQWxwaGE7CiAgICAgYm9vbCBkZXB0aE1hc2s7CiAKLSAgICBpbnQgYWN0aXZl
U2FtcGxlcjsgICAvLyBBY3RpdmUgdGV4dHVyZSB1bml0IHNlbGVjdG9yIC0gR0xfVEVYVFVSRTAK
KyAgICB1bnNpZ25lZCBpbnQgYWN0aXZlU2FtcGxlcjsgICAvLyBBY3RpdmUgdGV4dHVyZSB1bml0
IHNlbGVjdG9yIC0gR0xfVEVYVFVSRTAKICAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+IGFycmF5
QnVmZmVyOwogICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gZWxlbWVudEFycmF5QnVmZmVyOwog
ICAgIEdMdWludCByZWFkRnJhbWVidWZmZXI7CkBAIC0yMTIsMTIgKzIxNSwzNCBAQCBzdHJ1Y3Qg
U3RhdGUKICAgICBHTHVpbnQgY3VycmVudFByb2dyYW07CiAKICAgICBWZXJ0ZXhBdHRyaWJ1dGUg
dmVydGV4QXR0cmlidXRlW01BWF9WRVJURVhfQVRUUklCU107Ci0gICAgQmluZGluZ1BvaW50ZXI8
VGV4dHVyZT4gc2FtcGxlclRleHR1cmVbU0FNUExFUl9UWVBFX0NPVU5UXVtNQVhfVEVYVFVSRV9J
TUFHRV9VTklUU107CisgICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZT4gc2FtcGxlclRleHR1cmVb
VEVYVFVSRV9UWVBFX0NPVU5UXVtNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU19WVEZd
OwogCiAgICAgR0xpbnQgdW5wYWNrQWxpZ25tZW50OwogICAgIEdMaW50IHBhY2tBbGlnbm1lbnQ7
CiB9OwogCisvLyBIZWxwZXIgY2xhc3MgdG8gY29uc3RydWN0IGFuZCBjYWNoZSB2ZXJ0ZXggZGVj
bGFyYXRpb25zCitjbGFzcyBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlCit7CisgIHB1YmxpYzoKKyAg
ICBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKCk7CisgICAgflZlcnRleERlY2xhcmF0aW9uQ2FjaGUo
KTsKKworICAgIEdMZW51bSBhcHBseURlY2xhcmF0aW9uKFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0
cmlidXRlc1tdLCBQcm9ncmFtICpwcm9ncmFtKTsKKworICBwcml2YXRlOgorICAgIFVJTlQgbU1h
eExydTsKKworICAgIGVudW0geyBOVU1fVkVSVEVYX0RFQ0xfQ0FDSEVfRU5UUklFUyA9IDE2IH07
CisKKyAgICBzdHJ1Y3QgVmVydGV4RGVjbENhY2hlRW50cnkKKyAgICB7CisgICAgICAgIEQzRFZF
UlRFWEVMRU1FTlQ5IGNhY2hlZEVsZW1lbnRzW01BWF9WRVJURVhfQVRUUklCUyArIDFdOworICAg
ICAgICBVSU5UIGxydUNvdW50OworICAgICAgICBJRGlyZWN0M0RWZXJ0ZXhEZWNsYXJhdGlvbjkg
KnZlcnRleERlY2xhcmF0aW9uOworICAgIH0gbVZlcnRleERlY2xDYWNoZVtOVU1fVkVSVEVYX0RF
Q0xfQ0FDSEVfRU5UUklFU107Cit9OworCiBjbGFzcyBDb250ZXh0CiB7CiAgIHB1YmxpYzoKQEAg
LTI5OCw3ICszMjMsNyBAQCBjbGFzcyBDb250ZXh0CiAgICAgdm9pZCBzZXRDb2xvck1hc2soYm9v
bCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSk7CiAgICAgdm9pZCBzZXRE
ZXB0aE1hc2soYm9vbCBtYXNrKTsKIAotICAgIHZvaWQgc2V0QWN0aXZlU2FtcGxlcihpbnQgYWN0
aXZlKTsKKyAgICB2b2lkIHNldEFjdGl2ZVNhbXBsZXIodW5zaWduZWQgaW50IGFjdGl2ZSk7CiAK
ICAgICBHTHVpbnQgZ2V0UmVhZEZyYW1lYnVmZmVySGFuZGxlKCkgY29uc3Q7CiAgICAgR0x1aW50
IGdldERyYXdGcmFtZWJ1ZmZlckhhbmRsZSgpIGNvbnN0OwpAQCAtMzcwLDcgKzM5NSw3IEBAIGNs
YXNzIENvbnRleHQKICAgICBQcm9ncmFtICpnZXRDdXJyZW50UHJvZ3JhbSgpOwogICAgIFRleHR1
cmUyRCAqZ2V0VGV4dHVyZTJEKCk7CiAgICAgVGV4dHVyZUN1YmVNYXAgKmdldFRleHR1cmVDdWJl
TWFwKCk7Ci0gICAgVGV4dHVyZSAqZ2V0U2FtcGxlclRleHR1cmUodW5zaWduZWQgaW50IHNhbXBs
ZXIsIFNhbXBsZXJUeXBlIHR5cGUpOworICAgIFRleHR1cmUgKmdldFNhbXBsZXJUZXh0dXJlKHVu
c2lnbmVkIGludCBzYW1wbGVyLCBUZXh0dXJlVHlwZSB0eXBlKTsKICAgICBGcmFtZWJ1ZmZlciAq
Z2V0UmVhZEZyYW1lYnVmZmVyKCk7CiAgICAgRnJhbWVidWZmZXIgKmdldERyYXdGcmFtZWJ1ZmZl
cigpOwogCkBAIC0zODAsMTMgKzQwNSw2IEBAIGNsYXNzIENvbnRleHQKIAogICAgIGJvb2wgZ2V0
UXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSBwbmFtZSwgR0xlbnVtICp0eXBlLCB1bnNpZ25lZCBp
bnQgKm51bVBhcmFtcyk7CiAKLSAgICBib29sIGFwcGx5UmVuZGVyVGFyZ2V0KGJvb2wgaWdub3Jl
Vmlld3BvcnQpOwotICAgIHZvaWQgYXBwbHlTdGF0ZShHTGVudW0gZHJhd01vZGUpOwotICAgIEdM
ZW51bSBhcHBseVZlcnRleEJ1ZmZlcihHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCk7Ci0gICAg
R0xlbnVtIGFwcGx5SW5kZXhCdWZmZXIoY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBjb3Vu
dCwgR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBlLCBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleElu
Zm8pOwotICAgIHZvaWQgYXBwbHlTaGFkZXJzKCk7Ci0gICAgdm9pZCBhcHBseVRleHR1cmVzKCk7
Ci0KICAgICB2b2lkIHJlYWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCB2b2lkKiBwaXhlbHMp
OwogICAgIHZvaWQgY2xlYXIoR0xiaXRmaWVsZCBtYXNrKTsKICAgICB2b2lkIGRyYXdBcnJheXMo
R0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKQEAgLTQwOCw2ICs0MjYs
OCBAQCBjbGFzcyBDb250ZXh0CiAKICAgICBib29sIHN1cHBvcnRzU2hhZGVyTW9kZWwzKCkgY29u
c3Q7CiAgICAgaW50IGdldE1heGltdW1WYXJ5aW5nVmVjdG9ycygpIGNvbnN0OworICAgIHVuc2ln
bmVkIGludCBnZXRNYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdDsKKyAgICB1
bnNpZ25lZCBpbnQgZ2V0TWF4aW11bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdDsK
ICAgICBpbnQgZ2V0TWF4aW11bUZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKICAgICBp
bnQgZ2V0TWF4aW11bVJlbmRlcmJ1ZmZlckRpbWVuc2lvbigpIGNvbnN0OwogICAgIGludCBnZXRN
YXhpbXVtVGV4dHVyZURpbWVuc2lvbigpIGNvbnN0OwpAQCAtNDI3LDYgKzQ0Nyw3IEBAIGNsYXNz
IENvbnRleHQKICAgICBib29sIHN1cHBvcnRzTHVtaW5hbmNlVGV4dHVyZXMoKSBjb25zdDsKICAg
ICBib29sIHN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJlcygpIGNvbnN0OwogICAgIGJvb2wg
c3VwcG9ydHMzMmJpdEluZGljZXMoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzTm9uUG93ZXIy
VGV4dHVyZSgpIGNvbnN0OwogCiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0xpbnQgc3JjWDAs
IEdMaW50IHNyY1kwLCBHTGludCBzcmNYMSwgR0xpbnQgc3JjWTEsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGRzdFgwLCBHTGludCBkc3RZMCwgR0xpbnQgZHN0WDEsIEdMaW50IGRz
dFkxLApAQCAtNDM5LDMwICs0NjAsMzggQEAgY2xhc3MgQ29udGV4dAogICBwcml2YXRlOgogICAg
IERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihDb250ZXh0KTsKIAotICAgIHZvaWQgbG9va3VwQXR0
cmlidXRlTWFwcGluZyhUcmFuc2xhdGVkQXR0cmlidXRlICphdHRyaWJ1dGVzKTsKKyAgICBib29s
IGFwcGx5UmVuZGVyVGFyZ2V0KGJvb2wgaWdub3JlVmlld3BvcnQpOworICAgIHZvaWQgYXBwbHlT
dGF0ZShHTGVudW0gZHJhd01vZGUpOworICAgIEdMZW51bSBhcHBseVZlcnRleEJ1ZmZlcihHTGlu
dCBmaXJzdCwgR0xzaXplaSBjb3VudCk7CisgICAgR0xlbnVtIGFwcGx5SW5kZXhCdWZmZXIoY29u
c3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBjb3VudCwgR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBl
LCBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pOworICAgIHZvaWQgYXBwbHlTaGFkZXJz
KCk7CisgICAgdm9pZCBhcHBseVRleHR1cmVzKCk7CisgICAgdm9pZCBhcHBseVRleHR1cmVzKFNh
bXBsZXJUeXBlIHR5cGUpOwogCiAgICAgdm9pZCBkZXRhY2hCdWZmZXIoR0x1aW50IGJ1ZmZlcik7
CiAgICAgdm9pZCBkZXRhY2hUZXh0dXJlKEdMdWludCB0ZXh0dXJlKTsKICAgICB2b2lkIGRldGFj
aEZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcik7CiAgICAgdm9pZCBkZXRhY2hSZW5kZXJi
dWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcik7CiAKLSAgICBUZXh0dXJlICpnZXRJbmNvbXBsZXRl
VGV4dHVyZShTYW1wbGVyVHlwZSB0eXBlKTsKKyAgICBUZXh0dXJlICpnZXRJbmNvbXBsZXRlVGV4
dHVyZShUZXh0dXJlVHlwZSB0eXBlKTsKIAogICAgIGJvb2wgY3VsbFNraXBzRHJhdyhHTGVudW0g
ZHJhd01vZGUpOwogICAgIGJvb2wgaXNUcmlhbmdsZU1vZGUoR0xlbnVtIGRyYXdNb2RlKTsKIAog
ICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25zdCBtQ29uZmlnOwogCi0gICAgU3RhdGUgICBtU3Rh
dGU7CisgICAgU3RhdGUgbVN0YXRlOwogCiAgICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZTJEPiBt
VGV4dHVyZTJEWmVybzsKICAgICBCaW5kaW5nUG9pbnRlcjxUZXh0dXJlQ3ViZU1hcD4gbVRleHR1
cmVDdWJlTWFwWmVybzsKIAotICAgIHR5cGVkZWYgc3RkOjptYXA8R0x1aW50LCBGcmFtZWJ1ZmZl
cio+IEZyYW1lYnVmZmVyTWFwOworICAgIHR5cGVkZWYgc3RkZXh0OjpoYXNoX21hcDxHTHVpbnQs
IEZyYW1lYnVmZmVyKj4gRnJhbWVidWZmZXJNYXA7CiAgICAgRnJhbWVidWZmZXJNYXAgbUZyYW1l
YnVmZmVyTWFwOworICAgIEhhbmRsZUFsbG9jYXRvciBtRnJhbWVidWZmZXJIYW5kbGVBbGxvY2F0
b3I7CiAKLSAgICB0eXBlZGVmIHN0ZDo6bWFwPEdMdWludCwgRmVuY2UqPiBGZW5jZU1hcDsKKyAg
ICB0eXBlZGVmIHN0ZGV4dDo6aGFzaF9tYXA8R0x1aW50LCBGZW5jZSo+IEZlbmNlTWFwOwogICAg
IEZlbmNlTWFwIG1GZW5jZU1hcDsKKyAgICBIYW5kbGVBbGxvY2F0b3IgbUZlbmNlSGFuZGxlQWxs
b2NhdG9yOwogCiAgICAgdm9pZCBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7CiAgICAgc3RkOjpzdHJp
bmcgbUV4dGVuc2lvblN0cmluZzsKQEAgLTQ3MSw4ICs1MDAsMTAgQEAgY2xhc3MgQ29udGV4dAog
ICAgIEluZGV4RGF0YU1hbmFnZXIgKm1JbmRleERhdGFNYW5hZ2VyOwogCiAgICAgQmxpdCAqbUJs
aXQ7CisKKyAgICBTdHJlYW1pbmdJbmRleEJ1ZmZlciAqbUNsb3NpbmdJQjsKICAgICAKLSAgICBC
aW5kaW5nUG9pbnRlcjxUZXh0dXJlPiBtSW5jb21wbGV0ZVRleHR1cmVzW1NBTVBMRVJfVFlQRV9D
T1VOVF07CisgICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZT4gbUluY29tcGxldGVUZXh0dXJlc1tU
RVhUVVJFX1RZUEVfQ09VTlRdOwogCiAgICAgLy8gUmVjb3JkZWQgZXJyb3JzCiAgICAgYm9vbCBt
SW52YWxpZEVudW07CkBAIC00ODMsMTMgKzUxNCwxNyBAQCBjbGFzcyBDb250ZXh0CiAKICAgICBi
b29sIG1IYXNCZWVuQ3VycmVudDsKIAotICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFByb2dyYW07
CisgICAgdW5zaWduZWQgaW50IG1BcHBsaWVkVGV4dHVyZVNlcmlhbFBTW01BWF9URVhUVVJFX0lN
QUdFX1VOSVRTXTsKKyAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRUZXh0dXJlU2VyaWFsVlNbTUFY
X1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTX1ZURl07CisgICAgdW5zaWduZWQgaW50IG1BcHBs
aWVkUHJvZ3JhbVNlcmlhbDsKICAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRSZW5kZXJUYXJnZXRT
ZXJpYWw7CiAgICAgdW5zaWduZWQgaW50IG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWw7CiAgICAg
dW5zaWduZWQgaW50IG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbDsKICAgICBib29sIG1EZXB0
aFN0ZW5jaWxJbml0aWFsaXplZDsKIAogICAgIGJvb2wgbVN1cHBvcnRzU2hhZGVyTW9kZWwzOwor
ICAgIGJvb2wgbVN1cHBvcnRzVmVydGV4VGV4dHVyZTsKKyAgICBib29sIG1TdXBwb3J0c05vblBv
d2VyMlRleHR1cmU7CiAgICAgaW50ICBtTWF4UmVuZGVyYnVmZmVyRGltZW5zaW9uOwogICAgIGlu
dCAgbU1heFRleHR1cmVEaW1lbnNpb247CiAgICAgaW50ICBtTWF4Q3ViZVRleHR1cmVEaW1lbnNp
b247CkBAIC01MjcsNiArNTYyLDggQEAgY2xhc3MgQ29udGV4dAogICAgIEQzRENBUFM5IG1EZXZp
Y2VDYXBzOwogCiAgICAgUmVzb3VyY2VNYW5hZ2VyICptUmVzb3VyY2VNYW5hZ2VyOworCisgICAg
VmVydGV4RGVjbGFyYXRpb25DYWNoZSBtVmVydGV4RGVjbGFyYXRpb25DYWNoZTsKIH07CiB9CiAK
QEAgLTUzOCw2ICs1NzUsNyBAQCB2b2lkIGdsRGVzdHJveUNvbnRleHQoZ2w6OkNvbnRleHQgKmNv
bnRlCiB2b2lkIGdsTWFrZUN1cnJlbnQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIGVnbDo6RGlzcGxh
eSAqZGlzcGxheSwgZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKIGdsOjpDb250ZXh0ICpnbEdldEN1
cnJlbnRDb250ZXh0KCk7CiBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBl
IF9fc3RkY2FsbCBnbEdldFByb2NBZGRyZXNzKGNvbnN0IGNoYXIgKnByb2NuYW1lKTsKK3ZvaWQg
X19zdGRjYWxsIGdsQmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7CiB9CiAKICNl
bmRpZiAgIC8vIElOQ0xVREVfQ09OVEVYVF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAJKHJldmlzaW9uIDg5
Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVuZGVyYnVmZmVyICpGcmFt
ZWJ1ZmZlcjo6bG9va3VwUmVuZGVyYgogICAgIH0KICAgICBlbHNlIGlmIChJc1RleHR1cmVUYXJn
ZXQodHlwZSkpCiAgICAgewotICAgICAgICBidWZmZXIgPSBjb250ZXh0LT5nZXRUZXh0dXJlKGhh
bmRsZSktPmdldENvbG9yYnVmZmVyKHR5cGUpOworICAgICAgICBidWZmZXIgPSBjb250ZXh0LT5n
ZXRUZXh0dXJlKGhhbmRsZSktPmdldFJlbmRlcmJ1ZmZlcih0eXBlKTsKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKQEAgLTI2OCwyMyArMjY4LDYgQEAgYm9vbCBGcmFtZWJ1ZmZlcjo6aGFzU3RlbmNp
bCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEZyYW1lYnVmZmVyOjppc011bHRpc2Ft
cGxlKCkKLXsKLSAgICAvLyBJZiB0aGUgZnJhbWVidWZmZXIgaXMgbm90IGNvbXBsZXRlLCBhdHRh
Y2htZW50IHNhbXBsZXMgbWF5IGJlIG1pc21hdGNoZWQsIGFuZCBpdAotICAgIC8vIGNhbm5vdCBi
ZSB1c2VkIGFzIGEgbXVsdGlzYW1wbGUgZnJhbWVidWZmZXIuIElmIGl0IGlzIGNvbXBsZXRlLCBp
dCBpcyByZXF1aXJlZCB0bwotICAgIC8vIGhhdmUgYSBjb2xvciBhdHRhY2htZW50LCBhbmQgYWxs
IGl0cyBhdHRhY2htZW50cyBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIHNhbXBsZXMsCi0g
ICAgLy8gc28gdGhlIG51bWJlciBvZiBzYW1wbGVzIGZvciB0aGUgY29sb3JidWZmZXIgd2lsbCBp
bmRpY2F0ZSB3aGV0aGVyIHRoZSBmcmFtZWJ1ZmZlciBpcwotICAgIC8vIG11bHRpc2FtcGxlZC4K
LSAgICBpZiAoY29tcGxldGVuZXNzKCkgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUgJiYgZ2V0
Q29sb3JidWZmZXIoKS0+Z2V0U2FtcGxlcygpID4gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotfQotCiBHTGVudW0gRnJhbWVidWZmZXI6OmNvbXBsZXRlbmVzcygpCiB7CiAgICAgaW50IHdp
ZHRoID0gMDsKQEAgLTMwNywyNSArMjkwLDI1IEBAIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Y29tcGxl
dGVuZXNzKCkKIAogICAgICAgICBpZiAobUNvbG9yYnVmZmVyVHlwZSA9PSBHTF9SRU5ERVJCVUZG
RVIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZ2w6OklzQ29sb3JSZW5kZXJhYmxlKGNv
bG9yYnVmZmVyLT5nZXRGb3JtYXQoKSkpCisgICAgICAgICAgICBpZiAoIWdsOjpJc0NvbG9yUmVu
ZGVyYWJsZShjb2xvcmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNI
TUVOVDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChJc1RleHR1
cmVUYXJnZXQobUNvbG9yYnVmZmVyVHlwZSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChJ
c0NvbXByZXNzZWQoY29sb3JidWZmZXItPmdldEZvcm1hdCgpKSkKKyAgICAgICAgICAgIGlmIChJ
c0NvbXByZXNzZWQoY29sb3JidWZmZXItPmdldEludGVybmFsRm9ybWF0KCkpKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRDsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyLT5pc0Zsb2F0aW5n
UG9pbnQoKSAmJiAoIWdldENvbnRleHQoKS0+c3VwcG9ydHNGbG9hdFJlbmRlcmFibGVUZXh0dXJl
cygpIHx8IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIWdldENvbnRleHQoKS0+c3VwcG9ydHNIYWxmRmxvYXRSZW5kZXJhYmxlVGV4dHVyZXMoKSkp
CisgICAgICAgICAgICBpZiAoKGNvbG9yYnVmZmVyLT5nZXRUeXBlKCkgPT0gR0xfRkxPQVQgJiYg
IWdldENvbnRleHQoKS0+c3VwcG9ydHNGbG9hdFJlbmRlcmFibGVUZXh0dXJlcygpKSB8fCAKKyAg
ICAgICAgICAgICAgICAoY29sb3JidWZmZXItPmdldFR5cGUoKSA9PSBHTF9IQUxGX0ZMT0FUX09F
UyAmJiAhZ2V0Q29udGV4dCgpLT5zdXBwb3J0c0hhbGZGbG9hdFJlbmRlcmFibGVUZXh0dXJlcygp
KSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJf
VU5TVVBQT1JURUQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZl
ci0+Z2V0Rm9ybWF0KCkgPT0gR0xfTFVNSU5BTkNFIHx8IGNvbG9yYnVmZmVyLT5nZXRGb3JtYXQo
KSA9PSBHTF9MVU1JTkFOQ0VfQUxQSEEpCisgICAgICAgICAgICBpZiAoY29sb3JidWZmZXItPmdl
dEludGVybmFsRm9ybWF0KCkgPT0gR0xfTFVNSU5BTkNFIHx8IGNvbG9yYnVmZmVyLT5nZXRJbnRl
cm5hbEZvcm1hdCgpID09IEdMX0xVTUlOQU5DRV9BTFBIQSkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CiAgICAgICAgICAg
ICB9CkBAIC00MjQsOCArNDA3LDggQEAgR0xlbnVtIEZyYW1lYnVmZmVyOjpjb21wbGV0ZW5lc3Mo
KQogCiAgICAgaWYgKG1EZXB0aGJ1ZmZlclR5cGUgPT0gR0xfUkVOREVSQlVGRkVSICYmIG1TdGVu
Y2lsYnVmZmVyVHlwZSA9PSBHTF9SRU5ERVJCVUZGRVIpCiAgICAgewotICAgICAgICBpZiAoZGVw
dGhidWZmZXItPmdldEZvcm1hdCgpICE9IEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTIHx8Ci0gICAg
ICAgICAgICBzdGVuY2lsYnVmZmVyLT5nZXRGb3JtYXQoKSAhPSBHTF9ERVBUSDI0X1NURU5DSUw4
X09FUyB8fAorICAgICAgICBpZiAoZGVwdGhidWZmZXItPmdldEludGVybmFsRm9ybWF0KCkgIT0g
R0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMgfHwKKyAgICAgICAgICAgIHN0ZW5jaWxidWZmZXItPmdl
dEludGVybmFsRm9ybWF0KCkgIT0gR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMgfHwKICAgICAgICAg
ICAgIGRlcHRoYnVmZmVyLT5nZXRTZXJpYWwoKSAhPSBzdGVuY2lsYnVmZmVyLT5nZXRTZXJpYWwo
KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9S
VEVEOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvRnJhbWVidWZmZXIuaAkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcg
KzU5LDYgQEAgY2xhc3MgRnJhbWVidWZmZXIKICAgICBHTHVpbnQgZ2V0U3RlbmNpbGJ1ZmZlckhh
bmRsZSgpOwogCiAgICAgYm9vbCBoYXNTdGVuY2lsKCk7Ci0gICAgYm9vbCBpc011bHRpc2FtcGxl
KCk7CiAgICAgaW50IGdldFNhbXBsZXMoKTsKIAogICAgIHZpcnR1YWwgR0xlbnVtIGNvbXBsZXRl
bmVzcygpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5k
bGVBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSGFuZGxlQWxs
b2NhdG9yLmNwcDogSW1wbGVtZW50cyB0aGUgZ2w6OkhhbmRsZUFsbG9jYXRvciBjbGFzcywgd2hp
Y2ggaXMgdXNlZAorLy8gdG8gYWxsb2NhdGUgR0wgaGFuZGxlcy4KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9IYW5kbGVBbGxvY2F0b3IuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisK
K25hbWVzcGFjZSBnbAoreworCitIYW5kbGVBbGxvY2F0b3I6OkhhbmRsZUFsbG9jYXRvcigpIDog
bUJhc2VWYWx1ZSgxKSwgbU5leHRWYWx1ZSgxKQoreworfQorCitIYW5kbGVBbGxvY2F0b3I6On5I
YW5kbGVBbGxvY2F0b3IoKQoreworfQorCit2b2lkIEhhbmRsZUFsbG9jYXRvcjo6c2V0QmFzZUhh
bmRsZShHTHVpbnQgdmFsdWUpCit7CisgICAgQVNTRVJUKG1CYXNlVmFsdWUgPT0gbU5leHRWYWx1
ZSk7CisgICAgbUJhc2VWYWx1ZSA9IHZhbHVlOworICAgIG1OZXh0VmFsdWUgPSB2YWx1ZTsKK30K
KworR0x1aW50IEhhbmRsZUFsbG9jYXRvcjo6YWxsb2NhdGUoKQoreworICAgIGlmIChtRnJlZVZh
bHVlcy5zaXplKCkpCisgICAgeworICAgICAgICBHTHVpbnQgaGFuZGxlID0gbUZyZWVWYWx1ZXMu
YmFjaygpOworICAgICAgICBtRnJlZVZhbHVlcy5wb3BfYmFjaygpOworICAgICAgICByZXR1cm4g
aGFuZGxlOworICAgIH0KKyAgICByZXR1cm4gbU5leHRWYWx1ZSsrOworfQorCit2b2lkIEhhbmRs
ZUFsbG9jYXRvcjo6cmVsZWFzZShHTHVpbnQgaGFuZGxlKQoreworICAgIGlmIChoYW5kbGUgPT0g
bU5leHRWYWx1ZSAtIDEpCisgICAgeworICAgICAgICAvLyBEb24ndCBkcm9wIGJlbG93IGJhc2Ug
dmFsdWUKKyAgICAgICAgaWYobU5leHRWYWx1ZSA+IG1CYXNlVmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1OZXh0VmFsdWUtLTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICAvLyBPbmx5IGZyZWUgaGFuZGxlcyB0aGF0IHdlIG93biAtIGRvbid0IGRyb3Ag
YmVsb3cgdGhlIGJhc2UgdmFsdWUKKyAgICAgICAgaWYgKGhhbmRsZSA+PSBtQmFzZVZhbHVlKQor
ICAgICAgICB7CisgICAgICAgICAgICBtRnJlZVZhbHVlcy5wdXNoX2JhY2soaGFuZGxlKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3BwCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSGFuZGxlQWxs
b2NhdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIEhhbmRsZUFsbG9jYXRvci5oOiBEZWZpbmVzIHRoZSBnbDo6SGFuZGxlQWxsb2NhdG9y
IGNsYXNzLCB3aGljaCBpcyB1c2VkIHRvCisvLyBhbGxvY2F0ZSBHTCBoYW5kbGVzLgorCisjaWZu
ZGVmIExJQkdMRVNWMl9IQU5ETEVBTExPQ0FUT1JfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0hBTkRM
RUFMTE9DQVRPUl9IXworCisjZGVmaW5lIEdMX0FQSUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIu
aD4KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgi
CisKK25hbWVzcGFjZSBnbAoreworCitjbGFzcyBIYW5kbGVBbGxvY2F0b3IKK3sKKyAgcHVibGlj
OgorICAgIEhhbmRsZUFsbG9jYXRvcigpOworICAgIHZpcnR1YWwgfkhhbmRsZUFsbG9jYXRvcigp
OworCisgICAgdm9pZCBzZXRCYXNlSGFuZGxlKEdMdWludCB2YWx1ZSk7CisKKyAgICBHTHVpbnQg
YWxsb2NhdGUoKTsKKyAgICB2b2lkIHJlbGVhc2UoR0x1aW50IGhhbmRsZSk7CisKKyAgcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oSGFuZGxlQWxsb2NhdG9yKTsKKworICAg
IEdMdWludCBtQmFzZVZhbHVlOworICAgIEdMdWludCBtTmV4dFZhbHVlOworICAgIHR5cGVkZWYg
c3RkOjp2ZWN0b3I8R0x1aW50PiBIYW5kbGVMaXN0OworICAgIEhhbmRsZUxpc3QgbUZyZWVWYWx1
ZXM7Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9IQU5ETEVBTExPQ0FUT1JfSF8K
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvSGFuZGxlQWxsb2NhdG9yLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICAr
IExGCgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9JbmRleERh
dGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL0luZGV4RGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9JbmRleERhdGFNYW5hZ2VyLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0MDQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4RGF0
YU1hbmFnZXIuY3BwOiBEZWZpbmVzIHRoZSBJbmRleERhdGFNYW5hZ2VyLCBhIGNsYXNzIHRoYXQK
Ky8vIHJ1bnMgdGhlIEJ1ZmZlciB0cmFuc2xhdGlvbiBwcm9jZXNzIGZvciBpbmRleCBidWZmZXJz
LgorCisjaW5jbHVkZSAibGliR0xFU3YyL0luZGV4RGF0YU1hbmFnZXIuaCIKKworI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL0J1ZmZlci5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisK
K25hbWVzcGFjZQoreworICAgIGVudW0geyBJTklUSUFMX0lOREVYX0JVRkZFUl9TSVpFID0gNDA5
NiAqIHNpemVvZihHTHVpbnQpIH07Cit9CisKK25hbWVzcGFjZSBnbAoreworCitJbmRleERhdGFN
YW5hZ2VyOjpJbmRleERhdGFNYW5hZ2VyKENvbnRleHQgKmNvbnRleHQsIElEaXJlY3QzRERldmlj
ZTkgKmRldmljZSkgOiBtRGV2aWNlKGRldmljZSkKK3sKKyAgICBtU3RyZWFtaW5nQnVmZmVyU2hv
cnQgPSBuZXcgU3RyZWFtaW5nSW5kZXhCdWZmZXIobURldmljZSwgSU5JVElBTF9JTkRFWF9CVUZG
RVJfU0laRSwgRDNERk1UX0lOREVYMTYpOworCisgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzMzJi
aXRJbmRpY2VzKCkpCisgICAgeworICAgICAgICBtU3RyZWFtaW5nQnVmZmVySW50ID0gbmV3IFN0
cmVhbWluZ0luZGV4QnVmZmVyKG1EZXZpY2UsIElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUsIEQz
REZNVF9JTkRFWDMyKTsKKworICAgICAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXJJbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIC8vIERvbid0IGxlYXZlIGl0IGluIGEgaGFsZi1pbml0aWFsaXpl
ZCBzdGF0ZQorICAgICAgICAgICAgZGVsZXRlIG1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKKyAgICAg
ICAgICAgIG1TdHJlYW1pbmdCdWZmZXJTaG9ydCA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgbVN0cmVhbWluZ0J1ZmZlckludCA9IE5VTEw7CisgICAg
fQorCisgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVyU2hvcnQpCisgICAgeworICAgICAgICBFUlIo
IkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgc3RyZWFtaW5nIGluZGV4IGJ1ZmZlcihzKS4iKTsKKyAg
ICB9Cit9CisKK0luZGV4RGF0YU1hbmFnZXI6On5JbmRleERhdGFNYW5hZ2VyKCkKK3sKKyAgICBk
ZWxldGUgbVN0cmVhbWluZ0J1ZmZlclNob3J0OworICAgIGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVy
SW50OworfQorCit2b2lkIGNvbnZlcnRJbmRpY2VzKEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpp
bnB1dCwgR0xzaXplaSBjb3VudCwgdm9pZCAqb3V0cHV0KQoreworICAgIGlmICh0eXBlID09IEdM
X1VOU0lHTkVEX0JZVEUpCisgICAgeworICAgICAgICBjb25zdCBHTHVieXRlICppbiA9IHN0YXRp
Y19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbnB1dCk7CisgICAgICAgIEdMdXNob3J0ICpvdXQgPSBz
dGF0aWNfY2FzdDxHTHVzaG9ydCo+KG91dHB1dCk7CisKKyAgICAgICAgZm9yIChHTHNpemVpIGkg
PSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgb3V0W2ldID0gaW5b
aV07CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9J
TlQpCisgICAgeworICAgICAgICBtZW1jcHkob3V0cHV0LCBpbnB1dCwgY291bnQgKiBzaXplb2Yo
R0x1aW50KSk7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfU0hPUlQp
CisgICAgeworICAgICAgICBtZW1jcHkob3V0cHV0LCBpbnB1dCwgY291bnQgKiBzaXplb2YoR0x1
c2hvcnQpKTsKKyAgICB9CisgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgSW5kZXhUeXBlPgordm9pZCBjb21wdXRlUmFuZ2UoY29uc3QgSW5kZXhUeXBlICppbmRp
Y2VzLCBHTHNpemVpIGNvdW50LCBHTHVpbnQgKm1pbkluZGV4LCBHTHVpbnQgKm1heEluZGV4KQor
eworICAgICptaW5JbmRleCA9IGluZGljZXNbMF07CisgICAgKm1heEluZGV4ID0gaW5kaWNlc1sw
XTsKKworICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgeworICAg
ICAgICBpZiAoKm1pbkluZGV4ID4gaW5kaWNlc1tpXSkgKm1pbkluZGV4ID0gaW5kaWNlc1tpXTsK
KyAgICAgICAgaWYgKCptYXhJbmRleCA8IGluZGljZXNbaV0pICptYXhJbmRleCA9IGluZGljZXNb
aV07CisgICAgfQorfQorCit2b2lkIGNvbXB1dGVSYW5nZShHTGVudW0gdHlwZSwgY29uc3Qgdm9p
ZCAqaW5kaWNlcywgR0xzaXplaSBjb3VudCwgR0x1aW50ICptaW5JbmRleCwgR0x1aW50ICptYXhJ
bmRleCkKK3sKKyAgICBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQorICAgIHsKKyAgICAg
ICAgY29tcHV0ZVJhbmdlKHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKSwgY291
bnQsIG1pbkluZGV4LCBtYXhJbmRleCk7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gR0xf
VU5TSUdORURfSU5UKQorICAgIHsKKyAgICAgICAgY29tcHV0ZVJhbmdlKHN0YXRpY19jYXN0PGNv
bnN0IEdMdWludCo+KGluZGljZXMpLCBjb3VudCwgbWluSW5kZXgsIG1heEluZGV4KTsKKyAgICB9
CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9TSE9SVCkKKyAgICB7CisgICAgICAg
IGNvbXB1dGVSYW5nZShzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpLCBjb3Vu
dCwgbWluSW5kZXgsIG1heEluZGV4KTsKKyAgICB9CisgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwor
fQorCitHTGVudW0gSW5kZXhEYXRhTWFuYWdlcjo6cHJlcGFyZUluZGV4RGF0YShHTGVudW0gdHlw
ZSwgR0xzaXplaSBjb3VudCwgQnVmZmVyICpidWZmZXIsIGNvbnN0IHZvaWQgKmluZGljZXMsIFRy
YW5zbGF0ZWRJbmRleERhdGEgKnRyYW5zbGF0ZWQpCit7CisgICAgaWYgKCFtU3RyZWFtaW5nQnVm
ZmVyU2hvcnQpCisgICAgeworICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICB9
CisKKyAgICBEM0RGT1JNQVQgZm9ybWF0ID0gKHR5cGUgPT0gR0xfVU5TSUdORURfSU5UKSA/IEQz
REZNVF9JTkRFWDMyIDogRDNERk1UX0lOREVYMTY7CisgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5kaWNlcyk7CisgICAgYm9vbCBhbGlnbmVkT2Zmc2V0
ID0gZmFsc2U7CisKKyAgICBpZiAoYnVmZmVyICE9IE5VTEwpCisgICAgeworICAgICAgICBzd2l0
Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICBh
bGlnbmVkT2Zmc2V0ID0gKG9mZnNldCAlIHNpemVvZihHTHVieXRlKSA9PSAwKTsgIGJyZWFrOwor
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IGFsaWduZWRPZmZzZXQgPSAob2Zmc2V0
ICUgc2l6ZW9mKEdMdXNob3J0KSA9PSAwKTsgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9JTlQ6ICAgYWxpZ25lZE9mZnNldCA9IChvZmZzZXQgJSBzaXplb2YoR0x1aW50KSA9PSAw
KTsgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyBhbGlnbmVkT2Zm
c2V0ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAodHlwZVNpemUodHlwZSkgKiBj
b3VudCArIG9mZnNldCA+IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihidWZmZXItPnNpemUoKSkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9JTlZBTElEX09QRVJBVElPTjsKKyAg
ICAgICAgfQorCisgICAgICAgIGluZGljZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4o
YnVmZmVyLT5kYXRhKCkpICsgb2Zmc2V0OworICAgIH0KKworICAgIFN0cmVhbWluZ0luZGV4QnVm
ZmVyICpzdHJlYW1pbmdCdWZmZXIgPSAodHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpID8gbVN0cmVh
bWluZ0J1ZmZlckludCA6IG1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKKworICAgIFN0YXRpY0luZGV4
QnVmZmVyICpzdGF0aWNCdWZmZXIgPSBidWZmZXIgPyBidWZmZXItPmdldFN0YXRpY0luZGV4QnVm
ZmVyKCkgOiBOVUxMOworICAgIEluZGV4QnVmZmVyICppbmRleEJ1ZmZlciA9IHN0cmVhbWluZ0J1
ZmZlcjsKKyAgICBVSU5UIHN0cmVhbU9mZnNldCA9IDA7CisKKyAgICBpZiAoc3RhdGljQnVmZmVy
ICYmIHN0YXRpY0J1ZmZlci0+bG9va3VwVHlwZSh0eXBlKSAmJiBhbGlnbmVkT2Zmc2V0KQorICAg
IHsKKyAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7CisgICAgICAgIHN0cmVhbU9m
ZnNldCA9IHN0YXRpY0J1ZmZlci0+bG9va3VwUmFuZ2Uob2Zmc2V0LCBjb3VudCwgJnRyYW5zbGF0
ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOworCisgICAgICAgIGlmIChzdHJl
YW1PZmZzZXQgPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IChv
ZmZzZXQgLyB0eXBlU2l6ZSh0eXBlKSkgKiBpbmRleFNpemUoZm9ybWF0KTsKKyAgICAgICAgICAg
IGNvbXB1dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0ZWQtPm1pbkluZGV4
LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOworICAgICAgICAgICAgc3RhdGljQnVmZmVyLT5hZGRS
YW5nZShvZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRleCwgdHJhbnNsYXRlZC0+bWF4
SW5kZXgsIHN0cmVhbU9mZnNldCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgaW50IGNvbnZlcnRDb3VudCA9IGNvdW50OworCisgICAgICAgIGlmIChzdGF0aWNC
dWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdGF0aWNCdWZmZXItPnNpemUoKSA9
PSAwICYmIGFsaWduZWRPZmZzZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW5k
ZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7CisgICAgICAgICAgICAgICAgY29udmVydENvdW50ID0g
YnVmZmVyLT5zaXplKCkgLyB0eXBlU2l6ZSh0eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBidWZmZXItPmludmFsaWRh
dGVTdGF0aWNEYXRhKCk7CisgICAgICAgICAgICAgICAgc3RhdGljQnVmZmVyID0gTlVMTDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgKm91dHB1dCA9IE5VTEw7Cisg
ICAgICAgIAorICAgICAgICBpZiAoaW5kZXhCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGluZGV4QnVmZmVyLT5yZXNlcnZlU3BhY2UoY29udmVydENvdW50ICogaW5kZXhTaXplKGZvcm1h
dCksIHR5cGUpOworICAgICAgICAgICAgb3V0cHV0ID0gaW5kZXhCdWZmZXItPm1hcChpbmRleFNp
emUoZm9ybWF0KSAqIGNvbnZlcnRDb3VudCwgJnN0cmVhbU9mZnNldCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmIChvdXRwdXQgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAg
ICAgRVJSKCJGYWlsZWQgdG8gbWFwIGluZGV4IGJ1ZmZlci4iKTsKKyAgICAgICAgICAgIHJldHVy
biBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICB9CisKKyAgICAgICAgY29udmVydEluZGljZXMo
dHlwZSwgc3RhdGljQnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBpbmRpY2VzLCBjb252ZXJ0Q291
bnQsIG91dHB1dCk7CisgICAgICAgIGluZGV4QnVmZmVyLT51bm1hcCgpOworCisgICAgICAgIGNv
bXB1dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0ZWQtPm1pbkluZGV4LCAm
dHJhbnNsYXRlZC0+bWF4SW5kZXgpOworCisgICAgICAgIGlmIChzdGF0aWNCdWZmZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IChvZmZzZXQgLyB0eXBlU2l6ZSh0eXBl
KSkgKiBpbmRleFNpemUoZm9ybWF0KTsKKyAgICAgICAgICAgIHN0YXRpY0J1ZmZlci0+YWRkUmFu
Z2Uob2Zmc2V0LCBjb3VudCwgdHJhbnNsYXRlZC0+bWluSW5kZXgsIHRyYW5zbGF0ZWQtPm1heElu
ZGV4LCBzdHJlYW1PZmZzZXQpOworICAgICAgICB9CisgICAgfQorCisgICAgdHJhbnNsYXRlZC0+
aW5kZXhCdWZmZXIgPSBpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCk7CisgICAgdHJhbnNsYXRlZC0+
c3RhcnRJbmRleCA9IHN0cmVhbU9mZnNldCAvIGluZGV4U2l6ZShmb3JtYXQpOworCisgICAgaWYg
KGJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJ1ZmZlci0+cHJvbW90ZVN0YXRpY1VzYWdlKGNvdW50
ICogdHlwZVNpemUodHlwZSkpOworICAgIH0KKworICAgIHJldHVybiBHTF9OT19FUlJPUjsKK30K
Kworc3RkOjpzaXplX3QgSW5kZXhEYXRhTWFuYWdlcjo6aW5kZXhTaXplKEQzREZPUk1BVCBmb3Jt
YXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIChmb3JtYXQgPT0gRDNERk1UX0lOREVYMzIpID8gc2l6
ZW9mKHVuc2lnbmVkIGludCkgOiBzaXplb2YodW5zaWduZWQgc2hvcnQpOworfQorCitzdGQ6OnNp
emVfdCBJbmRleERhdGFNYW5hZ2VyOjp0eXBlU2l6ZShHTGVudW0gdHlwZSkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgcmV0
dXJuIHNpemVvZihHTHVpbnQpOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogcmV0dXJu
IHNpemVvZihHTHVzaG9ydCk7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICByZXR1cm4g
c2l6ZW9mKEdMdWJ5dGUpOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgcmV0dXJuIHNp
emVvZihHTHVzaG9ydCk7CisgICAgfQorfQorCitJbmRleEJ1ZmZlcjo6SW5kZXhCdWZmZXIoSURp
cmVjdDNERGV2aWNlOSAqZGV2aWNlLCBVSU5UIHNpemUsIEQzREZPUk1BVCBmb3JtYXQpIDogbURl
dmljZShkZXZpY2UpLCBtQnVmZmVyU2l6ZShzaXplKSwgbUluZGV4QnVmZmVyKE5VTEwpCit7Cisg
ICAgaWYgKHNpemUgPiAwKQorICAgIHsKKyAgICAgICAgRDNEUE9PTCBwb29sID0gZ2V0RGlzcGxh
eSgpLT5nZXRCdWZmZXJQb29sKEQzRFVTQUdFX0RZTkFNSUMgfCBEM0RVU0FHRV9XUklURU9OTFkp
OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlSW5kZXhCdWZmZXIoc2l6
ZSwgRDNEVVNBR0VfRFlOQU1JQyB8IEQzRFVTQUdFX1dSSVRFT05MWSwgZm9ybWF0LCBwb29sLCAm
bUluZGV4QnVmZmVyLCBOVUxMKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEVSUigiT3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIGFuIGluZGV4
IGJ1ZmZlciBvZiBzaXplICVsdS4iLCBzaXplKTsKKyAgICAgICAgfQorICAgIH0KK30KKworSW5k
ZXhCdWZmZXI6On5JbmRleEJ1ZmZlcigpCit7CisgICAgaWYgKG1JbmRleEJ1ZmZlcikKKyAgICB7
CisgICAgICAgIG1JbmRleEJ1ZmZlci0+UmVsZWFzZSgpOworICAgIH0KK30KKworSURpcmVjdDNE
SW5kZXhCdWZmZXI5ICpJbmRleEJ1ZmZlcjo6Z2V0QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbUluZGV4QnVmZmVyOworfQorCit2b2lkIEluZGV4QnVmZmVyOjp1bm1hcCgpCit7CisgICAg
aWYgKG1JbmRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1JbmRleEJ1ZmZlci0+VW5sb2NrKCk7
CisgICAgfQorfQorCitTdHJlYW1pbmdJbmRleEJ1ZmZlcjo6U3RyZWFtaW5nSW5kZXhCdWZmZXIo
SURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBVSU5UIGluaXRpYWxTaXplLCBEM0RGT1JNQVQgZm9y
bWF0KSA6IEluZGV4QnVmZmVyKGRldmljZSwgaW5pdGlhbFNpemUsIGZvcm1hdCkKK3sKKyAgICBt
V3JpdGVQb3NpdGlvbiA9IDA7Cit9CisKK1N0cmVhbWluZ0luZGV4QnVmZmVyOjp+U3RyZWFtaW5n
SW5kZXhCdWZmZXIoKQoreworfQorCit2b2lkICpTdHJlYW1pbmdJbmRleEJ1ZmZlcjo6bWFwKFVJ
TlQgcmVxdWlyZWRTcGFjZSwgVUlOVCAqb2Zmc2V0KQoreworICAgIHZvaWQgKm1hcFB0ciA9IE5V
TEw7CisKKyAgICBpZiAobUluZGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1
bHQgPSBtSW5kZXhCdWZmZXItPkxvY2sobVdyaXRlUG9zaXRpb24sIHJlcXVpcmVkU3BhY2UsICZt
YXBQdHIsIEQzRExPQ0tfTk9PVkVSV1JJVEUpOworICAgICAKKyAgICAgICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIiBMb2NrIGZhaWxlZCB3aXRoIGVy
cm9yIDB4JTA4eCIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAg
fQorCisgICAgICAgICpvZmZzZXQgPSBtV3JpdGVQb3NpdGlvbjsKKyAgICAgICAgbVdyaXRlUG9z
aXRpb24gKz0gcmVxdWlyZWRTcGFjZTsKKyAgICB9CisKKyAgICByZXR1cm4gbWFwUHRyOworfQor
Cit2b2lkIFN0cmVhbWluZ0luZGV4QnVmZmVyOjpyZXNlcnZlU3BhY2UoVUlOVCByZXF1aXJlZFNw
YWNlLCBHTGVudW0gdHlwZSkKK3sKKyAgICBpZiAocmVxdWlyZWRTcGFjZSA+IG1CdWZmZXJTaXpl
KQorICAgIHsKKyAgICAgICAgaWYgKG1JbmRleEJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgbUluZGV4QnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAgICAgICBtSW5kZXhCdWZmZXIgPSBO
VUxMOworICAgICAgICB9CisKKyAgICAgICAgbUJ1ZmZlclNpemUgPSBzdGQ6Om1heChyZXF1aXJl
ZFNwYWNlLCAyICogbUJ1ZmZlclNpemUpOworCisgICAgICAgIEQzRFBPT0wgcG9vbCA9IGdldERp
c3BsYXkoKS0+Z2V0QnVmZmVyUG9vbChEM0RVU0FHRV9EWU5BTUlDIHwgRDNEVVNBR0VfV1JJVEVP
TkxZKTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVJbmRleEJ1ZmZl
cihtQnVmZmVyU2l6ZSwgRDNEVVNBR0VfRFlOQU1JQyB8IEQzRFVTQUdFX1dSSVRFT05MWSwgdHlw
ZSA9PSBHTF9VTlNJR05FRF9JTlQgPyBEM0RGTVRfSU5ERVgzMiA6IEQzREZNVF9JTkRFWDE2LCBw
b29sLCAmbUluZGV4QnVmZmVyLCBOVUxMKTsKKyAgICAKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIk91dCBvZiBtZW1vcnkgYWxsb2NhdGlu
ZyBhIHZlcnRleCBidWZmZXIgb2Ygc2l6ZSAlbHUuIiwgbUJ1ZmZlclNpemUpOworICAgICAgICB9
CisKKyAgICAgICAgbVdyaXRlUG9zaXRpb24gPSAwOworICAgIH0KKyAgICBlbHNlIGlmIChtV3Jp
dGVQb3NpdGlvbiArIHJlcXVpcmVkU3BhY2UgPiBtQnVmZmVyU2l6ZSkgICAvLyBSZWN5Y2xlCisg
ICAgeworICAgICAgICB2b2lkICpkdW1teTsKKyAgICAgICAgbUluZGV4QnVmZmVyLT5Mb2NrKDAs
IDEsICZkdW1teSwgRDNETE9DS19ESVNDQVJEKTsKKyAgICAgICAgbUluZGV4QnVmZmVyLT5Vbmxv
Y2soKTsKKworICAgICAgICBtV3JpdGVQb3NpdGlvbiA9IDA7CisgICAgfQorfQorCitTdGF0aWNJ
bmRleEJ1ZmZlcjo6U3RhdGljSW5kZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlKSA6
IEluZGV4QnVmZmVyKGRldmljZSwgMCwgRDNERk1UX1VOS05PV04pCit7CisgICAgbUNhY2hlVHlw
ZSA9IEdMX05PTkU7Cit9CisKK1N0YXRpY0luZGV4QnVmZmVyOjp+U3RhdGljSW5kZXhCdWZmZXIo
KQoreworfQorCit2b2lkICpTdGF0aWNJbmRleEJ1ZmZlcjo6bWFwKFVJTlQgcmVxdWlyZWRTcGFj
ZSwgVUlOVCAqb2Zmc2V0KQoreworICAgIHZvaWQgKm1hcFB0ciA9IE5VTEw7CisKKyAgICBpZiAo
bUluZGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtSW5kZXhCdWZm
ZXItPkxvY2soMCwgcmVxdWlyZWRTcGFjZSwgJm1hcFB0ciwgMCk7CisgICAgIAorICAgICAgICBp
ZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiIExvY2sgZmFp
bGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxM
OworICAgICAgICB9CisKKyAgICAgICAgKm9mZnNldCA9IDA7CisgICAgfQorCisgICAgcmV0dXJu
IG1hcFB0cjsKK30KKwordm9pZCBTdGF0aWNJbmRleEJ1ZmZlcjo6cmVzZXJ2ZVNwYWNlKFVJTlQg
cmVxdWlyZWRTcGFjZSwgR0xlbnVtIHR5cGUpCit7CisgICAgaWYgKCFtSW5kZXhCdWZmZXIgJiYg
bUJ1ZmZlclNpemUgPT0gMCkKKyAgICB7CisgICAgICAgIEQzRFBPT0wgcG9vbCA9IGdldERpc3Bs
YXkoKS0+Z2V0QnVmZmVyUG9vbChEM0RVU0FHRV9XUklURU9OTFkpOworICAgICAgICBIUkVTVUxU
IHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZUluZGV4QnVmZmVyKHJlcXVpcmVkU3BhY2UsIEQzRFVT
QUdFX1dSSVRFT05MWSwgdHlwZSA9PSBHTF9VTlNJR05FRF9JTlQgPyBEM0RGTVRfSU5ERVgzMiA6
IEQzREZNVF9JTkRFWDE2LCBwb29sLCAmbUluZGV4QnVmZmVyLCBOVUxMKTsKKyAgICAKKyAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIk91dCBv
ZiBtZW1vcnkgYWxsb2NhdGluZyBhIHZlcnRleCBidWZmZXIgb2Ygc2l6ZSAlbHUuIiwgbUJ1ZmZl
clNpemUpOworICAgICAgICB9CisKKyAgICAgICAgbUJ1ZmZlclNpemUgPSByZXF1aXJlZFNwYWNl
OworICAgICAgICBtQ2FjaGVUeXBlID0gdHlwZTsKKyAgICB9CisgICAgZWxzZSBpZiAobUluZGV4
QnVmZmVyICYmIG1CdWZmZXJTaXplID49IHJlcXVpcmVkU3BhY2UgJiYgbUNhY2hlVHlwZSA9PSB0
eXBlKQorICAgIHsKKyAgICAgICAgLy8gQWxyZWFkeSBhbGxvY2F0ZWQKKyAgICB9CisgICAgZWxz
ZSBVTlJFQUNIQUJMRSgpOyAgIC8vIFN0YXRpYyBpbmRleCBidWZmZXJzIGNhbid0IGJlIHJlc2l6
ZWQKK30KKworYm9vbCBTdGF0aWNJbmRleEJ1ZmZlcjo6bG9va3VwVHlwZShHTGVudW0gdHlwZSkK
K3sKKyAgICByZXR1cm4gbUNhY2hlVHlwZSA9PSB0eXBlOworfQorCitVSU5UIFN0YXRpY0luZGV4
QnVmZmVyOjpsb29rdXBSYW5nZShpbnRwdHJfdCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIFVJTlQg
Km1pbkluZGV4LCBVSU5UICptYXhJbmRleCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCByYW5n
ZSA9IDA7IHJhbmdlIDwgbUNhY2hlLnNpemUoKTsgcmFuZ2UrKykKKyAgICB7CisgICAgICAgIGlm
IChtQ2FjaGVbcmFuZ2VdLm9mZnNldCA9PSBvZmZzZXQgJiYgbUNhY2hlW3JhbmdlXS5jb3VudCA9
PSBjb3VudCkKKyAgICAgICAgeworICAgICAgICAgICAgKm1pbkluZGV4ID0gbUNhY2hlW3Jhbmdl
XS5taW5JbmRleDsKKyAgICAgICAgICAgICptYXhJbmRleCA9IG1DYWNoZVtyYW5nZV0ubWF4SW5k
ZXg7CisKKyAgICAgICAgICAgIHJldHVybiBtQ2FjaGVbcmFuZ2VdLnN0cmVhbU9mZnNldDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKwordm9pZCBTdGF0aWNJbmRleEJ1
ZmZlcjo6YWRkUmFuZ2UoaW50cHRyX3Qgb2Zmc2V0LCBHTHNpemVpIGNvdW50LCBVSU5UIG1pbklu
ZGV4LCBVSU5UIG1heEluZGV4LCBVSU5UIHN0cmVhbU9mZnNldCkKK3sKKyAgICBJbmRleFJhbmdl
IGluZGV4UmFuZ2UgPSB7b2Zmc2V0LCBjb3VudCwgbWluSW5kZXgsIG1heEluZGV4LCBzdHJlYW1P
ZmZzZXR9OworICAgIG1DYWNoZS5wdXNoX2JhY2soaW5kZXhSYW5nZSk7Cit9CisKK30KClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSW5k
ZXhEYXRhTWFuYWdlci5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExG
CgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9JbmRleERhdGFN
YW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9JbmRleERhdGFNYW5hZ2VyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL0luZGV4RGF0YU1hbmFnZXIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMjAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4RGF0YU1hbmFnZXIu
aDogRGVmaW5lcyB0aGUgSW5kZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0aGF0CisvLyBydW5zIHRo
ZSBCdWZmZXIgdHJhbnNsYXRpb24gcHJvY2VzcyBmb3IgaW5kZXggYnVmZmVycy4KKworI2lmbmRl
ZiBMSUJHTEVTVjJfSU5ERVhEQVRBTUFOQUdFUl9IXworI2RlZmluZSBMSUJHTEVTVjJfSU5ERVhE
QVRBTUFOQUdFUl9IXworCisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPGNzdGRkZWY+CisK
KyNkZWZpbmUgR0xfQVBJQ0FMTAorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorCisjaW5jbHVkZSAi
bGliR0xFU3YyL0NvbnRleHQuaCIKKworbmFtZXNwYWNlIGdsCit7CisKK3N0cnVjdCBUcmFuc2xh
dGVkSW5kZXhEYXRhCit7CisgICAgVUlOVCBtaW5JbmRleDsKKyAgICBVSU5UIG1heEluZGV4Owor
ICAgIFVJTlQgc3RhcnRJbmRleDsKKworICAgIElEaXJlY3QzREluZGV4QnVmZmVyOSAqaW5kZXhC
dWZmZXI7Cit9OworCitjbGFzcyBJbmRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgSW5kZXhC
dWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBVSU5UIHNpemUsIEQzREZPUk1BVCBmb3Jt
YXQpOworICAgIHZpcnR1YWwgfkluZGV4QnVmZmVyKCk7CisKKyAgICBVSU5UIHNpemUoKSBjb25z
dCB7IHJldHVybiBtQnVmZmVyU2l6ZTsgfQorICAgIHZpcnR1YWwgdm9pZCAqbWFwKFVJTlQgcmVx
dWlyZWRTcGFjZSwgVUlOVCAqb2Zmc2V0KSA9IDA7CisgICAgdm9pZCB1bm1hcCgpOworICAgIHZp
cnR1YWwgdm9pZCByZXNlcnZlU3BhY2UoVUlOVCByZXF1aXJlZFNwYWNlLCBHTGVudW0gdHlwZSkg
PSAwOworCisgICAgSURpcmVjdDNESW5kZXhCdWZmZXI5ICpnZXRCdWZmZXIoKSBjb25zdDsKKwor
ICBwcm90ZWN0ZWQ6CisgICAgSURpcmVjdDNERGV2aWNlOSAqY29uc3QgbURldmljZTsKKworICAg
IElEaXJlY3QzREluZGV4QnVmZmVyOSAqbUluZGV4QnVmZmVyOworICAgIFVJTlQgbUJ1ZmZlclNp
emU7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oSW5kZXhCdWZm
ZXIpOworfTsKKworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXIgOiBwdWJsaWMgSW5kZXhCdWZm
ZXIKK3sKKyAgcHVibGljOgorICAgIFN0cmVhbWluZ0luZGV4QnVmZmVyKElEaXJlY3QzRERldmlj
ZTkgKmRldmljZSwgVUlOVCBpbml0aWFsU2l6ZSwgRDNERk9STUFUIGZvcm1hdCk7CisgICAgflN0
cmVhbWluZ0luZGV4QnVmZmVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgKm1hcChVSU5UIHJlcXVp
cmVkU3BhY2UsIFVJTlQgKm9mZnNldCk7CisgICAgdmlydHVhbCB2b2lkIHJlc2VydmVTcGFjZShV
SU5UIHJlcXVpcmVkU3BhY2UsIEdMZW51bSB0eXBlKTsKKworICBwcml2YXRlOgorICAgIFVJTlQg
bVdyaXRlUG9zaXRpb247Cit9OworCitjbGFzcyBTdGF0aWNJbmRleEJ1ZmZlciA6IHB1YmxpYyBJ
bmRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgU3RhdGljSW5kZXhCdWZmZXIo
SURpcmVjdDNERGV2aWNlOSAqZGV2aWNlKTsKKyAgICB+U3RhdGljSW5kZXhCdWZmZXIoKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCAqbWFwKFVJTlQgcmVxdWlyZWRTcGFjZSwgVUlOVCAqb2Zmc2V0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVzZXJ2ZVNwYWNlKFVJTlQgcmVxdWlyZWRTcGFjZSwgR0xlbnVt
IHR5cGUpOworCisgICAgYm9vbCBsb29rdXBUeXBlKEdMZW51bSB0eXBlKTsKKyAgICBVSU5UIGxv
b2t1cFJhbmdlKGludHB0cl90IG9mZnNldCwgR0xzaXplaSBjb3VudCwgVUlOVCAqbWluSW5kZXgs
IFVJTlQgKm1heEluZGV4KTsgICAvLyBSZXR1cm5zIHRoZSBvZmZzZXQgaW50byB0aGUgaW5kZXgg
YnVmZmVyLCBvciAtMSBpZiBub3QgZm91bmQKKyAgICB2b2lkIGFkZFJhbmdlKGludHB0cl90IG9m
ZnNldCwgR0xzaXplaSBjb3VudCwgVUlOVCBtaW5JbmRleCwgVUlOVCBtYXhJbmRleCwgVUlOVCBz
dHJlYW1PZmZzZXQpOworCisgIHByaXZhdGU6CisgICAgR0xlbnVtIG1DYWNoZVR5cGU7CisgICAg
CisgICAgc3RydWN0IEluZGV4UmFuZ2UKKyAgICB7CisgICAgICAgIGludHB0cl90IG9mZnNldDsK
KyAgICAgICAgR0xzaXplaSBjb3VudDsKKworICAgICAgICBVSU5UIG1pbkluZGV4OworICAgICAg
ICBVSU5UIG1heEluZGV4OworICAgICAgICBVSU5UIHN0cmVhbU9mZnNldDsKKyAgICB9OworCisg
ICAgc3RkOjp2ZWN0b3I8SW5kZXhSYW5nZT4gbUNhY2hlOworfTsKKworY2xhc3MgSW5kZXhEYXRh
TWFuYWdlcgoreworICBwdWJsaWM6CisgICAgSW5kZXhEYXRhTWFuYWdlcihDb250ZXh0ICpjb250
ZXh0LCBJRGlyZWN0M0REZXZpY2U5ICpldmljZSk7CisgICAgdmlydHVhbCB+SW5kZXhEYXRhTWFu
YWdlcigpOworCisgICAgR0xlbnVtIHByZXBhcmVJbmRleERhdGEoR0xlbnVtIHR5cGUsIEdMc2l6
ZWkgY291bnQsIEJ1ZmZlciAqYXJyYXlFbGVtZW50QnVmZmVyLCBjb25zdCB2b2lkICppbmRpY2Vz
LCBUcmFuc2xhdGVkSW5kZXhEYXRhICp0cmFuc2xhdGVkKTsKKworICBwcml2YXRlOgorICAgIERJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihJbmRleERhdGFNYW5hZ2VyKTsKKworICAgIHN0ZDo6c2l6
ZV90IHR5cGVTaXplKEdMZW51bSB0eXBlKSBjb25zdDsKKyAgICBzdGQ6OnNpemVfdCBpbmRleFNp
emUoRDNERk9STUFUIGZvcm1hdCkgY29uc3Q7CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpjb25z
dCBtRGV2aWNlOworCisgICAgU3RyZWFtaW5nSW5kZXhCdWZmZXIgKm1TdHJlYW1pbmdCdWZmZXJT
aG9ydDsKKyAgICBTdHJlYW1pbmdJbmRleEJ1ZmZlciAqbVN0cmVhbWluZ0J1ZmZlckludDsKK307
CisKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX0lOREVYREFUQU1BTkFHRVJfSF8KClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSW5k
ZXhEYXRhTWFuYWdlci5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9n
cmFtLmNwcAkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1Byb2dyYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8K
LS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQog
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xNSw2ICsxNSwxMiBAQAogI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9TaGFkZXIuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVz
LmgiCiAKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpZiAhZGVmaW5lZChBTkdMRV9DT01QSUxFX09Q
VElNSVpBVElPTl9MRVZFTCkKKyNkZWZpbmUgQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVW
RUwgRDNEQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwzCisjZW5kaWYKKwogbmFtZXNwYWNlIGds
CiB7CiB1bnNpZ25lZCBpbnQgUHJvZ3JhbTo6bUN1cnJlbnRTZXJpYWwgPSAxOwpAQCAtMTgyLDI4
ICsxODgsMzkgQEAgR0x1aW50IFByb2dyYW06OmdldEF0dHJpYnV0ZUxvY2F0aW9uKGNvbgogCiBp
bnQgUHJvZ3JhbTo6Z2V0U2VtYW50aWNJbmRleChpbnQgYXR0cmlidXRlSW5kZXgpCiB7Ci0gICAg
aWYgKGF0dHJpYnV0ZUluZGV4ID49IDAgJiYgYXR0cmlidXRlSW5kZXggPCBNQVhfVkVSVEVYX0FU
VFJJQlMpCi0gICAgewotICAgICAgICByZXR1cm4gbVNlbWFudGljSW5kZXhbYXR0cmlidXRlSW5k
ZXhdOwotICAgIH0KLQotICAgIHJldHVybiAtMTsKKyAgICBBU1NFUlQoYXR0cmlidXRlSW5kZXgg
Pj0gMCAmJiBhdHRyaWJ1dGVJbmRleCA8IE1BWF9WRVJURVhfQVRUUklCUyk7CisgICAgCisgICAg
cmV0dXJuIG1TZW1hbnRpY0luZGV4W2F0dHJpYnV0ZUluZGV4XTsKIH0KIAotLy8gUmV0dXJucyB0
aGUgaW5kZXggb2YgdGhlIHRleHR1cmUgdW5pdCBjb3JyZXNwb25kaW5nIHRvIGEgRGlyZWN0M0Qg
OSBzYW1wbGVyCi0vLyBpbmRleCByZWZlcmVuY2VkIGluIHRoZSBjb21waWxlZCBITFNMIHNoYWRl
cgotR0xpbnQgUHJvZ3JhbTo6Z2V0U2FtcGxlck1hcHBpbmcodW5zaWduZWQgaW50IHNhbXBsZXJJ
bmRleCkKKy8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSB0ZXh0dXJlIGltYWdlIHVuaXQgKDAt
MTkpIGNvcnJlc3BvbmRpbmcgdG8gYSBEaXJlY3QzRCA5IHNhbXBsZXIKKy8vIGluZGV4ICgwLTE1
IGZvciB0aGUgcGl4ZWwgc2hhZGVyIGFuZCAwLTMgZm9yIHRoZSB2ZXJ0ZXggc2hhZGVyKS4KK0dM
aW50IFByb2dyYW06OmdldFNhbXBsZXJNYXBwaW5nKFNhbXBsZXJUeXBlIHR5cGUsIHVuc2lnbmVk
IGludCBzYW1wbGVySW5kZXgpCiB7Ci0gICAgYXNzZXJ0KHNhbXBsZXJJbmRleCA8IHNpemVvZiht
U2FtcGxlcnMpL3NpemVvZihtU2FtcGxlcnNbMF0pKTsKLQotICAgIEdMaW50IGxvZ2ljYWxUZXh0
dXJlVW5pdCA9IC0xOworICAgIEdMdWludCBsb2dpY2FsVGV4dHVyZVVuaXQgPSAtMTsKIAotICAg
IGlmIChtU2FtcGxlcnNbc2FtcGxlckluZGV4XS5hY3RpdmUpCisgICAgc3dpdGNoICh0eXBlKQog
ICAgIHsKLSAgICAgICAgbG9naWNhbFRleHR1cmVVbml0ID0gbVNhbXBsZXJzW3NhbXBsZXJJbmRl
eF0ubG9naWNhbFRleHR1cmVVbml0OworICAgICAgY2FzZSBTQU1QTEVSX1BJWEVMOgorICAgICAg
ICBBU1NFUlQoc2FtcGxlckluZGV4IDwgc2l6ZW9mKG1TYW1wbGVyc1BTKS9zaXplb2YobVNhbXBs
ZXJzUFNbMF0pKTsKKworICAgICAgICBpZiAobVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5hY3Rp
dmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZ2ljYWxUZXh0dXJlVW5pdCA9IG1TYW1wbGVy
c1BTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRleHR1cmVVbml0OworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBTQU1QTEVSX1ZFUlRFWDoKKyAgICAgICAgQVNTRVJUKHNhbXBs
ZXJJbmRleCA8IHNpemVvZihtU2FtcGxlcnNWUykvc2l6ZW9mKG1TYW1wbGVyc1ZTWzBdKSk7CisK
KyAgICAgICAgaWYgKG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0uYWN0aXZlKQorICAgICAgICB7
CisgICAgICAgICAgICBsb2dpY2FsVGV4dHVyZVVuaXQgPSBtU2FtcGxlcnNWU1tzYW1wbGVySW5k
ZXhdLmxvZ2ljYWxUZXh0dXJlVW5pdDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCi0gICAgaWYgKGxvZ2ljYWxUZXh0dXJl
VW5pdCA+PSAwICYmIGxvZ2ljYWxUZXh0dXJlVW5pdCA8IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRT
KQorICAgIGlmIChsb2dpY2FsVGV4dHVyZVVuaXQgPj0gMCAmJiBsb2dpY2FsVGV4dHVyZVVuaXQg
PCBnZXRDb250ZXh0KCktPmdldE1heGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkpCiAg
ICAgewogICAgICAgICByZXR1cm4gbG9naWNhbFRleHR1cmVVbml0OwogICAgIH0KQEAgLTIxMSwz
MiArMjI4LDI0IEBAIEdMaW50IFByb2dyYW06OmdldFNhbXBsZXJNYXBwaW5nKHVuc2lnbmUKICAg
ICByZXR1cm4gLTE7CiB9CiAKLVNhbXBsZXJUeXBlIFByb2dyYW06OmdldFNhbXBsZXJUeXBlKHVu
c2lnbmVkIGludCBzYW1wbGVySW5kZXgpCi17Ci0gICAgYXNzZXJ0KHNhbXBsZXJJbmRleCA8IHNp
emVvZihtU2FtcGxlcnMpL3NpemVvZihtU2FtcGxlcnNbMF0pKTsKLSAgICBhc3NlcnQobVNhbXBs
ZXJzW3NhbXBsZXJJbmRleF0uYWN0aXZlKTsKLQotICAgIHJldHVybiBtU2FtcGxlcnNbc2FtcGxl
ckluZGV4XS50eXBlOwotfQotCi1ib29sIFByb2dyYW06OmlzU2FtcGxlckRpcnR5KHVuc2lnbmVk
IGludCBzYW1wbGVySW5kZXgpIGNvbnN0Ci17Ci0gICAgaWYgKHNhbXBsZXJJbmRleCA8IHNpemVv
ZihtU2FtcGxlcnMpL3NpemVvZihtU2FtcGxlcnNbMF0pKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1TYW1wbGVyc1tzYW1wbGVySW5kZXhdLmRpcnR5OworLy8gUmV0dXJucyB0aGUgdGV4dHVyZSB0
eXBlIGZvciBhIGdpdmVuIERpcmVjdDNEIDkgc2FtcGxlciB0eXBlIGFuZAorLy8gaW5kZXggKDAt
MTUgZm9yIHRoZSBwaXhlbCBzaGFkZXIgYW5kIDAtMyBmb3IgdGhlIHZlcnRleCBzaGFkZXIpLgor
VGV4dHVyZVR5cGUgUHJvZ3JhbTo6Z2V0U2FtcGxlclRleHR1cmVUeXBlKFNhbXBsZXJUeXBlIHR5
cGUsIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAg
IHsKKyAgICAgIGNhc2UgU0FNUExFUl9QSVhFTDoKKyAgICAgICAgQVNTRVJUKHNhbXBsZXJJbmRl
eCA8IHNpemVvZihtU2FtcGxlcnNQUykvc2l6ZW9mKG1TYW1wbGVyc1BTWzBdKSk7CisgICAgICAg
IEFTU0VSVChtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSk7CisgICAgICAgIHJldHVy
biBtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLnRleHR1cmVUeXBlOworICAgICAgY2FzZSBTQU1Q
TEVSX1ZFUlRFWDoKKyAgICAgICAgQVNTRVJUKHNhbXBsZXJJbmRleCA8IHNpemVvZihtU2FtcGxl
cnNWUykvc2l6ZW9mKG1TYW1wbGVyc1ZTWzBdKSk7CisgICAgICAgIEFTU0VSVChtU2FtcGxlcnNW
U1tzYW1wbGVySW5kZXhdLmFjdGl2ZSk7CisgICAgICAgIHJldHVybiBtU2FtcGxlcnNWU1tzYW1w
bGVySW5kZXhdLnRleHR1cmVUeXBlOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAg
ICB9Ci0gICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12
b2lkIFByb2dyYW06OnNldFNhbXBsZXJEaXJ0eSh1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4LCBi
b29sIGRpcnR5KQotewotICAgIGlmIChzYW1wbGVySW5kZXggPCBzaXplb2YobVNhbXBsZXJzKS9z
aXplb2YobVNhbXBsZXJzWzBdKSkKLSAgICB7Ci0gICAgICAgIG1TYW1wbGVyc1tzYW1wbGVySW5k
ZXhdLmRpcnR5ID0gZGlydHk7Ci0gICAgfQotICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICBy
ZXR1cm4gVEVYVFVSRV8yRDsKIH0KIAogR0xpbnQgUHJvZ3JhbTo6Z2V0VW5pZm9ybUxvY2F0aW9u
KGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZGVjb3JhdGVkKQpAQCAtOTA0LDE0ICs5MTMsNiBAQCB2
b2lkIFByb2dyYW06OmRpcnR5QWxsVW5pZm9ybXMoKQogICAgIH0KIH0KIAotdm9pZCBQcm9ncmFt
OjpkaXJ0eUFsbFNhbXBsZXJzKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpbmRleCA9IDA7
IGluZGV4IDwgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7ICsraW5kZXgpCi0gICAgewotICAgICAg
ICBtU2FtcGxlcnNbaW5kZXhdLmRpcnR5ID0gdHJ1ZTsKLSAgICB9Ci19Ci0KIC8vIEFwcGxpZXMg
YWxsIHRoZSB1bmlmb3JtcyBzZXQgZm9yIHRoaXMgcHJvZ3JhbSBvYmplY3QgdG8gdGhlIERpcmVj
dDNEIDkgZGV2aWNlCiB2b2lkIFByb2dyYW06OmFwcGx5VW5pZm9ybXMoKQogewpAQCAtOTYxLDM4
ICs5NjIsNzcgQEAgdm9pZCBQcm9ncmFtOjphcHBseVVuaWZvcm1zKCkKIH0KIAogLy8gQ29tcGls
ZXMgdGhlIEhMU0wgY29kZSBvZiB0aGUgYXR0YWNoZWQgc2hhZGVycyBpbnRvIGV4ZWN1dGFibGUg
YmluYXJpZXMKLUlEM0RYQnVmZmVyICpQcm9ncmFtOjpjb21waWxlVG9CaW5hcnkoY29uc3QgY2hh
ciAqaGxzbCwgY29uc3QgY2hhciAqcHJvZmlsZSwgSUQzRFhDb25zdGFudFRhYmxlICoqY29uc3Rh
bnRUYWJsZSkKK0lEM0QxMEJsb2IgKlByb2dyYW06OmNvbXBpbGVUb0JpbmFyeShjb25zdCBjaGFy
ICpobHNsLCBjb25zdCBjaGFyICpwcm9maWxlLCBJRDNEWENvbnN0YW50VGFibGUgKipjb25zdGFu
dFRhYmxlKQogewogICAgIGlmICghaGxzbCkKICAgICB7CiAgICAgICAgIHJldHVybiBOVUxMOwog
ICAgIH0KIAotICAgIElEM0RYQnVmZmVyICpiaW5hcnkgPSBOVUxMOwotICAgIElEM0RYQnVmZmVy
ICplcnJvck1lc3NhZ2UgPSBOVUxMOwotCi0gICAgSFJFU1VMVCByZXN1bHQgPSBEM0RYQ29tcGls
ZVNoYWRlcihobHNsLCAoVUlOVClzdHJsZW4oaGxzbCksIE5VTEwsIE5VTEwsICJtYWluIiwgcHJv
ZmlsZSwgMCwgJmJpbmFyeSwgJmVycm9yTWVzc2FnZSwgY29uc3RhbnRUYWJsZSk7Ci0KLSAgICBp
ZiAoU1VDQ0VFREVEKHJlc3VsdCkpCi0gICAgewotICAgICAgICByZXR1cm4gYmluYXJ5OworICAg
IERXT1JEIHJlc3VsdDsKKyAgICBVSU5UIGZsYWdzID0gMDsKKyAgICBzdGQ6OnN0cmluZyBzb3Vy
Y2VUZXh0OworICAgIGlmIChwZXJmQWN0aXZlKCkpCisgICAgeworICAgICAgICBmbGFncyB8PSBE
M0RDT01QSUxFX0RFQlVHOworI2lmZGVmIE5ERUJVRworICAgICAgICBmbGFncyB8PSBBTkdMRV9D
T01QSUxFX09QVElNSVpBVElPTl9MRVZFTDsKKyNlbHNlCisgICAgICAgIGZsYWdzIHw9IEQzRENP
TVBJTEVfU0tJUF9PUFRJTUlaQVRJT047CisjZW5kaWYKKworICAgICAgICBzdGQ6OnN0cmluZyBz
b3VyY2VQYXRoID0gZ2V0VGVtcFBhdGgoKTsKKyAgICAgICAgc291cmNlVGV4dCA9IHN0ZDo6c3Ry
aW5nKCIjbGluZSAyIFwiIikgKyBzb3VyY2VQYXRoICsgc3RkOjpzdHJpbmcoIlwiXG5cbiIpICsg
c3RkOjpzdHJpbmcoaGxzbCk7CisgICAgICAgIHdyaXRlRmlsZShzb3VyY2VQYXRoLmNfc3RyKCks
IHNvdXJjZVRleHQuY19zdHIoKSwgc291cmNlVGV4dC5zaXplKCkpOwogICAgIH0KLQotICAgIGlm
IChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZN
RU1PUlkpCisgICAgZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9N
RU1PUlksIChJRDNEWEJ1ZmZlciopTlVMTCk7CisgICAgICAgIGZsYWdzIHw9IEFOR0xFX0NPTVBJ
TEVfT1BUSU1JWkFUSU9OX0xFVkVMOworICAgICAgICBzb3VyY2VUZXh0ID0gaGxzbDsKICAgICB9
CiAKKyAgICBJRDNEMTBCbG9iICpiaW5hcnkgPSBOVUxMOworICAgIElEM0QxMEJsb2IgKmVycm9y
TWVzc2FnZSA9IE5VTEw7CisgICAgcmVzdWx0ID0gRDNEQ29tcGlsZShobHNsLCBzdHJsZW4oaGxz
bCksIE5VTEwsIE5VTEwsIE5VTEwsICJtYWluIiwgcHJvZmlsZSwgZmxhZ3MsIDAsICZiaW5hcnks
ICZlcnJvck1lc3NhZ2UpOworCiAgICAgaWYgKGVycm9yTWVzc2FnZSkKICAgICB7CiAgICAgICAg
IGNvbnN0IGNoYXIgKm1lc3NhZ2UgPSAoY29uc3QgY2hhciopZXJyb3JNZXNzYWdlLT5HZXRCdWZm
ZXJQb2ludGVyKCk7CiAKLSAgICAgICAgYXBwZW5kVG9JbmZvTG9nKCIlc1xuIiwgbWVzc2FnZSk7
CisgICAgICAgIGFwcGVuZFRvSW5mb0xvZ1Nhbml0aXplZChtZXNzYWdlKTsKICAgICAgICAgVFJB
Q0UoIlxuJXMiLCBobHNsKTsKICAgICAgICAgVFJBQ0UoIlxuJXMiLCBtZXNzYWdlKTsKKworICAg
ICAgICBlcnJvck1lc3NhZ2UtPlJlbGVhc2UoKTsKKyAgICAgICAgZXJyb3JNZXNzYWdlID0gTlVM
TDsKICAgICB9CiAKLSAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwg
cmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
fQorCisgICAgcmVzdWx0ID0gRDNEWEdldFNoYWRlckNvbnN0YW50VGFibGUoc3RhdGljX2Nhc3Q8
Y29uc3QgRFdPUkQqPihiaW5hcnktPkdldEJ1ZmZlclBvaW50ZXIoKSksIGNvbnN0YW50VGFibGUp
OworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9
PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAg
ICAgICAgeworICAgICAgICAgICAgZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0K
KworICAgICAgICBiaW5hcnktPlJlbGVhc2UoKTsKKworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisKKyAgICByZXR1cm4gYmluYXJ5OwogfQogCiAvLyBQYWNrcyB2YXJ5aW5ncyBpbnRvIGdl
bmVyaWMgdmFyeWluZyByZWdpc3RlcnMsIHVzaW5nIHRoZSBhbGdvcml0aG0gZnJvbSBbT3BlbkdM
IEVTIFNoYWRpbmcgTGFuZ3VhZ2UgMS4wMCByZXYuIDE3XSBhcHBlbmRpeCBBIHNlY3Rpb24gNyBw
YWdlIDExMQpAQCAtMTA5MywxMyArMTEzMywxMyBAQCBpbnQgUHJvZ3JhbTo6cGFja1Zhcnlpbmdz
KGNvbnN0IFZhcnlpbmcgCiAKICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgNDsgeCsr
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChzcGFjZVt4XSA+IG4gJiYgc3Bh
Y2VbeF0gPCBzcGFjZVtjb2x1bW5dKQorICAgICAgICAgICAgICAgIGlmIChzcGFjZVt4XSA+PSBu
ICYmIHNwYWNlW3hdIDwgc3BhY2VbY29sdW1uXSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbHVtbiA9IHg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBpZiAoc3BhY2VbY29sdW1uXSA+IG4pCisgICAgICAgICAgICBpZiAo
c3BhY2VbY29sdW1uXSA+PSBuKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGZvciAo
aW50IHIgPSAwOyByIDwgbWF4VmFyeWluZ1ZlY3RvcnM7IHIrKykKICAgICAgICAgICAgICAgICB7
CkBAIC0xMTUyLDYgKzExOTIsMjAgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3MoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgLy8gUmVzZXQgdGhlIHZhcnlpbmcgcmVn
aXN0ZXIgYXNzaWdubWVudHMKKyAgICBmb3IgKFZhcnlpbmdMaXN0OjppdGVyYXRvciBmcmFnVmFy
ID0gbUZyYWdtZW50U2hhZGVyLT52YXJ5aW5ncy5iZWdpbigpOyBmcmFnVmFyICE9IG1GcmFnbWVu
dFNoYWRlci0+dmFyeWluZ3MuZW5kKCk7IGZyYWdWYXIrKykKKyAgICB7CisgICAgICAgIGZyYWdW
YXItPnJlZyA9IC0xOworICAgICAgICBmcmFnVmFyLT5jb2wgPSAtMTsKKyAgICB9CisKKyAgICBm
b3IgKFZhcnlpbmdMaXN0OjppdGVyYXRvciB2dHhWYXIgPSBtVmVydGV4U2hhZGVyLT52YXJ5aW5n
cy5iZWdpbigpOyB2dHhWYXIgIT0gbVZlcnRleFNoYWRlci0+dmFyeWluZ3MuZW5kKCk7IHZ0eFZh
cisrKQorICAgIHsKKyAgICAgICAgdnR4VmFyLT5yZWcgPSAtMTsKKyAgICAgICAgdnR4VmFyLT5j
b2wgPSAtMTsKKyAgICB9CisKKyAgICAvLyBNYXAgdGhlIHZhcnlpbmdzIHRvIHRoZSByZWdpc3Rl
ciBmaWxlCiAgICAgY29uc3QgVmFyeWluZyAqcGFja2luZ1tNQVhfVkFSWUlOR19WRUNUT1JTX1NN
M11bNF0gPSB7TlVMTH07CiAgICAgaW50IHJlZ2lzdGVycyA9IHBhY2tWYXJ5aW5ncyhwYWNraW5n
KTsKIApAQCAtMTE2MCw2ICsxMjE0LDcgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3MoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgLy8gV3JpdGUgdGhlIEhMU0wgaW5w
dXQvb3V0cHV0IGRlY2xhcmF0aW9ucwogICAgIENvbnRleHQgKmNvbnRleHQgPSBnZXRDb250ZXh0
KCk7CiAgICAgY29uc3QgYm9vbCBzbTMgPSBjb250ZXh0LT5zdXBwb3J0c1NoYWRlck1vZGVsMygp
OwogICAgIGNvbnN0IGludCBtYXhWYXJ5aW5nVmVjdG9ycyA9IGNvbnRleHQtPmdldE1heGltdW1W
YXJ5aW5nVmVjdG9ycygpOwpAQCAtMTE5Niw3ICsxMjUxLDcgQEAgYm9vbCBQcm9ncmFtOjpsaW5r
VmFyeWluZ3MoKQogCiAgICAgICAgIGlmICghbWF0Y2hlZCkKICAgICAgICAgewotICAgICAgICAg
ICAgYXBwZW5kVG9JbmZvTG9nKCJGcmFnbWVudCB2YXJ5aW5nIHZhcnlpbmcgJXMgZG9lcyBub3Qg
bWF0Y2ggYW55IHZlcnRleCB2YXJ5aW5nIiwgaW5wdXQtPm5hbWUuY19zdHIoKSk7CisgICAgICAg
ICAgICBhcHBlbmRUb0luZm9Mb2coIkZyYWdtZW50IHZhcnlpbmcgJXMgZG9lcyBub3QgbWF0Y2gg
YW55IHZlcnRleCB2YXJ5aW5nIiwgaW5wdXQtPm5hbWUuY19zdHIoKSk7CiAKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTI3Miw3ICsxMzI3LDcgQEAgYm9vbCBQcm9n
cmFtOjpsaW5rVmFyeWluZ3MoKQogICAgICAgICAgICAgICAgICAgICJcbiIKICAgICAgICAgICAg
ICAgICAgICAiICAgIFZTX09VVFBVVCBvdXRwdXQ7XG4iCiAgICAgICAgICAgICAgICAgICAgIiAg
ICBvdXRwdXQuZ2xfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLnggLSBkeF9IYWxmUGl4ZWxTaXpl
LnggKiBnbF9Qb3NpdGlvbi53O1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgb3V0cHV0Lmds
X1Bvc2l0aW9uLnkgPSAtKGdsX1Bvc2l0aW9uLnkgLSBkeF9IYWxmUGl4ZWxTaXplLnkgKiBnbF9Q
b3NpdGlvbi53KTtcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlv
bi55ID0gZ2xfUG9zaXRpb24ueSAtIGR4X0hhbGZQaXhlbFNpemUueSAqIGdsX1Bvc2l0aW9uLnc7
XG4iCiAgICAgICAgICAgICAgICAgICAgIiAgICBvdXRwdXQuZ2xfUG9zaXRpb24ueiA9IChnbF9Q
b3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7XG4iCiAgICAgICAgICAgICAgICAgICAg
IiAgICBvdXRwdXQuZ2xfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7XG4iOwogCkBAIC0xNDAz
LDExICsxNDU4LDExIEBAIGJvb2wgUHJvZ3JhbTo6bGlua1ZhcnlpbmdzKCkKICAgICB7CiAgICAg
ICAgIG1QaXhlbEhMU0wgKz0gIiAgICBmbG9hdCByaHcgPSAxLjAgLyBpbnB1dC5nbF9GcmFnQ29v
cmQudztcbiI7CiAgICAgICAgIGlmIChzbTMpIHsKLSAgICAgICAgICAgIG1QaXhlbEhMU0wgKz0g
IiAgICBnbF9GcmFnQ29vcmQueCA9IGlucHV0LmR4X1ZQb3MueDtcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29vcmQueSA9IGlucHV0LmR4X1ZQb3MueTtcbiI7Cisg
ICAgICAgICAgICBtUGl4ZWxITFNMICs9ICIgICAgZ2xfRnJhZ0Nvb3JkLnggPSBpbnB1dC5keF9W
UG9zLnggKyAwLjU7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xfRnJhZ0Nv
b3JkLnkgPSAyLjAgKiBkeF9WaWV3cG9ydC55IC0gaW5wdXQuZHhfVlBvcy55IC0gMC41O1xuIjsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1QaXhlbEhMU0wgKz0gIiAgICBnbF9GcmFn
Q29vcmQueCA9IChpbnB1dC5nbF9GcmFnQ29vcmQueCAqIHJodykgKiBkeF9WaWV3cG9ydC54ICsg
ZHhfVmlld3BvcnQuejtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbF9GcmFn
Q29vcmQueSA9IChpbnB1dC5nbF9GcmFnQ29vcmQueSAqIHJodykgKiBkeF9WaWV3cG9ydC55ICsg
ZHhfVmlld3BvcnQudztcbiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xfRnJh
Z0Nvb3JkLnkgPSAtKGlucHV0LmdsX0ZyYWdDb29yZC55ICogcmh3KSAqIGR4X1ZpZXdwb3J0Lnkg
KyBkeF9WaWV3cG9ydC53O1xuIjsKICAgICAgICAgfQogICAgICAgICBtUGl4ZWxITFNMICs9ICIg
ICAgZ2xfRnJhZ0Nvb3JkLnogPSAoaW5wdXQuZ2xfRnJhZ0Nvb3JkLnogKiByaHcpICogZHhfRGVw
dGgueCArIGR4X0RlcHRoLnk7XG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbF9GcmFn
Q29vcmQudyA9IHJodztcbiI7CkBAIC0xNDE1LDcgKzE0NzAsNyBAQCBib29sIFByb2dyYW06Omxp
bmtWYXJ5aW5ncygpCiAKICAgICBpZiAobUZyYWdtZW50U2hhZGVyLT5tVXNlc1BvaW50Q29vcmQg
JiYgc20zKQogICAgIHsKLSAgICAgICAgbVBpeGVsSExTTCArPSAiICAgIGdsX1BvaW50Q29vcmQg
PSBmbG9hdDIoaW5wdXQuZ2xfUG9pbnRDb29yZC54LCAxLjAgLSBpbnB1dC5nbF9Qb2ludENvb3Jk
LnkpO1xuIjsKKyAgICAgICAgbVBpeGVsSExTTCArPSAiICAgIGdsX1BvaW50Q29vcmQgPSBpbnB1
dC5nbF9Qb2ludENvb3JkO1xuIjsKICAgICB9CiAKICAgICBpZiAobUZyYWdtZW50U2hhZGVyLT5t
VXNlc0Zyb250RmFjaW5nKQpAQCAtMTQ2MSw5ICsxNTE2LDYgQEAgYm9vbCBQcm9ncmFtOjpsaW5r
VmFyeWluZ3MoKQogICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gb3V0cHV0O1xuIgogICAg
ICAgICAgICAgICAgICAgIn1cbiI7CiAKLSAgICBUUkFDRSgiXG4lcyIsIG1QaXhlbEhMU0wuY19z
dHIoKSk7Ci0gICAgVFJBQ0UoIlxuJXMiLCBtVmVydGV4SExTTC5jX3N0cigpKTsKLQogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0xNDk2LDggKzE1NDgsOCBAQCB2b2lkIFByb2dyYW06Omxpbmso
KQogICAgIGNvbnN0IGNoYXIgKnZlcnRleFByb2ZpbGUgPSBjb250ZXh0LT5zdXBwb3J0c1NoYWRl
ck1vZGVsMygpID8gInZzXzNfMCIgOiAidnNfMl8wIjsKICAgICBjb25zdCBjaGFyICpwaXhlbFBy
b2ZpbGUgPSBjb250ZXh0LT5zdXBwb3J0c1NoYWRlck1vZGVsMygpID8gInBzXzNfMCIgOiAicHNf
Ml8wIjsKIAotICAgIElEM0RYQnVmZmVyICp2ZXJ0ZXhCaW5hcnkgPSBjb21waWxlVG9CaW5hcnko
bVZlcnRleEhMU0wuY19zdHIoKSwgdmVydGV4UHJvZmlsZSwgJm1Db25zdGFudFRhYmxlVlMpOwot
ICAgIElEM0RYQnVmZmVyICpwaXhlbEJpbmFyeSA9IGNvbXBpbGVUb0JpbmFyeShtUGl4ZWxITFNM
LmNfc3RyKCksIHBpeGVsUHJvZmlsZSwgJm1Db25zdGFudFRhYmxlUFMpOworICAgIElEM0QxMEJs
b2IgKnZlcnRleEJpbmFyeSA9IGNvbXBpbGVUb0JpbmFyeShtVmVydGV4SExTTC5jX3N0cigpLCB2
ZXJ0ZXhQcm9maWxlLCAmbUNvbnN0YW50VGFibGVWUyk7CisgICAgSUQzRDEwQmxvYiAqcGl4ZWxC
aW5hcnkgPSBjb21waWxlVG9CaW5hcnkobVBpeGVsSExTTC5jX3N0cigpLCBwaXhlbFByb2ZpbGUs
ICZtQ29uc3RhbnRUYWJsZVBTKTsKIAogICAgIGlmICh2ZXJ0ZXhCaW5hcnkgJiYgcGl4ZWxCaW5h
cnkpCiAgICAgewpAQCAtMTY0Miw3ICsxNjk0LDggQEAgYm9vbCBQcm9ncmFtOjpsaW5rVW5pZm9y
bXMoSUQzRFhDb25zdGFudAogICAgIGZvciAodW5zaWduZWQgaW50IGNvbnN0YW50SW5kZXggPSAw
OyBjb25zdGFudEluZGV4IDwgY29uc3RhbnRUYWJsZURlc2NyaXB0aW9uLkNvbnN0YW50czsgY29u
c3RhbnRJbmRleCsrKQogICAgIHsKICAgICAgICAgRDNEWEhBTkRMRSBjb25zdGFudEhhbmRsZSA9
IGNvbnN0YW50VGFibGUtPkdldENvbnN0YW50KDAsIGNvbnN0YW50SW5kZXgpOwotICAgICAgICBj
b25zdGFudFRhYmxlLT5HZXRDb25zdGFudERlc2MoY29uc3RhbnRIYW5kbGUsICZjb25zdGFudERl
c2NyaXB0aW9uLCAmZGVzY3JpcHRpb25Db3VudCk7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0g
Y29uc3RhbnRUYWJsZS0+R2V0Q29uc3RhbnREZXNjKGNvbnN0YW50SGFuZGxlLCAmY29uc3RhbnRE
ZXNjcmlwdGlvbiwgJmRlc2NyaXB0aW9uQ291bnQpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVE
KHJlc3VsdCkpOwogCiAgICAgICAgIGlmICghZGVmaW5lVW5pZm9ybShjb25zdGFudEhhbmRsZSwg
Y29uc3RhbnREZXNjcmlwdGlvbikpCiAgICAgICAgIHsKQEAgLTE2NjEsMTIgKzE3MTQsMzUgQEAg
Ym9vbCBQcm9ncmFtOjpkZWZpbmVVbmlmb3JtKGNvbnN0IEQzRFhIQQogICAgIHsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gY29uc3RhbnREZXNjcmlwdGlvbi5SZWdp
c3RlckluZGV4OyBzYW1wbGVySW5kZXggPCBjb25zdGFudERlc2NyaXB0aW9uLlJlZ2lzdGVySW5k
ZXggKyBjb25zdGFudERlc2NyaXB0aW9uLlJlZ2lzdGVyQ291bnQ7IHNhbXBsZXJJbmRleCsrKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoc2FtcGxlckluZGV4IDwgc2l6ZW9mKG1TYW1w
bGVycykvc2l6ZW9mKG1TYW1wbGVyc1swXSkpOwotCi0gICAgICAgICAgICBtU2FtcGxlcnNbc2Ft
cGxlckluZGV4XS5hY3RpdmUgPSB0cnVlOwotICAgICAgICAgICAgbVNhbXBsZXJzW3NhbXBsZXJJ
bmRleF0udHlwZSA9IChjb25zdGFudERlc2NyaXB0aW9uLlR5cGUgPT0gRDNEWFBUX1NBTVBMRVJD
VUJFKSA/IFNBTVBMRVJfQ1VCRSA6IFNBTVBMRVJfMkQ7Ci0gICAgICAgICAgICBtU2FtcGxlcnNb
c2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQgPSAwOwotICAgICAgICAgICAgbVNhbXBs
ZXJzW3NhbXBsZXJJbmRleF0uZGlydHkgPSB0cnVlOworICAgICAgICAgICAgaWYgKG1Db25zdGFu
dFRhYmxlUFMtPkdldENvbnN0YW50QnlOYW1lKE5VTEwsIGNvbnN0YW50RGVzY3JpcHRpb24uTmFt
ZSkgIT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc2FtcGxlcklu
ZGV4IDwgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRleF0udGV4dHVyZVR5cGUg
PSAoY29uc3RhbnREZXNjcmlwdGlvbi5UeXBlID09IEQzRFhQVF9TQU1QTEVSQ1VCRSkgPyBURVhU
VVJFX0NVQkUgOiBURVhUVVJFXzJEOworICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNQU1tz
YW1wbGVySW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5pdCA9IDA7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFRvSW5mb0xvZygiUGl4ZWwgc2hhZGVyIHNhbXBsZXIgY291bnQgZXhjZWVkcyBN
QVhfVEVYVFVSRV9JTUFHRV9VTklUUyAoJWQpLiIsIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1Db25zdGFudFRhYmxl
VlMtPkdldENvbnN0YW50QnlOYW1lKE5VTEwsIGNvbnN0YW50RGVzY3JpcHRpb24uTmFtZSkgIT0g
TlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc2FtcGxlckluZGV4IDwg
Z2V0Q29udGV4dCgpLT5nZXRNYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRl
eF0uYWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbVNhbXBsZXJzVlNbc2FtcGxl
ckluZGV4XS50ZXh0dXJlVHlwZSA9IChjb25zdGFudERlc2NyaXB0aW9uLlR5cGUgPT0gRDNEWFBU
X1NBTVBMRVJDVUJFKSA/IFRFWFRVUkVfQ1VCRSA6IFRFWFRVUkVfMkQ7CisgICAgICAgICAgICAg
ICAgICAgIG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRleHR1cmVVbml0ID0gMDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9JbmZvTG9nKCJWZXJ0ZXggc2hhZGVyIHNh
bXBsZXIgY291bnQgZXhjZWVkcyBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCVkKS4i
LCBnZXRDb250ZXh0KCktPmdldE1heGltdW1WZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMTY4Myw3ICsxNzU5LDggQEAgYm9vbCBQ
cm9ncmFtOjpkZWZpbmVVbmlmb3JtKGNvbnN0IEQzRFhIQQogICAgICAgICAgICAgICAgICAgICBE
M0RYQ09OU1RBTlRfREVTQyBmaWVsZERlc2NyaXB0aW9uOwogICAgICAgICAgICAgICAgICAgICBV
SU5UIGRlc2NyaXB0aW9uQ291bnQgPSAxOwogCi0gICAgICAgICAgICAgICAgICAgIG1Db25zdGFu
dFRhYmxlUFMtPkdldENvbnN0YW50RGVzYyhmaWVsZEhhbmRsZSwgJmZpZWxkRGVzY3JpcHRpb24s
ICZkZXNjcmlwdGlvbkNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQg
PSBtQ29uc3RhbnRUYWJsZVBTLT5HZXRDb25zdGFudERlc2MoZmllbGRIYW5kbGUsICZmaWVsZERl
c2NyaXB0aW9uLCAmZGVzY3JpcHRpb25Db3VudCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChTVUNDRUVERUQocmVzdWx0KSk7CiAKICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
c3RydWN0SW5kZXggPSAoY29uc3RhbnREZXNjcmlwdGlvbi5FbGVtZW50cyA+IDEpID8gKCJbIiAr
IHN0cihhcnJheUluZGV4KSArICJdIikgOiAiIjsKIApAQCAtMjIxNiwxMSArMjI5Myw3IEBAIGJv
b2wgUHJvZ3JhbTo6YXBwbHlVbmlmb3JtMWl2KEdMaW50IGxvY2EKICAgICAgICAgRDNEWENPTlNU
QU5UX0RFU0MgY29uc3RhbnREZXNjcmlwdGlvbjsKICAgICAgICAgVUlOVCBkZXNjcmlwdGlvbkNv
dW50ID0gMTsKICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtQ29uc3RhbnRUYWJsZVBTLT5HZXRD
b25zdGFudERlc2MoY29uc3RhbnRQUywgJmNvbnN0YW50RGVzY3JpcHRpb24sICZkZXNjcmlwdGlv
bkNvdW50KTsKLQotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQoU1VDQ0VFREVE
KHJlc3VsdCkpOwogCiAgICAgICAgIGlmIChjb25zdGFudERlc2NyaXB0aW9uLlJlZ2lzdGVyU2V0
ID09IEQzRFhSU19TQU1QTEVSKQogICAgICAgICB7CkBAIC0yMjMyLDI0ICsyMzA1LDQzIEBAIGJv
b2wgUHJvZ3JhbTo6YXBwbHlVbmlmb3JtMWl2KEdMaW50IGxvY2EKIAogICAgICAgICAgICAgICAg
IGlmIChzYW1wbGVySW5kZXggPCBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUykKICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtU2FtcGxlcnNbc2FtcGxlckluZGV4
XS5hY3RpdmUpOwotICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNbc2FtcGxlckluZGV4XS5s
b2dpY2FsVGV4dHVyZVVuaXQgPSB2W2ldOwotICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNb
c2FtcGxlckluZGV4XS5kaXJ0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCht
U2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSk7CisgICAgICAgICAgICAgICAgICAgIG1T
YW1wbGVyc1BTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRleHR1cmVVbml0ID0gdltpXTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGNvbnN0YW50UFMpCi0gICAgewotICAgICAgICBt
Q29uc3RhbnRUYWJsZVBTLT5TZXRJbnRBcnJheShkZXZpY2UsIGNvbnN0YW50UFMsIHYsIGNvdW50
KTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtQ29uc3RhbnRUYWJsZVBT
LT5TZXRJbnRBcnJheShkZXZpY2UsIGNvbnN0YW50UFMsIHYsIGNvdW50KTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChjb25zdGFudFZTKQogICAgIHsKLSAgICAgICAgbUNvbnN0YW50VGFi
bGVWUy0+U2V0SW50QXJyYXkoZGV2aWNlLCBjb25zdGFudFZTLCB2LCBjb3VudCk7CisgICAgICAg
IEQzRFhDT05TVEFOVF9ERVNDIGNvbnN0YW50RGVzY3JpcHRpb247CisgICAgICAgIFVJTlQgZGVz
Y3JpcHRpb25Db3VudCA9IDE7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbUNvbnN0YW50VGFi
bGVWUy0+R2V0Q29uc3RhbnREZXNjKGNvbnN0YW50VlMsICZjb25zdGFudERlc2NyaXB0aW9uLCAm
ZGVzY3JpcHRpb25Db3VudCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisK
KyAgICAgICAgaWYgKGNvbnN0YW50RGVzY3JpcHRpb24uUmVnaXN0ZXJTZXQgPT0gRDNEWFJTX1NB
TVBMRVIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBmaXJzdEluZGV4ID0g
bUNvbnN0YW50VGFibGVWUy0+R2V0U2FtcGxlckluZGV4KGNvbnN0YW50VlMpOworCisgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCA9IGZpcnN0SW5kZXggKyBpOwor
CisgICAgICAgICAgICAgICAgaWYgKHNhbXBsZXJJbmRleCA8IE1BWF9WRVJURVhfVEVYVFVSRV9J
TUFHRV9VTklUU19WVEYpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpOworICAgICAgICAgICAgICAg
ICAgICBtU2FtcGxlcnNWU1tzYW1wbGVySW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5pdCA9IHZbaV07
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgbUNvbnN0YW50VGFibGVWUy0+U2V0SW50QXJyYXko
ZGV2aWNlLCBjb25zdGFudFZTLCB2LCBjb3VudCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTIzNTQsNiArMjQ0NiwzNSBAQCBib29sIFByb2dyYW06OmFwcGx5VW5p
Zm9ybTRpdihHTGludCBsb2NhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKworLy8gYXBwZW5kIGEg
c2FudGl6ZWQgbWVzc2FnZSB0byB0aGUgcHJvZ3JhbSBpbmZvIGxvZy4KKy8vIFRoZSBEM0QgY29t
cGlsZXIgaW5jbHVkZXMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKKy8vIGluIHNvbWUg
b2YgdGhlIHdhcm5pbmcgb3IgZXJyb3IgbWVzc2FnZXMsIHNvIGxldHMgcmVtb3ZlCisvLyBhbnkg
b2NjdXJyYW5jZXMgb2YgdGhvc2UgdGhhdCB3ZSBmaW5kIGluIHRoZSBsb2cuCit2b2lkIFByb2dy
YW06OmFwcGVuZFRvSW5mb0xvZ1Nhbml0aXplZChjb25zdCBjaGFyICptZXNzYWdlKQoreworICAg
IHN0ZDo6c3RyaW5nIG1zZyhtZXNzYWdlKTsKKyAgICBDSEFSIHBhdGhbTUFYX1BBVEhdID0gIiI7
CisgICAgc2l6ZV90IGxlbjsKKworICAgIGxlbiA9IEdldEN1cnJlbnREaXJlY3RvcnlBKE1BWF9Q
QVRILCBwYXRoKTsKKyAgICBpZiAobGVuID4gMCAmJiBsZW4gPCBNQVhfUEFUSCkKKyAgICB7Cisg
ICAgICAgIHNpemVfdCBmb3VuZDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgZm91bmQgPSBt
c2cuZmluZChwYXRoKTsKKyAgICAgICAgICAgIGlmIChmb3VuZCAhPSBzdGQ6OnN0cmluZzo6bnBv
cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyB0aGUgKzEgaGVyZSBpcyBpbnRl
bnRpb25hbCBzbyB0aGF0IHdlIHJlbW92ZQorICAgICAgICAgICAgICAgIC8vIHRoZSB0cmFpbGlu
ZyAnXCcgdGhhdCBvY2N1cnMgYWZ0ZXIgdGhlIHBhdGgKKyAgICAgICAgICAgICAgICBtc2cuZXJh
c2UoZm91bmQsIGxlbisxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoZm91bmQg
IT0gc3RkOjpzdHJpbmc6Om5wb3MpOworICAgIH0KKworICAgIGFwcGVuZFRvSW5mb0xvZygiJXNc
biIsIG1zZy5jX3N0cigpKTsKK30KKwogdm9pZCBQcm9ncmFtOjphcHBlbmRUb0luZm9Mb2coY29u
c3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgaWYgKCFmb3JtYXQpCkBAIC0yNDQ2LDggKzI1
NjcsMTIgQEAgdm9pZCBQcm9ncmFtOjp1bmxpbmsoYm9vbCBkZXN0cm95KQogCiAgICAgZm9yIChp
bnQgaW5kZXggPSAwOyBpbmRleCA8IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTOyBpbmRleCsrKQog
ICAgIHsKLSAgICAgICAgbVNhbXBsZXJzW2luZGV4XS5hY3RpdmUgPSBmYWxzZTsKLSAgICAgICAg
bVNhbXBsZXJzW2luZGV4XS5kaXJ0eSA9IHRydWU7CisgICAgICAgIG1TYW1wbGVyc1BTW2luZGV4
XS5hY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4
IDwgTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTX1ZURjsgaW5kZXgrKykKKyAgICB7Cisg
ICAgICAgIG1TYW1wbGVyc1ZTW2luZGV4XS5hY3RpdmUgPSBmYWxzZTsKICAgICB9CiAKICAgICB3
aGlsZSAoIW1Vbmlmb3Jtcy5lbXB0eSgpKQpAQCAtMjcxOCw3ICsyODQzLDEyIEBAIEdMaW50IFBy
b2dyYW06OmdldEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgKICAgICB7CiAgICAgICAgIGlmICghbVVu
aWZvcm1zW3VuaWZvcm1JbmRleF0tPm5hbWUuZW1wdHkoKSAmJiBtVW5pZm9ybXNbdW5pZm9ybUlu
ZGV4XS0+bmFtZS5zdWJzdHIoMCwgMykgIT0gImR4XyIpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1heExlbmd0aCA9IHN0ZDo6bWF4KChpbnQpKHVuZGVjb3JhdGUobVVuaWZvcm1zW3VuaWZvcm1J
bmRleF0tPm5hbWUpLmxlbmd0aCgpICsgMSksIG1heExlbmd0aCk7CisgICAgICAgICAgICBpbnQg
bGVuZ3RoID0gKGludCkodW5kZWNvcmF0ZShtVW5pZm9ybXNbdW5pZm9ybUluZGV4XS0+bmFtZSku
bGVuZ3RoKCkgKyAxKTsKKyAgICAgICAgICAgIGlmIChtVW5pZm9ybXNbdW5pZm9ybUluZGV4XS0+
YXJyYXlTaXplICE9IDEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbGVuZ3RoICs9
IDM7ICAvLyBDb3VudGluZyBpbiAiWzBdIi4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1h
eExlbmd0aCA9IHN0ZDo6bWF4KGxlbmd0aCwgbWF4TGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMjc0Nyw5ICsyODc3LDggQEAgdm9pZCBQcm9ncmFtOjp2YWxpZGF0ZSgpCiAgICAgZWxz
ZQogICAgIHsKICAgICAgICAgYXBwbHlVbmlmb3JtcygpOwotICAgICAgICBpZiAoIXZhbGlkYXRl
U2FtcGxlcnMoKSkKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVNhbXBsZXJzKHRydWUpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBhcHBlbmRUb0luZm9Mb2coIlNhbXBsZXJzIG9mIGNvbmZsaWN0aW5n
IHR5cGVzIHJlZmVyIHRvIHRoZSBzYW1lIHRleHR1cmUgaW1hZ2UgdW5pdC4iKTsKICAgICAgICAg
ICAgIG1WYWxpZGF0ZWQgPSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC0yNzU5
LDI0ICsyODg4LDg2IEBAIHZvaWQgUHJvZ3JhbTo6dmFsaWRhdGUoKQogICAgIH0KIH0KIAotYm9v
bCBQcm9ncmFtOjp2YWxpZGF0ZVNhbXBsZXJzKCkgY29uc3QKK2Jvb2wgUHJvZ3JhbTo6dmFsaWRh
dGVTYW1wbGVycyhib29sIGxvZ0Vycm9ycykKIHsKICAgICAvLyBpZiBhbnkgdHdvIGFjdGl2ZSBz
YW1wbGVycyBpbiBhIHByb2dyYW0gYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYnV0IHJlZmVyIHRv
IHRoZSBzYW1lCiAgICAgLy8gdGV4dHVyZSBpbWFnZSB1bml0LCBhbmQgdGhpcyBpcyB0aGUgY3Vy
cmVudCBwcm9ncmFtLCB0aGVuIFZhbGlkYXRlUHJvZ3JhbSB3aWxsIGZhaWwsIGFuZAogICAgIC8v
IERyYXdBcnJheXMgYW5kIERyYXdFbGVtZW50cyB3aWxsIGlzc3VlIHRoZSBJTlZBTElEX09QRVJB
VElPTiBlcnJvci4KLSAgICBzdGQ6Om1hcDxpbnQsIFNhbXBsZXJUeXBlPiBzYW1wbGVyTWFwOyAK
KworICAgIGNvbnN0IHVuc2lnbmVkIGludCBtYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0g
Z2V0Q29udGV4dCgpLT5nZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpOworICAg
IFRleHR1cmVUeXBlIHRleHR1cmVVbml0VHlwZVtNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9V
TklUU19WVEZdOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBNQVhfQ09NQklO
RURfVEVYVFVSRV9JTUFHRV9VTklUU19WVEY7ICsraSkKKyAgICB7CisgICAgICAgIHRleHR1cmVV
bml0VHlwZVtpXSA9IFRFWFRVUkVfVU5LTk9XTjsKKyAgICB9CisKICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTOyArK2kpCiAgICAgewotICAg
ICAgICBpZiAobVNhbXBsZXJzW2ldLmFjdGl2ZSkKKyAgICAgICAgaWYgKG1TYW1wbGVyc1BTW2ld
LmFjdGl2ZSkKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IHVuaXQgPSBtU2Ft
cGxlcnNQU1tpXS5sb2dpY2FsVGV4dHVyZVVuaXQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmICh1bml0ID49IG1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKGxvZ0Vycm9ycykKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvSW5mb0xvZygiU2FtcGxlciB1bmlmb3JtICglZCkgZXhj
ZWVkcyBNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyAoJWQpIiwgdW5pdCwgbWF4Q29t
YmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGV4
dHVyZVVuaXRUeXBlW3VuaXRdICE9IFRFWFRVUkVfVU5LTk9XTikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAobVNhbXBsZXJzUFNbaV0udGV4dHVyZVR5cGUgIT0gdGV4dHVyZVVu
aXRUeXBlW3VuaXRdKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGxvZ0Vycm9ycykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kVG9JbmZvTG9nKCJTYW1wbGVycyBvZiBjb25mbGljdGluZyB0eXBlcyByZWZlciB0
byB0aGUgc2FtZSB0ZXh0dXJlIGltYWdlIHVuaXQgKCVkKS4iLCB1bml0KTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdGV4dHVyZVVuaXRUeXBlW3VuaXRdID0gbVNhbXBsZXJzUFNbaV0u
dGV4dHVyZVR5cGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU19W
VEY7ICsraSkKKyAgICB7CisgICAgICAgIGlmIChtU2FtcGxlcnNWU1tpXS5hY3RpdmUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChzYW1wbGVyTWFwLmZpbmQobVNhbXBsZXJzW2ldLmxvZ2lj
YWxUZXh0dXJlVW5pdCkgIT0gc2FtcGxlck1hcC5lbmQoKSkKKyAgICAgICAgICAgIHVuc2lnbmVk
IGludCB1bml0ID0gbVNhbXBsZXJzVlNbaV0ubG9naWNhbFRleHR1cmVVbml0OworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAodW5pdCA+PSBtYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChtU2FtcGxlcnNbaV0udHlwZSAh
PSBzYW1wbGVyTWFwW21TYW1wbGVyc1tpXS5sb2dpY2FsVGV4dHVyZVVuaXRdKQorICAgICAgICAg
ICAgICAgIGlmIChsb2dFcnJvcnMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRUb0luZm9Mb2coIlNhbXBsZXIgdW5pZm9ybSAoJWQpIGV4Y2VlZHMgTUFYX0NP
TUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCVkKSIsIHVuaXQsIG1heENvbWJpbmVkVGV4dHVy
ZUltYWdlVW5pdHMpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRleHR1cmVVbml0VHlw
ZVt1bml0XSAhPSBURVhUVVJFX1VOS05PV04pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKG1TYW1wbGVyc1ZTW2ldLnRleHR1cmVUeXBlICE9IHRleHR1cmVVbml0VHlwZVt1bml0
XSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2dFcnJvcnMp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRv
SW5mb0xvZygiU2FtcGxlcnMgb2YgY29uZmxpY3RpbmcgdHlwZXMgcmVmZXIgdG8gdGhlIHNhbWUg
dGV4dHVyZSBpbWFnZSB1bml0ICglZCkuIiwgdW5pdCk7CisgICAgICAgICAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHNhbXBsZXJNYXBbbVNhbXBsZXJzW2ldLmxvZ2ljYWxUZXh0dXJlVW5pdF0gPSBtU2Ft
cGxlcnNbaV0udHlwZTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlVW5pdFR5cGVbdW5pdF0gPSBt
U2FtcGxlcnNWU1tpXS50ZXh0dXJlVHlwZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJv
Z3JhbS5oCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvUHJvZ3JhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3IEBACiAjZGVm
aW5lIExJQkdMRVNWMl9QUk9HUkFNX0hfCiAKICNpbmNsdWRlIDxkM2R4OS5oPgorI2luY2x1ZGUg
PGQzZGNvbXBpbGVyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KICNp
bmNsdWRlIDxzZXQ+CkBAIC03MSwxMiArNzIsOCBAQCBjbGFzcyBQcm9ncmFtCiAgICAgR0x1aW50
IGdldEF0dHJpYnV0ZUxvY2F0aW9uKGNvbnN0IGNoYXIgKm5hbWUpOwogICAgIGludCBnZXRTZW1h
bnRpY0luZGV4KGludCBhdHRyaWJ1dGVJbmRleCk7CiAKLSAgICB2b2lkIGRpcnR5QWxsU2FtcGxl
cnMoKTsKLQotICAgIEdMaW50IGdldFNhbXBsZXJNYXBwaW5nKHVuc2lnbmVkIGludCBzYW1wbGVy
SW5kZXgpOwotICAgIFNhbXBsZXJUeXBlIGdldFNhbXBsZXJUeXBlKHVuc2lnbmVkIGludCBzYW1w
bGVySW5kZXgpOwotICAgIGJvb2wgaXNTYW1wbGVyRGlydHkodW5zaWduZWQgaW50IHNhbXBsZXJJ
bmRleCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTYW1wbGVyRGlydHkodW5zaWduZWQgaW50IHNhbXBs
ZXJJbmRleCwgYm9vbCBkaXJ0eSk7CisgICAgR0xpbnQgZ2V0U2FtcGxlck1hcHBpbmcoU2FtcGxl
clR5cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCk7CisgICAgVGV4dHVyZVR5cGUg
Z2V0U2FtcGxlclRleHR1cmVUeXBlKFNhbXBsZXJUeXBlIHR5cGUsIHVuc2lnbmVkIGludCBzYW1w
bGVySW5kZXgpOwogCiAgICAgR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0IGNoYXIgKm5h
bWUsIGJvb2wgZGVjb3JhdGVkKTsKICAgICBib29sIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwpAQCAtMTI1LDcgKzEyMiw3IEBA
IGNsYXNzIFByb2dyYW0KICAgICBib29sIGlzRmxhZ2dlZEZvckRlbGV0aW9uKCkgY29uc3Q7CiAK
ICAgICB2b2lkIHZhbGlkYXRlKCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVNhbXBsZXJzKCkgY29uc3Q7
CisgICAgYm9vbCB2YWxpZGF0ZVNhbXBsZXJzKGJvb2wgbG9nRXJyb3JzKTsKICAgICBib29sIGlz
VmFsaWRhdGVkKCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7
CkBAIC0xMzMsNyArMTMwLDcgQEAgY2xhc3MgUHJvZ3JhbQogICBwcml2YXRlOgogICAgIERJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihQcm9ncmFtKTsKIAotICAgIElEM0RYQnVmZmVyICpjb21waWxl
VG9CaW5hcnkoY29uc3QgY2hhciAqaGxzbCwgY29uc3QgY2hhciAqcHJvZmlsZSwgSUQzRFhDb25z
dGFudFRhYmxlICoqY29uc3RhbnRUYWJsZSk7CisgICAgSUQzRDEwQmxvYiAqY29tcGlsZVRvQmlu
YXJ5KGNvbnN0IGNoYXIgKmhsc2wsIGNvbnN0IGNoYXIgKnByb2ZpbGUsIElEM0RYQ29uc3RhbnRU
YWJsZSAqKmNvbnN0YW50VGFibGUpOwogICAgIHZvaWQgdW5saW5rKGJvb2wgZGVzdHJveSA9IGZh
bHNlKTsKIAogICAgIGludCBwYWNrVmFyeWluZ3MoY29uc3QgVmFyeWluZyAqcGFja2luZ1tdWzRd
KTsKQEAgLTE2NCw2ICsxNjEsNyBAQCBjbGFzcyBQcm9ncmFtCiAKICAgICB2b2lkIGdldENvbnN0
YW50SGFuZGxlcyhVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBEM0RYSEFORExFICpjb25zdGFudFBT
LCBEM0RYSEFORExFICpjb25zdGFudFZTKTsKIAorICAgIHZvaWQgYXBwZW5kVG9JbmZvTG9nU2Fu
aXRpemVkKGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogICAgIHZvaWQgYXBwZW5kVG9JbmZvTG9nKGNv
bnN0IGNoYXIgKmluZm8sIC4uLik7CiAgICAgdm9pZCByZXNldEluZm9Mb2coKTsKIApAQCAtMTkx
LDExICsxODksMTEgQEAgY2xhc3MgUHJvZ3JhbQogICAgIHsKICAgICAgICAgYm9vbCBhY3RpdmU7
CiAgICAgICAgIEdMaW50IGxvZ2ljYWxUZXh0dXJlVW5pdDsKLSAgICAgICAgU2FtcGxlclR5cGUg
dHlwZTsKLSAgICAgICAgYm9vbCBkaXJ0eTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGV4dHVyZVR5
cGU7CiAgICAgfTsKIAotICAgIFNhbXBsZXIgbVNhbXBsZXJzW01BWF9URVhUVVJFX0lNQUdFX1VO
SVRTXTsKKyAgICBTYW1wbGVyIG1TYW1wbGVyc1BTW01BWF9URVhUVVJFX0lNQUdFX1VOSVRTXTsK
KyAgICBTYW1wbGVyIG1TYW1wbGVyc1ZTW01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU19W
VEZdOwogCiAgICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxVbmlmb3JtKj4gVW5pZm9ybUFycmF5Owog
ICAgIFVuaWZvcm1BcnJheSBtVW5pZm9ybXM7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiA4
OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVuZGVyYnVm
ZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMjQgKzU0LDU0IEBAIElEaXJlY3QzRFN1cmZh
Y2U5ICpSZW5kZXJidWZmZXI6OmdldERlcHQKICAgICByZXR1cm4gbVN0b3JhZ2UtPmdldERlcHRo
U3RlbmNpbCgpOwogfQogCi1pbnQgUmVuZGVyYnVmZmVyOjpnZXRXaWR0aCgpIGNvbnN0CitHTHNp
emVpIFJlbmRlcmJ1ZmZlcjo6Z2V0V2lkdGgoKSBjb25zdAogewogICAgIHJldHVybiBtU3RvcmFn
ZS0+Z2V0V2lkdGgoKTsKIH0KIAotaW50IFJlbmRlcmJ1ZmZlcjo6Z2V0SGVpZ2h0KCkgY29uc3QK
K0dMc2l6ZWkgUmVuZGVyYnVmZmVyOjpnZXRIZWlnaHQoKSBjb25zdAogewogICAgIHJldHVybiBt
U3RvcmFnZS0+Z2V0SGVpZ2h0KCk7CiB9CiAKLUdMZW51bSBSZW5kZXJidWZmZXI6OmdldEZvcm1h
dCgpIGNvbnN0CitHTGVudW0gUmVuZGVyYnVmZmVyOjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1TdG9yYWdlLT5nZXRGb3JtYXQoKTsKKyAgICByZXR1cm4gbVN0b3Jh
Z2UtPmdldEludGVybmFsRm9ybWF0KCk7CiB9CiAKLUQzREZPUk1BVCBSZW5kZXJidWZmZXI6Omdl
dEQzREZvcm1hdCgpIGNvbnN0CitHTHVpbnQgUmVuZGVyYnVmZmVyOjpnZXRSZWRTaXplKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbVN0b3JhZ2UtPmdldEQzREZvcm1hdCgpOworICAgIHJldHVybiBt
U3RvcmFnZS0+Z2V0UmVkU2l6ZSgpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVyOjpnZXRHcmVl
blNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtU3RvcmFnZS0+Z2V0R3JlZW5TaXplKCk7Cit9
CisKK0dMdWludCBSZW5kZXJidWZmZXI6OmdldEJsdWVTaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVN0b3JhZ2UtPmdldEJsdWVTaXplKCk7Cit9CisKK0dMdWludCBSZW5kZXJidWZmZXI6Omdl
dEFscGhhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdG9yYWdlLT5nZXRBbHBoYVNpemUo
KTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVN0b3JhZ2UtPmdldERlcHRoU2l6ZSgpOworfQorCitHTHVpbnQgUmVuZGVyYnVm
ZmVyOjpnZXRTdGVuY2lsU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdG9yYWdlLT5nZXRT
dGVuY2lsU2l6ZSgpOworfQorCitHTHNpemVpIFJlbmRlcmJ1ZmZlcjo6Z2V0U2FtcGxlcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1TdG9yYWdlLT5nZXRTYW1wbGVzKCk7CiB9CiAKIHVuc2lnbmVk
IGludCBSZW5kZXJidWZmZXI6OmdldFNlcmlhbCgpIGNvbnN0CkBAIC05MSw3ICsxMjEsNyBAQCBS
ZW5kZXJidWZmZXJTdG9yYWdlOjpSZW5kZXJidWZmZXJTdG9yYWdlCiB7CiAgICAgbVdpZHRoID0g
MDsKICAgICBtSGVpZ2h0ID0gMDsKLSAgICBtRm9ybWF0ID0gR0xfUkdCQTQ7CisgICAgbUludGVy
bmFsRm9ybWF0ID0gR0xfUkdCQTQ7CiAgICAgbUQzREZvcm1hdCA9IEQzREZNVF9BOFI4RzhCODsK
ICAgICBtU2FtcGxlcyA9IDA7CiB9CkBAIC0xMjUsMzUgKzE1NSw0OSBAQCBJRGlyZWN0M0RTdXJm
YWNlOSAqUmVuZGVyYnVmZmVyU3RvcmFnZTo6CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLWludCBS
ZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRXaWR0aCgpIGNvbnN0CitHTHNpemVpIFJlbmRlcmJ1ZmZl
clN0b3JhZ2U6OmdldFdpZHRoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbVdpZHRoOwogfQogCi1p
bnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0SGVpZ2h0KCkgY29uc3QKK0dMc2l6ZWkgUmVuZGVy
YnVmZmVyU3RvcmFnZTo6Z2V0SGVpZ2h0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbUhlaWdodDsK
IH0KIAotdm9pZCBSZW5kZXJidWZmZXJTdG9yYWdlOjpzZXRTaXplKGludCB3aWR0aCwgaW50IGhl
aWdodCkKK0dMZW51bSBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNv
bnN0CiB7Ci0gICAgbVdpZHRoID0gd2lkdGg7Ci0gICAgbUhlaWdodCA9IGhlaWdodDsKKyAgICBy
ZXR1cm4gbUludGVybmFsRm9ybWF0OwogfQogCi1HTGVudW0gUmVuZGVyYnVmZmVyU3RvcmFnZTo6
Z2V0Rm9ybWF0KCkgY29uc3QKK0dMdWludCBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRSZWRTaXpl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUZvcm1hdDsKKyAgICByZXR1cm4gZHgyZXM6OkdldFJl
ZFNpemUoZ2V0RDNERm9ybWF0KCkpOwogfQogCi1ib29sIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6Omlz
RmxvYXRpbmdQb2ludCgpIGNvbnN0CitHTHVpbnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0R3Jl
ZW5TaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFsc2U7IC8vIG5vIGZsb2F0aW5nIHBvaW50
IHJlbmRlcmJ1ZmZlcnMgCisgICAgcmV0dXJuIGR4MmVzOjpHZXRHcmVlblNpemUoZ2V0RDNERm9y
bWF0KCkpOwogfQogCi1EM0RGT1JNQVQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0RDNERm9ybWF0
KCkgY29uc3QKK0dMdWludCBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRCbHVlU2l6ZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1EM0RGb3JtYXQ7CisgICAgcmV0dXJuIGR4MmVzOjpHZXRCbHVlU2l6
ZShnZXREM0RGb3JtYXQoKSk7Cit9CisKK0dMdWludCBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRB
bHBoYVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBkeDJlczo6R2V0QWxwaGFTaXplKGdldEQz
REZvcm1hdCgpKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldERlcHRoU2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGR4MmVzOjpHZXREZXB0aFNpemUoZ2V0RDNERm9ybWF0
KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0U3RlbmNpbFNpemUoKSBj
b25zdAoreworICAgIHJldHVybiBkeDJlczo6R2V0U3RlbmNpbFNpemUoZ2V0RDNERm9ybWF0KCkp
OwogfQogCiBHTHNpemVpIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFNhbXBsZXMoKSBjb25zdApA
QCAtMTYxLDYgKzIwNSwxMSBAQCBHTHNpemVpIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFNhbXBs
ZXMoCiAgICAgcmV0dXJuIG1TYW1wbGVzOwogfQogCitEM0RGT1JNQVQgUmVuZGVyYnVmZmVyU3Rv
cmFnZTo6Z2V0RDNERm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUQzREZvcm1hdDsKK30K
KwogdW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFNlcmlhbCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1TZXJpYWw7CkBAIC0xNzEsNyArMjIwLDcgQEAgdW5zaWduZWQgaW50IFJl
bmRlcmJ1ZmZlclN0b3JhZ2U6Omlzc3VlUwogICAgIHJldHVybiBtQ3VycmVudFNlcmlhbCsrOwog
fQogCi1Db2xvcmJ1ZmZlcjo6Q29sb3JidWZmZXIoSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRh
cmdldCkgOiBtUmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKK0NvbG9yYnVmZmVyOjpDb2xvcmJ1
ZmZlcihJRGlyZWN0M0RTdXJmYWNlOSAqcmVuZGVyVGFyZ2V0KSA6IG1SZW5kZXJUYXJnZXQocmVu
ZGVyVGFyZ2V0KSwgbVRleHR1cmUoTlVMTCkKIHsKICAgICBpZiAocmVuZGVyVGFyZ2V0KQogICAg
IHsKQEAgLTE4MCwyNSArMjI5LDMyIEBAIENvbG9yYnVmZmVyOjpDb2xvcmJ1ZmZlcihJRGlyZWN0
M0RTdXJmYWMKICAgICAgICAgRDNEU1VSRkFDRV9ERVNDIGRlc2NyaXB0aW9uOwogICAgICAgICBy
ZW5kZXJUYXJnZXQtPkdldERlc2MoJmRlc2NyaXB0aW9uKTsKIAotICAgICAgICBzZXRTaXplKGRl
c2NyaXB0aW9uLldpZHRoLCBkZXNjcmlwdGlvbi5IZWlnaHQpOwotICAgICAgICBtRm9ybWF0ID0g
ZHgyZXM6OkNvbnZlcnRCYWNrQnVmZmVyRm9ybWF0KGRlc2NyaXB0aW9uLkZvcm1hdCk7CisgICAg
ICAgIG1XaWR0aCA9IGRlc2NyaXB0aW9uLldpZHRoOworICAgICAgICBtSGVpZ2h0ID0gZGVzY3Jp
cHRpb24uSGVpZ2h0OworICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBkeDJlczo6Q29udmVydEJh
Y2tCdWZmZXJGb3JtYXQoZGVzY3JpcHRpb24uRm9ybWF0KTsKICAgICAgICAgbUQzREZvcm1hdCA9
IGRlc2NyaXB0aW9uLkZvcm1hdDsKLSAgICAgICAgbVNhbXBsZXMgPSBlczJkeDo6R2V0U2FtcGxl
c0Zyb21NdWx0aXNhbXBsZVR5cGUoZGVzY3JpcHRpb24uTXVsdGlTYW1wbGVUeXBlKTsKKyAgICAg
ICAgbVNhbXBsZXMgPSBkeDJlczo6R2V0U2FtcGxlc0Zyb21NdWx0aXNhbXBsZVR5cGUoZGVzY3Jp
cHRpb24uTXVsdGlTYW1wbGVUeXBlKTsKICAgICB9CiB9CiAKLUNvbG9yYnVmZmVyOjpDb2xvcmJ1
ZmZlcihjb25zdCBUZXh0dXJlKiB0ZXh0dXJlKSA6IG1SZW5kZXJUYXJnZXQoTlVMTCkKK0NvbG9y
YnVmZmVyOjpDb2xvcmJ1ZmZlcihUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0KSA6IG1S
ZW5kZXJUYXJnZXQoTlVMTCksIG1UZXh0dXJlKHRleHR1cmUpLCBtVGFyZ2V0KHRhcmdldCkKIHsK
LSAgICBzZXRTaXplKHRleHR1cmUtPmdldFdpZHRoKCksIHRleHR1cmUtPmdldEhlaWdodCgpKTsK
LSAgICBtRDNERm9ybWF0ID0gdGV4dHVyZS0+Z2V0RDNERm9ybWF0KCk7Ci0gICAgbVNhbXBsZXMg
PSAwOworICAgIGlmICh0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbVdpZHRoID0gdGV4dHVyZS0+
Z2V0V2lkdGgoKTsKKyAgICAgICAgbUhlaWdodCA9IHRleHR1cmUtPmdldEhlaWdodCgpOworICAg
ICAgICBtSW50ZXJuYWxGb3JtYXQgPSB0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworICAg
ICAgICBtRDNERm9ybWF0ID0gdGV4dHVyZS0+Z2V0RDNERm9ybWF0KCk7CisgICAgICAgIG1TYW1w
bGVzID0gMDsKKworICAgICAgICBtUmVuZGVyVGFyZ2V0ID0gdGV4dHVyZS0+Z2V0UmVuZGVyVGFy
Z2V0KHRhcmdldCk7CisgICAgfQogfQogCi1Db2xvcmJ1ZmZlcjo6Q29sb3JidWZmZXIoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMpCitDb2xvcmJ1
ZmZlcjo6Q29sb3JidWZmZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBH
THNpemVpIHNhbXBsZXMpIDogbVJlbmRlclRhcmdldChOVUxMKSwgbVRleHR1cmUoTlVMTCkKIHsK
ICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKIAotICAgIG1SZW5k
ZXJUYXJnZXQgPSBOVUxMOwogICAgIEQzREZPUk1BVCByZXF1ZXN0ZWRGb3JtYXQgPSBlczJkeDo6
Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChmb3JtYXQpOwogICAgIGludCBzdXBwb3J0ZWRTYW1w
bGVzID0gZ2V0Q29udGV4dCgpLT5nZXROZWFyZXN0U3VwcG9ydGVkU2FtcGxlcyhyZXF1ZXN0ZWRG
b3JtYXQsIHNhbXBsZXMpOwogCkBAIC0yMjQsMTMgKzI4MCwxMSBAQCBDb2xvcmJ1ZmZlcjo6Q29s
b3JidWZmZXIoaW50IHdpZHRoLCBpbnQgCiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CiAgICAgfQogCi0gICAgaWYgKG1SZW5kZXJUYXJnZXQpCi0gICAgewotICAgICAgICBzZXRT
aXplKHdpZHRoLCBoZWlnaHQpOwotICAgICAgICBtRm9ybWF0ID0gZm9ybWF0OwotICAgICAgICBt
RDNERm9ybWF0ID0gcmVxdWVzdGVkRm9ybWF0OwotICAgICAgICBtU2FtcGxlcyA9IHN1cHBvcnRl
ZFNhbXBsZXM7Ci0gICAgfQorICAgIG1XaWR0aCA9IHdpZHRoOworICAgIG1IZWlnaHQgPSBoZWln
aHQ7CisgICAgbUludGVybmFsRm9ybWF0ID0gZm9ybWF0OworICAgIG1EM0RGb3JtYXQgPSByZXF1
ZXN0ZWRGb3JtYXQ7CisgICAgbVNhbXBsZXMgPSBzdXBwb3J0ZWRTYW1wbGVzOwogfQogCiBDb2xv
cmJ1ZmZlcjo6fkNvbG9yYnVmZmVyKCkKQEAgLTI0MSw2NSArMjk1LDczIEBAIENvbG9yYnVmZmVy
Ojp+Q29sb3JidWZmZXIoKQogICAgIH0KIH0KIAotYm9vbCBDb2xvcmJ1ZmZlcjo6aXNDb2xvcmJ1
ZmZlcigpIGNvbnN0CitHTHNpemVpIENvbG9yYnVmZmVyOjpnZXRXaWR0aCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1UZXh0dXJlLT5nZXRXaWR0aCgpOworICAgIH0KKworICAgIHJldHVybiBtV2lkdGg7CiB9CiAK
LUdMdWludCBDb2xvcmJ1ZmZlcjo6Z2V0UmVkU2l6ZSgpIGNvbnN0CitHTHNpemVpIENvbG9yYnVm
ZmVyOjpnZXRIZWlnaHQoKSBjb25zdAogewotICAgIGlmIChtUmVuZGVyVGFyZ2V0KQorICAgIGlm
IChtVGV4dHVyZSkKICAgICB7Ci0gICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjcmlwdGlvbjsK
LSAgICAgICAgbVJlbmRlclRhcmdldC0+R2V0RGVzYygmZGVzY3JpcHRpb24pOwotCi0gICAgICAg
IHJldHVybiBlczJkeDo6R2V0UmVkU2l6ZShkZXNjcmlwdGlvbi5Gb3JtYXQpOworICAgICAgICBy
ZXR1cm4gbVRleHR1cmUtPmdldEhlaWdodCgpOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAg
IHJldHVybiBtSGVpZ2h0OwogfQogCi1HTHVpbnQgQ29sb3JidWZmZXI6OmdldEdyZWVuU2l6ZSgp
IGNvbnN0CitHTGVudW0gQ29sb3JidWZmZXI6OmdldEludGVybmFsRm9ybWF0KCkgY29uc3QKIHsK
LSAgICBpZiAobVJlbmRlclRhcmdldCkKKyAgICBpZiAobVRleHR1cmUpCiAgICAgewotICAgICAg
ICBEM0RTVVJGQUNFX0RFU0MgZGVzY3JpcHRpb247Ci0gICAgICAgIG1SZW5kZXJUYXJnZXQtPkdl
dERlc2MoJmRlc2NyaXB0aW9uKTsKLQotICAgICAgICByZXR1cm4gZXMyZHg6OkdldEdyZWVuU2l6
ZShkZXNjcmlwdGlvbi5Gb3JtYXQpOworICAgICAgICByZXR1cm4gbVRleHR1cmUtPmdldEludGVy
bmFsRm9ybWF0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1JbnRlcm5h
bEZvcm1hdDsKIH0KIAotR0x1aW50IENvbG9yYnVmZmVyOjpnZXRCbHVlU2l6ZSgpIGNvbnN0CitH
TGVudW0gQ29sb3JidWZmZXI6OmdldFR5cGUoKSBjb25zdAogewotICAgIGlmIChtUmVuZGVyVGFy
Z2V0KQorICAgIGlmIChtVGV4dHVyZSkKICAgICB7Ci0gICAgICAgIEQzRFNVUkZBQ0VfREVTQyBk
ZXNjcmlwdGlvbjsKLSAgICAgICAgbVJlbmRlclRhcmdldC0+R2V0RGVzYygmZGVzY3JpcHRpb24p
OwotCi0gICAgICAgIHJldHVybiBlczJkeDo6R2V0Qmx1ZVNpemUoZGVzY3JpcHRpb24uRm9ybWF0
KTsKKyAgICAgICAgcmV0dXJuIG1UZXh0dXJlLT5nZXRUeXBlKCk7CiAgICAgfQogCi0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0JZVEU7CiB9CiAKLUdMdWludCBDb2xvcmJ1
ZmZlcjo6Z2V0QWxwaGFTaXplKCkgY29uc3QKK0QzREZPUk1BVCBDb2xvcmJ1ZmZlcjo6Z2V0RDNE
Rm9ybWF0KCkgY29uc3QKIHsKLSAgICBpZiAobVJlbmRlclRhcmdldCkKKyAgICBpZiAobVRleHR1
cmUpCiAgICAgewotICAgICAgICBEM0RTVVJGQUNFX0RFU0MgZGVzY3JpcHRpb247Ci0gICAgICAg
IG1SZW5kZXJUYXJnZXQtPkdldERlc2MoJmRlc2NyaXB0aW9uKTsKLQotICAgICAgICByZXR1cm4g
ZXMyZHg6OkdldEFscGhhU2l6ZShkZXNjcmlwdGlvbi5Gb3JtYXQpOworICAgICAgICByZXR1cm4g
bVRleHR1cmUtPmdldEQzREZvcm1hdCgpOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBtRDNERm9ybWF0OworfQorCitib29sIENvbG9yYnVmZmVyOjppc0NvbG9yYnVmZmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogSURpcmVjdDNEU3VyZmFjZTkgKkNvbG9y
YnVmZmVyOjpnZXRSZW5kZXJUYXJnZXQoKQogeworICAgIGlmIChtVGV4dHVyZSkKKyAgICB7Cisg
ICAgICAgIGlmIChtUmVuZGVyVGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICBtUmVuZGVy
VGFyZ2V0LT5SZWxlYXNlKCk7CisgICAgICAgIH0KKworICAgICAgICBtUmVuZGVyVGFyZ2V0ID0g
bVRleHR1cmUtPmdldFJlbmRlclRhcmdldChtVGFyZ2V0KTsKKyAgICB9CisKICAgICByZXR1cm4g
bVJlbmRlclRhcmdldDsKIH0KIApAQCAtMzEyLDkgKzM3NCwxMCBAQCBEZXB0aFN0ZW5jaWxidWZm
ZXI6OkRlcHRoU3RlbmNpbGJ1ZmZlcihJCiAgICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjcmlw
dGlvbjsKICAgICAgICAgZGVwdGhTdGVuY2lsLT5HZXREZXNjKCZkZXNjcmlwdGlvbik7CiAKLSAg
ICAgICAgc2V0U2l6ZShkZXNjcmlwdGlvbi5XaWR0aCwgZGVzY3JpcHRpb24uSGVpZ2h0KTsKLSAg
ICAgICAgbUZvcm1hdCA9IGR4MmVzOjpDb252ZXJ0RGVwdGhTdGVuY2lsRm9ybWF0KGRlc2NyaXB0
aW9uLkZvcm1hdCk7Ci0gICAgICAgIG1TYW1wbGVzID0gZXMyZHg6OkdldFNhbXBsZXNGcm9tTXVs
dGlzYW1wbGVUeXBlKGRlc2NyaXB0aW9uLk11bHRpU2FtcGxlVHlwZSk7IAorICAgICAgICBtV2lk
dGggPSBkZXNjcmlwdGlvbi5XaWR0aDsKKyAgICAgICAgbUhlaWdodCA9IGRlc2NyaXB0aW9uLkhl
aWdodDsKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gZHgyZXM6OkNvbnZlcnREZXB0aFN0ZW5j
aWxGb3JtYXQoZGVzY3JpcHRpb24uRm9ybWF0KTsKKyAgICAgICAgbVNhbXBsZXMgPSBkeDJlczo6
R2V0U2FtcGxlc0Zyb21NdWx0aXNhbXBsZVR5cGUoZGVzY3JpcHRpb24uTXVsdGlTYW1wbGVUeXBl
KTsgCiAgICAgICAgIG1EM0RGb3JtYXQgPSBkZXNjcmlwdGlvbi5Gb3JtYXQ7CiAgICAgfQogfQpA
QCAtMzM0LDI1ICszOTcsMjYgQEAgRGVwdGhTdGVuY2lsYnVmZmVyOjpEZXB0aFN0ZW5jaWxidWZm
ZXIoaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSFJFU1VMVCByZXN1bHQgPSBkZXZp
Y2UtPkNyZWF0ZURlcHRoU3RlbmNpbFN1cmZhY2Uod2lkdGgsIGhlaWdodCwgRDNERk1UX0QyNFM4
LCBlczJkeDo6R2V0TXVsdGlzYW1wbGVUeXBlRnJvbVNhbXBsZXMoc3VwcG9ydGVkU2FtcGxlcyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgRkFMU0UsICZtRGVwdGhTdGVuY2lsLCAwKTsKLQotICAgIGlmIChyZXN1bHQgPT0gRDNERVJS
X09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgaWYgKHdp
ZHRoID4gMCAmJiBoZWlnaHQgPiAwKQogICAgIHsKLSAgICAgICAgZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5j
aWxTdXJmYWNlKHdpZHRoLCBoZWlnaHQsIEQzREZNVF9EMjRTOCwgZXMyZHg6OkdldE11bHRpc2Ft
cGxlVHlwZUZyb21TYW1wbGVzKHN1cHBvcnRlZFNhbXBsZXMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBGQUxTRSwgJm1EZXB0
aFN0ZW5jaWwsIDApOwogCi0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIGlmIChyZXN1
bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwogCi0gICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogCi0gICAgaWYgKG1EZXB0aFN0ZW5jaWwpCi0gICAgewotICAgICAgICBzZXRTaXplKHdpZHRo
LCBoZWlnaHQpOwotICAgICAgICBtRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7Ci0g
ICAgICAgIG1EM0RGb3JtYXQgPSBEM0RGTVRfRDI0Uzg7Ci0gICAgICAgIG1TYW1wbGVzID0gc3Vw
cG9ydGVkU2FtcGxlczsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICB9
CisKKyAgICBtV2lkdGggPSB3aWR0aDsKKyAgICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgIG1JbnRl
cm5hbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOworICAgIG1EM0RGb3JtYXQgPSBE
M0RGTVRfRDI0Uzg7CisgICAgbVNhbXBsZXMgPSBzdXBwb3J0ZWRTYW1wbGVzOwogfQogCiBEZXB0
aFN0ZW5jaWxidWZmZXI6On5EZXB0aFN0ZW5jaWxidWZmZXIoKQpAQCAtMzczLDMyICs0MzcsNiBA
QCBib29sIERlcHRoU3RlbmNpbGJ1ZmZlcjo6aXNTdGVuY2lsYnVmZmVyCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLUdMdWludCBEZXB0aFN0ZW5jaWxidWZmZXI6OmdldERlcHRoU2l6ZSgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1EZXB0aFN0ZW5jaWwpCi0gICAgewotICAgICAgICBEM0RTVVJGQUNFX0RF
U0MgZGVzY3JpcHRpb247Ci0gICAgICAgIG1EZXB0aFN0ZW5jaWwtPkdldERlc2MoJmRlc2NyaXB0
aW9uKTsKLQotICAgICAgICByZXR1cm4gZXMyZHg6OkdldERlcHRoU2l6ZShkZXNjcmlwdGlvbi5G
b3JtYXQpOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi1HTHVpbnQgRGVwdGhTdGVuY2ls
YnVmZmVyOjpnZXRTdGVuY2lsU2l6ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1EZXB0aFN0ZW5jaWwp
Ci0gICAgewotICAgICAgICBEM0RTVVJGQUNFX0RFU0MgZGVzY3JpcHRpb247Ci0gICAgICAgIG1E
ZXB0aFN0ZW5jaWwtPkdldERlc2MoJmRlc2NyaXB0aW9uKTsKLQotICAgICAgICByZXR1cm4gZXMy
ZHg6OkdldFN0ZW5jaWxTaXplKGRlc2NyaXB0aW9uLkZvcm1hdCk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIDA7Ci19Ci0KIElEaXJlY3QzRFN1cmZhY2U5ICpEZXB0aFN0ZW5jaWxidWZmZXI6OmdldERl
cHRoU3RlbmNpbCgpCiB7CiAgICAgcmV0dXJuIG1EZXB0aFN0ZW5jaWw7CkBAIC00MDgsOSArNDQ2
LDkgQEAgRGVwdGhidWZmZXI6OkRlcHRoYnVmZmVyKElEaXJlY3QzRFN1cmZhYwogewogICAgIGlm
IChkZXB0aFN0ZW5jaWwpCiAgICAgewotICAgICAgICBtRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9O
RU5UMTY7IC8vIElmIHRoZSByZW5kZXJidWZmZXIgcGFyYW1ldGVycyBhcmUgcXVlcmllZCwgdGhl
IGNhbGxpbmcgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB3aWxsIGV4cGVjdCBvbmUgb2YgdGhlIHZhbGlkIHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZv
ciB1c2UgaW4gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlCisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IEdMX0RFUFRIX0NP
TVBPTkVOVDE2OyAgIC8vIElmIHRoZSByZW5kZXJidWZmZXIgcGFyYW1ldGVycyBhcmUgcXVlcmll
ZCwgdGhlIGNhbGxpbmcgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gd2lsbCBleHBlY3Qgb25lIG9mIHRoZSB2YWxpZCByZW5kZXJi
dWZmZXIgZm9ybWF0cyBmb3IgdXNlIGluIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UKICAgICB9CiB9CiAK
QEAgLTQxOCw5ICs0NTYsOSBAQCBEZXB0aGJ1ZmZlcjo6RGVwdGhidWZmZXIoaW50IHdpZHRoLCBp
bnQgCiB7CiAgICAgaWYgKGdldERlcHRoU3RlbmNpbCgpKQogICAgIHsKLSAgICAgICAgbUZvcm1h
dCA9IEdMX0RFUFRIX0NPTVBPTkVOVDE2OyAvLyBJZiB0aGUgcmVuZGVyYnVmZmVyIHBhcmFtZXRl
cnMgYXJlIHF1ZXJpZWQsIHRoZSBjYWxsaW5nIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBleHBlY3Qgb25lIG9mIHRoZSB2YWxpZCByZW5k
ZXJidWZmZXIgZm9ybWF0cyBmb3IgdXNlIGluIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGdsUmVuZGVyYnVmZmVyU3RvcmFnZQorICAgICAgICBtSW50ZXJuYWxG
b3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQxNjsgICAvLyBJZiB0aGUgcmVuZGVyYnVmZmVyIHBh
cmFtZXRlcnMgYXJlIHF1ZXJpZWQsIHRoZSBjYWxsaW5nIGZ1bmN0aW9uCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgZXhwZWN0IG9uZSBv
ZiB0aGUgdmFsaWQgcmVuZGVyYnVmZmVyIGZvcm1hdHMgZm9yIHVzZSBpbiAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2xSZW5kZXJidWZmZXJT
dG9yYWdlCiAgICAgfQogfQogCkBAIC00NDIsMTMgKzQ4MCw5IEBAIFN0ZW5jaWxidWZmZXI6OlN0
ZW5jaWxidWZmZXIoSURpcmVjdDNEU3UKIHsKICAgICBpZiAoZGVwdGhTdGVuY2lsKQogICAgIHsK
LSAgICAgICAgbUZvcm1hdCA9IEdMX1NURU5DSUxfSU5ERVg4OyAvLyBJZiB0aGUgcmVuZGVyYnVm
ZmVyIHBhcmFtZXRlcnMgYXJlIHF1ZXJpZWQsIHRoZSBjYWxsaW5nIGZ1bmN0aW9uCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBleHBlY3Qgb25lIG9mIHRoZSB2
YWxpZCByZW5kZXJidWZmZXIgZm9ybWF0cyBmb3IgdXNlIGluIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGdsUmVuZGVyYnVmZmVyU3RvcmFnZQotICAgIH0KLSAgICBl
bHNlCi0gICAgewotICAgICAgICBtRm9ybWF0ID0gR0xfUkdCQTQ7IC8vZGVmYXVsdCBmb3JtYXQK
KyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gR0xfU1RFTkNJTF9JTkRFWDg7ICAgLy8gSWYgdGhl
IHJlbmRlcmJ1ZmZlciBwYXJhbWV0ZXJzIGFyZSBxdWVyaWVkLCB0aGUgY2FsbGluZyBmdW5jdGlv
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxs
IGV4cGVjdCBvbmUgb2YgdGhlIHZhbGlkIHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4g
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsUmVu
ZGVyYnVmZmVyU3RvcmFnZQogICAgIH0KIH0KIApAQCAtNDU2LDkgKzQ5MCw5IEBAIFN0ZW5jaWxi
dWZmZXI6OlN0ZW5jaWxidWZmZXIoaW50IHdpZHRoLCAKIHsKICAgICBpZiAoZ2V0RGVwdGhTdGVu
Y2lsKCkpCiAgICAgewotICAgICAgICBtRm9ybWF0ID0gR0xfU1RFTkNJTF9JTkRFWDg7IC8vIElm
IHRoZSByZW5kZXJidWZmZXIgcGFyYW1ldGVycyBhcmUgcXVlcmllZCwgdGhlIGNhbGxpbmcgZnVu
Y3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGV4cGVj
dCBvbmUgb2YgdGhlIHZhbGlkIHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4gCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2xSZW5kZXJidWZmZXJTdG9yYWdl
CisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IEdMX1NURU5DSUxfSU5ERVg4OyAgIC8vIElmIHRo
ZSByZW5kZXJidWZmZXIgcGFyYW1ldGVycyBhcmUgcXVlcmllZCwgdGhlIGNhbGxpbmcgZnVuY3Rp
b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2ls
bCBleHBlY3Qgb25lIG9mIHRoZSB2YWxpZCByZW5kZXJidWZmZXIgZm9ybWF0cyBmb3IgdXNlIGlu
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2UKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaAkocmV2aXNpb24gODky
ODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAKIG5hbWVzcGFjZSBnbAogewot
ICAgIGNsYXNzIFRleHR1cmU7CitjbGFzcyBUZXh0dXJlOwogCiAvLyBBIGNsYXNzIGRlcml2ZWQg
ZnJvbSBSZW5kZXJidWZmZXJTdG9yYWdlIGlzIGNyZWF0ZWQgd2hlbmV2ZXIgZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlCiAvLyBpcyBjYWxsZWQuIFRoZSBzcGVjaWZpYyBjb25jcmV0ZSB0eXBlIGRlcGVu
ZHMgb24gd2hldGhlciB0aGUgaW50ZXJuYWwgZm9ybWF0IGlzCkBAIC00MCwzNCArNDAsNDAgQEAg
Y2xhc3MgUmVuZGVyYnVmZmVyU3RvcmFnZQogICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFjZTkg
KmdldFJlbmRlclRhcmdldCgpOwogICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdldERl
cHRoU3RlbmNpbCgpOwogCi0gICAgdmlydHVhbCBpbnQgZ2V0V2lkdGgoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGludCBnZXRIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEdMZW51bSBnZXRGb3Jt
YXQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNGbG9hdGluZ1BvaW50KCkgY29uc3Q7Ci0g
ICAgRDNERk9STUFUIGdldEQzREZvcm1hdCgpIGNvbnN0OwotICAgIEdMc2l6ZWkgZ2V0U2FtcGxl
cygpIGNvbnN0OwotICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEdMc2l6ZWkgZ2V0V2lkdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0SGVp
Z2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25z
dDsKKyAgICBHTHVpbnQgZ2V0UmVkU2l6ZSgpIGNvbnN0OworICAgIEdMdWludCBnZXRHcmVlblNp
emUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0Qmx1ZVNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQg
Z2V0QWxwaGFTaXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldERlcHRoU2l6ZSgpIGNvbnN0Owor
ICAgIEdMdWludCBnZXRTdGVuY2lsU2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xzaXplaSBn
ZXRTYW1wbGVzKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IGlzc3VlU2VyaWFs
KCk7CisgICAgdmlydHVhbCBEM0RGT1JNQVQgZ2V0RDNERm9ybWF0KCkgY29uc3Q7CisKKyAgICB1
bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CiAKICAgcHJvdGVjdGVkOgotICAgIHZvaWQg
c2V0U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAgIEdMZW51bSBtRm9ybWF0OworICAg
IEdMc2l6ZWkgbVdpZHRoOworICAgIEdMc2l6ZWkgbUhlaWdodDsKKyAgICBHTGVudW0gbUludGVy
bmFsRm9ybWF0OwogICAgIEQzREZPUk1BVCBtRDNERm9ybWF0OwogICAgIEdMc2l6ZWkgbVNhbXBs
ZXM7Ci0gICAgY29uc3QgdW5zaWduZWQgaW50IG1TZXJpYWw7CiAKICAgcHJpdmF0ZToKICAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyYnVmZmVyU3RvcmFnZSk7CiAKLSAgICBzdGF0
aWMgdW5zaWduZWQgaW50IG1DdXJyZW50U2VyaWFsOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQg
aXNzdWVTZXJpYWwoKTsKKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBtU2VyaWFsOwogCi0gICAg
aW50IG1XaWR0aDsKLSAgICBpbnQgbUhlaWdodDsKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IG1D
dXJyZW50U2VyaWFsOwogfTsKIAogLy8gUmVuZGVyYnVmZmVyIGltcGxlbWVudHMgdGhlIEdMIHJl
bmRlcmJ1ZmZlciBvYmplY3QuCi0vLyBJdCdzIG9ubHkgYSB3cmFwcGVyIGZvciBhIFJlbmRlcmJ1
ZmZlclN0b3JhZ2UsIGJ1dCB0aGUgaW50ZXJuYWwgb2JqZWN0CisvLyBJdCdzIG9ubHkgYSBwcm94
eSBmb3IgYSBSZW5kZXJidWZmZXJTdG9yYWdlIGluc3RhbmNlOyB0aGUgaW50ZXJuYWwgb2JqZWN0
CiAvLyBjYW4gY2hhbmdlIHdoZW5ldmVyIGdsUmVuZGVyYnVmZmVyU3RvcmFnZSBpcyBjYWxsZWQu
CiBjbGFzcyBSZW5kZXJidWZmZXIgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QKIHsKQEAgLTgzLDEw
ICs4OSwxOCBAQCBjbGFzcyBSZW5kZXJidWZmZXIgOiBwdWJsaWMgUmVmQ291bnRPYmplCiAgICAg
SURpcmVjdDNEU3VyZmFjZTkgKmdldFJlbmRlclRhcmdldCgpOwogICAgIElEaXJlY3QzRFN1cmZh
Y2U5ICpnZXREZXB0aFN0ZW5jaWwoKTsKIAotICAgIGludCBnZXRXaWR0aCgpIGNvbnN0OwotICAg
IGludCBnZXRIZWlnaHQoKSBjb25zdDsKLSAgICBHTGVudW0gZ2V0Rm9ybWF0KCkgY29uc3Q7Cisg
ICAgR0xzaXplaSBnZXRXaWR0aCgpIGNvbnN0OworICAgIEdMc2l6ZWkgZ2V0SGVpZ2h0KCkgY29u
c3Q7CisgICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7CiAgICAgRDNERk9STUFU
IGdldEQzREZvcm1hdCgpIGNvbnN0OworICAgIEdMdWludCBnZXRSZWRTaXplKCkgY29uc3Q7Cisg
ICAgR0x1aW50IGdldEdyZWVuU2l6ZSgpIGNvbnN0OworICAgIEdMdWludCBnZXRCbHVlU2l6ZSgp
IGNvbnN0OworICAgIEdMdWludCBnZXRBbHBoYVNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0
RGVwdGhTaXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldFN0ZW5jaWxTaXplKCkgY29uc3Q7Cisg
ICAgR0xzaXplaSBnZXRTYW1wbGVzKCkgY29uc3Q7CisKICAgICB1bnNpZ25lZCBpbnQgZ2V0U2Vy
aWFsKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFN0b3JhZ2UoUmVuZGVyYnVmZmVyU3RvcmFnZSAq
bmV3U3RvcmFnZSk7CkBAIC0xMDIsNDIgKzExNiw0MiBAQCBjbGFzcyBDb2xvcmJ1ZmZlciA6IHB1
YmxpYyBSZW5kZXJidWZmZXJTCiB7CiAgIHB1YmxpYzoKICAgICBleHBsaWNpdCBDb2xvcmJ1ZmZl
cihJRGlyZWN0M0RTdXJmYWNlOSAqcmVuZGVyVGFyZ2V0KTsKLSAgICBleHBsaWNpdCBDb2xvcmJ1
ZmZlcihjb25zdCBUZXh0dXJlKiB0ZXh0dXJlKTsKLSAgICBDb2xvcmJ1ZmZlcihpbnQgd2lkdGgs
IGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcyk7CisgICAgQ29sb3Ji
dWZmZXIoVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHRhcmdldCk7CisgICAgQ29sb3JidWZmZXIo
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2Ft
cGxlcyk7CiAKLSAgICB+Q29sb3JidWZmZXIoKTsKKyAgICB2aXJ0dWFsIH5Db2xvcmJ1ZmZlcigp
OwogCi0gICAgYm9vbCBpc0NvbG9yYnVmZmVyKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlz
Q29sb3JidWZmZXIoKSBjb25zdDsKIAotICAgIEdMdWludCBnZXRSZWRTaXplKCkgY29uc3Q7Ci0g
ICAgR0x1aW50IGdldEdyZWVuU2l6ZSgpIGNvbnN0OwotICAgIEdMdWludCBnZXRCbHVlU2l6ZSgp
IGNvbnN0OwotICAgIEdMdWludCBnZXRBbHBoYVNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIElE
aXJlY3QzRFN1cmZhY2U5ICpnZXRSZW5kZXJUYXJnZXQoKTsKIAotICAgIElEaXJlY3QzRFN1cmZh
Y2U5ICpnZXRSZW5kZXJUYXJnZXQoKTsKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0V2lkdGgoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0SGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdMZW51bSBn
ZXRUeXBlKCkgY29uc3Q7CiAKLSAgcHJvdGVjdGVkOgotICAgIElEaXJlY3QzRFN1cmZhY2U5ICpt
UmVuZGVyVGFyZ2V0OworICAgIHZpcnR1YWwgRDNERk9STUFUIGdldEQzREZvcm1hdCgpIGNvbnN0
OwogCiAgIHByaXZhdGU6CiAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKENvbG9yYnVmZmVy
KTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICptUmVuZGVyVGFyZ2V0OworICAgIFRleHR1cmUg
Km1UZXh0dXJlOworICAgIEdMZW51bSBtVGFyZ2V0OwogfTsKIAogY2xhc3MgRGVwdGhTdGVuY2ls
YnVmZmVyIDogcHVibGljIFJlbmRlcmJ1ZmZlclN0b3JhZ2UKIHsKICAgcHVibGljOgogICAgIGV4
cGxpY2l0IERlcHRoU3RlbmNpbGJ1ZmZlcihJRGlyZWN0M0RTdXJmYWNlOSAqZGVwdGhTdGVuY2ls
KTsKLSAgICBEZXB0aFN0ZW5jaWxidWZmZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTHNpemVp
IHNhbXBsZXMpOworICAgIERlcHRoU3RlbmNpbGJ1ZmZlcihHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xzaXplaSBzYW1wbGVzKTsKIAogICAgIH5EZXB0aFN0ZW5jaWxidWZmZXIoKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBpc0RlcHRoYnVmZmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGlzU3RlbmNpbGJ1ZmZlcigpIGNvbnN0OwogCi0gICAgR0x1aW50IGdldERlcHRoU2l6ZSgp
IGNvbnN0OwotICAgIEdMdWludCBnZXRTdGVuY2lsU2l6ZSgpIGNvbnN0OwotCi0gICAgSURpcmVj
dDNEU3VyZmFjZTkgKmdldERlcHRoU3RlbmNpbCgpOworICAgIHZpcnR1YWwgSURpcmVjdDNEU3Vy
ZmFjZTkgKmdldERlcHRoU3RlbmNpbCgpOwogCiAgIHByaXZhdGU6CiAgICAgRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOKERlcHRoU3RlbmNpbGJ1ZmZlcik7CkBAIC0xNDgsMTIgKzE2MiwxMiBAQCBj
bGFzcyBEZXB0aGJ1ZmZlciA6IHB1YmxpYyBEZXB0aFN0ZW5jaWxiCiB7CiAgIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBEZXB0aGJ1ZmZlcihJRGlyZWN0M0RTdXJmYWNlOSAqZGVwdGhTdGVuY2lsKTsK
LSAgICBEZXB0aGJ1ZmZlcihpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMc2l6ZWkgc2FtcGxlcyk7
CisgICAgRGVwdGhidWZmZXIoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkg
c2FtcGxlcyk7CiAKLSAgICB+RGVwdGhidWZmZXIoKTsKKyAgICB2aXJ0dWFsIH5EZXB0aGJ1ZmZl
cigpOwogCi0gICAgYm9vbCBpc0RlcHRoYnVmZmVyKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N0ZW5j
aWxidWZmZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNEZXB0aGJ1ZmZlcigpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBpc1N0ZW5jaWxidWZmZXIoKSBjb25zdDsKIAogICBwcml2YXRl
OgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihEZXB0aGJ1ZmZlcik7CkBAIC0xNjMsMTIg
KzE3NywxMiBAQCBjbGFzcyBTdGVuY2lsYnVmZmVyIDogcHVibGljIERlcHRoU3RlbmNpCiB7CiAg
IHB1YmxpYzoKICAgICBleHBsaWNpdCBTdGVuY2lsYnVmZmVyKElEaXJlY3QzRFN1cmZhY2U5ICpk
ZXB0aFN0ZW5jaWwpOwotICAgIFN0ZW5jaWxidWZmZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBH
THNpemVpIHNhbXBsZXMpOworICAgIFN0ZW5jaWxidWZmZXIoR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMc2l6ZWkgc2FtcGxlcyk7CiAKLSAgICB+U3RlbmNpbGJ1ZmZlcigpOworICAg
IHZpcnR1YWwgflN0ZW5jaWxidWZmZXIoKTsKIAotICAgIGJvb2wgaXNEZXB0aGJ1ZmZlcigpIGNv
bnN0OwotICAgIGJvb2wgaXNTdGVuY2lsYnVmZmVyKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGlzRGVwdGhidWZmZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdGVuY2lsYnVmZmVy
KCkgY29uc3Q7CiAKICAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU3Rl
bmNpbGJ1ZmZlcik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1Jlc291cmNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuY3BwCShyZXZpc2lvbiA4OTI4NikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTIgKzY2LDcgQEAgdm9pZCBSZXNvdXJjZU1hbmFnZXI6
OnJlbGVhc2UoKQogLy8gUmV0dXJucyBhbiB1bnVzZWQgYnVmZmVyIG5hbWUKIEdMdWludCBSZXNv
dXJjZU1hbmFnZXI6OmNyZWF0ZUJ1ZmZlcigpCiB7Ci0gICAgdW5zaWduZWQgaW50IGhhbmRsZSA9
IDE7Ci0KLSAgICB3aGlsZSAobUJ1ZmZlck1hcC5maW5kKGhhbmRsZSkgIT0gbUJ1ZmZlck1hcC5l
bmQoKSkKLSAgICB7Ci0gICAgICAgIGhhbmRsZSsrOwotICAgIH0KKyAgICBHTHVpbnQgaGFuZGxl
ID0gbUJ1ZmZlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwogCiAgICAgbUJ1ZmZlck1hcFto
YW5kbGVdID0gTlVMTDsKIApAQCAtODEsMTIgKzc2LDcgQEAgR0x1aW50IFJlc291cmNlTWFuYWdl
cjo6Y3JlYXRlQnVmZmVyKCkKIC8vIFJldHVybnMgYW4gdW51c2VkIHNoYWRlci9wcm9ncmFtIG5h
bWUKIEdMdWludCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKIHsK
LSAgICB1bnNpZ25lZCBpbnQgaGFuZGxlID0gMTsKLQotICAgIHdoaWxlIChtU2hhZGVyTWFwLmZp
bmQoaGFuZGxlKSAhPSBtU2hhZGVyTWFwLmVuZCgpIHx8IG1Qcm9ncmFtTWFwLmZpbmQoaGFuZGxl
KSAhPSBtUHJvZ3JhbU1hcC5lbmQoKSkgICAvLyBTaGFyZWQgbmFtZSBzcGFjZQotICAgIHsKLSAg
ICAgICAgaGFuZGxlKys7Ci0gICAgfQorICAgIEdMdWludCBoYW5kbGUgPSBtUHJvZ3JhbVNoYWRl
ckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwogCiAgICAgaWYgKHR5cGUgPT0gR0xfVkVSVEVY
X1NIQURFUikKICAgICB7CkBAIC0xMDQsMTIgKzk0LDcgQEAgR0x1aW50IFJlc291cmNlTWFuYWdl
cjo6Y3JlYXRlU2hhZGVyKEdMZQogLy8gUmV0dXJucyBhbiB1bnVzZWQgcHJvZ3JhbS9zaGFkZXIg
bmFtZQogR0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3JlYXRlUHJvZ3JhbSgpCiB7Ci0gICAgdW5z
aWduZWQgaW50IGhhbmRsZSA9IDE7Ci0KLSAgICB3aGlsZSAobVByb2dyYW1NYXAuZmluZChoYW5k
bGUpICE9IG1Qcm9ncmFtTWFwLmVuZCgpIHx8IG1TaGFkZXJNYXAuZmluZChoYW5kbGUpICE9IG1T
aGFkZXJNYXAuZW5kKCkpICAgLy8gU2hhcmVkIG5hbWUgc3BhY2UKLSAgICB7Ci0gICAgICAgIGhh
bmRsZSsrOwotICAgIH0KKyAgICBHTHVpbnQgaGFuZGxlID0gbVByb2dyYW1TaGFkZXJIYW5kbGVB
bGxvY2F0b3IuYWxsb2NhdGUoKTsKIAogICAgIG1Qcm9ncmFtTWFwW2hhbmRsZV0gPSBuZXcgUHJv
Z3JhbSh0aGlzLCBoYW5kbGUpOwogCkBAIC0xMTksMTIgKzEwNCw3IEBAIEdMdWludCBSZXNvdXJj
ZU1hbmFnZXI6OmNyZWF0ZVByb2dyYW0oKQogLy8gUmV0dXJucyBhbiB1bnVzZWQgdGV4dHVyZSBu
YW1lCiBHTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVUZXh0dXJlKCkKIHsKLSAgICB1bnNp
Z25lZCBpbnQgaGFuZGxlID0gMTsKLQotICAgIHdoaWxlIChtVGV4dHVyZU1hcC5maW5kKGhhbmRs
ZSkgIT0gbVRleHR1cmVNYXAuZW5kKCkpCi0gICAgewotICAgICAgICBoYW5kbGUrKzsKLSAgICB9
CisgICAgR0x1aW50IGhhbmRsZSA9IG1UZXh0dXJlSGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7
CiAKICAgICBtVGV4dHVyZU1hcFtoYW5kbGVdID0gTlVMTDsKIApAQCAtMTM0LDEyICsxMTQsNyBA
QCBHTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVUZXh0dXJlKCkKIC8vIFJldHVybnMgYW4g
dW51c2VkIHJlbmRlcmJ1ZmZlciBuYW1lCiBHTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVS
ZW5kZXJidWZmZXIoKQogewotICAgIHVuc2lnbmVkIGludCBoYW5kbGUgPSAxOwotCi0gICAgd2hp
bGUgKG1SZW5kZXJidWZmZXJNYXAuZmluZChoYW5kbGUpICE9IG1SZW5kZXJidWZmZXJNYXAuZW5k
KCkpCi0gICAgewotICAgICAgICBoYW5kbGUrKzsKLSAgICB9CisgICAgR0x1aW50IGhhbmRsZSA9
IG1SZW5kZXJidWZmZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKIAogICAgIG1SZW5kZXJi
dWZmZXJNYXBbaGFuZGxlXSA9IE5VTEw7CiAKQEAgLTE1Miw2ICsxMjcsNyBAQCB2b2lkIFJlc291
cmNlTWFuYWdlcjo6ZGVsZXRlQnVmZmVyKEdMdWluCiAKICAgICBpZiAoYnVmZmVyT2JqZWN0ICE9
IG1CdWZmZXJNYXAuZW5kKCkpCiAgICAgeworICAgICAgICBtQnVmZmVySGFuZGxlQWxsb2NhdG9y
LnJlbGVhc2UoYnVmZmVyT2JqZWN0LT5maXJzdCk7CiAgICAgICAgIGlmIChidWZmZXJPYmplY3Qt
PnNlY29uZCkgYnVmZmVyT2JqZWN0LT5zZWNvbmQtPnJlbGVhc2UoKTsKICAgICAgICAgbUJ1ZmZl
ck1hcC5lcmFzZShidWZmZXJPYmplY3QpOwogICAgIH0KQEAgLTE2NSw2ICsxNDEsNyBAQCB2b2lk
IFJlc291cmNlTWFuYWdlcjo6ZGVsZXRlU2hhZGVyKEdMdWluCiAgICAgewogICAgICAgICBpZiAo
c2hhZGVyT2JqZWN0LT5zZWNvbmQtPmdldFJlZkNvdW50KCkgPT0gMCkKICAgICAgICAgeworICAg
ICAgICAgICAgbVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3IucmVsZWFzZShzaGFkZXJPYmpl
Y3QtPmZpcnN0KTsKICAgICAgICAgICAgIGRlbGV0ZSBzaGFkZXJPYmplY3QtPnNlY29uZDsKICAg
ICAgICAgICAgIG1TaGFkZXJNYXAuZXJhc2Uoc2hhZGVyT2JqZWN0KTsKICAgICAgICAgfQpAQCAt
MTgzLDYgKzE2MCw3IEBAIHZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVQcm9ncmFtKEdMdWkK
ICAgICB7CiAgICAgICAgIGlmIChwcm9ncmFtT2JqZWN0LT5zZWNvbmQtPmdldFJlZkNvdW50KCkg
PT0gMCkKICAgICAgICAgeworICAgICAgICAgICAgbVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0
b3IucmVsZWFzZShwcm9ncmFtT2JqZWN0LT5maXJzdCk7CiAgICAgICAgICAgICBkZWxldGUgcHJv
Z3JhbU9iamVjdC0+c2Vjb25kOwogICAgICAgICAgICAgbVByb2dyYW1NYXAuZXJhc2UocHJvZ3Jh
bU9iamVjdCk7CiAgICAgICAgIH0KQEAgLTE5OSw2ICsxNzcsNyBAQCB2b2lkIFJlc291cmNlTWFu
YWdlcjo6ZGVsZXRlVGV4dHVyZShHTHVpCiAKICAgICBpZiAodGV4dHVyZU9iamVjdCAhPSBtVGV4
dHVyZU1hcC5lbmQoKSkKICAgICB7CisgICAgICAgIG1UZXh0dXJlSGFuZGxlQWxsb2NhdG9yLnJl
bGVhc2UodGV4dHVyZU9iamVjdC0+Zmlyc3QpOwogICAgICAgICBpZiAodGV4dHVyZU9iamVjdC0+
c2Vjb25kKSB0ZXh0dXJlT2JqZWN0LT5zZWNvbmQtPnJlbGVhc2UoKTsKICAgICAgICAgbVRleHR1
cmVNYXAuZXJhc2UodGV4dHVyZU9iamVjdCk7CiAgICAgfQpAQCAtMjEwLDYgKzE4OSw3IEBAIHZv
aWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVSZW5kZXJidWZmZXIKIAogICAgIGlmIChyZW5kZXJi
dWZmZXJPYmplY3QgIT0gbVJlbmRlcmJ1ZmZlck1hcC5lbmQoKSkKICAgICB7CisgICAgICAgIG1S
ZW5kZXJidWZmZXJIYW5kbGVBbGxvY2F0b3IucmVsZWFzZShyZW5kZXJidWZmZXJPYmplY3QtPmZp
cnN0KTsKICAgICAgICAgaWYgKHJlbmRlcmJ1ZmZlck9iamVjdC0+c2Vjb25kKSByZW5kZXJidWZm
ZXJPYmplY3QtPnNlY29uZC0+cmVsZWFzZSgpOwogICAgICAgICBtUmVuZGVyYnVmZmVyTWFwLmVy
YXNlKHJlbmRlcmJ1ZmZlck9iamVjdCk7CiAgICAgfQpAQCAtMzAyLDE3ICsyODIsMTcgQEAgdm9p
ZCBSZXNvdXJjZU1hbmFnZXI6OmNoZWNrQnVmZmVyQWxsb2NhdAogICAgIH0KIH0KIAotdm9pZCBS
ZXNvdXJjZU1hbmFnZXI6OmNoZWNrVGV4dHVyZUFsbG9jYXRpb24oR0x1aW50IHRleHR1cmUsIFNh
bXBsZXJUeXBlIHR5cGUpCit2b2lkIFJlc291cmNlTWFuYWdlcjo6Y2hlY2tUZXh0dXJlQWxsb2Nh
dGlvbihHTHVpbnQgdGV4dHVyZSwgVGV4dHVyZVR5cGUgdHlwZSkKIHsKICAgICBpZiAoIWdldFRl
eHR1cmUodGV4dHVyZSkgJiYgdGV4dHVyZSAhPSAwKQogICAgIHsKICAgICAgICAgVGV4dHVyZSAq
dGV4dHVyZU9iamVjdDsKIAotICAgICAgICBpZiAodHlwZSA9PSBTQU1QTEVSXzJEKQorICAgICAg
ICBpZiAodHlwZSA9PSBURVhUVVJFXzJEKQogICAgICAgICB7CiAgICAgICAgICAgICB0ZXh0dXJl
T2JqZWN0ID0gbmV3IFRleHR1cmUyRCh0ZXh0dXJlKTsKICAgICAgICAgfQotICAgICAgICBlbHNl
IGlmICh0eXBlID09IFNBTVBMRVJfQ1VCRSkKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBURVhU
VVJFX0NVQkUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRleHR1cmVPYmplY3QgPSBuZXcgVGV4
dHVyZUN1YmVNYXAodGV4dHVyZSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaAkocmV2
aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Jl
c291cmNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw5ICsxMywxMCBAQAogI2RlZmlu
ZSBHTF9BUElDQUxMCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAKLSNpbmNsdWRlIDxtYXA+Cisj
aW5jbHVkZSA8aGFzaF9tYXA+CiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaCIKIAogbmFtZXNwYWNlIGdsCiB7CkBA
IC0yNSwxMiArMjYsMTkgQEAgY2xhc3MgUHJvZ3JhbTsKIGNsYXNzIFRleHR1cmU7CiBjbGFzcyBS
ZW5kZXJidWZmZXI7CiAKLWVudW0gU2FtcGxlclR5cGUKK2VudW0gVGV4dHVyZVR5cGUKIHsKLSAg
ICBTQU1QTEVSXzJELAotICAgIFNBTVBMRVJfQ1VCRSwKKyAgICBURVhUVVJFXzJELAorICAgIFRF
WFRVUkVfQ1VCRSwKKworICAgIFRFWFRVUkVfVFlQRV9DT1VOVCwKKyAgICBURVhUVVJFX1VOS05P
V04KK307CiAKLSAgICBTQU1QTEVSX1RZUEVfQ09VTlQKK2VudW0gU2FtcGxlclR5cGUKK3sKKyAg
ICBTQU1QTEVSX1BJWEVMLAorICAgIFNBTVBMRVJfVkVSVEVYCiB9OwogCiBjbGFzcyBSZXNvdXJj
ZU1hbmFnZXIKQEAgLTYzLDcgKzcxLDcgQEAgY2xhc3MgUmVzb3VyY2VNYW5hZ2VyCiAgICAgdm9p
ZCBzZXRSZW5kZXJidWZmZXIoR0x1aW50IGhhbmRsZSwgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZm
ZXIpOwogCiAgICAgdm9pZCBjaGVja0J1ZmZlckFsbG9jYXRpb24odW5zaWduZWQgaW50IGJ1ZmZl
cik7Ci0gICAgdm9pZCBjaGVja1RleHR1cmVBbGxvY2F0aW9uKEdMdWludCB0ZXh0dXJlLCBTYW1w
bGVyVHlwZSB0eXBlKTsKKyAgICB2b2lkIGNoZWNrVGV4dHVyZUFsbG9jYXRpb24oR0x1aW50IHRl
eHR1cmUsIFRleHR1cmVUeXBlIHR5cGUpOwogICAgIHZvaWQgY2hlY2tSZW5kZXJidWZmZXJBbGxv
Y2F0aW9uKEdMdWludCByZW5kZXJidWZmZXIpOwogCiAgIHByaXZhdGU6CkBAIC03MSwyMCArNzks
MjQgQEAgY2xhc3MgUmVzb3VyY2VNYW5hZ2VyCiAKICAgICBzdGQ6OnNpemVfdCBtUmVmQ291bnQ7
CiAKLSAgICB0eXBlZGVmIHN0ZDo6bWFwPEdMdWludCwgQnVmZmVyKj4gQnVmZmVyTWFwOworICAg
IHR5cGVkZWYgc3RkZXh0OjpoYXNoX21hcDxHTHVpbnQsIEJ1ZmZlcio+IEJ1ZmZlck1hcDsKICAg
ICBCdWZmZXJNYXAgbUJ1ZmZlck1hcDsKKyAgICBIYW5kbGVBbGxvY2F0b3IgbUJ1ZmZlckhhbmRs
ZUFsbG9jYXRvcjsKIAotICAgIHR5cGVkZWYgc3RkOjptYXA8R0x1aW50LCBTaGFkZXIqPiBTaGFk
ZXJNYXA7CisgICAgdHlwZWRlZiBzdGRleHQ6Omhhc2hfbWFwPEdMdWludCwgU2hhZGVyKj4gU2hh
ZGVyTWFwOwogICAgIFNoYWRlck1hcCBtU2hhZGVyTWFwOwogCi0gICAgdHlwZWRlZiBzdGQ6Om1h
cDxHTHVpbnQsIFByb2dyYW0qPiBQcm9ncmFtTWFwOworICAgIHR5cGVkZWYgc3RkZXh0OjpoYXNo
X21hcDxHTHVpbnQsIFByb2dyYW0qPiBQcm9ncmFtTWFwOwogICAgIFByb2dyYW1NYXAgbVByb2dy
YW1NYXA7CisgICAgSGFuZGxlQWxsb2NhdG9yIG1Qcm9ncmFtU2hhZGVySGFuZGxlQWxsb2NhdG9y
OwogCi0gICAgdHlwZWRlZiBzdGQ6Om1hcDxHTHVpbnQsIFRleHR1cmUqPiBUZXh0dXJlTWFwOwor
ICAgIHR5cGVkZWYgc3RkZXh0OjpoYXNoX21hcDxHTHVpbnQsIFRleHR1cmUqPiBUZXh0dXJlTWFw
OwogICAgIFRleHR1cmVNYXAgbVRleHR1cmVNYXA7CisgICAgSGFuZGxlQWxsb2NhdG9yIG1UZXh0
dXJlSGFuZGxlQWxsb2NhdG9yOwogCi0gICAgdHlwZWRlZiBzdGQ6Om1hcDxHTHVpbnQsIFJlbmRl
cmJ1ZmZlcio+IFJlbmRlcmJ1ZmZlck1hcDsKKyAgICB0eXBlZGVmIHN0ZGV4dDo6aGFzaF9tYXA8
R0x1aW50LCBSZW5kZXJidWZmZXIqPiBSZW5kZXJidWZmZXJNYXA7CiAgICAgUmVuZGVyYnVmZmVy
TWFwIG1SZW5kZXJidWZmZXJNYXA7CisgICAgSGFuZGxlQWxsb2NhdG9yIG1SZW5kZXJidWZmZXJI
YW5kbGVBbGxvY2F0b3I7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL1NoYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsMjAgKzM2LDIwIEBAIFNoYWRlcjo6U2hhZGVyKFJlc291cmNlTWFuYWdlciAqbWFu
YWdlciwKICAgICAgICAgewogICAgICAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNl
czsKICAgICAgICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0gICAg
ICAgICAgICBDb250ZXh0ICpjb250ZXh0ID0gZ2V0Q29udGV4dCgpOyAgICAgICAgICAgIAorICAg
ICAgICAgICAgQ29udGV4dCAqY29udGV4dCA9IGdldENvbnRleHQoKTsKIAogICAgICAgICAgICAg
cmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMgPSBNQVhfVkVSVEVYX0FUVFJJQlM7CiAgICAgICAg
ICAgICByZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPSBNQVhfVkVSVEVYX1VOSUZP
Uk1fVkVDVE9SUzsKICAgICAgICAgICAgIHJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyA9IGNv
bnRleHQtPmdldE1heGltdW1WYXJ5aW5nVmVjdG9ycygpOwotICAgICAgICAgICAgcmVzb3VyY2Vz
Lk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0gTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VO
SVRTOwotICAgICAgICAgICAgcmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMg
PSBNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzsKKyAgICAgICAgICAgIHJlc291cmNl
cy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA9IGNvbnRleHQtPmdldE1heGltdW1WZXJ0ZXhU
ZXh0dXJlSW1hZ2VVbml0cygpOworICAgICAgICAgICAgcmVzb3VyY2VzLk1heENvbWJpbmVkVGV4
dHVyZUltYWdlVW5pdHMgPSBjb250ZXh0LT5nZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VV
bml0cygpOwogICAgICAgICAgICAgcmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzID0gTUFY
X1RFWFRVUkVfSU1BR0VfVU5JVFM7CiAgICAgICAgICAgICByZXNvdXJjZXMuTWF4RnJhZ21lbnRV
bmlmb3JtVmVjdG9ycyA9IGNvbnRleHQtPmdldE1heGltdW1GcmFnbWVudFVuaWZvcm1WZWN0b3Jz
KCk7CiAgICAgICAgICAgICByZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSBNQVhfRFJBV19CVUZG
RVJTOwogICAgICAgICAgICAgcmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDE7
CiAKLSAgICAgICAgICAgIG1GcmFnbWVudENvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihT
SF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMyX1NQRUMsICZyZXNvdXJjZXMpOwotICAgICAgICAg
ICAgbVZlcnRleENvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihTSF9WRVJURVhfU0hBREVS
LCBTSF9HTEVTMl9TUEVDLCAmcmVzb3VyY2VzKTsKKyAgICAgICAgICAgIG1GcmFnbWVudENvbXBp
bGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihTSF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMyX1NQ
RUMsIFNIX0hMU0xfT1VUUFVULCAmcmVzb3VyY2VzKTsKKyAgICAgICAgICAgIG1WZXJ0ZXhDb21w
aWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoU0hfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzJfU1BF
QywgU0hfSExTTF9PVVRQVVQsICZyZXNvdXJjZXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0y
NzgsMTIgKzI3OCwzMyBAQCB2b2lkIFNoYWRlcjo6Y29tcGlsZVRvSExTTCh2b2lkICpjb21waWxl
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBUUkFDRSgiXG4lcyIsIG1Tb3VyY2UpOwot
CiAgICAgZGVsZXRlW10gbUluZm9Mb2c7CiAgICAgbUluZm9Mb2cgPSBOVUxMOwogCi0gICAgaW50
IHJlc3VsdCA9IFNoQ29tcGlsZShjb21waWxlciwgJm1Tb3VyY2UsIDEsIFNIX09CSkVDVF9DT0RF
KTsKKyAgICBpbnQgY29tcGlsZU9wdGlvbnMgPSBTSF9PQkpFQ1RfQ09ERTsKKyAgICBzdGQ6OnN0
cmluZyBzb3VyY2VQYXRoOworICAgIGlmIChwZXJmQWN0aXZlKCkpCisgICAgeworICAgICAgICBz
b3VyY2VQYXRoID0gZ2V0VGVtcFBhdGgoKTsKKyAgICAgICAgd3JpdGVGaWxlKHNvdXJjZVBhdGgu
Y19zdHIoKSwgbVNvdXJjZSwgc3RybGVuKG1Tb3VyY2UpKTsKKyAgICAgICAgY29tcGlsZU9wdGlv
bnMgfD0gU0hfTElORV9ESVJFQ1RJVkVTOworICAgIH0KKworICAgIGludCByZXN1bHQ7CisgICAg
aWYgKHNvdXJjZVBhdGguZW1wdHkoKSkKKyAgICB7CisgICAgICAgIHJlc3VsdCA9IFNoQ29tcGls
ZShjb21waWxlciwgJm1Tb3VyY2UsIDEsIGNvbXBpbGVPcHRpb25zKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogc291cmNlU3RyaW5nc1syXSA9CisgICAgICAg
IHsKKyAgICAgICAgICAgIHNvdXJjZVBhdGguY19zdHIoKSwKKyAgICAgICAgICAgIG1Tb3VyY2UK
KyAgICAgICAgfTsKKworICAgICAgICByZXN1bHQgPSBTaENvbXBpbGUoY29tcGlsZXIsIHNvdXJj
ZVN0cmluZ3MsIDIsIGNvbXBpbGVPcHRpb25zIHwgU0hfU09VUkNFX1BBVEgpOworICAgIH0KIAog
ICAgIGlmIChyZXN1bHQpCiAgICAgewpAQCAtMjkxLDggKzMxMiw2IEBAIHZvaWQgU2hhZGVyOjpj
b21waWxlVG9ITFNMKHZvaWQgKmNvbXBpbGUKICAgICAgICAgU2hHZXRJbmZvKGNvbXBpbGVyLCBT
SF9PQkpFQ1RfQ09ERV9MRU5HVEgsICZvYmpDb2RlTGVuKTsKICAgICAgICAgbUhsc2wgPSBuZXcg
Y2hhcltvYmpDb2RlTGVuXTsKICAgICAgICAgU2hHZXRPYmplY3RDb2RlKGNvbXBpbGVyLCBtSGxz
bCk7Ci0KLSAgICAgICAgVFJBQ0UoIlxuJXMiLCBtSGxzbCk7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1NoYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hh
ZGVyLmgJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9TaGFkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDggKzEyNyw4IEBAIGNsYXNz
IFZlcnRleFNoYWRlciA6IHB1YmxpYyBTaGFkZXIKIAogICAgIH5WZXJ0ZXhTaGFkZXIoKTsKIAot
ICAgIEdMZW51bSBnZXRUeXBlKCk7Ci0gICAgdm9pZCBjb21waWxlKCk7CisgICAgdmlydHVhbCBH
TGVudW0gZ2V0VHlwZSgpOworICAgIHZpcnR1YWwgdm9pZCBjb21waWxlKCk7CiAgICAgaW50IGdl
dFNlbWFudGljSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJmF0dHJpYnV0ZU5hbWUpOwogCiAgIHBy
aXZhdGU6CkBAIC0xNDYsOCArMTQ2LDggQEAgY2xhc3MgRnJhZ21lbnRTaGFkZXIgOiBwdWJsaWMg
U2hhZGVyCiAKICAgICB+RnJhZ21lbnRTaGFkZXIoKTsKIAotICAgIEdMZW51bSBnZXRUeXBlKCk7
Ci0gICAgdm9pZCBjb21waWxlKCk7CisgICAgdmlydHVhbCBHTGVudW0gZ2V0VHlwZSgpOworICAg
IHZpcnR1YWwgdm9pZCBjb21waWxlKCk7CiAKICAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oRnJhZ21lbnRTaGFkZXIpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1RleHR1cmUuY3BwCShyZXZpc2lvbiA4OTI4NikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzLDQyICsxMywxMDIgQEAKICNpbmNsdWRlIDxkM2R4OXRleC5oPgogCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGludHJpbi5oPgogCiAjaW5jbHVkZSAiY29t
bW9uL2RlYnVnLmgiCiAKKyNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgorCiAjaW5jbHVkZSAi
bGliR0xFU3YyL21haW4uaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKICNpbmNs
dWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL0JsaXQuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvRnJhbWVidWZmZXIuaCIKIAogbmFtZXNwYWNlIGdsCiB7Cit1
bnNpZ25lZCBpbnQgVGV4dHVyZTo6bUN1cnJlbnRTZXJpYWwgPSAxOwogCiBUZXh0dXJlOjpJbWFn
ZTo6SW1hZ2UoKQotICA6IHdpZHRoKDApLCBoZWlnaHQoMCksIGRpcnR5KGZhbHNlKSwgc3VyZmFj
ZShOVUxMKSwgZm9ybWF0KEdMX05PTkUpCisgIDogd2lkdGgoMCksIGhlaWdodCgwKSwgZGlydHko
ZmFsc2UpLCBzdXJmYWNlKE5VTEwpLCBmb3JtYXQoR0xfTk9ORSksIHR5cGUoR0xfVU5TSUdORURf
QllURSkKIHsKIH0KIAogVGV4dHVyZTo6SW1hZ2U6On5JbWFnZSgpCiB7Ci0gIGlmIChzdXJmYWNl
KSBzdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgaWYgKHN1cmZhY2UpCisgICAgeworICAgICAgICBz
dXJmYWNlLT5SZWxlYXNlKCk7CisgICAgfQorfQorCitib29sIFRleHR1cmU6OkltYWdlOjppc1Jl
bmRlcmFibGUoKSBjb25zdAoreyAgICAKKyAgICBzd2l0Y2goZ2V0RDNERm9ybWF0KCkpCisgICAg
eworICAgICAgY2FzZSBEM0RGTVRfTDg6CisgICAgICBjYXNlIEQzREZNVF9BOEw4OgorICAgICAg
Y2FzZSBEM0RGTVRfRFhUMToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgY2FzZSBEM0RG
TVRfQThSOEc4Qjg6CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgIGNhc2UgRDNE
Rk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitEM0RGT1JNQVQgVGV4dHVyZTo6SW1h
Z2U6OmdldEQzREZvcm1hdCgpIGNvbnN0Cit7CisgICAgaWYgKGZvcm1hdCA9PSBHTF9DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUIHx8CisgICAgICAgIGZvcm1hdCA9PSBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQxX0VYVCkKKyAgICB7CisgICAgICAgIHJldHVybiBEM0RGTVRfRFhUMTsK
KyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9GTE9BVCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBEM0RGTVRfQTMyQjMyRzMyUjMyRjsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBH
TF9IQUxGX0ZMT0FUX09FUykKKyAgICB7CisgICAgICAgIHJldHVybiBEM0RGTVRfQTE2QjE2RzE2
UjE2RjsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQorICAg
IHsKKyAgICAgICAgaWYgKGZvcm1hdCA9PSBHTF9MVU1JTkFOQ0UgJiYgZ2V0Q29udGV4dCgpLT5z
dXBwb3J0c0x1bWluYW5jZVRleHR1cmVzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBEM0RGTVRfTDg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09IEdMX0xV
TUlOQU5DRV9BTFBIQSAmJiBnZXRDb250ZXh0KCktPnN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0
dXJlcygpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRDNERk1UX0E4TDg7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09IEdMX1JHQikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEQzREZNVF9YOFI4RzhCODsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBEM0RGTVRfQThSOEc4Qjg7CisgICAgfQorCisgICAgcmV0dXJuIEQzREZNVF9BOFI4RzhC
ODsKIH0KIAotVGV4dHVyZTo6VGV4dHVyZShHTHVpbnQgaWQpIDogUmVmQ291bnRPYmplY3QoaWQp
CitUZXh0dXJlOjpUZXh0dXJlKEdMdWludCBpZCkgOiBSZWZDb3VudE9iamVjdChpZCksIG1TZXJp
YWwoaXNzdWVTZXJpYWwoKSkKIHsKICAgICBtTWluRmlsdGVyID0gR0xfTkVBUkVTVF9NSVBNQVBf
TElORUFSOwogICAgIG1NYWdGaWx0ZXIgPSBHTF9MSU5FQVI7CiAgICAgbVdyYXBTID0gR0xfUkVQ
RUFUOwogICAgIG1XcmFwVCA9IEdMX1JFUEVBVDsKLQotICAgIG1XaWR0aCA9IDA7Ci0gICAgbUhl
aWdodCA9IDA7Ci0KLSAgICBtRGlydHlNZXRhRGF0YSA9IHRydWU7Ci0gICAgbURpcnR5ID0gdHJ1
ZTsKKyAgICBtRGlydHlQYXJhbWV0ZXIgPSB0cnVlOworICAgIAorICAgIG1EaXJ0eUltYWdlID0g
dHJ1ZTsKKyAgICAKICAgICBtSXNSZW5kZXJhYmxlID0gZmFsc2U7Ci0gICAgbVR5cGUgPSBHTF9V
TlNJR05FRF9CWVRFOwotICAgIG1CYXNlVGV4dHVyZSA9IE5VTEw7CiB9CiAKIFRleHR1cmU6On5U
ZXh0dXJlKCkKQEAgLTc2LDcgKzEzNiw3IEBAIGJvb2wgVGV4dHVyZTo6c2V0TWluRmlsdGVyKEdM
ZW51bSBmaWx0ZXIKICAgICAgICAgICAgIGlmIChtTWluRmlsdGVyICE9IGZpbHRlcikKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBtTWluRmlsdGVyID0gZmlsdGVyOwotICAgICAgICAg
ICAgICAgIG1EaXJ0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgbURpcnR5UGFyYW1ldGVyID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CkBAIC05Niw3ICsxNTYsNyBAQCBib29sIFRleHR1cmU6OnNldE1hZ0ZpbHRlcihHTGVudW0gZmls
dGVyCiAgICAgICAgICAgICBpZiAobU1hZ0ZpbHRlciAhPSBmaWx0ZXIpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgbU1hZ0ZpbHRlciA9IGZpbHRlcjsKLSAgICAgICAgICAgICAgICBt
RGlydHkgPSB0cnVlOworICAgICAgICAgICAgICAgIG1EaXJ0eVBhcmFtZXRlciA9IHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3
LDcgKzE3Nyw3IEBAIGJvb2wgVGV4dHVyZTo6c2V0V3JhcFMoR0xlbnVtIHdyYXApCiAgICAgICAg
ICAgICBpZiAobVdyYXBTICE9IHdyYXApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
bVdyYXBTID0gd3JhcDsKLSAgICAgICAgICAgICAgICBtRGlydHkgPSB0cnVlOworICAgICAgICAg
ICAgICAgIG1EaXJ0eVBhcmFtZXRlciA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTM4LDcgKzE5OCw3IEBAIGJvb2wgVGV4dHVy
ZTo6c2V0V3JhcFQoR0xlbnVtIHdyYXApCiAgICAgICAgICAgICBpZiAobVdyYXBUICE9IHdyYXAp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbVdyYXBUID0gd3JhcDsKLSAgICAgICAg
ICAgICAgICBtRGlydHkgPSB0cnVlOworICAgICAgICAgICAgICAgIG1EaXJ0eVBhcmFtZXRlciA9
IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMTY3LDg2ICsyMjcsMTMgQEAgR0xlbnVtIFRleHR1cmU6OmdldFdyYXBUKCkgY29uc3QK
ICAgICByZXR1cm4gbVdyYXBUOwogfQogCi1HTHVpbnQgVGV4dHVyZTo6Z2V0V2lkdGgoKSBjb25z
dAotewotICAgIHJldHVybiBtV2lkdGg7Ci19Ci0KLUdMdWludCBUZXh0dXJlOjpnZXRIZWlnaHQo
KSBjb25zdAotewotICAgIHJldHVybiBtSGVpZ2h0OwotfQotCi1ib29sIFRleHR1cmU6OmlzRmxv
YXRpbmdQb2ludCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtVHlwZSA9PSBHTF9GTE9BVCB8fCBt
VHlwZSA9PSBHTF9IQUxGX0ZMT0FUX09FUyk7Ci19Ci0KLWJvb2wgVGV4dHVyZTo6aXNSZW5kZXJh
YmxlRm9ybWF0KCkgY29uc3QKLXsKLSAgICBEM0RGT1JNQVQgZm9ybWF0ID0gZ2V0RDNERm9ybWF0
KCk7Ci0gICAgCi0gICAgc3dpdGNoKGZvcm1hdCkKLSAgICB7Ci0gICAgICBjYXNlIEQzREZNVF9M
ODoKLSAgICAgIGNhc2UgRDNERk1UX0E4TDg6Ci0gICAgICBjYXNlIEQzREZNVF9EWFQxOgotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKLSAgICAgIGNh
c2UgRDNERk1UX1g4UjhHOEI4OgotICAgICAgY2FzZSBEM0RGTVRfQTE2QjE2RzE2UjE2RjoKLSAg
ICAgIGNhc2UgRDNERk1UX0EzMkIzMkczMlIzMkY6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLS8vIFNlbGVjdHMgYW4gaW50ZXJuYWwgRGlyZWN0M0QgOSBmb3JtYXQgZm9y
IHN0b3JpbmcgYW4gSW1hZ2UKLUQzREZPUk1BVCBUZXh0dXJlOjpzZWxlY3RGb3JtYXQoR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUpCi17Ci0gICAgaWYgKGZvcm1hdCA9PSBHTF9DT01QUkVTU0VE
X1JHQl9TM1RDX0RYVDFfRVhUIHx8Ci0gICAgICAgIGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQxX0VYVCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBEM0RGTVRfRFhUMTsKLSAg
ICB9Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBHTF9GTE9BVCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBEM0RGTVRfQTMyQjMyRzMyUjMyRjsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBHTF9I
QUxGX0ZMT0FUX09FUykKLSAgICB7Ci0gICAgICAgIHJldHVybiBEM0RGTVRfQTE2QjE2RzE2UjE2
RjsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQotICAgIHsK
LSAgICAgICAgaWYgKGZvcm1hdCA9PSBHTF9MVU1JTkFOQ0UgJiYgZ2V0Q29udGV4dCgpLT5zdXBw
b3J0c0x1bWluYW5jZVRleHR1cmVzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBE
M0RGTVRfTDg7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09IEdMX0xVTUlO
QU5DRV9BTFBIQSAmJiBnZXRDb250ZXh0KCktPnN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJl
cygpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRDNERk1UX0E4TDg7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09IEdMX1JHQikKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEQzREZNVF9YOFI4RzhCODsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biBEM0RGTVRfQThSOEc4Qjg7Ci0gICAgfQotCi0gICAgcmV0dXJuIEQzREZNVF9BOFI4RzhCODsK
LX0KLQogLy8gU3RvcmUgdGhlIHBpeGVsIHJlY3RhbmdsZSBkZXNpZ25hdGVkIGJ5IHhvZmZzZXQs
eW9mZnNldCx3aWR0aCxoZWlnaHQgd2l0aCBwaXhlbHMgc3RvcmVkIGFzIGZvcm1hdC90eXBlIGF0
IGlucHV0CiAvLyBpbnRvIHRoZSB0YXJnZXQgcGl4ZWwgcmVjdGFuZ2xlIGF0IG91dHB1dCB3aXRo
IG91dHB1dFBpdGNoIGJ5dGVzIGluIGJldHdlZW4gZWFjaCBsaW5lLgogdm9pZCBUZXh0dXJlOjps
b2FkSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKmlucHV0
LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCwgRDNEU1VSRkFDRV9ERVNDICpkZXNj
cmlwdGlvbikgY29uc3QKIHsKLSAgICBHTHNpemVpIGlucHV0UGl0Y2ggPSBDb21wdXRlUGl0Y2go
d2lkdGgsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50KTsKKyAgICBHTHNpemVpIGlucHV0
UGl0Y2ggPSAtQ29tcHV0ZVBpdGNoKHdpZHRoLCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVu
dCk7CisgICAgaW5wdXQgPSAoKGNoYXIqKWlucHV0KSAtIGlucHV0UGl0Y2ggKiAoaGVpZ2h0IC0g
MSk7CiAKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewpAQCAtMjY2LDcgKzI1MywxNCBAQCB2b2lk
IFRleHR1cmU6OmxvYWRJbWFnZURhdGEoR0xpbnQgeG9mZnNlCiAgICAgICAgICAgICBsb2FkUkdC
VUJ5dGVJbWFnZURhdGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRj
aCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgY2FzZSBHTF9SR0JBOgotICAgICAgICAgICAgbG9hZFJHQkFVQnl0ZUltYWdlRGF0YSh4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgb3V0cHV0
UGl0Y2gsIG91dHB1dCk7CisgICAgICAgICAgICBpZiAoc3VwcG9ydHNTU0UyKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgbG9hZFJHQkFVQnl0ZUltYWdlRGF0YVNTRTIoeG9mZnNl
dCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91dHB1dFBpdGNo
LCBvdXRwdXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGxvYWRSR0JBVUJ5dGVJbWFnZURhdGEoeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG91dHB1dFBpdGNoLCBvdXRwdXQp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9C
R1JBX0VYVDoKICAgICAgICAgICAgIGxvYWRCR1JBSW1hZ2VEYXRhKHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBvdXRwdXRQaXRjaCwgb3V0cHV0KTsK
QEAgLTM1MCw3ICszNDQsNyBAQCB2b2lkIFRleHR1cmU6OmxvYWRJbWFnZURhdGEoR0xpbnQgeG9m
ZnNlCiB9CiAKIHZvaWQgVGV4dHVyZTo6bG9hZEFscGhhSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlu
cHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwg
c2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0CiB7CiAgICAgY29uc3QgdW5z
aWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKICAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVM
TDsKQEAgLTM3MCw3ICszNjQsNyBAQCB2b2lkIFRleHR1cmU6OmxvYWRBbHBoYUltYWdlRGF0YShH
TGludCB4CiB9CiAKIHZvaWQgVGV4dHVyZTo6bG9hZEFscGhhRmxvYXRJbWFnZURhdGEoR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0
CiB7CiAgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CiAgICAgZmxvYXQgKmRlc3QgPSBO
VUxMOwpAQCAtMzkwLDcgKzM4NCw3IEBAIHZvaWQgVGV4dHVyZTo6bG9hZEFscGhhRmxvYXRJbWFn
ZURhdGEoR0wKIH0KIAogdm9pZCBUZXh0dXJlOjpsb2FkQWxwaGFIYWxmRmxvYXRJbWFnZURhdGEo
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5w
dXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0
cHV0KSBjb25zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCkgY29uc3QKIHsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAqc291cmNlID0gTlVM
TDsKICAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdCA9IE5VTEw7CkBAIC00MTAsNyArNDA0LDcgQEAg
dm9pZCBUZXh0dXJlOjpsb2FkQWxwaGFIYWxmRmxvYXRJbWFnZURhdAogfQogCiB2b2lkIFRleHR1
cmU6OmxvYWRMdW1pbmFuY2VJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qg
b3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCwgYm9vbCBuYXRpdmUpIGNvbnN0CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlu
cHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCwgYm9vbCBuYXRpdmUpIGNvbnN0
CiB7CiAgICAgY29uc3QgaW50IGRlc3RCeXRlc1BlclBpeGVsID0gbmF0aXZlPyAxOiA0OwogICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7CkBAIC00MzksNyArNDMzLDcgQEAg
dm9pZCBUZXh0dXJlOjpsb2FkTHVtaW5hbmNlSW1hZ2VEYXRhKEdMaQogfQogCiB2b2lkIFRleHR1
cmU6OmxvYWRMdW1pbmFuY2VGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1
dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAq
aW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNv
bnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxMOwogICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsKQEAgLTQ1
OSw3ICs0NTMsNyBAQCB2b2lkIFRleHR1cmU6OmxvYWRMdW1pbmFuY2VGbG9hdEltYWdlRGF0CiB9
CiAKIHZvaWQgVGV4dHVyZTo6bG9hZEx1bWluYW5jZUhhbGZGbG9hdEltYWdlRGF0YShHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQpIGNvbnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQ
aXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpz
b3VyY2UgPSBOVUxMOwogICAgIHVuc2lnbmVkIHNob3J0ICpkZXN0ID0gTlVMTDsKQEAgLTQ3OSw3
ICs0NzMsNyBAQCB2b2lkIFRleHR1cmU6OmxvYWRMdW1pbmFuY2VIYWxmRmxvYXRJbWFnCiB9CiAK
IHZvaWQgVGV4dHVyZTo6bG9hZEx1bWluYW5jZUFscGhhSW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0UGl0Y2gsIGNvbnN0
IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCwgYm9vbCBuYXRp
dmUpIGNvbnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAq
b3V0cHV0LCBib29sIG5hdGl2ZSkgY29uc3QKIHsKICAgICBjb25zdCBpbnQgZGVzdEJ5dGVzUGVy
UGl4ZWwgPSBuYXRpdmU/IDI6IDQ7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0g
TlVMTDsKQEAgLTUwOCw3ICs1MDIsNyBAQCB2b2lkIFRleHR1cmU6OmxvYWRMdW1pbmFuY2VBbHBo
YUltYWdlRGF0CiB9CiAKIHZvaWQgVGV4dHVyZTo6bG9hZEx1bWluYW5jZUFscGhhRmxvYXRJbWFn
ZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNo
LCB2b2lkICpvdXRwdXQpIGNvbnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91
dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0CiB7CiAgICAgY29uc3QgZmxvYXQgKnNvdXJj
ZSA9IE5VTEw7CiAgICAgZmxvYXQgKmRlc3QgPSBOVUxMOwpAQCAtNTI4LDcgKzUyMiw3IEBAIHZv
aWQgVGV4dHVyZTo6bG9hZEx1bWluYW5jZUFscGhhRmxvYXRJbWEKIH0KIAogdm9pZCBUZXh0dXJl
Ojpsb2FkTHVtaW5hbmNlQWxwaGFIYWxmRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRQaXRjaCwg
Y29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25z
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCkgY29uc3QKIHsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAqc291cmNlID0gTlVM
TDsKICAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdCA9IE5VTEw7CkBAIC01NDgsNyArNTQyLDcgQEAg
dm9pZCBUZXh0dXJlOjpsb2FkTHVtaW5hbmNlQWxwaGFIYWxmRmxvYQogfQogCiB2b2lkIFRleHR1
cmU6OmxvYWRSR0JVQnl0ZUltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91
dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRw
dXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KnNvdXJjZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CkBAIC01Njgs
NyArNTYyLDcgQEAgdm9pZCBUZXh0dXJlOjpsb2FkUkdCVUJ5dGVJbWFnZURhdGEoR0xpbgogfQog
CiB2b2lkIFRleHR1cmU6OmxvYWRSR0I1NjVJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBz
aXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVf
dCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0ICpzb3VyY2UgPSBOVUxMOwogICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOwpA
QCAtNTg5LDcgKzU4Myw3IEBAIHZvaWQgVGV4dHVyZTo6bG9hZFJHQjU2NUltYWdlRGF0YShHTGlu
dCAKIH0KIAogdm9pZCBUZXh0dXJlOjpsb2FkUkdCRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRQaXRjaCwgY29uc3Qgdm9p
ZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQg
KmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKIHsKICAgICBj
b25zdCBmbG9hdCAqc291cmNlID0gTlVMTDsKICAgICBmbG9hdCAqZGVzdCA9IE5VTEw7CkBAIC02
MDksNyArNjAzLDcgQEAgdm9pZCBUZXh0dXJlOjpsb2FkUkdCRmxvYXRJbWFnZURhdGEoR0xpbgog
fQogCiB2b2lkIFRleHR1cmU6OmxvYWRSR0JIYWxmRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0UGl0Y2gsIGNvbnN0
IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29u
c3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAog
ewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOwogICAgIHVuc2lnbmVk
IHNob3J0ICpkZXN0ID0gTlVMTDsKQEAgLTYyOCwyOCArNjIyLDY4IEBAIHZvaWQgVGV4dHVyZTo6
bG9hZFJHQkhhbGZGbG9hdEltYWdlRGF0YSgKICAgICB9CiB9CiAKLXZvaWQgVGV4dHVyZTo6bG9h
ZFJHQkFVQnl0ZUltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQ
aXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAordm9pZCBUZXh0dXJlOjpsb2FkUkdCQVVCeXRlSW1h
Z2VEYXRhU1NFMihHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZv
aWQgKm91dHB1dCkgY29uc3QKIHsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3VyY2UgPSBO
VUxMOwotICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOworICAgIGNvbnN0IHVuc2lnbmVk
IGludCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSBOVUxMOworICAg
IF9fbTEyOGkgYnJNYXNrID0gX21tX3NldDFfZXBpMzIoMHgwMGZmMDBmZik7CiAKICAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQogICAgIHsKLSAgICAgICAgc291cmNlID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoOwot
ICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyAoeSAr
IHlvZmZzZXQpICogb3V0cHV0UGl0Y2ggKyB4b2Zmc2V0ICogNDsKKyAgICAgICAgc291cmNlID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4ob3V0cHV0KSArICh5ICsgeW9mZnNldCkgKiBvdXRwdXRQaXRjaCArIHhvZmZzZXQgKiA0KTsK
KyAgICAgICAgaW50IHggPSAwOworCisgICAgICAgIC8vIE1ha2Ugb3V0cHV0IHdyaXRlcyBhbGln
bmVkCisgICAgICAgIGZvciAoeCA9IDA7ICgocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oJmRl
c3RbeF0pICYgMTUpICE9IDApICYmIHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3RbeF0g
PSAoX3JvdGwocmdiYSwgMTYpICYgMHgwMGZmMDBmZikgfCAocmdiYSAmIDB4ZmYwMGZmMDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZm9yICg7IHggKyAzIDwgd2lkdGg7IHggKz0gNCkKKyAgICAg
ICAgeworICAgICAgICAgICAgX19tMTI4aSBzb3VyY2VEYXRhID0gX21tX2xvYWR1X3NpMTI4KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgX19tMTI4aSo+KCZzb3VyY2VbeF0pKTsKKyAgICAgICAgICAg
IC8vIE1hc2sgb3V0IGcgYW5kIGEsIHdoaWNoIGRvbid0IGNoYW5nZQorICAgICAgICAgICAgX19t
MTI4aSBnYUNvbXBvbmVudHMgPSBfbW1fYW5kbm90X3NpMTI4KGJyTWFzaywgc291cmNlRGF0YSk7
CisgICAgICAgICAgICAvLyBNYXNrIG91dCBiIGFuZCByCisgICAgICAgICAgICBfX20xMjhpIGJy
Q29tcG9uZW50cyA9IF9tbV9hbmRfc2kxMjgoc291cmNlRGF0YSwgYnJNYXNrKTsKKyAgICAgICAg
ICAgIC8vIFN3YXAgYiBhbmQgcgorICAgICAgICAgICAgX19tMTI4aSBiclN3YXBwZWQgPSBfbW1f
c2h1ZmZsZWhpX2VwaTE2KF9tbV9zaHVmZmxlbG9fZXBpMTYoYnJDb21wb25lbnRzLCBfTU1fU0hV
RkZMRSgyLCAzLCAwLCAxKSksIF9NTV9TSFVGRkxFKDIsIDMsIDAsIDEpKTsKKyAgICAgICAgICAg
IF9fbTEyOGkgcmVzdWx0ID0gX21tX29yX3NpMTI4KGdhQ29tcG9uZW50cywgYnJTd2FwcGVkKTsK
KyAgICAgICAgICAgIF9tbV9zdG9yZV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPigm
ZGVzdFt4XSksIHJlc3VsdCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQZXJmb3JtIGxlZnRv
dmVyIHdyaXRlcworICAgICAgICBmb3IgKDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGludCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVz
dFt4XSA9IChfcm90bChyZ2JhLCAxNikgJiAweDAwZmYwMGZmKSB8IChyZ2JhICYgMHhmZjAwZmYw
MCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZTo6bG9hZFJHQkFVQnl0ZUlt
YWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5w
dXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0
cHV0KSBjb25zdAoreworICAgIGNvbnN0IHVuc2lnbmVkIGludCAqc291cmNlID0gTlVMTDsKKyAg
ICB1bnNpZ25lZCBpbnQgKmRlc3QgPSBOVUxMOworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVp
Z2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHVuc2lnbmVkIGludCo+KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkg
KyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSByZWludGVycHJldF9jYXN0PHVuc2ln
bmVkIGludCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgKHkgKyB5b2Zm
c2V0KSAqIG91dHB1dFBpdGNoICsgeG9mZnNldCAqIDQpOworCiAgICAgICAgIGZvciAoaW50IHgg
PSAwOyB4IDwgd2lkdGg7IHgrKykKICAgICAgICAgewotICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDBdID0gc291cmNlW3ggKiA0ICsgMl07Ci0gICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBz
b3VyY2VbeCAqIDQgKyAxXTsKLSAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4
ICogNCArIDBdOwotICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc291cmNlW3ggKiA0ICsg
M107CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAgICAg
ICAgIGRlc3RbeF0gPSAoX3JvdGwocmdiYSwgMTYpICYgMHgwMGZmMDBmZikgfCAocmdiYSAmIDB4
ZmYwMGZmMDApOwogICAgICAgICB9CiAgICAgfQogfQogCiB2b2lkIFRleHR1cmU6OmxvYWRSR0JB
NDQ0NEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpIGNvbnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9p
ZCAqb3V0cHV0KSBjb25zdAogewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBO
VUxMOwogICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOwpAQCAtNjcwLDcgKzcwNCw3IEBA
IHZvaWQgVGV4dHVyZTo6bG9hZFJHQkE0NDQ0SW1hZ2VEYXRhKEdMaW4KIH0KIAogdm9pZCBUZXh0
dXJlOjpsb2FkUkdCQTU1NTFJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBv
dXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0
cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3QKIHsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCAqc291cmNlID0gTlVMTDsKICAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKQEAgLTY5
MSw3ICs3MjUsNyBAQCB2b2lkIFRleHR1cmU6OmxvYWRSR0JBNTU1MUltYWdlRGF0YShHTGluCiB9
CiAKIHZvaWQgVGV4dHVyZTo6bG9hZFJHQkFGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAq
aW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICpp
bnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0CiB7CiAgICAgY29u
c3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CiAgICAgZmxvYXQgKmRlc3QgPSBOVUxMOwpAQCAtNzA1
LDcgKzczOSw3IEBAIHZvaWQgVGV4dHVyZTo6bG9hZFJHQkFGbG9hdEltYWdlRGF0YShHTGkKIH0K
IAogdm9pZCBUZXh0dXJlOjpsb2FkUkdCQUhhbGZGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRQaXRjaCwgY29uc3Qg
dm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0CiB7
CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKICAgICB1bnNpZ25lZCBj
aGFyICpkZXN0ID0gTlVMTDsKQEAgLTcxOSw3ICs3NTMsNyBAQCB2b2lkIFRleHR1cmU6OmxvYWRS
R0JBSGFsZkZsb2F0SW1hZ2VEYXRhCiB9CiAKIHZvaWQgVGV4dHVyZTo6bG9hZEJHUkFJbWFnZURh
dGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNv
bnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0CiB7
CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKICAgICB1bnNpZ25lZCBj
aGFyICpkZXN0ID0gTlVMTDsKQEAgLTczMiwxNyArNzY2LDc4IEBAIHZvaWQgVGV4dHVyZTo6bG9h
ZEJHUkFJbWFnZURhdGEoR0xpbnQgeG8KICAgICB9CiB9CiAKLXZvaWQgVGV4dHVyZTo6Y3JlYXRl
U3VyZmFjZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIEltYWdlICppbWcpCit2b2lkIFRleHR1cmU6OmxvYWRDb21wcmVzc2VkSW1hZ2VE
YXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQ
aXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0
KSBjb25zdAoreworICAgIEFTU0VSVCh4b2Zmc2V0ICUgNCA9PSAwKTsKKyAgICBBU1NFUlQoeW9m
ZnNldCAlIDQgPT0gMCk7CisgICAgQVNTRVJUKHdpZHRoICUgNCA9PSAwIHx8IHdpZHRoID09IDIg
fHwgd2lkdGggPT0gMSk7CisgICAgQVNTRVJUKGlucHV0UGl0Y2ggJSA4ID09IDApOworICAgIEFT
U0VSVChvdXRwdXRQaXRjaCAlIDggPT0gMCk7CisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgKnNv
dXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50Kj4oaW5wdXQpOworICAg
IHVuc2lnbmVkIGludCAqZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4ob3V0
cHV0KTsKKworICAgIHN3aXRjaCAoaGVpZ2h0KQorICAgIHsKKyAgICAgICAgY2FzZSAxOgorICAg
ICAgICAgICAgLy8gUm91bmQgd2lkdGggdXAgaW4gY2FzZSBpdCBpcyAxLgorICAgICAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCAod2lkdGggKyAxKSAvIDI7IHggKz0gMikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCAzMi1iaXRzIGlzIHR3byBSR0I1NjUgY29sb3Jz
IHNoYXJlZCBieSB0aWxlIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGJlIG1vZGlmaWVkLgorICAgICAg
ICAgICAgICAgIGRlc3RbeF0gPSBzb3VyY2VbeF07CisKKyAgICAgICAgICAgICAgICAvLyBTZWNv
bmQgMzItYml0cyBjb250YWlucyA0IHJvd3Mgb2YgNCAyLWJpdCBpbnRlcnBvbGFudHMgYmV0d2Vl
biB0aGUgY29sb3JzLCB0aGUgbGFzdCAzIHJvd3MgYmVpbmcgdW51c2VkLiBObyBmbGlwcGluZyBz
aG91bGQgb2NjdXIuCisgICAgICAgICAgICAgICAgZGVzdFt4ICsgMV0gPSBzb3VyY2VbeCArIDFd
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAg
ICAgICAgICAgIC8vIFJvdW5kIHdpZHRoIHVwIGluIGNhc2UgaXQgaXMgMS4KKyAgICAgICAgICAg
IGZvciAoaW50IHggPSAwOyB4IDwgKHdpZHRoICsgMSkgLyAyOyB4ICs9IDIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3QgMzItYml0cyBpcyB0d28gUkdCNTY1IGNvbG9y
cyBzaGFyZWQgYnkgdGlsZSBhbmQgZG9lcyBub3QgbmVlZCB0byBiZSBtb2RpZmllZC4KKyAgICAg
ICAgICAgICAgICBkZXN0W3hdID0gc291cmNlW3hdOworCisgICAgICAgICAgICAgICAgLy8gU2Vj
b25kIDMyLWJpdHMgY29udGFpbnMgNCByb3dzIG9mIDQgMi1iaXQgaW50ZXJwb2xhbnRzIGJldHdl
ZW4gdGhlIGNvbG9ycywgdGhlIGxhc3QgMiByb3dzIGJlaW5nIHVudXNlZC4gT25seSB0aGUgdG9w
IDIgcm93cyBzaG91bGQgYmUgZmxpcHBlZC4KKyAgICAgICAgICAgICAgICBkZXN0W3ggKyAxXSA9
ICgoc291cmNlW3ggKyAxXSA8PCA4KSAmIDB4MDAwMEZGMDApIHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgoc291cmNlW3ggKyAxXSA+PiA4KSAmIDB4MDAwMDAwRkYpOyAgICAgICAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUKGhlaWdodCAlIDQgPT0gMCk7CisgICAgICAgICAgICBmb3IgKGludCB5
ID0gMDsgeSA8IGhlaWdodCAvIDQ7ICsreSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgKnNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgaW50Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkg
KiBpbnB1dFBpdGNoKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSByZWlu
dGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihv
dXRwdXQpICsgKHkgKyB5b2Zmc2V0KSAqIG91dHB1dFBpdGNoICsgeG9mZnNldCAqIDgpOworCisg
ICAgICAgICAgICAgICAgLy8gUm91bmQgd2lkdGggdXAgaW4gY2FzZSBpdCBpcyAxLgorICAgICAg
ICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgKHdpZHRoICsgMSkgLyAyOyB4ICs9IDIpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBGaXJzdCAzMi1iaXRzIGlz
IHR3byBSR0I1NjUgY29sb3JzIHNoYXJlZCBieSB0aWxlIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGJl
IG1vZGlmaWVkLgorICAgICAgICAgICAgICAgICAgICBkZXN0W3hdID0gc291cmNlW3hdOworCisg
ICAgICAgICAgICAgICAgICAgIC8vIFNlY29uZCAzMi1iaXRzIGNvbnRhaW5zIDQgcm93cyBvZiA0
IDItYml0IGludGVycG9sYW50cyBiZXR3ZWVuIHRoZSBjb2xvcnMuIEFsbCByb3dzIHNob3VsZCBi
ZSBmbGlwcGVkLgorICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKyAxXSA9IChzb3VyY2VbeCAr
IDFdID4+IDI0KSB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc291cmNl
W3ggKyAxXSA8PCA4KSAmIDB4MDBGRjAwMDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoKHNvdXJjZVt4ICsgMV0gPj4gOCkgJiAweDAwMDBGRjAwKSB8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZVt4ICsgMV0gPDwgMjQpOyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCit2b2lkIFRleHR1cmU6OmNyZWF0ZVN1cmZhY2UoSW1hZ2UgKmlt
YWdlKQogewogICAgIElEaXJlY3QzRFRleHR1cmU5ICpuZXdUZXh0dXJlID0gTlVMTDsKICAgICBJ
RGlyZWN0M0RTdXJmYWNlOSAqbmV3U3VyZmFjZSA9IE5VTEw7CiAKLSAgICBpZiAod2lkdGggIT0g
MCAmJiBoZWlnaHQgIT0gMCkKKyAgICBpZiAoaW1hZ2UtPndpZHRoICE9IDAgJiYgaW1hZ2UtPmhl
aWdodCAhPSAwKQogICAgIHsKICAgICAgICAgaW50IGxldmVsVG9GZXRjaCA9IDA7Ci0gICAgICAg
IEdMc2l6ZWkgcmVxdWVzdFdpZHRoID0gd2lkdGg7Ci0gICAgICAgIEdMc2l6ZWkgcmVxdWVzdEhl
aWdodCA9IGhlaWdodDsKLSAgICAgICAgaWYgKElzQ29tcHJlc3NlZChmb3JtYXQpICYmICh3aWR0
aCAlIDQgIT0gMCB8fCBoZWlnaHQgJSA0ICE9IDApKQorICAgICAgICBHTHNpemVpIHJlcXVlc3RX
aWR0aCA9IGltYWdlLT53aWR0aDsKKyAgICAgICAgR0xzaXplaSByZXF1ZXN0SGVpZ2h0ID0gaW1h
Z2UtPmhlaWdodDsKKyAgICAgICAgaWYgKElzQ29tcHJlc3NlZChpbWFnZS0+Zm9ybWF0KSAmJiAo
aW1hZ2UtPndpZHRoICUgNCAhPSAwIHx8IGltYWdlLT5oZWlnaHQgJSA0ICE9IDApKQogICAgICAg
ICB7CiAgICAgICAgICAgICBib29sIGlzTXVsdDQgPSBmYWxzZTsKICAgICAgICAgICAgIGludCB1
cHNhbXBsZUNvdW50ID0gMDsKQEAgLTc1OSw3ICs4NTQsNyBAQCB2b2lkIFRleHR1cmU6OmNyZWF0
ZVN1cmZhY2UoR0xzaXplaSB3aWR0CiAgICAgICAgICAgICBsZXZlbFRvRmV0Y2ggPSB1cHNhbXBs
ZUNvdW50OwogICAgICAgICB9CiAKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBnZXREZXZpY2Uo
KS0+Q3JlYXRlVGV4dHVyZShyZXF1ZXN0V2lkdGgsIHJlcXVlc3RIZWlnaHQsIGxldmVsVG9GZXRj
aCArIDEsIE5VTEwsIHNlbGVjdEZvcm1hdChmb3JtYXQsIHR5cGUpLAorICAgICAgICBIUkVTVUxU
IHJlc3VsdCA9IGdldERldmljZSgpLT5DcmVhdGVUZXh0dXJlKHJlcXVlc3RXaWR0aCwgcmVxdWVz
dEhlaWdodCwgbGV2ZWxUb0ZldGNoICsgMSwgTlVMTCwgaW1hZ2UtPmdldEQzREZvcm1hdCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFBP
T0xfU1lTVEVNTUVNLCAmbmV3VGV4dHVyZSwgTlVMTCk7CiAKICAgICAgICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQpAQCAtNzcyLDExOCArODY3LDEzMSBAQCB2b2lkIFRleHR1cmU6OmNyZWF0ZVN1cmZh
Y2UoR0xzaXplaSB3aWR0CiAgICAgICAgIG5ld1RleHR1cmUtPlJlbGVhc2UoKTsKICAgICB9CiAK
LSAgICBpZiAoaW1nLT5zdXJmYWNlKSBpbWctPnN1cmZhY2UtPlJlbGVhc2UoKTsKLSAgICBpbWct
PnN1cmZhY2UgPSBuZXdTdXJmYWNlOworICAgIGlmIChpbWFnZS0+c3VyZmFjZSkKKyAgICB7Cisg
ICAgICAgIGltYWdlLT5zdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgfQogCi0gICAgaW1nLT53aWR0
aCA9IHdpZHRoOwotICAgIGltZy0+aGVpZ2h0ID0gaGVpZ2h0OwotICAgIGltZy0+Zm9ybWF0ID0g
Zm9ybWF0OworICAgIGltYWdlLT5zdXJmYWNlID0gbmV3U3VyZmFjZTsKIH0KIAotdm9pZCBUZXh0
dXJlOjpzZXRJbWFnZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxz
LCBJbWFnZSAqaW1nKQordm9pZCBUZXh0dXJlOjpzZXRJbWFnZShHTGludCB1bnBhY2tBbGlnbm1l
bnQsIGNvbnN0IHZvaWQgKnBpeGVscywgSW1hZ2UgKmltYWdlKQogewotICAgIGNyZWF0ZVN1cmZh
Y2Uod2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBpbWcpOworICAgIGNyZWF0ZVN1cmZhY2Uo
aW1hZ2UpOwogCi0gICAgaWYgKHBpeGVscyAhPSBOVUxMICYmIGltZy0+c3VyZmFjZSAhPSBOVUxM
KQorICAgIGlmIChwaXhlbHMgIT0gTlVMTCAmJiBpbWFnZS0+c3VyZmFjZSAhPSBOVUxMKQogICAg
IHsKICAgICAgICAgRDNEU1VSRkFDRV9ERVNDIGRlc2NyaXB0aW9uOwotICAgICAgICBpbWctPnN1
cmZhY2UtPkdldERlc2MoJmRlc2NyaXB0aW9uKTsKKyAgICAgICAgaW1hZ2UtPnN1cmZhY2UtPkdl
dERlc2MoJmRlc2NyaXB0aW9uKTsKIAogICAgICAgICBEM0RMT0NLRURfUkVDVCBsb2NrZWQ7Ci0g
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gaW1nLT5zdXJmYWNlLT5Mb2NrUmVjdCgmbG9ja2VkLCBO
VUxMLCAwKTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBpbWFnZS0+c3VyZmFjZS0+TG9ja1Jl
Y3QoJmxvY2tlZCwgTlVMTCwgMCk7CiAKICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQp
KTsKIAogICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGxvYWRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCB1bnBh
Y2tBbGlnbm1lbnQsIHBpeGVscywgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMsICZkZXNjcmlw
dGlvbik7Ci0gICAgICAgICAgICBpbWctPnN1cmZhY2UtPlVubG9ja1JlY3QoKTsKKyAgICAgICAg
ICAgIGxvYWRJbWFnZURhdGEoMCwgMCwgaW1hZ2UtPndpZHRoLCBpbWFnZS0+aGVpZ2h0LCBpbWFn
ZS0+Zm9ybWF0LCBpbWFnZS0+dHlwZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMsIGxvY2tlZC5Q
aXRjaCwgbG9ja2VkLnBCaXRzLCAmZGVzY3JpcHRpb24pOworICAgICAgICAgICAgaW1hZ2UtPnN1
cmZhY2UtPlVubG9ja1JlY3QoKTsKICAgICAgICAgfQogCi0gICAgICAgIGltZy0+ZGlydHkgPSB0
cnVlOworICAgICAgICBpbWFnZS0+ZGlydHkgPSB0cnVlOworICAgICAgICBtRGlydHlJbWFnZSA9
IHRydWU7CiAgICAgfQotCi0gICAgbURpcnR5TWV0YURhdGEgPSB0cnVlOwogfQogCi12b2lkIFRl
eHR1cmU6OnNldENvbXByZXNzZWRJbWFnZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscywgSW1h
Z2UgKmltZykKK3ZvaWQgVGV4dHVyZTo6c2V0Q29tcHJlc3NlZEltYWdlKEdMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkICpwaXhlbHMsIEltYWdlICppbWFnZSkKIHsKLSAgICBjcmVhdGVTdXJm
YWNlKHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgaW1nKTsKKyAgICBj
cmVhdGVTdXJmYWNlKGltYWdlKTsKIAotICAgIGlmIChwaXhlbHMgIT0gTlVMTCAmJiBpbWctPnN1
cmZhY2UgIT0gTlVMTCkKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwgJiYgaW1hZ2UtPnN1cmZhY2Ug
IT0gTlVMTCkKICAgICB7CiAgICAgICAgIEQzRExPQ0tFRF9SRUNUIGxvY2tlZDsKLSAgICAgICAg
SFJFU1VMVCByZXN1bHQgPSBpbWctPnN1cmZhY2UtPkxvY2tSZWN0KCZsb2NrZWQsIE5VTEwsIDAp
OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGltYWdlLT5zdXJmYWNlLT5Mb2NrUmVjdCgmbG9j
a2VkLCBOVUxMLCAwKTsKIAogICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwogCiAg
ICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgbWVt
Y3B5KGxvY2tlZC5wQml0cywgcGl4ZWxzLCBpbWFnZVNpemUpOwotICAgICAgICAgICAgaW1nLT5z
dXJmYWNlLT5VbmxvY2tSZWN0KCk7CisgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCA9IENvbXB1
dGVDb21wcmVzc2VkUGl0Y2goaW1hZ2UtPndpZHRoLCBpbWFnZS0+Zm9ybWF0KTsKKyAgICAgICAg
ICAgIGludCBpbnB1dFNpemUgPSBDb21wdXRlQ29tcHJlc3NlZFNpemUoaW1hZ2UtPndpZHRoLCBp
bWFnZS0+aGVpZ2h0LCBpbWFnZS0+Zm9ybWF0KTsKKyAgICAgICAgICAgIGxvYWRDb21wcmVzc2Vk
SW1hZ2VEYXRhKDAsIDAsIGltYWdlLT53aWR0aCwgaW1hZ2UtPmhlaWdodCwgLWlucHV0UGl0Y2gs
IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwaXhlbHMpICsgaW5wdXRTaXplIC0gaW5wdXRQaXRj
aCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICAgICAgaW1hZ2UtPnN1cmZh
Y2UtPlVubG9ja1JlY3QoKTsKICAgICAgICAgfQogCi0gICAgICAgIGltZy0+ZGlydHkgPSB0cnVl
OworICAgICAgICBpbWFnZS0+ZGlydHkgPSB0cnVlOworICAgICAgICBtRGlydHlJbWFnZSA9IHRy
dWU7CiAgICAgfQotCi0gICAgbURpcnR5TWV0YURhdGEgPSB0cnVlOwogfQogCi1ib29sIFRleHR1
cmU6OnN1YkltYWdlKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNr
QWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMsIEltYWdlICppbWcpCitib29sIFRleHR1cmU6
OnN1YkltYWdlKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxp
Z25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMsIEltYWdlICppbWFnZSkKIHsKLSAgICBpZiAod2lk
dGggKyB4b2Zmc2V0ID4gaW1nLT53aWR0aCB8fCBoZWlnaHQgKyB5b2Zmc2V0ID4gaW1nLT5oZWln
aHQpCisgICAgaWYgKHdpZHRoICsgeG9mZnNldCA+IGltYWdlLT53aWR0aCB8fCBoZWlnaHQgKyB5
b2Zmc2V0ID4gaW1hZ2UtPmhlaWdodCkKICAgICB7CiAgICAgICAgIGVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFpbWctPnN1
cmZhY2UpCisgICAgaWYgKElzQ29tcHJlc3NlZChpbWFnZS0+Zm9ybWF0KSkKICAgICB7Ci0gICAg
ICAgIGNyZWF0ZVN1cmZhY2UoaW1nLT53aWR0aCwgaW1nLT5oZWlnaHQsIGZvcm1hdCwgdHlwZSwg
aW1nKTsKKyAgICAgICAgZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHBpeGVscyAhPSBOVUxMICYmIGltZy0+c3VyZmFj
ZSAhPSBOVUxMKQorICAgIGlmIChmb3JtYXQgIT0gaW1hZ2UtPmZvcm1hdCkKKyAgICB7CisgICAg
ICAgIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmICghaW1hZ2UtPnN1cmZhY2UpCisgICAgeworICAgICAgICBjcmVhdGVT
dXJmYWNlKGltYWdlKTsKKyAgICB9CisKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwgJiYgaW1hZ2Ut
PnN1cmZhY2UgIT0gTlVMTCkKICAgICB7CiAgICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjcmlw
dGlvbjsKLSAgICAgICAgaW1nLT5zdXJmYWNlLT5HZXREZXNjKCZkZXNjcmlwdGlvbik7CisgICAg
ICAgIGltYWdlLT5zdXJmYWNlLT5HZXREZXNjKCZkZXNjcmlwdGlvbik7CiAKICAgICAgICAgRDNE
TE9DS0VEX1JFQ1QgbG9ja2VkOwotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGltZy0+c3VyZmFj
ZS0+TG9ja1JlY3QoJmxvY2tlZCwgTlVMTCwgMCk7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0g
aW1hZ2UtPnN1cmZhY2UtPkxvY2tSZWN0KCZsb2NrZWQsIE5VTEwsIDApOwogCiAgICAgICAgIEFT
U0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAKICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQp
KQogICAgICAgICB7Ci0gICAgICAgICAgICBsb2FkSW1hZ2VEYXRhKHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMsIGxv
Y2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzLCAmZGVzY3JpcHRpb24pOwotICAgICAgICAgICAgaW1n
LT5zdXJmYWNlLT5VbmxvY2tSZWN0KCk7CisgICAgICAgICAgICBsb2FkSW1hZ2VEYXRhKHhvZmZz
ZXQsIHRyYW5zZm9ybVBpeGVsWU9mZnNldCh5b2Zmc2V0LCBoZWlnaHQsIGltYWdlLT5oZWlnaHQp
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCBs
b2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cywgJmRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIGlt
YWdlLT5zdXJmYWNlLT5VbmxvY2tSZWN0KCk7CiAgICAgICAgIH0KIAotICAgICAgICBpbWctPmRp
cnR5ID0gdHJ1ZTsKKyAgICAgICAgaW1hZ2UtPmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbURpcnR5
SW1hZ2UgPSB0cnVlOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFRleHR1
cmU6OnN1YkltYWdlQ29tcHJlc3NlZChHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNp
emUsIGNvbnN0IHZvaWQgKnBpeGVscywgSW1hZ2UgKmltZykKK2Jvb2wgVGV4dHVyZTo6c3ViSW1h
Z2VDb21wcmVzc2VkKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
dm9pZCAqcGl4ZWxzLCBJbWFnZSAqaW1hZ2UpCiB7Ci0gICAgaWYgKHdpZHRoICsgeG9mZnNldCA+
IGltZy0+d2lkdGggfHwgaGVpZ2h0ICsgeW9mZnNldCA+IGltZy0+aGVpZ2h0KQorICAgIGlmICh3
aWR0aCArIHhvZmZzZXQgPiBpbWFnZS0+d2lkdGggfHwgaGVpZ2h0ICsgeW9mZnNldCA+IGltYWdl
LT5oZWlnaHQpCiAgICAgewogICAgICAgICBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgIT0gZ2V0Rm9ybWF0KCkp
CisgICAgaWYgKGZvcm1hdCAhPSBnZXRJbnRlcm5hbEZvcm1hdCgpKQogICAgIHsKICAgICAgICAg
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgaWYgKCFpbWctPnN1cmZhY2UpCisgICAgaWYgKCFpbWFnZS0+c3VyZmFjZSkKICAg
ICB7Ci0gICAgICAgIGNyZWF0ZVN1cmZhY2UoaW1nLT53aWR0aCwgaW1nLT5oZWlnaHQsIGZvcm1h
dCwgR0xfVU5TSUdORURfQllURSwgaW1nKTsKKyAgICAgICAgY3JlYXRlU3VyZmFjZShpbWFnZSk7
CiAgICAgfQogCi0gICAgaWYgKHBpeGVscyAhPSBOVUxMICYmIGltZy0+c3VyZmFjZSAhPSBOVUxM
KQorICAgIGlmIChwaXhlbHMgIT0gTlVMTCAmJiBpbWFnZS0+c3VyZmFjZSAhPSBOVUxMKQogICAg
IHsKICAgICAgICAgUkVDVCB1cGRhdGVSZWdpb247CiAgICAgICAgIHVwZGF0ZVJlZ2lvbi5sZWZ0
ID0geG9mZnNldDsKQEAgLTg5MiwxOTkgKzEwMDAsMjA2IEBAIGJvb2wgVGV4dHVyZTo6c3ViSW1h
Z2VDb21wcmVzc2VkKEdMaW50IHgKICAgICAgICAgdXBkYXRlUmVnaW9uLnRvcCA9IHlvZmZzZXQ7
CiAKICAgICAgICAgRDNETE9DS0VEX1JFQ1QgbG9ja2VkOwotICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9IGltZy0+c3VyZmFjZS0+TG9ja1JlY3QoJmxvY2tlZCwgJnVwZGF0ZVJlZ2lvbiwgMCk7Cisg
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gaW1hZ2UtPnN1cmZhY2UtPkxvY2tSZWN0KCZsb2NrZWQs
ICZ1cGRhdGVSZWdpb24sIDApOwogCiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7
CiAKICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBHTHNpemVpIGlucHV0UGl0Y2ggPSBDb21wdXRlQ29tcHJlc3NlZFBpdGNoKHdpZHRoLCBmb3Jt
YXQpOwotICAgICAgICAgICAgaW50IHJvd3MgPSBpbWFnZVNpemUgLyBpbnB1dFBpdGNoOwotICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyArK2kpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgbWVtY3B5KCh2b2lkKikoKEJZVEUqKWxvY2tlZC5wQml0cyArIGkgKiBs
b2NrZWQuUGl0Y2gpLCAodm9pZCopKChCWVRFKilwaXhlbHMgKyBpICogaW5wdXRQaXRjaCksIGlu
cHV0UGl0Y2gpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW1nLT5zdXJmYWNlLT5Vbmxv
Y2tSZWN0KCk7CisgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCA9IENvbXB1dGVDb21wcmVzc2Vk
UGl0Y2god2lkdGgsIGZvcm1hdCk7CisgICAgICAgICAgICBpbnQgaW5wdXRTaXplID0gQ29tcHV0
ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7CisgICAgICAgICAgICBsb2Fk
Q29tcHJlc3NlZEltYWdlRGF0YSh4b2Zmc2V0LCB0cmFuc2Zvcm1QaXhlbFlPZmZzZXQoeW9mZnNl
dCwgaGVpZ2h0LCBpbWFnZS0+aGVpZ2h0KSwgd2lkdGgsIGhlaWdodCwgLWlucHV0UGl0Y2gsIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwaXhlbHMpICsgaW5wdXRTaXplIC0gaW5wdXRQaXRjaCwg
bG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICAgICAgaW1hZ2UtPnN1cmZhY2Ut
PlVubG9ja1JlY3QoKTsKICAgICAgICAgfQogCi0gICAgICAgIGltZy0+ZGlydHkgPSB0cnVlOwor
ICAgICAgICBpbWFnZS0+ZGlydHkgPSB0cnVlOworICAgICAgICBtRGlydHlJbWFnZSA9IHRydWU7
CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIFRoaXMgaW1wbGVtZW50cyBnbENv
cHlUZXhbU3ViXUltYWdlMkQgZm9yIG5vbi1yZW5kZXJhYmxlIGludGVybmFsIHRleHR1cmUgZm9y
bWF0cwotdm9pZCBUZXh0dXJlOjpjb3B5Tm9uUmVuZGVyYWJsZShJbWFnZSAqaW1hZ2UsIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIElEaXJlY3QzRFN1cmZhY2U5
ICpyZW5kZXJUYXJnZXQpCisvLyBUaGlzIGltcGxlbWVudHMgZ2xDb3B5VGV4W1N1Yl1JbWFnZTJE
IGZvciBub24tcmVuZGVyYWJsZSBpbnRlcm5hbCB0ZXh0dXJlIGZvcm1hdHMgYW5kIGluY29tcGxl
dGUgdGV4dHVyZXMKK3ZvaWQgVGV4dHVyZTo6Y29weVRvSW1hZ2UoSW1hZ2UgKmltYWdlLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdldCkKIHsKKyAg
ICBpZiAoIWltYWdlLT5zdXJmYWNlKQorICAgIHsKKyAgICAgICAgY3JlYXRlU3VyZmFjZShpbWFn
ZSk7CisKKyAgICAgICAgaWYgKCFpbWFnZS0+c3VyZmFjZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgRVJSKCJGYWlsZWQgdG8gY3JlYXRlIGFuIGltYWdlIHN1cmZhY2UuIik7CisgICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKLSAgICBJRGlyZWN0M0RT
dXJmYWNlOSAqc3VyZmFjZSA9IE5VTEw7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRh
cmdldERhdGEgPSBOVUxMOwogICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjcmlwdGlvbjsKICAgICBy
ZW5kZXJUYXJnZXQtPkdldERlc2MoJmRlc2NyaXB0aW9uKTsKICAgICAKLSAgICBIUkVTVUxUIHJl
c3VsdCA9IGRldmljZS0+Q3JlYXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2NyaXB0aW9uLldp
ZHRoLCBkZXNjcmlwdGlvbi5IZWlnaHQsIGRlc2NyaXB0aW9uLkZvcm1hdCwgRDNEUE9PTF9TWVNU
RU1NRU0sICZzdXJmYWNlLCBOVUxMKTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2NyaXB0aW9uLldpZHRoLCBkZXNjcmlwdGlvbi5I
ZWlnaHQsIGRlc2NyaXB0aW9uLkZvcm1hdCwgRDNEUE9PTF9TWVNURU1NRU0sICZyZW5kZXJUYXJn
ZXREYXRhLCBOVUxMKTsKIAotICAgIGlmICghU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQogICAgIHsKICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIG1hdGNo
aW5nIGRlc3RpbmF0aW9uIHN1cmZhY2UuIik7CiAgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKICAgICB9CiAKLSAgICByZXN1bHQgPSBkZXZpY2UtPkdldFJlbmRlclRhcmdl
dERhdGEocmVuZGVyVGFyZ2V0LCBzdXJmYWNlKTsKKyAgICByZXN1bHQgPSBkZXZpY2UtPkdldFJl
bmRlclRhcmdldERhdGEocmVuZGVyVGFyZ2V0LCByZW5kZXJUYXJnZXREYXRhKTsKIAotICAgIGlm
ICghU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKICAg
ICAgICAgRVJSKCJHZXRSZW5kZXJUYXJnZXREYXRhIHVuZXhwZWN0ZWRseSBmYWlsZWQuIik7Ci0g
ICAgICAgIHN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0RGF0YS0+UmVs
ZWFzZSgpOwogICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CiAgICAgfQog
Ci0gICAgRDNETE9DS0VEX1JFQ1Qgc291cmNlTG9jayA9IHswfTsKLSAgICBSRUNUIHNvdXJjZVJl
Y3QgPSB7eCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0fTsKLSAgICByZXN1bHQgPSBzdXJmYWNl
LT5Mb2NrUmVjdCgmc291cmNlTG9jaywgJnNvdXJjZVJlY3QsIDApOwotCi0gICAgaWYgKEZBSUxF
RChyZXN1bHQpKQotICAgIHsKLSAgICAgICAgRVJSKCJGYWlsZWQgdG8gbG9jayB0aGUgc291cmNl
IHN1cmZhY2UgKHJlY3RhbmdsZSBtaWdodCBiZSBpbnZhbGlkKS4iKTsKLSAgICAgICAgc3VyZmFj
ZS0+VW5sb2NrUmVjdCgpOwotICAgICAgICBzdXJmYWNlLT5SZWxlYXNlKCk7Ci0gICAgICAgIHJl
dHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9CisgICAgUkVDVCBzb3VyY2VSZWN0
ID0gdHJhbnNmb3JtUGl4ZWxSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIGRlc2NyaXB0aW9uLkhl
aWdodCk7CisgICAgaW50IGRlc3RZT2Zmc2V0ID0gdHJhbnNmb3JtUGl4ZWxZT2Zmc2V0KHlvZmZz
ZXQsIGhlaWdodCwgaW1hZ2UtPmhlaWdodCk7CisgICAgUkVDVCBkZXN0UmVjdCA9IHt4b2Zmc2V0
LCBkZXN0WU9mZnNldCwgeG9mZnNldCArIHdpZHRoLCBkZXN0WU9mZnNldCArIGhlaWdodH07CiAK
LSAgICBpZiAoIWltYWdlLT5zdXJmYWNlKQorICAgIGlmIChpbWFnZS0+aXNSZW5kZXJhYmxlKCkp
CiAgICAgewotICAgICAgICBjcmVhdGVTdXJmYWNlKHdpZHRoLCBoZWlnaHQsIGludGVybmFsRm9y
bWF0LCBtVHlwZSwgaW1hZ2UpOworICAgICAgICByZXN1bHQgPSBEM0RYTG9hZFN1cmZhY2VGcm9t
U3VyZmFjZShpbWFnZS0+c3VyZmFjZSwgTlVMTCwgJmRlc3RSZWN0LCByZW5kZXJUYXJnZXREYXRh
LCBOVUxMLCAmc291cmNlUmVjdCwgRDNEWF9GSUxURVJfQk9YLCAwKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3B5
aW5nIHN1cmZhY2VzIHVuZXhwZWN0ZWRseSBmYWlsZWQuIik7CisgICAgICAgICAgICByZW5kZXJU
YXJnZXREYXRhLT5SZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAoaW1hZ2UtPnN1cmZhY2UgPT0g
TlVMTCkKKyAgICBlbHNlCiAgICAgewotICAgICAgICBFUlIoIkZhaWxlZCB0byBjcmVhdGUgYW4g
aW1hZ2Ugc3VyZmFjZS4iKTsKLSAgICAgICAgc3VyZmFjZS0+VW5sb2NrUmVjdCgpOwotICAgICAg
ICBzdXJmYWNlLT5SZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsgCi0gICAgfQorICAgICAgICBEM0RMT0NLRURfUkVDVCBzb3VyY2VMb2NrID0gezB9Owor
ICAgICAgICByZXN1bHQgPSByZW5kZXJUYXJnZXREYXRhLT5Mb2NrUmVjdCgmc291cmNlTG9jaywg
JnNvdXJjZVJlY3QsIDApOwogCi0gICAgRDNETE9DS0VEX1JFQ1QgZGVzdExvY2sgPSB7MH07Ci0g
ICAgUkVDVCBkZXN0UmVjdCA9IHt4b2Zmc2V0LCB5b2Zmc2V0LCB4b2Zmc2V0ICsgd2lkdGgsIHlv
ZmZzZXQgKyBoZWlnaHR9OwotICAgIHJlc3VsdCA9IGltYWdlLT5zdXJmYWNlLT5Mb2NrUmVjdCgm
ZGVzdExvY2ssICZkZXN0UmVjdCwgMCk7Ci0gICAgCi0gICAgaWYgKEZBSUxFRChyZXN1bHQpKQot
ICAgIHsKLSAgICAgICAgRVJSKCJGYWlsZWQgdG8gbG9jayB0aGUgZGVzdGluYXRpb24gc3VyZmFj
ZSAocmVjdGFuZ2xlIG1pZ2h0IGJlIGludmFsaWQpLiIpOwotICAgICAgICBzdXJmYWNlLT5Vbmxv
Y2tSZWN0KCk7Ci0gICAgICAgIHN1cmZhY2UtPlJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOwotICAgIH0KKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBsb2NrIHRoZSBzb3VyY2Ug
c3VyZmFjZSAocmVjdGFuZ2xlIG1pZ2h0IGJlIGludmFsaWQpLiIpOworICAgICAgICAgICAgcmVu
ZGVyVGFyZ2V0RGF0YS0+UmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgICAgICB9CiAKLSAgICBpZiAoZGVzdExvY2sucEJpdHMgJiYgc291
cmNlTG9jay5wQml0cykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9ICh1
bnNpZ25lZCBjaGFyKilzb3VyY2VMb2NrLnBCaXRzOwotICAgICAgICB1bnNpZ25lZCBjaGFyICpk
ZXN0ID0gKHVuc2lnbmVkIGNoYXIqKWRlc3RMb2NrLnBCaXRzOworICAgICAgICBEM0RMT0NLRURf
UkVDVCBkZXN0TG9jayA9IHswfTsKKyAgICAgICAgcmVzdWx0ID0gaW1hZ2UtPnN1cmZhY2UtPkxv
Y2tSZWN0KCZkZXN0TG9jaywgJmRlc3RSZWN0LCAwKTsKKyAgICAgICAgCisgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gbG9j
ayB0aGUgZGVzdGluYXRpb24gc3VyZmFjZSAocmVjdGFuZ2xlIG1pZ2h0IGJlIGludmFsaWQpLiIp
OworICAgICAgICAgICAgcmVuZGVyVGFyZ2V0RGF0YS0+VW5sb2NrUmVjdCgpOworICAgICAgICAg
ICAgcmVuZGVyVGFyZ2V0RGF0YS0+UmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNoIChkZXNjcmlw
dGlvbi5Gb3JtYXQpCisgICAgICAgIGlmIChkZXN0TG9jay5wQml0cyAmJiBzb3VyY2VMb2NrLnBC
aXRzKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6Ci0gICAgICAg
ICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6Ci0gICAgICAgICAgICBzd2l0Y2goZ2V0RDNERm9ybWF0
KCkpCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzb3VyY2UgPSAodW5zaWduZWQgY2hhciop
c291cmNlTG9jay5wQml0czsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSAodW5z
aWduZWQgY2hhciopZGVzdExvY2sucEJpdHM7CisKKyAgICAgICAgICAgIHN3aXRjaCAoZGVzY3Jp
cHRpb24uRm9ybWF0KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEQzREZNVF9M
ODoKLSAgICAgICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAg
ICAgICAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgorICAgICAgICAgICAgICBjYXNlIEQzREZN
VF9BOFI4RzhCODoKKyAgICAgICAgICAgICAgICBzd2l0Y2goaW1hZ2UtPmdldEQzREZvcm1hdCgp
KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yKGludCB4ID0gMDsg
eCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICAgICAgICBjYXNlIEQzREZNVF9MODoKKyAgICAg
ICAgICAgICAgICAgICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQogICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3hdID0gc291cmNlW3gg
KiA0ICsgMl07Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGZvcihpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBzb3VyY2VbeCAqIDQgKyAy
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UgKz0gc291cmNlTG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICAgICAgZGVzdCArPSBkZXN0
TG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgIGNhc2UgRDNERk1UX0E4TDg6Ci0gICAgICAgICAgICAgICAgZm9yKGludCB5
ID0gMDsgeSA8IGhlaWdodDsgeSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeCAqIDIgKyAwXSA9IHNvdXJjZVt4ICog
NCArIDJdOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICogMiArIDFdID0gc291cmNl
W3ggKiA0ICsgM107CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlTG9j
ay5QaXRjaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7
CiAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0g
c291cmNlTG9jay5QaXRjaDsKLSAgICAgICAgICAgICAgICAgICAgZGVzdCArPSBkZXN0TG9jay5Q
aXRjaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRDNERk1UX1I1RzZCNToK
LSAgICAgICAgICAgIHN3aXRjaChnZXREM0RGb3JtYXQoKSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgY2FzZSBEM0RGTVRfTDg6Ci0gICAgICAgICAgICAgICAgZm9yKGludCB5ID0gMDsg
eSA8IGhlaWdodDsgeSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
Zm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfQThMODoKKyAgICAgICAgICAgICAgICAg
ICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQogICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZCA9IHNvdXJjZVt4ICog
MiArIDFdICYgMHhGODsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeF0gPSByZWQgfCAo
cmVkID4+IDUpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKiAyICsgMF0gPSBzb3VyY2Vb
eCAqIDQgKyAyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKiAyICsgMV0g
PSBzb3VyY2VbeCAqIDQgKyAzXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsKLSAgICAgICAgICAgICAg
ICAgICAgZGVzdCArPSBkZXN0TG9jay5QaXRjaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCAr
PSBkZXN0TG9jay5QaXRjaDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEQz
REZNVF9BMVI1RzVCNToKLSAgICAgICAgICAgIHN3aXRjaChnZXREM0RGb3JtYXQoKSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfTDg6Ci0gICAgICAgICAgICAgICAg
Zm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICAgICAgICBjYXNlIEQzREZN
VF9SNUc2QjU6CisgICAgICAgICAgICAgICAgc3dpdGNoKGltYWdlLT5nZXREM0RGb3JtYXQoKSkK
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHgg
PCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfTDg6CisgICAgICAg
ICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZWQgPSBz
b3VyY2VbeCAqIDIgKyAxXSAmIDB4N0M7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3hd
ID0gKHJlZCA8PCAxKSB8IChyZWQgPj4gNCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgcmVkID0gc291cmNlW3ggKiAyICsgMV0gJiAweEY4OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RbeF0gPSByZWQgfCAocmVkID4+IDUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNo
OwotICAgICAgICAgICAgICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAg
ICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRDNERk1UX0E4TDg6Ci0g
ICAgICAgICAgICAgICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICAg
ICAgICBjYXNlIEQzREZNVF9BMVI1RzVCNToKKyAgICAgICAgICAgICAgICBzd2l0Y2goaW1hZ2Ut
PmdldEQzREZvcm1hdCgpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
Zm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICAgICAgICBjYXNlIEQz
REZNVF9MODoKKyAgICAgICAgICAgICAgICAgICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIHJlZCA9IHNvdXJjZVt4ICogMiArIDFdICYgMHg3QzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RbeCAqIDIgKyAwXSA9IChyZWQgPDwgMSkgfCAocmVkID4+IDQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICogMiArIDFdID0gKHNpZ25lZCBjaGFyKXNvdXJj
ZVt4ICogMiArIDFdID4+IDc7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAw
OyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZCA9IHNvdXJjZVt4ICogMiArIDFdICYg
MHg3QzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3hdID0gKHJlZCA8PCAxKSB8
IChyZWQgPj4gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdCArPSBkZXN0TG9jay5QaXRjaDsKICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0E4
TDg6CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCB4
ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZWQgPSBzb3VyY2VbeCAqIDIgKyAx
XSAmIDB4N0M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICogMiArIDBdID0g
KHJlZCA8PCAxKSB8IChyZWQgPj4gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dFt4ICogMiArIDFdID0gKHNpZ25lZCBjaGFyKXNvdXJjZVt4ICogMiArIDFdID4+IDc7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNv
dXJjZUxvY2suUGl0Y2g7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0
Y2g7CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBpbWFnZS0+ZGlydHkgPSB0cnVlOwotICAgICAgICBt
RGlydHlNZXRhRGF0YSA9IHRydWU7ICAgIAorICAgICAgICBpbWFnZS0+c3VyZmFjZS0+VW5sb2Nr
UmVjdCgpOworICAgICAgICByZW5kZXJUYXJnZXREYXRhLT5VbmxvY2tSZWN0KCk7CiAgICAgfQog
Ci0gICAgaW1hZ2UtPnN1cmZhY2UtPlVubG9ja1JlY3QoKTsKLSAgICBzdXJmYWNlLT5VbmxvY2tS
ZWN0KCk7Ci0gICAgc3VyZmFjZS0+UmVsZWFzZSgpOwotfQorICAgIHJlbmRlclRhcmdldERhdGEt
PlJlbGVhc2UoKTsKIAotRDNERk9STUFUIFRleHR1cmU6OmdldEQzREZvcm1hdCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHNlbGVjdEZvcm1hdChnZXRGb3JtYXQoKSwgbVR5cGUpOworICAgIGltYWdl
LT5kaXJ0eSA9IHRydWU7CisgICAgbURpcnR5SW1hZ2UgPSB0cnVlOwogfQogCiBJRGlyZWN0M0RC
YXNlVGV4dHVyZTkgKlRleHR1cmU6OmdldFRleHR1cmUoKQpAQCAtMTA5NCw2NyArMTIwOSw0MCBA
QCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmU6OmdldFRleHR1CiAgICAgICAgIHJldHVy
biBOVUxMOwogICAgIH0KIAotICAgIGlmIChtRGlydHlNZXRhRGF0YSkKLSAgICB7Ci0gICAgICAg
IG1CYXNlVGV4dHVyZSA9IGNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAgbUlzUmVuZGVyYWJsZSA9
IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChtRGlydHlNZXRhRGF0YSB8fCBkaXJ0eUltYWdlRGF0
YSgpKQorICAgIGlmICghZ2V0QmFzZVRleHR1cmUoKSkKICAgICB7Ci0gICAgICAgIHVwZGF0ZVRl
eHR1cmUoKTsKKyAgICAgICAgY3JlYXRlVGV4dHVyZSgpOwogICAgIH0KIAotICAgIG1EaXJ0eU1l
dGFEYXRhID0gZmFsc2U7Ci0gICAgQVNTRVJUKCFkaXJ0eUltYWdlRGF0YSgpKTsKKyAgICB1cGRh
dGVUZXh0dXJlKCk7CiAKLSAgICByZXR1cm4gbUJhc2VUZXh0dXJlOworICAgIHJldHVybiBnZXRC
YXNlVGV4dHVyZSgpOwogfQogCi1ib29sIFRleHR1cmU6OmlzRGlydHkoKSBjb25zdAorYm9vbCBU
ZXh0dXJlOjppc0RpcnR5UGFyYW1ldGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1EaXJ0eSB8
fCBtRGlydHlNZXRhRGF0YSB8fCBkaXJ0eUltYWdlRGF0YSgpKTsKKyAgICByZXR1cm4gbURpcnR5
UGFyYW1ldGVyOwogfQogCi0vLyBSZXR1cm5zIHRoZSB0b3AtbGV2ZWwgdGV4dHVyZSBzdXJmYWNl
IGFzIGEgcmVuZGVyIHRhcmdldAotdm9pZCBUZXh0dXJlOjpuZWVkUmVuZGVyVGFyZ2V0KCkKK2Jv
b2wgVGV4dHVyZTo6aXNEaXJ0eUltYWdlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1Jc1JlbmRlcmFi
bGUpCi0gICAgewotICAgICAgICBtQmFzZVRleHR1cmUgPSBjb252ZXJ0VG9SZW5kZXJUYXJnZXQo
KTsKLSAgICAgICAgbUlzUmVuZGVyYWJsZSA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKGRpcnR5
SW1hZ2VEYXRhKCkpCi0gICAgewotICAgICAgICB1cGRhdGVUZXh0dXJlKCk7Ci0gICAgfQotCi0g
ICAgbURpcnR5TWV0YURhdGEgPSBmYWxzZTsKKyAgICByZXR1cm4gbURpcnR5SW1hZ2U7CiB9CiAK
LXZvaWQgVGV4dHVyZTo6ZHJvcFRleHR1cmUoKQordm9pZCBUZXh0dXJlOjpyZXNldERpcnR5KCkK
IHsKLSAgICBpZiAobUJhc2VUZXh0dXJlKQotICAgIHsKLSAgICAgICAgbUJhc2VUZXh0dXJlID0g
TlVMTDsKLSAgICB9Ci0KLSAgICBtSXNSZW5kZXJhYmxlID0gZmFsc2U7CisgICAgbURpcnR5UGFy
YW1ldGVyID0gZmFsc2U7CisgICAgbURpcnR5SW1hZ2UgPSBmYWxzZTsKIH0KIAotdm9pZCBUZXh0
dXJlOjpwdXNoVGV4dHVyZShJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKm5ld1RleHR1cmUsIGJvb2wg
cmVuZGVyYWJsZSkKK3Vuc2lnbmVkIGludCBUZXh0dXJlOjpnZXRTZXJpYWwoKSBjb25zdAogewot
ICAgIG1CYXNlVGV4dHVyZSA9IG5ld1RleHR1cmU7Ci0gICAgbURpcnR5TWV0YURhdGEgPSBmYWxz
ZTsKLSAgICBtSXNSZW5kZXJhYmxlID0gcmVuZGVyYWJsZTsKLSAgICBtRGlydHkgPSB0cnVlOwor
ICAgIHJldHVybiBtU2VyaWFsOwogfQogCi0KIEdMaW50IFRleHR1cmU6OmNyZWF0aW9uTGV2ZWxz
KEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBtYXhsZXZlbCkgY29uc3QKIHsK
LSAgICBpZiAoaXNQb3cyKHdpZHRoKSAmJiBpc1BvdzIoaGVpZ2h0KSkKKyAgICBpZiAoKGlzUG93
Mih3aWR0aCkgJiYgaXNQb3cyKGhlaWdodCkpIHx8IGdldENvbnRleHQoKS0+c3VwcG9ydHNOb25Q
b3dlcjJUZXh0dXJlKCkpCiAgICAgewogICAgICAgICByZXR1cm4gbWF4bGV2ZWw7CiAgICAgfQpA
QCAtMTE3MiwxNyArMTI2MCwxOCBAQCBHTGludCBUZXh0dXJlOjpjcmVhdGlvbkxldmVscyhHTHNp
emVpIHNpCiAKIGludCBUZXh0dXJlOjpsZXZlbENvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bUJhc2VUZXh0dXJlID8gbUJhc2VUZXh0dXJlLT5HZXRMZXZlbENvdW50KCkgOiAwOworICAgIHJl
dHVybiBnZXRCYXNlVGV4dHVyZSgpID8gZ2V0QmFzZVRleHR1cmUoKS0+R2V0TGV2ZWxDb3VudCgp
IDogMDsKIH0KIAotYm9vbCBUZXh0dXJlOjppc1JlbmRlcmFibGUoKSBjb25zdAordW5zaWduZWQg
aW50IFRleHR1cmU6Omlzc3VlU2VyaWFsKCkKIHsKLSAgICByZXR1cm4gbUlzUmVuZGVyYWJsZTsK
KyAgICByZXR1cm4gbUN1cnJlbnRTZXJpYWwrKzsKIH0KIAogVGV4dHVyZTJEOjpUZXh0dXJlMkQo
R0x1aW50IGlkKSA6IFRleHR1cmUoaWQpCiB7CiAgICAgbVRleHR1cmUgPSBOVUxMOworICAgIG1T
dXJmYWNlID0gTlVMTDsKIH0KIAogVGV4dHVyZTJEOjp+VGV4dHVyZTJEKCkKQEAgLTExOTQsNiAr
MTI4MywxMiBAQCBUZXh0dXJlMkQ6On5UZXh0dXJlMkQoKQogICAgICAgICBtVGV4dHVyZS0+UmVs
ZWFzZSgpOwogICAgICAgICBtVGV4dHVyZSA9IE5VTEw7CiAgICAgfQorCisgICAgaWYgKG1TdXJm
YWNlKQorICAgIHsKKyAgICAgICAgbVN1cmZhY2UtPnNldEJvdW5kVGV4dHVyZShOVUxMKTsKKyAg
ICAgICAgbVN1cmZhY2UgPSBOVUxMOworICAgIH0KIH0KIAogR0xlbnVtIFRleHR1cmUyRDo6Z2V0
VGFyZ2V0KCkgY29uc3QKQEAgLTEyMDEsNDYgKzEyOTYsNjEgQEAgR0xlbnVtIFRleHR1cmUyRDo6
Z2V0VGFyZ2V0KCkgY29uc3QKICAgICByZXR1cm4gR0xfVEVYVFVSRV8yRDsKIH0KIAotR0xlbnVt
IFRleHR1cmUyRDo6Z2V0Rm9ybWF0KCkgY29uc3QKK0dMc2l6ZWkgVGV4dHVyZTJEOjpnZXRXaWR0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbWFnZUFycmF5WzBdLndpZHRoOworfQorCitHTHNp
emVpIFRleHR1cmUyRDo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUltYWdlQXJy
YXlbMF0uaGVpZ2h0OworfQorCitHTGVudW0gVGV4dHVyZTJEOjpnZXRJbnRlcm5hbEZvcm1hdCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1JbWFnZUFycmF5WzBdLmZvcm1hdDsKIH0KIAotLy8gV2hp
bGUgT3BlbkdMIGRvZXNuJ3QgY2hlY2sgdGV4dHVyZSBjb25zaXN0ZW5jeSB1bnRpbCBkcmF3LXRp
bWUsIEQzRDkgcmVxdWlyZXMgYSBjb21wbGV0ZSB0ZXh0dXJlCi0vLyBmb3IgcmVuZGVyLXRvLXRl
eHR1cmUgKHN1Y2ggYXMgQ29weVRleEltYWdlKS4gV2UgaGF2ZSBubyB3YXkgb2Yga2VlcGluZyBp
bmRpdmlkdWFsIGluY29uc2lzdGVudCBsZXZlbHMuCi0vLyBDYWxsIHRoaXMgd2hlbiBhIHBhcnRp
Y3VsYXIgbGV2ZWwgb2YgdGhlIHRleHR1cmUgbXVzdCBiZSBkZWZpbmVkIHdpdGggYSBzcGVjaWZp
YyBmb3JtYXQsIHdpZHRoIGFuZCBoZWlnaHQuCi0vLwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBl
eGlzdGluZyB0ZXh0dXJlIHdhcyB1bnN1aXRhYmxlIGFuZCBoYWQgdG8gYmUgZGVzdHJveWVkLiBJ
ZiBzbywgaXQgd2lsbCBhbHNvIHNldAotLy8gYSBuZXcgaGVpZ2h0IGFuZCB3aWR0aCBmb3IgdGhl
IHRleHR1cmUgYnkgd29ya2luZyBiYWNrd2FyZHMgZnJvbSB0aGUgZ2l2ZW4gd2lkdGggYW5kIGhl
aWdodC4KLWJvb2wgVGV4dHVyZTJEOjpyZWRlZmluZVRleHR1cmUoR0xpbnQgbGV2ZWwsIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSB0
eXBlKQorR0xlbnVtIFRleHR1cmUyRDo6Z2V0VHlwZSgpIGNvbnN0CiB7Ci0gICAgYm9vbCB3aWR0
aE9rYXkgPSAobVdpZHRoID4+IGxldmVsID09IHdpZHRoKTsKLSAgICBib29sIGhlaWdodE9rYXkg
PSAobUhlaWdodCA+PiBsZXZlbCA9PSBoZWlnaHQpOworICAgIHJldHVybiBtSW1hZ2VBcnJheVsw
XS50eXBlOworfQogCi0gICAgYm9vbCBzaXplT2theSA9ICgod2lkdGhPa2F5ICYmIGhlaWdodE9r
YXkpCi0gICAgICAgICAgICAgICAgICAgICB8fCAod2lkdGhPa2F5ICYmIG1IZWlnaHQgPj4gbGV2
ZWwgPT0gMCAmJiBoZWlnaHQgPT0gMSkKLSAgICAgICAgICAgICAgICAgICAgIHx8IChoZWlnaHRP
a2F5ICYmIG1XaWR0aCA+PiBsZXZlbCA9PSAwICYmIHdpZHRoID09IDEpKTsKK0QzREZPUk1BVCBU
ZXh0dXJlMkQ6OmdldEQzREZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbWFnZUFycmF5
WzBdLmdldEQzREZvcm1hdCgpOworfQogCi0gICAgYm9vbCB0eXBlT2theSA9ICh0eXBlID09IG1U
eXBlKTsKK3ZvaWQgVGV4dHVyZTJEOjpyZWRlZmluZVRleHR1cmUoR0xpbnQgbGV2ZWwsIEdMZW51
bSBmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gdHlwZSwgYm9v
bCBmb3JjZVJlZGVmaW5lKQoreworICAgIEdMc2l6ZWkgdGV4dHVyZVdpZHRoID0gbUltYWdlQXJy
YXlbMF0ud2lkdGg7CisgICAgR0xzaXplaSB0ZXh0dXJlSGVpZ2h0ID0gbUltYWdlQXJyYXlbMF0u
aGVpZ2h0OworICAgIEdMZW51bSB0ZXh0dXJlRm9ybWF0ID0gbUltYWdlQXJyYXlbMF0uZm9ybWF0
OworICAgIEdMZW51bSB0ZXh0dXJlVHlwZSA9IG1JbWFnZUFycmF5WzBdLnR5cGU7CiAKLSAgICBi
b29sIHRleHR1cmVPa2F5ID0gKHNpemVPa2F5ICYmIHR5cGVPa2F5ICYmIGludGVybmFsRm9ybWF0
ID09IG1JbWFnZUFycmF5WzBdLmZvcm1hdCk7CisgICAgbUltYWdlQXJyYXlbbGV2ZWxdLndpZHRo
ID0gd2lkdGg7CisgICAgbUltYWdlQXJyYXlbbGV2ZWxdLmhlaWdodCA9IGhlaWdodDsKKyAgICBt
SW1hZ2VBcnJheVtsZXZlbF0uZm9ybWF0ID0gZm9ybWF0OworICAgIG1JbWFnZUFycmF5W2xldmVs
XS50eXBlID0gdHlwZTsKIAotICAgIGlmICghdGV4dHVyZU9rYXkpCisgICAgaWYgKCFtVGV4dHVy
ZSkKICAgICB7Ci0gICAgICAgIFRSQUNFKCJSZWRlZmluaW5nIDJEIHRleHR1cmUgKCVkLCAweCUw
NFgsICVkLCAlZCA9PiAweCUwNFgsICVkLCAlZCkuIiwgbGV2ZWwsCi0gICAgICAgICAgICAgIG1J
bWFnZUFycmF5WzBdLmZvcm1hdCwgbVdpZHRoLCBtSGVpZ2h0LAotICAgICAgICAgICAgICBpbnRl
cm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAg
ICAgICAgLy8gUHVyZ2UgYWxsIHRoZSBsZXZlbHMgYW5kIHRoZSB0ZXh0dXJlLgorICAgIGJvb2wg
d2lkdGhPa2F5ID0gKHRleHR1cmVXaWR0aCA+PiBsZXZlbCA9PSB3aWR0aCkgfHwgKHRleHR1cmVX
aWR0aCA+PiBsZXZlbCA9PSAwICYmIHdpZHRoID09IDEpOworICAgIGJvb2wgaGVpZ2h0T2theSA9
ICh0ZXh0dXJlSGVpZ2h0ID4+IGxldmVsID09IGhlaWdodCkgfHwgKHRleHR1cmVIZWlnaHQgPj4g
bGV2ZWwgPT0gMCAmJiBoZWlnaHQgPT0gMSk7CisgICAgYm9vbCB0ZXh0dXJlT2theSA9ICh3aWR0
aE9rYXkgJiYgaGVpZ2h0T2theSAmJiB0ZXh0dXJlRm9ybWF0ID09IGZvcm1hdCAmJiB0ZXh0dXJl
VHlwZSA9PSB0eXBlKTsKIAorICAgIGlmICghdGV4dHVyZU9rYXkgfHwgZm9yY2VSZWRlZmluZSB8
fCBtU3VyZmFjZSkgICAvLyBQdXJnZSBhbGwgdGhlIGxldmVscyBhbmQgdGhlIHRleHR1cmUuCisg
ICAgewogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IElNUExFTUVOVEFUSU9OX01BWF9URVhU
VVJFX0xFVkVMUzsgaSsrKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobUltYWdlQXJyYXlb
aV0uc3VyZmFjZSAhPSBOVUxMKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1JbWFn
ZUFycmF5W2ldLmRpcnR5ID0gZmFsc2U7Ci0KICAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtp
XS5zdXJmYWNlLT5SZWxlYXNlKCk7CiAgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0uc3Vy
ZmFjZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0uZGlydHkgPSB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTEyNDgsMzAgKzEzNTgsNjUgQEAgYm9v
bCBUZXh0dXJlMkQ6OnJlZGVmaW5lVGV4dHVyZShHTGludCBsZQogICAgICAgICB7CiAgICAgICAg
ICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOwogICAgICAgICAgICAgbVRleHR1cmUgPSBOVUxMOwot
ICAgICAgICAgICAgZHJvcFRleHR1cmUoKTsKKyAgICAgICAgICAgIG1EaXJ0eUltYWdlID0gdHJ1
ZTsKKyAgICAgICAgICAgIG1Jc1JlbmRlcmFibGUgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChtU3VyZmFjZSkKKyAgICAgICAgeworICAgICAgICAgICAgbVN1cmZhY2UtPnNldEJv
dW5kVGV4dHVyZShOVUxMKTsKKyAgICAgICAgICAgIG1TdXJmYWNlID0gTlVMTDsKICAgICAgICAg
fQogCi0gICAgICAgIG1XaWR0aCA9IHdpZHRoIDw8IGxldmVsOwotICAgICAgICBtSGVpZ2h0ID0g
aGVpZ2h0IDw8IGxldmVsOwotICAgICAgICBtSW1hZ2VBcnJheVswXS5mb3JtYXQgPSBpbnRlcm5h
bEZvcm1hdDsKLSAgICAgICAgbVR5cGUgPSB0eXBlOworICAgICAgICBtQ29sb3JidWZmZXJQcm94
eS5zZXQoTlVMTCk7CiAgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6c2V0SW1hZ2UoR0xpbnQg
bGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCit7Cisg
ICAgcmVkZWZpbmVUZXh0dXJlKGxldmVsLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHR5cGUsIGZh
bHNlKTsKIAotICAgIHJldHVybiAhdGV4dHVyZU9rYXk7CisgICAgVGV4dHVyZTo6c2V0SW1hZ2Uo
dW5wYWNrQWxpZ25tZW50LCBwaXhlbHMsICZtSW1hZ2VBcnJheVtsZXZlbF0pOwogfQogCi12b2lk
IFRleHR1cmUyRDo6c2V0SW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscykKK3ZvaWQgVGV4dHVy
ZTJEOjpiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQogewotICAgIHJlZGVmaW5l
VGV4dHVyZShsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHR5cGUpOworICAg
IEdMZW51bSBmb3JtYXQ7CisKKyAgICBzd2l0Y2goc3VyZmFjZS0+Z2V0Rm9ybWF0KCkpCisgICAg
eworICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICAgIGZvcm1hdCA9IEdMX1JHQkE7
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6CisgICAgICAgIGZv
cm1hdCA9IEdMX1JHQjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZWRlZmluZVRl
eHR1cmUoMCwgZm9ybWF0LCBzdXJmYWNlLT5nZXRXaWR0aCgpLCBzdXJmYWNlLT5nZXRIZWlnaHQo
KSwgR0xfVU5TSUdORURfQllURSwgdHJ1ZSk7CisKKyAgICBJRGlyZWN0M0RUZXh0dXJlOSAqdGV4
dHVyZSA9IHN1cmZhY2UtPmdldE9mZnNjcmVlblRleHR1cmUoKTsKKworICAgIG1UZXh0dXJlID0g
dGV4dHVyZTsKKyAgICBtRGlydHlJbWFnZSA9IHRydWU7CisgICAgbUlzUmVuZGVyYWJsZSA9IHRy
dWU7CisgICAgbVN1cmZhY2UgPSBzdXJmYWNlOworICAgIG1TdXJmYWNlLT5zZXRCb3VuZFRleHR1
cmUodGhpcyk7Cit9CiAKLSAgICBUZXh0dXJlOjpzZXRJbWFnZSh3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCAmbUltYWdlQXJyYXlbbGV2ZWxdKTsK
K3ZvaWQgVGV4dHVyZTJEOjpyZWxlYXNlVGV4SW1hZ2UoKQoreworICAgIHJlZGVmaW5lVGV4dHVy
ZSgwLCBHTF9SR0IsIDAsIDAsIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUpOwogfQogCi12b2lkIFRl
eHR1cmUyRDo6c2V0Q29tcHJlc3NlZEltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGltYWdlU2l6ZSwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBUZXh0dXJlMkQ6OnNldENvbXByZXNzZWRJbWFnZShH
TGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCiB7Ci0gICAgcmVkZWZpbmVU
ZXh0dXJlKGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgR0xfVU5TSUdORURf
QllURSk7CisgICAgcmVkZWZpbmVUZXh0dXJlKGxldmVsLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlKTsKIAotICAgIFRleHR1cmU6OnNldENvbXByZXNzZWRJ
bWFnZSh3aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbEZvcm1hdCwgaW1hZ2VTaXplLCBwaXhlbHMsICZt
SW1hZ2VBcnJheVtsZXZlbF0pOworICAgIFRleHR1cmU6OnNldENvbXByZXNzZWRJbWFnZShpbWFn
ZVNpemUsIHBpeGVscywgJm1JbWFnZUFycmF5W2xldmVsXSk7CiB9CiAKIHZvaWQgVGV4dHVyZTJE
Ojpjb21taXRSZWN0KEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKQEAgLTEyODcsMjQgKzE0MzIsMjAgQEAgdm9p
ZCBUZXh0dXJlMkQ6OmNvbW1pdFJlY3QoR0xpbnQgbGV2ZWwsIAogCiAgICAgICAgIGlmIChTVUND
RUVERUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgSW1hZ2UgKmltZyA9ICZtSW1h
Z2VBcnJheVtsZXZlbF07CisgICAgICAgICAgICBJbWFnZSAqaW1hZ2UgPSAmbUltYWdlQXJyYXlb
bGV2ZWxdOwogCi0gICAgICAgICAgICBSRUNUIHNvdXJjZVJlY3Q7Ci0gICAgICAgICAgICBzb3Vy
Y2VSZWN0LmxlZnQgPSB4b2Zmc2V0OwotICAgICAgICAgICAgc291cmNlUmVjdC50b3AgPSB5b2Zm
c2V0OwotICAgICAgICAgICAgc291cmNlUmVjdC5yaWdodCA9IHhvZmZzZXQgKyB3aWR0aDsKLSAg
ICAgICAgICAgIHNvdXJjZVJlY3QuYm90dG9tID0geW9mZnNldCArIGhlaWdodDsKKyAgICAgICAg
ICAgIFJFQ1Qgc291cmNlUmVjdCA9IHRyYW5zZm9ybVBpeGVsUmVjdCh4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBpbWFnZS0+aGVpZ2h0KTs7CiAKICAgICAgICAgICAgIFBPSU5UIGRl
c3RQb2ludDsKLSAgICAgICAgICAgIGRlc3RQb2ludC54ID0geG9mZnNldDsKLSAgICAgICAgICAg
IGRlc3RQb2ludC55ID0geW9mZnNldDsKKyAgICAgICAgICAgIGRlc3RQb2ludC54ID0gc291cmNl
UmVjdC5sZWZ0OworICAgICAgICAgICAgZGVzdFBvaW50LnkgPSBzb3VyY2VSZWN0LnRvcDsKIAot
ICAgICAgICAgICAgcmVzdWx0ID0gZ2V0RGV2aWNlKCktPlVwZGF0ZVN1cmZhY2UoaW1nLT5zdXJm
YWNlLCAmc291cmNlUmVjdCwgZGVzdExldmVsLCAmZGVzdFBvaW50KTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IGdldERldmljZSgpLT5VcGRhdGVTdXJmYWNlKGltYWdlLT5zdXJmYWNlLCAmc291cmNl
UmVjdCwgZGVzdExldmVsLCAmZGVzdFBvaW50KTsKICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVE
RUQocmVzdWx0KSk7CiAKICAgICAgICAgICAgIGRlc3RMZXZlbC0+UmVsZWFzZSgpOwogCi0gICAg
ICAgICAgICBpbWctPmRpcnR5ID0gZmFsc2U7CisgICAgICAgICAgICBpbWFnZS0+ZGlydHkgPSBm
YWxzZTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEzMjUsNyArMTQ2Niw3IEBAIHZvaWQgVGV4
dHVyZTJEOjpzdWJJbWFnZUNvbXByZXNzZWQoR0xpbnQKICAgICB9CiB9CiAKLXZvaWQgVGV4dHVy
ZTJEOjpjb3B5SW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xpbnQg
eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIFJlbmRlcmJ1ZmZlclN0
b3JhZ2UgKnNvdXJjZSkKK3ZvaWQgVGV4dHVyZTJEOjpjb3B5SW1hZ2UoR0xpbnQgbGV2ZWwsIEdM
ZW51bSBmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKQogewogICAgIElEaXJlY3QzRFN1cmZhY2U5ICpyZW5k
ZXJUYXJnZXQgPSBzb3VyY2UtPmdldFJlbmRlclRhcmdldCgpOwogCkBAIC0xMzM1LDQ2ICsxNDc2
LDQxIEBAIHZvaWQgVGV4dHVyZTJEOjpjb3B5SW1hZ2UoR0xpbnQgbGV2ZWwsIEcKICAgICAgICAg
cmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgIH0KIAotICAgIGJvb2wgcmVkZWZp
bmVkID0gcmVkZWZpbmVUZXh0dXJlKGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgbVR5cGUpOworICAgIHJlZGVmaW5lVGV4dHVyZShsZXZlbCwgZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSk7CiAgICAKLSAgICBpZiAoIWlzUmVuZGVyYWJs
ZUZvcm1hdCgpKQorICAgIGlmICghbUltYWdlQXJyYXlbbGV2ZWxdLmlzUmVuZGVyYWJsZSgpKQog
ICAgIHsKLSAgICAgICAgY29weU5vblJlbmRlcmFibGUoJm1JbWFnZUFycmF5W2xldmVsXSwgaW50
ZXJuYWxGb3JtYXQsIDAsIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHJlbmRlclRhcmdldCk7Cisg
ICAgICAgIGNvcHlUb0ltYWdlKCZtSW1hZ2VBcnJheVtsZXZlbF0sIDAsIDAsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIHJlbmRlclRhcmdldCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAg
IGlmIChyZWRlZmluZWQpCisgICAgICAgIGlmICghbVRleHR1cmUgfHwgIW1Jc1JlbmRlcmFibGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOwotICAgICAg
ICAgICAgcHVzaFRleHR1cmUobVRleHR1cmUsIHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgewotICAgICAgICAgICAgbmVlZFJlbmRlclRhcmdldCgpOwogICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB1cGRhdGVUZXh0dXJlKCk7CiAKICAgICAgICAgaWYgKHdpZHRo
ICE9IDAgJiYgaGVpZ2h0ICE9IDAgJiYgbGV2ZWwgPCBsZXZlbENvdW50KCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFJFQ1Qgc291cmNlUmVjdDsKLSAgICAgICAgICAgIHNvdXJjZVJlY3QubGVm
dCA9IHg7Ci0gICAgICAgICAgICBzb3VyY2VSZWN0LnJpZ2h0ID0geCArIHdpZHRoOwotICAgICAg
ICAgICAgc291cmNlUmVjdC50b3AgPSB5OwotICAgICAgICAgICAgc291cmNlUmVjdC5ib3R0b20g
PSB5ICsgaGVpZ2h0OworICAgICAgICAgICAgUkVDVCBzb3VyY2VSZWN0ID0gdHJhbnNmb3JtUGl4
ZWxSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZS0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0
SGVpZ2h0KCkpOworICAgICAgICAgICAgc291cmNlUmVjdC5sZWZ0ID0gY2xhbXAoc291cmNlUmVj
dC5sZWZ0LCAwLCBzb3VyY2UtPmdldENvbG9yYnVmZmVyKCktPmdldFdpZHRoKCkpOworICAgICAg
ICAgICAgc291cmNlUmVjdC50b3AgPSBjbGFtcChzb3VyY2VSZWN0LnRvcCwgMCwgc291cmNlLT5n
ZXRDb2xvcmJ1ZmZlcigpLT5nZXRIZWlnaHQoKSk7CisgICAgICAgICAgICBzb3VyY2VSZWN0LnJp
Z2h0ID0gY2xhbXAoc291cmNlUmVjdC5yaWdodCwgMCwgc291cmNlLT5nZXRDb2xvcmJ1ZmZlcigp
LT5nZXRXaWR0aCgpKTsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QuYm90dG9tID0gY2xhbXAoc291
cmNlUmVjdC5ib3R0b20sIDAsIHNvdXJjZS0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0SGVpZ2h0KCkp
OwogCisgICAgICAgICAgICBHTGludCBkZXN0WU9mZnNldCA9IHRyYW5zZm9ybVBpeGVsWU9mZnNl
dCgwLCBoZWlnaHQsIG1JbWFnZUFycmF5W2xldmVsXS5oZWlnaHQpOworICAgICAgICAgICAgCiAg
ICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdDsKICAgICAgICAgICAgIEhSRVNVTFQg
aHIgPSBtVGV4dHVyZS0+R2V0U3VyZmFjZUxldmVsKGxldmVsLCAmZGVzdCk7CiAKLSAgICAgICAg
ICAgIGdldEJsaXR0ZXIoKS0+Zm9ybWF0Q29udmVydChzb3VyY2UtPmdldFJlbmRlclRhcmdldCgp
LCBzb3VyY2VSZWN0LCBpbnRlcm5hbEZvcm1hdCwgMCwgMCwgZGVzdCk7CisgICAgICAgICAgICBn
ZXRCbGl0dGVyKCktPmNvcHkoc291cmNlLT5nZXRSZW5kZXJUYXJnZXQoKSwgc291cmNlUmVjdCwg
Zm9ybWF0LCAwLCBkZXN0WU9mZnNldCwgZGVzdCk7CiAgICAgICAgICAgICBkZXN0LT5SZWxlYXNl
KCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBtSW1hZ2VBcnJheVtsZXZlbF0ud2lkdGggPSB3
aWR0aDsKLSAgICBtSW1hZ2VBcnJheVtsZXZlbF0uaGVpZ2h0ID0gaGVpZ2h0OwotICAgIG1JbWFn
ZUFycmF5W2xldmVsXS5mb3JtYXQgPSBpbnRlcm5hbEZvcm1hdDsKIH0KIAotdm9pZCBUZXh0dXJl
MkQ6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIFJlbmRlcmJ1ZmZlclN0b3JhZ2UgKnNvdXJjZSkKK3ZvaWQgVGV4dHVyZTJEOjpj
b3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKQogewogICAgIGlmICh4b2Zmc2V0ICsgd2lkdGggPiBt
SW1hZ2VBcnJheVtsZXZlbF0ud2lkdGggfHwgeW9mZnNldCArIGhlaWdodCA+IG1JbWFnZUFycmF5
W2xldmVsXS5oZWlnaHQpCiAgICAgewpAQCAtMTM4OSwzNiArMTUyNSwzNSBAQCB2b2lkIFRleHR1
cmUyRDo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnCiAgICAgICAgIHJldHVybiBlcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKICAgICB9CiAKLSAgICBib29sIHJlZGVmaW5lZCA9IHJlZGVmaW5lVGV4
dHVyZSgwLCBtSW1hZ2VBcnJheVswXS5mb3JtYXQsIG1JbWFnZUFycmF5WzBdLndpZHRoLCBtSW1h
Z2VBcnJheVswXS5oZWlnaHQsIG1UeXBlKTsKKyAgICByZWRlZmluZVRleHR1cmUobGV2ZWwsIG1J
bWFnZUFycmF5W2xldmVsXS5mb3JtYXQsIG1JbWFnZUFycmF5W2xldmVsXS53aWR0aCwgbUltYWdl
QXJyYXlbbGV2ZWxdLmhlaWdodCwgR0xfVU5TSUdORURfQllURSwgZmFsc2UpOwogICAgCi0gICAg
aWYgKCFpc1JlbmRlcmFibGVGb3JtYXQoKSkKKyAgICBpZiAoIW1JbWFnZUFycmF5W2xldmVsXS5p
c1JlbmRlcmFibGUoKSB8fCAoIW1UZXh0dXJlICYmICFpc0NvbXBsZXRlKCkpKQogICAgIHsKLSAg
ICAgICAgY29weU5vblJlbmRlcmFibGUoJm1JbWFnZUFycmF5W2xldmVsXSwgZ2V0Rm9ybWF0KCks
IHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHJlbmRlclRhcmdldCk7Cisg
ICAgICAgIGNvcHlUb0ltYWdlKCZtSW1hZ2VBcnJheVtsZXZlbF0sIHhvZmZzZXQsIHlvZmZzZXQs
IHgsIHksIHdpZHRoLCBoZWlnaHQsIHJlbmRlclRhcmdldCk7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIGlmIChyZWRlZmluZWQpCisgICAgICAgIGlmICghbVRleHR1cmUgfHwgIW1J
c1JlbmRlcmFibGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnZlcnRUb1JlbmRlclRhcmdl
dCgpOwotICAgICAgICAgICAgcHVzaFRleHR1cmUobVRleHR1cmUsIHRydWUpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgbmVlZFJlbmRlclRhcmdldCgp
OwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1cGRhdGVUZXh0dXJlKCk7CiAKICAgICAg
ICAgaWYgKGxldmVsIDwgbGV2ZWxDb3VudCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBSRUNU
IHNvdXJjZVJlY3Q7Ci0gICAgICAgICAgICBzb3VyY2VSZWN0LmxlZnQgPSB4OwotICAgICAgICAg
ICAgc291cmNlUmVjdC5yaWdodCA9IHggKyB3aWR0aDsKLSAgICAgICAgICAgIHNvdXJjZVJlY3Qu
dG9wID0geTsKLSAgICAgICAgICAgIHNvdXJjZVJlY3QuYm90dG9tID0geSArIGhlaWdodDsKKyAg
ICAgICAgICAgIFJFQ1Qgc291cmNlUmVjdCA9IHRyYW5zZm9ybVBpeGVsUmVjdCh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2UtPmdldENvbG9yYnVmZmVyKCktPmdldEhlaWdodCgpKTsKKyAgICAg
ICAgICAgIHNvdXJjZVJlY3QubGVmdCA9IGNsYW1wKHNvdXJjZVJlY3QubGVmdCwgMCwgc291cmNl
LT5nZXRDb2xvcmJ1ZmZlcigpLT5nZXRXaWR0aCgpKTsKKyAgICAgICAgICAgIHNvdXJjZVJlY3Qu
dG9wID0gY2xhbXAoc291cmNlUmVjdC50b3AsIDAsIHNvdXJjZS0+Z2V0Q29sb3JidWZmZXIoKS0+
Z2V0SGVpZ2h0KCkpOworICAgICAgICAgICAgc291cmNlUmVjdC5yaWdodCA9IGNsYW1wKHNvdXJj
ZVJlY3QucmlnaHQsIDAsIHNvdXJjZS0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0V2lkdGgoKSk7Cisg
ICAgICAgICAgICBzb3VyY2VSZWN0LmJvdHRvbSA9IGNsYW1wKHNvdXJjZVJlY3QuYm90dG9tLCAw
LCBzb3VyY2UtPmdldENvbG9yYnVmZmVyKCktPmdldEhlaWdodCgpKTsKKworICAgICAgICAgICAg
R0xpbnQgZGVzdFlPZmZzZXQgPSB0cmFuc2Zvcm1QaXhlbFlPZmZzZXQoeW9mZnNldCwgaGVpZ2h0
LCBtSW1hZ2VBcnJheVtsZXZlbF0uaGVpZ2h0KTsKIAogICAgICAgICAgICAgSURpcmVjdDNEU3Vy
ZmFjZTkgKmRlc3Q7CiAgICAgICAgICAgICBIUkVTVUxUIGhyID0gbVRleHR1cmUtPkdldFN1cmZh
Y2VMZXZlbChsZXZlbCwgJmRlc3QpOwogCi0gICAgICAgICAgICBnZXRCbGl0dGVyKCktPmZvcm1h
dENvbnZlcnQoc291cmNlLT5nZXRSZW5kZXJUYXJnZXQoKSwgc291cmNlUmVjdCwgbUltYWdlQXJy
YXlbMF0uZm9ybWF0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBkZXN0KTsKKyAgICAgICAgICAgIGdldEJs
aXR0ZXIoKS0+Y29weShzb3VyY2UtPmdldFJlbmRlclRhcmdldCgpLCBzb3VyY2VSZWN0LCBtSW1h
Z2VBcnJheVswXS5mb3JtYXQsIHhvZmZzZXQsIGRlc3RZT2Zmc2V0LCBkZXN0KTsKICAgICAgICAg
ICAgIGRlc3QtPlJlbGVhc2UoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE0NTIsOCArMTU4Nyw4
IEBAIGJvb2wgVGV4dHVyZTJEOjppc0NvbXBsZXRlKCkgY29uc3QKICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKICAgICB9CiAKLSAgICBpZiAoKGdldEZvcm1hdCgpID09IEdMX0ZMT0FUICYm
ICFnZXRDb250ZXh0KCktPnN1cHBvcnRzRmxvYXRMaW5lYXJGaWx0ZXIoKSkgfHwKLSAgICAgICAg
KGdldEZvcm1hdCgpID09IEdMX0hBTEZfRkxPQVRfT0VTICYmICFnZXRDb250ZXh0KCktPnN1cHBv
cnRzSGFsZkZsb2F0TGluZWFyRmlsdGVyKCkpKQorICAgIGlmICgoZ2V0SW50ZXJuYWxGb3JtYXQo
KSA9PSBHTF9GTE9BVCAmJiAhZ2V0Q29udGV4dCgpLT5zdXBwb3J0c0Zsb2F0TGluZWFyRmlsdGVy
KCkpIHx8CisgICAgICAgIChnZXRJbnRlcm5hbEZvcm1hdCgpID09IEdMX0hBTEZfRkxPQVRfT0VT
ICYmICFnZXRDb250ZXh0KCktPnN1cHBvcnRzSGFsZkZsb2F0TGluZWFyRmlsdGVyKCkpKQogICAg
IHsKICAgICAgICAgaWYgKG1NYWdGaWx0ZXIgIT0gR0xfTkVBUkVTVCB8fCAobU1pbkZpbHRlciAh
PSBHTF9ORUFSRVNUICYmIG1NaW5GaWx0ZXIgIT0gR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCkp
CiAgICAgICAgIHsKQEAgLTE0NjEsMTggKzE1OTYsMjUgQEAgYm9vbCBUZXh0dXJlMkQ6OmlzQ29t
cGxldGUoKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBucG90ID0gZ2V0Q29u
dGV4dCgpLT5zdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKTsKIAotICAgIGlmICgoZ2V0V3JhcFMo
KSAhPSBHTF9DTEFNUF9UT19FREdFICYmICFpc1BvdzIod2lkdGgpKQotICAgICAgICB8fCAoZ2V0
V3JhcFQoKSAhPSBHTF9DTEFNUF9UT19FREdFICYmICFpc1BvdzIoaGVpZ2h0KSkpCisgICAgaWYg
KCFucG90KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoKGdldFdy
YXBTKCkgIT0gR0xfQ0xBTVBfVE9fRURHRSAmJiAhaXNQb3cyKHdpZHRoKSkgfHwKKyAgICAgICAg
ICAgIChnZXRXcmFwVCgpICE9IEdMX0NMQU1QX1RPX0VER0UgJiYgIWlzUG93MihoZWlnaHQpKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKG1pcG1hcHBpbmcpCiAgICAgewotICAgICAgICBpZiAoIWlzUG93Mih3aWR0aCkg
fHwgIWlzUG93MihoZWlnaHQpKQorICAgICAgICBpZiAoIW5wb3QpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghaXNQb3cyKHdpZHRoKSB8fCAh
aXNQb3cyKGhlaWdodCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaW50IHEgPSBsb2cyKHN0
ZDo6bWF4KHdpZHRoLCBoZWlnaHQpKTsKQEAgLTE0ODQsNiArMTYyNiwxMSBAQCBib29sIFRleHR1
cmUyRDo6aXNDb21wbGV0ZSgpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAobUltYWdlQXJyYXlbbGV2ZWxdLnR5cGUg
IT0gbUltYWdlQXJyYXlbMF0udHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJh
eVtsZXZlbF0ud2lkdGggIT0gc3RkOjptYXgoMSwgd2lkdGggPj4gbGV2ZWwpKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1MDEsMjggKzE2NDgsMzgg
QEAgYm9vbCBUZXh0dXJlMkQ6OmlzQ29tcGxldGUoKSBjb25zdAogCiBib29sIFRleHR1cmUyRDo6
aXNDb21wcmVzc2VkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gSXNDb21wcmVzc2VkKGdldEZvcm1h
dCgpKTsKKyAgICByZXR1cm4gSXNDb21wcmVzc2VkKGdldEludGVybmFsRm9ybWF0KCkpOwogfQog
Ci0vLyBDb25zdHJ1Y3RzIGEgRGlyZWN0M0QgOSB0ZXh0dXJlIHJlc291cmNlIGZyb20gdGhlIHRl
eHR1cmUgaW1hZ2VzLCBvciByZXR1cm5zIGFuIGV4aXN0aW5nIG9uZQotSURpcmVjdDNEQmFzZVRl
eHR1cmU5ICpUZXh0dXJlMkQ6OmNyZWF0ZVRleHR1cmUoKQorSURpcmVjdDNEQmFzZVRleHR1cmU5
ICpUZXh0dXJlMkQ6OmdldEJhc2VUZXh0dXJlKCkgY29uc3QKIHsKLSAgICBJRGlyZWN0M0RUZXh0
dXJlOSAqdGV4dHVyZTsKKyAgICByZXR1cm4gbVRleHR1cmU7Cit9CiAKKy8vIENvbnN0cnVjdHMg
YSBEaXJlY3QzRCA5IHRleHR1cmUgcmVzb3VyY2UgZnJvbSB0aGUgdGV4dHVyZSBpbWFnZXMKK3Zv
aWQgVGV4dHVyZTJEOjpjcmVhdGVUZXh0dXJlKCkKK3sKICAgICBJRGlyZWN0M0REZXZpY2U5ICpk
ZXZpY2UgPSBnZXREZXZpY2UoKTsKLSAgICBEM0RGT1JNQVQgZm9ybWF0ID0gc2VsZWN0Rm9ybWF0
KG1JbWFnZUFycmF5WzBdLmZvcm1hdCwgbVR5cGUpOworICAgIEQzREZPUk1BVCBmb3JtYXQgPSBt
SW1hZ2VBcnJheVswXS5nZXREM0RGb3JtYXQoKTsKKyAgICBHTGludCBsZXZlbHMgPSBjcmVhdGlv
bkxldmVscyhtSW1hZ2VBcnJheVswXS53aWR0aCwgbUltYWdlQXJyYXlbMF0uaGVpZ2h0LCAwKTsK
IAotICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlKG1XaWR0aCwgbUhl
aWdodCwgY3JlYXRpb25MZXZlbHMobVdpZHRoLCBtSGVpZ2h0LCAwKSwgMCwgZm9ybWF0LCBEM0RQ
T09MX0RFRkFVTFQsICZ0ZXh0dXJlLCBOVUxMKTsKKyAgICBJRGlyZWN0M0RUZXh0dXJlOSAqdGV4
dHVyZSA9IE5VTEw7CisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUo
bUltYWdlQXJyYXlbMF0ud2lkdGgsIG1JbWFnZUFycmF5WzBdLmhlaWdodCwgbGV2ZWxzLCAwLCBm
b3JtYXQsIEQzRFBPT0xfREVGQVVMVCwgJnRleHR1cmUsIE5VTEwpOwogCiAgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZW
SURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0gICAgICAgIHJldHVybiBl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAoSURpcmVjdDNEQmFzZVRleHR1cmU5KilOVUxMKTsKKyAg
ICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIGlmICht
VGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1UZXh0dXJlLT5SZWxlYXNlKCk7CiAgICAgfQogCi0g
ICAgaWYgKG1UZXh0dXJlKSBtVGV4dHVyZS0+UmVsZWFzZSgpOwogICAgIG1UZXh0dXJlID0gdGV4
dHVyZTsKLSAgICByZXR1cm4gdGV4dHVyZTsKKyAgICBtRGlydHlJbWFnZSA9IHRydWU7CisgICAg
bUlzUmVuZGVyYWJsZSA9IGZhbHNlOwogfQogCiB2b2lkIFRleHR1cmUyRDo6dXBkYXRlVGV4dHVy
ZSgpCkBAIC0xNTMzLDcgKzE2OTAsNyBAQCB2b2lkIFRleHR1cmUyRDo6dXBkYXRlVGV4dHVyZSgp
CiAKICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQogICAg
IHsKLSAgICAgICAgaWYgKG1JbWFnZUFycmF5W2xldmVsXS5kaXJ0eSkKKyAgICAgICAgaWYgKG1J
bWFnZUFycmF5W2xldmVsXS5zdXJmYWNlICYmIG1JbWFnZUFycmF5W2xldmVsXS5kaXJ0eSkKICAg
ICAgICAgewogICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmxldmVsU3VyZmFjZSA9IE5V
TEw7CiAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1UZXh0dXJlLT5HZXRTdXJmYWNlTGV2
ZWwobGV2ZWwsICZsZXZlbFN1cmZhY2UpOwpAQCAtMTU1MywyMiArMTcxMCwyMyBAQCB2b2lkIFRl
eHR1cmUyRDo6dXBkYXRlVGV4dHVyZSgpCiAgICAgfQogfQogCi1JRGlyZWN0M0RCYXNlVGV4dHVy
ZTkgKlRleHR1cmUyRDo6Y29udmVydFRvUmVuZGVyVGFyZ2V0KCkKK3ZvaWQgVGV4dHVyZTJEOjpj
b252ZXJ0VG9SZW5kZXJUYXJnZXQoKQogewogICAgIElEaXJlY3QzRFRleHR1cmU5ICp0ZXh0dXJl
ID0gTlVMTDsKIAotICAgIGlmIChtV2lkdGggIT0gMCAmJiBtSGVpZ2h0ICE9IDApCisgICAgaWYg
KG1JbWFnZUFycmF5WzBdLndpZHRoICE9IDAgJiYgbUltYWdlQXJyYXlbMF0uaGVpZ2h0ICE9IDAp
CiAgICAgewogICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBnZXREaXNwbGF5KCk7CiAg
ICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IGdldERldmljZSgpOwotICAgICAgICBE
M0RGT1JNQVQgZm9ybWF0ID0gc2VsZWN0Rm9ybWF0KG1JbWFnZUFycmF5WzBdLmZvcm1hdCwgbVR5
cGUpOworICAgICAgICBEM0RGT1JNQVQgZm9ybWF0ID0gbUltYWdlQXJyYXlbMF0uZ2V0RDNERm9y
bWF0KCk7CisgICAgICAgIEdMaW50IGxldmVscyA9IGNyZWF0aW9uTGV2ZWxzKG1JbWFnZUFycmF5
WzBdLndpZHRoLCBtSW1hZ2VBcnJheVswXS5oZWlnaHQsIDApOwogCi0gICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlKG1XaWR0aCwgbUhlaWdodCwgY3JlYXRpb25M
ZXZlbHMobVdpZHRoLCBtSGVpZ2h0LCAwKSwgRDNEVVNBR0VfUkVOREVSVEFSR0VULCBmb3JtYXQs
IEQzRFBPT0xfREVGQVVMVCwgJnRleHR1cmUsIE5VTEwpOworICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZShtSW1hZ2VBcnJheVswXS53aWR0aCwgbUltYWdlQXJy
YXlbMF0uaGVpZ2h0LCBsZXZlbHMsIEQzRFVTQUdFX1JFTkRFUlRBUkdFVCwgZm9ybWF0LCBEM0RQ
T09MX0RFRkFVTFQsICZ0ZXh0dXJlLCBOVUxMKTsKIAogICAgICAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9G
VklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOwotICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlksIChJRGlyZWN0M0RCYXNlVGV4dHVyZTkqKU5VTEwp
OworICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKG1UZXh0dXJlICE9IE5VTEwpCkBAIC0xNTg1LDcgKzE3NDMsNyBAQCBJ
RGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmUyRDo6Y29udmVyCiAKICAgICAgICAgICAgICAg
ICAgICAgdGV4dHVyZS0+UmVsZWFzZSgpOwogCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAoSURpcmVjdDNEQmFzZVRleHR1cmU5KilOVUxMKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0OwpA
QCAtMTU5OCw3ICsxNzU2LDcgQEAgSURpcmVjdDNEQmFzZVRleHR1cmU5ICpUZXh0dXJlMkQ6OmNv
bnZlcgogICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5SZWxlYXNlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZS0+UmVsZWFzZSgpOwogCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAoSURpcmVjdDNEQmFzZVRleHR1cmU5KilOVUxMKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGRpc3BsYXktPmVuZFNjZW5lKCk7CkBA
IC0xNjEyLDcgKzE3NzAsNyBAQCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmUyRDo6Y29u
dmVyCiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS0+UmVsZWFzZSgpOwogICAgICAgICAgICAg
ICAgICAgICBkZXN0LT5SZWxlYXNlKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX09VVF9PRl9NRU1PUlksIChJRGlyZWN0M0RCYXNlVGV4dHVyZTkqKU5VTEwpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CkBAIC0xNjI3
LDMwICsxNzg1LDIyIEBAIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqVGV4dHVyZTJEOjpjb252ZXIK
ICAgICB9CiAKICAgICBtVGV4dHVyZSA9IHRleHR1cmU7Ci0gICAgcmV0dXJuIG1UZXh0dXJlOwot
fQotCi1ib29sIFRleHR1cmUyRDo6ZGlydHlJbWFnZURhdGEoKSBjb25zdAotewotICAgIGludCBx
ID0gbG9nMihzdGQ6Om1heChtV2lkdGgsIG1IZWlnaHQpKTsKLQotICAgIGZvciAoaW50IGkgPSAw
OyBpIDw9IHE7IGkrKykKLSAgICB7Ci0gICAgICAgIGlmIChtSW1hZ2VBcnJheVtpXS5kaXJ0eSkg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIG1EaXJ0eUltYWdl
ID0gdHJ1ZTsKKyAgICBtSXNSZW5kZXJhYmxlID0gdHJ1ZTsKIH0KIAogdm9pZCBUZXh0dXJlMkQ6
OmdlbmVyYXRlTWlwbWFwcygpCiB7Ci0gICAgaWYgKCFpc1BvdzIobUltYWdlQXJyYXlbMF0ud2lk
dGgpIHx8ICFpc1BvdzIobUltYWdlQXJyYXlbMF0uaGVpZ2h0KSkKKyAgICBpZiAoIWdldENvbnRl
eHQoKS0+c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkpCiAgICAgewotICAgICAgICByZXR1cm4g
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICBpZiAoIWlzUG93MihtSW1hZ2VB
cnJheVswXS53aWR0aCkgfHwgIWlzUG93MihtSW1hZ2VBcnJheVswXS5oZWlnaHQpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgLy8gUHVyZ2UgYXJyYXkgbGV2ZWxzIDEgdGhyb3VnaCBxIGFu
ZCByZXNldCB0aGVtIHRvIHJlcHJlc2VudCB0aGUgZ2VuZXJhdGVkIG1pcG1hcCBsZXZlbHMuCi0g
ICAgdW5zaWduZWQgaW50IHEgPSBsb2cyKHN0ZDo6bWF4KG1XaWR0aCwgbUhlaWdodCkpOworICAg
IHVuc2lnbmVkIGludCBxID0gbG9nMihzdGQ6Om1heChtSW1hZ2VBcnJheVswXS53aWR0aCwgbUlt
YWdlQXJyYXlbMF0uaGVpZ2h0KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPD0g
cTsgaSsrKQogICAgIHsKICAgICAgICAgaWYgKG1JbWFnZUFycmF5W2ldLnN1cmZhY2UgIT0gTlVM
TCkKQEAgLTE2NTksMTQgKzE4MDksMTMgQEAgdm9pZCBUZXh0dXJlMkQ6OmdlbmVyYXRlTWlwbWFw
cygpCiAgICAgICAgICAgICBtSW1hZ2VBcnJheVtpXS5zdXJmYWNlID0gTlVMTDsKICAgICAgICAg
fQogCi0gICAgICAgIG1JbWFnZUFycmF5W2ldLmRpcnR5ID0gZmFsc2U7Ci0KLSAgICAgICAgbUlt
YWdlQXJyYXlbaV0uZm9ybWF0ID0gbUltYWdlQXJyYXlbMF0uZm9ybWF0OwogICAgICAgICBtSW1h
Z2VBcnJheVtpXS53aWR0aCA9IHN0ZDo6bWF4KG1JbWFnZUFycmF5WzBdLndpZHRoID4+IGksIDEp
OwogICAgICAgICBtSW1hZ2VBcnJheVtpXS5oZWlnaHQgPSBzdGQ6Om1heChtSW1hZ2VBcnJheVsw
XS5oZWlnaHQgPj4gaSwgMSk7CisgICAgICAgIG1JbWFnZUFycmF5W2ldLmZvcm1hdCA9IG1JbWFn
ZUFycmF5WzBdLmZvcm1hdDsKKyAgICAgICAgbUltYWdlQXJyYXlbaV0udHlwZSA9IG1JbWFnZUFy
cmF5WzBdLnR5cGU7CiAgICAgfQogCi0gICAgaWYgKGlzUmVuZGVyYWJsZSgpKQorICAgIGlmICht
SXNSZW5kZXJhYmxlKQogICAgIHsKICAgICAgICAgaWYgKG1UZXh0dXJlID09IE5VTEwpCiAgICAg
ICAgIHsKQEAgLTE2ODksMTMgKzE4MzgsMTYgQEAgdm9pZCBUZXh0dXJlMkQ6OmdlbmVyYXRlTWlw
bWFwcygpCiAKICAgICAgICAgICAgIGlmICh1cHBlciAhPSBOVUxMKSB1cHBlci0+UmVsZWFzZSgp
OwogICAgICAgICAgICAgaWYgKGxvd2VyICE9IE5VTEwpIGxvd2VyLT5SZWxlYXNlKCk7CisKKyAg
ICAgICAgICAgIG1JbWFnZUFycmF5W2ldLmRpcnR5ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPD0g
cTsgaSsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBjcmVhdGVTdXJmYWNlKG1JbWFnZUFycmF5
W2ldLndpZHRoLCBtSW1hZ2VBcnJheVtpXS5oZWlnaHQsIG1JbWFnZUFycmF5W2ldLmZvcm1hdCwg
bVR5cGUsICZtSW1hZ2VBcnJheVtpXSk7CisgICAgICAgICAgICBjcmVhdGVTdXJmYWNlKCZtSW1h
Z2VBcnJheVtpXSk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJheVtp
XS5zdXJmYWNlID09IE5VTEwpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwpAQCAtMTcwOCwxMiArMTg2MCwxMCBAQCB2b2lkIFRl
eHR1cmUyRDo6Z2VuZXJhdGVNaXBtYXBzKCkKIAogICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0u
ZGlydHkgPSB0cnVlOwogICAgICAgICB9Ci0KLSAgICAgICAgbURpcnR5TWV0YURhdGEgPSB0cnVl
OwogICAgIH0KIH0KIAotUmVuZGVyYnVmZmVyICpUZXh0dXJlMkQ6OmdldENvbG9yYnVmZmVyKEdM
ZW51bSB0YXJnZXQpCitSZW5kZXJidWZmZXIgKlRleHR1cmUyRDo6Z2V0UmVuZGVyYnVmZmVyKEdM
ZW51bSB0YXJnZXQpCiB7CiAgICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEKQogICAgIHsK
QEAgLTE3MjIsNyArMTg3Miw3IEBAIFJlbmRlcmJ1ZmZlciAqVGV4dHVyZTJEOjpnZXRDb2xvcmJ1
ZmZlcigKIAogICAgIGlmIChtQ29sb3JidWZmZXJQcm94eS5nZXQoKSA9PSBOVUxMKQogICAgIHsK
LSAgICAgICAgbUNvbG9yYnVmZmVyUHJveHkuc2V0KG5ldyBSZW5kZXJidWZmZXIoaWQoKSwgbmV3
IFRleHR1cmVDb2xvcmJ1ZmZlclByb3h5KHRoaXMsIHRhcmdldCkpKTsKKyAgICAgICAgbUNvbG9y
YnVmZmVyUHJveHkuc2V0KG5ldyBSZW5kZXJidWZmZXIoaWQoKSwgbmV3IENvbG9yYnVmZmVyKHRo
aXMsIHRhcmdldCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbUNvbG9yYnVmZmVyUHJveHkuZ2V0
KCk7CkBAIC0xNzMyLDEyICsxODgyLDE3IEBAIElEaXJlY3QzRFN1cmZhY2U5ICpUZXh0dXJlMkQ6
OmdldFJlbmRlclQKIHsKICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpOwogCi0g
ICAgbmVlZFJlbmRlclRhcmdldCgpOworICAgIGlmICghbUlzUmVuZGVyYWJsZSkKKyAgICB7Cisg
ICAgICAgIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOworICAgIH0KIAogICAgIGlmIChtVGV4dHVy
ZSA9PSBOVUxMKQogICAgIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCisgICAgdXBk
YXRlVGV4dHVyZSgpOwogICAgIAogICAgIElEaXJlY3QzRFN1cmZhY2U5ICpyZW5kZXJUYXJnZXQg
PSBOVUxMOwogICAgIG1UZXh0dXJlLT5HZXRTdXJmYWNlTGV2ZWwoMCwgJnJlbmRlclRhcmdldCk7
CkBAIC0xNzY5LDc5ICsxOTI0LDk0IEBAIEdMZW51bSBUZXh0dXJlQ3ViZU1hcDo6Z2V0VGFyZ2V0
KCkgY29uc3QKICAgICByZXR1cm4gR0xfVEVYVFVSRV9DVUJFX01BUDsKIH0KIAotR0xlbnVtIFRl
eHR1cmVDdWJlTWFwOjpnZXRGb3JtYXQoKSBjb25zdAorR0xzaXplaSBUZXh0dXJlQ3ViZU1hcDo6
Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtSW1hZ2VBcnJheVswXVswXS53aWR0aDsK
K30KKworR0xzaXplaSBUZXh0dXJlQ3ViZU1hcDo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbUltYWdlQXJyYXlbMF1bMF0uaGVpZ2h0OworfQorCitHTGVudW0gVGV4dHVyZUN1YmVN
YXA6OmdldEludGVybmFsRm9ybWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbUltYWdlQXJyYXlb
MF1bMF0uZm9ybWF0OwogfQogCi12b2lkIFRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZVBvc1goR0xp
bnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQs
IGNvbnN0IHZvaWQgKnBpeGVscykKK0dMZW51bSBUZXh0dXJlQ3ViZU1hcDo6Z2V0VHlwZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1JbWFnZUFycmF5WzBdWzBdLnR5cGU7Cit9CisKK0QzREZPUk1B
VCBUZXh0dXJlQ3ViZU1hcDo6Z2V0RDNERm9ybWF0KCkgY29uc3QKIHsKLSAgICBzZXRJbWFnZSgw
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5w
YWNrQWxpZ25tZW50LCBwaXhlbHMpOworICAgIHJldHVybiBtSW1hZ2VBcnJheVswXVswXS5nZXRE
M0RGb3JtYXQoKTsKIH0KIAotdm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdYKEdMaW50
IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBj
b25zdCB2b2lkICpwaXhlbHMpCit2b2lkIFRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZVBvc1goR0xp
bnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCiB7
Ci0gICAgc2V0SW1hZ2UoMSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKKyAgICBzZXRJbWFnZSgwLCBs
ZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVs
cyk7CiB9CiAKLXZvaWQgVGV4dHVyZUN1YmVNYXA6OnNldEltYWdlUG9zWShHTGludCBsZXZlbCwg
R0xlbnVtIGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKQordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdYKEdMaW50IGxldmVs
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewotICAgIHNl
dEltYWdlKDIsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscyk7CisgICAgc2V0SW1hZ2UoMSwgbGV2ZWwsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMpOwogfQog
Ci12b2lkIFRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZU5lZ1koR0xpbnQgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVs
cykKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnNldEltYWdlUG9zWShHTGludCBsZXZlbCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGlu
dCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKLSAgICBzZXRJbWFnZSgz
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5w
YWNrQWxpZ25tZW50LCBwaXhlbHMpOworICAgIHNldEltYWdlKDIsIGxldmVsLCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKIH0KIAotdm9pZCBU
ZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NaKEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lk
IFRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZU5lZ1koR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNr
QWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCiB7Ci0gICAgc2V0SW1hZ2UoNCwgbGV2ZWws
IGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdu
bWVudCwgcGl4ZWxzKTsKKyAgICBzZXRJbWFnZSgzLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscyk7CiB9CiAKLXZvaWQgVGV4dHVyZUN1
YmVNYXA6OnNldEltYWdlTmVnWihHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBUZXh0dXJl
Q3ViZU1hcDo6c2V0SW1hZ2VQb3NaKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVu
dCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewotICAgIHNldEltYWdlKDUsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBp
eGVscyk7CisgICAgc2V0SW1hZ2UoNCwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMpOwogfQogCi12b2lkIFRleHR1cmVDdWJlTWFwOjpz
ZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGltYWdlU2l6
ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWda
KEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxz
KQogewotICAgIHJlZGVmaW5lVGV4dHVyZShsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoKTsK
KyAgICBzZXRJbWFnZSg1LCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCB1bnBh
Y2tBbGlnbm1lbnQsIHBpeGVscyk7Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnNldENvbXBy
ZXNzZWRJbWFnZShHTGVudW0gZmFjZSwgR0xpbnQgbGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAq
cGl4ZWxzKQoreworICAgIHJlZGVmaW5lVGV4dHVyZShmYWNlSW5kZXgoZmFjZSksIGxldmVsLCBm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIEdMX1VOU0lHTkVEX0JZVEUpOwogCi0gICAgVGV4dHVyZTo6
c2V0Q29tcHJlc3NlZEltYWdlKHdpZHRoLCBoZWlnaHQsIGludGVybmFsRm9ybWF0LCBpbWFnZVNp
emUsIHBpeGVscywgJm1JbWFnZUFycmF5W2ZhY2VJbmRleChmYWNlKV1bbGV2ZWxdKTsKKyAgICBU
ZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UoaW1hZ2VTaXplLCBwaXhlbHMsICZtSW1hZ2VBcnJh
eVtmYWNlSW5kZXgoZmFjZSldW2xldmVsXSk7CiB9CiAKIHZvaWQgVGV4dHVyZUN1YmVNYXA6OmNv
bW1pdFJlY3QoR0xlbnVtIGZhY2VUYXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKIHsKICAgICBpbnQg
ZmFjZSA9IGZhY2VJbmRleChmYWNlVGFyZ2V0KTsKLQogICAgIEFTU0VSVChtSW1hZ2VBcnJheVtm
YWNlXVtsZXZlbF0uc3VyZmFjZSAhPSBOVUxMKTsKIAogICAgIGlmIChsZXZlbCA8IGxldmVsQ291
bnQoKSkKICAgICB7Ci0gICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0TGV2ZWwgPSBnZXRD
dWJlTWFwU3VyZmFjZShmYWNlLCBsZXZlbCk7CisgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpk
ZXN0TGV2ZWwgPSBnZXRDdWJlTWFwU3VyZmFjZShmYWNlVGFyZ2V0LCBsZXZlbCk7CiAgICAgICAg
IEFTU0VSVChkZXN0TGV2ZWwgIT0gTlVMTCk7CiAKICAgICAgICAgaWYgKGRlc3RMZXZlbCAhPSBO
VUxMKQogICAgICAgICB7Ci0gICAgICAgICAgICBJbWFnZSAqaW1nID0gJm1JbWFnZUFycmF5W2Zh
Y2VdW2xldmVsXTsKKyAgICAgICAgICAgIEltYWdlICppbWFnZSA9ICZtSW1hZ2VBcnJheVtmYWNl
XVtsZXZlbF07CiAKLSAgICAgICAgICAgIFJFQ1Qgc291cmNlUmVjdDsKLSAgICAgICAgICAgIHNv
dXJjZVJlY3QubGVmdCA9IHhvZmZzZXQ7Ci0gICAgICAgICAgICBzb3VyY2VSZWN0LnRvcCA9IHlv
ZmZzZXQ7Ci0gICAgICAgICAgICBzb3VyY2VSZWN0LnJpZ2h0ID0geG9mZnNldCArIHdpZHRoOwot
ICAgICAgICAgICAgc291cmNlUmVjdC5ib3R0b20gPSB5b2Zmc2V0ICsgaGVpZ2h0OworICAgICAg
ICAgICAgUkVDVCBzb3VyY2VSZWN0ID0gdHJhbnNmb3JtUGl4ZWxSZWN0KHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGltYWdlLT5oZWlnaHQpOzsKIAogICAgICAgICAgICAgUE9JTlQg
ZGVzdFBvaW50OwotICAgICAgICAgICAgZGVzdFBvaW50LnggPSB4b2Zmc2V0OwotICAgICAgICAg
ICAgZGVzdFBvaW50LnkgPSB5b2Zmc2V0OworICAgICAgICAgICAgZGVzdFBvaW50LnggPSBzb3Vy
Y2VSZWN0LmxlZnQ7CisgICAgICAgICAgICBkZXN0UG9pbnQueSA9IHNvdXJjZVJlY3QudG9wOwog
Ci0gICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGdldERldmljZSgpLT5VcGRhdGVTdXJmYWNl
KGltZy0+c3VyZmFjZSwgJnNvdXJjZVJlY3QsIGRlc3RMZXZlbCwgJmRlc3RQb2ludCk7CisgICAg
ICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGdldERldmljZSgpLT5VcGRhdGVTdXJmYWNlKGltYWdl
LT5zdXJmYWNlLCAmc291cmNlUmVjdCwgZGVzdExldmVsLCAmZGVzdFBvaW50KTsKICAgICAgICAg
ICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAKICAgICAgICAgICAgIGRlc3RMZXZlbC0+
UmVsZWFzZSgpOwogCi0gICAgICAgICAgICBpbWctPmRpcnR5ID0gZmFsc2U7CisgICAgICAgICAg
ICBpbWFnZS0+ZGlydHkgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE4OTcsOCAr
MjA2Nyw4IEBAIGJvb2wgVGV4dHVyZUN1YmVNYXA6OmlzQ29tcGxldGUoKSBjb25zdAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKChnZXRGb3JtYXQoKSA9PSBHTF9GTE9BVCAmJiAhZ2V0Q29u
dGV4dCgpLT5zdXBwb3J0c0Zsb2F0TGluZWFyRmlsdGVyKCkpIHx8Ci0gICAgICAgIChnZXRGb3Jt
YXQoKSA9PSBHTF9IQUxGX0ZMT0FUX09FUyAmJiAhZ2V0Q29udGV4dCgpLT5zdXBwb3J0c0hhbGZG
bG9hdExpbmVhckZpbHRlcigpKSkKKyAgICBpZiAoKGdldEludGVybmFsRm9ybWF0KCkgPT0gR0xf
RkxPQVQgJiYgIWdldENvbnRleHQoKS0+c3VwcG9ydHNGbG9hdExpbmVhckZpbHRlcigpKSB8fAor
ICAgICAgICAoZ2V0SW50ZXJuYWxGb3JtYXQoKSA9PSBHTF9IQUxGX0ZMT0FUX09FUyAmJiAhZ2V0
Q29udGV4dCgpLT5zdXBwb3J0c0hhbGZGbG9hdExpbmVhckZpbHRlcigpKSkKICAgICB7CiAgICAg
ICAgIGlmIChtTWFnRmlsdGVyICE9IEdMX05FQVJFU1QgfHwgKG1NaW5GaWx0ZXIgIT0gR0xfTkVB
UkVTVCAmJiBtTWluRmlsdGVyICE9IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpKQogICAgICAg
ICB7CkBAIC0xOTA2LDEyICsyMDc2LDI1IEBAIGJvb2wgVGV4dHVyZUN1YmVNYXA6OmlzQ29tcGxl
dGUoKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1pcG1hcHBpbmcpCisgICAg
Ym9vbCBucG90ID0gZ2V0Q29udGV4dCgpLT5zdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKTsKKwor
ICAgIGlmICghbnBvdCkKICAgICB7Ci0gICAgICAgIGlmICghaXNQb3cyKHNpemUpICYmIChnZXRX
cmFwUygpICE9IEdMX0NMQU1QX1RPX0VER0UgfHwgZ2V0V3JhcFQoKSAhPSBHTF9DTEFNUF9UT19F
REdFKSkKKyAgICAgICAgaWYgKChnZXRXcmFwUygpICE9IEdMX0NMQU1QX1RPX0VER0UgfHwgZ2V0
V3JhcFQoKSAhPSBHTF9DTEFNUF9UT19FREdFKSAmJiAhaXNQb3cyKHNpemUpKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
bWlwbWFwcGluZykKKyAgICB7CisgICAgICAgIGlmICghbnBvdCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFpc1BvdzIoc2l6ZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgaW50IHEg
PSBsb2cyKHNpemUpOwogCkBAIC0xOTI0LDYgKzIxMDcsMTEgQEAgYm9vbCBUZXh0dXJlQ3ViZU1h
cDo6aXNDb21wbGV0ZSgpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBpZiAobUltYWdlQXJyYXlbZmFj
ZV1bbGV2ZWxdLnR5cGUgIT0gbUltYWdlQXJyYXlbMF1bMF0udHlwZSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisKICAgICAgICAgICAgICAgICBpZiAobUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLndpZHRoICE9
IHN0ZDo6bWF4KDEsIHNpemUgPj4gbGV2ZWwpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzOSwyOSArMjEyNywzOCBAQCBib29sIFRl
eHR1cmVDdWJlTWFwOjppc0NvbXBsZXRlKCkgY29uc3QKIAogYm9vbCBUZXh0dXJlQ3ViZU1hcDo6
aXNDb21wcmVzc2VkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gSXNDb21wcmVzc2VkKGdldEZvcm1h
dCgpKTsKKyAgICByZXR1cm4gSXNDb21wcmVzc2VkKGdldEludGVybmFsRm9ybWF0KCkpOworfQor
CitJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmVDdWJlTWFwOjpnZXRCYXNlVGV4dHVyZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlOwogfQogCiAvLyBDb25zdHJ1Y3RzIGEgRGly
ZWN0M0QgOSB0ZXh0dXJlIHJlc291cmNlIGZyb20gdGhlIHRleHR1cmUgaW1hZ2VzLCBvciByZXR1
cm5zIGFuIGV4aXN0aW5nIG9uZQotSURpcmVjdDNEQmFzZVRleHR1cmU5ICpUZXh0dXJlQ3ViZU1h
cDo6Y3JlYXRlVGV4dHVyZSgpCit2b2lkIFRleHR1cmVDdWJlTWFwOjpjcmVhdGVUZXh0dXJlKCkK
IHsKICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBnZXREZXZpY2UoKTsKLSAgICBEM0RG
T1JNQVQgZm9ybWF0ID0gc2VsZWN0Rm9ybWF0KG1JbWFnZUFycmF5WzBdWzBdLmZvcm1hdCwgbVR5
cGUpOwotCi0gICAgSURpcmVjdDNEQ3ViZVRleHR1cmU5ICp0ZXh0dXJlOworICAgIEQzREZPUk1B
VCBmb3JtYXQgPSBtSW1hZ2VBcnJheVswXVswXS5nZXREM0RGb3JtYXQoKTsKKyAgICBHTGludCBs
ZXZlbHMgPSBjcmVhdGlvbkxldmVscyhtSW1hZ2VBcnJheVswXVswXS53aWR0aCwgMCk7CiAKLSAg
ICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQ3ViZVRleHR1cmUobVdpZHRoLCBjcmVh
dGlvbkxldmVscyhtV2lkdGgsIDApLCAwLCBmb3JtYXQsIEQzRFBPT0xfREVGQVVMVCwgJnRleHR1
cmUsIE5VTEwpOworICAgIElEaXJlY3QzREN1YmVUZXh0dXJlOSAqdGV4dHVyZSA9IE5VTEw7Cisg
ICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUN1YmVUZXh0dXJlKG1JbWFnZUFycmF5
WzBdWzBdLndpZHRoLCBsZXZlbHMsIDAsIGZvcm1hdCwgRDNEUE9PTF9ERUZBVUxULCAmdGV4dHVy
ZSwgTlVMTCk7CiAKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewogICAgICAgICBBU1NF
UlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9G
TUVNT1JZKTsKLSAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlksIChJRGlyZWN0
M0RCYXNlVGV4dHVyZTkqKU5VTEwpOworICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CiAgICAgfQogCi0gICAgaWYgKG1UZXh0dXJlKSBtVGV4dHVyZS0+UmVsZWFzZSgpOwor
ICAgIGlmIChtVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1UZXh0dXJlLT5SZWxlYXNlKCk7Cisg
ICAgfQogCiAgICAgbVRleHR1cmUgPSB0ZXh0dXJlOwotICAgIHJldHVybiBtVGV4dHVyZTsKKyAg
ICBtRGlydHlJbWFnZSA9IHRydWU7CisgICAgbUlzUmVuZGVyYWJsZSA9IGZhbHNlOwogfQogCiB2
b2lkIFRleHR1cmVDdWJlTWFwOjp1cGRhdGVUZXh0dXJlKCkKQEAgLTE5NzMsNDMgKzIxNzAsNDQg
QEAgdm9pZCBUZXh0dXJlQ3ViZU1hcDo6dXBkYXRlVGV4dHVyZSgpCiAgICAgICAgIGludCBsZXZl
bHMgPSBsZXZlbENvdW50KCk7CiAgICAgICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBs
ZXZlbHM7IGxldmVsKyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIEltYWdlICppbWcgPSAmbUlt
YWdlQXJyYXlbZmFjZV1bbGV2ZWxdOworICAgICAgICAgICAgSW1hZ2UgKmltYWdlID0gJm1JbWFn
ZUFycmF5W2ZhY2VdW2xldmVsXTsKIAotICAgICAgICAgICAgaWYgKGltZy0+ZGlydHkpCisgICAg
ICAgICAgICBpZiAoaW1hZ2UtPnN1cmZhY2UgJiYgaW1hZ2UtPmRpcnR5KQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpsZXZlbFN1cmZhY2UgPSBnZXRD
dWJlTWFwU3VyZmFjZShmYWNlLCBsZXZlbCk7CisgICAgICAgICAgICAgICAgSURpcmVjdDNEU3Vy
ZmFjZTkgKmxldmVsU3VyZmFjZSA9IGdldEN1YmVNYXBTdXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWCArIGZhY2UsIGxldmVsKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobGV2
ZWxTdXJmYWNlICE9IE5VTEwpOwogCiAgICAgICAgICAgICAgICAgaWYgKGxldmVsU3VyZmFjZSAh
PSBOVUxMKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgSFJFU1VMVCBy
ZXN1bHQgPSBkZXZpY2UtPlVwZGF0ZVN1cmZhY2UoaW1nLT5zdXJmYWNlLCBOVUxMLCBsZXZlbFN1
cmZhY2UsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmlj
ZS0+VXBkYXRlU3VyZmFjZShpbWFnZS0+c3VyZmFjZSwgTlVMTCwgbGV2ZWxTdXJmYWNlLCBOVUxM
KTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKIAogICAg
ICAgICAgICAgICAgICAgICBsZXZlbFN1cmZhY2UtPlJlbGVhc2UoKTsKIAotICAgICAgICAgICAg
ICAgICAgICBpbWctPmRpcnR5ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGltYWdlLT5k
aXJ0eSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KIH0KIAotSURpcmVjdDNEQmFzZVRleHR1cmU5ICpUZXh0dXJlQ3ViZU1hcDo6Y29u
dmVydFRvUmVuZGVyVGFyZ2V0KCkKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OmNvbnZlcnRUb1JlbmRl
clRhcmdldCgpCiB7CiAgICAgSURpcmVjdDNEQ3ViZVRleHR1cmU5ICp0ZXh0dXJlID0gTlVMTDsK
IAotICAgIGlmIChtV2lkdGggIT0gMCkKKyAgICBpZiAobUltYWdlQXJyYXlbMF1bMF0ud2lkdGgg
IT0gMCkKICAgICB7CiAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IGdldERpc3BsYXko
KTsKICAgICAgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gZ2V0RGV2aWNlKCk7Ci0gICAg
ICAgIEQzREZPUk1BVCBmb3JtYXQgPSBzZWxlY3RGb3JtYXQobUltYWdlQXJyYXlbMF1bMF0uZm9y
bWF0LCBtVHlwZSk7CisgICAgICAgIEQzREZPUk1BVCBmb3JtYXQgPSBtSW1hZ2VBcnJheVswXVsw
XS5nZXREM0RGb3JtYXQoKTsKKyAgICAgICAgR0xpbnQgbGV2ZWxzID0gY3JlYXRpb25MZXZlbHMo
bUltYWdlQXJyYXlbMF1bMF0ud2lkdGgsIDApOwogCi0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0g
ZGV2aWNlLT5DcmVhdGVDdWJlVGV4dHVyZShtV2lkdGgsIGNyZWF0aW9uTGV2ZWxzKG1XaWR0aCwg
MCksIEQzRFVTQUdFX1JFTkRFUlRBUkdFVCwgZm9ybWF0LCBEM0RQT09MX0RFRkFVTFQsICZ0ZXh0
dXJlLCBOVUxMKTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUN1YmVU
ZXh0dXJlKG1JbWFnZUFycmF5WzBdWzBdLndpZHRoLCBsZXZlbHMsIEQzRFVTQUdFX1JFTkRFUlRB
UkdFVCwgZm9ybWF0LCBEM0RQT09MX0RFRkFVTFQsICZ0ZXh0dXJlLCBOVUxMKTsKIAogICAgICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkp
OwotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlksIChJRGlyZWN0M0RC
YXNlVGV4dHVyZTkqKU5VTEwpOworICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1UZXh0dXJlICE9IE5VTEwpCkBAIC0y
MDI4LDcgKzIyMjYsNyBAQCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmVDdWJlTWFwOjpj
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPlJlbGVhc2UoKTsKIAotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlksIChJRGlyZWN0
M0RCYXNlVGV4dHVyZTkqKU5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3Q7CkBAIC0yMDQxLDcgKzIyMzksNyBA
QCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmVDdWJlTWFwOjpjCiAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXh0dXJlLT5SZWxlYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBz
b3VyY2UtPlJlbGVhc2UoKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX09VVF9PRl9NRU1PUlksIChJRGlyZWN0M0RCYXNlVGV4dHVyZTkqKU5VTEwpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgZGlzcGxheS0+ZW5kU2NlbmUo
KTsKQEAgLTIwNTUsNyArMjI1Myw3IEBAIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqVGV4dHVyZUN1
YmVNYXA6OmMKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS0+UmVsZWFzZSgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzdC0+UmVsZWFzZSgpOwogCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgKElEaXJlY3QzREJhc2VUZXh0
dXJlOSopTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC0yMDY4LDE0ICsyMjY2LDE1IEBAIElEaXJlY3QzREJhc2VUZXh0dXJl
OSAqVGV4dHVyZUN1YmVNYXA6OmMKICAgICB9CiAKICAgICBtVGV4dHVyZSA9IHRleHR1cmU7Ci0g
ICAgcmV0dXJuIG1UZXh0dXJlOworICAgIG1EaXJ0eUltYWdlID0gdHJ1ZTsKKyAgICBtSXNSZW5k
ZXJhYmxlID0gdHJ1ZTsKIH0KIAotdm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2UoaW50IGZh
Y2UsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxp
Z25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIFRleHR1cmVDdWJlTWFwOjpzZXRJbWFn
ZShpbnQgZmFjZUluZGV4LCBHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNv
bnN0IHZvaWQgKnBpeGVscykKIHsKLSAgICByZWRlZmluZVRleHR1cmUobGV2ZWwsIGludGVybmFs
Rm9ybWF0LCB3aWR0aCk7CisgICAgcmVkZWZpbmVUZXh0dXJlKGZhY2VJbmRleCwgbGV2ZWwsIGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgdHlwZSk7CiAKLSAgICBUZXh0dXJlOjpzZXRJbWFnZSh3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCAmbUltYWdl
QXJyYXlbZmFjZV1bbGV2ZWxdKTsKKyAgICBUZXh0dXJlOjpzZXRJbWFnZSh1bnBhY2tBbGlnbm1l
bnQsIHBpeGVscywgJm1JbWFnZUFycmF5W2ZhY2VJbmRleF1bbGV2ZWxdKTsKIH0KIAogdW5zaWdu
ZWQgaW50IFRleHR1cmVDdWJlTWFwOjpmYWNlSW5kZXgoR0xlbnVtIGZhY2UpCkBAIC0yMDg5LDUx
ICsyMjg4LDM3IEBAIHVuc2lnbmVkIGludCBUZXh0dXJlQ3ViZU1hcDo6ZmFjZUluZGV4KEcKICAg
ICByZXR1cm4gZmFjZSAtIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsKIH0KIAotYm9v
bCBUZXh0dXJlQ3ViZU1hcDo6ZGlydHlJbWFnZURhdGEoKSBjb25zdAordm9pZCBUZXh0dXJlQ3Vi
ZU1hcDo6cmVkZWZpbmVUZXh0dXJlKGludCBmYWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1h
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSB0eXBlKQogewotICAgIGlu
dCBxID0gbG9nMihtV2lkdGgpOworICAgIEdMc2l6ZWkgdGV4dHVyZVdpZHRoID0gbUltYWdlQXJy
YXlbMF1bMF0ud2lkdGg7CisgICAgR0xzaXplaSB0ZXh0dXJlSGVpZ2h0ID0gbUltYWdlQXJyYXlb
MF1bMF0uaGVpZ2h0OworICAgIEdMZW51bSB0ZXh0dXJlRm9ybWF0ID0gbUltYWdlQXJyYXlbMF1b
MF0uZm9ybWF0OworICAgIEdMZW51bSB0ZXh0dXJlVHlwZSA9IG1JbWFnZUFycmF5WzBdWzBdLnR5
cGU7CiAKLSAgICBmb3IgKGludCBmID0gMDsgZiA8IDY7IGYrKykKKyAgICBtSW1hZ2VBcnJheVtm
YWNlXVtsZXZlbF0ud2lkdGggPSB3aWR0aDsKKyAgICBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0u
aGVpZ2h0ID0gaGVpZ2h0OworICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXS5mb3JtYXQgPSBm
b3JtYXQ7CisgICAgbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLnR5cGUgPSB0eXBlOworCisgICAg
aWYgKCFtVGV4dHVyZSkKICAgICB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IHE7IGkr
KykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1JbWFnZUFycmF5W2ZdW2ldLmRpcnR5KSBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi0vLyBXaGlsZSBPcGVuR0wgZG9lc24ndCBjaGVjayB0ZXh0dXJlIGNv
bnNpc3RlbmN5IHVudGlsIGRyYXctdGltZSwgRDNEOSByZXF1aXJlcyBhIGNvbXBsZXRlIHRleHR1
cmUKLS8vIGZvciByZW5kZXItdG8tdGV4dHVyZSAoc3VjaCBhcyBDb3B5VGV4SW1hZ2UpLiBXZSBo
YXZlIG5vIHdheSBvZiBrZWVwaW5nIGluZGl2aWR1YWwgaW5jb25zaXN0ZW50IGxldmVscyAmIGZh
Y2VzLgotLy8gQ2FsbCB0aGlzIHdoZW4gYSBwYXJ0aWN1bGFyIGxldmVsIG9mIHRoZSB0ZXh0dXJl
IG11c3QgYmUgZGVmaW5lZCB3aXRoIGEgc3BlY2lmaWMgZm9ybWF0LCB3aWR0aCBhbmQgaGVpZ2h0
LgotLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXhpc3RpbmcgdGV4dHVyZSB3YXMgdW5zdWl0
YWJsZSBoYWQgdG8gYmUgZGVzdHJveWVkLiBJZiBzbywgaXQgd2lsbCBhbHNvIHNldAotLy8gYSBu
ZXcgc2l6ZSBmb3IgdGhlIHRleHR1cmUgYnkgd29ya2luZyBiYWNrd2FyZHMgZnJvbSB0aGUgZ2l2
ZW4gc2l6ZS4KLWJvb2wgVGV4dHVyZUN1YmVNYXA6OnJlZGVmaW5lVGV4dHVyZShHTGludCBsZXZl
bCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdpZHRoKQotewotICAgIC8vIEFyZSB0
aGVzZSBzZXR0aW5ncyBjb21wYXRpYmxlIHdpdGggbGV2ZWwgMD8KLSAgICBib29sIHNpemVPa2F5
ID0gKG1JbWFnZUFycmF5WzBdWzBdLndpZHRoID4+IGxldmVsID09IHdpZHRoKTsKLQotICAgIGJv
b2wgdGV4dHVyZU9rYXkgPSAoc2l6ZU9rYXkgJiYgaW50ZXJuYWxGb3JtYXQgPT0gbUltYWdlQXJy
YXlbMF1bMF0uZm9ybWF0KTsKLQotICAgIGlmICghdGV4dHVyZU9rYXkpCi0gICAgewotICAgICAg
ICBUUkFDRSgiUmVkZWZpbmluZyBjdWJlIHRleHR1cmUgKCVkLCAweCUwNFgsICVkID0+IDB4JTA0
WCwgJWQpLiIsIGxldmVsLAotICAgICAgICAgICAgICBtSW1hZ2VBcnJheVswXVswXS5mb3JtYXQs
IG1JbWFnZUFycmF5WzBdWzBdLndpZHRoLAotICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwg
d2lkdGgpOworICAgIGJvb2wgc2l6ZU9rYXkgPSAodGV4dHVyZVdpZHRoID4+IGxldmVsID09IHdp
ZHRoKTsKKyAgICBib29sIHRleHR1cmVPa2F5ID0gKHNpemVPa2F5ICYmIHRleHR1cmVGb3JtYXQg
PT0gZm9ybWF0ICYmIHRleHR1cmVUeXBlID09IHR5cGUpOwogCi0gICAgICAgIC8vIFB1cmdlIGFs
bCB0aGUgbGV2ZWxzIGFuZCB0aGUgdGV4dHVyZS4KKyAgICBpZiAoIXRleHR1cmVPa2F5KSAgIC8v
IFB1cmdlIGFsbCB0aGUgbGV2ZWxzIGFuZCB0aGUgdGV4dHVyZS4KKyAgICB7CiAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBpKysp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAoaW50IGYgPSAwOyBmIDwgNjsgZisrKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJheVtmXVtpXS5zdXJmYWNl
ICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBtSW1hZ2VB
cnJheVtmXVtpXS5kaXJ0eSA9IGZhbHNlOwotCiAgICAgICAgICAgICAgICAgICAgIG1JbWFnZUFy
cmF5W2ZdW2ldLnN1cmZhY2UtPlJlbGVhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgbUltYWdl
QXJyYXlbZl1baV0uc3VyZmFjZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIG1JbWFnZUFy
cmF5W2ZdW2ldLmRpcnR5ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTIxNDIsMjEgKzIzMjcsMTMgQEAgYm9vbCBUZXh0dXJlQ3ViZU1hcDo6
cmVkZWZpbmVUZXh0dXJlKEdMaQogICAgICAgICB7CiAgICAgICAgICAgICBtVGV4dHVyZS0+UmVs
ZWFzZSgpOwogICAgICAgICAgICAgbVRleHR1cmUgPSBOVUxMOwotICAgICAgICAgICAgZHJvcFRl
eHR1cmUoKTsKKyAgICAgICAgICAgIG1EaXJ0eUltYWdlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1J
c1JlbmRlcmFibGUgPSBmYWxzZTsKICAgICAgICAgfQotCi0gICAgICAgIG1XaWR0aCA9IHdpZHRo
IDw8IGxldmVsOwotICAgICAgICBtSW1hZ2VBcnJheVswXVswXS53aWR0aCA9IHdpZHRoIDw8IGxl
dmVsOwotICAgICAgICBtSGVpZ2h0ID0gd2lkdGggPDwgbGV2ZWw7Ci0gICAgICAgIG1JbWFnZUFy
cmF5WzBdWzBdLmhlaWdodCA9IHdpZHRoIDw8IGxldmVsOwotCi0gICAgICAgIG1JbWFnZUFycmF5
WzBdWzBdLmZvcm1hdCA9IGludGVybmFsRm9ybWF0OwogICAgIH0KLQotICAgIHJldHVybiAhdGV4
dHVyZU9rYXk7CiB9CiAKLXZvaWQgVGV4dHVyZUN1YmVNYXA6OmNvcHlJbWFnZShHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGludCB4LCBHTGludCB5
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgUmVuZGVyYnVmZmVyU3RvcmFnZSAqc291
cmNlKQordm9pZCBUZXh0dXJlQ3ViZU1hcDo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgRnJhbWVidWZmZXIgKnNvdXJjZSkKIHsKICAgICBJRGlyZWN0M0RTdXJm
YWNlOSAqcmVuZGVyVGFyZ2V0ID0gc291cmNlLT5nZXRSZW5kZXJUYXJnZXQoKTsKIApAQCAtMjE2
Nyw2NCArMjM0NCw0MyBAQCB2b2lkIFRleHR1cmVDdWJlTWFwOjpjb3B5SW1hZ2UoR0xlbnVtIHRh
CiAgICAgfQogCiAgICAgdW5zaWduZWQgaW50IGZhY2VpbmRleCA9IGZhY2VJbmRleCh0YXJnZXQp
OwotICAgIGJvb2wgcmVkZWZpbmVkID0gcmVkZWZpbmVUZXh0dXJlKGxldmVsLCBpbnRlcm5hbEZv
cm1hdCwgd2lkdGgpOworICAgIHJlZGVmaW5lVGV4dHVyZShmYWNlaW5kZXgsIGxldmVsLCBmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIEdMX1VOU0lHTkVEX0JZVEUpOwogCi0gICAgaWYgKCFpc1JlbmRl
cmFibGVGb3JtYXQoKSkKKyAgICBpZiAoIW1JbWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLmlz
UmVuZGVyYWJsZSgpKQogICAgIHsKLSAgICAgICAgY29weU5vblJlbmRlcmFibGUoJm1JbWFnZUFy
cmF5W2ZhY2VpbmRleF1bbGV2ZWxdLCBpbnRlcm5hbEZvcm1hdCwgMCwgMCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgcmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgY29weVRvSW1hZ2UoJm1JbWFnZUFycmF5
W2ZhY2VpbmRleF1bbGV2ZWxdLCAwLCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCByZW5kZXJUYXJn
ZXQpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpZiAocmVkZWZpbmVkKQorICAg
ICAgICBpZiAoIW1UZXh0dXJlIHx8ICFtSXNSZW5kZXJhYmxlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKLSAgICAgICAgICAgIHB1c2hUZXh0dXJlKG1U
ZXh0dXJlLCB0cnVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIG5lZWRSZW5kZXJUYXJnZXQoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dXBkYXRlVGV4dHVyZSgpOwogCiAgICAgICAgIEFTU0VSVCh3aWR0aCA9PSBoZWlnaHQpOwogCiAg
ICAgICAgIGlmICh3aWR0aCA+IDAgJiYgbGV2ZWwgPCBsZXZlbENvdW50KCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFJFQ1Qgc291cmNlUmVjdDsKLSAgICAgICAgICAgIHNvdXJjZVJlY3QubGVm
dCA9IHg7Ci0gICAgICAgICAgICBzb3VyY2VSZWN0LnJpZ2h0ID0geCArIHdpZHRoOwotICAgICAg
ICAgICAgc291cmNlUmVjdC50b3AgPSB5OwotICAgICAgICAgICAgc291cmNlUmVjdC5ib3R0b20g
PSB5ICsgaGVpZ2h0OworICAgICAgICAgICAgUkVDVCBzb3VyY2VSZWN0ID0gdHJhbnNmb3JtUGl4
ZWxSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZS0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0
SGVpZ2h0KCkpOworICAgICAgICAgICAgc291cmNlUmVjdC5sZWZ0ID0gY2xhbXAoc291cmNlUmVj
dC5sZWZ0LCAwLCBzb3VyY2UtPmdldENvbG9yYnVmZmVyKCktPmdldFdpZHRoKCkpOworICAgICAg
ICAgICAgc291cmNlUmVjdC50b3AgPSBjbGFtcChzb3VyY2VSZWN0LnRvcCwgMCwgc291cmNlLT5n
ZXRDb2xvcmJ1ZmZlcigpLT5nZXRIZWlnaHQoKSk7CisgICAgICAgICAgICBzb3VyY2VSZWN0LnJp
Z2h0ID0gY2xhbXAoc291cmNlUmVjdC5yaWdodCwgMCwgc291cmNlLT5nZXRDb2xvcmJ1ZmZlcigp
LT5nZXRXaWR0aCgpKTsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QuYm90dG9tID0gY2xhbXAoc291
cmNlUmVjdC5ib3R0b20sIDAsIHNvdXJjZS0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0SGVpZ2h0KCkp
OworCisgICAgICAgICAgICBHTGludCBkZXN0WU9mZnNldCA9IHRyYW5zZm9ybVBpeGVsWU9mZnNl
dCgwLCBoZWlnaHQsIG1JbWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLndpZHRoKTsKIAogICAg
ICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QgPSBnZXRDdWJlTWFwU3VyZmFjZSh0YXJn
ZXQsIGxldmVsKTsKIAotICAgICAgICAgICAgZ2V0QmxpdHRlcigpLT5mb3JtYXRDb252ZXJ0KHNv
dXJjZS0+Z2V0UmVuZGVyVGFyZ2V0KCksIHNvdXJjZVJlY3QsIGludGVybmFsRm9ybWF0LCAwLCAw
LCBkZXN0KTsKKyAgICAgICAgICAgIGdldEJsaXR0ZXIoKS0+Y29weShzb3VyY2UtPmdldFJlbmRl
clRhcmdldCgpLCBzb3VyY2VSZWN0LCBmb3JtYXQsIDAsIGRlc3RZT2Zmc2V0LCBkZXN0KTsKICAg
ICAgICAgICAgIGRlc3QtPlJlbGVhc2UoKTsKICAgICAgICAgfQogICAgIH0KLQotICAgIG1JbWFn
ZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLndpZHRoID0gd2lkdGg7Ci0gICAgbUltYWdlQXJyYXlb
ZmFjZWluZGV4XVtsZXZlbF0uaGVpZ2h0ID0gaGVpZ2h0OwotICAgIG1JbWFnZUFycmF5W2ZhY2Vp
bmRleF1bbGV2ZWxdLmZvcm1hdCA9IGludGVybmFsRm9ybWF0OwogfQogCi1JRGlyZWN0M0RTdXJm
YWNlOSAqVGV4dHVyZUN1YmVNYXA6OmdldEN1YmVNYXBTdXJmYWNlKHVuc2lnbmVkIGludCBmYWNl
SWRlbnRpZmllciwgdW5zaWduZWQgaW50IGxldmVsKQorSURpcmVjdDNEU3VyZmFjZTkgKlRleHR1
cmVDdWJlTWFwOjpnZXRDdWJlTWFwU3VyZmFjZShHTGVudW0gZmFjZSwgdW5zaWduZWQgaW50IGxl
dmVsKQogewotICAgIHVuc2lnbmVkIGludCBmYWNlSW5kZXg7Ci0KLSAgICBpZiAoZmFjZUlkZW50
aWZpZXIgPCA2KQotICAgIHsKLSAgICAgICAgZmFjZUluZGV4ID0gZmFjZUlkZW50aWZpZXI7Ci0g
ICAgfQotICAgIGVsc2UgaWYgKGZhY2VJZGVudGlmaWVyID49IEdMX1RFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWCAmJiBmYWNlSWRlbnRpZmllciA8PSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1opCi0gICAgewotICAgICAgICBmYWNlSW5kZXggPSBmYWNlSWRlbnRpZmllciAtIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgZmFjZUluZGV4ID0gMDsKLSAgICB9Ci0KICAgICBp
ZiAobVRleHR1cmUgPT0gTlVMTCkKICAgICB7CiAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CkBAIC0y
MjMzLDEyICsyMzg5LDEyIEBAIElEaXJlY3QzRFN1cmZhY2U5ICpUZXh0dXJlQ3ViZU1hcDo6Z2V0
Q3UKIAogICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlID0gTlVMTDsKIAotICAgIEhSRVNV
TFQgaHIgPSBtVGV4dHVyZS0+R2V0Q3ViZU1hcFN1cmZhY2Uoc3RhdGljX2Nhc3Q8RDNEQ1VCRU1B
UF9GQUNFUz4oZmFjZUluZGV4KSwgbGV2ZWwsICZzdXJmYWNlKTsKKyAgICBIUkVTVUxUIGhyID0g
bVRleHR1cmUtPkdldEN1YmVNYXBTdXJmYWNlKGVzMmR4OjpDb252ZXJ0Q3ViZUZhY2UoZmFjZSks
IGxldmVsLCAmc3VyZmFjZSk7CiAKICAgICByZXR1cm4gKFNVQ0NFRURFRChocikpID8gc3VyZmFj
ZSA6IE5VTEw7CiB9CiAKLXZvaWQgVGV4dHVyZUN1YmVNYXA6OmNvcHlTdWJJbWFnZShHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQg
eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIFJlbmRlcmJ1ZmZlclN0
b3JhZ2UgKnNvdXJjZSkKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OmNvcHlTdWJJbWFnZShHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQg
eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEZyYW1lYnVmZmVyICpz
b3VyY2UpCiB7CiAgICAgR0xzaXplaSBzaXplID0gbUltYWdlQXJyYXlbZmFjZUluZGV4KHRhcmdl
dCldW2xldmVsXS53aWR0aDsKIApAQCAtMjI1NiwzNSArMjQxMiwzNCBAQCB2b2lkIFRleHR1cmVD
dWJlTWFwOjpjb3B5U3ViSW1hZ2UoR0xlbnVtCiAgICAgfQogCiAgICAgdW5zaWduZWQgaW50IGZh
Y2VpbmRleCA9IGZhY2VJbmRleCh0YXJnZXQpOwotICAgIGJvb2wgcmVkZWZpbmVkID0gcmVkZWZp
bmVUZXh0dXJlKDAsIG1JbWFnZUFycmF5WzBdWzBdLmZvcm1hdCwgbUltYWdlQXJyYXlbMF1bMF0u
d2lkdGgpOworICAgIHJlZGVmaW5lVGV4dHVyZShmYWNlaW5kZXgsIGxldmVsLCBtSW1hZ2VBcnJh
eVtmYWNlaW5kZXhdW2xldmVsXS5mb3JtYXQsIG1JbWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxd
LndpZHRoLCBtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS5oZWlnaHQsIEdMX1VOU0lHTkVE
X0JZVEUpOwogICAgCi0gICAgaWYgKCFpc1JlbmRlcmFibGVGb3JtYXQoKSkKKyAgICBpZiAoIW1J
bWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLmlzUmVuZGVyYWJsZSgpIHx8ICghbVRleHR1cmUg
JiYgIWlzQ29tcGxldGUoKSkpCiAgICAgewotICAgICAgICBjb3B5Tm9uUmVuZGVyYWJsZSgmbUlt
YWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0sIGdldEZvcm1hdCgpLCAwLCAwLCB4LCB5LCB3aWR0
aCwgaGVpZ2h0LCByZW5kZXJUYXJnZXQpOworICAgICAgICBjb3B5VG9JbWFnZSgmbUltYWdlQXJy
YXlbZmFjZWluZGV4XVtsZXZlbF0sIDAsIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHJlbmRlclRh
cmdldCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGlmIChyZWRlZmluZWQpCisg
ICAgICAgIGlmICghbVRleHR1cmUgfHwgIW1Jc1JlbmRlcmFibGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOwotICAgICAgICAgICAgcHVzaFRleHR1cmUo
bVRleHR1cmUsIHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAg
ICAgICAgICAgbmVlZFJlbmRlclRhcmdldCgpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICB1cGRhdGVUZXh0dXJlKCk7CiAKICAgICAgICAgaWYgKGxldmVsIDwgbGV2ZWxDb3VudCgpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBSRUNUIHNvdXJjZVJlY3Q7Ci0gICAgICAgICAgICBzb3Vy
Y2VSZWN0LmxlZnQgPSB4OwotICAgICAgICAgICAgc291cmNlUmVjdC5yaWdodCA9IHggKyB3aWR0
aDsKLSAgICAgICAgICAgIHNvdXJjZVJlY3QudG9wID0geTsKLSAgICAgICAgICAgIHNvdXJjZVJl
Y3QuYm90dG9tID0geSArIGhlaWdodDsKKyAgICAgICAgICAgIFJFQ1Qgc291cmNlUmVjdCA9IHRy
YW5zZm9ybVBpeGVsUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UtPmdldENvbG9yYnVm
ZmVyKCktPmdldEhlaWdodCgpKTsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QubGVmdCA9IGNsYW1w
KHNvdXJjZVJlY3QubGVmdCwgMCwgc291cmNlLT5nZXRDb2xvcmJ1ZmZlcigpLT5nZXRXaWR0aCgp
KTsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QudG9wID0gY2xhbXAoc291cmNlUmVjdC50b3AsIDAs
IHNvdXJjZS0+Z2V0Q29sb3JidWZmZXIoKS0+Z2V0SGVpZ2h0KCkpOworICAgICAgICAgICAgc291
cmNlUmVjdC5yaWdodCA9IGNsYW1wKHNvdXJjZVJlY3QucmlnaHQsIDAsIHNvdXJjZS0+Z2V0Q29s
b3JidWZmZXIoKS0+Z2V0V2lkdGgoKSk7CisgICAgICAgICAgICBzb3VyY2VSZWN0LmJvdHRvbSA9
IGNsYW1wKHNvdXJjZVJlY3QuYm90dG9tLCAwLCBzb3VyY2UtPmdldENvbG9yYnVmZmVyKCktPmdl
dEhlaWdodCgpKTsKKworICAgICAgICAgICAgR0xpbnQgZGVzdFlPZmZzZXQgPSB0cmFuc2Zvcm1Q
aXhlbFlPZmZzZXQoeW9mZnNldCwgaGVpZ2h0LCBtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVs
XS53aWR0aCk7CiAKICAgICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0ID0gZ2V0Q3Vi
ZU1hcFN1cmZhY2UodGFyZ2V0LCBsZXZlbCk7CiAKLSAgICAgICAgICAgIGdldEJsaXR0ZXIoKS0+
Zm9ybWF0Q29udmVydChzb3VyY2UtPmdldFJlbmRlclRhcmdldCgpLCBzb3VyY2VSZWN0LCBtSW1h
Z2VBcnJheVswXVswXS5mb3JtYXQsIHhvZmZzZXQsIHlvZmZzZXQsIGRlc3QpOworICAgICAgICAg
ICAgZ2V0QmxpdHRlcigpLT5jb3B5KHNvdXJjZS0+Z2V0UmVuZGVyVGFyZ2V0KCksIHNvdXJjZVJl
Y3QsIG1JbWFnZUFycmF5WzBdWzBdLmZvcm1hdCwgeG9mZnNldCwgZGVzdFlPZmZzZXQsIGRlc3Qp
OwogICAgICAgICAgICAgZGVzdC0+UmVsZWFzZSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjMx
MSwxMSArMjQ2NiwxOSBAQCBib29sIFRleHR1cmVDdWJlTWFwOjppc0N1YmVDb21wbGV0ZSgpIGNv
CiAKIHZvaWQgVGV4dHVyZUN1YmVNYXA6OmdlbmVyYXRlTWlwbWFwcygpCiB7Ci0gICAgaWYgKCFp
c1BvdzIobUltYWdlQXJyYXlbMF1bMF0ud2lkdGgpIHx8ICFpc0N1YmVDb21wbGV0ZSgpKQorICAg
IGlmICghaXNDdWJlQ29tcGxldGUoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CiAgICAgfQogCisgICAgaWYgKCFnZXRDb250ZXh0KCktPnN1cHBv
cnRzTm9uUG93ZXIyVGV4dHVyZSgpKQorICAgIHsKKyAgICAgICAgaWYgKCFpc1BvdzIobUltYWdl
QXJyYXlbMF1bMF0ud2lkdGgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9CisgICAgfQorCiAgICAgLy8gUHVyZ2Ug
YXJyYXkgbGV2ZWxzIDEgdGhyb3VnaCBxIGFuZCByZXNldCB0aGVtIHRvIHJlcHJlc2VudCB0aGUg
Z2VuZXJhdGVkIG1pcG1hcCBsZXZlbHMuCiAgICAgdW5zaWduZWQgaW50IHEgPSBsb2cyKG1JbWFn
ZUFycmF5WzBdWzBdLndpZHRoKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBmID0gMDsgZiA8IDY7
IGYrKykKQEAgLTIzMjgsMTUgKzI0OTEsMTQgQEAgdm9pZCBUZXh0dXJlQ3ViZU1hcDo6Z2VuZXJh
dGVNaXBtYXBzKCkKICAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtmXVtpXS5zdXJmYWNlID0g
TlVMTDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0uZGly
dHkgPSBmYWxzZTsKLQotICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0uZm9ybWF0ID0gbUlt
YWdlQXJyYXlbZl1bMF0uZm9ybWF0OwogICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0ud2lk
dGggPSBzdGQ6Om1heChtSW1hZ2VBcnJheVtmXVswXS53aWR0aCA+PiBpLCAxKTsKICAgICAgICAg
ICAgIG1JbWFnZUFycmF5W2ZdW2ldLmhlaWdodCA9IG1JbWFnZUFycmF5W2ZdW2ldLndpZHRoOwor
ICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0uZm9ybWF0ID0gbUltYWdlQXJyYXlbZl1bMF0u
Zm9ybWF0OworICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0udHlwZSA9IG1JbWFnZUFycmF5
W2ZdWzBdLnR5cGU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoaXNSZW5kZXJhYmxlKCkp
CisgICAgaWYgKG1Jc1JlbmRlcmFibGUpCiAgICAgewogICAgICAgICBpZiAobVRleHR1cmUgPT0g
TlVMTCkKICAgICAgICAgewpAQCAtMjM0Nyw4ICsyNTA5LDggQEAgdm9pZCBUZXh0dXJlQ3ViZU1h
cDo6Z2VuZXJhdGVNaXBtYXBzKCkKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IElEaXJlY3QzRFN1cmZhY2U5ICp1cHBlciA9IGdldEN1YmVNYXBTdXJmYWNlKGYsIGktMSk7Ci0g
ICAgICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmxvd2VyID0gZ2V0Q3ViZU1hcFN1cmZh
Y2UoZiwgaSk7CisgICAgICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnVwcGVyID0gZ2V0
Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZiwgaS0xKTsK
KyAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbG93ZXIgPSBnZXRDdWJlTWFwU3Vy
ZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmLCBpKTsKIAogICAgICAgICAg
ICAgICAgIGlmICh1cHBlciAhPSBOVUxMICYmIGxvd2VyICE9IE5VTEwpCiAgICAgICAgICAgICAg
ICAgewpAQCAtMjM1Nyw2ICsyNTE5LDggQEAgdm9pZCBUZXh0dXJlQ3ViZU1hcDo6Z2VuZXJhdGVN
aXBtYXBzKCkKIAogICAgICAgICAgICAgICAgIGlmICh1cHBlciAhPSBOVUxMKSB1cHBlci0+UmVs
ZWFzZSgpOwogICAgICAgICAgICAgICAgIGlmIChsb3dlciAhPSBOVUxMKSBsb3dlci0+UmVsZWFz
ZSgpOworCisgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0uZGlydHkgPSBmYWxzZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTIzNjYsNyArMjUzMCw3IEBAIHZv
aWQgVGV4dHVyZUN1YmVNYXA6OmdlbmVyYXRlTWlwbWFwcygpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDw9IHE7IGkrKykKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjcmVhdGVTdXJmYWNlKG1JbWFnZUFycmF5W2ZdW2ldLndpZHRoLCBt
SW1hZ2VBcnJheVtmXVtpXS5oZWlnaHQsIG1JbWFnZUFycmF5W2ZdW2ldLmZvcm1hdCwgbVR5cGUs
ICZtSW1hZ2VBcnJheVtmXVtpXSk7CisgICAgICAgICAgICAgICAgY3JlYXRlU3VyZmFjZSgmbUlt
YWdlQXJyYXlbZl1baV0pOwogICAgICAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJheVtmXVtpXS5z
dXJmYWNlID09IE5VTEwpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CkBAIC0yMzgwLDEyICsyNTQ0LDEwIEBAIHZv
aWQgVGV4dHVyZUN1YmVNYXA6OmdlbmVyYXRlTWlwbWFwcygpCiAgICAgICAgICAgICAgICAgbUlt
YWdlQXJyYXlbZl1baV0uZGlydHkgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0K
LSAgICAgICAgbURpcnR5TWV0YURhdGEgPSB0cnVlOwogICAgIH0KIH0KIAotUmVuZGVyYnVmZmVy
ICpUZXh0dXJlQ3ViZU1hcDo6Z2V0Q29sb3JidWZmZXIoR0xlbnVtIHRhcmdldCkKK1JlbmRlcmJ1
ZmZlciAqVGV4dHVyZUN1YmVNYXA6OmdldFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0KQogewog
ICAgIGlmICghSXNDdWJlbWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKQogICAgIHsKQEAgLTIzOTYs
NyArMjU1OCw3IEBAIFJlbmRlcmJ1ZmZlciAqVGV4dHVyZUN1YmVNYXA6OmdldENvbG9yYnUKIAog
ICAgIGlmIChtRmFjZVByb3hpZXNbZmFjZV0uZ2V0KCkgPT0gTlVMTCkKICAgICB7Ci0gICAgICAg
IG1GYWNlUHJveGllc1tmYWNlXS5zZXQobmV3IFJlbmRlcmJ1ZmZlcihpZCgpLCBuZXcgVGV4dHVy
ZUNvbG9yYnVmZmVyUHJveHkodGhpcywgdGFyZ2V0KSkpOworICAgICAgICBtRmFjZVByb3hpZXNb
ZmFjZV0uc2V0KG5ldyBSZW5kZXJidWZmZXIoaWQoKSwgbmV3IENvbG9yYnVmZmVyKHRoaXMsIHRh
cmdldCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbUZhY2VQcm94aWVzW2ZhY2VdLmdldCgpOwpA
QCAtMjQwNiw2MiArMjU2OCwyMiBAQCBJRGlyZWN0M0RTdXJmYWNlOSAqVGV4dHVyZUN1YmVNYXA6
OmdldFJlCiB7CiAgICAgQVNTRVJUKElzQ3ViZW1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSk7CiAK
LSAgICBuZWVkUmVuZGVyVGFyZ2V0KCk7Ci0gICAgCisgICAgaWYgKCFtSXNSZW5kZXJhYmxlKQor
ICAgIHsKKyAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgfQorCiAgICAgaWYg
KG1UZXh0dXJlID09IE5VTEwpCiAgICAgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisK
KyAgICB1cGRhdGVUZXh0dXJlKCk7CiAgICAgCiAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRl
clRhcmdldCA9IE5VTEw7Ci0gICAgbVRleHR1cmUtPkdldEN1YmVNYXBTdXJmYWNlKHN0YXRpY19j
YXN0PEQzRENVQkVNQVBfRkFDRVM+KGZhY2VJbmRleCh0YXJnZXQpKSwgMCwgJnJlbmRlclRhcmdl
dCk7CisgICAgbVRleHR1cmUtPkdldEN1YmVNYXBTdXJmYWNlKGVzMmR4OjpDb252ZXJ0Q3ViZUZh
Y2UodGFyZ2V0KSwgMCwgJnJlbmRlclRhcmdldCk7CiAKICAgICByZXR1cm4gcmVuZGVyVGFyZ2V0
OwogfQogCi1UZXh0dXJlOjpUZXh0dXJlQ29sb3JidWZmZXJQcm94eTo6VGV4dHVyZUNvbG9yYnVm
ZmVyUHJveHkoVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHRhcmdldCkKLSAgOiBDb2xvcmJ1ZmZl
cih0ZXh0dXJlKSwgbVRleHR1cmUodGV4dHVyZSksIG1UYXJnZXQodGFyZ2V0KQotewotICAgIEFT
U0VSVChJc1RleHR1cmVUYXJnZXQodGFyZ2V0KSk7Ci19Ci0KLXZvaWQgVGV4dHVyZTo6VGV4dHVy
ZUNvbG9yYnVmZmVyUHJveHk6OmFkZFJlZigpIGNvbnN0Ci17Ci0gICAgbVRleHR1cmUtPmFkZFJl
ZigpOwotfQotCi12b2lkIFRleHR1cmU6OlRleHR1cmVDb2xvcmJ1ZmZlclByb3h5OjpyZWxlYXNl
KCkgY29uc3QKLXsKLSAgICBtVGV4dHVyZS0+cmVsZWFzZSgpOwotfQotCi1JRGlyZWN0M0RTdXJm
YWNlOSAqVGV4dHVyZTo6VGV4dHVyZUNvbG9yYnVmZmVyUHJveHk6OmdldFJlbmRlclRhcmdldCgp
Ci17Ci0gICAgaWYgKG1SZW5kZXJUYXJnZXQpIG1SZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKLQot
ICAgIG1SZW5kZXJUYXJnZXQgPSBtVGV4dHVyZS0+Z2V0UmVuZGVyVGFyZ2V0KG1UYXJnZXQpOwot
Ci0gICAgcmV0dXJuIG1SZW5kZXJUYXJnZXQ7Ci19Ci0KLWludCBUZXh0dXJlOjpUZXh0dXJlQ29s
b3JidWZmZXJQcm94eTo6Z2V0V2lkdGgoKSBjb25zdAotewotICAgIHJldHVybiBtVGV4dHVyZS0+
Z2V0V2lkdGgoKTsKLX0KLQotaW50IFRleHR1cmU6OlRleHR1cmVDb2xvcmJ1ZmZlclByb3h5Ojpn
ZXRIZWlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBtVGV4dHVyZS0+Z2V0SGVpZ2h0KCk7Ci19
Ci0KLUdMZW51bSBUZXh0dXJlOjpUZXh0dXJlQ29sb3JidWZmZXJQcm94eTo6Z2V0Rm9ybWF0KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbVRleHR1cmUtPmdldEZvcm1hdCgpOwotfQotCi1ib29sIFRl
eHR1cmU6OlRleHR1cmVDb2xvcmJ1ZmZlclByb3h5Ojppc0Zsb2F0aW5nUG9pbnQoKSBjb25zdAot
ewotICAgIHJldHVybiBtVGV4dHVyZS0+aXNGbG9hdGluZ1BvaW50KCk7Ci19Ci0KIH0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5oCShy
ZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
VGV4dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw5ICsyMiwxNSBAQAogI2luY2x1ZGUgImxp
YkdMRVN2Mi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKIAorbmFtZXNw
YWNlIGVnbAoreworY2xhc3MgU3VyZmFjZTsKK30KKwogbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBC
bGl0OworY2xhc3MgRnJhbWVidWZmZXI7CiAKIGVudW0KIHsKQEAgLTU2LDQ5ICs2MiwzMCBAQCBj
bGFzcyBUZXh0dXJlIDogcHVibGljIFJlZkNvdW50T2JqZWN0CiAgICAgR0xlbnVtIGdldFdyYXBT
KCkgY29uc3Q7CiAgICAgR0xlbnVtIGdldFdyYXBUKCkgY29uc3Q7CiAKLSAgICBHTHVpbnQgZ2V0
V2lkdGgoKSBjb25zdDsKLSAgICBHTHVpbnQgZ2V0SGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBHTHNpemVpIGdldFdpZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRI
ZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBHTGVudW0gZ2V0VHlwZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEQzREZPUk1BVCBnZXREM0RGb3JtYXQoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0
dWFsIEdMZW51bSBnZXRGb3JtYXQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQ29t
cGxldGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQ29tcHJlc3NlZCgpIGNvbnN0
ID0gMDsKLSAgICBib29sIGlzRmxvYXRpbmdQb2ludCgpIGNvbnN0OwotICAgIGJvb2wgaXNSZW5k
ZXJhYmxlRm9ybWF0KCkgY29uc3Q7CiAKLSAgICBEM0RGT1JNQVQgZ2V0RDNERm9ybWF0KCkgY29u
c3Q7CiAgICAgSURpcmVjdDNEQmFzZVRleHR1cmU5ICpnZXRUZXh0dXJlKCk7Ci0gICAgdmlydHVh
bCBSZW5kZXJidWZmZXIgKmdldENvbG9yYnVmZmVyKEdMZW51bSB0YXJnZXQpID0gMDsKKyAgICB2
aXJ0dWFsIFJlbmRlcmJ1ZmZlciAqZ2V0UmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcHMoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIFJlbmRlcmJ1ZmZlclN0b3JhZ2UgKnNvdXJjZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKSA9IDA7CiAKLSAgICBib29sIGlzRGlydHko
KSBjb25zdDsKKyAgICBib29sIGlzRGlydHlQYXJhbWV0ZXIoKSBjb25zdDsKKyAgICBib29sIGlz
RGlydHlJbWFnZSgpIGNvbnN0OworICAgIHZvaWQgcmVzZXREaXJ0eSgpOworICAgIHVuc2lnbmVk
IGludCBnZXRTZXJpYWwoKSBjb25zdDsKIAotICAgIHN0YXRpYyBjb25zdCBHTHVpbnQgSU5DT01Q
TEVURV9URVhUVVJFX0lEID0gc3RhdGljX2Nhc3Q8R0x1aW50PigtMSk7IC8vIEV2ZXJ5IHRleHR1
cmUgdGFrZXMgYW4gaWQgYXQgY3JlYXRpb24gdGltZS4gVGhlIHZhbHVlIGlzIGFyYml0cmFyeSBi
ZWNhdXNlIGl0IGlzIG5ldmVyIHJlZ2lzdGVyZWQgd2l0aCB0aGUgcmVzb3VyY2UgbWFuYWdlci4K
KyAgICBzdGF0aWMgY29uc3QgR0x1aW50IElOQ09NUExFVEVfVEVYVFVSRV9JRCA9IHN0YXRpY19j
YXN0PEdMdWludD4oLTEpOyAgIC8vIEV2ZXJ5IHRleHR1cmUgdGFrZXMgYW4gaWQgYXQgY3JlYXRp
b24gdGltZS4gVGhlIHZhbHVlIGlzIGFyYml0cmFyeSBiZWNhdXNlIGl0IGlzIG5ldmVyIHJlZ2lz
dGVyZWQgd2l0aCB0aGUgcmVzb3VyY2UgbWFuYWdlci4KIAogICBwcm90ZWN0ZWQ6Ci0gICAgY2xh
c3MgVGV4dHVyZUNvbG9yYnVmZmVyUHJveHk7Ci0gICAgZnJpZW5kIGNsYXNzIFRleHR1cmVDb2xv
cmJ1ZmZlclByb3h5OwotICAgIGNsYXNzIFRleHR1cmVDb2xvcmJ1ZmZlclByb3h5IDogcHVibGlj
IENvbG9yYnVmZmVyCi0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBUZXh0dXJlQ29sb3Ji
dWZmZXJQcm94eShUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0KTsKLSAgICAgICAgICAg
IC8vIHRhcmdldCBpcyBhIDJELWxpa2UgdGV4dHVyZSB0YXJnZXQgKEdMX1RFWFRVUkVfMkQgb3Ig
b25lIG9mIHRoZSBjdWJlIGZhY2UgdGFyZ2V0cykKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRk
UmVmKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlKCkgY29uc3Q7Ci0KLSAg
ICAgICAgdmlydHVhbCBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0UmVuZGVyVGFyZ2V0KCk7Ci0KLSAg
ICAgICAgdmlydHVhbCBpbnQgZ2V0V2lkdGgoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBpbnQg
Z2V0SGVpZ2h0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgR0xlbnVtIGdldEZvcm1hdCgpIGNv
bnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGbG9hdGluZ1BvaW50KCkgY29uc3Q7Ci0KLSAg
ICAgIHByaXZhdGU6Ci0gICAgICAgIFRleHR1cmUgKm1UZXh0dXJlOwotICAgICAgICBHTGVudW0g
bVRhcmdldDsKLSAgICB9OworICAgIGZyaWVuZCBjbGFzcyBDb2xvcmJ1ZmZlcjsKIAogICAgIC8v
IEhlbHBlciBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc2luZ2xlIGltYWdlIGxheWVyCiAgICAg
c3RydWN0IEltYWdlCkBAIC0xMDYsNTUgKzkzLDQ5IEBAIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMg
UmVmQ291bnRPYmplY3QKICAgICAgICAgSW1hZ2UoKTsKICAgICAgICAgfkltYWdlKCk7CiAKKyAg
ICAgICAgYm9vbCBpc1JlbmRlcmFibGUoKSBjb25zdDsKKyAgICAgICAgRDNERk9STUFUIGdldEQz
REZvcm1hdCgpIGNvbnN0OworCiAgICAgICAgIEdMc2l6ZWkgd2lkdGg7CiAgICAgICAgIEdMc2l6
ZWkgaGVpZ2h0OwogICAgICAgICBHTGVudW0gZm9ybWF0OworICAgICAgICBHTGVudW0gdHlwZTsK
IAogICAgICAgICBib29sIGRpcnR5OwogCiAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzdXJm
YWNlOwogICAgIH07CiAKLSAgICBzdGF0aWMgRDNERk9STUFUIHNlbGVjdEZvcm1hdChHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSk7Ci0KLSAgICB2b2lkIHNldEltYWdlKEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNr
QWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMsIEltYWdlICppbWcpOwotICAgIGJvb2wgc3Vi
SW1hZ2UoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1l
bnQsIGNvbnN0IHZvaWQgKnBpeGVscywgSW1hZ2UgKmltZyk7Ci0gICAgdm9pZCBzZXRDb21wcmVz
c2VkSW1hZ2UoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMsIEltYWdlICppbWcpOwotICAgIGJv
b2wgc3ViSW1hZ2VDb21wcmVzc2VkKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6
ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzLCBJbWFnZSAqaW1nKTsKLSAgICB2b2lkIGNvcHlOb25SZW5k
ZXJhYmxlKEltYWdlICppbWFnZSwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdldCk7Ci0KLSAgICB2b2lkIG5l
ZWRSZW5kZXJUYXJnZXQoKTsKKyAgICB2b2lkIHNldEltYWdlKEdMaW50IHVucGFja0FsaWdubWVu
dCwgY29uc3Qgdm9pZCAqcGl4ZWxzLCBJbWFnZSAqaW1hZ2UpOworICAgIGJvb2wgc3ViSW1hZ2Uo
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNv
bnN0IHZvaWQgKnBpeGVscywgSW1hZ2UgKmltYWdlKTsKKyAgICB2b2lkIHNldENvbXByZXNzZWRJ
bWFnZShHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzLCBJbWFnZSAqaW1hZ2Up
OworICAgIGJvb2wgc3ViSW1hZ2VDb21wcmVzc2VkKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVp
IGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzLCBJbWFnZSAqaW1hZ2UpOworICAgIHZvaWQg
Y29weVRvSW1hZ2UoSW1hZ2UgKmltYWdlLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
TGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgSURpcmVjdDNE
U3VyZmFjZTkgKnJlbmRlclRhcmdldCk7CiAKICAgICBHTGludCBjcmVhdGlvbkxldmVscyhHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgbWF4bGV2ZWwpIGNvbnN0OwogICAgIEdM
aW50IGNyZWF0aW9uTGV2ZWxzKEdMc2l6ZWkgc2l6ZSwgR0xpbnQgbWF4bGV2ZWwpIGNvbnN0Owog
Ci0gICAgLy8gVGhlIHBvaW50ZXIgcmV0dXJuZWQgaXMgd2VhayBhbmQgaXQgaXMgYXNzdW1lZCB0
aGUgZGVyaXZlZCBjbGFzcyB3aWxsIGtlZXAgYSBzdHJvbmcgcG9pbnRlciB1bnRpbCB0aGUgbmV4
dCBjcmVhdGVUZXh0dXJlKCkgY2FsbC4KLSAgICB2aXJ0dWFsIElEaXJlY3QzREJhc2VUZXh0dXJl
OSAqY3JlYXRlVGV4dHVyZSgpID0gMDsKKyAgICB2aXJ0dWFsIElEaXJlY3QzREJhc2VUZXh0dXJl
OSAqZ2V0QmFzZVRleHR1cmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRl
eHR1cmUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmUoKSA9IDA7Ci0gICAg
dmlydHVhbCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKmNvbnZlcnRUb1JlbmRlclRhcmdldCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvUmVuZGVyVGFyZ2V0KCkgPSAwOwogICAgIHZp
cnR1YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdldFJlbmRlclRhcmdldChHTGVudW0gdGFyZ2V0KSA9
IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGlydHlJbWFnZURhdGEoKSBjb25zdCA9IDA7Ci0KLSAg
ICB2b2lkIGRyb3BUZXh0dXJlKCk7Ci0gICAgdm9pZCBwdXNoVGV4dHVyZShJRGlyZWN0M0RCYXNl
VGV4dHVyZTkgKm5ld1RleHR1cmUsIGJvb2wgcmVuZGVyYWJsZSk7Ci0gICAgdm9pZCBjcmVhdGVT
dXJmYWNlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgSW1hZ2UgKmltZyk7CisgICAgdm9pZCBjcmVhdGVTdXJmYWNlKEltYWdlICppbWFn
ZSk7CiAKICAgICBCbGl0ICpnZXRCbGl0dGVyKCk7CiAKICAgICBpbnQgbGV2ZWxDb3VudCgpIGNv
bnN0OwogCi0gICAgYm9vbCBpc1JlbmRlcmFibGUoKSBjb25zdDsKLQotICAgIHVuc2lnbmVkIGlu
dCBtV2lkdGg7Ci0gICAgdW5zaWduZWQgaW50IG1IZWlnaHQ7CiAgICAgR0xlbnVtIG1NaW5GaWx0
ZXI7CiAgICAgR0xlbnVtIG1NYWdGaWx0ZXI7CiAgICAgR0xlbnVtIG1XcmFwUzsKICAgICBHTGVu
dW0gbVdyYXBUOwotICAgIEdMZW51bSBtVHlwZTsKKyAgICBib29sIG1EaXJ0eVBhcmFtZXRlcjsK
KworICAgIGJvb2wgbURpcnR5SW1hZ2U7CiAKLSAgICBib29sIG1EaXJ0eU1ldGFEYXRhOworICAg
IGJvb2wgbUlzUmVuZGVyYWJsZTsKIAogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihUZXh0dXJlKTsKQEAgLTE2Myw0OCArMTQ0LDUzIEBAIGNsYXNzIFRleHR1cmUgOiBw
dWJsaWMgUmVmQ291bnRPYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdW5wYWNr
QWxpZ25tZW50LCBjb25zdCB2b2lkICppbnB1dCwgc3RkOjpzaXplX3Qgb3V0cHV0UGl0Y2gsIHZv
aWQgKm91dHB1dCwgRDNEU1VSRkFDRV9ERVNDICpkZXNjcmlwdGlvbikgY29uc3Q7CiAKICAgICB2
b2lkIGxvYWRBbHBoYUltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0KSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5w
dXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0
cHV0KSBjb25zdDsKICAgICB2b2lkIGxvYWRBbHBoYUZsb2F0SW1hZ2VEYXRhKEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQg
KmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKICAgICB2b2lkIGxv
YWRBbHBoYUhhbGZGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBv
dXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBv
dXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKICAgICB2b2lkIGxvYWRMdW1pbmFuY2VJ
bWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQsIGJvb2wgbmF0aXZlKSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZv
aWQgKm91dHB1dCwgYm9vbCBuYXRpdmUpIGNvbnN0OwogICAgIHZvaWQgbG9hZEx1bWluYW5jZUZs
b2F0SW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpIGNvbnN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpIGNvbnN0OwogICAgIHZvaWQgbG9hZEx1bWluYW5jZUhhbGZGbG9hdEltYWdl
RGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCkgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpIGNvbnN0OwogICAgIHZvaWQgbG9hZEx1bWluYW5jZUFscGhhSW1hZ2VEYXRh
KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFBp
dGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQs
IGJvb2wgbmF0aXZlKSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0LCBib29sIG5hdGl2ZSkgY29uc3Q7CiAgICAgdm9pZCBsb2FkTHVtaW5hbmNl
QWxwaGFGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91
dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXpl
X3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CiAgICAgdm9pZCBsb2FkTHVtaW5h
bmNlQWxwaGFIYWxmRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0
LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZv
aWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CiAgICAg
dm9pZCBsb2FkUkdCVUJ5dGVJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0
UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gs
IHZvaWQgKm91dHB1dCkgY29uc3Q7CiAgICAgdm9pZCBsb2FkUkdCNTY1SW1hZ2VEYXRhKEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRQaXRjaCwgY29uc3Qgdm9p
ZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0
LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CiAgICAgdm9pZCBsb2Fk
UkdCRmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZv
aWQgKm91dHB1dCkgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlu
cHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91
dHB1dCkgY29uc3Q7CiAgICAgdm9pZCBsb2FkUkdCSGFsZkZsb2F0SW1hZ2VEYXRhKEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRQaXRjaCwgY29uc3Qg
dm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZv
aWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CisgICAg
dm9pZCBsb2FkUkdCQVVCeXRlSW1hZ2VEYXRhU1NFMihHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90
IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwogICAgIHZvaWQgbG9hZFJHQkFVQnl0
ZUltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlu
cHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91
dHB1dCkgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBp
dGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQp
IGNvbnN0OwogICAgIHZvaWQgbG9hZFJHQkE0NDQ0SW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwg
c2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90
IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwogICAgIHZvaWQgbG9hZFJHQkE1NTUx
SW1hZ2VEYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQpIGNvbnN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNv
bnN0OwogICAgIHZvaWQgbG9hZFJHQkFGbG9hdEltYWdlRGF0YShHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBz
aXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkgY29uc3Q7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90
IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OwogICAgIHZvaWQgbG9hZFJHQkFIYWxm
RmxvYXRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0KSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpIGNvbnN0OwogICAgIHZvaWQgbG9hZEJHUkFJbWFnZURhdGEoR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KSBjb25zdDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90
IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpIGNvbnN0OworICAgIHZvaWQgbG9hZENvbXByZXNz
ZWRJbWFnZURhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5w
dXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0
cHV0KSBjb25zdDsKIAotICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqbUJhc2VUZXh0dXJlOyAv
LyBUaGlzIGlzIGEgd2VhayBwb2ludGVyLiBUaGUgZGVyaXZlZCBjbGFzcyBpcyBhc3N1bWVkIHRv
IG93biBhIHN0cm9uZyBwb2ludGVyLgorICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVTZXJp
YWwoKTsKIAotICAgIGJvb2wgbURpcnR5OwotICAgIGJvb2wgbUlzUmVuZGVyYWJsZTsKKyAgICBj
b25zdCB1bnNpZ25lZCBpbnQgbVNlcmlhbDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbUN1
cnJlbnRTZXJpYWw7CiB9OwogCiBjbGFzcyBUZXh0dXJlMkQgOiBwdWJsaWMgVGV4dHVyZQpAQCAt
MjE0LDM5ICsyMDAsNDYgQEAgY2xhc3MgVGV4dHVyZTJEIDogcHVibGljIFRleHR1cmUKIAogICAg
IH5UZXh0dXJlMkQoKTsKIAotICAgIEdMZW51bSBnZXRUYXJnZXQoKSBjb25zdDsKLSAgICBHTGVu
dW0gZ2V0Rm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTGVudW0gZ2V0VGFyZ2V0KCkgY29u
c3Q7CiAKLSAgICB2b2lkIHNldEltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOwotICAgIHZv
aWQgc2V0Q29tcHJlc3NlZEltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
dm9pZCAqcGl4ZWxzKTsKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0V2lkdGgoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0SGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTGVudW0g
Z2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdMZW51bSBnZXRUeXBlKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBEM0RGT1JNQVQgZ2V0RDNERm9ybWF0KCkgY29uc3Q7CisKKyAg
ICB2b2lkIHNldEltYWdlKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29u
c3Qgdm9pZCAqcGl4ZWxzKTsKKyAgICB2b2lkIHNldENvbXByZXNzZWRJbWFnZShHTGludCBsZXZl
bCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpOwogICAgIHZvaWQgc3ViSW1hZ2UoR0xpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25t
ZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOwogICAgIHZvaWQgc3ViSW1hZ2VDb21wcmVzc2VkKEdM
aW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZv
aWQgKnBpeGVscyk7Ci0gICAgdm9pZCBjb3B5SW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIFJlbmRlcmJ1ZmZlclN0b3JhZ2UgKnNvdXJjZSk7Ci0gICAgdm9pZCBjb3B5U3ViSW1hZ2Uo
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBSZW5kZXJi
dWZmZXJTdG9yYWdlICpzb3VyY2UpOworICAgIHZvaWQgY29weUltYWdlKEdMaW50IGxldmVsLCBH
TGVudW0gZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgRnJhbWVidWZmZXIgKnNvdXJjZSk7CisgICAgdm9pZCBjb3B5U3ViSW1hZ2UoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50
IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAq
c291cmNlKTsKIAotICAgIGJvb2wgaXNDb21wbGV0ZSgpIGNvbnN0OwotICAgIGJvb2wgaXNDb21w
cmVzc2VkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzQ29tcGxldGUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNDb21wcmVzc2VkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGJp
bmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOworICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlVGV4SW1hZ2UoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcHMoKTsKIAot
ICAgIHZpcnR1YWwgUmVuZGVyYnVmZmVyICpnZXRDb2xvcmJ1ZmZlcihHTGVudW0gdGFyZ2V0KTsK
KyAgICB2aXJ0dWFsIFJlbmRlcmJ1ZmZlciAqZ2V0UmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQp
OwogCiAgIHByaXZhdGU6CiAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmUyRCk7
CiAKLSAgICB2aXJ0dWFsIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqY3JlYXRlVGV4dHVyZSgpOwor
ICAgIHZpcnR1YWwgSURpcmVjdDNEQmFzZVRleHR1cmU5ICpnZXRCYXNlVGV4dHVyZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlKCk7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRleHR1cmUoKTsKLSAgICB2aXJ0dWFsIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqY29udmVy
dFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb1JlbmRlclRhcmdl
dCgpOwogICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdldFJlbmRlclRhcmdldChHTGVu
dW0gdGFyZ2V0KTsKIAotICAgIHZpcnR1YWwgYm9vbCBkaXJ0eUltYWdlRGF0YSgpIGNvbnN0Owot
Ci0gICAgYm9vbCByZWRlZmluZVRleHR1cmUoR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSB0eXBlKTsKKyAgICB2
b2lkIHJlZGVmaW5lVGV4dHVyZShHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSB0eXBlLCBib29sIGZvcmNlKTsKICAgICB2b2lk
IGNvbW1pdFJlY3QoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIAogICAgIEltYWdlIG1JbWFnZUFycmF5W0lN
UExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMU107CiAKICAgICBJRGlyZWN0M0RUZXh0dXJl
OSAqbVRleHR1cmU7CisgICAgZWdsOjpTdXJmYWNlICptU3VyZmFjZTsKIAogICAgIEJpbmRpbmdQ
b2ludGVyPFJlbmRlcmJ1ZmZlcj4gbUNvbG9yYnVmZmVyUHJveHk7CiB9OwpAQCAtMjU4LDUxICsy
NTEsNTUgQEAgY2xhc3MgVGV4dHVyZUN1YmVNYXAgOiBwdWJsaWMgVGV4dHVyZQogCiAgICAgflRl
eHR1cmVDdWJlTWFwKCk7CiAKLSAgICBHTGVudW0gZ2V0VGFyZ2V0KCkgY29uc3Q7Ci0gICAgR0xl
bnVtIGdldEZvcm1hdCgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xlbnVtIGdldFRhcmdldCgpIGNv
bnN0OworICAgIAorICAgIHZpcnR1YWwgR0xzaXplaSBnZXRXaWR0aCgpIGNvbnN0OworICAgIHZp
cnR1YWwgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdMZW51bSBnZXRJ
bnRlcm5hbEZvcm1hdCgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xlbnVtIGdldFR5cGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIEQzREZPUk1BVCBnZXREM0RGb3JtYXQoKSBjb25zdDsKKworICAgIHZv
aWQgc2V0SW1hZ2VQb3NYKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29u
c3Qgdm9pZCAqcGl4ZWxzKTsKKyAgICB2b2lkIHNldEltYWdlTmVnWChHTGludCBsZXZlbCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBH
TGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBzZXRJ
bWFnZVBvc1koR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lk
ICpwaXhlbHMpOworICAgIHZvaWQgc2V0SW1hZ2VOZWdZKEdMaW50IGxldmVsLCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVu
cGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKKyAgICB2b2lkIHNldEltYWdlUG9z
WihHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVs
cyk7CisgICAgdm9pZCBzZXRJbWFnZU5lZ1ooR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxp
Z25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOwogCi0gICAgdm9pZCBzZXRJbWFnZVBvc1goR0xp
bnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQs
IGNvbnN0IHZvaWQgKnBpeGVscyk7Ci0gICAgdm9pZCBzZXRJbWFnZU5lZ1goR0xpbnQgbGV2ZWws
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZv
aWQgKnBpeGVscyk7Ci0gICAgdm9pZCBzZXRJbWFnZVBvc1koR0xpbnQgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVs
cyk7Ci0gICAgdm9pZCBzZXRJbWFnZU5lZ1koR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7Ci0gICAg
dm9pZCBzZXRJbWFnZVBvc1ooR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBH
TGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7Ci0gICAgdm9pZCBzZXRJ
bWFnZU5lZ1ooR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBh
Y2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7Ci0KLSAgICB2b2lkIHNldENvbXByZXNz
ZWRJbWFnZShHTGVudW0gZmFjZSwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2
b2lkICpwaXhlbHMpOworICAgIHZvaWQgc2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSBmYWNlLCBH
TGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpOwogCiAgICAgdm9pZCBzdWJJ
bWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CiAgICAg
dm9pZCBzdWJJbWFnZUNvbXByZXNzZWQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
TGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLSAg
ICB2b2lkIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgUmVuZGVyYnVmZmVyU3RvcmFnZSAqc291cmNlKTsKLSAgICB2b2lkIGNvcHlTdWJJbWFnZShH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIFJlbmRlcmJ1
ZmZlclN0b3JhZ2UgKnNvdXJjZSk7CisgICAgdm9pZCBjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgRnJhbWVidWZmZXIgKnNvdXJjZSk7CiAKLSAgICBib29sIGlzQ29tcGxldGUoKSBj
b25zdDsKLSAgICBib29sIGlzQ29tcHJlc3NlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBp
c0NvbXBsZXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzQ29tcHJlc3NlZCgpIGNvbnN0
OwogCiAgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwcygpOwogCi0gICAgdmlydHVhbCBS
ZW5kZXJidWZmZXIgKmdldENvbG9yYnVmZmVyKEdMZW51bSB0YXJnZXQpOworICAgIHZpcnR1YWwg
UmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCk7CiAKICAgcHJpdmF0
ZToKICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZUN1YmVNYXApOwogCi0gICAg
dmlydHVhbCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKmNyZWF0ZVRleHR1cmUoKTsKKyAgICB2aXJ0
dWFsIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqZ2V0QmFzZVRleHR1cmUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0
dXJlKCk7Ci0gICAgdmlydHVhbCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKmNvbnZlcnRUb1JlbmRl
clRhcmdldCgpOworICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKICAg
ICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIHRhcmdl
dCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGlydHlJbWFnZURhdGEoKSBjb25zdDsKLQotICAgIC8v
IGZhY2VJZGVudGlmaWVyIGlzIDAtNSBvciBvbmUgb2YgdGhlIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
KiBlbnVtZXJhbnRzLgorICAgIC8vIGZhY2UgaXMgb25lIG9mIHRoZSBHTF9URVhUVVJFX0NVQkVf
TUFQXyogZW51bWVyYW50cy4KICAgICAvLyBSZXR1cm5zIE5VTEwgaWYgdGhlIGNhbGwgdW5kZXJs
eWluZyBEaXJlY3QzRCBjYWxsIGZhaWxzLgotICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRDdWJl
TWFwU3VyZmFjZSh1bnNpZ25lZCBpbnQgZmFjZUlkZW50aWZpZXIsIHVuc2lnbmVkIGludCBsZXZl
bCk7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKmdldEN1YmVNYXBTdXJmYWNlKEdMZW51bSBmYWNl
LCB1bnNpZ25lZCBpbnQgbGV2ZWwpOwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGludCBmYWNlSW5k
ZXgoR0xlbnVtIGZhY2UpOwogCiAgICAgYm9vbCBpc0N1YmVDb21wbGV0ZSgpIGNvbnN0OwogCi0g
ICAgdm9pZCBzZXRJbWFnZShpbnQgZmFjZSwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAg
dm9pZCBzZXRJbWFnZShpbnQgZmFjZUluZGV4LCBHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tB
bGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CiAgICAgdm9pZCBjb21taXRSZWN0KEdMZW51
bSBmYWNlVGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotICAgIGJvb2wgcmVkZWZpbmVUZXh0dXJl
KEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgpOworICAg
IHZvaWQgcmVkZWZpbmVUZXh0dXJlKGludCBmYWNlSW5kZXgsIEdMaW50IGxldmVsLCBHTGVudW0g
Zm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIHR5cGUpOwogCiAg
ICAgSW1hZ2UgbUltYWdlQXJyYXlbNl1bSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxT
XTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9WZXJ0ZXhE
YXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1ZlcnRleERhdGFNYW5hZ2VyLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3MzMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFZlcnRl
eERhdGFNYW5hZ2VyLmg6IERlZmluZXMgdGhlIFZlcnRleERhdGFNYW5hZ2VyLCBhIGNsYXNzIHRo
YXQKKy8vIHJ1bnMgdGhlIEJ1ZmZlciB0cmFuc2xhdGlvbiBwcm9jZXNzLgorCisjaW5jbHVkZSAi
bGliR0xFU3YyL1ZlcnRleERhdGFNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcu
aCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
UHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisKKyNpbmNsdWRlICJsaWJH
TEVTdjIvdmVydGV4Y29udmVyc2lvbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9JbmRleERhdGFN
YW5hZ2VyLmgiCisKK25hbWVzcGFjZQoreworICAgIGVudW0geyBJTklUSUFMX1NUUkVBTV9CVUZG
RVJfU0laRSA9IDEwMjQqMTAyNCB9OworfQorCituYW1lc3BhY2UgZ2wKK3sKKworVmVydGV4RGF0
YU1hbmFnZXI6OlZlcnRleERhdGFNYW5hZ2VyKENvbnRleHQgKmNvbnRleHQsIElEaXJlY3QzRERl
dmljZTkgKmRldmljZSkgOiBtQ29udGV4dChjb250ZXh0KSwgbURldmljZShkZXZpY2UpCit7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7Cisg
ICAgICAgIG1EaXJ0eUN1cnJlbnRWYWx1ZVtpXSA9IHRydWU7CisgICAgICAgIG1DdXJyZW50VmFs
dWVCdWZmZXJbaV0gPSBOVUxMOworICAgIH0KKworICAgIGNvbnN0IEQzRENBUFM5ICZjYXBzID0g
Y29udGV4dC0+Z2V0RGV2aWNlQ2FwcygpOworICAgIGNoZWNrVmVydGV4Q2FwcyhjYXBzLkRlY2xU
eXBlcyk7CisKKyAgICBtU3RyZWFtaW5nQnVmZmVyID0gbmV3IFN0cmVhbWluZ1ZlcnRleEJ1ZmZl
cihtRGV2aWNlLCBJTklUSUFMX1NUUkVBTV9CVUZGRVJfU0laRSk7CisKKyAgICBpZiAoIW1TdHJl
YW1pbmdCdWZmZXIpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUg
c3RyZWFtaW5nIHZlcnRleCBidWZmZXIuIik7CisgICAgfQorfQorCitWZXJ0ZXhEYXRhTWFuYWdl
cjo6flZlcnRleERhdGFNYW5hZ2VyKCkKK3sKKyAgICBkZWxldGUgbVN0cmVhbWluZ0J1ZmZlcjsK
KworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAg
eworICAgICAgICBkZWxldGUgbUN1cnJlbnRWYWx1ZUJ1ZmZlcltpXTsKKyAgICB9Cit9CisKK1VJ
TlQgVmVydGV4RGF0YU1hbmFnZXI6OndyaXRlQXR0cmlidXRlRGF0YShBcnJheVZlcnRleEJ1ZmZl
ciAqdmVydGV4QnVmZmVyLCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgY29uc3QgVmVydGV4
QXR0cmlidXRlICZhdHRyaWJ1dGUpCit7CisgICAgQnVmZmVyICpidWZmZXIgPSBhdHRyaWJ1dGUu
bUJvdW5kQnVmZmVyLmdldCgpOworCisgICAgaW50IGlucHV0U3RyaWRlID0gYXR0cmlidXRlLnN0
cmlkZSgpOworICAgIGludCBlbGVtZW50U2l6ZSA9IGF0dHJpYnV0ZS50eXBlU2l6ZSgpOworICAg
IGNvbnN0IEZvcm1hdENvbnZlcnRlciAmY29udmVydGVyID0gZm9ybWF0Q29udmVydGVyKGF0dHJp
YnV0ZSk7CisgICAgVUlOVCBzdHJlYW1PZmZzZXQgPSAwOworCisgICAgdm9pZCAqb3V0cHV0ID0g
TlVMTDsKKyAgICAKKyAgICBpZiAodmVydGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgb3V0cHV0
ID0gdmVydGV4QnVmZmVyLT5tYXAoYXR0cmlidXRlLCBzcGFjZVJlcXVpcmVkKGF0dHJpYnV0ZSwg
Y291bnQpLCAmc3RyZWFtT2Zmc2V0KTsKKyAgICB9CisKKyAgICBpZiAob3V0cHV0ID09IE5VTEwp
CisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byBtYXAgdmVydGV4IGJ1ZmZlci4iKTsKKyAg
ICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGNvbnN0IGNoYXIgKmlucHV0ID0gTlVMTDsK
KworICAgIGlmIChidWZmZXIpCisgICAgeworICAgICAgICBpbnQgb2Zmc2V0ID0gYXR0cmlidXRl
Lm1PZmZzZXQ7CisKKyAgICAgICAgaW5wdXQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVm
ZmVyLT5kYXRhKCkpICsgb2Zmc2V0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBp
bnB1dCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhdHRyaWJ1dGUubVBvaW50ZXIpOworICAg
IH0KKworICAgIGlucHV0ICs9IGlucHV0U3RyaWRlICogc3RhcnQ7CisKKyAgICBpZiAoY29udmVy
dGVyLmlkZW50aXR5ICYmIGlucHV0U3RyaWRlID09IGVsZW1lbnRTaXplKQorICAgIHsKKyAgICAg
ICAgbWVtY3B5KG91dHB1dCwgaW5wdXQsIGNvdW50ICogaW5wdXRTdHJpZGUpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBjb252ZXJ0ZXIuY29udmVydEFycmF5KGlucHV0LCBpbnB1
dFN0cmlkZSwgY291bnQsIG91dHB1dCk7CisgICAgfQorCisgICAgdmVydGV4QnVmZmVyLT51bm1h
cCgpOworCisgICAgcmV0dXJuIHN0cmVhbU9mZnNldDsKK30KKworR0xlbnVtIFZlcnRleERhdGFN
YW5hZ2VyOjpwcmVwYXJlVmVydGV4RGF0YShHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgVHJh
bnNsYXRlZEF0dHJpYnV0ZSAqdHJhbnNsYXRlZCkKK3sKKyAgICBpZiAoIW1TdHJlYW1pbmdCdWZm
ZXIpCisgICAgeworICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICB9CisKKyAg
ICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGVBcnJheSAmYXR0cmlicyA9IG1Db250ZXh0LT5nZXRWZXJ0
ZXhBdHRyaWJ1dGVzKCk7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IG1Db250ZXh0LT5nZXRDdXJy
ZW50UHJvZ3JhbSgpOworCisgICAgZm9yIChpbnQgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1
dGVJbmRleCA8IE1BWF9WRVJURVhfQVRUUklCUzsgYXR0cmlidXRlSW5kZXgrKykKKyAgICB7Cisg
ICAgICAgIHRyYW5zbGF0ZWRbYXR0cmlidXRlSW5kZXhdLmFjdGl2ZSA9IChwcm9ncmFtLT5nZXRT
ZW1hbnRpY0luZGV4KGF0dHJpYnV0ZUluZGV4KSAhPSAtMSk7CisgICAgfQorCisgICAgLy8gRGV0
ZXJtaW5lIHRoZSByZXF1aXJlZCBzdG9yYWdlIHNpemUgcGVyIHVzZWQgYnVmZmVyLCBhbmQgaW52
YWxpZGF0ZSBzdGF0aWMgYnVmZmVycyB0aGF0IGRvbid0IGNvbnRhaW4gbWF0Y2hpbmcgYXR0cmli
dXRlcworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisg
ICAgeworICAgICAgICBpZiAodHJhbnNsYXRlZFtpXS5hY3RpdmUgJiYgYXR0cmlic1tpXS5tQXJy
YXlFbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciA9IGF0dHJp
YnNbaV0ubUJvdW5kQnVmZmVyLmdldCgpOworICAgICAgICAgICAgU3RhdGljVmVydGV4QnVmZmVy
ICpzdGF0aWNCdWZmZXIgPSBidWZmZXIgPyBidWZmZXItPmdldFN0YXRpY1ZlcnRleEJ1ZmZlcigp
IDogTlVMTDsKKworICAgICAgICAgICAgaWYgKHN0YXRpY0J1ZmZlcikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoc3RhdGljQnVmZmVyLT5zaXplKCkgPT0gMCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGludCB0b3RhbENvdW50ID0gYnVmZmVyLT5z
aXplKCkgLyBhdHRyaWJzW2ldLnN0cmlkZSgpOworICAgICAgICAgICAgICAgICAgICBzdGF0aWNC
dWZmZXItPmFkZFJlcXVpcmVkU3BhY2Uoc3BhY2VSZXF1aXJlZChhdHRyaWJzW2ldLCB0b3RhbENv
dW50KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRp
Y0J1ZmZlci0+bG9va3VwQXR0cmlidXRlKGF0dHJpYnNbaV0pID09IC0xKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBzdGF0aWMgYnVmZmVyIGRvZXNuJ3Qg
aGF2ZSBtYXRjaGluZyBhdHRyaWJ1dGVzLCBzbyBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHN0cmVh
bWluZyBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgbVN0cmVhbWluZ0J1ZmZlci0+YWRkUmVx
dWlyZWRTcGFjZUZvcihzdGF0aWNCdWZmZXIpOworICAgICAgICAgICAgICAgICAgICBidWZmZXIt
PmludmFsaWRhdGVTdGF0aWNEYXRhKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbVN0cmVhbWlu
Z0J1ZmZlci0+YWRkUmVxdWlyZWRTcGFjZShzcGFjZVJlcXVpcmVkKGF0dHJpYnNbaV0sIGNvdW50
KSk7CisgICAgICAgICAgICAgICAgfSAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtU3RyZWFtaW5nQnVmZmVyLT5hZGRS
ZXF1aXJlZFNwYWNlKHNwYWNlUmVxdWlyZWQoYXR0cmlic1tpXSwgY291bnQpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJlc2VydmUgdGhlIHJlcXVpcmVkIHNw
YWNlIHBlciB1c2VkIGJ1ZmZlcgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9B
VFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBpZiAodHJhbnNsYXRlZFtpXS5hY3RpdmUgJiYg
YXR0cmlic1tpXS5tQXJyYXlFbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAgICBCdWZmZXIg
KmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdldCgpOworICAgICAgICAgICAgQXJy
YXlWZXJ0ZXhCdWZmZXIgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RhdGlj
VmVydGV4QnVmZmVyKCkgOiBOVUxMOworICAgICAgICAgICAgQXJyYXlWZXJ0ZXhCdWZmZXIgKnZl
cnRleEJ1ZmZlciA9IHN0YXRpY0J1ZmZlciA/IHN0YXRpY0J1ZmZlciA6IG1TdHJlYW1pbmdCdWZm
ZXI7CisKKyAgICAgICAgICAgIGlmICh2ZXJ0ZXhCdWZmZXIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdmVydGV4QnVmZmVyLT5yZXNlcnZlUmVxdWlyZWRTcGFjZSgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gUGVyZm9ybSB0aGUgdmVydGV4IGRh
dGEgdHJhbnNsYXRpb25zCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJ
QlM7IGkrKykKKyAgICB7CisgICAgICAgIGlmICh0cmFuc2xhdGVkW2ldLmFjdGl2ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGF0dHJpYnNbaV0ubUFycmF5RW5hYmxlZCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5k
QnVmZmVyLmdldCgpOworCisgICAgICAgICAgICAgICAgaWYgKCFidWZmZXIgJiYgYXR0cmlic1tp
XS5tUG9pbnRlciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBpcyBhbiBhcHBsaWNhdGlvbiBlcnJvciB0aGF0IHdvdWxkIG5vcm1hbGx5IHJl
c3VsdCBpbiBhIGNyYXNoLCBidXQgd2UgY2F0Y2ggaXQgYW5kIHJldHVybiBhbiBlcnJvcgorICAg
ICAgICAgICAgICAgICAgICBFUlIoIkFuIGVuYWJsZWQgdmVydGV4IGFycmF5IGhhcyBubyBidWZm
ZXIgYW5kIG5vIHBvaW50ZXIuIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9JTlZB
TElEX09QRVJBVElPTjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb25z
dCBGb3JtYXRDb252ZXJ0ZXIgJmNvbnZlcnRlciA9IGZvcm1hdENvbnZlcnRlcihhdHRyaWJzW2ld
KTsKKworICAgICAgICAgICAgICAgIFN0YXRpY1ZlcnRleEJ1ZmZlciAqc3RhdGljQnVmZmVyID0g
YnVmZmVyID8gYnVmZmVyLT5nZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoKSA6IE5VTEw7CisgICAgICAg
ICAgICAgICAgQXJyYXlWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlciA9IHN0YXRpY0J1ZmZlciA/
IHN0YXRpY0J1ZmZlciA6IHN0YXRpY19jYXN0PEFycmF5VmVydGV4QnVmZmVyKj4obVN0cmVhbWlu
Z0J1ZmZlcik7CisKKyAgICAgICAgICAgICAgICBVSU5UIHN0cmVhbU9mZnNldCA9IC0xOworCisg
ICAgICAgICAgICAgICAgaWYgKHN0YXRpY0J1ZmZlcikKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IHN0YXRpY0J1ZmZlci0+bG9va3VwQXR0cmli
dXRlKGF0dHJpYnNbaV0pOworCisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJlYW1PZmZzZXQg
PT0gLTEpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IENvbnZlcnQgdGhlIGVudGlyZSBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB0
b3RhbENvdW50ID0gYnVmZmVyLT5zaXplKCkgLyBhdHRyaWJzW2ldLnN0cmlkZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0SW5kZXggPSBhdHRyaWJzW2ldLm1PZmZzZXQgLyBh
dHRyaWJzW2ldLnN0cmlkZSgpOworCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZz
ZXQgPSB3cml0ZUF0dHJpYnV0ZURhdGEoc3RhdGljQnVmZmVyLCAtc3RhcnRJbmRleCwgdG90YWxD
b3VudCwgYXR0cmlic1tpXSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgKz0gKHN0YXJ0ICsgYXR0cmlic1tp
XS5tT2Zmc2V0IC8gYXR0cmlic1tpXS5zdHJpZGUoKSkgKiBjb252ZXJ0ZXIub3V0cHV0RWxlbWVu
dFNpemU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtT2Zmc2V0ID0gd3JpdGVBdHRyaWJ1dGVEYXRhKG1TdHJlYW1pbmdCdWZmZXIsIHN0YXJ0LCBj
b3VudCwgYXR0cmlic1tpXSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
aWYgKHN0cmVhbU9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0udmVydGV4QnVmZmVyID0gdmVydGV4QnVmZmVyLT5n
ZXRCdWZmZXIoKTsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnR5cGUgPSBjb252ZXJ0
ZXIuZDNkRGVjbFR5cGU7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5zdHJpZGUgPSBj
b252ZXJ0ZXIub3V0cHV0RWxlbWVudFNpemU7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtp
XS5vZmZzZXQgPSBzdHJlYW1PZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKG1EaXJ0eUN1cnJlbnRWYWx1ZVtp
XSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBtQ3VycmVu
dFZhbHVlQnVmZmVyW2ldOworICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFZhbHVlQnVmZmVy
W2ldID0gbmV3IENvbnN0YW50VmVydGV4QnVmZmVyKG1EZXZpY2UsIGF0dHJpYnNbaV0ubUN1cnJl
bnRWYWx1ZVswXSwgYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlWzFdLCBhdHRyaWJzW2ldLm1DdXJy
ZW50VmFsdWVbMl0sIGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVszXSk7CisgICAgICAgICAgICAg
ICAgICAgIG1EaXJ0eUN1cnJlbnRWYWx1ZVtpXSA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0udmVydGV4QnVmZmVyID0gbUN1cnJlbnRW
YWx1ZUJ1ZmZlcltpXS0+Z2V0QnVmZmVyKCk7CisKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVk
W2ldLnR5cGUgPSBEM0RERUNMVFlQRV9GTE9BVDQ7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRl
ZFtpXS5zdHJpZGUgPSAwOworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0ub2Zmc2V0ID0g
MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBpZiAodHJhbnNs
YXRlZFtpXS5hY3RpdmUgJiYgYXR0cmlic1tpXS5tQXJyYXlFbmFibGVkKQorICAgICAgICB7Cisg
ICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdldCgp
OworCisgICAgICAgICAgICBpZiAoYnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGJ1ZmZlci0+cHJvbW90ZVN0YXRpY1VzYWdlKGNvdW50ICogYXR0cmlic1tpXS50eXBlU2l6
ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBHTF9O
T19FUlJPUjsKK30KKworc3RkOjpzaXplX3QgVmVydGV4RGF0YU1hbmFnZXI6OnNwYWNlUmVxdWly
ZWQoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsIHN0ZDo6c2l6ZV90IGNvdW50KSBjb25z
dAoreworICAgIHJldHVybiBmb3JtYXRDb252ZXJ0ZXIoYXR0cmliKS5vdXRwdXRFbGVtZW50U2l6
ZSAqIGNvdW50OworfQorCisvLyBNYXBwaW5nIGZyb20gT3BlbkdMLUVTIHZlcnRleCBhdHRyaWIg
dHlwZSB0byBEM0QgZGVjbCB0eXBlOgorLy8KKy8vIEJZVEUgICAgICAgICAgICAgICAgIFNIT1JU
IChDYXN0KQorLy8gQllURS1ub3JtICAgICAgICAgICAgRkxPQVQgKE5vcm1hbGl6ZSkgKGNhbid0
IGJlIGV4YWN0bHkgcmVwcmVzZW50ZWQgYXMgU0hPUlQtbm9ybSkKKy8vIFVOU0lHTkVEX0JZVEUg
ICAgICAgIFVCWVRFNCAoSWRlbnRpdHkpIG9yIFNIT1JUIChDYXN0KQorLy8gVU5TSUdORURfQllU
RS1ub3JtICAgVUJZVEU0TiAoSWRlbnRpdHkpIG9yIEZMT0FUIChOb3JtYWxpemUpCisvLyBTSE9S
VCAgICAgICAgICAgICAgICBTSE9SVCAoSWRlbnRpdHkpCisvLyBTSE9SVC1ub3JtICAgICAgICAg
ICBTSE9SVC1ub3JtIChJZGVudGl0eSkgb3IgRkxPQVQgKE5vcm1hbGl6ZSkKKy8vIFVOU0lHTkVE
X1NIT1JUICAgICAgIEZMT0FUIChDYXN0KQorLy8gVU5TSUdORURfU0hPUlQtbm9ybSAgVVNIT1JU
LW5vcm0gKElkZW50aXR5KSBvciBGTE9BVCAoTm9ybWFsaXplKQorLy8gRklYRUQgKG5vdCBpbiBX
ZWJHTCkgRkxPQVQgKEZpeGVkVG9GbG9hdCkKKy8vIEZMT0FUICAgICAgICAgICAgICAgIEZMT0FU
IChJZGVudGl0eSkKKworLy8gR0xUb0NUeXBlIG1hcHMgZnJvbSBHTCB0eXBlIChhcyBHTGVudW0p
IHRvIHRoZSBDIHR5cGVkZWYuIAordGVtcGxhdGUgPEdMZW51bSBHTFR5cGU+IHN0cnVjdCBHTFRv
Q1R5cGUgeyB9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgR0xUb0NUeXBlPEdMX0JZVEU+IHsgdHlw
ZWRlZiBHTGJ5dGUgdHlwZTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfVU5T
SUdORURfQllURT4geyB0eXBlZGVmIEdMdWJ5dGUgdHlwZTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVj
dCBHTFRvQ1R5cGU8R0xfU0hPUlQ+IHsgdHlwZWRlZiBHTHNob3J0IHR5cGU7IH07Cit0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgR0xUb0NUeXBlPEdMX1VOU0lHTkVEX1NIT1JUPiB7IHR5cGVkZWYgR0x1c2hv
cnQgdHlwZTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfRklYRUQ+IHsgdHlw
ZWRlZiBHTHVpbnQgdHlwZTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfRkxP
QVQ+IHsgdHlwZWRlZiBHTGZsb2F0IHR5cGU7IH07CisKKy8vIFRoaXMgZGlmZmVycyBmcm9tIEQz
RERFQ0xUWVBFIGluIHRoYXQgaXQgaXMgdW5zaXplZC4gKFNpemUgZXhwYW5zaW9uIGlzIGFwcGxp
ZWQgbGFzdC4pCitlbnVtIEQzRFZlcnRleFR5cGUKK3sKKyAgICBEM0RWVF9GTE9BVCwKKyAgICBE
M0RWVF9TSE9SVCwKKyAgICBEM0RWVF9TSE9SVF9OT1JNLAorICAgIEQzRFZUX1VCWVRFLAorICAg
IEQzRFZUX1VCWVRFX05PUk0sCisgICAgRDNEVlRfVVNIT1JUX05PUk0KK307CisKKy8vIEQzRFRv
Q1R5cGUgbWFwcyBmcm9tIEQzRCB2ZXJ0ZXggdHlwZSAoYXMgZW51bSBEM0RWZXJ0ZXhUeXBlKSB0
byB0aGUgY29ycmVzcG9uZGluZyBDIHR5cGUuCit0ZW1wbGF0ZSA8dW5zaWduZWQgaW50IEQzRFR5
cGU+IHN0cnVjdCBEM0RUb0NUeXBlIHsgfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IEQzRFRvQ1R5
cGU8RDNEVlRfRkxPQVQ+IHsgdHlwZWRlZiBmbG9hdCB0eXBlOyB9OwordGVtcGxhdGUgPD4gc3Ry
dWN0IEQzRFRvQ1R5cGU8RDNEVlRfU0hPUlQ+IHsgdHlwZWRlZiBzaG9ydCB0eXBlOyB9OwordGVt
cGxhdGUgPD4gc3RydWN0IEQzRFRvQ1R5cGU8RDNEVlRfU0hPUlRfTk9STT4geyB0eXBlZGVmIHNo
b3J0IHR5cGU7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RWVF9VQllURT4g
eyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBEM0RU
b0NUeXBlPEQzRFZUX1VCWVRFX05PUk0+IHsgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHR5cGU7IH07
Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RWVF9VU0hPUlRfTk9STT4geyB0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0IHR5cGU7IH07CisKKy8vIEVuY29kZSB0aGUgdHlwZS9zaXplIGNv
bWJpbmF0aW9ucyB0aGF0IEQzRCBwZXJtaXRzLiBGb3IgZWFjaCB0eXBlL3NpemUgaXQgZXhwYW5k
cyB0byBhIHdpZGVuZXIgdGhhdCB3aWxsIHByb3ZpZGUgdGhlIGFwcHJvcHJpYXRlIGZpbmFsIHNp
emUuCit0ZW1wbGF0ZSA8dW5zaWduZWQgaW50IHR5cGUsIGludCBzaXplPgorc3RydWN0IFdpZGVu
UnVsZQoreworfTsKKwordGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZU
X0ZMT0FULCBzaXplPiAgICAgICAgICA6IGdsOjpOb1dpZGVuPHNpemU+IHsgfTsKK3RlbXBsYXRl
IDxpbnQgc2l6ZT4gc3RydWN0IFdpZGVuUnVsZTxEM0RWVF9TSE9SVCwgc2l6ZT4gICAgICAgICAg
OiBnbDo6V2lkZW5Ub0V2ZW48c2l6ZT4geyB9OwordGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3Qg
V2lkZW5SdWxlPEQzRFZUX1NIT1JUX05PUk0sIHNpemU+ICAgICA6IGdsOjpXaWRlblRvRXZlbjxz
aXplPiB7IH07Cit0ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfVUJZ
VEUsIHNpemU+ICAgICAgICAgIDogZ2w6OldpZGVuVG9Gb3VyPHNpemU+IHsgfTsKK3RlbXBsYXRl
IDxpbnQgc2l6ZT4gc3RydWN0IFdpZGVuUnVsZTxEM0RWVF9VQllURV9OT1JNLCBzaXplPiAgICAg
OiBnbDo6V2lkZW5Ub0ZvdXI8c2l6ZT4geyB9OwordGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3Qg
V2lkZW5SdWxlPEQzRFZUX1VTSE9SVF9OT1JNLCBzaXplPiAgICA6IGdsOjpXaWRlblRvRXZlbjxz
aXplPiB7IH07CisKKy8vIFZlcnRleFR5cGVGbGFncyBlbmNvZGVzIHRoZSBEM0RDQVBTOTo6RGVj
bFR5cGUgZmxhZyBhbmQgdmVydGV4IGRlY2xhcmF0aW9uIGZsYWcgZm9yIGVhY2ggRDNEIHZlcnRl
eCB0eXBlICYgc2l6ZSBjb21iaW5hdGlvbi4KK3RlbXBsYXRlIDx1bnNpZ25lZCBpbnQgZDNkdHlw
ZSwgaW50IHNpemU+CitzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzCit7Cit9OworCit0ZW1wbGF0ZSA8
dW5zaWduZWQgaW50IGNhcGZsYWcsIHVuc2lnbmVkIGludCBkZWNsZmxhZz4KK3N0cnVjdCBWZXJ0
ZXhUeXBlRmxhZ3NIZWxwZXIKK3sKKyAgICBlbnVtIHsgY2FwZmxhZyA9IGNhcGZsYWcgfTsKKyAg
ICBlbnVtIHsgZGVjbGZsYWcgPSBkZWNsZmxhZyB9OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0
IFZlcnRleFR5cGVGbGFnczxEM0RWVF9GTE9BVCwgMT4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8
MCwgRDNEREVDTFRZUEVfRkxPQVQxPiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlw
ZUZsYWdzPEQzRFZUX0ZMT0FULCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjwwLCBEM0RERUNM
VFlQRV9GTE9BVDI+IHsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNE
VlRfRkxPQVQsIDM+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPDAsIEQzRERFQ0xUWVBFX0ZMT0FU
Mz4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9GTE9BVCwg
ND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZUEVfRkxPQVQ0PiB7IH07Cit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1NIT1JULCAyPiA6IFZlcnRl
eFR5cGVGbGFnc0hlbHBlcjwwLCBEM0RERUNMVFlQRV9TSE9SVDI+IHsgfTsKK3RlbXBsYXRlIDw+
IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfU0hPUlQsIDQ+IDogVmVydGV4VHlwZUZsYWdz
SGVscGVyPDAsIEQzRERFQ0xUWVBFX1NIT1JUND4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZl
cnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVF9OT1JNLCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBl
cjxEM0REVENBUFNfU0hPUlQyTiwgRDNEREVDTFRZUEVfU0hPUlQyTj4geyB9OwordGVtcGxhdGUg
PD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVF9OT1JNLCA0PiA6IFZlcnRleFR5
cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfU0hPUlQ0TiwgRDNEREVDTFRZUEVfU0hPUlQ0Tj4geyB9
OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9VQllURSwgND4gOiBW
ZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8RDNERFRDQVBTX1VCWVRFNCwgRDNEREVDTFRZUEVfVUJZVEU0
PiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1VCWVRFX05P
Uk0sIDQ+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPEQzRERUQ0FQU19VQllURTROLCBEM0RERUNM
VFlQRV9VQllURTROPiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQz
RFZUX1VTSE9SVF9OT1JNLCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfVVNI
T1JUMk4sIEQzRERFQ0xUWVBFX1VTSE9SVDJOPiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVy
dGV4VHlwZUZsYWdzPEQzRFZUX1VTSE9SVF9OT1JNLCA0PiA6IFZlcnRleFR5cGVGbGFnc0hlbHBl
cjxEM0REVENBUFNfVVNIT1JUNE4sIEQzRERFQ0xUWVBFX1VTSE9SVDROPiB7IH07CisKKworLy8g
VmVydGV4VHlwZU1hcHBpbmcgbWFwcyBHTCB0eXBlICYgbm9ybWFsaXplZCBmbGFnIHRvIHByZWZl
cnJlZCBhbmQgZmFsbGJhY2sgRDNEIHZlcnRleCB0eXBlcyAoYXMgRDNEVmVydGV4VHlwZSBlbnVt
cykuCit0ZW1wbGF0ZSA8R0xlbnVtIEdMdHlwZSwgYm9vbCBub3JtYWxpemVkPgorc3RydWN0IFZl
cnRleFR5cGVNYXBwaW5nCit7Cit9OworCit0ZW1wbGF0ZSA8RDNEVmVydGV4VHlwZSBQcmVmZXJy
ZWQsIEQzRFZlcnRleFR5cGUgRmFsbGJhY2sgPSBQcmVmZXJyZWQ+CitzdHJ1Y3QgVmVydGV4VHlw
ZU1hcHBpbmdCYXNlCit7CisgICAgZW51bSB7IHByZWZlcnJlZCA9IFByZWZlcnJlZCB9OworICAg
IGVudW0geyBmYWxsYmFjayA9IEZhbGxiYWNrIH07Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
VmVydGV4VHlwZU1hcHBpbmc8R0xfQllURSwgZmFsc2U+ICAgICAgICAgICAgICAgICAgICAgICAg
OiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfU0hPUlQ+IHsgfTsgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENhc3QKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9C
WVRFLCB0cnVlPiAgICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5nQmFz
ZTxEM0RWVF9GTE9BVD4geyB9OyAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9ybWFsaXplCit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdORURfQllURSwgZmFs
c2U+ICAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfVUJZVEUsIEQz
RFZUX0ZMT0FUPiB7IH07ICAgICAgICAgIC8vIElkZW50aXR5LCBDYXN0Cit0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdORURfQllURSwgdHJ1ZT4gICAgICAgICAg
ICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfVUJZVEVfTk9STSwgRDNEVlRfRkxP
QVQ+IHsgfTsgICAgIC8vIElkZW50aXR5LCBOb3JtYWxpemUKK3RlbXBsYXRlIDw+IHN0cnVjdCBW
ZXJ0ZXhUeXBlTWFwcGluZzxHTF9TSE9SVCwgZmFsc2U+ICAgICAgICAgICAgICAgICAgICAgICA6
IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9TSE9SVD4geyB9OyAgICAgICAgICAgICAgICAg
ICAgICAgLy8gSWRlbnRpdHkKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxH
TF9TSE9SVCwgdHJ1ZT4gICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5n
QmFzZTxEM0RWVF9TSE9SVF9OT1JNLCBEM0RWVF9GTE9BVD4geyB9OyAgICAgLy8gQ2FzdCwgTm9y
bWFsaXplCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdORURf
U0hPUlQsIGZhbHNlPiAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRf
RkxPQVQ+IHsgfTsgICAgICAgICAgICAgICAgICAgICAgIC8vIENhc3QKK3RlbXBsYXRlIDw+IHN0
cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9VTlNJR05FRF9TSE9SVCwgdHJ1ZT4gICAgICAgICAg
ICAgICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9VU0hPUlRfTk9STSwgRDNEVlRfRkxP
QVQ+IHsgfTsgICAgLy8gQ2FzdCwgTm9ybWFsaXplCit0ZW1wbGF0ZSA8Ym9vbCBub3JtYWxpemVk
PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfRklYRUQsIG5vcm1hbGl6ZWQ+ICAgOiBWZXJ0
ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfRkxPQVQ+IHsgfTsgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZpeGVkVG9GbG9hdAordGVtcGxhdGUgPGJvb2wgbm9ybWFsaXplZD4gc3RydWN0IFZlcnRl
eFR5cGVNYXBwaW5nPEdMX0ZMT0FULCBub3JtYWxpemVkPiAgIDogVmVydGV4VHlwZU1hcHBpbmdC
YXNlPEQzRFZUX0ZMT0FUPiB7IH07ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZGVudGl0eQor
CisKKy8vIEdpdmVuIGEgR0wgdHlwZSAmIG5vcm0gZmxhZyBhbmQgYSBEM0QgdHlwZSwgQ29udmVy
c2lvblJ1bGUgcHJvdmlkZXMgdGhlIHR5cGUgY29udmVyc2lvbiBydWxlIChDYXN0LCBOb3JtYWxp
emUsIElkZW50aXR5LCBGaXhlZFRvRmxvYXQpLgorLy8gVGhlIGNvbnZlcnNpb24gcnVsZXMgdGhl
bXNlbHZlcyBhcmUgZGVmaW5lZCBpbiB2ZXJ0ZXhjb252ZXJzaW9uLmguCisKKy8vIEFsbW9zdCBh
bGwgY2FzZXMgYXJlIGNvdmVyZWQgYnkgQ2FzdCAoaW5jbHVkaW5nIHRob3NlIHRoYXQgYXJlIGFj
dHVhbGx5IElkZW50aXR5IHNpbmNlIENhc3Q8VCxUPiBrbm93cyBpdCdzIGFuIGlkZW50aXR5IG1h
cHBpbmcpLgordGVtcGxhdGUgPEdMZW51bSBmcm9tVHlwZSwgYm9vbCBub3JtYWxpemVkLCB1bnNp
Z25lZCBpbnQgdG9UeXBlPgorc3RydWN0IENvbnZlcnNpb25SdWxlIDogZ2w6OkNhc3Q8dHlwZW5h
bWUgR0xUb0NUeXBlPGZyb21UeXBlPjo6dHlwZSwgdHlwZW5hbWUgRDNEVG9DVHlwZTx0b1R5cGU+
Ojp0eXBlPgoreworfTsKKworLy8gQWxsIGNvbnZlcnNpb25zIGZyb20gbm9ybWFsaXplZCB0eXBl
cyB0byBmbG9hdCB1c2UgdGhlIE5vcm1hbGl6ZSBvcGVyYXRvci4KK3RlbXBsYXRlIDxHTGVudW0g
ZnJvbVR5cGU+IHN0cnVjdCBDb252ZXJzaW9uUnVsZTxmcm9tVHlwZSwgdHJ1ZSwgRDNEVlRfRkxP
QVQ+IDogZ2w6Ok5vcm1hbGl6ZTx0eXBlbmFtZSBHTFRvQ1R5cGU8ZnJvbVR5cGU+Ojp0eXBlPiB7
IH07CisKKy8vIFVzZSBhIGZ1bGwgc3BlY2lhbGlzYXRpb24gZm9yIHRoaXMgc28gdGhhdCBpdCBw
cmVmZXJlbnRpYWxseSBtYXRjaGVzIGFoZWFkIG9mIHRoZSBnZW5lcmljIG5vcm1hbGl6ZS10by1m
bG9hdCBydWxlcy4KK3RlbXBsYXRlIDw+IHN0cnVjdCBDb252ZXJzaW9uUnVsZTxHTF9GSVhFRCwg
dHJ1ZSwgRDNEVlRfRkxPQVQ+IDogZ2w6OkZpeGVkVG9GbG9hdDxHTHVpbnQsIDE2PiB7IH07Cit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ29udmVyc2lvblJ1bGU8R0xfRklYRUQsIGZhbHNlLCBEM0RWVF9G
TE9BVD4gOiBnbDo6Rml4ZWRUb0Zsb2F0PEdMdWludCwgMTY+IHsgfTsKKworLy8gQSAyLXN0YWdl
IGNvbnN0cnVjdGlvbiBpcyB1c2VkIGZvciBEZWZhdWx0VmVydGV4VmFsdWVzIGJlY2F1c2UgZmxv
YXQgbXVzdCB1c2UgU2ltcGxlRGVmYXVsdFZhbHVlcyAoaS5lLiAwLzEpCisvLyB3aGV0aGVyIGl0
IGlzIG5vcm1hbGl6ZWQgb3Igbm90LgordGVtcGxhdGUgPGNsYXNzIFQsIGJvb2wgbm9ybWFsaXpl
ZD4KK3N0cnVjdCBEZWZhdWx0VmVydGV4VmFsdWVzU3RhZ2UyCit7Cit9OworCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gc3RydWN0IERlZmF1bHRWZXJ0ZXhWYWx1ZXNTdGFnZTI8VCwgdHJ1ZT4gIDogZ2w6
Ok5vcm1hbGl6ZWREZWZhdWx0VmFsdWVzPFQ+IHsgfTsKK3RlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1
Y3QgRGVmYXVsdFZlcnRleFZhbHVlc1N0YWdlMjxULCBmYWxzZT4gOiBnbDo6U2ltcGxlRGVmYXVs
dFZhbHVlczxUPiB7IH07CisKKy8vIFdvcmsgb3V0IHRoZSBkZWZhdWx0IHZhbHVlIHJ1bGUgZm9y
IGEgRDNEIHR5cGUgKGV4cHJlc3NlZCBhcyB0aGUgQyB0eXBlKSBhbmQgCit0ZW1wbGF0ZSA8Y2xh
c3MgVCwgYm9vbCBub3JtYWxpemVkPgorc3RydWN0IERlZmF1bHRWZXJ0ZXhWYWx1ZXMgOiBEZWZh
dWx0VmVydGV4VmFsdWVzU3RhZ2UyPFQsIG5vcm1hbGl6ZWQ+Cit7Cit9OworCit0ZW1wbGF0ZSA8
Ym9vbCBub3JtYWxpemVkPiBzdHJ1Y3QgRGVmYXVsdFZlcnRleFZhbHVlczxmbG9hdCwgbm9ybWFs
aXplZD4gOiBnbDo6U2ltcGxlRGVmYXVsdFZhbHVlczxmbG9hdD4geyB9OworCisvLyBQb2xpY3kg
cnVsZXMgZm9yIHVzZSB3aXRoIENvbnZlcnRlciwgdG8gY2hvb3NlIHdoZXRoZXIgdG8gdXNlIHRo
ZSBwcmVmZXJyZWQgb3IgZmFsbGJhY2sgY29udmVyc2lvbi4KKy8vIFRoZSBmYWxsYmFjayBjb252
ZXJzaW9uIHByb2R1Y2VzIGFuIG91dHB1dCB0aGF0IGFsbCBEM0Q5IGRldmljZXMgbXVzdCBzdXBw
b3J0LgordGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBVc2VQcmVmZXJyZWQgeyBlbnVtIHsgdHlw
ZSA9IFQ6OnByZWZlcnJlZCB9OyB9OwordGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBVc2VGYWxs
YmFjayB7IGVudW0geyB0eXBlID0gVDo6ZmFsbGJhY2sgfTsgfTsKKworLy8gQ29udmVydGVyIHRp
ZXMgaXQgYWxsIHRvZ2V0aGVyLiBHaXZlbiBhbiBPcGVuR0wgdHlwZS9ub3JtL3NpemUgYW5kIGNo
b2ljZSBvZiBwcmVmZXJyZWQvZmFsbGJhY2sgY29udmVyc2lvbiwKKy8vIGl0IHByb3ZpZGVzIGFs
bCB0aGUgbWVtYmVycyBvZiB0aGUgYXBwcm9wcmlhdGUgVmVydGV4RGF0YUNvbnZlcnRlciwgdGhl
IEQzRENBUFM5OjpEZWNsVHlwZXMgZmxhZyBpbiBjYXAgZmxhZworLy8gYW5kIHRoZSBEM0RERUNM
VFlQRSBtZW1iZXIgbmVlZGVkIGZvciB0aGUgdmVydGV4IGRlY2xhcmF0aW9uIGluIGRlY2xmbGFn
LgordGVtcGxhdGUgPEdMZW51bSBmcm9tVHlwZSwgYm9vbCBub3JtYWxpemVkLCBpbnQgc2l6ZSwg
dGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFByZWZlcmVuY2VSdWxlPgorc3RydWN0IENvbnZlcnRl
cgorICAgIDogZ2w6OlZlcnRleERhdGFDb252ZXJ0ZXI8dHlwZW5hbWUgR0xUb0NUeXBlPGZyb21U
eXBlPjo6dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZGVuUnVsZTxQcmVm
ZXJlbmNlUnVsZTwgVmVydGV4VHlwZU1hcHBpbmc8ZnJvbVR5cGUsIG5vcm1hbGl6ZWQ+ID46OnR5
cGUsIHNpemU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblJ1bGU8
ZnJvbVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b3JtYWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5cGVNYXBwaW5nPGZyb21UeXBlLCBub3JtYWxpemVkPiA+
Ojp0eXBlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRWZXJ0ZXhWYWx1
ZXM8dHlwZW5hbWUgRDNEVG9DVHlwZTxQcmVmZXJlbmNlUnVsZTwgVmVydGV4VHlwZU1hcHBpbmc8
ZnJvbVR5cGUsIG5vcm1hbGl6ZWQ+ID46OnR5cGU+Ojp0eXBlLCBub3JtYWxpemVkID4gPgorewor
cHJpdmF0ZToKKyAgICBlbnVtIHsgZDNkdHlwZSA9IFByZWZlcmVuY2VSdWxlPCBWZXJ0ZXhUeXBl
TWFwcGluZzxmcm9tVHlwZSwgbm9ybWFsaXplZD4gPjo6dHlwZSB9OworICAgIGVudW0geyBkM2Rz
aXplID0gV2lkZW5SdWxlPGQzZHR5cGUsIHNpemU+OjpmaW5hbFdpZHRoIH07CisKK3B1YmxpYzoK
KyAgICBlbnVtIHsgY2FwZmxhZyA9IFZlcnRleFR5cGVGbGFnczxkM2R0eXBlLCBkM2RzaXplPjo6
Y2FwZmxhZyB9OworICAgIGVudW0geyBkZWNsZmxhZyA9IFZlcnRleFR5cGVGbGFnczxkM2R0eXBl
LCBkM2RzaXplPjo6ZGVjbGZsYWcgfTsKK307CisKKy8vIEluaXRpYWxpc2UgYSBUcmFuc2xhdGlv
bkluZm8KKyNkZWZpbmUgVFJBTlNMQVRJT04odHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVycmVkKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgQ29udmVydGVyPHR5cGUsIG5vcm0sIHNpemUsIHByZWZlcnJlZD46
OmlkZW50aXR5LCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ29udmVydGVy
PHR5cGUsIG5vcm0sIHNpemUsIHByZWZlcnJlZD46OmZpbmFsU2l6ZSwgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgQ29udmVydGVyPHR5cGUsIG5vcm0sIHNpemUsIHByZWZlcnJl
ZD46OmNvbnZlcnRBcnJheSwgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8RDNEREVDTFRZUEU+KENvbnZlcnRlcjx0eXBlLCBub3JtLCBzaXplLCBwcmVmZXJyZWQ+
OjpkZWNsZmxhZykgIFwKKyAgICB9CisKKyNkZWZpbmUgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9S
TV9TSVpFKHR5cGUsIG5vcm0sIHNpemUpICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ29udmVydGVyPHR5
cGUsIG5vcm0sIHNpemUsIFVzZVByZWZlcnJlZD46OmNhcGZsYWcsIFwKKyAgICAgICAgVFJBTlNM
QVRJT04odHlwZSwgbm9ybSwgc2l6ZSwgVXNlUHJlZmVycmVkKSwgICAgICAgIFwKKyAgICAgICAg
VFJBTlNMQVRJT04odHlwZSwgbm9ybSwgc2l6ZSwgVXNlRmFsbGJhY2spICAgICAgICAgIFwKKyAg
ICB9CisKKyNkZWZpbmUgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKHR5cGUpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeyBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JN
X1NJWkUodHlwZSwgZmFsc2UsIDEpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlw
ZSwgZmFsc2UsIDIpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgZmFsc2Us
IDMpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgZmFsc2UsIDQpIH0sIFwK
KyAgICAgICAgeyBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgdHJ1ZSwgMSks
IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCB0cnVlLCAyKSwgVFJBTlNMQVRJ
T05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIHRydWUsIDMpLCBUUkFOU0xBVElPTl9GT1JfVFlQ
RV9OT1JNX1NJWkUodHlwZSwgdHJ1ZSwgNCkgfSwgICAgIFwKKyAgICB9CisKK2NvbnN0IFZlcnRl
eERhdGFNYW5hZ2VyOjpUcmFuc2xhdGlvbkRlc2NyaXB0aW9uIFZlcnRleERhdGFNYW5hZ2VyOjpt
UG9zc2libGVUcmFuc2xhdGlvbnNbTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVNdWzJdWzRdID0g
Ly8gW0dMIHR5cGVzIGFzIGVudW1lcmF0ZWQgYnkgdHlwZUluZGV4KCldW25vcm1hbGl6ZWRdW3Np
emUtMV0KK3sKKyAgICBUUkFOU0xBVElPTlNfRk9SX1RZUEUoR0xfQllURSksCisgICAgVFJBTlNM
QVRJT05TX0ZPUl9UWVBFKEdMX1VOU0lHTkVEX0JZVEUpLAorICAgIFRSQU5TTEFUSU9OU19GT1Jf
VFlQRShHTF9TSE9SVCksCisgICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKEdMX1VOU0lHTkVEX1NI
T1JUKSwKKyAgICBUUkFOU0xBVElPTlNfRk9SX1RZUEUoR0xfRklYRUQpLAorICAgIFRSQU5TTEFU
SU9OU19GT1JfVFlQRShHTF9GTE9BVCkKK307CisKK3ZvaWQgVmVydGV4RGF0YU1hbmFnZXI6OmNo
ZWNrVmVydGV4Q2FwcyhEV09SRCBkZWNsVHlwZXMpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBOVU1fR0xfVkVSVEVYX0FUVFJJQl9UWVBFUzsgaSsrKQorICAgIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAyOyBqKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGsgPSAwOyBrIDwgNDsgaysrKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmIChtUG9zc2libGVUcmFuc2xhdGlvbnNbaV1bal1ba10uY2Fw
c0ZsYWcgPT0gMCB8fCAoZGVjbFR5cGVzICYgbVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2td
LmNhcHNGbGFnKSAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
bUF0dHJpYnV0ZVR5cGVzW2ldW2pdW2tdID0gbVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2td
LnByZWZlcnJlZENvbnZlcnNpb247CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1BdHRyaWJ1dGVU
eXBlc1tpXVtqXVtrXSA9IG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tpXVtqXVtrXS5mYWxsYmFja0Nv
bnZlcnNpb247CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorfQorCisvLyBUaGlzIGlzIHVzZWQgdG8gaW5kZXggbUF0dHJpYnV0ZVR5cGVzIGFuZCBt
UG9zc2libGVUcmFuc2xhdGlvbnMuCit1bnNpZ25lZCBpbnQgVmVydGV4RGF0YU1hbmFnZXI6OnR5
cGVJbmRleChHTGVudW0gdHlwZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgewor
ICAgICAgY2FzZSBHTF9CWVRFOiByZXR1cm4gMDsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfQllU
RTogcmV0dXJuIDE7CisgICAgICBjYXNlIEdMX1NIT1JUOiByZXR1cm4gMjsKKyAgICAgIGNhc2Ug
R0xfVU5TSUdORURfU0hPUlQ6IHJldHVybiAzOworICAgICAgY2FzZSBHTF9GSVhFRDogcmV0dXJu
IDQ7CisgICAgICBjYXNlIEdMX0ZMT0FUOiByZXR1cm4gNTsKKworICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsgcmV0dXJuIDU7CisgICAgfQorfQorCitWZXJ0ZXhCdWZmZXI6OlZlcnRleEJ1
ZmZlcihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIHN0ZDo6c2l6ZV90IHNpemUsIERXT1JEIHVz
YWdlRmxhZ3MpIDogbURldmljZShkZXZpY2UpLCBtVmVydGV4QnVmZmVyKE5VTEwpCit7CisgICAg
aWYgKHNpemUgPiAwKQorICAgIHsKKyAgICAgICAgRDNEUE9PTCBwb29sID0gZ2V0RGlzcGxheSgp
LT5nZXRCdWZmZXJQb29sKHVzYWdlRmxhZ3MpOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRl
dmljZS0+Q3JlYXRlVmVydGV4QnVmZmVyKHNpemUsIHVzYWdlRmxhZ3MsIDAsIHBvb2wsICZtVmVy
dGV4QnVmZmVyLCBOVUxMKTsKKyAgICAgICAgCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJPdXQgb2YgbWVtb3J5IGFsbG9jYXRpbmcgYSB2
ZXJ0ZXggYnVmZmVyIG9mIHNpemUgJWx1LiIsIHNpemUpOworICAgICAgICB9CisgICAgfQorfQor
CitWZXJ0ZXhCdWZmZXI6On5WZXJ0ZXhCdWZmZXIoKQoreworICAgIGlmIChtVmVydGV4QnVmZmVy
KQorICAgIHsKKyAgICAgICAgbVZlcnRleEJ1ZmZlci0+UmVsZWFzZSgpOworICAgIH0KK30KKwor
dm9pZCBWZXJ0ZXhCdWZmZXI6OnVubWFwKCkKK3sKKyAgICBpZiAobVZlcnRleEJ1ZmZlcikKKyAg
ICB7CisgICAgICAgIG1WZXJ0ZXhCdWZmZXItPlVubG9jaygpOworICAgIH0KK30KKworSURpcmVj
dDNEVmVydGV4QnVmZmVyOSAqVmVydGV4QnVmZmVyOjpnZXRCdWZmZXIoKSBjb25zdAoreworICAg
IHJldHVybiBtVmVydGV4QnVmZmVyOworfQorCitDb25zdGFudFZlcnRleEJ1ZmZlcjo6Q29uc3Rh
bnRWZXJ0ZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6LCBmbG9hdCB3KSA6IFZlcnRleEJ1ZmZlcihkZXZpY2UsIDQgKiBzaXplb2YoZmxv
YXQpLCBEM0RVU0FHRV9XUklURU9OTFkpCit7CisgICAgdm9pZCAqYnVmZmVyID0gTlVMTDsKKwor
ICAgIGlmIChtVmVydGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBt
VmVydGV4QnVmZmVyLT5Mb2NrKDAsIDAsICZidWZmZXIsIDApOworICAgICAKKyAgICAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkxvY2sgZmFpbGVk
IHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChidWZmZXIpCisgICAgeworICAgICAgICBmbG9hdCAqdmVjdG9yID0gKGZsb2F0KilidWZmZXI7
CisKKyAgICAgICAgdmVjdG9yWzBdID0geDsKKyAgICAgICAgdmVjdG9yWzFdID0geTsKKyAgICAg
ICAgdmVjdG9yWzJdID0gejsKKyAgICAgICAgdmVjdG9yWzNdID0gdzsKKworICAgICAgICBtVmVy
dGV4QnVmZmVyLT5VbmxvY2soKTsKKyAgICB9Cit9CisKK0NvbnN0YW50VmVydGV4QnVmZmVyOjp+
Q29uc3RhbnRWZXJ0ZXhCdWZmZXIoKQoreworfQorCitBcnJheVZlcnRleEJ1ZmZlcjo6QXJyYXlW
ZXJ0ZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBzdGQ6OnNpemVfdCBzaXplLCBE
V09SRCB1c2FnZUZsYWdzKSA6IFZlcnRleEJ1ZmZlcihkZXZpY2UsIHNpemUsIHVzYWdlRmxhZ3Mp
Cit7CisgICAgbUJ1ZmZlclNpemUgPSBzaXplOworICAgIG1Xcml0ZVBvc2l0aW9uID0gMDsKKyAg
ICBtUmVxdWlyZWRTcGFjZSA9IDA7Cit9CisKK0FycmF5VmVydGV4QnVmZmVyOjp+QXJyYXlWZXJ0
ZXhCdWZmZXIoKQoreworfQorCit2b2lkIEFycmF5VmVydGV4QnVmZmVyOjphZGRSZXF1aXJlZFNw
YWNlKFVJTlQgcmVxdWlyZWRTcGFjZSkKK3sKKyAgICBtUmVxdWlyZWRTcGFjZSArPSByZXF1aXJl
ZFNwYWNlOworfQorCit2b2lkIEFycmF5VmVydGV4QnVmZmVyOjphZGRSZXF1aXJlZFNwYWNlRm9y
KEFycmF5VmVydGV4QnVmZmVyICpidWZmZXIpCit7CisgICAgbVJlcXVpcmVkU3BhY2UgKz0gYnVm
ZmVyLT5tUmVxdWlyZWRTcGFjZTsKK30KKworU3RyZWFtaW5nVmVydGV4QnVmZmVyOjpTdHJlYW1p
bmdWZXJ0ZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBzdGQ6OnNpemVfdCBpbml0
aWFsU2l6ZSkgOiBBcnJheVZlcnRleEJ1ZmZlcihkZXZpY2UsIGluaXRpYWxTaXplLCBEM0RVU0FH
RV9EWU5BTUlDIHwgRDNEVVNBR0VfV1JJVEVPTkxZKQoreworfQorCitTdHJlYW1pbmdWZXJ0ZXhC
dWZmZXI6On5TdHJlYW1pbmdWZXJ0ZXhCdWZmZXIoKQoreworfQorCit2b2lkICpTdHJlYW1pbmdW
ZXJ0ZXhCdWZmZXI6Om1hcChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgc3RkOjpz
aXplX3QgcmVxdWlyZWRTcGFjZSwgc3RkOjpzaXplX3QgKm9mZnNldCkKK3sKKyAgICB2b2lkICpt
YXBQdHIgPSBOVUxMOworCisgICAgaWYgKG1WZXJ0ZXhCdWZmZXIpCisgICAgeworICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IG1WZXJ0ZXhCdWZmZXItPkxvY2sobVdyaXRlUG9zaXRpb24sIHJlcXVp
cmVkU3BhY2UsICZtYXBQdHIsIEQzRExPQ0tfTk9PVkVSV1JJVEUpOworICAgICAgICAKKyAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkxvY2sg
ZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBO
VUxMOworICAgICAgICB9CisKKyAgICAgICAgKm9mZnNldCA9IG1Xcml0ZVBvc2l0aW9uOworICAg
ICAgICBtV3JpdGVQb3NpdGlvbiArPSByZXF1aXJlZFNwYWNlOworICAgIH0KKworICAgIHJldHVy
biBtYXBQdHI7Cit9CisKK3ZvaWQgU3RyZWFtaW5nVmVydGV4QnVmZmVyOjpyZXNlcnZlUmVxdWly
ZWRTcGFjZSgpCit7CisgICAgaWYgKG1SZXF1aXJlZFNwYWNlID4gbUJ1ZmZlclNpemUpCisgICAg
eworICAgICAgICBpZiAobVZlcnRleEJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgbVZl
cnRleEJ1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICAgICAgbVZlcnRleEJ1ZmZlciA9IE5VTEw7
CisgICAgICAgIH0KKworICAgICAgICBtQnVmZmVyU2l6ZSA9IHN0ZDo6bWF4KG1SZXF1aXJlZFNw
YWNlLCAzICogbUJ1ZmZlclNpemUgLyAyKTsgICAvLyAxLjUgeCBtQnVmZmVyU2l6ZSBpcyBhcmJp
dHJhcnkgYW5kIHNob3VsZCBiZSBjaGVja2VkIHRvIHNlZSB3ZSBkb24ndCBoYXZlIHRvbyBtYW55
IHJlYWxsb2NhdGlvbnMuCisKKyAgICAgICAgRDNEUE9PTCBwb29sID0gZ2V0RGlzcGxheSgpLT5n
ZXRCdWZmZXJQb29sKEQzRFVTQUdFX0RZTkFNSUMgfCBEM0RVU0FHRV9XUklURU9OTFkpOworICAg
ICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVZlcnRleEJ1ZmZlcihtQnVmZmVy
U2l6ZSwgRDNEVVNBR0VfRFlOQU1JQyB8IEQzRFVTQUdFX1dSSVRFT05MWSwgMCwgcG9vbCwgJm1W
ZXJ0ZXhCdWZmZXIsIE5VTEwpOworICAgIAorICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiT3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIGEgdmVy
dGV4IGJ1ZmZlciBvZiBzaXplICVsdS4iLCBtQnVmZmVyU2l6ZSk7CisgICAgICAgIH0KKworICAg
ICAgICBtV3JpdGVQb3NpdGlvbiA9IDA7CisgICAgfQorICAgIGVsc2UgaWYgKG1Xcml0ZVBvc2l0
aW9uICsgbVJlcXVpcmVkU3BhY2UgPiBtQnVmZmVyU2l6ZSkgICAvLyBSZWN5Y2xlCisgICAgewor
ICAgICAgICBpZiAobVZlcnRleEJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgdm9pZCAq
ZHVtbXk7CisgICAgICAgICAgICBtVmVydGV4QnVmZmVyLT5Mb2NrKDAsIDEsICZkdW1teSwgRDNE
TE9DS19ESVNDQVJEKTsKKyAgICAgICAgICAgIG1WZXJ0ZXhCdWZmZXItPlVubG9jaygpOworICAg
ICAgICB9CisKKyAgICAgICAgbVdyaXRlUG9zaXRpb24gPSAwOworICAgIH0KKworICAgIG1SZXF1
aXJlZFNwYWNlID0gMDsKK30KKworU3RhdGljVmVydGV4QnVmZmVyOjpTdGF0aWNWZXJ0ZXhCdWZm
ZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlKSA6IEFycmF5VmVydGV4QnVmZmVyKGRldmljZSwg
MCwgRDNEVVNBR0VfV1JJVEVPTkxZKQoreworfQorCitTdGF0aWNWZXJ0ZXhCdWZmZXI6On5TdGF0
aWNWZXJ0ZXhCdWZmZXIoKQoreworfQorCit2b2lkICpTdGF0aWNWZXJ0ZXhCdWZmZXI6Om1hcChj
b25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgc3RkOjpzaXplX3QgcmVxdWlyZWRTcGFj
ZSwgVUlOVCAqc3RyZWFtT2Zmc2V0KQoreworICAgIHZvaWQgKm1hcFB0ciA9IE5VTEw7CisKKyAg
ICBpZiAobVZlcnRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVZl
cnRleEJ1ZmZlci0+TG9jayhtV3JpdGVQb3NpdGlvbiwgcmVxdWlyZWRTcGFjZSwgJm1hcFB0ciwg
MCk7CisgICAgICAgIAorICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEVSUigiTG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpbnQgYXR0cmli
dXRlT2Zmc2V0ID0gYXR0cmlidXRlLm1PZmZzZXQgJSBhdHRyaWJ1dGUuc3RyaWRlKCk7CisgICAg
ICAgIFZlcnRleEVsZW1lbnQgZWxlbWVudCA9IHthdHRyaWJ1dGUubVR5cGUsIGF0dHJpYnV0ZS5t
U2l6ZSwgYXR0cmlidXRlLm1Ob3JtYWxpemVkLCBhdHRyaWJ1dGVPZmZzZXQsIG1Xcml0ZVBvc2l0
aW9ufTsKKyAgICAgICAgbUNhY2hlLnB1c2hfYmFjayhlbGVtZW50KTsKKworICAgICAgICAqc3Ry
ZWFtT2Zmc2V0ID0gbVdyaXRlUG9zaXRpb247CisgICAgICAgIG1Xcml0ZVBvc2l0aW9uICs9IHJl
cXVpcmVkU3BhY2U7CisgICAgfQorCisgICAgcmV0dXJuIG1hcFB0cjsKK30KKwordm9pZCBTdGF0
aWNWZXJ0ZXhCdWZmZXI6OnJlc2VydmVSZXF1aXJlZFNwYWNlKCkKK3sKKyAgICBpZiAoIW1WZXJ0
ZXhCdWZmZXIgJiYgbUJ1ZmZlclNpemUgPT0gMCkKKyAgICB7CisgICAgICAgIEQzRFBPT0wgcG9v
bCA9IGdldERpc3BsYXkoKS0+Z2V0QnVmZmVyUG9vbChEM0RVU0FHRV9XUklURU9OTFkpOworICAg
ICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVZlcnRleEJ1ZmZlcihtUmVxdWly
ZWRTcGFjZSwgRDNEVVNBR0VfV1JJVEVPTkxZLCAwLCBwb29sLCAmbVZlcnRleEJ1ZmZlciwgTlVM
TCk7CisgICAgCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgRVJSKCJPdXQgb2YgbWVtb3J5IGFsbG9jYXRpbmcgYSB2ZXJ0ZXggYnVmZmVyIG9mIHNp
emUgJWx1LiIsIG1SZXF1aXJlZFNwYWNlKTsKKyAgICAgICAgfQorCisgICAgICAgIG1CdWZmZXJT
aXplID0gbVJlcXVpcmVkU3BhY2U7CisgICAgfQorICAgIGVsc2UgaWYgKG1WZXJ0ZXhCdWZmZXIg
JiYgbUJ1ZmZlclNpemUgPj0gbVJlcXVpcmVkU3BhY2UpCisgICAgeworICAgICAgICAvLyBBbHJl
YWR5IGFsbG9jYXRlZAorICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7ICAgLy8gU3RhdGlj
IHZlcnRleCBidWZmZXJzIGNhbid0IGJlIHJlc2l6ZWQKKworICAgIG1SZXF1aXJlZFNwYWNlID0g
MDsKK30KKworVUlOVCBTdGF0aWNWZXJ0ZXhCdWZmZXI6Omxvb2t1cEF0dHJpYnV0ZShjb25zdCBW
ZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBlbGVt
ZW50ID0gMDsgZWxlbWVudCA8IG1DYWNoZS5zaXplKCk7IGVsZW1lbnQrKykKKyAgICB7CisgICAg
ICAgIGlmIChtQ2FjaGVbZWxlbWVudF0udHlwZSA9PSBhdHRyaWJ1dGUubVR5cGUgJiYgIG1DYWNo
ZVtlbGVtZW50XS5zaXplID09IGF0dHJpYnV0ZS5tU2l6ZSAmJiBtQ2FjaGVbZWxlbWVudF0ubm9y
bWFsaXplZCA9PSBhdHRyaWJ1dGUubU5vcm1hbGl6ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChtQ2FjaGVbZWxlbWVudF0uYXR0cmlidXRlT2Zmc2V0ID09IGF0dHJpYnV0ZS5tT2Zmc2V0
ICUgYXR0cmlidXRlLnN0cmlkZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBtQ2FjaGVbZWxlbWVudF0uc3RyZWFtT2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCitjb25zdCBWZXJ0ZXhEYXRhTWFuYWdl
cjo6Rm9ybWF0Q29udmVydGVyICZWZXJ0ZXhEYXRhTWFuYWdlcjo6Zm9ybWF0Q29udmVydGVyKGNv
bnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKSBjb25zdAoreworICAgIHJldHVybiBtQXR0
cmlidXRlVHlwZXNbdHlwZUluZGV4KGF0dHJpYnV0ZS5tVHlwZSldW2F0dHJpYnV0ZS5tTm9ybWFs
aXplZF1bYXR0cmlidXRlLm1TaXplIC0gMV07Cit9Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1ZlcnRleERhdGFNYW5hZ2VyLmNw
cApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1ZlcnRleERhdGFNYW5hZ2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9WZXJ0ZXhEYXRh
TWFuYWdlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2OCBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVmVydGV4RGF0YU1hbmFnZXIuaDogRGVmaW5lcyB0
aGUgVmVydGV4RGF0YU1hbmFnZXIsIGEgY2xhc3MgdGhhdAorLy8gcnVucyB0aGUgQnVmZmVyIHRy
YW5zbGF0aW9uIHByb2Nlc3MuCisKKyNpZm5kZWYgTElCR0xFU1YyX1ZFUlRFWERBVEFNQU5BR0VS
X0hfCisjZGVmaW5lIExJQkdMRVNWMl9WRVJURVhEQVRBTUFOQUdFUl9IXworCisjaW5jbHVkZSA8
dmVjdG9yPgorI2luY2x1ZGUgPGNzdGRkZWY+CisKKyNkZWZpbmUgR0xfQVBJQ0FMTAorI2luY2x1
ZGUgPEdMRVMyL2dsMi5oPgorCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworbmFt
ZXNwYWNlIGdsCit7CisKK3N0cnVjdCBUcmFuc2xhdGVkQXR0cmlidXRlCit7CisgICAgYm9vbCBh
Y3RpdmU7CisKKyAgICBEM0RERUNMVFlQRSB0eXBlOworICAgIFVJTlQgb2Zmc2V0OworICAgIFVJ
TlQgc3RyaWRlOyAgIC8vIDAgbWVhbnMgbm90IHRvIGFkdmFuY2UgdGhlIHJlYWQgcG9pbnRlciBh
dCBhbGwKKworICAgIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKnZlcnRleEJ1ZmZlcjsKK307CisK
K2NsYXNzIFZlcnRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgVmVydGV4QnVmZmVyKElEaXJl
Y3QzRERldmljZTkgKmRldmljZSwgVUlOVCBzaXplLCBEV09SRCB1c2FnZUZsYWdzKTsKKyAgICB2
aXJ0dWFsIH5WZXJ0ZXhCdWZmZXIoKTsKKworICAgIHZvaWQgdW5tYXAoKTsKKworICAgIElEaXJl
Y3QzRFZlcnRleEJ1ZmZlcjkgKmdldEJ1ZmZlcigpIGNvbnN0OworCisgIHByb3RlY3RlZDoKKyAg
ICBJRGlyZWN0M0REZXZpY2U5ICpjb25zdCBtRGV2aWNlOworICAgIElEaXJlY3QzRFZlcnRleEJ1
ZmZlcjkgKm1WZXJ0ZXhCdWZmZXI7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oVmVydGV4QnVmZmVyKTsKK307CisKK2NsYXNzIENvbnN0YW50VmVydGV4QnVmZmVy
IDogcHVibGljIFZlcnRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgQ29uc3RhbnRWZXJ0ZXhC
dWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6
LCBmbG9hdCB3KTsKKyAgICB+Q29uc3RhbnRWZXJ0ZXhCdWZmZXIoKTsKK307CisKK2NsYXNzIEFy
cmF5VmVydGV4QnVmZmVyIDogcHVibGljIFZlcnRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAg
QXJyYXlWZXJ0ZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBVSU5UIHNpemUsIERX
T1JEIHVzYWdlRmxhZ3MpOworICAgIH5BcnJheVZlcnRleEJ1ZmZlcigpOworCisgICAgVUlOVCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbUJ1ZmZlclNpemU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgKm1h
cChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgVUlOVCByZXF1aXJlZFNwYWNlLCBV
SU5UICpzdHJlYW1PZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXJ2ZVJlcXVpcmVk
U3BhY2UoKSA9IDA7CisgICAgdm9pZCBhZGRSZXF1aXJlZFNwYWNlKFVJTlQgcmVxdWlyZWRTcGFj
ZSk7CisgICAgdm9pZCBhZGRSZXF1aXJlZFNwYWNlRm9yKEFycmF5VmVydGV4QnVmZmVyICpidWZm
ZXIpOworCisgIHByb3RlY3RlZDoKKyAgICBVSU5UIG1CdWZmZXJTaXplOworICAgIFVJTlQgbVdy
aXRlUG9zaXRpb247CisgICAgVUlOVCBtUmVxdWlyZWRTcGFjZTsKK307CisKK2NsYXNzIFN0cmVh
bWluZ1ZlcnRleEJ1ZmZlciA6IHB1YmxpYyBBcnJheVZlcnRleEJ1ZmZlcgoreworICBwdWJsaWM6
CisgICAgU3RyZWFtaW5nVmVydGV4QnVmZmVyKElEaXJlY3QzRERldmljZTkgKmRldmljZSwgVUlO
VCBpbml0aWFsU2l6ZSk7CisgICAgflN0cmVhbWluZ1ZlcnRleEJ1ZmZlcigpOworCisgICAgdm9p
ZCAqbWFwKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBVSU5UIHJlcXVpcmVkU3Bh
Y2UsIFVJTlQgKnN0cmVhbU9mZnNldCk7CisgICAgdm9pZCByZXNlcnZlUmVxdWlyZWRTcGFjZSgp
OworfTsKKworY2xhc3MgU3RhdGljVmVydGV4QnVmZmVyIDogcHVibGljIEFycmF5VmVydGV4QnVm
ZmVyCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBTdGF0aWNWZXJ0ZXhCdWZmZXIoSURpcmVj
dDNERGV2aWNlOSAqZGV2aWNlKTsKKyAgICB+U3RhdGljVmVydGV4QnVmZmVyKCk7CisKKyAgICB2
b2lkICptYXAoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIFVJTlQgcmVxdWlyZWRT
cGFjZSwgVUlOVCAqc3RyZWFtT2Zmc2V0KTsKKyAgICB2b2lkIHJlc2VydmVSZXF1aXJlZFNwYWNl
KCk7CisKKyAgICBVSU5UIGxvb2t1cEF0dHJpYnV0ZShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYnV0ZSk7ICAgLy8gUmV0dXJucyB0aGUgb2Zmc2V0IGludG8gdGhlIHZlcnRleCBidWZmZXIs
IG9yIC0xIGlmIG5vdCBmb3VuZAorCisgIHByaXZhdGU6CisgICAgc3RydWN0IFZlcnRleEVsZW1l
bnQKKyAgICB7CisgICAgICAgIEdMZW51bSB0eXBlOworICAgICAgICBHTGludCBzaXplOworICAg
ICAgICBib29sIG5vcm1hbGl6ZWQ7CisgICAgICAgIGludCBhdHRyaWJ1dGVPZmZzZXQ7CisKKyAg
ICAgICAgVUlOVCBzdHJlYW1PZmZzZXQ7CisgICAgfTsKKworICAgIHN0ZDo6dmVjdG9yPFZlcnRl
eEVsZW1lbnQ+IG1DYWNoZTsKK307CisKK2NsYXNzIFZlcnRleERhdGFNYW5hZ2VyCit7CisgIHB1
YmxpYzoKKyAgICBWZXJ0ZXhEYXRhTWFuYWdlcihDb250ZXh0ICpjb250ZXh0LCBJRGlyZWN0M0RE
ZXZpY2U5ICpiYWNrZW5kKTsKKyAgICB2aXJ0dWFsIH5WZXJ0ZXhEYXRhTWFuYWdlcigpOworCisg
ICAgdm9pZCBkaXJ0eUN1cnJlbnRWYWx1ZShpbnQgaW5kZXgpIHsgbURpcnR5Q3VycmVudFZhbHVl
W2luZGV4XSA9IHRydWU7IH0KKworICAgIEdMZW51bSBwcmVwYXJlVmVydGV4RGF0YShHTGludCBz
dGFydCwgR0xzaXplaSBjb3VudCwgVHJhbnNsYXRlZEF0dHJpYnV0ZSAqb3V0QXR0cmlicyk7CisK
KyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4RGF0YU1hbmFn
ZXIpOworCisgICAgVUlOVCBzcGFjZVJlcXVpcmVkKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0
cmliLCBzdGQ6OnNpemVfdCBjb3VudCkgY29uc3Q7CisgICAgVUlOVCB3cml0ZUF0dHJpYnV0ZURh
dGEoQXJyYXlWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlciwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKTsKKworICAgIENvbnRleHQg
KmNvbnN0IG1Db250ZXh0OworICAgIElEaXJlY3QzRERldmljZTkgKmNvbnN0IG1EZXZpY2U7CisK
KyAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXIgKm1TdHJlYW1pbmdCdWZmZXI7CisKKyAgICBib29s
IG1EaXJ0eUN1cnJlbnRWYWx1ZVtNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIENvbnN0YW50VmVy
dGV4QnVmZmVyICptQ3VycmVudFZhbHVlQnVmZmVyW01BWF9WRVJURVhfQVRUUklCU107CisKKyAg
ICAvLyBBdHRyaWJ1dGUgZm9ybWF0IGNvbnZlcnNpb24KKyAgICBzdHJ1Y3QgRm9ybWF0Q29udmVy
dGVyCisgICAgeworICAgICAgICBib29sIGlkZW50aXR5OworICAgICAgICBzdGQ6OnNpemVfdCBv
dXRwdXRFbGVtZW50U2l6ZTsKKyAgICAgICAgdm9pZCAoKmNvbnZlcnRBcnJheSkoY29uc3Qgdm9p
ZCAqaW4sIHN0ZDo6c2l6ZV90IHN0cmlkZSwgc3RkOjpzaXplX3Qgbiwgdm9pZCAqb3V0KTsKKyAg
ICAgICAgRDNEREVDTFRZUEUgZDNkRGVjbFR5cGU7CisgICAgfTsKKworICAgIGVudW0geyBOVU1f
R0xfVkVSVEVYX0FUVFJJQl9UWVBFUyA9IDYgfTsKKworICAgIEZvcm1hdENvbnZlcnRlciBtQXR0
cmlidXRlVHlwZXNbTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVNdWzJdWzRdOyAgIC8vIFtHTCB0
eXBlcyBhcyBlbnVtZXJhdGVkIGJ5IHR5cGVJbmRleCgpXVtub3JtYWxpemVkXVtzaXplIC0gMV0K
KworICAgIHN0cnVjdCBUcmFuc2xhdGlvbkRlc2NyaXB0aW9uCisgICAgeworICAgICAgICBEV09S
RCBjYXBzRmxhZzsKKyAgICAgICAgRm9ybWF0Q29udmVydGVyIHByZWZlcnJlZENvbnZlcnNpb247
CisgICAgICAgIEZvcm1hdENvbnZlcnRlciBmYWxsYmFja0NvbnZlcnNpb247CisgICAgfTsKKwor
ICAgIC8vIFRoaXMgdGFibGUgaXMgdXNlZCB0byBnZW5lcmF0ZSBtQXR0cmlidXRlVHlwZXMuCisg
ICAgc3RhdGljIGNvbnN0IFRyYW5zbGF0aW9uRGVzY3JpcHRpb24gbVBvc3NpYmxlVHJhbnNsYXRp
b25zW05VTV9HTF9WRVJURVhfQVRUUklCX1RZUEVTXVsyXVs0XTsgLy8gW0dMIHR5cGVzIGFzIGVu
dW1lcmF0ZWQgYnkgdHlwZUluZGV4KCldW25vcm1hbGl6ZWRdW3NpemUgLSAxXQorCisgICAgdm9p
ZCBjaGVja1ZlcnRleENhcHMoRFdPUkQgZGVjbFR5cGVzKTsKKworICAgIHVuc2lnbmVkIGludCB0
eXBlSW5kZXgoR0xlbnVtIHR5cGUpIGNvbnN0OworICAgIGNvbnN0IEZvcm1hdENvbnZlcnRlciAm
Zm9ybWF0Q29udmVydGVyKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKSBjb25zdDsK
K307CisKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1ZFUlRFWERBVEFNQU5BR0VSX0hfCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1ZlcnRleERhdGFNYW5hZ2VyLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICAr
IExGCgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVT
djIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvbGliR0xFU3YyLmNwcAkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEx
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE0LDYgKzE0
LDcgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNp
bmNsdWRlICJjb21tb24vdmVyc2lvbi5oIgogCiAjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIK
ICNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKQEAgLTI3LDI0ICsyOCw0OSBAQAogI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9TaGFkZXIuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5o
IgogCitib29sIHZhbGlkSW1hZ2VTaXplKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBpZiAobGV2ZWwgPCAwIHx8IHdpZHRoIDwgMCB8fCBoZWlnaHQg
PCAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChnbDo6
Z2V0Q29udGV4dCgpICYmIGdsOjpnZXRDb250ZXh0KCktPnN1cHBvcnRzTm9uUG93ZXIyVGV4dHVy
ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGxldmVs
ID09IDApCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZ2w6
OmlzUG93Mih3aWR0aCkgJiYgZ2w6OmlzUG93MihoZWlnaHQpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBleHRlcm4gIkMiCiB7
CiAKIHZvaWQgX19zdGRjYWxsIGdsQWN0aXZlVGV4dHVyZShHTGVudW0gdGV4dHVyZSkKIHsKLSAg
ICBUUkFDRSgiKEdMZW51bSB0ZXh0dXJlID0gMHglWCkiLCB0ZXh0dXJlKTsKKyAgICBFVkVOVCgi
KEdMZW51bSB0ZXh0dXJlID0gMHglWCkiLCB0ZXh0dXJlKTsKIAogICAgIHRyeQogICAgIHsKLSAg
ICAgICAgaWYgKHRleHR1cmUgPCBHTF9URVhUVVJFMCB8fCB0ZXh0dXJlID4gR0xfVEVYVFVSRTAg
KyBnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgLSAxKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgfQotCiAgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKIAogICAgICAgICBpZiAoY29u
dGV4dCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKHRleHR1cmUgPCBHTF9URVhUVVJFMCB8
fCB0ZXh0dXJlID4gR0xfVEVYVFVSRTAgKyBjb250ZXh0LT5nZXRNYXhpbXVtQ29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cygpIC0gMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
Y29udGV4dC0+c2V0QWN0aXZlU2FtcGxlcih0ZXh0dXJlIC0gR0xfVEVYVFVSRTApOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNTYsNyArODIsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEFjdGl2ZVRleHR1
cmUoR0xlbnVtIHRlCiAKIHZvaWQgX19zdGRjYWxsIGdsQXR0YWNoU2hhZGVyKEdMdWludCBwcm9n
cmFtLCBHTHVpbnQgc2hhZGVyKQogewotICAgIFRSQUNFKCIoR0x1aW50IHByb2dyYW0gPSAlZCwg
R0x1aW50IHNoYWRlciA9ICVkKSIsIHByb2dyYW0sIHNoYWRlcik7CisgICAgRVZFTlQoIihHTHVp
bnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQgc2hhZGVyID0gJWQpIiwgcHJvZ3JhbSwgc2hhZGVyKTsK
IAogICAgIHRyeQogICAgIHsKQEAgLTEwNSw3ICsxMzEsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEF0
dGFjaFNoYWRlcihHTHVpbnQgcHJvCiAKIHZvaWQgX19zdGRjYWxsIGdsQmluZEF0dHJpYkxvY2F0
aW9uKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciogbmFtZSkKIHsK
LSAgICBUUkFDRSgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMdWludCBpbmRleCA9ICVkLCBjb25z
dCBHTGNoYXIqIG5hbWUgPSAweCUwLjhwKSIsIHByb2dyYW0sIGluZGV4LCBuYW1lKTsKKyAgICBF
VkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGNo
YXIqIG5hbWUgPSAweCUwLjhwKSIsIHByb2dyYW0sIGluZGV4LCBuYW1lKTsKIAogICAgIHRyeQog
ICAgIHsKQEAgLTE0OCw3ICsxNzQsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEJpbmRBdHRyaWJMb2Nh
dGlvbihHTHVpCiAKIHZvaWQgX19zdGRjYWxsIGdsQmluZEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBH
THVpbnQgYnVmZmVyKQogewotICAgIFRSQUNFKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWlu
dCBidWZmZXIgPSAlZCkiLCB0YXJnZXQsIGJ1ZmZlcik7CisgICAgRVZFTlQoIihHTGVudW0gdGFy
Z2V0ID0gMHglWCwgR0x1aW50IGJ1ZmZlciA9ICVkKSIsIHRhcmdldCwgYnVmZmVyKTsKIAogICAg
IHRyeQogICAgIHsKQEAgLTE3Nyw3ICsyMDMsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEJpbmRCdWZm
ZXIoR0xlbnVtIHRhcmdlCiAKIHZvaWQgX19zdGRjYWxsIGdsQmluZEZyYW1lYnVmZmVyKEdMZW51
bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcikKIHsKLSAgICBUUkFDRSgiKEdMZW51bSB0YXJn
ZXQgPSAweCVYLCBHTHVpbnQgZnJhbWVidWZmZXIgPSAlZCkiLCB0YXJnZXQsIGZyYW1lYnVmZmVy
KTsKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgZnJhbWVidWZmZXIg
PSAlZCkiLCB0YXJnZXQsIGZyYW1lYnVmZmVyKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTIwOSw3
ICsyMzUsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEJpbmRGcmFtZWJ1ZmZlcihHTGVudW0gCiAKIHZv
aWQgX19zdGRjYWxsIGdsQmluZFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVu
ZGVyYnVmZmVyKQogewotICAgIFRSQUNFKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCBy
ZW5kZXJidWZmZXIgPSAlZCkiLCB0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgRVZFTlQoIihH
TGVudW0gdGFyZ2V0ID0gMHglWCwgR0x1aW50IHJlbmRlcmJ1ZmZlciA9ICVkKSIsIHRhcmdldCwg
cmVuZGVyYnVmZmVyKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTIzMyw3ICsyNTksNyBAQCB2b2lk
IF9fc3RkY2FsbCBnbEJpbmRSZW5kZXJidWZmZXIoR0xlbnVtCiAKIHZvaWQgX19zdGRjYWxsIGds
QmluZFRleHR1cmUoR0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1cmUpCiB7Ci0gICAgVFJBQ0Uo
IihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0x1aW50IHRleHR1cmUgPSAlZCkiLCB0YXJnZXQsIHRl
eHR1cmUpOworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCB0ZXh0dXJl
ID0gJWQpIiwgdGFyZ2V0LCB0ZXh0dXJlKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTI2OSw3ICsy
OTUsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEJpbmRUZXh0dXJlKEdMZW51bSB0YXJnCiAKIHZvaWQg
X19zdGRjYWxsIGdsQmxlbmRDb2xvcihHTGNsYW1wZiByZWQsIEdMY2xhbXBmIGdyZWVuLCBHTGNs
YW1wZiBibHVlLCBHTGNsYW1wZiBhbHBoYSkKIHsKLSAgICBUUkFDRSgiKEdMY2xhbXBmIHJlZCA9
ICVmLCBHTGNsYW1wZiBncmVlbiA9ICVmLCBHTGNsYW1wZiBibHVlID0gJWYsIEdMY2xhbXBmIGFs
cGhhID0gJWYpIiwKKyAgICBFVkVOVCgiKEdMY2xhbXBmIHJlZCA9ICVmLCBHTGNsYW1wZiBncmVl
biA9ICVmLCBHTGNsYW1wZiBibHVlID0gJWYsIEdMY2xhbXBmIGFscGhhID0gJWYpIiwKICAgICAg
ICAgICByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiAKICAgICB0cnkKQEAgLTI5NCw3ICszMjAs
NyBAQCB2b2lkIF9fc3RkY2FsbCBnbEJsZW5kRXF1YXRpb24oR0xlbnVtIG1vCiAKIHZvaWQgX19z
dGRjYWxsIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9k
ZUFscGhhKQogewotICAgIFRSQUNFKCIoR0xlbnVtIG1vZGVSR0IgPSAweCVYLCBHTGVudW0gbW9k
ZUFscGhhID0gMHglWCkiLCBtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgIEVWRU5UKCIoR0xlbnVt
IG1vZGVSR0IgPSAweCVYLCBHTGVudW0gbW9kZUFscGhhID0gMHglWCkiLCBtb2RlUkdCLCBtb2Rl
QWxwaGEpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMzM4LDcgKzM2NCw3IEBAIHZvaWQgX19zdGRj
YWxsIGdsQmxlbmRGdW5jKEdMZW51bSBzZmFjdG8KIAogdm9pZCBfX3N0ZGNhbGwgZ2xCbGVuZEZ1
bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEs
IEdMZW51bSBkc3RBbHBoYSkKIHsKLSAgICBUUkFDRSgiKEdMZW51bSBzcmNSR0IgPSAweCVYLCBH
TGVudW0gZHN0UkdCID0gMHglWCwgR0xlbnVtIHNyY0FscGhhID0gMHglWCwgR0xlbnVtIGRzdEFs
cGhhID0gMHglWCkiLAorICAgIEVWRU5UKCIoR0xlbnVtIHNyY1JHQiA9IDB4JVgsIEdMZW51bSBk
c3RSR0IgPSAweCVYLCBHTGVudW0gc3JjQWxwaGEgPSAweCVYLCBHTGVudW0gZHN0QWxwaGEgPSAw
eCVYKSIsCiAgICAgICAgICAgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CiAK
ICAgICB0cnkKQEAgLTQ1Niw3ICs0ODIsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEJsZW5kRnVuY1Nl
cGFyYXRlKEdMZW51CiAKIHZvaWQgX19zdGRjYWxsIGdsQnVmZmVyRGF0YShHTGVudW0gdGFyZ2V0
LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSwgR0xlbnVtIHVzYWdlKQogewot
ICAgIFRSQUNFKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMc2l6ZWlwdHIgc2l6ZSA9ICVkLCBj
b25zdCBHTHZvaWQqIGRhdGEgPSAweCUwLjhwLCBHTGVudW0gdXNhZ2UgPSAlZCkiLAorICAgIEVW
RU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMc2l6ZWlwdHIgc2l6ZSA9ICVkLCBjb25zdCBH
THZvaWQqIGRhdGEgPSAweCUwLjhwLCBHTGVudW0gdXNhZ2UgPSAlZCkiLAogICAgICAgICAgIHRh
cmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwogCiAgICAgdHJ5CkBAIC01MTAsNyArNTM2LDcgQEAg
dm9pZCBfX3N0ZGNhbGwgZ2xCdWZmZXJEYXRhKEdMZW51bSB0YXJnZQogCiB2b2lkIF9fc3RkY2Fs
bCBnbEJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVp
cHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSkKIHsKLSAgICBUUkFDRSgiKEdMZW51bSB0YXJn
ZXQgPSAweCVYLCBHTGludHB0ciBvZmZzZXQgPSAlZCwgR0xzaXplaXB0ciBzaXplID0gJWQsIGNv
bnN0IEdMdm9pZCogZGF0YSA9IDB4JTAuOHApIiwKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQg
PSAweCVYLCBHTGludHB0ciBvZmZzZXQgPSAlZCwgR0xzaXplaXB0ciBzaXplID0gJWQsIGNvbnN0
IEdMdm9pZCogZGF0YSA9IDB4JTAuOHApIiwKICAgICAgICAgICB0YXJnZXQsIG9mZnNldCwgc2l6
ZSwgZGF0YSk7CiAKICAgICB0cnkKQEAgLTU2NCw3ICs1OTAsNyBAQCB2b2lkIF9fc3RkY2FsbCBn
bEJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhCiAKIEdMZW51bSBfX3N0ZGNhbGwgZ2xDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKEdMZW51bSB0YXJnZXQpCiB7Ci0gICAgVFJBQ0UoIihHTGVudW0gdGFyZ2V0
ID0gMHglWCkiLCB0YXJnZXQpOworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgpIiwg
dGFyZ2V0KTsKIAogICAgIHRyeQogICAgIHsKQEAgLTYwMCw3ICs2MjYsNyBAQCBHTGVudW0gX19z
dGRjYWxsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1CiAKIHZvaWQgX19zdGRjYWxsIGdsQ2xlYXIo
R0xiaXRmaWVsZCBtYXNrKQogewotICAgIFRSQUNFKCIoR0xiaXRmaWVsZCBtYXNrID0gJVgpIiwg
bWFzayk7CisgICAgRVZFTlQoIihHTGJpdGZpZWxkIG1hc2sgPSAlWCkiLCBtYXNrKTsKIAogICAg
IHRyeQogICAgIHsKQEAgLTYxOSw3ICs2NDUsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbENsZWFyKEdM
Yml0ZmllbGQgbWFzaykKIAogdm9pZCBfX3N0ZGNhbGwgZ2xDbGVhckNvbG9yKEdMY2xhbXBmIHJl
ZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKQogewotICAg
IFRSQUNFKCIoR0xjbGFtcGYgcmVkID0gJWYsIEdMY2xhbXBmIGdyZWVuID0gJWYsIEdMY2xhbXBm
IGJsdWUgPSAlZiwgR0xjbGFtcGYgYWxwaGEgPSAlZikiLAorICAgIEVWRU5UKCIoR0xjbGFtcGYg
cmVkID0gJWYsIEdMY2xhbXBmIGdyZWVuID0gJWYsIEdMY2xhbXBmIGJsdWUgPSAlZiwgR0xjbGFt
cGYgYWxwaGEgPSAlZikiLAogICAgICAgICAgIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKIAog
ICAgIHRyeQpAQCAtNjM5LDcgKzY2NSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsQ2xlYXJDb2xvcihH
TGNsYW1wZiByZWQKIAogdm9pZCBfX3N0ZGNhbGwgZ2xDbGVhckRlcHRoZihHTGNsYW1wZiBkZXB0
aCkKIHsKLSAgICBUUkFDRSgiKEdMY2xhbXBmIGRlcHRoID0gJWYpIiwgZGVwdGgpOworICAgIEVW
RU5UKCIoR0xjbGFtcGYgZGVwdGggPSAlZikiLCBkZXB0aCk7CiAKICAgICB0cnkKICAgICB7CkBA
IC02NTgsNyArNjg0LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDbGVhckRlcHRoZihHTGNsYW1wZiBk
ZQogCiB2b2lkIF9fc3RkY2FsbCBnbENsZWFyU3RlbmNpbChHTGludCBzKQogewotICAgIFRSQUNF
KCIoR0xpbnQgcyA9ICVkKSIsIHMpOworICAgIEVWRU5UKCIoR0xpbnQgcyA9ICVkKSIsIHMpOwog
CiAgICAgdHJ5CiAgICAgewpAQCAtNjc3LDcgKzcwMyw3IEBAIHZvaWQgX19zdGRjYWxsIGdsQ2xl
YXJTdGVuY2lsKEdMaW50IHMpCiAKIHZvaWQgX19zdGRjYWxsIGdsQ29sb3JNYXNrKEdMYm9vbGVh
biByZWQsIEdMYm9vbGVhbiBncmVlbiwgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSkK
IHsKLSAgICBUUkFDRSgiKEdMYm9vbGVhbiByZWQgPSAlZCwgR0xib29sZWFuIGdyZWVuID0gJWQs
IEdMYm9vbGVhbiBibHVlID0gJWQsIEdMYm9vbGVhbiBhbHBoYSA9ICVkKSIsCisgICAgRVZFTlQo
IihHTGJvb2xlYW4gcmVkID0gJWQsIEdMYm9vbGVhbiBncmVlbiA9ICVkLCBHTGJvb2xlYW4gYmx1
ZSA9ICVkLCBHTGJvb2xlYW4gYWxwaGEgPSAlZCkiLAogICAgICAgICAgIHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKTsKIAogICAgIHRyeQpAQCAtNjk3LDcgKzcyMyw3IEBAIHZvaWQgX19zdGRjYWxs
IGdsQ29sb3JNYXNrKEdMYm9vbGVhbiByZWQKIAogdm9pZCBfX3N0ZGNhbGwgZ2xDb21waWxlU2hh
ZGVyKEdMdWludCBzaGFkZXIpCiB7Ci0gICAgVFJBQ0UoIihHTHVpbnQgc2hhZGVyID0gJWQpIiwg
c2hhZGVyKTsKKyAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAlZCkiLCBzaGFkZXIpOwogCiAg
ICAgdHJ5CiAgICAgewpAQCAtNzMxLDE4ICs3NTcsMTMgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb21w
aWxlU2hhZGVyKEdMdWludCBzaAogdm9pZCBfX3N0ZGNhbGwgZ2xDb21wcmVzc2VkVGV4SW1hZ2Uy
RChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCog
ZGF0YSkKIHsKLSAgICBUUkFDRSgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBsZXZlbCA9
ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAweCVYLCBHTHNpemVpIHdpZHRoID0gJWQsICIg
CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xl
bnVtIGludGVybmFsZm9ybWF0ID0gMHglWCwgR0xzaXplaSB3aWR0aCA9ICVkLCAiIAogICAgICAg
ICAgICJHTHNpemVpIGhlaWdodCA9ICVkLCBHTGludCBib3JkZXIgPSAlZCwgR0xzaXplaSBpbWFn
ZVNpemUgPSAlZCwgY29uc3QgR0x2b2lkKiBkYXRhID0gMHglMC44cCkiLAogICAgICAgICAgIHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdl
U2l6ZSwgZGF0YSk7CiAKICAgICB0cnkKICAgICB7Ci0gICAgICAgIGlmIChsZXZlbCA8IDApCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCB8fCAobGV2ZWwg
PiAwICYmICFnbDo6aXNQb3cyKHdpZHRoKSkgfHwgKGxldmVsID4gMCAmJiAhZ2w6OmlzUG93Miho
ZWlnaHQpKSB8fCBib3JkZXIgIT0gMCB8fCBpbWFnZVNpemUgPCAwKQorICAgICAgICBpZiAoIXZh
bGlkSW1hZ2VTaXplKGxldmVsLCB3aWR0aCwgaGVpZ2h0KSB8fCBib3JkZXIgIT0gMCB8fCBpbWFn
ZVNpemUgPCAwKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CiAgICAgICAgIH0KQEAgLTg1NSw3ICs4NzYsNyBAQCB2b2lkIF9fc3RkY2FsbCBn
bENvbXByZXNzZWRUZXhJbWFnZTJEKEdMCiB2b2lkIF9fc3RkY2FsbCBnbENvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNp
emUsIGNvbnN0IEdMdm9pZCogZGF0YSkKIHsKLSAgICBUUkFDRSgiKEdMZW51bSB0YXJnZXQgPSAw
eCVYLCBHTGludCBsZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQg
PSAlZCwgIgorICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0g
JWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNldCA9ICVkLCAiCiAgICAgICAgICAg
IkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xlbnVtIGZvcm1hdCA9
IDB4JVgsICIKICAgICAgICAgICAiR0xzaXplaSBpbWFnZVNpemUgPSAlZCwgY29uc3QgR0x2b2lk
KiBkYXRhID0gMHglMC44cCkiLAogICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKQEAgLTg2Nywx
MyArODg4LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRAogICAg
ICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAobGV2ZWwgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoeG9mZnNldCA8IDAg
fHwgeW9mZnNldCA8IDAgfHwgd2lkdGggPCAwIHx8IGhlaWdodCA8IDAgfHwgCi0gICAgICAgICAg
ICAobGV2ZWwgPiAwICYmICFnbDo6aXNQb3cyKHdpZHRoKSkgfHwgKGxldmVsID4gMCAmJiAhZ2w6
OmlzUG93MihoZWlnaHQpKSB8fCBpbWFnZVNpemUgPCAwKQorICAgICAgICBpZiAoeG9mZnNldCA8
IDAgfHwgeW9mZnNldCA8IDAgfHwgIXZhbGlkSW1hZ2VTaXplKGxldmVsLCB3aWR0aCwgaGVpZ2h0
KSB8fCBpbWFnZVNpemUgPCAwKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIH0KQEAgLTk3NSwxOCArOTkwLDEzIEBAIHZvaWQg
X19zdGRjYWxsIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQKIAogdm9pZCBfX3N0ZGNhbGwgZ2xD
b3B5VGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xpbnQgYm9yZGVyKQogewotICAgIFRSQUNFKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50
IGxldmVsID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IDB4JVgsICIKKyAgICBFVkVOVCgi
KEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBsZXZlbCA9ICVkLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQgPSAweCVYLCAiCiAgICAgICAgICAgIkdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBH
THNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMaW50IGJvcmRlciA9ICVk
KSIsCiAgICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGJvcmRlcik7CiAKICAgICB0cnkKICAgICB7Ci0gICAgICAgIGlmIChsZXZlbCA8
IDAgfHwgd2lkdGggPCAwIHx8IGhlaWdodCA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChs
ZXZlbCA+IDAgJiYgKCFnbDo6aXNQb3cyKHdpZHRoKSB8fCAhZ2w6OmlzUG93MihoZWlnaHQpKSkK
KyAgICAgICAgaWYgKCF2YWxpZEltYWdlU2l6ZShsZXZlbCwgd2lkdGgsIGhlaWdodCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKICAgICAg
ICAgfQpAQCAtMTA0Myw3ICsxMDUzLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb3B5VGV4SW1hZ2Uy
RChHTGVudW0gdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBnbDo6Q29sb3JidWZmZXIg
KnNvdXJjZSA9IGZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcigpOwotICAgICAgICAgICAgR0xl
bnVtIGNvbG9yYnVmZmVyRm9ybWF0ID0gc291cmNlLT5nZXRGb3JtYXQoKTsKKyAgICAgICAgICAg
IEdMZW51bSBjb2xvcmJ1ZmZlckZvcm1hdCA9IHNvdXJjZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsK
IAogICAgICAgICAgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHRhYmxlIDMuOQogICAgICAgICAg
ICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKQEAgLTExMDUsNyArMTExNSw3IEBAIHZvaWQgX19z
dGRjYWxsIGdsQ29weVRleEltYWdlMkQoR0xlbnVtIHQKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICB0ZXh0dXJlLT5jb3B5SW1hZ2UobGV2ZWwsIGludGVybmFsZm9ybWF0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICAgICAgICAgIHRleHR1cmUtPmNv
cHlJbWFnZShsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZyYW1l
YnVmZmVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGdsOjpJc0N1YmVt
YXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCiAgICAgICAgICAgICB7CkBAIC0xMTE2LDcgKzExMjYs
NyBAQCB2b2lkIF9fc3RkY2FsbCBnbENvcHlUZXhJbWFnZTJEKEdMZW51bSB0CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgdGV4dHVyZS0+Y29weUltYWdlKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAg
ICAgICAgICAgIHRleHR1cmUtPmNvcHlJbWFnZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZnJhbWVidWZmZXIpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CkBAIC0xMTI5LDcgKzExMzks
NyBAQCB2b2lkIF9fc3RkY2FsbCBnbENvcHlUZXhJbWFnZTJEKEdMZW51bSB0CiAKIHZvaWQgX19z
dGRjYWxsIGdsQ29weVRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0KQogewotICAgIFRSQUNFKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgs
IEdMaW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNldCA9ICVk
LCAiCisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwg
R0xpbnQgeG9mZnNldCA9ICVkLCBHTGludCB5b2Zmc2V0ID0gJWQsICIKICAgICAgICAgICAiR0xp
bnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWln
aHQgPSAlZCkiLAogICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgs
IHksIHdpZHRoLCBoZWlnaHQpOwogCkBAIC0xMTc3LDcgKzExODcsNyBAQCB2b2lkIF9fc3RkY2Fs
bCBnbENvcHlUZXhTdWJJbWFnZTJEKEdMZW51CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGdsOjpDb2xvcmJ1ZmZlciAqc291cmNlID0gZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKCk7
Ci0gICAgICAgICAgICBHTGVudW0gY29sb3JidWZmZXJGb3JtYXQgPSBzb3VyY2UtPmdldEZvcm1h
dCgpOworICAgICAgICAgICAgR0xlbnVtIGNvbG9yYnVmZmVyRm9ybWF0ID0gc291cmNlLT5nZXRJ
bnRlcm5hbEZvcm1hdCgpOwogICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBOVUxM
OwogCiAgICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpCkBAIC0xMTk1LDcg
KzEyMDUsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbENvcHlUZXhTdWJJbWFnZTJEKEdMZW51CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgR0xlbnVtIHRleHR1cmVGb3JtYXQgPSB0ZXh0dXJlLT5nZXRG
b3JtYXQoKTsKKyAgICAgICAgICAgIEdMZW51bSB0ZXh0dXJlRm9ybWF0ID0gdGV4dHVyZS0+Z2V0
SW50ZXJuYWxGb3JtYXQoKTsKIAogICAgICAgICAgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHRh
YmxlIDMuOQogICAgICAgICAgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0KQpAQCAtMTI0MCw3ICsx
MjUwLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb3B5VGV4U3ViSW1hZ2UyRChHTGVudQogICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHRleHR1cmUtPmNvcHlTdWJJbWFnZSh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICAg
ICAgdGV4dHVyZS0+Y29weVN1YkltYWdlKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHgsIHksIHdpZHRoLCBoZWlnaHQsIGZyYW1lYnVmZmVyKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTI1Miw3ICsxMjYyLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb3B5VGV4U3ViSW1hZ2UyRChH
TGVudQogCiBHTHVpbnQgX19zdGRjYWxsIGdsQ3JlYXRlUHJvZ3JhbSh2b2lkKQogewotICAgIFRS
QUNFKCIoKSIpOworICAgIEVWRU5UKCIoKSIpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMTI3Myw3
ICsxMjgzLDcgQEAgR0x1aW50IF9fc3RkY2FsbCBnbENyZWF0ZVByb2dyYW0odm9pZCkKIAogR0x1
aW50IF9fc3RkY2FsbCBnbENyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKIHsKLSAgICBUUkFDRSgi
KEdMZW51bSB0eXBlID0gMHglWCkiLCB0eXBlKTsKKyAgICBFVkVOVCgiKEdMZW51bSB0eXBlID0g
MHglWCkiLCB0eXBlKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTEzMDEsNyArMTMxMSw3IEBAIEdM
dWludCBfX3N0ZGNhbGwgZ2xDcmVhdGVTaGFkZXIoR0xlbnVtIHQKIAogdm9pZCBfX3N0ZGNhbGwg
Z2xDdWxsRmFjZShHTGVudW0gbW9kZSkKIHsKLSAgICBUUkFDRSgiKEdMZW51bSBtb2RlID0gMHgl
WCkiLCBtb2RlKTsKKyAgICBFVkVOVCgiKEdMZW51bSBtb2RlID0gMHglWCkiLCBtb2RlKTsKIAog
ICAgIHRyeQogICAgIHsKQEAgLTEzMzEsNyArMTM0MSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsQ3Vs
bEZhY2UoR0xlbnVtIG1vZGUpCiAKIHZvaWQgX19zdGRjYWxsIGdsRGVsZXRlQnVmZmVycyhHTHNp
emVpIG4sIGNvbnN0IEdMdWludCogYnVmZmVycykKIHsKLSAgICBUUkFDRSgiKEdMc2l6ZWkgbiA9
ICVkLCBjb25zdCBHTHVpbnQqIGJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIGJ1ZmZlcnMpOworICAg
IEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogYnVmZmVycyA9IDB4JTAuOHAp
IiwgbiwgYnVmZmVycyk7CiAKICAgICB0cnkKICAgICB7CkBAIC0xMzU4LDcgKzEzNjgsNyBAQCB2
b2lkIF9fc3RkY2FsbCBnbERlbGV0ZUJ1ZmZlcnMoR0xzaXplaSBuCiAKIHZvaWQgX19zdGRjYWxs
IGdsRGVsZXRlRmVuY2VzTlYoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIGZlbmNlcykKIHsKLSAg
ICBUUkFDRSgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIGZlbmNlcyA9IDB4JTAuOHAp
IiwgbiwgZmVuY2VzKTsKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQq
IGZlbmNlcyA9IDB4JTAuOHApIiwgbiwgZmVuY2VzKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTEz
ODUsNyArMTM5NSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsRGVsZXRlRmVuY2VzTlYoR0xzaXplaSAK
IAogdm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBH
THVpbnQqIGZyYW1lYnVmZmVycykKIHsKLSAgICBUUkFDRSgiKEdMc2l6ZWkgbiA9ICVkLCBjb25z
dCBHTHVpbnQqIGZyYW1lYnVmZmVycyA9IDB4JTAuOHApIiwgbiwgZnJhbWVidWZmZXJzKTsKKyAg
ICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIGZyYW1lYnVmZmVycyA9IDB4
JTAuOHApIiwgbiwgZnJhbWVidWZmZXJzKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTE0MTUsNyAr
MTQyNSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsRGVsZXRlRnJhbWVidWZmZXJzKEdMc2kKIAogdm9p
ZCBfX3N0ZGNhbGwgZ2xEZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQogewotICAgIFRSQUNF
KCIoR0x1aW50IHByb2dyYW0gPSAlZCkiLCBwcm9ncmFtKTsKKyAgICBFVkVOVCgiKEdMdWludCBw
cm9ncmFtID0gJWQpIiwgcHJvZ3JhbSk7CiAKICAgICB0cnkKICAgICB7CkBAIC0xNDUxLDcgKzE0
NjEsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbERlbGV0ZVByb2dyYW0oR0x1aW50IHByCiAKIHZvaWQg
X19zdGRjYWxsIGdsRGVsZXRlUmVuZGVyYnVmZmVycyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCog
cmVuZGVyYnVmZmVycykKIHsKLSAgICBUUkFDRSgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVp
bnQqIHJlbmRlcmJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIHJlbmRlcmJ1ZmZlcnMpOworICAgIEVW
RU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogcmVuZGVyYnVmZmVycyA9IDB4JTAu
OHApIiwgbiwgcmVuZGVyYnVmZmVycyk7CiAKICAgICB0cnkKICAgICB7CkBAIC0xNDc4LDcgKzE0
ODgsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoR0xzCiAKIHZvaWQg
X19zdGRjYWxsIGdsRGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpCiB7Ci0gICAgVFJBQ0UoIihH
THVpbnQgc2hhZGVyID0gJWQpIiwgc2hhZGVyKTsKKyAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIg
PSAlZCkiLCBzaGFkZXIpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMTUxNCw3ICsxNTI0LDcgQEAg
dm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVTaGFkZXIoR0x1aW50IHNoYQogCiB2b2lkIF9fc3RkY2Fs
bCBnbERlbGV0ZVRleHR1cmVzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiB0ZXh0dXJlcykKIHsK
LSAgICBUUkFDRSgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIHRleHR1cmVzID0gMHgl
MC44cCkiLCBuLCB0ZXh0dXJlcyk7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgY29uc3Qg
R0x1aW50KiB0ZXh0dXJlcyA9IDB4JTAuOHApIiwgbiwgdGV4dHVyZXMpOwogCiAgICAgdHJ5CiAg
ICAgewpAQCAtMTU0NCw3ICsxNTU0LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVUZXh0dXJl
cyhHTHNpemVpIAogCiB2b2lkIF9fc3RkY2FsbCBnbERlcHRoRnVuYyhHTGVudW0gZnVuYykKIHsK
LSAgICBUUkFDRSgiKEdMZW51bSBmdW5jID0gMHglWCkiLCBmdW5jKTsKKyAgICBFVkVOVCgiKEdM
ZW51bSBmdW5jID0gMHglWCkiLCBmdW5jKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTE1NzgsNyAr
MTU4OCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsRGVwdGhGdW5jKEdMZW51bSBmdW5jKQogCiB2b2lk
IF9fc3RkY2FsbCBnbERlcHRoTWFzayhHTGJvb2xlYW4gZmxhZykKIHsKLSAgICBUUkFDRSgiKEdM
Ym9vbGVhbiBmbGFnID0gJWQpIiwgZmxhZyk7CisgICAgRVZFTlQoIihHTGJvb2xlYW4gZmxhZyA9
ICVkKSIsIGZsYWcpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMTU5Nyw3ICsxNjA3LDcgQEAgdm9p
ZCBfX3N0ZGNhbGwgZ2xEZXB0aE1hc2soR0xib29sZWFuIGZsYQogCiB2b2lkIF9fc3RkY2FsbCBn
bERlcHRoUmFuZ2VmKEdMY2xhbXBmIHpOZWFyLCBHTGNsYW1wZiB6RmFyKQogewotICAgIFRSQUNF
KCIoR0xjbGFtcGYgek5lYXIgPSAlZiwgR0xjbGFtcGYgekZhciA9ICVmKSIsIHpOZWFyLCB6RmFy
KTsKKyAgICBFVkVOVCgiKEdMY2xhbXBmIHpOZWFyID0gJWYsIEdMY2xhbXBmIHpGYXIgPSAlZiki
LCB6TmVhciwgekZhcik7CiAKICAgICB0cnkKICAgICB7CkBAIC0xNjE2LDcgKzE2MjYsNyBAQCB2
b2lkIF9fc3RkY2FsbCBnbERlcHRoUmFuZ2VmKEdMY2xhbXBmIHpOCiAKIHZvaWQgX19zdGRjYWxs
IGdsRGV0YWNoU2hhZGVyKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKQogewotICAgIFRS
QUNFKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0x1aW50IHNoYWRlciA9ICVkKSIsIHByb2dyYW0s
IHNoYWRlcik7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQgc2hhZGVy
ID0gJWQpIiwgcHJvZ3JhbSwgc2hhZGVyKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTE2NjksNyAr
MTY3OSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsRGV0YWNoU2hhZGVyKEdMdWludCBwcm8KIAogdm9p
ZCBfX3N0ZGNhbGwgZ2xEaXNhYmxlKEdMZW51bSBjYXApCiB7Ci0gICAgVFJBQ0UoIihHTGVudW0g
Y2FwID0gMHglWCkiLCBjYXApOworICAgIEVWRU5UKCIoR0xlbnVtIGNhcCA9IDB4JVgpIiwgY2Fw
KTsKIAogICAgIHRyeQogICAgIHsKQEAgLTE3MDEsNyArMTcxMSw3IEBAIHZvaWQgX19zdGRjYWxs
IGdsRGlzYWJsZShHTGVudW0gY2FwKQogCiB2b2lkIF9fc3RkY2FsbCBnbERpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCiB7Ci0gICAgVFJBQ0UoIihHTHVpbnQgaW5kZXggPSAl
ZCkiLCBpbmRleCk7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCkiLCBpbmRleCk7CiAK
ICAgICB0cnkKICAgICB7CkBAIC0xNzI1LDcgKzE3MzUsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbERp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJhCiAKIHZvaWQgX19zdGRjYWxsIGdsRHJhd0FycmF5cyhHTGVu
dW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiB7Ci0gICAgVFJBQ0UoIihHTGVu
dW0gbW9kZSA9IDB4JVgsIEdMaW50IGZpcnN0ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCkiLCBt
b2RlLCBmaXJzdCwgY291bnQpOworICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUgPSAweCVYLCBHTGlu
dCBmaXJzdCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQpIiwgbW9kZSwgZmlyc3QsIGNvdW50KTsK
IAogICAgIHRyeQogICAgIHsKQEAgLTE3NDksNyArMTc1OSw3IEBAIHZvaWQgX19zdGRjYWxsIGds
RHJhd0FycmF5cyhHTGVudW0gbW9kZSwKIAogdm9pZCBfX3N0ZGNhbGwgZ2xEcmF3RWxlbWVudHMo
R0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIGlu
ZGljZXMpCiB7Ci0gICAgVFJBQ0UoIihHTGVudW0gbW9kZSA9IDB4JVgsIEdMc2l6ZWkgY291bnQg
PSAlZCwgR0xlbnVtIHR5cGUgPSAweCVYLCBjb25zdCBHTHZvaWQqIGluZGljZXMgPSAweCUwLjhw
KSIsCisgICAgRVZFTlQoIihHTGVudW0gbW9kZSA9IDB4JVgsIEdMc2l6ZWkgY291bnQgPSAlZCwg
R0xlbnVtIHR5cGUgPSAweCVYLCBjb25zdCBHTHZvaWQqIGluZGljZXMgPSAweCUwLjhwKSIsCiAg
ICAgICAgICAgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMpOwogCiAgICAgdHJ5CkBAIC0xNzg5
LDcgKzE3OTksNyBAQCB2b2lkIF9fc3RkY2FsbCBnbERyYXdFbGVtZW50cyhHTGVudW0gbW9kCiAK
IHZvaWQgX19zdGRjYWxsIGdsRW5hYmxlKEdMZW51bSBjYXApCiB7Ci0gICAgVFJBQ0UoIihHTGVu
dW0gY2FwID0gMHglWCkiLCBjYXApOworICAgIEVWRU5UKCIoR0xlbnVtIGNhcCA9IDB4JVgpIiwg
Y2FwKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTE4MjEsNyArMTgzMSw3IEBAIHZvaWQgX19zdGRj
YWxsIGdsRW5hYmxlKEdMZW51bSBjYXApCiAKIHZvaWQgX19zdGRjYWxsIGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQogewotICAgIFRSQUNFKCIoR0x1aW50IGluZGV4ID0g
JWQpIiwgaW5kZXgpOworICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQpIiwgaW5kZXgpOwog
CiAgICAgdHJ5CiAgICAgewpAQCAtMTg0NSw3ICsxODU1LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheQogCiB2b2lkIF9fc3RkY2FsbCBnbEZpbmlzaEZlbmNlTlYo
R0x1aW50IGZlbmNlKQogewotICAgIFRSQUNFKCIoR0x1aW50IGZlbmNlID0gJWQpIiwgZmVuY2Up
OworICAgIEVWRU5UKCIoR0x1aW50IGZlbmNlID0gJWQpIiwgZmVuY2UpOwogCiAgICAgdHJ5CiAg
ICAgewpAQCAtMTg3MSw3ICsxODgxLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xGaW5pc2hGZW5jZU5W
KEdMdWludCBmZQogCiB2b2lkIF9fc3RkY2FsbCBnbEZpbmlzaCh2b2lkKQogewotICAgIFRSQUNF
KCIoKSIpOworICAgIEVWRU5UKCIoKSIpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMTg5MCw3ICsx
OTAwLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xGaW5pc2godm9pZCkKIAogdm9pZCBfX3N0ZGNhbGwg
Z2xGbHVzaCh2b2lkKQogewotICAgIFRSQUNFKCIoKSIpOworICAgIEVWRU5UKCIoKSIpOwogCiAg
ICAgdHJ5CiAgICAgewpAQCAtMTkwOSw3ICsxOTE5LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xGbHVz
aCh2b2lkKQogCiB2b2lkIF9fc3RkY2FsbCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBH
THVpbnQgcmVuZGVyYnVmZmVyKQogewotICAgIFRSQUNFKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgs
IEdMZW51bSBhdHRhY2htZW50ID0gMHglWCwgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCA9IDB4
JVgsICIKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gYXR0YWNobWVu
dCA9IDB4JVgsIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQgPSAweCVYLCAiCiAgICAgICAgICAg
IkdMdWludCByZW5kZXJidWZmZXIgPSAlZCkiLCB0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1
ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKIAogICAgIHRyeQpAQCAtMTk2Niw3ICsxOTc2LDcg
QEAgdm9pZCBfX3N0ZGNhbGwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcgogCiB2b2lkIF9fc3Rk
Y2FsbCBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2ht
ZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpCiB7Ci0g
ICAgVFJBQ0UoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIGF0dGFjaG1lbnQgPSAweCVY
LCBHTGVudW0gdGV4dGFyZ2V0ID0gMHglWCwgIgorICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9
IDB4JVgsIEdMZW51bSBhdHRhY2htZW50ID0gMHglWCwgR0xlbnVtIHRleHRhcmdldCA9IDB4JVgs
ICIKICAgICAgICAgICAiR0x1aW50IHRleHR1cmUgPSAlZCwgR0xpbnQgbGV2ZWwgPSAlZCkiLCB0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogCiAgICAgdHJ5
CkBAIC0yMDczLDcgKzIwODMsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMCiAKIHZvaWQgX19zdGRjYWxsIGdsRnJvbnRGYWNlKEdMZW51bSBtb2RlKQogewotICAg
IFRSQUNFKCIoR0xlbnVtIG1vZGUgPSAweCVYKSIsIG1vZGUpOworICAgIEVWRU5UKCIoR0xlbnVt
IG1vZGUgPSAweCVYKSIsIG1vZGUpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMjEwMiw3ICsyMTEy
LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xGcm9udEZhY2UoR0xlbnVtIG1vZGUpCiAKIHZvaWQgX19z
dGRjYWxsIGdsR2VuQnVmZmVycyhHTHNpemVpIG4sIEdMdWludCogYnVmZmVycykKIHsKLSAgICBU
UkFDRSgiKEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQqIGJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIGJ1
ZmZlcnMpOworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogYnVmZmVycyA9IDB4
JTAuOHApIiwgbiwgYnVmZmVycyk7CiAKICAgICB0cnkKICAgICB7CkBAIC0yMTI5LDcgKzIxMzks
NyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdlbkJ1ZmZlcnMoR0xzaXplaSBuLCBHCiAKIHZvaWQgX19z
dGRjYWxsIGdsR2VuZXJhdGVNaXBtYXAoR0xlbnVtIHRhcmdldCkKIHsKLSAgICBUUkFDRSgiKEdM
ZW51bSB0YXJnZXQgPSAweCVYKSIsIHRhcmdldCk7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0
ID0gMHglWCkiLCB0YXJnZXQpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMjE2OSw3ICsyMTc5LDcg
QEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZW5lcmF0ZU1pcG1hcChHTGVudW0gdAogCiB2b2lkIF9fc3Rk
Y2FsbCBnbEdlbkZlbmNlc05WKEdMc2l6ZWkgbiwgR0x1aW50KiBmZW5jZXMpCiB7Ci0gICAgVFJB
Q0UoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiBmZW5jZXMgPSAweCUwLjhwKSIsIG4sIGZlbmNl
cyk7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiBmZW5jZXMgPSAweCUwLjhw
KSIsIG4sIGZlbmNlcyk7CiAKICAgICB0cnkKICAgICB7CkBAIC0yMTk2LDcgKzIyMDYsNyBAQCB2
b2lkIF9fc3RkY2FsbCBnbEdlbkZlbmNlc05WKEdMc2l6ZWkgbiwgCiAKIHZvaWQgX19zdGRjYWxs
IGdsR2VuRnJhbWVidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMpCiB7Ci0g
ICAgVFJBQ0UoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMgPSAweCUwLjhw
KSIsIG4sIGZyYW1lYnVmZmVycyk7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50
KiBmcmFtZWJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIGZyYW1lYnVmZmVycyk7CiAKICAgICB0cnkK
ICAgICB7CkBAIC0yMjIzLDcgKzIyMzMsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdlbkZyYW1lYnVm
ZmVycyhHTHNpemVpCiAKIHZvaWQgX19zdGRjYWxsIGdsR2VuUmVuZGVyYnVmZmVycyhHTHNpemVp
IG4sIEdMdWludCogcmVuZGVyYnVmZmVycykKIHsKLSAgICBUUkFDRSgiKEdMc2l6ZWkgbiA9ICVk
LCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIHJlbmRlcmJ1ZmZlcnMpOwor
ICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogcmVuZGVyYnVmZmVycyA9IDB4JTAu
OHApIiwgbiwgcmVuZGVyYnVmZmVycyk7CiAKICAgICB0cnkKICAgICB7CkBAIC0yMjUwLDcgKzIy
NjAsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdlblJlbmRlcmJ1ZmZlcnMoR0xzaXplCiAKIHZvaWQg
X19zdGRjYWxsIGdsR2VuVGV4dHVyZXMoR0xzaXplaSBuLCBHTHVpbnQqIHRleHR1cmVzKQogewot
ICAgIFRSQUNFKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogdGV4dHVyZXMgPSAgMHglMC44cCki
LCBuLCB0ZXh0dXJlcyk7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiB0ZXh0
dXJlcyA9ICAweCUwLjhwKSIsIG4sIHRleHR1cmVzKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTIy
NzcsNyArMjI4Nyw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2VuVGV4dHVyZXMoR0xzaXplaSBuLCAK
IAogdm9pZCBfX3N0ZGNhbGwgZ2xHZXRBY3RpdmVBdHRyaWIoR0x1aW50IHByb2dyYW0sIEdMdWlu
dCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBH
TGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkKIHsKLSAgICBUUkFDRSgiKEdMdWludCBwcm9ncmFt
ID0gJWQsIEdMdWludCBpbmRleCA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSAq
bGVuZ3RoID0gMHglMC44cCwgIgorICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0x1
aW50IGluZGV4ID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpICpsZW5ndGggPSAw
eCUwLjhwLCAiCiAgICAgICAgICAgIkdMaW50ICpzaXplID0gMHglMC44cCwgR0xlbnVtICp0eXBl
ID0gJTAuOHAsIEdMY2hhciAqbmFtZSA9ICUwLjhwKSIsCiAgICAgICAgICAgcHJvZ3JhbSwgaW5k
ZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CiAKQEAgLTIzMjIsNyArMjMz
Miw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0QWN0aXZlQXR0cmliKEdMdWludCAKIAogdm9pZCBf
X3N0ZGNhbGwgZ2xHZXRBY3RpdmVVbmlmb3JtKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgs
IEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0
eXBlLCBHTGNoYXIqIG5hbWUpCiB7Ci0gICAgVFJBQ0UoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBH
THVpbnQgaW5kZXggPSAlZCwgR0xzaXplaSBidWZzaXplID0gJWQsICIKKyAgICBFVkVOVCgiKEdM
dWludCBwcm9ncmFtID0gJWQsIEdMdWludCBpbmRleCA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAl
ZCwgIgogICAgICAgICAgICJHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBHTGludCogc2l6ZSA9
IDB4JTAuOHAsIEdMZW51bSogdHlwZSA9IDB4JTAuOHAsIEdMY2hhciogbmFtZSA9IDB4JTAuOHAp
IiwKICAgICAgICAgICBwcm9ncmFtLCBpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBl
LCBuYW1lKTsKIApAQCAtMjM2Nyw3ICsyMzc3LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZXRBY3Rp
dmVVbmlmb3JtKEdMdWludAogCiB2b2lkIF9fc3RkY2FsbCBnbEdldEF0dGFjaGVkU2hhZGVycyhH
THVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwgR0xzaXplaSogY291bnQsIEdMdWludCog
c2hhZGVycykKIHsKLSAgICBUUkFDRSgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMc2l6ZWkgbWF4
Y291bnQgPSAlZCwgR0xzaXplaSogY291bnQgPSAweCUwLjhwLCBHTHVpbnQqIHNoYWRlcnMgPSAw
eCUwLjhwKSIsCisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHNpemVpIG1heGNv
dW50ID0gJWQsIEdMc2l6ZWkqIGNvdW50ID0gMHglMC44cCwgR0x1aW50KiBzaGFkZXJzID0gMHgl
MC44cCkiLAogICAgICAgICAgIHByb2dyYW0sIG1heGNvdW50LCBjb3VudCwgc2hhZGVycyk7CiAK
ICAgICB0cnkKQEAgLTI0MDYsNyArMjQxNiw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0QXR0YWNo
ZWRTaGFkZXJzKEdMdWkKIAogaW50IF9fc3RkY2FsbCBnbEdldEF0dHJpYkxvY2F0aW9uKEdMdWlu
dCBwcm9ncmFtLCBjb25zdCBHTGNoYXIqIG5hbWUpCiB7Ci0gICAgVFJBQ0UoIihHTHVpbnQgcHJv
Z3JhbSA9ICVkLCBjb25zdCBHTGNoYXIqIG5hbWUgPSAlcykiLCBwcm9ncmFtLCBuYW1lKTsKKyAg
ICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIGNvbnN0IEdMY2hhciogbmFtZSA9ICVzKSIs
IHByb2dyYW0sIG5hbWUpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMjQ0Nyw3ICsyNDU3LDcgQEAg
aW50IF9fc3RkY2FsbCBnbEdldEF0dHJpYkxvY2F0aW9uKEdMdWludAogCiB2b2lkIF9fc3RkY2Fs
bCBnbEdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuKiBwYXJhbXMpCiB7Ci0gICAg
VFJBQ0UoIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTGJvb2xlYW4qIHBhcmFtcyA9IDB4JTAuOHAp
IiwgIHBuYW1lLCBwYXJhbXMpOworICAgIEVWRU5UKCIoR0xlbnVtIHBuYW1lID0gMHglWCwgR0xi
b29sZWFuKiBwYXJhbXMgPSAweCUwLjhwKSIsICBwbmFtZSwgcGFyYW1zKTsKIAogICAgIHRyeQog
ICAgIHsKQEAgLTI1MTAsNyArMjUyMCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0Qm9vbGVhbnYo
R0xlbnVtIHBuYW0KIAogdm9pZCBfX3N0ZGNhbGwgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdihHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCiB7Ci0gICAgVFJBQ0UoIihH
TGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9
IDB4JTAuOHApIiwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKKyAgICBFVkVOVCgiKEdMZW51bSB0
YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44
cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMjU1Nyw3
ICsyNTY3LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdihHTAogCiBH
TGVudW0gX19zdGRjYWxsIGdsR2V0RXJyb3Iodm9pZCkKIHsKLSAgICBUUkFDRSgiKCkiKTsKKyAg
ICBFVkVOVCgiKCkiKTsKIAogICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRl
eHQoKTsKIApAQCAtMjU3MSw3ICsyNTgxLDcgQEAgR0xlbnVtIF9fc3RkY2FsbCBnbEdldEVycm9y
KHZvaWQpCiAKIHZvaWQgX19zdGRjYWxsIGdsR2V0RmVuY2Vpdk5WKEdMdWludCBmZW5jZSwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogewotICAgIFRSQUNFKCIoR0x1aW50IGZlbmNlID0g
JWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50ICpwYXJhbXMgPSAweCUwLjhwKSIsIGZlbmNl
LCBwbmFtZSwgcGFyYW1zKTsKKyAgICBFVkVOVCgiKEdMdWludCBmZW5jZSA9ICVkLCBHTGVudW0g
cG5hbWUgPSAweCVYLCBHTGludCAqcGFyYW1zID0gMHglMC44cCkiLCBmZW5jZSwgcG5hbWUsIHBh
cmFtcyk7CiAKICAgICB0cnkKICAgICB7CkBAIC0yNTk4LDcgKzI2MDgsNyBAQCB2b2lkIF9fc3Rk
Y2FsbCBnbEdldEZlbmNlaXZOVihHTHVpbnQgZmVuCiAKIHZvaWQgX19zdGRjYWxsIGdsR2V0Rmxv
YXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQogewotICAgIFRSQUNFKCIoR0xlbnVt
IHBuYW1lID0gMHglWCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLCBwbmFtZSwgcGFyYW1z
KTsKKyAgICBFVkVOVCgiKEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMZmxvYXQqIHBhcmFtcyA9IDB4
JTAuOHApIiwgcG5hbWUsIHBhcmFtcyk7CiAKICAgICB0cnkKICAgICB7CkBAIC0yNjU4LDcgKzI2
NjgsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdldEZsb2F0dihHTGVudW0gcG5hbWUsCiAKIHZvaWQg
X19zdGRjYWxsIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKIHsK
LSAgICBUUkFDRSgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gYXR0YWNobWVudCA9IDB4
JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAg
RVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIGF0dGFjaG1lbnQgPSAweCVYLCBH
TGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLAogICAgICAgICAg
IHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcyk7CiAKICAgICB0cnkKQEAgLTI3Nzcs
NyArMjc4Nyw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW4KIAog
dm9pZCBfX3N0ZGNhbGwgZ2xHZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMp
CiB7Ci0gICAgVFJBQ0UoIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHgl
MC44cCkiLCBwbmFtZSwgcGFyYW1zKTsKKyAgICBFVkVOVCgiKEdMZW51bSBwbmFtZSA9IDB4JVgs
IEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHBuYW1lLCBwYXJhbXMpOwogCiAgICAgdHJ5CiAg
ICAgewpAQCAtMjg0Miw3ICsyODUyLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZXRJbnRlZ2VydihH
TGVudW0gcG5hbQogCiB2b2lkIF9fc3RkY2FsbCBnbEdldFByb2dyYW1pdihHTHVpbnQgcHJvZ3Jh
bSwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQogewotICAgIFRSQUNFKCIoR0x1aW50IHBy
b2dyYW0gPSAlZCwgR0xlbnVtIHBuYW1lID0gJWQsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIs
IHByb2dyYW0sIHBuYW1lLCBwYXJhbXMpOworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAl
ZCwgR0xlbnVtIHBuYW1lID0gJWQsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHByb2dyYW0s
IHBuYW1lLCBwYXJhbXMpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMjg5OSw3ICsyOTA5LDcgQEAg
dm9pZCBfX3N0ZGNhbGwgZ2xHZXRQcm9ncmFtaXYoR0x1aW50IHBybwogCiB2b2lkIF9fc3RkY2Fs
bCBnbEdldFByb2dyYW1JbmZvTG9nKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUsIEdM
c2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBpbmZvbG9nKQogewotICAgIFRSQUNFKCIoR0x1aW50IHBy
b2dyYW0gPSAlZCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAu
OHAsIEdMY2hhciogaW5mb2xvZyA9IDB4JTAuOHApIiwKKyAgICBFVkVOVCgiKEdMdWludCBwcm9n
cmFtID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhw
LCBHTGNoYXIqIGluZm9sb2cgPSAweCUwLjhwKSIsCiAgICAgICAgICAgcHJvZ3JhbSwgYnVmc2l6
ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKIAogICAgIHRyeQpAQCAtMjkzMSw3ICsyOTQxLDcgQEAgdm9p
ZCBfX3N0ZGNhbGwgZ2xHZXRQcm9ncmFtSW5mb0xvZyhHTHVpbgogCiB2b2lkIF9fc3RkY2FsbCBn
bEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xpbnQqIHBhcmFtcykKIHsKLSAgICBUUkFDRSgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVu
dW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1l
LCBwYXJhbXMpOworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFt
ZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFt
cyk7CiAKICAgICB0cnkKICAgICB7CkBAIC0yOTUzLDg1ICsyOTYzLDIzIEBAIHZvaWQgX19zdGRj
YWxsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGUKIAogICAgICAgICAgICAgc3dpdGNoIChwbmFt
ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfV0lE
VEg6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0V2lkdGgoKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZG
RVJfSEVJR0hUOgotICAgICAgICAgICAgICAgICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEhl
aWdodCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1JF
TkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQ6Ci0gICAgICAgICAgICAgICAgKnBhcmFtcyA9IHJl
bmRlcmJ1ZmZlci0+Z2V0Rm9ybWF0KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1JFRF9TSVpFOgotICAgICAgICAgICAgICAgIGlm
IChyZW5kZXJidWZmZXItPmlzQ29sb3JidWZmZXIoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxnbDo6Q29sb3JidWZmZXIqPihy
ZW5kZXJidWZmZXItPmdldFN0b3JhZ2UoKSktPmdldFJlZFNpemUoKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgKnBhcmFtcyA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFOgot
ICAgICAgICAgICAgICAgIGlmIChyZW5kZXJidWZmZXItPmlzQ29sb3JidWZmZXIoKSkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxn
bDo6Q29sb3JidWZmZXIqPihyZW5kZXJidWZmZXItPmdldFN0b3JhZ2UoKSktPmdldEdyZWVuU2l6
ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gMDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVS
QlVGRkVSX0JMVUVfU0laRToKLSAgICAgICAgICAgICAgICBpZiAocmVuZGVyYnVmZmVyLT5pc0Nv
bG9yYnVmZmVyKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAqcGFy
YW1zID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbG9yYnVmZmVyKj4ocmVuZGVyYnVmZmVyLT5nZXRTdG9y
YWdlKCkpLT5nZXRCbHVlU2l6ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0g
MDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6Ci0gICAgICAgICAgICAgICAgaWYg
KHJlbmRlcmJ1ZmZlci0+aXNDb2xvcmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PGdsOjpDb2xvcmJ1ZmZlcio+KHJl
bmRlcmJ1ZmZlci0+Z2V0U3RvcmFnZSgpKS0+Z2V0QWxwaGFTaXplKCk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICpwYXJhbXMgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRToK
LSAgICAgICAgICAgICAgICBpZiAocmVuZGVyYnVmZmVyLT5pc0RlcHRoYnVmZmVyKCkpCi0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8
Z2w6OkRlcHRoYnVmZmVyKj4ocmVuZGVyYnVmZmVyLT5nZXRTdG9yYWdlKCkpLT5nZXREZXB0aFNp
emUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IDA7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX1JFTkRF
UkJVRkZFUl9TVEVOQ0lMX1NJWkU6Ci0gICAgICAgICAgICAgICAgaWYgKHJlbmRlcmJ1ZmZlci0+
aXNTdGVuY2lsYnVmZmVyKCkpCisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1dJ
RFRIOiAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0V2lkdGgoKTsgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0hFSUdIVDogICAg
ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7ICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDogKnBh
cmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1JFRF9TSVpFOiAgICAgICAgKnBhcmFtcyA9IHJl
bmRlcmJ1ZmZlci0+Z2V0UmVkU2l6ZSgpOyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZl
ci0+Z2V0R3JlZW5TaXplKCk7ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVO
REVSQlVGRkVSX0JMVUVfU0laRTogICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0Qmx1
ZVNpemUoKTsgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVS
X0FMUEhBX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0QWxwaGFTaXplKCk7
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJ
WkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0RGVwdGhTaXplKCk7ICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRTogICAg
KnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0U3RlbmNpbFNpemUoKTsgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVNfQU5HTEU6CisgICAgICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSAhPSAwKQogICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PGds
OjpTdGVuY2lsYnVmZmVyKj4ocmVuZGVyYnVmZmVyLT5nZXRTdG9yYWdlKCkpLT5nZXRTdGVuY2ls
U2l6ZSgpOworICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5nZXRT
YW1wbGVzKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSAwOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9S
RU5ERVJCVUZGRVJfU0FNUExFU19BTkdMRToKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgIT0gMCkKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHJl
bmRlcmJ1ZmZlci0+Z2V0U3RvcmFnZSgpLT5nZXRTYW1wbGVzKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMDQ3LDcgKzI5OTUsNyBAQCB2b2lkIF9fc3Rk
Y2FsbCBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlCiAKIHZvaWQgX19zdGRjYWxsIGdsR2V0U2hh
ZGVyaXYoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQogewotICAg
IFRSQUNFKCIoR0x1aW50IHNoYWRlciA9ICVkLCBHTGVudW0gcG5hbWUgPSAlZCwgR0xpbnQqIHBh
cmFtcyA9IDB4JTAuOHApIiwgc2hhZGVyLCBwbmFtZSwgcGFyYW1zKTsKKyAgICBFVkVOVCgiKEdM
dWludCBzaGFkZXIgPSAlZCwgR0xlbnVtIHBuYW1lID0gJWQsIEdMaW50KiBwYXJhbXMgPSAweCUw
LjhwKSIsIHNoYWRlciwgcG5hbWUsIHBhcmFtcyk7CiAKICAgICB0cnkKICAgICB7CkBAIC0zMDky
LDcgKzMwNDAsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbEdldFNoYWRlcml2KEdMdWludCBzaGFkCiAK
IHZvaWQgX19zdGRjYWxsIGdsR2V0U2hhZGVySW5mb0xvZyhHTHVpbnQgc2hhZGVyLCBHTHNpemVp
IGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBpbmZvbG9nKQogewotICAgIFRSQUNF
KCIoR0x1aW50IHNoYWRlciA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVu
Z3RoID0gMHglMC44cCwgR0xjaGFyKiBpbmZvbG9nID0gMHglMC44cCkiLAorICAgIEVWRU5UKCIo
R0x1aW50IHNoYWRlciA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3Ro
ID0gMHglMC44cCwgR0xjaGFyKiBpbmZvbG9nID0gMHglMC44cCkiLAogICAgICAgICAgIHNoYWRl
ciwgYnVmc2l6ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKIAogICAgIHRyeQpAQCAtMzEyNCw3ICszMDcy
LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJJbmZvTG9nKEdMdWludAogCiB2b2lkIF9f
c3RkY2FsbCBnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHTGVudW0gc2hhZGVydHlwZSwgR0xl
bnVtIHByZWNpc2lvbnR5cGUsIEdMaW50KiByYW5nZSwgR0xpbnQqIHByZWNpc2lvbikKIHsKLSAg
ICBUUkFDRSgiKEdMZW51bSBzaGFkZXJ0eXBlID0gMHglWCwgR0xlbnVtIHByZWNpc2lvbnR5cGUg
PSAweCVYLCBHTGludCogcmFuZ2UgPSAweCUwLjhwLCBHTGludCogcHJlY2lzaW9uID0gMHglMC44
cCkiLAorICAgIEVWRU5UKCIoR0xlbnVtIHNoYWRlcnR5cGUgPSAweCVYLCBHTGVudW0gcHJlY2lz
aW9udHlwZSA9IDB4JVgsIEdMaW50KiByYW5nZSA9IDB4JTAuOHAsIEdMaW50KiBwcmVjaXNpb24g
PSAweCUwLjhwKSIsCiAgICAgICAgICAgc2hhZGVydHlwZSwgcHJlY2lzaW9udHlwZSwgcmFuZ2Us
IHByZWNpc2lvbik7CiAKICAgICB0cnkKQEAgLTMxNjksNyArMzExNyw3IEBAIHZvaWQgX19zdGRj
YWxsIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWEKIAogdm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFk
ZXJTb3VyY2UoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgs
IEdMY2hhciogc291cmNlKQogewotICAgIFRSQUNFKCIoR0x1aW50IHNoYWRlciA9ICVkLCBHTHNp
emVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgR0xjaGFyKiBzb3Vy
Y2UgPSAweCUwLjhwKSIsCisgICAgRVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQsIEdMc2l6ZWkg
YnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBHTGNoYXIqIHNvdXJjZSA9
IDB4JTAuOHApIiwKICAgICAgICAgICBzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0aCwgc291cmNlKTsK
IAogICAgIHRyeQpAQCAtMzIwMSw3ICszMTQ5LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFk
ZXJTb3VyY2UoR0x1aW50IAogCiBjb25zdCBHTHVieXRlKiBfX3N0ZGNhbGwgZ2xHZXRTdHJpbmco
R0xlbnVtIG5hbWUpCiB7Ci0gICAgVFJBQ0UoIihHTGVudW0gbmFtZSA9IDB4JVgpIiwgbmFtZSk7
CisgICAgRVZFTlQoIihHTGVudW0gbmFtZSA9IDB4JVgpIiwgbmFtZSk7CiAKICAgICB0cnkKICAg
ICB7CkBAIC0zMjEwLDEzICszMTU4LDEzIEBAIGNvbnN0IEdMdWJ5dGUqIF9fc3RkY2FsbCBnbEdl
dFN0cmluZyhHTGUKICAgICAgICAgc3dpdGNoIChuYW1lKQogICAgICAgICB7CiAgICAgICAgICAg
Y2FzZSBHTF9WRU5ET1I6Ci0gICAgICAgICAgICByZXR1cm4gKEdMdWJ5dGUqKSJUcmFuc0dhbWlu
ZyBJbmMuIjsKKyAgICAgICAgICAgIHJldHVybiAoR0x1Ynl0ZSopIkdvb2dsZSBJbmMuIjsKICAg
ICAgICAgICBjYXNlIEdMX1JFTkRFUkVSOgogICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKiki
QU5HTEUiOwogICAgICAgICAgIGNhc2UgR0xfVkVSU0lPTjoKLSAgICAgICAgICAgIHJldHVybiAo
R0x1Ynl0ZSopIk9wZW5HTCBFUyAyLjAgKGdpdC1kZXZlbCAiX19EQVRFX18gIiAiIF9fVElNRV9f
IikiOworICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikiT3BlbkdMIEVTIDIuMCAoQU5HTEUg
IlZFUlNJT05fU1RSSU5HIikiOwogICAgICAgICAgIGNhc2UgR0xfU0hBRElOR19MQU5HVUFHRV9W
RVJTSU9OOgotICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikiT3BlbkdMIEVTIEdMU0wgRVMg
MS4wMCAoZ2l0LWRldmVsICJfX0RBVEVfXyAiICIgX19USU1FX18iKSI7CisgICAgICAgICAgICBy
ZXR1cm4gKEdMdWJ5dGUqKSJPcGVuR0wgRVMgR0xTTCBFUyAxLjAwIChBTkdMRSAiVkVSU0lPTl9T
VFJJTkciKSI7CiAgICAgICAgICAgY2FzZSBHTF9FWFRFTlNJT05TOgogICAgICAgICAgICAgcmV0
dXJuIChHTHVieXRlKikoKGNvbnRleHQgIT0gTlVMTCkgPyBjb250ZXh0LT5nZXRFeHRlbnNpb25T
dHJpbmcoKSA6ICIiKTsKICAgICAgICAgICBkZWZhdWx0OgpAQCAtMzIzMyw3ICszMTgxLDcgQEAg
Y29uc3QgR0x1Ynl0ZSogX19zdGRjYWxsIGdsR2V0U3RyaW5nKEdMZQogCiB2b2lkIF9fc3RkY2Fs
bCBnbEdldFRleFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCogcGFyYW1zKQogewotICAgIFRSQUNFKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBw
bmFtZSA9IDB4JVgsIEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAuOHApIiwgdGFyZ2V0LCBwbmFtZSwg
cGFyYW1zKTsKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUg
PSAweCVYLCBHTGZsb2F0KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFt
cyk7CiAKICAgICB0cnkKICAgICB7CkBAIC0zMjgyLDcgKzMyMzAsNyBAQCB2b2lkIF9fc3RkY2Fs
bCBnbEdldFRleFBhcmFtZXRlcmZ2KEdMZW51CiAKIHZvaWQgX19zdGRjYWxsIGdsR2V0VGV4UGFy
YW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQogewot
ICAgIFRSQUNFKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdM
aW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisgICAgRVZF
TlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQqIHBh
cmFtcyA9IDB4JTAuOHApIiwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKIAogICAgIHRyeQogICAg
IHsKQEAgLTMzMzEsNyArMzI3OSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0VGV4UGFyYW1ldGVy
aXYoR0xlbnUKIAogdm9pZCBfX3N0ZGNhbGwgZ2xHZXRVbmlmb3JtZnYoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0KiBwYXJhbXMpCiB7Ci0gICAgVFJBQ0UoIihHTHVpbnQg
cHJvZ3JhbSA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0KiBwYXJhbXMgPSAweCUw
LjhwKSIsIHByb2dyYW0sIGxvY2F0aW9uLCBwYXJhbXMpOworICAgIEVWRU5UKCIoR0x1aW50IHBy
b2dyYW0gPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44
cCkiLCBwcm9ncmFtLCBsb2NhdGlvbiwgcGFyYW1zKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTMz
NjUsNyArMzMxMyw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0VW5pZm9ybWZ2KEdMdWludCBwcm8K
IAogdm9pZCBfX3N0ZGNhbGwgZ2xHZXRVbmlmb3JtaXYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTGludCogcGFyYW1zKQogewotICAgIFRSQUNFKCIoR0x1aW50IHByb2dyYW0gPSAl
ZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwgcHJvZ3Jh
bSwgbG9jYXRpb24sIHBhcmFtcyk7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBH
TGludCBsb2NhdGlvbiA9ICVkLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCBwcm9ncmFtLCBs
b2NhdGlvbiwgcGFyYW1zKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTM0MDQsNyArMzM1Miw3IEBA
IHZvaWQgX19zdGRjYWxsIGdsR2V0VW5pZm9ybWl2KEdMdWludCBwcm8KIAogaW50IF9fc3RkY2Fs
bCBnbEdldFVuaWZvcm1Mb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1l
KQogewotICAgIFRSQUNFKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgY29uc3QgR0xjaGFyKiBuYW1l
ID0gMHglMC44cCkiLCBwcm9ncmFtLCBuYW1lKTsKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFt
ID0gJWQsIGNvbnN0IEdMY2hhciogbmFtZSA9IDB4JTAuOHApIiwgcHJvZ3JhbSwgbmFtZSk7CiAK
ICAgICB0cnkKICAgICB7CkBAIC0zNDQ5LDcgKzMzOTcsNyBAQCBpbnQgX19zdGRjYWxsIGdsR2V0
VW5pZm9ybUxvY2F0aW9uKEdMdWluCiAKIHZvaWQgX19zdGRjYWxsIGdsR2V0VmVydGV4QXR0cmli
ZnYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcykKIHsKLSAgICBU
UkFDRSgiKEdMdWludCBpbmRleCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGZsb2F0KiBw
YXJhbXMgPSAweCUwLjhwKSIsIGluZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICBFVkVOVCgiKEdM
dWludCBpbmRleCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGZsb2F0KiBwYXJhbXMgPSAw
eCUwLjhwKSIsIGluZGV4LCBwbmFtZSwgcGFyYW1zKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTM1
MDIsNyArMzQ1MCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0VmVydGV4QXR0cmliZnYoR0x1aW4K
IAogdm9pZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihHTHVpbnQgaW5kZXgsIEdMZW51
bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKIHsKLSAgICBUUkFDRSgiKEdMdWludCBpbmRleCA9ICVk
LCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCBpbmRleCwg
cG5hbWUsIHBhcmFtcyk7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xlbnVtIHBu
YW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwgaW5kZXgsIHBuYW1lLCBwYXJh
bXMpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMzU1Niw3ICszNTA0LDcgQEAgdm9pZCBfX3N0ZGNh
bGwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihHTHVpbgogCiB2b2lkIF9fc3RkY2FsbCBnbEdldFZlcnRl
eEF0dHJpYlBvaW50ZXJ2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQqKiBwb2lu
dGVyKQogewotICAgIFRSQUNFKCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4
JVgsIEdMdm9pZCoqIHBvaW50ZXIgPSAweCUwLjhwKSIsIGluZGV4LCBwbmFtZSwgcG9pbnRlcik7
CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0x2
b2lkKiogcG9pbnRlciA9IDB4JTAuOHApIiwgaW5kZXgsIHBuYW1lLCBwb2ludGVyKTsKIAogICAg
IHRyeQogICAgIHsKQEAgLTM1ODUsNyArMzUzMyw3IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0VmVy
dGV4QXR0cmliUG9pbnRlcnYKIAogdm9pZCBfX3N0ZGNhbGwgZ2xIaW50KEdMZW51bSB0YXJnZXQs
IEdMZW51bSBtb2RlKQogewotICAgIFRSQUNFKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51
bSBtb2RlID0gMHglWCkiLCB0YXJnZXQsIG1vZGUpOworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdl
dCA9IDB4JVgsIEdMZW51bSBtb2RlID0gMHglWCkiLCB0YXJnZXQsIG1vZGUpOwogCiAgICAgdHJ5
CiAgICAgewpAQCAtMzYyMCw3ICszNTY4LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xIaW50KEdMZW51
bSB0YXJnZXQsIEdMZQogCiBHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNCdWZmZXIoR0x1aW50IGJ1
ZmZlcikKIHsKLSAgICBUUkFDRSgiKEdMdWludCBidWZmZXIgPSAlZCkiLCBidWZmZXIpOworICAg
IEVWRU5UKCIoR0x1aW50IGJ1ZmZlciA9ICVkKSIsIGJ1ZmZlcik7CiAKICAgICB0cnkKICAgICB7
CkBAIC0zNjQ2LDcgKzM1OTQsNyBAQCBHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNCdWZmZXIoR0x1
aW50IGJ1CiAKIEdMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc0VuYWJsZWQoR0xlbnVtIGNhcCkKIHsK
LSAgICBUUkFDRSgiKEdMZW51bSBjYXAgPSAweCVYKSIsIGNhcCk7CisgICAgRVZFTlQoIihHTGVu
dW0gY2FwID0gMHglWCkiLCBjYXApOwogCiAgICAgdHJ5CiAgICAgewpAQCAtMzY4MCw3ICszNjI4
LDcgQEAgR0xib29sZWFuIF9fc3RkY2FsbCBnbElzRW5hYmxlZChHTGVudW0gYwogCiBHTGJvb2xl
YW4gX19zdGRjYWxsIGdsSXNGZW5jZU5WKEdMdWludCBmZW5jZSkKIHsKLSAgICBUUkFDRSgiKEdM
dWludCBmZW5jZSA9ICVkKSIsIGZlbmNlKTsKKyAgICBFVkVOVCgiKEdMdWludCBmZW5jZSA9ICVk
KSIsIGZlbmNlKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTM3MDgsNyArMzY1Niw3IEBAIEdMYm9v
bGVhbiBfX3N0ZGNhbGwgZ2xJc0ZlbmNlTlYoR0x1aW50IGYKIAogR0xib29sZWFuIF9fc3RkY2Fs
bCBnbElzRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQogewotICAgIFRSQUNFKCIoR0x1
aW50IGZyYW1lYnVmZmVyID0gJWQpIiwgZnJhbWVidWZmZXIpOworICAgIEVWRU5UKCIoR0x1aW50
IGZyYW1lYnVmZmVyID0gJWQpIiwgZnJhbWVidWZmZXIpOwogCiAgICAgdHJ5CiAgICAgewpAQCAt
MzczNCw3ICszNjgyLDcgQEAgR0xib29sZWFuIF9fc3RkY2FsbCBnbElzRnJhbWVidWZmZXIoR0x1
aQogCiBHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNQcm9ncmFtKEdMdWludCBwcm9ncmFtKQogewot
ICAgIFRSQUNFKCIoR0x1aW50IHByb2dyYW0gPSAlZCkiLCBwcm9ncmFtKTsKKyAgICBFVkVOVCgi
KEdMdWludCBwcm9ncmFtID0gJWQpIiwgcHJvZ3JhbSk7CiAKICAgICB0cnkKICAgICB7CkBAIC0z
NzYwLDcgKzM3MDgsNyBAQCBHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNQcm9ncmFtKEdMdWludCBw
CiAKIEdMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc1JlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVm
ZmVyKQogewotICAgIFRSQUNFKCIoR0x1aW50IHJlbmRlcmJ1ZmZlciA9ICVkKSIsIHJlbmRlcmJ1
ZmZlcik7CisgICAgRVZFTlQoIihHTHVpbnQgcmVuZGVyYnVmZmVyID0gJWQpIiwgcmVuZGVyYnVm
ZmVyKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTM3ODYsNyArMzczNCw3IEBAIEdMYm9vbGVhbiBf
X3N0ZGNhbGwgZ2xJc1JlbmRlcmJ1ZmZlcihHTHUKIAogR0xib29sZWFuIF9fc3RkY2FsbCBnbElz
U2hhZGVyKEdMdWludCBzaGFkZXIpCiB7Ci0gICAgVFJBQ0UoIihHTHVpbnQgc2hhZGVyID0gJWQp
Iiwgc2hhZGVyKTsKKyAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAlZCkiLCBzaGFkZXIpOwog
CiAgICAgdHJ5CiAgICAgewpAQCAtMzgxMiw3ICszNzYwLDcgQEAgR0xib29sZWFuIF9fc3RkY2Fs
bCBnbElzU2hhZGVyKEdMdWludCBzaAogCiBHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNUZXh0dXJl
KEdMdWludCB0ZXh0dXJlKQogewotICAgIFRSQUNFKCIoR0x1aW50IHRleHR1cmUgPSAlZCkiLCB0
ZXh0dXJlKTsKKyAgICBFVkVOVCgiKEdMdWludCB0ZXh0dXJlID0gJWQpIiwgdGV4dHVyZSk7CiAK
ICAgICB0cnkKICAgICB7CkBAIC0zODM4LDcgKzM3ODYsNyBAQCBHTGJvb2xlYW4gX19zdGRjYWxs
IGdsSXNUZXh0dXJlKEdMdWludCB0CiAKIHZvaWQgX19zdGRjYWxsIGdsTGluZVdpZHRoKEdMZmxv
YXQgd2lkdGgpCiB7Ci0gICAgVFJBQ0UoIihHTGZsb2F0IHdpZHRoID0gJWYpIiwgd2lkdGgpOwor
ICAgIEVWRU5UKCIoR0xmbG9hdCB3aWR0aCA9ICVmKSIsIHdpZHRoKTsKIAogICAgIHRyeQogICAg
IHsKQEAgLTM4NjIsNyArMzgxMCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsTGluZVdpZHRoKEdMZmxv
YXQgd2lkdGgKIAogdm9pZCBfX3N0ZGNhbGwgZ2xMaW5rUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkK
IHsKLSAgICBUUkFDRSgiKEdMdWludCBwcm9ncmFtID0gJWQpIiwgcHJvZ3JhbSk7CisgICAgRVZF
TlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0pOwogCiAgICAgdHJ5CiAgICAgewpA
QCAtMzg5NSw3ICszODQzLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xMaW5rUHJvZ3JhbShHTHVpbnQg
cHJvZwogCiB2b2lkIF9fc3RkY2FsbCBnbFBpeGVsU3RvcmVpKEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pCiB7Ci0gICAgVFJBQ0UoIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCBwYXJhbSA9
ICVkKSIsIHBuYW1lLCBwYXJhbSk7CisgICAgRVZFTlQoIihHTGVudW0gcG5hbWUgPSAweCVYLCBH
TGludCBwYXJhbSA9ICVkKSIsIHBuYW1lLCBwYXJhbSk7CiAKICAgICB0cnkKICAgICB7CkBAIC0z
OTM2LDcgKzM4ODQsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFBpeGVsU3RvcmVpKEdMZW51bSBwbmFt
CiAKIHZvaWQgX19zdGRjYWxsIGdsUG9seWdvbk9mZnNldChHTGZsb2F0IGZhY3RvciwgR0xmbG9h
dCB1bml0cykKIHsKLSAgICBUUkFDRSgiKEdMZmxvYXQgZmFjdG9yID0gJWYsIEdMZmxvYXQgdW5p
dHMgPSAlZikiLCBmYWN0b3IsIHVuaXRzKTsKKyAgICBFVkVOVCgiKEdMZmxvYXQgZmFjdG9yID0g
JWYsIEdMZmxvYXQgdW5pdHMgPSAlZikiLCBmYWN0b3IsIHVuaXRzKTsKIAogICAgIHRyeQogICAg
IHsKQEAgLTM5NTUsNyArMzkwMyw3IEBAIHZvaWQgX19zdGRjYWxsIGdsUG9seWdvbk9mZnNldChH
TGZsb2F0IGYKIAogdm9pZCBfX3N0ZGNhbGwgZ2xSZWFkUGl4ZWxzKEdMaW50IHgsIEdMaW50IHks
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgR0x2b2lkKiBwaXhlbHMpCiB7Ci0gICAgVFJBQ0UoIihHTGludCB4ID0gJWQsIEdMaW50IHkg
PSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAiCisgICAgRVZF
TlQoIihHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNp
emVpIGhlaWdodCA9ICVkLCAiCiAgICAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAweCVYLCBHTGVu
dW0gdHlwZSA9IDB4JVgsIEdMdm9pZCogcGl4ZWxzID0gMHglMC44cCkiLAogICAgICAgICAgIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgIHBpeGVscyk7CiAKQEAgLTQwMTYsNyAr
Mzk2NCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsUmVhZFBpeGVscyhHTGludCB4LCBHTGkKIAogdm9p
ZCBfX3N0ZGNhbGwgZ2xSZWxlYXNlU2hhZGVyQ29tcGlsZXIodm9pZCkKIHsKLSAgICBUUkFDRSgi
KCkiKTsKKyAgICBFVkVOVCgiKCkiKTsKIAogICAgIHRyeQogICAgIHsKQEAgLTQwMzAsNyArMzk3
OCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsUmVsZWFzZVNoYWRlckNvbXBpbGVyKHYKIAogdm9pZCBf
X3N0ZGNhbGwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTGVudW0gdGFy
Z2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgVFJBQ0UoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwg
R0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IDB4JVgsIEdMc2l6
ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLAorICAgIEVWRU5UKCIoR0xlbnVt
IHRhcmdldCA9IDB4JVgsIEdMc2l6ZWkgc2FtcGxlcyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQgPSAweCVYLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQpIiwKICAg
ICAgICAgICB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
IAogICAgIHRyeQpAQCAtNDEwNiw3ICs0MDU0LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlKEdMZQogCiB2b2lkIF9fc3RkY2FsbCBnbFNhbXBsZUNvdmVyYWdlKEdMY2xh
bXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQogewotICAgIFRSQUNFKCIoR0xjbGFtcGYgdmFs
dWUgPSAlZiwgR0xib29sZWFuIGludmVydCA9ICVkKSIsIHZhbHVlLCBpbnZlcnQpOworICAgIEVW
RU5UKCIoR0xjbGFtcGYgdmFsdWUgPSAlZiwgR0xib29sZWFuIGludmVydCA9ICVkKSIsIHZhbHVl
LCBpbnZlcnQpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtNDEyNSw3ICs0MDczLDcgQEAgdm9pZCBf
X3N0ZGNhbGwgZ2xTYW1wbGVDb3ZlcmFnZShHTGNsYW1wZgogCiB2b2lkIF9fc3RkY2FsbCBnbFNl
dEZlbmNlTlYoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKQogewotICAgIFRSQUNFKCIo
R0x1aW50IGZlbmNlID0gJWQsIEdMZW51bSBjb25kaXRpb24gPSAweCVYKSIsIGZlbmNlLCBjb25k
aXRpb24pOworICAgIEVWRU5UKCIoR0x1aW50IGZlbmNlID0gJWQsIEdMZW51bSBjb25kaXRpb24g
PSAweCVYKSIsIGZlbmNlLCBjb25kaXRpb24pOwogCiAgICAgdHJ5CiAgICAgewpAQCAtNDE1Niw3
ICs0MTA0LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xTZXRGZW5jZU5WKEdMdWludCBmZW5jZQogCiB2
b2lkIF9fc3RkY2FsbCBnbFNjaXNzb3IoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgVFJBQ0UoIihHTGludCB4ID0gJWQsIEdMaW50IHkgPSAl
ZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkKSIsIHgsIHksIHdpZHRo
LCBoZWlnaHQpOworICAgIEVWRU5UKCIoR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6
ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKIAogICAgIHRyeQogICAgIHsKQEAgLTQxODAsNyArNDEyOCw3IEBAIHZvaWQgX19zdGRjYWxs
IGdsU2Npc3NvcihHTGludCB4LCBHTGludCAKIAogdm9pZCBfX3N0ZGNhbGwgZ2xTaGFkZXJCaW5h
cnkoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMsIEdMZW51bSBiaW5hcnlmb3JtYXQs
IGNvbnN0IEdMdm9pZCogYmluYXJ5LCBHTHNpemVpIGxlbmd0aCkKIHsKLSAgICBUUkFDRSgiKEdM
c2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMgPSAweCUwLjhwLCBHTGVudW0gYmlu
YXJ5Zm9ybWF0ID0gMHglWCwgIgorICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdM
dWludCogc2hhZGVycyA9IDB4JTAuOHAsIEdMZW51bSBiaW5hcnlmb3JtYXQgPSAweCVYLCAiCiAg
ICAgICAgICAgImNvbnN0IEdMdm9pZCogYmluYXJ5ID0gMHglMC44cCwgR0xzaXplaSBsZW5ndGgg
PSAlZCkiLAogICAgICAgICAgIG4sIHNoYWRlcnMsIGJpbmFyeWZvcm1hdCwgYmluYXJ5LCBsZW5n
dGgpOwogCkBAIC00MTk3LDcgKzQxNDUsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFNoYWRlckJpbmFy
eShHTHNpemVpIG4sCiAKIHZvaWQgX19zdGRjYWxsIGdsU2hhZGVyU291cmNlKEdMdWludCBzaGFk
ZXIsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhcioqIHN0cmluZywgY29uc3QgR0xpbnQqIGxl
bmd0aCkKIHsKLSAgICBUUkFDRSgiKEdMdWludCBzaGFkZXIgPSAlZCwgR0xzaXplaSBjb3VudCA9
ICVkLCBjb25zdCBHTGNoYXIqKiBzdHJpbmcgPSAweCUwLjhwLCBjb25zdCBHTGludCogbGVuZ3Ro
ID0gMHglMC44cCkiLAorICAgIEVWRU5UKCIoR0x1aW50IHNoYWRlciA9ICVkLCBHTHNpemVpIGNv
dW50ID0gJWQsIGNvbnN0IEdMY2hhcioqIHN0cmluZyA9IDB4JTAuOHAsIGNvbnN0IEdMaW50KiBs
ZW5ndGggPSAweCUwLjhwKSIsCiAgICAgICAgICAgc2hhZGVyLCBjb3VudCwgc3RyaW5nLCBsZW5n
dGgpOwogCiAgICAgdHJ5CkBAIC00MjQxLDcgKzQxODksNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFN0
ZW5jaWxGdW5jKEdMZW51bSBmdW5jCiAKIHZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbEZ1bmNTZXBh
cmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCiB7
Ci0gICAgVFJBQ0UoIihHTGVudW0gZmFjZSA9IDB4JVgsIEdMZW51bSBmdW5jID0gMHglWCwgR0xp
bnQgcmVmID0gJWQsIEdMdWludCBtYXNrID0gJWQpIiwgZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsK
KyAgICBFVkVOVCgiKEdMZW51bSBmYWNlID0gMHglWCwgR0xlbnVtIGZ1bmMgPSAweCVYLCBHTGlu
dCByZWYgPSAlZCwgR0x1aW50IG1hc2sgPSAlZCkiLCBmYWNlLCBmdW5jLCByZWYsIG1hc2spOwog
CiAgICAgdHJ5CiAgICAgewpAQCAtNDI5OCw3ICs0MjQ2LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xT
dGVuY2lsTWFzayhHTHVpbnQgbWFzawogCiB2b2lkIF9fc3RkY2FsbCBnbFN0ZW5jaWxNYXNrU2Vw
YXJhdGUoR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKQogewotICAgIFRSQUNFKCIoR0xlbnVtIGZh
Y2UgPSAweCVYLCBHTHVpbnQgbWFzayA9ICVkKSIsIGZhY2UsIG1hc2spOworICAgIEVWRU5UKCIo
R0xlbnVtIGZhY2UgPSAweCVYLCBHTHVpbnQgbWFzayA9ICVkKSIsIGZhY2UsIG1hc2spOwogCiAg
ICAgdHJ5CiAgICAgewpAQCAtNDM0MCw3ICs0Mjg4LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xTdGVu
Y2lsT3AoR0xlbnVtIGZhaWwsIAogCiB2b2lkIF9fc3RkY2FsbCBnbFN0ZW5jaWxPcFNlcGFyYXRl
KEdMZW51bSBmYWNlLCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpCiB7
Ci0gICAgVFJBQ0UoIihHTGVudW0gZmFjZSA9IDB4JVgsIEdMZW51bSBmYWlsID0gMHglWCwgR0xl
bnVtIHpmYWlsID0gMHglWCwgR0xlbnVtIHpwYXMgPSAweCVYcykiLAorICAgIEVWRU5UKCIoR0xl
bnVtIGZhY2UgPSAweCVYLCBHTGVudW0gZmFpbCA9IDB4JVgsIEdMZW51bSB6ZmFpbCA9IDB4JVgs
IEdMZW51bSB6cGFzID0gMHglWHMpIiwKICAgICAgICAgICBmYWNlLCBmYWlsLCB6ZmFpbCwgenBh
c3MpOwogCiAgICAgdHJ5CkBAIC00NDIzLDcgKzQzNzEsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFN0
ZW5jaWxPcFNlcGFyYXRlKEdMZW51CiAKIEdMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xUZXN0RmVuY2VO
VihHTHVpbnQgZmVuY2UpCiB7Ci0gICAgVFJBQ0UoIihHTHVpbnQgZmVuY2UgPSAlZCkiLCBmZW5j
ZSk7CisgICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCkiLCBmZW5jZSk7CiAKICAgICB0cnkK
ICAgICB7CkBAIC00NDUyLDE4ICs0NDAwLDEzIEBAIEdMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xUZXN0
RmVuY2VOVihHTHVpbnQKIHZvaWQgX19zdGRjYWxsIGdsVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKQogewotICAgIFRS
QUNFKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IGludGVy
bmFsZm9ybWF0ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwg
IgorICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdM
aW50IGludGVybmFsZm9ybWF0ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWln
aHQgPSAlZCwgIgogICAgICAgICAgICJHTGludCBib3JkZXIgPSAlZCwgR0xlbnVtIGZvcm1hdCA9
IDB4JVgsIEdMZW51bSB0eXBlID0gMHglWCwgY29uc3QgR0x2b2lkKiBwaXhlbHMgPSAgMHglMC44
cCkiLAogICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKIAogICAgIHRyeQogICAgIHsKLSAg
ICAgICAgaWYgKGxldmVsIDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGxldmVsID4gMCAmJiAoIWdsOjppc1BvdzIod2lkdGgpIHx8ICFnbDo6
aXNQb3cyKGhlaWdodCkpKQorICAgICAgICBpZiAoIXZhbGlkSW1hZ2VTaXplKGxldmVsLCB3aWR0
aCwgaGVpZ2h0KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOwogICAgICAgICB9CkBAIC00NDczLDcgKzQ0MTYsNyBAQCB2b2lkIF9fc3RkY2Fs
bCBnbFRleEltYWdlMkQoR0xlbnVtIHRhcmdlCiAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNoIChpbnRlcm5h
bGZvcm1hdCkKKyAgICAgICAgc3dpdGNoIChmb3JtYXQpCiAgICAgICAgIHsKICAgICAgICAgICBj
YXNlIEdMX0FMUEhBOgogICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgpAQCAtNDU2OCw4ICs0
NTExLDggQEAgdm9pZCBfX3N0ZGNhbGwgZ2xUZXhJbWFnZTJEKEdMZW51bSB0YXJnZQogICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAoaW50ZXJuYWxmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JfUzNU
Q19EWFQxX0VYVCB8fAotICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0ID09IEdMX0NPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKQorICAgICAgICAgICAgaWYgKGZvcm1hdCA9PSBHTF9D
T01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIHx8CisgICAgICAgICAgICAgICAgZm9ybWF0ID09
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlcygpKQogICAg
ICAgICAgICAgICAgIHsKQEAgLTQ2MDUsNyArNDU0OCw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVGV4
SW1hZ2UyRChHTGVudW0gdGFyZ2UKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICB0ZXh0dXJlLT5zZXRJbWFnZShsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7Cisg
ICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0SW1hZ2UobGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CkBAIC00NjE5LDIyICs0
NTYyLDIyIEBAIHZvaWQgX19zdGRjYWxsIGdsVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2UKICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZS0+c2V0SW1hZ2VQb3NYKGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwg
cGl4ZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0SW1hZ2VQb3NYKGxldmVs
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFVucGFja0FsaWdubWVu
dCgpLCBwaXhlbHMpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgotICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlLT5zZXRJbWFnZU5lZ1gobGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFVucGFja0FsaWdubWVudCgpLCBwaXhl
bHMpOworICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRJbWFnZU5lZ1gobGV2ZWwsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCks
IHBpeGVscyk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6Ci0gICAgICAgICAgICAgICAgICAg
IHRleHR1cmUtPnNldEltYWdlUG9zWShsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7
CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnNldEltYWdlUG9zWShsZXZlbCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4
ZWxzKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKLSAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZS0+c2V0SW1hZ2VOZWdZKGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0SW1hZ2VOZWdZKGxldmVsLCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFVucGFja0FsaWdubWVudCgpLCBwaXhlbHMp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJl
LT5zZXRJbWFnZVBvc1oobGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIGNvbnRleHQtPmdldFVucGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRJbWFnZVBvc1oobGV2ZWwsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnNl
dEltYWdlTmVnWihsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7CisgICAgICAgICAg
ICAgICAgICAgIHRleHR1cmUtPnNldEltYWdlTmVnWihsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNI
QUJMRSgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ2NTksNyArNDYwMiw3IEBAIHZvaWQgX19z
dGRjYWxsIGdsVGV4UGFyYW1ldGVyZnYoR0xlbnVtIHQKIAogdm9pZCBfX3N0ZGNhbGwgZ2xUZXhQ
YXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7Ci0g
ICAgVFJBQ0UoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xp
bnQgcGFyYW0gPSAlZCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgRVZFTlQoIihHTGVu
dW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQgcGFyYW0gPSAlZCki
LCB0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CiAKICAgICB0cnkKICAgICB7CkBAIC00NzI2LDcgKzQ2
NjksNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFtZXRlcml2KEdMZW51bSB0CiB2b2lkIF9f
c3RkY2FsbCBnbFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQqIHBpeGVscykKIHsKLSAgICBUUkFDRSgiKEdMZW51bSB0YXJnZXQgPSAw
eCVYLCBHTGludCBsZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQg
PSAlZCwgIgorICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0g
JWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNldCA9ICVkLCAiCiAgICAgICAgICAg
IkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xlbnVtIGZvcm1hdCA9
IDB4JVgsIEdMZW51bSB0eXBlID0gMHglWCwgIgogICAgICAgICAgICJjb25zdCBHTHZvaWQqIHBp
eGVscyA9IDB4JTAuOHApIiwKICAgICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwpAQCAtNDc5Niw3ICs0
NzM5LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xUZXhTdWJJbWFnZTJEKEdMZW51bSB0YQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgIT0gdGV4dHVyZS0+Z2V0
Rm9ybWF0KCkpCisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdCAhPSB0ZXh0dXJlLT5nZXRJbnRl
cm5hbEZvcm1hdCgpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgICAgICAgICB9CkBAIC00
ODEyLDE2ICs0NzU1LDYgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xUZXhTdWJJbWFnZTJEKEdMZW51bSB0
YQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5pc0Nv
bXByZXNzZWQoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgaWYgKGZvcm1hdCAhPSB0ZXh0dXJlLT5nZXRGb3JtYXQoKSkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci0gICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgdGV4dHVyZS0+
c3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKQEAgLTQ4NDMsNyArNDc3Niw3IEBAIHZvaWQg
X19zdGRjYWxsIGdsVW5pZm9ybTFmKEdMaW50IGxvY2F0aW8KIAogdm9pZCBfX3N0ZGNhbGwgZ2xV
bmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2
KQogewotICAgIFRSQUNFKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVk
LCBjb25zdCBHTGZsb2F0KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworICAg
IEVWRU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBH
TGZsb2F0KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOwogCiAgICAgdHJ5CiAg
ICAgewpAQCAtNDg4Nyw3ICs0ODIwLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWkoR0xp
bnQgbG9jYXRpbwogCiB2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm0xaXYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KQogewotICAgIFRSQUNFKCIoR0xpbnQgbG9j
YXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCogdiA9IDB4JTAuOHAp
IiwgbG9jYXRpb24sIGNvdW50LCB2KTsKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQs
IEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9u
LCBjb3VudCwgdik7CiAKICAgICB0cnkKICAgICB7CkBAIC00OTMzLDcgKzQ4NjYsNyBAQCB2b2lk
IF9fc3RkY2FsbCBnbFVuaWZvcm0yZihHTGludCBsb2NhdGlvCiAKIHZvaWQgX19zdGRjYWxsIGds
VW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCog
dikKIHsKLSAgICBUUkFDRSgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAl
ZCwgY29uc3QgR0xmbG9hdCogdiA9IDB4JTAuOHApIiwgbG9jYXRpb24sIGNvdW50LCB2KTsKKyAg
ICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3Qg
R0xmbG9hdCogdiA9IDB4JTAuOHApIiwgbG9jYXRpb24sIGNvdW50LCB2KTsKIAogICAgIHRyeQog
ICAgIHsKQEAgLTQ5NzksNyArNDkxMiw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTJpKEdM
aW50IGxvY2F0aW8KIAogdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMml2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKIHsKLSAgICBUUkFDRSgiKEdMaW50IGxv
Y2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYgPSAweCUwLjhw
KSIsIGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVk
LCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50KiB2ID0gMHglMC44cCkiLCBsb2NhdGlv
biwgY291bnQsIHYpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtNTAyNSw3ICs0OTU4LDcgQEAgdm9p
ZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtM2YoR0xpbnQgbG9jYXRpbwogCiB2b2lkIF9fc3RkY2FsbCBn
bFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQq
IHYpCiB7Ci0gICAgVFJBQ0UoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0g
JWQsIGNvbnN0IEdMZmxvYXQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9uLCBjb3VudCwgdik7Cisg
ICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0
IEdMZmxvYXQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9uLCBjb3VudCwgdik7CiAKICAgICB0cnkK
ICAgICB7CkBAIC01MDcxLDcgKzUwMDQsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm0zaShH
TGludCBsb2NhdGlvCiAKIHZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTNpdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCiB7Ci0gICAgVFJBQ0UoIihHTGludCBs
b2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50KiB2ID0gMHglMC44
cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworICAgIEVWRU5UKCIoR0xpbnQgbG9jYXRpb24gPSAl
ZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCogdiA9IDB4JTAuOHApIiwgbG9jYXRp
b24sIGNvdW50LCB2KTsKIAogICAgIHRyeQogICAgIHsKQEAgLTUxMTcsNyArNTA1MCw3IEBAIHZv
aWQgX19zdGRjYWxsIGdsVW5pZm9ybTRmKEdMaW50IGxvY2F0aW8KIAogdm9pZCBfX3N0ZGNhbGwg
Z2xVbmlmb3JtNGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
KiB2KQogewotICAgIFRSQUNFKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9
ICVkLCBjb25zdCBHTGZsb2F0KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOwor
ICAgIEVWRU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25z
dCBHTGZsb2F0KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOwogCiAgICAgdHJ5
CiAgICAgewpAQCAtNTE2Myw3ICs1MDk2LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtNGko
R0xpbnQgbG9jYXRpbwogCiB2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm00aXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KQogewotICAgIFRSQUNFKCIoR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCogdiA9IDB4JTAu
OHApIiwgbG9jYXRpb24sIGNvdW50LCB2KTsKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYgPSAweCUwLjhwKSIsIGxvY2F0
aW9uLCBjb3VudCwgdik7CiAKICAgICB0cnkKICAgICB7CkBAIC01MjAyLDcgKzUxMzUsNyBAQCB2
b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm00aXYoR0xpbnQgbG9jYXRpCiAKIHZvaWQgX19zdGRjYWxs
IGdsVW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCogdmFsdWUpCiB7Ci0gICAgVFJBQ0UoIihHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Ug
PSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWUgPSAweCUwLjhwKSIsCisgICAgRVZFTlQoIihHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Ug
PSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWUgPSAweCUwLjhwKSIsCiAgICAgICAgICAgbG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIAogICAgIHRyeQpAQCAtNTI0Miw3ICs1MTc1
LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtTWF0cml4MmZ2KEdMaW50IAogCiB2b2lkIF9f
c3RkY2FsbCBnbFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKQogewotICAgIFRSQUNF
KCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJh
bnNwb3NlID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZhbHVlID0gMHglMC44cCkiLAorICAgIEVWRU5U
KCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJh
bnNwb3NlID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZhbHVlID0gMHglMC44cCkiLAogICAgICAgICAg
IGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAKICAgICB0cnkKQEAgLTUyODIs
NyArNTIxNSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybU1hdHJpeDNmdihHTGludCAKIAog
dm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSkKIHsKLSAg
ICBUUkFDRSgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29s
ZWFuIHRyYW5zcG9zZSA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKKyAg
ICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29s
ZWFuIHRyYW5zcG9zZSA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKICAg
ICAgICAgICBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogCiAgICAgdHJ5CkBA
IC01MzIyLDcgKzUyNTUsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm1NYXRyaXg0ZnYoR0xp
bnQgCiAKIHZvaWQgX19zdGRjYWxsIGdsVXNlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKIHsKLSAg
ICBUUkFDRSgiKEdMdWludCBwcm9ncmFtID0gJWQpIiwgcHJvZ3JhbSk7CisgICAgRVZFTlQoIihH
THVpbnQgcHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0pOwogCiAgICAgdHJ5CiAgICAgewpAQCAtNTM2
MCw3ICs1MjkzLDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xVc2VQcm9ncmFtKEdMdWludCBwcm9ncgog
CiB2b2lkIF9fc3RkY2FsbCBnbFZhbGlkYXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKIHsKLSAg
ICBUUkFDRSgiKEdMdWludCBwcm9ncmFtID0gJWQpIiwgcHJvZ3JhbSk7CisgICAgRVZFTlQoIihH
THVpbnQgcHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0pOwogCiAgICAgdHJ5CiAgICAgewpAQCAtNTM5
Myw3ICs1MzI2LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xWYWxpZGF0ZVByb2dyYW0oR0x1aW50IAog
CiB2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYjFmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4
KQogewotICAgIFRSQUNFKCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZmxvYXQgeCA9ICVmKSIsIGlu
ZGV4LCB4KTsKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBHTGZsb2F0IHggPSAlZiki
LCBpbmRleCwgeCk7CiAKICAgICB0cnkKICAgICB7CkBAIC01NDE4LDcgKzUzNTEsNyBAQCB2b2lk
IF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYjFmKEdMdWludCBpCiAKIHZvaWQgX19zdGRjYWxsIGds
VmVydGV4QXR0cmliMWZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKQogewot
ICAgIFRSQUNFKCIoR0x1aW50IGluZGV4ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcyA9IDB4
JTAuOHApIiwgaW5kZXgsIHZhbHVlcyk7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwg
Y29uc3QgR0xmbG9hdCogdmFsdWVzID0gMHglMC44cCkiLCBpbmRleCwgdmFsdWVzKTsKIAogICAg
IHRyeQogICAgIHsKQEAgLTU0NDMsNyArNTM3Niw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVmVydGV4
QXR0cmliMWZ2KEdMdWludCAKIAogdm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIyZihHTHVp
bnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KQogewotICAgIFRSQUNFKCIoR0x1aW50IGlu
ZGV4ID0gJWQsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZikiLCBpbmRleCwgeCwgeSk7
CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQg
eSA9ICVmKSIsIGluZGV4LCB4LCB5KTsKIAogICAgIHRyeQogICAgIHsKQEAgLTU0NjgsNyArNTQw
MSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmliMmYoR0x1aW50IGkKIAogdm9pZCBf
X3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIyZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0KiB2
YWx1ZXMpCiB7Ci0gICAgVFJBQ0UoIihHTHVpbnQgaW5kZXggPSAlZCwgY29uc3QgR0xmbG9hdCog
dmFsdWVzID0gMHglMC44cCkiLCBpbmRleCwgdmFsdWVzKTsKKyAgICBFVkVOVCgiKEdMdWludCBp
bmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMgPSAweCUwLjhwKSIsIGluZGV4LCB2YWx1
ZXMpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtNTQ5Myw3ICs1NDI2LDcgQEAgdm9pZCBfX3N0ZGNh
bGwgZ2xWZXJ0ZXhBdHRyaWIyZnYoR0x1aW50IAogCiB2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0
dHJpYjNmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIHsK
LSAgICBUUkFDRSgiKEdMdWludCBpbmRleCA9ICVkLCBHTGZsb2F0IHggPSAlZiwgR0xmbG9hdCB5
ID0gJWYsIEdMZmxvYXQgeiA9ICVmKSIsIGluZGV4LCB4LCB5LCB6KTsKKyAgICBFVkVOVCgiKEdM
dWludCBpbmRleCA9ICVkLCBHTGZsb2F0IHggPSAlZiwgR0xmbG9hdCB5ID0gJWYsIEdMZmxvYXQg
eiA9ICVmKSIsIGluZGV4LCB4LCB5LCB6KTsKIAogICAgIHRyeQogICAgIHsKQEAgLTU1MTgsNyAr
NTQ1MSw3IEBAIHZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmliM2YoR0x1aW50IGkKIAogdm9p
ZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIzZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0
KiB2YWx1ZXMpCiB7Ci0gICAgVFJBQ0UoIihHTHVpbnQgaW5kZXggPSAlZCwgY29uc3QgR0xmbG9h
dCogdmFsdWVzID0gMHglMC44cCkiLCBpbmRleCwgdmFsdWVzKTsKKyAgICBFVkVOVCgiKEdMdWlu
dCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMgPSAweCUwLjhwKSIsIGluZGV4LCB2
YWx1ZXMpOwogCiAgICAgdHJ5CiAgICAgewpAQCAtNTU0Myw3ICs1NDc2LDcgQEAgdm9pZCBfX3N0
ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIzZnYoR0x1aW50IAogCiB2b2lkIF9fc3RkY2FsbCBnbFZlcnRl
eEF0dHJpYjRmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwg
R0xmbG9hdCB3KQogewotICAgIFRSQUNFKCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZmxvYXQgeCA9
ICVmLCBHTGZsb2F0IHkgPSAlZiwgR0xmbG9hdCB6ID0gJWYsIEdMZmxvYXQgdyA9ICVmKSIsIGlu
ZGV4LCB4LCB5LCB6LCB3KTsKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBHTGZsb2F0
IHggPSAlZiwgR0xmbG9hdCB5ID0gJWYsIEdMZmxvYXQgeiA9ICVmLCBHTGZsb2F0IHcgPSAlZiki
LCBpbmRleCwgeCwgeSwgeiwgdyk7CiAKICAgICB0cnkKICAgICB7CkBAIC01NTY4LDcgKzU1MDEs
NyBAQCB2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYjRmKEdMdWludCBpCiAKIHZvaWQgX19z
dGRjYWxsIGdsVmVydGV4QXR0cmliNGZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFs
dWVzKQogewotICAgIFRSQUNFKCIoR0x1aW50IGluZGV4ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZh
bHVlcyA9IDB4JTAuOHApIiwgaW5kZXgsIHZhbHVlcyk7CisgICAgRVZFTlQoIihHTHVpbnQgaW5k
ZXggPSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWVzID0gMHglMC44cCkiLCBpbmRleCwgdmFsdWVz
KTsKIAogICAgIHRyeQogICAgIHsKQEAgLTU1OTIsNyArNTUyNSw3IEBAIHZvaWQgX19zdGRjYWxs
IGdsVmVydGV4QXR0cmliNGZ2KEdMdWludCAKIAogdm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRy
aWJQb2ludGVyKEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVh
biBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkKiBwdHIpCiB7Ci0gICAg
VFJBQ0UoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xpbnQgc2l6ZSA9ICVkLCBHTGVudW0gdHlwZSA9
IDB4JVgsICIKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBHTGludCBzaXplID0gJWQs
IEdMZW51bSB0eXBlID0gMHglWCwgIgogICAgICAgICAgICJHTGJvb2xlYW4gbm9ybWFsaXplZCA9
ICVkLCBHTHNpemVpIHN0cmlkZSA9ICVkLCBjb25zdCBHTHZvaWQqIHB0ciA9IDB4JTAuOHApIiwK
ICAgICAgICAgICBpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBwdHIpOwog
CkBAIC01NjQxLDcgKzU1NzQsNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYlBvaW50
ZXIoR0x1CiAKIHZvaWQgX19zdGRjYWxsIGdsVmlld3BvcnQoR0xpbnQgeCwgR0xpbnQgeSwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgVFJBQ0UoIihHTGludCB4ID0gJWQs
IEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkKSIs
IHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIEVWRU5UKCIoR0xpbnQgeCA9ICVkLCBHTGludCB5
ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLCB4LCB5LCB3
aWR0aCwgaGVpZ2h0KTsKIAogICAgIHRyeQogICAgIHsKQEAgLTU2NjYsNyArNTU5OSw3IEBAIHZv
aWQgX19zdGRjYWxsIGdsVmlld3BvcnQoR0xpbnQgeCwgR0xpbnQKIHZvaWQgX19zdGRjYWxsIGds
QmxpdEZyYW1lYnVmZmVyQU5HTEUoR0xpbnQgc3JjWDAsIEdMaW50IHNyY1kwLCBHTGludCBzcmNY
MSwgR0xpbnQgc3JjWTEsIEdMaW50IGRzdFgwLCBHTGludCBkc3RZMCwgR0xpbnQgZHN0WDEsIEdM
aW50IGRzdFkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZp
ZWxkIG1hc2ssIEdMZW51bSBmaWx0ZXIpCiB7Ci0gICAgVFJBQ0UoIihHTGludCBzcmNYMCA9ICVk
LCBHTGludCBzcmNZMCA9ICVkLCBHTGludCBzcmNYMSA9ICVkLCBHTGludCBzcmNZMSA9ICVkLCAi
CisgICAgRVZFTlQoIihHTGludCBzcmNYMCA9ICVkLCBHTGludCBzcmNZMCA9ICVkLCBHTGludCBz
cmNYMSA9ICVkLCBHTGludCBzcmNZMSA9ICVkLCAiCiAgICAgICAgICAgIkdMaW50IGRzdFgwID0g
JWQsIEdMaW50IGRzdFkwID0gJWQsIEdMaW50IGRzdFgxID0gJWQsIEdMaW50IGRzdFkxID0gJWQs
ICIKICAgICAgICAgICAiR0xiaXRmaWVsZCBtYXNrID0gMHglWCwgR0xlbnVtIGZpbHRlciA9IDB4
JVgpIiwKICAgICAgICAgICBzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNYMSwgZHN0WDAsIGRzdFkw
LCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CkBAIC01NzE0LDcgKzU2NDcsNyBAQCB2b2lk
IF9fc3RkY2FsbCBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdMCiB2b2lkIF9fc3RkY2FsbCBnbFRl
eEltYWdlM0RPRVMoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpCiB7Ci0gICAgVFJBQ0UoIihHTGVudW0g
dGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0g
MHglWCwgIgorICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0g
JWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IDB4JVgsICIKICAgICAgICAgICAiR0xzaXplaSB3
aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsIEdMaW50
IGJvcmRlciA9ICVkLCAiCiAgICAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAweCVYLCBHTGVudW0g
dHlwZSA9IDB4JXgsIGNvbnN0IEdMdm9pZCogcGl4ZWxzID0gMHglMC44cCkiLAogICAgICAgICAg
IHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CkBAIC01NzYyLDQgKzU2OTUsMjkgQEAgX19lZ2xN
dXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZQogICAgIHJldHVybiBOVUxMOwogfQog
Cit2b2lkIF9fc3RkY2FsbCBnbEJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCit7
CisgICAgRVZFTlQoIihlZ2w6OlN1cmZhY2UqIHN1cmZhY2UgPSAweCUwLjhwKSIsCisgICAgICAg
ICAgc3VyZmFjZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgZ2w6OlRleHR1cmUyRCAqdGV4dHVyZU9iamVjdCA9IGNvbnRleHQtPmdl
dFRleHR1cmUyRCgpOworCisgICAgICAgICAgICBpZiAodGV4dHVyZU9iamVjdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlT2JqZWN0LT5iaW5kVGV4SW1hZ2Uoc3VyZmFj
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgIH0KK30KKwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9saWJHTEVTdjIuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYJKHdvcmtpbmcgY29weSkK
QEAgLTE2MCw0ICsxNjAsNSBAQCBFWFBPUlRTCiAgICAgZ2xEZXN0cm95Q29udGV4dCAgICAgICAg
ICAgICAgICBAMTQ1IE5PTkFNRQogICAgIGdsTWFrZUN1cnJlbnQgICAgICAgICAgICAgICAgICAg
QDE0NiBOT05BTUUKICAgICBnbEdldEN1cnJlbnRDb250ZXh0ICAgICAgICAgICAgIEAxNDcgTk9O
QU1FCi0gICAgZ2xHZXRQcm9jQWRkcmVzcyAgICAgICAgICAgICAgICBAMTQ4IE5PTkFNRQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICBnbEdldFByb2NBZGRyZXNzICAgICAgICAgICAg
ICAgIEAxNDggTk9OQU1FCisgICAgZ2xCaW5kVGV4SW1hZ2UgICAgICAgICAgICAgICAgICBAMTU4
IE5PTkFNRQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJH
TEVTdjIucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9saWJHTEVTdjIucmMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDIg
QEAKKy8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCByZXNvdXJjZSBzY3JpcHQuCisv
LworI2luY2x1ZGUgInJlc291cmNlLmgiCisKKyNkZWZpbmUgQVBTVFVESU9fUkVBRE9OTFlfU1lN
Qk9MUworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVY
VElOQ0xVREUgMiByZXNvdXJjZS4KKy8vCisjaW5jbHVkZSAiYWZ4cmVzLmgiCisjaW5jbHVkZSAi
Li4vY29tbW9uL3ZlcnNpb24uaCIKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyN1bmRlZiBBUFNU
VURJT19SRUFET05MWV9TWU1CT0xTCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBFbmdsaXNo
IChVLlMuKSByZXNvdXJjZXMKKworI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRl
ZmluZWQoQUZYX1RBUkdfRU5VKQorI2lmZGVmIF9XSU4zMgorTEFOR1VBR0UgTEFOR19FTkdMSVNI
LCBTVUJMQU5HX0VOR0xJU0hfVVMKKyNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCisjZW5kaWYgLy9f
V0lOMzIKKworI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisv
LworLy8gVEVYVElOQ0xVREUKKy8vCisKKzEgVEVYVElOQ0xVREUgCitCRUdJTgorICAgICJyZXNv
dXJjZS5oXDAiCitFTkQKKworMiBURVhUSU5DTFVERSAKK0JFR0lOCisgICAgIiNpbmNsdWRlICIi
YWZ4cmVzLmgiIlxyXG4iCisgICAgIiNpbmNsdWRlICIiLi4vY29tbW9uL3ZlcnNpb24uaCIiXDAi
CitFTkQKKworMyBURVhUSU5DTFVERSAKK0JFR0lOCisgICAgIlxyXG4iCisgICAgIlwwIgorRU5E
CisKKyNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VECisKKworLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KKy8vCisvLyBWZXJzaW9uCisvLworCitWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KKyBG
SUxFVkVSU0lPTiBNQUpPUl9WRVJTSU9OLE1JTk9SX1ZFUlNJT04sQlVJTERfVkVSU0lPTixCVUlM
RF9SRVZJU0lPTgorIFBST0RVQ1RWRVJTSU9OIE1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixC
VUlMRF9WRVJTSU9OLEJVSUxEX1JFVklTSU9OCisgRklMRUZMQUdTTUFTSyAweDE3TAorI2lmZGVm
IF9ERUJVRworIEZJTEVGTEFHUyAweDFMCisjZWxzZQorIEZJTEVGTEFHUyAweDBMCisjZW5kaWYK
KyBGSUxFT1MgMHg0TAorIEZJTEVUWVBFIDB4MkwKKyBGSUxFU1VCVFlQRSAweDBMCitCRUdJTgor
ICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBCTE9DSyAiMDQw
OTA0YjAiCisgICAgICAgIEJFR0lOCisgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9u
IiwgIkFOR0xFIGxpYkdMRVN2MiBEeW5hbWljIExpbmsgTGlicmFyeSIKKyAgICAgICAgICAgIFZB
TFVFICJGaWxlVmVyc2lvbiIsIFZFUlNJT05fU1RSSU5HCisgICAgICAgICAgICBWQUxVRSAiSW50
ZXJuYWxOYW1lIiwgImxpYkdMRVN2MiIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdo
dCIsICJDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4iCisgICAgICAgICAgICBWQUxVRSAi
T3JpZ2luYWxGaWxlbmFtZSIsICJsaWJHTEVTdjIuZGxsIgorICAgICAgICAgICAgVkFMVUUgIlBy
aXZhdGVCdWlsZCIsIFZFUlNJT05fU1RSSU5HCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5h
bWUiLCAiQU5HTEUgbGliR0xFU3YyIER5bmFtaWMgTGluayBMaWJyYXJ5IgorICAgICAgICAgICAg
VkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgVkVSU0lPTl9TVFJJTkcKKyAgICAgICAgRU5ECisgICAg
RU5ECisgICAgQkxPQ0sgIlZhckZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIFZBTFVFICJU
cmFuc2xhdGlvbiIsIDB4NDA5LCAxMjAwCisgICAgRU5ECitFTkQKKworI2VuZGlmICAgIC8vIEVu
Z2xpc2ggKFUuUy4pIHJlc291cmNlcworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworCisKKyNpZm5k
ZWYgQVBTVFVESU9fSU5WT0tFRAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBHZW5lcmF0
ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMyByZXNvdXJjZS4KKy8vCisKKworLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KKyNlbmRpZiAgICAvLyBub3QgQVBTVFVESU9fSU5WT0tFRApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZj
cHJvagkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2xpYkdMRVN2Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAK
IAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlBZGRpdGlvbmFs
RGVwZW5kZW5jaWVzPSJEM2R4OS5saWIiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZDNk
OS5saWIgRDNkeDkubGliIGQzZGNvbXBpbGVyLmxpYiIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjIi
CiAJCQkJTW9kdWxlRGVmaW5pdGlvbkZpbGU9ImxpYkdMRVN2Mi5kZWYiCiAJCQkJR2VuZXJhdGVE
ZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMTQwLDcgKzE0MCw3IEBACiAJCQkvPgogCQkJPFRv
b2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0i
RDNkeDkubGliIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImQzZDkubGliIEQzZHg5Lmxp
YiBkM2Rjb21waWxlci5saWIiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUlnbm9yZUFs
bERlZmF1bHRMaWJyYXJpZXM9ImZhbHNlIgogCQkJCU1vZHVsZURlZmluaXRpb25GaWxlPSJsaWJH
TEVTdjIuZGVmIgpAQCAtMjA5LDYgKzIwOSwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuXEhhbmRsZUFsbG9jYXRvci5jcHAiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii5cSW5kZXhEYXRhTWFuYWdlci5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii5cbGli
R0xFU3YyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0yNDQsMTggKzI1MiwxMCBAQAogCQkJ
CVJlbGF0aXZlUGF0aD0iLlx1dGlsaXRpZXMuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KLQkJCTxG
aWx0ZXIKLQkJCQlOYW1lPSJHZW9tZXRyeSIKKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
XFZlcnRleERhdGFNYW5hZ2VyLmNwcCIKIAkJCQk+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQ
YXRoPSIuXGdlb21ldHJ5XEluZGV4RGF0YU1hbmFnZXIuY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxl
PgotCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLlxnZW9tZXRyeVxWZXJ0ZXhEYXRhTWFu
YWdlci5jcHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQk8L0ZpbHRlcj4KKwkJCTwvRmlsZT4K
IAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyIKQEAgLTI5NSw2
ICsyOTUsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLlxIYW5kbGVBbGxvY2F0b3IuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLlxJbmRleERhdGFNYW5hZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii5cbWFpbi5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
QEAgLTMxNSw2ICszMjMsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLlxyZXNvdXJjZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuXFJlc291cmNlTWFuYWdlci5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
QEAgLTMzMCwyNyArMzQyLDI3IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuXHV0aWxpdGllcy5oIgog
CQkJCT4KIAkJCTwvRmlsZT4KLQkJCTxGaWx0ZXIKLQkJCQlOYW1lPSJHZW9tZXRyeSIKKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjb21tb25cdmVyc2lvbi5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuXHZlcnRleGNvbnZlcnNpb24uaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLlxWZXJ0ZXhE
YXRhTWFuYWdlci5oIgogCQkJCT4KLQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii5cZ2Vv
bWV0cnlcSW5kZXhEYXRhTWFuYWdlci5oIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxl
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLlxnZW9tZXRyeVx2ZXJ0ZXhjb252ZXJzaW9uLmgiCi0JCQkJ
CT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuXGdlb21ldHJ5
XFZlcnRleERhdGFNYW5hZ2VyLmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQk8L0ZpbHRlcj4K
KwkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii5cbGli
R0xFU3YyLmRlZiIKIAkJCT4KIAkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIu
XGxpYkdMRVN2Mi5yYyIKKwkJCT4KKwkJPC9GaWxlPgogCTwvRmlsZXM+CiAJPEdsb2JhbHM+CiAJ
PC9HbG9iYWxzPgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9t
YWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL21haW4uY3BwCShyZXZpc2lvbiA4OTI4NikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvbWFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSwyMyArMTE5LDIz
IEBAIHZvaWQgZXJyb3IoR0xlbnVtIGVycm9yQ29kZSkKICAgICAgICAgewogICAgICAgICAgIGNh
c2UgR0xfSU5WQUxJRF9FTlVNOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkSW52YWxpZEVu
dW0oKTsKLSAgICAgICAgICAgIGdsOjp0cmFjZSgiXHQhIEVycm9yIGdlbmVyYXRlZDogaW52YWxp
ZCBlbnVtXG4iKTsKKyAgICAgICAgICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBpbnZh
bGlkIGVudW1cbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9JTlZB
TElEX1ZBTFVFOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkSW52YWxpZFZhbHVlKCk7Ci0g
ICAgICAgICAgICBnbDo6dHJhY2UoIlx0ISBFcnJvciBnZW5lcmF0ZWQ6IGludmFsaWQgdmFsdWVc
biIpOworICAgICAgICAgICAgVFJBQ0UoIlx0ISBFcnJvciBnZW5lcmF0ZWQ6IGludmFsaWQgdmFs
dWVcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9JTlZBTElEX09Q
RVJBVElPTjoKICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEludmFsaWRPcGVyYXRpb24oKTsK
LSAgICAgICAgICAgIGdsOjp0cmFjZSgiXHQhIEVycm9yIGdlbmVyYXRlZDogaW52YWxpZCBvcGVy
YXRpb25cbiIpOworICAgICAgICAgICAgVFJBQ0UoIlx0ISBFcnJvciBnZW5lcmF0ZWQ6IGludmFs
aWQgb3BlcmF0aW9uXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xf
T1VUX09GX01FTU9SWToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZE91dE9mTWVtb3J5KCk7
Ci0gICAgICAgICAgICBnbDo6dHJhY2UoIlx0ISBFcnJvciBnZW5lcmF0ZWQ6IG91dCBvZiBtZW1v
cnlcbiIpOworICAgICAgICAgICAgVFJBQ0UoIlx0ISBFcnJvciBnZW5lcmF0ZWQ6IG91dCBvZiBt
ZW1vcnlcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9JTlZBTElE
X0ZSQU1FQlVGRkVSX09QRVJBVElPTjoKICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEludmFs
aWRGcmFtZWJ1ZmZlck9wZXJhdGlvbigpOwotICAgICAgICAgICAgZ2w6OnRyYWNlKCJcdCEgRXJy
b3IgZ2VuZXJhdGVkOiBpbnZhbGlkIGZyYW1lYnVmZmVyIG9wZXJhdGlvblxuIik7CisgICAgICAg
ICAgICBUUkFDRSgiXHQhIEVycm9yIGdlbmVyYXRlZDogaW52YWxpZCBmcmFtZWJ1ZmZlciBvcGVy
YXRpb25cbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9tYXRodXRpbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvbWF0aHV0aWwuaAkocmV2aXNpb24gODkyODYpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21hdGh1dGlsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTksNyArOSw5IEBACiAjaWZuZGVmIExJQkdMRVNWMl9NQVRIVVRJTF9IXwogI2RlZmluZSBMSUJH
TEVTVjJfTUFUSFVUSUxfSF8KIAorI2luY2x1ZGUgPGludHJpbi5oPgogI2luY2x1ZGUgPG1hdGgu
aD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKIG5hbWVzcGFjZSBnbAogewpAQCAtMzgsOSArNDAs
MTUgQEAgaW5saW5lIHVuc2lnbmVkIGludCBjZWlsUG93Mih1bnNpZ25lZCBpbgogICAgIHJldHVy
biB4OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNSU4sIHR5cGVuYW1lIE1B
WD4KK2lubGluZSBUIGNsYW1wKFQgeCwgTUlOIG1pbiwgTUFYIG1heCkKK3sKKyAgICByZXR1cm4g
eCA8IG1pbiA/IG1pbiA6ICh4ID4gbWF4ID8gbWF4IDogeCk7Cit9CisKIGlubGluZSBmbG9hdCBj
bGFtcDAxKGZsb2F0IHgpCiB7Ci0gICAgcmV0dXJuIHggPCAwID8gMCA6ICh4ID4gMSA/IDEgOiB4
KTsKKyAgICByZXR1cm4gY2xhbXAoeCwgMC4wZiwgMS4wZik7CiB9CiAKIHRlbXBsYXRlPGNvbnN0
IGludCBuPgpAQCAtNjEsNiArNjksNTEgQEAgaW5saW5lIHVuc2lnbmVkIGludCB1bm9ybShmbG9h
dCB4KQogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGludCkobWF4ICogeCArIDAuNWYpOwogICAg
IH0KIH0KKworaW5saW5lIFJFQ1QgdHJhbnNmb3JtUGl4ZWxSZWN0KEdMaW50IHgsIEdMaW50IHks
IEdMaW50IHcsIEdMaW50IGgsIEdMaW50IHN1cmZhY2VIZWlnaHQpCit7CisgICAgUkVDVCByZWN0
ID0ge3gsCisgICAgICAgICAgICAgICAgIHN1cmZhY2VIZWlnaHQgLSB5IC0gaCwKKyAgICAgICAg
ICAgICAgICAgeCArIHcsCisgICAgICAgICAgICAgICAgIHN1cmZhY2VIZWlnaHQgLSB5fTsKKyAg
ICByZXR1cm4gcmVjdDsKK30KKworaW5saW5lIGludCB0cmFuc2Zvcm1QaXhlbFlPZmZzZXQoR0xp
bnQgeW9mZnNldCwgR0xpbnQgaCwgR0xpbnQgc3VyZmFjZUhlaWdodCkKK3sKKyAgICByZXR1cm4g
c3VyZmFjZUhlaWdodCAtIHlvZmZzZXQgLSBoOworfQorCitpbmxpbmUgR0xlbnVtIGFkanVzdFdp
bmRpbmcoR0xlbnVtIHdpbmRpbmcpCit7CisgICAgQVNTRVJUKHdpbmRpbmcgPT0gR0xfQ1cgfHwg
d2luZGluZyA9PSBHTF9DQ1cpOworICAgIHJldHVybiB3aW5kaW5nID09IEdMX0NXID8gR0xfQ0NX
IDogR0xfQ1c7Cit9CisKK2lubGluZSBib29sIHN1cHBvcnRzU1NFMigpCit7CisgICAgc3RhdGlj
IGJvb2wgY2hlY2tlZCA9IGZhbHNlOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzID0gZmFsc2U7
CisKKyAgICBpZiAoY2hlY2tlZCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdXBwb3J0czsKKyAg
ICB9CisKKyAgICBpbnQgaW5mb1s0XTsKKyAgICBfX2NwdWlkKGluZm8sIDApOworICAgIAorICAg
IGlmIChpbmZvWzBdID49IDEpCisgICAgeworICAgICAgICBfX2NwdWlkKGluZm8sIDEpOworCisg
ICAgICAgIHN1cHBvcnRzID0gKGluZm9bM10gPj4gMjYpICYgMTsKKyAgICB9CisKKyAgICBjaGVj
a2VkID0gdHJ1ZTsKKworICAgIHJldHVybiBzdXBwb3J0czsKK30KIH0KIAogI2VuZGlmICAgLy8g
TElCR0xFU1YyX01BVEhVVElMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3Jlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZXNvdXJjZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZXNvdXJjZS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE0IEBACisvL3t7Tk9fREVQRU5ERU5DSUVTfX0KKy8vIE1pY3Jvc29mdCBWaXN1YWwgQysr
IGdlbmVyYXRlZCBpbmNsdWRlIGZpbGUuCisvLyBVc2VkIGJ5IGxpYkdMRVN2Mi5yYworCisvLyBO
ZXh0IGRlZmF1bHQgdmFsdWVzIGZvciBuZXcgb2JqZWN0cworLy8gCisjaWZkZWYgQVBTVFVESU9f
SU5WT0tFRAorI2lmbmRlZiBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCisjZGVmaW5lIF9BUFNf
TkVYVF9SRVNPVVJDRV9WQUxVRSAgICAgICAgMTAxCisjZGVmaW5lIF9BUFNfTkVYVF9DT01NQU5E
X1ZBTFVFICAgICAgICAgNDAwMDEKKyNkZWZpbmUgX0FQU19ORVhUX0NPTlRST0xfVkFMVUUgICAg
ICAgICAxMDAxCisjZGVmaW5lIF9BUFNfTkVYVF9TWU1FRF9WQUxVRSAgICAgICAgICAgMTAxCisj
ZW5kaWYKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZXNvdXJjZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
dXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3V0aWxpdGllcy5jcHAJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05LDYgKzksOCBAQAogI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKIAogI2luY2x1
ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAog
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCkBAIC0xODksMTggKzE5MSw3IEBAIEdMc2l6ZWkg
Q29tcHV0ZVBpdGNoKEdMc2l6ZWkgd2lkdGgsIEdMZW4KIAogR0xzaXplaSBDb21wdXRlQ29tcHJl
c3NlZFBpdGNoKEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQpCiB7Ci0gICAgc3dpdGNoIChm
b3JtYXQpCi0gICAgewotICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
OgotICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBB
U1NFUlQod2lkdGggJSA0ID09IDApOwotCi0gICAgcmV0dXJuIDggKiB3aWR0aCAvIDQ7CisgICAg
cmV0dXJuIENvbXB1dGVDb21wcmVzc2VkU2l6ZSh3aWR0aCwgMSwgZm9ybWF0KTsKIH0KIAogR0xz
aXplaSBDb21wdXRlQ29tcHJlc3NlZFNpemUoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMZW51bSBmb3JtYXQpCkBAIC01MjgsNiArNTE5LDM5IEBAIEQzRENVTEwgQ29udmVydEN1bGxN
b2RlKEdMZW51bSBjdWxsRmFjZSwKICAgICByZXR1cm4gY3VsbDsKIH0KIAorRDNEQ1VCRU1BUF9G
QUNFUyBDb252ZXJ0Q3ViZUZhY2UoR0xlbnVtIGN1YmVGYWNlKQoreworICAgIEQzRENVQkVNQVBf
RkFDRVMgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9QT1NJVElWRV9YOworCisgICAgLy8gTWFwIGEg
Y3ViZSBtYXAgdGV4dHVyZSB0YXJnZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgIEQzRCBzdXJmYWNl
IGluZGV4LiBOb3RlIHRoYXQgdGhlCisgICAgLy8gWSBmYWNlcyBhcmUgc3dhcHBlZCBiZWNhdXNl
IHRoZSBZIGNvb3JkaW5hdGUgdG8gdGhlIHRleHR1cmUgbG9va3VwIGludHJpbnNpYyBmdW5jdGlv
bnMKKyAgICAvLyBhcmUgbmVnYXRlZCBpbiB0aGUgcGl4ZWwgc2hhZGVyLgorICAgIHN3aXRjaCAo
Y3ViZUZhY2UpCisgICAgeworICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1g6CisgICAgICAgIGZhY2UgPSBEM0RDVUJFTUFQX0ZBQ0VfUE9TSVRJVkVfWDsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKKyAgICAg
ICAgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9ORUdBVElWRV9YOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgorICAgICAgICBmYWNlID0g
RDNEQ1VCRU1BUF9GQUNFX05FR0FUSVZFX1k7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAgICAgIGZhY2UgPSBEM0RDVUJFTUFQ
X0ZBQ0VfUE9TSVRJVkVfWTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWjoKKyAgICAgICAgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9QT1NJ
VElWRV9aOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9aOgorICAgICAgICBmYWNlID0gRDNEQ1VCRU1BUF9GQUNFX05FR0FUSVZFX1o7Cisg
ICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZmFjZTsKK30KKwogRFdPUkQgQ29udmVydENvbG9yTWFzayhib29sIHJlZCwgYm9v
bCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQogewogICAgIHJldHVybiAocmVkICAgPyBE
M0RDT0xPUldSSVRFRU5BQkxFX1JFRCAgIDogMCkgfApAQCAtNTg0LDYgKzYwOCw3NSBAQCB2b2lk
IENvbnZlcnRNaW5GaWx0ZXIoR0xlbnVtIG1pbkZpbHRlciwgCiAgICAgfQogfQogCitib29sIENv
bnZlcnRQcmltaXRpdmVUeXBlKEdMZW51bSBwcmltaXRpdmVUeXBlLCBHTHNpemVpIGVsZW1lbnRD
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUFJJTUlUSVZFVFlQRSAqZDNkUHJp
bWl0aXZlVHlwZSwgaW50ICpkM2RQcmltaXRpdmVDb3VudCkKK3sKKyAgICBzd2l0Y2ggKHByaW1p
dGl2ZVR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9QT0lOVFM6CisgICAgICAgICpkM2RQcmlt
aXRpdmVUeXBlID0gRDNEUFRfUE9JTlRMSVNUOworICAgICAgICAqZDNkUHJpbWl0aXZlQ291bnQg
PSBlbGVtZW50Q291bnQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MSU5FUzoKKyAg
ICAgICAgKmQzZFByaW1pdGl2ZVR5cGUgPSBEM0RQVF9MSU5FTElTVDsKKyAgICAgICAgKmQzZFBy
aW1pdGl2ZUNvdW50ID0gZWxlbWVudENvdW50IC8gMjsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0xJTkVfTE9PUDoKKyAgICAgICAgKmQzZFByaW1pdGl2ZVR5cGUgPSBEM0RQVF9MSU5F
U1RSSVA7CisgICAgICAgICpkM2RQcmltaXRpdmVDb3VudCA9IGVsZW1lbnRDb3VudCAtIDE7ICAg
Ly8gRDNEIGRvZXNuJ3Qgc3VwcG9ydCBsaW5lIGxvb3BzLCBzbyB3ZSBkcmF3IHRoZSBsYXN0IGxp
bmUgc2VwYXJhdGVseQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTElORV9TVFJJUDoK
KyAgICAgICAgKmQzZFByaW1pdGl2ZVR5cGUgPSBEM0RQVF9MSU5FU1RSSVA7CisgICAgICAgICpk
M2RQcmltaXRpdmVDb3VudCA9IGVsZW1lbnRDb3VudCAtIDE7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9UUklBTkdMRVM6CisgICAgICAgICpkM2RQcmltaXRpdmVUeXBlID0gRDNEUFRf
VFJJQU5HTEVMSVNUOworICAgICAgICAqZDNkUHJpbWl0aXZlQ291bnQgPSBlbGVtZW50Q291bnQg
LyAzOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVFJJQU5HTEVfU1RSSVA6CisgICAg
ICAgICpkM2RQcmltaXRpdmVUeXBlID0gRDNEUFRfVFJJQU5HTEVTVFJJUDsKKyAgICAgICAgKmQz
ZFByaW1pdGl2ZUNvdW50ID0gZWxlbWVudENvdW50IC0gMjsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX1RSSUFOR0xFX0ZBTjoKKyAgICAgICAgKmQzZFByaW1pdGl2ZVR5cGUgPSBEM0RQ
VF9UUklBTkdMRUZBTjsKKyAgICAgICAgKmQzZFByaW1pdGl2ZUNvdW50ID0gZWxlbWVudENvdW50
IC0gMjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0QzREZPUk1BVCBDb252ZXJ0UmVu
ZGVyYnVmZmVyRm9ybWF0KEdMZW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisg
ICAgeworICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAg
IGNhc2UgR0xfUkdCQThfT0VTOiAgICAgICAgICAgIHJldHVybiBEM0RGTVRfQThSOEc4Qjg7Cisg
ICAgICBjYXNlIEdMX1JHQjU2NTogICAgICAgICAgICAgICByZXR1cm4gRDNERk1UX1I1RzZCNTsK
KyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6ICAgICAgICAgICAgIHJldHVybiBEM0RGTVRfWDhSOEc4
Qjg7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgorICAgICAgY2FzZSBHTF9TVEVO
Q0lMX0lOREVYODogICAgICAgCisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOiBy
ZXR1cm4gRDNERk1UX0QyNFM4OworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICAg
cmV0dXJuIEQzREZNVF9BOFI4RzhCODsKKyAgICB9Cit9CisKK0QzRE1VTFRJU0FNUExFX1RZUEUg
R2V0TXVsdGlzYW1wbGVUeXBlRnJvbVNhbXBsZXMoR0xzaXplaSBzYW1wbGVzKQoreworICAgIGlm
IChzYW1wbGVzIDw9IDEpCisgICAgICAgIHJldHVybiBEM0RNVUxUSVNBTVBMRV9OT05FOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIChEM0RNVUxUSVNBTVBMRV9UWVBFKXNhbXBsZXM7Cit9CisK
K30KKworbmFtZXNwYWNlIGR4MmVzCit7CisKIHVuc2lnbmVkIGludCBHZXRTdGVuY2lsU2l6ZShE
M0RGT1JNQVQgc3RlbmNpbEZvcm1hdCkKIHsKICAgICBzd2l0Y2goc3RlbmNpbEZvcm1hdCkKQEAg
LTYwMSwxMSArNjk0LDExIEBAIHVuc2lnbmVkIGludCBHZXRTdGVuY2lsU2l6ZShEM0RGT1JNQVQg
c3QKICAgICAgIGNhc2UgRDNERk1UX0QzMkZfTE9DS0FCTEU6CiAgICAgICBjYXNlIEQzREZNVF9E
MTY6CiAgICAgICAgIHJldHVybiAwOwotLy8gICAgICBjYXNlIEQzREZNVF9EMzJfTE9DS0FCTEU6
ICByZXR1cm4gMDsgICAvLyBEaXJlY3RYIDlFeCBvbmx5Ci0vLyAgICAgIGNhc2UgRDNERk1UX1M4
X0xPQ0tBQkxFOiAgIHJldHVybiA4OyAgIC8vIERpcmVjdFggOUV4IG9ubHkKLSAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgLy9jYXNlIEQzREZNVF9EMzJfTE9DS0FCTEU6ICByZXR1
cm4gMDsgICAvLyBEaXJlY3RYIDlFeCBvbmx5CisgICAgLy9jYXNlIEQzREZNVF9TOF9MT0NLQUJM
RTogICByZXR1cm4gODsgICAvLyBEaXJlY3RYIDlFeCBvbmx5CisgICAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHVuc2lnbmVkIGludCBH
ZXRBbHBoYVNpemUoRDNERk9STUFUIGNvbG9yRm9ybWF0KQpAQCAtNjI1LDkgKzcxOCw5IEBAIHVu
c2lnbmVkIGludCBHZXRBbHBoYVNpemUoRDNERk9STUFUIGNvbG8KICAgICAgIGNhc2UgRDNERk1U
X1g4UjhHOEI4OgogICAgICAgY2FzZSBEM0RGTVRfUjVHNkI1OgogICAgICAgICByZXR1cm4gMDsK
LSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHVuc2lnbmVkIGludCBHZXRSZWRT
aXplKEQzREZPUk1BVCBjb2xvckZvcm1hdCkKQEAgLTY0Niw5ICs3MzksOSBAQCB1bnNpZ25lZCBp
bnQgR2V0UmVkU2l6ZShEM0RGT1JNQVQgY29sb3JGCiAgICAgICBjYXNlIEQzREZNVF9BMVI1RzVC
NToKICAgICAgIGNhc2UgRDNERk1UX1I1RzZCNToKICAgICAgICAgcmV0dXJuIDU7Ci0gICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQotICAgIHJldHVybiAwOwogfQogCiB1bnNpZ25lZCBpbnQgR2V0R3JlZW5TaXplKEQz
REZPUk1BVCBjb2xvckZvcm1hdCkKQEAgLTY2OCw5ICs3NjEsOSBAQCB1bnNpZ25lZCBpbnQgR2V0
R3JlZW5TaXplKEQzREZPUk1BVCBjb2xvCiAgICAgICAgIHJldHVybiA1OwogICAgICAgY2FzZSBE
M0RGTVRfUjVHNkI1OgogICAgICAgICByZXR1cm4gNjsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0
dXJuIDA7CiB9CiAKIHVuc2lnbmVkIGludCBHZXRCbHVlU2l6ZShEM0RGT1JNQVQgY29sb3JGb3Jt
YXQpCkBAIC02ODksOSArNzgyLDkgQEAgdW5zaWduZWQgaW50IEdldEJsdWVTaXplKEQzREZPUk1B
VCBjb2xvcgogICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6CiAgICAgICBjYXNlIEQzREZNVF9S
NUc2QjU6CiAgICAgICAgIHJldHVybiA1OwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXR1cm4gMDsK
IH0KIAogdW5zaWduZWQgaW50IEdldERlcHRoU2l6ZShEM0RGT1JNQVQgZGVwdGhGb3JtYXQpCkBA
IC03MDksNjUgKzgwMiw3IEBAIHVuc2lnbmVkIGludCBHZXREZXB0aFNpemUoRDNERk9STUFUIGRl
cHQKICAgICAgIGNhc2UgRDNERk1UX0QyNEZTODogICAgICAgIHJldHVybiAyNDsKICAgICAvL2Nh
c2UgRDNERk1UX0QzMl9MT0NLQUJMRTogIHJldHVybiAzMjsgICAvLyBEM0Q5RXggb25seQogICAg
IC8vY2FzZSBEM0RGTVRfUzhfTE9DS0FCTEU6ICAgcmV0dXJuIDA7ICAgIC8vIEQzRDlFeCBvbmx5
Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgIH0KLSAgICByZXR1
cm4gMDsKLX0KLQotYm9vbCBDb252ZXJ0UHJpbWl0aXZlVHlwZShHTGVudW0gcHJpbWl0aXZlVHlw
ZSwgR0xzaXplaSBlbGVtZW50Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFBS
SU1JVElWRVRZUEUgKmQzZFByaW1pdGl2ZVR5cGUsIGludCAqZDNkUHJpbWl0aXZlQ291bnQpCi17
Ci0gICAgc3dpdGNoIChwcmltaXRpdmVUeXBlKQotICAgIHsKLSAgICAgIGNhc2UgR0xfUE9JTlRT
OgotICAgICAgICAqZDNkUHJpbWl0aXZlVHlwZSA9IEQzRFBUX1BPSU5UTElTVDsKLSAgICAgICAg
KmQzZFByaW1pdGl2ZUNvdW50ID0gZWxlbWVudENvdW50OwotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgR0xfTElORVM6Ci0gICAgICAgICpkM2RQcmltaXRpdmVUeXBlID0gRDNEUFRfTElORUxJ
U1Q7Ci0gICAgICAgICpkM2RQcmltaXRpdmVDb3VudCA9IGVsZW1lbnRDb3VudCAvIDI7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9MSU5FX0xPT1A6Ci0gICAgICAgICpkM2RQcmltaXRp
dmVUeXBlID0gRDNEUFRfTElORVNUUklQOwotICAgICAgICAqZDNkUHJpbWl0aXZlQ291bnQgPSBl
bGVtZW50Q291bnQgLSAxOyAgIC8vIEQzRCBkb2Vzbid0IHN1cHBvcnQgbGluZSBsb29wcywgc28g
d2UgZHJhdyB0aGUgbGFzdCBsaW5lIHNlcGFyYXRlbHkKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEdMX0xJTkVfU1RSSVA6Ci0gICAgICAgICpkM2RQcmltaXRpdmVUeXBlID0gRDNEUFRfTElO
RVNUUklQOwotICAgICAgICAqZDNkUHJpbWl0aXZlQ291bnQgPSBlbGVtZW50Q291bnQgLSAxOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVFJJQU5HTEVTOgotICAgICAgICAqZDNkUHJp
bWl0aXZlVHlwZSA9IEQzRFBUX1RSSUFOR0xFTElTVDsKLSAgICAgICAgKmQzZFByaW1pdGl2ZUNv
dW50ID0gZWxlbWVudENvdW50IC8gMzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RS
SUFOR0xFX1NUUklQOgotICAgICAgICAqZDNkUHJpbWl0aXZlVHlwZSA9IEQzRFBUX1RSSUFOR0xF
U1RSSVA7Ci0gICAgICAgICpkM2RQcmltaXRpdmVDb3VudCA9IGVsZW1lbnRDb3VudCAtIDI7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9UUklBTkdMRV9GQU46Ci0gICAgICAgICpkM2RQ
cmltaXRpdmVUeXBlID0gRDNEUFRfVFJJQU5HTEVGQU47Ci0gICAgICAgICpkM2RQcmltaXRpdmVD
b3VudCA9IGVsZW1lbnRDb3VudCAtIDI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1E
M0RGT1JNQVQgQ29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChHTGVudW0gZm9ybWF0KQotewotICAg
IHN3aXRjaCAoZm9ybWF0KQotICAgIHsKLSAgICAgIGNhc2UgR0xfUkdCQTQ6Ci0gICAgICBjYXNl
IEdMX1JHQjVfQTE6Ci0gICAgICBjYXNlIEdMX1JHQkE4X09FUzogICAgICAgICAgICByZXR1cm4g
RDNERk1UX0E4UjhHOEI4OwotICAgICAgY2FzZSBHTF9SR0I1NjU6ICAgICAgICAgICAgICAgcmV0
dXJuIEQzREZNVF9SNUc2QjU7Ci0gICAgICBjYXNlIEdMX1JHQjhfT0VTOiAgICAgICAgICAgICBy
ZXR1cm4gRDNERk1UX1g4UjhHOEI4OwotICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjoK
LSAgICAgIGNhc2UgR0xfU1RFTkNJTF9JTkRFWDg6ICAgICAgIAotICAgICAgY2FzZSBHTF9ERVBU
SDI0X1NURU5DSUw4X09FUzogcmV0dXJuIEQzREZNVF9EMjRTODsKLSAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7ICAgICAgIHJldHVybiBEM0RGTVRfQThSOEc4Qjg7CisgICAgICBkZWZhdWx0
OiAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKQEAgLTc3OSwxOSArODE0
LDYgQEAgR0xzaXplaSBHZXRTYW1wbGVzRnJvbU11bHRpc2FtcGxlVHlwZShEMwogICAgICAgICBy
ZXR1cm4gdHlwZTsKIH0KIAotRDNETVVMVElTQU1QTEVfVFlQRSBHZXRNdWx0aXNhbXBsZVR5cGVG
cm9tU2FtcGxlcyhHTHNpemVpIHNhbXBsZXMpCi17Ci0gICAgaWYgKHNhbXBsZXMgPD0gMSkKLSAg
ICAgICAgcmV0dXJuIEQzRE1VTFRJU0FNUExFX05PTkU7Ci0gICAgZWxzZQotICAgICAgICByZXR1
cm4gKEQzRE1VTFRJU0FNUExFX1RZUEUpc2FtcGxlczsKLX0KLQotfQotCi1uYW1lc3BhY2UgZHgy
ZXMKLXsKLQogR0xlbnVtIENvbnZlcnRCYWNrQnVmZmVyRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQp
CiB7CiAgICAgc3dpdGNoIChmb3JtYXQpCkBAIC04MjUsMyArODQ3LDM2IEBAIEdMZW51bSBDb252
ZXJ0RGVwdGhTdGVuY2lsRm9ybWF0KEQzREZPUk0KIH0KIAogfQorCitzdGQ6OnN0cmluZyBnZXRU
ZW1wUGF0aCgpCit7CisgICAgY2hhciBwYXRoW01BWF9QQVRIXTsKKyAgICBEV09SRCBwYXRoTGVu
ID0gR2V0VGVtcFBhdGhBKHNpemVvZihwYXRoKSAvIHNpemVvZihwYXRoWzBdKSwgcGF0aCk7Cisg
ICAgaWYgKHBhdGhMZW4gPT0gMCkKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICAgIH0KKworICAgIFVJTlQgdW5pcXVlID0gR2V0
VGVtcEZpbGVOYW1lQShwYXRoLCAic2giLCAwLCBwYXRoKTsKKyAgICBpZiAodW5pcXVlID09IDAp
CisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gc3RkOjpzdHJp
bmcoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHBhdGg7Cit9CisKK3ZvaWQgd3JpdGVGaWxl
KGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IHZvaWQqIGNvbnRlbnQsIHNpemVfdCBzaXplKQorewor
ICAgIEZJTEUqIGZpbGUgPSBmb3BlbihwYXRoLCAidyIpOworICAgIGlmICghZmlsZSkKKyAgICB7
CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBm
d3JpdGUoY29udGVudCwgc2l6ZW9mKGNoYXIpLCBzaXplLCBmaWxlKTsKKyAgICBmY2xvc2UoZmls
ZSk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxp
dGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvdXRpbGl0aWVzLmgJKHJldmlzaW9uIDg5Mjg2KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQsNiArMTQs
OCBAQAogI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgogI2luY2x1ZGUgPGQzZDkuaD4KIAorI2lu
Y2x1ZGUgPHN0cmluZz4KKwogbmFtZXNwYWNlIGdsCiB7CiAKQEAgLTUyLDI5ICs1NCwzNCBAQCBE
M0RCTEVORE9QIENvbnZlcnRCbGVuZE9wKEdMZW51bSBibGVuZE9wCiBEM0RTVEVOQ0lMT1AgQ29u
dmVydFN0ZW5jaWxPcChHTGVudW0gc3RlbmNpbE9wKTsKIEQzRFRFWFRVUkVBRERSRVNTIENvbnZl
cnRUZXh0dXJlV3JhcChHTGVudW0gd3JhcCk7CiBEM0RDVUxMIENvbnZlcnRDdWxsTW9kZShHTGVu
dW0gY3VsbEZhY2UsIEdMZW51bSBmcm9udEZhY2UpOworRDNEQ1VCRU1BUF9GQUNFUyBDb252ZXJ0
Q3ViZUZhY2UoR0xlbnVtIGN1YmVGYWNlKTsKIERXT1JEIENvbnZlcnRDb2xvck1hc2soYm9vbCBy
ZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSk7CiBEM0RURVhUVVJFRklMVEVS
VFlQRSBDb252ZXJ0TWFnRmlsdGVyKEdMZW51bSBtYWdGaWx0ZXIpOwogdm9pZCBDb252ZXJ0TWlu
RmlsdGVyKEdMZW51bSBtaW5GaWx0ZXIsIEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RNaW5GaWx0
ZXIsIEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RNaXBGaWx0ZXIpOwotdW5zaWduZWQgaW50IEdl
dEFscGhhU2l6ZShEM0RGT1JNQVQgY29sb3JGb3JtYXQpOwotdW5zaWduZWQgaW50IEdldFJlZFNp
emUoRDNERk9STUFUIGNvbG9yRm9ybWF0KTsKLXVuc2lnbmVkIGludCBHZXRHcmVlblNpemUoRDNE
Rk9STUFUIGNvbG9yRm9ybWF0KTsKLXVuc2lnbmVkIGludCBHZXRCbHVlU2l6ZShEM0RGT1JNQVQg
Y29sb3JGb3JtYXQpOwotdW5zaWduZWQgaW50IEdldERlcHRoU2l6ZShEM0RGT1JNQVQgZGVwdGhG
b3JtYXQpOwotdW5zaWduZWQgaW50IEdldFN0ZW5jaWxTaXplKEQzREZPUk1BVCBzdGVuY2lsRm9y
bWF0KTsKIGJvb2wgQ29udmVydFByaW1pdGl2ZVR5cGUoR0xlbnVtIHByaW1pdGl2ZVR5cGUsIEdM
c2l6ZWkgZWxlbWVudENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RQUklNSVRJ
VkVUWVBFICpkM2RQcmltaXRpdmVUeXBlLCBpbnQgKmQzZFByaW1pdGl2ZUNvdW50KTsKIEQzREZP
Uk1BVCBDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KEdMZW51bSBmb3JtYXQpOwogRDNETVVMVElT
QU1QTEVfVFlQRSBHZXRNdWx0aXNhbXBsZVR5cGVGcm9tU2FtcGxlcyhHTHNpemVpIHNhbXBsZXMp
OwotR0xzaXplaSBHZXRTYW1wbGVzRnJvbU11bHRpc2FtcGxlVHlwZShEM0RNVUxUSVNBTVBMRV9U
WVBFIHR5cGUpOwogCiB9CiAKIG5hbWVzcGFjZSBkeDJlcwogeworR0x1aW50IEdldEFscGhhU2l6
ZShEM0RGT1JNQVQgY29sb3JGb3JtYXQpOworR0x1aW50IEdldFJlZFNpemUoRDNERk9STUFUIGNv
bG9yRm9ybWF0KTsKK0dMdWludCBHZXRHcmVlblNpemUoRDNERk9STUFUIGNvbG9yRm9ybWF0KTsK
K0dMdWludCBHZXRCbHVlU2l6ZShEM0RGT1JNQVQgY29sb3JGb3JtYXQpOworR0x1aW50IEdldERl
cHRoU2l6ZShEM0RGT1JNQVQgZGVwdGhGb3JtYXQpOworR0x1aW50IEdldFN0ZW5jaWxTaXplKEQz
REZPUk1BVCBzdGVuY2lsRm9ybWF0KTsKKworR0xzaXplaSBHZXRTYW1wbGVzRnJvbU11bHRpc2Ft
cGxlVHlwZShEM0RNVUxUSVNBTVBMRV9UWVBFIHR5cGUpOwogCiBHTGVudW0gQ29udmVydEJhY2tC
dWZmZXJGb3JtYXQoRDNERk9STUFUIGZvcm1hdCk7CiBHTGVudW0gQ29udmVydERlcHRoU3RlbmNp
bEZvcm1hdChEM0RGT1JNQVQgZm9ybWF0KTsKIAogfQogCitzdGQ6OnN0cmluZyBnZXRUZW1wUGF0
aCgpOwordm9pZCB3cml0ZUZpbGUoY29uc3QgY2hhciogcGF0aCwgY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IHNpemUpOworCiAjZW5kaWYgIC8vIExJQkdMRVNWMl9VVElMSVRJRVNfSApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi92ZXJ0ZXhjb252ZXJzaW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi92ZXJ0
ZXhjb252ZXJzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3ZlcnRleGNvbnZlcnNpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MDggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIHZlcnRleGNvbnZlcnNpb24uaDogQSBsaWJy
YXJ5IG9mIHZlcnRleCBjb252ZXJzaW9uIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBidWls
ZAorLy8gdGhlIEZvcm1hdENvbnZlcnRlciBvYmplY3RzIHVzZWQgYnkgdGhlIGJ1ZmZlciBjb252
ZXJzaW9uIHN5c3RlbS4KKworI2lmbmRlZiBMSUJHTEVTVjJfVkVSVEVYQ09OVkVSU0lPTl9IXwor
I2RlZmluZSBMSUJHTEVTVjJfVkVSVEVYQ09OVkVSU0lPTl9IXworCisjaW5jbHVkZSA8Y3N0ZGRl
Zj4KKyNpbmNsdWRlIDxsaW1pdHM+CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQ29udGV4dC5oIiAv
LyBEZWZpbmVzIEluZGV4CisKK25hbWVzcGFjZSBnbAoreworCisvLyBDb252ZXJzaW9uIHR5cGVz
OgorLy8gc3RhdGljIGNvbnN0IGJvb2wgaWRlbnRpdHk6IHRydWUgaWYgdGhpcyBpcyBhbiBpZGVu
dGl0eSB0cmFuc2Zvcm0sIGZhbHNlIG90aGVyd2lzZQorLy8gc3RhdGljIFUgY29udmVydChUKTog
Y29udmVydCBhIHNpbmdsZSBlbGVtZW50IGZyb20gdGhlIGlucHV0IHR5cGUgdG8gdGhlIG91dHB1
dCB0eXBlCisvLyB0eXBlZGVmIC4uLiBPdXRwdXRUeXBlOiB0aGUgdHlwZSBwcm9kdWNlZCBieSB0
aGlzIGNvbnZlcnNpb24KKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgSWRlbnRpdHkKK3sK
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eSA9IHRydWU7CisKKyAgICB0eXBlZGVmIFQg
T3V0cHV0VHlwZTsKKworICAgIHN0YXRpYyBUIGNvbnZlcnQoVCB4KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHg7CisgICAgfQorfTsKKwordGVtcGxhdGUgPGNsYXNzIEZyb21ULCBjbGFzcyBUb1Q+
CitzdHJ1Y3QgQ2FzdAoreworICAgIHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5ID0gZmFsc2U7
CisKKyAgICB0eXBlZGVmIFRvVCBPdXRwdXRUeXBlOworCisgICAgc3RhdGljIFRvVCBjb252ZXJ0
KEZyb21UIHgpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VG9UPih4KTsKKyAg
ICB9Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBDYXN0PFQsIFQ+Cit7CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaWRlbnRpdHkgPSB0cnVlOworCisgICAgdHlwZWRlZiBUIE91dHB1
dFR5cGU7CisKKyAgICBzdGF0aWMgVCBjb252ZXJ0KFQgeCkKKyAgICB7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUPih4KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0
cnVjdCBOb3JtYWxpemUKK3sKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eSA9IGZhbHNl
OworCisgICAgdHlwZWRlZiBmbG9hdCBPdXRwdXRUeXBlOworCisgICAgc3RhdGljIGZsb2F0IGNv
bnZlcnQoVCB4KQorICAgIHsKKyAgICAgICAgdHlwZWRlZiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
IE5MOworICAgICAgICBmbG9hdCBmID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHgpOworCisgICAgICAg
IGlmIChOTDo6aXNfc2lnbmVkKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBjb25zdCBmbG9h
dCA9PiBWQzIwMDggY29tcHV0ZXMgaXQgYXQgY29tcGlsZSB0aW1lCisgICAgICAgICAgICAvLyBz
dGF0aWMgY29uc3QgZmxvYXQgPT4gVkMyMDA4IGNvbXB1dGVzIGl0IHRoZSBmaXJzdCB0aW1lIHdl
IGdldCBoZXJlLCBzdG9yZXMgaXQgdG8gbWVtb3J5IHdpdGggc3RhdGljIGd1YXJkIGFuZCBhbGwg
dGhhdC4KKyAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRpdmlzb3IgPSAxLjBmLygyKnN0YXRpY19j
YXN0PGZsb2F0PihOTDo6bWF4KCkpKzEpOworICAgICAgICAgICAgcmV0dXJuICgyKmYrMSkqZGl2
aXNvcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBmL05MOjptYXgoKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK3RlbXBsYXRlIDxjbGFz
cyBGcm9tVHlwZSwgc3RkOjpzaXplX3QgU2NhbGVCaXRzPgorc3RydWN0IEZpeGVkVG9GbG9hdAor
eworICAgIHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5ID0gZmFsc2U7CisKKyAgICB0eXBlZGVm
IGZsb2F0IE91dHB1dFR5cGU7CisKKyAgICBzdGF0aWMgZmxvYXQgY29udmVydChGcm9tVHlwZSB4
KQorICAgIHsKKyAgICAgICAgY29uc3QgZmxvYXQgZGl2aXNvciA9IDEuMGYgLyBzdGF0aWNfY2Fz
dDxmbG9hdD4oc3RhdGljX2Nhc3Q8RnJvbVR5cGU+KDEpIDw8IFNjYWxlQml0cyk7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oeCkgKiBkaXZpc29yOworICAgIH0KK307CisKKy8v
IFdpZGVuIHR5cGVzOgorLy8gc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBpbml0aWFsV2lkdGg6
IG51bWJlciBvZiBjb21wb25lbnRzIGJlZm9yZSBjb252ZXJzaW9uCisvLyBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgaW50IGZpbmFsV2lkdGg6IG51bWJlciBvZiBjb21wb25lbnRzIGFmdGVyIGNvbnZl
cnNpb24KKworLy8gRmxvYXQgaXMgc3VwcG9ydGVkIGF0IGFueSBzaXplLgordGVtcGxhdGUgPHN0
ZDo6c2l6ZV90IE4+CitzdHJ1Y3QgTm9XaWRlbgoreworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNp
emVfdCBpbml0aWFsV2lkdGggPSBOOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5h
bFdpZHRoID0gTjsKK307CisKKy8vIFNIT1JULCBub3JtLVNIT1JULCBub3JtLVVOU0lHTkVEX1NI
T1JUIGFyZSBzdXBwb3J0ZWQgYnV0IG9ubHkgd2l0aCAyIG9yIDQgY29tcG9uZW50cwordGVtcGxh
dGUgPHN0ZDo6c2l6ZV90IE4+CitzdHJ1Y3QgV2lkZW5Ub0V2ZW4KK3sKKyAgICBzdGF0aWMgY29u
c3Qgc3RkOjpzaXplX3QgaW5pdGlhbFdpZHRoID0gTjsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjpz
aXplX3QgZmluYWxXaWR0aCA9IE4rKE4mMSk7Cit9OworCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3Qg
Tj4KK3N0cnVjdCBXaWRlblRvRm91cgoreworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBp
bml0aWFsV2lkdGggPSBOOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFdpZHRo
ID0gNDsKK307CisKKy8vIE1vc3QgdHlwZXMgaGF2ZSAwIGFuZCAxIHRoYXQgYXJlIGp1c3QgdGhh
dC4KK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IFNpbXBsZURlZmF1bHRWYWx1ZXMKK3sKKyAg
ICBzdGF0aWMgVCB6ZXJvKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oMCk7IH0KKyAgICBzdGF0
aWMgVCBvbmUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUPigxKTsgfQorfTsKKworLy8gQnV0IG5v
cm1hbGlzZWQgdHlwZXMgb25seSBzdG9yZSBbMCwxXSBvciBbLTEsMV0gc28gMS4wIGlzIHJlcHJl
c2VudGVkIGJ5IHRoZSBtYXggdmFsdWUuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBOb3Jt
YWxpemVkRGVmYXVsdFZhbHVlcworeworICAgIHN0YXRpYyBUIHplcm8oKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxUPigwKTsgfQorICAgIHN0YXRpYyBUIG9uZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8VD46Om1heCgpOyB9Cit9OworCisvLyBDb252ZXJ0ZXI6CisvLyBzdGF0aWMgY29u
c3QgYm9vbCBpZGVudGl0eTogdHJ1ZSBpZiB0aGlzIGlzIGFuIGlkZW50aXR5IHRyYW5zZm9ybSAo
d2l0aCBubyB3aWRlbmluZykKKy8vIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFNpemU6
IG51bWJlciBvZiBieXRlcyBwZXIgb3V0cHV0IHZlcnRleAorLy8gc3RhdGljIHZvaWQgY29udmVy
dEFycmF5KGNvbnN0IHZvaWQgKmluLCBzdGQ6OnNpemVfdCBzdHJpZGUsIHN0ZDo6c2l6ZV90IG4s
IHZvaWQgKm91dCk6IGNvbnZlcnQgYW4gYXJyYXkgb2YgdmVydGljZXMuIElucHV0IG1heSBiZSBz
dHJpZGVkLCBidXQgb3V0cHV0IHdpbGwgYmUgdW5zdHJpZGVkLgorCit0ZW1wbGF0ZSA8Y2xhc3Mg
SW5ULCBjbGFzcyBXaWRlblJ1bGUsIGNsYXNzIENvbnZlcnRlciwgY2xhc3MgRGVmYXVsdFZhbHVl
UnVsZSA9IFNpbXBsZURlZmF1bHRWYWx1ZXM8SW5UPiA+CitzdHJ1Y3QgVmVydGV4RGF0YUNvbnZl
cnRlcgoreworICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udmVydGVyOjpPdXRwdXRUeXBlIE91dHB1
dFR5cGU7CisgICAgdHlwZWRlZiBJblQgSW5wdXRUeXBlOworCisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaWRlbnRpdHkgPSAoV2lkZW5SdWxlOjppbml0aWFsV2lkdGggPT0gV2lkZW5SdWxlOjpmaW5h
bFdpZHRoKSAmJiBDb252ZXJ0ZXI6OmlkZW50aXR5OworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNp
emVfdCBmaW5hbFNpemUgPSBXaWRlblJ1bGU6OmZpbmFsV2lkdGggKiBzaXplb2YoT3V0cHV0VHlw
ZSk7CisKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0QXJyYXkoY29uc3QgSW5wdXRUeXBlICppbiwg
c3RkOjpzaXplX3Qgc3RyaWRlLCBzdGQ6OnNpemVfdCBuLCBPdXRwdXRUeXBlICpvdXQpCisgICAg
eworICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICB7
CisgICAgICAgICAgICBjb25zdCBJbnB1dFR5cGUgKmVpbiA9IHBvaW50ZXJBZGRCeXRlcyhpbiwg
aSAqIHN0cmlkZSk7CisKKyAgICAgICAgICAgIGNvcHlDb21wb25lbnQob3V0LCBlaW4sIDAsIHN0
YXRpY19jYXN0PE91dHB1dFR5cGU+KERlZmF1bHRWYWx1ZVJ1bGU6Onplcm8oKSkpOworICAgICAg
ICAgICAgY29weUNvbXBvbmVudChvdXQsIGVpbiwgMSwgc3RhdGljX2Nhc3Q8T3V0cHV0VHlwZT4o
RGVmYXVsdFZhbHVlUnVsZTo6emVybygpKSk7CisgICAgICAgICAgICBjb3B5Q29tcG9uZW50KG91
dCwgZWluLCAyLCBzdGF0aWNfY2FzdDxPdXRwdXRUeXBlPihEZWZhdWx0VmFsdWVSdWxlOjp6ZXJv
KCkpKTsKKyAgICAgICAgICAgIGNvcHlDb21wb25lbnQob3V0LCBlaW4sIDMsIHN0YXRpY19jYXN0
PE91dHB1dFR5cGU+KERlZmF1bHRWYWx1ZVJ1bGU6Om9uZSgpKSk7CisKKyAgICAgICAgICAgIG91
dCArPSBXaWRlblJ1bGU6OmZpbmFsV2lkdGg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0
aWMgdm9pZCBjb252ZXJ0QXJyYXkoY29uc3Qgdm9pZCAqaW4sIHN0ZDo6c2l6ZV90IHN0cmlkZSwg
c3RkOjpzaXplX3Qgbiwgdm9pZCAqb3V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRB
cnJheShzdGF0aWNfY2FzdDxjb25zdCBJbnB1dFR5cGUqPihpbiksIHN0cmlkZSwgbiwgc3RhdGlj
X2Nhc3Q8T3V0cHV0VHlwZSo+KG91dCkpOworICAgIH0KKworICBwcml2YXRlOgorICAgIC8vIEFk
dmFuY2UgdGhlIGdpdmVuIHBvaW50ZXIgYnkgYSBudW1iZXIgb2YgYnl0ZXMgKG5vdCBwb2ludGVk
LXRvIGVsZW1lbnRzKS4KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgICBzdGF0aWMgVCAqcG9p
bnRlckFkZEJ5dGVzKFQgKmJhc2VQdHIsIHN0ZDo6c2l6ZV90IG51bUJ5dGVzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCAqPihyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oYmFzZVB0cikgKyBudW1CeXRlcyk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgY29w
eUNvbXBvbmVudChPdXRwdXRUeXBlICpvdXQsIGNvbnN0IElucHV0VHlwZSAqaW4sIHN0ZDo6c2l6
ZV90IGVsZW1lbnRpbmRleCwgT3V0cHV0VHlwZSBkZWZhdWx0dmFsdWUpCisgICAgeworICAgICAg
ICBpZiAoV2lkZW5SdWxlOjpmaW5hbFdpZHRoID4gZWxlbWVudGluZGV4KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoV2lkZW5SdWxlOjppbml0aWFsV2lkdGggPiBlbGVtZW50aW5kZXgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0W2VsZW1lbnRpbmRleF0gPSBDb252ZXJ0
ZXI6OmNvbnZlcnQoaW5bZWxlbWVudGluZGV4XSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0W2VsZW1lbnRpbmRleF0g
PSBkZWZhdWx0dmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9OworCit9
CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9WRVJURVhDT05WRVJTSU9OX0hfCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ZlcnRleGNv
bnZlcnNpb24uaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4OTI5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA2LTIwICBaaGVueWFvIE1vICA8
em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIEFOR0xFIHRvIHI2OTYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjM5NgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVXZWJLaXRC
cmlkZ2U6OnZhbGlkYXRlU2hhZGVyU291cmNlKTogU3BlY2lmeSBiYWNrZW5kLgorCiAyMDExLTA2
LTIwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBiaXQg
ZmxhZyBjb2xsaXNpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9B
TkdMRVdlYktpdEJyaWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCShyZXZpc2lvbiA4OTI4NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjksOCArNjksOCBAQCB2b2lkIEFOR0xFV2ViS2l0QnJpZGdlOjpzZXRS
ZXNvdXJjZXMoU2hCCiBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjp2YWxpZGF0ZVNoYWRlclNvdXJj
ZShjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2UsIEFOR0xFU2hhZGVyVHlwZSBzaGFkZXJUeXBlLCBT
dHJpbmcmIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UsIFN0cmluZyYgc2hhZGVyVmFsaWRhdGlvbkxv
ZykKIHsKICAgICBpZiAoIWJ1aWx0Q29tcGlsZXJzKSB7Ci0gICAgICAgIG1fZnJhZ21lbnRDb21w
aWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoU0hfRlJBR01FTlRfU0hBREVSLCBTSF9XRUJHTF9T
UEVDLCAmbV9yZXNvdXJjZXMpOwotICAgICAgICBtX3ZlcnRleENvbXBpbGVyID0gU2hDb25zdHJ1
Y3RDb21waWxlcihTSF9WRVJURVhfU0hBREVSLCBTSF9XRUJHTF9TUEVDLCAmbV9yZXNvdXJjZXMp
OworICAgICAgICBtX2ZyYWdtZW50Q29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKFNIX0ZS
QUdNRU5UX1NIQURFUiwgU0hfV0VCR0xfU1BFQywgU0hfR0xTTF9PVVRQVVQsICZtX3Jlc291cmNl
cyk7CisgICAgICAgIG1fdmVydGV4Q29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKFNIX1ZF
UlRFWF9TSEFERVIsIFNIX1dFQkdMX1NQRUMsIFNIX0dMU0xfT1VUUFVULCAmbV9yZXNvdXJjZXMp
OwogICAgICAgICBpZiAoIW1fZnJhZ21lbnRDb21waWxlciB8fCAhbV92ZXJ0ZXhDb21waWxlcikg
ewogICAgICAgICAgICAgY2xlYW51cENvbXBpbGVycygpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODkyOTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNi0yMCAgWmhlbnlhbyBNbyAg
PHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBBTkdMRSB0byByNjk2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjM5NgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2Vi
Z2wvZ2xzbC1jb25mb3JtYW5jZS5odG1sOiBGaXggYSBidWcgaW4gdGhlIHRlc3QgKG90aGVyd2lz
ZSBhZnRlciB0aGUgcm9sbCB0aGlzIHRlc3Qgd2lsbCBmYWlsKS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IE9uY2UgdGhpcyB0ZXN0IGlzIGZpeGVk
LCBpdCBzaG91bGQgcGFzcyBpbiBjaHJvbWl1bS4KKwogMjAxMS0wNi0yMCAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBzb21lIHRl
c3RzIGZvciBHVEsrIGFmdGVyIHI4OTI1Ny4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2dsc2wtY29uZm9ybWFuY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9nbHNsLWNvbmZvcm1hbmNlLmh0bWwJKHJldmlzaW9uIDg5Mjg2KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2xzbC1jb25mb3JtYW5jZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw4IEBAIHZvaWQgbWFpbigpCiA8c2NyaXB0IGlkPSJm
c2hhZGVyV2l0aFByZWNpc2lvbiIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWphdmFzY3JpcHQi
Pgogdm9pZCBtYWluKCkKIHsKLSAgICBnbF9GcmFnQ29sb3IgPSBtZWRpdW1wIHZlYzQoMS4wLDAu
MCwwLjAsMS4wKTsKKyAgICBtZWRpdW1wIHZlYzQgY29sb3IgPSB2ZWM0KDEuMCwwLjAsMC4wLDEu
MCk7CisgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7CiB9CiA8L3NjcmlwdD4KIDxzY3JpcHQgaWQ9
InZzaGFkZXJXaXRoRGVmYXVsdFByZWNpc2lvbiIgdHlwZT0idGV4dC9zb21ldGhpbmctbm90LWph
dmFzY3JpcHQiPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gODkyODYpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTQwMTEsOCArNDAxMSw2IEBAIEJVR1JOSVdBIE1BQyA6IGVkaXRpbmcvc2VsZWN0aW9uL3ZlcnRp
Y2EKIEJVR1JOSVdBIE1BQyA6IGVkaXRpbmcvc2VsZWN0aW9uL3ZlcnRpY2FsLXJsLWx0ci1leHRl
bmQtbGluZS1mb3J3YXJkLXAuaHRtbCA9IElNQUdFIFBBU1MKIEJVR1JOSVdBIE1BQyA6IGVkaXRp
bmcvc2VsZWN0aW9uL3ZlcnRpY2FsLXJsLWx0ci1leHRlbmQtbGluZS1mb3J3YXJkLXdyYXAuaHRt
bCA9IElNQUdFIFBBU1MKIAotQlVHQ1I4NjU2MyA6IGZhc3QvY2FudmFzL3dlYmdsL2dsc2wtY29u
Zm9ybWFuY2UuaHRtbCA9IFRFWFQKLQogQlVHQ1I4NjcxNCBNQUMgR1BVIDogY29tcG9zaXRpbmcv
dGlsaW5nL2h1Z2UtbGF5ZXItcmVzaXplLmh0bWwgPSBDUkFTSAogQlVHQ1I4NjcxNCBNQUMgR1BV
IDogbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLmh0bWwgPSBDUkFTSAogQlVHQ1I4Njcx
NCBNQUMgR1BVIDogbWVkaWEvdmlkZW8tem9vbS5odG1sID0gQ1JBU0gK
</data>
<flag name="review"
          id="91955"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>