<?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>20704</bug_id>
          
          <creation_ts>2008-09-07 15:22:57 -0700</creation_ts>
          <short_desc>Replace the KJS namespace</short_desc>
          <delta_ts>2008-09-07 19:25:34 -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>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90435</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-07 15:22:57 -0700</bug_when>
    <thetext>We should remove the namespace and replace it with something else. JSC seems to be the current winner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90448</commentid>
    <comment_count>1</comment_count>
      <attachid>23234</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-07 18:06:13 -0700</bug_when>
    <thetext>Created attachment 23234
Proposed patch

Here is a patch that changes KJS to JSC. I just recently built clean Debug and Release builds on the Mac, and the revisions since should not affect anything. I&apos;ll be around to fix any build failures on the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90449</commentid>
    <comment_count>2</comment_count>
      <attachid>23234</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-07 18:17:53 -0700</bug_when>
    <thetext>Comment on attachment 23234
Proposed patch

r=me

I did not read in great detail but on skimming I did not see problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90452</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-07 19:25:34 -0700</bug_when>
    <thetext>Landed in r36263.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23234</attachid>
            <date>2008-09-07 18:06:13 -0700</date>
            <delta_ts>2008-09-07 18:17:53 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>kjs.diff</filename>
            <type>text/plain</type>
            <size>479241</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjczIEBACisyMDA4LTA5LTA3ICBDYW1lcm9u
IFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMDcwNDogUmVwbGFjZSB0aGUgS0pTIG5h
bWVzcGFjZQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzA0PgorCisgICAgICAgIFJlbmFtZSB0aGUgS0pTIG5hbWVzcGFjZSB0byBKU0MuIFRoZXJl
IGFyZSBzdGlsbCBzb21lIHVzYWdlcyBvZiBLSlMgaW4KKyAgICAgICAgcHJlcHJvY2Vzc29yIG1h
Y3JvcyBhbmQgY29tbWVudHMsIGJ1dCB0aGVzZSB3aWxsIGFsc28gYmUgY2hhbmdlZCBzb21lCisg
ICAgICAgIHRpbWUgaW4gdGhlIG5lYXIgZnV0dXJlLgorCisgICAgICAgICogQVBJL0FQSUNhc3Qu
aDoKKyAgICAgICAgKHRvSlMpOgorICAgICAgICAodG9SZWYpOgorICAgICAgICAodG9HbG9iYWxS
ZWYpOgorICAgICAgICAqIEFQSS9KU0Jhc2UuY3BwOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNr
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKiBBUEkvSlND
YWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOgor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBBUEkvSlNDbGFzc1JlZi5jcHA6CisgICAg
ICAgIChPcGFxdWVKU0NsYXNzOjpzdGF0aWNWYWx1ZXMpOgorICAgICAgICAoT3BhcXVlSlNDbGFz
czo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBBUEkvSlNDbGFzc1JlZi5oOgorICAgICAg
ICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6
CisgICAgICAgICogQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBBUEkvSlNT
dHJpbmdSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpT
VmFsdWVHZXRUeXBlKToKKyAgICAgICAgKiBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwOgorICAgICAg
ICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLkRlYnVn
LmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBWTS9D
VEkuY3BwOgorICAgICAgICAoSlNDOjopOgorICAgICAgICAqIFZNL0NUSS5oOgorICAgICAgICAq
IFZNL0NvZGVCbG9jay5jcHA6CisgICAgICAgICogVk0vQ29kZUJsb2NrLmg6CisgICAgICAgICog
Vk0vQ29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgICogVk0vQ29kZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIFZNL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAqIFZNL0V4Y2VwdGlvbkhl
bHBlcnMuaDoKKyAgICAgICAgKiBWTS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAqIFZNL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAqIFZNL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaDoKKyAgICAgICAgKiBWTS9MYWJlbElELmg6CisgICAgICAgICogVk0vTWFjaGluZS5jcHA6
CisgICAgICAgICogVk0vTWFjaGluZS5oOgorICAgICAgICAqIFZNL09wY29kZS5jcHA6CisgICAg
ICAgICogVk0vT3Bjb2RlLmg6CisgICAgICAgICogVk0vUmVnaXN0ZXIuaDoKKyAgICAgICAgKFdU
Rjo6KToKKyAgICAgICAgKiBWTS9SZWdpc3RlckZpbGUuY3BwOgorICAgICAgICAqIFZNL1JlZ2lz
dGVyRmlsZS5oOgorICAgICAgICAqIFZNL1JlZ2lzdGVySUQuaDoKKyAgICAgICAgKFdURjo6KToK
KyAgICAgICAgKiBWTS9TYW1wbGluZ1Rvb2wuY3BwOgorICAgICAgICAqIFZNL1NhbXBsaW5nVG9v
bC5oOgorICAgICAgICAqIFZNL1NlZ21lbnRlZFZlY3Rvci5oOgorICAgICAgICAqIGtqcy9BcmdM
aXN0LmNwcDoKKyAgICAgICAgKiBranMvQXJnTGlzdC5oOgorICAgICAgICAqIGtqcy9Bcmd1bWVu
dHMuY3BwOgorICAgICAgICAqIGtqcy9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBranMvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICoga2pzL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBranMvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAqIGtqcy9BcnJheVByb3RvdHlw
ZS5oOgorICAgICAgICAqIGtqcy9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oOgorICAgICAg
ICAqIGtqcy9Cb29sZWFuQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGtqcy9Cb29sZWFuQ29u
c3RydWN0b3IuaDoKKyAgICAgICAgKiBranMvQm9vbGVhbk9iamVjdC5jcHA6CisgICAgICAgICog
a2pzL0Jvb2xlYW5PYmplY3QuaDoKKyAgICAgICAgKiBranMvQm9vbGVhblByb3RvdHlwZS5jcHA6
CisgICAgICAgICoga2pzL0Jvb2xlYW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBranMvQ2FsbERh
dGEuY3BwOgorICAgICAgICAqIGtqcy9DYWxsRGF0YS5oOgorICAgICAgICAqIGtqcy9DbGFzc0lu
Zm8uaDoKKyAgICAgICAgKiBranMvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAqIGtq
cy9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIGtqcy9Db25zdHJ1Y3REYXRhLmNwcDoK
KyAgICAgICAgKiBranMvQ29uc3RydWN0RGF0YS5oOgorICAgICAgICAqIGtqcy9EYXRlQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAqIGtqcy9EYXRlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBr
anMvRGF0ZUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUluc3RhbmNlOjptc1RvR3Jl
Z29yaWFuRGF0ZVRpbWUpOgorICAgICAgICAqIGtqcy9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAg
KiBranMvRGF0ZU1hdGguY3BwOgorICAgICAgICAqIGtqcy9EYXRlTWF0aC5oOgorICAgICAgICAq
IGtqcy9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBranMvRGF0ZVByb3RvdHlwZS5oOgor
ICAgICAgICAqIGtqcy9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgICoga2pzL0RlYnVn
Z2VyQ2FsbEZyYW1lLmg6CisgICAgICAgICoga2pzL0Vycm9yLmNwcDoKKyAgICAgICAgKiBranMv
RXJyb3IuaDoKKyAgICAgICAgKiBranMvRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
a2pzL0Vycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBranMvRXJyb3JJbnN0YW5jZS5jcHA6
CisgICAgICAgICoga2pzL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBranMvRXJyb3JQcm90
b3R5cGUuY3BwOgorICAgICAgICAqIGtqcy9FcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIGtq
cy9FeGVjU3RhdGUuY3BwOgorICAgICAgICAqIGtqcy9FeGVjU3RhdGUuaDoKKyAgICAgICAgKiBr
anMvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICoga2pzL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaDoKKyAgICAgICAgKiBranMvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAq
IGtqcy9GdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAqIGtqcy9HZXR0ZXJTZXR0ZXIuY3Bw
OgorICAgICAgICAqIGtqcy9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBranMvR2xvYmFsRXZh
bEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKiBranMvR2xvYmFsRXZhbEZ1bmN0aW9uLmg6CisgICAg
ICAgICoga2pzL0luZGV4VG9OYW1lTWFwLmNwcDoKKyAgICAgICAgKiBranMvSW5kZXhUb05hbWVN
YXAuaDoKKyAgICAgICAgKiBranMvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgICog
a2pzL0luaXRpYWxpemVUaHJlYWRpbmcuaDoKKyAgICAgICAgKiBranMvSW50ZXJuYWxGdW5jdGlv
bi5jcHA6CisgICAgICAgICoga2pzL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6
SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbik6CisgICAgICAgICoga2pzL0pTQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgICoga2pzL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAqIGtq
cy9KU0FycmF5LmNwcDoKKyAgICAgICAgKiBranMvSlNBcnJheS5oOgorICAgICAgICAqIGtqcy9K
U0NlbGwuY3BwOgorICAgICAgICAqIGtqcy9KU0NlbGwuaDoKKyAgICAgICAgKiBranMvSlNGdW5j
dGlvbi5jcHA6CisgICAgICAgICoga2pzL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgICoga2pzL0pTR2xvYmFsRGF0YS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBranMv
SlNHbG9iYWxEYXRhLmg6CisgICAgICAgICoga2pzL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKiBranMvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBranMvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwOgorICAgICAgICAqIGtqcy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oOgor
ICAgICAgICAqIGtqcy9KU0ltbWVkaWF0ZS5jcHA6CisgICAgICAgICoga2pzL0pTSW1tZWRpYXRl
Lmg6CisgICAgICAgICoga2pzL0pTTG9jay5jcHA6CisgICAgICAgICoga2pzL0pTTG9jay5oOgor
ICAgICAgICAqIGtqcy9KU05vdEFuT2JqZWN0LmNwcDoKKyAgICAgICAgKiBranMvSlNOb3RBbk9i
amVjdC5oOgorICAgICAgICAqIGtqcy9KU051bWJlckNlbGwuY3BwOgorICAgICAgICAqIGtqcy9K
U051bWJlckNlbGwuaDoKKyAgICAgICAgKiBranMvSlNPYmplY3QuY3BwOgorICAgICAgICAqIGtq
cy9KU09iamVjdC5oOgorICAgICAgICAqIGtqcy9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBranMvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAqIGtqcy9KU1N0cmlu
Zy5jcHA6CisgICAgICAgICoga2pzL0pTU3RyaW5nLmg6CisgICAgICAgICoga2pzL0pTVHlwZS5o
OgorICAgICAgICAqIGtqcy9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKiBranMvSlNWYWx1ZS5oOgor
ICAgICAgICAqIGtqcy9KU1ZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKiBranMvSlNWYXJp
YWJsZU9iamVjdC5oOgorICAgICAgICAqIGtqcy9KU1dyYXBwZXJPYmplY3QuY3BwOgorICAgICAg
ICAqIGtqcy9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAgICAgKiBranMvTGFiZWxTdGFjay5jcHA6
CisgICAgICAgICoga2pzL0xhYmVsU3RhY2suaDoKKyAgICAgICAgKiBranMvTWF0aE9iamVjdC5j
cHA6CisgICAgICAgICoga2pzL01hdGhPYmplY3QuaDoKKyAgICAgICAgKiBranMvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICoga2pzL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBranMvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAqIGtq
cy9OYXRpdmVFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIGtqcy9Ob2RlSW5mby5oOgorICAg
ICAgICAqIGtqcy9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICoga2pzL051bWJlckNv
bnN0cnVjdG9yLmg6CisgICAgICAgICoga2pzL051bWJlck9iamVjdC5jcHA6CisgICAgICAgICog
a2pzL051bWJlck9iamVjdC5oOgorICAgICAgICAqIGtqcy9OdW1iZXJQcm90b3R5cGUuY3BwOgor
ICAgICAgICAqIGtqcy9OdW1iZXJQcm90b3R5cGUuaDoKKyAgICAgICAgKiBranMvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAqIGtqcy9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIGtqcy9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAqIGtqcy9PYmplY3RQcm90b3R5
cGUuaDoKKyAgICAgICAgKiBranMvUGFyc2VyLmNwcDoKKyAgICAgICAgKiBranMvUGFyc2VyLmg6
CisgICAgICAgICoga2pzL1Byb3BlcnR5TWFwLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlN
YXBTdGF0aXN0aWNzRXhpdExvZ2dlcjo6flByb3BlcnR5TWFwU3RhdGlzdGljc0V4aXRMb2dnZXIp
OgorICAgICAgICAqIGtqcy9Qcm9wZXJ0eU1hcC5oOgorICAgICAgICAqIGtqcy9Qcm9wZXJ0eU5h
bWVBcnJheS5jcHA6CisgICAgICAgICoga2pzL1Byb3BlcnR5TmFtZUFycmF5Lmg6CisgICAgICAg
ICoga2pzL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgICoga2pzL1Byb3BlcnR5U2xvdC5oOgor
ICAgICAgICAqIGtqcy9Qcm90b3R5cGVGdW5jdGlvbi5jcHA6CisgICAgICAgICoga2pzL1Byb3Rv
dHlwZUZ1bmN0aW9uLmg6CisgICAgICAgICoga2pzL1B1dFByb3BlcnR5U2xvdC5oOgorICAgICAg
ICAqIGtqcy9SZWdFeHBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICoga2pzL1JlZ0V4cENvbnN0
cnVjdG9yLmg6CisgICAgICAgICoga2pzL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgICoga2pz
L1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIGtqcy9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIGtqcy9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBranMvU2NvcGVDaGFpbi5j
cHA6CisgICAgICAgICoga2pzL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKiBranMvU2NvcGVDaGFp
bk1hcmsuaDoKKyAgICAgICAgKiBranMvU2hlbGwuY3BwOgorICAgICAgICAoanNjbWFpbik6Cisg
ICAgICAgICoga2pzL1NtYWxsU3RyaW5ncy5jcHA6CisgICAgICAgICoga2pzL1NtYWxsU3RyaW5n
cy5oOgorICAgICAgICAqIGtqcy9Tb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGtqcy9Tb3Vy
Y2VSYW5nZS5oOgorICAgICAgICAqIGtqcy9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
ICoga2pzL1N0cmluZ0NvbnN0cnVjdG9yLmg6CisgICAgICAgICoga2pzL1N0cmluZ09iamVjdC5j
cHA6CisgICAgICAgICoga2pzL1N0cmluZ09iamVjdC5oOgorICAgICAgICAqIGtqcy9TdHJpbmdP
YmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oOgorICAgICAgICAqIGtqcy9TdHJpbmdQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIGtqcy9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBranMvU3RydWN0dXJlSUQuY3BwOgorICAgICAgICAqIGtqcy9TdHJ1Y3R1cmVJRC5oOgorICAg
ICAgICAqIGtqcy9TeW1ib2xUYWJsZS5oOgorICAgICAgICAqIGtqcy9jb2xsZWN0b3IuY3BwOgor
ICAgICAgICAqIGtqcy9jb2xsZWN0b3IuaDoKKyAgICAgICAgKiBranMvY29tcGxldGlvbi5oOgor
ICAgICAgICAqIGtqcy9jcmVhdGVfaGFzaF90YWJsZToKKyAgICAgICAgKiBranMvZGVidWdnZXIu
Y3BwOgorICAgICAgICAqIGtqcy9kZWJ1Z2dlci5oOgorICAgICAgICAqIGtqcy9kdG9hLmNwcDoK
KyAgICAgICAgKiBranMvZHRvYS5oOgorICAgICAgICAqIGtqcy9ncmFtbWFyLnk6CisgICAgICAg
ICoga2pzL2lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGtqcy9pZGVudGlmaWVyLmg6CisgICAg
ICAgIChKU0M6OklkZW50aWZpZXI6OmVxdWFsKToKKyAgICAgICAgKiBranMvaW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAqIGtqcy9pbnRlcnByZXRlci5oOgorICAgICAgICAqIGtqcy9sZXhlci5j
cHA6CisgICAgICAgIChKU0M6OkxleGVyOjpMZXhlcik6CisgICAgICAgIChKU0M6OkxleGVyOjpj
bGVhcik6CisgICAgICAgIChKU0M6OkxleGVyOjptYWtlSWRlbnRpZmllcik6CisgICAgICAgICog
a2pzL2xleGVyLmg6CisgICAgICAgICoga2pzL2xvb2t1cC5jcHA6CisgICAgICAgICoga2pzL2xv
b2t1cC5oOgorICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgICoga2pzL25vZGVzLmg6
CisgICAgICAgICoga2pzL25vZGVzMnN0cmluZy5jcHA6CisgICAgICAgICoga2pzL29wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGtqcy9vcGVyYXRpb25zLmg6CisgICAgICAgICoga2pzL3Byb3Rl
Y3QuaDoKKyAgICAgICAgKiBranMvcmVnZXhwLmNwcDoKKyAgICAgICAgKiBranMvcmVnZXhwLmg6
CisgICAgICAgICoga2pzL3VzdHJpbmcuY3BwOgorICAgICAgICAqIGtqcy91c3RyaW5nLmg6Cisg
ICAgICAgIChKU0M6Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyUmVwSGFz
aDo6aGFzaCk6CisgICAgICAgIChXVEY6Oik6CisgICAgICAgICogbWFzbS9NYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAqIG1hc20vTWFjcm9Bc3NlbWJsZXJXaW4uY3BwOgorICAgICAgICAqIG1h
c20vWDg2QXNzZW1ibGVyLmg6CisgICAgICAgICogcGNyZS9wY3JlX2V4ZWMuY3BwOgorICAgICAg
ICAqIHByb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmg6CisgICAgICAgIChXVEY6Oik6CisgICAgICAg
ICogcHJvZmlsZXIvSGVhdnlQcm9maWxlLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9IZWF2eVBy
b2ZpbGUuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmNwcDoKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlLmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHA6
CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oOgorICAgICAgICAqIHByb2Zp
bGVyL1Byb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlTm9kZS5oOgor
ICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9m
aWxlci5oOgorICAgICAgICAqIHByb2ZpbGVyL1RyZWVQcm9maWxlLmNwcDoKKyAgICAgICAgKiBw
cm9maWxlci9UcmVlUHJvZmlsZS5oOgorICAgICAgICAqIHdyZWMvV1JFQy5jcHA6CisgICAgICAg
ICogd3JlYy9XUkVDLmg6CisgICAgICAgICogd3RmL0FWTFRyZWUuaDoKKwogMjAwOC0wOS0wNyAg
TWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbiBCZXJuc3RlaW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5EZWJ1
Zy5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuRGVidWcu
ZXhwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLkRl
YnVnLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMSwyICsxLDIgQEAKLV9fWk4zS0pTMTBJZGVudGlm
aWVyMjRjaGVja1NhbWVJZGVudGlmaWVyVGFibGVFUE5TXzlFeGVjU3RhdGVFUE5TXzdVU3RyaW5n
M1JlcEUgCi1fX1pOM0tKUzEwSWRlbnRpZmllcjI0Y2hlY2tTYW1lSWRlbnRpZmllclRhYmxlRVBO
U18xMkpTR2xvYmFsRGF0YUVQTlNfN1VTdHJpbmczUmVwRSAKK19fWk4zSlNDMTBJZGVudGlmaWVy
MjRjaGVja1NhbWVJZGVudGlmaWVyVGFibGVFUE5TXzlFeGVjU3RhdGVFUE5TXzdVU3RyaW5nM1Jl
cEUgCitfX1pOM0pTQzEwSWRlbnRpZmllcjI0Y2hlY2tTYW1lSWRlbnRpZmllclRhYmxlRVBOU18x
MkpTR2xvYmFsRGF0YUVQTlNfN1VTdHJpbmczUmVwRSAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmJhc2UuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxNjUgKzgzLDE2NSBA
QCBfV1RGUmVwb3J0RmF0YWxFcnJvcgogX19aMTJqc1JlZ0V4cEZyZWVQOEpTUmVnRXhwCiBfX1ox
NWpzUmVnRXhwQ29tcGlsZVBLdGkyNEpTUmVnRXhwSWdub3JlQ2FzZU9wdGlvbjIzSlNSZWdFeHBN
dWx0aWxpbmVPcHRpb25QalBQS2MKIF9fWjE1anNSZWdFeHBFeGVjdXRlUEs4SlNSZWdFeHBQS3Rp
aVBpaQotX19aTjE0T3BhcXVlSlNTdHJpbmc2Y3JlYXRlRVJLTjNLSlM3VVN0cmluZ0UKLV9fWk4z
S0pTMTBJZGVudGlmaWVyMTFhZGRTbG93Q2FzZUVQTlNfMTJKU0dsb2JhbERhdGFFUE5TXzdVU3Ry
aW5nM1JlcEUKLV9fWk4zS0pTMTBJZGVudGlmaWVyMTFhZGRTbG93Q2FzZUVQTlNfOUV4ZWNTdGF0
ZUVQTlNfN1VTdHJpbmczUmVwRQotX19aTjNLSlMxMElkZW50aWZpZXIzYWRkRVBOU185RXhlY1N0
YXRlRVBLYwotX19aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUEtOU183VVN0cmluZzNSZXBFUEtj
Ci1fX1pOM0tKUzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVOU185RXJyb3JUeXBlRQotX19a
TjNLSlMxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFTlNfOUVycm9yVHlwZUVQS2MKLV9fWk4z
S0pTMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzlFcnJvclR5cGVFUktOU183VVN0cmlu
Z0UKLV9fWk4zS0pTMTFJbnRlcnByZXRlcjExY2hlY2tTeW50YXhFUE5TXzlFeGVjU3RhdGVFUktO
U183VVN0cmluZ0VpUzVfCi1fX1pOM0tKUzExSW50ZXJwcmV0ZXIyMXNob3VsZFByaW50RXhjZXB0
aW9uc0V2Ci1fX1pOM0tKUzExSW50ZXJwcmV0ZXIyNHNldFNob3VsZFByaW50RXhjZXB0aW9uc0Vi
Ci1fX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVFUE5TXzlFeGVjU3RhdGVFUk5TXzEwU2Nv
cGVDaGFpbkVSS05TXzdVU3RyaW5nRWlOM1dURjEwUGFzc1JlZlB0cklOU18xNFNvdXJjZVByb3Zp
ZGVyRUVFUE5TXzdKU1ZhbHVlRQotX19aTjNLSlMxMUludGVycHJldGVyOGV2YWx1YXRlRVBOU185
RXhlY1N0YXRlRVJOU18xMFNjb3BlQ2hhaW5FUktOU183VVN0cmluZ0VpUzdfUE5TXzdKU1ZhbHVl
RQotX19aTjNLSlMxMUpTSW1tZWRpYXRlOHRvT2JqZWN0RVBLTlNfN0pTVmFsdWVFUE5TXzlFeGVj
U3RhdGVFCi1fX1pOM0tKUzExSlNJbW1lZGlhdGU4dG9TdHJpbmdFUEtOU183SlNWYWx1ZUUKLV9f
Wk4zS0pTMTFKU0ltbWVkaWF0ZTlwcm90b3R5cGVFUEtOU183SlNWYWx1ZUVQTlNfOUV4ZWNTdGF0
ZUUKLV9fWk4zS0pTMTFQcm9maWxlTm9kZTRzb3J0RVBGYlJLTjNXVEY2UmVmUHRySVMwX0VFUzVf
RQotX19aTjNLSlMxMVByb2dyYW1Ob2RlNmNyZWF0ZUVQTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0
U291cmNlRWxlbWVudHNFUE4zV1RGNlZlY3RvcklTdDRwYWlySU5TXzEwSWRlbnRpZmllckVqRUxt
MTZFRUVQTlM2X0lOUzVfNlJlZlB0cklOU18xMkZ1bmNEZWNsTm9kZUVFRUxtMTZFRUVQTlNfMTRT
b3VyY2VQcm92aWRlckViYmkKLV9fWk4zS0pTMTFQcm9wZXJ0eU1hcDExZ2V0TG9jYXRpb25FUktO
U18xMElkZW50aWZpZXJFCi1fX1pOM0tKUzExUHJvcGVydHlNYXAxMWdldExvY2F0aW9uRVJLTlNf
MTBJZGVudGlmaWVyRVJiCi1fX1pOM0tKUzExUHJvcGVydHlNYXAzcHV0RVJLTlNfMTBJZGVudGlm
aWVyRVBOU183SlNWYWx1ZUVqYlBOU184SlNPYmplY3RFUk5TXzE1UHV0UHJvcGVydHlTbG90RQot
X19aTjNLSlMxMVByb3BlcnR5TWFwRDFFdgotX19aTjNLSlMxMVN0cnVjdHVyZUlEMjFhZGRQcm9w
ZXJ0eVRyYW5zaXRpb25FUFMwX1JLTlNfMTBJZGVudGlmaWVyRQotX19aTjNLSlMxMVN0cnVjdHVy
ZUlEMjRmcm9tRGljdGlvbmFyeVRyYW5zaXRpb25FUFMwXwotX19aTjNLSlMxMVN0cnVjdHVyZUlE
MjVjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uRVBTMF9QTlNfN0pTVmFsdWVFCi1fX1pOM0tKUzEx
U3RydWN0dXJlSUREMUV2Ci1fX1pOM0tKUzEyRGF0ZUluc3RhbmNlNGluZm9FCi1fX1pOM0tKUzEy
SlNHbG9iYWxEYXRhNmNyZWF0ZUV2Ci1fX1pOM0tKUzEySlNHbG9iYWxEYXRhRDFFdgotX19aTjNL
SlMxMlNhbXBsaW5nVG9vbDRkdW1wRVBOU185RXhlY1N0YXRlRQotX19aTjNLSlMxMlNhbXBsaW5n
VG9vbDRzdG9wRXYKLV9fWk4zS0pTMTJTYW1wbGluZ1Rvb2w1c3RhcnRFagotX19aTjNLSlMxMlNt
YWxsU3RyaW5nczE3Y3JlYXRlRW1wdHlTdHJpbmdFUE5TXzlFeGVjU3RhdGVFCi1fX1pOM0tKUzEy
U3RyaW5nT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRp
ZmllckUKLV9fWk4zS0pTMTJTdHJpbmdPYmplY3QxNHRvVGhpc0pTU3RyaW5nRVBOU185RXhlY1N0
YXRlRQotX19aTjNLSlMxMlN0cmluZ09iamVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNT
dGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUUKLV9fWk4zS0pTMTJTdHJpbmdPYmplY3QxOGdl
dE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQ
cm9wZXJ0eVNsb3RFCi1fX1pOM0tKUzEyU3RyaW5nT2JqZWN0MThnZXRPd25Qcm9wZXJ0eVNsb3RF
UE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xvdEUKLV9fWk4zS0pTMTJTdHJpbmdPYmpl
Y3QzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBOU183SlNWYWx1ZUVSTlNf
MTVQdXRQcm9wZXJ0eVNsb3RFCi1fX1pOM0tKUzEyU3RyaW5nT2JqZWN0NGluZm9FCi1fX1pOM0tK
UzEyU3RyaW5nT2JqZWN0QzJFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEVSS05TXzdVU3Ry
aW5nRQotX19aTjNLSlMxM0NvZGVHZW5lcmF0b3IyMXNldER1bXBzR2VuZXJhdGVkQ29kZUViCi1f
X1pOM0tKUzEzU3RhdGVtZW50Tm9kZTZzZXRMb2NFaWkKLV9fWk4zS0pTMTNqc093bmVkU3RyaW5n
RVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCi1fX1pOM0tKUzE0SlNHbG9iYWxPYmplY3Qx
MGdsb2JhbEV4ZWNFdgotX19aTjNLSlMxNEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVHZXR0ZXJFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzhKU09iamVjdEUKLV9fWk4zS0pTMTRK
U0dsb2JhbE9iamVjdDEyZGVmaW5lU2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRVBOU184SlNPYmplY3RFCi1fX1pOM0tKUzE0SlNHbG9iYWxPYmplY3QxNHNldFRpbWVvdXRU
aW1lRWoKLV9fWk4zS0pTMTRKU0dsb2JhbE9iamVjdDE2c3RvcFRpbWVvdXRDaGVja0V2Ci1fX1pO
M0tKUzE0SlNHbG9iYWxPYmplY3QxN3B1dFdpdGhBdHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRVBOU183SlNWYWx1ZUVqCi1fX1pOM0tKUzE0SlNHbG9iYWxPYmplY3Qx
N3N0YXJ0VGltZW91dENoZWNrRXYKLV9fWk4zS0pTMTRKU0dsb2JhbE9iamVjdDNwdXRFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5
U2xvdEUKLV9fWk4zS0pTMTRKU0dsb2JhbE9iamVjdDRpbml0RVBOU184SlNPYmplY3RFCi1fX1pO
M0tKUzE0SlNHbG9iYWxPYmplY3Q0bWFya0V2Ci1fX1pOM0tKUzE0SlNHbG9iYWxPYmplY3REMkV2
Ci1fX1pOM0tKUzE0SlNHbG9iYWxPYmplY3Rud0VtUE5TXzEySlNHbG9iYWxEYXRhRQotX19aTjNL
SlMxNGNvbnN0cnVjdEFycmF5RVBOU185RXhlY1N0YXRlRVJLTlNfN0FyZ0xpc3RFCi1fX1pOM0tK
UzE1SlNXcmFwcGVyT2JqZWN0NG1hcmtFdgotX19aTjNLSlMxNkludGVybmFsRnVuY3Rpb240aW5m
b0UKLV9fWk4zS0pTMTZJbnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzlFeGVjU3RhdGVFUE5TXzE3RnVu
Y3Rpb25Qcm90b3R5cGVFUktOU18xMElkZW50aWZpZXJFCi1fX1pOM0tKUzE2SlNWYXJpYWJsZU9i
amVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCi1f
X1pOM0tKUzE2SlNWYXJpYWJsZU9iamVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0
ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUUKLV9fWk4zS0pTMTZKU1ZhcmlhYmxlT2JqZWN0MTZz
ZXRSZWdpc3RlckFycmF5RVBOU184UmVnaXN0ZXJFbQotX19aTjNLSlMxNlBhcnNlclJlZkNvdW50
ZWQzcmVmRXYKLV9fWk4zS0pTMTZQYXJzZXJSZWZDb3VudGVkNWRlcmVmRXYKLV9fWk4zS0pTMTdQ
cm9wZXJ0eU5hbWVBcnJheTNhZGRFUE5TXzdVU3RyaW5nM1JlcEUKLV9fWk4zS0pTMTdQcm90b3R5
cGVGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRVBOU18xN0Z1bmN0aW9uUHJvdG90eXBlRWlSS05T
XzEwSWRlbnRpZmllckVQRlBOU183SlNWYWx1ZUVTMl9QTlNfOEpTT2JqZWN0RVM5X1JLTlNfN0Fy
Z0xpc3RFRQotX19aTjNLSlMxN1Byb3RvdHlwZUZ1bmN0aW9uQzFFUE5TXzlFeGVjU3RhdGVFaVJL
TlNfMTBJZGVudGlmaWVyRVBGUE5TXzdKU1ZhbHVlRVMyX1BOU184SlNPYmplY3RFUzdfUktOU183
QXJnTGlzdEVFCi1fX1pOM0tKUzE3Y29uc3RydWN0RnVuY3Rpb25FUE5TXzlFeGVjU3RhdGVFUktO
U183QXJnTGlzdEVSS05TXzEwSWRlbnRpZmllckVSS05TXzdVU3RyaW5nRWkKLV9fWk4zS0pTMTlj
b25zdHJ1Y3RFbXB0eUFycmF5RVBOU185RXhlY1N0YXRlRQotX19aTjNLSlMxOWluaXRpYWxpemVU
aHJlYWRpbmdFdgotX19aTjNLSlMyMHN0YXRpY0Z1bmN0aW9uR2V0dGVyRVBOU185RXhlY1N0YXRl
RVJLTlNfMTBJZGVudGlmaWVyRVJLTlNfMTJQcm9wZXJ0eVNsb3RFCi1fX1pOM0tKUzIzb2JqZWN0
UHJvdG9GdW5jVG9TdHJpbmdFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEVQTlNfN0pTVmFs
dWVFUktOU183QXJnTGlzdEUKLV9fWk4zS0pTMjNzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdEVQTlNf
OUV4ZWNTdGF0ZUVQS05TXzlIYXNoRW50cnlFUE5TXzhKU09iamVjdEVSS05TXzEwSWRlbnRpZmll
ckVSTlNfMTJQcm9wZXJ0eVNsb3RFCi1fX1pOM0tKUzRIZWFwMTRhbGxvY2F0ZU51bWJlckVtCi1f
X1pOM0tKUzRIZWFwMTVyZWNvcmRFeHRyYUNvc3RFbQotX19aTjNLSlM0SGVhcDE3Z2xvYmFsT2Jq
ZWN0Q291bnRFdgotX19aTjNLSlM0SGVhcDIwcHJvdGVjdGVkT2JqZWN0Q291bnRFdgotX19aTjNL
SlM0SGVhcDI0c2V0R0NQcm90ZWN0TmVlZHNMb2NraW5nRXYKLV9fWk4zS0pTNEhlYXAyNXByb3Rl
Y3RlZE9iamVjdFR5cGVDb3VudHNFdgotX19aTjNLSlM0SGVhcDI2cHJvdGVjdGVkR2xvYmFsT2Jq
ZWN0Q291bnRFdgotX19aTjNLSlM0SGVhcDRoZWFwRVBLTlNfN0pTVmFsdWVFCi1fX1pOM0tKUzRI
ZWFwNHNpemVFdgotX19aTjNLSlM0SGVhcDdjb2xsZWN0RXYKLV9fWk4zS0pTNEhlYXA3cHJvdGVj
dEVQTlNfN0pTVmFsdWVFCi1fX1pOM0tKUzRIZWFwOGFsbG9jYXRlRW0KLV9fWk4zS0pTNEhlYXA5
dW5wcm90ZWN0RVBOU183SlNWYWx1ZUUKLV9fWk4zS0pTNGNhbGxFUE5TXzlFeGVjU3RhdGVFUE5T
XzdKU1ZhbHVlRU5TXzhDYWxsVHlwZUVSS05TXzhDYWxsRGF0YUVTM19SS05TXzdBcmdMaXN0RQot
X19aTjNLSlM1ZXF1YWxFUEtOU183VVN0cmluZzNSZXBFUzNfCi1fX1pOM0tKUzZKU0NlbGwxMWdl
dENhbGxEYXRhRVJOU184Q2FsbERhdGFFCi1fX1pOM0tKUzZKU0NlbGwxMWdldEpTTnVtYmVyRXYK
LV9fWk4zS0pTNkpTQ2VsbDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElk
ZW50aWZpZXJFCi1fX1pOM0tKUzZKU0NlbGwxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRl
RWoKLV9fWk4zS0pTNkpTQ2VsbDE0dG9UaGlzSlNTdHJpbmdFUE5TXzlFeGVjU3RhdGVFCi1fX1pO
M0tKUzZKU0NlbGwxNmdldENvbnN0cnVjdERhdGFFUk5TXzEzQ29uc3RydWN0RGF0YUUKLV9fWk4z
S0pTNkpTQ2VsbDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKLV9fWk4zS0pTNkpTQ2VsbDE4Z2V0T3duUHJvcGVy
dHlTbG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCi1fX1pOM0tKUzZKU0Nl
bGwzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBOU183SlNWYWx1ZUVSTlNf
MTVQdXRQcm9wZXJ0eVNsb3RFCi1fX1pOM0tKUzZKU0NlbGwzcHV0RVBOU185RXhlY1N0YXRlRWpQ
TlNfN0pTVmFsdWVFCi1fX1pOM0tKUzZKU0NlbGw5Z2V0T2JqZWN0RXYKLV9fWk4zS0pTNkpTQ2Vs
bG53RW1QTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zS0pTNkpTTG9jazEyRHJvcEFsbExvY2tzQzFFUE5T
XzlFeGVjU3RhdGVFCi1fX1pOM0tKUzZKU0xvY2sxMkRyb3BBbGxMb2Nrc0MxRWIKLV9fWk4zS0pT
NkpTTG9jazEyRHJvcEFsbExvY2tzRDFFdgotX19aTjNLSlM2SlNMb2NrNGxvY2tFYgotX19aTjNL
SlM2SlNMb2NrNnVubG9ja0ViCi1fX1pOM0tKUzZKU0xvY2s5bG9ja0NvdW50RXYKLV9fWk4zS0pT
NkpTTG9ja0MxRVBOU185RXhlY1N0YXRlRQotX19aTjNLSlM2UGFyc2VyNXBhcnNlRVBOU185RXhl
Y1N0YXRlRVJLTlNfN1VTdHJpbmdFaU4zV1RGMTBQYXNzUmVmUHRySU5TXzE0U291cmNlUHJvdmlk
ZXJFRUVQaVNBX1BTM18KLV9fWk4zS0pTNnN0cnRvZEVQS2NQUGMKLV9fWk4zS0pTN0FyZ0xpc3Qx
MHNsb3dBcHBlbmRFUE5TXzdKU1ZhbHVlRQotX19aTjNLSlM3Q1N0cmluZ0QxRXYKLV9fWk4zS0pT
N0NTdHJpbmdhU0VSS1MwXwotX19aTjNLSlM3SlNBcnJheTRpbmZvRQotX19aTjNLSlM3UHJvZmls
ZTEwcmVzdG9yZUFsbEV2Ci1fX1pOM0tKUzdQcm9maWxlNWZvY3VzRVBLTlNfMTFQcm9maWxlTm9k
ZUUKLV9fWk4zS0pTN1Byb2ZpbGU3ZXhjbHVkZUVQS05TXzExUHJvZmlsZU5vZGVFCi1fX1pOM0tK
UzdQcm9maWxlN2ZvckVhY2hFTU5TXzExUHJvZmlsZU5vZGVFRnZ2RQotX19aTjNLSlM3VVN0cmlu
ZzNSZXAxMWNvbXB1dGVIYXNoRVBLdGkKLV9fWk4zS0pTN1VTdHJpbmczUmVwNG51bGxFCi1fX1pO
M0tKUzdVU3RyaW5nM1JlcDdkZXN0cm95RXYKLV9fWk4zS0pTN1VTdHJpbmc0ZnJvbUVqCi1fX1pO
M0tKUzdVU3RyaW5nNmFwcGVuZEVQS2MKLV9fWk4zS0pTN1VTdHJpbmc2YXBwZW5kRVJLUzBfCi1f
X1pOM0tKUzdVU3RyaW5nQzFFUEtjCi1fX1pOM0tKUzdVU3RyaW5nQzFFUEt0aQotX19aTjNLSlM3
VVN0cmluZ2FTRVBLYwotX19aTjNLSlM4RGVidWdnZXI2YXR0YWNoRVBOU18xNEpTR2xvYmFsT2Jq
ZWN0RQotX19aTjNLSlM4RGVidWdnZXI2ZGV0YWNoRVBOU18xNEpTR2xvYmFsT2JqZWN0RQotX19a
TjNLSlM4RGVidWdnZXJDMkV2Ci1fX1pOM0tKUzhEZWJ1Z2dlckQyRXYKLV9fWk4zS0pTOEpTT2Jq
ZWN0MTFoYXNJbnN0YW5jZUVQTlNfOUV4ZWNTdGF0ZUVQTlNfN0pTVmFsdWVFCi1fX1pOM0tKUzhK
U09iamVjdDEyZGVmaW5lR2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBT
MF8KLV9fWk4zS0pTOEpTT2JqZWN0MTJkZWZpbmVTZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFUFMwXwotX19aTjNLSlM4SlNPYmplY3QxMmxvb2t1cEdldHRlckVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKLV9fWk4zS0pTOEpTT2JqZWN0MTJsb29rdXBTZXR0
ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCi1fX1pOM0tKUzhKU09iamVjdDE0
ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCi1fX1pOM0tK
UzhKU09iamVjdDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFagotX19aTjNLSlM4SlNP
YmplY3QxNmdldFByb3BlcnR5TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1l
QXJyYXlFCi1fX1pOM0tKUzhKU09iamVjdDE3Y3JlYXRlSW5oZXJpdG9ySURFdgotX19aTjNLSlM4
SlNPYmplY3QxN3B1dERpcmVjdEZ1bmN0aW9uRVBOU185RXhlY1N0YXRlRVBOU18xNkludGVybmFs
RnVuY3Rpb25FagotX19aTjNLSlM4SlNPYmplY3QxN3B1dFdpdGhBdHRyaWJ1dGVzRVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBOU183SlNWYWx1ZUVqCi1fX1pOM0tKUzhKU09iamVj
dDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFalBOU183SlNWYWx1ZUVqCi1fX1pO
M0tKUzhKU09iamVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQ
cm9wZXJ0eVNsb3RFCi1fX1pOM0tKUzhKU09iamVjdDE4Z2V0UHJpbWl0aXZlTnVtYmVyRVBOU185
RXhlY1N0YXRlRVJkUlBOU183SlNWYWx1ZUUKLV9fWk4zS0pTOEpTT2JqZWN0MjJmaWxsR2V0dGVy
UHJvcGVydHlTbG90RVJOU18xMlByb3BlcnR5U2xvdEVQUE5TXzdKU1ZhbHVlRQotX19aTjNLSlM4
SlNPYmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBOU183SlNWYWx1
ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCi1fX1pOM0tKUzhKU09iamVjdDNwdXRFUE5TXzlFeGVj
U3RhdGVFalBOU183SlNWYWx1ZUUKLV9fWk4zS0pTOEpTT2JqZWN0NG1hcmtFdgotX19aTjNLSlM4
UHJvZmlsZXIxM3N0b3BQcm9maWxpbmdFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKLV9f
Wk4zS0pTOFByb2ZpbGVyMTRzdGFydFByb2ZpbGluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3Ry
aW5nRQotX19aTjNLSlM4UHJvZmlsZXI4cHJvZmlsZXJFdgotX19aTjNLSlM4anNTdHJpbmdFUE5T
XzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKLV9fWk4zS0pTOUNvZGVCbG9ja0QxRXYKLV9fWk4z
S0pTOUNvZGVCbG9ja0QyRXYKLV9fWk4zS0pTOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVQTlNf
N0pTVmFsdWVFTlNfMTNDb25zdHJ1Y3RUeXBlRVJLTlNfMTNDb25zdHJ1Y3REYXRhRVJLTlNfN0Fy
Z0xpc3RFCi1fX1pOM0tKU2VxRVJLTlNfN1VTdHJpbmdFUEtjCi1fX1pOM0tKU2d0RVJLTlNfN1VT
dHJpbmdFUzJfCi1fX1pOM0tKU2x0RVJLTlNfN1VTdHJpbmdFUzJfCitfX1pOMTRPcGFxdWVKU1N0
cmluZzZjcmVhdGVFUktOM0pTQzdVU3RyaW5nRQorX19aTjNKU0MxMElkZW50aWZpZXIxMWFkZFNs
b3dDYXNlRVBOU18xMkpTR2xvYmFsRGF0YUVQTlNfN1VTdHJpbmczUmVwRQorX19aTjNKU0MxMElk
ZW50aWZpZXIxMWFkZFNsb3dDYXNlRVBOU185RXhlY1N0YXRlRVBOU183VVN0cmluZzNSZXBFCitf
X1pOM0pTQzEwSWRlbnRpZmllcjNhZGRFUE5TXzlFeGVjU3RhdGVFUEtjCitfX1pOM0pTQzEwSWRl
bnRpZmllcjVlcXVhbEVQS05TXzdVU3RyaW5nM1JlcEVQS2MKK19fWk4zSlNDMTB0aHJvd0Vycm9y
RVBOU185RXhlY1N0YXRlRU5TXzlFcnJvclR5cGVFCitfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNf
OUV4ZWNTdGF0ZUVOU185RXJyb3JUeXBlRVBLYworX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlF
eGVjU3RhdGVFTlNfOUVycm9yVHlwZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxMUludGVycHJl
dGVyMTFjaGVja1N5bnRheEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRWlTNV8KK19fWk4z
SlNDMTFJbnRlcnByZXRlcjIxc2hvdWxkUHJpbnRFeGNlcHRpb25zRXYKK19fWk4zSlNDMTFJbnRl
cnByZXRlcjI0c2V0U2hvdWxkUHJpbnRFeGNlcHRpb25zRWIKK19fWk4zSlNDMTFJbnRlcnByZXRl
cjhldmFsdWF0ZUVQTlNfOUV4ZWNTdGF0ZUVSTlNfMTBTY29wZUNoYWluRVJLTlNfN1VTdHJpbmdF
aU4zV1RGMTBQYXNzUmVmUHRySU5TXzE0U291cmNlUHJvdmlkZXJFRUVQTlNfN0pTVmFsdWVFCitf
X1pOM0pTQzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVFUE5TXzlFeGVjU3RhdGVFUk5TXzEwU2NvcGVD
aGFpbkVSS05TXzdVU3RyaW5nRWlTN19QTlNfN0pTVmFsdWVFCitfX1pOM0pTQzExSlNJbW1lZGlh
dGU4dG9PYmplY3RFUEtOU183SlNWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUUKK19fWk4zSlNDMTFKU0lt
bWVkaWF0ZTh0b1N0cmluZ0VQS05TXzdKU1ZhbHVlRQorX19aTjNKU0MxMUpTSW1tZWRpYXRlOXBy
b3RvdHlwZUVQS05TXzdKU1ZhbHVlRVBOU185RXhlY1N0YXRlRQorX19aTjNKU0MxMVByb2ZpbGVO
b2RlNHNvcnRFUEZiUktOM1dURjZSZWZQdHJJUzBfRUVTNV9FCitfX1pOM0pTQzExUHJvZ3JhbU5v
ZGU2Y3JlYXRlRVBOU18xMkpTR2xvYmFsRGF0YUVQTlNfMTRTb3VyY2VFbGVtZW50c0VQTjNXVEY2
VmVjdG9ySVN0NHBhaXJJTlNfMTBJZGVudGlmaWVyRWpFTG0xNkVFRVBOUzZfSU5TNV82UmVmUHRy
SU5TXzEyRnVuY0RlY2xOb2RlRUVFTG0xNkVFRVBOU18xNFNvdXJjZVByb3ZpZGVyRWJiaQorX19a
TjNKU0MxMVByb3BlcnR5TWFwMTFnZXRMb2NhdGlvbkVSS05TXzEwSWRlbnRpZmllckUKK19fWk4z
SlNDMTFQcm9wZXJ0eU1hcDExZ2V0TG9jYXRpb25FUktOU18xMElkZW50aWZpZXJFUmIKK19fWk4z
SlNDMTFQcm9wZXJ0eU1hcDNwdXRFUktOU18xMElkZW50aWZpZXJFUE5TXzdKU1ZhbHVlRWpiUE5T
XzhKU09iamVjdEVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzExUHJvcGVydHlNYXBE
MUV2CitfX1pOM0pTQzExU3RydWN0dXJlSUQyMWFkZFByb3BlcnR5VHJhbnNpdGlvbkVQUzBfUktO
U18xMElkZW50aWZpZXJFCitfX1pOM0pTQzExU3RydWN0dXJlSUQyNGZyb21EaWN0aW9uYXJ5VHJh
bnNpdGlvbkVQUzBfCitfX1pOM0pTQzExU3RydWN0dXJlSUQyNWNoYW5nZVByb3RvdHlwZVRyYW5z
aXRpb25FUFMwX1BOU183SlNWYWx1ZUUKK19fWk4zSlNDMTFTdHJ1Y3R1cmVJREQxRXYKK19fWk4z
SlNDMTJEYXRlSW5zdGFuY2U0aW5mb0UKK19fWk4zSlNDMTJKU0dsb2JhbERhdGE2Y3JlYXRlRXYK
K19fWk4zSlNDMTJKU0dsb2JhbERhdGFEMUV2CitfX1pOM0pTQzEyU2FtcGxpbmdUb29sNGR1bXBF
UE5TXzlFeGVjU3RhdGVFCitfX1pOM0pTQzEyU2FtcGxpbmdUb29sNHN0b3BFdgorX19aTjNKU0Mx
MlNhbXBsaW5nVG9vbDVzdGFydEVqCitfX1pOM0pTQzEyU21hbGxTdHJpbmdzMTdjcmVhdGVFbXB0
eVN0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUKK19fWk4zSlNDMTJTdHJpbmdPYmplY3QxNGRlbGV0ZVBy
b3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQorX19aTjNKU0MxMlN0cmlu
Z09iamVjdDE0dG9UaGlzSlNTdHJpbmdFUE5TXzlFeGVjU3RhdGVFCitfX1pOM0pTQzEyU3RyaW5n
T2JqZWN0MTZnZXRQcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFt
ZUFycmF5RQorX19aTjNKU0MxMlN0cmluZ09iamVjdDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlND
MTJTdHJpbmdPYmplY3QxOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVqUk5TXzEy
UHJvcGVydHlTbG90RQorX19aTjNKU0MxMlN0cmluZ09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFUE5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKK19f
Wk4zSlNDMTJTdHJpbmdPYmplY3Q0aW5mb0UKK19fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVQTlNf
OUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RVJLTlNfN1VTdHJpbmdFCitfX1pOM0pTQzEzQ29kZUdl
bmVyYXRvcjIxc2V0RHVtcHNHZW5lcmF0ZWRDb2RlRWIKK19fWk4zSlNDMTNTdGF0ZW1lbnROb2Rl
NnNldExvY0VpaQorX19aTjNKU0MxM2pzT3duZWRTdHJpbmdFUE5TXzlFeGVjU3RhdGVFUktOU183
VVN0cmluZ0UKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEwZ2xvYmFsRXhlY0V2CitfX1pOM0pT
QzE0SlNHbG9iYWxPYmplY3QxMmRlZmluZUdldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRl
bnRpZmllckVQTlNfOEpTT2JqZWN0RQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVT
ZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzhKU09iamVjdEUKK19f
Wk4zSlNDMTRKU0dsb2JhbE9iamVjdDE0c2V0VGltZW91dFRpbWVFagorX19aTjNKU0MxNEpTR2xv
YmFsT2JqZWN0MTZzdG9wVGltZW91dENoZWNrRXYKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE3
cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzdK
U1ZhbHVlRWoKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDE3c3RhcnRUaW1lb3V0Q2hlY2tFdgor
X19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRp
ZmllckVQTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQorX19aTjNKU0MxNEpTR2xv
YmFsT2JqZWN0NGluaXRFUE5TXzhKU09iamVjdEUKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDRt
YXJrRXYKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdEQyRXYKK19fWk4zSlNDMTRKU0dsb2JhbE9i
amVjdG53RW1QTlNfMTJKU0dsb2JhbERhdGFFCitfX1pOM0pTQzE0Y29uc3RydWN0QXJyYXlFUE5T
XzlFeGVjU3RhdGVFUktOU183QXJnTGlzdEUKK19fWk4zSlNDMTVKU1dyYXBwZXJPYmplY3Q0bWFy
a0V2CitfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbjRpbmZvRQorX19aTjNKU0MxNkludGVybmFs
RnVuY3Rpb25DMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTdGdW5jdGlvblByb3RvdHlwZUVSS05TXzEw
SWRlbnRpZmllckUKK19fWk4zSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKK19fWk4zSlNDMTZKU1ZhcmlhYmxlT2Jq
ZWN0MTZnZXRQcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFy
cmF5RQorX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNnNldFJlZ2lzdGVyQXJyYXlFUE5TXzhS
ZWdpc3RlckVtCitfX1pOM0pTQzE2UGFyc2VyUmVmQ291bnRlZDNyZWZFdgorX19aTjNKU0MxNlBh
cnNlclJlZkNvdW50ZWQ1ZGVyZWZFdgorX19aTjNKU0MxN1Byb3BlcnR5TmFtZUFycmF5M2FkZEVQ
TlNfN1VTdHJpbmczUmVwRQorX19aTjNKU0MxN1Byb3RvdHlwZUZ1bmN0aW9uQzFFUE5TXzlFeGVj
U3RhdGVFUE5TXzE3RnVuY3Rpb25Qcm90b3R5cGVFaVJLTlNfMTBJZGVudGlmaWVyRVBGUE5TXzdK
U1ZhbHVlRVMyX1BOU184SlNPYmplY3RFUzlfUktOU183QXJnTGlzdEVFCitfX1pOM0pTQzE3UHJv
dG90eXBlRnVuY3Rpb25DMUVQTlNfOUV4ZWNTdGF0ZUVpUktOU18xMElkZW50aWZpZXJFUEZQTlNf
N0pTVmFsdWVFUzJfUE5TXzhKU09iamVjdEVTN19SS05TXzdBcmdMaXN0RUUKK19fWk4zSlNDMTdj
b25zdHJ1Y3RGdW5jdGlvbkVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdBcmdMaXN0RVJLTlNfMTBJZGVu
dGlmaWVyRVJLTlNfN1VTdHJpbmdFaQorX19aTjNKU0MxOWNvbnN0cnVjdEVtcHR5QXJyYXlFUE5T
XzlFeGVjU3RhdGVFCitfX1pOM0pTQzE5aW5pdGlhbGl6ZVRocmVhZGluZ0V2CitfX1pOM0pTQzIw
c3RhdGljRnVuY3Rpb25HZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUktO
U18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDMjNvYmplY3RQcm90b0Z1bmNUb1N0cmluZ0VQTlNf
OUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RVBOU183SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQorX19a
TjNKU0MyM3NldFVwU3RhdGljRnVuY3Rpb25TbG90RVBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hF
bnRyeUVQTlNfOEpTT2JqZWN0RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUK
K19fWk4zSlNDNEhlYXAxNGFsbG9jYXRlTnVtYmVyRW0KK19fWk4zSlNDNEhlYXAxNXJlY29yZEV4
dHJhQ29zdEVtCitfX1pOM0pTQzRIZWFwMTdnbG9iYWxPYmplY3RDb3VudEV2CitfX1pOM0pTQzRI
ZWFwMjBwcm90ZWN0ZWRPYmplY3RDb3VudEV2CitfX1pOM0pTQzRIZWFwMjRzZXRHQ1Byb3RlY3RO
ZWVkc0xvY2tpbmdFdgorX19aTjNKU0M0SGVhcDI1cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50c0V2
CitfX1pOM0pTQzRIZWFwMjZwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudEV2CitfX1pOM0pTQzRI
ZWFwNGhlYXBFUEtOU183SlNWYWx1ZUUKK19fWk4zSlNDNEhlYXA0c2l6ZUV2CitfX1pOM0pTQzRI
ZWFwN2NvbGxlY3RFdgorX19aTjNKU0M0SGVhcDdwcm90ZWN0RVBOU183SlNWYWx1ZUUKK19fWk4z
SlNDNEhlYXA4YWxsb2NhdGVFbQorX19aTjNKU0M0SGVhcDl1bnByb3RlY3RFUE5TXzdKU1ZhbHVl
RQorX19aTjNKU0M0Y2FsbEVQTlNfOUV4ZWNTdGF0ZUVQTlNfN0pTVmFsdWVFTlNfOENhbGxUeXBl
RVJLTlNfOENhbGxEYXRhRVMzX1JLTlNfN0FyZ0xpc3RFCitfX1pOM0pTQzVlcXVhbEVQS05TXzdV
U3RyaW5nM1JlcEVTM18KK19fWk4zSlNDNkpTQ2VsbDExZ2V0Q2FsbERhdGFFUk5TXzhDYWxsRGF0
YUUKK19fWk4zSlNDNkpTQ2VsbDExZ2V0SlNOdW1iZXJFdgorX19aTjNKU0M2SlNDZWxsMTRkZWxl
dGVQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKK19fWk4zSlNDNkpT
Q2VsbDE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFagorX19aTjNKU0M2SlNDZWxsMTR0
b1RoaXNKU1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUKK19fWk4zSlNDNkpTQ2VsbDE2Z2V0Q29uc3Ry
dWN0RGF0YUVSTlNfMTNDb25zdHJ1Y3REYXRhRQorX19aTjNKU0M2SlNDZWxsMThnZXRPd25Qcm9w
ZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJvcGVydHlT
bG90RQorX19aTjNKU0M2SlNDZWxsMThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVF
alJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlNDNkpTQ2VsbDNwdXRFUE5TXzlFeGVjU3RhdGVF
UktOU18xMElkZW50aWZpZXJFUE5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKK19f
Wk4zSlNDNkpTQ2VsbDNwdXRFUE5TXzlFeGVjU3RhdGVFalBOU183SlNWYWx1ZUUKK19fWk4zSlND
NkpTQ2VsbDlnZXRPYmplY3RFdgorX19aTjNKU0M2SlNDZWxsbndFbVBOU185RXhlY1N0YXRlRQor
X19aTjNKU0M2SlNMb2NrMTJEcm9wQWxsTG9ja3NDMUVQTlNfOUV4ZWNTdGF0ZUUKK19fWk4zSlND
NkpTTG9jazEyRHJvcEFsbExvY2tzQzFFYgorX19aTjNKU0M2SlNMb2NrMTJEcm9wQWxsTG9ja3NE
MUV2CitfX1pOM0pTQzZKU0xvY2s0bG9ja0ViCitfX1pOM0pTQzZKU0xvY2s2dW5sb2NrRWIKK19f
Wk4zSlNDNkpTTG9jazlsb2NrQ291bnRFdgorX19aTjNKU0M2SlNMb2NrQzFFUE5TXzlFeGVjU3Rh
dGVFCitfX1pOM0pTQzZQYXJzZXI1cGFyc2VFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0Vp
TjNXVEYxMFBhc3NSZWZQdHJJTlNfMTRTb3VyY2VQcm92aWRlckVFRVBpU0FfUFMzXworX19aTjNK
U0M2c3RydG9kRVBLY1BQYworX19aTjNKU0M3QXJnTGlzdDEwc2xvd0FwcGVuZEVQTlNfN0pTVmFs
dWVFCitfX1pOM0pTQzdDU3RyaW5nRDFFdgorX19aTjNKU0M3Q1N0cmluZ2FTRVJLUzBfCitfX1pO
M0pTQzdKU0FycmF5NGluZm9FCitfX1pOM0pTQzdQcm9maWxlMTByZXN0b3JlQWxsRXYKK19fWk4z
SlNDN1Byb2ZpbGU1Zm9jdXNFUEtOU18xMVByb2ZpbGVOb2RlRQorX19aTjNKU0M3UHJvZmlsZTdl
eGNsdWRlRVBLTlNfMTFQcm9maWxlTm9kZUUKK19fWk4zSlNDN1Byb2ZpbGU3Zm9yRWFjaEVNTlNf
MTFQcm9maWxlTm9kZUVGdnZFCitfX1pOM0pTQzdVU3RyaW5nM1JlcDExY29tcHV0ZUhhc2hFUEt0
aQorX19aTjNKU0M3VVN0cmluZzNSZXA0bnVsbEUKK19fWk4zSlNDN1VTdHJpbmczUmVwN2Rlc3Ry
b3lFdgorX19aTjNKU0M3VVN0cmluZzRmcm9tRWoKK19fWk4zSlNDN1VTdHJpbmc2YXBwZW5kRVBL
YworX19aTjNKU0M3VVN0cmluZzZhcHBlbmRFUktTMF8KK19fWk4zSlNDN1VTdHJpbmdDMUVQS2MK
K19fWk4zSlNDN1VTdHJpbmdDMUVQS3RpCitfX1pOM0pTQzdVU3RyaW5nYVNFUEtjCitfX1pOM0pT
QzhEZWJ1Z2dlcjZhdHRhY2hFUE5TXzE0SlNHbG9iYWxPYmplY3RFCitfX1pOM0pTQzhEZWJ1Z2dl
cjZkZXRhY2hFUE5TXzE0SlNHbG9iYWxPYmplY3RFCitfX1pOM0pTQzhEZWJ1Z2dlckMyRXYKK19f
Wk4zSlNDOERlYnVnZ2VyRDJFdgorX19aTjNKU0M4SlNPYmplY3QxMWhhc0luc3RhbmNlRVBOU185
RXhlY1N0YXRlRVBOU183SlNWYWx1ZUUKK19fWk4zSlNDOEpTT2JqZWN0MTJkZWZpbmVHZXR0ZXJF
UE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUFMwXworX19aTjNKU0M4SlNPYmplY3Qx
MmRlZmluZVNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVQUzBfCitfX1pO
M0pTQzhKU09iamVjdDEybG9va3VwR2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRQorX19aTjNKU0M4SlNPYmplY3QxMmxvb2t1cFNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05T
XzEwSWRlbnRpZmllckUKK19fWk4zSlNDOEpTT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKK19fWk4zSlNDOEpTT2JqZWN0MTRkZWxldGVQcm9w
ZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqCitfX1pOM0pTQzhKU09iamVjdDE2Z2V0UHJvcGVydHlOYW1l
c0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUUKK19fWk4zSlNDOEpTT2Jq
ZWN0MTdjcmVhdGVJbmhlcml0b3JJREV2CitfX1pOM0pTQzhKU09iamVjdDE3cHV0RGlyZWN0RnVu
Y3Rpb25FUE5TXzlFeGVjU3RhdGVFUE5TXzE2SW50ZXJuYWxGdW5jdGlvbkVqCitfX1pOM0pTQzhK
U09iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFUE5TXzdKU1ZhbHVlRWoKK19fWk4zSlNDOEpTT2JqZWN0MTdwdXRXaXRoQXR0cmlidXRlc0VQ
TlNfOUV4ZWNTdGF0ZUVqUE5TXzdKU1ZhbHVlRWoKK19fWk4zSlNDOEpTT2JqZWN0MThnZXRPd25Q
cm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xvdEUKK19fWk4zSlND
OEpTT2JqZWN0MThnZXRQcmltaXRpdmVOdW1iZXJFUE5TXzlFeGVjU3RhdGVFUmRSUE5TXzdKU1Zh
bHVlRQorX19aTjNKU0M4SlNPYmplY3QyMmZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3RFUk5TXzEyUHJv
cGVydHlTbG90RVBQTlNfN0pTVmFsdWVFCitfX1pOM0pTQzhKU09iamVjdDNwdXRFUE5TXzlFeGVj
U3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xv
dEUKK19fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVqUE5TXzdKU1ZhbHVlRQor
X19aTjNKU0M4SlNPYmplY3Q0bWFya0V2CitfX1pOM0pTQzhQcm9maWxlcjEzc3RvcFByb2ZpbGlu
Z0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0M4UHJvZmlsZXIxNHN0YXJ0
UHJvZmlsaW5nRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCitfX1pOM0pTQzhQcm9maWxl
cjhwcm9maWxlckV2CitfX1pOM0pTQzhqc1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3Ry
aW5nRQorX19aTjNKU0M5Q29kZUJsb2NrRDFFdgorX19aTjNKU0M5Q29kZUJsb2NrRDJFdgorX19a
TjNKU0M5Y29uc3RydWN0RVBOU185RXhlY1N0YXRlRVBOU183SlNWYWx1ZUVOU18xM0NvbnN0cnVj
dFR5cGVFUktOU18xM0NvbnN0cnVjdERhdGFFUktOU183QXJnTGlzdEUKK19fWk4zSlNDZXFFUktO
U183VVN0cmluZ0VQS2MKK19fWk4zSlNDZ3RFUktOU183VVN0cmluZ0VTMl8KK19fWk4zSlNDbHRF
UktOU183VVN0cmluZ0VTMl8KIF9fWk4zV1RGMTBmYXN0Q2FsbG9jRW1tCiBfX1pOM1dURjEwZmFz
dE1hbGxvY0VtCiBfX1pOM1dURjExZmFzdFJlYWxsb2NFUHZtCkBAIC0yNzcsNjggKzI3Nyw2OCBA
QCBfX1pOM1dURjhDb2xsYXRvcjE4c2V0T3JkZXJMb3dlckZpcnN0RWIKIF9fWk4zV1RGOENvbGxh
dG9yQzFFUEtjCiBfX1pOM1dURjhDb2xsYXRvckQxRXYKIF9fWk4zV1RGOGZhc3RGcmVlRVB2Ci1f
X1pOSzNLSlMxMVByb3BlcnR5TWFwM2dldEVSS05TXzEwSWRlbnRpZmllckUKLV9fWk5LM0tKUzEy
RGF0ZUluc3RhbmNlN2dldFRpbWVFUmRSaQotX19aTkszS0pTMTJTdHJpbmdPYmplY3QxMnRvVGhp
c1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUKLV9fWk5LM0tKUzEyU3RyaW5nT2JqZWN0OHRvU3RyaW5n
RVBOU185RXhlY1N0YXRlRQotX19aTkszS0pTMTRKU0dsb2JhbE9iamVjdDE0aXNEeW5hbWljU2Nv
cGVFdgotX19aTkszS0pTMTRKU0dsb2JhbE9iamVjdDE0dG9HbG9iYWxPYmplY3RFUE5TXzlFeGVj
U3RhdGVFCi1fX1pOSzNLSlMxNkludGVybmFsRnVuY3Rpb24yMWltcGxlbWVudHNIYXNJbnN0YW5j
ZUV2Ci1fX1pOSzNLSlMxNkpTVmFyaWFibGVPYmplY3QxNmlzVmFyaWFibGVPYmplY3RFdgotX19a
TkszS0pTMTZKU1ZhcmlhYmxlT2JqZWN0MjFnZXRQcm9wZXJ0eUF0dHJpYnV0ZXNFUE5TXzlFeGVj
U3RhdGVFUktOU18xMElkZW50aWZpZXJFUmoKLV9fWk5LM0tKUzE3RGVidWdnZXJDYWxsRnJhbWUx
MHRoaXNPYmplY3RFdgotX19aTkszS0pTMTdEZWJ1Z2dlckNhbGxGcmFtZTEyZnVuY3Rpb25OYW1l
RXYKLV9fWk5LM0tKUzE3RGVidWdnZXJDYWxsRnJhbWU0dHlwZUV2Ci1fX1pOSzNLSlMxN0RlYnVn
Z2VyQ2FsbEZyYW1lOGV2YWx1YXRlRVJLTlNfN1VTdHJpbmdFUlBOU183SlNWYWx1ZUUKLV9fWk5L
M0tKUzROb2RlOHRvU3RyaW5nRXYKLV9fWk5LM0tKUzZKU0NlbGwxMnRvVGhpc09iamVjdEVQTlNf
OUV4ZWNTdGF0ZUUKLV9fWk5LM0tKUzZKU0NlbGwxMnRvVGhpc1N0cmluZ0VQTlNfOUV4ZWNTdGF0
ZUUKLV9fWk5LM0tKUzZKU0NlbGwxNGlzR2V0dGVyU2V0dGVyRXYKLV9fWk5LM0tKUzZKU0NlbGwx
N2dldFRydW5jYXRlZEludDMyRVJpCi1fX1pOSzNLSlM2SlNDZWxsMThnZXRUcnVuY2F0ZWRVSW50
MzJFUmoKLV9fWk5LM0tKUzZKU0NlbGw4aXNPYmplY3RFdgotX19aTkszS0pTNkpTQ2VsbDhpc1N0
cmluZ0V2Ci1fX1pOSzNLSlM2SlNDZWxsOWNsYXNzSW5mb0V2Ci1fX1pOSzNLSlM2SlNDZWxsOWdl
dE51bWJlckV2Ci1fX1pOSzNLSlM2SlNDZWxsOWdldFN0cmluZ0VSTlNfN1VTdHJpbmdFCi1fX1pO
SzNLSlM2SlNDZWxsOWdldFN0cmluZ0V2Ci1fX1pOSzNLSlM2SlNDZWxsOWdldFVJbnQzMkVSagot
X19aTkszS0pTN0FyZ0xpc3Q4Z2V0U2xpY2VFaVJTMF8KLV9fWk5LM0tKUzdKU1ZhbHVlMTV0b0lu
dDMyU2xvd0Nhc2VFUE5TXzlFeGVjU3RhdGVFUmIKLV9fWk5LM0tKUzdKU1ZhbHVlMTZ0b1VJbnQz
MlNsb3dDYXNlRVBOU185RXhlY1N0YXRlRVJiCi1fX1pOSzNLSlM3SlNWYWx1ZTd0b0Zsb2F0RVBO
U185RXhlY1N0YXRlRQotX19aTkszS0pTN0pTVmFsdWU5dG9JbnRlZ2VyRVBOU185RXhlY1N0YXRl
RQotX19aTkszS0pTN01hY2hpbmUxOHJldHJpZXZlTGFzdENhbGxlckVQTlNfOUV4ZWNTdGF0ZUVS
aVMzX1JOU183VVN0cmluZ0VSUE5TXzdKU1ZhbHVlRQotX19aTkszS0pTN1VTdHJpbmcxMFVURjhT
dHJpbmdFYgotX19aTkszS0pTN1VTdHJpbmcxNHRvU3RyaWN0VUludDMyRVBiCi1fX1pOSzNLSlM3
VVN0cmluZzVhc2NpaUV2Ci1fX1pOSzNLSlM3VVN0cmluZzZpczhCaXRFdgotX19aTkszS0pTN1VT
dHJpbmc2c3Vic3RyRWlpCi1fX1pOSzNLSlM3VVN0cmluZzh0b1VJbnQzMkVQYgotX19aTkszS0pT
N1VTdHJpbmc4dG9VSW50MzJFUGJiCi1fX1pOSzNLSlM4SlNPYmplY3QxMWhhc1Byb3BlcnR5RVBO
U185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQotX19aTkszS0pTOEpTT2JqZWN0MTFoYXNQ
cm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqCi1fX1pOSzNLSlM4SlNPYmplY3QxMmRlZmF1bHRWYWx1
ZUVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZTIyUHJlZmVycmVkUHJpbWl0aXZlVHlwZUUKLV9f
Wk5LM0tKUzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU185RXhlY1N0YXRlRQotX19aTkszS0pT
OEpTT2JqZWN0MTR0b0dsb2JhbE9iamVjdEVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk5LM0tKUzhKU09i
amVjdDIxZ2V0UHJvcGVydHlBdHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRVJqCi1fX1pOSzNLSlM4SlNPYmplY3QyMWltcGxlbWVudHNIYXNJbnN0YW5jZUV2Ci1fX1pO
SzNLSlM4SlNPYmplY3Q4aXNPYmplY3RFdgotX19aTkszS0pTOEpTT2JqZWN0OHRvTnVtYmVyRVBO
U185RXhlY1N0YXRlRQotX19aTkszS0pTOEpTT2JqZWN0OHRvT2JqZWN0RVBOU185RXhlY1N0YXRl
RQotX19aTkszS0pTOEpTT2JqZWN0OHRvU3RyaW5nRVBOU185RXhlY1N0YXRlRQotX19aTkszS0pT
OEpTT2JqZWN0OWNsYXNzTmFtZUV2Ci1fX1pOSzNLSlM4SlNPYmplY3Q5dG9Cb29sZWFuRVBOU185
RXhlY1N0YXRlRQotX19aTkszS0pTOUNvZGVCbG9jazE3ZGVyZWZTdHJ1Y3R1cmVJRHNFUE5TXzEx
SW5zdHJ1Y3Rpb25FCi1fX1pOSzNLSlM5SGFzaFRhYmxlMTFjcmVhdGVUYWJsZUVQTlNfMTJKU0ds
b2JhbERhdGFFCitfX1pOSzNKU0MxMVByb3BlcnR5TWFwM2dldEVSS05TXzEwSWRlbnRpZmllckUK
K19fWk5LM0pTQzEyRGF0ZUluc3RhbmNlN2dldFRpbWVFUmRSaQorX19aTkszSlNDMTJTdHJpbmdP
YmplY3QxMnRvVGhpc1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUKK19fWk5LM0pTQzEyU3RyaW5nT2Jq
ZWN0OHRvU3RyaW5nRVBOU185RXhlY1N0YXRlRQorX19aTkszSlNDMTRKU0dsb2JhbE9iamVjdDE0
aXNEeW5hbWljU2NvcGVFdgorX19aTkszSlNDMTRKU0dsb2JhbE9iamVjdDE0dG9HbG9iYWxPYmpl
Y3RFUE5TXzlFeGVjU3RhdGVFCitfX1pOSzNKU0MxNkludGVybmFsRnVuY3Rpb24yMWltcGxlbWVu
dHNIYXNJbnN0YW5jZUV2CitfX1pOSzNKU0MxNkpTVmFyaWFibGVPYmplY3QxNmlzVmFyaWFibGVP
YmplY3RFdgorX19aTkszSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MjFnZXRQcm9wZXJ0eUF0dHJpYnV0
ZXNFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUmoKK19fWk5LM0pTQzE3RGVidWdn
ZXJDYWxsRnJhbWUxMHRoaXNPYmplY3RFdgorX19aTkszSlNDMTdEZWJ1Z2dlckNhbGxGcmFtZTEy
ZnVuY3Rpb25OYW1lRXYKK19fWk5LM0pTQzE3RGVidWdnZXJDYWxsRnJhbWU0dHlwZUV2CitfX1pO
SzNKU0MxN0RlYnVnZ2VyQ2FsbEZyYW1lOGV2YWx1YXRlRVJLTlNfN1VTdHJpbmdFUlBOU183SlNW
YWx1ZUUKK19fWk5LM0pTQzROb2RlOHRvU3RyaW5nRXYKK19fWk5LM0pTQzZKU0NlbGwxMnRvVGhp
c09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUKK19fWk5LM0pTQzZKU0NlbGwxMnRvVGhpc1N0cmluZ0VQ
TlNfOUV4ZWNTdGF0ZUUKK19fWk5LM0pTQzZKU0NlbGwxNGlzR2V0dGVyU2V0dGVyRXYKK19fWk5L
M0pTQzZKU0NlbGwxN2dldFRydW5jYXRlZEludDMyRVJpCitfX1pOSzNKU0M2SlNDZWxsMThnZXRU
cnVuY2F0ZWRVSW50MzJFUmoKK19fWk5LM0pTQzZKU0NlbGw4aXNPYmplY3RFdgorX19aTkszSlND
NkpTQ2VsbDhpc1N0cmluZ0V2CitfX1pOSzNKU0M2SlNDZWxsOWNsYXNzSW5mb0V2CitfX1pOSzNK
U0M2SlNDZWxsOWdldE51bWJlckV2CitfX1pOSzNKU0M2SlNDZWxsOWdldFN0cmluZ0VSTlNfN1VT
dHJpbmdFCitfX1pOSzNKU0M2SlNDZWxsOWdldFN0cmluZ0V2CitfX1pOSzNKU0M2SlNDZWxsOWdl
dFVJbnQzMkVSagorX19aTkszSlNDN0FyZ0xpc3Q4Z2V0U2xpY2VFaVJTMF8KK19fWk5LM0pTQzdK
U1ZhbHVlMTV0b0ludDMyU2xvd0Nhc2VFUE5TXzlFeGVjU3RhdGVFUmIKK19fWk5LM0pTQzdKU1Zh
bHVlMTZ0b1VJbnQzMlNsb3dDYXNlRVBOU185RXhlY1N0YXRlRVJiCitfX1pOSzNKU0M3SlNWYWx1
ZTd0b0Zsb2F0RVBOU185RXhlY1N0YXRlRQorX19aTkszSlNDN0pTVmFsdWU5dG9JbnRlZ2VyRVBO
U185RXhlY1N0YXRlRQorX19aTkszSlNDN01hY2hpbmUxOHJldHJpZXZlTGFzdENhbGxlckVQTlNf
OUV4ZWNTdGF0ZUVSaVMzX1JOU183VVN0cmluZ0VSUE5TXzdKU1ZhbHVlRQorX19aTkszSlNDN1VT
dHJpbmcxMFVURjhTdHJpbmdFYgorX19aTkszSlNDN1VTdHJpbmcxNHRvU3RyaWN0VUludDMyRVBi
CitfX1pOSzNKU0M3VVN0cmluZzVhc2NpaUV2CitfX1pOSzNKU0M3VVN0cmluZzZpczhCaXRFdgor
X19aTkszSlNDN1VTdHJpbmc2c3Vic3RyRWlpCitfX1pOSzNKU0M3VVN0cmluZzh0b1VJbnQzMkVQ
YgorX19aTkszSlNDN1VTdHJpbmc4dG9VSW50MzJFUGJiCitfX1pOSzNKU0M4SlNPYmplY3QxMWhh
c1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQorX19aTkszSlNDOEpT
T2JqZWN0MTFoYXNQcm9wZXJ0eUVQTlNfOUV4ZWNTdGF0ZUVqCitfX1pOSzNKU0M4SlNPYmplY3Qx
MmRlZmF1bHRWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZTIyUHJlZmVycmVkUHJpbWl0
aXZlVHlwZUUKK19fWk5LM0pTQzhKU09iamVjdDEydG9UaGlzT2JqZWN0RVBOU185RXhlY1N0YXRl
RQorX19aTkszSlNDOEpTT2JqZWN0MTR0b0dsb2JhbE9iamVjdEVQTlNfOUV4ZWNTdGF0ZUUKK19f
Wk5LM0pTQzhKU09iamVjdDIxZ2V0UHJvcGVydHlBdHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRVJqCitfX1pOSzNKU0M4SlNPYmplY3QyMWltcGxlbWVudHNIYXNJbnN0
YW5jZUV2CitfX1pOSzNKU0M4SlNPYmplY3Q4aXNPYmplY3RFdgorX19aTkszSlNDOEpTT2JqZWN0
OHRvTnVtYmVyRVBOU185RXhlY1N0YXRlRQorX19aTkszSlNDOEpTT2JqZWN0OHRvT2JqZWN0RVBO
U185RXhlY1N0YXRlRQorX19aTkszSlNDOEpTT2JqZWN0OHRvU3RyaW5nRVBOU185RXhlY1N0YXRl
RQorX19aTkszSlNDOEpTT2JqZWN0OWNsYXNzTmFtZUV2CitfX1pOSzNKU0M4SlNPYmplY3Q5dG9C
b29sZWFuRVBOU185RXhlY1N0YXRlRQorX19aTkszSlNDOUNvZGVCbG9jazE3ZGVyZWZTdHJ1Y3R1
cmVJRHNFUE5TXzExSW5zdHJ1Y3Rpb25FCitfX1pOSzNKU0M5SGFzaFRhYmxlMTFjcmVhdGVUYWJs
ZUVQTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOSzNXVEY4Q29sbGF0b3I3Y29sbGF0ZUVQS3RtUzJf
bQotX19aVFZOM0tKUzEySlNOdW1iZXJDZWxsRQotX19aVFZOM0tKUzEyU3RyaW5nT2JqZWN0RQot
X19aVFZOM0tKUzE0SlNHbG9iYWxPYmplY3RFCi1fX1pUVk4zS0pTMTVKU1dyYXBwZXJPYmplY3RF
Ci1fX1pUVk4zS0pTMTZJbnRlcm5hbEZ1bmN0aW9uRQotX19aVFZOM0tKUzE2SlNWYXJpYWJsZU9i
amVjdEUKLV9fWlRWTjNLSlM4SlNPYmplY3RFCi1fX1pUVk4zS0pTOEpTU3RyaW5nRQorX19aVFZO
M0pTQzEySlNOdW1iZXJDZWxsRQorX19aVFZOM0pTQzEyU3RyaW5nT2JqZWN0RQorX19aVFZOM0pT
QzE0SlNHbG9iYWxPYmplY3RFCitfX1pUVk4zSlNDMTVKU1dyYXBwZXJPYmplY3RFCitfX1pUVk4z
SlNDMTZJbnRlcm5hbEZ1bmN0aW9uRQorX19aVFZOM0pTQzE2SlNWYXJpYWJsZU9iamVjdEUKK19f
WlRWTjNKU0M4SlNPYmplY3RFCitfX1pUVk4zSlNDOEpTU3RyaW5nRQogX2pzY29yZV9mYXN0bWFs
bG9jX2ludHJvc3BlY3Rpb24KIF9rSlNDbGFzc0RlZmluaXRpb25FbXB0eQpJbmRleDogSmF2YVNj
cmlwdENvcmUvQVBJL0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkv
QVBJQ2FzdC5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJ1c3RyaW5nLmgi
CiAjaW5jbHVkZSAiRXhlY1N0YXRlLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3Mg
SlNPYmplY3Q7CkBAIC00NSw3MiArNDUsNzIgQEAgdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNWYWx1
ZSogSlNPYmplY3RSZQogCiAvKiBPcGFxdWUgdHlwaW5nIGNvbnZlbmllbmNlIG1ldGhvZHMgKi8K
IAotaW5saW5lIEtKUzo6RXhlY1N0YXRlKiB0b0pTKEpTQ29udGV4dFJlZiBjKQoraW5saW5lIEpT
Qzo6RXhlY1N0YXRlKiB0b0pTKEpTQ29udGV4dFJlZiBjKQogewotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEtKUzo6RXhlY1N0YXRlKj4oY29uc3RfY2FzdDxPcGFxdWVKU0NvbnRleHQqPihj
KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDOjpFeGVjU3RhdGUqPihjb25zdF9j
YXN0PE9wYXF1ZUpTQ29udGV4dCo+KGMpKTsKIH0KIAotaW5saW5lIEtKUzo6RXhlY1N0YXRlKiB0
b0pTKEpTR2xvYmFsQ29udGV4dFJlZiBjKQoraW5saW5lIEpTQzo6RXhlY1N0YXRlKiB0b0pTKEpT
R2xvYmFsQ29udGV4dFJlZiBjKQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEtKUzo6
RXhlY1N0YXRlKj4oYyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDOjpFeGVjU3Rh
dGUqPihjKTsKIH0KIAotaW5saW5lIEtKUzo6SlNWYWx1ZSogdG9KUyhKU1ZhbHVlUmVmIHYpCitp
bmxpbmUgSlNDOjpKU1ZhbHVlKiB0b0pTKEpTVmFsdWVSZWYgdikKIHsKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxLSlM6OkpTVmFsdWUqPihjb25zdF9jYXN0PE9wYXF1ZUpTVmFsdWUqPih2
KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDOjpKU1ZhbHVlKj4oY29uc3RfY2Fz
dDxPcGFxdWVKU1ZhbHVlKj4odikpOwogfQogCi1pbmxpbmUgS0pTOjpKU09iamVjdCogdG9KUyhK
U09iamVjdFJlZiBvKQoraW5saW5lIEpTQzo6SlNPYmplY3QqIHRvSlMoSlNPYmplY3RSZWYgbykK
IHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxLSlM6OkpTT2JqZWN0Kj4obyk7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDOjpKU09iamVjdCo+KG8pOwogfQogCi1pbmxpbmUg
S0pTOjpQcm9wZXJ0eU5hbWVBcnJheSogdG9KUyhKU1Byb3BlcnR5TmFtZUFjY3VtdWxhdG9yUmVm
IGEpCitpbmxpbmUgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSogdG9KUyhKU1Byb3BlcnR5TmFtZUFj
Y3VtdWxhdG9yUmVmIGEpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8S0pTOjpQcm9w
ZXJ0eU5hbWVBcnJheSo+KGEpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQzo6UHJv
cGVydHlOYW1lQXJyYXkqPihhKTsKIH0KIAotaW5saW5lIEtKUzo6SlNHbG9iYWxEYXRhKiB0b0pT
KEpTQ29udGV4dEdyb3VwUmVmIGcpCitpbmxpbmUgSlNDOjpKU0dsb2JhbERhdGEqIHRvSlMoSlND
b250ZXh0R3JvdXBSZWYgZykKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxLSlM6OkpT
R2xvYmFsRGF0YSo+KGNvbnN0X2Nhc3Q8T3BhcXVlSlNDb250ZXh0R3JvdXAqPihnKSk7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDOjpKU0dsb2JhbERhdGEqPihjb25zdF9jYXN0PE9w
YXF1ZUpTQ29udGV4dEdyb3VwKj4oZykpOwogfQogCi1pbmxpbmUgSlNWYWx1ZVJlZiB0b1JlZihL
SlM6OkpTVmFsdWUqIHYpCitpbmxpbmUgSlNWYWx1ZVJlZiB0b1JlZihKU0M6OkpTVmFsdWUqIHYp
CiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZVJlZj4odik7CiB9CiAKLWlu
bGluZSBKU1ZhbHVlUmVmKiB0b1JlZihLSlM6OkpTVmFsdWUqKiB2KQoraW5saW5lIEpTVmFsdWVS
ZWYqIHRvUmVmKEpTQzo6SlNWYWx1ZSoqIHYpCiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8SlNWYWx1ZVJlZio+KGNvbnN0X2Nhc3Q8Y29uc3QgS0pTOjpKU1ZhbHVlKio+KHYpKTsKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlUmVmKj4oY29uc3RfY2FzdDxjb25zdCBK
U0M6OkpTVmFsdWUqKj4odikpOwogfQogCi1pbmxpbmUgSlNPYmplY3RSZWYgdG9SZWYoS0pTOjpK
U09iamVjdCogbykKK2lubGluZSBKU09iamVjdFJlZiB0b1JlZihKU0M6OkpTT2JqZWN0KiBvKQog
ewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTT2JqZWN0UmVmPihvKTsKIH0KIAotaW5s
aW5lIEpTT2JqZWN0UmVmIHRvUmVmKGNvbnN0IEtKUzo6SlNPYmplY3QqIG8pCitpbmxpbmUgSlNP
YmplY3RSZWYgdG9SZWYoY29uc3QgSlNDOjpKU09iamVjdCogbykKIHsKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxKU09iamVjdFJlZj4oY29uc3RfY2FzdDxLSlM6OkpTT2JqZWN0Kj4obykp
OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTT2JqZWN0UmVmPihjb25zdF9jYXN0PEpT
Qzo6SlNPYmplY3QqPihvKSk7CiB9CiAKLWlubGluZSBKU0NvbnRleHRSZWYgdG9SZWYoS0pTOjpF
eGVjU3RhdGUqIGUpCitpbmxpbmUgSlNDb250ZXh0UmVmIHRvUmVmKEpTQzo6RXhlY1N0YXRlKiBl
KQogewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ29udGV4dFJlZj4oZSk7CiB9CiAK
LWlubGluZSBKU0dsb2JhbENvbnRleHRSZWYgdG9HbG9iYWxSZWYoS0pTOjpFeGVjU3RhdGUqIGUp
CitpbmxpbmUgSlNHbG9iYWxDb250ZXh0UmVmIHRvR2xvYmFsUmVmKEpTQzo6RXhlY1N0YXRlKiBl
KQogewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTR2xvYmFsQ29udGV4dFJlZj4oZSk7
CiB9CiAKLWlubGluZSBKU1Byb3BlcnR5TmFtZUFjY3VtdWxhdG9yUmVmIHRvUmVmKEtKUzo6UHJv
cGVydHlOYW1lQXJyYXkqIGwpCitpbmxpbmUgSlNQcm9wZXJ0eU5hbWVBY2N1bXVsYXRvclJlZiB0
b1JlZihKU0M6OlByb3BlcnR5TmFtZUFycmF5KiBsKQogewogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PEpTUHJvcGVydHlOYW1lQWNjdW11bGF0b3JSZWY+KGwpOwogfQogCi1pbmxpbmUgSlND
b250ZXh0R3JvdXBSZWYgdG9SZWYoS0pTOjpKU0dsb2JhbERhdGEqIGcpCitpbmxpbmUgSlNDb250
ZXh0R3JvdXBSZWYgdG9SZWYoSlNDOjpKU0dsb2JhbERhdGEqIGcpCiB7CiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8SlNDb250ZXh0R3JvdXBSZWY+KGcpOwogfQpJbmRleDogSmF2YVNjcmlw
dENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pT
QmFzZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxranMvSlNMb2Nr
Lmg+CiAjaW5jbHVkZSA8a2pzL0pTT2JqZWN0Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHQoSlNDb250
ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBK
U1N0cmluZ1JlZiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAj
aW5jbHVkZSA8a2pzL09iamVjdFByb3RvdHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgIkNhbGxiYWNrQ29uc3RydWN0b3IiLCAwLCAw
LCAwIH07CiAKQEAgLTgxLDQgKzgxLDQgQEAgQ29uc3RydWN0VHlwZSBKU0NhbGxiYWNrQ29uc3Ry
dWN0b3I6OmdldAogICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0KIAotfSAvLyBuYW1l
c3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBACiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKICNpbmNsdWRlIDxranMvSlNPYmplY3Qu
aD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNDYWxsYmFj
a0NvbnN0cnVjdG9yIDogcHVibGljIEpTT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTQ4LDYgKzQ4LDYg
QEAgcHJpdmF0ZToKICAgICBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgbV9jYWxs
YmFjazsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBKU0NhbGxiYWNrQ29uc3RydWN0b3JfaApJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbmNsdWRlIDxranMvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
Ci1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEpTQ2FsbGJhY2tGdW5jdGlvbik7CiAKQEAgLTc0LDQgKzc0LDQgQEAgQ2FsbFR5cGUg
SlNDYWxsYmFja0Z1bmN0aW9uOjpnZXRDYWxsRGF0YQogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7
CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAzNjI2MikKKysrIEph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNyBAQAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U09iamVjdFJlZi5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBKU0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6
CkBAIC00Nyw2ICs0Nyw2IEBAIHByaXZhdGU6CiAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNh
bGxiYWNrIG1fY2FsbGJhY2s7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gSlNDYWxsYmFja0Z1bmN0aW9uX2gKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBACiAKICNpbmNsdWRlICJjb2xsZWN0b3IuaCIKIAotbmFtZXNwYWNlIEtKUyB7Citu
YW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0NhbGxiYWNrT2Jq
ZWN0PEpTT2JqZWN0Pik7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNHbG9iYWxPYmplY3Q+KTsKQEAgLTM4LDQgKzM4LDQgQEAgQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChKU0NhbGxiYWNrT2JqZQogdGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2Fs
bGJhY2tPYmplY3Q8SlNPYmplY3Q+OjppbmZvID0geyAiQ2FsbGJhY2tPYmplY3QiLCAwLCAwLCAw
IH07CiB0ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0dsb2Jh
bE9iamVjdD46OmluZm8gPSB7ICJDYWxsYmFja0dsb2JhbE9iamVjdCIsIDAsIDAsIDAgfTsKIAot
fSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSAiSlNWYWx1ZVJlZi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKLW5hbWVz
cGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlIDxjbGFzcyBCYXNlPgogY2xh
c3MgSlNDYWxsYmFja09iamVjdCA6IHB1YmxpYyBCYXNlIHsKQEAgLTEwMSw3ICsxMDEsNyBAQCBw
cml2YXRlOgogICAgIE93blB0cjxKU0NhbGxiYWNrT2JqZWN0RGF0YT4gbV9jYWxsYmFja09iamVj
dERhdGE7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAv
LyBpbmNsdWRlIHRoZSBhY3R1YWwgdGVtcGxhdGUgY2xhc3MgaW1wbGVtZW50YXRpb24KICNpbmNs
dWRlICJKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgiCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDM2MjYyKQorKysg
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0Mg
ewogCiB0ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OkpTQ2Fs
bGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIEpTT2JqZWN0
KiBwcm90b3R5cGUsIHZvaWQqIGRhdGEpCkBAIC01MTEsNCArNTExLDQgQEAgSlNWYWx1ZSogSlND
YWxsYmFja09iamVjdDxCYXNlPjo6Y2FsbGJhYwogICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IFJlZmVyZW5jZUVycm9yLCAiaGFzUHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3Ig
YSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3QuIik7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtK
UworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1Jl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCShy
ZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPGtqcy9PYmplY3RQcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxranMvaWRlbnRpZmllci5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pT
OwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogY29uc3QgSlNDbGFzc0RlZmluaXRpb24ga0pTQ2xh
c3NEZWZpbml0aW9uRW1wdHkgPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAgfTsKIApAQCAtMTk4LDEzICsxOTgsMTMgQEAgVVN0cmluZyBPcGFxdWVK
U0NsYXNzOjpjbGFzc05hbWUoKQogICAgIHJldHVybiBVU3RyaW5nKG1fY2xhc3NOYW1lLmRhdGEo
KSwgbV9jbGFzc05hbWUuc2l6ZSgpKTsKIH0KIAotT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1Rh
YmxlKiBPcGFxdWVKU0NsYXNzOjpzdGF0aWNWYWx1ZXMoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpCitP
cGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGUqIE9wYXF1ZUpTQ2xhc3M6OnN0YXRpY1ZhbHVl
cyhKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEm
IGpzQ2xhc3NEYXRhID0gY29udGV4dERhdGEoZXhlYyk7CiAgICAgcmV0dXJuIGpzQ2xhc3NEYXRh
LnN0YXRpY1ZhbHVlczsKIH0KIAotT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBP
cGFxdWVKU0NsYXNzOjpzdGF0aWNGdW5jdGlvbnMoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpCitPcGFx
dWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIE9wYXF1ZUpTQ2xhc3M6OnN0YXRpY0Z1bmN0
aW9ucyhKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEmIGpzQ2xhc3NEYXRhID0gY29udGV4dERhdGEoZXhlYyk7CiAgICAgcmV0dXJuIGpzQ2xhc3NE
YXRhLnN0YXRpY0Z1bmN0aW9uczsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVm
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaAkocmV2aXNp
b24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw4ICs1NSw4IEBAIHN0cnVjdCBTdGF0aWNGdW5jdGlvbkVudHJ5IHsKICAgICBK
U1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogfTsKIAotdHlwZWRlZiBIYXNoTWFwPFJl
ZlB0cjxLSlM6OlVTdHJpbmc6OlJlcD4sIFN0YXRpY1ZhbHVlRW50cnkqPiBPcGFxdWVKU0NsYXNz
U3RhdGljVmFsdWVzVGFibGU7Ci10eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEtKUzo6VVN0cmluZzo6
UmVwPiwgU3RhdGljRnVuY3Rpb25FbnRyeSo+IE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNU
YWJsZTsKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8SlNDOjpVU3RyaW5nOjpSZXA+LCBTdGF0aWNW
YWx1ZUVudHJ5Kj4gT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOwordHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxKU0M6OlVTdHJpbmc6OlJlcD4sIFN0YXRpY0Z1bmN0aW9uRW50cnkqPiBPcGFx
dWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU7CiAKIGNsYXNzIE9wYXF1ZUpTQ2xhc3M7CiAK
QEAgLTc2LDcgKzc2LDcgQEAgc3RydWN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSA6IE5vbmNv
cAogCiAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXM7CiAg
ICAgT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnM7Ci0g
ICAgS0pTOjpKU09iamVjdCogY2FjaGVkUHJvdG90eXBlOworICAgIEpTQzo6SlNPYmplY3QqIGNh
Y2hlZFByb3RvdHlwZTsKIH07CiAKIHN0cnVjdCBPcGFxdWVKU0NsYXNzIDogcHVibGljIFRocmVh
ZFNhZmVTaGFyZWQ8T3BhcXVlSlNDbGFzcz4gewpAQCAtODQsMTAgKzg0LDEwIEBAIHN0cnVjdCBP
cGFxdWVKU0NsYXNzIDogcHVibGljIFRocmVhZFNhZmUKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxP
cGFxdWVKU0NsYXNzPiBjcmVhdGVOb0F1dG9tYXRpY1Byb3RvdHlwZShjb25zdCBKU0NsYXNzRGVm
aW5pdGlvbiopOwogICAgIH5PcGFxdWVKU0NsYXNzKCk7CiAgICAgCi0gICAgS0pTOjpVU3RyaW5n
IGNsYXNzTmFtZSgpOwotICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGlj
VmFsdWVzKEtKUzo6RXhlY1N0YXRlKik7Ci0gICAgT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9u
c1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMoS0pTOjpFeGVjU3RhdGUqKTsKLSAgICBLSlM6OkpTT2Jq
ZWN0KiBwcm90b3R5cGUoS0pTOjpFeGVjU3RhdGUqKTsKKyAgICBKU0M6OlVTdHJpbmcgY2xhc3NO
YW1lKCk7CisgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMo
SlNDOjpFeGVjU3RhdGUqKTsKKyAgICBPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUq
IHN0YXRpY0Z1bmN0aW9ucyhKU0M6OkV4ZWNTdGF0ZSopOworICAgIEpTQzo6SlNPYmplY3QqIHBy
b3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSopOwogCiAgICAgT3BhcXVlSlNDbGFzcyogcGFyZW50Q2xh
c3M7CiAgICAgT3BhcXVlSlNDbGFzcyogcHJvdG90eXBlQ2xhc3M7CkBAIC0xMTEsMTAgKzExMSwx
MCBAQCBwcml2YXRlOgogICAgIE9wYXF1ZUpTQ2xhc3MoY29uc3QgT3BhcXVlSlNDbGFzcyYpOwog
ICAgIE9wYXF1ZUpTQ2xhc3MoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qLCBPcGFxdWVKU0NsYXNz
KiBwcm90b0NsYXNzKTsKIAotICAgIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgY29udGV4dERh
dGEoS0pTOjpFeGVjU3RhdGUqKTsKKyAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIGNvbnRl
eHREYXRhKEpTQzo6RXhlY1N0YXRlKik7CiAKICAgICAvLyBVU3RyaW5ncyBpbiB0aGVzZSBkYXRh
IG1lbWJlcnMgc2hvdWxkIG5vdCBiZSBwdXQgaW50byBhbnkgSWRlbnRpZmllclRhYmxlLgotICAg
IEtKUzo6VVN0cmluZyBtX2NsYXNzTmFtZTsKKyAgICBKU0M6OlVTdHJpbmcgbV9jbGFzc05hbWU7
CiAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBtX3N0YXRpY1ZhbHVlczsKICAg
ICBPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIG1fc3RhdGljRnVuY3Rpb25zOwog
fTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCShyZXZpc2lvbiAzNjI2MikK
KysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwQ3JlYXRlKCkKIHsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAj
aW5jbHVkZSAiaWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi11c2lu
ZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogSlNDbGFzc1JlZiBKU0Ns
YXNzQ3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uKQogewpJbmRleDog
SmF2YVNjcmlwdENvcmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxlclByaXZhdGUuY3BwCShyZXZpc2lvbiAzNjI2MikK
KysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJPcGFxdWVKU1N0cmluZy5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1Byb2ZpbGVyLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiB2b2lkIEpTU3RhcnRQcm9maWxpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgdGl0bGUpCiB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNT
dHJpbmdSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1Jl
Zi5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVm
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIk9wYXF1ZUpT
U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgogCi11c2luZyBuYW1lc3Bh
Y2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNv
ZGU7CiAKIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoY29uc3QgSlND
aGFyKiBjaGFycywgc2l6ZV90IG51bUNoYXJzKQpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAKIAogSlNUeXBlIEpTVmFsdWVHZXRU
eXBlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKLSAgICBLSlM6OkpTVmFsdWUq
IGpzVmFsdWUgPSB0b0pTKHZhbHVlKTsKKyAgICBKU0M6OkpTVmFsdWUqIGpzVmFsdWUgPSB0b0pT
KHZhbHVlKTsKICAgICBpZiAoanNWYWx1ZS0+aXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJu
IGtKU1R5cGVVbmRlZmluZWQ7CiAgICAgaWYgKGpzVmFsdWUtPmlzTnVsbCgpKQpAQCAtNTgsNyAr
NTgsNyBAQCBKU1R5cGUgSlNWYWx1ZUdldFR5cGUoSlNDb250ZXh0UmVmLCBKU1ZhCiAgICAgcmV0
dXJuIGtKU1R5cGVPYmplY3Q7CiB9CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7IC8vIHBsYWNlZCBo
ZXJlIHRvIGF2b2lkIGNvbmZsaWN0IGJldHdlZW4gS0pTOjpKU1R5cGUgYW5kIEpTVHlwZSwgYWJv
dmUuCit1c2luZyBuYW1lc3BhY2UgSlNDOyAvLyBwbGFjZWQgaGVyZSB0byBhdm9pZCBjb25mbGlj
dCBiZXR3ZWVuIEpTQzo6SlNUeXBlIGFuZCBKU1R5cGUsIGFib3ZlLgogCiBib29sIEpTVmFsdWVJ
c1VuZGVmaW5lZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgdmFsdWUpCiB7CkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNj
cmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogI2luY2x1ZGUgPGtqcy9FeGVjU3RhdGUuaD4KICNpbmNsdWRlIDxranMvaWRlbnRp
Zmllci5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
UGFzc1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShjb25zdCBV
U3RyaW5nJiB1c3RyaW5nKQogewpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3Ry
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgJ
KHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPGtqcy91c3RyaW5n
Lmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRXhlY1N0
YXRlOwogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwpAQCAt
NDYsMTUgKzQ2LDE1IEBAIHN0cnVjdCBPcGFxdWVKU1N0cmluZyA6IHB1YmxpYyBUaHJlYWRTYWYK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0cmluZyhjaGFyYWN0ZXJzLCBs
ZW5ndGgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGFxdWVKU1N0cmluZz4g
Y3JlYXRlKGNvbnN0IEtKUzo6VVN0cmluZyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wYXF1
ZUpTU3RyaW5nPiBjcmVhdGUoY29uc3QgSlNDOjpVU3RyaW5nJik7CiAKICAgICBVQ2hhciogY2hh
cmFjdGVycygpIHsgcmV0dXJuIHRoaXMgPyBtX2NoYXJhY3RlcnMgOiAwOyB9CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgeyByZXR1cm4gdGhpcyA/IG1fbGVuZ3RoIDogMDsgfQogCi0gICAgS0pTOjpV
U3RyaW5nIHVzdHJpbmcoKSBjb25zdDsKKyAgICBKU0M6OlVTdHJpbmcgdXN0cmluZygpIGNvbnN0
OwogCi0gICAgS0pTOjpJZGVudGlmaWVyIGlkZW50aWZpZXIoS0pTOjpFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICBLSlM6OklkZW50aWZpZXIgaWRlbnRpZmllcihLSlM6OkpTR2xvYmFsRGF0YSopIGNv
bnN0OworICAgIEpTQzo6SWRlbnRpZmllciBpZGVudGlmaWVyKEpTQzo6RXhlY1N0YXRlKikgY29u
c3Q7CisgICAgSlNDOjpJZGVudGlmaWVyIGlkZW50aWZpZXIoSlNDOjpKU0dsb2JhbERhdGEqKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV1RGOjpUaHJlYWRTYWZlU2hhcmVk
PE9wYXF1ZUpTU3RyaW5nPjsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL0NUSS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vQ1RJLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBK
YXZhU2NyaXB0Q29yZS9WTS9DVEkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpT
QyB7CiAKICNpZiBDT01QSUxFUihHQ0MpICYmIFBMQVRGT1JNKFg4NikKIGFzbSgKQEAgLTYyLDcg
KzYyLDcgQEAgYXNtKAogICAgICJpbnQzIiAiXG4iCiAgICAgIjE6IiAiXG4iCiAjZW5kaWYKLSAg
ICAiY2FsbCBfX1pOM0tKUzdNYWNoaW5lMTJjdGlfdm1fdGhyb3dFUHYiICJcbiIKKyAgICAiY2Fs
bCBfX1pOM0pTQzdNYWNoaW5lMTJjdGlfdm1fdGhyb3dFUHYiICJcbiIKICAgICAiYWRkbCAkMHgy
NCwgJWVzcCIgIlxuIgogICAgICJwb3BsICVlZGkiICJcbiIKICAgICAicG9wbCAlZXNpIiAiXG4i
CkBAIC05Myw3ICs5Myw3IEBAIGV4dGVybiAiQyIKICAgICB7CiAgICAgICAgIF9fYXNtIHsKICAg
ICAgICAgICAgbW92IFtlc3BdLCBlc3A7Ci0gICAgICAgICAgICBjYWxsIEtKUzo6TWFjaGluZTo6
Y3RpX3ZtX3Rocm93OworICAgICAgICAgICAgY2FsbCBKU0M6Ok1hY2hpbmU6OmN0aV92bV90aHJv
dzsKICAgICAgICAgICAgIGFkZCBlc3AsIDB4MjQ7CiAgICAgICAgICAgICBwb3AgZWRpOwogICAg
ICAgICAgICAgcG9wIGVzaTsKQEAgLTE5MjYsNiArMTkyNiw2IEBAIHZvaWQqIENUSTo6Y29tcGls
ZVJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMKICAgICByZXR1cm4gY29kZTsKIH0KIAotfSAvLyBuYW1l
c3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShDVEkpCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9DVEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9WTS9DVEkuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9DVEkuaAko
d29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQAogCiAjZGVmaW5lIENUSV9SRVRVUk5fQURE
UkVTUyAoKEFSR1MpWy0xXSkKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBFeGVjU3RhdGU7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9WTS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZN
L0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHN0
ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCi1uYW1lc3BhY2UgS0pTIHsK
K25hbWVzcGFjZSBKU0MgewogCiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoU0FNUExJ
TkdfVE9PTCkKIApAQCAtMTAwMyw0ICsxMDAzLDQgQEAgaW50MzJfdCBTaW1wbGVKdW1wVGFibGU6
Om9mZnNldEZvclZhbHVlKAogICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OyAgICAgICAgCiB9CiAK
LX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9WTS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9Db2Rl
QmxvY2suaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBFeGVjU3RhdGU7CiAKQEAgLTI0MCw2ICsyNDAsNiBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICAgICAgfQogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBDb2RlQmxvY2tfaApJbmRleDogSmF2YVNjcmlw
dENvcmUvVk0vQ29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
Vk0vQ29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUv
Vk0vQ29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKIAog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsK
IAogLyoKICAgICBUaGUgbGF5b3V0IG9mIGEgcmVnaXN0ZXIgZnJhbWUgbG9va3MgbGlrZSB0aGlz
OgpAQCAtMTM2MSw0ICsxMzYxLDQgQEAgdm9pZCBDb2RlR2VuZXJhdG9yOjplbmRTd2l0Y2godWlu
dDMyX3QgYwogICAgIH0KIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDM2MjYyKQorKysg
SmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3
ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJ
ZGVudGlmaWVyOwogICAgIGNsYXNzIFNjb3BlQ2hhaW47CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9W
TS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9F
eGNlcHRpb25IZWxwZXJzLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9W
TS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogCi1uYW1l
c3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgdm9pZCBzdWJzdGl0dXRlKFVT
dHJpbmcmIHN0cmluZywgY29uc3QgVVN0cmluZyYgc3Vic3RyaW5nKQogewpAQCAtMjE5LDQgKzIx
OSw0IEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RBbk9iamVjdEVycm9yKEV4ZWNTdGEKICAgICByZXR1
cm4gZXhjZXB0aW9uOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vRXhjZXB0aW9uSGVscGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL1ZNL0V4Y2VwdGlvbkhlbHBlcnMuaAkocmV2aXNpb24gMzYyNjIp
CisrKyBKYXZhU2NyaXB0Q29yZS9WTS9FeGNlcHRpb25IZWxwZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKLW5hbWVzcGFjZSBL
SlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIENvZGVC
bG9jazsKQEAgLTQ3LDYgKzQ3LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgSlNWYWx1ZSogY3Jl
YXRlTm90QUZ1bmN0aW9uRXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSosIGNvbnN0IEluc3RydWN0
aW9uKiwgQ29kZUJsb2NrKik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3Io
RXhlY1N0YXRlKiwgSlNOb3RBbk9iamVjdEVycm9yU3R1YiosIGNvbnN0IEluc3RydWN0aW9uKiwg
Q29kZUJsb2NrKik7CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBFeGNlcHRpb25IZWxwZXJzX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL0lu
c3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vSW5zdHJ1Y3Rpb24u
aAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9JbnN0cnVjdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJPcGNvZGUuaCIKIAot
bmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTQ2VsbDsKICAg
ICBjbGFzcyBTdHJ1Y3R1cmVJRDsKQEAgLTUzLDYgKzUzLDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgICAgIH0gdTsKICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYgLy8gSW5zdHJ1Y3Rpb25faApJbmRleDogSmF2YVNjcmlwdENvcmUvVk0v
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
Vk0vSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNj
cmlwdENvcmUvVk0vSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7CiAKQEAgLTky
LDQgKzkyLDQgQEAgdm9pZCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjppbnZhbGlkYXRlKAogICAg
IG1fcHJvcGVydHlOYW1lcyA9IDA7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL1ZNL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKIAotbmFtZXNwYWNlIEtK
UyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3Mg
SlNPYmplY3Q7CkBAIC05Niw2ICs5Niw2IEBAIGlubGluZSBKU1ZhbHVlKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjoKICAgICByZXR1cm4gMDsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTUHJvcGVydHlOYW1lSXRlcmF0b3JfaApJbmRl
eDogSmF2YVNjcmlwdENvcmUvVk0vTGFiZWxJRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL1ZNL0xhYmVsSUQuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9M
YWJlbElELmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBMYWJlbElEIHsKICAgICBwdWJsaWM6CkBAIC0xMTMsNiAr
MTEzLDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIG11dGFibGUgSnVtcFZlY3RvciBtX3Vu
cmVzb2x2ZWRKdW1wczsKICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gTGFiZWxJRF9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9N
YWNoaW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcAko
cmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQAogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1uYW1l
c3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAvLyBQcmVmZXJyZWQgbnVtYmVyIG9mIG1p
bGxpc2Vjb25kcyBiZXR3ZWVuIGVhY2ggdGltZW91dCBjaGVjawogc3RhdGljIGNvbnN0IGludCBw
cmVmZXJyZWRTY3JpcHRDaGVja1RpbWVJbnRlcnZhbCA9IDEwMDA7CkBAIC01MTM1LDQgKzUxMzUs
NCBAQCB2b2lkKiBNYWNoaW5lOjpjdGlfdm1fdGhyb3coQ1RJX0FSR1MpCiAKICNlbmRpZiAvLyBF
TkFCTEUoQ1RJKQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL1ZNL01hY2hpbmUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9N
YWNoaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJDVEku
aCIKICNlbmRpZgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIEV2YWxOb2RlOwpAQCAtMjkxLDYgKzI5MSw2IEBAIG5h
bWVzcGFjZSBLSlMgewogI2VuZGlmCiAgICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIE1hY2hpbmVfaApJbmRleDogSmF2YVNjcmlwdENv
cmUvVk0vT3Bjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9PcGNvZGUu
Y3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAot
bmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShTQU1QTElOR19U
T09MKSB8fCBEVU1QX09QQ09ERV9TVEFUUwogCkBAIC0xODMsNCArMTgzLDQgQEAgdm9pZCBPcGNv
ZGVTdGF0czo6cmVzZXRMYXN0SW5zdHJ1Y3Rpb24oKQogCiAjZW5kaWYKIAotfSAvLyBuYW1lc3Bh
Y2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL09wY29k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5oCShyZXZpc2lvbiAz
NjI2MikKKysrIEphdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCi1uYW1lc3BhY2Ug
S0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIERVTVBfT1BDT0RFX1NUQVRTIDAKIApA
QCAtMTkzLDYgKzE5Myw2IEBAIG5hbWVzcGFjZSBLSlMgewogCiAjZW5kaWYKIAotfSAvLyBuYW1l
c3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIE9wY29kZXNfaApJbmRl
eDogSmF2YVNjcmlwdENvcmUvVk0vUmVnaXN0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9WTS9SZWdpc3Rlci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL1ZN
L1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgogCi1uYW1lc3BhY2UgS0pT
IHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIEV4
ZWNTdGF0ZTsKQEAgLTI0NCwxMSArMjQ0LDExIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBy
ZXR1cm4gdS52OwogICAgIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBK
U0MKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFp
dHM8S0pTOjpSZWdpc3Rlcj4gOiBWZWN0b3JUcmFpdHNCYXNlPHRydWUsIEtKUzo6UmVnaXN0ZXI+
IHsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpSZWdpc3Rlcj4g
OiBWZWN0b3JUcmFpdHNCYXNlPHRydWUsIEpTQzo6UmVnaXN0ZXI+IHsgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL1JlZ2lzdGVyRmlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vUmVnaXN0ZXJGaWxlLmNwcAkocmV2aXNpb24g
MzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9SZWdpc3RlckZpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVn
aXN0ZXJGaWxlLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIFJlZ2lz
dGVyRmlsZTo6flJlZ2lzdGVyRmlsZSgpCiB7CkBAIC00Myw0ICs0Myw0IEBAIFJlZ2lzdGVyRmls
ZTo6flJlZ2lzdGVyRmlsZSgpCiAjZW5kaWYKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL1JlZ2lzdGVyRmlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAz
NjI2MikKKysrIEphdmFTY3JpcHRDb3JlL1ZNL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw3ICszNiw3IEBACiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogLyoKICAgICBBIHJlZ2lzdGVy
IGZpbGUgaXMgYSBzdGFjayBvZiByZWdpc3RlciBmcmFtZXMuIFdlIHJlcHJlc2VudCBhIHJlZ2lz
dGVyCkBAIC0xNzgsNiArMTc4LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBtX2dsb2JhbE9iamVjdDsgLy8gVGhlIGdsb2JhbCBvYmplY3Qgd2hvc2UgdmFycyBh
cmUgY3VycmVudGx5IHN0b3JlZCBpbiB0aGUgcmVnaXN0ZXIgZmlsZS4KICAgICB9OwogCi19IC8v
IG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gUmVnaXN0ZXJG
aWxlX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL1JlZ2lzdGVySUQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9WTS9SZWdpc3RlcklELmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2
YVNjcmlwdENvcmUvVk0vUmVnaXN0ZXJJRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRy
YWl0cy5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
UmVnaXN0ZXJJRCA6IE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CkBAIC0xMDksMTEgKzEwOSwx
MSBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgIGlubGluZSBSZWdpc3RlcklEKiBpZ25vcmVkUmVz
dWx0KCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZWdpc3RlcklEKj4oMSk7IH0KIAotfSAv
LyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CiAK
LSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8S0pTOjpSZWdpc3RlcklEPiA6IFZl
Y3RvclRyYWl0c0Jhc2U8dHJ1ZSwgS0pTOjpSZWdpc3RlcklEPiB7CisgICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgVmVjdG9yVHJhaXRzPEpTQzo6UmVnaXN0ZXJJRD4gOiBWZWN0b3JUcmFpdHNCYXNlPHRy
dWUsIEpTQzo6UmVnaXN0ZXJJRD4gewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0lu
aXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuSW5pdGlh
bGl6ZVdpdGhNZW1zZXQgPSB0cnVlOyAvLyBEZWZhdWx0IGluaXRpYWxpemF0aW9uIGp1c3Qgc2V0
cyBldmVyeXRoaW5nIHRvIDAgb3IgZmFsc2UsIHNvIHRoaXMgaXMgc2FmZS4KICAgICB9OwpJbmRl
eDogSmF2YVNjcmlwdENvcmUvVk0vU2FtcGxpbmdUb29sLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9WTS9TYW1wbGluZ1Rvb2wuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFT
Y3JpcHRDb3JlL1ZNL1NhbXBsaW5nVG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgogCi1uYW1lc3BhY2UgS0pTIHsKK25h
bWVzcGFjZSBKU0MgewogCiB2b2lkIFNjb3BlU2FtcGxlUmVjb3JkOjpzYW1wbGUoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiB2UEMpCiB7CkBAIC0zMDgsNCArMzA4LDQgQEAgdm9p
ZCBTYW1wbGluZ1Rvb2w6OmR1bXAoRXhlY1N0YXRlKikKIAogI2VuZGlmCiAKLX0gLy8gbmFtZXNw
YWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9TYW1w
bGluZ1Rvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9TYW1wbGluZ1Rvb2wu
aAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9TYW1wbGluZ1Rvb2wuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPG5vZGVzLmg+CiAjaW5j
bHVkZSA8T3Bjb2RlLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgU2NvcGVOb2RlOwpAQCAtMTUwLDYgKzE1MCw2
IEBAIGV4dGVybiBPcGNvZGVJRCB3aGF0OwogI2RlZmluZSBDVElfTUFDSElORV9TQU1QTElOR19j
YWxsaW5nSG9zdEZ1bmN0aW9uKCkKICNlbmRpZgogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU2FtcGxpbmdUb29sX2gKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL1ZNL1NlZ21lbnRlZFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L1ZNL1NlZ21lbnRlZFZlY3Rvci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3Jl
L1ZNL1NlZ21lbnRlZFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpT
QyB7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplPiBjbGFz
cyBTZWdtZW50ZWRWZWN0b3IgewogICAgIHB1YmxpYzoKQEAgLTE2Myw2ICsxNjMsNiBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICAgICAgVmVjdG9yPFNlZ21lbnQqLCAzMj4gbV9zZWdtZW50czsKICAg
ICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYg
Ly8gU2VnbWVudGVkVmVjdG9yX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9BcmdMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQXJnTGlzdC5jcHAJKHJldmlzaW9u
IDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0FyZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAKIHVzaW5nIHN0ZDo6bWluOwogCi1uYW1lc3BhY2UgS0pTIHsK
K25hbWVzcGFjZSBKU0MgewogCiB2b2lkIEFyZ0xpc3Q6OmdldFNsaWNlKGludCBzdGFydEluZGV4
LCBBcmdMaXN0JiByZXN1bHQpIGNvbnN0CiB7CkBAIC04MSw0ICs4MSw0IEBAIHZvaWQgQXJnTGlz
dDo6c2xvd0FwcGVuZChKU1ZhbHVlKiB2KQogICAgIG1fYnVmZmVyID0gbV92ZWN0b3IuZGF0YSgp
OwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL0FyZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvQXJnTGlzdC5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9BcmdM
aXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBLSlMgewor
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIApAQCAtMTQ2LDYgKzE0
Niw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lk
Kiwgc2l6ZV90KTsKICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYgLy8gQXJnTGlzdF9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvQXJn
dW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQXJndW1lbnRzLmNw
cAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQXJndW1lbnRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFt
ZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQXJndW1lbnRzKTsKIApA
QCAtOTYsNCArOTYsNCBAQCBib29sIEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRl
CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUp
OwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9Bcmd1bWVudHMuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJJ
bmRleFRvTmFtZU1hcC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKLW5hbWVzcGFjZSBLSlMg
eworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAKQEAgLTYxLDYg
KzYxLDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIE93blB0cjxBcmd1bWVudHNEYXRhPiBk
OwogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBBcmd1bWVudHNfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9BcnJheUNvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJK
U0FycmF5LmgiCiAjaW5jbHVkZSAibG9va3VwLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNw
YWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQXJyYXlDb25zdHJ1Y3Rvcik7
CiAKQEAgLTgyLDQgKzgyLDQgQEAgQ2FsbFR5cGUgQXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERh
dGEoQwogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUwor
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvQXJyYXlDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9BcnJheUNvbnN0cnVjdG9y
LmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0FycmF5Q29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiSW50ZXJu
YWxGdW5jdGlvbi5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQXJyYXlQcm90b3R5cGU7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CkBAIC0z
Niw2ICszNiw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdl
dENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEFycmF5Q29uc3RydWN0b3JfaApJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoQXJyYXlQcm90b3R5cGUpOwogCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRp
YyBKU1ZhbHVlKiBhcnJheVByb3RvRnVuY0xhc3RJbmRleE8KIAogI2luY2x1ZGUgIkFycmF5UHJv
dG90eXBlLmx1dC5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJyYXlQcm90b3R5cGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCkBAIC03ODIsNCArNzgyLDQgQEAgSlNWYWx1ZSogYXJyYXlQcm90
b0Z1bmNMYXN0SW5kZXhPZihFeGVjUwogICAgIHJldHVybiBqc051bWJlcihleGVjLCAtMSk7CiB9
CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvQXJyYXlQcm90b3R5cGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvQXJyYXlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJsb29rdXAuaCIKIAotbmFtZXNwYWNlIEtK
UyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFycmF5UHJvdG90eXBlIDogcHVibGlj
IEpTQXJyYXkgewogICAgIHB1YmxpYzoKQEAgLTM2LDYgKzM2LDYgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKICAgICB9OwogCi19IC8vIG5h
bWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQXJyYXlQcm90b3R5
cGVfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0JhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0JhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlICJKU09iamVjdC5oIgogCi1uYW1l
c3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmF0Y2hlZFRyYW5zaXRp
b25PcHRpbWl6ZXIgOiBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgpAQCAtNTAsNiArNTAsNiBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgSlNPYmplY3QqIG1fb2JqZWN0OwogICAgIH07CiAK
LX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBCYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvQm9vbGVh
bkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQm9vbGVh
bkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
Qm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAog
I2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKEJvb2xlYW5Db25zdHJ1Y3Rvcik7CiAKQEAgLTc1LDQgKzc1LDQgQEAgSlNPYmpl
Y3QqIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQgogICAgIHJldHVybiBvYmo7CiB9CiAK
LX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvQm9vbGVhbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9Cb29sZWFuQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCi1uYW1lc3BhY2UgS0pT
IHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQm9vbGVhblByb3RvdHlwZTsKICAgICBj
bGFzcyBGdW5jdGlvblByb3RvdHlwZTsKQEAgLTQwLDYgKzQwLDYgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihFeGVj
U3RhdGUqLCBKU1ZhbHVlKik7CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdEJvb2xlYW4oRXhlY1N0
YXRlKiwgY29uc3QgQXJnTGlzdCYpOwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gQm9vbGVhbkNvbnN0cnVjdG9yX2gKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9Cb29sZWFuT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvQm9vbGVhbk9iamVjdC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL0Jvb2xlYW5PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgogCi1uYW1l
c3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxM
KEJvb2xlYW5PYmplY3QpOwogCkBAIC0zMiw0ICszMiw0IEBAIEJvb2xlYW5PYmplY3Q6OkJvb2xl
YW5PYmplY3QoSlNPYmplY3QqIHAKIHsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Cb29sZWFuT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0Jvb2xlYW5PYmplY3QuaAkocmV2aXNpb24g
MzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQm9vbGVhbk9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKIAot
bmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJvb2xlYW5PYmpl
Y3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6CkBAIC0zMyw2ICszMyw2
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87
CiAgICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEJvb2xlYW5PYmplY3RfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0Jvb2xlYW5Q
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Cb29sZWFuUHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQm9vbGVh
blByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlvbi5oIgogCi1u
YW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEJvb2xlYW5Qcm90b3R5cGUpOwogCkBAIC04MCw0ICs4MCw0IEBAIEpTVmFsdWUqIGJvb2xl
YW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGEKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Qm9vbGVh
bk9iamVjdCo+KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Cb29s
ZWFuUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0Jvb2xlYW5Q
cm90b3R5cGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQm9vbGVh
blByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRl
ICJCb29sZWFuT2JqZWN0LmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBPYmplY3RQcm90b3R5cGU7
CkBAIC0zMyw2ICszMyw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBCb29sZWFuUHJvdG90
eXBlKEV4ZWNTdGF0ZSosIE9iamVjdFByb3RvdHlwZSosIEZ1bmN0aW9uUHJvdG90eXBlKik7CiAg
ICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEJvb2xlYW5Qcm90b3R5cGVfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0NhbGxEYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQ2FsbERhdGEuY3BwCShyZXZp
c2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9DYWxsRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKIAotbmFt
ZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogSlNWYWx1ZSogY2FsbChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUqIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3Qg
Q2FsbERhdGEmIGNhbGxEYXRhLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCiB7CkBAIC0zOSw0ICszOSw0IEBAIEpTVmFsdWUqIGNhbGwoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlKiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uT2Jq
ZWN0KS0+Y2FsbChleGVjLCB0aGlzVmFsdWUsIGFyZ3MpOwogfQogCi19IC8vIG5hbWVzcGFjZSBL
SlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0NhbGxEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0NhbGxEYXRhLmgJKHJldmlzaW9u
IDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0NhbGxEYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgQ2FsbERhdGFfaAogI2RlZmluZSBDYWxsRGF0YV9o
CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcmdMaXN0
OwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKQEAgLTU4LDYgKzU4LDYgQEAgbmFtZXNwYWNlIEtKUyB7
CiAKICAgICBKU1ZhbHVlKiBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUqIGZ1bmN0aW9uT2JqZWN0
LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIENhbGxEYXRhX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9DbGFzc0luZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDM2
MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJFeGVjU3RhdGUuaCIKIAotbmFtZXNwYWNlIEtK
UyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBIYXNoRW50cnk7CiAgICAgc3RydWN0
IEhhc2hUYWJsZTsKQEAgLTU3LDYgKzU3LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIGNv
bnN0IENsYXNzUHJvcEhhc2hUYWJsZUdldHRlckZ1bmN0aW9uIGNsYXNzUHJvcEhhc2hUYWJsZUdl
dHRlckZ1bmN0aW9uOwogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBDbGFzc0luZm9faApJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L0NvbW1vbklkZW50aWZpZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
Q29tbW9uSWRlbnRpZmllcnMuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9Db21tb25JZGVudGlmaWVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
Ci1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBjb25zdCBjaGFyKiBjb25zdCBu
dWxsQ1N0cmluZyA9IDA7CiAKQEAgLTM1LDQgKzM1LDQgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNv
bW1vbklkZW50aWZpZXJzKEpTRwogewogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0NvbW1vbklkZW50aWZpZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0NvbW1vbklkZW50aWZpZXJzLmgJKHJl
dmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0NvbW1vbklkZW50aWZpZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAKICAgICBtYWNybyhVVEMpIFwKICAgICBt
YWNybyh2YWx1ZU9mKQogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQ29tbW9uSWRlbnRpZmllcnMgOiBOb25jb3B5YWJsZSB7CiAgICAgcHJpdmF0ZToKQEAg
LTgyLDYgKzgyLDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAjdW5kZWYgS0pTX0lERU5USUZJRVJfREVD
TEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUwor
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBDb21tb25JZGVudGlmaWVyc19oCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ranMvQ29uc3RydWN0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL0NvbnN0cnVjdERhdGEuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9Db25zdHJ1Y3REYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogCi1uYW1lc3BhY2UgS0pTIHsK
K25hbWVzcGFjZSBKU0MgewogCiBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSogb2JqZWN0LCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CkBAIC0zOSw0
ICszOSw0IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1YKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCktPmNvbnN0cnVjdChleGVjLCBh
cmdzKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9Db25zdHJ1Y3REYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL0NvbnN0cnVjdERhdGEuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvQ29uc3RydWN0RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAjaWZuZGVmIENvbnN0cnVjdERhdGFfaAogI2RlZmluZSBDb25zdHJ1Y3REYXRhX2gKIAot
bmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyZ0xpc3Q7CiAg
ICAgY2xhc3MgRXhlY1N0YXRlOwpAQCAtNTgsNiArNTgsNiBAQCBuYW1lc3BhY2UgS0pTIHsKIAog
ICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSogY29uc3RydWN0b3Is
IENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CiAK
LX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBDb25z
dHJ1Y3REYXRhX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlQ29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSA8c3lzL3RpbWViLmg+
CiAjZW5kaWYKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogLy8gVE9ETzog
TWFrZVRpbWUgKDE1LjkuMTEuMSkgZXRjLiA/CiAKQEAgLTE2Nyw0ICsxNjcsNCBAQCBzdGF0aWMg
SlNWYWx1ZSogZGF0ZVVUQyhFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJuIGpzTnVtYmVyKGV4
ZWMsIGdyZWdvcmlhbkRhdGVUaW1lVG9NUyh0LCBtcywgdHJ1ZSkpOwogfQogCi19IC8vIG5hbWVz
cGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0Rh
dGVDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlQ29u
c3RydWN0b3IuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRGF0ZUNv
bnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIERhdGVQcm90b3R5cGU7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7
CkBAIC0zNyw2ICszNyw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2aXJ0dWFsIENhbGxU
eXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pT
Cit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIERhdGVDb25zdHJ1Y3Rvcl9oCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ranMvRGF0ZUluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvRGF0ZUluc3RhbmNlLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvRGF0ZUluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
Ci1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgRGF0ZUluc3RhbmNl
OjpDYWNoZSB7CiAgICAgZG91YmxlIG1fZ3JlZ29yaWFuRGF0ZVRpbWVDYWNoZWRGb3JNUzsKQEAg
LTU4LDEzICs1OCwxMyBAQCB2b2lkIERhdGVJbnN0YW5jZTo6bXNUb0dyZWdvcmlhbkRhdGVUaW1l
CiAKICAgICBpZiAob3V0cHV0SXNVVEMpIHsKICAgICAgICAgaWYgKG1fY2FjaGUtPm1fZ3JlZ29y
aWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUyAhPSBtaWxsaSkgewotICAgICAgICAgICAgS0pTOjpt
c1RvR3JlZ29yaWFuRGF0ZVRpbWUobWlsbGksIHRydWUsIG1fY2FjaGUtPm1fY2FjaGVkR3JlZ29y
aWFuRGF0ZVRpbWVVVEMpOworICAgICAgICAgICAgSlNDOjptc1RvR3JlZ29yaWFuRGF0ZVRpbWUo
bWlsbGksIHRydWUsIG1fY2FjaGUtPm1fY2FjaGVkR3JlZ29yaWFuRGF0ZVRpbWVVVEMpOwogICAg
ICAgICAgICAgbV9jYWNoZS0+bV9ncmVnb3JpYW5EYXRlVGltZVVUQ0NhY2hlZEZvck1TID0gbWls
bGk7CiAgICAgICAgIH0KICAgICAgICAgdC5jb3B5RnJvbShtX2NhY2hlLT5tX2NhY2hlZEdyZWdv
cmlhbkRhdGVUaW1lVVRDKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV9jYWNoZS0+bV9n
cmVnb3JpYW5EYXRlVGltZUNhY2hlZEZvck1TICE9IG1pbGxpKSB7Ci0gICAgICAgICAgICBLSlM6
Om1zVG9HcmVnb3JpYW5EYXRlVGltZShtaWxsaSwgZmFsc2UsIG1fY2FjaGUtPm1fY2FjaGVkR3Jl
Z29yaWFuRGF0ZVRpbWUpOworICAgICAgICAgICAgSlNDOjptc1RvR3JlZ29yaWFuRGF0ZVRpbWUo
bWlsbGksIGZhbHNlLCBtX2NhY2hlLT5tX2NhY2hlZEdyZWdvcmlhbkRhdGVUaW1lKTsKICAgICAg
ICAgICAgIG1fY2FjaGUtPm1fZ3JlZ29yaWFuRGF0ZVRpbWVDYWNoZWRGb3JNUyA9IG1pbGxpOwog
ICAgICAgICB9CiAgICAgICAgIHQuY29weUZyb20obV9jYWNoZS0+bV9jYWNoZWRHcmVnb3JpYW5E
YXRlVGltZSk7CkBAIC0xMTMsNCArMTEzLDQgQEAgYm9vbCBEYXRlSW5zdGFuY2U6OmdldFVUQ1Rp
bWUoZG91YmxlJiBtaQogICAgIHJldHVybiB0cnVlOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0RhdGVJbnN0YW5j
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlSW5zdGFuY2UuaAkocmV2
aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRGF0ZUluc3RhbmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTV3JhcHBlck9iamVjdC5o
IgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rp
b25Qcm90b3R5cGU7CiAgICAgY2xhc3MgT2JqZWN0UHJvdG90eXBlOwpAQCAtNTQsNiArNTQsNiBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgbXV0YWJsZSBDYWNoZSogbV9jYWNoZTsKICAgICB9
OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RGF0ZUluc3RhbmNlX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0aC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcAkocmV2aXNpb24gMzYy
NjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw3ICs2OSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLW5hbWVzcGFjZSBLSlMg
eworbmFtZXNwYWNlIEpTQyB7CiAKIC8qIENvbnN0YW50cyAqLwogCkBAIC05NDMsNCArOTQzLDQg
QEAgVVN0cmluZyBmb3JtYXRUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaQogICAgIHJldHVybiBV
U3RyaW5nKGJ1ZmZlcik7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvRGF0ZU1hdGguaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAog
I2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi1uYW1l
c3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBVU3RyaW5nOwogc3RydWN0IEdy
ZWdvcmlhbkRhdGVUaW1lOwpAQCAtMTg2LDYgKzE4Niw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdt
dG9mZnNldChjb25zdCBHcmVnb3IKICAgICByZXR1cm4gdC51dGNPZmZzZXQ7CiB9CiAKLX0gLy8g
bmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBEYXRlTWF0aF9o
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRGF0ZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAzNjI2MikK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTQsNyArNTQsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCi1uYW1lc3BhY2UgS0pT
IHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKERhdGVQcm90
b3R5cGUpOwogCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIEpTVmFsdWUqIGRhdGVQcm90b0Z1
bmNWYWx1ZU9mKEV4ZQogCiAjaW5jbHVkZSAiRGF0ZVByb3RvdHlwZS5sdXQuaCIKIAotbmFtZXNw
YWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogI2lmIFBMQVRGT1JNKE1BQykKIApAQCAtMTA1
Myw0ICsxMDUzLDQgQEAgSlNWYWx1ZSogZGF0ZVByb3RvRnVuY0dldFllYXIoRXhlY1N0YXRlKgog
ICAgIHJldHVybiBqc051bWJlcihleGVjLCB0LnllYXIpOwogfQogCi19IC8vIG5hbWVzcGFjZSBL
SlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0RhdGVQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRGF0ZVByb3RvdHlwZS5o
CShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkRhdGVJbnN0YW5j
ZS5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgT2Jq
ZWN0UHJvdG90eXBlOwogCkBAIC0zNyw2ICszNyw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAg
ICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87CiAgICAgfTsKIAotfSAvLyBuYW1lc3BhY2Ug
S0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIERhdGVQcm90b3R5cGVfaApJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAzNjI2
MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJNYWNoaW5lLmgiCiAjaW5jbHVkZSAi
UGFyc2VyLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIFJlZ2lzdGVy
KiBEZWJ1Z2dlckNhbGxGcmFtZTo6Y2FsbEZyYW1lKCkgY29uc3QKIHsKQEAgLTg4LDQgKzg4LDQg
QEAgSlNWYWx1ZSogRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbgogICAgIHJldHVybiBu
ZXdFeGVjLm1hY2hpbmUoKS0+ZXhlY3V0ZShldmFsTm9kZS5nZXQoKSwgJm5ld0V4ZWMsIHRoaXNP
YmplY3QsIG1fc2NvcGVDaGFpbiwgJmV4Y2VwdGlvbik7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtK
UworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRGVidWdnZXJD
YWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRGVidWdnZXJDYWxs
RnJhbWUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRGVidWdnZXJD
YWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBEZWJ1
Z2dlckNhbGxGcmFtZV9oCiAjZGVmaW5lIERlYnVnZ2VyQ2FsbEZyYW1lX2gKIAotbmFtZXNwYWNl
IEtKUyB7CituYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAg
Y2xhc3MgRXhlY1N0YXRlOwpAQCAtNzcsNiArNzcsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
ICAgSlNWYWx1ZSogbV9leGNlcHRpb247CiAgICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIERlYnVnZ2VyQ2FsbEZyYW1lX2gKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL0Vycm9yLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
RXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAKLW5hbWVzcGFj
ZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25CZWdpbk9m
ZnNldFByb3BlcnR5TmFtZSA9ICJleHByZXNzaW9uQmVnaW5PZmZzZXQiOwogY29uc3QgY2hhciog
ZXhwcmVzc2lvbkNhcmV0T2Zmc2V0UHJvcGVydHlOYW1lID0gImV4cHJlc3Npb25DYXJldE9mZnNl
dCI7CkBAIC0xMjQsNCArMTI0LDQgQEAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBFcgogICAgIHJldHVybiBlcnJvcjsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBA
CiAjaWZuZGVmIEVycm9yX2gKICNkZWZpbmUgRXJyb3JfaAogCi1uYW1lc3BhY2UgS0pTIHsKK25h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEpTT2JqZWN0
OwpAQCAtNTgsNiArNTgsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBKU09iamVjdCogdGhyb3dF
cnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogICAgIEpT
T2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEVycm9yVHlwZSk7CiAKLX0gLy8gbmFtZXNw
YWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFcnJvcl9oCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL0Vycm9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzNjI2MikKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChFcnJvckNvbnN0cnVjdG9yKTsKIApAQCAtNzIsNCArNzIsNCBA
QCBDYWxsVHlwZSBFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShDCiAgICAgcmV0dXJuIENh
bGxUeXBlSG9zdDsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL0Vycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMzYyNjIp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAKLW5h
bWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFcnJvclByb3RvdHlw
ZTsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKQEAgLTM3LDYgKzM3LDYgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEm
KTsKICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRXJyb3JDb25zdHJ1Y3Rvcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXJy
b3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0Vycm9ySW5z
dGFuY2UuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvcklu
c3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKIAotbmFtZXNwYWNlIEtKUyB7Citu
YW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEVycm9ySW5zdGFuY2U6OmluZm8gPSB7
ICJFcnJvciIsIDAsIDAsIDAgfTsKIApAQCAtMzAsNCArMzAsNCBAQCBFcnJvckluc3RhbmNlOjpF
cnJvckluc3RhbmNlKEpTT2JqZWN0KiBwCiB7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JJbnN0YW5jZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvckluc3RhbmNlLmgJKHJldmlz
aW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0Vycm9ySW5zdGFuY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKIAotbmFt
ZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEVycm9ySW5zdGFuY2Ug
OiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1YmxpYzoKQEAgLTMzLDYgKzMzLDYgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKICAgICB9Owog
Ci19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRXJy
b3JJbnN0YW5jZV9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvclByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0Vycm9yUHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlByb3RvdHlwZUZ1bmN0
aW9uLmgiCiAjaW5jbHVkZSAidXN0cmluZy5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFj
ZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEVycm9yUHJvdG90eXBlKTsKIApA
QCAtNjUsNCArNjUsNCBAQCBKU1ZhbHVlKiBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0
CiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBzKTsKIH0KIAotfSAvLyBuYW1l
c3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9F
cnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvclBy
b3RvdHlwZS5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvclBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJF
cnJvckluc3RhbmNlLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBPYmplY3RQcm90b3R5cGU7CkBA
IC0zMyw2ICszMyw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBFcnJvclByb3RvdHlwZShF
eGVjU3RhdGUqLCBPYmplY3RQcm90b3R5cGUqLCBGdW5jdGlvblByb3RvdHlwZSopOwogICAgIH07
CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
cnJvclByb3RvdHlwZV9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlLmNwcAkocmV2aXNpb24g
MzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2Nv
cGVDaGFpbk1hcmsuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogRXhl
Y1N0YXRlOjpFeGVjU3RhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IGdsb2JhbFRoaXNWYWx1ZSwgU2NvcGVDaGFpbk5vZGUqIGdsb2JhbFNjb3BlQ2hhaW4pCiAgICAg
OiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCkBAIC01OCw0ICs1OCw0IEBAIGJvb2wgRXhl
Y1N0YXRlOjppc0dsb2JhbE9iamVjdChKU09iamVjdCoKICAgICByZXR1cm4gby0+aXNHbG9iYWxP
YmplY3QoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9FeGVjU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvRXhlY1N0YXRlLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL0V4ZWNTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5j
bHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogCi1uYW1lc3Bh
Y2UgS0pTICB7CituYW1lc3BhY2UgSlNDICB7CiAKICAgICBjbGFzcyBFdmFsTm9kZTsKICAgICBj
bGFzcyBGdW5jdGlvbkJvZHlOb2RlOwpAQCAtMTIxLDYgKzEyMSw2IEBAIG5hbWVzcGFjZSBLSlMg
IHsKIAogICAgIGVudW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25D
b2RlIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBFeGVjU3RhdGVfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNs
dWRlICJsZXhlci5oIgogI2luY2x1ZGUgIm5vZGVzLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFt
ZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRnVuY3Rpb25Db25zdHJ1
Y3Rvcik7CiAKQEAgLTE0NCw0ICsxNDQsNCBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24o
RXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFyZ3MsIElk
ZW50aWZpZXIoZXhlYywgImFub255bW91cyIpLCBVU3RyaW5nKCksIDEpOwogfQogCi19IC8vIG5h
bWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcg
QEAKIAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKIAotbmFtZXNwYWNlIEtKUyB7Citu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogCkBAIC00MCw2
ICs0MCw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
bihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25O
YW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKTsKICAgICBKU09i
amVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpOwogCi19
IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRnVuY3Rp
b25Db25zdHJ1Y3Rvcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9GdW5jdGlvblByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24uaCIKIAotbmFtZXNwYWNlIEtK
UyB7CituYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChGdW5jdGlv
blByb3RvdHlwZSk7CiAKQEAgLTEyNyw0ICsxMjcsNCBAQCBKU1ZhbHVlKiBmdW5jdGlvblByb3Rv
RnVuY0NhbGwoRXhlY1N0YXRlCiAgICAgcmV0dXJuIGNhbGwoZXhlYywgdGhpc1ZhbHVlLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGNhbGxUaGlzLCBhcmdzVGFpbCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNl
IEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRnVuY3Rp
b25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRnVuY3Rpb25Q
cm90b3R5cGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRnVuY3Rp
b25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlv
biB7CiAgICAgcHVibGljOgpAQCAtMzQsNiArMzQsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
ICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAgIH07CiAKLX0g
Ly8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBGdW5jdGlv
blByb3RvdHlwZV9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvR2V0dGVyU2V0dGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvR2V0dGVyU2V0dGVyLmNwcAkocmV2aXNp
b24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvR2V0dGVyU2V0dGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsK
IAogdm9pZCBHZXR0ZXJTZXR0ZXI6Om1hcmsoKQogewpAQCAtODEsNCArODEsNCBAQCBib29sIEdl
dHRlclNldHRlcjo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L0dldHRlclNldHRlci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9H
ZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBKU09iamVjdDsKIApAQCAtNjAsNiArNjAsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
ICAgSlNPYmplY3QqIG1fc2V0dGVyOyAgCiAgICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEdldHRlclNldHRlcl9oCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMzYyNjIpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsK
IAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9iYWxFdmFsRnVuY3Rpb24pOwogCkBAIC00
Nyw0ICs0Nyw0IEBAIHZvaWQgR2xvYmFsRXZhbEZ1bmN0aW9uOjptYXJrKCkKICAgICAgICAgbV9j
YWNoZWRHbG9iYWxPYmplY3QtPm1hcmsoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9HbG9iYWxFdmFsRnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvR2xvYmFsRXZhbEZ1bmN0aW9u
LmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0dsb2JhbEV2YWxGdW5j
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJQcm90
b3R5cGVGdW5jdGlvbi5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwpAQCAtNDMs
NiArNDMsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIG1fY2Fj
aGVkR2xvYmFsT2JqZWN0OwogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBHbG9iYWxFdmFsRnVuY3Rpb25faApJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL0luZGV4VG9OYW1lTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvSW5kZXhUb05hbWVNYXAuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9JbmRleFRvTmFtZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiaWRlbnRpZmllci5oIgog
Ci1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAvLyBXZSBtYXAgaW5kZXhlcyBp
biB0aGUgYXJndW1lbnRzIGFycmF5IHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbmFt
ZXMuIAogLy8gRXhhbXBsZTogZnVuY3Rpb24gZih4LCB5LCB6KTogYXJndW1lbnRzWzBdID0geCwg
c28gd2UgbWFwIDAgdG8gSWRlbnRpZmllcigieCIpLiAKQEAgLTkxLDQgKzkxLDQgQEAgSWRlbnRp
ZmllciYgSW5kZXhUb05hbWVNYXA6Om9wZXJhdG9yW10oYwogICAgIHJldHVybiBtX21hcFtpbmRl
eEFzTnVtYmVyXTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9JbmRleFRvTmFtZU1hcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9JbmRleFRvTmFtZU1hcC5oCShyZXZpc2lvbiAzNjI2MikKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9JbmRleFRvTmFtZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw3ICsyNCw3IEBACiAjaWZuZGVmIEluZGV4VG9OYW1lTWFwX2gKICNkZWZpbmUgSW5kZXhUb05h
bWVNYXBfaAogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
QXJnTGlzdDsKICAgICBjbGFzcyBFeGVjU3RhdGU7CkBAIC00NSw2ICs0NSw2IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgICAgICBJZGVudGlmaWVyKiBtX21hcDsgLy8gRklNWEU6IHRoaXMgc2hvdWxk
IGJlIGFuIE93bkFycmF5UHRyCiAgICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEluZGV4VG9OYW1lTWFwX2gKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysg
SmF2YVNjcmlwdENvcmUva2pzL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAidXN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogI2lmIFBM
QVRGT1JNKERBUldJTikKIHN0YXRpYyBwdGhyZWFkX29uY2VfdCBpbml0aWFsaXplVGhyZWFkaW5n
S2V5T25jZSA9IFBUSFJFQURfT05DRV9JTklUOwpAQCAtNjYsNCArNjYsNCBAQCB2b2lkIGluaXRp
YWxpemVUaHJlYWRpbmcoKQogI2VuZGlmCiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Jbml0aWFsaXplVGhyZWFkaW5n
LmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0luaXRpYWxpemVUaHJl
YWRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBLSlNfSW5p
dGlhbGl6ZVRocmVhZGluZ19oCiAjZGVmaW5lIEtKU19Jbml0aWFsaXplVGhyZWFkaW5nX2gKIAot
bmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24g
bXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBp
dCByZXBlYXRlZGx5LgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxl
OiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJl
ZW50cmFudGx5LgpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0ludGVybmFsRnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9JbnRlcm5hbEZ1bmN0aW9uLmNwcAko
cmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSW50ZXJuYWxGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvblBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFt
ZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSW50ZXJuYWxGdW5jdGlv
bik7CiAKQEAgLTU2LDQgKzU2LDQgQEAgYm9vbCBJbnRlcm5hbEZ1bmN0aW9uOjppbXBsZW1lbnRz
SGFzSW5zdAogICAgIHJldHVybiB0cnVlOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0ludGVybmFsRnVuY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSW50ZXJuYWxGdW5jdGlvbi5oCShy
ZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9JbnRlcm5hbEZ1bmN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgog
I2luY2x1ZGUgImlkZW50aWZpZXIuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogCkBAIC0zOSw3ICszOSw3IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAgICBjb25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOwog
CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKFBhc3NSZWZQdHI8S0pT
OjpTdHJ1Y3R1cmVJRD4gc3QpIDogSlNPYmplY3Qoc3Qpe30KKyAgICAgICAgSW50ZXJuYWxGdW5j
dGlvbihQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlSUQ+IHN0KSA6IEpTT2JqZWN0KHN0KXt9CiAg
ICAgICAgIEludGVybmFsRnVuY3Rpb24oRXhlY1N0YXRlKik7CiAgICAgICAgIEludGVybmFsRnVu
Y3Rpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25Qcm90b3R5cGUqLCBjb25zdCBJZGVudGlmaWVyJik7
CiAKQEAgLTQ4LDYgKzQ4LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSBjb25zdDsKICAgICB9OwogCi19IC8vIG5hbWVzcGFj
ZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSW50ZXJuYWxGdW5jdGlvbl9o
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNBY3RpdmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvSlNBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24gMzYyNjIpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvSlNBY3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1Nf
RklUU19JTl9DRUxMKEpTQWN0aXZhdGlvbik7CiAKQEAgLTE3NCw0ICsxNzQsNCBAQCBKU09iamVj
dCogSlNBY3RpdmF0aW9uOjpjcmVhdGVBcmd1bWVudHNPCiAgICAgcmV0dXJuIG5ldyAoZXhlYykg
QXJndW1lbnRzKGV4ZWMsIGZ1bmN0aW9uLCBhcmdzLCB0aGlzKTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0Fj
dGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNBY3RpdmF0aW9u
LmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTQWN0aXZhdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiU3ltYm9sVGFibGUu
aCIKICNpbmNsdWRlICJub2Rlcy5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgCkBAIC04MSw2ICs4MSw2IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgICAgICBKU0FjdGl2YXRpb25EYXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNBY3RpdmF0aW9uRGF0YSo+KEpTVmFyaWFibGVPYmplY3Q6OmQpOyB9CiAgICAg
fTsKICAgICAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBKU0FjdGl2YXRpb25faApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTQXJyYXkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU0FycmF5LmNwcAkocmV2aXNpb24g
MzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotbmFtZXNwYWNlIEtK
UyB7CituYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0FycmF5
KTsKIApAQCAtOTA3LDQgKzkwNyw0IEBAIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0
ZSogZXhlYywKICAgICByZXR1cm4gbmV3IChleGVjKSBKU0FycmF5KGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUoKSwgdmFsdWVzKTsKIH0KIAotfSAvLyBu
YW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTQXJyYXkuaAko
cmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNBcnJheS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogCi1uYW1l
c3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2ln
bmVkLCBKU1ZhbHVlKj4gU3BhcnNlQXJyYXlWYWx1ZU1hcDsKIApAQCAtMTAzLDYgKzEwMyw2IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0ZSos
IEpTVmFsdWUqIHNpbmdsZUl0ZW1WYWx1ZSk7CiAgICAgSlNBcnJheSogY29uc3RydWN0QXJyYXko
RXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYgdmFsdWVzKTsKIAotfSAvLyBuYW1lc3BhY2UgS0pT
Cit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQXJyYXlfaApJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L0pTQ2VsbC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTQ2Vs
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFt
ZXNwYWNlIEpTQyB7CiAKICNpZiBkZWZpbmVkIE5BTiAmJiBkZWZpbmVkIElORklOSVRZCiAKQEAg
LTIzMCw0ICsyMzAsNCBAQCBib29sIEpTQ2VsbDo6aXNPYmplY3QoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvSlNDZWxsLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pz
L0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNW
YWx1ZS5oIgogI2luY2x1ZGUgImNvbGxlY3Rvci5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNDZWxsIDogcHVibGljIEpTVmFsdWUgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSGVhcDsKQEAgLTMwMCw2ICszMDAsNiBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc051bWJlcih0aGlzKSA/IHRoaXMgOiAoSlNJ
bW1lZGlhdGU6OmlzSW1tZWRpYXRlKHRoaXMpID8gMCA6IGFzQ2VsbCgpLT5nZXRKU051bWJlcigp
KTsKICAgICB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBKU0NlbGxfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTRnVuY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU0Z1bmN0aW9uLmNwcAkocmV2aXNp
b24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDcgKzM4LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1l
c3BhY2UgVW5pY29kZTsKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0Z1bmN0aW9uKTsKIApAQCAtMTczLDQgKzE3Myw0IEBA
IEpTT2JqZWN0KiBKU0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXQKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNPYmplY3QqPihyZXN1bHQpOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTRnVuY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAz
NjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJub2Rlcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5j
dGlvbkJvZHlOb2RlOwogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwpAQCAtNDEsNyArNDEs
NyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hY2hpbmU7CiAKICAg
ICAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7Ci0gICAgICAgIEpTRnVuY3Rpb24o
UGFzc1JlZlB0cjxLSlM6OlN0cnVjdHVyZUlEPiBzdCkgOiBJbnRlcm5hbEZ1bmN0aW9uKHN0KSwg
bV9zY29wZUNoYWluKE5vU2NvcGVDaGFpbigpKSB7fQorICAgICAgICBKU0Z1bmN0aW9uKFBhc3NS
ZWZQdHI8SlNDOjpTdHJ1Y3R1cmVJRD4gc3QpIDogSW50ZXJuYWxGdW5jdGlvbihzdCksIG1fc2Nv
cGVDaGFpbihOb1Njb3BlQ2hhaW4oKSkge30KICAgICBwdWJsaWM6CiAgICAgICAgIEpTRnVuY3Rp
b24oRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBTY29w
ZUNoYWluTm9kZSopOwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxEYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxEYXRhLmNwcAkocmV2
aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxEYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCi1u
YW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBleHRlcm4gY29uc3QgSGFzaFRhYmxl
IGFycmF5VGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIGRhdGVUYWJsZTsKQEAgLTYwLDIx
ICs2MCwyMSBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShib29sIGlzU2hhcmVkCiAgICAg
OiBtYWNoaW5lKG5ldyBNYWNoaW5lKQogICAgICwgaGVhcChuZXcgSGVhcCh0aGlzKSkKICNpZiBF
TkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCi0gICAgLCBhcnJheVRhYmxlKG5ldyBIYXNoVGFi
bGUoS0pTOjphcnJheVRhYmxlKSkKLSAgICAsIGRhdGVUYWJsZShuZXcgSGFzaFRhYmxlKEtKUzo6
ZGF0ZVRhYmxlKSkKLSAgICAsIG1hdGhUYWJsZShuZXcgSGFzaFRhYmxlKEtKUzo6bWF0aFRhYmxl
KSkKLSAgICAsIG51bWJlclRhYmxlKG5ldyBIYXNoVGFibGUoS0pTOjpudW1iZXJUYWJsZSkpCi0g
ICAgLCByZWdFeHBUYWJsZShuZXcgSGFzaFRhYmxlKEtKUzo6cmVnRXhwVGFibGUpKQotICAgICwg
cmVnRXhwQ29uc3RydWN0b3JUYWJsZShuZXcgSGFzaFRhYmxlKEtKUzo6cmVnRXhwQ29uc3RydWN0
b3JUYWJsZSkpCi0gICAgLCBzdHJpbmdUYWJsZShuZXcgSGFzaFRhYmxlKEtKUzo6c3RyaW5nVGFi
bGUpKQorICAgICwgYXJyYXlUYWJsZShuZXcgSGFzaFRhYmxlKEpTQzo6YXJyYXlUYWJsZSkpCisg
ICAgLCBkYXRlVGFibGUobmV3IEhhc2hUYWJsZShKU0M6OmRhdGVUYWJsZSkpCisgICAgLCBtYXRo
VGFibGUobmV3IEhhc2hUYWJsZShKU0M6Om1hdGhUYWJsZSkpCisgICAgLCBudW1iZXJUYWJsZShu
ZXcgSGFzaFRhYmxlKEpTQzo6bnVtYmVyVGFibGUpKQorICAgICwgcmVnRXhwVGFibGUobmV3IEhh
c2hUYWJsZShKU0M6OnJlZ0V4cFRhYmxlKSkKKyAgICAsIHJlZ0V4cENvbnN0cnVjdG9yVGFibGUo
bmV3IEhhc2hUYWJsZShKU0M6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUpKQorICAgICwgc3RyaW5n
VGFibGUobmV3IEhhc2hUYWJsZShKU0M6OnN0cmluZ1RhYmxlKSkKICNlbHNlCi0gICAgLCBhcnJh
eVRhYmxlKCZLSlM6OmFycmF5VGFibGUpCi0gICAgLCBkYXRlVGFibGUoJktKUzo6ZGF0ZVRhYmxl
KQotICAgICwgbWF0aFRhYmxlKCZLSlM6Om1hdGhUYWJsZSkKLSAgICAsIG51bWJlclRhYmxlKCZL
SlM6Om51bWJlclRhYmxlKQotICAgICwgcmVnRXhwVGFibGUoJktKUzo6cmVnRXhwVGFibGUpCi0g
ICAgLCByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKCZLSlM6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUp
Ci0gICAgLCBzdHJpbmdUYWJsZSgmS0pTOjpzdHJpbmdUYWJsZSkKKyAgICAsIGFycmF5VGFibGUo
JkpTQzo6YXJyYXlUYWJsZSkKKyAgICAsIGRhdGVUYWJsZSgmSlNDOjpkYXRlVGFibGUpCisgICAg
LCBtYXRoVGFibGUoJkpTQzo6bWF0aFRhYmxlKQorICAgICwgbnVtYmVyVGFibGUoJkpTQzo6bnVt
YmVyVGFibGUpCisgICAgLCByZWdFeHBUYWJsZSgmSlNDOjpyZWdFeHBUYWJsZSkKKyAgICAsIHJl
Z0V4cENvbnN0cnVjdG9yVGFibGUoJkpTQzo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZSkKKyAgICAs
IHN0cmluZ1RhYmxlKCZKU0M6OnN0cmluZ1RhYmxlKQogI2VuZGlmCiAgICAgLCBudWxsUHJvdG9T
dHJ1Y3R1cmVJRChTdHJ1Y3R1cmVJRDo6Y3JlYXRlKGpzTnVsbCgpKSkKICAgICAsIGlkZW50aWZp
ZXJUYWJsZShjcmVhdGVJZGVudGlmaWVyVGFibGUoKSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9i
YWxEYXRhLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFs
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiBzdHJ1Y3QgT3BhcXVlSlND
bGFzczsKIHN0cnVjdCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE7CiAKLW5hbWVzcGFjZSBLSlMg
eworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcmdMaXN0OwogICAgIGNsYXNzIENvbW1v
bklkZW50aWZpZXJzOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJkZWJ1Z2dlci5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFj
ZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTR2xvYmFsT2JqZWN0KTsKIApA
QCAtNDU0LDQgKzQ1NCw0IEBAIHZvaWQqIEpTR2xvYmFsT2JqZWN0OjpvcGVyYXRvciBuZXcoc2l6
ZV8KICNlbmRpZgogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDM2MjYyKQorKysg
SmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFy
cmF5UHJvdG90eXBlOwogICAgIGNsYXNzIEJvb2xlYW5Qcm90b3R5cGU7CkBAIC0yOTMsNiArMjkz
LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3Q7CiAgICAg
fQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
SlNHbG9iYWxPYmplY3RfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAot
bmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIEpTVmFsdWUqIGVuY29k
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IGNoYXIqIGRvTm90
RXNjYXBlKQogewpAQCAtNDE2LDQgKzQxNiw0IEBAIEpTVmFsdWUqIGdsb2JhbEZ1bmNLSlNQcmlu
dChFeGVjU3RhdGUqIGUKIH0KICNlbmRpZgogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpZm5k
ZWYgSlNHbG9iYWxPYmplY3RGdW5jdGlvbnNfaAogI2RlZmluZSBKU0dsb2JhbE9iamVjdEZ1bmN0
aW9uc19oCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBB
cmdMaXN0OwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKQEAgLTUyLDYgKzUyLDYgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtYW50aXNzYU92ZXJmbG93TG93ZXJCb3Vu
ZCA9IDkwMDcxOTkyNTQ3NDA5OTIuMDsKICAgICBkb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhjb25z
dCBjaGFyKiwgaW50IGxlbmd0aCwgaW50IHJhZGl4KTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zX2gK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL0pTSW1tZWRpYXRlLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvSlNJbW1lZGlhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJOdW1i
ZXJQcm90b3R5cGUuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogSlNP
YmplY3QqIEpTSW1tZWRpYXRlOjp0b09iamVjdChjb25zdCBKU1ZhbHVlKiB2LCBFeGVjU3RhdGUq
IGV4ZWMpCiB7CkBAIC03Myw0ICs3Myw0IEBAIFVTdHJpbmcgSlNJbW1lZGlhdGU6OnRvU3RyaW5n
KGNvbnN0IEpTVmEKICAgICByZXR1cm4gInVuZGVmaW5lZCI7CiB9CiAKLX0gLy8gbmFtZXNwYWNl
IEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNJbW1l
ZGlhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNJbW1lZGlhdGUuaAko
cmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNJbW1lZGlhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPHN0ZGxpYi5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEpTT2JqZWN0OwpAQCAtNDQxLDYgKzQ0MSw2IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgICAgICByZXR1cm4gYiA/IEpTSW1tZWRpYXRlOjp0cnVlSW1t
ZWRpYXRlKCkgOiBKU0ltbWVkaWF0ZTo6ZmFsc2VJbW1lZGlhdGUoKTsKICAgICB9CiAKLX0gLy8g
bmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL0pTTG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L0pTTG9jay5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTTG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxwdGhyZWFk
Lmg+CiAjZW5kaWYKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVO
QUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKIApAQCAtMTk3LDQgKzE5Nyw0IEBAIEpTTG9jazo6
RHJvcEFsbExvY2tzOjp+RHJvcEFsbExvY2tzKCkKIAogI2VuZGlmIC8vIFVTRShNVUxUSVBMRV9U
SFJFQURTKQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL0pTTG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9KU0xvY2suaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNM
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi1uYW1lc3BhY2UgS0pT
IHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgLy8gVG8gbWFrZSBpdCBzYWZlIHRvIHVzZSBKYXZh
U2NyaXB0IG9uIG11bHRpcGxlIHRocmVhZHMsIGl0IGlzCiAgICAgLy8gaW1wb3J0YW50IHRvIGxv
Y2sgYmVmb3JlIGRvaW5nIGFueXRoaW5nIHRoYXQgYWxsb2NhdGVzIGEKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9KU05vdEFuT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvSlNOb3RBbk9iamVjdC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL0pTTm90QW5PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
CiAKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1l
c3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU05vdEFuT2JqZWN0KTsK
IApAQCAtMTM0LDQgKzEzNCw0IEBAIHZvaWQgSlNOb3RBbk9iamVjdDo6Z2V0UHJvcGVydHlOYW1l
cyhFeGUKICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgZXhlYy0+ZXhjZXB0aW9u
KCkgPT0gbV9leGNlcHRpb24pOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTTm90QW5PYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNOb3RBbk9iamVjdC5oCShyZXZpc2lvbiAzNjI2
MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU05vdEFuT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKLW5hbWVzcGFjZSBL
SlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU05vdEFuT2JqZWN0RXJyb3JTdHVi
IDogcHVibGljIEpTT2JqZWN0IHsKICAgICBwdWJsaWM6CkBAIC04NCw2ICs4NCw2IEBAIG5hbWVz
cGFjZSBLSlMgewogICAgICAgICBKU05vdEFuT2JqZWN0RXJyb3JTdHViKiBtX2V4Y2VwdGlvbjsK
ICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gSlNOb3RBbk9iamVjdF9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNOdW1iZXJD
ZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNOdW1iZXJDZWxsLmNw
cAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNOdW1iZXJDZWxsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIk51bWJlck9iamVj
dC5oIgogI2luY2x1ZGUgInVzdHJpbmcuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2Ug
SlNDIHsKIAogSlNWYWx1ZSogSlNOdW1iZXJDZWxsOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdAogewpAQCAtMTAxLDQgKzEwMSw0IEBAIEpTVmFs
dWUqIEpTTnVtYmVyQ2VsbDo6Z2V0SlNOdW1iZXIoKQogICAgIHJldHVybiB0aGlzOwogfQogCi19
IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL0pTTnVtYmVyQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9K
U051bWJlckNlbGwuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNO
dW1iZXJDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJ1
c3RyaW5nLmgiCiAjaW5jbHVkZSA8c3RkZGVmLmg+IC8vIGZvciBzaXplX3QKIAotbmFtZXNwYWNl
IEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xh
c3MgSlNDZWxsOwpAQCAtMTY4LDYgKzE2OCw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBy
ZXR1cm4gSlNJbW1lZGlhdGU6OmlzTnVtYmVyKHRoaXMpID8gY29uc3RfY2FzdDxKU1ZhbHVlKj4o
dGhpcykgOiBqc051bWJlcihleGVjLCB0aGlzLT50b051bWJlcihleGVjKSk7CiAgICAgfQogCi19
IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNOdW1i
ZXJDZWxsX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMzYyNjIpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3
ICs1OSw3IEBACiAKICNlbmRpZiAvLyBKU09CSkVDVF9NQVJLX1RSQUNJTkcKIAotbmFtZXNwYWNl
IEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU09i
amVjdCk7CiAKQEAgLTUyMSw0ICs1MjEsNCBAQCBKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmpl
Y3QoRXhlY1N0YXRlCiAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNPYmplY3QoZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNl
IEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuaAkocmV2aXNp
b24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVJRC5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAg
LTQxNyw2ICs0MTcsNiBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVj
CiAgICAgYXNDZWxsKCktPnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKIH0KIAotfSAv
LyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTT2JqZWN0
X2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAJKHJl
dmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTU3RhdGljU2NvcGVPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJKU1N0YXRp
Y1Njb3BlT2JqZWN0LmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIEFT
U0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNTdGF0aWNTY29wZU9iamVjdCk7CiAKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2tqcy9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL0pTU3RhdGljU2NvcGVPYmplY3QuaAkocmV2aXNpb24gMzYyNjIpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvSlNTdGF0aWNTY29wZU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCiAKLW5h
bWVzcGFjZSBLSlN7CituYW1lc3BhY2UgSlNDewogICAgIAogICAgIGNsYXNzIEpTU3RhdGljU2Nv
cGVPYmplY3QgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7CiAgICAgcHJvdGVjdGVkOgpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNp
bmNsdWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKIAot
bmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogSlNWYWx1ZSogSlNTdHJpbmc6OnRv
UHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0CiB7CkBA
IC0xNTYsNCArMTU2LDQgQEAgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiBleGVj
LAogICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTU3RyaW5nKHMsIEpTU3RyaW5nOjpIYXNPdGhlck93
bmVyKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9KU1N0cmluZy5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAi
UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiaWRlbnRpZmllci5oIgogCi1uYW1lc3BhY2UgS0pT
IHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CiAKQEAgLTE3NCw2ICsx
NzQsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc0lt
bWVkaWF0ZSh0aGlzKSA/IGpzU3RyaW5nKGV4ZWMsIEpTSW1tZWRpYXRlOjp0b1N0cmluZyh0aGlz
KSkgOiBhc0NlbGwoKS0+dG9UaGlzSlNTdHJpbmcoZXhlYyk7CiAgICAgfQogCi19IC8vIG5hbWVz
cGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNTdHJpbmdfaApJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9KU1R5cGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
SlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICNpZm5kZWYgS0pTX0pT
VFlQRV9ICiAjZGVmaW5lIEtKU19KU1RZUEVfSAogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFj
ZSBKU0MgewogCiAgICAgLyoqCiAgICAgICogUHJpbWl0aXZlIHR5cGVzCkBAIC0zOCw2ICszOCw2
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBHZXR0ZXJTZXR0ZXJUeXBlICA9IDcKICAgICB9
OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLW5hbWVz
cGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUgRDMyID0g
NDI5NDk2NzI5Ni4wOwogCkBAIC0xMDEsNCArMTAxLDQgQEAgZmxvYXQgSlNWYWx1ZTo6dG9GbG9h
dChFeGVjU3RhdGUqIGV4ZWMpIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odG9OdW1i
ZXIoZXhlYykpOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvSlNWYWx1ZS5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIC8vIGNhbiBo
YXZlIHVuZXhwZWN0ZWQgZWZmZWN0cyBpbiB0aGlzIHR5cGUgb2YgbWFjcm8sIHBhcnRpY3VsYXJs
eSB3aGVyZSBtdWx0aXBsZS1pbmhlcml0YW5jZSBpcyBpbnZvbHZlZCkuCiAjZGVmaW5lIE9CSkVD
VF9PRkZTRVQoY2xhc3MsIG1lbWJlcikgKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJl
aW50ZXJwcmV0X2Nhc3Q8Y2xhc3MqPigweDQwMDApLT5tZW1iZXIpKSAtIDB4NDAwMCkKIAotbmFt
ZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAg
ICBjbGFzcyBJZGVudGlmaWVyOwpAQCAtMjU1LDYgKzI1NSw2IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgICByZXR1cm4gdG9VSW50MzJTbG93Q2FzZShleGVjLCBvayk7CiAgICAgfQogCi19IC8v
IG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNWYWx1ZV9o
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNWYXJpYWJsZU9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTVmFyaWFibGVPYmplY3QuY3BwCShyZXZpc2lvbiAz
NjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU1ZhcmlhYmxlT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5Lmgi
CiAjaW5jbHVkZSAiUHJvcGVydHlNYXAuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2Ug
SlNDIHsKIAogYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKQEAgLTk5LDQgKzk5LDQg
QEAgdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpzZXRSZWdpc3RlckFycmF5KAogICAgIGQtPnJlZ2lz
dGVycyA9IHJlZ2lzdGVyQXJyYXkgKyBjb3VudDsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU1ZhcmlhYmxlT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTVmFyaWFibGVPYmplY3Qu
aAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNWYXJpYWJsZU9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL093bkFy
cmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKLW5hbWVzcGFjZSBLSlMg
eworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdpc3RlcjsKIApAQCAtMTY3LDYgKzE2
Nyw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLX0g
Ly8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1Zhcmlh
YmxlT2JqZWN0X2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU1dyYXBwZXJPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU1dyYXBwZXJPYmplY3QuY3BwCShy
ZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU1dyYXBwZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSlNXcmFwcGVyT2JqZWN0LmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNl
IEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNXcmFwcGVyT2JqZWN0KTsKIApA
QCAtMzMsNCArMzMsNCBAQCB2b2lkIEpTV3JhcHBlck9iamVjdDo6bWFyaygpIAogICAgICAgICBt
X2ludGVybmFsVmFsdWUtPm1hcmsoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU1dyYXBwZXJPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNXcmFwcGVyT2JqZWN0LmgJKHJldmlz
aW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTV3JhcHBlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogCi1u
YW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogICAgIAogICAgIC8qKiAKICAgICAgICBU
aGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFzc2VzIHN1Y2ggYXMgU3RyaW5nLApA
QCAtNjIsNiArNjIsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgbV9pbnRlcm5hbFZhbHVl
ID0gdmFsdWU7CiAgICAgfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gS0pTX0pTV3JhcHBlck9iamVjdF9oCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvTGFiZWxTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0xh
YmVsU3RhY2suY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9MYWJl
bFN0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkxhYmVsU3RhY2suaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1l
c3BhY2UgSlNDIHsKIAogYm9vbCBMYWJlbFN0YWNrOjpwdXNoKGNvbnN0IElkZW50aWZpZXImIGlk
KQogewpAQCAtNTAsNCArNTAsNCBAQCBib29sIExhYmVsU3RhY2s6OmNvbnRhaW5zKGNvbnN0IElk
ZW50aWZpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0xhYmVsU3RhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvTGFiZWxTdGFjay5oCShyZXZpc2lvbiAzNjI2
MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9MYWJlbFN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBMYWJlbFN0YWNrIDogTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKQEAgLTY2LDYgKzY2
LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIH0KICAgICB9CiAKLX0gLy8gbmFtZXNwYWNl
IEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBMYWJlbFN0YWNrX2gKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9NYXRoT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvTWF0aE9iamVjdC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlw
dENvcmUva2pzL01hdGhPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKE1hdGhPYmplY3QpOwogCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBKU1ZhbHVl
KiBtYXRoUHJvdG9GdW5jVGFuKEV4ZWNTdGEKIAogI2luY2x1ZGUgIk1hdGhPYmplY3QubHV0Lmgi
CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBNYXRoT2JqZWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKQEAgLTI1MSw0ICsyNTEsNCBAQCBKU1ZhbHVlKiBtYXRoUHJvdG9GdW5jVGFuKEV4ZWNT
dGF0ZSogZXhlCiAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHRhbihhcmdzLmF0KGV4ZWMsIDAp
LT50b051bWJlcihleGVjKSkpOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL01hdGhPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAzNjI2MikKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcg
KzIzLDcgQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgImxvb2t1cC5oIgogCi1u
YW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTWF0aE9iamVjdCA6
IHB1YmxpYyBKU09iamVjdCB7CiAgICAgcHVibGljOgpAQCAtMzUsNiArMzUsNiBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogICAgIH07CiAK
LX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBNYXRo
T2JqZWN0X2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL05hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yUHJvdG90eXBlLmgiCiAK
LW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcik7CiAKQEAgLTc3LDQgKzc3LDQgQEAgdm9pZCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjptYXJrKCkKICAgICAgICAgbV9wcm90by0+bWFyaygpOwog
fQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAzNjI2MikK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIK
IAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEVycm9ySW5z
dGFuY2U7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CkBAIC00OCw2ICs0OCw2IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogbV9wcm90bzsKICAg
ICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYg
Ly8gTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvTmF0
aXZlRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9O
YXRpdmVFcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAidXN0cmluZy5oIgogCi1u
YW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKE5hdGl2ZUVycm9yUHJvdG90eXBlKTsKIApAQCAtMzYsNCArMzYsNCBAQCBOYXRpdmVFcnJv
clByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5CiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5tZXNzYWdlLCBqc1N0cmluZyhleGVjLCBtZXNzYWdlKSwgMCk7CiB9CiAKLX0g
Ly8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NyArMjMsNyBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKIAotbmFtZXNwYWNlIEtKUyB7Citu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEVycm9yUHJvdG90eXBlOwogICAgIGNsYXNzIFVT
dHJpbmc7CkBAIC0zMyw2ICszMyw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBOYXRpdmVF
cnJvclByb3RvdHlwZShFeGVjU3RhdGUqLCBFcnJvclByb3RvdHlwZSosIGNvbnN0IFVTdHJpbmcm
IG5hbWUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpOwogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNl
IEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBOYXRpdmVFcnJvclByb3RvdHlw
ZV9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvTm9kZUluZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ranMvTm9kZUluZm8uaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvTm9kZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAog
I2luY2x1ZGUgIm5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAKLW5hbWVzcGFjZSBLSlMg
eworbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIGludCBGZWF0dXJlSW5m
bzsKIApAQCAtNjMsNiArNjMsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB0eXBlZGVmIE5vZGVE
ZWNsYXJhdGlvbkluZm88RXhwcmVzc2lvbk5vZGUqPiBWYXJEZWNsTGlzdEluZm87CiAgICAgdHlw
ZWRlZiBOb2RlRGVjbGFyYXRpb25JbmZvPENvbnN0RGVjbExpc3Q+IENvbnN0RGVjbExpc3RJbmZv
OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
Tm9kZUluZm9faApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL051bWJlckNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvTnVtYmVyQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9OdW1iZXJDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJOdW1iZXJP
YmplY3QuaCIKICNpbmNsdWRlICJOdW1iZXJQcm90b3R5cGUuaCIKIAotbmFtZXNwYWNlIEtKUyB7
CituYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOdW1iZXJDb25z
dHJ1Y3Rvcik7CiAKQEAgLTEwMiw0ICsxMDIsNCBAQCBDYWxsVHlwZSBOdW1iZXJDb25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEoCiAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKIH0KIAotfSAvLyBuYW1l
c3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9O
dW1iZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9OdW1i
ZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9O
dW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNp
bmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBOdW1iZXJQ
cm90b3R5cGU7CkBAIC00Niw2ICs0Niw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2aXJ0
dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0K
ICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gTnVtYmVyQ29uc3RydWN0b3JfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL051bWJl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL051bWJlck9iamVj
dC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL051bWJlck9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIk51bWJlclByb3RvdHlwZS5oIgogCi1uYW1lc3BhY2UgS0pT
IHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE51bWJlck9i
amVjdCk7CiAKQEAgLTU1LDQgKzU1LDQgQEAgTnVtYmVyT2JqZWN0KiBjb25zdHJ1Y3ROdW1iZXJG
cm9tSW1tZWRpYQogICAgIHJldHVybiBvYmo7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvTnVtYmVyT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL051bWJlck9iamVjdC5oCShyZXZpc2lv
biAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9OdW1iZXJPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiSlNXcmFwcGVyT2JqZWN0LmgiCiAK
LW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU051bWJlckNl
bGw7CiAKQEAgLTQyLDYgKzQyLDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgTnVtYmVyT2JqZWN0
KiBjb25zdHJ1Y3ROdW1iZXIoRXhlY1N0YXRlKiwgSlNOdW1iZXJDZWxsKik7CiAgICAgTnVtYmVy
T2JqZWN0KiBjb25zdHJ1Y3ROdW1iZXJGcm9tSW1tZWRpYXRlTnVtYmVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUqKTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIE51bWJlck9iamVjdF9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvTnVtYmVyUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvTnVtYmVyUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvTnVtYmVyUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgS0pT
IHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE51bWJlclBy
b3RvdHlwZSk7CiAKQEAgLTQ0MCw0ICs0NDAsNCBAQCBKU1ZhbHVlKiBudW1iZXJQcm90b0Z1bmNU
b1ByZWNpc2lvbihFeGVjCiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBzICsg
IjAuIiArIGNoYXJTZXF1ZW5jZSgnMCcsIC0oZSArIDEpKSArIG0pOwogfQogCi19IC8vIG5hbWVz
cGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL051
bWJlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9OdW1iZXJQ
cm90b3R5cGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvTnVtYmVy
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUg
Ik51bWJlck9iamVjdC5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgT2JqZWN0UHJvdG90eXBlOwpA
QCAtMzMsNiArMzMsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgTnVtYmVyUHJvdG90eXBl
KEV4ZWNTdGF0ZSosIE9iamVjdFByb3RvdHlwZSosIEZ1bmN0aW9uUHJvdG90eXBlKik7CiAgICAg
fTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IE51bWJlclByb3RvdHlwZV9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL09iamVjdENv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAKLW5hbWVz
cGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwo
T2JqZWN0Q29uc3RydWN0b3IpOwogCkBAIC03MCw0ICs3MCw0IEBAIENhbGxUeXBlIE9iamVjdENv
bnN0cnVjdG9yOjpnZXRDYWxsRGF0YSgKICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCi19
IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL09iamVjdENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL09iamVjdENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcg
QEAKIAogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKIAotbmFtZXNwYWNlIEtKUyB7Citu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNz
IE9iamVjdFByb3RvdHlwZTsKQEAgLTM3LDYgKzM3LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
ICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB9OwogCi19
IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gT2JqZWN0
Q29uc3RydWN0b3JfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL09iamVjdFByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL09iamVjdFByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL09iamVjdFByb3RvdHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJKU1N0cmluZy5o
IgogI2luY2x1ZGUgIlByb3RvdHlwZUZ1bmN0aW9uLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFt
ZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoT2JqZWN0UHJvdG90eXBl
KTsKIApAQCAtMTMzLDQgKzEzMyw0IEBAIEpTVmFsdWUqIG9iamVjdFByb3RvRnVuY1RvU3RyaW5n
KEV4ZWNTdGEKICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIg
KyB0aGlzVmFsdWUtPnRvVGhpc09iamVjdChleGVjKS0+Y2xhc3NOYW1lKCkgKyAiXSIpOwogfQog
Ci19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9PYmplY3RQcm90b3R5cGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvT2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAK
IAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKIApAQCAtNDAsNiArNDAsNiBAQCBu
YW1lc3BhY2UgS0pTIHsKIAogICAgIEpTVmFsdWUqIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKTsKIAotfSAvLyBu
YW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIE9iamVjdFByb3Rv
dHlwZV9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QAogCiBleHRlcm4gaW50IGtqc3l5cGFyc2Uodm9pZCopOwogCi1uYW1lc3BhY2UgS0pTIHsKK25h
bWVzcGFjZSBKU0MgewogCiBQYXJzZXI6OlBhcnNlcigpCiAgICAgOiBtX3NvdXJjZUlkKDApCkBA
IC05NCw0ICs5NCw0IEBAIHZvaWQgUGFyc2VyOjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW0K
ICAgICBtX251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKIH0KIAotfSAvLyBuYW1lc3BhY2Ug
S0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9QYXJzZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgJKHJldmlzaW9uIDM2
MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1
bmN0aW9uQm9keU5vZGU7CiAgICAgY2xhc3MgUHJvZ3JhbU5vZGU7CkBAIC0xMDIsNiArMTAyLDYg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKICAgICB9
CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBQ
YXJzZXJfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5TWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUHJvcGVydHlNYXAuY3BwCShyZXZpc2lvbiAzNjI2
MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9Qcm9wZXJ0eU1hcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgV1RGOjpkb3VibGVIYXNoOwogCiAjZGVmaW5lIFVTRV9T
SU5HTEVfRU5UUlkgMQogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAvLyBD
aG9vc2UgYSBudW1iZXIgZm9yIHRoZSBmb2xsb3dpbmcgc28gdGhhdCBtb3N0IHByb3BlcnR5IG1h
cHMgYXJlIHNtYWxsZXIsCiAvLyBidXQgaXQncyBub3QgZ29pbmcgdG8gYmxvdyBvdXQgdGhlIHN0
YWNrIHRvIGFsbG9jYXRlIHRoaXMgbnVtYmVyIG9mIHBvaW50ZXJzLgpAQCAtNjgsNyArNjgsNyBA
QCBzdGF0aWMgUHJvcGVydHlNYXBTdGF0aXN0aWNzRXhpdExvZ2dlciBsCiAKIFByb3BlcnR5TWFw
U3RhdGlzdGljc0V4aXRMb2dnZXI6On5Qcm9wZXJ0eU1hcFN0YXRpc3RpY3NFeGl0TG9nZ2VyKCkK
IHsKLSAgICBwcmludGYoIlxuS0pTOjpQcm9wZXJ0eU1hcCBzdGF0aXN0aWNzXG5cbiIpOworICAg
IHByaW50ZigiXG5KU0M6OlByb3BlcnR5TWFwIHN0YXRpc3RpY3NcblxuIik7CiAgICAgcHJpbnRm
KCIlZCBwcm9iZXNcbiIsIG51bVByb2Jlcyk7CiAgICAgcHJpbnRmKCIlZCBjb2xsaXNpb25zICgl
LjFmJSUpXG4iLCBudW1Db2xsaXNpb25zLCAxMDAuMCAqIG51bUNvbGxpc2lvbnMgLyBudW1Qcm9i
ZXMpOwogICAgIHByaW50ZigiJWQgcmVoYXNoZXNcbiIsIG51bVJlaGFzaGVzKTsKQEAgLTc1MSw0
ICs3NTEsNCBAQCB2b2lkIFByb3BlcnR5TWFwOjpjaGVja0NvbnNpc3RlbmN5KCkKIAogI2VuZGlm
IC8vIERPX1BST1BFUlRZTUFQX0NPTlNURU5DWV9DSEVDSwogCi19IC8vIG5hbWVzcGFjZSBLSlMK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5TWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5TWFwLmgJKHJldmlz
aW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5TWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL05vdEZvdW5kLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOwpAQCAtMTU0LDYgKzE1NCw2
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHsKICAgICB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUwor
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBQcm9wZXJ0eU1hcF9oCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvUHJvcGVydHlOYW1lQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysg
SmF2YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5TmFtZUFycmF5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3BlcnR5
TmFtZUFycmF5LmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRp
YyBjb25zdCBzaXplX3Qgc2V0VGhyZXNob2xkID0gMjA7CiAKQEAgLTQ3LDQgKzQ3LDQgQEAgdm9p
ZCBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkKFVTdHJpbmc6OlJlcAogICAgIG1fdmVjdG9yLmFwcGVu
ZChJZGVudGlmaWVyKG1fZ2xvYmFsRGF0YSwgaWRlbnRpZmllcikpOwogfQogCi19IC8vIG5hbWVz
cGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1By
b3BlcnR5TmFtZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1Byb3Bl
cnR5TmFtZUFycmF5LmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL1By
b3BlcnR5TmFtZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNl
IEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5IHsK
ICAgICBwdWJsaWM6CkBAIC02Nyw2ICs2Nyw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBK
U0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMK
K30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gUHJvcGVydHlOYW1lQXJyYXlfaApJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5U2xvdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5U2xvdC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2
YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5U2xvdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIEpTVmFsdWUqIFByb3Bl
cnR5U2xvdDo6ZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewpAQCAtNDIsNCArNDIsNCBAQCBKU1ZhbHVl
KiBQcm9wZXJ0eVNsb3Q6OmZ1bmN0aW9uR2V0dGVyKEV4CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEpTRnVuY3Rpb24qPihzbG90Lm1fZGF0YS5nZXR0ZXJGdW5jKS0+Y2FsbChleGVjLCBzbG90LnNs
b3RCYXNlKCksIGV4ZWMtPmVtcHR5TGlzdCgpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Qcm9wZXJ0eVNsb3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUHJvcGVydHlTbG90LmgJKHJldmlz
aW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5U2xvdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBKU09iamVjdDsKQEAgLTIyMCw2
ICsyMjAsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OwogICAg
IH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBQcm9wZXJ0eVNsb3RfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1Byb3RvdHlwZUZ1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUHJvdG90eXBlRnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9Qcm90b3R5cGVG
dW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLW5hbWVzcGFj
ZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoUHJv
dG90eXBlRnVuY3Rpb24pOwogCkBAIC01NSw0ICs1NSw0IEBAIENhbGxUeXBlIFByb3RvdHlwZUZ1
bmN0aW9uOjpnZXRDYWxsRGF0YSgKICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCi19IC8v
IG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL1Byb3RvdHlwZUZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L1Byb3RvdHlwZUZ1bmN0aW9uLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL1Byb3RvdHlwZUZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
ICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKIAot
bmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByb3RvdHlwZUZ1
bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKQEAgLTQwLDYg
KzQwLDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIGNvbnN0IE5hdGl2ZUZ1bmN0aW9uIG1f
ZnVuY3Rpb247CiAgICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIFByb3RvdHlwZUZ1bmN0aW9uX2gKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9QdXRQcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
UHV0UHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pz
L1B1dFByb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBK
U0MgewogICAgIAogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIApAQCAtNzIsNiArNzIsNiBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICAgICAgc2l6ZV90IG1fb2Zmc2V0OwogICAgIH07CiAKLX0gLy8g
bmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBQdXRQcm9wZXJ0
eVNsb3RfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJSZWdFeHBQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJyZWdleHAuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3Bh
Y2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChSZWdFeHBDb25zdHJ1Y3Rvcik7
CiAKQEAgLTMyOCw0ICszMjgsNCBAQCBjb25zdCBVU3RyaW5nJiBSZWdFeHBDb25zdHJ1Y3Rvcjo6
aW5wdXQoCiAgICAgcmV0dXJuIGQtPmlucHV0OwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cENvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cENvbnN0cnVjdG9y
LmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cENvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCi1uYW1lc3BhY2UgS0pTIHsK
K25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xh
c3MgUmVnRXhwOwpAQCAtNzgsNiArNzgsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgT3du
UHRyPFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZT4gZDsKICAgICB9OwogCi19IC8vIG5hbWVzcGFj
ZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gUmVnRXhwQ29uc3RydWN0b3Jf
aApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlzaW9uIDM2MjYyKQor
KysgSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IlJlZ0V4cFByb3RvdHlwZS5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0Mgewog
CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFJlZ0V4cE9iamVjdCk7CiAKQEAgLTE1MCw0ICsx
NTAsNCBAQCBDYWxsVHlwZSBSZWdFeHBPYmplY3Q6OmdldENhbGxEYXRhKENhbGxECiAgICAgcmV0
dXJuIENhbGxUeXBlSG9zdDsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDM2MjYyKQor
KysgSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJyZWdleHAuaCIK
IAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cFBy
b3RvdHlwZTsKIApAQCAtNzAsNiArNzAsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgT3du
UHRyPFJlZ0V4cE9iamVjdERhdGE+IGQ7CiAgICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cE9iamVjdF9oCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgInJlZ2V4cC5o
IgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKFJlZ0V4cFByb3RvdHlwZSk7CiAKQEAgLTExNiw0ICsxMTYsNCBAQCBKU1ZhbHVl
KiByZWdFeHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhCiAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyhleGVjLCByZXN1bHQpOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cFByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBQcm90b3R5cGUuaAkocmV2aXNp
b24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKLW5h
bWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvblByb3Rv
dHlwZTsKICAgICBjbGFzcyBPYmplY3RQcm90b3R5cGU7CkBAIC0zNiw2ICszNiw2IEBAIG5hbWVz
cGFjZSBLSlMgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87CiAgICAgfTsK
IAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJl
Z0V4cFByb3RvdHlwZV9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU2NvcGVDaGFpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1Njb3BlQ2hhaW4uY3BwCShyZXZpc2lv
biAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9TY29wZUNoYWluLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAj
aW5jbHVkZSA8c3RkaW8uaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAog
I2lmbmRlZiBOREVCVUcKIApAQCAtNTAsNCArNTAsNCBAQCB2b2lkIFNjb3BlQ2hhaW5Ob2RlOjpw
cmludCgpIGNvbnN0CiAKICNlbmRpZgogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1Njb3BlQ2hhaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAzNjI2MikKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcg
KzIzLDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLW5hbWVzcGFjZSBLSlMg
eworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFz
cyBKU09iamVjdDsKQEAgLTIxOSw2ICsyMTksNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIFNjb3BlQ2hhaW5faApJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L1Njb3BlQ2hhaW5NYXJrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1Njb3Bl
Q2hhaW5NYXJrLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL1Njb3Bl
Q2hhaW5NYXJrLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUg
IlNjb3BlQ2hhaW4uaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAg
IGlubGluZSB2b2lkIFNjb3BlQ2hhaW46Om1hcmsoKSBjb25zdAogICAgIHsKQEAgLTM0LDYgKzM0
LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIH0KICAgICB9CiAKLX0gLy8gbmFtZXNwYWNl
IEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTY29wZUNoYWluTWFya19oCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU2hlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9TaGVsbC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL1NoZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQAogI2luY2x1ZGUg
PFFEYXRlVGltZT4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIHN0YXRpYyBib29sIGZpbGxCdWZmZXJX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgVVN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYg
YnVmZmVyKTsKQEAgLTQ2Niw3ICs0NjYsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhp
bnQgYXJnYywgY2hhCiAKIGludCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndiwgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQogewotICAgIEtKUzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwor
ICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgSlNMb2NrIGxvY2soZmFsc2Up
OwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU21hbGxTdHJpbmdzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU21hbGxTdHJpbmdzLmNwcAkocmV2aXNpb24gMzYyNjIp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvU21hbGxTdHJpbmdzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKIAotbmFtZXNwYWNlIEtK
UyB7CituYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgU21hbGxTdHJpbmdzU3RvcmFnZSB7CiBwdWJs
aWM6CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU21hbGxTdHJpbmdzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL1NtYWxsU3RyaW5ncy5oCShyZXZpc2lvbiAzNjI2MikKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9TbWFsbFN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNyBAQAogI2luY2x1ZGUgInVzdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeGVjU3Rh
dGU7CiAgICAgY2xhc3MgSlNTdHJpbmc7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU291cmNl
UHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU291cmNlUHJvdmlk
ZXIuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvU291cmNlUHJvdmlk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgInVzdHJpbmcu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgU291cmNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTb3VyY2VQcm92aWRlcj4gewogICAgIHB1YmxpYzoKQEAgLTYyLDYgKzYyLDYgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgICAgIFVTdHJpbmcgbV9zb3VyY2U7CiAgICAgfTsKIAotfSAvLyBuYW1l
c3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFNvdXJjZVByb3ZpZGVy
X2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Tb3VyY2VSYW5nZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9Tb3VyY2VSYW5nZS5oCShyZXZpc2lvbiAzNjI2MikKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9Tb3VyY2VSYW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw3IEBACiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTb3Vy
Y2VSYW5nZSB7CiAgICAgcHVibGljOgpAQCAtNjIsNiArNjIsNiBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgaW50IG1fZW5kQ2hhcjsKICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU291cmNlUmFuZ2VfaApJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvU3RyaW5nQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJQcm90b3R5cGVGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IlN0cmluZ1Byb3RvdHlwZS5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0Mgewog
CiBzdGF0aWMgTkVWRVJfSU5MSU5FIEpTVmFsdWUqIHN0cmluZ0Zyb21DaGFyQ29kZVNsb3dDYXNl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKQEAgLTg5LDQgKzg5LDQg
QEAgQ2FsbFR5cGUgU3RyaW5nQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKAogICAgIHJldHVybiBD
YWxsVHlwZUhvc3Q7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nQ29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMzYy
NjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgog
Ci1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Q
cm90b3R5cGU7CiAgICAgY2xhc3MgU3RyaW5nUHJvdG90eXBlOwpAQCAtMzYsNiArMzYsNiBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxs
RGF0YSYpOwogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBTdHJpbmdDb25zdHJ1Y3Rvcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU3Ry
aW5nT2JqZWN0LmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvU3Ry
aW5nT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlND
IHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdPYmplY3QpOwogCkBAIC05OCw0
ICs5OCw0IEBAIEpTU3RyaW5nKiBTdHJpbmdPYmplY3Q6OnRvVGhpc0pTU3RyaW5nKEUKICAgICBy
ZXR1cm4gaW50ZXJuYWxWYWx1ZSgpOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ09iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMzYy
NjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1N0cmluZy5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGlj
OgpAQCAtNTQsNiArNTQsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgdmlydHVhbCBKU1N0
cmluZyogdG9UaGlzSlNTdHJpbmcoRXhlY1N0YXRlKik7CiAgIH07CiAKLX0gLy8gbmFtZXNwYWNl
IEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTdHJpbmdPYmplY3RfaApJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ09iamVjdFRoYXRN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNs
dWRlICJ1c3RyaW5nLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAvLyBXZWJDb3JlIHVzZXMgdGhpcyB0byBtYWtlIHN0eWxlLmZpbHRlciB1bmRldGVjdGFibGUK
ICAgICBjbGFzcyBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA6IHB1Ymxp
YyBTdHJpbmdPYmplY3QgewpAQCAtMzgsNiArMzgsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
ICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIH07CiAgCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWRfaApJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDM2MjYyKQor
KysgSmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAotbmFtZXNwYWNlIEtK
UyB7CituYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdQ
cm90b3R5cGUpOwogCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBKU1ZhbHVlKiBzdHJpbmdQcm90
b0Z1bmNMaW5rKEV4ZWMKIAogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5sdXQuaCIKIAotbmFt
ZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1By
b3RvdHlwZTo6aW5mbyA9IHsgIlN0cmluZyIsICZTdHJpbmdPYmplY3Q6OmluZm8sIDAsIEV4ZWNT
dGF0ZTo6c3RyaW5nVGFibGUgfTsKIApAQCAtNzkwLDQgKzc5MCw0IEBAIEpTVmFsdWUqIHN0cmlu
Z1Byb3RvRnVuY0xpbmsoRXhlY1N0YXRlKiAKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIjxh
IGhyZWY9XCIiICsgYTAtPnRvU3RyaW5nKGV4ZWMpICsgIlwiPiIgKyBzICsgIjwvYT4iKTsKIH0K
IAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9TdHJpbmdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL1N0cmluZ1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBA
CiAKICNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIE9iamVjdFByb3RvdHlwZTsKIApAQCAtMzcsNiArMzcsNiBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwog
ICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBTdHJpbmdQcm90b3R5cGVfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1N0cnVjdHVy
ZUlELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU3RydWN0dXJlSUQuY3Bw
CShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9TdHJ1Y3R1cmVJRC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlND
IHsKIAogU3RydWN0dXJlSUQ6OlN0cnVjdHVyZUlEKEpTVmFsdWUqIHByb3RvdHlwZSkKICAgICA6
IG1faXNEaWN0aW9uYXJ5KGZhbHNlKQpAQCAtMTI3LDQgKzEyNyw0IEBAIFN0cnVjdHVyZUlEQ2hh
aW46OlN0cnVjdHVyZUlEQ2hhaW4oU3RydWMKICAgICBtX3ZlY3RvcltpXSA9IHN0cnVjdHVyZUlE
OwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL1N0cnVjdHVyZUlELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL1N0cnVjdHVyZUlELmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL1N0cnVjdHVyZUlELmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNs
dWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAidXN0cmluZy5oIgogCi1uYW1lc3BhY2UgS0pTIHsK
K25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBTdHJ1Y3R1
cmVJRENoYWluOwpAQCAtOTcsNiArOTcsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgT3du
QXJyYXlQdHI8UmVmUHRyPFN0cnVjdHVyZUlEPiA+IG1fdmVjdG9yOwogICAgIH07CiAKLX0gLy8g
bmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTdHJ1Y3R1cmVJ
RF9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNyBAQAogI2luY2x1ZGUgInVzdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5l
Lmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBzdGF0aWMgQUxX
QVlTX0lOTElORSBpbnQgbWlzc2luZ1N5bWJvbE1hcmtlcigpIHsgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCk7IH0KIApAQCAtMTIwLDYgKzEyMCw2IEBAIG5hbWVzcGFjZSBL
SlMgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBTeW1ib2xU
YWJsZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VVN0cmluZzo6
UmVwPiA+LCBTeW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0cz4gU3ltYm9sVGFibGU7CiAKLX0gLy8g
bmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTeW1ib2xUYWJs
ZV9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyAr
NzMsNyBAQAogCiB1c2luZyBzdGQ6Om1heDsKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2Ug
SlNDIHsKIAogLy8gdHVuYWJsZSBwYXJhbWV0ZXJzCiAKQEAgLTEwNzEsNCArMTA3MSw0IEBAIGJv
b2wgSGVhcDo6aXNCdXN5KCkKICAgICByZXR1cm4gKHByaW1hcnlIZWFwLm9wZXJhdGlvbkluUHJv
Z3Jlc3MgIT0gTm9PcGVyYXRpb24pIHwgKG51bWJlckhlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcyAh
PSBOb09wZXJhdGlvbik7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBA
QAogCiAjZGVmaW5lIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoY2xhc3MpIENPTVBJTEVfQVNT
RVJUKHNpemVvZihjbGFzcykgPD0gQ0VMTF9TSVpFLCBjbGFzc19maXRzX2luX2NlbGwpCiAKLW5h
bWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcmdMaXN0OwogICAg
IGNsYXNzIENvbGxlY3RvckJsb2NrOwpAQCAtMjU1LDYgKzI1NSw2IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgICAgICAgICAgcmVjb3JkRXh0cmFDb3N0KGNvc3QgLyAoQ0VMTF9TSVpFICogMikpOyAK
ICAgICB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvKiBLSlNDT0xMRUNUT1JfSF8gKi8KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9jb21wbGV0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2NvbXBsZXRpb24uaAkocmV2
aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvY29tcGxldGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjaWZuZGVmIEtKU19DT01QTEVUSU9OX0gKICNkZWZp
bmUgS0pTX0NPTVBMRVRJT05fSAogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgSlNWYWx1ZTsKIApAQCAtNTEsNiArNTEsNiBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgSlNWYWx1ZSogbV92YWx1ZTsKICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMK
K30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gS0pTX0NPTVBMRVRJT05fSApJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL2NyZWF0ZV9oYXNoX3RhYmxlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9jcmVhdGVfaGFzaF90YWJsZQkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvY3JlYXRlX2hhc2hfdGFibGUJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw5
ICsxODksOSBAQCBzdWIgb3V0cHV0KCkgewogICAgIHByaW50ICJcbiNpbmNsdWRlIFwibG9va3Vw
LmhcIlxuIiBpZiAoJGluY2x1ZGVsb29rdXApOwogICAgIGlmICgkdXNlTmFtZVNwYWNlKSB7CiAg
ICAgICAgIHByaW50ICJcbm5hbWVzcGFjZSAke3VzZU5hbWVTcGFjZX1cbntcbiI7Ci0gICAgICAg
IHByaW50ICJcbnVzaW5nIG5hbWVzcGFjZSBLSlM7IjsKKyAgICAgICAgcHJpbnQgIlxudXNpbmcg
bmFtZXNwYWNlIEpTQzsiOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHByaW50ICJcbm5hbWVzcGFj
ZSBLSlMge1xuIjsKKyAgICAgICAgcHJpbnQgIlxubmFtZXNwYWNlIEpTQyB7XG4iOwogICAgIH0K
ICAgICBteSAkY291bnQgPSBzY2FsYXIgQGtleXMgKyAxOwogICAgIHByaW50ICJcbnN0YXRpYyBj
b25zdCBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWUgJHtuYW1lRW50cmllc31bJGNvdW50XSA9IHtcbiI7
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvZGVidWdnZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9kZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNj
cmlwdENvcmUva2pzL2RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1l
c3BhY2UgSlNDIHsKIAogRGVidWdnZXI6OkRlYnVnZ2VyKCkKIHsKQEAgLTUxLDQgKzUxLDQgQEAg
dm9pZCBEZWJ1Z2dlcjo6ZGV0YWNoKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIGdsb2JhbE9iamVj
dC0+c2V0RGVidWdnZXIoMCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvZGVidWdnZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvZGVidWdnZXIuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvZGVidWdnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogI2luY2x1ZGUgInByb3RlY3QuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCi1uYW1l
c3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJnTGlzdDsKICAgICBj
bGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsKQEAgLTU5LDYgKzU5LDYgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgICAgIEhhc2hTZXQ8SlNHbG9iYWxPYmplY3QqPiBtX2dsb2JhbE9iamVjdHM7CiAgICAg
fTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IERlYnVnZ2VyX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9kdG9hLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZHRvYS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2
YVNjcmlwdENvcmUva2pzL2R0b2EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDcg
QEAKIEV4YWN0bHkgb25lIG9mIElFRUVfODA4NywgSUVFRV9BUk0gb3IgSUVFRV9NQzY4ayBzaG91
bGQgYmUgZGVmaW5lZC4KICNlbmRpZgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0Mg
ewogCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogTXV0ZXgqIHNfZHRvYVA1TXV0
ZXg7CkBAIC0yNDMyLDQgKzI0MzIsNCBAQCByZXQxOgogICAgIHJldHVybiBzMDsKIH0KIAotfSAv
LyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9kdG9hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2R0b2EuaAkocmV2
aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZHRvYS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIGNsYXNzIE11dGV4OwogfQog
Ci1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgZXh0ZXJuIFdURjo6TXV0
ZXgqIHNfZHRvYVA1TXV0ZXg7CiAKQEAgLTMzLDYgKzMzLDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgY2hhciogZHRvYShkb3VibGUgZCwgaW50IG5kaWdpdHMsIGludCogZGVjcHQsIGludCogc2ln
biwgY2hhcioqIHJ2ZSk7CiAgICAgdm9pZCBmcmVlZHRvYShjaGFyKiBzKTsKIAotfSAvLyBuYW1l
c3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8qIEtKU19kdG9hX2ggKi8K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9ncmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL2dyYW1tYXIueQkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvZ3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBACiAKIGludCBr
anN5eWxleCh2b2lkKiBsdmFscCwgdm9pZCogbGxvY3AsIHZvaWQqIGdsb2JhbFB0cik7CiBpbnQg
a2pzeXllcnJvcihjb25zdCBjaGFyKik7Ci1zdGF0aWMgaW5saW5lIGJvb2wgYWxsb3dBdXRvbWF0
aWNTZW1pY29sb24oS0pTOjpMZXhlciYsIGludCk7CitzdGF0aWMgaW5saW5lIGJvb2wgYWxsb3dB
dXRvbWF0aWNTZW1pY29sb24oSlNDOjpMZXhlciYsIGludCk7CiAKICNkZWZpbmUgR0xPQkFMX0RB
VEEgc3RhdGljX2Nhc3Q8SlNHbG9iYWxEYXRhKj4oZ2xvYmFsUHRyKQogI2RlZmluZSBMRVhFUiAo
R0xPQkFMX0RBVEEtPmxleGVyKQpAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
YWxsb3dBdXRvbWF0aWNTZW1pY29sCiAjZGVmaW5lIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9k
ZSwgc3RhcnQsIGRpdm90LCBlbmQpIG5vZGUtPnNldEV4Y2VwdGlvblNvdXJjZVJhbmdlKChkaXZv
dCksIChkaXZvdCkgLSAoc3RhcnQpLCAoZW5kKSAtIChkaXZvdCkpCiAjZGVmaW5lIERCRyhsLCBz
LCBlKSAobCktPnNldExvYygocykuZmlyc3RfbGluZSwgKGUpLmxhc3RfbGluZSkKIAotdXNpbmcg
bmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBzdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKHZvaWQqLCBFeHByZXNz
aW9uTm9kZSogbG9jLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFz
QXNzaWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZv
dCwgaW50IGVuZCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAz
NjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9pZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAog
dHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBSZWZQdHI8VVN0cmluZzo6UmVwPiwgUHRySGFz
aDxjb25zdCBjaGFyKj4gPiBMaXRlcmFsSWRlbnRpZmllclRhYmxlOwogCkBAIC0yNDgsNCArMjQ4
LDQgQEAgdm9pZCBJZGVudGlmaWVyOjpjaGVja1NhbWVJZGVudGlmaWVyVGFibAogCiAjZW5kaWYK
IAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9pZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L2lkZW50aWZpZXIuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaWRl
bnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiSlNH
bG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAidXN0cmluZy5oIgogCi1uYW1lc3BhY2UgS0pTIHsKK25h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRlOwogCkBAIC03Myw3ICs3Myw3IEBA
IG5hbWVzcGFjZSBLSlMgewogCiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVTdHJp
bmc6OlJlcCosIGNvbnN0IGNoYXIqKTsKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
VVN0cmluZzo6UmVwKiwgY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKLSAgICAgICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwKiBhLCBjb25zdCBVU3RyaW5nOjpSZXAqIGIp
IHsgcmV0dXJuIEtKUzo6ZXF1YWwoYSwgYik7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgVVN0cmluZzo6UmVwKiBhLCBjb25zdCBVU3RyaW5nOjpSZXAqIGIpIHsgcmV0dXJuIEpT
Qzo6ZXF1YWwoYSwgYik7IH0KIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpS
ZXA+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRo
IHN0cmluZyBsaXRlcmFscy4KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVw
PiBhZGQoSlNHbG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0
aCBzdHJpbmcgbGl0ZXJhbHMuCkBAIC0xMzYsNiArMTM2LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgaW5saW5lIHZvaWQgSWRlbnRpZmllcjo6Y2hlY2tTYW1lSWRlbnRpZmllclRhYmxlKEpTR2xv
YmFsRGF0YSosIFVTdHJpbmc6OlJlcCopIHsgfQogI2VuZGlmCiAKLX0gLy8gbmFtZXNwYWNlIEtK
UworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBLSlNfSURFTlRJRklFUl9ICkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNj
cmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKLW5hbWVzcGFjZSBLSlMgeworbmFt
ZXNwYWNlIEpTQyB7CiAKIENvbXBsZXRpb24gSW50ZXJwcmV0ZXI6OmNoZWNrU3ludGF4KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVt
YmVyLCBjb25zdCBVU3RyaW5nJiBjb2RlKQogewpAQCAtMTAyLDQgKzEwMiw0IEBAIHZvaWQgSW50
ZXJwcmV0ZXI6OnNldFNob3VsZFByaW50RXhjZXB0aW8KICAgICBwcmludEV4Y2VwdGlvbnMgPSBw
cmludDsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9pbnRlcnByZXRlci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9pbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2Rl
Lmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgY2xhc3MgQ29tcGxl
dGlvbjsKICAgY2xhc3MgRXhlY1N0YXRlOwpAQCAtNjksNiArNjksNiBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRQcmludEV4Y2VwdGlvbnMoYm9vbCk7CiAgIH07
CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBL
SlNfSW50ZXJwcmV0ZXJfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIuY3BwCShyZXZpc2lvbiAzNjI2MikK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwog
CiAvLyB3ZSBjYW4ndCBzcGVjaWZ5IHRoZSBuYW1lc3BhY2UgaW4geWFjYydzIEMgb3V0cHV0LCBz
byBkbyBpdCBoZXJlCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogI2lmbmRlZiBLREVfVVNFX0ZJTkFMCiAjaW5jbHVkZSAiZ3JhbW1hci5oIgpAQCAtNTMsNyAr
NTMsNyBAQCBpbnQga2pzeXlsZXgodm9pZCogbHZhbHAsIHZvaWQqIGxsb2NwLCB2CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEpTR2xvYmFsRGF0YSo+KGdsb2JhbERhdGEpLT5sZXhlci0+bGV4KGx2
YWxwLCBsbG9jcCk7CiB9CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIHN0
YXRpYyBib29sIGlzRGVjaW1hbERpZ2l0KGludCk7CiAKQEAgLTc5LDcgKzc5LDcgQEAgTGV4ZXI6
OkxleGVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICAsIG1fbmV4dE9mZnNldDIoMCkK
ICAgICAsIG1fbmV4dE9mZnNldDMoMCkKICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQot
ICAgICwgbV9tYWluVGFibGUoS0pTOjptYWluVGFibGUpCisgICAgLCBtX21haW5UYWJsZShKU0M6
Om1haW5UYWJsZSkKIHsKICAgICBtX2J1ZmZlcjgucmVzZXJ2ZUNhcGFjaXR5KGluaXRpYWxSZWFk
QnVmZmVyQ2FwYWNpdHkpOwogICAgIG1fYnVmZmVyMTYucmVzZXJ2ZUNhcGFjaXR5KGluaXRpYWxS
ZWFkQnVmZmVyQ2FwYWNpdHkpOwpAQCAtODkzLDcgKzg5Myw3IEBAIHZvaWQgTGV4ZXI6OmNsZWFy
KCkKICAgICBtX3N0cmluZ3Muc3dhcChuZXdTdHJpbmdzKTsKIAogICAgIGRlbGV0ZUFsbFZhbHVl
cyhtX2lkZW50aWZpZXJzKTsKLSAgICBWZWN0b3I8S0pTOjpJZGVudGlmaWVyKj4gbmV3SWRlbnRp
ZmllcnM7CisgICAgVmVjdG9yPEpTQzo6SWRlbnRpZmllcio+IG5ld0lkZW50aWZpZXJzOwogICAg
IG5ld0lkZW50aWZpZXJzLnJlc2VydmVDYXBhY2l0eShpbml0aWFsU3RyaW5nVGFibGVDYXBhY2l0
eSk7CiAgICAgbV9pZGVudGlmaWVycy5zd2FwKG5ld0lkZW50aWZpZXJzKTsKIApAQCAtOTExLDcg
KzkxMSw3IEBAIHZvaWQgTGV4ZXI6OmNsZWFyKCkKIAogSWRlbnRpZmllciogTGV4ZXI6Om1ha2VJ
ZGVudGlmaWVyKGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKLSAgICBLSlM6OklkZW50
aWZpZXIqIGlkZW50aWZpZXIgPSBuZXcgS0pTOjpJZGVudGlmaWVyKG1fZ2xvYmFsRGF0YSwgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgSlNDOjpJZGVudGlmaWVyKiBpZGVudGlm
aWVyID0gbmV3IEpTQzo6SWRlbnRpZmllcihtX2dsb2JhbERhdGEsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOwogICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKGlkZW50aWZpZXIpOwogICAg
IHJldHVybiBpZGVudGlmaWVyOwogfQpAQCAtOTIzLDQgKzkyMyw0IEBAIFVTdHJpbmcqIExleGVy
OjptYWtlVVN0cmluZyhjb25zdCBWZWN0b3IKICAgICByZXR1cm4gc3RyaW5nOwogfQogCi19IC8v
IG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL2xleGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmgJKHJl
dmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSAi
U291cmNlUmFuZ2UuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgUmVnRXhwOwpAQCAtMTEyLDcgKzExMiw3IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2b2lkIHJlY29yZDE2KGludCk7CiAgICAgICAgIHZv
aWQgcmVjb3JkMTYoVUNoYXIpOwogCi0gICAgICAgIEtKUzo6SWRlbnRpZmllciogbWFrZUlkZW50
aWZpZXIoY29uc3QgVmVjdG9yPFVDaGFyPiYgYnVmZmVyKTsKKyAgICAgICAgSlNDOjpJZGVudGlm
aWVyKiBtYWtlSWRlbnRpZmllcihjb25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpOwogICAgICAg
ICBVU3RyaW5nKiBtYWtlVVN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpOwogCiAg
ICAgICAgIGludCB5eWxpbmVubzsKQEAgLTE1MCw3ICsxNTAsNyBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgaW50IG1fbmV4dE9mZnNldDM7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8VVN0
cmluZyo+IG1fc3RyaW5nczsKLSAgICAgICAgVmVjdG9yPEtKUzo6SWRlbnRpZmllcio+IG1faWRl
bnRpZmllcnM7CisgICAgICAgIFZlY3RvcjxKU0M6OklkZW50aWZpZXIqPiBtX2lkZW50aWZpZXJz
OwogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwogCkBAIC0xNjAsNiArMTYw
LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSBtX21haW5UYWJs
ZTsKICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gTGV4ZXJfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5jcHAJKHJldmlzaW9uIDM2MjYy
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgIlByb3RvdHlwZUZ1bmN0aW9uLmgiCiAKLW5hbWVzcGFj
ZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIHZvaWQgSGFzaFRhYmxlOjpjcmVhdGVUYWJsZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpIGNvbnN0CiB7CkBAIC03OSw0ICs3OSw0IEBAIHZvaWQg
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiAKICAgICBzbG90LnNldFZhbHVlU2xv
dCh0aGlzT2JqLCBsb2NhdGlvbiwgdGhpc09iai0+b2Zmc2V0Rm9yTG9jYXRpb24obG9jYXRpb24p
KTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2tqcy9sb29rdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvbG9va3VwLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4K
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFj
ZSBKU0MgewogCiAgICAgLy8gSGFzaCB0YWJsZSBnZW5lcmF0ZWQgYnkgdGhlIGNyZWF0ZV9oYXNo
X3RhYmxlIHNjcmlwdC4KIApAQCAtMjQ0LDcgKzI0NCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAg
ICAgICByZXR1cm4gbmV3T2JqZWN0OwogICAgIH0KIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8v
IG5hbWVzcGFjZSBKU0MKIAogLyoqCiAgKiBIZWxwZXJzIHRvIGRlZmluZSBwcm90b3R5cGUgb2Jq
ZWN0cyAoZWFjaCBvZiB3aGljaCBzaW1wbHkgaW1wbGVtZW50cwpAQCAtMjY0LDI2ICsyNjQsMjYg
QEAgbmFtZXNwYWNlIEtKUyB7CiAKIC8vIFRoZXNlIG1hY3JvcyBhc3N1bWUgdGhhdCBhIHByb3Rv
dHlwZSdzIG9ubHkgcHJvcGVydGllcyBhcmUgZnVuY3Rpb25zCiAjZGVmaW5lIEtKU19ERUZJTkVf
UFJPVE9UWVBFKENsYXNzUHJvdG90eXBlKSBcCi0gIGNsYXNzIENsYXNzUHJvdG90eXBlIDogcHVi
bGljIEtKUzo6SlNPYmplY3QgeyBcCisgIGNsYXNzIENsYXNzUHJvdG90eXBlIDogcHVibGljIEpT
Qzo6SlNPYmplY3QgeyBcCiAgIHB1YmxpYzogXAotICAgIHN0YXRpYyBLSlM6OkpTT2JqZWN0KiBz
ZWxmKEtKUzo6RXhlY1N0YXRlKiBleGVjKTsgXAotICAgIHZpcnR1YWwgY29uc3QgS0pTOjpDbGFz
c0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9IFwKLSAgICBzdGF0aWMg
Y29uc3QgS0pTOjpDbGFzc0luZm8gaW5mbzsgXAotICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEtKUzo6RXhlY1N0YXRlKiAsIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIEtKUzo6UHJvcGVydHlT
bG90Jik7IFwKLSAgICBDbGFzc1Byb3RvdHlwZShLSlM6OkV4ZWNTdGF0ZSogZXhlYykgXAotICAg
ICAgOiBLSlM6OkpTT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJv
dG90eXBlKCkpIHsgfSBcCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMpOyBcCisgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0gXAorICAgIHN0YXRpYyBjb25zdCBKU0M6OkNs
YXNzSW5mbyBpbmZvOyBcCisgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3Rh
dGUqICwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsgXAorICAg
IENsYXNzUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiBleGVjKSBcCisgICAgICA6IEpTQzo6SlNP
YmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkgeyB9
IFwKICAgICBcCiAgIH07CiAKICNkZWZpbmUgS0pTX0RFRklORV9QUk9UT1RZUEVfV0lUSF9QUk9U
T1RZUEUoQ2xhc3NQcm90b3R5cGUsIENsYXNzUHJvdG90eXBlUHJvdG90eXBlKSBcCi0gICAgY2xh
c3MgQ2xhc3NQcm90b3R5cGUgOiBwdWJsaWMgS0pTOjpKU09iamVjdCB7IFwKKyAgICBjbGFzcyBD
bGFzc1Byb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTT2JqZWN0IHsgXAogICAgIHB1YmxpYzogXAot
ICAgICAgICBzdGF0aWMgS0pTOjpKU09iamVjdCogc2VsZihLSlM6OkV4ZWNTdGF0ZSogZXhlYyk7
IFwKLSAgICAgICAgdmlydHVhbCBjb25zdCBLSlM6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29u
c3QgeyByZXR1cm4gJmluZm87IH0gXAotICAgICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0lu
Zm8gaW5mbzsgXAotICAgICAgICBib29sIGdldE93blByb3BlcnR5U2xvdChLSlM6OkV4ZWNTdGF0
ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIEtKUzo6UHJvcGVydHlTbG90Jik7IFwKLSAgICAg
ICAgQ2xhc3NQcm90b3R5cGUoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpIFwKLSAgICAgICAgICAgIDog
S0pTOjpKU09iamVjdChDbGFzc1Byb3RvdHlwZVByb3RvdHlwZTo6c2VsZihleGVjKSkgeyB9IFwK
KyAgICAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqIGV4ZWMp
OyBcCisgICAgICAgIHZpcnR1YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuICZpbmZvOyB9IFwKKyAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvIGluZm87IFwKKyAgICAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOyBcCisgICAg
ICAgIENsYXNzUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiBleGVjKSBcCisgICAgICAgICAgICA6
IEpTQzo6SlNPYmplY3QoQ2xhc3NQcm90b3R5cGVQcm90b3R5cGU6OnNlbGYoZXhlYykpIHsgfSBc
CiAgICAgXAogICAgIH07CiAKQEAgLTI5MSw3ICsyOTEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBjb25zdCBDbGFzc0luZm8gQ2xhc3NQcm90b3R5cGU6OmluZm8gPSB7IENsYXNzTmFtZSJQcm90
b3R5cGUiLCAwLCAmQ2xhc3NQcm90b3R5cGUjI1RhYmxlLCAwICB9OyBcCiAgICAgSlNPYmplY3Qq
IENsYXNzUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYykgXAogICAgIHsgXAotICAgICAg
ICByZXR1cm4gS0pTOjpjYWNoZUdsb2JhbE9iamVjdDxDbGFzc1Byb3RvdHlwZT4oZXhlYywgSWRl
bnRpZmllcihleGVjLCAiW1siIENsYXNzTmFtZSAiLnByb3RvdHlwZV1dIikpOyBcCisgICAgICAg
IHJldHVybiBKU0M6OmNhY2hlR2xvYmFsT2JqZWN0PENsYXNzUHJvdG90eXBlPihleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsICJbWyIgQ2xhc3NOYW1lICIucHJvdG90eXBlXV0iKSk7IFwKICAgICB9IFwK
ICAgICBib29sIENsYXNzUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkg
XAogICAgIHsgXApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAJKHJldmlzaW9u
IDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1l
c3BhY2UgVW5pY29kZTsKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogLy8g
QSBzaW1wbGUgdGV4dCBzdHJlYW1pbmcgY2xhc3MgdGhhdCBoZWxwcyB3aXRoIGNvZGUgaW5kZW50
YXRpb24uCiAKQEAgLTkzMyw0ICs5MzMsNCBAQCB2b2lkIEZ1bmNFeHByTm9kZTo6c3RyZWFtVG8o
U291cmNlU3RyZWFtCiAgICAgcyA8PCAiZnVuY3Rpb24gIiA8PCBtX2lkZW50IDw8ICcoJyA8PCBt
X3BhcmFtZXRlciA8PCAnKScgPDwgbV9ib2R5OwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCShyZXZpc2lvbiAzNjI2MikK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEy
ICs0NywxMiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCi1uYW1lc3BhY2UgS0pTIHsKK25h
bWVzcGFjZSBKU0MgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAjaWZuZGVmIE5ERUJV
Rwotc3RhdGljIFJlZkNvdW50ZWRMZWFrQ291bnRlciBwYXJzZXJSZWZDb3VudGVkQ291bnRlcigi
S0pTOjpOb2RlIik7CitzdGF0aWMgUmVmQ291bnRlZExlYWtDb3VudGVyIHBhcnNlclJlZkNvdW50
ZWRDb3VudGVyKCJKU0M6Ok5vZGUiKTsKICNlbmRpZgogCiBQYXJzZXJSZWZDb3VudGVkOjpQYXJz
ZXJSZWZDb3VudGVkKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKQEAgLTE4NzAsNCArMTg3MCw0
IEBAIHZvaWQgRnVuY0V4cHJOb2RlOjphZGRQYXJhbXMoKQogICAgICAgICBtX2JvZHktPnBhcmFt
ZXRlcnMoKS5hcHBlbmQocC0+aWRlbnQoKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAkocmV2aXNpb24gMzYyNjIpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBA
QAogI2RlZmluZSBLSlNfRkFTVF9DQUxMCiAjZW5kaWYKIAotbmFtZXNwYWNlIEtKUyB7CituYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlR2VuZXJh
dG9yOwpAQCAtMjQ2Nyw2ICsyNDY3LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIENsYXVz
ZUxpc3ROb2RlKiB0YWlsOwogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBOT0RFU19IXwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L29wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9vcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvb3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxmbG9hdC5o
PgogI2VuZGlmCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIC8vIEVDTUEg
MTEuOS4zCiBib29sIGVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogdjEsIEpTVmFsdWUq
IHYyKQpAQCAtMTM1LDQgKzEzNSw0IEBAIEpTVmFsdWUqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihF
eGVjU3RhdGUKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvb3BlcmF0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9vcGVyYXRpb25zLmgJKHJldmlzaW9uIDM2
MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL29wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjIsNyArMjIsNyBAQAogI2lmbmRlZiBfS0pTX09QRVJBVElPTlNfSF8KICNkZWZpbmUgX0tK
U19PUEVSQVRJT05TX0hfCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAg
Y2xhc3MgRXhlY1N0YXRlOwogICBjbGFzcyBKU1ZhbHVlOwpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL3Byb3RlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvcHJvdGVjdC5o
CShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9wcm90ZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiY29sbGVjdG9yLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBpbmxpbmUgdm9pZCBnY1Byb3RlY3QoSlNWYWx1ZSogdmFsKSAKICAgICB7CkBAIC0xMjksNiAr
MTI5LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgUHJvdGVjdGVkUHRyPFQ+JiBhLCBjb25zdCBUKiBiKSB7IHJl
dHVybiBhLmdldCgpICE9IGI7IH0KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBUKiBhLCBjb25zdCBQcm90ZWN0ZWRQdHI8VD4mIGIpIHsgcmV0dXJu
IGEgIT0gYi5nZXQoKTsgfQogIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIHByb3RlY3RfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3JlZ2V4
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3JlZ2V4cC5jcHAJKHJldmlz
aW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL3JlZ2V4cC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0Mg
ewogCiAKIApAQCAtMTc4LDQgKzE3OCw0IEBAIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJp
bmcmIHMsIGludCAKICAgICByZXR1cm4gLTE7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvcmVnZXhwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3JlZ2V4cC5oCShyZXZpc2lvbiAzNjI2MikKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9yZWdleHAuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQAogCiBzdHJ1Y3QgSlNSZWdFeHA7CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWdFeHA+IHsKICAg
ICBwdWJsaWM6CkBAIC03MCw2ICs3MCw2IEBAIG5hbWVzcGFjZSBLSlMgewogI2VuZGlmCiAgICAg
fTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEtKU19SRUdFWFBfSApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmNwcAkocmV2aXNpb24gMzYyNjIp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDcgKzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIC8vIHRvIG1lbWNweS4KICNkZWZpbmUg
VVNUUklOR19DT1BZX0NIQVJTX0lOTElORV9DVVRPRkYgMjAKIAotbmFtZXNwYWNlIEtKUyB7Citu
YW1lc3BhY2UgSlNDIHsKICAKIGV4dGVybiBjb25zdCBkb3VibGUgTmFOOwogZXh0ZXJuIGNvbnN0
IGRvdWJsZSBJbmY7CkBAIC0xNTA5LDQgKzE1MDksNCBAQCBORVZFUl9JTkxJTkUgVVN0cmluZzo6
UmVwKiBVU3RyaW5nOjpudWxsCiAgICAgcmV0dXJuICZSZXA6Om51bGw7CiB9CiAKLX0gLy8gbmFt
ZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMv
dXN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgJKHJl
dmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpT
QyB7CiAKICAgICB1c2luZyBXVEY6OlBsYWNlbWVudE5ld0Fkb3B0VHlwZTsKICAgICB1c2luZyBX
VEY6OlBsYWNlbWVudE5ld0Fkb3B0OwpAQCAtMjYxLDcgKzI2MSw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogCiAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3Qg
VVN0cmluZyYgczIpCiAgICAgewotICAgICAgICByZXR1cm4gIUtKUzo6b3BlcmF0b3I9PShzMSwg
czIpOworICAgICAgICByZXR1cm4gIUpTQzo6b3BlcmF0b3I9PShzMSwgczIpOwogICAgIH0KIAog
ICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMik7
CkBAIC0yNzEsNyArMjcxLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgICBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBjaGFyKiBzMikKICAgICB7Ci0gICAg
ICAgIHJldHVybiAhS0pTOjpvcGVyYXRvcj09KHMxLCBzMik7CisgICAgICAgIHJldHVybiAhSlND
OjpvcGVyYXRvcj09KHMxLCBzMik7CiAgICAgfQogCiAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBjaGFyICpzMSwgY29uc3QgVVN0cmluZyYgczIpCkBAIC0yODEsNyArMjgxLDcgQEAg
bmFtZXNwYWNlIEtKUyB7CiAKICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIg
KnMxLCBjb25zdCBVU3RyaW5nJiBzMikKICAgICB7Ci0gICAgICAgIHJldHVybiAhS0pTOjpvcGVy
YXRvcj09KHMxLCBzMik7CisgICAgICAgIHJldHVybiAhSlNDOjpvcGVyYXRvcj09KHMxLCBzMik7
CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmLCBjb25zdCBDU3Ry
aW5nJik7CkBAIC0zNDAsNDEgKzM0MCw0MSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgcmV0
dXJuIGNhcGFjaXR5RGVsdGE7CiAgICAgfQogCi0gICAgc3RydWN0IElkZW50aWZpZXJSZXBIYXNo
IDogUHRySGFzaDxSZWZQdHI8S0pTOjpVU3RyaW5nOjpSZXA+ID4gewotICAgICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBSZWZQdHI8S0pTOjpVU3RyaW5nOjpSZXA+JiBrZXkpIHsgcmV0
dXJuIGtleS0+Y29tcHV0ZWRIYXNoKCk7IH0KLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
S0pTOjpVU3RyaW5nOjpSZXAqIGtleSkgeyByZXR1cm4ga2V5LT5jb21wdXRlZEhhc2goKTsgfQor
ICAgIHN0cnVjdCBJZGVudGlmaWVyUmVwSGFzaCA6IFB0ckhhc2g8UmVmUHRyPEpTQzo6VVN0cmlu
Zzo6UmVwPiA+IHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVmUHRyPEpT
Qzo6VVN0cmluZzo6UmVwPiYga2V5KSB7IHJldHVybiBrZXktPmNvbXB1dGVkSGFzaCgpOyB9Cisg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKEpTQzo6VVN0cmluZzo6UmVwKiBrZXkpIHsgcmV0
dXJuIGtleS0+Y29tcHV0ZWRIYXNoKCk7IH0KICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMK
K30gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgU3RySGFzaDsKIAotICAgIHRlbXBsYXRlPD4gc3RydWN0IFN0ckhhc2g8S0pTOjpVU3Ry
aW5nOjpSZXAqPiB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtKUzo6VVN0
cmluZzo6UmVwKiBrZXkpIHsgcmV0dXJuIGtleS0+aGFzaCgpOyB9Ci0gICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IEtKUzo6VVN0cmluZzo6UmVwKiBhLCBjb25zdCBLSlM6OlVTdHJpbmc6
OlJlcCogYikgeyByZXR1cm4gS0pTOjplcXVhbChhLCBiKTsgfQorICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IFN0ckhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPiB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IEpTQzo6VVN0cmluZzo6UmVwKiBrZXkpIHsgcmV0dXJuIGtleS0+aGFzaCgp
OyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEpTQzo6VVN0cmluZzo6UmVwKiBh
LCBjb25zdCBKU0M6OlVTdHJpbmc6OlJlcCogYikgeyByZXR1cm4gSlNDOjplcXVhbChhLCBiKTsg
fQogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IGZhbHNlOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBTdHJIYXNoPFJlZlB0
cjxLSlM6OlVTdHJpbmc6OlJlcD4gPiA6IHB1YmxpYyBTdHJIYXNoPEtKUzo6VVN0cmluZzo6UmVw
Kj4gewotICAgICAgICB1c2luZyBTdHJIYXNoPEtKUzo6VVN0cmluZzo6UmVwKj46Omhhc2g7Ci0g
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZlB0cjxLSlM6OlVTdHJpbmc6OlJl
cD4mIGtleSkgeyByZXR1cm4ga2V5LT5oYXNoKCk7IH0KLSAgICAgICAgdXNpbmcgU3RySGFzaDxL
SlM6OlVTdHJpbmc6OlJlcCo+OjplcXVhbDsKLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgUmVmUHRyPEtKUzo6VVN0cmluZzo6UmVwPiYgYSwgY29uc3QgUmVmUHRyPEtKUzo6VVN0cmlu
Zzo6UmVwPiYgYikgeyByZXR1cm4gS0pTOjplcXVhbChhLmdldCgpLCBiLmdldCgpKTsgfQotICAg
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLSlM6OlVTdHJpbmc6OlJlcCogYSwgY29uc3Qg
UmVmUHRyPEtKUzo6VVN0cmluZzo6UmVwPiYgYikgeyByZXR1cm4gS0pTOjplcXVhbChhLCBiLmdl
dCgpKTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZWZQdHI8S0pTOjpVU3Ry
aW5nOjpSZXA+JiBhLCBjb25zdCBLSlM6OlVTdHJpbmc6OlJlcCogYikgeyByZXR1cm4gS0pTOjpl
cXVhbChhLmdldCgpLCBiKTsgfQorICAgIHRlbXBsYXRlPD4gc3RydWN0IFN0ckhhc2g8UmVmUHRy
PEpTQzo6VVN0cmluZzo6UmVwPiA+IDogcHVibGljIFN0ckhhc2g8SlNDOjpVU3RyaW5nOjpSZXAq
PiB7CisgICAgICAgIHVzaW5nIFN0ckhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPjo6aGFzaDsKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVmUHRyPEpTQzo6VVN0cmluZzo6UmVw
PiYga2V5KSB7IHJldHVybiBrZXktPmhhc2goKTsgfQorICAgICAgICB1c2luZyBTdHJIYXNoPEpT
Qzo6VVN0cmluZzo6UmVwKj46OmVxdWFsOworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBSZWZQdHI8SlNDOjpVU3RyaW5nOjpSZXA+JiBhLCBjb25zdCBSZWZQdHI8SlNDOjpVU3RyaW5n
OjpSZXA+JiBiKSB7IHJldHVybiBKU0M6OmVxdWFsKGEuZ2V0KCksIGIuZ2V0KCkpOyB9CisgICAg
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEpTQzo6VVN0cmluZzo6UmVwKiBhLCBjb25zdCBS
ZWZQdHI8SlNDOjpVU3RyaW5nOjpSZXA+JiBiKSB7IHJldHVybiBKU0M6OmVxdWFsKGEsIGIuZ2V0
KCkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZlB0cjxKU0M6OlVTdHJp
bmc6OlJlcD4mIGEsIGNvbnN0IEpTQzo6VVN0cmluZzo6UmVwKiBiKSB7IHJldHVybiBKU0M6OmVx
dWFsKGEuZ2V0KCksIGIpOyB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8S0pTOjpVU3RyaW5nOjpSZXAqPiB7Ci0gICAgICAgIHR5cGVkZWYg
U3RySGFzaDxLSlM6OlVTdHJpbmc6OlJlcCo+IEhhc2g7CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPiB7CisgICAgICAgIHR5cGVkZWYgU3RySGFz
aDxKU0M6OlVTdHJpbmc6OlJlcCo+IEhhc2g7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFJlZlB0cjxLSlM6OlVTdHJpbmc6OlJlcD4gPiB7Ci0gICAgICAgIHR5
cGVkZWYgU3RySGFzaDxSZWZQdHI8S0pTOjpVU3RyaW5nOjpSZXA+ID4gSGFzaDsKKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxSZWZQdHI8SlNDOjpVU3RyaW5nOjpSZXA+ID4gewor
ICAgICAgICB0eXBlZGVmIFN0ckhhc2g8UmVmUHRyPEpTQzo6VVN0cmluZzo6UmVwPiA+IEhhc2g7
CiAKICAgICB9OwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9tYXNtL01hY3JvQXNzZW1ibGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvbWFzbS9NYWNyb0Fzc2VtYmxlci5oCShyZXZp
c2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL21hc20vTWFjcm9Bc3NlbWJsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2RlZmluZSBXUkVDX0NBTEwKICNlbmRpZgog
Ci1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTWFjcm9Bc3Nl
bWJsZXIgOiBwdWJsaWMgWDg2QXNzZW1ibGVyIHsKICAgICBwdWJsaWM6CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9tYXNtL01hY3JvQXNzZW1ibGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9tYXNtL01hY3JvQXNzZW1ibGVyV2luLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBK
YXZhU2NyaXB0Q29yZS9tYXNtL01hY3JvQXNzZW1ibGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQAogCiAjaWYgRU5BQkxFKE1BU00pICYmIFBMQVRGT1JNKFg4NikKIAot
bmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBNYWNyb0Fzc2VtYmxlcjo6
ZW1pdENvbnZlcnRUb0Zhc3RDYWxsKCkKIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL21hc20vWDg2
QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvbWFzbS9YODZBc3NlbWJs
ZXIuaAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9tYXNtL1g4NkFzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKICNpbmNsdWRlIDxzdHJpbmcu
aD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSklUQ29kZUJ1
ZmZlciB7CiBwdWJsaWM6CkBAIC04OTEsNyArODkxLDcgQEAgcHJpdmF0ZToKICAgICBKSVRDb2Rl
QnVmZmVyKiBtX2J1ZmZlcjsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoTUFTTSkgJiYgUExBVEZPUk0oWDg2KQogCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvcGNyZS9wY3JlX2V4ZWMuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3Jp
cHRDb3JlL3BjcmUvcGNyZV9leGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBA
QCBwdWJsaWM6CiAKICNlbHNlCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBjbGFzcyBIaXN0b2dyYW0gewogcHVibGljOgpJbmRleDogSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9DYWxsSWRlbnRpZmllci5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDcgQEAKIAogI2luY2x1ZGUgPGtqcy91c3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBLSlMgewor
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgQ2FsbElkZW50aWZpZXIgewogICAgICAgICBV
U3RyaW5nIG1fbmFtZTsKQEAgLTU5LDMxICs1OSwzMSBAQCBuYW1lc3BhY2UgS0pTIHsKICNlbmRp
ZgogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5h
bWVzcGFjZSBXVEYgewotICAgIHRlbXBsYXRlPD4gc3RydWN0IEludEhhc2g8S0pTOjpDYWxsSWRl
bnRpZmllcj4gewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBLSlM6OkNhbGxJ
ZGVudGlmaWVyJiBrZXkpCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW50SGFzaDxKU0M6OkNhbGxJ
ZGVudGlmaWVyPiB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEpTQzo6Q2Fs
bElkZW50aWZpZXImIGtleSkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgaGFzaENv
ZGVzWzNdID0gewogICAgICAgICAgICAgICAgIGtleS5tX25hbWUucmVwKCktPmhhc2goKSwKICAg
ICAgICAgICAgICAgICBrZXkubV91cmwucmVwKCktPmhhc2goKSwKICAgICAgICAgICAgICAgICBr
ZXkubV9saW5lTnVtYmVyCiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgcmV0dXJuIEtKUzo6
VVN0cmluZzo6UmVwOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PGNoYXIqPihoYXNoQ29k
ZXMpLCBzaXplb2YoaGFzaENvZGVzKSk7CisgICAgICAgICAgICByZXR1cm4gSlNDOjpVU3RyaW5n
OjpSZXA6OmNvbXB1dGVIYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGhhc2hDb2RlcyksIHNp
emVvZihoYXNoQ29kZXMpKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IEtKUzo6Q2FsbElkZW50aWZpZXImIGEsIGNvbnN0IEtKUzo6Q2FsbElkZW50aWZpZXIm
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBK
U0M6OkNhbGxJZGVudGlmaWVyJiBhLCBjb25zdCBKU0M6OkNhbGxJZGVudGlmaWVyJiBiKSB7IHJl
dHVybiBhID09IGI7IH0KICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOwogICAgIH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8S0pTOjpDYWxsSWRlbnRpZmllcj4geyB0eXBlZGVmIEludEhhc2g8S0pTOjpDYWxs
SWRlbnRpZmllcj4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxK
U0M6OkNhbGxJZGVudGlmaWVyPiB7IHR5cGVkZWYgSW50SGFzaDxKU0M6OkNhbGxJZGVudGlmaWVy
PiBIYXNoOyB9OwogCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxLSlM6OkNhbGxJ
ZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPEtKUzo6Q2FsbElkZW50aWZpZXI+IHsKKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2FsbElkZW50aWZpZXI+IDogR2Vu
ZXJpY0hhc2hUcmFpdHM8SlNDOjpDYWxsSWRlbnRpZmllcj4gewogICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBLSlM6OkNh
bGxJZGVudGlmaWVyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBLSlM6OkNhbGxJZGVudGlmaWVyKCIi
LCAiIiwgMCk7IH0KKyAgICAgICAgc3RhdGljIEpTQzo6Q2FsbElkZW50aWZpZXIgZW1wdHlWYWx1
ZSgpIHsgcmV0dXJuIEpTQzo6Q2FsbElkZW50aWZpZXIoIiIsICIiLCAwKTsgfQogICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7Ci0gICAgICAgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShLSlM6OkNhbGxJZGVudGlmaWVyJiBzbG90KSB7
IG5ldyAoJnNsb3QpIEtKUzo6Q2FsbElkZW50aWZpZXIoS0pTOjpVU3RyaW5nKCksIEtKUzo6VVN0
cmluZygpLCAwKTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBL
SlM6OkNhbGxJZGVudGlmaWVyJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUubV9uYW1lLmlzTnVsbCgp
ICYmIHZhbHVlLm1fdXJsLmlzTnVsbCgpICYmIHZhbHVlLm1fbGluZU51bWJlciA9PSAwOyB9Cisg
ICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShKU0M6OkNhbGxJZGVudGlm
aWVyJiBzbG90KSB7IG5ldyAoJnNsb3QpIEpTQzo6Q2FsbElkZW50aWZpZXIoSlNDOjpVU3RyaW5n
KCksIEpTQzo6VVN0cmluZygpLCAwKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRW
YWx1ZShjb25zdCBKU0M6OkNhbGxJZGVudGlmaWVyJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUubV9u
YW1lLmlzTnVsbCgpICYmIHZhbHVlLm1fdXJsLmlzTnVsbCgpICYmIHZhbHVlLm1fbGluZU51bWJl
ciA9PSAwOyB9CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9IZWF2eVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL0hlYXZ5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvSGVhdnlQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiAjaW5jbHVkZSAiVHJlZVByb2ZpbGUuaCIKIAotbmFtZXNwYWNlIEtKUyB7
CituYW1lc3BhY2UgSlNDIHsKIAogSGVhdnlQcm9maWxlOjpIZWF2eVByb2ZpbGUoVHJlZVByb2Zp
bGUqIHRyZWVQcm9maWxlKQogICAgIDogUHJvZmlsZSh0cmVlUHJvZmlsZS0+dGl0bGUoKSwgdHJl
ZVByb2ZpbGUtPnVpZCgpKQpAQCAtMTEyLDQgKzExMiw0IEBAIHZvaWQgSGVhdnlQcm9maWxlOjph
ZGRBbmNlc3RvcnNBc0NoaWxkcmUKICAgICB9CiB9CiAKLX0gICAvLyBuYW1lc3BhY2UgS0pTCit9
ICAgLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGVhdnlQ
cm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGVhdnlQcm9m
aWxlLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGVhdnlQ
cm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJQcm9m
aWxlTm9kZS5oIgogI2luY2x1ZGUgIlRyZWVQcm9maWxlLmgiCiAKLW5hbWVzcGFjZSBLSlMgewor
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgVVN0cmlu
ZzsKQEAgLTU5LDYgKzU5LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIFRyZWVQcm9maWxl
KiBtX3RyZWVQcm9maWxlOwogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBIZWF2eVByb2ZpbGVfaApJbmRleDogSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNs
dWRlICJUcmVlUHJvZmlsZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLW5hbWVzcGFjZSBLSlMg
eworbmFtZXNwYWNlIEpTQyB7CiAKIFBhc3NSZWZQdHI8UHJvZmlsZT4gUHJvZmlsZTo6Y3JlYXRl
KGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCiB7CkBAIC0xMzQsNCArMTM0LDQg
QEAgdm9pZCBQcm9maWxlOjpkZWJ1Z1ByaW50RGF0YVNhbXBsZVN0eWxlKAogfQogI2VuZGlmCiAK
LX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZS5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2Ug
S0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRlOwogCkBAIC04MCw2
ICs4MCw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB1bnNpZ25lZCBpbnQgbV91aWQ7CiAg
ICAgfTsKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIFByb2ZpbGVfaApJbmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJQcm9maWxlci5oIgogI2luY2x1ZGUgIlRyYWNpbmcuaCIKIAotbmFtZXNwYWNlIEtK
UyB7CituYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIE5vbkpTRXhlY3V0aW9u
ID0gIihpZGxlKSI7CiAKQEAgLTE2Niw0ICsxNjYsNCBAQCB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6
OnJlbW92ZVByb2ZpbGVFbmQoCiAgICAgY3VycmVudE5vZGUtPnBhcmVudCgpLT5yZW1vdmVDaGls
ZChjdXJyZW50Tm9kZSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCShy
ZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ2FsbElkZW50aWZpZXI7CiAgICAgY2xhc3MgRXhl
Y1N0YXRlOwpAQCAtNzEsNiArNzEsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgUmVmUHRy
PFByb2ZpbGVOb2RlPiBtX2N1cnJlbnROb2RlOwogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNlIEtK
UworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBQcm9maWxlR2VuZXJhdG9yX2gKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5jcHAJKHJldmlzaW9uIDM2MjYy
KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLW5h
bWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBkb3VibGUgZ2V0Q291bnQo
KQogewpAQCAtMzQ5LDQgKzM0OSw0IEBAIGRvdWJsZSBQcm9maWxlTm9kZTo6ZGVidWdQcmludERh
dGFTYW1wbGUKIH0KICNlbmRpZgogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCShyZXZpc2lvbiAz
NjI2MikKKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFByb2ZpbGVOb2RlOwogCkBAIC0xNzMsNiArMTczLDYgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+ID4gbV9jaGlsZHJlbjsK
ICAgICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gUHJvZmlsZU5vZGVfaApJbmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmNw
cAkocmV2aXNpb24gMzYyNjIpCisrKyBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJQcm9maWxlTm9k
ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpT
QyB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBHbG9iYWxDb2RlRXhlY3V0aW9uID0gIihwcm9ncmFt
KSI7CiBzdGF0aWMgY29uc3QgY2hhciogQW5vbnltb3VzRnVuY3Rpb24gPSAiKGFub255bW91cyBm
dW5jdGlvbikiOwpAQCAtMTUxLDQgKzE1MSw0IEBAIENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJ
ZGVudGlmaWVyRnJvbUYKICAgICByZXR1cm4gQ2FsbElkZW50aWZpZXIobmFtZS5pc0VtcHR5KCkg
PyBBbm9ueW1vdXNGdW5jdGlvbiA6IG5hbWUsIGZ1bmN0aW9uLT5tX2JvZHktPnNvdXJjZVVSTCgp
LCBmdW5jdGlvbi0+bV9ib2R5LT5saW5lTm8oKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUwor
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgJKHJl
dmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBDYWxsSWRlbnRpZmllcjsKICAgICBjbGFzcyBFeGVjU3RhdGU7CkBAIC02
OCw2ICs2OCw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBzdGF0aWMgUHJvZmlsZXIqIHNf
c2hhcmVkRW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlOwogICAgIH07CiAKLX0gLy8gbmFtZXNwYWNl
IEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBQcm9maWxlcl9oCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9UcmVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvVHJlZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAzNjI2MikKKysr
IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1RyZWVQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiSGVhdnlQcm9maWxlLmgiCiAKLW5hbWVzcGFj
ZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIFBhc3NSZWZQdHI8VHJlZVByb2ZpbGU+IFRyZWVQ
cm9maWxlOjpjcmVhdGUoY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKIHsKQEAg
LTQ4LDQgKzQ4LDQgQEAgUHJvZmlsZSogVHJlZVByb2ZpbGU6OmhlYXZ5UHJvZmlsZSgpCiAgICAg
cmV0dXJuIG1faGVhdnlQcm9maWxlLmdldCgpOwogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvVHJlZVByb2Zp
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9UcmVlUHJvZmlsZS5o
CShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1RyZWVQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlByb2ZpbGUu
aCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV4ZWNT
dGF0ZTsKICAgICBjbGFzcyBIZWF2eVByb2ZpbGU7CkBAIC00Niw2ICs0Niw2IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgICAgICBSZWZQdHI8SGVhdnlQcm9maWxlPiBtX2hlYXZ5UHJvZmlsZTsKICAg
ICB9OwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYg
Ly8gVHJlZVByb2ZpbGVyX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3dyZWMvV1JFQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3JlYy9XUkVDLmNwcAkocmV2aXNpb24gMzYyNjIp
CisrKyBKYXZhU2NyaXB0Q29yZS93cmVjL1dSRUMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLW5hbWVzcGFjZSBLSlMgeworbmFt
ZXNwYWNlIEpTQyB7CiAKIC8vID09PT0gQ2hhcmFjdGVyQ2xhc3MgPT09PQogCkBAIC0xNjY4LDYg
KzE2NjgsNiBAQCB2b2lkIFdSRUNQYXJzZXI6OnBhcnNlRGlzanVuY3Rpb24oSm1wU3JjCiAgICAg
fQogfQogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdSRUMpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93cmVjL1dSRUMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93cmVjL1dSRUMuaAkocmV2aXNpb24gMzYyNjIpCisrKyBK
YXZhU2NyaXB0Q29yZS93cmVjL1dSRUMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBA
QAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
Ci1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiAKICAgICB0eXBlZGVmIGludCAo
KldSRUNGdW5jdGlvbikoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCkgV1JFQ19DQUxMOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIH07CiAKLX0gLy8g
bmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoV1JF
QykKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0FWTFRyZWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvQVZMVHJlZS5oCShyZXZpc2lvbiAzNjI2MikKKysrIEphdmFTY3Jp
cHRDb3JlL3d0Zi9BVkxUcmVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAog
I2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlND
IHsKIAogLy8gSGVyZSBpcyB0aGUgcmVmZXJlbmNlIGNsYXNzIGZvciBCU2V0LgogLy8KSW5kZXg6
IEphdmFTY3JpcHRHbHVlL0pTVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9K
U1V0aWxzLmgJKHJldmlzaW9uIDM2MjYyKQorKysgSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBjbGFzcyBK
U0Jhc2U7CiBjbGFzcyBKU1VzZXJPYmplY3Q7CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxOSBAQAorMjAwOC0wOS0wNyAg
Q2FtZXJvbiBad2FyaWNoICA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjA3MDQ6IFJlcGxhY2UgdGhl
IEtKUyBuYW1lc3BhY2UKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDcwND4KKworICAgICAgICBSZW5hbWUgdGhlIEtKUyBuYW1lc3BhY2UgdG8gSlND
LiBUaGVyZSBhcmUgc3RpbGwgc29tZSB1c2VzIG9mIEtKUyBpbiB0aGUKKyAgICAgICAgbmFtZXMg
b2YgSk5JIGZ1bmN0aW9ucywgYW5kIEkgd2lsbCBjaGVjayBpZiB0aGVzZSBhcmUgc2FmZSB0byBj
aGFuZ2UKKyAgICAgICAgYXMgd2VsbC4KKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0F0dHJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQ29uc3RydWN0b3I6OmNsYXNzSW5mbyk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFz
UGl4ZWxBcnJheUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2xpcGJv
YXJkQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjazo6aGFuZGxl
RXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJh
Y2suaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2s6OmNy
ZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JD
YWxsYmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21TUUxT
dGF0ZW1lbnRFcnJvckNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1
c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6aGFuZGxl
RXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJv
ckNhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRD
YWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVZvaWRDYWxsYmFjazo6aGFu
ZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENhbGxiYWNrLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TUFwcGxpY2F0aW9uQ2FjaGU6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc093bmVkU3RyaW5nT3JOdWxs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTU9iamVjdDo6RE9NT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlU1ZHRE9NT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUV4Y2VwdGlvblRyYW5zbGF0b3I6OkRPTUV4Y2VwdGlvblRyYW5zbGF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y2xhc3NJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6ZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldFByb3Bl
cnR5QXR0cmlidXRlcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
aDoKKyAgICAgICAgKFdlYkNvcmU6OmFzSlNET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XaW5kb3c6OmN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvdzo6Y3VzdG9tUHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
QmFzZTo6YWxsb3dzQWNjZXNzRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jh
c2U6OmFsbG93c0FjY2Vzc0Zyb21Ob0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1No
ZWxsOjpnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmNsYXNz
SW5mbyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRCYXNlOjpnZXRWYWx1ZVByb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRCYXNlOjpwdXRWYWx1ZVByb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldEJhc2U6OnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V2ZW50VGFyZ2V0UHJvdG90eXBlOjpKU0V2ZW50VGFyZ2V0UHJvdG90eXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQcm90b3R5cGU6OnNlbGYpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRQcm90b3R5cGU6OmNsYXNzSW5mbyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGUuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50
VGFyZ2V0Tm9kZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZl
bnRUYXJnZXROb2RlOjpnZXRWYWx1ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZl
bnRUYXJnZXROb2RlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6
OnB1dFZhbHVlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxl
Y3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENvbGxlY3Rpb246OkpTSFRNTEFs
bENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlvbjo6dG9C
b29sZWFuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxG
cmFtZVNldEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTElG
cmFtZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTElucHV0
RWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVtZW50QmFz
ZTo6SlNIVE1MSW5wdXRFbGVtZW50QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1
dEVsZW1lbnRCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTElucHV0RWxlbWVudEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0
RWxlbWVudEJhc2U6OmNsYXNzSW5mbyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MT2Jq
ZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MT3B0aW9u
RWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPcHRp
b25FbGVtZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbkVs
ZW1lbnRDb25zdHJ1Y3Rvcjo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RJbmRl
eFNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxTZWxlY3RFbGVtZW50OjppbmRleFNl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5o
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1
Y3Rvcjo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVj
dFdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3Jh
cHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyOjp3cmFw
T3V0Z29pbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0luc3BlY3RlZE9iamVjdFdyYXBw
ZXI6OmNsYXNzSW5mbyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFj
a1dyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tX
cmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlcjo6
Y2xhc3NJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVy
Ojp3cmFwT3V0Z29pbmdWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01pbWVUeXBlQXJyYXlDdXN0b20uY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTlNSZXNvbHZlci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNOU1Jlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU05TUmVzb2x2ZXI6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVzQ29sbGVjdGlvbjo6SlNOYW1lZE5vZGVzQ29sbGVj
dGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Y2xhc3NJbmZvKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVG
aWx0ZXJDb25kaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyQ29uZGl0
aW9uOjphY2NlcHROb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25k
aXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNvbmRpdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Bs
dWdpbkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkN1c3Rv
bS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJ1bnRpbWVPYmplY3QpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUXVh
cmFudGluZWRPYmplY3RXcmFwcGVyOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNR
dWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
UXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1F1YXJhbnRp
bmVkT2JqZWN0V3JhcHBlcjo6dW53cmFwcGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
UXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjp1bndyYXBwZWRHbG9iYWxPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OmNsYXNzTmFtZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNSR0JDb2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNSR0JDb2xvcjo6Y2xhc3NJbmZvKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU1ZHTGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTU1ZHTGF6eUV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1NWR0xlbmd0aEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdNYXRy
aXhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdNYXRyaXg6OmludmVyc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNTVkdNYXRyaXg6OnJvdGF0ZUZyb21WZWN0b3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU1ZHUGF0aFNlZ0N1c3RvbS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNTVkdQYXRoU2VnTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NW
R1BhdGhTZWdMaXN0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUGF0aFNl
Z0xpc3Q6OmdldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdQYXRoU2VnTGlzdDo6aW5z
ZXJ0SXRlbUJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR1BhdGhTZWdMaXN0OjpyZXBs
YWNlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR1BhdGhTZWdMaXN0OjpyZW1vdmVJdGVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUGF0aFNlZ0xpc3Q6OmFwcGVuZEl0ZW0pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHUG9pbnRMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1NWR1RyYW5zZm9ybUxpc3RDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdHls
ZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RleHRDdXN0b20uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcjo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWFNMVFBy
b2Nlc3NvckNvbnN0cnVjdG9yOjpjbGFzc0luZm8pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
WFNMVFByb2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE5QT2JqZWN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpj
cmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpjbGVhclBsYXRmb3JtU2NyaXB0T2JqZWN0cyk6CisgICAgICAgIChXZWJD
b3JlOjp1cGRhdGVSZW5kZXJpbmdGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjppbml0SmF2YUpTQmluZGluZ3MpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5n
U291cmNlUHJvdmlkZXI6OmdldFJhbmdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTS5t
bToKKyAgICAgICAgKC1bRE9NTm9kZSBKU0M6OkJpbmRpbmdzOjpdKToKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTUludGVybmFsLmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01JbnRl
cm5hbC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IF9pbml0aWFsaXplU2NyaXB0RE9N
Tm9kZUltcF0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NVXRpbGl0eS5tbToKKyAgICAg
ICAgKEpTQzo6Y3JlYXRlRE9NV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVET01X
cmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUpTV3JhcHBlcik6CisgICAgICAgICgtW1dlYlNjcmlwdE9i
amVjdCBfaW5pdFdpdGhKU09iamVjdDpKU0M6Om9yaWdpblJvb3RPYmplY3Q6SlNDOjpCaW5kaW5n
czo6cm9vdE9iamVjdDpKU0M6OkJpbmRpbmdzOjpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAg
ICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5oOgorICAgICAgICAqIGJyaWRnZS9jL2NfY2xhc3Mu
Y3BwOgorICAgICAgICAqIGJyaWRnZS9jL2NfY2xhc3MuaDoKKyAgICAgICAgKiBicmlkZ2UvYy9j
X2luc3RhbmNlLmNwcDoKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmg6CisgICAgICAg
ICogYnJpZGdlL2MvY19ydW50aW1lLmNwcDoKKyAgICAgICAgKiBicmlkZ2UvYy9jX3J1bnRpbWUu
aDoKKyAgICAgICAgKiBicmlkZ2UvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAqIGJyaWRnZS9j
L2NfdXRpbGl0eS5oOgorICAgICAgICAqIGJyaWRnZS9qbmkvam5pX2NsYXNzLmNwcDoKKyAgICAg
ICAgKiBicmlkZ2Uvam5pL2puaV9jbGFzcy5oOgorICAgICAgICAqIGJyaWRnZS9qbmkvam5pX2lu
c3RhbmNlLmNwcDoKKyAgICAgICAgKiBicmlkZ2Uvam5pL2puaV9pbnN0YW5jZS5oOgorICAgICAg
ICAqIGJyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lmg6CisgICAgICAgICogYnJpZGdlL2puaS9qbmlf
anNvYmplY3QubW06CisgICAgICAgIChKYXZhSlNPYmplY3Q6OmNhbGwpOgorICAgICAgICAoSmF2
YUpTT2JqZWN0Ojpjb252ZXJ0Sk9iamVjdFRvVmFsdWUpOgorICAgICAgICAqIGJyaWRnZS9qbmkv
am5pX29iamMubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpkaXNwYXRjaEpOSUNhbGwpOgor
ICAgICAgICAqIGJyaWRnZS9qbmkvam5pX3J1bnRpbWUuY3BwOgorICAgICAgICAqIGJyaWRnZS9q
bmkvam5pX3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2Uvam5pL2puaV91dGlsaXR5LmNwcDoK
KyAgICAgICAgKiBicmlkZ2Uvam5pL2puaV91dGlsaXR5Lmg6CisgICAgICAgICogYnJpZGdlL25w
cnVudGltZS5jcHA6CisgICAgICAgIChfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIpOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5oOgorICAgICAgICAqIGJyaWRnZS9vYmpj
L29iamNfY2xhc3MuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tOgorICAg
ICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX3V0aWxpdHkuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3V0aWxp
dHkubW06CisgICAgICAgICogYnJpZGdlL3F0L3F0X2NsYXNzLmNwcDoKKyAgICAgICAgKiBicmlk
Z2UvcXQvcXRfY2xhc3MuaDoKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwOgor
ICAgICAgICAqIGJyaWRnZS9xdC9xdF9pbnN0YW5jZS5oOgorICAgICAgICAqIGJyaWRnZS9xdC9x
dF9ydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRRVmFyaWFudFRv
VmFsdWUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6KToKKyAgICAgICAgKiBicmlkZ2UvcXQv
cXRfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lLmNwcDoKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAg
ICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHA6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9v
YmplY3QuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9yb290LmNwcDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlJvb3RPYmplY3Q6OmludmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6Um9vdE9iamVjdDo6Z2NQcm90ZWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJv
b3RPYmplY3Q6OmdjVW5wcm90ZWN0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9yb290Lmg6
CisgICAgICAgICogYnJpZGdlL3Rlc3RiaW5kaW5ncy5jcHA6CisgICAgICAgICogYnJpZGdlL3Rl
c3RiaW5kaW5ncy5tbToKKyAgICAgICAgKiBicmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRv
Y3VtZW50KToKKyAgICAgICAgKiBkb20vTlNSZXNvbHZlci5oOgorICAgICAgICAqIGRvbS9Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldERvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc29sdmVOYW1lc3BhY2VGdW5jdG9yOjpSZXNvbHZlTmFtZXNwYWNlRnVuY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlTmFtZXNwYWNlc0ZvclNlbGVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6cXVlcnlTZWxlY3RvckFsbCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBk
b20vTm9kZUZpbHRlci5jcHA6CisgICAgICAgICogZG9tL05vZGVGaWx0ZXIuaDoKKyAgICAgICAg
KiBkb20vTm9kZUZpbHRlckNvbmRpdGlvbi5jcHA6CisgICAgICAgICogZG9tL05vZGVGaWx0ZXJD
b25kaXRpb24uaDoKKyAgICAgICAgKiBkb20vTm9kZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBk
b20vTm9kZUl0ZXJhdG9yLmg6CisgICAgICAgICogZG9tL1RyYXZlcnNhbC5jcHA6CisgICAgICAg
ICogZG9tL1RyYXZlcnNhbC5oOgorICAgICAgICAqIGRvbS9UcmVlV2Fsa2VyLmNwcDoKKyAgICAg
ICAgKiBkb20vVHJlZVdhbGtlci5oOgorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAg
ICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQ
YWdlLmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6Z2V0SW5zdGFuY2UpOgorICAgICAgICAqIGh0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pY29uL0lj
b25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppY29uRGF0YWJhc2UpOgorICAgICAg
ICAqIHBhZ2UvQ29uc29sZS5jcHA6CisgICAgICAgICogcGFnZS9Db25zb2xlLmg6CisgICAgICAg
ICogcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0UmVzb3VyY2U6OlhNTEh0dHBSZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3RSZXNvdXJjZTo6flhNTEh0dHBSZXF1ZXN0UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnNldFhNTEh0dHBSZXF1ZXN0UHJv
cGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6c291cmNlU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFJlc291cmNlRG9jdW1lbnROb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNlYXJjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpmb2N1c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
aW5zcGVjdGVkV2luZG93U2NyaXB0T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjphZGREYXRhYmFzZVNjcmlwdFJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRw
UmVxdWVzdCk6CisgICAgICAgICogcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpwcm9maWxlcyk6CisgICAgICAgICogcGFn
ZS9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRD
YWxsRnJhbWU6OnNjb3BlQ2hhaW4pOgorICAgICAgICAqIHBhZ2UvSmF2YVNjcmlwdENhbGxGcmFt
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnVwZGF0ZSk6CisgICAgICAgICog
cGFnZS9KYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oOgorICAgICAgICAqIHBhZ2UvSmF2YVNjcmlw
dERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoRGlkUGFyc2VTb3Vy
Y2UpOgorICAgICAgICAqIHBhZ2UvSmF2YVNjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICog
cGFnZS9KYXZhU2NyaXB0UHJvZmlsZS5jcHA6CisgICAgICAgICogcGFnZS9KYXZhU2NyaXB0UHJv
ZmlsZS5oOgorICAgICAgICAqIHBhZ2UvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFRvdGFsVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRTZWxmVGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRUb3RhbFBlcmNlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0U2VsZlBlcmNlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TnVtYmVyT2ZDYWxscyk6
CisgICAgICAgIChXZWJDb3JlOjpnZXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpnZXRW
aXNpYmxlKToKKyAgICAgICAgKiBwYWdlL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXREZWJ1Z2dlckZv
ckFsbFBhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldERlYnVnZ2VyKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRlYnVnZ2VyKToKKyAg
ICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6
CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpvcGVyYXRvciBKU0M6OlVTdHJpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF0
b21pY1N0cmluZzo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1N0cmluZzo6ZmluZCk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L1BsYXRmb3JtU3RyaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2hhcmFjdGVyc1RvRG91YmxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vQlN0cmluZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL0JTdHJpbmcuaDoKKyAg
ICAgICAgKiBwbHVnaW5zL01pbWVUeXBlQXJyYXkuaDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdp
bi5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luQXJyYXkuaDoKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKToKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBwbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luVmlldzo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpzZXROUFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c3RvcCk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojppbml0KToKKyAgICAgICAgKiBwbHVnaW5z
L3F0L1BsdWdpblZpZXdRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXRO
UFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojppbml0KToKKyAgICAgICAgKiBwbHVnaW5zL3dpbi9Q
bHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmRpc3BhdGNo
TlBFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVLZXlib2FyZEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZU1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OnN0b3ApOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFiYXNlKToKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OnJlc3BvbnNlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6bG9hZFJl
cXVlc3RBc3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y2xlYXJSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZHJvcFBy
b3RlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwogMjAwOC0wOS0wNyAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtNTMxLDcgKzUzMSw3IEBAIF9fWk43V2ViQ29yZTZT
dHJpbmc2YXBwZW5kRWMKIF9fWk43V2ViQ29yZTZTdHJpbmdDMUVQOE5TU3RyaW5nCiBfX1pON1dl
YkNvcmU2U3RyaW5nQzFFUEtjCiBfX1pON1dlYkNvcmU2U3RyaW5nQzFFUEtjagotX19aTjdXZWJD
b3JlNlN0cmluZ0MxRVJLTjNLSlM3VVN0cmluZ0UKK19fWk43V2ViQ29yZTZTdHJpbmdDMUVSS04z
SlNDN1VTdHJpbmdFCiBfX1pON1dlYkNvcmU2V2lkZ2V0MTBpbnZhbGlkYXRlRXYKIF9fWk43V2Vi
Q29yZTZXaWRnZXQxMHNldEVuYWJsZWRFYgogX19aTjdXZWJDb3JlNldpZGdldDE0aW52YWxpZGF0
ZVJlY3RFUktOU183SW50UmVjdEUKQEAgLTY2MSw3ICs2NjEsNyBAQCBfX1pON1dlYkNvcmU5bWFr
ZVJhbmdlRVJLTlNfMTVWaXNpYmxlUG9zCiBfX1pON1dlYkNvcmU5cGFnZUNhY2hlRXYKIF9fWk43
V2ViQ29yZWVxRVJLTlNfMTlSZXNvdXJjZVJlcXVlc3RCYXNlRVMyXwogX19aTjdXZWJDb3JlcGxF
UktOU182U3RyaW5nRVMyXwotX19aTkszS0pTOEJpbmRpbmdzMTBSb290T2JqZWN0MTJnbG9iYWxP
YmplY3RFdgorX19aTkszSlNDOEJpbmRpbmdzMTBSb290T2JqZWN0MTJnbG9iYWxPYmplY3RFdgog
X19aTks3V2ViQ29yZTEwUGx1Z2luRGF0YTE2c3VwcG9ydHNNaW1lVHlwZUVSS05TXzZTdHJpbmdF
CiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTJkb2N1bWVudFZpZXdFdgogX19aTks3V2ViQ29y
ZTExQ2FjaGVkSW1hZ2U1aW1hZ2VFdgpAQCAtODMzLDcgKzgzMyw3IEBAIF9fWk5LN1dlYkNvcmU2
U3RyaW5nMTRjcmVhdGVDRlN0cmluZ0V2CiBfX1pOSzdXZWJDb3JlNlN0cmluZzZsZW5ndGhFdgog
X19aTks3V2ViQ29yZTZTdHJpbmc3aXNFbXB0eUV2CiBfX1pOSzdXZWJDb3JlNlN0cmluZzlzdWJz
dHJpbmdFamoKLV9fWk5LN1dlYkNvcmU2U3RyaW5nY3ZOM0tKUzdVU3RyaW5nRUV2CitfX1pOSzdX
ZWJDb3JlNlN0cmluZ2N2TjNKU0M3VVN0cmluZ0VFdgogX19aTks3V2ViQ29yZTZXaWRnZXQxMWlz
RnJhbWVWaWV3RXYKIF9fWk5LN1dlYkNvcmU2V2lkZ2V0MTNmcmFtZUdlb21ldHJ5RXYKIF9fWk5L
N1dlYkNvcmU2V2lkZ2V0MTR3aW5kb3dDbGlwUmVjdEV2CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9H
Q0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
R0NDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F0dHJDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdHRyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNlLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAK
LXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAi
SlNIVE1MQXVkaW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCi11c2luZyBuYW1lc3Bh
Y2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDM2
MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTYgKzM1LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIEpTQXVkaW9Db25zdHJ1Y3RvciA6IHB1YmxpYyBET01PYmplY3QgewogICAgIHB1YmxpYzoK
LSAgICAgICAgSlNBdWRpb0NvbnN0cnVjdG9yKEtKUzo6RXhlY1N0YXRlKiwgRG9jdW1lbnQqKTsK
KyAgICAgICAgSlNBdWRpb0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgRG9jdW1lbnQqKTsK
IAogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50
LmdldCgpOyB9CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IEtKUzo6Q2xhc3NJbmZvIHNfaW5mbzsK
KyAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgS0pTOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
S0pTOjpDb25zdHJ1Y3REYXRhJik7CisgICAgICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAKLSAgICAgICAgdmlydHVh
bCBjb25zdCBLSlM6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5m
bzsgfQorICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBj
b25zdCB7IHJldHVybiAmc19pbmZvOyB9CiAKICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIH07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20u
Y3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIldlYktp
dENTU0tleWZyYW1lUnVsZS5oIgogI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUuaCIK
IAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NT
dHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxranMvU3RyaW5nUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAJKHJldmlzaW9u
IDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIlNWR1BhaW50LmgiCiAjZW5k
aWYKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1BpeGVs
QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52
YXNQaXhlbEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2FudmFzUGl4ZWxBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJyYXkuaCIKIAotdXNpbmcgbmFt
ZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREN1c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJKU0ltYWdlRGF0YS5oIgogI2luY2x1ZGUg
PGtqcy9FcnJvci5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2xpcGJvYXJkQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2xpcGJvYXJkQ3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QAogI2luY2x1ZGUgPGtqcy9FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKLXVz
aW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb25zb2xlLmgi
CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0
ZW1lbnRDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLXVzaW5n
IG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogICAgIAogSlNDdXN0b21TUUxT
dGF0ZW1lbnRDYWxsYmFjazo6SlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjayhKU09iamVjdCog
Y2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCkBAIC01
OSw3ICs1OSw3IEBAIHZvaWQgSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjazo6aGFuZGwKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9mcmFtZS0+c2NyaXB0KCktPmdsb2Jh
bE9iamVjdCgpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwogICAgICAgICAKLSAgICBLSlM6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICBKU0M6OkpT
TG9jayBsb2NrKGZhbHNlKTsKICAgICAgICAgCiAgICAgSlNWYWx1ZSogZnVuY3Rpb24gPSBtX2Nh
bGxiYWNrLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FM
U3RhdGVtZW50Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPGtqcy9wcm90ZWN0Lmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU09iamVjdDsKIH0KIApAQCAtNDYsMTQgKzQ2LDE0IEBAIGNsYXNzIFNRTFJlc3VsdFNl
dDsKIAogY2xhc3MgSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjayA6IHB1YmxpYyBTUUxTdGF0
ZW1lbnRDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21T
UUxTdGF0ZW1lbnRDYWxsYmFjaz4gY3JlYXRlKEtKUzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFt
ZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0N1c3RvbVNRTFN0YXRlbWVudENhbGxi
YWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21T
UUxTdGF0ZW1lbnRDYWxsYmFjaz4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFt
ZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0N1c3RvbVNRTFN0YXRlbWVudENhbGxi
YWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQo
U1FMVHJhbnNhY3Rpb24qLCBTUUxSZXN1bHRTZXQqLCBib29sJiByYWlzZWRFeGNlcHRpb24pOwog
CiBwcml2YXRlOgotICAgIEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2soS0pTOjpKU09iamVj
dCogY2FsbGJhY2ssIEZyYW1lKik7CisgICAgSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjayhK
U0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqKTsKIAotICAgIEtKUzo6UHJvdGVjdGVkUHRy
PEtKUzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpK
U09iamVjdD4gbV9jYWxsYmFjazsKICAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7CiB9OwogCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi11c2luZyBu
YW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKICAgICAKIEpTQ3VzdG9tU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjazo6SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKEpT
T2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKQogICAgIDogbV9jYWxsYmFjayhjYWxsYmFj
aykKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJh
Y2s6OgogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ZyYW1lLT5zY3JpcHQo
KS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7CiAgICAgICAgIAotICAgIEtKUzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAg
IEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICAKICAgICBKU1ZhbHVlKiBoYW5kbGVF
dmVudEZ1bmN0aW9uID0gbV9jYWxsYmFjay0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhh
bmRsZUV2ZW50IikpOwogICAgIENhbGxEYXRhIGhhbmRsZUV2ZW50Q2FsbERhdGE7CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyAr
MzUsNyBAQAogI2luY2x1ZGUgPGtqcy9wcm90ZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU09iamVj
dDsKIH0KIApAQCAtNDYsMTQgKzQ2LDE0IEBAIGNsYXNzIFNRTEVycm9yOwogICAgIAogY2xhc3Mg
SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrIDogcHVibGljIFNRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gY3JlYXRlKEtKUzo6SlNPYmplY3QqIGNhbGxiYWNrLCBG
cmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0N1c3RvbVNRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2soY2FsbGJhY2ssIGZyYW1lKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxK
U0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBj
YWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21TUUxT
dGF0ZW1lbnRFcnJvckNhbGxiYWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9CiAgICAgICAgIAogICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiosIFNRTEVycm9yKik7CiAK
IHByaXZhdGU6Ci0gICAgSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKEtKUzo6SlNP
YmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOworICAgIEpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JD
YWxsYmFjayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqKTsKIAotICAgIEtKUzo6UHJv
dGVjdGVkUHRyPEtKUzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgSlNDOjpQcm90ZWN0ZWRQ
dHI8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsKICAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7
CiB9OwogICAgIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotdXNp
bmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAgICAgCiAjaWZuZGVmIE5E
RUJVRwogc3RhdGljIFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyIGNvdW50ZXIoIkpTQ3VzdG9t
U1FMVHJhbnNhY3Rpb25DYWxsYmFjayIpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgSlNDdXN0
b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrOjpoYW4KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9kYXRhLT5mcmFtZSgpLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIAot
ICAgIEtKUzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2Up
OwogICAgICAgICAKICAgICBKU1ZhbHVlKiBoYW5kbGVFdmVudEZ1bmN0aW9uID0gbV9kYXRhLT5j
YWxsYmFjaygpLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CiAg
ICAgQ2FsbERhdGEgaGFuZGxlRXZlbnRDYWxsRGF0YTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24g
MzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxs
YmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIEpTT2JqZWN0OwogfQogCkBAIC00MywxNCArNDMsMTQgQEAgY2xhc3MgRnJhbWU7CiAKIGNs
YXNzIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjayA6IHB1YmxpYyBTUUxUcmFuc2FjdGlv
bkNhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVNRTFRy
YW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZShLSlM6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUq
IGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxi
YWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21T
UUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZy
YW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25D
YWxsYmFjayhjYWxsYmFjaywgZnJhbWUpKTsgfQogCiAgICAgdmlydHVhbCB+SlNDdXN0b21TUUxU
cmFuc2FjdGlvbkNhbGxiYWNrKCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50
KFNRTFRyYW5zYWN0aW9uKiwgYm9vbCYgcmFpc2VkRXhjZXB0aW9uKTsKIAogcHJpdmF0ZToKLSAg
ICBKU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2soS0pTOjpKU09iamVjdCogY2FsbGJhY2ss
IEZyYW1lKik7CisgICAgSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrKEpTQzo6SlNPYmpl
Y3QqIGNhbGxiYWNrLCBGcmFtZSopOwogCiAgICAgc3RhdGljIHZvaWQgZGVsZXRlRGF0YSh2b2lk
Kik7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogICAgIAog
SlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s6OkpTQ3VzdG9tU1FMVHJhbnNhY3Rp
b25FcnJvckNhbGxiYWNrKEpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKQogICAgIDog
bV9jYWxsYmFjayhjYWxsYmFjaykKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBKU0N1c3RvbVNRTFRy
YW5zYWN0aW9uRXJyb3JDYWxsYmFjawogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2ZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIAotICAgIEtKUzo6SlNMb2Nr
IGxvY2soZmFsc2UpOworICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICAKICAg
ICBKU1ZhbHVlKiBmdW5jdGlvbiA9IG1fY2FsbGJhY2stPmdldChleGVjLCBJZGVudGlmaWVyKGV4
ZWMsICJoYW5kbGVFdmVudCIpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJv
ckNhbGxiYWNrLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSA8a2pzL3Byb3RlY3QuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTT2Jq
ZWN0OwogfQogCkBAIC00NiwxNCArNDYsMTQgQEAgY2xhc3MgU1FMRXJyb3I7CiAKIGNsYXNzIEpT
Q3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIDogcHVibGljIFNRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21T
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShLSlM6OkpTT2JqZWN0KiBjYWxsYmFj
aywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21TUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2soY2FsbGJhY2ssIGZyYW1lKSk7IH0KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxKU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gY3JlYXRlKEpTQzo6SlNP
YmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0N1
c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayhjYWxsYmFjaywgZnJhbWUpKTsgfQogICAg
IAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTUUxFcnJvciopOwogCiBwcml2YXRlOgot
ICAgIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKEtKUzo6SlNPYmplY3QqIGNh
bGxiYWNrLCBGcmFtZSopOworICAgIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
KEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOwogCi0gICAgS0pTOjpQcm90ZWN0ZWRQ
dHI8S0pTOjpKU09iamVjdD4gbV9jYWxsYmFjazsKKyAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6
OkpTT2JqZWN0PiBtX2NhbGxiYWNrOwogICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKIH07CiAK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCShy
ZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJh
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwog
ICAgIAogSlNDdXN0b21Wb2lkQ2FsbGJhY2s6OkpTQ3VzdG9tVm9pZENhbGxiYWNrKEpTT2JqZWN0
KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKQogICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKQEAg
LTU5LDcgKzU5LDcgQEAgdm9pZCBKU0N1c3RvbVZvaWRDYWxsYmFjazo6aGFuZGxlRXZlbnQoKQog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7CiAgICAgICAgIAotICAgIEtKUzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgIEpTQzo6
SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICAKICAgICBKU1ZhbHVlKiBmdW5jdGlvbiA9IG1f
Y2FsbGJhY2stPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21W
b2lkQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
Vm9pZENhbGxiYWNrLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVZvaWRDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICBjbGFzcyBKU0N1c3RvbVZvaWRDYWxsYmFjayA6
IHB1YmxpYyBWb2lkQ2FsbGJhY2sgewogICAgIHB1YmxpYzogCi0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEpTQ3VzdG9tVm9pZENhbGxiYWNrPiBjcmVhdGUoS0pTOjpKU09iamVjdCogY2FsbGJh
Y2ssIEZyYW1lKiBmcmFtZSkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21Wb2lk
Q2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tVm9pZENh
bGxiYWNrKGNhbGxiYWNrLCBmcmFtZSkpOwogICAgICAgICB9CkBAIC00OSwxMyArNDksMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoKTsK
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNDdXN0b21Wb2lkQ2FsbGJhY2soS0pT
OjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKik7CisgICAgICAgIEpTQ3VzdG9tVm9pZENhbGxi
YWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOwogCi0gICAgICAgIEtKUzo6UHJv
dGVjdGVkUHRyPEtKUzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgICAgIEpTQzo6UHJvdGVj
dGVkUHRyPEpTQzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4g
bV9mcmFtZTsKICAgICB9OwogCi0gICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHRvVm9pZENh
bGxiYWNrKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU1ZhbHVlKik7CisgICAgUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+IHRvVm9pZENhbGxiYWNrKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
Kik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDkgKzQxLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBu
YW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUGFzc1JlZlB0cjxKU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlcj4gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZShLSlM6OkV4
ZWNTdGF0ZSogZXhlYywgS0pTOjpKU1ZhbHVlKiB2YWx1ZSkKK1Bhc3NSZWZQdHI8SlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXI+IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgJKHJldmlzaW9uIDM2MjYyKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpTVmFsdWU7
CkBAIC00NCwxNiArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIgOiBwdWJsaWMgWFBhdGhOU1Jlc29sdmVyIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyPiBj
cmVhdGUoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTVmFsdWUqKTsKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSopOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB+SlNDdXN0b21YUGF0
aE5TUmVzb2x2ZXIoKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBsb29rdXBOYW1lc3BhY2VV
UkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXIoS0pTOjpKU09iamVjdCosIEZyYW1lKik7CisgICAgICAgIEpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyKEpTQzo6SlNPYmplY3QqLCBGcmFtZSopOwogCi0gICAgICAgIEtK
Uzo6SlNPYmplY3QqIG1fY3VzdG9tUmVzb2x2ZXI7IC8vIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
cyBhcmUgYWx3YXlzIHRlbXBvcmFyeSwgdGh1cyBubyBuZWVkIHRvIEdDIHByb3RlY3QgdGhlIG9i
amVjdC4KKyAgICAgICAgSlNDOjpKU09iamVjdCogbV9jdXN0b21SZXNvbHZlcjsgLy8gSlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXJzIGFyZSBhbHdheXMgdGVtcG9yYXJ5LCB0aHVzIG5vIG5lZWQgdG8g
R0MgcHJvdGVjdCB0aGUgb2JqZWN0LgogICAgICAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7CiAg
ICAgfTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01BcHBsaWNh
dGlvbkNhY2hlQ3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAKICNpbmNsdWRlICJKU0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3Rl
bmVyLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC05Myw3ICs5Myw3IEBAIEpTVmFsdWUqIEpTRE9N
QXBwbGljYXRpb25DYWNoZTo6cmVtb3ZlRXYKICAgICAKIH0KICAgICAKLUpTVmFsdWUqIEpTRE9N
QXBwbGljYXRpb25DYWNoZTo6ZGlzcGF0Y2hFdmVudChLSlM6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgQXJnTGlzdCYgYXJncykKK0pTVmFsdWUqIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6ZGlzcGF0
Y2hFdmVudChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiAjaW5jbHVkZSAi
WFBhdGhFeGNlcHRpb24uaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMjMsNyArMjIzLDcg
QEAgSlNWYWx1ZSoganNTdHJpbmdPck51bGwoRXhlY1N0YXRlKiBleGVjLAogICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCBzKTsKIH0KIAotSlNWYWx1ZSoganNPd25lZFN0cmluZ09yTnVsbChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEtKUzo6VVN0cmluZyYgcykKK0pTVmFsdWUqIGpzT3duZWRTdHJp
bmdPck51bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OlVTdHJpbmcmIHMpCiB7CiAgICAg
aWYgKHMuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAvLyBCYXNlIGNsYXNzIGZvciBhbGwgb2Jq
ZWN0cyBpbiB0aGlzIGJpbmRpbmcgZXhjZXB0IFdpbmRvdy4KLSAgICBjbGFzcyBET01PYmplY3Qg
OiBwdWJsaWMgS0pTOjpKU09iamVjdCB7CisgICAgY2xhc3MgRE9NT2JqZWN0IDogcHVibGljIEpT
Qzo6SlNPYmplY3QgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgRE9NT2JqZWN0
KFBhc3NSZWZQdHI8S0pTOjpTdHJ1Y3R1cmVJRD4gc3RydWN0dXJlSUQpIAorICAgICAgICBleHBs
aWNpdCBET01PYmplY3QoUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZUlEPiBzdHJ1Y3R1cmVJRCkg
CiAgICAgICAgICAgICA6IEpTT2JqZWN0KHN0cnVjdHVyZUlEKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBleHBsaWNpdCBET01PYmplY3QoS0pTOjpKU09iamVjdCogcHJvdG90eXBl
KQorICAgICAgICBleHBsaWNpdCBET01PYmplY3QoSlNDOjpKU09iamVjdCogcHJvdG90eXBlKQog
ICAgICAgICAgICAgOiBKU09iamVjdChwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgfQpA
QCAtNjEsNyArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICB9OwogCi0g
ICAgY2xhc3MgU2NyaXB0SW50ZXJwcmV0ZXIgOiBwdWJsaWMgS0pTOjpJbnRlcnByZXRlciB7Cisg
ICAgY2xhc3MgU2NyaXB0SW50ZXJwcmV0ZXIgOiBwdWJsaWMgSlNDOjpJbnRlcnByZXRlciB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRE9NT2JqZWN0KiBnZXRET01PYmplY3Qodm9pZCog
b2JqZWN0SGFuZGxlKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0RE9NT2JqZWN0KHZvaWQqIG9i
amVjdEhhbmRsZSwgRE9NT2JqZWN0Kik7CkBAIC03NiwxMCArNzYsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIH07CiAKICAgICAvLyBSZXRyaWV2ZSBmcm9tIGNhY2hlLCBvciBjcmVhdGUs
IGEgSlMgd3JhcHBlciBmb3IgYSBET00gb2JqZWN0LgotICAgIHRlbXBsYXRlPGNsYXNzIERPTU9i
aiwgY2xhc3MgSlNET01PYmosIGNsYXNzIEpTRE9NT2JqUHJvdG90eXBlPiBpbmxpbmUgS0pTOjpK
U1ZhbHVlKiBjYWNoZURPTU9iamVjdChLSlM6OkV4ZWNTdGF0ZSogZXhlYywgRE9NT2JqKiBkb21P
YmopCisgICAgdGVtcGxhdGU8Y2xhc3MgRE9NT2JqLCBjbGFzcyBKU0RPTU9iaiwgY2xhc3MgSlNE
T01PYmpQcm90b3R5cGU+IGlubGluZSBKU0M6OkpTVmFsdWUqIGNhY2hlRE9NT2JqZWN0KEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBET01PYmoqIGRvbU9iaikKICAgICB7CiAgICAgICAgIGlmICghZG9t
T2JqKQotICAgICAgICAgICAgcmV0dXJuIEtKUzo6anNOdWxsKCk7CisgICAgICAgICAgICByZXR1
cm4gSlNDOjpqc051bGwoKTsKICAgICAgICAgaWYgKERPTU9iamVjdCogcmV0ID0gU2NyaXB0SW50
ZXJwcmV0ZXI6OmdldERPTU9iamVjdChkb21PYmopKQogICAgICAgICAgICAgcmV0dXJuIHJldDsK
ICAgICAgICAgRE9NT2JqZWN0KiByZXQgPSBuZXcgKGV4ZWMpIEpTRE9NT2JqKEpTRE9NT2JqUHJv
dG90eXBlOjpzZWxmKGV4ZWMpLCBkb21PYmopOwpAQCAtODksMTAgKzg5LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgLy8gUmV0cmlldmUgZnJvbSBjYWNo
ZSwgb3IgY3JlYXRlLCBhIEpTIHdyYXBwZXIgZm9yIGFuIFNWRyBET00gb2JqZWN0LgotICAgIHRl
bXBsYXRlPGNsYXNzIERPTU9iaiwgY2xhc3MgSlNET01PYmosIGNsYXNzIEpTRE9NT2JqUHJvdG90
eXBlPiBpbmxpbmUgS0pTOjpKU1ZhbHVlKiBjYWNoZVNWR0RPTU9iamVjdChLSlM6OkV4ZWNTdGF0
ZSogZXhlYywgRE9NT2JqKiBkb21PYmosIFNWR0VsZW1lbnQqIGNvbnRleHQpCisgICAgdGVtcGxh
dGU8Y2xhc3MgRE9NT2JqLCBjbGFzcyBKU0RPTU9iaiwgY2xhc3MgSlNET01PYmpQcm90b3R5cGU+
IGlubGluZSBKU0M6OkpTVmFsdWUqIGNhY2hlU1ZHRE9NT2JqZWN0KEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBET01PYmoqIGRvbU9iaiwgU1ZHRWxlbWVudCogY29udGV4dCkKICAgICB7CiAgICAgICAg
IGlmICghZG9tT2JqKQotICAgICAgICAgICAgcmV0dXJuIEtKUzo6anNOdWxsKCk7CisgICAgICAg
ICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKICAgICAgICAgaWYgKERPTU9iamVjdCogcmV0ID0g
U2NyaXB0SW50ZXJwcmV0ZXI6OmdldERPTU9iamVjdChkb21PYmopKQogICAgICAgICAgICAgcmV0
dXJuIHJldDsKICAgICAgICAgRE9NT2JqZWN0KiByZXQgPSBuZXcgKGV4ZWMpIEpTRE9NT2JqKEpT
RE9NT2JqUHJvdG90eXBlOjpzZWxmKGV4ZWMpLCBkb21PYmosIGNvbnRleHQpOwpAQCAtMTAyLDQ5
ICsxMDIsNDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAvLyBDb252ZXJ0
IGEgRE9NIGltcGxlbWVudGF0aW9uIGV4Y2VwdGlvbiBjb2RlIGludG8gYSBKYXZhU2NyaXB0IGV4
Y2VwdGlvbiBpbiB0aGUgZXhlY3V0aW9uIHN0YXRlLgotICAgIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEtKUzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7CisgICAgdm9pZCBzZXRET01FeGNlcHRp
b24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25Db2RlKTsKIAogICAgIC8vIEhlbHBlciBjbGFz
cyB0byBjYWxsIHNldERPTUV4Y2VwdGlvbiBvbiBleGl0IHdpdGhvdXQgYWRkaW5nIGxvdHMgb2Yg
c2VwYXJhdGUgY2FsbHMgdG8gdGhhdCBmdW5jdGlvbi4KICAgICBjbGFzcyBET01FeGNlcHRpb25U
cmFuc2xhdG9yIDogTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQg
RE9NRXhjZXB0aW9uVHJhbnNsYXRvcihLSlM6OkV4ZWNTdGF0ZSogZXhlYykgOiBtX2V4ZWMoZXhl
YyksIG1fY29kZSgwKSB7IH0KKyAgICAgICAgZXhwbGljaXQgRE9NRXhjZXB0aW9uVHJhbnNsYXRv
cihKU0M6OkV4ZWNTdGF0ZSogZXhlYykgOiBtX2V4ZWMoZXhlYyksIG1fY29kZSgwKSB7IH0KICAg
ICAgICAgfkRPTUV4Y2VwdGlvblRyYW5zbGF0b3IoKSB7IHNldERPTUV4Y2VwdGlvbihtX2V4ZWMs
IG1fY29kZSk7IH0KICAgICAgICAgb3BlcmF0b3IgRXhjZXB0aW9uQ29kZSYoKSB7IHJldHVybiBt
X2NvZGU7IH0KICAgICBwcml2YXRlOgotICAgICAgICBLSlM6OkV4ZWNTdGF0ZSogbV9leGVjOwor
ICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVjOwogICAgICAgICBFeGNlcHRpb25Db2RlIG1f
Y29kZTsKICAgICB9OwogCi0gICAgS0pTOjpKU1ZhbHVlKiBqc1N0cmluZ09yTnVsbChLSlM6OkV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBudWxsIGlmIHRoZSBzdHJpbmcgaXMgbnVsbAot
ICAgIEtKUzo6SlNWYWx1ZSoganNTdHJpbmdPck51bGwoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBL
VVJMJik7IC8vIG51bGwgaWYgdGhlIFVSTCBpcyBudWxsCisgICAgSlNDOjpKU1ZhbHVlKiBqc1N0
cmluZ09yTnVsbChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBudWxsIGlmIHRo
ZSBzdHJpbmcgaXMgbnVsbAorICAgIEpTQzo6SlNWYWx1ZSoganNTdHJpbmdPck51bGwoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBLVVJMJik7IC8vIG51bGwgaWYgdGhlIFVSTCBpcyBudWxsCiAKLSAg
ICBLSlM6OkpTVmFsdWUqIGpzU3RyaW5nT3JVbmRlZmluZWQoS0pTOjpFeGVjU3RhdGUqLCBjb25z
dCBTdHJpbmcmKTsgLy8gdW5kZWZpbmVkIGlmIHRoZSBzdHJpbmcgaXMgbnVsbAotICAgIEtKUzo6
SlNWYWx1ZSoganNTdHJpbmdPclVuZGVmaW5lZChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtVUkwm
KTsgLy8gdW5kZWZpbmVkIGlmIHRoZSBVUkwgaXMgbnVsbAorICAgIEpTQzo6SlNWYWx1ZSoganNT
dHJpbmdPclVuZGVmaW5lZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyB1bmRl
ZmluZWQgaWYgdGhlIHN0cmluZyBpcyBudWxsCisgICAgSlNDOjpKU1ZhbHVlKiBqc1N0cmluZ09y
VW5kZWZpbmVkKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgS1VSTCYpOyAvLyB1bmRlZmluZWQgaWYg
dGhlIFVSTCBpcyBudWxsCiAKLSAgICBLSlM6OkpTVmFsdWUqIGpzU3RyaW5nT3JGYWxzZShLSlM6
OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBib29sZWFuIGZhbHNlIGlmIHRoZSBzdHJp
bmcgaXMgbnVsbAotICAgIEtKUzo6SlNWYWx1ZSoganNTdHJpbmdPckZhbHNlKEtKUzo6RXhlY1N0
YXRlKiwgY29uc3QgS1VSTCYpOyAvLyBib29sZWFuIGZhbHNlIGlmIHRoZSBVUkwgaXMgbnVsbAor
ICAgIEpTQzo6SlNWYWx1ZSoganNTdHJpbmdPckZhbHNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJik7IC8vIGJvb2xlYW4gZmFsc2UgaWYgdGhlIHN0cmluZyBpcyBudWxsCisgICAgSlND
OjpKU1ZhbHVlKiBqc1N0cmluZ09yRmFsc2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBLVVJMJik7
IC8vIGJvb2xlYW4gZmFsc2UgaWYgdGhlIFVSTCBpcyBudWxsCiAKICAgICAvLyBTZWUgSmF2YVNj
cmlwdENvcmUgZm9yIGV4cGxhbmF0aW9uOiBTaG91bGQgYmUgdXNlZCBmb3IgYW55IFVTdHJpbmcg
dGhhdCBpcyBhbHJlYWR5IG93bmVkIGJ5IGFub3RoZXIKICAgICAvLyBvYmplY3QsIHRvIGxldCB0
aGUgZW5naW5lIGtub3cgdGhhdCBjb2xsZWN0aW5nIHRoZSBKU1N0cmluZyB3cmFwcGVyIGlzIHVu
bGlrZWx5IHRvIHNhdmUgbWVtb3J5LgotICAgIEtKUzo6SlNWYWx1ZSoganNPd25lZFN0cmluZ09y
TnVsbChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6VVN0cmluZyYpOyAKKyAgICBKU0M6OkpT
VmFsdWUqIGpzT3duZWRTdHJpbmdPck51bGwoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OlVT
dHJpbmcmKTsgCiAKLSAgICBLSlM6OlVTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2so
S0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTVmFsdWUqKTsgLy8gbnVsbCBpZiB0aGUgdmFsdWUgaXMg
bnVsbAotICAgIEtKUzo6VVN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENo
ZWNrKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU1ZhbHVlKik7IC8vIG51bGwgaWYgdGhlIHZhbHVl
IGlzIG51bGwgb3IgdW5kZWZpbmVkCisgICAgSlNDOjpVU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRo
TnVsbENoZWNrKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKik7IC8vIG51bGwgaWYgdGhl
IHZhbHVlIGlzIG51bGwKKyAgICBKU0M6OlVTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmlu
ZWRPck51bGxDaGVjayhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSopOyAvLyBudWxsIGlm
IHRoZSB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZAogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGlubGluZSBLSlM6OkpTVmFsdWUqIHRvSlMoS0pTOjpFeGVjU3RhdGUqIGV4ZWMsIFBhc3NS
ZWZQdHI8VD4gcHRyKSB7IHJldHVybiB0b0pTKGV4ZWMsIHB0ci5nZXQoKSk7IH0KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSogdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgUGFzc1JlZlB0cjxUPiBwdHIpIHsgcmV0dXJuIHRvSlMoZXhlYywgcHRyLmdldCgp
KTsgfQogCi0gICAgYm9vbCBjaGVja05vZGVTZWN1cml0eShLSlM6OkV4ZWNTdGF0ZSosIE5vZGUq
KTsKKyAgICBib29sIGNoZWNrTm9kZVNlY3VyaXR5KEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOwog
CiAgICAgLy8gSGVscGVycyBmb3IgV2luZG93LCBIaXN0b3J5LCBhbmQgTG9jYXRpb24gY2xhc3Nl
cyB0byBpbXBsZW1lbnQgY3Jvc3MtZG9tYWluIHBvbGljeS4KICAgICAvLyBCZXNpZGVzIHRoZSBj
cm9zcy1kb21haW4gY2hlY2ssIHRoZXkgbmVlZCBub24tY2FjaGluZyB2ZXJzaW9ucyBvZiBzdGF0
aWNGdW5jdGlvbkdldHRlciBmb3IKICAgICAvLyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IGN1cnJl
bnQgcHJvcGVydHkgdmFsdWVzIGludm9sdmVkIGF0IGFsbC4KLSAgICBib29sIGFsbG93c0FjY2Vz
c0Zyb21GcmFtZShLSlM6OkV4ZWNTdGF0ZSosIEZyYW1lKik7Ci0gICAgYm9vbCBhbGxvd3NBY2Nl
c3NGcm9tRnJhbWUoS0pTOjpFeGVjU3RhdGUqLCBGcmFtZSosIFN0cmluZyYgbWVzc2FnZSk7Cisg
ICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSopOwor
ICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqLCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShGcmFt
ZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgS0pTOjpKU1ZhbHVlKiBub25DYWNoaW5n
U3RhdGljRnVuY3Rpb25HZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgY29uc3QgS0pTOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBLSlM6OkpT
VmFsdWUqIG9iamVjdFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBjb25z
dCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgS0pTOjpQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBKU0M6OkpTVmFsdWUqIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBK
U0M6OlByb3BlcnR5U2xvdCYpOworICAgIEpTQzo6SlNWYWx1ZSogb2JqZWN0VG9TdHJpbmdGdW5j
dGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5U2xvdCYpOwogCi0gICAgS0pTOjpFeGVjU3RhdGUq
IGV4ZWNTdGF0ZUZyb21Ob2RlKE5vZGUqKTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRl
RnJvbU5vZGUoTm9kZSopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKICNl
bmRpZgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKIH0KIApAQCAtNDgsMTIgKzQ4LDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBKU0RPTVdpbmRvd0Jhc2VQcml2YXRlOwog
CiAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBXZWJDb3JlIEpTIGJpbmRpbmcgd2hpY2ggZG9lcyBu
b3QgaW5oZXJpdCBmcm9tIERPTU9iamVjdAotICAgIGNsYXNzIEpTRE9NV2luZG93QmFzZSA6IHB1
YmxpYyBLSlM6OkpTR2xvYmFsT2JqZWN0IHsKLSAgICAgICAgdHlwZWRlZiBLSlM6OkpTR2xvYmFs
T2JqZWN0IEJhc2U7CisgICAgY2xhc3MgSlNET01XaW5kb3dCYXNlIDogcHVibGljIEpTQzo6SlNH
bG9iYWxPYmplY3QgeworICAgICAgICB0eXBlZGVmIEpTQzo6SlNHbG9iYWxPYmplY3QgQmFzZTsK
IAogICAgICAgICBmcmllbmQgY2xhc3MgU2NoZWR1bGVkQWN0aW9uOwogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgSlNET01XaW5kb3dCYXNlKEtKUzo6SlNPYmplY3QqIHByb3RvdHlwZSwgRE9NV2lu
ZG93KiwgSlNET01XaW5kb3dTaGVsbCopOworICAgICAgICBKU0RPTVdpbmRvd0Jhc2UoSlNDOjpK
U09iamVjdCogcHJvdG90eXBlLCBET01XaW5kb3cqLCBKU0RPTVdpbmRvd1NoZWxsKik7CiAKICAg
ICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkpTRE9NV2luZG93QmFzZSgpOwpAQCAtNjQsMTIg
KzY0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGRpc2Nvbm5lY3RG
cmFtZSgpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoS0pTOjpF
eGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OlByb3BlcnR5U2xvdCYpOwot
ICAgICAgICBLSlM6OkpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBp
bnQgdG9rZW4pIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEtKUzo6RXhlY1N0YXRl
KiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEtKUzo6SlNWYWx1ZSosIEtK
Uzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3Bl
cnR5U2xvdCYpOworICAgICAgICBKU0M6OkpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoSlNDOjpF
eGVjU3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSosIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgaW50IGluc3RhbGxU
aW1lb3V0KGNvbnN0IEtKUzo6VVN0cmluZyYgaGFuZGxlciwgaW50IHQsIGJvb2wgc2luZ2xlU2hv
dCk7Ci0gICAgICAgIGludCBpbnN0YWxsVGltZW91dChLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNW
YWx1ZSogZnVuY3Rpb24sIGNvbnN0IEtKUzo6QXJnTGlzdCYgYXJncywgaW50IHQsIGJvb2wgc2lu
Z2xlU2hvdCk7CisgICAgICAgIGludCBpbnN0YWxsVGltZW91dChjb25zdCBKU0M6OlVTdHJpbmcm
IGhhbmRsZXIsIGludCB0LCBib29sIHNpbmdsZVNob3QpOworICAgICAgICBpbnQgaW5zdGFsbFRp
bWVvdXQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUqIGZ1bmN0aW9uLCBjb25zdCBKU0M6
OkFyZ0xpc3QmIGFyZ3MsIGludCB0LCBib29sIHNpbmdsZVNob3QpOwogICAgICAgICB2b2lkIGNs
ZWFyVGltZW91dChpbnQgdGltZXJJZCwgYm9vbCBkZWxBY3Rpb24gPSB0cnVlKTsKIAogICAgICAg
ICB2b2lkIHBhdXNlVGltZW91dHMoT3duUHRyPFBhdXNlZFRpbWVvdXRzPiYpOwpAQCAtNzgsMTYg
Kzc4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0aW1lckZpcmVkKERP
TVdpbmRvd1RpbWVyKik7CiAKICAgICAgICAgLy8gRmluZHMgYSB3cmFwcGVyIG9mIGEgSlMgRXZl
bnRMaXN0ZW5lciwgcmV0dXJucyAwIGlmIG5vIGV4aXN0aW5nIG9uZS4KLSAgICAgICAgSlNFdmVu
dExpc3RlbmVyKiBmaW5kSlNFdmVudExpc3RlbmVyKEtKUzo6SlNWYWx1ZSosIGJvb2wgaHRtbCA9
IGZhbHNlKTsKKyAgICAgICAgSlNFdmVudExpc3RlbmVyKiBmaW5kSlNFdmVudExpc3RlbmVyKEpT
Qzo6SlNWYWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKIAogICAgICAgICAvLyBGaW5kcyBvciBj
cmVhdGVzIGEgd3JhcHBlciBvZiBhIEpTIEV2ZW50TGlzdGVuZXIuIEpTIEV2ZW50TGlzdGVuZXIg
b2JqZWN0IGlzIEdDLXByb3RlY3RlZC4KLSAgICAgICAgUGFzc1JlZlB0cjxKU0V2ZW50TGlzdGVu
ZXI+IGZpbmRPckNyZWF0ZUpTRXZlbnRMaXN0ZW5lcihLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNW
YWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKKyAgICAgICAgUGFzc1JlZlB0cjxKU0V2ZW50TGlz
dGVuZXI+IGZpbmRPckNyZWF0ZUpTRXZlbnRMaXN0ZW5lcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKIAogICAgICAgICAvLyBGaW5kcyBhIHdyYXBw
ZXIgb2YgYSBHQy11bnByb3RlY3RlZCBKUyBFdmVudExpc3RlbmVyLCByZXR1cm5zIDAgaWYgbm8g
ZXhpc3Rpbmcgb25lLgotICAgICAgICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogZmluZEpT
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU1ZhbHVlKiwg
Ym9vbCBodG1sID0gZmFsc2UpOworICAgICAgICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciog
ZmluZEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlKiwgYm9vbCBodG1sID0gZmFsc2UpOwogCiAgICAgICAgIC8vIEZpbmRzIG9yIGNyZWF0ZXMg
YSB3cmFwcGVyIG9mIGEgSlMgRXZlbnRMaXN0ZW5lci4gSlMgRXZlbnRMaXN0ZW5lciBvYmplY3Qg
aXMgKk5PVCogR0MtcHJvdGVjdGVkLgotICAgICAgICBQYXNzUmVmUHRyPEpTVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyPiBmaW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihLSlM6
OkV4ZWNTdGF0ZSosIEtKUzo6SlNWYWx1ZSosIGJvb2wgaHRtbCA9IGZhbHNlKTsKKyAgICAgICAg
UGFzc1JlZlB0cjxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcj4gZmluZE9yQ3JlYXRlSlNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUqLCBib29s
IGh0bWwgPSBmYWxzZSk7CiAKICAgICAgICAgdm9pZCBjbGVhcigpOwogCkBAIC05NSwzNiArOTUs
MzYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBFdmVudCogY3VycmVudEV2ZW50KCk7
CiAKICAgICAgICAgLy8gU2V0IGEgcGxhY2UgdG8gcHV0IGEgZGlhbG9nIHJldHVybiB2YWx1ZSB3
aGVuIHRoZSB3aW5kb3cgaXMgY2xlYXJlZC4KLSAgICAgICAgdm9pZCBzZXRSZXR1cm5WYWx1ZVNs
b3QoS0pTOjpKU1ZhbHVlKiogc2xvdCk7CisgICAgICAgIHZvaWQgc2V0UmV0dXJuVmFsdWVTbG90
KEpTQzo6SlNWYWx1ZSoqIHNsb3QpOwogCi0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxLSlM6OkpT
T2JqZWN0KiwgSlNFdmVudExpc3RlbmVyKj4gTGlzdGVuZXJzTWFwOwotICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8S0pTOjpKU09iamVjdCosIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4gVW5w
cm90ZWN0ZWRMaXN0ZW5lcnNNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxKU0M6OkpTT2Jq
ZWN0KiwgSlNFdmVudExpc3RlbmVyKj4gTGlzdGVuZXJzTWFwOworICAgICAgICB0eXBlZGVmIEhh
c2hNYXA8SlNDOjpKU09iamVjdCosIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4gVW5wcm90
ZWN0ZWRMaXN0ZW5lcnNNYXA7CiAKICAgICAgICAgTGlzdGVuZXJzTWFwJiBqc0V2ZW50TGlzdGVu
ZXJzKCk7CiAgICAgICAgIExpc3RlbmVyc01hcCYganNIVE1MRXZlbnRMaXN0ZW5lcnMoKTsKICAg
ICAgICAgVW5wcm90ZWN0ZWRMaXN0ZW5lcnNNYXAmIGpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
cygpOwogICAgICAgICBVbnByb3RlY3RlZExpc3RlbmVyc01hcCYganNVbnByb3RlY3RlZEhUTUxF
dmVudExpc3RlbmVycygpOwogCi0gICAgICAgIHZpcnR1YWwgY29uc3QgS0pTOjpDbGFzc0luZm8q
IGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87IH0KLSAgICAgICAgc3RhdGljIGNv
bnN0IEtKUzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNs
YXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQorICAgICAgICBz
dGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHZpcnR1YWwgS0pT
OjpFeGVjU3RhdGUqIGdsb2JhbEV4ZWMoKTsKKyAgICAgICAgdmlydHVhbCBKU0M6OkV4ZWNTdGF0
ZSogZ2xvYmFsRXhlYygpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnRlcnJ1cHRT
Y3JpcHQoKSBjb25zdDsKIAotICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb20oS0pTOjpFeGVj
U3RhdGUqKSBjb25zdDsKLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tTm9FcnJvck1lc3Nh
Z2UoS0pTOjpFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9t
KEtKUzo6RXhlY1N0YXRlKiwgU3RyaW5nJiBtZXNzYWdlKSBjb25zdDsKKyAgICAgICAgYm9vbCBh
bGxvd3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIGJvb2wgYWxs
b3dzQWNjZXNzRnJvbU5vRXJyb3JNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShKU0M6OkV4ZWNTdGF0ZSosIFN0cmluZyYgbWVzc2Fn
ZSkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcm
KSBjb25zdDsKIAogICAgICAgICAvLyBEb24ndCBjYWxsIHRoaXMgdmVyc2lvbiBvZiBhbGxvd3NB
Y2Nlc3NGcm9tIC0tIGl0J3MgYSBzbGlnaHRseSBpbmNvcnJlY3QgaW1wbGVtZW50YXRpb24gdXNl
ZCBvbmx5IGJ5IFdlYlNjcmlwdE9iamVjdAotICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzQWNj
ZXNzRnJvbShjb25zdCBLSlM6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25z
dDsKIAotICAgICAgICB2aXJ0dWFsIEtKUzo6SlNPYmplY3QqIHRvVGhpc09iamVjdChLSlM6OkV4
ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIHRvVGhpc09i
amVjdChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiBz
aGVsbCgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBLSlM6OkpTR2xvYmFsRGF0YSogY29tbW9u
SlNHbG9iYWxEYXRhKCk7CisgICAgICAgIHN0YXRpYyBKU0M6OkpTR2xvYmFsRGF0YSogY29tbW9u
SlNHbG9iYWxEYXRhKCk7CiAKICAgICAgICAgZW51bSB7CiAgICAgICAgICAgICAvLyBBdHRyaWJ1
dGVzCkBAIC0xNTcsMzYgKzE1NywzNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICBKU0RPTVdpbmRvd0Jhc2U6OlVucHJvdGVjdGVkTGlzdGVuZXJzTWFwIGpzVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyczsKICAgICAgICAgICAgIEpTRE9NV2luZG93QmFzZTo6VW5wcm90ZWN0ZWRM
aXN0ZW5lcnNNYXAganNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVyczsKICAgICAgICAgICAg
IEV2ZW50KiBldnQ7Ci0gICAgICAgICAgICBLSlM6OkpTVmFsdWUqKiByZXR1cm5WYWx1ZVNsb3Q7
CisgICAgICAgICAgICBKU0M6OkpTVmFsdWUqKiByZXR1cm5WYWx1ZVNsb3Q7CiAgICAgICAgICAg
ICBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbDsKIAogICAgICAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PGludCwgRE9NV2luZG93VGltZXIqPiBUaW1lb3V0c01hcDsKICAgICAgICAgICAgIFRpbWVvdXRz
TWFwIHRpbWVvdXRzOwogICAgICAgICB9OwogICAgICAgICAKLSAgICAgICAgS0pTOjpKU1ZhbHVl
KiBnZXRMaXN0ZW5lcihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRMaXN0ZW5lcihLSlM6OkV4ZWNTdGF0ZSosIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBLSlM6OkpTVmFsdWUqIGZ1bmN0aW9uKTsKKyAg
ICAgICAgSlNDOjpKU1ZhbHVlKiBnZXRMaXN0ZW5lcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRMaXN0ZW5lcihK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFs
dWUqIGZ1bmN0aW9uKTsKIAotICAgICAgICBzdGF0aWMgS0pTOjpKU1ZhbHVlKiBjaGlsZEZyYW1l
R2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgY29uc3QgS0pT
OjpQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIEtKUzo6SlNWYWx1ZSogaW5kZXhHZXR0
ZXIoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBjb25zdCBLSlM6OlBy
b3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgS0pTOjpKU1ZhbHVlKiBuYW1lZEl0ZW1HZXR0
ZXIoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBjb25zdCBLSlM6OlBy
b3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlKiBjaGlsZEZyYW1lR2V0
dGVyKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgY29uc3QgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSogaW5kZXhHZXR0ZXIo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3Bl
cnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlKiBuYW1lZEl0ZW1HZXR0ZXIo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwogCiAgICAgICAgIHZvaWQgY2xlYXJIZWxwZXJPYmplY3RQcm9wZXJ0aWVzKCk7
CiAgICAgICAgIHZvaWQgY2xlYXJBbGxUaW1lb3V0cygpOwogICAgICAgICBpbnQgaW5zdGFsbFRp
bWVvdXQoU2NoZWR1bGVkQWN0aW9uKiwgaW50IGludGVydmFsLCBib29sIHNpbmdsZVNob3QpOwog
Ci0gICAgICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbVByaXZhdGUoY29uc3QgS0pTOjpKU0dsb2Jh
bE9iamVjdCopIGNvbnN0OwotICAgICAgICBTdHJpbmcgY3Jvc3NEb21haW5BY2Nlc3NFcnJvck1l
c3NhZ2UoY29uc3QgS0pTOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgICAgICBib29sIGFs
bG93c0FjY2Vzc0Zyb21Qcml2YXRlKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
KyAgICAgICAgU3RyaW5nIGNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIEpTRE9NV2luZG93QmFz
ZURhdGEqIGQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2VEYXRh
Kj4oS0pTOjpKU1ZhcmlhYmxlT2JqZWN0OjpkKTsgfQorICAgICAgICBKU0RPTVdpbmRvd0Jhc2VE
YXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlRGF0YSo+
KEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6ZCk7IH0KICAgICB9OwogCiAgICAgLy8gUmV0dXJucyBh
IEpTRE9NV2luZG93IG9yIGpzTnVsbCgpCi0gICAgS0pTOjpKU1ZhbHVlKiB0b0pTKEtKUzo6RXhl
Y1N0YXRlKiwgRE9NV2luZG93Kik7CisgICAgSlNDOjpKU1ZhbHVlKiB0b0pTKEpTQzo6RXhlY1N0
YXRlKiwgRE9NV2luZG93Kik7CiAKICAgICAvLyBSZXR1cm5zIEpTRE9NV2luZG93IG9yIDAKICAg
ICBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhGcmFtZSopOwotICAgIEpTRE9NV2luZG93KiB0
b0pTRE9NV2luZG93KEtKUzo6SlNWYWx1ZSopOworICAgIEpTRE9NV2luZG93KiB0b0pTRE9NV2lu
ZG93KEpTQzo6SlNWYWx1ZSopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgPGtqcy9KU09iamVjdC5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Niw3ICs4Niw3IEBAIGJv
b2wgSlNET01XaW5kb3c6OmN1c3RvbUdldFByb3BlcnR5TmFtZXMKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmdldFByb3BlcnR5QXR0cmlidXRlcyhLSlM6OkV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0
cmlidXRlcykgY29uc3QKK2Jvb2wgSlNET01XaW5kb3c6OmdldFByb3BlcnR5QXR0cmlidXRlcyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCYgYXR0cmlidXRlcykgY29uc3QKIHsKICAgICAvLyBPbmx5IGFsbG93IGdldHRpbmcgcHJv
cGVydHkgYXR0cmlidXRlcyBwcm9wZXJ0aWVzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4u
CiAgICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDM1ICsyNSwz
NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBKU0RPTVdpbmRvdyogYXNKU0RP
TVdpbmRvdyhLSlM6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitpbmxpbmUgSlNET01X
aW5kb3cqIGFzSlNET01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CiB9
CiAgCi1pbmxpbmUgY29uc3QgSlNET01XaW5kb3cqIGFzSlNET01XaW5kb3coY29uc3QgS0pTOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoraW5saW5lIGNvbnN0IEpTRE9NV2luZG93KiBh
c0pTRE9NV2luZG93KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3cqPihnbG9iYWxPYmplY3Qp
OwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNET01XaW5kb3c6OmN1c3RvbUdldE93blByb3Bl
cnR5U2xvdChLSlM6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEtKUzo6UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpT
RE9NV2luZG93OjpjdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICAvLyBXaGVuIGFjY2Vzc2luZyBhIFdpbmRvdyBjcm9zcy1kb21haW4sIGZ1
bmN0aW9ucyBhcmUgYWx3YXlzIHRoZSBuYXRpdmUgYnVpbHQtaW4gb25lcywgYW5kIHRoZXkKICAg
ICAvLyBhcmUgbm90IGFmZmVjdGVkIGJ5IHByb3BlcnRpZXMgY2hhbmdlZCBvbiB0aGUgV2luZG93
IG9yIGFueXRoaW5nIGluIGl0cyBwcm90b3R5cGUgY2hhaW4uCiAgICAgLy8gVGhpcyBpcyBjb25z
aXN0ZW50IHdpdGggdGhlIGJlaGF2aW9yIG9mIEZpcmVmb3guCiAKLSAgICBjb25zdCBLSlM6Okhh
c2hFbnRyeSogZW50cnk7CisgICAgY29uc3QgSlNDOjpIYXNoRW50cnkqIGVudHJ5OwogCiAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCBhbnkgcHJvcGVydGllcyBvdGhlciB0aGFuICJjbG9zZSIgYW5kICJj
bG9zZWQiIG9uIGEgY2xvc2VkIHdpbmRvdy4KICAgICBpZiAoIWltcGwoKS0+ZnJhbWUoKSkgewog
ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgaXMgc2FmZSBmb3IgY3Jvc3MtZG9tYWluIGFu
ZCBzYW1lIGRvbWFpbiB1c2UuCiAgICAgICAgIC8vIEl0IGlnbm9yZXMgYW55IGN1c3RvbSBwcm9w
ZXJ0aWVzIHRoYXQgbWlnaHQgYmUgc2V0IG9uIHRoZSBET01XaW5kb3cgKGluY2x1ZGluZyBhIGN1
c3RvbSBwcm90b3R5cGUpLgogICAgICAgICBlbnRyeSA9IHNfaW5mby5wcm9wSGFzaFRhYmxlKGV4
ZWMpLT5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAoZW50cnkgJiYgIShl
bnRyeS0+YXR0cmlidXRlcyAmIEtKUzo6RnVuY3Rpb24pICYmIGVudHJ5LT5pbnRlZ2VyVmFsdWUg
PT0gQ2xvc2VkQXR0ck51bSkgewotICAgICAgICAgICAgc2xvdC5zZXRTdGF0aWNFbnRyeSh0aGlz
LCBlbnRyeSwgS0pTOjpzdGF0aWNWYWx1ZUdldHRlcjxKU0RPTVdpbmRvdz4pOworICAgICAgICBp
ZiAoZW50cnkgJiYgIShlbnRyeS0+YXR0cmlidXRlcyAmIEpTQzo6RnVuY3Rpb24pICYmIGVudHJ5
LT5pbnRlZ2VyVmFsdWUgPT0gQ2xvc2VkQXR0ck51bSkgeworICAgICAgICAgICAgc2xvdC5zZXRT
dGF0aWNFbnRyeSh0aGlzLCBlbnRyeSwgSlNDOjpzdGF0aWNWYWx1ZUdldHRlcjxKU0RPTVdpbmRv
dz4pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgZW50cnkg
PSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6c19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyktPmVudHJ5
KGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChlbnRyeSAmJiAoZW50cnktPmF0dHJp
YnV0ZXMgJiBLSlM6OkZ1bmN0aW9uKSAmJiBlbnRyeS0+ZnVuY3Rpb25WYWx1ZSA9PSBqc0RPTVdp
bmRvd1Byb3RvdHlwZUZ1bmN0aW9uQ2xvc2UpIHsKKyAgICAgICAgaWYgKGVudHJ5ICYmIChlbnRy
eS0+YXR0cmlidXRlcyAmIEpTQzo6RnVuY3Rpb24pICYmIGVudHJ5LT5mdW5jdGlvblZhbHVlID09
IGpzRE9NV2luZG93UHJvdG90eXBlRnVuY3Rpb25DbG9zZSkgewogICAgICAgICAgICAgc2xvdC5z
ZXRTdGF0aWNFbnRyeSh0aGlzLCBlbnRyeSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVy
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC03NiwxMyArNzYsMTMg
QEAgQUxXQVlTX0lOTElORSBib29sIEpTRE9NV2luZG93OjpjdXN0b21HZQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgLy8gV2UgbmVlZCB0aGlzIGNvZGUgaGVyZSBiZWNh
dXNlIG90aGVyd2lzZSBLSlM6OldpbmRvdyB3aWxsIHN0b3AgdGhlIHNlYXJjaCBiZWZvcmUgd2Ug
ZXZlbiBnZXQgdG8gdGhlCisgICAgLy8gV2UgbmVlZCB0aGlzIGNvZGUgaGVyZSBiZWNhdXNlIG90
aGVyd2lzZSBKU0M6OldpbmRvdyB3aWxsIHN0b3AgdGhlIHNlYXJjaCBiZWZvcmUgd2UgZXZlbiBn
ZXQgdG8gdGhlCiAgICAgLy8gcHJvdG90eXBlIGR1ZSB0byB0aGUgYmxhbmtldCBzYW1lIG9yaWdp
biAoYWxsb3dzQWNjZXNzRnJvbSkgY2hlY2sgYXQgdGhlIGVuZCBvZiBnZXRPd25Qcm9wZXJ0eVNs
b3QuCiAgICAgLy8gQWxzbywgaXQncyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSBpbXBsZW1lbnRhdGlv
biBzdHJhaWdodCBvdXQgb2YgdGhlIERPTVdpbmRvdyBwcm90b3R5cGUgcmVnYXJkbGVzcyBvZgog
ICAgIC8vIHdoYXQgcHJvdG90eXBlIGlzIGFjdHVhbGx5IHNldCBvbiB0aGlzIG9iamVjdC4KICAg
ICBlbnRyeSA9IEpTRE9NV2luZG93UHJvdG90eXBlOjpzX2luZm8ucHJvcEhhc2hUYWJsZShleGVj
KS0+ZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICBpZiAoZW50cnkpIHsKLSAgICAgICAg
aWYgKChlbnRyeS0+YXR0cmlidXRlcyAmIEtKUzo6RnVuY3Rpb24pCisgICAgICAgIGlmICgoZW50
cnktPmF0dHJpYnV0ZXMgJiBKU0M6OkZ1bmN0aW9uKQogICAgICAgICAgICAgICAgICYmIChlbnRy
eS0+ZnVuY3Rpb25WYWx1ZSA9PSBqc0RPTVdpbmRvd1Byb3RvdHlwZUZ1bmN0aW9uQmx1cgogICAg
ICAgICAgICAgICAgICAgICB8fCBlbnRyeS0+ZnVuY3Rpb25WYWx1ZSA9PSBqc0RPTVdpbmRvd1By
b3RvdHlwZUZ1bmN0aW9uQ2xvc2UKICAgICAgICAgICAgICAgICAgICAgfHwgZW50cnktPmZ1bmN0
aW9uVmFsdWUgPT0ganNET01XaW5kb3dQcm90b3R5cGVGdW5jdGlvbkZvY3VzCkBAIC0xMDUsMTMg
KzEwNSwxMyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNET01XaW5kb3c6OmN1c3RvbUdlCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgYm9vbCBKU0RPTVdpbmRvdzo6Y3VzdG9tUHV0KEtK
Uzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
S0pTOjpKU1ZhbHVlKiB2YWx1ZSwgS0pTOjpQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitpbmxpbmUg
Ym9vbCBKU0RPTVdpbmRvdzo6Y3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlKiB2YWx1ZSwgSlNDOjpQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKCFpbXBsKCktPmZyYW1lKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gV2UgaGF2ZSBhIGxvY2FsIG92ZXJyaWRlIChlLmcu
ICJ2YXIgbG9jYXRpb24iKSwgc2F2ZSB0aW1lIGFuZCBqdW1wIGRpcmVjdGx5IHRvIEpTR2xvYmFs
T2JqZWN0LgotICAgIEtKUzo6UHJvcGVydHlTbG90IGdldFNsb3Q7CisgICAgSlNDOjpQcm9wZXJ0
eVNsb3QgZ2V0U2xvdDsKICAgICBib29sIHNsb3RJc1dyaXRlYWJsZTsKICAgICBpZiAoSlNHbG9i
YWxPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIGdldFNsb3Qs
IHNsb3RJc1dyaXRlYWJsZSkpIHsKICAgICAgICAgaWYgKGFsbG93c0FjY2Vzc0Zyb20oZXhlYykp
IHsKQEAgLTEzOCw3ICsxMzgsNyBAQCBpbmxpbmUgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93
c0FjY2VzCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0gICAgaW5saW5lIGJvb2wgSlNET01XaW5k
b3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKEtKUzo6RXhlY1N0YXRlKiBleGVjKSBjb25zdAorICAg
IGlubGluZSBib29sIEpTRE9NV2luZG93QmFzZTo6YWxsb3dzQWNjZXNzRnJvbShKU0M6OkV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbVByaXZhdGUoZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDYs
MTIgKzE0NiwxMiBAQCBpbmxpbmUgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2VzCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAotaW5saW5lIGJvb2wgSlNET01XaW5kb3dCYXNlOjph
bGxvd3NBY2Nlc3NGcm9tTm9FcnJvck1lc3NhZ2UoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CitpbmxpbmUgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb21Ob0Vycm9yTWVz
c2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICByZXR1cm4gYWxsb3dzQWNj
ZXNzRnJvbVByaXZhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKIH0KICAgICAKLWlu
bGluZSBib29sIEpTRE9NV2luZG93QmFzZTo6YWxsb3dzQWNjZXNzRnJvbShLSlM6OkV4ZWNTdGF0
ZSogZXhlYywgU3RyaW5nJiBtZXNzYWdlKSBjb25zdAoraW5saW5lIGJvb2wgSlNET01XaW5kb3dC
YXNlOjphbGxvd3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBTdHJpbmcmIG1lc3Nh
Z2UpIGNvbnN0CiB7CiAgICAgaWYgKGFsbG93c0FjY2Vzc0Zyb21Qcml2YXRlKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8a2pz
L0pTT2JqZWN0Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBKU0RPTVdp
bmRvd1NoZWxsOjpnZXRQcm9wZXJ0eU5hbWVzKAogICAgIG1fd2luZG93LT5nZXRQcm9wZXJ0eU5h
bWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMpOwogfQogCi1ib29sIEpTRE9NV2luZG93U2hlbGw6Omdl
dFByb3BlcnR5QXR0cmlidXRlcyhLSlM6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykgY29uc3QKK2Jvb2wgSlNET01X
aW5kb3dTaGVsbDo6Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25z
dAogewogICAgIHJldHVybiBtX3dpbmRvdy0+Z2V0UHJvcGVydHlBdHRyaWJ1dGVzKGV4ZWMsIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBzZXRQcm90b3R5cGUod2luZG93LT5wcm90b3R5cGUo
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8gc19p
bmZvOworICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogCiAgICAg
ICAgIERPTVdpbmRvdyogaW1wbCgpIGNvbnN0OwogICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFt
ZSgpOwpAQCAtNjEsMjQgKzYxLDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7Ci0gICAgICAgIHZpcnR1YWwgS0pTOjpV
U3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEtKUzo6UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoS0pT
OjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgS0pTOjpK
U1ZhbHVlKiwgS0pTOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1
dFdpdGhBdHRyaWJ1dGVzKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEtKUzo6SlNWYWx1ZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6
OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9w
ZXJ0eU5hbWVzKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpQcm9wZXJ0eU5hbWVBcnJheSYpOwotICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJvcGVydHlBdHRyaWJ1dGVzKEtKUzo6RXhlY1N0YXRlKiwg
Y29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
KSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRlZmluZUdldHRlcihLSlM6OkV4ZWNTdGF0
ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBLSlM6OkpTT2JqZWN0KiBn
ZXR0ZXJGdW5jdGlvbik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVTZXR0ZXIoS0pTOjpF
eGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgS0pTOjpKU09i
amVjdCogc2V0dGVyRnVuY3Rpb24pOwotICAgICAgICB2aXJ0dWFsIEtKUzo6SlNWYWx1ZSogbG9v
a3VwR2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwotICAgICAgICB2aXJ0dWFsIEtKUzo6SlNWYWx1ZSogbG9va3VwU2V0dGVyKEtKUzo6
RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAg
ICB2aXJ0dWFsIEtKUzo6SlNHbG9iYWxPYmplY3QqIHRvR2xvYmFsT2JqZWN0KEtKUzo6RXhlY1N0
YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgY29uc3QgS0pTOjpDbGFzc0luZm8qIGNsYXNz
SW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87IH0KKyAgICAgICAgdmlydHVhbCBKU0M6OlVT
dHJpbmcgY2xhc3NOYW1lKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHB1dChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpT
VmFsdWUqLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0
V2l0aEF0dHJpYnV0ZXMoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAg
IHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGdldFByb3Bl
cnR5TmFtZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jik7CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBnZXRQcm9wZXJ0eUF0dHJpYnV0ZXMoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMp
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNPYmplY3QqIGdl
dHRlckZ1bmN0aW9uKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRlZmluZVNldHRlcihKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTT2Jq
ZWN0KiBzZXR0ZXJGdW5jdGlvbik7CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlKiBsb29r
dXBHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlKiBsb29rdXBTZXR0ZXIoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IHZpcnR1YWwgSlNDOjpKU0dsb2JhbE9iamVjdCogdG9HbG9iYWxPYmplY3QoSlNDOjpFeGVjU3Rh
dGUqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQogCiAgICAgICAgIEpTRE9NV2luZG93KiBt
X3dpbmRvdzsKICAgICB9OwogCi0gICAgS0pTOjpKU1ZhbHVlKiB0b0pTKEtKUzo6RXhlY1N0YXRl
KiwgRnJhbWUqKTsKKyAgICBKU0M6OkpTVmFsdWUqIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBGcmFt
ZSopOwogICAgIEpTRE9NV2luZG93U2hlbGwqIHRvSlNET01XaW5kb3dTaGVsbChGcmFtZSopOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0
YWJhc2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRh
YmFzZUN1c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RhdGFiYXNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBKU1ZhbHVlKiBKU0RhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBA
CiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgS0pT
OwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEZyYWdtZW50
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkpT
Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgS0pT
OwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNlbmRpZgogCi11c2lu
ZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAJKHJldmlzaW9u
IDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQAogI2luY2x1ZGUgIlNWR1pvb21FdmVudC5oIgogI2Vu
ZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8a2pz
L0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KIAotdXNp
bmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCShyZXZpc2lv
biAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50KiwgYm9vbCBpc1dpbmRv
d0V2ZW50KTsKICAgICAgICAgdmlydHVhbCBib29sIGlzSFRNTEV2ZW50TGlzdGVuZXIoKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBLSlM6OkpTT2JqZWN0KiBsaXN0ZW5lck9iaigpIGNvbnN0ID0g
MDsKKyAgICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBsaXN0ZW5lck9iaigpIGNvbnN0ID0g
MDsKICAgICAgICAgdmlydHVhbCBKU0RPTVdpbmRvdyogd2luZG93KCkgY29uc3QgPSAwOwogCiAg
ICAgcHJvdGVjdGVkOgpAQCAtNDksNDMgKzQ5LDQzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyIDogcHVibGljIEpTQWJzdHJhY3RF
dmVudExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpT
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyPiBjcmVhdGUoS0pTOjpKU09iamVjdCogbGlzdGVuZXIs
IEpTRE9NV2luZG93KiB3aW5kb3csIGJvb2wgaXNIVE1MKQorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGxp
c3RlbmVyLCBKU0RPTVdpbmRvdyogd2luZG93LCBib29sIGlzSFRNTCkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihs
aXN0ZW5lciwgd2luZG93LCBpc0hUTUwpKTsKICAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5K
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcigpOwogCi0gICAgICAgIHZpcnR1YWwgS0pTOjpKU09i
amVjdCogbGlzdGVuZXJPYmooKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0
KiBsaXN0ZW5lck9iaigpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIEpTRE9NV2luZG93KiB3aW5k
b3coKSBjb25zdDsKICAgICAgICAgdm9pZCBjbGVhcldpbmRvdygpOwogICAgICAgICB2b2lkIG1h
cmsoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
KEtKUzo6SlNPYmplY3QqIGxpc3RlbmVyLCBKU0RPTVdpbmRvdyosIGJvb2wgaXNIVE1MKTsKKyAg
ICAgICAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoSlNDOjpKU09iamVjdCogbGlzdGVuZXIs
IEpTRE9NV2luZG93KiwgYm9vbCBpc0hUTUwpOwogCi0gICAgICAgIEtKUzo6SlNPYmplY3QqIG1f
bGlzdGVuZXI7CisgICAgICAgIEpTQzo6SlNPYmplY3QqIG1fbGlzdGVuZXI7CiAgICAgICAgIEpT
RE9NV2luZG93KiBtX3dpbmRvdzsKICAgICB9OwogCiAgICAgY2xhc3MgSlNFdmVudExpc3RlbmVy
IDogcHVibGljIEpTQWJzdHJhY3RFdmVudExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKEtKUzo6SlNPYmplY3Qq
IGxpc3RlbmVyLCBKU0RPTVdpbmRvdyogd2luZG93LCBib29sIGlzSFRNTCkKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SlNFdmVudExpc3RlbmVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlz
dGVuZXIsIEpTRE9NV2luZG93KiB3aW5kb3csIGJvb2wgaXNIVE1MKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgd2lu
ZG93LCBpc0hUTUwpKTsKICAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5KU0V2ZW50TGlzdGVu
ZXIoKTsKIAotICAgICAgICB2aXJ0dWFsIEtKUzo6SlNPYmplY3QqIGxpc3RlbmVyT2JqKCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogbGlzdGVuZXJPYmooKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBKU0RPTVdpbmRvdyogd2luZG93KCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgY2xlYXJXaW5kb3coKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgSlNFdmVudExpc3Rl
bmVyKEtKUzo6SlNPYmplY3QqIGxpc3RlbmVyLCBKU0RPTVdpbmRvdyosIGJvb2wgaXNIVE1MKTsK
KyAgICAgICAgSlNFdmVudExpc3RlbmVyKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVyLCBKU0RPTVdp
bmRvdyosIGJvb2wgaXNIVE1MKTsKIAotICAgICAgICBtdXRhYmxlIEtKUzo6UHJvdGVjdGVkUHRy
PEtKUzo6SlNPYmplY3Q+IG1fbGlzdGVuZXI7CisgICAgICAgIG11dGFibGUgSlNDOjpQcm90ZWN0
ZWRQdHI8SlNDOjpKU09iamVjdD4gbV9saXN0ZW5lcjsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEtKUzo6UHJvdGVjdGVkUHRyPEpTRE9NV2luZG93PiBtX3dpbmRvdzsKKyAgICAgICAgSlNDOjpQ
cm90ZWN0ZWRQdHI8SlNET01XaW5kb3c+IG1fd2luZG93OwogICAgIH07CiAKICAgICBjbGFzcyBK
U0xhenlFdmVudExpc3RlbmVyIDogcHVibGljIEpTRXZlbnRMaXN0ZW5lciB7CkBAIC05NCwxMyAr
OTQsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEpTTGF6eUV2ZW50TGlzdGVuZXIoZnVuY3Rpb25OYW1lLCBjb2RlLCB3
aW5kb3csIG5vZGUsIGxpbmVOdW1iZXIpKTsKICAgICAgICAgfQotICAgICAgICB2aXJ0dWFsIEtK
Uzo6SlNPYmplY3QqIGxpc3RlbmVyT2JqKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNDOjpK
U09iamVjdCogbGlzdGVuZXJPYmooKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
SlNMYXp5RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3Ry
aW5nJiBjb2RlLCBKU0RPTVdpbmRvdyosIE5vZGUqLCBpbnQgbGluZU51bWJlcik7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIEtKUzo6SlNWYWx1ZSogZXZlbnRQYXJhbWV0ZXJOYW1l
KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlKiBldmVudFBhcmFtZXRlck5h
bWUoKSBjb25zdDsKICAgICAgICAgdm9pZCBwYXJzZUNvZGUoKSBjb25zdDsKIAogICAgICAgICBt
dXRhYmxlIFN0cmluZyBtX2Z1bmN0aW9uTmFtZTsKQEAgLTExMCw3ICsxMTAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIE5vZGUqIG1fb3JpZ2luYWxOb2RlOwogICAgIH07CiAKLSAg
ICBLSlM6OkpTVmFsdWUqIGdldE5vZGVFdmVudExpc3RlbmVyKE5vZGUqLCBjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSk7CisgICAgSlNDOjpKU1ZhbHVlKiBnZXROb2RlRXZlbnRMaXN0ZW5l
cihOb2RlKiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2Uu
Y3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSlNT
VkdFbGVtZW50SW5zdGFuY2UuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0QmFzZS5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU0V2ZW50Lmgi
CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKICAgICBleHRlcm4gY29uc3Qg
c3RydWN0IEhhc2hUYWJsZSBKU0V2ZW50VGFyZ2V0UHJvcGVydGllc1RhYmxlOwogICAgIGV4dGVy
biBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlIEpTRXZlbnRUYXJnZXRQcm90b3R5cGVUYWJsZTsKQEAg
LTY3LDE2ICs2NywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBKU0V2ZW50VGFyZ2V0QmFzZSgpIHsgfQogCi0gICAgICAgIEtKUzo6SlNWYWx1ZSogZ2V0VmFs
dWVQcm9wZXJ0eShjb25zdCBKU0V2ZW50VGFyZ2V0KiBvd25lciwgS0pTOjpFeGVjU3RhdGUqIGV4
ZWMsIGludCB0b2tlbikgY29uc3QKKyAgICAgICAgSlNDOjpKU1ZhbHVlKiBnZXRWYWx1ZVByb3Bl
cnR5KGNvbnN0IEpTRXZlbnRUYXJnZXQqIG93bmVyLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgaW50
IHRva2VuKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50TmFtZSA9IGV2ZW50TmFtZUZvclByb3BlcnR5VG9rZW4odG9rZW4pOwogICAgICAgICAg
ICAgaWYgKCFldmVudE5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBvd25l
ci0+Z2V0TGlzdGVuZXIoZXZlbnROYW1lKTsKIAotICAgICAgICAgICAgcmV0dXJuIEtKUzo6anNV
bmRlZmluZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHB1dFZhbHVlUHJvcGVydHkoY29uc3QgSlNFdmVudFRhcmdl
dCogb3duZXIsIEtKUzo6RXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4sIEtKUzo6SlNWYWx1ZSog
dmFsdWUpCisgICAgICAgIHZvaWQgcHV0VmFsdWVQcm9wZXJ0eShjb25zdCBKU0V2ZW50VGFyZ2V0
KiBvd25lciwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbiwgSlNDOjpKU1ZhbHVlKiB2
YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUgPSBldmVudE5hbWVGb3JQcm9wZXJ0eVRva2VuKHRva2VuKTsKICAgICAgICAgICAgIGlmICgh
ZXZlbnROYW1lLmlzRW1wdHkoKSkKQEAgLTg4LDE1ICs4OCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNl
OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEpTUGFyZW50PgotICAgICAgICBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0V2ZW50VGFyZ2V0KiBvd25lciwgS0pTOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBLSlM6OlByb3BlcnR5U2xvdCYg
c2xvdCkKKyAgICAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNFdmVudFRhcmdldCogb3du
ZXIsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBLSlM6OmdldFN0YXRpY1ZhbHVlU2xvdDxKU0V2ZW50VGFyZ2V0LCBKU1BhcmVudD4oZXhl
YywgJktKUzo6SlNFdmVudFRhcmdldFByb3BlcnRpZXNUYWJsZSwgb3duZXIsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CisgICAgICAgICAgICByZXR1cm4gSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNF
dmVudFRhcmdldCwgSlNQYXJlbnQ+KGV4ZWMsICZKU0M6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVz
VGFibGUsIG93bmVyLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICB9CiAKICAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgSlNQYXJlbnQ+Ci0gICAgICAgIHZvaWQgcHV0KEpTRXZlbnRUYXJnZXQq
IG93bmVyLCBLSlM6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEtKUzo6SlNWYWx1ZSogdmFsdWUsIEtKUzo6UHV0UHJvcGVydHlTbG90JiBzbG90
KQorICAgICAgICB2b2lkIHB1dChKU0V2ZW50VGFyZ2V0KiBvd25lciwgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUq
IHZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICAgICAgewotICAgICAgICAg
ICAgS0pTOjpsb29rdXBQdXQ8SlNFdmVudFRhcmdldCwgSlNQYXJlbnQ+KGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsICZLSlM6OkpTRXZlbnRUYXJnZXRQcm9wZXJ0aWVzVGFibGUsIG93bmVyLCBz
bG90KTsKKyAgICAgICAgICAgIEpTQzo6bG9va3VwUHV0PEpTRXZlbnRUYXJnZXQsIEpTUGFyZW50
PihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAmSlNDOjpKU0V2ZW50VGFyZ2V0UHJvcGVydGll
c1RhYmxlLCBvd25lciwgc2xvdCk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0xMDYsNDEgKzEw
Niw0MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gbmFtaW5nICJFdmVudFRhcmdldE5v
ZGVQcm90b3R5cGUiIHZzICJFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZVByb3RvdHlwZSIu
IEFib3ZlIG1lbnRpb25lZAogICAgIC8vIG1hY3JvcyBmb3JjZSB0aGUgZXhpc3RhbmNlIG9mIHNl
dmVyYWwgcHJvdG90eXBlIHRhYmxlcyBmb3IgZWFjaCBvZiB0aGUgY2xhc3NlcyAtIGF2b2lkIHRo
YXQuCiAgICAgdGVtcGxhdGU8Y2xhc3MgSlNFdmVudFRhcmdldFByb3RvdHlwZVBhcmVudCwgY2xh
c3MgSlNFdmVudFRhcmdldFByb3RvdHlwZUluZm9ybWF0aW9uPgotICAgIGNsYXNzIEpTRXZlbnRU
YXJnZXRQcm90b3R5cGUgOiBwdWJsaWMgS0pTOjpKU09iamVjdCB7CisgICAgY2xhc3MgSlNFdmVu
dFRhcmdldFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEpTRXZlbnRUYXJnZXRQcm90b3R5cGUoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpCi0gICAg
ICAgICAgICA6IEtKUzo6SlNPYmplY3QoSlNFdmVudFRhcmdldFByb3RvdHlwZVBhcmVudDo6c2Vs
ZihleGVjKSkKKyAgICAgICAgSlNFdmVudFRhcmdldFByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYykKKyAgICAgICAgICAgIDogSlNDOjpKU09iamVjdChKU0V2ZW50VGFyZ2V0UHJvdG90eXBl
UGFyZW50OjpzZWxmKGV4ZWMpKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgS0pTOjpKU09iamVjdCogc2VsZihLSlM6OkV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBLSlM6OklkZW50aWZpZXIqIHByb3RvdHlwZU5hbWUgPSBuZXcg
S0pTOjpJZGVudGlmaWVyKGV4ZWMsIEpTRXZlbnRUYXJnZXRQcm90b3R5cGVJbmZvcm1hdGlvbjo6
cHJvdG90eXBlQ2xhc3NOYW1lKCkpOworICAgICAgICAgICAgc3RhdGljIEpTQzo6SWRlbnRpZmll
ciogcHJvdG90eXBlTmFtZSA9IG5ldyBKU0M6OklkZW50aWZpZXIoZXhlYywgSlNFdmVudFRhcmdl
dFByb3RvdHlwZUluZm9ybWF0aW9uOjpwcm90b3R5cGVDbGFzc05hbWUoKSk7CiAKLSAgICAgICAg
ICAgIEtKUzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKLSAgICAgICAgICAgIGlmIChLSlM6OkpTVmFsdWUqIG9iamVjdFZhbHVlID0g
Z2xvYmFsT2JqZWN0LT5nZXREaXJlY3QoKnByb3RvdHlwZU5hbWUpKSB7CisgICAgICAgICAgICBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgICAgICBpZiAoSlNDOjpKU1ZhbHVlKiBvYmplY3RWYWx1ZSA9IGdsb2Jh
bE9iamVjdC0+Z2V0RGlyZWN0KCpwcm90b3R5cGVOYW1lKSkgewogICAgICAgICAgICAgICAgIEFT
U0VSVChvYmplY3RWYWx1ZS0+aXNPYmplY3QoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEtKUzo6SlNPYmplY3QqPihvYmplY3RWYWx1ZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEpTQzo6SlNPYmplY3QqPihvYmplY3RWYWx1ZSk7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIEtKUzo6SlNPYmplY3QqIG5ld09iamVjdCA9IG5ldyAoZXhl
YykgSlNFdmVudFRhcmdldFByb3RvdHlwZTxKU0V2ZW50VGFyZ2V0UHJvdG90eXBlUGFyZW50LCBK
U0V2ZW50VGFyZ2V0UHJvdG90eXBlSW5mb3JtYXRpb24+KGV4ZWMpOwotICAgICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5wdXREaXJlY3QoKnByb3RvdHlwZU5hbWUsIG5ld09iamVjdCwgS0pTOjpEb250
RW51bSk7CisgICAgICAgICAgICBKU0M6OkpTT2JqZWN0KiBuZXdPYmplY3QgPSBuZXcgKGV4ZWMp
IEpTRXZlbnRUYXJnZXRQcm90b3R5cGU8SlNFdmVudFRhcmdldFByb3RvdHlwZVBhcmVudCwgSlNF
dmVudFRhcmdldFByb3RvdHlwZUluZm9ybWF0aW9uPihleGVjKTsKKyAgICAgICAgICAgIGdsb2Jh
bE9iamVjdC0+cHV0RGlyZWN0KCpwcm90b3R5cGVOYW1lLCBuZXdPYmplY3QsIEpTQzo6RG9udEVu
dW0pOwogICAgICAgICAgICAgcmV0dXJuIG5ld09iamVjdDsKICAgICAgICAgfQogCi0gICAgICAg
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEtKUzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBLSlM6
OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgS0pTOjpQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAg
ICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBLSlM6OmdldFN0YXRpY0Z1bmN0aW9uU2xvdDxL
SlM6OkpTT2JqZWN0PihleGVjLCAmS0pTOjpKU0V2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGUsIHRo
aXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgICAgICByZXR1cm4gSlNDOjpnZXRTdGF0
aWNGdW5jdGlvblNsb3Q8SlNDOjpKU09iamVjdD4oZXhlYywgJkpTQzo6SlNFdmVudFRhcmdldFBy
b3RvdHlwZVRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdmlydHVhbCBjb25zdCBLSlM6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QKKyAg
ICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEtKUzo6Q2xhc3NJbmZvIHNfY2xhc3NJ
bmZvID0geyBKU0V2ZW50VGFyZ2V0UHJvdG90eXBlSW5mb3JtYXRpb246OnByb3RvdHlwZUNsYXNz
TmFtZSgpLCAwLCAmS0pTOjpKU0V2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGUsIDAgfTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2NsYXNzSW5mbyA9IHsgSlNFdmVu
dFRhcmdldFByb3RvdHlwZUluZm9ybWF0aW9uOjpwcm90b3R5cGVDbGFzc05hbWUoKSwgMCwgJkpT
Qzo6SlNFdmVudFRhcmdldFByb3RvdHlwZVRhYmxlLCAwIH07CiAgICAgICAgICAgICByZXR1cm4g
JnNfY2xhc3NJbmZvOwogICAgICAgICB9CiAgICAgfTsKIAotICAgIEtKUzo6SlNWYWx1ZSogdG9K
UyhLSlM6OkV4ZWNTdGF0ZSosIEV2ZW50VGFyZ2V0Kik7CisgICAgSlNDOjpKU1ZhbHVlKiB0b0pT
KEpTQzo6RXhlY1N0YXRlKiwgRXZlbnRUYXJnZXQqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmNwcAkocmV2
aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKEpTRXZlbnRUYXJnZXROb2RlKQogCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZS5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMzcg
KzM4LDM3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTRXZlbnRUYXJnZXRO
b2RlIDogcHVibGljIEpTTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBKU0V2ZW50VGFyZ2V0
Tm9kZShLSlM6OkpTT2JqZWN0KiBwcm90b3R5cGUsIE5vZGUqKTsKKyAgICAgICAgSlNFdmVudFRh
cmdldE5vZGUoSlNDOjpKU09iamVjdCogcHJvdG90eXBlLCBOb2RlKik7CiAKLSAgICAgICAgdm9p
ZCBzZXRMaXN0ZW5lcihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBLSlM6OkpTVmFsdWUqIGZ1bmMpIGNvbnN0OwotICAgICAgICBLSlM6OkpTVmFsdWUqIGdl
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHB1c2hFdmVudEhhbmRsZXJTY29wZShLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6
U2NvcGVDaGFpbiYpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OlByb3Bl
cnR5U2xvdCYpOwotICAgICAgICBLSlM6OkpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoS0pTOjpF
eGVjU3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEtK
Uzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pTOjpKU1ZhbHVlKiwgS0pT
OjpQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5KEtKUzo6
RXhlY1N0YXRlKiwgaW50IHRva2VuLCBLSlM6OkpTVmFsdWUqKTsKKyAgICAgICAgdm9pZCBzZXRM
aXN0ZW5lcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBK
U0M6OkpTVmFsdWUqIGZ1bmMpIGNvbnN0OworICAgICAgICBKU0M6OkpTVmFsdWUqIGdldExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHB1c2hFdmVudEhhbmRsZXJTY29wZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U2NvcGVD
aGFpbiYpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xv
dCYpOworICAgICAgICBKU0M6OkpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoSlNDOjpFeGVjU3Rh
dGUqLCBpbnQgdG9rZW4pIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlKiwgSlNDOjpQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5KEpTQzo6RXhlY1N0
YXRlKiwgaW50IHRva2VuLCBKU0M6OkpTVmFsdWUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IEpTRXZlbnRUYXJnZXRCYXNlPEpTRXZlbnRUYXJnZXROb2RlPiBtX2Jhc2U7CiAgICAgfTsKIAot
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU0V2ZW50VGFyZ2V0Tm9kZTo6Z2V0T3duUHJvcGVydHlT
bG90KEtKUzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgS0pTOjpQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgQUxXQVlTX0lOTElORSBib29sIEpT
RXZlbnRUYXJnZXROb2RlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYg
c2xvdCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Jhc2UuZ2V0T3duUHJvcGVydHlTbG90PEpT
Tm9kZT4odGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAKLSAgICBBTFdB
WVNfSU5MSU5FIEtKUzo6SlNWYWx1ZSogSlNFdmVudFRhcmdldE5vZGU6OmdldFZhbHVlUHJvcGVy
dHkoS0pTOjpFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbikgY29uc3QKKyAgICBBTFdBWVNfSU5M
SU5FIEpTQzo6SlNWYWx1ZSogSlNFdmVudFRhcmdldE5vZGU6OmdldFZhbHVlUHJvcGVydHkoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBtX2Jhc2UuZ2V0VmFsdWVQcm9wZXJ0eSh0aGlzLCBleGVjLCB0b2tlbik7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIEpTRXZlbnRUYXJnZXROb2RlOjpwdXQoS0pTOjpFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBLSlM6OkpTVmFs
dWUqIHZhbHVlLCBLSlM6OlB1dFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgSlNFdmVudFRhcmdldE5vZGU6OnB1dChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSogdmFsdWUsIEpTQzo6
UHV0UHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAgICAgbV9iYXNlLnB1dDxKU05vZGU+
KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIH0KIAotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBKU0V2ZW50VGFyZ2V0Tm9kZTo6cHV0VmFsdWVQcm9wZXJ0eShLSlM6
OkV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuLCBLSlM6OkpTVmFsdWUqIHZhbHVlKQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBKU0V2ZW50VGFyZ2V0Tm9kZTo6cHV0VmFsdWVQcm9wZXJ0eShKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuLCBKU0M6OkpTVmFsdWUqIHZhbHVlKQogICAgIHsK
ICAgICAgICAgbV9iYXNlLnB1dFZhbHVlUHJvcGVydHkodGhpcywgZXhlYywgdG9rZW4sIHZhbHVl
KTsKICAgICB9CkBAIC04Nyw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9Owog
CiAgICAgdHlwZWRlZiBKU0V2ZW50VGFyZ2V0UHJvdG90eXBlPEpTTm9kZVByb3RvdHlwZSwgSlNF
dmVudFRhcmdldFByb3RvdHlwZUluZm9ybWF0aW9uPiBKU0V2ZW50VGFyZ2V0Tm9kZVByb3RvdHlw
ZTsKLSAgICBFdmVudFRhcmdldE5vZGUqIHRvRXZlbnRUYXJnZXROb2RlKEtKUzo6SlNWYWx1ZSop
OworICAgIEV2ZW50VGFyZ2V0Tm9kZSogdG9FdmVudFRhcmdldE5vZGUoSlNDOjpKU1ZhbHVlKik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxBbGxDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxBbGxDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBKU0hUTUxBbGxDb2xsZWN0aW9u
IDogcHVibGljIEpTSFRNTENvbGxlY3Rpb24gewogICAgIHB1YmxpYzoKLSAgICAgICAgSlNIVE1M
QWxsQ29sbGVjdGlvbihLSlM6OkpTT2JqZWN0KiBwcm90b3R5cGUsIEhUTUxDb2xsZWN0aW9uKiBj
b2xsZWN0aW9uKQorICAgICAgICBKU0hUTUxBbGxDb2xsZWN0aW9uKEpTQzo6SlNPYmplY3QqIHBy
b3RvdHlwZSwgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24pCiAgICAgICAgICAgICA6IEpTSFRN
TENvbGxlY3Rpb24ocHJvdG90eXBlLCBjb2xsZWN0aW9uKQogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEtKUzo6RXhlY1N0YXRlKikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihKU0M6OkV4
ZWNTdGF0ZSopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBt
YXNxdWVyYWRlQXNVbmRlZmluZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0
b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBw
bGV0RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogYm9vbCBKU0hUTUxBcHBsZXRFbGVtZW50OjpjdXN0b21HZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBA
QAogI2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlIDxranMvRXJyb3IuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogdm9pZCBKU0hUTUxFbGVtZW50OjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluJiBzY29wZSkgY29uc3QKIHsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDM2
MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wgSlNI
VE1MRW1iZWRFbGVtZW50OjpjdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20u
Y3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVs
ZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk
ZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5o
IgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxl
bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxG
cmFtZUVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxs
LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MSUZyYW1lRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkocmV2
aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElGcmFtZUVsZW1lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSFRN
TElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKIAotdXNpbmcgbmFt
ZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEJhc2Uu
Y3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRF
bGVtZW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsNyArNjEsNyBAQCBK
U1ZhbHVlKiBqc0hUTUxJbnB1dEVsZW1lbnRCYXNlRnVuY3Rpb25TCiAKIGNvbnN0IENsYXNzSW5m
byBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlOjpzX2luZm8gPSB7ICJIVE1MSW5wdXRFbGVtZW50QmFz
ZSIsICZKU0hUTUxFbGVtZW50OjpzX2luZm8sICZKU0hUTUxJbnB1dEVsZW1lbnRCYXNlVGFibGUs
IDAgfTsKIAotSlNIVE1MSW5wdXRFbGVtZW50QmFzZTo6SlNIVE1MSW5wdXRFbGVtZW50QmFzZShL
SlM6OkpTT2JqZWN0KiBwcm90b3R5cGUsIFBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gZSkK
K0pTSFRNTElucHV0RWxlbWVudEJhc2U6OkpTSFRNTElucHV0RWxlbWVudEJhc2UoSlNDOjpKU09i
amVjdCogcHJvdG90eXBlLCBQYXNzUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGUpCiAgICAgOiBK
U0hUTUxFbGVtZW50KHByb3RvdHlwZSwgZS5nZXQoKSkKIHsKIH0KQEAgLTc2LDcgKzc2LDcgQEAg
Ym9vbCBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlOjpnZXRPd25Qcm9wZQogICAgIAogICAgIC8vIG90
aGVyd2lzZSwgZG8gb3VyIG93biBmdW5jdGlvbiBsb29rdXAgb24gb3VyIGZ1bmN0aW9uIHRhYmxl
CiAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IEpTSFRNTElucHV0RWxlbWVudEJhc2VGdW5j
dGlvblRhYmxlLmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGVudHJ5ICYmIChl
bnRyeS0+YXR0cmlidXRlcyAmIEtKUzo6RnVuY3Rpb24pICYmIGVudHJ5LT5mdW5jdGlvblZhbHVl
ID09IGpzSFRNTElucHV0RWxlbWVudEJhc2VGdW5jdGlvblNldFNlbGVjdGlvblJhbmdlKSB7Cisg
ICAgaWYgKGVudHJ5ICYmIChlbnRyeS0+YXR0cmlidXRlcyAmIEpTQzo6RnVuY3Rpb24pICYmIGVu
dHJ5LT5mdW5jdGlvblZhbHVlID09IGpzSFRNTElucHV0RWxlbWVudEJhc2VGdW5jdGlvblNldFNl
bGVjdGlvblJhbmdlKSB7CiAgICAgICAgIHNsb3Quc2V0U3RhdGljRW50cnkodGhpcywgZW50cnks
IHN0YXRpY0Z1bmN0aW9uR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmgJKHJldmlz
aW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE0ICszMSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlIDogcHVibGljIEpTSFRNTEVsZW1l
bnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgSlNIVE1MSW5wdXRFbGVtZW50QmFzZShLSlM6OkpT
T2JqZWN0KiBwcm90b3R5cGUsIFBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4pOworICAgICAg
ICBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlKEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZSwgUGFzc1Jl
ZlB0cjxIVE1MSW5wdXRFbGVtZW50Pik7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIEtKUzo6
UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEtKUzo6SlNWYWx1ZSogZ2V0VmFsdWVQcm9wZXJ0eShL
SlM6OkV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBw
dXQoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSosIEtKUzo6UHV0UHJvcGVydHlTbG90JiBzbG90KTsKLSAgICAgICAgdm9pZCBwdXRW
YWx1ZVByb3BlcnR5KEtKUzo6RXhlY1N0YXRlKiwgaW50IHRva2VuLCBLSlM6OkpTVmFsdWUqKTsK
LSAgICAgICAgdmlydHVhbCBjb25zdCBLSlM6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Qg
eyByZXR1cm4gJnNfaW5mbzsgfQotICAgICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8g
c19pbmZvOworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAg
ICAgICAgSlNDOjpKU1ZhbHVlKiBnZXRWYWx1ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgaW50
IHRva2VuKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHB1dChKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKiwgSlNDOjpQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpOworICAgICAgICB2b2lkIHB1dFZhbHVlUHJvcGVydHkoSlNDOjpF
eGVjU3RhdGUqLCBpbnQgdG9rZW4sIEpTQzo6SlNWYWx1ZSopOworICAgICAgICB2aXJ0dWFsIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9
CisgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAgICAgICAgIGVu
dW0geyBTZWxlY3Rpb25TdGFydCwgU2VsZWN0aW9uRW5kIH07CiAgICAgfTsKIApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVu
dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50OjpjdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uRWxlbWVu
dENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5o
IgogI2luY2x1ZGUgIlRleHQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5oCShyZXZpc2lv
biAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0
cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE0ICsyNywxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBKU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IgOiBwdWJs
aWMgRE9NT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTSFRNTE9wdGlvbkVsZW1lbnRD
b25zdHJ1Y3RvcihLSlM6OkV4ZWNTdGF0ZSosIERvY3VtZW50Kik7CisgICAgICAgIEpTSFRNTE9w
dGlvbkVsZW1lbnRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIERvY3VtZW50Kik7CiAgICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7
IH0KIAotICAgICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8gc19pbmZvOworICAgICAg
ICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCBLSlM6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShLSlM6OkNv
bnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBjb25zdCBLSlM6OkNsYXNzSW5mbyogY2xh
c3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQorICAgICAgICB2aXJ0dWFsIEpTQzo6
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYpOworICAg
ICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJl
dHVybiAmc19pbmZvOyB9CiAKICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50Owog
ICAgIH07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotdXNpbmcg
bmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1l
bnRDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEpTVmFsdWUqIEpT
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3Qm
IGFyZ3MpCkBAIC00Niw3ICs0Niw3IEBAIEpTVmFsdWUqIEpTSFRNTFNlbGVjdEVsZW1lbnQ6OnJl
bW92ZShFeGUKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotdm9pZCBzZWxlY3RJbmRl
eFNldHRlcihIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0LCBLSlM6OkV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgaW5kZXgsIEtKUzo6SlNWYWx1ZSogdmFsdWUpCit2b2lkIHNlbGVjdEluZGV4U2V0
dGVyKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHNlbGVjdC0+cmVtb3ZlKGluZGV4KTsKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBzZWxlY3RJbmRleFNldHRlcihIVE1MU2VsZWN0RWxlbWVudAogICAgIH0K
IH0KIAotdm9pZCBKU0hUTUxTZWxlY3RFbGVtZW50OjppbmRleFNldHRlcihLSlM6OkV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEtKUzo6SlNWYWx1ZSogdmFsdWUpCit2b2lkIEpTSFRN
TFNlbGVjdEVsZW1lbnQ6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpbmRleCwgSlNDOjpKU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBzZWxlY3RJbmRleFNldHRlcihz
dGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGltcGwoKSksIGV4ZWMsIGluZGV4LCB2YWx1
ZSk7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0
b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1l
bnRDdXN0b20uaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TFNlbGVjdEVsZW1lbnRDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2VsZWN0SW5kZXhTZXR0ZXIoSFRNTFNlbGVj
dEVsZW1lbnQqLCBLSlM6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBLSlM6OkpTVmFsdWUq
KTsKK3ZvaWQgc2VsZWN0SW5kZXhTZXR0ZXIoSFRNTFNlbGVjdEVsZW1lbnQqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUqKTsKIAogfQogCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSGlzdG9yeS5oIgog
Ci11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKIAotdXNpbmcgbmFtZXNw
YWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAz
NjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDE0ICsyOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBKU0ltYWdlQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NT2JqZWN0IHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEpTSW1hZ2VDb25zdHJ1Y3RvcihLSlM6OkV4ZWNTdGF0ZSosIERvY3VtZW50Kik7
CisgICAgICAgIEpTSW1hZ2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIERvY3VtZW50Kik7
CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQu
Z2V0KCk7IH0KIAotICAgICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8gc19pbmZvOwor
ICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCBLSlM6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShL
SlM6OkNvbnN0cnVjdERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBjb25zdCBLSlM6OkNsYXNzSW5m
byogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQorICAgICAgICB2aXJ0dWFs
IEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYp
OworICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25z
dCB7IHJldHVybiAmc19pbmZvOyB9CiAKICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3Vt
ZW50OwogICAgIH07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0
V3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3Rl
ZE9iamVjdFdyYXBwZXIuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuaCIKIAotdXNp
bmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBw
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0
V3JhcHBlci5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNw
ZWN0ZWRPYmplY3RXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIg
OiBwdWJsaWMgSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIEtKUzo6SlNWYWx1ZSogd3JhcChLSlM6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhl
YywgS0pTOjpKU1ZhbHVlKiB1bndyYXBwZWRWYWx1ZSk7CisgICAgICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUqIHdyYXAoSlNDOjpFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEpTQzo6SlNWYWx1ZSog
dW53cmFwcGVkVmFsdWUpOwogICAgICAgICB2aXJ0dWFsIH5KU0luc3BlY3RlZE9iamVjdFdyYXBw
ZXIoKTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8gc19pbmZvOworICAg
ICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyKEtKUzo6RXhlY1N0YXRlKiB1bndyYXBw
ZWRFeGVjLCBLSlM6OkpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3QsIEtKUzo6SlNPYmplY3QqIHdy
YXBwZWRQcm90b3R5cGUpOwotICAgICAgICBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIoS0pTOjpF
eGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEtKUzo6SlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCwg
UGFzc1JlZlB0cjxLSlM6OlN0cnVjdHVyZUlEPik7CisgICAgICAgIEpTSW5zcGVjdGVkT2JqZWN0
V3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgSlNDOjpKU09iamVjdCogdW53
cmFwcGVkT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVkUHJvdG90eXBlKTsKKyAgICAgICAg
SlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiB1bndyYXBwZWRFeGVjLCBK
U0M6OkpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3QsIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmVJ
RD4pOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NHZXRQcm9wZXJ0eSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBib29sIGFsbG93c1NldFByb3BlcnR5KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNDksMTAgKzQ5LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0NhbGxBc0Z1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzR2V0UHJvcGVydHlO
YW1lcygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICB2aXJ0dWFsIEtKUzo6SlNW
YWx1ZSogcHJlcGFyZUluY29taW5nVmFsdWUoS0pTOjpFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMs
IEtKUzo6SlNWYWx1ZSogdW53cmFwcGVkVmFsdWUpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEtK
Uzo6SlNWYWx1ZSogd3JhcE91dGdvaW5nVmFsdWUoS0pTOjpFeGVjU3RhdGUqIHVud3JhcHBlZEV4
ZWMsIEtKUzo6SlNWYWx1ZSogdW53cmFwcGVkVmFsdWUpIGNvbnN0IHsgcmV0dXJuIHdyYXAodW53
cmFwcGVkRXhlYywgdW53cmFwcGVkVmFsdWUpOyB9CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU1Zh
bHVlKiBwcmVwYXJlSW5jb21pbmdWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywg
SlNDOjpKU1ZhbHVlKiB1bndyYXBwZWRWYWx1ZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlND
OjpKU1ZhbHVlKiB3cmFwT3V0Z29pbmdWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhl
YywgSlNDOjpKU1ZhbHVlKiB1bndyYXBwZWRWYWx1ZSkgY29uc3QgeyByZXR1cm4gd3JhcCh1bndy
YXBwZWRFeGVjLCB1bndyYXBwZWRWYWx1ZSk7IH0KIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IEtK
Uzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9CisgICAg
ICAgIHZpcnR1YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0
dXJuICZzX2luZm87IH0KICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNw
cAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2Fs
bGJhY2tXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5j
bHVkZSAiSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7
Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmgJKHJl
dmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckNhbGxiYWNr
V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyMSArMzIsMjEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIgOiBwdWJsaWMg
SlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IEtKUzo6SlNWYWx1ZSogd3JhcChLSlM6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgS0pTOjpK
U1ZhbHVlKiB1bndyYXBwZWRWYWx1ZSk7CisgICAgICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUqIHdy
YXAoSlNDOjpFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEpTQzo6SlNWYWx1ZSogdW53cmFwcGVk
VmFsdWUpOwogCiAgICAgICAgIHZpcnR1YWwgfkpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyKCk7
CiAKLSAgICAgICAgdmlydHVhbCBjb25zdCBLSlM6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29u
c3QgeyByZXR1cm4gJnNfaW5mbzsgfQotICAgICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0lu
Zm8gc19pbmZvOworICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTSW5zcGVjdG9y
Q2FsbGJhY2tXcmFwcGVyKEtKUzo6RXhlY1N0YXRlKiB1bndyYXBwZWRFeGVjLCBLSlM6OkpTT2Jq
ZWN0KiB1bndyYXBwZWRPYmplY3QsIEtKUzo6SlNPYmplY3QqIHdyYXBwZWRQcm90b3R5cGUpOwot
ICAgICAgICBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlcihLSlM6OkV4ZWNTdGF0ZSogdW53cmFw
cGVkRXhlYywgS0pTOjpKU09iamVjdCogdW53cmFwcGVkT2JqZWN0LCBQYXNzUmVmUHRyPEtKUzo6
U3RydWN0dXJlSUQ+KTsKKyAgICAgICAgSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIoSlNDOjpF
eGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEpTQzo6SlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCwg
SlNDOjpKU09iamVjdCogd3JhcHBlZFByb3RvdHlwZSk7CisgICAgICAgIEpTSW5zcGVjdG9yQ2Fs
bGJhY2tXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiB1bndyYXBwZWRFeGVjLCBKU0M6OkpTT2JqZWN0
KiB1bndyYXBwZWRPYmplY3QsIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmVJRD4pOwogCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NDYWxsQXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgICAgICB2aXJ0dWFsIEtKUzo6SlNWYWx1ZSogcHJlcGFyZUluY29taW5nVmFs
dWUoS0pTOjpFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEtKUzo6SlNWYWx1ZSogdW53cmFwcGVk
VmFsdWUpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEtKUzo6SlNWYWx1ZSogd3JhcE91dGdvaW5n
VmFsdWUoS0pTOjpFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEtKUzo6SlNWYWx1ZSogdW53cmFw
cGVkVmFsdWUpIGNvbnN0IHsgcmV0dXJuIHdyYXAodW53cmFwcGVkRXhlYywgdW53cmFwcGVkVmFs
dWUpOyB9CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlKiBwcmVwYXJlSW5jb21pbmdWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgSlNDOjpKU1ZhbHVlKiB1bndyYXBwZWRW
YWx1ZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlKiB3cmFwT3V0Z29pbmdW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgSlNDOjpKU1ZhbHVlKiB1bndyYXBw
ZWRWYWx1ZSkgY29uc3QgeyByZXR1cm4gd3JhcCh1bndyYXBwZWRFeGVjLCB1bndyYXBwZWRWYWx1
ZSk7IH0KICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCShyZXZp
c2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkph
dmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlIDxranMvQXJyYXlQcm90b3R5cGUuaD4KIAot
dXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
CShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAKLXVzaW5nIG5hbWVzcGFj
ZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNNaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWltZVR5cGVBcnJheUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01pbWVUeXBlQXJyYXlDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJv
b2wgSlNNaW1lVHlwZUFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTWltZVR5
cGVBcnJheSogbWltZVR5cGVBcnJheSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQog
ewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05TUmVzb2x2ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOU1Jlc29sdmVyLmNwcAkocmV2aXNpb24gMzYyNjIp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTlNSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDxranMvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPGtq
cy9KU1N0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TlNSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOU1Jlc29s
dmVyLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05TUmVzb2x2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIk5TUmVzb2x2
ZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTVmFsdWU7CiB9CiAKQEAgLTM3LDIxICszNywyMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBKU05TUmVzb2x2ZXIgOiBwdWJsaWMg
TlNSZXNvbHZlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU05T
UmVzb2x2ZXI+IGNyZWF0ZShLSlM6OkpTVmFsdWUqIHJlc29sdmVyKQorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxKU05TUmVzb2x2ZXI+IGNyZWF0ZShKU0M6OkpTVmFsdWUqIHJlc29sdmVyKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTTlNSZXNvbHZlcihy
ZXNvbHZlcikpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU05TUmVzb2x2
ZXIoS0pTOjpKU1ZhbHVlKiByZXNvbHZlcik7CisgICAgICAgIEpTTlNSZXNvbHZlcihKU0M6OkpT
VmFsdWUqIHJlc29sdmVyKTsKIAotICAgICAgICB2aXJ0dWFsIFN0cmluZyBsb29rdXBOYW1lc3Bh
Y2VVUkkoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHByZWZpeCk7CisgICAgICAgIHZp
cnR1YWwgU3RyaW5nIGxvb2t1cE5hbWVzcGFjZVVSSShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0
cmluZyYgcHJlZml4KTsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKIAotICAgICAgICBL
SlM6OkpTVmFsdWUqIG1fcmVzb2x2ZXI7CisgICAgICAgIEpTQzo6SlNWYWx1ZSogbV9yZXNvbHZl
cjsKICAgICB9OwogCi0gICAgUGFzc1JlZlB0cjxOU1Jlc29sdmVyPiB0b05TUmVzb2x2ZXIoS0pT
OjpKU1ZhbHVlKik7CisgICAgUGFzc1JlZlB0cjxOU1Jlc29sdmVyPiB0b05TUmVzb2x2ZXIoSlND
OjpKU1ZhbHVlKik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDM2MjYyKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5n
IG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKEpTTmFtZWROb2Rlc0NvbGxlY3Rpb24pCiAKQEAgLTQyLDcgKzQyLDcgQEAgY29u
c3QgQ2xhc3NJbmZvIEpTTmFtZWROb2Rlc0NvbGxlY3Rpb246OgogLy8gU3VjaCBhIGNvbGxlY3Rp
b24gaXMgdXN1YWxseSB2ZXJ5IHNob3J0LWxpdmVkLCBpdCBvbmx5IGV4aXN0cwogLy8gZm9yIGNv
bnN0cnVjdHMgbGlrZSBkb2N1bWVudC5mb3Jtcy48bmFtZT5bMV0sCiAvLyBzbyBpdCBzaG91bGRu
J3QgYmUgYSBwcm9ibGVtIHRoYXQgaXQncyBzdG9yaW5nIGFsbCB0aGUgbm9kZXMgKHdpdGggdGhl
IHNhbWUgbmFtZSkuIChEYXZpZCkKLUpTTmFtZWROb2Rlc0NvbGxlY3Rpb246OkpTTmFtZWROb2Rl
c0NvbGxlY3Rpb24oS0pTOjpKU09iamVjdCogcHJvdG90eXBlLCBjb25zdCBWZWN0b3I8UmVmUHRy
PE5vZGU+ID4mIG5vZGVzKQorSlNOYW1lZE5vZGVzQ29sbGVjdGlvbjo6SlNOYW1lZE5vZGVzQ29s
bGVjdGlvbihKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9k
ZT4gPiYgbm9kZXMpCiAgICAgOiBET01PYmplY3QocHJvdG90eXBlKQogICAgICwgbV9ub2Rlcyhu
ZXcgVmVjdG9yPFJlZlB0cjxOb2RlPiA+KG5vZGVzKSkKIHsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywxNiArMzcsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIHdoZW4gbXVs
dGlwbGUgbm9kZXMgaGF2ZSB0aGUgc2FtZSBuYW1lLgogICAgIGNsYXNzIEpTTmFtZWROb2Rlc0Nv
bGxlY3Rpb24gOiBwdWJsaWMgRE9NT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTTmFt
ZWROb2Rlc0NvbGxlY3Rpb24oS0pTOjpKU09iamVjdCogcHJvdG90eXBlLCBjb25zdCBWZWN0b3I8
UmVmUHRyPE5vZGU+ID4mKTsKKyAgICAgICAgSlNOYW1lZE5vZGVzQ29sbGVjdGlvbihKU0M6OkpT
T2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYpOwogCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoS0pTOjpFeGVjU3RhdGUqLCBjb25z
dCBLSlM6OklkZW50aWZpZXImLCBLSlM6OlByb3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IEtK
Uzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBLSlM6OkNsYXNzSW5mbyBzX2luZm87CisgICAgICAgIHZpcnR1YWwg
Y29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87
IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHN0YXRpYyBLSlM6OkpTVmFsdWUqIGxlbmd0aEdldHRlcihLSlM6OkV4
ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIGNvbnN0IEtKUzo6UHJvcGVydHlTbG90
Jik7Ci0gICAgICAgIHN0YXRpYyBLSlM6OkpTVmFsdWUqIGluZGV4R2V0dGVyKEtKUzo6RXhlY1N0
YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgY29uc3QgS0pTOjpQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSogbGVuZ3RoR2V0dGVyKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgY29uc3QgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAg
ICAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSogaW5kZXhHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3BlcnR5U2xvdCYpOwogCiAgICAg
ICAgIE93blB0cjxWZWN0b3I8UmVmUHRyPE5vZGU+ID4gPiBtX25vZGVzOwogICAgIH07CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAkocmV2aXNpb24gMzYy
NjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5n
IG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBzdGF0aWMgYm9vbCBuZWVk
c1lvdVR1YmVRdWlyayhFeGVjU3RhdGUqLCBGcmFtZSopOwogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQAogI2lu
Y2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCShyZXZpc2lvbiAzNjI2
MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVz
aW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBBU1NFUlRfQ0xBU1Nf
RklUU19JTl9DRUxMKEpTTm9kZUZpbHRlckNvbmRpdGlvbikKIApAQCAtNDIsNyArNDIsNyBAQCB2
b2lkIEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6bWFyaygpCiAgICAgICAgIG1fZmlsdGVyLT5tYXJr
KCk7CiB9CiAKLXNob3J0IEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShLSlM6OkV4
ZWNTdGF0ZSogZXhlYywgTm9kZSogZmlsdGVyTm9kZSkgY29uc3QKK3Nob3J0IEpTTm9kZUZpbHRl
ckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgTm9kZSogZmlsdGVy
Tm9kZSkgY29uc3QKIHsKICAgICBKU0xvY2sgbG9jayhmYWxzZSk7CiAKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAkocmV2aXNpb24gMzYyNjIpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlvbi5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgSlNWYWx1ZTsKIH0KIApAQCAtMzMsMTggKzMzLDE4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTTm9kZUZpbHRlckNvbmRpdGlvbiA6IHB1Ymxp
YyBOb2RlRmlsdGVyQ29uZGl0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEpTTm9kZUZpbHRlckNvbmRpdGlvbj4gY3JlYXRlKEtKUzo6SlNWYWx1ZSogZmlsdGVy
KQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU05vZGVGaWx0ZXJDb25kaXRpb24+IGNyZWF0
ZShKU0M6OkpTVmFsdWUqIGZpbHRlcikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBKU05vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVyKSk7CiAgICAgICAgIH0KIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIEpTTm9kZUZpbHRlckNvbmRpdGlvbihLSlM6OkpTVmFsdWUq
IGZpbHRlcik7CisgICAgICAgIEpTTm9kZUZpbHRlckNvbmRpdGlvbihKU0M6OkpTVmFsdWUqIGZp
bHRlcik7CiAKLSAgICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKEtKUzo6RXhlY1N0YXRl
KiwgTm9kZSopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHNob3J0IGFjY2VwdE5vZGUoSlNDOjpF
eGVjU3RhdGUqLCBOb2RlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7CiAK
LSAgICAgICAgS0pTOjpKU1ZhbHVlKiBtX2ZpbHRlcjsKKyAgICAgICAgSlNDOjpKU1ZhbHVlKiBt
X2ZpbHRlcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVJdGVyYXRvckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDcgKzI1LDcgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSAiTm9kZUl0ZXJh
dG9yLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlz
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0
Q3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUxpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVk
ZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7
Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5BcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMzYy
NjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luQXJyYXlDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNp
bmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIGJvb2wgSlNQbHVnaW5B
cnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIFBsdWdpbkFycmF5KiBwbHVnaW5B
cnJheSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BsdWdpbkN1c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogYm9vbCBKU1BsdWdpbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4
ZWNTdGF0ZSosIFBsdWdpbiogcGx1Z2luLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CiB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVn
aW5FbGVtZW50RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAog
I2luY2x1ZGUgInJ1bnRpbWUuaCIKICNpbmNsdWRlICJydW50aW1lX29iamVjdC5oIgogCi11c2lu
ZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBSdW50aW1lT2JqZWN0SW1wKiBnZXRSdW50
aW1lT2JqZWMKICAgICBJbnN0YW5jZSogaW5zdGFuY2UgPSBwbHVnaW5JbnN0YW5jZShub2RlKTsK
ICAgICBpZiAoIWluc3RhbmNlKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gS0pTOjpC
aW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYywgaW5zdGFuY2UpOwor
ICAgIHJldHVybiBKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChl
eGVjLCBpbnN0YW5jZSk7CiB9CiAKIEpTVmFsdWUqIHJ1bnRpbWVPYmplY3RHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1l
bnRGdW5jdGlvbnMuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgLy8gUnVudGltZSBvYmplY3Qgc3VwcG9ydCBj
b2RlIGZvciBKU0hUTUxBcHBsZXRFbGVtZW50LCBKU0hUTUxFbWJlZEVsZW1lbnQgYW5kIEpTSFRN
TE9iamVjdEVsZW1lbnQuCiAKLSAgICBLSlM6OkpTVmFsdWUqIHJ1bnRpbWVPYmplY3RHZXR0ZXIo
S0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBjb25zdCBLSlM6OlByb3Bl
cnR5U2xvdCYpOwotICAgIEtKUzo6SlNWYWx1ZSogcnVudGltZU9iamVjdFByb3BlcnR5R2V0dGVy
KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgY29uc3QgS0pTOjpQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNs
b3QoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OlByb3BlcnR5
U2xvdCYsIEpTSFRNTEVsZW1lbnQqKTsKLSAgICBib29sIHJ1bnRpbWVPYmplY3RDdXN0b21QdXQo
S0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OkpTVmFsdWUqLCBI
VE1MRWxlbWVudCosIEtKUzo6UHV0UHJvcGVydHlTbG90Jik7Ci0gICAgS0pTOjpDYWxsVHlwZSBy
dW50aW1lT2JqZWN0R2V0Q2FsbERhdGEoSFRNTEVsZW1lbnQqLCBLSlM6OkNhbGxEYXRhJik7Cisg
ICAgSlNDOjpKU1ZhbHVlKiBydW50aW1lT2JqZWN0R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiwgY29uc3QgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU0M6
OkpTVmFsdWUqIHJ1bnRpbWVPYmplY3RQcm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYsIGNvbnN0IEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgYm9v
bCBydW50aW1lT2JqZWN0Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBKU0hUTUxFbGVtZW50
Kik7CisgICAgYm9vbCBydW50aW1lT2JqZWN0Q3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlKiwgSFRNTEVsZW1lbnQqLCBKU0M6OlB1
dFByb3BlcnR5U2xvdCYpOworICAgIEpTQzo6Q2FsbFR5cGUgcnVudGltZU9iamVjdEdldENhbGxE
YXRhKEhUTUxFbGVtZW50KiwgSlNDOjpDYWxsRGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBw
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9i
amVjdFdyYXBwZXIuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpbmNsdWRlIDxranMvSlNHbG9iYWxPYmplY3QuaD4KIAotdXNpbmcgbmFtZXNw
YWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMjA4LDcgKzIwOCw3IEBAIEpTT2JqZWN0KiBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6
Y28KICAgICBDb25zdHJ1Y3RUeXBlIHVud3JhcHBlZENvbnN0cnVjdFR5cGUgPSB3cmFwcGVyLT5t
X3Vud3JhcHBlZE9iamVjdC0+Z2V0Q29uc3RydWN0RGF0YSh1bndyYXBwZWRDb25zdHJ1Y3REYXRh
KTsKICAgICBBU1NFUlQodW53cmFwcGVkQ29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlTm9u
ZSk7CiAKLSAgICBKU1ZhbHVlKiB1bndyYXBwZWRSZXN1bHQgPSBLSlM6OmNvbnN0cnVjdCh3cmFw
cGVyLT51bndyYXBwZWRFeGVjU3RhdGUoKSwgd3JhcHBlci0+bV91bndyYXBwZWRPYmplY3QsIHVu
d3JhcHBlZENvbnN0cnVjdFR5cGUsIHVud3JhcHBlZENvbnN0cnVjdERhdGEsIHByZXBhcmVkQXJn
cyk7CisgICAgSlNWYWx1ZSogdW53cmFwcGVkUmVzdWx0ID0gSlNDOjpjb25zdHJ1Y3Qod3JhcHBl
ci0+dW53cmFwcGVkRXhlY1N0YXRlKCksIHdyYXBwZXItPm1fdW53cmFwcGVkT2JqZWN0LCB1bndy
YXBwZWRDb25zdHJ1Y3RUeXBlLCB1bndyYXBwZWRDb25zdHJ1Y3REYXRhLCBwcmVwYXJlZEFyZ3Mp
OwogCiAgICAgSlNWYWx1ZSogcmVzdWx0VmFsdWUgPSB3cmFwcGVyLT53cmFwT3V0Z29pbmdWYWx1
ZSh3cmFwcGVyLT51bndyYXBwZWRFeGVjU3RhdGUoKSwgdW53cmFwcGVkUmVzdWx0KTsKICAgICBB
U1NFUlQocmVzdWx0VmFsdWUtPmlzT2JqZWN0KCkpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIEpTVmFs
dWUqIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjpjYWwKICAgICBDYWxsVHlwZSB1bndyYXBw
ZWRDYWxsVHlwZSA9IHdyYXBwZXItPm1fdW53cmFwcGVkT2JqZWN0LT5nZXRDYWxsRGF0YSh1bndy
YXBwZWRDYWxsRGF0YSk7CiAgICAgQVNTRVJUKHVud3JhcHBlZENhbGxUeXBlICE9IENhbGxUeXBl
Tm9uZSk7CiAKLSAgICBKU1ZhbHVlKiB1bndyYXBwZWRSZXN1bHQgPSBLSlM6OmNhbGwod3JhcHBl
ci0+dW53cmFwcGVkRXhlY1N0YXRlKCksIHdyYXBwZXItPm1fdW53cmFwcGVkT2JqZWN0LCB1bndy
YXBwZWRDYWxsVHlwZSwgdW53cmFwcGVkQ2FsbERhdGEsIHByZXBhcmVkVGhpc1ZhbHVlLCBwcmVw
YXJlZEFyZ3MpOworICAgIEpTVmFsdWUqIHVud3JhcHBlZFJlc3VsdCA9IEpTQzo6Y2FsbCh3cmFw
cGVyLT51bndyYXBwZWRFeGVjU3RhdGUoKSwgd3JhcHBlci0+bV91bndyYXBwZWRPYmplY3QsIHVu
d3JhcHBlZENhbGxUeXBlLCB1bndyYXBwZWRDYWxsRGF0YSwgcHJlcGFyZWRUaGlzVmFsdWUsIHBy
ZXBhcmVkQXJncyk7CiAKICAgICBKU1ZhbHVlKiByZXN1bHQgPSB3cmFwcGVyLT53cmFwT3V0Z29p
bmdWYWx1ZSh3cmFwcGVyLT51bndyYXBwZWRFeGVjU3RhdGUoKSwgdW53cmFwcGVkUmVzdWx0KTsK
IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdy
YXBwZXIuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUXVhcmFu
dGluZWRPYmplY3RXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDQ1ICszMCw0NSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBKU1F1YXJhbnRpbmVkT2JqZWN0V3Jh
cHBlciA6IHB1YmxpYyBLSlM6OkpTT2JqZWN0IHsKKyAgICBjbGFzcyBKU1F1YXJhbnRpbmVkT2Jq
ZWN0V3JhcHBlciA6IHB1YmxpYyBKU0M6OkpTT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlciogYXNXcmFwcGVyKEtKUzo6SlNWYWx1
ZSopOworICAgICAgICBzdGF0aWMgSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIqIGFzV3JhcHBl
cihKU0M6OkpTVmFsdWUqKTsKIAogICAgICAgICB2aXJ0dWFsIH5KU1F1YXJhbnRpbmVkT2JqZWN0
V3JhcHBlcigpOwogCi0gICAgICAgIEtKUzo6SlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fdW53cmFwcGVkT2JqZWN0OyB9Ci0gICAgICAgIEtKUzo6SlNHbG9iYWxP
YmplY3QqIHVud3JhcHBlZEdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdW53cmFwcGVk
R2xvYmFsT2JqZWN0OyB9OwotICAgICAgICBLSlM6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlY1N0
YXRlKCkgY29uc3Q7CisgICAgICAgIEpTQzo6SlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fdW53cmFwcGVkT2JqZWN0OyB9CisgICAgICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIHVud3JhcHBlZEdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdW53cmFwcGVk
R2xvYmFsT2JqZWN0OyB9OworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlY1N0
YXRlKCkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBhbGxvd3NVbndyYXBwZWRBY2Nlc3NGcm9tKGNv
bnN0IEtKUzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIGJvb2wgYWxsb3dzVW53cmFwcGVk
QWNjZXNzRnJvbShjb25zdCBKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwogCi0gICAgICAgIHN0YXRp
YyBjb25zdCBLSlM6OkNsYXNzSW5mbyBzX2luZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTUXVhcmFudGlu
ZWRPYmplY3RXcmFwcGVyKEtKUzo6RXhlY1N0YXRlKiB1bndyYXBwZWRFeGVjLCBLSlM6OkpTT2Jq
ZWN0KiB1bndyYXBwZWRPYmplY3QsIEtKUzo6SlNPYmplY3QqIHdyYXBwZWRQcm90b3R5cGUpOwot
ICAgICAgICBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcihLSlM6OkV4ZWNTdGF0ZSogdW53cmFw
cGVkRXhlYywgS0pTOjpKU09iamVjdCogdW53cmFwcGVkT2JqZWN0LCBQYXNzUmVmUHRyPEtKUzo6
U3RydWN0dXJlSUQ+KTsKKyAgICAgICAgSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIoSlNDOjpF
eGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEpTQzo6SlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCwg
SlNDOjpKU09iamVjdCogd3JhcHBlZFByb3RvdHlwZSk7CisgICAgICAgIEpTUXVhcmFudGluZWRP
YmplY3RXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiB1bndyYXBwZWRFeGVjLCBKU0M6OkpTT2JqZWN0
KiB1bndyYXBwZWRPYmplY3QsIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmVJRD4pOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVu
dGlmaWVyJiwgS0pTOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChLSlM6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBLSlM6OlByb3BlcnR5U2xv
dCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIHVuc2ln
bmVkLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoS0pT
OjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OkpTVmFsdWUqLCBLSlM6
OlB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEtKUzo6RXhlY1N0
YXRlKiwgdW5zaWduZWQsIEtKUzo6SlNWYWx1ZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlKiwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHB1dChKU0M6OkV4
ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU0M6OkpTVmFsdWUqKTsKIAotICAgICAgICB2aXJ0dWFsIGJv
b2wgZGVsZXRlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXIm
KTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEtKUzo6RXhlY1N0YXRlKiwg
dW5zaWduZWQpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQpOwogCi0gICAgICAgIHZpcnR1
YWwgS0pTOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShLSlM6OkNhbGxEYXRhJik7Ci0gICAgICAgIHZp
cnR1YWwgS0pTOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoS0pTOjpDb25zdHJ1Y3RE
YXRhJik7CisgICAgICAgIHZpcnR1YWwgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkNh
bGxEYXRhJik7CisgICAgICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGltcGxl
bWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzSW5zdGFu
Y2UoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTVmFsdWUqKTsKKyAgICAgICAgdmlydHVhbCBib29s
IGhhc0luc3RhbmNlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKik7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIGdldFByb3BlcnR5TmFtZXMoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OlByb3Bl
cnR5TmFtZUFycmF5Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYpOwogCi0gICAgICAgIHZpcnR1
YWwgS0pTOjpVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW53cmFwcGVkT2Jq
ZWN0LT5jbGFzc05hbWUoKTsgfQorICAgICAgICB2aXJ0dWFsIEpTQzo6VVN0cmluZyBjbGFzc05h
bWUoKSBjb25zdCB7IHJldHVybiBtX3Vud3JhcHBlZE9iamVjdC0+Y2xhc3NOYW1lKCk7IH0KIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzR2V0UHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzU2V0UHJvcGVydHkoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtNzgsMTggKzc4LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0NhbGxBc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0dldFByb3BlcnR5TmFtZXMo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgICAgIHZpcnR1YWwgS0pTOjpKU1ZhbHVl
KiBwcmVwYXJlSW5jb21pbmdWYWx1ZShLSlM6OkV4ZWNTdGF0ZSogdW53cmFwcGVkRXhlYywgS0pT
OjpKU1ZhbHVlKiB1bndyYXBwZWRWYWx1ZSkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIEtK
Uzo6SlNWYWx1ZSogd3JhcE91dGdvaW5nVmFsdWUoS0pTOjpFeGVjU3RhdGUqIHVud3JhcHBlZEV4
ZWMsIEtKUzo6SlNWYWx1ZSogdW53cmFwcGVkVmFsdWUpIGNvbnN0ID0gMDsKKyAgICAgICAgdmly
dHVhbCBKU0M6OkpTVmFsdWUqIHByZXBhcmVJbmNvbWluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiB1
bndyYXBwZWRFeGVjLCBKU0M6OkpTVmFsdWUqIHVud3JhcHBlZFZhbHVlKSBjb25zdCA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlKiB3cmFwT3V0Z29pbmdWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSogdW53cmFwcGVkRXhlYywgSlNDOjpKU1ZhbHVlKiB1bndyYXBwZWRWYWx1ZSkgY29uc3Qg
PSAwOwogCi0gICAgICAgIHN0YXRpYyBLSlM6OkpTVmFsdWUqIGNhY2hlZFZhbHVlR2V0dGVyKEtK
Uzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgY29uc3QgS0pTOjpQcm9wZXJ0
eVNsb3QmKTsKKyAgICAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSogY2FjaGVkVmFsdWVHZXR0ZXIo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwogCi0gICAgICAgIHZvaWQgdHJhbnNmZXJFeGNlcHRpb25Ub0V4ZWNTdGF0ZShL
SlM6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICB2b2lkIHRyYW5zZmVyRXhjZXB0aW9uVG9F
eGVjU3RhdGUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMgS0pTOjpK
U1ZhbHVlKiBjYWxsKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU09iamVjdCogZnVuY3Rpb24sIEtK
Uzo6SlNWYWx1ZSogdGhpc1ZhbHVlLCBjb25zdCBLSlM6OkFyZ0xpc3QmKTsKLSAgICAgICAgc3Rh
dGljIEtKUzo6SlNPYmplY3QqIGNvbnN0cnVjdChLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNPYmpl
Y3QqLCBjb25zdCBLSlM6OkFyZ0xpc3QmKTsKKyAgICAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSog
Y2FsbChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uLCBKU0M6OkpTVmFs
dWUqIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0Jik7CisgICAgICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBjb25zdHJ1Y3QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgY29u
c3QgSlNDOjpBcmdMaXN0Jik7CiAKLSAgICAgICAgS0pTOjpKU0dsb2JhbE9iamVjdCogbV91bndy
YXBwZWRHbG9iYWxPYmplY3Q7Ci0gICAgICAgIEtKUzo6SlNPYmplY3QqIG1fdW53cmFwcGVkT2Jq
ZWN0OworICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBtX3Vud3JhcHBlZEdsb2JhbE9iamVj
dDsKKyAgICAgICAgSlNDOjpKU09iamVjdCogbV91bndyYXBwZWRPYmplY3Q7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JHQkNv
bG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IuY3Bw
CShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTUkdCQ29sb3Iu
bHV0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNSR0JDb2xv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNSR0JDb2xvci5oCShyZXZp
c2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNSR0JDb2xvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwxNCArMjksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIEZJ
WE1FOiBKU1JHQkNvbG9yIHNob3VsZCBoYXZlIGEgcHJvcGVyIFByb3RvdHlwZSBhbmQgQ29uc3Ry
dWN0b3IKICAgICBjbGFzcyBKU1JHQkNvbG9yIDogcHVibGljIERPTU9iamVjdCB7CiAgICAgcHVi
bGljOgotICAgICAgICBKU1JHQkNvbG9yKEtKUzo6SlNPYmplY3QqIHByb3RvdHlwZSwgdW5zaWdu
ZWQgY29sb3IpOworICAgICAgICBKU1JHQkNvbG9yKEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZSwg
dW5zaWduZWQgY29sb3IpOwogICAgICAgICB+SlNSR0JDb2xvcigpOwogCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6Oklk
ZW50aWZpZXImLCBLSlM6OlByb3BlcnR5U2xvdCYpOwotICAgICAgICBLSlM6OkpTVmFsdWUqIGdl
dFZhbHVlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0OworICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNDOjpKU1Zh
bHVlKiBnZXRWYWx1ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsK
IAotICAgICAgICB2aXJ0dWFsIGNvbnN0IEtKUzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25z
dCB7IHJldHVybiAmc19pbmZvOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBLSlM6OkNsYXNzSW5m
byBzX2luZm87CisgICAgICAgIHZpcnR1YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5m
bygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBlbnVtIHsgUmVkLCBHcmVlbiwgQmx1ZSB9Owog
CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdW5zaWduZWQg
bV9jb2xvcjsKICAgICB9OwogCi0gICAgS0pTOjpKU1ZhbHVlKiBnZXRKU1JHQkNvbG9yKEtKUzo6
RXhlY1N0YXRlKiwgdW5zaWduZWQgY29sb3IpOworICAgIEpTQzo6SlNWYWx1ZSogZ2V0SlNSR0JD
b2xvcihKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGNvbG9yKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlz
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3Vs
dFNldFJvd0xpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0
U2V0Um93TGlzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVk
ZSAiU1FMVHJhbnNhY3Rpb24uaCIKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTVkdMYXp5RXZlbnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NWR0xhenlFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gMzYyNjIp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGF6eUV2ZW50TGlzdGVuZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgog
Ci11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGF6eUV2ZW50TGlz
dGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGF6eUV2ZW50
TGlzdGVuZXIuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZH
TGF6eUV2ZW50TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNTVkdMYXp5RXZlbnRMaXN0
ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBKU0RP
TVdpbmRvdyosIE5vZGUqLCBpbnQgbGluZU51bWJlcik7CiAKLSAgICAgICAgdmlydHVhbCBLSlM6
OkpTVmFsdWUqIGV2ZW50UGFyYW1ldGVyTmFtZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEpT
Qzo6SlNWYWx1ZSogZXZlbnRQYXJhbWV0ZXJOYW1lKCkgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1
c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xl
bmd0aEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICNpZiBFTkFC
TEUoU1ZHKQogI2luY2x1ZGUgIkpTU1ZHTGVuZ3RoLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7
Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiU1ZHRXhjZXB0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDcgKzQwLDcgQEAgSlNW
YWx1ZSogSlNTVkdNYXRyaXg6Om11bHRpcGx5KEV4ZWNTdGF0ZQogSlNWYWx1ZSogSlNTVkdNYXRy
aXg6OmludmVyc2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JikKIHsKICAgICBBZmZp
bmVUcmFuc2Zvcm0gaW1wKCppbXBsKCkpOwotICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9K
UyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPEFmZmluZVRyYW5zZm9ybT46OmNyZWF0
ZShpbXAuaW52ZXJzZSgpKS5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKKyAgICBKU0M6OkpTVmFs
dWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxBZmZpbmVU
cmFuc2Zvcm0+OjpjcmVhdGUoaW1wLmludmVyc2UoKSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7
CiAKICAgICBpZiAoIWltcC5pc0ludmVydGlibGUoKSkKICAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIFNWR0V4Y2VwdGlvbjo6U1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRSk7CkBAIC05MSw3
ICs5MSw3IEBAIEpTVmFsdWUqIEpTU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yKEUKICAgICBm
bG9hdCB4ID0gYXJncy5hdChleGVjLCAwKS0+dG9GbG9hdChleGVjKTsKICAgICBmbG9hdCB5ID0g
YXJncy5hdChleGVjLCAxKS0+dG9GbG9hdChleGVjKTsKIAotICAgIEtKUzo6SlNWYWx1ZSogcmVz
dWx0ID0gdG9KUyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPEFmZmluZVRyYW5zZm9y
bT46OmNyZWF0ZShpbXAucm90YXRlRnJvbVZlY3Rvcih4LCB5KSkuZ2V0KCksIG1fY29udGV4dC5n
ZXQoKSk7CisgICAgSlNDOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMsIEpTU1ZHU3RhdGlj
UE9EVHlwZVdyYXBwZXI8QWZmaW5lVHJhbnNmb3JtPjo6Y3JlYXRlKGltcC5yb3RhdGVGcm9tVmVj
dG9yKHgsIHkpKS5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIAogICAgIGlmICh4ID09IDAuMCB8
fCB5ID09IDAuMCkKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNWR0V4Y2VwdGlvbjo6
U1ZHX0lOVkFMSURfVkFMVUVfRVJSKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQ
YXRoU2VnQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZH
UGF0aFNlZ0N1c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NWR1BhdGhTZWdDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBA
CiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmgiCiAjaW5jbHVkZSAiU1ZHUGF0
aFNlZ01vdmV0by5oIgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1ZHUGF0aFNlZ0xpc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNTVkdQYXRoU2VnTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NWR1BhdGhTZWdMaXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAotdXNpbmcg
bmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNTcsNyArNTcsNyBAQCBKU1ZhbHVlKiBKU1NWR1BhdGhTZWdMaXN0Ojppbml0aWFs
aXplKEV4CiAKICAgICBTVkdQYXRoU2VnKiBvYmogPSBXVEY6OmdldFB0cihpbXAtPmluaXRpYWxp
emUobmV3SXRlbSwgZWMpKTsKIAotICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVj
LCBvYmosIG1fY29udGV4dC5nZXQoKSk7CisgICAgSlNDOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pT
KGV4ZWMsIG9iaiwgbV9jb250ZXh0LmdldCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOwogCiAgICAgbV9jb250ZXh0LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGltcC0+YXNzb2NpYXRl
ZEF0dHJpYnV0ZU5hbWUoKSk7ICAgIApAQCAtNzgsNyArNzgsNyBAQCBKU1ZhbHVlKiBKU1NWR1Bh
dGhTZWdMaXN0OjpnZXRJdGVtKEV4ZWNTCiAgICAgU1ZHUGF0aFNlZ0xpc3QqIGltcCA9IHN0YXRp
Y19jYXN0PFNWR1BhdGhTZWdMaXN0Kj4oaW1wbCgpKTsKICAgICBTVkdQYXRoU2VnKiBvYmogPSBX
VEY6OmdldFB0cihpbXAtPmdldEl0ZW0oaW5kZXgsIGVjKSk7CiAKLSAgICBLSlM6OkpTVmFsdWUq
IHJlc3VsdCA9IHRvSlMoZXhlYywgb2JqLCBtX2NvbnRleHQuZ2V0KCkpOworICAgIEpTQzo6SlNW
YWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmosIG1fY29udGV4dC5nZXQoKSk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtOTcsNyAr
OTcsNyBAQCBKU1ZhbHVlKiBKU1NWR1BhdGhTZWdMaXN0OjppbnNlcnRJdGVtQmVmCiAKICAgICBT
VkdQYXRoU2VnTGlzdCogaW1wID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpc3QqPihpbXBsKCkp
OwogCi0gICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMsIFdURjo6Z2V0UHRyKGlt
cC0+aW5zZXJ0SXRlbUJlZm9yZShuZXdJdGVtLCBpbmRleCwgZWMpKSwgbV9jb250ZXh0LmdldCgp
KTsKKyAgICBKU0M6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgV1RGOjpnZXRQdHIoaW1w
LT5pbnNlcnRJdGVtQmVmb3JlKG5ld0l0ZW0sIGluZGV4LCBlYykpLCBtX2NvbnRleHQuZ2V0KCkp
OwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICBtX2NvbnRleHQtPnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsgICAgCkBAIC0x
MTgsNyArMTE4LDcgQEAgSlNWYWx1ZSogSlNTVkdQYXRoU2VnTGlzdDo6cmVwbGFjZUl0ZW0oRQog
CiAgICAgU1ZHUGF0aFNlZ0xpc3QqIGltcCA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdMaXN0Kj4o
aW1wbCgpKTsKIAotICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBXVEY6Omdl
dFB0cihpbXAtPnJlcGxhY2VJdGVtKG5ld0l0ZW0sIGluZGV4LCBlYykpLCBtX2NvbnRleHQuZ2V0
KCkpOworICAgIEpTQzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBXVEY6OmdldFB0cihp
bXAtPnJlcGxhY2VJdGVtKG5ld0l0ZW0sIGluZGV4LCBlYykpLCBtX2NvbnRleHQuZ2V0KCkpOwog
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICBtX2NvbnRleHQtPnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsgICAgCkBAIC0xNDAs
NyArMTQwLDcgQEAgSlNWYWx1ZSogSlNTVkdQYXRoU2VnTGlzdDo6cmVtb3ZlSXRlbShFeAogCiAg
ICAgUmVmUHRyPFNWR1BhdGhTZWc+IG9iaihpbXAtPnJlbW92ZUl0ZW0oaW5kZXgsIGVjKSk7CiAK
LSAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgb2JqLmdldCgpLCBtX2NvbnRl
eHQuZ2V0KCkpOworICAgIEpTQzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmouZ2V0
KCksIG1fY29udGV4dC5nZXQoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAog
ICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1
dGVOYW1lKCkpOyAgICAKQEAgLTE1NCw3ICsxNTQsNyBAQCBKU1ZhbHVlKiBKU1NWR1BhdGhTZWdM
aXN0OjphcHBlbmRJdGVtKEV4CiAKICAgICBTVkdQYXRoU2VnTGlzdCogaW1wID0gc3RhdGljX2Nh
c3Q8U1ZHUGF0aFNlZ0xpc3QqPihpbXBsKCkpOwogCi0gICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQg
PSB0b0pTKGV4ZWMsIFdURjo6Z2V0UHRyKGltcC0+YXBwZW5kSXRlbShuZXdJdGVtLCBlYykpLCBt
X2NvbnRleHQuZ2V0KCkpOworICAgIEpTQzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBX
VEY6OmdldFB0cihpbXAtPmFwcGVuZEl0ZW0obmV3SXRlbSwgZWMpKSwgbV9jb250ZXh0LmdldCgp
KTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCiAgICAgbV9jb250ZXh0LT5zdmdB
dHRyaWJ1dGVDaGFuZ2VkKGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7ICAgIApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BvaW50TGlzdEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BvaW50TGlzdEN1c3RvbS5jcHAJKHJldmlz
aW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BvaW50TGlzdEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJKU1NWR1BvaW50
LmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTVkdUcmFuc2Zvcm1MaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHVHJhbnNmb3JtTGlzdEN1c3RvbS5jcHAJKHJldmlz
aW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1RyYW5zZm9ybUxpc3RDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiSlNTVkdU
cmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAKLXVzaW5nIG5hbWVz
cGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAJKHJldmlzaW9uIDM2
MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8a2pzL1Byb3BlcnR5TmFtZUFycmF5
Lmg+CiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkpTQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUg
IkpTTm9kZS5oIgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5
bGVTaGVldExpc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJTdHlsZVNo
ZWV0TGlzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRDdXN0
b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiVGV4
dC5oIgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtl
ckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxr
ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNU
cmVlV2Fsa2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2lu
Y2x1ZGUgIk5vZGVGaWx0ZXIuaCIKICNpbmNsdWRlICJUcmVlV2Fsa2VyLmgiCiAKLXVzaW5nIG5h
bWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1
ZXN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NyArMjQsNyBAQAogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlICJYTUxI
dHRwUmVxdWVzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDM2MjYyKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEzIEBAIGNsYXNzIERvY3VtZW50OwogCiBjbGFzcyBKU1hN
TEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IgOiBwdWJsaWMgRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAg
ICBKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IoS0pTOjpFeGVjU3RhdGUqLCBEb2N1bWVudCop
OworICAgIEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIERvY3Vt
ZW50Kik7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVu
dC5nZXQoKTsgfQotICAgIHN0YXRpYyBjb25zdCBLSlM6OkNsYXNzSW5mbyBzX2luZm87CisgICAg
c3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIEtKUzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEtKUzo6Q29uc3RydWN0RGF0
YSYpOwotICAgIHZpcnR1YWwgY29uc3QgS0pTOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0
IHsgcmV0dXJuICZzX2luZm87IH0KKyAgICB2aXJ0dWFsIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRD
b25zdHJ1Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYpOworICAgIHZpcnR1YWwgY29uc3QgSlND
OjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87IH0KIAogICAg
IFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKIH07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5j
bHVkZSA8a2pzL0Vycm9yLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAkocmV2aXNpb24g
MzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiWE1MSHR0
cFJlcXVlc3RVcGxvYWQuaCIKICNpbmNsdWRlIDxranMvRXJyb3IuaD4KIAotdXNpbmcgbmFtZXNw
YWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
ICNpbmNsdWRlICJYU0xUUHJvY2Vzc29yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi11
c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNvbnN0
cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNz
b3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTWFNMVFByb2Nlc3NvckNv
bnN0cnVjdG9yIDogcHVibGljIERPTU9iamVjdCB7CiAgICAgcHVibGljOgotICAgICAgICBKU1hT
TFRQcm9jZXNzb3JDb25zdHJ1Y3RvcihLSlM6OkV4ZWNTdGF0ZSopOwotICAgICAgICBzdGF0aWMg
Y29uc3QgS0pTOjpDbGFzc0luZm8gc19pbmZvOworICAgICAgICBKU1hTTFRQcm9jZXNzb3JDb25z
dHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSopOworICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFz
c0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBLSlM6OkNvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShLSlM6OkNvbnN0cnVjdERhdGEmKTsKLSAgICAgICAg
dmlydHVhbCBjb25zdCBLSlM6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4g
JnNfaW5mbzsgfQorICAgICAgICB2aXJ0dWFsIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYpOworICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hT
TFRQcm9jZXNzb3JDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDcgQEAKICNpbmNsdWRlICJYU0xUUHJvY2Vzc29yLmgiCiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1
bGVkQWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPGtqcy9KU0xvY2suaD4KIAotdXNpbmcg
bmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCShyZXZpc2lvbiAz
NjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICovCiAgICAg
Y2xhc3MgU2NoZWR1bGVkQWN0aW9uIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNjaGVkdWxlZEFj
dGlvbihLSlM6OkV4ZWNTdGF0ZSogZXhlYywgS0pTOjpKU1ZhbHVlKiBmdW5jdGlvbiwgY29uc3Qg
S0pTOjpBcmdMaXN0Jik7CisgICAgICAgIFNjaGVkdWxlZEFjdGlvbihKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlKiBmdW5jdGlvbiwgY29uc3QgSlNDOjpBcmdMaXN0Jik7CiAgICAg
ICAgIFNjaGVkdWxlZEFjdGlvbihjb25zdCBTdHJpbmcmIGNvZGUpCiAgICAgICAgICAgICA6IG1f
Y29kZShjb2RlKQogICAgICAgICB7CkBAIC00Myw4ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCBleGVjdXRlKEpTRE9NV2luZG93U2hlbGwqKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIEtKUzo6UHJvdGVjdGVkUHRyPEtKUzo6SlNWYWx1ZT4gbV9mdW5jdGlvbjsK
LSAgICAgICAgVmVjdG9yPEtKUzo6UHJvdGVjdGVkUHRyPEtKUzo6SlNWYWx1ZT4gPiBtX2FyZ3M7
CisgICAgICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNWYWx1ZT4gbV9mdW5jdGlvbjsKKyAg
ICAgICAgVmVjdG9yPEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNWYWx1ZT4gPiBtX2FyZ3M7CiAg
ICAgICAgIFN0cmluZyBtX2NvZGU7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcg
QEAKICNpbmNsdWRlICJKU1NWR0xhenlFdmVudExpc3RlbmVyLmgiCiAjZW5kaWYKIAotdXNpbmcg
bmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTo6RXZlbnROYW1lczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjIzLDE0ICsyMjMs
MTQgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjppc0VuYWJsZWQoKQogICAgIHJldHVybiAoc2V0
dGluZ3MgJiYgc2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSk7CiB9CiAKLXZvaWQgU2Ny
aXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoS0pTOjpEZWJ1Z2dlciogZGVidWdnZXIpCit2
b2lkIFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVn
Z2VyKQogewogICAgIGlmICghbV93aW5kb3dTaGVsbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGRlYnVnZ2VyKQogICAgICAgICBkZWJ1Z2dlci0+YXR0YWNoKG1fd2luZG93U2hlbGwtPndp
bmRvdygpKTsKLSAgICBlbHNlIGlmIChLSlM6OkRlYnVnZ2VyKiBjdXJyZW50RGVidWdnZXIgPSBt
X3dpbmRvd1NoZWxsLT53aW5kb3coKS0+ZGVidWdnZXIoKSkKKyAgICBlbHNlIGlmIChKU0M6OkRl
YnVnZ2VyKiBjdXJyZW50RGVidWdnZXIgPSBtX3dpbmRvd1NoZWxsLT53aW5kb3coKS0+ZGVidWdn
ZXIoKSkKICAgICAgICAgY3VycmVudERlYnVnZ2VyLT5kZXRhY2gobV93aW5kb3dTaGVsbC0+d2lu
ZG93KCkpOwogfQogCkBAIC0yNzksNyArMjc5LDcgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRyb2xs
ZXI6OndpbmRvd1NjcmlwdAogICAgICAgICBpZiAoaXNFbmFibGVkKCkpIHsKICAgICAgICAgICAg
IC8vIEphdmFTY3JpcHQgaXMgZW5hYmxlZCwgc28gdGhlcmUgaXMgYSBKYXZhU2NyaXB0IHdpbmRv
dyBvYmplY3QuCiAgICAgICAgICAgICAvLyBSZXR1cm4gYW4gTlBPYmplY3QgYm91bmQgdG8gdGhl
IHdpbmRvdyBvYmplY3QuCi0gICAgICAgICAgICBLSlM6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAg
ICAgICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICAgICAgSlNPYmplY3Qq
IHdpbiA9IHdpbmRvd1NoZWxsKCktPndpbmRvdygpOwogICAgICAgICAgICAgQVNTRVJUKHdpbik7
CiAgICAgICAgICAgICBCaW5kaW5nczo6Um9vdE9iamVjdCogcm9vdCA9IGJpbmRpbmdSb290T2Jq
ZWN0KCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBXZWJTY3JpcHRPYmplY3Q7CiAKIHN0
cnVjdCBOUE9iamVjdDsKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOwogCkBAIC01OCw3ICs1OCw3
IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBTdHJpbmc7CiBjbGFzcyBXaWRnZXQ7CiAKLXR5cGVkZWYg
SGFzaE1hcDx2b2lkKiwgUmVmUHRyPEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+ID4gUm9vdE9i
amVjdE1hcDsKK3R5cGVkZWYgSGFzaE1hcDx2b2lkKiwgUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJv
b3RPYmplY3Q+ID4gUm9vdE9iamVjdE1hcDsKIAogY2xhc3MgU2NyaXB0Q29udHJvbGxlciB7CiBw
dWJsaWM6CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fd2luZG93
U2hlbGwtPndpbmRvdygpOwogICAgIH0KIAotICAgIEtKUzo6SlNWYWx1ZSogZXZhbHVhdGUoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBiYXNlTGluZSwgY29uc3QgU3RyaW5nJiBjb2RlKTsK
KyAgICBKU0M6OkpTVmFsdWUqIGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQg
YmFzZUxpbmUsIGNvbnN0IFN0cmluZyYgY29kZSk7CiAKICAgICBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGNyZWF0ZUhUTUxFdmVudEhhbmRsZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgY29kZSwgTm9kZSopOwogI2lmIEVOQUJMRShTVkcpCkBAIC05Miw3ICs5
Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbmFibGVkKCk7CiAKLSAgICB2b2lkIGF0dGFj
aERlYnVnZ2VyKEtKUzo6RGVidWdnZXIqKTsKKyAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6
RGVidWdnZXIqKTsKIAogICAgIHZvaWQgc2V0UGF1c2VkKGJvb2wgYikgeyBtX3BhdXNlZCA9IGI7
IH0KICAgICBib29sIGlzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZWQ7IH0KQEAgLTEw
OSwxMCArMTA5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyU2NyaXB0T2JqZWN0cygpOwog
ICAgIHZvaWQgY2xlYW51cFNjcmlwdE9iamVjdHNGb3JQbHVnaW4odm9pZCopOwogCi0gICAgUGFz
c1JlZlB0cjxLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZT4gY3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JX
aWRnZXQoV2lkZ2V0Kik7Ci0gICAgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCogYmluZGluZ1Jv
b3RPYmplY3QoKTsKKyAgICBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3RhbmNlPiBjcmVh
dGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldChXaWRnZXQqKTsKKyAgICBKU0M6OkJpbmRpbmdzOjpS
b290T2JqZWN0KiBiaW5kaW5nUm9vdE9iamVjdCgpOwogCi0gICAgUGFzc1JlZlB0cjxLSlM6OkJp
bmRpbmdzOjpSb290T2JqZWN0PiBjcmVhdGVSb290T2JqZWN0KHZvaWQqIG5hdGl2ZUhhbmRsZSk7
CisgICAgUGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0PiBjcmVhdGVSb290T2Jq
ZWN0KHZvaWQqIG5hdGl2ZUhhbmRsZSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAjaWYgRU5BQkxF
KE1BQ19KQVZBX0JSSURHRSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2xlYXJQbGF0Zm9ybVNjcmlwdE9iamVjdHMoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RQbGF0Zm9y
bVNjcmlwdE9iamVjdHMoKTsKIAotICAgIEtKUzo6UHJvdGVjdGVkUHRyPEpTRE9NV2luZG93U2hl
bGw+IG1fd2luZG93U2hlbGw7CisgICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNET01XaW5kb3dTaGVs
bD4gbV93aW5kb3dTaGVsbDsKICAgICBIYXNoU2V0PEpTRE9NV2luZG93Kj4gbV9saXZlRm9ybWVy
V2luZG93czsKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBpbnQgbV9oYW5kbGVyTGluZW5vOwpA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BhdXNlZDsKIAogICAgIC8v
IFRoZSByb290IG9iamVjdCB1c2VkIGZvciBvYmplY3RzIGJvdW5kIG91dHNpZGUgdGhlIGNvbnRl
eHQgb2YgYSBwbHVnaW4uCi0gICAgUmVmUHRyPEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IG1f
YmluZGluZ1Jvb3RPYmplY3Q7CisgICAgUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+
IG1fYmluZGluZ1Jvb3RPYmplY3Q7CiAgICAgUm9vdE9iamVjdE1hcCBtX3Jvb3RPYmplY3RzOwog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIE5QT2JqZWN0KiBtX3dpbmRvd1Nj
cmlwdE5QT2JqZWN0OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXJHdGsuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEtKUzo6QmluZGluZ3M6Okluc3RhbmNlPiBT
Y3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldChXaWRnZXQqIHdp
ZGdldCkKK1Bhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xs
ZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KFdpZGdldCogd2lkZ2V0KQogewogICAg
IGlmICghd2lkZ2V0LT5pc1BsdWdpblZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiAzNjI2
MikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTksMTEgKzU5LDExIEBACiAtIChOUE9iamVjdCAqKWNyZWF0ZVBsdWdpblNj
cmlwdGFibGVPYmplY3Q7CiBAZW5kCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM6OkJpbmRpbmdzOwor
dXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGluZ3M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UGFzc1JlZlB0cjxLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3Jl
YXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3aWRnZXQpCitQYXNzUmVmUHRyPEpT
Qzo6QmluZGluZ3M6Okluc3RhbmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0
YW5jZUZvcldpZGdldChXaWRnZXQqIHdpZGdldCkKIHsKICAgICBOU1ZpZXcqIHdpZGdldFZpZXcg
PSB3aWRnZXQtPmdldFZpZXcoKTsKICAgICBpZiAoIXdpZGdldFZpZXcpCkBAIC03NSw3ICs3NSw3
IEBAIFBhc3NSZWZQdHI8S0pTOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmkKICAgICAgICAgaWQg
b2JqZWN0Rm9yV2ViU2NyaXB0ID0gW3dpZGdldFZpZXcgb2JqZWN0Rm9yV2ViU2NyaXB0XTsKICAg
ICAgICAgaWYgKCFvYmplY3RGb3JXZWJTY3JpcHQpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgcmV0dXJuIEtKUzo6QmluZGluZ3M6Ok9iamNJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdEZv
cldlYlNjcmlwdCwgcm9vdE9iamVjdC5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gSlNDOjpC
aW5kaW5nczo6T2JqY0luc3RhbmNlOjpjcmVhdGUob2JqZWN0Rm9yV2ViU2NyaXB0LCByb290T2Jq
ZWN0LnJlbGVhc2UoKSk7CiAgICAgfQogCiAgICAgaWYgKFt3aWRnZXRWaWV3IHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoY3JlYXRlUGx1Z2luU2NyaXB0YWJsZU9iamVjdCldKSB7CkBAIC04
NSw3ICs4NSw3IEBAIFBhc3NSZWZQdHI8S0pTOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmkKICAg
ICAgICAgTlBPYmplY3QqIG5wT2JqZWN0ID0gW3dpZGdldFZpZXcgY3JlYXRlUGx1Z2luU2NyaXB0
YWJsZU9iamVjdF07CiAgICAgICAgIGlmICghbnBPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IEtKUzo6QmluZGluZ3M6OkNJ
bnN0YW5jZTo6Y3JlYXRlKG5wT2JqZWN0LCByb290T2JqZWN0LnJlbGVhc2UoKSk7CisgICAgICAg
IFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNy
ZWF0ZShucE9iamVjdCwgcm9vdE9iamVjdC5yZWxlYXNlKCkpOwogICAgICAgICAvLyAtY3JlYXRl
UGx1Z2luU2NyaXB0YWJsZU9iamVjdCByZXR1cm5zIGEgcmV0YWluZWQgTlBPYmplY3QuICBUaGUg
Y2FsbGVyIGlzIGV4cGVjdGVkIHRvIHJlbGVhc2UgaXQuCiAgICAgICAgIF9OUE5fUmVsZWFzZU9i
amVjdChucE9iamVjdCk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZS5yZWxlYXNlKCk7CkBAIC05
Niw3ICs5Niw3IEBAIFBhc3NSZWZQdHI8S0pTOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmkKICAg
ICBqb2JqZWN0IGFwcGxldCA9IG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+amF2YUFwcGxl
dCh3aWRnZXRWaWV3KTsKICAgICBpZiAoIWFwcGxldCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
cmV0dXJuIEtKUzo6QmluZGluZ3M6OkphdmFJbnN0YW5jZTo6Y3JlYXRlKGFwcGxldCwgcm9vdE9i
amVjdC5yZWxlYXNlKCkpOworICAgIHJldHVybiBKU0M6OkJpbmRpbmdzOjpKYXZhSW5zdGFuY2U6
OmNyZWF0ZShhcHBsZXQsIHJvb3RPYmplY3QucmVsZWFzZSgpKTsKICNlbHNlCiAgICAgcmV0dXJu
IDA7CiAjZW5kaWYKQEAgLTEwOCw4ICsxMDgsOCBAQCBXZWJTY3JpcHRPYmplY3QqIFNjcmlwdENv
bnRyb2xsZXI6OndpbmRvCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX3dpbmRvd1Nj
cmlwdE9iamVjdCkgewotICAgICAgICBLSlM6OkpTTG9jayBsb2NrKGZhbHNlKTsKLSAgICAgICAg
S0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCogcm9vdCA9IGJpbmRpbmdSb290T2JqZWN0KCk7Cisg
ICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgICAgICBKU0M6OkJpbmRpbmdzOjpS
b290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsKICAgICAgICAgbV93aW5kb3dT
Y3JpcHRPYmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpTT2JqZWN0OnRv
UmVmKHdpbmRvd1NoZWxsKCkpIG9yaWdpblJvb3RPYmplY3Q6cm9vdCByb290T2JqZWN0OnJvb3Rd
OwogICAgIH0KIApAQCAtMTIwLDcgKzEyMCw3IEBAIFdlYlNjcmlwdE9iamVjdCogU2NyaXB0Q29u
dHJvbGxlcjo6d2luZG8KIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJQbGF0Zm9ybVNjcmlw
dE9iamVjdHMoKQogewogICAgIGlmIChtX3dpbmRvd1NjcmlwdE9iamVjdCkgewotICAgICAgICBL
SlM6OkJpbmRpbmdzOjpSb290T2JqZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsKKyAg
ICAgICAgSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdCogcm9vdCA9IGJpbmRpbmdSb290T2JqZWN0
KCk7CiAgICAgICAgIFttX3dpbmRvd1NjcmlwdE9iamVjdC5nZXQoKSBfc2V0T3JpZ2luUm9vdE9i
amVjdDpyb290IGFuZFJvb3RPYmplY3Q6cm9vdF07CiAgICAgfQogfQpAQCAtMTM2LDcgKzEzNiw3
IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlzY29ubmVjdFBsYXRmb3IKICNpZiBFTkFCTEUo
TUFDX0pBVkFfQlJJREdFKQogc3RhdGljIHB0aHJlYWRfdCBtYWluVGhyZWFkOwogCi1zdGF0aWMg
dm9pZCB1cGRhdGVSZW5kZXJpbmdGb3JCaW5kaW5ncyhLSlM6OkV4ZWNTdGF0ZSogZXhlYywgS0pT
OjpKU09iamVjdCogcm9vdE9iamVjdCkKK3N0YXRpYyB2b2lkIHVwZGF0ZVJlbmRlcmluZ0ZvckJp
bmRpbmdzKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTT2JqZWN0KiByb290T2JqZWN0KQog
ewogICAgIGlmIChwdGhyZWFkX3NlbGYoKSAhPSBtYWluVGhyZWFkKQogICAgICAgICByZXR1cm47
CkBAIC0xNjIsOCArMTYyLDggQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVuZGVyaW5nRm9yQmluZGlu
Z3MoSwogdm9pZCBTY3JpcHRDb250cm9sbGVyOjppbml0SmF2YUpTQmluZGluZ3MoKQogewogICAg
IG1haW5UaHJlYWQgPSBwdGhyZWFkX3NlbGYoKTsKLSAgICBLSlM6OkJpbmRpbmdzOjpKYXZhSlNP
YmplY3Q6OmluaXRpYWxpemVKTklUaHJlYWRpbmcoKTsKLSAgICBLSlM6OkJpbmRpbmdzOjpJbnN0
YW5jZTo6c2V0RGlkRXhlY3V0ZUZ1bmN0aW9uKHVwZGF0ZVJlbmRlcmluZ0ZvckJpbmRpbmdzKTsK
KyAgICBKU0M6OkJpbmRpbmdzOjpKYXZhSlNPYmplY3Q6OmluaXRpYWxpemVKTklUaHJlYWRpbmco
KTsKKyAgICBKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6c2V0RGlkRXhlY3V0ZUZ1bmN0aW9uKHVw
ZGF0ZVJlbmRlcmluZ0ZvckJpbmRpbmdzKTsKIH0KICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNyArNDYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8S0pT
OjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3Rh
bmNlRm9yV2lkZ2V0KFdlYkNvcmU6OldpZGdldCogd2lkZ2V0KQorUGFzc1JlZlB0cjxKU0M6OkJp
bmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VG
b3JXaWRnZXQoV2ViQ29yZTo6V2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgaWYgKCF3aWRnZXQtPmlz
UGx1Z2luVmlldygpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU2LDcgKzU2LDcgQEAgUGFzc1Jl
ZlB0cjxLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaQogICAgIFFXaWRnZXQqIG5hdGl2ZVdp
ZGdldCA9IHdpZGdldC0+bmF0aXZlV2lkZ2V0KCk7CiAgICAgaWYgKCFuYXRpdmVXaWRnZXQpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBLSlM6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpj
cmVhdGUobmF0aXZlV2lkZ2V0LCBiaW5kaW5nUm9vdE9iamVjdCgpKTsKKyAgICByZXR1cm4gSlND
OjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6Y3JlYXRlKG5hdGl2ZVdpZGdldCwgYmluZGluZ1Jvb3RP
YmplY3QoKSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyV2luLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTEgQEAK
ICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAicnVudGltZS5oIgogCi11c2luZyBu
YW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKK3VzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdzOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8S0pTOjpCaW5kaW5nczo6SW5zdGFu
Y2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KFdpZGdl
dCogd2lkZ2V0KQorUGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29u
dHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3aWRnZXQpCiB7
CiAgICAgaWYgKCF3aWRnZXQtPmlzUGx1Z2luVmlldygpKQogICAgICAgICByZXR1cm4gMDsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJXeC5jcHAJKHJldmlzaW9u
IDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyV3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UGFzc1JlZlB0cjxLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3Jl
YXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3aWRnZXQpCitQYXNzUmVmUHRyPEpT
Qzo6QmluZGluZ3M6Okluc3RhbmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0
YW5jZUZvcldpZGdldChXaWRnZXQqIHdpZGdldCkKIHsKICAgICBpZiAoIXdpZGdldC0+aXNQbHVn
aW5WaWV3KCkpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9T
dHJpbmdTb3VyY2VQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
U3RyaW5nU291cmNlUHJvdmlkZXIuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL1N0cmluZ1NvdXJjZVByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICsz
MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTdHJpbmdTb3VyY2VQ
cm92aWRlciA6IHB1YmxpYyBLSlM6OlNvdXJjZVByb3ZpZGVyIHsKKyAgICBjbGFzcyBTdHJpbmdT
b3VyY2VQcm92aWRlciA6IHB1YmxpYyBKU0M6OlNvdXJjZVByb3ZpZGVyIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ1NvdXJjZVByb3ZpZGVyPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBzb3VyY2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJpbmdTb3VyY2VQ
cm92aWRlcihzb3VyY2UpKTsgfQogCi0gICAgICAgIEtKUzo6VVN0cmluZyBnZXRSYW5nZShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0IHsgcmV0dXJuIEtKUzo6VVN0cmluZyhtX3NvdXJjZS5jaGFy
YWN0ZXJzKCkgKyBzdGFydCwgZW5kIC0gc3RhcnQpOyB9CisgICAgICAgIEpTQzo6VVN0cmluZyBn
ZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0IHsgcmV0dXJuIEpTQzo6VVN0cmluZyht
X3NvdXJjZS5jaGFyYWN0ZXJzKCkgKyBzdGFydCwgZW5kIC0gc3RhcnQpOyB9CiAgICAgICAgIGNv
bnN0IFVDaGFyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuY2hhcmFjdGVycygpOyB9
CiAgICAgICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5sZW5ndGgoKTsg
fQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQAogI2lt
cG9ydCAiRE9NU1ZHLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0YXRpYyBOU0FycmF5ICpraXQoY29uc3QgVmVjdG9y
PEludFJlY3QKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKTsKIH0KIAotLSAoS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCopX3Jvb3RPYmplY3QK
Ky0gKEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3QqKV9yb290T2JqZWN0CiB7CiAgICAgaWYgKFdl
YkNvcmU6Ok5vZGUgKm4gPSBbc2VsZiBfbm9kZV0pIHsKICAgICAgICAgaWYgKFdlYkNvcmU6OkZy
YW1lKiBmcmFtZSA9IG4tPmRvY3VtZW50KCktPmZyYW1lKCkpCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NSW50ZXJuYWwuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDcgKzI4Niw3IEBACiAjaW1w
b3J0ICJET01TVkdab29tRXZlbnRJbnRlcm5hbC5oIgogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAK
LW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAg
ICAgCiAgICAgbmFtZXNwYWNlIEJpbmRpbmdzIHsKQEAgLTMzNSw3ICszMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGlkIGNyZWF0ZURPTVdy
YXBwZXIoS0pTOjpKU09iamVjdCosIFBhc3NSZWZQdHI8S0pTOjpCaW5kaW5nczo6Um9vdE9iamVj
dD4gb3JpZ2luLCBQYXNzUmVmUHRyPEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IGN1cnJlbnQp
OworICAgIGlkIGNyZWF0ZURPTVdyYXBwZXIoSlNDOjpKU09iamVjdCosIFBhc3NSZWZQdHI8SlND
OjpCaW5kaW5nczo6Um9vdE9iamVjdD4gb3JpZ2luLCBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6
OlJvb3RPYmplY3Q+IGN1cnJlbnQpOwogCiAgICAgTlNPYmplY3QqIGdldERPTVdyYXBwZXIoRE9N
T2JqZWN0SW50ZXJuYWwqKTsKICAgICB2b2lkIGFkZERPTVdyYXBwZXIoTlNPYmplY3QqIHdyYXBw
ZXIsIERPTU9iamVjdEludGVybmFsKik7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
SW50ZXJuYWwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVy
bmFsLm1tCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRl
cm5hbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE0LDEyICsxMTQsMTIgQEAgdm9pZCByZW1vdmVE
T01XcmFwcGVyKERPTU9iamVjdEludGVybmFsKgogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCi0gICAgS0pTOjpFeGVjU3RhdGUgKmV4ZWMgPSBmcmFtZS0+c2NyaXB0
KCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpFeGVjU3RhdGUgKmV4
ZWMgPSBmcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAg
CiAgICAgLy8gR2V0IChvciBjcmVhdGUpIGEgY2FjaGVkIEpTIG9iamVjdCBmb3IgdGhlIERPTSBu
b2RlLgotICAgIEtKUzo6SlNPYmplY3QgKnNjcmlwdEltcCA9IHN0YXRpY19jYXN0PEtKUzo6SlNP
YmplY3QqPihXZWJDb3JlOjp0b0pTKGV4ZWMsIG5vZGVJbXBsKSk7CisgICAgSlNDOjpKU09iamVj
dCAqc2NyaXB0SW1wID0gc3RhdGljX2Nhc3Q8SlNDOjpKU09iamVjdCo+KFdlYkNvcmU6OnRvSlMo
ZXhlYywgbm9kZUltcGwpKTsKIAotICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QqIHJvb3RP
YmplY3QgPSBmcmFtZS0+c2NyaXB0KCktPmJpbmRpbmdSb290T2JqZWN0KCk7CisgICAgSlNDOjpC
aW5kaW5nczo6Um9vdE9iamVjdCogcm9vdE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS0+YmluZGlu
Z1Jvb3RPYmplY3QoKTsKIAogICAgIFtzZWxmIF9zZXRJbXA6c2NyaXB0SW1wIG9yaWdpblJvb3RP
YmplY3Q6cm9vdE9iamVjdCByb290T2JqZWN0OnJvb3RPYmplY3RdOwogfQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTVV0aWxpdHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTVV0aWxpdHkubW0JKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTVV0aWxpdHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDkgQEAK
IC8vIFNvbWUgZGF5IGlmIHRoZSBjb21waWxlciBpcyBmaXhlZCwgb3IgaWYgYWxsIHRoZSBKUyB3
cmFwcGVycyBhcmUgbmFtZWQgd2l0aCBhICJKUyIgcHJlZml4LAogLy8gd2UgY291bGQgbW92ZSB0
aGUgZnVuY3Rpb24gaW50byB0aGUgV2ViQ29yZSBuYW1lc3BhY2Ugd2hlcmUgaXQgYmVsb25ncy4K
IAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIGlubGluZSBpZCBj
cmVhdGVET01XcmFwcGVyKEtKUzo6SlNPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBpbmxpbmUgaWQg
Y3JlYXRlRE9NV3JhcHBlcihKU0M6OkpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgI2RlZmluZSBX
UkFQKGNsYXNzTmFtZSkgXAogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0cygmV2ViQ29yZTo6
SlMjI2NsYXNzTmFtZTo6c19pbmZvKSkgXApAQCAtMTE3LDkgKzExNyw5IEBAIHN0YXRpYyBpbmxp
bmUgaWQgY3JlYXRlRE9NV3JhcHBlcihLSlM6OkoKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1p
ZCBjcmVhdGVET01XcmFwcGVyKEtKUzo6SlNPYmplY3QqIG9iamVjdCwgUGFzc1JlZlB0cjxLSlM6
OkJpbmRpbmdzOjpSb290T2JqZWN0PiBvcmlnaW4sIFBhc3NSZWZQdHI8S0pTOjpCaW5kaW5nczo6
Um9vdE9iamVjdD4gY3VycmVudCkKK2lkIGNyZWF0ZURPTVdyYXBwZXIoSlNDOjpKU09iamVjdCog
b2JqZWN0LCBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IG9yaWdpbiwgUGFz
c1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0PiBjdXJyZW50KQogewotICAgIGlkIHdy
YXBwZXIgPSBLSlM6OmNyZWF0ZURPTVdyYXBwZXIob2JqZWN0KTsKKyAgICBpZCB3cmFwcGVyID0g
SlNDOjpjcmVhdGVET01XcmFwcGVyKG9iamVjdCk7CiAgICAgaWYgKCFbd3JhcHBlciBfaGFzSW1w
XSkgLy8gbmV3IHdyYXBwZXIsIG5vdCBmcm9tIGNhY2hlCiAgICAgICAgIFt3cmFwcGVyIF9zZXRJ
bXA6b2JqZWN0IG9yaWdpblJvb3RPYmplY3Q6b3JpZ2luIHJvb3RPYmplY3Q6Y3VycmVudF07CiAg
ICAgcmV0dXJuIHdyYXBwZXI7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0
T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRP
YmplY3QubW0JKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNj
cmlwdE9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksOCBAQAogdHlwZWRlZiB1
bnNpZ25lZCBOU1VJbnRlZ2VyOwogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Ci11c2lu
ZyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7Cit1c2luZyBu
YW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgcmVtb3ZlSlNXcmFwcGVyKEpT
T2JqZWN0KiBpbXBsKQogICAgIEpTV3JhcHBlckNhY2hlLT5yZW1vdmUoaW1wbCk7CiB9CiAKLWlk
IGNyZWF0ZUpTV3JhcHBlcihLSlM6OkpTT2JqZWN0KiBvYmplY3QsIFBhc3NSZWZQdHI8S0pTOjpC
aW5kaW5nczo6Um9vdE9iamVjdD4gb3JpZ2luLCBQYXNzUmVmUHRyPEtKUzo6QmluZGluZ3M6OlJv
b3RPYmplY3Q+IHJvb3QpCitpZCBjcmVhdGVKU1dyYXBwZXIoSlNDOjpKU09iamVjdCogb2JqZWN0
LCBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IG9yaWdpbiwgUGFzc1JlZlB0
cjxKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0PiByb290KQogewogICAgIGlmIChpZCB3cmFwcGVy
ID0gZ2V0SlNXcmFwcGVyKG9iamVjdCkpCiAgICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWlu
XSBhdXRvcmVsZWFzZV07CkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIHZvaWQgX2RpZEV4ZWN1
dGUoV2ViU2NyaXB0T2JqZWN0IAogICAgIF9wcml2YXRlLT5vcmlnaW5Sb290T2JqZWN0ID0gb3Jp
Z2luUm9vdE9iamVjdC5yZWxlYXNlUmVmKCk7CiB9CiAKLS0gKGlkKV9pbml0V2l0aEpTT2JqZWN0
OihLSlM6OkpTT2JqZWN0KilpbXAgb3JpZ2luUm9vdE9iamVjdDooUGFzc1JlZlB0cjxLSlM6OkJp
bmRpbmdzOjpSb290T2JqZWN0PilvcmlnaW5Sb290T2JqZWN0IHJvb3RPYmplY3Q6KFBhc3NSZWZQ
dHI8S0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdD4pcm9vdE9iamVjdAorLSAoaWQpX2luaXRXaXRo
SlNPYmplY3Q6KEpTQzo6SlNPYmplY3QqKWltcCBvcmlnaW5Sb290T2JqZWN0OihQYXNzUmVmUHRy
PEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+KW9yaWdpblJvb3RPYmplY3Qgcm9vdE9iamVjdDoo
UGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0Pilyb290T2JqZWN0CiB7CiAgICAg
QVNTRVJUKGltcCk7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3
IEBACiAKICNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgSlNWYWx1
ZTsKQEAgLTQwLDMyICs0MCwzMiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB9CiB9CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgTlNPYmplY3QqIGdldEpTV3JhcHBlcihLSlM6OkpTT2JqZWN0Kik7
Ci0gICAgdm9pZCBhZGRKU1dyYXBwZXIoTlNPYmplY3QqIHdyYXBwZXIsIEtKUzo6SlNPYmplY3Qq
KTsKLSAgICB2b2lkIHJlbW92ZUpTV3JhcHBlcihLSlM6OkpTT2JqZWN0Kik7Ci0gICAgaWQgY3Jl
YXRlSlNXcmFwcGVyKEtKUzo6SlNPYmplY3QqLCBQYXNzUmVmUHRyPEtKUzo6QmluZGluZ3M6OlJv
b3RPYmplY3Q+IG9yaWdpbiwgUGFzc1JlZlB0cjxLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0PiBy
b290KTsKKyAgICBOU09iamVjdCogZ2V0SlNXcmFwcGVyKEpTQzo6SlNPYmplY3QqKTsKKyAgICB2
b2lkIGFkZEpTV3JhcHBlcihOU09iamVjdCogd3JhcHBlciwgSlNDOjpKU09iamVjdCopOworICAg
IHZvaWQgcmVtb3ZlSlNXcmFwcGVyKEpTQzo6SlNPYmplY3QqKTsKKyAgICBpZCBjcmVhdGVKU1dy
YXBwZXIoSlNDOjpKU09iamVjdCosIFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVj
dD4gb3JpZ2luLCBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IHJvb3QpOwog
fQogCiBAaW50ZXJmYWNlIFdlYlNjcmlwdE9iamVjdCAoUHJpdmF0ZSkKLSsgKGlkKV9jb252ZXJ0
VmFsdWVUb09iamNWYWx1ZTooS0pTOjpKU1ZhbHVlKil2YWx1ZSBvcmlnaW5Sb290T2JqZWN0OihL
SlM6OkJpbmRpbmdzOjpSb290T2JqZWN0KilvcmlnaW5Sb290T2JqZWN0IHJvb3RPYmplY3Q6KEtK
Uzo6QmluZGluZ3M6OlJvb3RPYmplY3QqKXJvb3RPYmplY3Q7Ci0rIChpZClzY3JpcHRPYmplY3RG
b3JKU09iamVjdDooSlNPYmplY3RSZWYpanNPYmplY3Qgb3JpZ2luUm9vdE9iamVjdDooS0pTOjpC
aW5kaW5nczo6Um9vdE9iamVjdCopb3JpZ2luUm9vdE9iamVjdCByb290T2JqZWN0OihLSlM6OkJp
bmRpbmdzOjpSb290T2JqZWN0Kilyb290T2JqZWN0OworKyAoaWQpX2NvbnZlcnRWYWx1ZVRvT2Jq
Y1ZhbHVlOihKU0M6OkpTVmFsdWUqKXZhbHVlIG9yaWdpblJvb3RPYmplY3Q6KEpTQzo6QmluZGlu
Z3M6OlJvb3RPYmplY3QqKW9yaWdpblJvb3RPYmplY3Qgcm9vdE9iamVjdDooSlNDOjpCaW5kaW5n
czo6Um9vdE9iamVjdCopcm9vdE9iamVjdDsKKysgKGlkKXNjcmlwdE9iamVjdEZvckpTT2JqZWN0
OihKU09iamVjdFJlZilqc09iamVjdCBvcmlnaW5Sb290T2JqZWN0OihKU0M6OkJpbmRpbmdzOjpS
b290T2JqZWN0KilvcmlnaW5Sb290T2JqZWN0IHJvb3RPYmplY3Q6KEpTQzo6QmluZGluZ3M6OlJv
b3RPYmplY3QqKXJvb3RPYmplY3Q7CiAtIChpZClfaW5pdDsKLS0gKGlkKV9pbml0V2l0aEpTT2Jq
ZWN0OihLSlM6OkpTT2JqZWN0KilpbXAgb3JpZ2luUm9vdE9iamVjdDooUGFzc1JlZlB0cjxLSlM6
OkJpbmRpbmdzOjpSb290T2JqZWN0PilvcmlnaW5Sb290T2JqZWN0IHJvb3RPYmplY3Q6KFBhc3NS
ZWZQdHI8S0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdD4pcm9vdE9iamVjdDsKLS0gKHZvaWQpX3Nl
dEltcDooS0pTOjpKU09iamVjdCopaW1wIG9yaWdpblJvb3RPYmplY3Q6KFBhc3NSZWZQdHI8S0pT
OjpCaW5kaW5nczo6Um9vdE9iamVjdD4pb3JpZ2luUm9vdE9iamVjdCByb290T2JqZWN0OihQYXNz
UmVmUHRyPEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+KXJvb3RPYmplY3Q7Ci0tICh2b2lkKV9z
ZXRPcmlnaW5Sb290T2JqZWN0OihQYXNzUmVmUHRyPEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+
KW9yaWdpblJvb3RPYmplY3QgYW5kUm9vdE9iamVjdDooUGFzc1JlZlB0cjxLSlM6OkJpbmRpbmdz
OjpSb290T2JqZWN0Pilyb290T2JqZWN0OworLSAoaWQpX2luaXRXaXRoSlNPYmplY3Q6KEpTQzo6
SlNPYmplY3QqKWltcCBvcmlnaW5Sb290T2JqZWN0OihQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6
OlJvb3RPYmplY3Q+KW9yaWdpblJvb3RPYmplY3Qgcm9vdE9iamVjdDooUGFzc1JlZlB0cjxKU0M6
OkJpbmRpbmdzOjpSb290T2JqZWN0Pilyb290T2JqZWN0OworLSAodm9pZClfc2V0SW1wOihKU0M6
OkpTT2JqZWN0KilpbXAgb3JpZ2luUm9vdE9iamVjdDooUGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdz
OjpSb290T2JqZWN0PilvcmlnaW5Sb290T2JqZWN0IHJvb3RPYmplY3Q6KFBhc3NSZWZQdHI8SlND
OjpCaW5kaW5nczo6Um9vdE9iamVjdD4pcm9vdE9iamVjdDsKKy0gKHZvaWQpX3NldE9yaWdpblJv
b3RPYmplY3Q6KFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4pb3JpZ2luUm9v
dE9iamVjdCBhbmRSb290T2JqZWN0OihQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmpl
Y3Q+KXJvb3RPYmplY3Q7CiAtICh2b2lkKV9pbml0aWFsaXplU2NyaXB0RE9NTm9kZUltcDsKLS0g
KEtKUzo6SlNPYmplY3QgKilfaW1wOworLSAoSlNDOjpKU09iamVjdCAqKV9pbXA7CiAtIChCT09M
KV9oYXNJbXA7Ci0tIChLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0Kilfcm9vdE9iamVjdDsKLS0g
KEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QqKV9vcmlnaW5Sb290T2JqZWN0OworLSAoSlNDOjpC
aW5kaW5nczo6Um9vdE9iamVjdCopX3Jvb3RPYmplY3Q7CistIChKU0M6OkJpbmRpbmdzOjpSb290
T2JqZWN0Kilfb3JpZ2luUm9vdE9iamVjdDsKIEBlbmQKIAogQGludGVyZmFjZSBXZWJTY3JpcHRP
YmplY3RQcml2YXRlIDogTlNPYmplY3QKIHsKIEBwdWJsaWMKLSAgICBLSlM6OkpTT2JqZWN0ICpp
bXA7Ci0gICAgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCogcm9vdE9iamVjdDsKLSAgICBLSlM6
OkJpbmRpbmdzOjpSb290T2JqZWN0KiBvcmlnaW5Sb290T2JqZWN0OworICAgIEpTQzo6SlNPYmpl
Y3QgKmltcDsKKyAgICBKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0KiByb290T2JqZWN0OworICAg
IEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3QqIG9yaWdpblJvb3RPYmplY3Q7CiAgICAgQk9PTCBp
c0NyZWF0ZWRCeURPTVdyYXBwZXI7CiB9CiBAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjUy
LDcgKzI1Miw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkKIHsKICAgICBt
eSAoJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGltcGxDbGFzc05hbWUs
ICRoYXNBdHRyaWJ1dGVzLCAkaW5saW5lZCkgPSBAXzsKIAotICAgIG15ICRuYW1lc3BhY2VNYXli
ZSA9ICgkaW5saW5lZCA/ICJLSlM6OiIgOiAiIik7CisgICAgbXkgJG5hbWVzcGFjZU1heWJlID0g
KCRpbmxpbmVkID8gIkpTQzo6IiA6ICIiKTsKIAogICAgIG15IEBnZXRPd25Qcm9wZXJ0eVNsb3RJ
bXBsID0gKCk7CiAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAkY2xhc3NOYW1lKCRwYXNzVHlwZSwgSlNET01XaW5kb3dTaGVsbCopO1xu
Iik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xh
c3NOYW1lKEtKUzo6SlNPYmplY3QqIHByb3RvdHlwZSwgJHBhc3NUeXBlIiAuIChJc1NWR1R5cGVO
ZWVkaW5nQ29udGV4dFBhcmFtZXRlcigkaW1wbENsYXNzTmFtZSkgPyAiLCBTVkdFbGVtZW50KiBj
b250ZXh0IiA6ICIiKSAuIik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICAkY2xhc3NOYW1lKEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZSwgJHBhc3NUeXBlIiAuIChJc1NW
R1R5cGVOZWVkaW5nQ29udGV4dFBhcmFtZXRlcigkaW1wbENsYXNzTmFtZSkgPyAiLCBTVkdFbGVt
ZW50KiBjb250ZXh0IiA6ICIiKSAuIik7XG4iKTsKICAgICB9CiAKICAgICAjIERlc3RydWN0b3IK
QEAgLTQyMywxMCArNDIzLDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBHZXR0ZXJz
CiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEtKUzo6RXhlY1N0YXRlKiwgY29uc3Qg
S0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEtKUzo6UHJvcGVydHlTbG90Jik7XG4iKTsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEtKUzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBLSlM6OlBy
b3BlcnR5U2xvdCYpO1xuIikgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhh
c0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3Vz
dG9tSW5kZXhHZXR0ZXIifSkgJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhh
c092ZXJyaWRpbmdOYW1lR2V0dGVyIn07Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgS0pTOjpKU1ZhbHVlKiBnZXRWYWx1ZVByb3BlcnR5KEtKUzo6RXhlY1N0YXRlKiwgaW50IHRv
a2VuKSBjb25zdDtcbiIpIGlmICRudW1BdHRyaWJ1dGVzID4gMCB8fCAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZUNvbnN0cnVjdG9yIn07Ci0gICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgYm9vbCBjdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoS0pTOjpFeGVj
U3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OlByb3BlcnR5U2xvdCYpO1xuIikg
aWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlT
bG90In07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIp
IGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0p
ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNPdmVycmlkaW5nTmFtZUdl
dHRlciJ9OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSog
Z2V0VmFsdWVQcm9wZXJ0eShKU0M6OkV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3Q7XG4iKSBp
ZiAkbnVtQXR0cmlidXRlcyA+IDAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
R2VuZXJhdGVDb25zdHJ1Y3RvciJ9OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IGJvb2wgY3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9OwogICAgIH0KIAog
ICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSBhbnkgd3JpdGFibGUgcHJvcGVydGllcwpAQCAtNDQzLDQ5
ICs0NDMsNDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIEdldHRlcnMKICAgICBpZiAo
JGhhc1NldHRlcikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwg
dm9pZCBwdXQoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgS0pTOjpKU1ZhbHVlKiwgS0pTOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCBwdXQoS0pTOjpFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEtKUzo6SlNWYWx1ZSopO1xuIikgaWYgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5kZXhTZXR0ZXIifTsKLSAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHB1dFZhbHVlUHJvcGVydHkoS0pTOjpF
eGVjU3RhdGUqLCBpbnQsIEtKUzo6SlNWYWx1ZSopO1xuIikgaWYgJGhhc1JlYWRXcml0ZVByb3Bl
cnRpZXM7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBjdXN0b21QdXQo
S0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OkpTVmFsdWUqLCBL
SlM6OlB1dFByb3BlcnR5U2xvdCYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICB2aXJ0dWFsIHZvaWQgcHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSosIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgcHV0
KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUqKTtc
biIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4U2V0
dGVyIn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBwdXRWYWx1ZVBy
b3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgaW50LCBKU0M6OkpTVmFsdWUqKTtcbiIpIGlmICRoYXNS
ZWFkV3JpdGVQcm9wZXJ0aWVzOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJv
b2wgY3VzdG9tUHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlND
OjpKU1ZhbHVlKiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn07CiAgICAgfQogCiAgICAgIyBD
bGFzcyBpbmZvCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGNvbnN0IEtK
Uzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9XG4iKTsK
LSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBjb25zdCBLSlM6OkNsYXNzSW5m
byBzX2luZm87XG5cbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBj
b25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsg
fVxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3QgSlNDOjpD
bGFzc0luZm8gc19pbmZvO1xuXG4iKTsKIAogICAgICMgQ3VzdG9tIG1hcmsgZnVuY3Rpb24KICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7XG5cbiIpIGlm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU1hcmtGdW5jdGlvbiJ9Owog
CiAgICAgIyBDdXN0b20gcHVzaEV2ZW50SGFuZGxlclNjb3BlIGZ1bmN0aW9uCi0gICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgcHVzaEV2ZW50SGFuZGxlclNjb3BlKEtK
Uzo6RXhlY1N0YXRlKiwgS0pTOjpTY29wZUNoYWluJikgY29uc3Q7XG5cbiIpIGlmICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1c2hFdmVudEhhbmRsZXJTY29wZSJ9Owor
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIHB1c2hFdmVudEhhbmRs
ZXJTY29wZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U2NvcGVDaGFpbiYpIGNvbnN0O1xuXG4iKSBp
ZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21QdXNoRXZlbnRIYW5kbGVy
U2NvcGUifTsKIAogICAgICMgQ3VzdG9tIGNhbGwgZnVuY3Rpb25zCi0gICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB2aXJ0dWFsIEtKUzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoS0pTOjpDYWxs
RGF0YSYpO1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21D
YWxsIn07CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIEpTQzo6Q2FsbFR5
cGUgZ2V0Q2FsbERhdGEoSlNDOjpDYWxsRGF0YSYpO1xuXG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21DYWxsIn07CiAKICAgICAjIEN1c3RvbSBkZWxldGVQcm9w
ZXJ0eSBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBib29s
IGRlbGV0ZVByb3BlcnR5KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJik7
XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21EZWxldGVQcm9w
ZXJ0eSJ9OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7XG4iKSBp
ZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21EZWxldGVQcm9wZXJ0eSJ9
OwogCiAgICAgIyBDdXN0b20gZ2V0UHJvcGVydHlOYW1lcyBmdW5jdGlvbgotICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnR5TmFtZXMoS0pTOjpFeGVj
U3RhdGUqLCBLSlM6OlByb3BlcnR5TmFtZUFycmF5Jik7XG4iKSBpZiAoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0UHJvcGVydHlOYW1lcyJ9IHx8ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5kZXhHZXR0ZXIifSk7Ci0gICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBib29sIGN1c3RvbUdldFByb3BlcnR5TmFtZXMoS0pTOjpFeGVjU3Rh
dGUqLCBLSlM6OlByb3BlcnR5TmFtZUFycmF5Jik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn07CisgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmKTtcbiIpIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn0gfHwgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdldHRlciJ9KTsKKyAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIGJvb2wgY3VzdG9tR2V0UHJvcGVydHlOYW1lcyhKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifTsKIAogICAgICMgQ3VzdG9tIGdldFBy
b3BlcnR5QXR0cmlidXRlcyBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
dmlydHVhbCBib29sIGdldFByb3BlcnR5QXR0cmlidXRlcyhLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0
IEtKUzo6SWRlbnRpZmllciYsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdDtcbiIpIGlmICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5QXR0cmlidXRl
cyJ9OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBib29sIGdldFByb3Bl
cnR5QXR0cmlidXRlcyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIHVu
c2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdDtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5QXR0cmlidXRlcyJ9OwogCiAgICAgIyBDdXN0b20g
ZGVmaW5lR2V0dGVyIGZ1bmN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0
dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEtKUzo6SlNPYmplY3QqIGdldHRlckZ1bmN0aW9uKTtcbiIpIGlm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbURlZmluZUdldHRlciJ9Owor
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIGRlZmluZUdldHRlcihK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6
OkpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbik7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21EZWZpbmVHZXR0ZXIifTsKIAogICAgICMgQ3VzdG9tIGRlZmluZVNl
dHRlciBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lk
IGRlZmluZVNldHRlcihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBLSlM6OkpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbik7XG4iKSBpZiAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21EZWZpbmVTZXR0ZXIifTsKKyAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVTZXR0ZXIoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU09iamVj
dCogc2V0dGVyRnVuY3Rpb24pO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tRGVmaW5lU2V0dGVyIn07CiAKICAgICAjIEN1c3RvbSBsb29rdXBHZXR0ZXIgZnVu
Y3Rpb24KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgS0pTOjpKU1ZhbHVl
KiBsb29rdXBHZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Mb29rdXBHZXR0ZXIifTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwg
SlNDOjpKU1ZhbHVlKiBsb29rdXBHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7XG4iKSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21Mb29rdXBHZXR0ZXIifTsKIAogICAgICMgQ3VzdG9tIGxvb2t1cFNldHRl
ciBmdW5jdGlvbgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBLSlM6OkpT
VmFsdWUqIGxvb2t1cFNldHRlcihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUxvb2t1cFNldHRlciJ9OworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmly
dHVhbCBKU0M6OkpTVmFsdWUqIGxvb2t1cFNldHRlcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUxvb2t1cFNldHRlciJ9OwogCiAgICAgIyBDb25zdHJ1Y3RvciBv
YmplY3QgZ2V0dGVyCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgS0pTOjpK
U1ZhbHVlKiBnZXRDb25zdHJ1Y3RvcihLSlM6OkV4ZWNTdGF0ZSopO1xuIikgaWYgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVDb25zdHJ1Y3RvciJ9OworICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSogZ2V0Q29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkdlbmVyYXRlQ29uc3RydWN0b3IifTsKIAogICAgIG15ICRudW1DdXN0b21GdW5jdGlvbnMgPSAw
OwogICAgIG15ICRudW1DdXN0b21BdHRyaWJ1dGVzID0gMDsKQEAgLTUzMSwxNSArNTMxLDE1IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHsk
ZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0pIHsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogIiAuICRjb2RlR2VuZXJh
dG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAiKEtKUzo6RXhl
Y1N0YXRlKikgY29uc3Q7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIEpTQzo6SlNWYWx1ZSogIiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAiKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7XG4iKTsK
ICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5Lykgewot
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgc2V0IiAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkg
LiAiKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU1ZhbHVlKik7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHNldCIgLiAkY29kZUdlbmVyYXRv
ci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gIihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSopO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tR2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIEtKUzo6SlNWYWx1ZSogIiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAiKEtKUzo6RXhlY1N0YXRlKikgY29uc3Q7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSogIiAu
ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkg
LiAiKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8p
IHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHNl
dCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUpIC4gIihLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNWYWx1ZSopO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gJGNvZGVHZW5l
cmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUqKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtNTU0LDcgKzU1NCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30p
IHsKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbSJ9KSB7CiAgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50
YXRpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJ
bXBsZW1lbnRhdGlvbkZ1bmN0aW9uIn0gfHwgJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOwotICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgS0pTOjpKU1ZhbHVlKiAiIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1l
IC4gIihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6QXJnTGlzdCYpO1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUqICIgLiAkZnVu
Y3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgLiAiKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpB
cmdMaXN0Jik7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTU4Niwy
NCArNTg2LDI0IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyBJbmRleCBnZXR0ZXIKICAg
ICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8
fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdldHRlciJ9
KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEtKUzo6SlNWYWx1
ZSogaW5kZXhHZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBj
b25zdCBLSlM6OlByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSogaW5kZXhHZXR0ZXIoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBjb25zdCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7
CiAgICAgfQogCiAgICAgIyBJbmRleCBzZXR0ZXIKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5kZXhTZXR0ZXIifSkgewotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHZvaWQgaW5kZXhTZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCB1bnNp
Z25lZCBpbmRleCwgS0pTOjpKU1ZhbHVlKik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB2b2lkIGluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgaW5k
ZXgsIEpTQzo6SlNWYWx1ZSopO1xuIik7CiAgICAgfQogICAgICMgTmFtZSBnZXR0ZXIKICAgICBp
ZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTmFtZUdldHRlciJ9IHx8ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc092ZXJyaWRpbmdOYW1lR2V0dGVyIn0p
IHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZhdGU6XG4iKTsKLSAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUo
S0pTOjpFeGVjU3RhdGUqLCAkaW1wbENsYXNzTmFtZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYp
O1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEtKUzo6SlNW
YWx1ZSogbmFtZUdldHRlcihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYs
IGNvbnN0IEtKUzo6UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUoSlNDOjpFeGVjU3RhdGUq
LCAkaW1wbENsYXNzTmFtZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpO1xuIik7CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSogbmFtZUdldHRl
cihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIGNvbnN0IEpTQzo6UHJv
cGVydHlTbG90Jik7XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifTtc
blxuIik7CiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5saW5l
R2V0T3duUHJvcGVydHlTbG90In0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkFM
V0FZU19JTkxJTkUgYm9vbCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChLSlM6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEtKUzo6
UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJB
TFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
e1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVy
dHlTbG90Qm9keSgkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW1wbENs
YXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAxKSk7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJ9XG5cbiIpOwpAQCAtNjExLDU2ICs2MTEsNTYgQEAgc3ViIEdlbmVyYXRlSGVhZGVy
CiAKICAgICBpZiAoISRoYXNQYXJlbnQgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiR2VuZXJhdGVUb0pTIn0pIHsKICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiS0pTOjpKU1ZhbHVlKiB0b0pTKEtKUzo6RXhlY1N0YXRl
KiwgSlNTVkdQT0RUeXBlV3JhcHBlcjwkcG9kVHlwZT4qLCBTVkdFbGVtZW50KiBjb250ZXh0KTtc
biIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSogdG9K
UyhKU0M6OkV4ZWNTdGF0ZSosIEpTU1ZHUE9EVHlwZVdyYXBwZXI8JHBvZFR5cGU+KiwgU1ZHRWxl
bWVudCogY29udGV4dCk7XG4iKTsKICAgICAgICAgfSBlbHNpZiAoSXNTVkdUeXBlTmVlZGluZ0Nv
bnRleHRQYXJhbWV0ZXIoJGltcGxDbGFzc05hbWUpKSB7Ci0gICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiS0pTOjpKU1ZhbHVlKiB0b0pTKEtKUzo6RXhlY1N0YXRlKiwgJHBhc3NUeXBl
LCBTVkdFbGVtZW50KiBjb250ZXh0KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIkpTQzo6SlNWYWx1ZSogdG9KUyhKU0M6OkV4ZWNTdGF0ZSosICRwYXNzVHlwZSwgU1ZH
RWxlbWVudCogY29udGV4dCk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICJLSlM6OkpTVmFsdWUqIHRvSlMoS0pTOjpFeGVjU3RhdGUqLCAk
cGFzc1R5cGUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpK
U1ZhbHVlKiB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgJHBhc3NUeXBlKTtcbiIpOwogICAgICAgICB9
CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZSIpIHsKICAgICAgICAgICAgICMg
UmVzb2x2ZSBhbWJpZ3VpdHkgd2l0aCBFdmVudFRhcmdldCB0aGF0IG90aGVyd2lzZSBleGlzdHMu
Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiaW5saW5lIEtKUzo6SlNWYWx1ZSog
dG9KUyhLSlM6OkV4ZWNTdGF0ZSogZXhlYywgRXZlbnRUYXJnZXROb2RlKiBub2RlKSB7IHJldHVy
biB0b0pTKGV4ZWMsIHN0YXRpY19jYXN0PE5vZGUqPihub2RlKSk7IH1cbiIpOworICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgImlubGluZSBKU0M6OkpTVmFsdWUqIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEV2ZW50VGFyZ2V0Tm9kZSogbm9kZSkgeyByZXR1cm4gdG9KUyhleGVj
LCBzdGF0aWNfY2FzdDxOb2RlKj4obm9kZSkpOyB9XG4iKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBpZiAoISRoYXNQYXJlbnQgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2Vu
ZXJhdGVOYXRpdmVDb252ZXJ0ZXIifSkgewogICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIkcG9kVHlwZSB0byR7aW50ZXJmYWNlTmFtZX0o
S0pTOjpKU1ZhbHVlKik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIk
cG9kVHlwZSB0byR7aW50ZXJmYWNlTmFtZX0oSlNDOjpKU1ZhbHVlKik7XG4iKTsKICAgICAgICAg
fSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5vZGVGaWx0ZXIiKSB7Ci0gICAgICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiB0b05vZGVGaWx0ZXIo
S0pTOjpKU1ZhbHVlKik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJQ
YXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHRvTm9kZUZpbHRlcihKU0M6OkpTVmFsdWUqKTtcbiIpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiRpbXBs
Q2xhc3NOYW1lKiB0byR7aW50ZXJmYWNlTmFtZX0oS0pTOjpKU1ZhbHVlKik7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIkaW1wbENsYXNzTmFtZSogdG8ke2ludGVyZmFj
ZU5hbWV9KEpTQzo6SlNWYWx1ZSopO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJOb2RlIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiRWxlbWVudCIgb3IgJGlu
dGVyZmFjZU5hbWUgZXEgIlRleHQiKSB7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiS0pTOjpKU1ZhbHVlKiB0b0pTTmV3bHlDcmVhdGVkKEtKUzo6RXhlY1N0YXRlKiwgJGludGVy
ZmFjZU5hbWUqKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6
SlNWYWx1ZSogdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosICRpbnRlcmZhY2VOYW1l
Kik7XG4iKTsKICAgICAgICAgfQogICAgIH0KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4i
KTsKIAogICAgICMgQWRkIHByb3RvdHlwZSBkZWNsYXJhdGlvbiAtLSBjb2RlIGFkb3B0ZWQgZnJv
bSB0aGUgS0pTX0RFRklORV9QUk9UT1RZUEUgYW5kIEtKU19ERUZJTkVfUFJPVE9UWVBFX1dJVEhf
UFJPVE9UWVBFIG1hY3JvcwotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAke2NsYXNz
TmFtZX1Qcm90b3R5cGUgOiBwdWJsaWMgS0pTOjpKU09iamVjdCB7XG4iKTsKKyAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiY2xhc3MgJHtjbGFzc05hbWV9UHJvdG90eXBlIDogcHVibGljIEpTQzo6
SlNPYmplY3Qge1xuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwog
ICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBLSlM6OkpTT2JqZWN0KiBzZWxmKCk7XG4iKTsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2Vs
ZigpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCk7XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBLSlM6OkpTT2JqZWN0KiBzZWxmKEtKUzo6RXhlY1N0YXRlKik7
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CiAgICAgfQotICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgdmlydHVhbCBjb25zdCBLSlM6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkg
Y29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfVxuIik7Ci0gICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8gc19pbmZvO1xuIik7CisgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87XG4iKTsKICAgICBp
ZiAoJG51bUZ1bmN0aW9ucyA+IDAgfHwgJG51bUNvbnN0YW50cyA+IDApIHsKLSAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blByb3BlcnR5U2xvdChLSlM6OkV4ZWNT
dGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIEtKUzo6UHJvcGVydHlTbG90Jik7XG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlT
bG90Jik7XG4iKTsKICAgICB9CiAgICAgaWYgKCRudW1Db25zdGFudHMgbmUgMCkgewotICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogZ2V0VmFsdWVQcm9wZXJ0
eShLSlM6OkV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3Q7XG4iKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoSlNDOjpF
eGVjU3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0O1xuIik7CiAgICAgfQogICAgIGlmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENhY2hlIn0pIHsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUoKSA6IEtKUzo6SlNPYmpl
Y3QoSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKS0+bnVsbFByb3RvU3RydWN0
dXJlSUQpIHsgfVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9UHJvdG90eXBlKCkgOiBKU0M6OkpTT2JqZWN0KEpTRE9NV2luZG93QmFzZTo6Y29tbW9u
SlNHbG9iYWxEYXRhKCktPm51bGxQcm90b1N0cnVjdHVyZUlEKSB7IH1cbiIpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90
eXBlKEtKUzo6RXhlY1N0YXRlKiBleGVjKVxuIik7Ci0gICAgICAgIGlmICgkaGFzUGFyZW50ICYm
ICRwYXJlbnRDbGFzc05hbWUgbmUgIktKUzo6RE9NTm9kZUZpbHRlciIpIHsKLSAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIDogS0pTOjpKU09iamVjdCgke3BhcmVudENs
YXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYoZXhlYykpIHsgfVxuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiBl
eGVjKVxuIik7CisgICAgICAgIGlmICgkaGFzUGFyZW50ICYmICRwYXJlbnRDbGFzc05hbWUgbmUg
IkpTQzo6RE9NTm9kZUZpbHRlciIpIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgICAgIDogSlNDOjpKU09iamVjdCgke3BhcmVudENsYXNzTmFtZX1Qcm90b3R5cGU6OnNl
bGYoZXhlYykpIHsgfVxuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICA6IEtKUzo6SlNPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkgeyB9XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgIDogSlNDOjpKU09iamVjdChleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSB7IH1cbiIpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC02NzAsNyArNjcwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAk
ZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICAgICBteSAkZnVu
Y3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAiUHJv
dG90eXBlRnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPm5hbWUpOwotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIktKUzo6
SlNWYWx1ZSogJHtmdW5jdGlvbk5hbWV9KEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU09iamVjdCos
IEtKUzo6SlNWYWx1ZSosIGNvbnN0IEtKUzo6QXJnTGlzdCYpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlKiAke2Z1bmN0aW9uTmFtZX0oSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKiwgY29uc3QgSlNDOjpBcmdM
aXN0Jik7XG4iKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzI0LDcgKzcyNCw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICBAaW1wbENvbnRlbnQgPSAoKTsKIAotICAgIHB1
c2goQGltcGxDb250ZW50LCAiXG51c2luZyBuYW1lc3BhY2UgS0pTO1xuXG4iKTsKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxudXNpbmcgbmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwogCiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKCRjbGFzc05hbWUpXG5cbiIpOwpA
QCAtODY3LDcgKzg2Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihF
eGVjU3RhdGUqIGV4ZWMpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IElkZW50aWZpZXIq
IHByb3RvdHlwZUlkZW50aWZpZXIgPSBuZXcgSWRlbnRpZmllcihleGVjLCBcIltbJHtjbGFzc05h
bWV9LnByb3RvdHlwZV1dXCIpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBLSlM6OmNhY2hlR2xvYmFsT2JqZWN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZT4oZXhl
YywgKnByb3RvdHlwZUlkZW50aWZpZXIpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBKU0M6OmNhY2hlR2xvYmFsT2JqZWN0PCR7Y2xhc3NOYW1lfVByb3RvdHlw
ZT4oZXhlYywgKnByb3RvdHlwZUlkZW50aWZpZXIpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKICAgICB9CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01X
aW5kb3ciKSB7CkBAIC0xMDYwLDEwICsxMDYwLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJHBvZFR5cGUgaW1wKCppbXBs
KCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICIiLCAiaW1wLiRnZXR0ZXJGdW5jdGlv
bk5hbWUoZWMpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgSlNDOjpKU1ZhbHVlKiByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1Zh
bHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICIiLCAiaW1wLiRn
ZXR0ZXJGdW5jdGlvbk5hbWUoZWMpIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1w
bCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVl
Q29udmVyc2lvbiwgImltcC0+JGdldHRlckZ1bmN0aW9uTmFtZShlYykiKSAuICI7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU0M6OkpT
VmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJp
bXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUoZWMpIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpOwpAQCAtMTIwOCw3ICsxMjA4LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiR2VuZXJhdGVDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiSlNWYWx1ZSogJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpXG57XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0
IElkZW50aWZpZXIqIGNvbnN0cnVjdG9ySWRlbnRpZmllciA9IG5ldyBJZGVudGlmaWVyKGV4ZWMs
IFwiW1ske2ludGVyZmFjZU5hbWV9LmNvbnN0cnVjdG9yXV1cIik7XG4iKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEtKUzo6Y2FjaGVHbG9iYWxPYmplY3Q8JHtjbGFz
c05hbWV9Q29uc3RydWN0b3I+KGV4ZWMsICpjb25zdHJ1Y3RvcklkZW50aWZpZXIpO1xuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU0M6OmNhY2hlR2xvYmFsT2Jq
ZWN0PCR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yPihleGVjLCAqY29uc3RydWN0b3JJZGVudGlmaWVy
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCkBA
IC0xMzQ4LDExICsxMzQ4LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICBp
ZiAoKCEkaGFzUGFyZW50IG9yICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVy
YXRlVG9KUyJ9KSBhbmQgIVVzZXNNYW51YWxUb0pTSW1wbGVtZW50YXRpb24oJGltcGxDbGFzc05h
bWUpKSB7CiAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJLSlM6OkpTVmFsdWUqIHRvSlMoS0pTOjpFeGVjU3RhdGUqIGV4ZWMsIEpTU1ZHUE9E
VHlwZVdyYXBwZXI8JHBvZFR5cGU+KiBvYmosIFNWR0VsZW1lbnQqIGNvbnRleHQpXG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpKU1ZhbHVlKiB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU1NWR1BPRFR5cGVXcmFwcGVyPCRwb2RUeXBlPiogb2JqLCBTVkdFbGVt
ZW50KiBjb250ZXh0KVxuIik7CiAgICAgICAgIH0gZWxzaWYgKElzU1ZHVHlwZU5lZWRpbmdDb250
ZXh0UGFyYW1ldGVyKCRpbXBsQ2xhc3NOYW1lKSkgewotICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiS0pTOjpKU1ZhbHVlKiB0b0pTKEtKUzo6RXhlY1N0YXRlKiBleGVjLCAkcGFzc1R5
cGUgb2JqLCBTVkdFbGVtZW50KiBjb250ZXh0KVxuIik7CisgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJKU0M6OkpTVmFsdWUqIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsICRwYXNz
VHlwZSBvYmosIFNWR0VsZW1lbnQqIGNvbnRleHQpXG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiS0pTOjpKU1ZhbHVlKiB0b0pTKEtKUzo6RXhl
Y1N0YXRlKiBleGVjLCAkcGFzc1R5cGUgb2JqKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIkpTQzo6SlNWYWx1ZSogdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgJHBhc3NU
eXBlIG9iailcbiIpOwogICAgICAgICB9CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKQEAgLTEzNjgsOSArMTM2OCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAK
ICAgICBpZiAoKCEkaGFzUGFyZW50IG9yICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkdlbmVyYXRlTmF0aXZlQ29udmVydGVyIn0pIGFuZCAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tTmF0aXZlQ29udmVydGVyIn0pIHsKICAgICAgICAgaWYgKCRwb2RUeXBl
KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRwb2RUeXBlIHRvJHtpbnRlcmZh
Y2VOYW1lfShLSlM6OkpTVmFsdWUqIHZhbClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIkcG9kVHlwZSB0byR7aW50ZXJmYWNlTmFtZX0oSlNDOjpKU1ZhbHVlKiB2YWwpXG4i
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJGlt
cGxDbGFzc05hbWUqIHRvJHtpbnRlcmZhY2VOYW1lfShLSlM6OkpTVmFsdWUqIHZhbClcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkaW1wbENsYXNzTmFtZSogdG8ke2ludGVy
ZmFjZU5hbWV9KEpTQzo6SlNWYWx1ZSogdmFsKVxuIik7CiAgICAgICAgIH0KIAogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMTQxMyw3ICsxNDEzLDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQogCiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAkaW5kZW50IC4gInJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIgLiAkaW5kZW50IC4gIktKUzo6SlNWYWx1
ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSwgMSwg
JGltcGxDbGFzc05hbWUsICIiLCAkZnVuY3Rpb25TdHJpbmcpIC4gIjtcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuIiAuICRpbmRlbnQgLiAiSlNDOjpKU1ZhbHVlKiByZXN1bHQg
PSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAxLCAkaW1wbENsYXNz
TmFtZSwgIiIsICRmdW5jdGlvblN0cmluZykgLiAiO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkaW5kZW50IC4gInNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRm
dW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAKICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Cklu
ZGV4OiBXZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYnJp
ZGdlL05QX2pzb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQAogI2lu
Y2x1ZGUgPGtqcy9pbnRlcnByZXRlci5oPgogCiB1c2luZyBXZWJDb3JlOjpTdHJpbmc7Ci11c2lu
ZyBuYW1lc3BhY2UgS0pTOwotdXNpbmcgbmFtZXNwYWNlIEtKUzo6QmluZGluZ3M7Cit1c2luZyBu
YW1lc3BhY2UgSlNDOwordXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGluZ3M7CiAKIHN0YXRpYyB2
b2lkIGdldExpc3RGcm9tVmFyaWFudEFyZ3MoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBOUFZhcmlh
bnQqIGFyZ3MsIHVuc2lnbmVkIGFyZ0NvdW50LCBSb290T2JqZWN0KiByb290T2JqZWN0LCBBcmdM
aXN0JiBhTGlzdCkKIHsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuaAkocmV2aXNpb24gMzYyNjIpCisr
KyBXZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBACiAjaW5jbHVkZSAibnBydW50aW1lX2ludGVybmFsLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBK
U09iamVjdDsKICAgICBuYW1lc3BhY2UgQmluZGluZ3MgewogICAgICAgICBjbGFzcyBSb290T2Jq
ZWN0OwpAQCAtNDMsMTEgKzQzLDExIEBAIGV4dGVybiBOUENsYXNzKiBOUFNjcmlwdE9iamVjdENs
YXNzOwogc3RydWN0IEphdmFTY3JpcHRPYmplY3QKIHsKICAgICBOUE9iamVjdCBvYmplY3Q7Ci0g
ICAgS0pTOjpKU09iamVjdCogaW1wOwotICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QqIHJv
b3RPYmplY3Q7CisgICAgSlNDOjpKU09iamVjdCogaW1wOworICAgIEpTQzo6QmluZGluZ3M6OlJv
b3RPYmplY3QqIHJvb3RPYmplY3Q7CiB9OwogCi1OUE9iamVjdCogX05QTl9DcmVhdGVTY3JpcHRP
YmplY3QoTlBQIG5wcCwgS0pTOjpKU09iamVjdCosIFBhc3NSZWZQdHI8S0pTOjpCaW5kaW5nczo6
Um9vdE9iamVjdD4gcm9vdE9iamVjdCk7CitOUE9iamVjdCogX05QTl9DcmVhdGVTY3JpcHRPYmpl
Y3QoTlBQIG5wcCwgSlNDOjpKU09iamVjdCosIFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9v
dE9iamVjdD4gcm9vdE9iamVjdCk7CiBOUE9iamVjdCogX05QTl9DcmVhdGVOb1NjcmlwdE9iamVj
dCh2b2lkKTsKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDog
V2ViQ29yZS9icmlkZ2UvbnBydW50aW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRn
ZS9ucHJ1bnRpbWUuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYnJpZGdlL25wcnVu
dGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKLXVzaW5nIG5hbWVzcGFj
ZSBLSlM6OkJpbmRpbmdzOwordXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGluZ3M7CiAKLXR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8S0pTOjpVU3RyaW5nOjpSZXA+LCBQcml2YXRlSWRlbnRpZmllcio+
IFN0cmluZ0lkZW50aWZpZXJNYXA7Cit0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEpTQzo6VVN0cmlu
Zzo6UmVwPiwgUHJpdmF0ZUlkZW50aWZpZXIqPiBTdHJpbmdJZGVudGlmaWVyTWFwOwogCiBzdGF0
aWMgU3RyaW5nSWRlbnRpZmllck1hcCogZ2V0U3RyaW5nSWRlbnRpZmllck1hcCgpCiB7CkBAIC02
Niw3ICs2Niw3IEBAIE5QSWRlbnRpZmllciBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoY28KICAg
ICBpZiAobmFtZSkgewogICAgICAgICBQcml2YXRlSWRlbnRpZmllciogaWRlbnRpZmllciA9IDA7
CiAgICAgICAgIAotICAgICAgICBLSlM6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICAgICAgSlND
OjpKU0xvY2sgbG9jayhmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBpZGVudGlmaWVyID0gZ2V0
U3RyaW5nSWRlbnRpZmllck1hcCgpLT5nZXQoaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIobmFt
ZSkudXN0cmluZygpLnJlcCgpKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gMCkgewpJbmRl
eDogV2ViQ29yZS9icmlkZ2UvcnVudGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlk
Z2UvcnVudGltZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJxdF9pbnN0
YW5jZS5oIgogI2VuZGlmCiAKLW5hbWVzcGFjZSBLSlMgeyBuYW1lc3BhY2UgQmluZGluZ3Mgewor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIEFycmF5OjpBcnJheShQYXNz
UmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QpCiAgICAgOiBfcm9vdE9iamVjdChyb290T2Jq
ZWN0KQpAQCAtMTE4LDQgKzExOCw0IEBAIFJvb3RPYmplY3QqIEluc3RhbmNlOjpyb290T2JqZWN0
KCkgY29uc3QKICAgICByZXR1cm4gX3Jvb3RPYmplY3QgJiYgX3Jvb3RPYmplY3QtPmlzVmFsaWQo
KSA/IF9yb290T2JqZWN0LmdldCgpIDogMDsKIH0KIAotfSB9IC8vIG5hbWVzcGFjZSBLSlM6OkJp
bmRpbmdzCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QmluZGluZ3MKSW5kZXg6IFdlYkNvcmUvYnJp
ZGdlL3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9ydW50aW1lLmgJKHJl
dmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlkZ2UvcnVudGltZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBLSlMgIHsKK25hbWVzcGFjZSBKU0MgIHsKIAog
Y2xhc3MgQXJnTGlzdDsKIGNsYXNzIElkZW50aWZpZXI7CkBAIC0xNTksNiArMTU5LDYgQEAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBGaQogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgQmluZGluZ3MKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAkocmV2aXNpb24gMzYyNjIpCisr
KyBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNyBAQAogI2luY2x1ZGUgPGtqcy9BcnJheVByb3RvdHlwZS5oPgogI2luY2x1ZGUgPGtq
cy9FcnJvci5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFycmF5
IiwgJkpTQXJyYXk6OmluZm8sIDAsIDAgfTsKIApJbmRleDogV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9hcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAko
cmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDxranMvSlNPYmplY3QuaD4KICNp
bmNsdWRlICJydW50aW1lLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAg
ICAgCiBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNPYmplY3QgewogcHVibGljOgpAQCAt
NjAsNiArNjAsNiBAQCBwcml2YXRlOgogICAgIE93blB0cjxCaW5kaW5nczo6QXJyYXk+IF9hcnJh
eTsKIH07CiAgICAgCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gUlVOVElNRV9BUlJBWV9IXwpJbmRleDogV2ViQ29yZS9icmlkZ2UvcnVudGltZV9t
ZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNw
cAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxranMvRXJyb3IuaD4K
ICNpbmNsdWRlIDxranMvSlNHbG9iYWxPYmplY3QuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1l
c3BhY2UgSlNDIHsKIAogdXNpbmcgbmFtZXNwYWNlIEJpbmRpbmdzOwogCkluZGV4OiBXZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9tZXRob2QuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPGtq
cy9JbnRlcm5hbEZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCi1uYW1lc3Bh
Y2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBSdW50aW1lTWV0aG9kIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgpAQCAtNDUsNiArNDUsNiBAQCBwcml2YXRlOgog
ICAgIE93blB0cjxCaW5kaW5nczo6TWV0aG9kTGlzdD4gX21ldGhvZExpc3Q7CiB9OwogCi19IC8v
IG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5j
bHVkZSA8a2pzL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8a2pzL09iamVjdFByb3RvdHlw
ZS5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5n
IG5hbWVzcGFjZSBCaW5kaW5nczsKIAogY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVPYmplY3RJbXA6
OnNfaW5mbyA9IHsgIlJ1bnRpbWVPYmplY3QiLCAwLCAwLCAwIH07CkluZGV4OiBXZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgInJ1bnRp
bWUuaCIKICNpbmNsdWRlIDxranMvSlNPYmplY3QuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgUnVudGltZU9iamVjdEltcCA6IHB1YmxpYyBKU09iamVjdCB7
CiBwdWJsaWM6CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAJKHJldmlzaW9uIDM2MjYyKQor
KysgV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAKLW5hbWVzcGFjZSBLSlMgeyBuYW1lc3BhY2UgQmluZGluZ3MgeworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIC8vIFRoaXMgY29kZSBhdHRlbXB0
cyB0byBzb2x2ZSB0d28gcHJvYmxlbXM6ICgxKSBwbHVnLWlucyBsZWFraW5nIHJlZmVyZW5jZXMg
dG8gCiAvLyBKUyBhbmQgdGhlIERPTTsgKDIpIHBsdWctaW5zIGhvbGRpbmcgc3RhbGUgcmVmZXJl
bmNlcyB0byBKUyBhbmQgdGhlIERPTS4gUHJldmlvdXMgCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBSb290T2JqZWN0OjppbnZhbGlkYXRlKCkKIAogICAgIFByb3RlY3RDb3VudFNldDo6aXRlcmF0
b3IgZW5kID0gbV9wcm90ZWN0Q291bnRTZXQuZW5kKCk7CiAgICAgZm9yIChQcm90ZWN0Q291bnRT
ZXQ6Oml0ZXJhdG9yIGl0ID0gbV9wcm90ZWN0Q291bnRTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICBLSlM6OmdjVW5wcm90ZWN0KGl0LT5maXJzdCk7CisgICAgICAgIEpTQzo6
Z2NVbnByb3RlY3QoaXQtPmZpcnN0KTsKICAgICBtX3Byb3RlY3RDb3VudFNldC5jbGVhcigpOwog
CiAgICAgcm9vdE9iamVjdFNldCgpLT5yZW1vdmUodGhpcyk7CkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBSb290T2JqZWN0OjpnY1Byb3RlY3QoSlNPYmplY3QqIGpzTwogICAgIEFTU0VSVChtX2lz
VmFsaWQpOwogICAgIAogICAgIGlmICghbV9wcm90ZWN0Q291bnRTZXQuY29udGFpbnMoanNPYmpl
Y3QpKQotICAgICAgICBLSlM6OmdjUHJvdGVjdChqc09iamVjdCk7CisgICAgICAgIEpTQzo6Z2NQ
cm90ZWN0KGpzT2JqZWN0KTsKICAgICBtX3Byb3RlY3RDb3VudFNldC5hZGQoanNPYmplY3QpOwog
fQogCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBSb290T2JqZWN0OjpnY1VucHJvdGVjdChKU09i
amVjdCogagogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9wcm90ZWN0Q291bnRTZXQuY291
bnQoanNPYmplY3QpID09IDEpCi0gICAgICAgIEtKUzo6Z2NVbnByb3RlY3QoanNPYmplY3QpOwor
ICAgICAgICBKU0M6OmdjVW5wcm90ZWN0KGpzT2JqZWN0KTsKICAgICBtX3Byb3RlY3RDb3VudFNl
dC5yZW1vdmUoanNPYmplY3QpOwogfQogCkBAIC0xNzAsNCArMTcwLDQgQEAgdm9pZCBSb290T2Jq
ZWN0OjpyZW1vdmVSdW50aW1lT2JqZWN0KFJ1bgogICAgIG1fcnVudGltZU9iamVjdHMucmVtb3Zl
KG9iamVjdCk7CiB9CiAKLX0gfSAvLyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5ncworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkJpbmRpbmdzCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24g
MzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIEludGVycHJldGVyOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CkBAIC04NCw2ICs4NCw2
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCiAKLX0gLy8gbmFtZXNwYWNl
IEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDogV2ViQ29yZS9icmlkZ2Uv
dGVzdGJpbmRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS90ZXN0YmluZGlu
Z3MuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw4ICszMzMsOCBAQCBzdGF0aWMgTlBDbGFzcyAqbXlG
dW5jdGlvblB0cnMgPSAmX215RnVuCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Ci11c2lu
ZyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7Cit1c2luZyBu
YW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKIAogY2xhc3MgR2xvYmFsSW1wIDogcHVibGljIE9iamVj
dEltcCB7CiBwdWJsaWM6CkluZGV4OiBXZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCShyZXZpc2lvbiAzNjI2
MikKKysrIFdlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTk5LDggKzE5OSw4IEBACiBAZW5kCiAKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKLXVzaW5nIG5h
bWVzcGFjZSBLSlM6OkJpbmRpbmdzOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5hbWVz
cGFjZSBKU0M6OkJpbmRpbmdzOwogCiBjbGFzcyBHbG9iYWxJbXAgOiBwdWJsaWMgT2JqZWN0SW1w
IHsKIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL3Rlc3RxdGJpbmRpbmdzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS90ZXN0cXRiaW5kaW5ncy5jcHAJKHJldmlzaW9uIDM2
MjYyKQorKysgV2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw4ICs3NCw4IEBAIHB1YmxpYyBzbG90czoKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdXNpbmcgbmFtZXNwYWNl
IEtKUzsKLXVzaW5nIG5hbWVzcGFjZSBLSlM6OkJpbmRpbmdzOwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdzOwogCiBjbGFzcyBHbG9iYWwgOiBwdWJs
aWMgSlNPYmplY3QgewogcHVibGljOgpJbmRleDogV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCShyZXZpc2lvbiAz
NjI2MikKKysrIFdlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxranMvaWRlbnRpZmllci5oPgogI2luY2x1ZGUgPGtq
cy9KU0xvY2suaD4KIAotbmFtZXNwYWNlIEtKUyB7IG5hbWVzcGFjZSBCaW5kaW5ncyB7CituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAogQ0NsYXNzOjpDQ2xhc3MoTlBDbGFz
cyogYUNsYXNzKQogewpAQCAtMTE5LDYgKzExOSw2IEBAIEZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFt
ZWQoY29uc3QgSWRlbnRpZmkKICAgICByZXR1cm4gYUZpZWxkOwogfQogCi19IH0gLy8gbmFtZXNw
YWNlIEtKUzo6QmluZGluZ3MKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5ncwogCiAjZW5k
aWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9j
L2NfY2xhc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuaAkocmV2
aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgInJ1bnRpbWUuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNl
IEJpbmRpbmdzIHsKIAogY2xhc3MgQ0NsYXNzIDogcHVibGljIENsYXNzIHsKQEAgLTU0LDcgKzU0
LDcgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCi19IC8vIG5hbWVz
cGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkocmV2aXNpb24gMzYy
NjIpCisrKyBXZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIG5hbWVz
cGFjZSBCaW5kaW5ncyB7CiAKIENJbnN0YW5jZTo6Q0luc3RhbmNlKE5QT2JqZWN0KiBvLCBQYXNz
UmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QpCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9jL2Nf
aW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAko
cmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCBOUE9iamVjdCBOUE9i
amVjdDsKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIEJp
bmRpbmdzIHsKIApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBC
aW5kaW5ncwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdl
L2MvY19ydW50aW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9jL2NfcnVudGlt
ZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlkZ2UvYy9jX3J1bnRpbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAibnBydW50aW1lX2lt
cGwuaCIKICNpbmNsdWRlIDxranMvSlNMb2NrLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNw
YWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIENNZXRob2QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogV2ViQ29yZS9icmlkZ2Uv
Yy9jX3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9jL2NfcnVudGltZS5o
CShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJucHJ1bnRpbWVfaW50ZXJuYWwu
aCIKICNpbmNsdWRlICJydW50aW1lLmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpT
QyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCiBjbGFzcyBDRmllbGQgOiBwdWJsaWMgRmllbGQg
ewpAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGlu
Z3MKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIApJbmRleDogV2ViQ29yZS9icmlkZ2UvYy9jX3V0
aWxpdHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAko
cmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogdXNpbmcgV2ViQ29yZTo6U3RyaW5nOwogCi1u
YW1lc3BhY2UgS0pTIHsgbmFtZXNwYWNlIEJpbmRpbmdzIHsKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQmluZGluZ3MgewogCiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRVVEY4VG9VVEYxNldpdGhM
YXRpbjFGYWxsYmFjayhjb25zdCBOUFVURjgqIFVURjhDaGFycywgaW50IFVURjhMZW5ndGgpCiB7
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYnJpZGdlL2MvY191dGlsaXR5LmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlk
Z2UvYy9jX3V0aWxpdHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU3RyaW5nOwogfQogCi1uYW1lc3BhY2UgS0pTIHsKK25h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBJZGVudGlmaWVyOwpJbmRl
eDogV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9jbGFzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9icmlkZ2Uvam5pL2puaV9jbGFzcy5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9i
cmlkZ2Uvam5pL2puaV9jbGFzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlICJqbmlfdXRpbGl0eS5oIgogI2luY2x1ZGUgImpuaV9ydW50aW1lLmgiCiAKLXVz
aW5nIG5hbWVzcGFjZSBLSlM6OkJpbmRpbmdzOwordXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGlu
Z3M7CiAKIEphdmFDbGFzczo6SmF2YUNsYXNzKGpvYmplY3QgYW5JbnN0YW5jZSkKIHsKSW5kZXg6
IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfY2xhc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jy
aWRnZS9qbmkvam5pX2NsYXNzLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlkZ2Uv
am5pL2puaV9jbGFzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVk
ZSA8am5pX3J1bnRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCi1uYW1lc3BhY2Ug
S0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQmluZGluZ3MgewogCkBAIC01OSw3
ICs1OSw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCiAKLX0gLy8gbmFt
ZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoTUFDX0pB
VkFfQlJJREdFKQogCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2luc3RhbmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2luc3RhbmNlLmNwcAkocmV2aXNp
b24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2luc3RhbmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQAogfQogI2VuZGlmCiAgCi11c2luZyBuYW1lc3BhY2Ug
S0pTOjpCaW5kaW5nczsKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlND
OjpCaW5kaW5nczsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIEphdmFJbnN0YW5jZTo6SmF2YUlu
c3RhbmNlIChqb2JqZWN0IGluc3RhbmNlLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmpl
Y3QpCiAgICAgOiBJbnN0YW5jZShyb290T2JqZWN0KQpJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5p
L2puaV9pbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfaW5z
dGFuY2UuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2luc3Rh
bmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgPEphdmFW
TS9qbmkuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNl
IEJpbmRpbmdzIHsKIApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNw
YWNlIEJpbmRpbmdzCiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQogCkluZGV4OiBXZWJDb3JlL2JyaWRn
ZS9qbmkvam5pX2pzb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2pu
aV9qc29iamVjdC5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlf
anNvYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiAjZGVmaW5lIGpsb25nX3RvX3B0cihhKSAoKHZvaWQqKSh1aW50cHRy
X3QpKGEpKQotI2RlZmluZSBqbG9uZ190b19pbXBwdHIoYSkgKHN0YXRpY19jYXN0PEtKUzo6SlNP
YmplY3QqPigoKHZvaWQqKSh1aW50cHRyX3QpKGEpKSkpCisjZGVmaW5lIGpsb25nX3RvX2ltcHB0
cihhKSAoc3RhdGljX2Nhc3Q8SlNDOjpKU09iamVjdCo+KCgodm9pZCopKHVpbnRwdHJfdCkoYSkp
KSkKICNkZWZpbmUgcHRyX3RvX2psb25nKGEpICgoamxvbmcpKHVpbnRwdHJfdCkoYSkpCiAKLW5h
bWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFyZ0xpc3Q7CiBjbGFzcyBF
eGVjU3RhdGU7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2Ug
QmluZGluZ3MKIAotfSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogZXh0
ZXJuICJDIiB7CiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQkocmV2aXNpb24g
MzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw4ICs0NCw4IEBACiAKIHVzaW5nIFdlYkNvcmU6OkZyYW1lOwogCi11c2luZyBu
YW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1l
c3BhY2UgSlNDOjpCaW5kaW5nczsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKICNpZmRlZiBOREVC
VUcKICNkZWZpbmUgSlNfTE9HKGZvcm1hdEFuZEFyZ3MuLi4pICgodm9pZCkwKQpAQCAtMzAyLDcg
KzMwMiw3IEBAIGpvYmplY3QgSmF2YUpTT2JqZWN0OjpjYWxsKGpzdHJpbmcgbWV0aG8KICAgICBB
cmdMaXN0IGFyZ0xpc3Q7CiAgICAgZ2V0TGlzdEZyb21KQXJyYXkoZXhlYywgYXJncywgYXJnTGlz
dCk7CiAgICAgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnN0YXJ0VGltZW91dENoZWNrKCk7
Ci0gICAgSlNWYWx1ZSogcmVzdWx0ID0gS0pTOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIF9pbXAsIGFyZ0xpc3QpOworICAgIEpTVmFsdWUqIHJlc3VsdCA9IEpTQzo6
Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBfaW1wLCBhcmdMaXN0KTsK
ICAgICByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c3RvcFRpbWVvdXRDaGVjaygpOwogCiAg
ICAgcmV0dXJuIGNvbnZlcnRWYWx1ZVRvSk9iamVjdChyZXN1bHQpOwpAQCAtNjAxLDcgKzYwMSw3
IEBAIEpTVmFsdWUqIEphdmFKU09iamVjdDo6Y29udmVydEpPYmplY3RUb1YKIAogICAgIEpTTG9j
ayBsb2NrKGZhbHNlKTsKIAotICAgIHJldHVybiBLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6Y3Jl
YXRlUnVudGltZU9iamVjdChleGVjLCBKYXZhSW5zdGFuY2U6OmNyZWF0ZSh0aGVPYmplY3QsIF9y
b290T2JqZWN0KSk7CisgICAgcmV0dXJuIEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpjcmVhdGVS
dW50aW1lT2JqZWN0KGV4ZWMsIEphdmFJbnN0YW5jZTo6Y3JlYXRlKHRoZU9iamVjdCwgX3Jvb3RP
YmplY3QpKTsKIH0KIAogdm9pZCBKYXZhSlNPYmplY3Q6OmdldExpc3RGcm9tSkFycmF5KEV4ZWNT
dGF0ZSogZXhlYywgam9iamVjdEFycmF5IGpBcnJheSwgQXJnTGlzdCYgbGlzdCkgY29uc3QKSW5k
ZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfb2JqYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JyaWRnZS9qbmkvam5pX29iamMubW0JKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlk
Z2Uvam5pL2puaV9vYmpjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW1w
b3J0ICJvYmpjX3V0aWxpdHkuaCIKICNpbmNsdWRlIDxranMvSlNMb2NrLmg+CiAKLXVzaW5nIG5h
bWVzcGFjZSBLSlM6OkJpbmRpbmdzOwordXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGluZ3M7CiAK
IEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYlNjcmlwdGluZ1ByaXZhdGUpCiAtIChqdmFsdWUpd2Vi
UGx1Z0luQ2FsbEphdmE6KGpvYmplY3Qpb2JqZWN0IG1ldGhvZDooam1ldGhvZElEKW1ldGhvZCBy
ZXR1cm5UeXBlOihKTklUeXBlKXJldHVyblR5cGUgYXJndW1lbnRzOihqdmFsdWUqKWFyZ3M7CkBA
IC00NSw3ICs0NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM6OkJpbmRpbmdzOwogICAgICAgIGV4
Y2VwdGlvbkRlc2NyaXB0aW9uOihOU1N0cmluZyAqKilleGNlcHRpb25TdHJpbmc7CiBAZW5kCiAK
LWJvb2wgS0pTOjpCaW5kaW5nczo6ZGlzcGF0Y2hKTklDYWxsKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3Qgdm9pZCogdGFyZ2V0QXBwbGV0Vmlldywgam9iamVjdCBvYmosIGJvb2wgaXNTdGF0aWMsIEpO
SVR5cGUgcmV0dXJuVHlwZSwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUqIGFyZ3MsIGp2YWx1
ZSAmcmVzdWx0LCBjb25zdCBjaGFyKiwgSlNWYWx1ZSomIGV4Y2VwdGlvbkRlc2NyaXB0aW9uKQor
Ym9vbCBKU0M6OkJpbmRpbmdzOjpkaXNwYXRjaEpOSUNhbGwoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCB2b2lkKiB0YXJnZXRBcHBsZXRWaWV3LCBqb2JqZWN0IG9iaiwgYm9vbCBpc1N0YXRpYywgSk5J
VHlwZSByZXR1cm5UeXBlLCBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1ZSogYXJncywganZhbHVl
ICZyZXN1bHQsIGNvbnN0IGNoYXIqLCBKU1ZhbHVlKiYgZXhjZXB0aW9uRGVzY3JpcHRpb24pCiB7
CiAgICAgaWQgdmlldyA9IChpZCl0YXJnZXRBcHBsZXRWaWV3OwogICAgIApJbmRleDogV2ViQ29y
ZS9icmlkZ2Uvam5pL2puaV9ydW50aW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRn
ZS9qbmkvam5pX3J1bnRpbWUuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYnJpZGdl
L2puaS9qbmlfcnVudGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDggQEAKIH0K
ICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwotdXNpbmcgbmFtZXNwYWNlIEtKUzo6Qmlu
ZGluZ3M7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwordXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGlu
Z3M7CiAKIAogSmF2YVBhcmFtZXRlcjo6SmF2YVBhcmFtZXRlciAoSk5JRW52ICplbnYsIGpzdHJp
bmcgdHlwZSkKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfcnVudGltZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfcnVudGltZS5oCShyZXZpc2lvbiAzNjI2MikK
KysrIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSA8a2pzL0pTTG9jay5oPgogCiAKLW5hbWVzcGFjZSBLSlMK
K25hbWVzcGFjZSBKU0MKIHsKIAogbmFtZXNwYWNlIEJpbmRpbmdzCkBAIC0xODQsNyArMTg0LDcg
QEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKIAotfSAvLyBuYW1lc3BhY2Ug
S0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShNQUNfSkFWQV9CUklE
R0UpCiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfdXRpbGl0eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2puaV91dGlsaXR5LmNwcAkocmV2aXNpb24gMzYyNjIp
CisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX3V0aWxpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8a2pzL0pTTG9jay5oPgogI2luY2x1ZGUgPGRsZmNu
Lmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBCaW5k
aW5ncyB7CiAKQEAgLTU4MSw2ICs1ODEsNiBAQCBqdmFsdWUgY29udmVydFZhbHVlVG9KVmFsdWUg
KEV4ZWNTdGF0ZSAqCiAKIH0gIC8vIGVuZCBvZiBuYW1lc3BhY2UgQmluZGluZ3MKIAotfSAvLyBl
bmQgb2YgbmFtZXNwYWNlIEtKUworfSAvLyBlbmQgb2YgbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYg
Ly8gRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlf
dXRpbGl0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfdXRpbGl0eS5o
CShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfdXRpbGl0eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgYXJyYXlf
dHlwZQogfSBKTklUeXBlOwogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU09iamVjdDsgICAgCkBAIC0yODEsNyArMjgxLDcgQEAg
Ym9vbCBkaXNwYXRjaEpOSUNhbGwoRXhlY1N0YXRlKiwgY29uc3QgdgogCiB9IC8vIG5hbWVzcGFj
ZSBCaW5kaW5ncwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKIApJbmRleDogV2ViQ29yZS9icmlkZ2Uv
b2JqYy9XZWJTY3JpcHRPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9vYmpj
L1dlYlNjcmlwdE9iamVjdC5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYnJpZGdlL29i
amMvV2ViU2NyaXB0T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAKICsg
KE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvcktleTooY29uc3QgY2hhciAqKW5hbWU7CiArIChC
T09MKWlzS2V5RXhjbHVkZWRGcm9tV2ViU2NyaXB0Oihjb25zdCBjaGFyICopbmFtZTsKIAotKyAo
aWQpX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOihLSlM6OkpTVmFsdWUgKil2YWx1ZSBvcmlnaW5S
b290T2JqZWN0OihLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0KilvcmlnaW5Sb290T2JqZWN0IHJv
b3RPYmplY3Q6KEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QqKXJvb3RPYmplY3Q7Ci0tIF9pbml0
V2l0aEpTT2JqZWN0OihLSlM6OkpTT2JqZWN0KilpbXAgb3JpZ2luUm9vdE9iamVjdDooUGFzc1Jl
ZlB0cjxLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0PilvcmlnaW5Sb290T2JqZWN0IHJvb3RPYmpl
Y3Q6KFBhc3NSZWZQdHI8S0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdD4pcm9vdE9iamVjdDsKLS0g
KEtKUzo6SlNPYmplY3QgKilfaW1wOworKyAoaWQpX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOihK
U0M6OkpTVmFsdWUgKil2YWx1ZSBvcmlnaW5Sb290T2JqZWN0OihKU0M6OkJpbmRpbmdzOjpSb290
T2JqZWN0KilvcmlnaW5Sb290T2JqZWN0IHJvb3RPYmplY3Q6KEpTQzo6QmluZGluZ3M6OlJvb3RP
YmplY3QqKXJvb3RPYmplY3Q7CistIF9pbml0V2l0aEpTT2JqZWN0OihKU0M6OkpTT2JqZWN0Kilp
bXAgb3JpZ2luUm9vdE9iamVjdDooUGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0
PilvcmlnaW5Sb290T2JqZWN0IHJvb3RPYmplY3Q6KFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6
Um9vdE9iamVjdD4pcm9vdE9iamVjdDsKKy0gKEpTQzo6SlNPYmplY3QgKilfaW1wOwogQGVuZAog
CiBAcHJvdG9jb2wgV2ViVW5kZWZpbmVkCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
Y2xhc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MuaAko
cmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAib2JqY19ydW50aW1lLmgi
CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3Mg
ewogCiBjbGFzcyBPYmpjQ2xhc3MgOiBwdWJsaWMgQ2xhc3MKQEAgLTU2LDYgKzU2LDYgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCi19IC8vIG5hbWVzcGFjZSBLSlMK
K30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19jbGFzcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xh
c3MubW0JKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAib2JqY19pbnN0
YW5jZS5oIgogI2luY2x1ZGUgIldlYlNjcmlwdE9iamVjdC5oIgogCi1uYW1lc3BhY2UgS0pTIHsK
K25hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKICAgICAKIHN0YXRpYyB2b2lk
IGRlbGV0ZU1ldGhvZChDRkFsbG9jYXRvclJlZiwgY29uc3Qgdm9pZCogdmFsdWUpCkluZGV4OiBX
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgIm9iamNfY2xhc3MuaCIKICNpbmNsdWRlICJvYmpjX3V0aWxpdHkuaCIK
IAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIEJpbmRpbmdz
IHsKIApAQCAtODUsNiArODUsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBCaW5kaW5n
cwogCi19IC8vIG5hbWVzcGFjZSBLSlMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
QklORElOR1NfT0JKQ19JTlNUQU5DRV9IXwpJbmRleDogV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbQkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAKIH0KICNlbmRpZgogCi11
c2luZyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2lu
ZyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0YXRp
YyBOU1N0cmluZyogc19leGNlcHRpb247CiBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIHNfZXhjZXB0
aW9uRW52aXJvbm1lbnQ7IC8vIE5vIG5lZWQgdG8gcHJvdGVjdCB0aGlzIHZhbHVlLCBzaW5jZSB3
ZSBqdXN0IHVzZSBpdCBmb3IgYSBwb2ludGVyIGNvbXBhcmlzb24uCkluZGV4OiBXZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1
ZGUgPGtqcy9KU09iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotbmFtZXNw
YWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIENsYXNz
U3RydWN0UHRyIHdlYlNjcmlwdE9iamVjdENsYXNzKCk7CkBAIC0xMTYsNiArMTE2LDYgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCi19IC8vIG5hbWVzcGFjZSBLSlMK
K30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSA8a2pz
L09iamVjdFByb3RvdHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotdXNpbmcg
bmFtZXNwYWNlIEtKUzsKLXVzaW5nIG5hbWVzcGFjZSBLSlM6OkJpbmRpbmdzOwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdzOwogCiBleHRlcm4gQ2xh
c3NTdHJ1Y3RQdHIgQmluZGluZ3M6OndlYlNjcmlwdE9iamVjdENsYXNzKCkKIHsKSW5kZXg6IFdl
YkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
CiBjbGFzcyBOU1N0cmluZzsKICNlbmRpZgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBK
U0MgewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAogdHlwZWRlZiB1bmlvbiB7CkBAIC04Myw2ICs4
Myw2IEBAIGJvb2wgY29udmVydEpTTWV0aG9kTmFtZVRvT2JqYyhjb25zdCBjaGEKIEpTT2JqZWN0
ICp0aHJvd0Vycm9yKEV4ZWNTdGF0ZSAqLCBFcnJvclR5cGUsIE5TU3RyaW5nICptZXNzYWdlKTsK
IAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDogV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxp
dHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0J
KHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0J
KHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAKICNkZWZpbmUgX0NfR0NJTlZJU0lCTEUg
JyEnCiAjZW5kaWYKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFj
ZSBCaW5kaW5ncyB7CiAKIC8qCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3BwCShyZXZpc2lvbiAz
NjI2MikKKysrIFdlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgPHFtZXRhb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cWRl
YnVnLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmlu
ZGluZ3MgewogCiBRdENsYXNzOjpRdENsYXNzKGNvbnN0IFFNZXRhT2JqZWN0KiBtbykKSW5kZXg6
IFdlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlk
Z2UvcXQvcXRfY2xhc3MuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9xdC9x
dF9jbGFzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGNsYXNzIFFPYmplY3Q7
CiBjbGFzcyBRTWV0YU9iamVjdDsKIFFUX0VORF9OQU1FU1BBQ0UKIAotbmFtZXNwYWNlIEtKUyB7
CituYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIApAQCAtNTUsNiArNTUs
NiBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKLX0gLy8gbmFtZXNw
YWNlIEtKUworfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDogV2ViQ29yZS9icmlk
Z2UvcXQvcXRfaW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3F0L3F0
X2luc3RhbmNlLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9xdC9xdF9p
bnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxx
bWV0YXR5cGUuaD4KICNpbmNsdWRlIDxxaGFzaC5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVz
cGFjZSBKU0MgewogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAogLy8gQ2FjaGUgUXRJbnN0YW5jZXMK
SW5kZXg6IFdlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3Jl
L2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSA8cWhhc2guaD4KICNpbmNsdWRlIDxxc2V0Lmg+CiAKLW5hbWVzcGFjZSBLSlMg
eworbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKQEAgLTg4LDYgKzg4
LDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKIAotfSAvLyBuYW1lc3Bh
Y2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2JyaWRn
ZS9xdC9xdF9ydW50aW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50
aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBRX0RFQ0xBUkVfTUVUQVRZ
UEUoUUxpc3Q8aW50Pik7CiBRX0RFQ0xBUkVfTUVUQVRZUEUoUVZhcmlhbnQpOwogCiAKLW5hbWVz
cGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCiAvLyBE
ZWJ1Z2dpbmcKQEAgLTc0Nyw3ICs3NDcsNyBAQCBKU1ZhbHVlKiBjb252ZXJ0UVZhcmlhbnRUb1Zh
bHVlKEV4ZWNTdGF0CiAKICAgICAgICAgICAgIFVTdHJpbmcgcGF0dGVybigoVUNoYXIqKXJlLnBh
dHRlcm4oKS51dGYxNigpLCByZS5wYXR0ZXJuKCkubGVuZ3RoKCkpOwogCi0gICAgICAgICAgICBS
ZWZQdHI8S0pTOjpSZWdFeHA+IHJlZ0V4cCA9IEtKUzo6UmVnRXhwOjpjcmVhdGUoZXhlYywgcGF0
dGVybiwgdWZsYWdzKTsKKyAgICAgICAgICAgIFJlZlB0cjxKU0M6OlJlZ0V4cD4gcmVnRXhwID0g
SlNDOjpSZWdFeHA6OmNyZWF0ZShleGVjLCBwYXR0ZXJuLCB1ZmxhZ3MpOwogICAgICAgICAgICAg
aWYgKHJlZ0V4cC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKGV4ZWMp
IFJlZ0V4cE9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFByb3RvdHlw
ZSgpLCByZWdFeHAucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTc4MSw3ICs3ODEs
NyBAQCBKU1ZhbHVlKiBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0CiAgICAgICAgIGR0
Lm1pbnV0ZSA9IHRpbWUubWludXRlKCk7CiAgICAgICAgIGR0LnNlY29uZCA9IHRpbWUuc2Vjb25k
KCk7CiAgICAgICAgIGR0LmlzRFNUID0gLTE7Ci0gICAgICAgIGRvdWJsZSBtcyA9IEtKUzo6Z3Jl
Z29yaWFuRGF0ZVRpbWVUb01TKGR0LCB0aW1lLm1zZWMoKSwgLyppbnB1dElzVVRDKi8gZmFsc2Up
OworICAgICAgICBkb3VibGUgbXMgPSBKU0M6OmdyZWdvcmlhbkRhdGVUaW1lVG9NUyhkdCwgdGlt
ZS5tc2VjKCksIC8qaW5wdXRJc1VUQyovIGZhbHNlKTsKIAogICAgICAgICBEYXRlSW5zdGFuY2Uq
IGluc3RhbmNlID0gbmV3IChleGVjKSBEYXRlSW5zdGFuY2UoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5kYXRlUHJvdG90eXBlKCkpOwogICAgICAgICBpbnN0YW5jZS0+c2V0SW50ZXJuYWxW
YWx1ZShqc051bWJlcihleGVjLCB0cnVuYyhtcykpKTsKQEAgLTE1NzQsNyArMTU3NCw3IEBAIHN0
YXRpYyBjb25zdCB1aW50IHF0X21ldGFfZGF0YV9RdENvbm5lY3QKIH07CiAKIHN0YXRpYyBjb25z
dCBjaGFyIHF0X21ldGFfc3RyaW5nZGF0YV9RdENvbm5lY3Rpb25PYmplY3RbXSA9IHsKLSAgICAi
S0pTOjpCaW5kaW5nczo6UXRDb25uZWN0aW9uT2JqZWN0XDBcMGV4ZWN1dGUoKVwwIgorICAgICJK
U0M6OkJpbmRpbmdzOjpRdENvbm5lY3Rpb25PYmplY3RcMFwwZXhlY3V0ZSgpXDAiCiB9OwogCiBj
b25zdCBRTWV0YU9iamVjdCBRdENvbm5lY3Rpb25PYmplY3Q6OnN0YXRpY01ldGFPYmplY3QgPSB7
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUv
YnJpZGdlL3F0L3F0X3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAog
I2luY2x1ZGUgPHFwb2ludGVyLmg+CiAjaW5jbHVkZSA8cXZhcmlhbnQuaD4KIAotbmFtZXNwYWNl
IEtKUyB7CituYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNzIFF0
SW5zdGFuY2U7CkBAIC0yMTgsNiArMjE4LDYgQEAgcHJpdmF0ZToKIFFWYXJpYW50IGNvbnZlcnRW
YWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1ZSwgUU1ldGFUeXBl
OjpUeXBlIGhpbnQsIGludCAqZGlzdGFuY2UpOwogCiB9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwot
fSAvLyBuYW1lc3BhY2UgS0pTCit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDA4LDcgKzQwOCw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogCiAg
ICAgWE1MSHR0cFJlcXVlc3Q6OmRldGFjaFJlcXVlc3RzKHRoaXMpOwogICAgIHsKLSAgICAgICAg
S0pTOjpKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2Up
OwogICAgICAgICBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0QWxsRE9NTm9kZXNGb3JEb2N1bWVu
dCh0aGlzKTsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL05TUmVzb2x2ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9OU1Jlc29sdmVyLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2Vi
Q29yZS9kb20vTlNSZXNvbHZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKIH0KIApAQCAtMzksNyArMzksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTlNSZXNvbHZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PE5TUmVzb2x2ZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk5TUmVzb2x2ZXIo
KSB7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgbG9va3VwTmFtZXNwYWNlVVJJKEtKUzo6RXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJiBwcmVmaXgpID0gMDsKKyAgICAgICAgdmlydHVhbCBTdHJp
bmcgbG9va3VwTmFtZXNwYWNlVVJJKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBwcmVm
aXgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmsoKSB7IH0KICAgICB9OwogCkluZGV4
OiBXZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmNw
cAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRv
YykKICAgICB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogCiAgICAgewotICAgICAgICBL
SlM6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7
CiAgICAgICAgIFNjcmlwdEludGVycHJldGVyOjp1cGRhdGVET01Ob2RlRG9jdW1lbnQodGhpcywg
bV9kb2N1bWVudC5nZXQoKSwgZG9jKTsKICAgICB9ICAgIAogICAgIG1fZG9jdW1lbnQgPSBkb2M7
CkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIFJlc29sdmVOYW1lc3BhY2VG
dW5jdG9yIHsKIHB1YmxpYzoKLSAgICBSZXNvbHZlTmFtZXNwYWNlRnVuY3RvcihOU1Jlc29sdmVy
KiByZXNvbHZlciwgRXhjZXB0aW9uQ29kZSYgZWMsIEtKUzo6RXhlY1N0YXRlKiBleGVjKQorICAg
IFJlc29sdmVOYW1lc3BhY2VGdW5jdG9yKE5TUmVzb2x2ZXIqIHJlc29sdmVyLCBFeGNlcHRpb25D
b2RlJiBlYywgSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIDogbV9yZXNvbHZlcihyZXNv
bHZlcikKICAgICAgICAgLCBtX2V4Y2VwdGlvbkNvZGUoZWMpCiAgICAgICAgICwgbV9leGVjKGV4
ZWMpCkBAIC0xMzA2LDcgKzEzMDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE5TUmVzb2x2
ZXIqIG1fcmVzb2x2ZXI7CiAgICAgRXhjZXB0aW9uQ29kZSYgbV9leGNlcHRpb25Db2RlOwotICAg
IEtKUzo6RXhlY1N0YXRlKiBtX2V4ZWM7CisgICAgSlNDOjpFeGVjU3RhdGUqIG1fZXhlYzsKIH07
CiAKIHN0YXRpYyBib29sIHNlbGVjdG9yTmVlZHNOYW1lc3BhY2VSZXNvbHV0aW9uKENTU1NlbGVj
dG9yKiBjdXJyZW50U2VsZWN0b3IpCkBAIC0xMzE1LDcgKzEzMTUsNyBAQCBzdGF0aWMgYm9vbCBz
ZWxlY3Rvck5lZWRzTmFtZXNwYWNlUmVzb2x1CiAgICAgcmV0dXJuIGZvckVhY2hTZWxlY3Rvcihm
dW5jdG9yLCBjdXJyZW50U2VsZWN0b3IpOwogfQogCi1zdGF0aWMgYm9vbCByZXNvbHZlTmFtZXNw
YWNlc0ZvclNlbGVjdG9yKENTU1NlbGVjdG9yKiBjdXJyZW50U2VsZWN0b3IsIE5TUmVzb2x2ZXIq
IHJlc29sdmVyLCBFeGNlcHRpb25Db2RlJiBlYywgS0pTOjpFeGVjU3RhdGUqIGV4ZWMpCitzdGF0
aWMgYm9vbCByZXNvbHZlTmFtZXNwYWNlc0ZvclNlbGVjdG9yKENTU1NlbGVjdG9yKiBjdXJyZW50
U2VsZWN0b3IsIE5TUmVzb2x2ZXIqIHJlc29sdmVyLCBFeGNlcHRpb25Db2RlJiBlYywgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgUmVzb2x2ZU5hbWVzcGFjZUZ1bmN0b3IgZnVuY3Rvcihy
ZXNvbHZlciwgZWMsIGV4ZWMpOwogICAgIHJldHVybiBmb3JFYWNoU2VsZWN0b3IoZnVuY3Rvciwg
Y3VycmVudFNlbGVjdG9yKTsKQEAgLTEzMzEsNyArMTMzMSw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IE5vZGU6OnF1ZXJ5U2VsZWN0b3IKICAgICByZXR1cm4gcXVlcnlTZWxlY3RvckFsbChzZWxl
Y3RvcnMsIDAsIGVjLCBleGVjU3RhdGVGcm9tTm9kZSh0aGlzKSk7CiB9CiAKLVBhc3NSZWZQdHI8
RWxlbWVudD4gTm9kZTo6cXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgTlNS
ZXNvbHZlciogcmVzb2x2ZXIsIEV4Y2VwdGlvbkNvZGUmIGVjLCBLSlM6OkV4ZWNTdGF0ZSogZXhl
YykKK1Bhc3NSZWZQdHI8RWxlbWVudD4gTm9kZTo6cXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcm
IHNlbGVjdG9ycywgTlNSZXNvbHZlciogcmVzb2x2ZXIsIEV4Y2VwdGlvbkNvZGUmIGVjLCBKU0M6
OkV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoc2VsZWN0b3JzLmlzRW1wdHkoKSkgewogICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC0xMzkxLDcgKzEzOTEsNyBAQCBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IE5vZGU6OnF1ZXJ5U2VsZWN0b3IoCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IE5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwoY29uc3QgU3RyaW5nJiBzZWxlY3Rv
cnMsIE5TUmVzb2x2ZXIqIHJlc29sdmVyLCBFeGNlcHRpb25Db2RlJiBlYywgS0pTOjpFeGVjU3Rh
dGUqIGV4ZWMpCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpxdWVyeVNlbGVjdG9yQWxsKGNv
bnN0IFN0cmluZyYgc2VsZWN0b3JzLCBOU1Jlc29sdmVyKiByZXNvbHZlciwgRXhjZXB0aW9uQ29k
ZSYgZWMsIEpTQzo6RXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmIChzZWxlY3RvcnMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDM2MjYyKQorKysg
V2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODEsOCArNDgxLDggQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29u
c3QgU3RyaW5nJiBjbGFzc05hbWVzKTsKIAogI2lmIFVTRShKU0MpCi0gICAgUGFzc1JlZlB0cjxF
bGVtZW50PiBxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBOU1Jlc29sdmVy
KiwgRXhjZXB0aW9uQ29kZSYsIEtKUzo6RXhlY1N0YXRlKik7Ci0gICAgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gcXVlcnlTZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgTlNSZXNvbHZl
ciosIEV4Y2VwdGlvbkNvZGUmLCBLSlM6OkV4ZWNTdGF0ZSopOworICAgIFBhc3NSZWZQdHI8RWxl
bWVudD4gcXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgTlNSZXNvbHZlcios
IEV4Y2VwdGlvbkNvZGUmLCBKU0M6OkV4ZWNTdGF0ZSopOworICAgIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IHF1ZXJ5U2VsZWN0b3JBbGwoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIE5TUmVzb2x2ZXIq
LCBFeGNlcHRpb25Db2RlJiwgSlNDOjpFeGVjU3RhdGUqKTsKICNlbmRpZgogCiAgICAgLy8gRm9y
IG5vbi1KUyBiaW5kaW5ncy4gU2lsZW50bHkgaWdub3JlcyB0aGUgSmF2YVNjcmlwdCBleGNlcHRp
b24gaWYgYW55LgpJbmRleDogV2ViQ29yZS9kb20vTm9kZUZpbHRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vTm9kZUZpbHRlci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29y
ZS9kb20vTm9kZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSA8a2pzL0V4ZWNTdGF0ZS5oPgogCi11c2luZyBuYW1l
c3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vTm9kZUZpbHRlci5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvZG9tL05vZGVGaWx0
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5vZGVGaWx0ZXIoY29uZGl0aW9uKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBzaG9ydCBhY2NlcHROb2RlKEtKUzo6RXhlY1N0YXRlKiwg
Tm9kZSopIGNvbnN0OworICAgICAgICBzaG9ydCBhY2NlcHROb2RlKEpTQzo6RXhlY1N0YXRlKiwg
Tm9kZSopIGNvbnN0OwogICAgICAgICB2b2lkIG1hcmsoKSB7IG1fY29uZGl0aW9uLT5tYXJrKCk7
IH07CiAKICAgICAgICAgLy8gRm9yIG5vbi1KUyBiaW5kaW5ncy4gU2lsZW50bHkgaWdub3JlcyB0
aGUgSmF2YVNjcmlwdCBleGNlcHRpb24gaWYgYW55LgpJbmRleDogV2ViQ29yZS9kb20vTm9kZUZp
bHRlckNvbmRpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUZpbHRlckNv
bmRpdGlvbi5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9kb20vTm9kZUZpbHRlckNv
bmRpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUg
Ik5vZGVGaWx0ZXIuaCIKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9kb20vTm9kZUZpbHRl
ckNvbmRpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGVGaWx0ZXJDb25kaXRp
b24uaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2RvbS9Ob2RlRmlsdGVyQ29uZGl0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
RXhlY1N0YXRlOwogfQogCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBOb2RlRmlsdGVyQ29uZGl0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Tm9kZUZpbHRl
ckNvbmRpdGlvbj4gewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Tm9kZUZpbHRlckNv
bmRpdGlvbigpIHsgfQotICAgICAgICB2aXJ0dWFsIHNob3J0IGFjY2VwdE5vZGUoS0pTOjpFeGVj
U3RhdGUqLCBOb2RlKikgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIHNob3J0IGFjY2VwdE5v
ZGUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgbWFyaygpIHsgfQogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24g
MzYyNjIpCisrKyBXZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk5v
ZGVGaWx0ZXIuaCIKIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDM2
MjYyKQorKysgV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDggKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAgICAgICAgIH5Ob2Rl
SXRlcmF0b3IoKTsKIAotICAgICAgICBQYXNzUmVmUHRyPE5vZGU+IG5leHROb2RlKEtKUzo6RXhl
Y1N0YXRlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICBQYXNzUmVmUHRyPE5vZGU+IHByZXZp
b3VzTm9kZShLSlM6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgUGFzc1Jl
ZlB0cjxOb2RlPiBuZXh0Tm9kZShKU0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICAgICAgUGFzc1JlZlB0cjxOb2RlPiBwcmV2aW91c05vZGUoSlNDOjpFeGVjU3RhdGUqLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgZGV0YWNoKCk7CiAKICAgICAgICAgTm9kZSogcmVm
ZXJlbmNlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlTm9kZS5ub2RlLmdldCgpOyB9
CkluZGV4OiBXZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL1RyYXZlcnNhbC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9kb20vVHJhdmVy
c2FsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIk5vZGUu
aCIKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUv
ZG9tL1RyYXZlcnNhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RyYXZlcnNhbC5oCShy
ZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvZG9tL1RyYXZlcnNhbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgSlNWYWx1ZTsKICAgICBjbGFzcyBFeGVjU3RhdGU7CiB9CkBAIC00Nyw3ICs0Nyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgVHJhdmVyc2FsKFBh
c3NSZWZQdHI8Tm9kZT4sIHVuc2lnbmVkIHdoYXRUb1Nob3csIFBhc3NSZWZQdHI8Tm9kZUZpbHRl
cj4sIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcyk7Ci0gICAgICAgIHNob3J0IGFjY2VwdE5v
ZGUoS0pTOjpFeGVjU3RhdGUqLCBOb2RlKikgY29uc3Q7CisgICAgICAgIHNob3J0IGFjY2VwdE5v
ZGUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKikgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBSZWZQdHI8Tm9kZT4gbV9yb290OwpJbmRleDogV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAJKHJldmlzaW9uIDM2MjYy
KQorKysgV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDcgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9kb20vVHJlZVdhbGtlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaAkocmV2aXNpb24gMzYyNjIpCisrKyBX
ZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEzICs0NSwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5vZGUqIGN1cnJlbnROb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jdXJyZW50LmdldCgpOyB9CiAgICAgICAgIHZvaWQgc2V0Q3VycmVudE5vZGUo
UGFzc1JlZlB0cjxOb2RlPiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgICAgIE5vZGUqIHBhcmVu
dE5vZGUoS0pTOjpFeGVjU3RhdGUqKTsKLSAgICAgICAgTm9kZSogZmlyc3RDaGlsZChLSlM6OkV4
ZWNTdGF0ZSopOwotICAgICAgICBOb2RlKiBsYXN0Q2hpbGQoS0pTOjpFeGVjU3RhdGUqKTsKLSAg
ICAgICAgTm9kZSogcHJldmlvdXNTaWJsaW5nKEtKUzo6RXhlY1N0YXRlKik7Ci0gICAgICAgIE5v
ZGUqIG5leHRTaWJsaW5nKEtKUzo6RXhlY1N0YXRlKik7Ci0gICAgICAgIE5vZGUqIHByZXZpb3Vz
Tm9kZShLSlM6OkV4ZWNTdGF0ZSopOwotICAgICAgICBOb2RlKiBuZXh0Tm9kZShLSlM6OkV4ZWNT
dGF0ZSopOworICAgICAgICBOb2RlKiBwYXJlbnROb2RlKEpTQzo6RXhlY1N0YXRlKik7CisgICAg
ICAgIE5vZGUqIGZpcnN0Q2hpbGQoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICAgICAgTm9kZSogbGFz
dENoaWxkKEpTQzo6RXhlY1N0YXRlKik7CisgICAgICAgIE5vZGUqIHByZXZpb3VzU2libGluZyhK
U0M6OkV4ZWNTdGF0ZSopOworICAgICAgICBOb2RlKiBuZXh0U2libGluZyhKU0M6OkV4ZWNTdGF0
ZSopOworICAgICAgICBOb2RlKiBwcmV2aW91c05vZGUoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICAg
ICAgTm9kZSogbmV4dE5vZGUoSlNDOjpFeGVjU3RhdGUqKTsKIAogICAgICAgICAvLyBGb3Igbm9u
LUpTIGJpbmRpbmdzLiBTaWxlbnRseSBpZ25vcmVzIHRoZSBKYXZhU2NyaXB0IGV4Y2VwdGlvbiBp
ZiBhbnkuCiAgICAgICAgIE5vZGUqIHBhcmVudE5vZGUoKSB7IHJldHVybiBwYXJlbnROb2RlKGV4
ZWNTdGF0ZUZyb21Ob2RlKG1fY3VycmVudC5nZXQoKSkpOyB9CkluZGV4OiBXZWJDb3JlL2RvbS9t
YWtlX25hbWVzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJKHJl
dmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5
KQpAQCAtNzY0LDcgKzc2NCw3IEBAIHN1YiBwcmludFdyYXBwZXJGYWN0b3J5Q3BwRmlsZQogICAg
IHByaW50RWxlbWVudEluY2x1ZGVzKCRGLCBcJXRhZ3MsIDEpOwogCiAgICAgcHJpbnQgRiA8PEVO
RAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtODM3LDcgKzgzNyw3IEBAIHN1YiBwcmludFdyYXBwZXJGYWN0b3J5
SGVhZGVyRmlsZQogICAgIHByaW50IEYgPDxFTkQKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
Ci1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEV4ZWNTdGF0ZTsK
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC04NDYsNyArODQ2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEpTTm9kZTsKICAgICBjbGFzcyAkcGFyYW1l
dGVyc3snbmFtZXNwYWNlJ31FbGVtZW50OwogCi0gICAgSlNOb2RlKiBjcmVhdGVKUyRwYXJhbWV0
ZXJzeyduYW1lc3BhY2UnfVdyYXBwZXIoS0pTOjpFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPCRwYXJh
bWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1lbnQ+KTsKKyAgICBKU05vZGUqIGNyZWF0ZUpTJHBhcmFt
ZXRlcnN7J25hbWVzcGFjZSd9V3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8JHBh
cmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudD4pOwogCiB9CiAgCkluZGV4OiBXZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZFBhZ2UuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQAogI2luY2x1ZGUgIlNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvaGlz
dG9yeS9DYWNoZWRQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBh
Z2UuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZyYW1l
Vmlldz4gbV92aWV3OwogICAgIFJlZlB0cjxOb2RlPiBtX21vdXNlUHJlc3NOb2RlOwogICAgIEtV
UkwgbV9VUkw7Ci0gICAgS0pTOjpQcm90ZWN0ZWRQdHI8SlNET01XaW5kb3c+IG1fd2luZG93Owor
ICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTRE9NV2luZG93PiBtX3dpbmRvdzsKICAgICBPd25QdHI8
UGF1c2VkVGltZW91dHM+IG1fcGF1c2VkVGltZW91dHM7CiAgICAgT3duUHRyPENhY2hlZFBhZ2VQ
bGF0Zm9ybURhdGE+IG1fY2FjaGVkUGFnZVBsYXRmb3JtRGF0YTsKIH07CkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lk
IEhUTUxQbHVnSW5FbGVtZW50OjpkZXRhY2goKQogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6
ZGV0YWNoKCk7CiB9CiAKLUtKUzo6QmluZGluZ3M6Okluc3RhbmNlKiBIVE1MUGx1Z0luRWxlbWVu
dDo6Z2V0SW5zdGFuY2UoKSBjb25zdAorSlNDOjpCaW5kaW5nczo6SW5zdGFuY2UqIEhUTUxQbHVn
SW5FbGVtZW50OjpnZXRJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5F
bGVtZW50LmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJIVE1MRnJh
bWVPd25lckVsZW1lbnQuaCIKIAogI2lmIFVTRShKU0MpCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVz
cGFjZSBKU0MgewogICAgIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAgICAgICAgIGNsYXNzIEluc3Rh
bmNlOwogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVuZGVy
V2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3QgPSAwOwogI2lmIFVTRShK
U0MpCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwotICAgIEtKUzo6QmluZGluZ3M6Okluc3Rh
bmNlKiBnZXRJbnN0YW5jZSgpIGNvbnN0OworICAgIEpTQzo6QmluZGluZ3M6Okluc3RhbmNlKiBn
ZXRJbnN0YW5jZSgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKQEAgLTgzLDcgKzgzLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgQXRvbWljU3RyaW5nIG1f
bmFtZTsKICNpZiBVU0UoSlNDKQotICAgIG11dGFibGUgUmVmUHRyPEtKUzo6QmluZGluZ3M6Oklu
c3RhbmNlPiBtX2luc3RhbmNlOworICAgIG11dGFibGUgUmVmUHRyPEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlPiBtX2luc3RhbmNlOwogI2VuZGlmCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCiAgICAgTlBPYmplY3QqIG1fTlBPYmplY3Q7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA0LDkgKzEwNCw5IEBACiAjaW5jbHVkZSAiU1ZHVmlld1NwZWMuaCIK
ICNlbmRpZgogCi11c2luZyBLSlM6OlVTdHJpbmc7Ci11c2luZyBLSlM6OkpTTG9jazsKLXVzaW5n
IEtKUzo6SlNWYWx1ZTsKK3VzaW5nIEpTQzo6VVN0cmluZzsKK3VzaW5nIEpTQzo6SlNMb2NrOwor
dXNpbmcgSlNDOjpKU1ZhbHVlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VDbGllbnQuaCIKICNlbmRpZgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEpTVmFsdWU7CiB9CiAKQEAgLTMzMiw4ICszMzIsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB1cmwgaXMgYSBKYXZhU2NyaXB0
IFVSTC4KICAgICAgICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmIHVy
bCwgYm9vbCB1c2VyR2VzdHVyZSA9IGZhbHNlLCBib29sIHJlcGxhY2VEb2N1bWVudCA9IHRydWUp
OwogCi0gICAgICAgIEtKUzo6SlNWYWx1ZSogZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHVy
bCwgaW50IGJhc2VMaW5lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCk7Ci0gICAgICAgIEtKUzo6SlNW
YWx1ZSogZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJH
ZXN0dXJlID0gZmFsc2UpOworICAgICAgICBKU0M6OkpTVmFsdWUqIGV4ZWN1dGVTY3JpcHQoY29u
c3QgU3RyaW5nJiB1cmwsIGludCBiYXNlTGluZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOworICAg
ICAgICBKU0M6OkpTVmFsdWUqIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKIAogICAgICAgICB2b2lkIGdvdG9BbmNob3Io
KTsKICAgICAgICAgYm9vbCBnb3RvQW5jaG9yKGNvbnN0IFN0cmluZyYgbmFtZSk7IC8vIHJldHVy
bnMgdHJ1ZSBpZiB0aGUgYW5jaG9yIHdhcyBmb3VuZApJbmRleDogV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL2xvYWRlci9pY29uL0lj
b25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMg
SWNvbkRhdGFiYXNlQ2xpZW50KiBkZWZhdWx0Q2xpZW50CiBJY29uRGF0YWJhc2UqIGljb25EYXRh
YmFzZSgpCiB7CiAgICAgaWYgKCFzaGFyZWRJY29uRGF0YWJhc2UpIHsKLSAgICAgICAgS0pTOjpp
bml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygp
OwogICAgICAgICBzaGFyZWRJY29uRGF0YWJhc2UgPSBuZXcgSWNvbkRhdGFiYXNlOwogICAgIH0K
ICAgICByZXR1cm4gc2hhcmVkSWNvbkRhdGFiYXNlOwpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnNv
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkocmV2aXNpb24g
MzYyNjIpCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlci5oPgogI2luY2x1ZGUgPHN0
ZGlvLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db25zb2xlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJD
b3JlL3BhZ2UvQ29uc29sZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCi1u
YW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAg
ICBjbGFzcyBBcmdMaXN0OwogICAgIGNsYXNzIFByb2ZpbGU7CkBAIC03NCwyNCArNzQsMjQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKIAogI2lmIFVTRShKU0MpCi0gICAgICAgIHZv
aWQgZGVidWcoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmKTsKLSAgICAgICAg
dm9pZCBlcnJvcihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6QXJnTGlzdCYpOwotICAgICAg
ICB2b2lkIGluZm8oS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmKTsKLSAgICAg
ICAgdm9pZCBsb2coS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmKTsKLSAgICAg
ICAgdm9pZCB3YXJuKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0Jik7Ci0gICAg
ICAgIHZvaWQgZGlyKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0Jik7Ci0gICAg
ICAgIHZvaWQgZGlyeG1sKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1
bWVudHMpOwotICAgICAgICB2b2lkIGFzc2VydENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgS0pT
OjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmKTsKLSAgICAgICAgdm9pZCBjb3VudChL
SlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6QXJnTGlzdCYpOwotICAgICAgICB2b2lkIHByb2Zp
bGUoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmKTsKLSAgICAgICAgdm9pZCBw
cm9maWxlRW5kKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0Jik7Ci0gICAgICAg
IHZvaWQgdGltZShjb25zdCBLSlM6OlVTdHJpbmcmIHRpdGxlKTsKLSAgICAgICAgdm9pZCB0aW1l
RW5kKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0Jik7Ci0gICAgICAgIHZvaWQg
Z3JvdXAoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmKTsKKyAgICAgICAgdm9p
ZCBkZWJ1ZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QXJnTGlzdCYpOworICAgICAgICB2
b2lkIGVycm9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpBcmdMaXN0Jik7CisgICAgICAg
IHZvaWQgaW5mbyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QXJnTGlzdCYpOworICAgICAg
ICB2b2lkIGxvZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QXJnTGlzdCYpOworICAgICAg
ICB2b2lkIHdhcm4oSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKKyAgICAg
ICAgdm9pZCBkaXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKKyAgICAg
ICAgdm9pZCBkaXJ4bWwoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3Vt
ZW50cyk7CisgICAgICAgIHZvaWQgYXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0aW9uLCBKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QXJnTGlzdCYpOworICAgICAgICB2b2lkIGNvdW50KEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpBcmdMaXN0Jik7CisgICAgICAgIHZvaWQgcHJvZmls
ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QXJnTGlzdCYpOworICAgICAgICB2b2lkIHBy
b2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKKyAgICAgICAg
dm9pZCB0aW1lKGNvbnN0IEpTQzo6VVN0cmluZyYgdGl0bGUpOworICAgICAgICB2b2lkIHRpbWVF
bmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKKyAgICAgICAgdm9pZCBn
cm91cChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6QXJnTGlzdCYpOwogICAgICAgICB2b2lk
IGdyb3VwRW5kKCk7CiAKLSAgICAgICAgdm9pZCByZXBvcnRFeGNlcHRpb24oS0pTOjpFeGVjU3Rh
dGUqLCBLSlM6OkpTVmFsdWUqKTsKLSAgICAgICAgdm9pZCByZXBvcnRDdXJyZW50RXhjZXB0aW9u
KEtKUzo6RXhlY1N0YXRlKik7CisgICAgICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlKik7CisgICAgICAgIHZvaWQgcmVwb3J0Q3VycmVudEV4Y2Vw
dGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCiAgICAgcHJpdmF0ZToKICAgICAgICAgaW5s
aW5lIFBhZ2UqIHBhZ2UoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBACiAjaW5jbHVkZSAiSlNEYXRh
YmFzZS5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2Ug
SlNDOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg3
LDE5ICsxODcsMTkgQEAgc3RydWN0IENvbnNvbGVNZXNzYWdlIHsKIC8vIFhNTEh0dHBSZXF1ZXN0
UmVzb3VyY2UgQ2xhc3MKIAogc3RydWN0IFhNTEh0dHBSZXF1ZXN0UmVzb3VyY2UgewotICAgIFhN
TEh0dHBSZXF1ZXN0UmVzb3VyY2UoS0pTOjpVU3RyaW5nJiBzb3VyY2VTdHJpbmcpCisgICAgWE1M
SHR0cFJlcXVlc3RSZXNvdXJjZShKU0M6OlVTdHJpbmcmIHNvdXJjZVN0cmluZykKICAgICB7Ci0g
ICAgICAgIEtKUzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgICAgICBKU0M6OkpTTG9jayBsb2Nr
KGZhbHNlKTsKICAgICAgICAgdGhpcy0+c291cmNlU3RyaW5nID0gc291cmNlU3RyaW5nLnJlcCgp
OwogICAgIH0KIAogICAgIH5YTUxIdHRwUmVxdWVzdFJlc291cmNlKCkKICAgICB7Ci0gICAgICAg
IEtKUzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgICAgICBKU0M6OkpTTG9jayBsb2NrKGZhbHNl
KTsKICAgICAgICAgc291cmNlU3RyaW5nLmNsZWFyKCk7CiAgICAgfQogCi0gICAgUmVmUHRyPEtK
Uzo6VVN0cmluZzo6UmVwPiBzb3VyY2VTdHJpbmc7CisgICAgUmVmUHRyPEpTQzo6VVN0cmluZzo6
UmVwPiBzb3VyY2VTdHJpbmc7CiB9OwogCiAvLyBJbnNwZWN0b3JSZXNvdXJjZSBTdHJ1Y3QKQEAg
LTI3Miw3ICsyNzIsNyBAQCBzdHJ1Y3QgSW5zcGVjdG9yUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291
CiAgICAgICAgICAgICBKU1ZhbHVlUHJvdGVjdChjb250ZXh0LCBuZXdTY3JpcHRPYmplY3QpOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0WE1MSHR0cFJlcXVlc3RQcm9wZXJ0aWVzKEtKUzo6VVN0cmlu
ZyYgZGF0YSkKKyAgICB2b2lkIHNldFhNTEh0dHBSZXF1ZXN0UHJvcGVydGllcyhKU0M6OlVTdHJp
bmcmIGRhdGEpCiAgICAgewogICAgICAgICB4bWxIdHRwUmVxdWVzdFJlc291cmNlLnNldChuZXcg
WE1MSHR0cFJlcXVlc3RSZXNvdXJjZShkYXRhKSk7CiAgICAgfQpAQCAtMjgwLDcgKzI4MCw3IEBA
IHN0cnVjdCBJbnNwZWN0b3JSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3UKICAgICBTdHJpbmcgc291
cmNlU3RyaW5nKCkgY29uc3QKICAgICAgewogICAgICAgICAgaWYgKHhtbEh0dHBSZXF1ZXN0UmVz
b3VyY2UpCi0gICAgICAgICAgICByZXR1cm4gS0pTOjpVU3RyaW5nKHhtbEh0dHBSZXF1ZXN0UmVz
b3VyY2UtPnNvdXJjZVN0cmluZyk7CisgICAgICAgICAgICByZXR1cm4gSlNDOjpVU3RyaW5nKHht
bEh0dHBSZXF1ZXN0UmVzb3VyY2UtPnNvdXJjZVN0cmluZyk7CiAKICAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZTsKQEAg
LTUxOSw3ICs1MTksNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRSZXNvdXJjZURvY3VtZW50Tm9k
CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTRE9NV2luZG93U2hlbGwocmVzb3VyY2UtPmZy
YW1lLmdldCgpKS0+d2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAotICAgIEtKUzo6SlNMb2NrIGxv
Y2soZmFsc2UpOworICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgIEpTVmFsdWVSZWYg
ZG9jdW1lbnRWYWx1ZSA9IHRvUmVmKEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6d3JhcChleGVj
LCB0b0pTKGV4ZWMsIGRvY3VtZW50KSkpOwogICAgIHJldHVybiBkb2N1bWVudFZhbHVlOwogfQpA
QCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNlYXJjaChKU0NvbnRleHRSZWYg
Y3QKICAgICAgICAgaWYgKG5ld1N0YXJ0ID09IHN0YXJ0VmlzaWJsZVBvc2l0aW9uKHNlYXJjaFJh
bmdlLmdldCgpLCBET1dOU1RSRUFNKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIEtK
Uzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgICAgICBKU0M6OkpTTG9jayBsb2NrKGZhbHNlKTsK
ICAgICAgICAgSlNWYWx1ZVJlZiBhcmcwID0gdG9SZWYodG9KUyh0b0pTKGN0eCksIHJlc3VsdFJh
bmdlLmdldCgpKSk7CiAgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY3R4LCBwdXNoRnVu
Y3Rpb24sIHJlc3VsdCwgMSwgJmFyZzAsIGV4Y2VwdGlvbik7CiAgICAgICAgIGlmIChleGNlcHRp
b24gJiYgKmV4Y2VwdGlvbikKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Zm9jdXNOb2RlKCkKICAgICBKU1ZhbHVlUmVmIGFyZzA7CiAKICAgICB7Ci0gICAg
ICAgIEtKUzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgICAgICBKU0M6OkpTTG9jayBsb2NrKGZh
bHNlKTsKICAgICAgICAgYXJnMCA9IHRvUmVmKEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6d3Jh
cChleGVjLCB0b0pTKGV4ZWMsIG1fbm9kZVRvRm9jdXMuZ2V0KCkpKSk7CiAgICAgfQogCkBAIC0x
Mzg0LDcgKzEzODQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFdpbmRv
CiAgICAgSlNWYWx1ZVJlZiBhcmcwOwogCiAgICAgewotICAgICAgICBLSlM6OkpTTG9jayBsb2Nr
KGZhbHNlKTsKKyAgICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CiAgICAgICAgIGFyZzAg
PSB0b1JlZihKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoZXhlYywgd2luKSk7CiAgICAg
fQogCkBAIC0xOTU2LDcgKzE5NTYsNyBAQCBKU09iamVjdFJlZiBJbnNwZWN0b3JDb250cm9sbGVy
OjphZGREYXRhCiAgICAgSlNWYWx1ZVJlZiBkYXRhYmFzZTsKIAogICAgIHsKLSAgICAgICAgS0pT
OjpKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwog
ICAgICAgICBkYXRhYmFzZSA9IHRvUmVmKEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6d3JhcChl
eGVjLCB0b0pTKGV4ZWMsIHJlc291cmNlLT5kYXRhYmFzZS5nZXQoKSkpKTsKICAgICB9CiAKQEAg
LTIzNDUsNyArMjM0NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRp
bmcKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgS0pTOjpVU3RyaW5n
JiBzb3VyY2VTdHJpbmcpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIEpTQzo6VVN0cmlu
ZyYgc291cmNlU3RyaW5nKQogewogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CkluZGV4OiBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmgJKHJldmlzaW9uIDM2MjYyKQorKysg
V2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NyArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFByb2Zp
bGU7CiAgICAgY2xhc3MgVVN0cmluZzsKIH0KQEAgLTEwNSwxNSArMTA1LDE1IEBAIHB1YmxpYzoK
ICAgICBib29sIHdpbmRvd1Zpc2libGUoKTsKICAgICB2b2lkIHNldFdpbmRvd1Zpc2libGUoYm9v
bCB2aXNpYmxlID0gdHJ1ZSwgYm9vbCBhdHRhY2hlZCA9IGZhbHNlKTsKIAotICAgIHZvaWQgYWRk
TWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIEtKUzo6RXhlY1N0
YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1bWVudHMsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlSUQpOworICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShN
ZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpB
cmdMaXN0JiBhcmd1bWVudHMsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlSUQpOwogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNz
YWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCk7CiAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwog
ICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wpOwogCi0gICAgdm9pZCBhZGRQcm9maWxl
KFBhc3NSZWZQdHI8S0pTOjpQcm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgS0pT
OjpVU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZvaWQgYWRkUHJvZmlsZU1lc3NhZ2VUb0NvbnNv
bGUoUGFzc1JlZlB0cjxLSlM6OlByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IEtKUzo6VVN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2b2lkIGFkZFNjcmlwdFBy
b2ZpbGUoS0pTOjpQcm9maWxlKiBwcm9maWxlKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEtK
Uzo6UHJvZmlsZT4gPiYgcHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGVzOyB9Cisg
ICAgdm9pZCBhZGRQcm9maWxlKFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwpOworICAgIHZvaWQgYWRkUHJv
ZmlsZU1lc3NhZ2VUb0NvbnNvbGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHBycFByb2ZpbGUs
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IEpTQzo6VVN0cmluZyYgc291cmNlVVJMKTsKKyAg
ICB2b2lkIGFkZFNjcmlwdFByb2ZpbGUoSlNDOjpQcm9maWxlKiBwcm9maWxlKTsKKyAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPEpTQzo6UHJvZmlsZT4gPiYgcHJvZmlsZXMoKSBjb25zdCB7IHJldHVy
biBtX3Byb2ZpbGVzOyB9CiAKICAgICB2b2lkIGF0dGFjaFdpbmRvdygpOwogICAgIHZvaWQgZGV0
YWNoV2luZG93KCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGludCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZhaWxM
b2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBLSlM6OlVTdHJpbmcmIHNvdXJjZVN0cmluZyk7
CisgICAgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBKU0M6OlVTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAKICNpZiBFTkFCTEUo
REFUQUJBU0UpCiAgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UqLCBjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwpA
QCAtMTc1LDEyICsxNzUsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdo
dChHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICAKLSAgICB2b2lkIGNvdW50KGNvbnN0IEtK
Uzo6VVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlSUQpOworICAgIHZvaWQgY291bnQoY29uc3QgSlNDOjpVU3RyaW5nJiB0aXRsZSwgdW5zaWdu
ZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CiAKLSAgICB2b2lkIHN0YXJ0
VGltaW5nKGNvbnN0IEtKUzo6VVN0cmluZyYgdGl0bGUpOwotICAgIGJvb2wgc3RvcFRpbWluZyhj
b25zdCBLSlM6OlVTdHJpbmcmIHRpdGxlLCBkb3VibGUmIGVsYXBzZWQpOworICAgIHZvaWQgc3Rh
cnRUaW1pbmcoY29uc3QgSlNDOjpVU3RyaW5nJiB0aXRsZSk7CisgICAgYm9vbCBzdG9wVGltaW5n
KGNvbnN0IEpTQzo6VVN0cmluZyYgdGl0bGUsIGRvdWJsZSYgZWxhcHNlZCk7CiAKLSAgICB2b2lk
IHN0YXJ0R3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIEtKUzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBLSlM6OkFyZ0xpc3QmIGFyZ3VtZW50cywgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpOworICAgIHZvaWQgc3RhcnRHcm91cChNZXNzYWdlU291cmNlIHNv
dXJjZSwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJndW1lbnRz
LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgdm9p
ZCBlbmRHcm91cChNZXNzYWdlU291cmNlIHNvdXJjZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCiBwcml2YXRlOgpAQCAtMjE4LDggKzIxOCw4IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNob3dXaW5kb3coKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQ
YXJzZVNvdXJjZShLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6U291cmNlUHJvdmlkZXImIHNv
dXJjZSwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgS0pTOjpVU3RyaW5nJiBzb3VyY2VV
UkwsIGludCBzb3VyY2VJRCk7Ci0gICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2Uo
S0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OlNvdXJjZVByb3ZpZGVyJiBzb3VyY2UsIGludCBz
dGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0IEtKUzo6VVN0cmluZyYgc291cmNlVVJMLCBpbnQgZXJy
b3JMaW5lLCBjb25zdCBLSlM6OlVTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgdmlydHVhbCB2
b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpTb3VyY2VQcm92
aWRlciYgc291cmNlLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBKU0M6OlVTdHJpbmcm
IHNvdXJjZVVSTCwgaW50IHNvdXJjZUlEKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJz
ZVNvdXJjZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6U291cmNlUHJvdmlkZXImIHNvdXJj
ZSwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkws
IGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUGF1c2UoKTsKIAogICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKQEAg
LTIzMSw3ICsyMzEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2tub3duUmVz
b3VyY2VzOwogICAgIEZyYW1lUmVzb3VyY2VzTWFwIG1fZnJhbWVSZXNvdXJjZXM7CiAgICAgVmVj
dG9yPENvbnNvbGVNZXNzYWdlKj4gbV9jb25zb2xlTWVzc2FnZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxLSlM6OlByb2ZpbGU+ID4gbV9wcm9maWxlczsKKyAgICBWZWN0b3I8UmVmUHRyPEpTQzo6UHJv
ZmlsZT4gPiBtX3Byb2ZpbGVzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+IG1fdGltZXM7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtX2NvdW50czsKICNpZiBFTkFCTEUoREFU
QUJBU0UpCkluZGV4OiBXZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAz
NjI2MikKKysrIFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPGtqcy9KU09iamVjdC5oPgogI2luY2x1
ZGUgPGtqcy9KU1ZhbHVlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDcgKzUyLDcgQEAgSmF2YVNj
cmlwdENhbGxGcmFtZSogSmF2YVNjcmlwdENhbGxGcmFtZQogICAgIHJldHVybiBtX2NhbGxlci5n
ZXQoKTsKIH0KIAotY29uc3QgS0pTOjpTY29wZUNoYWluTm9kZSogSmF2YVNjcmlwdENhbGxGcmFt
ZTo6c2NvcGVDaGFpbigpIGNvbnN0Citjb25zdCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBKYXZhU2Ny
aXB0Q2FsbEZyYW1lOjpzY29wZUNoYWluKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9pc1ZhbGlk
KTsKICAgICBpZiAoIW1faXNWYWxpZCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0Q2Fs
bEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0phdmFTY3JpcHRDYWxsRnJhbWUu
aAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdENhbGxGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxKYXZhU2Ny
aXB0Q2FsbEZyYW1lPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxK
YXZhU2NyaXB0Q2FsbEZyYW1lPiBjcmVhdGUoY29uc3QgS0pTOjpEZWJ1Z2dlckNhbGxGcmFtZSYg
ZGVidWdnZXJDYWxsRnJhbWUsIFBhc3NSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gY2FsbGVy
LCBpbnQgc291cmNlSUQsIGludCBsaW5lKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKYXZh
U2NyaXB0Q2FsbEZyYW1lPiBjcmVhdGUoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgZGVi
dWdnZXJDYWxsRnJhbWUsIFBhc3NSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gY2FsbGVyLCBp
bnQgc291cmNlSUQsIGludCBsaW5lKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEphdmFTY3JpcHRDYWxsRnJhbWUoZGVidWdnZXJDYWxsRnJhbWUsIGNhbGxlciwg
c291cmNlSUQsIGxpbmUpKTsKICAgICAgICAgfQpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgaW50IHNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZUlEOyB9CiAgICAgICAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9saW5l
OyB9Ci0gICAgICAgIHZvaWQgdXBkYXRlKGNvbnN0IEtKUzo6RGVidWdnZXJDYWxsRnJhbWUmIGRl
YnVnZ2VyQ2FsbEZyYW1lLCBpbnQgc291cmNlSUQsIGludCBsaW5lKQorICAgICAgICB2b2lkIHVw
ZGF0ZShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50
IHNvdXJjZUlELCBpbnQgbGluZSkKICAgICAgICAgewogICAgICAgICAgICAgbV9kZWJ1Z2dlckNh
bGxGcmFtZSA9IGRlYnVnZ2VyQ2FsbEZyYW1lOwogICAgICAgICAgICAgbV9saW5lID0gbGluZTsK
QEAgLTU3LDE2ICs1NywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAg
ICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lKCkgY29uc3Q7Ci0gICAgICAgIEtKUzo6RGVidWdnZXJD
YWxsRnJhbWU6OlR5cGUgdHlwZSgpIGNvbnN0OwotICAgICAgICBjb25zdCBLSlM6OlNjb3BlQ2hh
aW5Ob2RlKiBzY29wZUNoYWluKCkgY29uc3Q7CisgICAgICAgIEpTQzo6RGVidWdnZXJDYWxsRnJh
bWU6OlR5cGUgdHlwZSgpIGNvbnN0OworICAgICAgICBjb25zdCBKU0M6OlNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluKCkgY29uc3Q7CiAKLSAgICAgICAgS0pTOjpKU09iamVjdCogdGhpc09iamVj
dCgpIGNvbnN0OwotICAgICAgICBLSlM6OkpTVmFsdWUqIGV2YWx1YXRlKGNvbnN0IEtKUzo6VVN0
cmluZyYgc2NyaXB0LCBLSlM6OkpTVmFsdWUqJiBleGNlcHRpb24pIGNvbnN0OworICAgICAgICBK
U0M6OkpTT2JqZWN0KiB0aGlzT2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEpTQzo6SlNWYWx1ZSog
ZXZhbHVhdGUoY29uc3QgSlNDOjpVU3RyaW5nJiBzY3JpcHQsIEpTQzo6SlNWYWx1ZSomIGV4Y2Vw
dGlvbikgY29uc3Q7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEphdmFTY3JpcHRD
YWxsRnJhbWUoY29uc3QgS0pTOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIFBhc3NSZWZQdHI8SmF2YVNj
cmlwdENhbGxGcmFtZT4gY2FsbGVyLCBpbnQgc291cmNlSUQsIGludCBsaW5lKTsKKyAgICAgICAg
SmF2YVNjcmlwdENhbGxGcmFtZShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgUGFzc1Jl
ZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBjYWxsZXIsIGludCBzb3VyY2VJRCwgaW50IGxpbmUp
OwogCi0gICAgICAgIEtKUzo6RGVidWdnZXJDYWxsRnJhbWUgbV9kZWJ1Z2dlckNhbGxGcmFtZTsK
KyAgICAgICAgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSBtX2RlYnVnZ2VyQ2FsbEZyYW1lOwogICAg
ICAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gbV9jYWxsZXI7CiAgICAgICAgIGludCBt
X3NvdXJjZUlEOwogICAgICAgICBpbnQgbV9saW5lOwpJbmRleDogV2ViQ29yZS9wYWdlL0phdmFT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0phdmFTY3Jp
cHREZWJ1Z0xpc3RlbmVyLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9wYWdlL0phdmFT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNp
Zm5kZWYgSmF2YVNjcmlwdERlYnVnTGlzdGVuZXJfaAogI2RlZmluZSBKYXZhU2NyaXB0RGVidWdM
aXN0ZW5lcl9oCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
RGVidWdnZXJDYWxsRnJhbWU7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIFNvdXJj
ZVByb3ZpZGVyOwpAQCAtNDUsOCArNDUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIH5KYXZhU2NyaXB0RGVidWdMaXN0ZW5lcigpIHsgfQogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0
IEtKUzo6U291cmNlUHJvdmlkZXImIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29u
c3QgS0pTOjpVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBzb3VyY2VJRCkgPSAwOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtK
Uzo6U291cmNlUHJvdmlkZXImIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3Qg
S0pTOjpVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBlcnJvckxpbmUsIGNvbnN0IEtKUzo6VVN0cmlu
ZyYgZXJyb3JNZXNzYWdlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJj
ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6U291cmNlUHJvdmlkZXImIHNvdXJjZSwgaW50
IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBz
b3VyY2VJRCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6U291cmNlUHJvdmlkZXImIHNvdXJjZSwgaW50IHN0
YXJ0aW5nTGluZU51bWJlciwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBlcnJv
ckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRQYXVzZSgpID0gMDsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
SmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvSmF2
YVNjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL3BhZ2Uv
SmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBA
QAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFt
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCBKYXZhU2NyaXB0Q2FsbEZyYW1l
KiBKYXZhU2NyaXB0RGVidWdTZXJ2CiAgICAgcmV0dXJuIG1fY3VycmVudENhbGxGcmFtZS5nZXQo
KTsKIH0KIAotc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5l
clNldCYgbGlzdGVuZXJzLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEtKUzo6U291cmNlUHJvdmlk
ZXImIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIGludCBzb3VyY2VJRCkKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoY29u
c3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OlNv
dXJjZVByb3ZpZGVyJiBzb3VyY2UsIGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMLCBpbnQgc291cmNlSUQpCiB7CiAgICAgVmVjdG9yPEphdmFTY3JpcHREZWJ1
Z0xpc3RlbmVyKj4gY29weTsKICAgICBjb3B5VG9WZWN0b3IobGlzdGVuZXJzLCBjb3B5KTsKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdERlYnVnU2VydmVyLmgJKHJldmlzaW9uIDM2MjYyKQorKysg
V2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRGVi
dWdnZXJDYWxsRnJhbWU7CiB9CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7CiAgICAgY2xhc3MgSmF2YVNjcmlwdERl
YnVnTGlzdGVuZXI7CiAKLSAgICBjbGFzcyBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIgOiBLSlM6OkRl
YnVnZ2VyIHsKKyAgICBjbGFzcyBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIgOiBKU0M6OkRlYnVnZ2Vy
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBKYXZhU2NyaXB0RGVidWdTZXJ2ZXImIHNo
YXJlZCgpOwogCkBAIC05NSwxNCArOTUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhKYXZhU2NyaXB0RXhlY3V0aW9uQ2Fs
bGJhY2ssIFBhZ2UqKTsKICAgICAgICAgdm9pZCBwYXVzZUlmTmVlZGVkKFBhZ2UqKTsKIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEtKUzo6RXhlY1N0YXRlKiwgaW50IHNvdXJj
ZUlELCBjb25zdCBLSlM6OlVTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgS0pTOjpTb3VyY2VQcm92
aWRlciYgc291cmNlLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBpbnQgZXJyb3JMaW5lLCBjb25z
dCBLSlM6OlVTdHJpbmcmIGVycm9yTXNnKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVu
dChjb25zdCBLSlM6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlcik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChjb25zdCBLSlM6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJjZUlELCBpbnQgZmlyc3RMaW5lKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEtKUzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlv
bihjb25zdCBLSlM6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlcik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgS0pT
OjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJZCwgaW50IGxpbmVubyk7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBLSlM6OkRlYnVnZ2VyQ2FsbEZy
YW1lJiwgaW50IHNvdXJjZUlkLCBpbnQgbGluZW5vKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWNoQnJlYWtwb2ludChjb25zdCBLSlM6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJj
ZUlkLCBpbnQgbGluZW5vKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0M6
OkV4ZWNTdGF0ZSosIGludCBzb3VyY2VJRCwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkws
IGNvbnN0IEpTQzo6U291cmNlUHJvdmlkZXImIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGluZU51bWJl
ciwgaW50IGVycm9yTGluZSwgY29uc3QgSlNDOjpVU3RyaW5nJiBlcnJvck1zZyk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0
ZW1lbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJRCwgaW50IGZp
cnN0TGluZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXR1cm5FdmVudChjb25zdCBKU0M6OkRl
YnVnZ2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4
ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNlSWQs
IGludCBsaW5lbm8pOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29u
c3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJZCwgaW50IGxpbmVubyk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZSYsIGludCBzb3VyY2VJZCwgaW50IGxpbmVubyk7CiAKICAgICAgICAgdHlwZWRl
ZiBIYXNoTWFwPFBhZ2UqLCBMaXN0ZW5lclNldCo+IFBhZ2VMaXN0ZW5lcnNNYXA7CiAgICAgICAg
IFBhZ2VMaXN0ZW5lcnNNYXAgbV9wYWdlTGlzdGVuZXJzTWFwOwpJbmRleDogV2ViQ29yZS9wYWdl
L0phdmFTY3JpcHRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvSmF2YVNj
cmlwdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvcGFnZS9KYXZhU2Ny
aXB0UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRl
IDxranMvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxranMvSlNWYWx1ZS5oPgogCi11c2luZyBuYW1l
c3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkluZGV4OiBXZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdFByb2ZpbGUuaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJD
b3JlL3BhZ2UvSmF2YVNjcmlwdFByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAKLW5hbWVzcGFjZSBL
SlMgeworbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEpT
VmFsdWU7CiAgICAgY2xhc3MgUHJvZmlsZTsKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEtK
UyB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIEtKUzo6SlNWYWx1ZSogdG9KUyhLSlM6
OkV4ZWNTdGF0ZSosIEtKUzo6UHJvZmlsZSopOworICAgIEpTQzo6SlNWYWx1ZSogdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvZmlsZSopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
SW5kZXg6IFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCShyZXZpc2lvbiAzNjI2
MikKKysrIFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8a2pzL0pTTG9jay5oPgogI2luY2x1ZGUg
PGtqcy9KU1ZhbHVlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIEpT
VmFsdWVSZWYgZ2V0TGluZU51bWJlcihKU0NvbnRleAogCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRU
b3RhbFRpbWUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgS0pTOjpK
U0xvY2sgbG9jayhmYWxzZSk7CisgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CiAKICAgICBp
ZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNs
YXNzKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKQEAgLTky
LDcgKzkyLDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0VG90YWxUaW1lKEpTQ29udGV4dAogCiBz
dGF0aWMgSlNWYWx1ZVJlZiBnZXRTZWxmVGltZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKIHsKLSAgICBLSlM6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICBKU0M6OkpTTG9jayBs
b2NrKGZhbHNlKTsKIAogICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNP
YmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjdHgpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFNl
bGZUaW1lKEpTQ29udGV4dFIKIAogc3RhdGljIEpTVmFsdWVSZWYgZ2V0VG90YWxQZXJjZW50KEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIEtKUzo6SlNMb2NrIGxvY2so
ZmFsc2UpOworICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogCiAgICAgaWYgKCFKU1ZhbHVl
SXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CkBAIC0xMTQsNyArMTE0LDcg
QEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0VG90YWxQZXJjZW50KEpTQ29udAogCiBzdGF0aWMgSlNW
YWx1ZVJlZiBnZXRTZWxmUGVyY2VudChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKLSAgICBLSlM6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICBKU0M6OkpTTG9jayBsb2NrKGZh
bHNlKTsKIAogICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3Qs
IFByb2ZpbGVOb2RlQ2xhc3MoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFNlbGZQZXJj
ZW50KEpTQ29udGUKIAogc3RhdGljIEpTVmFsdWVSZWYgZ2V0TnVtYmVyT2ZDYWxscyhKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICBLSlM6OkpTTG9jayBsb2NrKGZhbHNl
KTsKKyAgICBKU0M6OkpTTG9jayBsb2NrKGZhbHNlKTsKIAogICAgIGlmICghSlNWYWx1ZUlzT2Jq
ZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIGdldE51bWJlck9mQ2FsbHMoSlNDb24KIAogc3RhdGljIEpTVmFsdWVS
ZWYgZ2V0Q2hpbGRyZW4oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
SlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAg
S0pTOjpKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CiAK
ICAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxl
Tm9kZUNsYXNzKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsK
QEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRDaGlsZHJlbihKU0NvbnRl
eHRSCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFZpc2libGUoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCiB7Ci0gICAgS0pTOjpKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgSlNDOjpK
U0xvY2sgbG9jayhmYWxzZSk7CiAKICAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4
LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY3R4KTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0UHJvZmls
ZU5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdFByb2ZpbGVOb2Rl
LmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9wYWdlL0phdmFTY3JpcHRQcm9maWxlTm9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Jhc2UuaD4KIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgUHJvZmlsZU5vZGU7CiAgICAgY2xhc3MgSlNW
YWx1ZTsKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBKU0NsYXNzUmVmIFByb2ZpbGVOb2RlQ2xhc3MoKTsKLSAgICBLSlM6OkpTVmFs
dWUqIHRvSlMoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OlByb2ZpbGVOb2RlKik7CisgICAgSlNDOjpK
U1ZhbHVlKiB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9maWxlTm9kZSopOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBQ
YWdlOjp2aXNpdGVkU3RhdGVDaGFuZ2VkKFBhZ2VHcm91cAogICAgIH0KIH0KIAotdm9pZCBQYWdl
OjpzZXREZWJ1Z2dlckZvckFsbFBhZ2VzKEtKUzo6RGVidWdnZXIqIGRlYnVnZ2VyKQordm9pZCBQ
YWdlOjpzZXREZWJ1Z2dlckZvckFsbFBhZ2VzKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQogewog
ICAgIEFTU0VSVChhbGxQYWdlcyk7CiAKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIFBhZ2U6OnNl
dERlYnVnZ2VyRm9yQWxsUGFnZXMoS0pTOjpECiAgICAgICAgICgqaXQpLT5zZXREZWJ1Z2dlcihk
ZWJ1Z2dlcik7CiB9CiAKLXZvaWQgUGFnZTo6c2V0RGVidWdnZXIoS0pTOjpEZWJ1Z2dlciogZGVi
dWdnZXIpCit2b2lkIFBhZ2U6OnNldERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQog
ewogICAgIGlmIChtX2RlYnVnZ2VyID09IGRlYnVnZ2VyKQogICAgICAgICByZXR1cm47CkluZGV4
OiBXZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmgJ
KHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgSElOU1RBTkNFX18qIEhJTlNUQU5DRTsK
ICNlbmRpZgogCi1uYW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERl
YnVnZ2VyOwogfQogCkBAIC0xNDgsOSArMTQ4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIGNoYW5nZVBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudENvdW50KGludCBkZWx0YSk7
CiAgICAgICAgIHVuc2lnbmVkIHBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudENvdW50KCk7CiAKLSAg
ICAgICAgc3RhdGljIHZvaWQgc2V0RGVidWdnZXJGb3JBbGxQYWdlcyhLSlM6OkRlYnVnZ2VyKik7
Ci0gICAgICAgIHZvaWQgc2V0RGVidWdnZXIoS0pTOjpEZWJ1Z2dlciopOwotICAgICAgICBLSlM6
OkRlYnVnZ2VyKiBkZWJ1Z2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KKyAgICAg
ICAgc3RhdGljIHZvaWQgc2V0RGVidWdnZXJGb3JBbGxQYWdlcyhKU0M6OkRlYnVnZ2VyKik7Cisg
ICAgICAgIHZvaWQgc2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopOworICAgICAgICBKU0M6OkRl
YnVnZ2VyKiBkZWJ1Z2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KIAogI2lmIFBM
QVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKFdYKSAmJiBQTEFURk9STShXSU5fT1MpKSB8fCAoUExB
VEZPUk0oUVQpICYmIGRlZmluZWQoUV9XU19XSU4pKQogICAgICAgICAvLyBUaGUgZ2xvYmFsIERM
TCBvciBhcHBsaWNhdGlvbiBpbnN0YW5jZSB1c2VkIGZvciBhbGwgd2luZG93cy4KQEAgLTIxMyw3
ICsyMTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE93blB0cjxQYWdlR3JvdXA+
IG1fc2luZ2xlUGFnZUdyb3VwOwogICAgICAgICBQYWdlR3JvdXAqIG1fZ3JvdXA7CiAKLSAgICAg
ICAgS0pTOjpEZWJ1Z2dlciogbV9kZWJ1Z2dlcjsKKyAgICAgICAgSlNDOjpEZWJ1Z2dlciogbV9k
ZWJ1Z2dlcjsKICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIG1fcGVuZGluZ1VubG9hZEV2ZW50
Q291bnQ7CiAgICAgICAgIHVuc2lnbmVkIG1fcGVuZGluZ0JlZm9yZVVubG9hZEV2ZW50Q291bnQ7
CkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9tYWMvRnJhbWVNYWMubW0JKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9wYWdl
L21hYy9GcmFtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQAogIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAotdXNpbmcgS0pTOjpKU0xvY2s7Cit1c2luZyBKU0M6OkpTTG9j
azsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAkocmV2aXNpb24gMzYyNjIp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1
MSw3IEBAIHB1YmxpYzoKICAgICBmcmllbmQgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1
YWwoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmKTsKICAgICAKICAgICBvcGVyYXRvciBjb25zdCBT
dHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSAgICBvcGVyYXRvciBLSlM6OlVT
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIG9wZXJhdG9yIEpTQzo6VVN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAKICAgICB1bnNpZ25lZCBob3N0U3Rh
cnQoKSBjb25zdCB7IHJldHVybiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJTdGFydCkgPyBtX3Bh
c3N3b3JkRW5kIDogbV9wYXNzd29yZEVuZCArIDE7IH0KICAgICB1bnNpZ25lZCBob3N0RW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9ob3N0RW5kOyB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQv
QXRvbWljU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRv
bWljU3RyaW5nLmNwcAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQv
QXRvbWljU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKICNpZiBVU0UoSlNDKQotdXNpbmcgS0pTOjpJZGVudGlmaWVy
OwotdXNpbmcgS0pTOjpVU3RyaW5nOwordXNpbmcgSlNDOjpJZGVudGlmaWVyOwordXNpbmcgSlND
OjpVU3RyaW5nOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIxNyw3ICsyMTcs
NyBAQCB2b2lkIEF0b21pY1N0cmluZzo6cmVtb3ZlKFN0cmluZ0ltcGwqIHIpCiB9CiAKICNpZiBV
U0UoSlNDKQotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZChjb25zdCBL
SlM6OklkZW50aWZpZXImIGlkZW50aWZpZXIpCitQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IEF0b21p
Y1N0cmluZzo6YWRkKGNvbnN0IEpTQzo6SWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBp
ZiAoaWRlbnRpZmllci5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzQsNyArMjM0
LDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZAogICAgIHJldHVy
biBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0KTsKIH0KIAotUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBBdG9taWNTdHJpbmc6OmFkZChjb25zdCBLSlM6OlVTdHJpbmcmIHVzdHJpbmcpCitQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IEF0b21pY1N0cmluZzo6YWRkKGNvbnN0IEpTQzo6VVN0cmluZyYgdXN0
cmluZykKIHsKICAgICBpZiAodXN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0yNTIsNyArMjUyLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFk
ZAogfQogI2VuZGlmCiAKLUF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZChjb25z
dCBLSlM6OklkZW50aWZpZXImIGlkZW50aWZpZXIpCitBdG9taWNTdHJpbmdJbXBsKiBBdG9taWNT
dHJpbmc6OmZpbmQoY29uc3QgSlNDOjpJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIGlm
IChpZGVudGlmaWVyLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL3RleHQvQXRvbWljU3RyaW5nLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwyMiArMzUsMjIg
QEAgcHVibGljOgogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkg
OiBtX3N0cmluZyhhZGQocywgbGVuZ3RoKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IFVD
aGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAjaWYgVVNFKEpTQykKLSAgICBBdG9taWNT
dHJpbmcoY29uc3QgS0pTOjpVU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9Ci0gICAg
QXRvbWljU3RyaW5nKGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcykgOiBtX3N0cmluZyhhZGQocykp
IHsgfQorICAgIEF0b21pY1N0cmluZyhjb25zdCBKU0M6OlVTdHJpbmcmIHMpIDogbV9zdHJpbmco
YWRkKHMpKSB7IH0KKyAgICBBdG9taWNTdHJpbmcoY29uc3QgSlNDOjpJZGVudGlmaWVyJiBzKSA6
IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAjZW5kaWYKICAgICBBdG9taWNTdHJpbmcoU3RyaW5nSW1w
bCogaW1wKSA6IG1fc3RyaW5nKGFkZChpbXApKSB7IH0KICAgICBBdG9taWNTdHJpbmcoQXRvbWlj
U3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGltcCkgeyB9CiAgICAgQXRvbWljU3RyaW5nKGNv
bnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQocy5pbXBsKCkpKSB7IH0KIAogI2lmIFVTRShK
U0MpCi0gICAgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgS0pTOjpJZGVudGlm
aWVyJik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7CiAjZW5kaWYKIAogICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH07CiAKICNpZiBVU0UoSlNDKQotICAgIG9wZXJhdG9yIEtKUzo6VVN0
cmluZygpIGNvbnN0OworICAgIG9wZXJhdG9yIEpTQzo6VVN0cmluZygpIGNvbnN0OwogI2VuZGlm
CiAKICAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QXRvbWljU3RyaW5nSW1wbCAqPihtX3N0cmluZy5pbXBsKCkpOyB9CkBAIC0xMDYsOCArMTA2
LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29u
c3QgVUNoYXIqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5n
SW1wbCopOwogI2lmIFVTRShKU0MpCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
YWRkKGNvbnN0IEtKUzo6VVN0cmluZyYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGFkZChjb25zdCBLSlM6OklkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBhZGQoY29uc3QgSlNDOjpVU3RyaW5nJik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwogI2VuZGlmCiB9Owog
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1TdHJpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1TdHJpbmcuaAkocmV2aXNpb24gMzYy
NjIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1TdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKICAgICBTdHJpbmcoY29uc3QgVUNoYXIqKTsgLy8gU3BlY2lmaWNh
bGx5IGZvciBudWxsIHRlcm1pbmF0ZWQgVVRGLTE2CiAjaWYgVVNFKEpTQykKLSAgICBTdHJpbmco
Y29uc3QgS0pTOjpJZGVudGlmaWVyJik7Ci0gICAgU3RyaW5nKGNvbnN0IEtKUzo6VVN0cmluZyYp
OworICAgIFN0cmluZyhjb25zdCBKU0M6OklkZW50aWZpZXImKTsKKyAgICBTdHJpbmcoY29uc3Qg
SlNDOjpVU3RyaW5nJik7CiAjZW5kaWYKICAgICBTdHJpbmcoY29uc3QgY2hhciopOwogICAgIFN0
cmluZyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTc4LDcgKzc4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBTdHJpbmcgYWRvcHQoVmVjdG9yPFVDaGFyPiYgdmVjdG9yKSB7IHJl
dHVybiBTdHJpbmdJbXBsOjphZG9wdCh2ZWN0b3IpOyB9CiAKICNpZiBVU0UoSlNDKQotICAgIG9w
ZXJhdG9yIEtKUzo6VVN0cmluZygpIGNvbnN0OworICAgIG9wZXJhdG9yIEpTQzo6VVN0cmluZygp
IGNvbnN0OwogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vdGV4dC9TdHJpbmcuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vdGV4dC9TdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBACiAjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgogCiAjaWYgVVNFKEpTQykKLXVzaW5nIEtKUzo6SWRl
bnRpZmllcjsKLXVzaW5nIEtKUzo6VVN0cmluZzsKK3VzaW5nIEpTQzo6SWRlbnRpZmllcjsKK3Vz
aW5nIEpTQzo6VVN0cmluZzsKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAtODAx
LDcgKzgwMSw3IEBAIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgVUNoYXIqIGQKICAg
ICAgICAgYnl0ZXNbaV0gPSBkYXRhW2ldIDwgMHg3RiA/IGRhdGFbaV0gOiAnPyc7CiAgICAgYnl0
ZXNbbGVuZ3RoXSA9ICdcMCc7CiAgICAgY2hhciogZW5kOwotICAgIGRvdWJsZSB2YWwgPSBLSlM6
OnN0cnRvZChieXRlcy5kYXRhKCksICZlbmQpOworICAgIGRvdWJsZSB2YWwgPSBKU0M6OnN0cnRv
ZChieXRlcy5kYXRhKCksICZlbmQpOwogICAgIGlmIChvaykKICAgICAgICAgKm9rID0gKGVuZCA9
PSAwIHx8ICplbmQgPT0gJ1wwJyk7CiAgICAgcmV0dXJuIHZhbDsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vd2luL0JTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2lu
L0JTdHJpbmcuY3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luL0JT
dHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8Q29y
ZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ug
S0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQlN0cmluZy5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vd2luL0JTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAKIHR5cGVkZWYgd2NoYXJfdCogQlNU
UjsKIAotbmFtZXNwYWNlIEtKUyB7CituYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBVU3RyaW5n
OwogfQogCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQlN0
cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICAgICAgQlN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcm
KTsKICAgICAgICAgQlN0cmluZyhjb25zdCBLVVJMJik7Ci0gICAgICAgIEJTdHJpbmcoY29uc3Qg
S0pTOjpVU3RyaW5nJik7CisgICAgICAgIEJTdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJik7CiAj
aWYgUExBVEZPUk0oQ0YpCiAgICAgICAgIEJTdHJpbmcoQ0ZTdHJpbmdSZWYpOwogI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGx1Z2lucy9NaW1lVHlwZUFycmF5LmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9w
bHVnaW5zL01pbWVUeXBlQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1u
YW1lc3BhY2UgS0pTIHsKK25hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAg
ICBjbGFzcyBKU1ZhbHVlOwogfTsKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFBsdWdpbkRhdGE7CiAKICAgICAvLyBGSVhNRTogR2VuZXJhdGVkIEpTTWlt
ZVR5cGVBcnJheS5jcHAgZG9lc24ndCBpbmNsdWRlIEpTTWltZVR5cGUuaCBmb3IgdG9KUwotICAg
IEtKUzo6SlNWYWx1ZSogdG9KUyhLSlM6OkV4ZWNTdGF0ZSosIE1pbWVUeXBlKik7CisgICAgSlND
OjpKU1ZhbHVlKiB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgTWltZVR5cGUqKTsKIAogICAgIGNsYXNz
IE1pbWVUeXBlQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZDxNaW1lVHlwZUFycmF5PiB7CiAgICAg
cHVibGljOgpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGx1Z2lucy9QbHVnaW4uaAkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJDb3JlL3BsdWdp
bnMvUGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAotbmFtZXNwYWNlIEtK
UyB7CituYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSlNW
YWx1ZTsKIH07CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBTdHJpbmc7CiAKICAgICAvLyBGSVhNRTogR2VuZXJhdGVkIEpTUGx1Z2luLmNwcCBkb2Vzbid0
IGluY2x1ZGUgSlNNaW1lVHlwZS5oIGZvciB0b0pTCi0gICAgS0pTOjpKU1ZhbHVlKiB0b0pTKEtK
Uzo6RXhlY1N0YXRlKiwgTWltZVR5cGUqKTsKKyAgICBKU0M6OkpTVmFsdWUqIHRvSlMoSlNDOjpF
eGVjU3RhdGUqLCBNaW1lVHlwZSopOwogCiAgICAgY2xhc3MgUGx1Z2luRGF0YTsKIApJbmRleDog
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkFycmF5LmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEtK
UyB7CituYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIEV4ZWNT
dGF0ZTsKIH07CkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBQbHVnaW5EYXRhOwogCiAgICAgLy8gRklYTUU6IEdlbmVyYXRlZCBKU1BsdWdpbkFycmF5LmNw
cCBkb2Vzbid0IGluY2x1ZGUgSlNQbHVnaW4uaCBmb3IgdG9KUwotICAgIEtKUzo6SlNWYWx1ZSog
dG9KUyhLSlM6OkV4ZWNTdGF0ZSosIFBsdWdpbiopOworICAgIEpTQzo6SlNWYWx1ZSogdG9KUyhK
U0M6OkV4ZWNTdGF0ZSosIFBsdWdpbiopOwogCiAgICAgY2xhc3MgUGx1Z2luQXJyYXkgOiBwdWJs
aWMgUmVmQ291bnRlZDxQbHVnaW5BcnJheT4gewogICAgIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUv
cGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlldy5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMSArNjYsMTEgQEAKICNpbmNsdWRlIDxranMv
SlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKLXVzaW5nIEtKUzo6RXhl
Y1N0YXRlOwotdXNpbmcgS0pTOjpKU0xvY2s7Ci11c2luZyBLSlM6OkpTT2JqZWN0OwotdXNpbmcg
S0pTOjpKU1ZhbHVlOwotdXNpbmcgS0pTOjpVU3RyaW5nOwordXNpbmcgSlNDOjpFeGVjU3RhdGU7
Cit1c2luZyBKU0M6OkpTTG9jazsKK3VzaW5nIEpTQzo6SlNPYmplY3Q7Cit1c2luZyBKU0M6OkpT
VmFsdWU7Cit1c2luZyBKU0M6OlVTdHJpbmc7CiAKIHVzaW5nIHN0ZDo6bWluOwogCkBAIC0xNjEs
NyArMTYxLDcgQEAgYm9vbCBQbHVnaW5WaWV3OjpzdGFydCgpCiAgICAgTlBFcnJvciBucEVycjsK
ICAgICB7CiAgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwot
ICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7Cisg
ICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAg
ICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAgICAgbnBFcnIgPSBtX3BsdWdpbi0+
cGx1Z2luRnVuY3MoKS0+bmV3cCgoTlBNSU1FVHlwZSltX21pbWVUeXBlLmRhdGEoKSwgbV9pbnN0
YW5jZSwgbV9tb2RlLCBtX3BhcmFtQ291bnQsIG1fcGFyYW1OYW1lcywgbV9wYXJhbVZhbHVlcywg
TlVMTCk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwpAQCAtMjQzLDcgKzI0Myw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmUKICAgICAgICAgICAg
IC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNDgwNzQ2OT4gVGhpcyBzaG91bGQgYmUgc2VudCB3
aGVuIHRoZSBkb2N1bWVudCBoYXMgZmluaXNoZWQgbG9hZGluZwogICAgICAgICAgICAgaWYgKHJl
cXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSkgewogICAgICAgICAgICAgICAgIFBsdWdpblZpZXc6
OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwotICAgICAgICAgICAgICAgIEtKUzo6SlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBKU0M6
OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAgICAgICAgICAgICBtX3BsdWdpbi0+cGx1
Z2luRnVuY3MoKS0+dXJsbm90aWZ5KG1faW5zdGFuY2UsIHJlcXVlc3RVUkwuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgTlBSRVNfRE9ORSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpKTsKICAgICAgICAg
ICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lk
IFBsdWdpblZpZXc6OnNldEphdmFTY3JpcHRQYXVzZWQoYm9vCiAgICAgICAgIG1fcmVxdWVzdFRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotUGFzc1JlZlB0cjxLSlM6OkJpbmRpbmdzOjpJbnN0
YW5jZT4gUGx1Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKCkKK1Bhc3NSZWZQdHI8SlNDOjpCaW5k
aW5nczo6SW5zdGFuY2U+IFBsdWdpblZpZXc6OmJpbmRpbmdJbnN0YW5jZSgpCiB7CiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgTlBPYmplY3QqIG9iamVjdCA9IDA7CkBAIC00
NzUsNyArNDc1LDcgQEAgUGFzc1JlZlB0cjxLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZT4gUGx1Zwog
ICAgIE5QRXJyb3IgbnBFcnI7CiAgICAgewogICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50
UGx1Z2luVmlldyh0aGlzKTsKLSAgICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9w
QWxsTG9ja3MoZmFsc2UpOworICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BB
bGxMb2NrcyhmYWxzZSk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgICAg
IG5wRXJyID0gbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZhbHVlKG1faW5zdGFuY2UsIE5Q
UFZwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QsICZvYmplY3QpOwogICAgICAgICBzZXRDYWxsaW5n
UGx1Z2luKGZhbHNlKTsKQEAgLTQ4NSw4ICs0ODUsOCBAQCBQYXNzUmVmUHRyPEtKUzo6QmluZGlu
Z3M6Okluc3RhbmNlPiBQbHVnCiAgICAgaWYgKG5wRXJyICE9IE5QRVJSX05PX0VSUk9SIHx8ICFv
YmplY3QpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEtKUzo6QmluZGluZ3M6OlJv
b3RPYmplY3Q+IHJvb3QgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS0+Y3JlYXRlUm9vdE9iamVj
dCh0aGlzKTsKLSAgICBSZWZQdHI8S0pTOjpCaW5kaW5nczo6SW5zdGFuY2U+IGluc3RhbmNlID0g
S0pTOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUob2JqZWN0LCByb290LnJlbGVhc2UoKSk7
CisgICAgUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IHJvb3QgPSBtX3BhcmVudEZy
YW1lLT5zY3JpcHQoKS0+Y3JlYXRlUm9vdE9iamVjdCh0aGlzKTsKKyAgICBSZWZQdHI8SlNDOjpC
aW5kaW5nczo6SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpj
cmVhdGUob2JqZWN0LCByb290LnJlbGVhc2UoKSk7CiAKICAgICBfTlBOX1JlbGVhc2VPYmplY3Qo
b2JqZWN0KTsKIApJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCShyZXZpc2lvbiAzNjI2MikKKysrIFdl
YkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcg
QEAgdHlwZWRlZiBIV05EIFBsYXRmb3JtUGx1Z2luV2lkZ2V0OwogdHlwZWRlZiBQbGF0Zm9ybVdp
ZGdldCBQbGF0Zm9ybVBsdWdpbldpZGdldDsKICNlbmRpZgogCi1uYW1lc3BhY2UgS0pTIHsKK25h
bWVzcGFjZSBKU0MgewogICAgIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAgICAgICAgIGNsYXNzIElu
c3RhbmNlOwogICAgIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgc2V0TlBXaW5kb3dSZWN0KGNvbnN0IEludFJlY3QmKTsKICAgICAgICAgc3Rh
dGljIFBsdWdpblZpZXcqIGN1cnJlbnRQbHVnaW5WaWV3KCk7CiAKLSAgICAgICAgUGFzc1JlZlB0
cjxLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZT4gYmluZGluZ0luc3RhbmNlKCk7CisgICAgICAgIFBh
c3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IGJpbmRpbmdJbnN0YW5jZSgpOwogCiAg
ICAgICAgIFBsdWdpblN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQog
CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAJKHJldmlzaW9uIDM2MjYy
KQorKysgV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjgsMTIgKzY4LDEyIEBACiAjaW5jbHVkZSA8Z2RrL2dka3dpbjMyLmg+CiAjZW5kaWYK
IAotdXNpbmcgS0pTOjpFeGVjU3RhdGU7Ci11c2luZyBLSlM6OkludGVycHJldGVyOwotdXNpbmcg
S0pTOjpKU0xvY2s7Ci11c2luZyBLSlM6OkpTT2JqZWN0OwotdXNpbmcgS0pTOjpKU1ZhbHVlOwot
dXNpbmcgS0pTOjpVU3RyaW5nOwordXNpbmcgSlNDOjpFeGVjU3RhdGU7Cit1c2luZyBKU0M6Oklu
dGVycHJldGVyOwordXNpbmcgSlNDOjpKU0xvY2s7Cit1c2luZyBKU0M6OkpTT2JqZWN0OwordXNp
bmcgSlNDOjpKU1ZhbHVlOwordXNpbmcgSlNDOjpVU3RyaW5nOwogCiB1c2luZyBzdGQ6Om1pbjsK
IApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiAKICAgICBBU1NFUlQocGFyZW50KCktPmlzRnJhbWVWaWV3KCkpOwogCiAgICAgaWYgKG1f
cGx1Z2luLT5wbHVnaW5GdW5jcygpLT5ldmVudCkgewotICAgICAgICBLSlM6OkpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CisgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9w
QWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICAgICAgbV9wbHVnaW4tPnBsdWdpbkZ1
bmNzKCktPmV2ZW50KG1faW5zdGFuY2UsICZucEV2ZW50KTsKICAgICB9CiAKQEAgLTE3MSw3ICsx
NzEsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5CiAgICAgCiAg
ICAgLyogRklYTUU6IFN5bnRoZXNpemUgYW4gWEV2ZW50IHRvIHBhc3MgdGhyb3VnaCAqLwogCi0g
ICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgIEpT
Qzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICBpZiAoIW1f
cGx1Z2luLT5wbHVnaW5GdW5jcygpLT5ldmVudChtX2luc3RhbmNlLCAmbnBFdmVudCkpCiAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6aGFuZGxlTW91c2VFdmVudChNb3VzZUUKICAgICAvKiBGSVhNRTogU3lu
dGhlc2l6ZSBhbiBYRXZlbnQgdG8gcGFzcyB0aHJvdWdoICovCiAgICAgSW50UG9pbnQgcCA9IHN0
YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVudCgpKS0+Y29udGVudHNUb1dpbmRvdyhJbnRQb2lu
dChldmVudC0+cGFnZVgoKSwgZXZlbnQtPnBhZ2VZKCkpKTsKIAotICAgIEtKUzo6SlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKKyAgICBKU0M6OkpTTG9jazo6RHJvcEFs
bExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CiAgICAgaWYgKCFtX3BsdWdpbi0+cGx1Z2luRnVu
Y3MoKS0+ZXZlbnQobV9pbnN0YW5jZSwgJm5wRXZlbnQpKQogICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKIH0KQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNl
dE5QV2luZG93UmVjdChjb25zdCBJCiAKICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCkt
PnNldHdpbmRvdykgewogICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0
aGlzKTsKLSAgICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFs
c2UpOworICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxz
ZSk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgICAgIG1fcGx1Z2luLT5w
bHVnaW5GdW5jcygpLT5zZXR3aW5kb3cobV9pbnN0YW5jZSwgJm1fbnBXaW5kb3cpOwogICAgICAg
ICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OnN0b3AoKQogICAgIEFTU0VSVChtX3N0cmVhbXMuaXNFbXB0eSgpKTsKIAogICAgIG1f
aXNTdGFydGVkID0gZmFsc2U7Ci0gICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxs
TG9ja3MoZmFsc2UpOworICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KGZhbHNlKTsKIAogICAgIC8vIENsZWFyIHRoZSB3aW5kb3cKICAgICBtX25wV2luZG93LndpbmRv
dyA9IDA7CkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojppbml0KCkKIAogICAg
IGlmIChtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUpIHsKICAgICAgICAgUGx1Z2lu
Vmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7Ci0gICAgICAgIEtKUzo6SlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2lu
KHRydWUpOwogICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUobV9pbnN0
YW5jZSwgTlBQVnBsdWdpbk5lZWRzWEVtYmVkLCAmbV9uZWVkc1hFbWJlZCk7CiAgICAgICAgIHNl
dENhbGxpbmdQbHVnaW4oZmFsc2UpOwpJbmRleDogV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZp
ZXdRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5j
cHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEyICs2MiwxMiBAQAogI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAotdXNpbmcgS0pTOjpFeGVjU3RhdGU7Ci11
c2luZyBLSlM6OkludGVycHJldGVyOwotdXNpbmcgS0pTOjpKU0xvY2s7Ci11c2luZyBLSlM6OkpT
T2JqZWN0OwotdXNpbmcgS0pTOjpKU1ZhbHVlOwotdXNpbmcgS0pTOjpVU3RyaW5nOwordXNpbmcg
SlNDOjpFeGVjU3RhdGU7Cit1c2luZyBKU0M6OkludGVycHJldGVyOwordXNpbmcgSlNDOjpKU0xv
Y2s7Cit1c2luZyBKU0M6OkpTT2JqZWN0OwordXNpbmcgSlNDOjpKU1ZhbHVlOwordXNpbmcgSlND
OjpVU3RyaW5nOwogCiB1c2luZyBzdGQ6Om1pbjsKIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0KGNvbnN0IEkKIAogICAgIGlmIChtX3BsdWdpbi0+
cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93KSB7CiAgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJl
bnRQbHVnaW5WaWV3KHRoaXMpOwotICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRy
b3BBbGxMb2NrcyhmYWxzZSk7CisgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJv
cEFsbExvY2tzKGZhbHNlKTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAg
ICAgbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPnNldHdpbmRvdyhtX2luc3RhbmNlLCAmbV9ucFdp
bmRvdyk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwpAQCAtMjM2LDcgKzIzNiw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6c3RvcCgpCiAKICAgICBtX2lzU3RhcnRlZCA9IGZhbHNlOwog
Ci0gICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAg
IEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKIAogICAgIC8v
IENsZWFyIHRoZSB3aW5kb3cKICAgICBtX25wV2luZG93LndpbmRvdyA9IDA7CkBAIC00NDYsNyAr
NDQ2LDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojppbml0KCkKIAogICAgIGlmIChtX3BsdWdpbi0+cGx1
Z2luRnVuY3MoKS0+Z2V0dmFsdWUpIHsKICAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBs
dWdpblZpZXcodGhpcyk7Ci0gICAgICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFs
bExvY2tzKGZhbHNlKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxs
TG9ja3MoZmFsc2UpOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAgICBt
X3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUobV9pbnN0YW5jZSwgTlBQVnBsdWdpbk5l
ZWRzWEVtYmVkLCAmbV9uZWVkc1hFbWJlZCk7CiAgICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFs
c2UpOwpJbmRleDogV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCShyZXZpc2lvbiAz
NjI2MikKKysrIFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDExICs4MSwxMSBAQCBzdGF0aWMgaW5saW5lIEhXTkQgd2luZG93SGFuZGxl
Rm9yUGxhdGZvCiAjZW5kaWYKIH0KIAotdXNpbmcgS0pTOjpFeGVjU3RhdGU7Ci11c2luZyBLSlM6
OkpTTG9jazsKLXVzaW5nIEtKUzo6SlNPYmplY3Q7Ci11c2luZyBLSlM6OkpTVmFsdWU7Ci11c2lu
ZyBLSlM6OlVTdHJpbmc7Cit1c2luZyBKU0M6OkV4ZWNTdGF0ZTsKK3VzaW5nIEpTQzo6SlNMb2Nr
OwordXNpbmcgSlNDOjpKU09iamVjdDsKK3VzaW5nIEpTQzo6SlNWYWx1ZTsKK3VzaW5nIEpTQzo6
VVN0cmluZzsKIAogdXNpbmcgc3RkOjptaW47CiAKQEAgLTMxOCw3ICszMTgsNyBAQCBib29sIFBs
dWdpblZpZXc6OmRpc3BhdGNoTlBFdmVudChOUEV2ZW50CiAgICAgICAgIHNob3VsZFBvcCA9IHRy
dWU7CiAgICAgfQogCi0gICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3Mo
ZmFsc2UpOworICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNl
KTsKICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgIGJvb2wgcmVzdWx0ID0gbV9wbHVn
aW4tPnBsdWdpbkZ1bmNzKCktPmV2ZW50KG1faW5zdGFuY2UsICZucEV2ZW50KTsKICAgICBzZXRD
YWxsaW5nUGx1Z2luKGZhbHNlKTsKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIFBsdWdpblZpZXc6
OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5CiAgICAgICAgIG5wRXZlbnQubFBhcmFtID0gMHg4MDAw
OwogICAgIH0KIAotICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZh
bHNlKTsKKyAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7
CiAgICAgaWYgKCFkaXNwYXRjaE5QRXZlbnQobnBFdmVudCkpCiAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwogfQpAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6
aGFuZGxlTW91c2VFdmVudChNb3VzZUUKIAogICAgIEhDVVJTT1IgY3VycmVudEN1cnNvciA9IDo6
R2V0Q3Vyc29yKCk7CiAKLSAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2Nr
cyhmYWxzZSk7CisgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFs
c2UpOwogICAgIGlmICghZGlzcGF0Y2hOUEV2ZW50KG5wRXZlbnQpKQogICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKIApAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6c2V0TlBXaW5kb3dSZWN0KGNvbnN0IEkKICAgICBtX25wV2luZG93LmNsaXBSZWN0LmJvdHRv
bSA9IHJlY3QuaGVpZ2h0KCk7CiAKICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPnNl
dHdpbmRvdykgewotICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2Nr
cyhmYWxzZSk7CisgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KGZhbHNlKTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICAgICAgbV9wbHVn
aW4tPnBsdWdpbkZ1bmNzKCktPnNldHdpbmRvdyhtX2luc3RhbmNlLCAmbV9ucFdpbmRvdyk7CiAg
ICAgICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6c3RvcCgpCiAgICAgICAgICAgICBTZXRXaW5kb3dMb25nUHRyKG1fd2luZG93
LCBHV0xQX1dORFBST0MsIChMT05HKW1fcGx1Z2luV25kUHJvYyk7CiAgICAgfQogCi0gICAgS0pT
OjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKIAogICAgIC8vIENsZWFyIHRo
ZSB3aW5kb3cKICAgICBtX25wV2luZG93LndpbmRvdyA9IDA7CkluZGV4OiBXZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5j
cHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShEb2N1bWVu
dCogZG9jdW1lbnQsIGMKICAgICBpZiAobV9uYW1lLmlzTnVsbCgpKQogICAgICAgICBtX25hbWUg
PSAiIjsKIAotICAgIEtKUzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIEpTQzo6aW5pdGlh
bGl6ZVRocmVhZGluZygpOwogICAgIC8vIERhdGFiYXNlIGNvZGUgdmlvbGF0ZXMgdGhlIG5vcm1h
bCBKU0NvcmUgY29udHJhY3QgYnkgY2FsbGluZyBqc1VucHJvdGVjdCBmcm9tIGEgc2Vjb25kYXJ5
IHRocmVhZCwgYW5kIHRodXMgbmVlZHMgYWRkaXRpb25hbCBsb2NraW5nLgogICAgIEpTRE9NV2lu
ZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC0+c2V0R0NQcm90ZWN0TmVlZHNMb2NraW5n
KCk7CiAKSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1
LDcgQEAgWE1MSHR0cFJlcXVlc3Q6OlN0YXRlIFhNTEh0dHBSZXF1ZXN0OjpyZQogICAgIHJldHVy
biBtX3N0YXRlOwogfQogCi1jb25zdCBLSlM6OlVTdHJpbmcmIFhNTEh0dHBSZXF1ZXN0OjpyZXNw
b25zZVRleHQoKSBjb25zdAorY29uc3QgSlNDOjpVU3RyaW5nJiBYTUxIdHRwUmVxdWVzdDo6cmVz
cG9uc2VUZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZXNwb25zZVRleHQ7CiB9CkBAIC03
NjUsNyArNzY1LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6bG9hZFJlcXVlc3RBc3luY2hybwog
ICAgICAgICAvLyBhbmQgdGhleSBhcmUgcmVmZXJlbmNlZCBieSB0aGUgSmF2YVNjcmlwdCB3cmFw
cGVyLgogICAgICAgICByZWYoKTsKIAotICAgICAgICBLSlM6OmdjUHJvdGVjdE51bGxUb2xlcmFu
dChTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NT2JqZWN0KHRoaXMpKTsKKyAgICAgICAgSlNDOjpn
Y1Byb3RlY3ROdWxsVG9sZXJhbnQoU2NyaXB0SW50ZXJwcmV0ZXI6OmdldERPTU9iamVjdCh0aGlz
KSk7CiAgICAgfQogfQogCkBAIC04MTgsNyArODE4LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
Y2xlYXJSZXNwb25zZSgpCiB7CiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsK
ICAgICB7Ci0gICAgICAgIEtKUzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgICAgICBKU0M6OkpT
TG9jayBsb2NrKGZhbHNlKTsKICAgICAgICAgbV9yZXNwb25zZVRleHQgPSAiIjsKICAgICB9CiAg
ICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKQEAgLTg3MiwxMCArODcyLDEwIEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRyb3BQcm90ZWN0aW9uKCkgICAKICAgICAvLyBjYW4ndCBiZSByZWNv
dXBlZCB1bnRpbCB0aGUgbG9hZCBpcyBkb25lLCBzbyBvbmx5CiAgICAgLy8gcmVwb3J0IHRoZSBl
eHRyYSBjb3N0IGF0IHRoYXQgcG9pbnQuCiAKLSAgICBLSlM6OkpTVmFsdWUqIHdyYXBwZXIgPSBT
Y3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NT2JqZWN0KHRoaXMpOworICAgIEpTQzo6SlNWYWx1ZSog
d3JhcHBlciA9IFNjcmlwdEludGVycHJldGVyOjpnZXRET01PYmplY3QodGhpcyk7CiAgICAgaWYg
KHdyYXBwZXIpIHsKLSAgICAgICAgS0pTOjpnY1VucHJvdGVjdCh3cmFwcGVyKTsKLSAgICAgICAg
S0pTOjpIZWFwOjpoZWFwKHdyYXBwZXIpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QobV9yZXNwb25z
ZVRleHQuc2l6ZSgpICogMik7CisgICAgICAgIEpTQzo6Z2NVbnByb3RlY3Qod3JhcHBlcik7Cisg
ICAgICAgIEpTQzo6SGVhcDo6aGVhcCh3cmFwcGVyKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KG1f
cmVzcG9uc2VUZXh0LnNpemUoKSAqIDIpOwogICAgIH0KIAogICAgIGRlcmVmKCk7CkBAIC0xMDY1
LDcgKzEwNjUsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFN1CiAg
ICAgICAgIGNoYW5nZVN0YXRlKEhFQURFUlNfUkVDRUlWRUQpOwogCiAgICAgewotICAgICAgICBL
SlM6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7
CiAgICAgICAgIGlmIChtX2RlY29kZXIpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlVGV4dCArPSBt
X2RlY29kZXItPmZsdXNoKCk7CiAgICAgfQpAQCAtMTI2NCw3ICsxMjY0LDcgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoU3VicgogICAgIFN0cmluZyBkZWNvZGVkID0gbV9k
ZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKTsKIAogICAgIHsKLSAgICAgICAgS0pTOjpKU0xvY2sg
bG9jayhmYWxzZSk7CisgICAgICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOwogICAgICAgICBt
X3Jlc3BvbnNlVGV4dCArPSBkZWNvZGVkOwogICAgIH0KIApJbmRleDogV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CShyZXZpc2lvbiAzNjI2MikKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgb3ZlcnJpZGVNaW1l
VHlwZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKTsKICAgICBTdHJpbmcgZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBTdHJpbmcgZ2V0UmVzcG9uc2VIZWFk
ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgY29uc3Qg
S0pTOjpVU3RyaW5nJiByZXNwb25zZVRleHQoKSBjb25zdDsKKyAgICBjb25zdCBKU0M6OlVTdHJp
bmcmIHJlc3BvbnNlVGV4dCgpIGNvbnN0OwogICAgIERvY3VtZW50KiByZXNwb25zZVhNTCgpIGNv
bnN0OwogCiAgICAgWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHVwbG9hZCgpOwpAQCAtMTk4LDEzICsx
OTgsMTMgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNv
ZGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOwogCi0gICAgLy8gVW5saWtlIG1v
c3Qgc3RyaW5ncyBpbiB0aGUgRE9NLCB3ZSBrZWVwIHRoaXMgYXMgYSBLSlM6OlVTdHJpbmcsIG5v
dCBhIFdlYkNvcmU6OlN0cmluZy4KKyAgICAvLyBVbmxpa2UgbW9zdCBzdHJpbmdzIGluIHRoZSBE
T00sIHdlIGtlZXAgdGhpcyBhcyBhIEpTQzo6VVN0cmluZywgbm90IGEgV2ViQ29yZTo6U3RyaW5n
LgogICAgIC8vIFRoYXQncyBiZWNhdXNlIHRoZXNlIHN0cmluZ3MgY2FuIGVhc2lseSBnZXQgaHVn
ZSAodGhleSBhcmUgZmlsbGVkIGZyb20gdGhlIG5ldHdvcmsgd2l0aAogICAgIC8vIG5vIHBhcnNp
bmcpIGFuZCBiZWNhdXNlIEpTIGNhbiBlYXNpbHkgb2JzZXJ2ZSBtYW55IGludGVybWVkaWF0ZSBz
dGF0ZXMsIHNvIGl0J3MgdmVyeSB1c2VmdWwKICAgICAvLyB0byBiZSBhYmxlIHRvIHNoYXJlIHRo
ZSBidWZmZXIgd2l0aCBKYXZhU2NyaXB0IHZlcnNpb25zIG9mIHRoZSB3aG9sZSBvciBwYXJ0aWFs
IHN0cmluZy4KICAgICAvLyBJbiBjb250cmFzdCwgdGhpcyBzdHJpbmcgZG9lc24ndCBpbnRlcmFj
dCBtdWNoIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGVuZ2luZSBzbyBpdCdzIG5vdCB0aGF0CiAgICAg
Ly8gYmlnIGEgY29zdCB0aGF0IGl0IGlzbid0IGEgU3RyaW5nLgotICAgIEtKUzo6VVN0cmluZyBt
X3Jlc3BvbnNlVGV4dDsKKyAgICBKU0M6OlVTdHJpbmcgbV9yZXNwb25zZVRleHQ7CiAgICAgbXV0
YWJsZSBib29sIG1fY3JlYXRlZERvY3VtZW50OwogICAgIG11dGFibGUgUmVmUHRyPERvY3VtZW50
PiBtX3Jlc3BvbnNlWE1MOwogCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA4LTA5LTA3ICBD
YW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMDcwNDogUmVwbGFjZSB0aGUg
S0pTIG5hbWVzcGFjZQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzA0PgorCisgICAgICAgIFJlbmFtZSB0aGUgS0pTIG5hbWVzcGFjZSB0byBKU0Mu
CisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHA6CisgICAgICAgICh3ZWJraXRf
aW5pdCk6CisKIDIwMDgtMDktMDUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxwIFRva2VyLgpJbmRleDogV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCB3
ZWJraXRfaW5pdCgpCiAgICAgICAgIHJldHVybjsKICAgICBpc0luaXRpYWxpemVkID0gdHJ1ZTsK
IAotICAgIEtKUzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIEpTQzo6aW5pdGlhbGl6ZVRo
cmVhZGluZygpOwogICAgIFdlYkNvcmU6OkluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vz
c2FyeSgpOwogCiAgICAgLy8gUGFnZSBjYWNoZSBjYXBhY2l0eSAoaW4gcGFnZXMpLiBDb21tZW50
IGZyb20gTWFjIHBvcnQ6CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDA4LTA5LTA3ICBDYW1l
cm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMDcwNDogUmVwbGFjZSB0aGUgS0pT
IG5hbWVzcGFjZQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzA0PgorCisgICAgICAgIFJlbmFtZSB0aGUgS0pTIG5hbWVzcGFjZSB0byBKU0MuCisK
KyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAqIFBsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAgICAoLVtXZWJCYXNlTmV0c2Nh
cGVQbHVnaW5TdHJlYW0gd2FudHNBbGxTdHJlYW1zXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJC
YXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3IHNlbmRFdmVudDppc0RyYXdSZWN0Ol0pOgorICAgICAgICAoLVtXZWJCYXNlTmV0c2Nh
cGVQbHVnaW5WaWV3IHNldFdpbmRvd0lmTmVjZXNzYXJ5XSk6CisgICAgICAgICgtW1dlYkJhc2VO
ZXRzY2FwZVBsdWdpblZpZXcgc3RhcnRdKToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2JqZWN0XSk6CisgICAgICAgICgtW1dlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDpdKToK
KyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyB3ZWJGcmFtZTpkaWRGaW5pc2hM
b2FkV2l0aFJlYXNvbjpdKToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyBs
b2FkUGx1Z2luUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dyBfcHJpbnRlZFBsdWdpbkJpdG1hcF0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKCtbV2ViUGx1Z2luQ29udHJvbGxlciBwbHVnSW5WaWV3V2l0
aEFyZ3VtZW50czpmcm9tUGx1Z2luUGFja2FnZTpdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29u
dHJvbGxlciBzdGFydEFsbFBsdWdpbnNdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxl
ciBzdG9wQWxsUGx1Z2luc10pOgorICAgICAgICAoLVtXZWJQbHVnaW5Db250cm9sbGVyIGFkZFBs
dWdpbjpdKToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBkZXN0cm95UGx1Z2luOl0p
OgorICAgICAgICAoLVtXZWJQbHVnaW5Db250cm9sbGVyIGRlc3Ryb3lBbGxQbHVnaW5zXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlw
dERlYnVnRGVsZWdhdGUubW06CisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5o
OgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW06CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisKIDIw
MDgtMDktMDUgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAg
IENvcnJlY3QgYSB0eXBvIGluIHRoZSBzZXRBcHBsaWNhdGlvbkNocm9tZU1vZGVFbmFibGVkRW5h
YmxlZDoKSW5kZXg6IFdlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0JKHJldmlzaW9uIDM2
MjYyKQorKysgV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclRyZWVBc1RleHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgogCi11c2luZyBuYW1lc3BhY2UgS0pT
OwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW1w
bGVtZW50YXRpb24gV2ViQ29yZVN0YXRpc3RpY3MKSW5kZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQkocmV2aXNpb24gMzYyNjIpCisr
KyBXZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIFN0cmVhbU1hcCYgc3RyZWFtcygp
CiAgICAgV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldyAqcHYgPSBwbHVnaW5WaWV3OwogICAgIFtw
diB3aWxsQ2FsbFBsdWdJbkZ1bmN0aW9uXTsKICAgICB7Ci0gICAgICAgIEtKUzo6SlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAgICAgICBlcnJvciA9IE5QUF9HZXRW
YWx1ZShwbHVnaW4sIE5QUFZwbHVnaW5XYW50c0FsbE5ldHdvcmtTdHJlYW1zLCAmdmFsdWUpOwog
ICAgIH0KICAgICBbcHYgZGlkQ2FsbFBsdWdJbkZ1bmN0aW9uXTsKSW5kZXg6IFdlYktpdC9tYWMv
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCShyZXZpc2lvbiAzNjI2
MikKKysrIFdlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldE5Q
UmVjdChjb25zdCBOU1JlYwogICAgIEJPT0wgYWNjZXB0ZWRFdmVudDsKICAgICBbc2VsZiB3aWxs
Q2FsbFBsdWdJbkZ1bmN0aW9uXTsKICAgICB7Ci0gICAgICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxs
TG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAgICAgICBhY2NlcHRlZEV2ZW50ID0gTlBQX0hh
bmRsZUV2ZW50KHBsdWdpbiwgZXZlbnQpOwogICAgIH0KICAgICBbc2VsZiBkaWRDYWxsUGx1Z0lu
RnVuY3Rpb25dOwpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldE5Q
UmVjdChjb25zdCBOU1JlYwogICAgICAgICAKICAgICAgICAgW3NlbGYgd2lsbENhbGxQbHVnSW5G
dW5jdGlvbl07CiAgICAgICAgIHsKLSAgICAgICAgICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9j
a3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxs
TG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICAgICAgICAgIG5wRXJyID0gTlBQX1NldFdp
bmRvdyhwbHVnaW4sICZ3aW5kb3cpOwogICAgICAgICB9CiAgICAgICAgIFtzZWxmIGRpZENhbGxQ
bHVnSW5GdW5jdGlvbl07CkBAIC0xMzA0LDcgKzEzMDQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
Z2V0TlBSZWN0KGNvbnN0IE5TUmVjCiAgICAgaWYgKGV2ZW50TW9kZWwgPT0gTlBFdmVudE1vZGVs
Q29jb2EpIHsKICAgICAgICAgW3NlbGYgd2lsbENhbGxQbHVnSW5GdW5jdGlvbl07CiAgICAgICAg
IHsKLSAgICAgICAgICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZh
bHNlKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KGZhbHNlKTsKICAgICAgICAgICAgIE5QUGx1Z2luVGV4dElucHV0RnVuY3MgKnZhbHVlOwogICAg
ICAgICAgICAgaWYgKE5QUF9HZXRWYWx1ZShwbHVnaW4sIE5QUFZwbHVnaW5UZXh0SW5wdXRGdW5j
cywgJnZhbHVlKSA9PSBOUEVSUl9OT19FUlJPUiAmJiB2YWx1ZSkKICAgICAgICAgICAgICAgICB0
ZXh0SW5wdXRGdW5jcyA9IHZhbHVlOwpAQCAtMTg1MCw3ICsxODUwLDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGdldE5QUmVjdChjb25zdCBOU1JlYwogICAgIE5QRXJyb3IgZXJyb3I7CiAgICAgW3Nl
bGYgd2lsbENhbGxQbHVnSW5GdW5jdGlvbl07CiAgICAgewotICAgICAgICBLSlM6OkpTTG9jazo6
RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CisgICAgICAgIEpTQzo6SlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICAgICAgZXJyb3IgPSBOUFBfR2V0
VmFsdWUocGx1Z2luLCBOUFBWcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0LCAmdmFsdWUpOwogICAg
IH0KICAgICBbc2VsZiBkaWRDYWxsUGx1Z0luRnVuY3Rpb25dOwpAQCAtMjEzOSw3ICsyMTM5LDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGdldE5QUmVjdChjb25zdCBOU1JlYwogICAgICAgICBpZiAo
W0pTUGx1Z2luUmVxdWVzdCBzZW5kTm90aWZpY2F0aW9uXSkgewogICAgICAgICAgICAgW3NlbGYg
d2lsbENhbGxQbHVnSW5GdW5jdGlvbl07CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
S0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgICAgICAg
ICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAg
ICAgICAgICAgICAgICBOUFBfVVJMTm90aWZ5KHBsdWdpbiwgW1VSTCBfd2ViX1VSTENTdHJpbmdd
LCBOUFJFU19ET05FLCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIFtzZWxmIGRpZENhbGxQbHVnSW5GdW5jdGlvbl07CkBAIC0yMTcyLDcg
KzIxNzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0TlBSZWN0KGNvbnN0IE5TUmVjCiAgICAg
ICAgIAogICAgIFtzZWxmIHdpbGxDYWxsUGx1Z0luRnVuY3Rpb25dOwogICAgIHsKLSAgICAgICAg
S0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgICAgICBK
U0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CiAgICAgICAgIE5Q
UF9VUkxOb3RpZnkocGx1Z2luLCBbW1twbHVnaW5SZXF1ZXN0IHJlcXVlc3RdIFVSTF0gX3dlYl9V
UkxDU3RyaW5nXSwgcmVhc29uLCBbcGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7CiAgICAgfQog
ICAgIFtzZWxmIGRpZENhbGxQbHVnSW5GdW5jdGlvbl07CkBAIC0yMjE3LDcgKzIyMTcsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgZ2V0TlBSZWN0KGNvbnN0IE5TUmVjCiAgICAgICAgICAgICAgICAg
aWYgKFtwbHVnaW5SZXF1ZXN0IHNlbmROb3RpZmljYXRpb25dKSB7CiAgICAgICAgICAgICAgICAg
ICAgIFtzZWxmIHdpbGxDYWxsUGx1Z0luRnVuY3Rpb25dOwogICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BB
bGxMb2NrcyhmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBKU0M6OkpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBO
UFBfVVJMTm90aWZ5KHBsdWdpbiwgW1tbcGx1Z2luUmVxdWVzdCByZXF1ZXN0XSBVUkxdIF93ZWJf
VVJMQ1N0cmluZ10sIE5QRVJSX0dFTkVSSUNfRVJST1IsIFtwbHVnaW5SZXF1ZXN0IG5vdGlmeURh
dGFdKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBbc2VsZiBk
aWRDYWxsUGx1Z0luRnVuY3Rpb25dOwpAQCAtMjk2Miw3ICsyOTYyLDcgQEAgc3RhdGljIE5QQnJv
d3NlclRleHRJbnB1dEZ1bmNzICpicm93c2VyVAogICAgIC8vIFRlbGwgdGhlIHBsdWdpbiB0byBw
cmludCBpbnRvIHRoZSBHV29ybGQKICAgICBbc2VsZiB3aWxsQ2FsbFBsdWdJbkZ1bmN0aW9uXTsK
ICAgICB7Ci0gICAgICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZh
bHNlKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFs
c2UpOwogICAgICAgICBOUFBfUHJpbnQocGx1Z2luLCAmbnBQcmludCk7CiAgICAgfQogICAgIFtz
ZWxmIGRpZENhbGxQbHVnSW5GdW5jdGlvbl07CkluZGV4OiBXZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
UGx1Z2luQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
UGx1Z2luQ29udHJvbGxlci5tbQkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJLaXQvbWFjL1BsdWdp
bnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtODQsMTAgKzg0LDEw
IEBAIHN0YXRpYyBOU011dGFibGVTZXQgKnBsdWdpblZpZXdzID0gbmlsOwogICAgIE5TVmlldyAq
dmlldyA9IG5pbDsKIAogICAgIGlmIChbdmlld0ZhY3RvcnkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czopXSkgewotICAgICAgICBLSlM6OkpTTG9j
azo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CisgICAgICAgIEpTQzo6SlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICAgICAgdmlldyA9IFt2aWV3
RmFjdG9yeSBwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czphcmd1bWVudHNdOwogICAgIH0gZWxzZSBp
ZiAoW3ZpZXdGYWN0b3J5IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGx1Z2luVmlld1dp
dGhBcmd1bWVudHM6KV0pIHsKLSAgICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9w
QWxsTG9ja3MoZmFsc2UpOworICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BB
bGxMb2NrcyhmYWxzZSk7CiAgICAgICAgIHZpZXcgPSBbdmlld0ZhY3RvcnkgcGx1Z2luVmlld1dp
dGhBcmd1bWVudHM6YXJndW1lbnRzXTsKICAgICB9CiAgICAgCkBAIC0xNDEsMTAgKzE0MSwxMCBA
QCBzdGF0aWMgTlNNdXRhYmxlU2V0ICpwbHVnaW5WaWV3cyA9IG5pbDsKICAgICBmb3IgKGkgPSAw
OyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBpZCBhVmlldyA9IFtfdmlld3Mgb2JqZWN0QXRJ
bmRleDppXTsKICAgICAgICAgaWYgKFthVmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlBsdWdJblN0YXJ0KV0pIHsKLSAgICAgICAgICAgIEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9j
a3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxs
TG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICAgICAgICAgIFthVmlldyB3ZWJQbHVnSW5T
dGFydF07CiAgICAgICAgIH0gZWxzZSBpZiAoW2FWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IocGx1Z2luU3RhcnQpXSkgewotICAgICAgICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BB
bGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAgICAgICAgICAgW2FWaWV3IHBsdWdpblN0
YXJ0XTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2NCwxMCArMTY0LDEwIEBAIHN0YXRpYyBOU011
dGFibGVTZXQgKnBsdWdpblZpZXdzID0gbmlsOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsg
aSsrKSB7CiAgICAgICAgIGlkIGFWaWV3ID0gW192aWV3cyBvYmplY3RBdEluZGV4OmldOwogICAg
ICAgICBpZiAoW2FWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luU3Rv
cCldKSB7Ci0gICAgICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2Nr
cyhmYWxzZSk7CisgICAgICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcyhmYWxzZSk7CiAgICAgICAgICAgICBbYVZpZXcgd2ViUGx1Z0luU3RvcF07CiAgICAgICAg
IH0gZWxzZSBpZiAoW2FWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGx1Z2luU3Rv
cCldKSB7Ci0gICAgICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2Nr
cyhmYWxzZSk7CisgICAgICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcyhmYWxzZSk7CiAgICAgICAgICAgICBbYVZpZXcgcGx1Z2luU3RvcF07CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xODcsMjUgKzE4NywyNSBAQCBzdGF0aWMgTlNNdXRhYmxlU2V0ICpwbHVnaW5W
aWV3cyA9IG5pbDsKIAogICAgICAgICBMT0coUGx1Z2lucywgImluaXRpYWxpemluZyBwbHVnLWlu
ICVAIiwgdmlldyk7CiAgICAgICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHdlYlBsdWdJbkluaXRpYWxpemUpXSkgewotICAgICAgICAgICAgS0pTOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgICAgICAgICAgSlNDOjpKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAgICAgICAgICAgW3ZpZXcgd2Vi
UGx1Z0luSW5pdGlhbGl6ZV07CiAgICAgICAgIH0gZWxzZSBpZiAoW3ZpZXcgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihwbHVnaW5Jbml0aWFsaXplKV0pIHsKLSAgICAgICAgICAgIEtKUzo6
SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKKyAgICAgICAgICAgIEpT
Qzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICAgICAgICAg
IFt2aWV3IHBsdWdpbkluaXRpYWxpemVdOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKF9zdGFy
dGVkKSB7CiAgICAgICAgICAgICBMT0coUGx1Z2lucywgInN0YXJ0aW5nIHBsdWctaW4gJUAiLCB2
aWV3KTsKICAgICAgICAgICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlBsdWdJblN0YXJ0KV0pIHsKLSAgICAgICAgICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFs
bExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CisgICAgICAgICAgICAgICAgSlNDOjpKU0xvY2s6
OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAgICAgICAgICAgICAgIFt2aWV3
IHdlYlBsdWdJblN0YXJ0XTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoW3ZpZXcgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihwbHVnaW5TdGFydCldKSB7Ci0gICAgICAgICAgICAgICAgS0pT
OjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgICAgICAgICAg
ICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICAg
ICAgICAgICAgICBbdmlldyBwbHVnaW5TdGFydF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dENvbnRhaW5pbmdXaW5kb3c6KV0pIHsKLSAgICAgICAgICAgICAgICBLSlM6OkpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CisgICAgICAgICAgICAgICAgSlNDOjpKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAgICAgICAgICAgICAgIFt2
aWV3IHNldENvbnRhaW5pbmdXaW5kb3c6W19kb2N1bWVudFZpZXcgd2luZG93XV07CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTIxNywxOSArMjE3LDE5IEBAIHN0YXRpYyBOU011dGFibGVT
ZXQgKnBsdWdpblZpZXdzID0gbmlsOwogICAgIGlmIChbX3ZpZXdzIGNvbnRhaW5zT2JqZWN0OnZp
ZXddKSB7CiAgICAgICAgIGlmIChfc3RhcnRlZCkgewogICAgICAgICAgICAgaWYgKFt2aWV3IHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUGx1Z0luU3RvcCldKSB7Ci0gICAgICAgICAg
ICAgICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAg
ICAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNl
KTsKICAgICAgICAgICAgICAgICBbdmlldyB3ZWJQbHVnSW5TdG9wXTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoW3ZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwbHVnaW5TdG9wKV0p
IHsKLSAgICAgICAgICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2Nr
cyhmYWxzZSk7CisgICAgICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9w
QWxsTG9ja3MoZmFsc2UpOwogICAgICAgICAgICAgICAgIFt2aWV3IHBsdWdpblN0b3BdOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoW3ZpZXcgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQbHVnSW5EZXN0cm95KV0pIHsKLSAgICAgICAgICAg
IEtKUzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKKyAgICAgICAg
ICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICAg
ICAgICAgIFt2aWV3IHdlYlBsdWdJbkRlc3Ryb3ldOwogICAgICAgICB9IGVsc2UgaWYgKFt2aWV3
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGx1Z2luRGVzdHJveSldKSB7Ci0gICAgICAg
ICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CisgICAg
ICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CiAg
ICAgICAgICAgICBbdmlldyBwbHVnaW5EZXN0cm95XTsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTI3NiwxMCArMjc2LDEwIEBAIHN0YXRpYyB2b2lkIGNhbmNlbE91dHN0YW5kaW5nQ2hlY2soY29u
c3QKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBpZCBhVmlldyA9
IFtfdmlld3Mgb2JqZWN0QXRJbmRleDppXTsKICAgICAgICAgaWYgKFthVmlldyByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHdlYlBsdWdJbkRlc3Ryb3kpXSkgewotICAgICAgICAgICAgS0pT
OjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgICAgICAgICAg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAgICAgICAg
ICAgW2FWaWV3IHdlYlBsdWdJbkRlc3Ryb3ldOwogICAgICAgICB9IGVsc2UgaWYgKFthVmlldyBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBsdWdpbkRlc3Ryb3kpXSkgewotICAgICAgICAg
ICAgS0pTOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgICAg
ICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAg
ICAgICAgICAgW2FWaWV3IHBsdWdpbkRlc3Ryb3ldOwogICAgICAgICB9CiAgICAgICAgIApJbmRl
eDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMzYyNjIpCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTgzLDkgKzgzLDkgQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAotdXNpbmcgS0pTOjpKU0dsb2JhbE9iamVjdDsKLXVzaW5nIEtKUzo6SlNM
b2NrOwotdXNpbmcgS0pTOjpKU1ZhbHVlOwordXNpbmcgSlNDOjpKU0dsb2JhbE9iamVjdDsKK3Vz
aW5nIEpTQzo6SlNMb2NrOwordXNpbmcgSlNDOjpKU1ZhbHVlOwogCiAvKgogSGVyZSBpcyB0aGUg
Y3VycmVudCBiZWhhdmlvciBtYXRyaXggZm9yIGZvdXIgdHlwZXMgb2YgbmF2aWdhdGlvbnM6Cklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQkocmV2
aXNpb24gMzYyNjIpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9T
Y3JpcHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL3J1bnRpbWVfcm9vdC5oPgogCi11
c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiAvLyBGSVhNRTogdGhlc2UgZXJyb3Igc3RyaW5ncyBzaG91bGQgYmUgcHVi
bGljIGZvciBmdXR1cmUgdXNlIGJ5IFdlYlNjcmlwdE9iamVjdCBhbmQgaW4gV2ViU2NyaXB0T2Jq
ZWN0LmgKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCShyZXZpc2lv
biAzNjI2MikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRGVidWdnZXJD
YWxsRnJhbWU7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwpAQCAtNDUsMjAgKzQ1LDIwIEBAIG5hbWVzcGFjZSBLSlMgewogCiBAY2xhc3MgV2ViU2NyaXB0
Q2FsbEZyYW1lOwogCi1OU1N0cmluZyAqdG9OU1N0cmluZyhjb25zdCBLSlM6OlVTdHJpbmcmKTsK
K05TU3RyaW5nICp0b05TU3RyaW5nKGNvbnN0IEpTQzo6VVN0cmluZyYpOwogCi1jbGFzcyBXZWJT
Y3JpcHREZWJ1Z2dlciA6IHB1YmxpYyBLSlM6OkRlYnVnZ2VyIHsKK2NsYXNzIFdlYlNjcmlwdERl
YnVnZ2VyIDogcHVibGljIEpTQzo6RGVidWdnZXIgewogcHVibGljOgotICAgIFdlYlNjcmlwdERl
YnVnZ2VyKEtKUzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBXZWJTY3JpcHREZWJ1Z2dlcihKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEtKUzo6
RXhlY1N0YXRlKiwgaW50IHNvdXJjZUlELCBjb25zdCBLSlM6OlVTdHJpbmcmIHNvdXJjZVVSTCwg
Y29uc3QgS0pTOjpTb3VyY2VQcm92aWRlciYgc291cmNlLCBpbnQgbGluZU51bWJlciwgaW50IGVy
cm9yTGluZSwgY29uc3QgS0pTOjpVU3RyaW5nJiBlcnJvck1zZyk7Ci0gICAgdmlydHVhbCB2b2lk
IGNhbGxFdmVudChjb25zdCBLSlM6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcik7Ci0gICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IEtKUzo6
RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgS0pTOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24o
Y29uc3QgS0pTOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIpOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgS0pTOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJZCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEtKUzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQg
c291cmNlSWQsIGludCBsaW5lbm8pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9p
bnQoY29uc3QgS0pTOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJZCwgaW50IGxpbmVu
byk7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0M6OkV4ZWNTdGF0ZSosIGludCBz
b3VyY2VJRCwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IEpTQzo6U291cmNl
UHJvdmlkZXImIHNvdXJjZSwgaW50IGxpbmVOdW1iZXIsIGludCBlcnJvckxpbmUsIGNvbnN0IEpT
Qzo6VVN0cmluZyYgZXJyb3JNc2cpOworICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3Qg
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwor
ICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1l
JiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIHJldHVy
bkV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNlSUQsIGludCBs
aW5lTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IEpTQzo6RGVidWdn
ZXJDYWxsRnJhbWUmLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnQgc291cmNlSWQsIGludCBsaW5lbm8pOworICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJv
Z3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJjZUlkLCBpbnQgbGlu
ZW5vKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNlSWQsIGludCBsaW5lbm8pOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgbV9jYWxsaW5nRGVsZWdhdGU7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0RGVidWdnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNj
cmlwdERlYnVnZ2VyLm1tCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z2dlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9LVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIu
aD4KIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJTY3JpcHRDYWxsRnJhbWUgKFdlYlNj
cmlwdERlYnVnRGVsZWdhdGVJbnRlcm5hbCkKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZp
c2lvbiAzNjI2MikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzcsNyArMTM3LDcgQEAKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAjaWYgZGVm
aW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fcHBjNjRfXykKICNkZWZpbmUgUFJPQ0VTU09SICJQ
UEMiCkBAIC00NjksNyArNDY5LDcgQEAgc3RhdGljIEJPT0wgZ3JhbW1hckNoZWNraW5nRW5hYmxl
ZDsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBLSlM6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBKU0M6OmluaXRp
YWxpemVUaHJlYWRpbmcoKTsKICAgICBhbGxvd3NVbmRvID0gWUVTOwogICAgIHpvb21NdWx0aXBs
aWVyID0gMTsKICAgICB6b29tTXVsdGlwbGllcklzVGV4dE9ubHkgPSBZRVM7CkluZGV4OiBXZWJL
aXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDM2MjYyKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDA4LTA5LTA3ICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVy
bG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJ1ZyAyMDcwNDogUmVwbGFjZSB0aGUgS0pTIG5hbWVzcGFjZQorICAgICAgICA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA0PgorCisgICAgICAgIFJlbmFtZSB0
aGUgS0pTIG5hbWVzcGFjZSB0byBKU0MuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KToKKyAgICAg
ICAgKFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKwogMjAwOC0wOS0wNCAgVG9yIEFy
bmUgVmVzdGLDuCAgPHRhdmVzdGJvQHRyb2xsdGVjaC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMjEgKzIxMiwyMSBA
QCBRV2ViRnJhbWU6On5RV2ViRnJhbWUoKQogKi8KIHZvaWQgUVdlYkZyYW1lOjphZGRUb0phdmFT
Y3JpcHRXaW5kb3dPYmplY3QoY29uc3QgUVN0cmluZyAmbmFtZSwgUU9iamVjdCAqb2JqZWN0KQog
ewotICAgICAgS0pTOjpKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgICBKU0M6OkpTTG9jayBsb2Nr
KGZhbHNlKTsKICAgICAgIEpTRE9NV2luZG93ICp3aW5kb3cgPSB0b0pTRE9NV2luZG93KGQtPmZy
YW1lKTsKLSAgICAgIEtKUzo6QmluZGluZ3M6OlJvb3RPYmplY3QgKnJvb3QgPSBkLT5mcmFtZS0+
c2NyaXB0KCktPmJpbmRpbmdSb290T2JqZWN0KCk7CisgICAgICBKU0M6OkJpbmRpbmdzOjpSb290
T2JqZWN0ICpyb290ID0gZC0+ZnJhbWUtPnNjcmlwdCgpLT5iaW5kaW5nUm9vdE9iamVjdCgpOwog
ICAgICAgaWYgKCF3aW5kb3cpIHsKICAgICAgICAgICBxRGVidWcoKSA8PCAiV2FybmluZzogY291
bGRuJ3QgZ2V0IHdpbmRvdyBvYmplY3QiOwogICAgICAgICAgIHJldHVybjsKICAgICAgIH0KIAot
ICAgICAgS0pTOjpFeGVjU3RhdGUqIGV4ZWMgPSB3aW5kb3ctPmdsb2JhbEV4ZWMoKTsKKyAgICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gd2luZG93LT5nbG9iYWxFeGVjKCk7CiAKLSAgICAgIEtK
Uzo6SlNPYmplY3QgKnJ1bnRpbWVPYmplY3QgPQotICAgICAgICBLSlM6OkJpbmRpbmdzOjpJbnN0
YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChleGVjLCBLSlM6OkJpbmRpbmdzOjpRdEluc3RhbmNl
OjpjcmVhdGUob2JqZWN0LCByb290KSk7CisgICAgICBKU0M6OkpTT2JqZWN0ICpydW50aW1lT2Jq
ZWN0ID0KKyAgICAgICAgSlNDOjpCaW5kaW5nczo6SW5zdGFuY2U6OmNyZWF0ZVJ1bnRpbWVPYmpl
Y3QoZXhlYywgSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdCwgcm9vdCkp
OwogCi0gICAgICBLSlM6OlB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgICAgd2luZG93LT5wdXQo
ZXhlYywgS0pTOjpJZGVudGlmaWVyKGV4ZWMsIChjb25zdCBVQ2hhciAqKSBuYW1lLmNvbnN0RGF0
YSgpLCBuYW1lLmxlbmd0aCgpKSwgcnVudGltZU9iamVjdCwgc2xvdCk7CisgICAgICBKU0M6OlB1
dFByb3BlcnR5U2xvdCBzbG90OworICAgICAgd2luZG93LT5wdXQoZXhlYywgSlNDOjpJZGVudGlm
aWVyKGV4ZWMsIChjb25zdCBVQ2hhciAqKSBuYW1lLmNvbnN0RGF0YSgpLCBuYW1lLmxlbmd0aCgp
KSwgcnVudGltZU9iamVjdCwgc2xvdCk7CiB9CiAKIC8qIQpAQCAtODc3LDEwICs4NzcsMTAgQEAg
UVZhcmlhbnQgUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQoYwogICAgIFNjcmlwdENvbnRy
b2xsZXIgKnByb3h5ID0gZC0+ZnJhbWUtPnNjcmlwdCgpOwogICAgIFFWYXJpYW50IHJjOwogICAg
IGlmIChwcm94eSkgewotICAgICAgICBLSlM6OkpTVmFsdWUgKnYgPSBwcm94eS0+ZXZhbHVhdGUo
U3RyaW5nKCksIDEsIHNjcmlwdFNvdXJjZSk7CisgICAgICAgIEpTQzo6SlNWYWx1ZSAqdiA9IHBy
b3h5LT5ldmFsdWF0ZShTdHJpbmcoKSwgMSwgc2NyaXB0U291cmNlKTsKICAgICAgICAgaWYgKHYp
IHsKICAgICAgICAgICAgIGludCBkaXN0YW5jZSA9IDA7Ci0gICAgICAgICAgICByYyA9IEtKUzo6
QmluZGluZ3M6OmNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQocHJveHktPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCksIHYsIFFNZXRhVHlwZTo6Vm9pZCwgJmRpc3RhbmNlKTsKKyAgICAgICAgICAg
IHJjID0gSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9RVmFyaWFudChwcm94eS0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgdiwgUU1ldGFUeXBlOjpWb2lkLCAmZGlzdGFuY2UpOwog
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByYzsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAzNjI2MikK
KysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMDgtMDktMDcgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIwNzA0
OiBSZXBsYWNlIHRoZSBLSlMgbmFtZXNwYWNlCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDQ+CisKKyAgICAgICAgUmVuYW1lIHRoZSBLSlMgbmFt
ZXNwYWNlIHRvIEpTQy4KKworICAgICAgICAqIFdlYkNvcmVTdGF0aXN0aWNzLmNwcDoKKyAgICAg
ICAgKiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKiBXZWJTY3JpcHRDYWxs
RnJhbWUuY3BwOgorICAgICAgICAoV2ViU2NyaXB0Q2FsbEZyYW1lOjpqc1ZhbHVlVG9TdHJpbmcp
OgorICAgICAgICAqIFdlYlNjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAoV2ViU2NyaXB0Q2Fs
bEZyYW1lOjpzdGF0ZSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3
OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHRGcm9tU3RyaW5nKToKKwogMjAwOC0wOS0wNSAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcnVudGltZSBzd2l0Y2hhYmlsaXR5IG9mIHRo
ZSBBcXVhIGxvb2sgYW5kIHRoZSBuYXRpdmUgbG9vayBvbiBXaW5kb3dzLgpJbmRleDogV2ViS2l0
L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJD
b3JlU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViS2l0L3dpbi9XZWJDb3Jl
U3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cu
aD4KIAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gV2ViQ29yZVN0YXRpc3RpY3MgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkluZGV4OiBXZWJLaXQvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDM2
MjYyKQorKysgV2ViS2l0L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPGtqcy9KU0xvY2suaD4KICNwcmFnbWEg
d2FybmluZyhwb3ApCiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgSlND
OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdlYkphdmFTY3JpcHRDb2xsZWN0b3Ig
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQvd2luL1dlYlNjcmlwdENhbGxGcmFtZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJTY3JpcHRDYWxsRnJhbWUuY3BwCShyZXZp
c2lvbiAzNjI2MikKKysrIFdlYktpdC93aW4vV2ViU2NyaXB0Q2FsbEZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsOSArNDcsOSBAQAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLVVTdHJpbmcg
V2ViU2NyaXB0Q2FsbEZyYW1lOjpqc1ZhbHVlVG9TdHJpbmcoS0pTOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU1ZhbHVlKiBqc3ZhbHVlKQorVVN0cmluZyBXZWJTY3JpcHRDYWxsRnJhbWU6OmpzVmFsdWVU
b1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVmFsdWUqIGpzdmFsdWUpCiB7CiAgICAg
aWYgKCFqc3ZhbHVlKQogICAgICAgICByZXR1cm4gInVuZGVmaW5lZCI7CkluZGV4OiBXZWJLaXQv
d2luL1dlYlNjcmlwdENhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViU2Ny
aXB0Q2FsbEZyYW1lLmgJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViS2l0L3dpbi9XZWJTY3JpcHRD
YWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCiAKLW5hbWVzcGFjZSBLSlMgeworbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
RXhlY1N0YXRlOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTM5
LDEwICszOSwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKIAogY2xhc3MgV2ViU2NyaXB0Q2FsbEZyYW1l
IDogcHVibGljIElXZWJTY3JpcHRDYWxsRnJhbWUgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJT
Y3JpcHRDYWxsRnJhbWUqIGNyZWF0ZUluc3RhbmNlKEtKUzo6RXhlY1N0YXRlKik7CisgICAgc3Rh
dGljIFdlYlNjcmlwdENhbGxGcmFtZSogY3JlYXRlSW5zdGFuY2UoSlNDOjpFeGVjU3RhdGUqKTsK
IAogcHJpdmF0ZToKLSAgICBXZWJTY3JpcHRDYWxsRnJhbWUoS0pTOjpFeGVjU3RhdGUqKTsKKyAg
ICBXZWJTY3JpcHRDYWxsRnJhbWUoSlNDOjpFeGVjU3RhdGUqKTsKICAgICB2aXJ0dWFsIH5XZWJT
Y3JpcHRDYWxsRnJhbWUoKTsKIAogcHVibGljOgpAQCAtNzQsMTUgKzc0LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCU1RSKiB2YWx1ZSk7CiAKICAgICAvLyBIZWxw
ZXIgYW5kIGFjY2Vzc29ycwotICAgIHZpcnR1YWwgS0pTOjpKU1ZhbHVlKiB2YWx1ZUJ5RXZhbHVh
dGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKEJTVFIgc2NyaXB0KTsKLSAgICB2aXJ0dWFsIEtKUzo6
RXhlY1N0YXRlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2aXJ0dWFs
IEpTQzo6SlNWYWx1ZSogdmFsdWVCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZyhCU1RS
IHNjcmlwdCk7CisgICAgdmlydHVhbCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlOyB9CiAKLSAgICBzdGF0aWMgS0pTOjpVU3RyaW5nIGpzVmFsdWVUb1N0cmlu
ZyhLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNWYWx1ZSopOworICAgIHN0YXRpYyBKU0M6OlVTdHJp
bmcganNWYWx1ZVRvU3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKik7CiAKIHBy
aXZhdGU6CiAgICAgVUxPTkcgbV9yZWZDb3VudDsKIAotICAgIEtKUzo6RXhlY1N0YXRlKiBtX3N0
YXRlOworICAgIEpTQzo6RXhlY1N0YXRlKiBtX3N0YXRlOwogfTsKIAogI2VuZGlmCkluZGV4OiBX
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5j
cHAJKHJldmlzaW9uIDM2MjYyKQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEyLDcgKzExMiw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU6OkV2ZW50TmFtZXM7Ci11c2luZyBLSlM6OkpTTG9jazsKK3Vz
aW5nIEpTQzo6SlNMb2NrOwogdXNpbmcgc3RkOjptaW47CiB1c2luZyBzdGQ6Om1heDsKIApAQCAt
Mjc5LDcgKzI3OSw3IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogLCBtX2RlbGV0ZUJhY2tpbmdTdG9y
ZVRpbWVyQWN0aXZlKGZhbHNlKQogLCBtX3RyYW5zcGFyZW50KGZhbHNlKQogewotICAgIEtKUzo6
aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwog
CiAgICAgbV9iYWNraW5nU3RvcmVTaXplLmN4ID0gbV9iYWNraW5nU3RvcmVTaXplLmN5ID0gMDsK
IApAQCAtMjYyMiw3ICsyNjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpzdHJpbgogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0g
ICAgS0pTOjpKU1ZhbHVlKiBzY3JpcHRFeGVjdXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPmxvYWRl
cigpLT5leGVjdXRlU2NyaXB0KFdlYkNvcmU6OlN0cmluZyhzY3JpcHQpLCB0cnVlKTsKKyAgICBK
U0M6OkpTVmFsdWUqIHNjcmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+bG9hZGVyKCkt
PmV4ZWN1dGVTY3JpcHQoV2ViQ29yZTo6U3RyaW5nKHNjcmlwdCksIHRydWUpOwogICAgIGlmKCFz
Y3JpcHRFeGVjdXRpb25SZXN1bHQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgZWxzZSBp
ZiAoc2NyaXB0RXhlY3V0aW9uUmVzdWx0LT5pc1N0cmluZygpKSB7CkluZGV4OiBXZWJLaXQvd3gv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2
MjYyKQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDA4LTA5LTA3ICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNh
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAy
MDcwNDogUmVwbGFjZSB0aGUgS0pTIG5hbWVzcGFjZQorICAgICAgICA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzA0PgorCisgICAgICAgIFJlbmFtZSB0aGUgS0pT
IG5hbWVzcGFjZSB0byBKU0MuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICh3
eFdlYkZyYW1lOjpSdW5TY3JpcHQpOgorCiAyMDA4LTA5LTA0ICBLZXZpbiBPbGxpdmllciAgPGtl
dmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIHd4IGJ1aWxkIGZpeGVzLgpJbmRleDog
V2ViS2l0L3d4L1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViRnJhbWUu
Y3BwCShyZXZpc2lvbiAzNjI2MikKKysrIFdlYktpdC93eC9XZWJGcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3Miw3ICsxNzIsNyBAQCB3eFN0cmluZyB3eFdlYkZyYW1lOjpSdW5TY3JpcHQo
Y29uc3Qgd3hTCiB7CiAgICAgd3hTdHJpbmcgcmV0dXJuVmFsdWUgPSB3eEVtcHR5U3RyaW5nOwog
ICAgIGlmIChtX2ltcGwtPmZyYW1lKSB7Ci0gICAgICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0g
bV9pbXBsLT5mcmFtZS0+bG9hZGVyKCktPmV4ZWN1dGVTY3JpcHQoamF2YXNjcmlwdCwgdHJ1ZSk7
CisgICAgICAgIEpTQzo6SlNWYWx1ZSogcmVzdWx0ID0gbV9pbXBsLT5mcmFtZS0+bG9hZGVyKCkt
PmV4ZWN1dGVTY3JpcHQoamF2YXNjcmlwdCwgdHJ1ZSk7CiAgICAgICAgIGlmIChyZXN1bHQpCiAg
ICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHd4U3RyaW5nKHJlc3VsdC0+dG9TdHJpbmcobV9pbXBs
LT5mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpLlVURjhTdHJp
bmcoKS5jX3N0cigpLCB3eENvbnZVVEY4KTsgICAgICAgIAogICAgIH0K
</data>
<flag name="review"
          id="10351"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>