<?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>185502</bug_id>
          
          <creation_ts>2018-05-09 18:17:29 -0700</creation_ts>
          <short_desc>Update ICU headers for macOS to v60</short_desc>
          <delta_ts>2018-05-10 16:35:32 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>185375</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy VanWagoner">andy</reporter>
          <assigned_to name="Andy VanWagoner">andy</assigned_to>
          <cc>ap</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1422590</commentid>
    <comment_count>0</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-05-09 18:17:29 -0700</bug_when>
    <thetext>Update ICU headers for macOS to v60</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422591</commentid>
    <comment_count>1</comment_count>
      <attachid>340057</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-05-09 18:20:46 -0700</bug_when>
    <thetext>Created attachment 340057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422592</commentid>
    <comment_count>2</comment_count>
      <attachid>340057</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-05-09 18:22:47 -0700</bug_when>
    <thetext>Comment on attachment 340057
Patch

This updates all the ICU headers to v60.2 so building on macOS can use the newer features. All modifications from the original ICU source are documented in README.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422593</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-09 18:23:41 -0700</bug_when>
    <thetext>Attachment 340057 did not pass style-queue:


ERROR: Source/WTF/ChangeLog:193:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: spoof  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 169 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422608</commentid>
    <comment_count>4</comment_count>
      <attachid>340062</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-05-09 19:10:28 -0700</bug_when>
    <thetext>Created attachment 340062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422609</commentid>
    <comment_count>5</comment_count>
      <attachid>340062</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-05-09 19:11:14 -0700</bug_when>
    <thetext>Comment on attachment 340062
Patch

Includes new headers missing in last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422611</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-09 19:13:54 -0700</bug_when>
    <thetext>Attachment 340062 did not pass style-queue:


ERROR: Source/WTF/ChangeLog:196:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: spoof  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 172 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422614</commentid>
    <comment_count>7</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-05-09 19:19:44 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #6)
&gt; Attachment 340062 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WTF/ChangeLog:196:  Please consider whether the use of
&gt; security-sensitive phrasing could help someone exploit WebKit: spoof 
&gt; [changelog/unwantedsecurityterms] [3]
&gt; Total errors found: 1 in 172 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

uspoof.h is one of the updated headers, and it provides a spoof checker. It can be helpful in detecting a string that looks deceptively like another. I don&apos;t think removing this reference from the Changelog would be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422640</commentid>
    <comment_count>8</comment_count>
      <attachid>340062</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-05-09 23:16:20 -0700</bug_when>
    <thetext>Comment on attachment 340062
Patch

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

&gt; Source/WTF/ChangeLog:3
&gt; +        Update ICU headers for macOS to v60

Is this moving too far? I think that macOS Sierra has v57.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422721</commentid>
    <comment_count>9</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-05-10 08:13:44 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #8)
&gt; Comment on attachment 340062 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=340062&amp;action=review
&gt; 
&gt; &gt; Source/WTF/ChangeLog:3
&gt; &gt; +        Update ICU headers for macOS to v60
&gt; 
&gt; Is this moving too far? I think that macOS Sierra has v57.

I&apos;m running High Sierra (10.13.4), and it has v59.

I believe all of the ICU APIs the Intl APIs are trying to use are included in v59, so I could use those headers instead, if you think that&apos;s a better move.

It&apos;s a shame these headers are not provided by the system, or at least by the SDK, so that the feature detecting macros could work as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422738</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-05-10 09:19:13 -0700</bug_when>
    <thetext>&gt; I&apos;m running High Sierra (10.13.4), and it has v59.

That&apos;s High Sierra, not Sierra. We need to support Sierra too.

Having newer headers is not strictly forbidden, but there are problems with that:

- As this presumably changes web exposed functionality, WebKit will behave differently on Sierra and on High Sierra. It&apos;s best to minimize such differences, as we want to have a consistent developer story across OS versions, as much as possible.

- Having only the oldest supported version makes it trivial to ensure that we aren&apos;t using unsupported features. With a version that contains supported and unsupported functionality, how is one to know what&apos;s safe to use?

&gt; It&apos;s a shame these headers are not provided by the system, or at least by the SDK, so that the feature detecting macros could work as expected.

Please file a bug with Apple (bugreport.apple.com), Bugzilla comments will not be heard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422740</commentid>
    <comment_count>11</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-05-10 09:28:59 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #10)
&gt; &gt; I&apos;m running High Sierra (10.13.4), and it has v59.
&gt; 
&gt; That&apos;s High Sierra, not Sierra. We need to support Sierra too.
&gt; 
&gt; Having newer headers is not strictly forbidden, but there are problems with
&gt; that:
&gt; 
&gt; - As this presumably changes web exposed functionality, WebKit will behave
&gt; differently on Sierra and on High Sierra. It&apos;s best to minimize such
&gt; differences, as we want to have a consistent developer story across OS
&gt; versions, as much as possible.
&gt; 
&gt; - Having only the oldest supported version makes it trivial to ensure that
&gt; we aren&apos;t using unsupported features. With a version that contains supported
&gt; and unsupported functionality, how is one to know what&apos;s safe to use?

In JavaScript you already have to detect whether the function is available or not because SpiderMonkey and V8 have it, but Chakra and JSC do not.

That being said, it does make sense to use lowest common denominator here. Is there someone that can say A) What the oldest macOS version this needs to support is, then B) what version of ICU is available on that OS version?

For features like this that require a newer system library does it just need to wait a few years, or can system libraries be updated in older OS versions?

&gt; 
&gt; &gt; It&apos;s a shame these headers are not provided by the system, or at least by the SDK, so that the feature detecting macros could work as expected.
&gt; 
&gt; Please file a bug with Apple (bugreport.apple.com), Bugzilla comments will
&gt; not be heard.

I will take my complaint there. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422745</commentid>
    <comment_count>12</comment_count>
      <attachid>340062</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-05-10 09:56:42 -0700</bug_when>
    <thetext>Comment on attachment 340062
Patch

&gt; Is there someone that can say A) What the oldest macOS version this needs to support is, then B) what version of ICU is available on that OS version?

I think that I answered that when saying Sierra and v57.

&gt; In JavaScript you already have to detect whether the function is available or not because SpiderMonkey and V8 have it, but Chakra and JSC do not.

This is true. I still think that it&apos;s better for the same version of WebKit on different platforms to expose the same Intl behavior, especially across macOS versions. But it&apos;s OK to discuss on webkit-dev to give others an opportunity to weigh in. r- for now, but please feel to re-nominate if there is support on webkit-dev.

&gt; For features like this that require a newer system library does it just need to wait a few years, or can system libraries be updated in older OS versions?

We can&apos;t update the system ICU, but we may be able to develop a technology to have a separate copy just for Safari on Sierra. The benefit would need to be high for such a project to be worth the effort, and there might be difficulties that I&apos;m not thinking of now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422935</commentid>
    <comment_count>13</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2018-05-10 16:35:32 -0700</bug_when>
    <thetext>macOS Sierra only has v57, and it cannot be updated, so we cannot update the headers to a newer version than that yet.

Updating the headers to v57 does not enable any APIs, so we can defer updating the headers until it is practical to update them to at least v59.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340057</attachid>
            <date>2018-05-09 18:20:46 -0700</date>
            <delta_ts>2018-05-09 19:10:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185502-20180509192041.patch</filename>
            <type>text/plain</type>
            <size>870269</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA5MTE3ZTA5ZmZmMzlmOThkMjc3NThi
N2Y0OTUyODcyYzE1ZWY0YzQuLjUwZTY2ZjkyZGRmODM0M2U2N2UxMzJlYWM5MzA4ZmE2MjZhMmQy
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjE3IEBACisyMDE4LTA1LTA5ICBBbmR5IFZhbldhZ29uZXIgIDxh
bmR5QHZhbndhZ29uZXIuZmFtaWx5PgorCisgICAgICAgIFVwZGF0ZSBJQ1UgaGVhZGVycyBmb3Ig
bWFjT1MgdG8gdjYwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODU1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGljdS9SRUFETUU6CisgICAgICAgICogaWN1L3VuaWNvZGUvYWxwaGFpbmRleC5oOgor
ICAgICAgICAqIGljdS91bmljb2RlL2FwcGVuZGFibGUuaDoKKyAgICAgICAgKiBpY3UvdW5pY29k
ZS9iYXNpY3R6Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvYnJraXRlci5oOgorICAgICAgICAq
IGljdS91bmljb2RlL2J5dGVzdHJlYW0uaDoKKyAgICAgICAgKFN0cmluZ0J5dGVTaW5rOjpTdHJp
bmdCeXRlU2luayk6CisgICAgICAgICogaWN1L3VuaWNvZGUvYnl0ZXN0cmllLmg6CisgICAgICAg
ICogaWN1L3VuaWNvZGUvYnl0ZXN0cmllYnVpbGRlci5oOgorICAgICAgICAqIGljdS91bmljb2Rl
L2NhbGVuZGFyLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvY2FuaXRlci5oOgorICAgICAgICAq
IGljdS91bmljb2RlL2NoYXJpdGVyLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvY2hvaWNmbXQu
aDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9jb2xlaXRyLmg6CisgICAgICAgICogaWN1L3VuaWNv
ZGUvY29sbC5oOgorICAgICAgICAqIGljdS91bmljb2RlL2NvbXBhY3RkZWNpbWFsZm9ybWF0Lmg6
CisgICAgICAgICogaWN1L3VuaWNvZGUvY3VycmFtdC5oOgorICAgICAgICAoQ3VycmVuY3lBbW91
bnQ6OmdldElTT0N1cnJlbmN5IGNvbnN0KToKKyAgICAgICAgKiBpY3UvdW5pY29kZS9jdXJycGlu
Zi5oOgorICAgICAgICAqIGljdS91bmljb2RlL2N1cnJ1bml0Lmg6CisgICAgICAgIChDdXJyZW5j
eVVuaXQ6OmdldElTT0N1cnJlbmN5IGNvbnN0KToKKyAgICAgICAgKiBpY3UvdW5pY29kZS9kYXRl
Zm10Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvZGJiaS5oOgorICAgICAgICAqIGljdS91bmlj
b2RlL2RjZm10c3ltLmg6CisgICAgICAgIChEZWNpbWFsRm9ybWF0U3ltYm9sczo6c2V0U3ltYm9s
KToKKyAgICAgICAgKiBpY3UvdW5pY29kZS9kZWNpbWZtdC5oOgorICAgICAgICAoRGVjaW1hbEZv
cm1hdDo6Z2V0Q29uc3RTeW1ib2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGljdS91bmlj
b2RlL2RvY21haW4uaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9kdGZtdHN5bS5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL2R0aW50cnYuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9kdGl0dmZt
dC5oOgorICAgICAgICAqIGljdS91bmljb2RlL2R0aXR2aW5mLmg6CisgICAgICAgICogaWN1L3Vu
aWNvZGUvZHRwdG5nZW4uaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9kdHJ1bGUuaDoKKyAgICAg
ICAgKiBpY3UvdW5pY29kZS9lbnVtc2V0Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvZXJyb3Jj
b2RlLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvZmllbGRwb3MuaDoKKyAgICAgICAgKiBpY3Uv
dW5pY29kZS9maWx0ZXJlZGJyay5oOgorICAgICAgICAqIGljdS91bmljb2RlL2ZtdGFibGUuaDoK
KyAgICAgICAgKiBpY3UvdW5pY29kZS9mb3JtYXQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9m
cG9zaXRlci5oOgorICAgICAgICAqIGljdS91bmljb2RlL2dlbmRlci5oOgorICAgICAgICAqIGlj
dS91bmljb2RlL2dyZWdvY2FsLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvaWN1ZGF0YXZlci5o
OgorICAgICAgICAqIGljdS91bmljb2RlL2ljdXBsdWcuaDoKKyAgICAgICAgKiBpY3UvdW5pY29k
ZS9pZG5hLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvbGlzdGZvcm1hdHRlci5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL2xvY2FscG9pbnRlci5oOgorICAgICAgICAoTG9jYWxQb2ludGVyOjpM
b2NhbFBvaW50ZXIpOgorICAgICAgICAoTG9jYWxQb2ludGVyOjphZG9wdEluc3RlYWQpOgorICAg
ICAgICAoTG9jYWxQb2ludGVyOjphZG9wdEluc3RlYWRBbmRDaGVja0Vycm9yQ29kZSk6CisgICAg
ICAgIChMb2NhbEFycmF5OjpMb2NhbEFycmF5KToKKyAgICAgICAgKExvY2FsQXJyYXk6OmFkb3B0
SW5zdGVhZEFuZENoZWNrRXJyb3JDb2RlKToKKyAgICAgICAgKiBpY3UvdW5pY29kZS9sb2Nkc3Bu
bS5oOgorICAgICAgICAqIGljdS91bmljb2RlL2xvY2lkLmg6CisgICAgICAgICogaWN1L3VuaWNv
ZGUvbWVhc2ZtdC5oOgorICAgICAgICAqIGljdS91bmljb2RlL21lYXN1bml0Lmg6CisgICAgICAg
ICogaWN1L3VuaWNvZGUvbWVhc3VyZS5oOgorICAgICAgICAqIGljdS91bmljb2RlL21lc3NhZ2Vw
YXR0ZXJuLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvbXNnZm10Lmg6CisgICAgICAgICogaWN1
L3VuaWNvZGUvbm9ybWFsaXplcjIuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9ub3JtbHpyLmg6
CisgICAgICAgIChOb3JtYWxpemVyOjpjb21wYXJlKToKKyAgICAgICAgKiBpY3UvdW5pY29kZS9u
dW1mbXQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9udW1zeXMuaDoKKyAgICAgICAgKiBpY3Uv
dW5pY29kZS9wYXJzZWVyci5oOgorICAgICAgICAqIGljdS91bmljb2RlL3BhcnNlcG9zLmg6Cisg
ICAgICAgICogaWN1L3VuaWNvZGUvcGxhdGZvcm0uaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9w
bHVyZm10Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvcGx1cnJ1bGUuaDoKKyAgICAgICAgKiBp
Y3UvdW5pY29kZS9wdHlwZXMuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9wdXRpbC5oOgorICAg
ICAgICAqIGljdS91bmljb2RlL3JiYmkuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9yYm5mLmg6
CisgICAgICAgICogaWN1L3VuaWNvZGUvcmJ0ei5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Jl
Z2V4Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvcmVnaW9uLmg6CisgICAgICAgICogaWN1L3Vu
aWNvZGUvcmVsZGF0ZWZtdC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3JlcC5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL3Jlc2J1bmQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9zY2hyaXRl
ci5oOgorICAgICAgICAqIGljdS91bmljb2RlL3NjaWVudGlmaWNudW1iZXJmb3JtYXR0ZXIuaDoK
KyAgICAgICAgKiBpY3UvdW5pY29kZS9zZWFyY2guaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9z
ZWxmbXQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9zaW1wbGV0ei5oOgorICAgICAgICAqIGlj
dS91bmljb2RlL3NtcGR0Zm10Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvc29ydGtleS5oOgor
ICAgICAgICAqIGljdS91bmljb2RlL3N0ZF9zdHJpbmcuaDoKKyAgICAgICAgKiBpY3UvdW5pY29k
ZS9zdHJlbnVtLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvc3RyaW5ncGllY2UuaDoKKyAgICAg
ICAgKiBpY3UvdW5pY29kZS9zdHJpbmd0cmllYnVpbGRlci5oOgorICAgICAgICAqIGljdS91bmlj
b2RlL3N0c2VhcmNoLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvc3ltdGFibGUuaDoKKyAgICAg
ICAgKiBpY3UvdW5pY29kZS90Ymxjb2xsLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdGltZXpv
bmUuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS90bXVuaXQuaDoKKyAgICAgICAgKiBpY3UvdW5p
Y29kZS90bXV0YW10Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdG11dGZtdC5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL3RyYW5zbGl0Lmg6CisgICAgICAgIChUcmFuc2xpdGVyYXRvcjo6c2V0
SUQpOgorICAgICAgICAqIGljdS91bmljb2RlL3R6Zm10Lmg6CisgICAgICAgICogaWN1L3VuaWNv
ZGUvdHpuYW1lcy5oOgorICAgICAgICAqIGljdS91bmljb2RlL3R6cnVsZS5oOgorICAgICAgICAq
IGljdS91bmljb2RlL3R6dHJhbnMuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91YmlkaS5oOgor
ICAgICAgICAqIGljdS91bmljb2RlL3VicmsuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91Y2Fs
Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWNhc2VtYXAuaDoKKyAgICAgICAgKiBpY3UvdW5p
Y29kZS91Y2F0Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWNoYXIuaDoKKyAgICAgICAgKiBp
Y3UvdW5pY29kZS91Y2hhcnN0cmllLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWNoYXJzdHJp
ZWJ1aWxkZXIuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91Y2hyaXRlci5oOgorICAgICAgICAq
IGljdS91bmljb2RlL3VjbGVhbi5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VjbnYuaDoKKyAg
ICAgICAgKiBpY3UvdW5pY29kZS91Y252X2NiLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWNu
dl9lcnIuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91Y252c2VsLmg6CisgICAgICAgICogaWN1
L3VuaWNvZGUvdWNvbC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Vjb2xlaXRyLmg6CisgICAg
ICAgICogaWN1L3VuaWNvZGUvdWNvbmZpZy5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Vjc2Rl
dC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VjdXJyLmg6CisgICAgICAgICogaWN1L3VuaWNv
ZGUvdWRhdC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VkYXRhLmg6CisgICAgICAgICogaWN1
L3VuaWNvZGUvdWRhdGVpbnRlcnZhbGZvcm1hdC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Vk
YXRwZy5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VkaXNwbGF5Y29udGV4dC5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL3VlbnVtLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWZpZWxkcG9z
aXRlci5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Vmb3JtYXR0YWJsZS5oOgorICAgICAgICAq
IGljdS91bmljb2RlL3VnZW5kZXIuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91aWRuYS5oOgor
ICAgICAgICAqIGljdS91bmljb2RlL3VpdGVyLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWxk
bmFtZXMuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91bGlzdGZvcm1hdHRlci5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL3Vsb2MuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91bG9jZGF0YS5o
OgorICAgICAgICAqIGljdS91bmljb2RlL3VtYWNoaW5lLmg6CisgICAgICAgICogaWN1L3VuaWNv
ZGUvdW1pc2MuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91bXNnLmg6CisgICAgICAgICogaWN1
L3VuaWNvZGUvdW5pZmlsdC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VuaWZ1bmN0Lmg6Cisg
ICAgICAgICogaWN1L3VuaWNvZGUvdW5pbWF0Y2guaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91
bmlyZXBsLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdW5pc2V0Lmg6CisgICAgICAgICogaWN1
L3VuaWNvZGUvdW5pc3RyLmg6CisgICAgICAgIChVbmljb2RlU3RyaW5nOjpVbmljb2RlU3RyaW5n
KToKKyAgICAgICAgKFVuaWNvZGVTdHJpbmc6OmdldEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChV
bmljb2RlU3RyaW5nOjpjb21wYXJlIGNvbnN0KToKKyAgICAgICAgKFVuaWNvZGVTdHJpbmc6OmNv
bXBhcmVDb2RlUG9pbnRPcmRlciBjb25zdCk6CisgICAgICAgIChVbmljb2RlU3RyaW5nOjpjYXNl
Q29tcGFyZSBjb25zdCk6CisgICAgICAgIChVbmljb2RlU3RyaW5nOjppbmRleE9mIGNvbnN0KToK
KyAgICAgICAgKFVuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mIGNvbnN0KToKKyAgICAgICAgKFVu
aWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGggY29uc3QpOgorICAgICAgICAoVW5pY29kZVN0cmluZzo6
ZW5kc1dpdGggY29uc3QpOgorICAgICAgICAoVW5pY29kZVN0cmluZzo6cmVwbGFjZSk6CisgICAg
ICAgIChVbmljb2RlU3RyaW5nOjpleHRyYWN0IGNvbnN0KToKKyAgICAgICAgKFVuaWNvZGVTdHJp
bmc6OmV4dHJhY3RCZXR3ZWVuIGNvbnN0KToKKyAgICAgICAgKFVuaWNvZGVTdHJpbmc6OnNldEFy
cmF5KToKKyAgICAgICAgKFVuaWNvZGVTdHJpbmc6Om9wZXJhdG9yPSApOgorICAgICAgICAoVW5p
Y29kZVN0cmluZzo6c2V0VG8pOgorICAgICAgICAoVW5pY29kZVN0cmluZzo6YXBwZW5kKToKKyAg
ICAgICAgKFVuaWNvZGVTdHJpbmc6Om9wZXJhdG9yKz0gKToKKyAgICAgICAgKFVuaWNvZGVTdHJp
bmc6Omluc2VydCk6CisgICAgICAgICogaWN1L3VuaWNvZGUvdW5vcm0uaDoKKyAgICAgICAgKiBp
Y3UvdW5pY29kZS91bm9ybTIuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91bnVtLmg6CisgICAg
ICAgICogaWN1L3VuaWNvZGUvdW51bXN5cy5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VvYmpl
Y3QuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91cGx1cmFscnVsZXMuaDoKKyAgICAgICAgKiBp
Y3UvdW5pY29kZS91cmVnZXguaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91cmVnaW9uLmg6Cisg
ICAgICAgICogaWN1L3VuaWNvZGUvdXJlbmFtZS5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Vy
ZXAuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91cmVzLmg6CisgICAgICAgICh1cmVzX2dldFVu
aWNvZGVTdHJpbmcpOgorICAgICAgICAodXJlc19nZXROZXh0VW5pY29kZVN0cmluZyk6CisgICAg
ICAgICh1cmVzX2dldFVuaWNvZGVTdHJpbmdCeUluZGV4KToKKyAgICAgICAgKHVyZXNfZ2V0VW5p
Y29kZVN0cmluZ0J5S2V5KToKKyAgICAgICAgKiBpY3UvdW5pY29kZS91c2NyaXB0Lmg6CisgICAg
ICAgICogaWN1L3VuaWNvZGUvdXNlYXJjaC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VzZXQu
aDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91c2V0aXRlci5oOgorICAgICAgICAqIGljdS91bmlj
b2RlL3VzaGFwZS5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VzcG9vZi5oOgorICAgICAgICAq
IGljdS91bmljb2RlL3VzcHJlcC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VzdHJpbmcuaDoK
KyAgICAgICAgKiBpY3UvdW5pY29kZS91c3RyaW5ndHJpZS5oOgorICAgICAgICAqIGljdS91bmlj
b2RlL3V0ZXh0Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdXRmLmg6CisgICAgICAgICogaWN1
L3VuaWNvZGUvdXRmMTYuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91dGYzMi5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL3V0ZjguaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91dGZfb2xkLmg6
CisgICAgICAgICogaWN1L3VuaWNvZGUvdXRtc2NhbGUuaDoKKyAgICAgICAgKiBpY3UvdW5pY29k
ZS91dHJhY2UuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91dHJhbnMuaDoKKyAgICAgICAgKiBp
Y3UvdW5pY29kZS91dHlwZXMuaDoKKyAgICAgICAgKG9wZXJhdG9yIG5ldyk6IERlbGV0ZWQuCisg
ICAgICAgIChvcGVyYXRvciBuZXdbXSk6IERlbGV0ZWQuCisgICAgICAgIChvcGVyYXRvciBkZWxl
dGUpOiBEZWxldGVkLgorICAgICAgICAob3BlcmF0b3IgZGVsZXRlW10pOiBEZWxldGVkLgorICAg
ICAgICAqIGljdS91bmljb2RlL3V2ZXJudW0uaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91dmVy
c2lvbi5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Z0em9uZS5oOgorCiAyMDE4LTA1LTA5ICBN
aWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BF
XSBCdWlsZCBjbGVhbmx5IHdpdGggR0NDIDggYW5kIElDVSA2MApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9pY3UvUkVBRE1FIGIvU291cmNlL1dURi9pY3UvUkVBRE1FCmluZGV4IDMyNmVmZTE3OTg2
NDUwOTVlOWE2YzRlYzNhMjljZDJkNDkxNGIxMmYuLmY5YWI1MDEyMzk4Y2U1YWJhOGI0ZjRkOGRl
OTBkMTE1OTExM2MzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L1JFQURNRQorKysgYi9T
b3VyY2UvV1RGL2ljdS9SRUFETUUKQEAgLTQsOSArNCwyNiBAQCBUaGUgTWFjIE9TIFggMTAuNCBh
bmQgc3Vic2VxdWVudCByZWxlYXNlcyBpbmNsdWRlIHRoZSBJQ1UgYmluYXJ5LCBidXQgbm90IElD
VSBoZQogRm9yIG90aGVyIHBsYXRmb3JtcywgaW5zdGFsbGVkIElDVSBoZWFkZXJzIHNob3VsZCBi
ZSB1c2VkIHJhdGhlciB0aGFuIHRoZXNlLgogVGhleSBhcmUgc3BlY2lmaWMgdG8gdGhlIE1hYyBP
UyBYIHBsYXRmb3JtLgogCi1UaGUgaGVhZGVycyBoZXJlIGFyZSBmcm9tIElDVSB2ZXJzaW9uIDU1
LjEgZG93bmxvYWRlZCBmcm9tIHRoZSBJQ1UgcHJvamVjdC4KLWh0dHA6Ly9zaXRlLmljdS1wcm9q
ZWN0Lm9yZy9kb3dubG9hZC81NSNUT0MtSUNVNEMtRG93bmxvYWQKK1RoZSBoZWFkZXJzIGhlcmUg
YXJlIGZyb20gSUNVIHZlcnNpb24gNjAuMiBkb3dubG9hZGVkIGZyb20gdGhlIElDVSBwcm9qZWN0
LgoraHR0cDovL3NpdGUuaWN1LXByb2plY3Qub3JnL2Rvd25sb2FkLzYwI1RPQy1JQ1U0Qy1Eb3du
bG9hZAogCiBUaGUgZm9sbG93aW5nIGNoYW5nZXMgYXJlIG5lZWRlZCBhZ2FpbiBpZiB5b3UgdXBk
YXRlIHRoZSBmaWxlczoKLXV0eXBlcy5oOjYyIFVfU0hPV19DUExVU1BMVVNfQVBJIDAKLXVjb25m
aWcuaDo5MCBVX0RJU0FCTEVfUkVOQU1JTkcgMQorCitGb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkg
d2l0aCBzeXN0ZW0gbGlicmFyeSwgZGlzYWJsZSByZW5hbWluZyAmIEMrKyBhcGlzLgoraHR0cDov
L3VzZXJndWlkZS5pY3UtcHJvamVjdC5vcmcvZGVzaWduI1RPQy1JQ1UtQmluYXJ5LUNvbXBhdGli
aWxpdHk6LVVzaW5nLUlDVS1hcy1hbi1PcGVyYXRpbmctU3lzdGVtLUxldmVsLUxpYnJhcnkKKwor
dWNvbmZpZy5oOjkyIFVfRElTQUJMRV9SRU5BTUlORyAxCit1dHlwZXMuaDo2NCBVX1NIT1dfQ1BM
VVNQTFVTX0FQSSAwCisKK1NpbWlsYXIgdG8gZGlzYWJsaW5nIEMrKyBhcGlzLCB3ZSB3YW50IFVD
aGFyIHRvIGJlIGRlZmluZWQgYXMgaWYgY29tcGlsaW5nIGZvciBDLgorCit1bWFjaGluZTozNDYg
I2VsaWYgMAorCitEb24ndCBpbmNsdWRlIHRoZXNlIEMrKyBvbmx5IGZpbGVzOgorCitjYXNlbWFw
LmgKK2NoYXIxNnB0ci5oCitlZGl0cy5oCitub3VuaXQuaAorbnVtYmVyZm9ybWF0dGVyLmgKK3Np
bXBsZWZvcm1hdHRlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2FscGhh
aW5kZXguaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYWxwaGFpbmRleC5oCmluZGV4IDc5Njk5
NjJlNTVkZTExYTc5ODA2ZjFjMGEzMDcyNjNiNTk1OGZjY2QuLjE0NDJmNzU0ZTQ2ZDc1OWYxZjEw
ODU2ZjNiOWU5NWQzZDlkMWNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
YWxwaGFpbmRleC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYWxwaGFpbmRleC5oCkBA
IC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC0xMyw2ICsx
NSw3IEBACiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKICNpbmNsdWRlICJ1bmljb2RlL3Vv
YmplY3QuaCIKICNpbmNsdWRlICJ1bmljb2RlL2xvY2lkLmgiCisjaW5jbHVkZSAidW5pY29kZS91
bmlzdHIuaCIKIAogI2lmICFVQ09ORklHX05PX0NPTExBVElPTgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL2FwcGVuZGFibGUuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
YXBwZW5kYWJsZS5oCmluZGV4IGE2YTgzYjE1Y2Y5NzE5M2IyZGM2OTFmOTBjYmNhYTkxOTI4ZGRi
N2YuLjg1MTJjMmYzMDMxMWI4ZDFiYzFiOGE4ZTQ2N2RkYWRjMzgyOGQ0MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYXBwZW5kYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvYXBwZW5kYWJsZS5oCkBAIC0xLDEwICsxLDEyIEBACisvLyDCqSAyMDE2IGFuZCBs
YXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVz
ZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiwgSW50ZXJuYXRpb25hbCBC
dXNpbmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRz
IFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIGFwcGVu
ZGFibGUuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgK
ICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC0x
Nyw3ICsxOSw3IEBACiAKIC8qKgogICogXGZpbGUKLSAqIFxicmllZiBDKysgQVBJOiBBcHBlbmRh
YmxlIGNsYXNzOiBTaW5rIGZvciBVbmljb2RlIGNvZGUgcG9pbnRzIGFuZCAxNi1iaXQgY29kZSB1
bml0cyAoVUNoYXJzKS4KKyAqIFxicmllZiBDKysgQVBJOiBBcHBlbmRhYmxlIGNsYXNzOiBTaW5r
IGZvciBVbmljb2RlIGNvZGUgcG9pbnRzIGFuZCAxNi1iaXQgY29kZSB1bml0cyAoY2hhcjE2X3Rz
KS4KICAqLwogCiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKQEAgLTMyLDEwICszNCwxMCBA
QCBjbGFzcyBVbmljb2RlU3RyaW5nOwogICogQ29tYmluZXMgZWxlbWVudHMgb2YgSmF2YSBBcHBl
bmRhYmxlIGFuZCBJQ1U0QyBCeXRlU2luay4KICAqCiAgKiBUaGlzIGNsYXNzIGNhbiBiZSB1c2Vk
IGluIEFQSXMgd2hlcmUgaXQgZG9lcyBub3QgbWF0dGVyIHdoZXRoZXIgdGhlIGFjdHVhbCBkZXN0
aW5hdGlvbiBpcwotICogYSBVbmljb2RlU3RyaW5nLCBhIFVDaGFyW10gYXJyYXksIGEgVW5pY29k
ZVNldCwgb3IgYW55IG90aGVyIG9iamVjdAorICogYSBVbmljb2RlU3RyaW5nLCBhIGNoYXIxNl90
W10gYXJyYXksIGEgVW5pY29kZVNldCwgb3IgYW55IG90aGVyIG9iamVjdAogICogdGhhdCByZWNl
aXZlcyBhbmQgcHJvY2Vzc2VzIGNoYXJhY3RlcnMgYW5kL29yIHN0cmluZ3MuCiAgKgotICogSW1w
bGVtZW50YXRpb24gY2xhc3NlcyBtdXN0IGltcGxlbWVudCBhdCBsZWFzdCBhcHBlbmRDb2RlVW5p
dChVQ2hhcikuCisgKiBJbXBsZW1lbnRhdGlvbiBjbGFzc2VzIG11c3QgaW1wbGVtZW50IGF0IGxl
YXN0IGFwcGVuZENvZGVVbml0KGNoYXIxNl90KS4KICAqIFRoZSBiYXNlIGNsYXNzIHByb3ZpZGVz
IGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgb3RoZXIgbWV0aG9kcy4KICAqCiAgKiBU
aGUgbWV0aG9kcyBkbyBub3QgdGFrZSBVRXJyb3JDb2RlIHBhcmFtZXRlcnMuCkBAIC02MCwxMSAr
NjIsMTEgQEAgcHVibGljOgogICAgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgb3BlcmF0aW9uIHN1
Y2NlZWRlZAogICAgICAqIEBzdGFibGUgSUNVIDQuOAogICAgICAqLwotICAgIHZpcnR1YWwgVUJv
b2wgYXBwZW5kQ29kZVVuaXQoVUNoYXIgYykgPSAwOworICAgIHZpcnR1YWwgVUJvb2wgYXBwZW5k
Q29kZVVuaXQoY2hhcjE2X3QgYykgPSAwOwogCiAgICAgLyoqCiAgICAgICogQXBwZW5kcyBhIGNv
ZGUgcG9pbnQuCi0gICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgYXBwZW5k
Q29kZVVuaXQoVUNoYXIpIG9uY2Ugb3IgdHdpY2UuCisgICAgICogVGhlIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24gY2FsbHMgYXBwZW5kQ29kZVVuaXQoY2hhcjE2X3QpIG9uY2Ugb3IgdHdpY2UuCiAg
ICAgICogQHBhcmFtIGMgY29kZSBwb2ludCAwLi4weDEwZmZmZgogICAgICAqIEByZXR1cm4gVFJV
RSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZAogICAgICAqIEBzdGFibGUgSUNVIDQuOApAQCAt
NzMsMjAgKzc1LDIwIEBAIHB1YmxpYzoKIAogICAgIC8qKgogICAgICAqIEFwcGVuZHMgYSBzdHJp
bmcuCi0gICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgYXBwZW5kQ29kZVVu
aXQoVUNoYXIpIGZvciBlYWNoIGNvZGUgdW5pdC4KKyAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbiBjYWxscyBhcHBlbmRDb2RlVW5pdChjaGFyMTZfdCkgZm9yIGVhY2ggY29kZSB1bml0
LgogICAgICAqIEBwYXJhbSBzIHN0cmluZywgbXVzdCBub3QgYmUgTlVMTCBpZiBsZW5ndGghPTAK
ICAgICAgKiBAcGFyYW0gbGVuZ3RoIHN0cmluZyBsZW5ndGgsIG9yIC0xIGlmIE5VTC10ZXJtaW5h
dGVkCiAgICAgICogQHJldHVybiBUUlVFIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZGVkCiAgICAg
ICogQHN0YWJsZSBJQ1UgNC44CiAgICAgICovCi0gICAgdmlydHVhbCBVQm9vbCBhcHBlbmRTdHJp
bmcoY29uc3QgVUNoYXIgKnMsIGludDMyX3QgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIFVCb29sIGFw
cGVuZFN0cmluZyhjb25zdCBjaGFyMTZfdCAqcywgaW50MzJfdCBsZW5ndGgpOwogCiAgICAgLyoq
CiAgICAgICogVGVsbHMgdGhlIG9iamVjdCB0aGF0IHRoZSBjYWxsZXIgaXMgZ29pbmcgdG8gYXBw
ZW5kIHJvdWdobHkKLSAgICAgKiBhcHBlbmRDYXBhY2l0eSBVQ2hhcnMuIEEgc3ViY2xhc3MgbWln
aHQgdXNlIHRoaXMgdG8gcHJlLWFsbG9jYXRlCisgICAgICogYXBwZW5kQ2FwYWNpdHkgY2hhcjE2
X3RzLiBBIHN1YmNsYXNzIG1pZ2h0IHVzZSB0aGlzIHRvIHByZS1hbGxvY2F0ZQogICAgICAqIGEg
bGFyZ2VyIGJ1ZmZlciBpZiBuZWNlc3NhcnkuCiAgICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50
YXRpb24gZG9lcyBub3RoaW5nLiAoSXQgYWx3YXlzIHJldHVybnMgVFJVRS4pCi0gICAgICogQHBh
cmFtIGFwcGVuZENhcGFjaXR5IGVzdGltYXRlZCBudW1iZXIgb2YgVUNoYXJzIHRoYXQgd2lsbCBi
ZSBhcHBlbmRlZAorICAgICAqIEBwYXJhbSBhcHBlbmRDYXBhY2l0eSBlc3RpbWF0ZWQgbnVtYmVy
IG9mIGNoYXIxNl90cyB0aGF0IHdpbGwgYmUgYXBwZW5kZWQKICAgICAgKiBAcmV0dXJuIFRSVUUg
aWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkZWQKICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAg
Ki8KQEAgLTEwMCwxOSArMTAyLDE5IEBAIHB1YmxpYzoKICAgICAgKiBUaGUgcmV0dXJuZWQgYnVm
ZmVyIGlzIG9ubHkgdmFsaWQgdW50aWwgdGhlIG5leHQgb3BlcmF0aW9uCiAgICAgICogb24gdGhp
cyBBcHBlbmRhYmxlLgogICAgICAqCi0gICAgICogQWZ0ZXIgd3JpdGluZyBhdCBtb3N0ICpyZXN1
bHRDYXBhY2l0eSBVQ2hhcnMsIGNhbGwgYXBwZW5kU3RyaW5nKCkgd2l0aCB0aGUKLSAgICAgKiBw
b2ludGVyIHJldHVybmVkIGZyb20gdGhpcyBmdW5jdGlvbiBhbmQgdGhlIG51bWJlciBvZiBVQ2hh
cnMgd3JpdHRlbi4KLSAgICAgKiBNYW55IGFwcGVuZFN0cmluZygpIGltcGxlbWVudGF0aW9ucyB3
aWxsIGF2b2lkIGNvcHlpbmcgVUNoYXJzIGlmIHRoaXMgZnVuY3Rpb24KKyAgICAgKiBBZnRlciB3
cml0aW5nIGF0IG1vc3QgKnJlc3VsdENhcGFjaXR5IGNoYXIxNl90cywgY2FsbCBhcHBlbmRTdHJp
bmcoKSB3aXRoIHRoZQorICAgICAqIHBvaW50ZXIgcmV0dXJuZWQgZnJvbSB0aGlzIGZ1bmN0aW9u
IGFuZCB0aGUgbnVtYmVyIG9mIGNoYXIxNl90cyB3cml0dGVuLgorICAgICAqIE1hbnkgYXBwZW5k
U3RyaW5nKCkgaW1wbGVtZW50YXRpb25zIHdpbGwgYXZvaWQgY29weWluZyBjaGFyMTZfdHMgaWYg
dGhpcyBmdW5jdGlvbgogICAgICAqIHJldHVybmVkIGFuIGludGVybmFsIGJ1ZmZlci4KICAgICAg
KgogICAgICAqIFBhcnRpYWwgdXNhZ2UgZXhhbXBsZToKICAgICAgKiBcY29kZQogICAgICAqICBp
bnQzMl90IGNhcGFjaXR5OwotICAgICAqICBVQ2hhciogYnVmZmVyID0gYXBwLmdldEFwcGVuZEJ1
ZmZlciguLi4sICZjYXBhY2l0eSk7Ci0gICAgICogIC4uLiBXcml0ZSBuIFVDaGFycyBpbnRvIGJ1
ZmZlciwgd2l0aCBuIDw9IGNhcGFjaXR5LgorICAgICAqICBjaGFyMTZfdCogYnVmZmVyID0gYXBw
LmdldEFwcGVuZEJ1ZmZlciguLi4sICZjYXBhY2l0eSk7CisgICAgICogIC4uLiBXcml0ZSBuIGNo
YXIxNl90cyBpbnRvIGJ1ZmZlciwgd2l0aCBuIDw9IGNhcGFjaXR5LgogICAgICAqICBhcHAuYXBw
ZW5kU3RyaW5nKGJ1ZmZlciwgbik7CiAgICAgICogXGVuZGNvZGUKLSAgICAgKiBJbiBtYW55IGlt
cGxlbWVudGF0aW9ucywgdGhhdCBjYWxsIHRvIGFwcGVuZCB3aWxsIGF2b2lkIGNvcHlpbmcgVUNo
YXJzLgorICAgICAqIEluIG1hbnkgaW1wbGVtZW50YXRpb25zLCB0aGF0IGNhbGwgdG8gYXBwZW5k
IHdpbGwgYXZvaWQgY29weWluZyBjaGFyMTZfdHMuCiAgICAgICoKICAgICAgKiBJZiB0aGUgQXBw
ZW5kYWJsZSBhbGxvY2F0ZXMgb3IgcmVhbGxvY2F0ZXMgYW4gaW50ZXJuYWwgYnVmZmVyLCBpdCBz
aG91bGQgdXNlCiAgICAgICogdGhlIGRlc2lyZWRDYXBhY2l0eUhpbnQgaWYgYXBwcm9wcmlhdGUu
CkBAIC0xMzYsOSArMTM4LDkgQEAgcHVibGljOgogICAgICAqIEByZXR1cm4gYSBidWZmZXIgd2l0
aCAqcmVzdWx0Q2FwYWNpdHk+PW1pbkNhcGFjaXR5CiAgICAgICogQHN0YWJsZSBJQ1UgNC44CiAg
ICAgICovCi0gICAgdmlydHVhbCBVQ2hhciAqZ2V0QXBwZW5kQnVmZmVyKGludDMyX3QgbWluQ2Fw
YWNpdHksCisgICAgdmlydHVhbCBjaGFyMTZfdCAqZ2V0QXBwZW5kQnVmZmVyKGludDMyX3QgbWlu
Q2FwYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgZGVz
aXJlZENhcGFjaXR5SGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNo
YXIgKnNjcmF0Y2gsIGludDMyX3Qgc2NyYXRjaENhcGFjaXR5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyMTZfdCAqc2NyYXRjaCwgaW50MzJfdCBzY3JhdGNoQ2FwYWNp
dHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKnJlc3VsdENh
cGFjaXR5KTsKIH07CiAKQEAgLTE2OSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgICogQHJldHVy
biBUUlVFIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZGVkCiAgICAgICogQHN0YWJsZSBJQ1UgNC44
CiAgICAgICovCi0gICAgdmlydHVhbCBVQm9vbCBhcHBlbmRDb2RlVW5pdChVQ2hhciBjKTsKKyAg
ICB2aXJ0dWFsIFVCb29sIGFwcGVuZENvZGVVbml0KGNoYXIxNl90IGMpOwogCiAgICAgLyoqCiAg
ICAgICogQXBwZW5kcyBhIGNvZGUgcG9pbnQgdG8gdGhlIHN0cmluZy4KQEAgLTE4NiwxMiArMTg4
LDEyIEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIG9wZXJhdGlvbiBzdWNj
ZWVkZWQKICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVCb29s
IGFwcGVuZFN0cmluZyhjb25zdCBVQ2hhciAqcywgaW50MzJfdCBsZW5ndGgpOworICAgIHZpcnR1
YWwgVUJvb2wgYXBwZW5kU3RyaW5nKGNvbnN0IGNoYXIxNl90ICpzLCBpbnQzMl90IGxlbmd0aCk7
CiAKICAgICAvKioKICAgICAgKiBUZWxscyB0aGUgVW5pY29kZVN0cmluZyB0aGF0IHRoZSBjYWxs
ZXIgaXMgZ29pbmcgdG8gYXBwZW5kIHJvdWdobHkKLSAgICAgKiBhcHBlbmRDYXBhY2l0eSBVQ2hh
cnMuCi0gICAgICogQHBhcmFtIGFwcGVuZENhcGFjaXR5IGVzdGltYXRlZCBudW1iZXIgb2YgVUNo
YXJzIHRoYXQgd2lsbCBiZSBhcHBlbmRlZAorICAgICAqIGFwcGVuZENhcGFjaXR5IGNoYXIxNl90
cy4KKyAgICAgKiBAcGFyYW0gYXBwZW5kQ2FwYWNpdHkgZXN0aW1hdGVkIG51bWJlciBvZiBjaGFy
MTZfdHMgdGhhdCB3aWxsIGJlIGFwcGVuZGVkCiAgICAgICogQHJldHVybiBUUlVFIGlmIHRoZSBv
cGVyYXRpb24gc3VjY2VlZGVkCiAgICAgICogQHN0YWJsZSBJQ1UgNC44CiAgICAgICovCkBAIC0y
MTgsOSArMjIwLDkgQEAgcHVibGljOgogICAgICAqIEByZXR1cm4gYSBidWZmZXIgd2l0aCAqcmVz
dWx0Q2FwYWNpdHk+PW1pbkNhcGFjaXR5CiAgICAgICogQHN0YWJsZSBJQ1UgNC44CiAgICAgICov
Ci0gICAgdmlydHVhbCBVQ2hhciAqZ2V0QXBwZW5kQnVmZmVyKGludDMyX3QgbWluQ2FwYWNpdHks
CisgICAgdmlydHVhbCBjaGFyMTZfdCAqZ2V0QXBwZW5kQnVmZmVyKGludDMyX3QgbWluQ2FwYWNp
dHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgZGVzaXJlZENh
cGFjaXR5SGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIgKnNj
cmF0Y2gsIGludDMyX3Qgc2NyYXRjaENhcGFjaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyMTZfdCAqc2NyYXRjaCwgaW50MzJfdCBzY3JhdGNoQ2FwYWNpdHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKnJlc3VsdENhcGFjaXR5
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYmFzaWN0
ei5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9iYXNpY3R6LmgKaW5kZXggZjFlNDc3ZjQ3NDM4
OTQzODZmNGRiYjg1NTI1YjczODI4ZmIwMjJmZi4uMzU0MTIwNzI2OGRkZmIwZDhhNmFhZGJiNGI2
YzU1MGYwODdlZjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9iYXNpY3R6
LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9iYXNpY3R6LmgKQEAgLTEsMyArMSw1IEBA
CisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGlj
ZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRt
bAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTMs
IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2Jya2l0ZXIuaCBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvYnJraXRlci5oCmluZGV4IDRhYTVlNTUyNzk2MDkwZWFlYmNkN2NlN2I3ZDI3NWFhOGIz
Nzc1YjQuLmM2NGJiNzEyMjIyYzYzNDZlOGRhMzJmMTQ0YzQ0MTkxOTFmMmUxMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYnJraXRlci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvYnJraXRlci5oCkBAIC0xLDYgKzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6
IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0
dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgotKiAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTYsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC0xNjgsNiArMTcwLDEx
IEBAIHB1YmxpYzoKICAgICAvKioKICAgICAgKiBDaGFuZ2UgdGhlIHRleHQgb3ZlciB3aGljaCB0
aGlzIG9wZXJhdGVzLiBUaGUgdGV4dCBib3VuZGFyeSBpcwogICAgICAqIHJlc2V0IHRvIHRoZSBz
dGFydC4KKyAgICAgKgorICAgICAqIFRoZSBCcmVha0l0ZXJhdG9yIHdpbGwgcmV0YWluIGEgcmVm
ZXJlbmNlIHRvIHRoZSBzdXBwbGllZCBzdHJpbmcuCisgICAgICogVGhlIGNhbGxlciBtdXN0IG5v
dCBtb2RpZnkgb3IgZGVsZXRlIHRoZSB0ZXh0IHdoaWxlIHRoZSBCcmVha0l0ZXJhdG9yCisgICAg
ICogcmV0YWlucyB0aGUgcmVmZXJlbmNlLgorICAgICAqCiAgICAgICogQHBhcmFtIHRleHQgVGhl
IFVuaWNvZGVTdHJpbmcgdXNlZCB0byBjaGFuZ2UgdGhlIHRleHQuCiAgICAgICogQHN0YWJsZSBJ
Q1UgMi4wCiAgICAgICovCkBAIC0yNDMsNyArMjUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50MzJfdCBuZXh0KHZvaWQpID0gMDsKIAogICAgIC8qKgotICAgICAqIFJldHVybiBjaGFyYWN0
ZXIgaW5kZXggb2YgdGhlIGN1cnJlbnQgaW50ZXJhdG9yIHBvc2l0aW9uIHdpdGhpbiB0aGUgdGV4
dC4KKyAgICAgKiBSZXR1cm4gY2hhcmFjdGVyIGluZGV4IG9mIHRoZSBjdXJyZW50IGl0ZXJhdG9y
IHBvc2l0aW9uIHdpdGhpbiB0aGUgdGV4dC4KICAgICAgKiBAcmV0dXJuIFRoZSBib3VuZGFyeSBt
b3N0IHJlY2VudGx5IHJldHVybmVkLgogICAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgICAqLwpA
QCAtMjcwLDcgKzI3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludDMyX3QgcHJlY2VkaW5n
KGludDMyX3Qgb2Zmc2V0KSA9IDA7CiAKICAgICAvKioKLSAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0
aGUgc3BlY2ZpZWQgcG9zaXRpb24gaXMgYSBib3VuZGFyeSBwb3NpdGlvbi4KKyAgICAgKiBSZXR1
cm4gdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGlzIGEgYm91bmRhcnkgcG9zaXRpb24u
CiAgICAgICogQXMgYSBzaWRlIGVmZmVjdCwgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIGl0
ZXJhdG9yIGlzIHNldAogICAgICAqIHRvIHRoZSBmaXJzdCBib3VuZGFyeSBwb3NpdGlvbiBhdCBv
ciBmb2xsb3dpbmcgdGhlIHNwZWNpZmllZCBvZmZzZXQuCiAgICAgICogQHBhcmFtIG9mZnNldCB0
aGUgb2Zmc2V0IHRvIGNoZWNrLgpAQCAtMjg1LDEzICsyOTIsMTMgQEAgcHVibGljOgogICAgICAq
IGRvZXMgbm90aGluZy4gIE5lZ2F0aXZlIHZhbHVlcyBtb3ZlIHRvIHByZXZpb3VzIGJvdW5kYXJp
ZXMKICAgICAgKiBhbmQgcG9zaXRpdmUgdmFsdWVzIG1vdmUgdG8gbGF0ZXIgYm91bmRhcmllcy4K
ICAgICAgKiBAcmV0dXJuIFRoZSBuZXcgaXRlcmF0b3IgcG9zaXRpb24sIG9yCi0gICAgICogRE9O
RSBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiB8bnwgYm91bmRhcmllcyBpbiB0aGUgc3BlY2ZpZWQg
ZGlyZWN0aW9uLgorICAgICAqIERPTkUgaWYgdGhlcmUgYXJlIGZld2VyIHRoYW4gfG58IGJvdW5k
YXJpZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3Rpb24uCiAgICAgICogQHN0YWJsZSBJQ1UgMi4w
CiAgICAgICovCiAgICAgdmlydHVhbCBpbnQzMl90IG5leHQoaW50MzJfdCBuKSA9IDA7CiAKICAg
IC8qKgotICAgICAqIEZvciBSdWxlQmFzZWRCcmVha0l0ZXJhdG9ycywgcmV0dXJuIHRoZSBzdGF0
dXMgdGFnIGZyb20gdGhlIAorICAgICAqIEZvciBSdWxlQmFzZWRCcmVha0l0ZXJhdG9ycywgcmV0
dXJuIHRoZSBzdGF0dXMgdGFnIGZyb20gdGhlCiAgICAgICogYnJlYWsgcnVsZSB0aGF0IGRldGVy
bWluZWQgdGhlIG1vc3QgcmVjZW50bHkKICAgICAgKiByZXR1cm5lZCBicmVhayBwb3NpdGlvbi4K
ICAgICAgKiA8cD4KQEAgLTMwNyw3ICszMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQz
Ml90IGdldFJ1bGVTdGF0dXMoKSBjb25zdDsKIAogICAgLyoqCi0gICAgKiBGb3IgUnVsZUJhc2Vk
QnJlYWtJdGVyYXRvcnMsIGdldCB0aGUgc3RhdHVzICh0YWcpIHZhbHVlcyBmcm9tIHRoZSBicmVh
ayBydWxlKHMpIAorICAgICogRm9yIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3JzLCBnZXQgdGhlIHN0
YXR1cyAodGFnKSB2YWx1ZXMgZnJvbSB0aGUgYnJlYWsgcnVsZShzKQogICAgICogdGhhdCBkZXRl
cm1pbmVkIHRoZSBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJyZWFrIHBvc2l0aW9uLgogICAgICog
PHA+CiAgICAgKiBGb3IgYnJlYWsgaXRlcmF0b3IgdHlwZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBy
dWxlIHN0YXR1cywKQEAgLTMyNCw3ICszMzEsNyBAQCBwdWJsaWM6CiAgICAgKiBAcGFyYW0gZmls
bEluVmVjIGFuIGFycmF5IHRvIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSBzdGF0dXMgdmFsdWVzLgog
ICAgICogQHBhcmFtIGNhcGFjaXR5ICB0aGUgbGVuZ3RoIG9mIHRoZSBzdXBwbGllZCB2ZWN0b3Iu
ICBBIGxlbmd0aCBvZiB6ZXJvIGNhdXNlcwogICAgICogICAgICAgICAgICAgICAgICB0aGUgZnVu
Y3Rpb24gdG8gcmV0dXJuIHRoZSBudW1iZXIgb2Ygc3RhdHVzIHZhbHVlcywgaW4gdGhlCi0gICAg
KiAgICAgICAgICAgICAgICAgIG5vcm1hbCB3YXksIHdpdGhvdXQgYXR0ZW10cGluZyB0byBzdG9y
ZSBhbnkgdmFsdWVzLgorICAgICogICAgICAgICAgICAgICAgICBub3JtYWwgd2F5LCB3aXRob3V0
IGF0dGVtcHRpbmcgdG8gc3RvcmUgYW55IHZhbHVlcy4KICAgICAqIEBwYXJhbSBzdGF0dXMgICAg
cmVjZWl2ZXMgZXJyb3IgY29kZXMuCiAgICAgKiBAcmV0dXJuICAgICAgICAgIFRoZSBudW1iZXIg
b2YgcnVsZSBzdGF0dXMgdmFsdWVzIGZyb20gcnVsZXMgdGhhdCBkZXRlcm1pbmVkCiAgICAgKiAg
ICAgICAgICAgICAgICAgIHRoZSBtb3N0IHJlY2VudCBib3VuZGFyeSByZXR1cm5lZCBieSB0aGUg
YnJlYWsgaXRlcmF0b3IuCkBAIC00NjIsNyArNDY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBMb2NhbGUqIFVfRVhQT1JUMiBnZXRBdmFpbGFibGVMb2NhbGVzKGludDMyX3QmIGNvdW50
KTsKIAogICAgIC8qKgotICAgICAqIEdldCBuYW1lIG9mIHRoZSBvYmplY3QgZm9yIHRoZSBkZXNp
cmVkIExvY2FsZSwgaW4gdGhlIGRlc2lyZWQgbGFuZ2F1Z2UuCisgICAgICogR2V0IG5hbWUgb2Yg
dGhlIG9iamVjdCBmb3IgdGhlIGRlc2lyZWQgTG9jYWxlLCBpbiB0aGUgZGVzaXJlZCBsYW5ndWFn
ZS4KICAgICAgKiBAcGFyYW0gb2JqZWN0TG9jYWxlIG11c3QgYmUgZnJvbSBnZXRBdmFpbGFibGVM
b2NhbGVzLgogICAgICAqIEBwYXJhbSBkaXNwbGF5TG9jYWxlIHNwZWNpZmllcyB0aGUgZGVzaXJl
ZCBsb2NhbGUgZm9yIG91dHB1dC4KICAgICAgKiBAcGFyYW0gbmFtZSB0aGUgZmlsbC1pbiBwYXJh
bWV0ZXIgb2YgdGhlIHJldHVybiB2YWx1ZQpAQCAtNDc1LDcgKzQ4Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgbmFt
ZSk7CiAKICAgICAvKioKLSAgICAgKiBHZXQgbmFtZSBvZiB0aGUgb2JqZWN0IGZvciB0aGUgZGVz
aXJlZCBMb2NhbGUsIGluIHRoZSBsYW5nYXVnZSBvZiB0aGUKKyAgICAgKiBHZXQgbmFtZSBvZiB0
aGUgb2JqZWN0IGZvciB0aGUgZGVzaXJlZCBMb2NhbGUsIGluIHRoZSBsYW5ndWFnZSBvZiB0aGUK
ICAgICAgKiBkZWZhdWx0IGxvY2FsZS4KICAgICAgKiBAcGFyYW0gb2JqZWN0TG9jYWxlIG11c3Qg
YmUgZnJvbSBnZXRNYXRjaGluZ0xvY2FsZXMKICAgICAgKiBAcGFyYW0gbmFtZSB0aGUgZmlsbC1p
biBwYXJhbWV0ZXIgb2YgdGhlIHJldHVybiB2YWx1ZQpAQCAtNjIyLDIwICs2MjksMTkgQEAgcHJv
dGVjdGVkOgogICAgIC8qKiBAaW50ZXJuYWwgKi8KICAgICBCcmVha0l0ZXJhdG9yKCk7CiAgICAg
LyoqIEBpbnRlcm5hbCAqLwotICAgIEJyZWFrSXRlcmF0b3IgKGNvbnN0IEJyZWFrSXRlcmF0b3Ig
Jm90aGVyKSA6IFVPYmplY3Qob3RoZXIpIHt9CisgICAgQnJlYWtJdGVyYXRvciAoY29uc3QgQnJl
YWtJdGVyYXRvciAmb3RoZXIpOworI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCiAgICAgLyoq
IEBpbnRlcm5hbCAqLwotICAgIEJyZWFrSXRlcmF0b3IgKGNvbnN0IExvY2FsZSYgdmFsaWQsIGNv
bnN0IExvY2FsZSYgYWN0dWFsKTsKKyAgICBCcmVha0l0ZXJhdG9yIChjb25zdCBMb2NhbGUmIHZh
bGlkLCBjb25zdCBMb2NhbGUgJmFjdHVhbCk7CisgICAgLyoqIEBpbnRlcm5hbC4gQXNzaWdubWVu
dCBPcGVyYXRvciwgdXNlZCBieSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLiAqLworICAgIEJyZWFr
SXRlcmF0b3IgJm9wZXJhdG9yID0gKGNvbnN0IEJyZWFrSXRlcmF0b3IgJm90aGVyKTsKKyNlbmRp
ZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLworCiBwcml2YXRlOgogCiAgICAgLyoqIEBpbnRl
cm5hbCAqLwogICAgIGNoYXIgYWN0dWFsTG9jYWxlW1VMT0NfRlVMTE5BTUVfQ0FQQUNJVFldOwog
ICAgIGNoYXIgdmFsaWRMb2NhbGVbVUxPQ19GVUxMTkFNRV9DQVBBQ0lUWV07Ci0KLSAgICAvKioK
LSAgICAgKiBUaGUgYXNzaWdubWVudCBvcGVyYXRvciBoYXMgbm8gcmVhbCBpbXBsZW1lbnRhdGlv
bi4KLSAgICAgKiBJdCdzIHByb3ZpZGVkIHRvIG1ha2UgdGhlIGNvbXBpbGVyIGhhcHB5LiBEbyBu
b3QgY2FsbC4KLSAgICAgKi8KLSAgICBCcmVha0l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgQnJl
YWtJdGVyYXRvciYpOwogfTsKIAogI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKQEAgLTY1
MSw1ICs2NTcsNSBAQCBVX05BTUVTUEFDRV9FTkQKIAogI2VuZGlmIC8qICNpZiAhVUNPTkZJR19O
T19CUkVBS19JVEVSQVRJT04gKi8KIAotI2VuZGlmIC8vIF9CUktJVEVSCisjZW5kaWYgLy8gQlJL
SVRFUl9ICiAvL2VvZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9ieXRlc3Ry
ZWFtLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2J5dGVzdHJlYW0uaAppbmRleCAxNzRhYTM4
YWZjZTA3MDIwMTRhYmE4OGU1MjkzN2VmZTRhYmVjMTI1Li42ZjYxYzM4NGY3OTU4NjZiMTY1Y2U5
NWU5YjVhMjYzODFmMDQzYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2J5
dGVzdHJlYW0uaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2J5dGVzdHJlYW0uaApAQCAt
MSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvLyBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiwgSW50ZXJuYXRpb25hbCBC
dXNpbmVzcyBNYWNoaW5lcwogLy8gQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KIC8vCkBAIC0xMjQsOCArMTI2LDggQEAgcHVibGljOgogICB2aXJ0dWFsIHZvaWQg
Rmx1c2goKTsKIAogcHJpdmF0ZToKLSAgQnl0ZVNpbmsoY29uc3QgQnl0ZVNpbmsgJik7IC8vIGNv
cHkgY29uc3RydWN0b3Igbm90IGltcGxlbWVudGVkCi0gIEJ5dGVTaW5rICZvcGVyYXRvcj0oY29u
c3QgQnl0ZVNpbmsgJik7IC8vIGFzc2lnbm1lbnQgb3BlcmF0b3Igbm90IGltcGxlbWVudGVkCisg
IEJ5dGVTaW5rKGNvbnN0IEJ5dGVTaW5rICYpID0gZGVsZXRlOworICBCeXRlU2luayAmb3BlcmF0
b3I9KGNvbnN0IEJ5dGVTaW5rICYpID0gZGVsZXRlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjE1LDEy
ICsyMTcsMTEgQEAgcHJpdmF0ZToKICAgaW50MzJfdCBzaXplXzsKICAgaW50MzJfdCBhcHBlbmRl
ZF87CiAgIFVCb29sIG92ZXJmbG93ZWRfOwotICBDaGVja2VkQXJyYXlCeXRlU2luaygpOyAvLy88
IGRlZmF1bHQgY29uc3RydWN0b3Igbm90IGltcGxlbWVudGVkIAotICBDaGVja2VkQXJyYXlCeXRl
U2luayhjb25zdCBDaGVja2VkQXJyYXlCeXRlU2luayAmKTsgLy8vPCBjb3B5IGNvbnN0cnVjdG9y
IG5vdCBpbXBsZW1lbnRlZAotICBDaGVja2VkQXJyYXlCeXRlU2luayAmb3BlcmF0b3I9KGNvbnN0
IENoZWNrZWRBcnJheUJ5dGVTaW5rICYpOyAvLy88IGFzc2lnbm1lbnQgb3BlcmF0b3Igbm90IGlt
cGxlbWVudGVkCi19OwogCi0jaWYgVV9IQVZFX1NURF9TVFJJTkcKKyAgQ2hlY2tlZEFycmF5Qnl0
ZVNpbmsoKSA9IGRlbGV0ZTsKKyAgQ2hlY2tlZEFycmF5Qnl0ZVNpbmsoY29uc3QgQ2hlY2tlZEFy
cmF5Qnl0ZVNpbmsgJikgPSBkZWxldGU7CisgIENoZWNrZWRBcnJheUJ5dGVTaW5rICZvcGVyYXRv
cj0oY29uc3QgQ2hlY2tlZEFycmF5Qnl0ZVNpbmsgJikgPSBkZWxldGU7Cit9OwogCiAvKiogCiAg
KiBJbXBsZW1lbnRhdGlvbiBvZiBCeXRlU2luayB0aGF0IHdyaXRlcyB0byBhICJzdHJpbmciLgpA
QCAtMjM2LDYgKzIzNywyMSBAQCBjbGFzcyBTdHJpbmdCeXRlU2luayA6IHB1YmxpYyBCeXRlU2lu
ayB7CiAgICAqIEBzdGFibGUgSUNVIDQuMgogICAgKi8KICAgU3RyaW5nQnl0ZVNpbmsoU3RyaW5n
Q2xhc3MqIGRlc3QpIDogZGVzdF8oZGVzdCkgeyB9CisjaWZuZGVmIFVfSElERV9EUkFGVF9BUEkK
KyAgLyoqCisgICAqIENvbnN0cnVjdHMgYSBCeXRlU2luayB0aGF0IHJlc2VydmVzIGFwcGVuZCBj
YXBhY2l0eSBhbmQgd2lsbCBhcHBlbmQgYnl0ZXMgdG8gdGhlIGRlc3Qgc3RyaW5nLgorICAgKiAK
KyAgICogQHBhcmFtIGRlc3QgcG9pbnRlciB0byBzdHJpbmcgb2JqZWN0IHRvIGFwcGVuZCB0bwor
ICAgKiBAcGFyYW0gaW5pdGlhbEFwcGVuZENhcGFjaXR5IGNhcGFjaXR5IGJleW9uZCBkZXN0LT5s
ZW5ndGgoKSB0byBiZSByZXNlcnZlKClkCisgICAqIEBkcmFmdCBJQ1UgNjAKKyAgICovCisgIFN0
cmluZ0J5dGVTaW5rKFN0cmluZ0NsYXNzKiBkZXN0LCBpbnQzMl90IGluaXRpYWxBcHBlbmRDYXBh
Y2l0eSkgOiBkZXN0XyhkZXN0KSB7CisgICAgaWYgKGluaXRpYWxBcHBlbmRDYXBhY2l0eSA+IDAg
JiYKKyAgICAgICAgKHVpbnQzMl90KWluaXRpYWxBcHBlbmRDYXBhY2l0eSA+IChkZXN0LT5jYXBh
Y2l0eSgpIC0gZGVzdC0+bGVuZ3RoKCkpKSB7CisgICAgICBkZXN0LT5yZXNlcnZlKGRlc3QtPmxl
bmd0aCgpICsgaW5pdGlhbEFwcGVuZENhcGFjaXR5KTsKKyAgICB9CisgIH0KKyNlbmRpZiAgLy8g
VV9ISURFX0RSQUZUX0FQSQogICAvKioKICAgICogQXBwZW5kICJieXRlc1swLG4tMV0iIHRvIHRo
aXMuCiAgICAqIEBwYXJhbSBkYXRhIHRoZSBwb2ludGVyIHRvIHRoZSBieXRlcwpAQCAtMjQ1LDEy
ICsyNjEsMTEgQEAgY2xhc3MgU3RyaW5nQnl0ZVNpbmsgOiBwdWJsaWMgQnl0ZVNpbmsgewogICB2
aXJ0dWFsIHZvaWQgQXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludDMyX3QgbikgeyBkZXN0Xy0+
YXBwZW5kKGRhdGEsIG4pOyB9CiAgcHJpdmF0ZToKICAgU3RyaW5nQ2xhc3MqIGRlc3RfOwotICBT
dHJpbmdCeXRlU2luaygpOyAvLy88IGRlZmF1bHQgY29uc3RydWN0b3Igbm90IGltcGxlbWVudGVk
IAotICBTdHJpbmdCeXRlU2luayhjb25zdCBTdHJpbmdCeXRlU2luayAmKTsgLy8vPCBjb3B5IGNv
bnN0cnVjdG9yIG5vdCBpbXBsZW1lbnRlZAotICBTdHJpbmdCeXRlU2luayAmb3BlcmF0b3I9KGNv
bnN0IFN0cmluZ0J5dGVTaW5rICYpOyAvLy88IGFzc2lnbm1lbnQgb3BlcmF0b3Igbm90IGltcGxl
bWVudGVkCi19OwogCi0jZW5kaWYKKyAgU3RyaW5nQnl0ZVNpbmsoKSA9IGRlbGV0ZTsKKyAgU3Ry
aW5nQnl0ZVNpbmsoY29uc3QgU3RyaW5nQnl0ZVNpbmsgJikgPSBkZWxldGU7CisgIFN0cmluZ0J5
dGVTaW5rICZvcGVyYXRvcj0oY29uc3QgU3RyaW5nQnl0ZVNpbmsgJikgPSBkZWxldGU7Cit9Owog
CiBVX05BTUVTUEFDRV9FTkQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9i
eXRlc3RyaWUuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYnl0ZXN0cmllLmgKaW5kZXggOWM3
NzgyNzQwZGJhMjc1MmIxZjAxMjY0ZDM5NzdlZTYxNTQwMjAwNy4uYzU3YjhjY2ZlYjU5NjAwZDll
OGZlOGFlNjkwYmRkZmY5Y2FmYjdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS9ieXRlc3RyaWUuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2J5dGVzdHJpZS5oCkBA
IC0xLDEwICsxLDEyIEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQg
b3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9y
Zy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmln
aHQgKEMpIDIwMTAtMjAxMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENv
cnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIGJ5dGVzdHJpZS5oCi0qICAgZW5jb2Rpbmc6ICAg
VVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1
c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTMwNiw3ICszMDgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAqIEByZXR1cm4gVGhlIE5VTC10ZXJtaW5hdGVkIGJ5dGUgc2VxdWVuY2UgZm9yIHRo
ZSBsYXN0IHN1Y2Nlc3NmdWwgbmV4dCgpLgogICAgICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAg
ICAgICAgICovCi0gICAgICAgIGNvbnN0IFN0cmluZ1BpZWNlICZnZXRTdHJpbmcoKSBjb25zdCB7
IHJldHVybiBzcF87IH0KKyAgICAgICAgU3RyaW5nUGllY2UgZ2V0U3RyaW5nKCkgY29uc3Q7CiAg
ICAgICAgIC8qKgogICAgICAgICAgKiBAcmV0dXJuIFRoZSB2YWx1ZSBmb3IgdGhlIGxhc3Qgc3Vj
Y2Vzc2Z1bCBuZXh0KCkuCiAgICAgICAgICAqIEBzdGFibGUgSUNVIDQuOApAQCAtMzI1LDcgKzMy
Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgaW50MzJfdCBpbml0aWFsUmVtYWluaW5nTWF0Y2hMZW5n
dGhfOwogCiAgICAgICAgIENoYXJTdHJpbmcgKnN0cl87Ci0gICAgICAgIFN0cmluZ1BpZWNlIHNw
XzsKICAgICAgICAgaW50MzJfdCBtYXhMZW5ndGhfOwogICAgICAgICBpbnQzMl90IHZhbHVlXzsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9ieXRlc3RyaWVidWlsZGVyLmgg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2J5dGVzdHJpZWJ1aWxkZXIuaAppbmRleCBkMDBhYjli
M2IwOTQ3ZDBkMDVjODkzNWY5OGVmZTE1MDczZGE2MjE4Li5hODQxMmQzZDZlODMzZDMxYTlhY2Y5
NGFkOWM3YzEyNzRjZTdlMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2J5
dGVzdHJpZWJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2J5dGVzdHJpZWJ1
aWxkZXIuaApAQCAtMSwxMCArMSwxMiBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUs
IEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cu
dW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0q
ICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGlu
ZXMKKyogICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVk
LgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIGJ5dGVzdHJpZWJ1aWxk
ZXIuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICog
ICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC0yOSw3
ICszMSw2IEBAIFVfTkFNRVNQQUNFX0JFR0lOCiAKIGNsYXNzIEJ5dGVzVHJpZUVsZW1lbnQ7CiBj
bGFzcyBDaGFyU3RyaW5nOwotCiAvKioKICAqIEJ1aWxkZXIgY2xhc3MgZm9yIEJ5dGVzVHJpZS4K
ICAqCkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuICp0aGlzCiAgICAg
ICogQHN0YWJsZSBJQ1UgNC44CiAgICAgICovCi0gICAgQnl0ZXNUcmllQnVpbGRlciAmYWRkKGNv
bnN0IFN0cmluZ1BpZWNlICZzLCBpbnQzMl90IHZhbHVlLCBVRXJyb3JDb2RlICZlcnJvckNvZGUp
OworICAgIEJ5dGVzVHJpZUJ1aWxkZXIgJmFkZChTdHJpbmdQaWVjZSBzLCBpbnQzMl90IHZhbHVl
LCBVRXJyb3JDb2RlICZlcnJvckNvZGUpOwogCiAgICAgLyoqCiAgICAgICogQnVpbGRzIGEgQnl0
ZXNUcmllIGZvciB0aGUgYWRkKCllZCBkYXRhLgpAQCAtMTI2LDE0ICsxMjcsMTQgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGJ1aWxkQnl0ZXMoVVN0cmluZ1RyaWVCdWlsZE9wdGlvbiBidWlsZE9wdGlv
biwgVUVycm9yQ29kZSAmZXJyb3JDb2RlKTsKIAogICAgIHZpcnR1YWwgaW50MzJfdCBnZXRFbGVt
ZW50U3RyaW5nTGVuZ3RoKGludDMyX3QgaSkgY29uc3Q7Ci0gICAgdmlydHVhbCBVQ2hhciBnZXRF
bGVtZW50VW5pdChpbnQzMl90IGksIGludDMyX3QgYnl0ZUluZGV4KSBjb25zdDsKKyAgICB2aXJ0
dWFsIGNoYXIxNl90IGdldEVsZW1lbnRVbml0KGludDMyX3QgaSwgaW50MzJfdCBieXRlSW5kZXgp
IGNvbnN0OwogICAgIHZpcnR1YWwgaW50MzJfdCBnZXRFbGVtZW50VmFsdWUoaW50MzJfdCBpKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgaW50MzJfdCBnZXRMaW1pdE9mTGluZWFyTWF0Y2goaW50MzJf
dCBmaXJzdCwgaW50MzJfdCBsYXN0LCBpbnQzMl90IGJ5dGVJbmRleCkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIGludDMyX3QgY291bnRFbGVtZW50VW5pdHMoaW50MzJfdCBzdGFydCwgaW50MzJfdCBs
aW1pdCwgaW50MzJfdCBieXRlSW5kZXgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50MzJfdCBza2lw
RWxlbWVudHNCeVNvbWVVbml0cyhpbnQzMl90IGksIGludDMyX3QgYnl0ZUluZGV4LCBpbnQzMl90
IGNvdW50KSBjb25zdDsKLSAgICB2aXJ0dWFsIGludDMyX3QgaW5kZXhPZkVsZW1lbnRXaXRoTmV4
dFVuaXQoaW50MzJfdCBpLCBpbnQzMl90IGJ5dGVJbmRleCwgVUNoYXIgYnl0ZSkgY29uc3Q7Cisg
ICAgdmlydHVhbCBpbnQzMl90IGluZGV4T2ZFbGVtZW50V2l0aE5leHRVbml0KGludDMyX3QgaSwg
aW50MzJfdCBieXRlSW5kZXgsIGNoYXIxNl90IGJ5dGUpIGNvbnN0OwogCiAgICAgdmlydHVhbCBV
Qm9vbCBtYXRjaE5vZGVzQ2FuSGF2ZVZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIEZBTFNFOyB9CiAK
QEAgLTE1Miw3ICsxNTMsOCBAQCBwcml2YXRlOgogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0
IGNoYXIgKnM7CiAgICAgfTsKLQorICAgIAorICAgIC8vIGRvbid0IHVzZSAjaWZuZGVmIFVfSElE
RV9JTlRFUk5BTF9BUEkgd2l0aCBwcml2YXRlIGNsYXNzIG1lbWJlcnMgb3IgdmlydHVhbCBtZXRo
b2RzLgogICAgIHZpcnR1YWwgTm9kZSAqY3JlYXRlTGluZWFyTWF0Y2hOb2RlKGludDMyX3QgaSwg
aW50MzJfdCBieXRlSW5kZXgsIGludDMyX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vZGUgKm5leHROb2RlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS9jYWxlbmRhci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29k
ZS9jYWxlbmRhci5oCmluZGV4IGJjN2YwNTQ5MmRlZmRkYWJkNGE0NzExNzk2MjI2NTI2N2FlNjY0
ZDguLjQ4MDIxNTM0YjQyMmY2ODVmZDBjMjJkMDAyMjYxMDNhNmRkMzE2ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY2FsZW5kYXIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL2NhbGVuZGFyLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5l
c3MgTWFjaGluZXMKQEAgLTI4LDcgKzMwLDcgQEAKICNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5o
IgogCiAvKioKLSAqIFxmaWxlIAorICogXGZpbGUKICAqIFxicmllZiBDKysgQVBJOiBDYWxlbmRh
ciBvYmplY3QKICAqLwogI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKQEAgLTEzNSw3ICsxMzcs
NyBAQCBjbGFzcyBCYXNpY1RpbWVab25lOwogICogQ2FsZW5kYXIgcmVzb2x2ZXMgdGhlIHRpbWUg
dXNpbmcgdGhlIFVUQyBvZmZzZXQgYmVmb3JlIHRoZSB0cmFuc2l0aW9uIGJ5IGRlZmF1bHQuCiAg
KiBJbiB0aGlzIGV4YW1wbGUsIDE6MzAgQU0gaXMgaW50ZXJwcmV0ZWQgYXMgMTozMCBBTSBzdGFu
ZGFyZCB0aW1lIChub24tZXhpc3QpLAogICogc28gdGhlIGZpbmFsIHJlc3VsdCB3aWxsIGJlIDI6
MzAgQU0gZGF5bGlnaHQgdGltZS4KLSAqIAorICoKICAqIDxwPk9uIHRoZSBkYXRlIHN3aXRjaGlu
ZyBiYWNrIHRvIHN0YW5kYXJkIHRpbWUsIHdhbGwgY2xvY2sgdGltZSBpcyBtb3ZlZCBiYWNrIG9u
ZQogICogaG91ciBhdCAyOjAwIEFNLiBTbyB3YWxsIGNsb2NrIHRpbWUgZnJvbSAxOjAwIEFNIHRv
IDE6NTkgQU0gb2NjdXIgdHdpY2UuIEluIHRoaXMKICAqIGNhc2UsIHRoZSBJQ1UgQ2FsZW5kYXIg
cmVzb2x2ZXMgdGhlIHRpbWUgdXNpbmcgdGhlIFVUQyBvZmZzZXQgYWZ0ZXIgdGhlIHRyYW5zaXRp
b24KQEAgLTIzMyw3ICsyMzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIERTVF9PRkZTRVQsICAgICAg
ICAgICAvLyBFeGFtcGxlOiAwIG9yIFVfTUlMTElTX1BFUl9IT1VSCiAgICAgICAgIFlFQVJfV09Z
LCAgICAgICAgICAgICAvLyAnWScgRXhhbXBsZTogMS4uYmlnIG51bWJlciAtIFllYXIgb2YgV2Vl
ayBvZiBZZWFyCiAgICAgICAgIERPV19MT0NBTCwgICAgICAgICAgICAvLyAnZScgRXhhbXBsZTog
MS4uNyAtIERheSBvZiBXZWVrIC8gTG9jYWxpemVkCi0gICAgICAgIAorCiAgICAgICAgIEVYVEVO
REVEX1lFQVIsCiAgICAgICAgIEpVTElBTl9EQVksCiAgICAgICAgIE1JTExJU0VDT05EU19JTl9E
QVksCkBAIC05MTIsNyArOTE0LDcgQEAgcHVibGljOgogICAgICAqIG9wdGlvbiBmb3IgdGhpcy4g
V2hlbiB0aGUgYXJndW1lbnQgaXMgbmVpdGhlciA8Y29kZT5VQ0FMX1dBTExUSU1FX0ZJUlNUPC9j
b2RlPgogICAgICAqIG5vciA8Y29kZT5VQ0FMX1dBTExUSU1FX0xBU1Q8L2NvZGU+LCB0aGlzIG1l
dGhvZCBoYXMgbm8gZWZmZWN0IGFuZCB3aWxsIGtlZXAKICAgICAgKiB0aGUgY3VycmVudCBzZXR0
aW5nLgotICAgICAqIAorICAgICAqCiAgICAgICogQHBhcmFtIG9wdGlvbiB0aGUgYmVoYXZpb3Ig
Zm9yIGhhbmRsaW5nIHJlcGVhdGluZyB3YWxsIHRpbWUsIGVpdGhlcgogICAgICAqIDxjb2RlPlVD
QUxfV0FMTFRJTUVfRklSU1Q8L2NvZGU+IG9yIDxjb2RlPlVDQUxfV0FMTFRJTUVfTEFTVDwvY29k
ZT4uCiAgICAgICogQHNlZSAjZ2V0UmVwZWF0ZWRXYWxsVGltZU9wdGlvbgpAQCAtOTIzLDcgKzky
NSw3IEBAIHB1YmxpYzoKICAgICAvKioKICAgICAgKiBHZXRzIHRoZSBiZWhhdmlvciBmb3IgaGFu
ZGxpbmcgd2FsbCB0aW1lIHJlcGVhdGluZyBtdWx0aXBsZSB0aW1lcwogICAgICAqIGF0IG5lZ2F0
aXZlIHRpbWUgem9uZSBvZmZzZXQgdHJhbnNpdGlvbnMuCi0gICAgICogCisgICAgICoKICAgICAg
KiBAcmV0dXJuIHRoZSBiZWhhdmlvciBmb3IgaGFuZGxpbmcgcmVwZWF0aW5nIHdhbGwgdGltZSwg
ZWl0aGVyCiAgICAgICogPGNvZGU+VUNBTF9XQUxMVElNRV9GSVJTVDwvY29kZT4gb3IgPGNvZGU+
VUNBTF9XQUxMVElNRV9MQVNUPC9jb2RlPi4KICAgICAgKiBAc2VlICNzZXRSZXBlYXRlZFdhbGxU
aW1lT3B0aW9uCkBAIC05NDQsMTIgKzk0NiwxMiBAQCBwdWJsaWM6CiAgICAgICogPHA+CiAgICAg
ICogPGI+Tm90ZTo8L2I+VGhpcyBvcHRpb24gaXMgZWZmZWN0aXZlIG9ubHkgd2hlbiB0aGlzIGNh
bGVuZGFyIGlzIGxlbmllbnQuCiAgICAgICogV2hlbiB0aGUgY2FsZW5kYXIgaXMgc3RyaWN0LCBz
dWNoIG5vbi1leGlzdGluZyB3YWxsIHRpbWUgd2lsbCBjYXVzZSBhbiBlcnJvci4KLSAgICAgKiAK
KyAgICAgKgogICAgICAqIEBwYXJhbSBvcHRpb24gdGhlIGJlaGF2aW9yIGZvciBoYW5kbGluZyBz
a2lwcGVkIHdhbGwgdGltZSBhdCBwb3NpdGl2ZSB0aW1lIHpvbmUKICAgICAgKiBvZmZzZXQgdHJh
bnNpdGlvbnMsIG9uZSBvZiA8Y29kZT5VQ0FMX1dBTExUSU1FX0ZJUlNUPC9jb2RlPiwgPGNvZGU+
VUNBTF9XQUxMVElNRV9MQVNUPC9jb2RlPiBhbmQKICAgICAgKiA8Y29kZT5VQ0FMX1dBTExUSU1F
X05FWFRfVkFMSUQ8L2NvZGU+LgogICAgICAqIEBzZWUgI2dldFNraXBwZWRXYWxsVGltZU9wdGlv
bgotICAgICAqIAorICAgICAqCiAgICAgICogQHN0YWJsZSBJQ1UgNDkKICAgICAgKi8KICAgICB2
b2lkIHNldFNraXBwZWRXYWxsVGltZU9wdGlvbihVQ2FsZW5kYXJXYWxsVGltZU9wdGlvbiBvcHRp
b24pOwpAQCAtOTU3LDcgKzk1OSw3IEBAIHB1YmxpYzoKICAgICAvKioKICAgICAgKiBHZXRzIHRo
ZSBiZWhhdmlvciBmb3IgaGFuZGxpbmcgc2tpcHBlZCB3YWxsIHRpbWUgYXQgcG9zaXRpdmUgdGlt
ZSB6b25lIG9mZnNldAogICAgICAqIHRyYW5zaXRpb25zLgotICAgICAqIAorICAgICAqCiAgICAg
ICogQHJldHVybiB0aGUgYmVoYXZpb3IgZm9yIGhhbmRsaW5nIHNraXBwZWQgd2FsbCB0aW1lLCBv
bmUgb2YKICAgICAgKiA8Y29kZT5VQ0FMX1dBTExUSU1FX0ZJUlNUPC9jb2RlPiwgPGNvZGU+VUNB
TF9XQUxMVElNRV9MQVNUPC9jb2RlPgogICAgICAqIGFuZCA8Y29kZT5VQ0FMX1dBTExUSU1FX05F
WFRfVkFMSUQ8L2NvZGU+LgpAQCAtMTczOSw3ICsxNzQxLDcgQEAgcHJvdGVjdGVkOgogICAgICAq
IHJlZmxlY3RzIGxvY2FsIHpvbmUgd2FsbCB0aW1lLgogICAgICAqIEBpbnRlcm5hbAogICAgICAq
LwotICAgIGludDMyX3QgY29tcHV0ZU1pbGxpc0luRGF5KCk7CisgICAgZG91YmxlIGNvbXB1dGVN
aWxsaXNJbkRheSgpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgY2FuIGFzc3VtZSBF
WFRFTkRFRF9ZRUFSIGhhcyBiZWVuIHNldC4KQEAgLTE3NTAsNyArMTc1Miw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgKiAgICAgICAgICB3aGVuIHRoaXMgZnVuY3Rpb24gZmFpbHMuCiAgICAgICogQGlu
dGVybmFsCiAgICAgICovCi0gICAgaW50MzJfdCBjb21wdXRlWm9uZU9mZnNldChkb3VibGUgbWls
bGlzLCBpbnQzMl90IG1pbGxpc0luRGF5LCBVRXJyb3JDb2RlICZlYyk7CisgICAgaW50MzJfdCBj
b21wdXRlWm9uZU9mZnNldChkb3VibGUgbWlsbGlzLCBkb3VibGUgbWlsbGlzSW5EYXksIFVFcnJv
ckNvZGUgJmVjKTsKIAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL2Nhbml0ZXIuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY2FuaXRlci5oCmluZGV4IDNi
ZDc5Zjc2OGUwYjA1NzdiMGYyM2JkOWQ0MGJiM2E0YTMxNTAyMjIuLjVhODgyZmIzZmI4YmNkNjIx
YTcyNTBmNjBhMjEzNzI0MWNlNDNjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvY2FuaXRlci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY2FuaXRlci5oCkBAIC0x
LDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVy
cy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29w
eXJpZ2h0Lmh0bWwKIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChD
KSAxOTk2LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24g
YW5kCkBAIC0xODUsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICBVbmljb2RlU3RyaW5nICpnZXRF
cXVpdmFsZW50cyhjb25zdCBVbmljb2RlU3RyaW5nICZzZWdtZW50LCBpbnQzMl90ICZyZXN1bHRf
bGVuLCBVRXJyb3JDb2RlICZzdGF0dXMpOyAvL3ByaXZhdGUgU3RyaW5nW10gZ2V0RXF1aXZhbGVu
dHMoU3RyaW5nIHNlZ21lbnQpCiAKICAgICAvL1NldCBnZXRFcXVpdmFsZW50czIoU3RyaW5nIHNl
Z21lbnQpOwotICAgIEhhc2h0YWJsZSAqZ2V0RXF1aXZhbGVudHMyKEhhc2h0YWJsZSAqZmlsbGlu
UmVzdWx0LCBjb25zdCBVQ2hhciAqc2VnbWVudCwgaW50MzJfdCBzZWdMZW4sIFVFcnJvckNvZGUg
JnN0YXR1cyk7CisgICAgSGFzaHRhYmxlICpnZXRFcXVpdmFsZW50czIoSGFzaHRhYmxlICpmaWxs
aW5SZXN1bHQsIGNvbnN0IGNoYXIxNl90ICpzZWdtZW50LCBpbnQzMl90IHNlZ0xlbiwgVUVycm9y
Q29kZSAmc3RhdHVzKTsKICAgICAvL0hhc2h0YWJsZSAqZ2V0RXF1aXZhbGVudHMyKGNvbnN0IFVu
aWNvZGVTdHJpbmcgJnNlZ21lbnQsIGludDMyX3Qgc2VnTGVuLCBVRXJyb3JDb2RlICZzdGF0dXMp
OwogCiAgICAgLyoqCkBAIC0xOTQsNyArMTk2LDcgQEAgcHJpdmF0ZToKICAgICAgKiBJZiBzbywg
dGFrZSB0aGUgcmVtYWluZGVyLCBhbmQgcmV0dXJuIHRoZSBlcXVpdmFsZW50cwogICAgICAqLwog
ICAgIC8vU2V0IGV4dHJhY3QoaW50IGNvbXAsIFN0cmluZyBzZWdtZW50LCBpbnQgc2VnbWVudFBv
cywgU3RyaW5nQnVmZmVyIGJ1ZmZlcik7Ci0gICAgSGFzaHRhYmxlICpleHRyYWN0KEhhc2h0YWJs
ZSAqZmlsbGluUmVzdWx0LCBVQ2hhcjMyIGNvbXAsIGNvbnN0IFVDaGFyICpzZWdtZW50LCBpbnQz
Ml90IHNlZ0xlbiwgaW50MzJfdCBzZWdtZW50UG9zLCBVRXJyb3JDb2RlICZzdGF0dXMpOworICAg
IEhhc2h0YWJsZSAqZXh0cmFjdChIYXNodGFibGUgKmZpbGxpblJlc3VsdCwgVUNoYXIzMiBjb21w
LCBjb25zdCBjaGFyMTZfdCAqc2VnbWVudCwgaW50MzJfdCBzZWdMZW4sIGludDMyX3Qgc2VnbWVu
dFBvcywgVUVycm9yQ29kZSAmc3RhdHVzKTsKICAgICAvL0hhc2h0YWJsZSAqZXh0cmFjdChVQ2hh
cjMyIGNvbXAsIGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNlZ21lbnQsIGludDMyX3Qgc2VnTGVuLCBp
bnQzMl90IHNlZ21lbnRQb3MsIFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKICAgICB2b2lkIGNsZWFu
UGllY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NoYXJpdGVyLmgg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NoYXJpdGVyLmgKaW5kZXggZThkNjUwOTBhNDBhNjA4
NTk1MWM3MzMwN2Y3NGFjZjgzYmExYmJjOC4uN2E0ZTFhMmY0ODc2MGQ3MjI4Y2IwNjdkZDNmNWI5
ZjgxZjQ4N2YzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9jaGFyaXRlci5o
CisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY2hhcml0ZXIuaApAQCAtMSwzICsxLDUgQEAK
Ky8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNl
bnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1s
CiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKICoKQEAgLTc2LDcgKzc4LDcgQEAgVV9OQU1FU1BBQ0VfQkVHSU4K
ICAqIH0KICAqCiAgKiB2b2lkIGZ1bmN0aW9uMShGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3IgJml0
KSB7Ci0gKiAgICAgVUNoYXIgYzsKKyAqICAgICBjaGFyMTZfdCBjOwogICogICAgIHdoaWxlKChj
PWl0Lm5leHRQb3N0SW5jKCkpIT1Gb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3I6OkRPTkUpIHsKICAq
ICAgICAgICAgLy8gdXNlIGMKICAqICAgICAgfQpAQCAtMTQ3LDcgKzE0OSw3IEBAIHB1YmxpYzoK
ICAgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IGNvZGUgdW5pdC4KICAgICAgKiBAc3RhYmxlIElD
VSAyLjAKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVDaGFyICAgICAgICAgbmV4dFBvc3RJbmModm9p
ZCkgPSAwOworICAgIHZpcnR1YWwgY2hhcjE2X3QgICAgICAgICBuZXh0UG9zdEluYyh2b2lkKSA9
IDA7CiAgICAgCiAgICAgLyoqCiAgICAgICogR2V0cyB0aGUgY3VycmVudCBjb2RlIHBvaW50IGZv
ciByZXR1cm5pbmcgYW5kIGFkdmFuY2VzIHRvIHRoZSBuZXh0IGNvZGUgcG9pbnQKQEAgLTIyOCw3
ICsyMzAsNyBAQCBwcm90ZWN0ZWQ6CiAgKiBzaG93aW5nIGEgd2F5IHRvIGNvbnZlcnQgc2ltcGxl
IGZvcigpIGxvb3BzOgogICogXGNvZGUKICAqIHZvaWQgZm9yd2FyZDIoQ2hhcmFjdGVySXRlcmF0
b3IgJml0KSB7Ci0gKiAgICAgVUNoYXIgYzsKKyAqICAgICBjaGFyMTZfdCBjOwogICogICAgIGZv
cihjPWl0LmZpcnN0UG9zdEluYygpOyBjIT1DaGFyYWN0ZXJJdGVyYXRvcjo6RE9ORTsgYz1pdC5u
ZXh0UG9zdEluYygpKSB7CiAgKiAgICAgICAgICAvLyB1c2UgYwogICogICAgICB9CkBAIC0yNDcs
NyArMjQ5LDcgQEAgcHJvdGVjdGVkOgogICogQmFja3dhcmQgaXRlcmF0aW9uIHdpdGggYSBtb3Jl
IHRyYWRpdGlvbmFsIGZvcigpIGxvb3A6CiAgKiBcY29kZQogICogdm9pZCBiYWNrd2FyZDIoQ2hh
cmFjdGVySXRlcmF0b3IgJml0KSB7Ci0gKiAgICAgVUNoYXIgYzsKKyAqICAgICBjaGFyMTZfdCBj
OwogICogICAgIGZvcihjPWl0Lmxhc3QoKTsgYyE9Q2hhcmFjdGVySXRlcmF0b3I6OkRPTkU7IGM9
aXQucHJldmlvdXMoKSkgewogICogICAgICAgICAvLyB1c2UgYwogICogICAgICB9CkBAIC0yNjQs
NyArMjY2LDcgQEAgcHJvdGVjdGVkOgogICogICAgICAvLyBnZXQgdGhlIHBvc2l0aW9uCiAgKiAg
ICAgIGludDMyX3QgcG9zPWl0LmdldEluZGV4KCk7CiAgKiAgICAgIC8vIGdldCB0aGUgcHJldmlv
dXMgY29kZSB1bml0Ci0gKiAgICAgIFVDaGFyIHU9aXQucHJldmlvdXMoKTsKKyAqICAgICAgY2hh
cjE2X3QgdT1pdC5wcmV2aW91cygpOwogICogICAgICAvLyBtb3ZlIGJhY2sgb25lIG1vcmUgY29k
ZSB1bml0CiAgKiAgICAgIGl0Lm1vdmUoLTEsIENoYXJhY3Rlckl0ZXJhdG9yOjprQ3VycmVudCk7
CiAgKiAgICAgIC8vIHNldCB0aGUgcG9zaXRpb24gYmFjayB0byB3aGVyZSBpdCB3YXMKQEAgLTI4
MSw3ICsyODMsNyBAQCBwcm90ZWN0ZWQ6CiAgKiBGdW5jdGlvbiBwcm9jZXNzaW5nIGNoYXJhY3Rl
cnMsIGluIHRoaXMgZXhhbXBsZSBzaW1wbGUgb3V0cHV0CiAgKiA8cHJlPgogICogXGNvZGUKLSAq
ICB2b2lkIHByb2Nlc3NDaGFyKCBVQ2hhciBjICkKKyAqICB2b2lkIHByb2Nlc3NDaGFyKCBjaGFy
MTZfdCBjICkKICAqICB7CiAgKiAgICAgIGNvdXQgPDwgIiAiIDw8IGM7CiAgKiAgfQpAQCAtMjky
LDcgKzI5NCw3IEBAIHByb3RlY3RlZDoKICAqIFxjb2RlCiAgKiAgdm9pZCB0cmF2ZXJzZUZvcndh
cmQoQ2hhcmFjdGVySXRlcmF0b3ImIGl0ZXIpCiAgKiAgewotICogICAgICBmb3IoVUNoYXIgYyA9
IGl0ZXIuZmlyc3QoKTsgYyAhPSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FOyBjID0gaXRlci5uZXh0
KCkpIHsKKyAqICAgICAgZm9yKGNoYXIxNl90IGMgPSBpdGVyLmZpcnN0KCk7IGMgIT0gQ2hhcmFj
dGVySXRlcmF0b3IuRE9ORTsgYyA9IGl0ZXIubmV4dCgpKSB7CiAgKiAgICAgICAgICBwcm9jZXNz
Q2hhcihjKTsKICAqICAgICAgfQogICogIH0KQEAgLTMwMyw3ICszMDUsNyBAQCBwcm90ZWN0ZWQ6
CiAgKiBcY29kZQogICogIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChDaGFyYWN0ZXJJdGVyYXRvciYg
aXRlcikKICAqICB7Ci0gKiAgICAgIGZvcihVQ2hhciBjID0gaXRlci5sYXN0KCk7IGMgIT0gQ2hh
cmFjdGVySXRlcmF0b3IuRE9ORTsgYyA9IGl0ZXIucHJldmlvdXMoKSkgeworICogICAgICBmb3Io
Y2hhcjE2X3QgYyA9IGl0ZXIubGFzdCgpOyBjICE9IENoYXJhY3Rlckl0ZXJhdG9yLkRPTkU7IGMg
PSBpdGVyLnByZXZpb3VzKCkpIHsKICAqICAgICAgICAgIHByb2Nlc3NDaGFyKGMpOwogICogICAg
ICB9CiAgKiAgfQpAQCAtMzE1LDcgKzMxNyw3IEBAIHByb3RlY3RlZDoKICAqIFxjb2RlCiAgKiB2
b2lkIHRyYXZlcnNlT3V0KENoYXJhY3Rlckl0ZXJhdG9yJiBpdGVyLCBpbnQzMl90IHBvcykKICAq
IHsKLSAqICAgICAgVUNoYXIgYzsKKyAqICAgICAgY2hhcjE2X3QgYzsKICAqICAgICAgZm9yIChj
ID0gaXRlci5zZXRJbmRleChwb3MpOwogICogICAgICBjICE9IENoYXJhY3Rlckl0ZXJhdG9yLkRP
TkUgJiYgKFVuaWNvZGU6OmlzTGV0dGVyKGMpIHx8IFVuaWNvZGU6OmlzRGlnaXQoYykpOwogICog
ICAgICAgICAgYyA9IGl0ZXIubmV4dCgpKSB7fQpAQCAtMzg0LDcgKzM4Niw3IEBAIHB1YmxpYzoK
ICAgICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBjb2RlIHVuaXQgaW4gaXRzIGl0ZXJhdGlvbiByYW5n
ZS4KICAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVDaGFyICAg
ICAgICAgZmlyc3Qodm9pZCkgPSAwOworICAgIHZpcnR1YWwgY2hhcjE2X3QgICAgICAgICBmaXJz
dCh2b2lkKSA9IDA7CiAKICAgICAvKioKICAgICAgKiBTZXRzIHRoZSBpdGVyYXRvciB0byByZWZl
ciB0byB0aGUgZmlyc3QgY29kZSB1bml0IGluIGl0cwpAQCAtMzk0LDcgKzM5Niw3IEBAIHB1Ymxp
YzoKICAgICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBjb2RlIHVuaXQgaW4gaXRzIGl0ZXJhdGlvbiBy
YW5nZS4KICAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVDaGFy
ICAgICAgICAgZmlyc3RQb3N0SW5jKHZvaWQpOworICAgIHZpcnR1YWwgY2hhcjE2X3QgICAgICAg
ICBmaXJzdFBvc3RJbmModm9pZCk7CiAKICAgICAvKioKICAgICAgKiBTZXRzIHRoZSBpdGVyYXRv
ciB0byByZWZlciB0byB0aGUgZmlyc3QgY29kZSBwb2ludCBpbiBpdHMKQEAgLTQzMyw3ICs0MzUs
NyBAQCBwdWJsaWM6CiAgICAgICogQHJldHVybiB0aGUgbGFzdCBjb2RlIHVuaXQuCiAgICAgICog
QHN0YWJsZSBJQ1UgMi4wCiAgICAgICovCi0gICAgdmlydHVhbCBVQ2hhciAgICAgICAgIGxhc3Qo
dm9pZCkgPSAwOworICAgIHZpcnR1YWwgY2hhcjE2X3QgICAgICAgICBsYXN0KHZvaWQpID0gMDsK
ICAgICAgICAgCiAgICAgLyoqCiAgICAgICogU2V0cyB0aGUgaXRlcmF0b3IgdG8gcmVmZXIgdG8g
dGhlIGxhc3QgY29kZSBwb2ludCBpbiBpdHMKQEAgLTQ2MSw3ICs0NjMsNyBAQCBwdWJsaWM6CiAg
ICAgICogQHJldHVybiB0aGUgInBvc2l0aW9uIi10aCBjb2RlIHVuaXQuCiAgICAgICogQHN0YWJs
ZSBJQ1UgMi4wCiAgICAgICovCi0gICAgdmlydHVhbCBVQ2hhciAgICAgICAgIHNldEluZGV4KGlu
dDMyX3QgcG9zaXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIGNoYXIxNl90ICAgICAgICAgc2V0SW5k
ZXgoaW50MzJfdCBwb3NpdGlvbikgPSAwOwogCiAgICAgLyoqCiAgICAgICogU2V0cyB0aGUgaXRl
cmF0b3IgdG8gcmVmZXIgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29kZSBwb2ludApAQCAtNDgx
LDcgKzQ4Myw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IGNvZGUgdW5p
dC4gCiAgICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAgICovCi0gICAgdmlydHVhbCBVQ2hhciAg
ICAgICAgIGN1cnJlbnQodm9pZCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY2hhcjE2X3QgICAg
ICAgICBjdXJyZW50KHZvaWQpIGNvbnN0ID0gMDsKICAgICAgICAgCiAgICAgLyoqCiAgICAgICog
UmV0dXJucyB0aGUgY29kZSBwb2ludCB0aGUgaXRlcmF0b3IgY3VycmVudGx5IHJlZmVycyB0by4g
IApAQCAtNDk3LDcgKzQ5OSw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuIHRoZSBuZXh0IGNv
ZGUgdW5pdC4KICAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVD
aGFyICAgICAgICAgbmV4dCh2b2lkKSA9IDA7CisgICAgdmlydHVhbCBjaGFyMTZfdCAgICAgICAg
IG5leHQodm9pZCkgPSAwOwogICAgICAgICAKICAgICAvKioKICAgICAgKiBBZHZhbmNlcyB0byB0
aGUgbmV4dCBjb2RlIHBvaW50IGluIHRoZSBpdGVyYXRpb24gcmFuZ2UKQEAgLTUxOCw3ICs1MjAs
NyBAQCBwdWJsaWM6CiAgICAgICogQHJldHVybiB0aGUgcHJldmlvdXMgY29kZSB1bml0LgogICAg
ICAqIEBzdGFibGUgSUNVIDIuMAogICAgICAqLwotICAgIHZpcnR1YWwgVUNoYXIgICAgICAgICBw
cmV2aW91cyh2b2lkKSA9IDA7CisgICAgdmlydHVhbCBjaGFyMTZfdCAgICAgICAgIHByZXZpb3Vz
KHZvaWQpID0gMDsKIAogICAgIC8qKgogICAgICAqIEFkdmFuY2VzIHRvIHRoZSBwcmV2aW91cyBj
b2RlIHBvaW50IGluIHRoZSBpdGVyYXRpb24gcmFuZ2UKQEAgLTYwNSw2ICs2MDcsMTAgQEAgcHVi
bGljOgogICAgICAqIEByZXR1cm4gdGhlIG5ldyBwb3NpdGlvbgogICAgICAqIEBzdGFibGUgSUNV
IDIuMAogICAgICAqLworI2lmZGVmIG1vdmUzMgorICAgICAvLyBPbmUgb2YgdGhlIHN5c3RlbSBo
ZWFkZXJzIHJpZ2h0IG5vdyBpcyBzb21ldGltZXMgZGVmaW5pbmcgYSBjb25mbGljdGluZyBtYWNy
byB3ZSBkb24ndCB1c2UKKyN1bmRlZiBtb3ZlMzIKKyNlbmRpZgogICAgIHZpcnR1YWwgaW50MzJf
dCAgICAgIG1vdmUzMihpbnQzMl90IGRlbHRhLCBFT3JpZ2luIG9yaWdpbikgPSAwOwogCiAgICAg
LyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2Nob2ljZm10LmggYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL2Nob2ljZm10LmgKaW5kZXggY2ZkNTIwNjI0ZGM1M2FlYzNhYjhj
MWFkMmZlMTQ3ZDAwM2YwN2ZjNC4uYzlmMGYxMTE0Zjg5ZWRjNDE0MTVkNjhjYWVlZjgzNDAyN2Q0
YTI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9jaG9pY2ZtdC5oCisrKyBi
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY2hvaWNmbXQuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKp
IDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYg
dGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxMywgSW50
ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9jb2xlaXRyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NvbGVpdHIuaAppbmRl
eCA4YzVkMGU5NGY1OGQ0MzI4ZjIxZGQzMzEwMTVhNjljMzBkY2Y5NDA2Li5mMmJkMmVjYzYyMWFj
ODVkYmQ2ODEzY2M2MTQzMDZjMWY2ZDU1MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL2NvbGVpdHIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NvbGVpdHIuaApA
QCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBv
dGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L2NvcHlyaWdodC5odG1sCiAvKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogICBDb3B5cmln
aHQgKEMpIDE5OTctMjAxNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpAQCAtNDUs
NiArNDcsNyBAQCBVX05BTUVTUEFDRV9CRUdJTgogCiBzdHJ1Y3QgQ29sbGF0aW9uRGF0YTsKIAor
Y2xhc3MgQ2hhcmFjdGVySXRlcmF0b3I7CiBjbGFzcyBDb2xsYXRpb25JdGVyYXRvcjsKIGNsYXNz
IFJ1bGVCYXNlZENvbGxhdG9yOwogY2xhc3MgVUNvbGxhdGlvblBDRTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvY29sbC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9jb2xs
LmgKaW5kZXggYWRkNmI1YmEzNjhmN2I5ZDk5ZGRkNGEwM2YzNjE5NzYwYzIxNTgzMS4uZDAzNTcw
NTA5ZWNlYmJkZmJlYjFjYTIxNWJkMzM3MDM3ODVlN2Y4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9jb2xsLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9jb2xsLmgK
QEAgLTEsMTUgKzEsMTcgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qICAgQ29weXJp
Z2h0IChDKSAxOTk2LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBD
b3B5cmlnaHQgKEMpIDE5OTYtMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwog
KiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiAqLwogCiAvKioKLSAqIFxmaWxlIAorICogXGZpbGUKICAqIFxicmll
ZiBDKysgQVBJOiBDb2xsYXRpb24gU2VydmljZS4KICAqLwotIAorCiAvKioKICogRmlsZSBjb2xs
LmgKICoKQEAgLTU2LDcgKzU4LDcgQEAKIAogI2luY2x1ZGUgInVuaWNvZGUvdW9iamVjdC5oIgog
I2luY2x1ZGUgInVuaWNvZGUvdWNvbC5oIgotI2luY2x1ZGUgInVuaWNvZGUvbm9ybWx6ci5oIgor
I2luY2x1ZGUgInVuaWNvZGUvdW5vcm0uaCIKICNpbmNsdWRlICJ1bmljb2RlL2xvY2lkLmgiCiAj
aW5jbHVkZSAidW5pY29kZS91bmlzZXQuaCIKICNpbmNsdWRlICJ1bmljb2RlL3VtaXNjLmgiCkBA
IC0xNTYsNyArMTU4LDcgQEAgY2xhc3MgQ29sbGF0aW9uS2V5OwogKiBAc2VlICAgICAgICAgQ29s
bGF0aW9uS2V5CiAqIEBzZWUgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IKICogQHNl
ZSAgICAgICAgIExvY2FsZQotKiBAc2VlICAgICAgICAgTm9ybWFsaXplcgorKiBAc2VlICAgICAg
ICAgTm9ybWFsaXplcjIKICogQHZlcnNpb24gICAgIDIuMCAxMS8xNS8wMQogKi8KIApAQCAtMTk5
LDYgKzIwMSw5IEBAIHB1YmxpYzoKICAgICAgICAgSURFTlRJQ0FMICA9IFVDT0xfSURFTlRJQ0FM
ICAvLyAxNQogICAgIH07CiAKKworICAgIC8vIENhbm5vdCB1c2UgI2lmbmRlZiBVX0hJREVfREVQ
UkVDQVRFRF9BUEkgZm9yIHRoZSBmb2xsb3dpbmcsIGl0IGlzCisgICAgLy8gdXNlZCBieSB2aXJ0
dWFsIG1ldGhvZHMgdGhhdCBjYW5ub3QgaGF2ZSB0aGF0IGNvbmRpdGlvbmFsLgogICAgIC8qKgog
ICAgICAqIExFU1MgaXMgcmV0dXJuZWQgaWYgc291cmNlIHN0cmluZyBpcyBjb21wYXJlZCB0byBi
ZSBsZXNzIHRoYW4gdGFyZ2V0CiAgICAgICogc3RyaW5nIGluIHRoZSBjb21wYXJlKCkgbWV0aG9k
LgpAQCAtMzg4LDggKzM5Myw4IEBAIHB1YmxpYzoKICAgICAgKiBpcyBsZXNzIHRoYW4sIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyIHN0cmluZyBhcnJheS4KICAgICAgKiA8cD5FeGFt
cGxlIG9mIHVzZToKICAgICAgKiA8cHJlPgotICAgICAqIC4gICAgICAgVUNoYXIgQUJDW10gPSB7
MHg0MSwgMHg0MiwgMHg0MywgMH07ICAvLyA9ICJBQkMiCi0gICAgICogLiAgICAgICBVQ2hhciBh
YmNbXSA9IHsweDYxLCAweDYyLCAweDYzLCAwfTsgIC8vID0gImFiYyIKKyAgICAgKiAuICAgICAg
IGNoYXIxNl90IEFCQ1tdID0gezB4NDEsIDB4NDIsIDB4NDMsIDB9OyAgLy8gPSAiQUJDIgorICAg
ICAqIC4gICAgICAgY2hhcjE2X3QgYWJjW10gPSB7MHg2MSwgMHg2MiwgMHg2MywgMH07ICAvLyA9
ICJhYmMiCiAgICAgICogLiAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
ICAgICAgKiAuICAgICAgIENvbGxhdG9yICpteUNvbGxhdGlvbiA9CiAgICAgICogLiAgICAgICAg
ICAgICAgICAgICAgICAgICBDb2xsYXRvcjo6Y3JlYXRlSW5zdGFuY2UoTG9jYWxlOjpnZXRVUygp
LCBzdGF0dXMpOwpAQCAtNDE1LDggKzQyMCw4IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgIHRh
cmdldAogICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjYgdXNlIHRoZSBvdmVybG9hZCB3aXRoIFVF
cnJvckNvZGUgJgogICAgICAqLwotICAgIHZpcnR1YWwgRUNvbXBhcmlzb25SZXN1bHQgY29tcGFy
ZShjb25zdCBVQ2hhciogc291cmNlLCBpbnQzMl90IHNvdXJjZUxlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIHRhcmdldCwgaW50MzJfdCB0
YXJnZXRMZW5ndGgpCisgICAgdmlydHVhbCBFQ29tcGFyaXNvblJlc3VsdCBjb21wYXJlKGNvbnN0
IGNoYXIxNl90KiBzb3VyY2UsIGludDMyX3Qgc291cmNlTGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyMTZfdCogdGFyZ2V0LCBpbnQzMl90IHRh
cmdldExlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q7
CiAKICAgICAvKioKQEAgLTQzNSw4ICs0NDAsOCBAQCBwdWJsaWM6CiAgICAgICogdGhhbiB0YXJn
ZXQKICAgICAgKiBAc3RhYmxlIElDVSAyLjYKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVDb2xsYXRp
b25SZXN1bHQgY29tcGFyZShjb25zdCBVQ2hhciogc291cmNlLCBpbnQzMl90IHNvdXJjZUxlbmd0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIHRh
cmdldCwgaW50MzJfdCB0YXJnZXRMZW5ndGgsCisgICAgdmlydHVhbCBVQ29sbGF0aW9uUmVzdWx0
IGNvbXBhcmUoY29uc3QgY2hhcjE2X3QqIHNvdXJjZSwgaW50MzJfdCBzb3VyY2VMZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90KiB0YXJn
ZXQsIGludDMyX3QgdGFyZ2V0TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpIGNvbnN0ID0gMDsKIAogICAgIC8qKgpAQCAtNDc5
LDcgKzQ4NCw3IEBAIHB1YmxpYzoKICAgICAgKiBnZW5lcmF0ZWQgc29ydCBrZXlzLgogICAgICAq
IElmIHRoZSBzb3VyY2Ugc3RyaW5nIGlzIG51bGwsIGEgbnVsbCBjb2xsYXRpb24ga2V5IHdpbGwg
YmUgcmV0dXJuZWQuCiAgICAgICoKLSAgICAgKiBOb3RlIHRoYXQgc29ydCBrZXlzIGFyZSBvZnRl
biBsZXNzIGVmZmljaWVudCB0aGFuIHNpbXBseSBkb2luZyBjb21wYXJpc29uLiAgCisgICAgICog
Tm90ZSB0aGF0IHNvcnQga2V5cyBhcmUgb2Z0ZW4gbGVzcyBlZmZpY2llbnQgdGhhbiBzaW1wbHkg
ZG9pbmcgY29tcGFyaXNvbi4KICAgICAgKiBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIElDVSBV
c2VyIEd1aWRlLgogICAgICAqCiAgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgc291cmNlIHN0cmlu
ZyB0byBiZSB0cmFuc2Zvcm1lZCBpbnRvIGEgc29ydCBrZXkuCkBAIC01MDEsNyArNTA2LDcgQEAg
cHVibGljOgogICAgICAqIGdlbmVyYXRlZCBzb3J0IGtleXMuCiAgICAgICogPHA+SWYgdGhlIHNv
dXJjZSBzdHJpbmcgaXMgbnVsbCwgYSBudWxsIGNvbGxhdGlvbiBrZXkgd2lsbCBiZSByZXR1cm5l
ZC4KICAgICAgKgotICAgICAqIE5vdGUgdGhhdCBzb3J0IGtleXMgYXJlIG9mdGVuIGxlc3MgZWZm
aWNpZW50IHRoYW4gc2ltcGx5IGRvaW5nIGNvbXBhcmlzb24uICAKKyAgICAgKiBOb3RlIHRoYXQg
c29ydCBrZXlzIGFyZSBvZnRlbiBsZXNzIGVmZmljaWVudCB0aGFuIHNpbXBseSBkb2luZyBjb21w
YXJpc29uLgogICAgICAqIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgSUNVIFVzZXIgR3VpZGUu
CiAgICAgICoKICAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBzb3VyY2Ugc3RyaW5nIHRvIGJlIHRy
YW5zZm9ybWVkIGludG8gYSBzb3J0IGtleS4KQEAgLTUxMiw3ICs1MTcsNyBAQCBwdWJsaWM6CiAg
ICAgICogQHNlZSBDb2xsYXRpb25LZXkjY29tcGFyZQogICAgICAqIEBzdGFibGUgSUNVIDIuMAog
ICAgICAqLwotICAgIHZpcnR1YWwgQ29sbGF0aW9uS2V5JiBnZXRDb2xsYXRpb25LZXkoY29uc3Qg
VUNoYXIqc291cmNlLAorICAgIHZpcnR1YWwgQ29sbGF0aW9uS2V5JiBnZXRDb2xsYXRpb25LZXko
Y29uc3QgY2hhcjE2X3Qqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCBzb3VyY2VMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDb2xsYXRpb25LZXkmIGtleSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3QgPSAwOwpAQCAt
NjE2LDcgKzYyMSw3IEBAIHB1YmxpYzoKICAgICAgKiBAc2VlIENvbGxhdG9yI3NldFJlb3JkZXJD
b2RlcwogICAgICAqIEBzZWUgVVNjcmlwdENvZGUKICAgICAgKiBAc2VlIFVDb2xSZW9yZGVyQ29k
ZQotICAgICAqIEBzdGFibGUgSUNVIDQuOCAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAg
Ki8KICAgICAgdmlydHVhbCBpbnQzMl90IGdldFJlb3JkZXJDb2RlcyhpbnQzMl90ICpkZXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgZGVzdENhcGFjaXR5
LApAQCAtNjI2LDcgKzYzMSw3IEBAIHB1YmxpYzoKICAgICAgKiBTZXRzIHRoZSBvcmRlcmluZyBv
ZiBzY3JpcHRzIGZvciB0aGlzIGNvbGxhdG9yLgogICAgICAqCiAgICAgICogPHA+VGhlIHJlb3Jk
ZXJpbmcgY29kZXMgYXJlIGEgY29tYmluYXRpb24gb2Ygc2NyaXB0IGNvZGVzIGFuZCByZW9yZGVy
IGNvZGVzLgotICAgICAqIEBwYXJhbSByZW9yZGVyQ29kZXMgQW4gYXJyYXkgb2Ygc2NyaXB0IGNv
ZGVzIGluIHRoZSBuZXcgb3JkZXIuIFRoaXMgY2FuIGJlIE5VTEwgaWYgdGhlIAorICAgICAqIEBw
YXJhbSByZW9yZGVyQ29kZXMgQW4gYXJyYXkgb2Ygc2NyaXB0IGNvZGVzIGluIHRoZSBuZXcgb3Jk
ZXIuIFRoaXMgY2FuIGJlIE5VTEwgaWYgdGhlCiAgICAgICogbGVuZ3RoIGlzIGFsc28gc2V0IHRv
IDAuIEFuIGVtcHR5IGFycmF5IHdpbGwgY2xlYXIgYW55IHJlb3JkZXJpbmcgY29kZXMgb24gdGhl
IGNvbGxhdG9yLgogICAgICAqIEBwYXJhbSByZW9yZGVyQ29kZXNMZW5ndGggVGhlIGxlbmd0aCBv
ZiByZW9yZGVyQ29kZXMuCiAgICAgICogQHBhcmFtIHN0YXR1cyBlcnJvciBjb2RlCkBAIC02MzUs
NyArNjQwLDcgQEAgcHVibGljOgogICAgICAqIEBzZWUgQ29sbGF0b3IjZ2V0RXF1aXZhbGVudFJl
b3JkZXJDb2RlcwogICAgICAqIEBzZWUgVVNjcmlwdENvZGUKICAgICAgKiBAc2VlIFVDb2xSZW9y
ZGVyQ29kZQotICAgICAqIEBzdGFibGUgSUNVIDQuOCAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjgK
ICAgICAgKi8KICAgICAgdmlydHVhbCB2b2lkIHNldFJlb3JkZXJDb2Rlcyhjb25zdCBpbnQzMl90
KiByZW9yZGVyQ29kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJf
dCByZW9yZGVyQ29kZXNMZW5ndGgsCkBAIC02NDcsMTEgKzY1MiwxMSBAQCBwdWJsaWM6CiAgICAg
ICogQmVnaW5uaW5nIHdpdGggSUNVIDU1LCBzY3JpcHRzIG9ubHkgcmVvcmRlciB0b2dldGhlciBp
ZiB0aGV5IGFyZSBwcmltYXJ5LWVxdWFsLAogICAgICAqIGZvciBleGFtcGxlIEhpcmFnYW5hIGFu
ZCBLYXRha2FuYS4KICAgICAgKgotICAgICAqIEBwYXJhbSByZW9yZGVyQ29kZSBUaGUgcmVvcmRl
ciBjb2RlIHRvIGRldGVybWluZSBlcXVpdmFsZW5jZSBmb3IuIAorICAgICAqIEBwYXJhbSByZW9y
ZGVyQ29kZSBUaGUgcmVvcmRlciBjb2RlIHRvIGRldGVybWluZSBlcXVpdmFsZW5jZSBmb3IuCiAg
ICAgICogQHBhcmFtIGRlc3QgVGhlIGFycmF5IHRvIGZpbGwgd2l0aCB0aGUgc2NyaXB0IGVxdWl2
YWxlbmNlIHJlb3JkZXJpbmcgY29kZXMuCi0gICAgICogQHBhcmFtIGRlc3RDYXBhY2l0eSBUaGUg
bGVuZ3RoIG9mIGRlc3QuIElmIGl0IGlzIDAsIHRoZW4gZGVzdCBtYXkgYmUgTlVMTCBhbmQgdGhl
IAorICAgICAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgVGhlIGxlbmd0aCBvZiBkZXN0LiBJZiBpdCBp
cyAwLCB0aGVuIGRlc3QgbWF5IGJlIE5VTEwgYW5kIHRoZQogICAgICAqIGZ1bmN0aW9uIHdpbGwg
b25seSByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0IHdpdGhvdXQgd3JpdGluZyBhbnkg
Y29kZXMgKHByZS1mbGlnaHRpbmcpLgotICAgICAqIEBwYXJhbSBzdGF0dXMgQSByZWZlcmVuY2Ug
dG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgCisgICAgICog
QHBhcmFtIHN0YXR1cyBBIHJlZmVyZW5jZSB0byBhbiBlcnJvciBjb2RlIHZhbHVlLCB3aGljaCBt
dXN0IG5vdCBpbmRpY2F0ZQogICAgICAqIGEgZmFpbHVyZSBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNh
bGwuCiAgICAgICogQHJldHVybiBUaGUgbGVuZ3RoIG9mIHRoZSBvZiB0aGUgcmVvcmRlcmluZyBj
b2RlIGVxdWl2YWxlbmNlIGFycmF5LgogICAgICAqIEBzZWUgdWNvbF9zZXRSZW9yZGVyQ29kZXMK
QEAgLTY1OSw3ICs2NjQsNyBAQCBwdWJsaWM6CiAgICAgICogQHNlZSBDb2xsYXRvciNzZXRSZW9y
ZGVyQ29kZXMKICAgICAgKiBAc2VlIFVTY3JpcHRDb2RlCiAgICAgICogQHNlZSBVQ29sUmVvcmRl
ckNvZGUKLSAgICAgKiBAc3RhYmxlIElDVSA0LjggCisgICAgICogQHN0YWJsZSBJQ1UgNC44CiAg
ICAgICovCiAgICAgc3RhdGljIGludDMyX3QgVV9FWFBPUlQyIGdldEVxdWl2YWxlbnRSZW9yZGVy
Q29kZXMoaW50MzJfdCByZW9yZGVyQ29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCogZGVzdCwKQEAgLTY2Nyw3ICs2NzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKICAgICAvKioKLSAg
ICAgKiBHZXQgbmFtZSBvZiB0aGUgb2JqZWN0IGZvciB0aGUgZGVzaXJlZCBMb2NhbGUsIGluIHRo
ZSBkZXNpcmVkIGxhbmdhdWdlCisgICAgICogR2V0IG5hbWUgb2YgdGhlIG9iamVjdCBmb3IgdGhl
IGRlc2lyZWQgTG9jYWxlLCBpbiB0aGUgZGVzaXJlZCBsYW5ndWFnZQogICAgICAqIEBwYXJhbSBv
YmplY3RMb2NhbGUgbXVzdCBiZSBmcm9tIGdldEF2YWlsYWJsZUxvY2FsZXMKICAgICAgKiBAcGFy
YW0gZGlzcGxheUxvY2FsZSBzcGVjaWZpZXMgdGhlIGRlc2lyZWQgbG9jYWxlIGZvciBvdXRwdXQK
ICAgICAgKiBAcGFyYW0gbmFtZSB0aGUgZmlsbC1pbiBwYXJhbWV0ZXIgb2YgdGhlIHJldHVybiB2
YWx1ZQpAQCAtNjgwLDcgKzY4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgbmFtZSk7CiAKICAgICAvKioKLSAgICAq
IEdldCBuYW1lIG9mIHRoZSBvYmplY3QgZm9yIHRoZSBkZXNpcmVkIExvY2FsZSwgaW4gdGhlIGxh
bmdhdWdlIG9mIHRoZQorICAgICogR2V0IG5hbWUgb2YgdGhlIG9iamVjdCBmb3IgdGhlIGRlc2ly
ZWQgTG9jYWxlLCBpbiB0aGUgbGFuZ3VhZ2Ugb2YgdGhlCiAgICAgKiBkZWZhdWx0IGxvY2FsZS4K
ICAgICAqIEBwYXJhbSBvYmplY3RMb2NhbGUgbXVzdCBiZSBmcm9tIGdldEF2YWlsYWJsZUxvY2Fs
ZXMKICAgICAqIEBwYXJhbSBuYW1lIHRoZSBmaWxsLWluIHBhcmFtZXRlciBvZiB0aGUgcmV0dXJu
IHZhbHVlCkBAIC05MDYsNyArOTExLDcgQEAgcHVibGljOgogICAgICAqIHRoZSB0b3Agb2Ygb25l
IG9mIHRoZSBzdXBwb3J0ZWQgcmVvcmRlcmluZyBncm91cHMsCiAgICAgICogYW5kIGl0IG11c3Qg
bm90IGJlIGJleW9uZCB0aGUgbGFzdCBvZiB0aG9zZSBncm91cHMuCiAgICAgICogU2VlIHNldE1h
eFZhcmlhYmxlKCkuCi0gICAgICogQHBhcmFtIHZhclRvcCBvbmUgb3IgbW9yZSAoaWYgY29udHJh
Y3Rpb24pIFVDaGFycyB0byB3aGljaCB0aGUgdmFyaWFibGUgdG9wIHNob3VsZCBiZSBzZXQKKyAg
ICAgKiBAcGFyYW0gdmFyVG9wIG9uZSBvciBtb3JlIChpZiBjb250cmFjdGlvbikgY2hhcjE2X3Rz
IHRvIHdoaWNoIHRoZSB2YXJpYWJsZSB0b3Agc2hvdWxkIGJlIHNldAogICAgICAqIEBwYXJhbSBs
ZW4gbGVuZ3RoIG9mIHZhcmlhYmxlIHRvcCBzdHJpbmcuIElmIC0xIGl0IGlzIGNvbnNpZGVyZWQg
dG8gYmUgemVybyB0ZXJtaW5hdGVkLgogICAgICAqIEBwYXJhbSBzdGF0dXMgZXJyb3IgY29kZS4g
SWYgZXJyb3IgY29kZSBpcyBzZXQsIHRoZSByZXR1cm4gdmFsdWUgaXMgdW5kZWZpbmVkLiBFcnJv
cnMgc2V0IGJ5IHRoaXMgZnVuY3Rpb24gYXJlOiA8YnI+CiAgICAgICogICAgVV9DRV9OT1RfRk9V
TkRfRVJST1IgaWYgbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgd2FzIHBhc3NlZCBhbmQgdGhlcmUg
aXMgbm8gc3VjaCBjb250cmFjdGlvbjxicj4KQEAgLTkxNSw3ICs5MjAsNyBAQCBwdWJsaWM6CiAg
ICAgICogQHJldHVybiB2YXJpYWJsZSB0b3AgcHJpbWFyeSB3ZWlnaHQKICAgICAgKiBAZGVwcmVj
YXRlZCBJQ1UgNTMgQ2FsbCBzZXRNYXhWYXJpYWJsZSgpIGluc3RlYWQuCiAgICAgICovCi0gICAg
dmlydHVhbCB1aW50MzJfdCBzZXRWYXJpYWJsZVRvcChjb25zdCBVQ2hhciAqdmFyVG9wLCBpbnQz
Ml90IGxlbiwgVUVycm9yQ29kZSAmc3RhdHVzKSA9IDA7CisgICAgdmlydHVhbCB1aW50MzJfdCBz
ZXRWYXJpYWJsZVRvcChjb25zdCBjaGFyMTZfdCAqdmFyVG9wLCBpbnQzMl90IGxlbiwgVUVycm9y
Q29kZSAmc3RhdHVzKSA9IDA7CiAKICAgICAvKioKICAgICAgKiBTZXRzIHRoZSB2YXJpYWJsZSB0
b3AgdG8gdGhlIHByaW1hcnkgd2VpZ2h0IG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5nLgpAQCAtOTI0
LDcgKzkyOSw3IEBAIHB1YmxpYzoKICAgICAgKiB0aGUgdG9wIG9mIG9uZSBvZiB0aGUgc3VwcG9y
dGVkIHJlb3JkZXJpbmcgZ3JvdXBzLAogICAgICAqIGFuZCBpdCBtdXN0IG5vdCBiZSBiZXlvbmQg
dGhlIGxhc3Qgb2YgdGhvc2UgZ3JvdXBzLgogICAgICAqIFNlZSBzZXRNYXhWYXJpYWJsZSgpLgot
ICAgICAqIEBwYXJhbSB2YXJUb3AgYSBVbmljb2RlU3RyaW5nIHNpemUgMSBvciBtb3JlIChpZiBj
b250cmFjdGlvbikgb2YgVUNoYXJzIHRvIHdoaWNoIHRoZSB2YXJpYWJsZSB0b3Agc2hvdWxkIGJl
IHNldAorICAgICAqIEBwYXJhbSB2YXJUb3AgYSBVbmljb2RlU3RyaW5nIHNpemUgMSBvciBtb3Jl
IChpZiBjb250cmFjdGlvbikgb2YgY2hhcjE2X3RzIHRvIHdoaWNoIHRoZSB2YXJpYWJsZSB0b3Ag
c2hvdWxkIGJlIHNldAogICAgICAqIEBwYXJhbSBzdGF0dXMgZXJyb3IgY29kZS4gSWYgZXJyb3Ig
Y29kZSBpcyBzZXQsIHRoZSByZXR1cm4gdmFsdWUgaXMgdW5kZWZpbmVkLiBFcnJvcnMgc2V0IGJ5
IHRoaXMgZnVuY3Rpb24gYXJlOiA8YnI+CiAgICAgICogICAgVV9DRV9OT1RfRk9VTkRfRVJST1Ig
aWYgbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgd2FzIHBhc3NlZCBhbmQgdGhlcmUgaXMgbm8gc3Vj
aCBjb250cmFjdGlvbjxicj4KICAgICAgKiAgICBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IgaWYg
dGhlIHZhcmlhYmxlIHRvcCBpcyBiZXlvbmQKQEAgLTk4MSw3ICs5ODYsNyBAQCBwdWJsaWM6CiAg
ICAgICogU29ydCBrZXkgYnl0ZSBhcnJheXMgYXJlIHplcm8tdGVybWluYXRlZCBhbmQgY2FuIGJl
IGNvbXBhcmVkIHVzaW5nCiAgICAgICogc3RyY21wKCkuCiAgICAgICoKLSAgICAgKiBOb3RlIHRo
YXQgc29ydCBrZXlzIGFyZSBvZnRlbiBsZXNzIGVmZmljaWVudCB0aGFuIHNpbXBseSBkb2luZyBj
b21wYXJpc29uLiAgCisgICAgICogTm90ZSB0aGF0IHNvcnQga2V5cyBhcmUgb2Z0ZW4gbGVzcyBl
ZmZpY2llbnQgdGhhbiBzaW1wbHkgZG9pbmcgY29tcGFyaXNvbi4KICAgICAgKiBGb3IgbW9yZSBk
ZXRhaWxzLCBzZWUgdGhlIElDVSBVc2VyIEd1aWRlLgogICAgICAqCiAgICAgICogQHBhcmFtIHNv
dXJjZSBzdHJpbmcgdG8gYmUgcHJvY2Vzc2VkLgpAQCAtOTk3LDExICsxMDAyLDExIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0TGVuZ3RoKSBj
b25zdCA9IDA7CiAKICAgICAvKioKLSAgICAgKiBHZXQgdGhlIHNvcnQga2V5IGFzIGFuIGFycmF5
IG9mIGJ5dGVzIGZyb20gYSBVQ2hhciBidWZmZXIuCisgICAgICogR2V0IHRoZSBzb3J0IGtleSBh
cyBhbiBhcnJheSBvZiBieXRlcyBmcm9tIGEgY2hhcjE2X3QgYnVmZmVyLgogICAgICAqIFNvcnQg
a2V5IGJ5dGUgYXJyYXlzIGFyZSB6ZXJvLXRlcm1pbmF0ZWQgYW5kIGNhbiBiZSBjb21wYXJlZCB1
c2luZwogICAgICAqIHN0cmNtcCgpLgogICAgICAqCi0gICAgICogTm90ZSB0aGF0IHNvcnQga2V5
cyBhcmUgb2Z0ZW4gbGVzcyBlZmZpY2llbnQgdGhhbiBzaW1wbHkgZG9pbmcgY29tcGFyaXNvbi4g
IAorICAgICAqIE5vdGUgdGhhdCBzb3J0IGtleXMgYXJlIG9mdGVuIGxlc3MgZWZmaWNpZW50IHRo
YW4gc2ltcGx5IGRvaW5nIGNvbXBhcmlzb24uCiAgICAgICogRm9yIG1vcmUgZGV0YWlscywgc2Vl
IHRoZSBJQ1UgVXNlciBHdWlkZS4KICAgICAgKgogICAgICAqIEBwYXJhbSBzb3VyY2Ugc3RyaW5n
IHRvIGJlIHByb2Nlc3NlZC4KQEAgLTEwMTUsNyArMTAyMCw3IEBAIHB1YmxpYzoKICAgICAgKiBA
cmV0dXJuIE51bWJlciBvZiBieXRlcyBuZWVkZWQgZm9yIHN0b3JpbmcgdGhlIHNvcnQga2V5CiAg
ICAgICogQHN0YWJsZSBJQ1UgMi4yCiAgICAgICovCi0gICAgdmlydHVhbCBpbnQzMl90IGdldFNv
cnRLZXkoY29uc3QgVUNoYXIqc291cmNlLCBpbnQzMl90IHNvdXJjZUxlbmd0aCwKKyAgICB2aXJ0
dWFsIGludDMyX3QgZ2V0U29ydEtleShjb25zdCBjaGFyMTZfdCpzb3VyY2UsIGludDMyX3Qgc291
cmNlTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqcmVzdWx0
LCBpbnQzMl90IHJlc3VsdExlbmd0aCkgY29uc3QgPSAwOwogCiAgICAgLyoqCkBAIC0xMTExLDE4
ICsxMTE2LDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxlcyhjb25zdCBM
b2NhbGUmIHJlcXVlc3RlZExvY2FsZSwgY29uc3QgTG9jYWxlJiB2YWxpZExvY2FsZSwgY29uc3Qg
TG9jYWxlJiBhY3R1YWxMb2NhbGUpOwogCiAgICAgLyoqIEdldCB0aGUgc2hvcnQgZGVmaW5pdGlv
biBzdHJpbmcgZm9yIGEgY29sbGF0b3IuIFRoaXMgaW50ZXJuYWwgQVBJIGhhcnZlc3RzIHRoZSBj
b2xsYXRvcidzCi0gICAgICogIGxvY2FsZSBhbmQgdGhlIGF0dHJpYnV0ZSBzZXQgYW5kIHByb2R1
Y2VzIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG9wZW5pbmcgCisgICAgICogIGxvY2Fs
ZSBhbmQgdGhlIGF0dHJpYnV0ZSBzZXQgYW5kIHByb2R1Y2VzIGEgc3RyaW5nIHRoYXQgY2FuIGJl
IHVzZWQgZm9yIG9wZW5pbmcKICAgICAgKiAgYSBjb2xsYXRvciB3aXRoIHRoZSBzYW1lIGF0dHJp
YnV0ZXMgdXNpbmcgdGhlIHVjb2xfb3BlbkZyb21TaG9ydFN0cmluZyBBUEkuCiAgICAgICogIFRo
aXMgc3RyaW5nIHdpbGwgYmUgbm9ybWFsaXplZC4KICAgICAgKiAgVGhlIHN0cnVjdHVyZSBhbmQg
dGhlIHN5bnRheCBvZiB0aGUgc3RyaW5nIGlzIGRlZmluZWQgaW4gdGhlICJOYW1pbmcgY29sbGF0
b3JzIgotICAgICAqICBzZWN0aW9uIG9mIHRoZSB1c2VycyBndWlkZTogCisgICAgICogIHNlY3Rp
b24gb2YgdGhlIHVzZXJzIGd1aWRlOgogICAgICAqICBodHRwOi8vdXNlcmd1aWRlLmljdS1wcm9q
ZWN0Lm9yZy9jb2xsYXRpb24vY29uY2VwdHMjVE9DLUNvbGxhdG9yLW5hbWluZy1zY2hlbWUKICAg
ICAgKiAgVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyBwcmVmbGlnaHRpbmcuCi0gICAgICogCisgICAg
ICoKICAgICAgKiAgVGhpcyBpcyBpbnRlcm5hbCwgYW5kIGludGVuZGVkIHRvIGJlIHVzZWQgd2l0
aCBkZWxlZ2F0ZSBjb252ZXJ0ZXJzLgogICAgICAqCiAgICAgICogIEBwYXJhbSBsb2NhbGUgYSBs
b2NhbGUgdGhhdCB3aWxsIGFwcGVhciBhcyBhIGNvbGxhdG9ycyBsb2NhbGUgaW4gdGhlIHJlc3Vs
dGluZwotICAgICAqICAgICAgICAgICAgICAgIHNob3J0IHN0cmluZyBkZWZpbml0aW9uLiBJZiBO
VUxMLCB0aGUgbG9jYWxlIHdpbGwgYmUgaGFydmVzdGVkIAorICAgICAqICAgICAgICAgICAgICAg
IHNob3J0IHN0cmluZyBkZWZpbml0aW9uLiBJZiBOVUxMLCB0aGUgbG9jYWxlIHdpbGwgYmUgaGFy
dmVzdGVkCiAgICAgICogICAgICAgICAgICAgICAgZnJvbSB0aGUgY29sbGF0b3IuCiAgICAgICog
IEBwYXJhbSBidWZmZXIgc3BhY2UgdG8gaG9sZCB0aGUgcmVzdWx0aW5nIHN0cmluZwogICAgICAq
ICBAcGFyYW0gY2FwYWNpdHkgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9pY3UvdW5pY29kZS9jb21wYWN0ZGVjaW1hbGZvcm1hdC5oIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9jb21wYWN0ZGVjaW1hbGZvcm1hdC5oCmluZGV4IGJkOGZkYmE4ZThmMjNjYmM5
ZTdhYTkxYWIyZjc1YjljZWJjZmViNDAuLjNmYmU1ZGE5Y2VlNGIyM2M0NGFlMjU1ZmJiNDFhZmUw
MWQzNmE0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY29tcGFjdGRlY2lt
YWxmb3JtYXQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NvbXBhY3RkZWNpbWFsZm9y
bWF0LmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5j
LiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qICAg
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMK
KyogICBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNo
aW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTEyMSw2ICsxMjMsMjMgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRv
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24mIHBvcykg
Y29uc3Q7CiAKKyAgICAvKioKKyAgICAgKiBGb3JtYXQgYSBkb3VibGUgb3IgbG9uZyBudW1iZXIg
dXNpbmcgYmFzZS0xMCByZXByZXNlbnRhdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBudW1i
ZXIgICAgVGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZC4KKyAgICAgKiBAcGFyYW0gYXBwZW5kVG8g
IE91dHB1dCBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSByZXN1bHQuCisgICAgICogICAgICAgICAgICAg
ICAgICBSZXN1bHQgaXMgYXBwZW5kZWQgdG8gZXhpc3RpbmcgY29udGVudHMuCisgICAgICogQHBh
cmFtIHBvcyAgICAgICBPbiBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLCBpZiBkZXNpcmVkLgor
ICAgICAqICAgICAgICAgICAgICAgICAgT24gb3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxp
Z25tZW50IGZpZWxkLgorICAgICAqIEBwYXJhbSBzdGF0dXMKKyAgICAgKiBAcmV0dXJuICAgICAg
ICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4KKyAgICAgKiBAaW50ZXJuYWwK
KyAgICAgKi8KKyAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZvcm1hdChkb3VibGUgbnVtYmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVu
ZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24mIHBv
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMp
IGNvbnN0OworCiAgICAgLyoqCiAgICAgICogRm9ybWF0IGEgZG91YmxlIG9yIGxvbmcgbnVtYmVy
IHVzaW5nIGJhc2UtMTAgcmVwcmVzZW50YXRpb24uCiAgICAgICogQ3VycmVudGx5IHNldHMgc3Rh
dHVzIHRvIFVfVU5TVVBQT1JURURfRVJST1IuCkBAIC0xNDAsNiArMTU5LDU2IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uSXRlcmF0b3Iq
IHBvc0l0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYg
c3RhdHVzKSBjb25zdDsKIAorICAgIC8qKgorICAgICAqIEZvcm1hdCBhIGxvbmcgbnVtYmVyIHVz
aW5nIGJhc2UtMTAgcmVwcmVzZW50YXRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gbnVtYmVy
ICAgIFRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQuCisgICAgICogQHBhcmFtIGFwcGVuZFRvICBP
dXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0LgorICAgICAqICAgICAgICAgICAgICAg
ICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgorICAgICAqIEBwYXJh
bSBwb3MgICAgICAgT24gaW5wdXQ6IGFuIGFsaWdubWVudCBmaWVsZCwgaWYgZGVzaXJlZC4KKyAg
ICAgKiAgICAgICAgICAgICAgICAgIE9uIG91dHB1dDogdGhlIG9mZnNldHMgb2YgdGhlIGFsaWdu
bWVudCBmaWVsZC4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5k
VG8nIHBhcmFtZXRlci4KKyAgICAgKiBAc3RhYmxlIElDVSA1NgorICAgICAqLworICAgIHZpcnR1
YWwgVW5pY29kZVN0cmluZyYgZm9ybWF0KGludDMyX3QgbnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24mIHBvcykgY29uc3Q7CisKKyAgICAv
KioKKyAgICAgKiBGb3JtYXQgYSBsb25nIG51bWJlciB1c2luZyBiYXNlLTEwIHJlcHJlc2VudGF0
aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIG51bWJlciAgICBUaGUgdmFsdWUgdG8gYmUgZm9y
bWF0dGVkLgorICAgICAqIEBwYXJhbSBhcHBlbmRUbyAgT3V0cHV0IHBhcmFtZXRlciB0byByZWNl
aXZlIHJlc3VsdC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0
byBleGlzdGluZyBjb250ZW50cy4KKyAgICAgKiBAcGFyYW0gcG9zICAgICAgIE9uIGlucHV0OiBh
biBhbGlnbm1lbnQgZmllbGQsIGlmIGRlc2lyZWQuCisgICAgICogICAgICAgICAgICAgICAgICBP
biBvdXRwdXQ6IHRoZSBvZmZzZXRzIG9mIHRoZSBhbGlnbm1lbnQgZmllbGQuCisgICAgICogQHJl
dHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCisgICAgICog
QGludGVybmFsCisgICAgICovCisgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoaW50
MzJfdCBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0
cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQ
b3NpdGlvbiYgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNv
ZGUgJnN0YXR1cykgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXQgYSBsb25nIG51bWJl
ciB1c2luZyBiYXNlLTEwIHJlcHJlc2VudGF0aW9uLgorICAgICAqIEN1cnJlbnRseSBzZXRzIHN0
YXR1cyB0byBVX1VOU1VQUE9SVEVEX0VSUk9SCisgICAgICoKKyAgICAgKiBAcGFyYW0gbnVtYmVy
ICAgIFRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQuCisgICAgICogQHBhcmFtIGFwcGVuZFRvICBP
dXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0LgorICAgICAqICAgICAgICAgICAgICAg
ICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgorICAgICAqIEBwYXJh
bSBwb3NJdGVyICAgT24gcmV0dXJuLCBjYW4gYmUgdXNlZCB0byBpdGVyYXRlIG92ZXIgcG9zaXRp
b25zCisgICAgICogICAgICAgICAgICAgICAgICBvZiBmaWVsZHMgZ2VuZXJhdGVkIGJ5IHRoaXMg
Zm9ybWF0IGNhbGwuCisgICAgICogICAgICAgICAgICAgICAgICBDYW4gYmUgTlVMTC4KKyAgICAg
KiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBmaWxsZWQgd2l0aCBzdWNjZXNzL2ZhaWx1
cmUgc3RhdHVzLgorICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRU
bycgcGFyYW1ldGVyLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHZpcnR1YWwgVW5p
Y29kZVN0cmluZyYgZm9ybWF0KGludDMyX3QgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb25JdGVyYXRvciogcG9zSXRlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OworCiAg
ICAgLyoqCiAgICAgICogRm9ybWF0IGFuIGludDY0IG51bWJlciB1c2luZyBiYXNlLTEwIHJlcHJl
c2VudGF0aW9uLgogICAgICAqCkBAIC0xNTUsNiArMjI0LDIyIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uJiBwb3MpIGNvbnN0Owog
CisgICAgLyoqCisgICAgICogRm9ybWF0IGFuIGludDY0IG51bWJlciB1c2luZyBiYXNlLTEwIHJl
cHJlc2VudGF0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIG51bWJlciAgICBUaGUgdmFsdWUg
dG8gYmUgZm9ybWF0dGVkLgorICAgICAqIEBwYXJhbSBhcHBlbmRUbyAgT3V0cHV0IHBhcmFtZXRl
ciB0byByZWNlaXZlIHJlc3VsdC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBh
cHBlbmRlZCB0byBleGlzdGluZyBjb250ZW50cy4KKyAgICAgKiBAcGFyYW0gcG9zICAgICAgIE9u
IGlucHV0OiBhbiBhbGlnbm1lbnQgZmllbGQsIGlmIGRlc2lyZWQuCisgICAgICogICAgICAgICAg
ICAgICAgICBPbiBvdXRwdXQ6IHRoZSBvZmZzZXRzIG9mIHRoZSBhbGlnbm1lbnQgZmllbGQuCisg
ICAgICogQHJldHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIu
CisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBm
b3JtYXQoaW50NjRfdCBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmllbGRQb3NpdGlvbiYgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CisKICAgICAvKioKICAgICAgKiBGb3JtYXQgYW4g
aW50NjQgbnVtYmVyIHVzaW5nIGJhc2UtMTAgcmVwcmVzZW50YXRpb24uCiAgICAgICogQ3VycmVu
dGx5IHNldHMgc3RhdHVzIHRvIFVfVU5TVVBQT1JURURfRVJST1IKQEAgLTE5MCw3ICsyNzUsNyBA
QCBwdWJsaWM6CiAgICAgICogQHJldHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRv
JyBwYXJhbWV0ZXIuCiAgICAgICogQGludGVybmFsCiAgICAgICovCi0gICAgdmlydHVhbCBVbmlj
b2RlU3RyaW5nJiBmb3JtYXQoY29uc3QgU3RyaW5nUGllY2UgJm51bWJlciwKKyAgICB2aXJ0dWFs
IFVuaWNvZGVTdHJpbmcmIGZvcm1hdChTdHJpbmdQaWVjZSBudW1iZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBwb3NJdGVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29u
c3Q7CkBAIC0yMTksNyArMzA0LDcgQEAgcHVibGljOgogICAgICAqIEZvcm1hdCBhIGRlY2ltYWwg
bnVtYmVyLiBDdXJyZW50bHkgc2V0cyBzdGF0dXMgdG8gVV9VTlNVUFBPUlRFRF9FUlJPUi4KICAg
ICAgKiBUaGUgbnVtYmVyIGlzIGEgRGlnaXRMaXN0IHdyYXBwZXIgb250byBhIGZsb2F0aW5nIHBv
aW50IGRlY2ltYWwgbnVtYmVyLgogICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlu
IE51bWJlckZvcm1hdCBjb252ZXJ0cyB0aGUgZGVjaW1hbCBudW1iZXIKLSAgICAgKiB0byBhIGRv
dWJsZSBhbmQgZm9ybWF0cyB0aGF0LiAgCisgICAgICogdG8gYSBkb3VibGUgYW5kIGZvcm1hdHMg
dGhhdC4KICAgICAgKgogICAgICAqIEBwYXJhbSBudW1iZXIgICAgVGhlIG51bWJlciwgYSBEaWdp
dExpc3QgZm9ybWF0IERlY2ltYWwgRmxvYXRpbmcgUG9pbnQuCiAgICAgICogQHBhcmFtIGFwcGVu
ZFRvICBPdXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0LgpAQCAtMjUyLDcgKzMzNyw3
IEBAIHB1YmxpYzoKICAgICAgKiBDb21wYWN0RGVjaW1hbEZvcm1hdCBkb2VzIG5vdCBzdXBwb3J0
IHBhcnNpbmcuIFRoaXMgaW1wbGVtZW50YXRpb24KICAgICAgKiBzZXRzIHN0YXR1cyB0byBVX1VO
U1VQUE9SVEVEX0VSUk9SCiAgICAgICoKLSAgICAgKiBAcGFyYW0gdGV4dCAgICAgIFVudXNlZC4g
CisgICAgICogQHBhcmFtIHRleHQgICAgICBVbnVzZWQuCiAgICAgICogQHBhcmFtIHJlc3VsdCAg
ICBEb2VzIG5vdCBjaGFuZ2UuCiAgICAgICogQHBhcmFtIHN0YXR1cyAgICBBbHdheXMgc2V0IHRv
IFVfVU5TVVBQT1JURURfRVJST1IuCiAgICAgICogQHN0YWJsZSBJQ1UgNTEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY3VycmFtdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29k
ZS9jdXJyYW10LmgKaW5kZXggYzMzZTZmMWY4MzM4YmRkYjc0N2Q0NjRlZjdmNThlNTM0OWNhMTVh
Zi4uZTMyMWRmODYxZDI1MWZkNTIxNzYyMjlmYWE0NDlhZThiZmI1MmU1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS9jdXJyYW10LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9jdXJyYW10LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5p
Y29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDov
L3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29w
eXJpZ2h0IChjKSAyMDA0LTIwMDYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKQEAg
LTQ0LDcgKzQ2LDcgQEAgY2xhc3MgVV9JMThOX0FQSSBDdXJyZW5jeUFtb3VudDogcHVibGljIE1l
YXN1cmUgewogICAgICAqIGlzIGludmFsaWQsIHRoZW4gdGhpcyB3aWxsIGJlIHNldCB0byBhIGZh
aWxpbmcgdmFsdWUuCiAgICAgICogQHN0YWJsZSBJQ1UgMy4wCiAgICAgICovCi0gICAgQ3VycmVu
Y3lBbW91bnQoY29uc3QgRm9ybWF0dGFibGUmIGFtb3VudCwgY29uc3QgVUNoYXIqIGlzb0NvZGUs
CisgICAgQ3VycmVuY3lBbW91bnQoY29uc3QgRm9ybWF0dGFibGUmIGFtb3VudCwgQ29uc3RDaGFy
MTZQdHIgaXNvQ29kZSwKICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZlYyk7CiAKICAg
ICAvKioKQEAgLTU3LDcgKzU5LDcgQEAgY2xhc3MgVV9JMThOX0FQSSBDdXJyZW5jeUFtb3VudDog
cHVibGljIE1lYXN1cmUgewogICAgICAqIHRoZW4gdGhpcyB3aWxsIGJlIHNldCB0byBhIGZhaWxp
bmcgdmFsdWUuCiAgICAgICogQHN0YWJsZSBJQ1UgMy4wCiAgICAgICovCi0gICAgQ3VycmVuY3lB
bW91bnQoZG91YmxlIGFtb3VudCwgY29uc3QgVUNoYXIqIGlzb0NvZGUsCisgICAgQ3VycmVuY3lB
bW91bnQoZG91YmxlIGFtb3VudCwgQ29uc3RDaGFyMTZQdHIgaXNvQ29kZSwKICAgICAgICAgICAg
ICAgICAgICBVRXJyb3JDb2RlICZlYyk7CiAKICAgICAvKioKQEAgLTExMywxNCArMTE1LDE0IEBA
IGNsYXNzIFVfSTE4Tl9BUEkgQ3VycmVuY3lBbW91bnQ6IHB1YmxpYyBNZWFzdXJlIHsKICAgICAg
KiBSZXR1cm4gdGhlIElTTyBjdXJyZW5jeSBjb2RlIG9mIHRoaXMgb2JqZWN0LgogICAgICAqIEBz
dGFibGUgSUNVIDMuMAogICAgICAqLwotICAgIGlubGluZSBjb25zdCBVQ2hhciogZ2V0SVNPQ3Vy
cmVuY3koKSBjb25zdDsKKyAgICBpbmxpbmUgY29uc3QgY2hhcjE2X3QqIGdldElTT0N1cnJlbmN5
KCkgY29uc3Q7CiB9OwogCiBpbmxpbmUgY29uc3QgQ3VycmVuY3lVbml0JiBDdXJyZW5jeUFtb3Vu
dDo6Z2V0Q3VycmVuY3koKSBjb25zdCB7CiAgICAgcmV0dXJuIChjb25zdCBDdXJyZW5jeVVuaXQm
KSBnZXRVbml0KCk7CiB9CiAKLWlubGluZSBjb25zdCBVQ2hhciogQ3VycmVuY3lBbW91bnQ6Omdl
dElTT0N1cnJlbmN5KCkgY29uc3QgeworaW5saW5lIGNvbnN0IGNoYXIxNl90KiBDdXJyZW5jeUFt
b3VudDo6Z2V0SVNPQ3VycmVuY3koKSBjb25zdCB7CiAgICAgcmV0dXJuIGdldEN1cnJlbmN5KCku
Z2V0SVNPQ3VycmVuY3koKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS9jdXJycGluZi5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9jdXJycGluZi5oCmluZGV4IDlh
ZGU5OWEwOWU1OWFkYTNjY2I2YWNhODExYTRjYmMzZDk1NTk3M2YuLjMzYzE4YjA4ZjI0YzY2Mzlj
MjM3ZWQ2YzA3MzAyOWU4ZTQyNzIyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvY3VycnBpbmYuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2N1cnJwaW5mLmgKQEAg
LTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3Ro
ZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9j
b3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlv
biBhbmQgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNSwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCiAgKiBvdGhlcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqLwpAQCAtMTkxLDYgKzE5
Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRGVjaW1hbEZvcm1h
dDsKKyAgICBmcmllbmQgY2xhc3MgRGVjaW1hbEZvcm1hdEltcGw7CiAKICAgICB2b2lkIGluaXRp
YWxpemUoY29uc3QgTG9jYWxlJiBsb2MsIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY3VycnVuaXQuaCBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvY3VycnVuaXQuaAppbmRleCBkNzk4MzZiYjc0OTUyNjRlYmFiMTkyMTljNjU2Y2Jj
NTI0YWRiY2I3Li41YWQyM2IxZjU4YTNhODVjNTIwOGE5Y2JhYjJmYjI2YzQzY2YyN2ZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2N1cnJ1bml0LmgKKysrIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9jdXJydW5pdC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQg
bGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1
c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCiAqIENvcHlyaWdodCAoYykgMjAwNC0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1h
Y2hpbmVzCkBAIC0yNiw3ICsyOCw3IEBAIFVfTkFNRVNQQUNFX0JFR0lOCiAKIC8qKgogICogQSB1
bml0IG9mIGN1cnJlbmN5LCBzdWNoIGFzIFVTRCAoVS5TLiBkb2xsYXJzKSBvciBKUFkgKEphcGFu
ZXNlCi0gKiB5ZW4pLiAgVGhpcyBjbGFzcyBpcyBhIHRoaW4gd3JhcHBlciBvdmVyIGEgVUNoYXIg
c3RyaW5nIHRoYXQKKyAqIHllbikuICBUaGlzIGNsYXNzIGlzIGEgdGhpbiB3cmFwcGVyIG92ZXIg
YSBjaGFyMTZfdCBzdHJpbmcgdGhhdAogICogc3ViY2xhc3NlcyBNZWFzdXJlVW5pdCwgZm9yIHVz
ZSB3aXRoIE1lYXN1cmUgYW5kIE1lYXN1cmVGb3JtYXQuCiAgKgogICogQGF1dGhvciBBbGFuIExp
dQpAQCAtMzQsNiArMzYsMTIgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAqLwogY2xhc3MgVV9JMThO
X0FQSSBDdXJyZW5jeVVuaXQ6IHB1YmxpYyBNZWFzdXJlVW5pdCB7CiAgcHVibGljOgorICAgIC8q
KgorICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IuICBJbml0aWFsaXplcyBjdXJyZW5jeSBjb2Rl
IHRvICJYWFgiIChubyBjdXJyZW5jeSkuCisgICAgICogQGRyYWZ0IElDVSA2MAorICAgICAqLwor
ICAgIEN1cnJlbmN5VW5pdCgpOworCiAgICAgLyoqCiAgICAgICogQ29uc3RydWN0IGFuIG9iamVj
dCB3aXRoIHRoZSBnaXZlbiBJU08gY3VycmVuY3kgY29kZS4KICAgICAgKiBAcGFyYW0gaXNvQ29k
ZSB0aGUgMy1sZXR0ZXIgSVNPIDQyMTcgY3VycmVuY3kgY29kZTsgbXVzdCBub3QgYmUKQEAgLTQy
LDcgKzUwLDcgQEAgY2xhc3MgVV9JMThOX0FQSSBDdXJyZW5jeVVuaXQ6IHB1YmxpYyBNZWFzdXJl
VW5pdCB7CiAgICAgICogdGhlbiB0aGlzIHdpbGwgYmUgc2V0IHRvIGEgZmFpbGluZyB2YWx1ZS4K
ICAgICAgKiBAc3RhYmxlIElDVSAzLjAKICAgICAgKi8KLSAgICBDdXJyZW5jeVVuaXQoY29uc3Qg
VUNoYXIqIGlzb0NvZGUsIFVFcnJvckNvZGUgJmVjKTsKKyAgICBDdXJyZW5jeVVuaXQoQ29uc3RD
aGFyMTZQdHIgaXNvQ29kZSwgVUVycm9yQ29kZSAmZWMpOwogCiAgICAgLyoqCiAgICAgICogQ29w
eSBjb25zdHJ1Y3RvcgpAQCAtNTAsNiArNTgsMTggQEAgY2xhc3MgVV9JMThOX0FQSSBDdXJyZW5j
eVVuaXQ6IHB1YmxpYyBNZWFzdXJlVW5pdCB7CiAgICAgICovCiAgICAgQ3VycmVuY3lVbml0KGNv
bnN0IEN1cnJlbmN5VW5pdCYgb3RoZXIpOwogCisjaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKKyAg
ICAvKioKKyAgICAgKiBDb3B5IGNvbnN0cnVjdG9yIGZyb20gTWVhc3VyZVVuaXQuIFRoaXMgY29u
c3RydWN0b3IgYWxsb3dzIHlvdSB0bworICAgICAqIHJlc3RvcmUgYSBDdXJyZW5jeVVuaXQgdGhh
dCB3YXMgc2xpY2VkIHRvIE1lYXN1cmVVbml0LgorICAgICAqCisgICAgICogQHBhcmFtIG1lYXN1
cmVVbml0IFRoZSBNZWFzdXJlVW5pdCB0byBjb3B5IGZyb20uCisgICAgICogQHBhcmFtIGVjIFNl
dCB0byBhIGZhaWxpbmcgdmFsdWUgaWYgdGhlIE1lYXN1cmVVbml0IGlzIG5vdCBhIGN1cnJlbmN5
LgorICAgICAqIEBkcmFmdCBJQ1UgNjAKKyAgICAgKi8KKyAgICBDdXJyZW5jeVVuaXQoY29uc3Qg
TWVhc3VyZVVuaXQmIG1lYXN1cmVVbml0LCBVRXJyb3JDb2RlICZlYyk7CisjZW5kaWYgIC8qIFVf
SElERV9EUkFGVF9BUEkgKi8KKwogICAgIC8qKgogICAgICAqIEFzc2lnbm1lbnQgb3BlcmF0b3IK
ICAgICAgKiBAc3RhYmxlIElDVSAzLjAKQEAgLTkxLDE2ICsxMTEsMTYgQEAgY2xhc3MgVV9JMThO
X0FQSSBDdXJyZW5jeVVuaXQ6IHB1YmxpYyBNZWFzdXJlVW5pdCB7CiAgICAgICogUmV0dXJuIHRo
ZSBJU08gY3VycmVuY3kgY29kZSBvZiB0aGlzIG9iamVjdC4KICAgICAgKiBAc3RhYmxlIElDVSAz
LjAKICAgICAgKi8KLSAgICBpbmxpbmUgY29uc3QgVUNoYXIqIGdldElTT0N1cnJlbmN5KCkgY29u
c3Q7CisgICAgaW5saW5lIGNvbnN0IGNoYXIxNl90KiBnZXRJU09DdXJyZW5jeSgpIGNvbnN0Owog
CiAgcHJpdmF0ZToKICAgICAvKioKICAgICAgKiBUaGUgSVNPIDQyMTcgY29kZSBvZiB0aGlzIG9i
amVjdC4KICAgICAgKi8KLSAgICBVQ2hhciBpc29Db2RlWzRdOworICAgIGNoYXIxNl90IGlzb0Nv
ZGVbNF07CiB9OwogCi1pbmxpbmUgY29uc3QgVUNoYXIqIEN1cnJlbmN5VW5pdDo6Z2V0SVNPQ3Vy
cmVuY3koKSBjb25zdCB7CitpbmxpbmUgY29uc3QgY2hhcjE2X3QqIEN1cnJlbmN5VW5pdDo6Z2V0
SVNPQ3VycmVuY3koKSBjb25zdCB7CiAgICAgcmV0dXJuIGlzb0NvZGU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZGF0ZWZtdC5oIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9kYXRlZm10LmgKaW5kZXggOTgzZjEzNjM1YzVhYzQ3YjdmMjZkOGZhNzdjNjU2MmQ5Njk1
ZTA3Zi4uM2RhMDc5N2EwOWJkZGI4NjUzMTYxY2I4NmEwZGVhMTlmOWM3ZjcyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9kYXRlZm10LmgKKysrIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9kYXRlZm10LmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgotICogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNp
bmVzcyBNYWNoaW5lcworICogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcwogICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTU3MSw3ICs1
NzMsMjAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVTdHlsZSB0aW1lU3R5bGUgPSBrRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2NhbGUmIGFMb2NhbGUgPSBMb2NhbGU6
OmdldERlZmF1bHQoKSk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQorI2lmbmRlZiBVX0hJ
REVfSU5URVJOQUxfQVBJCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYmVzdCBwYXR0ZXJu
IGdpdmVuIGEgc2tlbGV0b24gYW5kIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gbG9jYWxlIHRoZSBs
b2NhbGUKKyAgICAgKiBAcGFyYW0gc2tlbGV0b24gdGhlIHNrZWxldG9uCisgICAgICogQHBhcmFt
IHN0YXR1cyBJQ1UgZXJyb3IgcmV0dXJuZWQgaGVyZQorICAgICAqIEByZXR1cm4gdGhlIGJlc3Qg
cGF0dGVybi4KKyAgICAgKiBAaW50ZXJuYWwgRm9yIElDVSB1c2Ugb25seS4KKyAgICAgKi8KKyAg
ICBzdGF0aWMgVW5pY29kZVN0cmluZyBnZXRCZXN0UGF0dGVybigKKyAgICAgICAgICAgIGNvbnN0
IExvY2FsZSAmbG9jYWxlLAorICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyAmc2tlbGV0
b24sCisgICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpOworI2VuZGlmICAvKiBVX0hJREVf
SU5URVJOQUxfQVBJICovCiAKICAgICAvKioKICAgICAgKiBDcmVhdGVzIGEgZGF0ZS90aW1lIGZv
cm1hdHRlciBmb3IgdGhlIGdpdmVuIHNrZWxldG9uIGFuZCAKQEAgLTU4NCw3ICs1OTksNyBAQCBw
dWJsaWM6CiAgICAgICogICAgICAgICAgICAgICAgIG9yZGVyIGZvciB0aGF0IGxvY2FsZS4KICAg
ICAgKiBAcGFyYW0gc3RhdHVzICAgQW55IGVycm9yIHJldHVybmVkIGhlcmUuCiAgICAgICogQHJl
dHVybiAgICAgICAgIEEgZGF0ZS90aW1lIGZvcm1hdHRlciB3aGljaCB0aGUgY2FsbGVyIG93bnMu
Ci0gICAgICogQGRyYWZ0IElDVSA1NQorICAgICAqIEBzdGFibGUgSUNVIDU1CiAgICAgICovCiAg
ICAgc3RhdGljIERhdGVGb3JtYXQqIFVfRVhQT1JUMiBjcmVhdGVJbnN0YW5jZUZvclNrZWxldG9u
KAogICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc2tlbGV0b24sCkBAIC02MDEsNyAr
NjE2LDcgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSBsb2NhbGUgIFRoZSBnaXZlbiBsb2NhbGUu
CiAgICAgICogQHBhcmFtIHN0YXR1cyAgIEFueSBlcnJvciByZXR1cm5lZCBoZXJlLgogICAgICAq
IEByZXR1cm4gICAgICAgICBBIGRhdGUvdGltZSBmb3JtYXR0ZXIgd2hpY2ggdGhlIGNhbGxlciBv
d25zLgotICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBAc3RhYmxlIElDVSA1NQogICAgICAq
LwogICAgIHN0YXRpYyBEYXRlRm9ybWF0KiBVX0VYUE9SVDIgY3JlYXRlSW5zdGFuY2VGb3JTa2Vs
ZXRvbigKICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNrZWxldG9uLApAQCAtNjIw
LDcgKzYzNSw3IEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gbG9jYWxlICBUaGUgZ2l2ZW4gbG9j
YWxlLgogICAgICAqIEBwYXJhbSBzdGF0dXMgICBBbnkgZXJyb3IgcmV0dXJuZWQgaGVyZS4KICAg
ICAgKiBAcmV0dXJuICAgICAgICAgQSBkYXRlL3RpbWUgZm9ybWF0dGVyIHdoaWNoIHRoZSBjYWxs
ZXIgb3ducy4KLSAgICAgKiBAZHJhZnQgSUNVIDU1CisgICAgICogQHN0YWJsZSBJQ1UgNTUKICAg
ICAgKi8KICAgICBzdGF0aWMgRGF0ZUZvcm1hdCogVV9FWFBPUlQyIGNyZWF0ZUluc3RhbmNlRm9y
U2tlbGV0b24oCiAgICAgICAgICAgICBDYWxlbmRhciAqY2FsZW5kYXJUb0Fkb3B0LApAQCAtNjI4
LDQyICs2NDMsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb25zdCBMb2NhbGUgJmxvY2FsZSwK
ICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJB
RlRfQVBJICovCi0KLSNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSSAKLQotICAgIC8qKgotICAg
ICAqIENyZWF0ZXMgYSBkYXRlL3RpbWUgZm9ybWF0dGVyIGZvciB0aGUgZ2l2ZW4gc2tlbGV0b24g
YW5kIGxvY2FsZSBhbmQKLSAgICAgKiB1c2VzIHRoZSBnaXZlbiBEYXRlVGltZVBhdHRlcm5HZW5l
cmF0b3IgdG8gY29udmVydCB0aGUgc2tlbGV0b24gdG8KLSAgICAgKiBhIGZvcm1hdCBwYXR0ZXJu
LiBBcyBjcmVhdGluZyBhIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvciBpcwotICAgICAqIGV4cGVu
c2l2ZSwgY2FsbGVycyBjYW4gc3VwcGx5IGl0IGhlcmUgKGlmIHRoZXkgYWxyZWFkeSBoYXZlIGl0
KSB0byBzYXZlCi0gICAgICogdGhpcyBtZXRob2QgZnJvbSBjcmVhdGluZyBpdHMgb3duLgotICAg
ICAqCi0gICAgICogQHBhcmFtIHNrZWxldG9uIFRoZSBza2VsZXRvbiBlLmcgInlNTU1NZC4iIEZp
ZWxkcyBpbiB0aGUgc2tlbGV0b24gY2FuCi0gICAgICogICAgICAgICAgICAgICAgIGJlIGluIGFu
eSBvcmRlciwgYW5kIHRoaXMgbWV0aG9kIHVzZXMgdGhlIHByb3ZpZGVkCi0gICAgICogICAgICAg
ICAgICAgICAgIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvciB0byBtYXAgdGhlIHNrZWxldG9uIHRv
IGEKLSAgICAgKiAgICAgICAgICAgICAgICAgcGF0dGVybiB0aGF0IGluY2x1ZGVzIGFwcHJvcHJp
YXRlIHNlcGFyYXRvcnMgd2l0aAotICAgICAqICAgICAgICAgICAgICAgICB0aGUgZmllbGRzIGlu
IHRoZSBhcHByb3ByaWF0ZSBvcmRlci4KLSAgICAgKiBAcGFyYW0gbG9jYWxlICBUaGUgZ2l2ZW4g
bG9jYWxlLgotICAgICAqIEBwYXJhbSBkcG5nICAgICBUaGUgdXNlciBzdXBwbGllZCBEYXRlVGlt
ZVBhdHRlcm5HZW5lcmF0b3IuIGRwbmcKLSAgICAgKiAgICAgICAgICAgICAgICAgbXVzdCBiZSBj
cmVhdGVkIGZvciB0aGUgc2FtZSBsb2NhbGUgYXMgbG9jYWxlLgotICAgICAqICAgICAgICAgICAg
ICAgICBNb3Jlb3ZlciwgdGhlIGNhbGxlciBtdXN0IG5vdCBtb2RpZnkgZHBuZyBiZXR3ZWVuCi0g
ICAgICogICAgICAgICAgICAgICAgIGNyZWF0aW5nIGl0IGJ5IGxvY2FsZSBhbmQgY2FsbGluZyB0
aGlzIG1ldGhvZC4KLSAgICAgKiAgICAgICAgICAgICAgICAgQWx0aG91Z2ggZHBuZyBpcyBhIG5v
bi1jb25zdCByZWZlcmVuY2UsIHRoZSBjYWxsZXIKLSAgICAgKiAgICAgICAgICAgICAgICAgbXVz
dCBub3QgcmVnYXJkIGl0IGFzIGFuIG91dCBvciBpbi1vdXQgcGFyYW1ldGVyLgotICAgICAqICAg
ICAgICAgICAgICAgICBUaGUgb25seSByZWFzb24gZHBuZyBpcyBhIG5vbi1jb25zdCByZWZlcmVu
Y2UgaXMKLSAgICAgKiAgICAgICAgICAgICAgICAgYmVjYXVzZSBpdHMgbWV0aG9kLCBnZXRCZXN0
UGF0dGVybiwgd2hpY2ggY29udmVydHMKLSAgICAgKiAgICAgICAgICAgICAgICAgYSBza2VsZXRv
biB0byBhIGRhdGUgZm9ybWF0IHBhdHRlcm4gaXMgbm9uLWNvbnN0LgotICAgICAqIEByZXR1cm4g
ICAgICAgICBBIGRhdGUvdGltZSBmb3JtYXR0ZXIgd2hpY2ggdGhlIGNhbGxlciBvd25zLgotICAg
ICAqIEBpbnRlcm5hbCBGb3IgSUNVIHVzZSBvbmx5Ci0gICAgICovCi0gICAgc3RhdGljIERhdGVG
b3JtYXQqIFVfRVhQT1JUMiBpbnRlcm5hbENyZWF0ZUluc3RhbmNlRm9yU2tlbGV0b24oCi0gICAg
ICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBza2VsZXRvbiwKLSAgICAgICAgICAgIGNvbnN0
IExvY2FsZSAmbG9jYWxlLAotICAgICAgICAgICAgRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yICZk
cG5nLAotICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVzKTsKLQotI2VuZGlmIC8qIFVfSElE
RV9JTlRFUk5BTF9BUEkgKi8KIAogICAgIC8qKgogICAgICAqIEdldHMgdGhlIHNldCBvZiBsb2Nh
bGVzIGZvciB3aGljaCBEYXRlRm9ybWF0cyBhcmUgaW5zdGFsbGVkLgpAQCAtODg3LDYgKzg2Niw3
IEBAIHByb3RlY3RlZDoKIAogCiBwcml2YXRlOgorCiAgICAgLyoqCiAgICAgICogR2V0cyB0aGUg
ZGF0ZS90aW1lIGZvcm1hdHRlciB3aXRoIHRoZSBnaXZlbiBmb3JtYXR0aW5nIHN0eWxlcyBmb3Ig
dGhlCiAgICAgICogZ2l2ZW4gbG9jYWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9kYmJpLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RiYmkuaAppbmRleCA3MTg3YzNj
MjBmOTgyMzY0OGU1ZjMzZjI4OWU0MTU3MDI1Y2Y0MTE0Li5hMmMzZDdkNzUyMzJlNDhkNjNiOGU4
MjAzMTc3OWQ4MjIwOGU1M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2Ri
YmkuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RiYmkuaApAQCAtMSwzICsxLDUgQEAK
Ky8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNl
bnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1s
CiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMTk5OS0yMDA2LDIwMTMgSUJN
IENvcnAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL2RjZm10c3ltLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RjZm10c3ltLmgKaW5k
ZXggNDZlZjIyMjQxYjMxYzU4Nzg5NDY1ZWU5NDFiNDQwMzZmNTFiY2Q5YS4uNGRjNmY5NTBmMjk0
Y2E0MjRhOTNlMjIxNzIwNzY3MjgwZmE0MzllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9kY2ZtdHN5bS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZGNmbXRzeW0u
aApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSogICBDb3B5
cmlnaHQgKEMpIDE5OTctMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAg
IENvcHlyaWdodCAoQykgMTk5Ny0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVz
CiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgogKgpAQCAtMzIsNyArMzQsOSBAQAogCiAjaW5jbHVkZSAidW5p
Y29kZS91b2JqZWN0LmgiCiAjaW5jbHVkZSAidW5pY29kZS9sb2NpZC5oIgorI2luY2x1ZGUgInVu
aWNvZGUvbnVtc3lzLmgiCiAjaW5jbHVkZSAidW5pY29kZS91bnVtLmgiCisjaW5jbHVkZSAidW5p
Y29kZS91bmlzdHIuaCIKIAogLyoqCiAgKiBcZmlsZQpAQCAtMTYzLDEyICsxNjcsMTAgQEAgcHVi
bGljOgogICAgICAgICAgKiBAc3RhYmxlIElDVSA0LjYKICAgICAgICAgICovCiAgICAgICAgIGtO
aW5lRGlnaXRTeW1ib2wsCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAgICAgLyoqIE11
bHRpcGxpY2F0aW9uIHNpZ24uCi0gICAgICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgICAgICog
QHN0YWJsZSBJQ1UgNTQKICAgICAgICAgICovCiAgICAgICAgIGtFeHBvbmVudE11bHRpcGxpY2F0
aW9uU3ltYm9sLAotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAgICAgICAgIC8qKiBj
b3VudCBzeW1ib2wgY29uc3RhbnRzICovCiAgICAgICAgIGtGb3JtYXRTeW1ib2xDb3VudCA9IGtO
aW5lRGlnaXRTeW1ib2wgKyAyCiAgICAgfTsKQEAgLTE4Myw2ICsxODUsMjYgQEAgcHVibGljOgog
ICAgICAqLwogICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzKGNvbnN0IExvY2FsZSYgbG9jYWxlLCBV
RXJyb3JDb2RlJiBzdGF0dXMpOwogCisjaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKKyAgICAvKioK
KyAgICAgKiBDcmVhdGVzIGEgRGVjaW1hbEZvcm1hdFN5bWJvbHMgaW5zdGFuY2UgZm9yIHRoZSBn
aXZlbiBsb2NhbGUgd2l0aCBkaWdpdHMgYW5kIHN5bWJvbHMKKyAgICAgKiBjb3JyZXNwb25kaW5n
IHRvIHRoZSBnaXZlbiBOdW1iZXJpbmdTeXN0ZW0uCisgICAgICoKKyAgICAgKiBUaGlzIGNvbnN0
cnVjdG9yIGJlaGF2ZXMgZXF1aXZhbGVudGx5IHRvIHRoZSBub3JtYWwgY29uc3RydWN0b3IgY2Fs
bGVkIHdpdGggYSBsb2NhbGUgaGF2aW5nIGEKKyAgICAgKiAibnVtYmVycz14eHh4IiBrZXl3b3Jk
IHNwZWNpZnlpbmcgdGhlIG51bWJlcmluZyBzeXN0ZW0gYnkgbmFtZS4KKyAgICAgKgorICAgICAq
IEluIHRoaXMgY29uc3RydWN0b3IsIHRoZSBOdW1iZXJpbmdTeXN0ZW0gYXJndW1lbnQgd2lsbCBi
ZSB1c2VkIGV2ZW4gaWYgdGhlIGxvY2FsZSBoYXMgaXRzIG93bgorICAgICAqICJudW1iZXJzPXh4
eHgiIGtleXdvcmQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbG9jYWxlICAgIFRoZSBsb2NhbGUg
dG8gZ2V0IHN5bWJvbHMgZm9yLgorICAgICAqIEBwYXJhbSBucyAgICAgICAgVGhlIG51bWJlcmlu
ZyBzeXN0ZW0uCisgICAgICogQHBhcmFtIHN0YXR1cyAgICBJbnB1dC9vdXRwdXQgcGFyYW1ldGVy
LCBzZXQgdG8gc3VjY2VzcyBvcgorICAgICAqICAgICAgICAgICAgICAgICAgZmFpbHVyZSBjb2Rl
IHVwb24gcmV0dXJuLgorICAgICAqIEBkcmFmdCBJQ1UgNjAKKyAgICAgKi8KKyAgICBEZWNpbWFs
Rm9ybWF0U3ltYm9scyhjb25zdCBMb2NhbGUmIGxvY2FsZSwgY29uc3QgTnVtYmVyaW5nU3lzdGVt
JiBucywgVUVycm9yQ29kZSYgc3RhdHVzKTsKKyNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAq
LworCiAgICAgLyoqCiAgICAgICogQ3JlYXRlIGEgRGVjaW1hbEZvcm1hdFN5bWJvbHMgb2JqZWN0
IGZvciB0aGUgZGVmYXVsdCBsb2NhbGUuCiAgICAgICogVGhpcyBjb25zdHJ1Y3RvciB3aWxsIG5v
dCBmYWlsLiAgSWYgdGhlIHJlc291cmNlIGZpbGUgZGF0YSBpcwpAQCAtMzQ1LDggKzM2NywxMSBA
QCBwcml2YXRlOgogICAgICAqIEBwYXJhbSBzdWNjZXNzICAgICAgICAgICAgICBJbnB1dC9vdXRw
dXQgcGFyYW1ldGVyLCBzZXQgdG8gc3VjY2VzcyBvcgogICAgICAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWlsdXJlIGNvZGUgdXBvbiByZXR1cm4uCiAgICAgICogQHBhcmFtIHVzZUxh
c3RSZXNvcnREYXRhICAgIGRldGVybWluZSBpZiB1c2UgbGFzdCByZXNvcnQgZGF0YQorICAgICAq
IEBwYXJhbSBucyAgICAgICAgICAgICAgICAgICBUaGUgTnVtYmVyaW5nU3lzdGVtIHRvIHVzZTsg
b3RoZXJ3aXNlLCBmYWxsCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sg
dG8gdGhlIGxvY2FsZS4KICAgICAgKi8KLSAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgTG9jYWxl
JiBsb2NhbGUsIFVFcnJvckNvZGUmIHN1Y2Nlc3MsIFVCb29sIHVzZUxhc3RSZXNvcnREYXRhID0g
RkFMU0UpOworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBMb2NhbGUmIGxvY2FsZSwgVUVycm9y
Q29kZSYgc3VjY2VzcywKKyAgICAgICAgVUJvb2wgdXNlTGFzdFJlc29ydERhdGEgPSBGQUxTRSwg
Y29uc3QgTnVtYmVyaW5nU3lzdGVtKiBucyA9IG51bGxwdHIpOwogCiAgICAgLyoqCiAgICAgICog
SW5pdGlhbGl6ZSB0aGUgc3ltYm9scyB3aXRoIGRlZmF1bHQgdmFsdWVzLgpAQCAtMzU2LDYgKzM4
MSwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q3VycmVuY3lGb3JTeW1ib2xzKCk7CiAKIHB1
YmxpYzoKKworI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCisgICAgLyoqCisgICAgICogQGlu
dGVybmFsIEZvciBJQ1UgdXNlIG9ubHkKKyAgICAgKi8KKyAgICBpbmxpbmUgVUJvb2wgaXNDdXN0
b21DdXJyZW5jeVN5bWJvbCgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGZJc0N1c3RvbUN1cnJl
bmN5U3ltYm9sOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBpbnRlcm5hbCBGb3IgSUNVIHVz
ZSBvbmx5CisgICAgICovCisgICAgaW5saW5lIFVCb29sIGlzQ3VzdG9tSW50bEN1cnJlbmN5U3lt
Ym9sKCkgY29uc3QgeworICAgICAgICByZXR1cm4gZklzQ3VzdG9tSW50bEN1cnJlbmN5U3ltYm9s
OworICAgIH0KKyNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLworCiAgICAgLyoqCiAg
ICAgICogX0ludGVybmFsXyBmdW5jdGlvbiAtIG1vcmUgZWZmaWNpZW50IHZlcnNpb24gb2YgZ2V0
U3ltYm9sLAogICAgICAqIHJldHVybmluZyBhIGNvbnN0IHJlZmVyZW5jZSB0byBvbmUgb2YgdGhl
IHN5bWJvbCBzdHJpbmdzLgpAQCAtMzc1LDcgKzQxNyw3IEBAIHB1YmxpYzoKICAgICAgKiBSZXR1
cm5zIHRoYXQgcGF0dGVybiBzdG9yZWQgaW4gY3VycmVjeSBpbmZvLiBJbnRlcm5hbCBBUEkgZm9y
IHVzZSBieSBOdW1iZXJGb3JtYXQgQVBJLgogICAgICAqIEBpbnRlcm5hbAogICAgICAqLwotICAg
IGlubGluZSBjb25zdCBVQ2hhciogZ2V0Q3VycmVuY3lQYXR0ZXJuKHZvaWQpIGNvbnN0OworICAg
IGlubGluZSBjb25zdCBjaGFyMTZfdCogZ2V0Q3VycmVuY3lQYXR0ZXJuKHZvaWQpIGNvbnN0Owog
I2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCiAKIHByaXZhdGU6CkBAIC00MDYsMTAg
KzQ0OCwxMiBAQCBwcml2YXRlOgogCiAgICAgY2hhciBhY3R1YWxMb2NhbGVbVUxPQ19GVUxMTkFN
RV9DQVBBQ0lUWV07CiAgICAgY2hhciB2YWxpZExvY2FsZVtVTE9DX0ZVTExOQU1FX0NBUEFDSVRZ
XTsKLSAgICBjb25zdCBVQ2hhciogY3VyclBhdHRlcm47CisgICAgY29uc3QgY2hhcjE2X3QqIGN1
cnJQYXR0ZXJuOwogCiAgICAgVW5pY29kZVN0cmluZyBjdXJyZW5jeVNwY0JlZm9yZVN5bVtVTlVN
X0NVUlJFTkNZX1NQQUNJTkdfQ09VTlRdOwogICAgIFVuaWNvZGVTdHJpbmcgY3VycmVuY3lTcGNB
ZnRlclN5bVtVTlVNX0NVUlJFTkNZX1NQQUNJTkdfQ09VTlRdOworICAgIFVCb29sIGZJc0N1c3Rv
bUN1cnJlbmN5U3ltYm9sOworICAgIFVCb29sIGZJc0N1c3RvbUludGxDdXJyZW5jeVN5bWJvbDsK
IH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQyNSw4
ICs0NjksNyBAQCBEZWNpbWFsRm9ybWF0U3ltYm9sczo6Z2V0U3ltYm9sKEVOdW1iZXJGb3JtYXRT
eW1ib2wgc3ltYm9sKSBjb25zdCB7CiAgICAgcmV0dXJuICpzdHJQdHI7CiB9CiAKLS8vI2lmbmRl
ZiBVX0hJREVfSU5URVJOQUxfQVBJCi0vLyBTZWUgY29tbWVudHMgYWJvdmUgZm9yIHRoaXMgZnVu
Y3Rpb24uIE5vdCBoaWRkZW4uCisvLyBTZWUgY29tbWVudHMgYWJvdmUgZm9yIHRoaXMgZnVuY3Rp
b24uIE5vdCBoaWRkZW4gd2l0aCAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKIGlubGluZSBj
b25zdCBVbmljb2RlU3RyaW5nICYKIERlY2ltYWxGb3JtYXRTeW1ib2xzOjpnZXRDb25zdFN5bWJv
bChFTnVtYmVyRm9ybWF0U3ltYm9sIHN5bWJvbCkgY29uc3QgewogICAgIGNvbnN0IFVuaWNvZGVT
dHJpbmcgKnN0clB0cjsKQEAgLTQzOCwxMyArNDgxLDE2IEBAIERlY2ltYWxGb3JtYXRTeW1ib2xz
OjpnZXRDb25zdFN5bWJvbChFTnVtYmVyRm9ybWF0U3ltYm9sIHN5bWJvbCkgY29uc3QgewogICAg
IHJldHVybiAqc3RyUHRyOwogfQogCi0vLyNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAq
LwotCi0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5l
IHZvaWQKIERlY2ltYWxGb3JtYXRTeW1ib2xzOjpzZXRTeW1ib2woRU51bWJlckZvcm1hdFN5bWJv
bCBzeW1ib2wsIGNvbnN0IFVuaWNvZGVTdHJpbmcgJnZhbHVlLCBjb25zdCBVQm9vbCBwcm9wb2dh
dGVEaWdpdHMgPSBUUlVFKSB7CisgICAgaWYgKHN5bWJvbCA9PSBrQ3VycmVuY3lTeW1ib2wpIHsK
KyAgICAgICAgZklzQ3VzdG9tQ3VycmVuY3lTeW1ib2wgPSBUUlVFOworICAgIH0KKyAgICBlbHNl
IGlmIChzeW1ib2wgPT0ga0ludGxDdXJyZW5jeVN5bWJvbCkgeworICAgICAgICBmSXNDdXN0b21J
bnRsQ3VycmVuY3lTeW1ib2wgPSBUUlVFOworICAgIH0KICAgICBpZihzeW1ib2w8a0Zvcm1hdFN5
bWJvbENvdW50KSB7CiAgICAgICAgIGZTeW1ib2xzW3N5bWJvbF09dmFsdWU7CiAgICAgfQpAQCAt
NDcwLDcgKzUxNiw3IEBAIERlY2ltYWxGb3JtYXRTeW1ib2xzOjpnZXRMb2NhbGUoKSBjb25zdCB7
CiB9CiAKICNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQotaW5saW5lIGNvbnN0IFVDaGFyKgor
aW5saW5lIGNvbnN0IGNoYXIxNl90KgogRGVjaW1hbEZvcm1hdFN5bWJvbHM6OmdldEN1cnJlbmN5
UGF0dGVybigpIGNvbnN0IHsKICAgICByZXR1cm4gY3VyclBhdHRlcm47CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RlY2ltZm10LmggYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL2RlY2ltZm10LmgKaW5kZXggMTM4ODU1YmYwODUzZWVlZmY1Njg0Nzc2YmFjZjE5MDMwYTRm
NjYwNC4uNzkwMDUzNjM2ZDU5NTczZmY4YzQ3ZjUzZWY3MDZhYjA1MDk0ODU0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9kZWNpbWZtdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvZGVjaW1mbXQuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVy
OiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBo
dHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNp
bmVzcyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDE2LCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtNDEsNiArNDMsNyBA
QAogI2luY2x1ZGUgInVuaWNvZGUvY3VycmFtdC5oIgogI2luY2x1ZGUgInVuaWNvZGUvZW51bXNl
dC5oIgogCisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKIC8qKgogICogXGRlZiBVTlVNX0RF
Q0lNQUxGT1JNQVRfSU5URVJOQUxfU0laRQogICogQGludGVybmFsCkBAIC00OCwxNyArNTEsMjAg
QEAKICNpZiBVQ09ORklHX0ZPUk1BVF9GQVNUUEFUSFNfNDkKICNkZWZpbmUgVU5VTV9ERUNJTUFM
Rk9STUFUX0lOVEVSTkFMX1NJWkUgMTYKICNlbmRpZgorI2VuZGlmICAvKiBVX0hJREVfSU5URVJO
QUxfQVBJICovCiAKIFVfTkFNRVNQQUNFX0JFR0lOCiAKIGNsYXNzIERpZ2l0TGlzdDsKLWNsYXNz
IENob2ljZUZvcm1hdDsKIGNsYXNzIEN1cnJlbmN5UGx1cmFsSW5mbzsKIGNsYXNzIEhhc2h0YWJs
ZTsKIGNsYXNzIFVuaWNvZGVTZXQ7CiBjbGFzcyBGaWVsZFBvc2l0aW9uSGFuZGxlcjsKIGNsYXNz
IERlY2ltYWxGb3JtYXRTdGF0aWNTZXRzOwogY2xhc3MgRml4ZWREZWNpbWFsOworY2xhc3MgRGVj
aW1hbEZvcm1hdEltcGw7CitjbGFzcyBQbHVyYWxSdWxlczsKK2NsYXNzIFZpc2libGVEaWdpdHNX
aXRoRXhwb25lbnQ7CiAKIC8vIGV4cGxpY2l0IHRlbXBsYXRlIGluc3RhbnRpYXRpb24uIHNlZSBk
aWdpdGxzdC5oCiAjaWYgZGVmaW5lZCAoX01TQ19WRVIpCkBAIC01OTgsNyArNjA0LDcgQEAgdGVt
cGxhdGUgY2xhc3MgVV9JMThOX0FQSSAgICBFbnVtU2V0PFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUs
CiAgKiBpbmNsdWRpbmcgcHJlZml4IGFuZCBzdWZmaXgsIGRldGVybWluZXMgdGhlIGZvcm1hdCB3
aWR0aC4gIEZvciBleGFtcGxlLCBpbgogICogdGhlIHBhdHRlcm4gPGNvZGU+IiogIzAgbycnY2xv
Y2siPC9jb2RlPiwgdGhlIGZvcm1hdCB3aWR0aCBpcyAxMC4KICAqCi0gKiA8bGk+VGhlIHdpZHRo
IGlzIGNvdW50ZWQgaW4gMTYtYml0IGNvZGUgdW5pdHMgKFVDaGFycykuCisgKiA8bGk+VGhlIHdp
ZHRoIGlzIGNvdW50ZWQgaW4gMTYtYml0IGNvZGUgdW5pdHMgKGNoYXIxNl90cykuCiAgKgogICog
PGxpPlNvbWUgcGFyYW1ldGVycyB3aGljaCB1c3VhbGx5IGRvIG5vdCBtYXR0ZXIgaGF2ZSBtZWFu
aW5nIHdoZW4gcGFkZGluZyBpcwogICogdXNlZCwgYmVjYXVzZSB0aGUgcGF0dGVybiB3aWR0aCBp
cyBzaWduaWZpY2FudCB3aXRoIHBhZGRpbmcuICBJbiB0aGUgcGF0dGVybgpAQCAtNjYyLDI4ICs2
NjgsNiBAQCB0ZW1wbGF0ZSBjbGFzcyBVX0kxOE5fQVBJICAgIEVudW1TZXQ8VU51bWJlckZvcm1h
dEF0dHJpYnV0ZSwKICAqLwogY2xhc3MgVV9JMThOX0FQSSBEZWNpbWFsRm9ybWF0OiBwdWJsaWMg
TnVtYmVyRm9ybWF0IHsKIHB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBSb3VuZGluZyBtb2RlLgot
ICAgICAqIEBzdGFibGUgSUNVIDIuNAotICAgICAqLwotICAgIGVudW0gRVJvdW5kaW5nTW9kZSB7
Ci0gICAgICAgIGtSb3VuZENlaWxpbmcsICAvKio8IFJvdW5kIHRvd2FyZHMgcG9zaXRpdmUgaW5m
aW5pdHkgKi8KLSAgICAgICAga1JvdW5kRmxvb3IsICAgIC8qKjwgUm91bmQgdG93YXJkcyBuZWdh
dGl2ZSBpbmZpbml0eSAqLwotICAgICAgICBrUm91bmREb3duLCAgICAgLyoqPCBSb3VuZCB0b3dh
cmRzIHplcm8gKi8KLSAgICAgICAga1JvdW5kVXAsICAgICAgIC8qKjwgUm91bmQgYXdheSBmcm9t
IHplcm8gKi8KLSAgICAgICAga1JvdW5kSGFsZkV2ZW4sIC8qKjwgUm91bmQgdG93YXJkcyB0aGUg
bmVhcmVzdCBpbnRlZ2VyLCBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3dhcmRz
IHRoZSBuZWFyZXN0IGV2ZW4gaW50ZWdlciBpZiBlcXVpZGlzdGFudCAqLwotICAgICAgICBrUm91
bmRIYWxmRG93biwgLyoqPCBSb3VuZCB0b3dhcmRzIHRoZSBuZWFyZXN0IGludGVnZXIsIG9yCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvd2FyZHMgemVybyBpZiBlcXVpZGlzdGFudCAq
LwotICAgICAgICBrUm91bmRIYWxmVXAsICAgLyoqPCBSb3VuZCB0b3dhcmRzIHRoZSBuZWFyZXN0
IGludGVnZXIsIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YXkgZnJvbSB6ZXJv
IGlmIGVxdWlkaXN0YW50ICovCi0gICAgICAgIC8qKgotICAgICAgICAgICogIFJldHVybiBVX0ZP
Uk1BVF9JTkVYQUNUX0VSUk9SIGlmIG51bWJlciBkb2VzIG5vdCBmb3JtYXQgZXhhY3RseS4KLSAg
ICAgICAgICAqICBAc3RhYmxlIElDVSA0LjgKLSAgICAgICAgICAqLwotICAgICAgICBrUm91bmRV
bm5lY2Vzc2FyeQotICAgIH07Ci0KICAgICAvKioKICAgICAgKiBQYWQgcG9zaXRpb24uCiAgICAg
ICogQHN0YWJsZSBJQ1UgMi40CkBAIC04MDMsNyArNzg3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgaW50MzJfdCBnZXRBdHRyaWJ1dGUoIFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUgYXR0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpIGNvbnN0
OwogCi0gICAgCisKICAgICAvKioKICAgICAgKiBTZXQgd2hldGhlciBvciBub3QgZ3JvdXBpbmcg
d2lsbCBiZSB1c2VkIGluIHRoaXMgZm9ybWF0LgogICAgICAqIEBwYXJhbSBuZXdWYWx1ZSAgICBU
cnVlLCBncm91cGluZyB3aWxsIGJlIHVzZWQgaW4gdGhpcyBmb3JtYXQuCkBAIC04MjcsNyArODEx
LDcgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgVURpc3BsYXlDb250ZXh0IHZh
bHVlIHRvIHNldC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElucHV0L291dHB1dCBzdGF0dXMuIElm
IGF0IGVudHJ5IHRoaXMgaW5kaWNhdGVzIGEgZmFpbHVyZQogICAgICAqICAgICAgICAgICAgICAg
c3RhdHVzLCB0aGUgZnVuY3Rpb24gd2lsbCBkbyBub3RoaW5nOyBvdGhlcndpc2UgdGhpcyB3aWxs
IGJlCi0gICAgICogICAgICAgICAgICAgICB1cGRhdGVkIHdpdGggYW55IG5ldyBzdGF0dXMgZnJv
bSB0aGUgZnVuY3Rpb24uIAorICAgICAqICAgICAgICAgICAgICAgdXBkYXRlZCB3aXRoIGFueSBu
ZXcgc3RhdHVzIGZyb20gdGhlIGZ1bmN0aW9uLgogICAgICAqIEBzdGFibGUgSUNVIDUzCiAgICAg
ICovCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHQoVURpc3BsYXlDb250ZXh0IHZhbHVlLCBV
RXJyb3JDb2RlJiBzdGF0dXMpOwpAQCAtOTY0LDcgKzk0OCw3IEBAIHB1YmxpYzoKICAgICAgKiAg
ICAgICAgICAgICAgICAgIENhbiBiZSBOVUxMLgogICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0
cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCiAgICAgICogQHJl
dHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCi0gICAgICog
QHN0YWJsZSA0LjQKKyAgICAgKiBAc3RhYmxlIElDVSA0LjQKICAgICAgKi8KICAgICB2aXJ0dWFs
IFVuaWNvZGVTdHJpbmcmIGZvcm1hdChkb3VibGUgbnVtYmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLApAQCAtMTAxMyw3ICs5OTcs
NyBAQCBwdWJsaWM6CiAgICAgICogICAgICAgICAgICAgICAgICBDYW4gYmUgTlVMTC4KICAgICAg
KiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBmaWxsZWQgd2l0aCBzdWNjZXNzL2ZhaWx1
cmUgc3RhdHVzLgogICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRU
bycgcGFyYW1ldGVyLgotICAgICAqIEBzdGFibGUgNC40CisgICAgICogQHN0YWJsZSBJQ1UgNC40
CiAgICAgICovCiAgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoaW50MzJfdCBudW1i
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBw
ZW5kVG8sCkBAIC0xMDYyLDcgKzEwNDYsNyBAQCBwdWJsaWM6CiAgICAgICogICAgICAgICAgICAg
ICAgICBDYW4gYmUgTlVMTC4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBm
aWxsZWQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzLgogICAgICAqIEByZXR1cm4gICAgICAg
ICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgotICAgICAqIEBzdGFibGUgNC40
CisgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAgICovCiAgICAgdmlydHVhbCBVbmljb2RlU3Ry
aW5nJiBmb3JtYXQoaW50NjRfdCBudW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCkBAIC0xMDgzLDkgKzEwNjcsOSBAQCBwdWJs
aWM6CiAgICAgICogICAgICAgICAgICAgICAgICBDYW4gYmUgTlVMTC4KICAgICAgKiBAcGFyYW0g
c3RhdHVzICAgIE91dHB1dCBwYXJhbSBmaWxsZWQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVz
LgogICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1l
dGVyLgotICAgICAqIEBzdGFibGUgNC40CisgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAgICov
Ci0gICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoY29uc3QgU3RyaW5nUGllY2UgJm51
bWJlciwKKyAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZvcm1hdChTdHJpbmdQaWVjZSBudW1i
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBw
ZW5kVG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbkl0
ZXJhdG9yKiBwb3NJdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUmIHN0YXR1cykgY29uc3Q7CkBAIC0xMTExLDYgKzEwOTUsNDAgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb25JdGVyYXRvciogcG9z
SXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0
dXMpIGNvbnN0OwogCisgICAgLyoqCisgICAgICogRm9ybWF0IGEgZGVjaW1hbCBudW1iZXIuCisg
ICAgICogQHBhcmFtIG51bWJlciAgICBUaGUgbnVtYmVyCisgICAgICogQHBhcmFtIGFwcGVuZFRv
ICBPdXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0LgorICAgICAqICAgICAgICAgICAg
ICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgorICAgICAqIEBw
YXJhbSBwb3MgICAgICAgT24gaW5wdXQ6IGFuIGFsaWdubWVudCBmaWVsZCwgaWYgZGVzaXJlZC4K
KyAgICAgKiAgICAgICAgICAgICAgICAgIE9uIG91dHB1dDogdGhlIG9mZnNldHMgb2YgdGhlIGFs
aWdubWVudCBmaWVsZC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBmaWxs
ZWQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzLgorICAgICAqIEByZXR1cm4gICAgICAgICAg
UmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgorICAgICAqIEBpbnRlcm5hbAorICAg
ICAqLworICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyYgZm9ybWF0KAorICAgICAgICAgICAgY29u
c3QgVmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCAmbnVtYmVyLAorICAgICAgICAgICAgVW5pY29k
ZVN0cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAgICBGaWVsZFBvc2l0aW9uJiBwb3MsCisgICAg
ICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OworCisgICAgLyoqCisgICAgICogRm9y
bWF0IGEgZGVjaW1hbCBudW1iZXIuCisgICAgICogQHBhcmFtIG51bWJlciAgICBUaGUgbnVtYmVy
CisgICAgICogQHBhcmFtIGFwcGVuZFRvICBPdXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVz
dWx0LgorICAgICAqICAgICAgICAgICAgICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0
aW5nIGNvbnRlbnRzLgorICAgICAqIEBwYXJhbSBwb3NJdGVyICAgT24gcmV0dXJuLCBjYW4gYmUg
dXNlZCB0byBpdGVyYXRlIG92ZXIgcG9zaXRpb25zCisgICAgICogICAgICAgICAgICAgICAgICBv
ZiBmaWVsZHMgZ2VuZXJhdGVkIGJ5IHRoaXMgZm9ybWF0IGNhbGwuCisgICAgICogQHBhcmFtIHN0
YXR1cyAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9mYWlsdXJlIHN0YXR1cy4K
KyAgICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRl
ci4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcm
IGZvcm1hdCgKKyAgICAgICAgICAgIGNvbnN0IFZpc2libGVEaWdpdHNXaXRoRXhwb25lbnQgJm51
bWJlciwKKyAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAorICAgICAgICAgICAg
RmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBwb3NJdGVyLAorICAgICAgICAgICAgVUVycm9yQ29kZSYg
c3RhdHVzKSBjb25zdDsKKwogICAgIC8qKgogICAgICAqIEZvcm1hdCBhIGRlY2ltYWwgbnVtYmVy
LgogICAgICAqIFRoZSBudW1iZXIgaXMgYSBEaWdpdExpc3Qgd3JhcHBlciBvbnRvIGEgZmxvYXRp
bmcgcG9pbnQgZGVjaW1hbCBudW1iZXIuCkBAIC0xNjEwLDYgKzE2MjgsNDUgQEAgcHVibGljOgog
ICAgICAqLwogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWNvbmRhcnlHcm91cGluZ1NpemUoaW50MzJf
dCBuZXdWYWx1ZSk7CiAKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQorCisgICAgLyoqCisg
ICAgICogUmV0dXJucyB0aGUgbWluaW11bSBudW1iZXIgb2YgZ3JvdXBpbmcgZGlnaXRzLgorICAg
ICAqIEdyb3VwaW5nIHNlcGFyYXRvcnMgYXJlIG91dHB1dCBpZiB0aGVyZSBhcmUgYXQgbGVhc3Qg
dGhpcyBtYW55CisgICAgICogZGlnaXRzIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCAocmlnaHRt
b3N0KSBncm91cGluZyBzZXBhcmF0b3IsCisgICAgICogdGhhdCBpcywgdGhlcmUgYXJlIGF0IGxl
YXN0IChtaW5pbXVtIGdyb3VwaW5nICsgZ3JvdXBpbmcgc2l6ZSkgaW50ZWdlciBkaWdpdHMuCisg
ICAgICogKFN1YmplY3QgdG8gaXNHcm91cGluZ1VzZWQoKS4pCisgICAgICoKKyAgICAgKiBGb3Ig
ZXhhbXBsZSwgaWYgdGhpcyB2YWx1ZSBpcyAyLCBhbmQgdGhlIGdyb3VwaW5nIHNpemUgaXMgMywg
dGhlbgorICAgICAqIDk5OTkgLT4gIjk5OTkiIGFuZCAxMDAwMCAtPiAiMTAsMDAwIgorICAgICAq
CisgICAgICogVGhpcyBpcyBhIHRlY2hub2xvZ3kgcHJldmlldy4gVGhpcyBBUEkgbWF5IGNoYW5n
ZSBiZWhhdmlvciBvciBtYXkgYmUgcmVtb3ZlZC4KKyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0
IHZhbHVlIGZvciB0aGlzIGF0dHJpYnV0ZSBpcyAwLgorICAgICAqIEEgdmFsdWUgb2YgMSwgMCwg
b3IgbG93ZXIsIG1lYW5zIHRoYXQgdGhlIHVzZSBvZiBncm91cGluZyBzZXBhcmF0b3JzCisgICAg
ICogb25seSBkZXBlbmRzIG9uIHRoZSBncm91cGluZyBzaXplIChhbmQgb24gaXNHcm91cGluZ1Vz
ZWQoKSkuCisgICAgICogQ3VycmVudGx5LCB0aGUgY29ycmVzcG9uZGluZyBDTERSIGRhdGEgaXMg
bm90IHVzZWQ7IHRoaXMgaXMgbGlrZWx5IHRvIGNoYW5nZS4KKyAgICAgKgorICAgICAqIEBzZWUg
c2V0TWluaW11bUdyb3VwaW5nRGlnaXRzCisgICAgICogQHNlZSBnZXRHcm91cGluZ1NpemUKKyAg
ICAgKiBAaW50ZXJuYWwgdGVjaG5vbG9neSBwcmV2aWV3CisgICAgICovCisgICAgaW50MzJfdCBn
ZXRNaW5pbXVtR3JvdXBpbmdEaWdpdHMoKSBjb25zdDsKKworI2VuZGlmICAvKiBVX0hJREVfSU5U
RVJOQUxfQVBJICovCisKKwkvKiBDYW5ub3QgdXNlICNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQ
SSBmb3IgdGhlIGZvbGxvd2luZyBkcmFmdCBtZXRob2Qgc2luY2UgaXQgaXMgdmlydHVhbC4gKi8K
KyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBtaW5pbXVtIGdyb3VwaW5nIGRpZ2l0cy4gU2V0dGlu
ZyB0byBhIHZhbHVlIGxlc3MgdGhhbiBvcgorICAgICAqIGVxdWFsIHRvIDEgdHVybnMgb2ZmIG1p
bmltdW0gZ3JvdXBpbmcgZGlnaXRzLgorICAgICAqCisgICAgICogQHBhcmFtIG5ld1ZhbHVlIHRo
ZSBuZXcgdmFsdWUgb2YgbWluaW11bSBncm91cGluZyBkaWdpdHMuCisgICAgICogQHNlZSBnZXRN
aW5pbXVtR3JvdXBpbmdEaWdpdHMKKyAgICAgKiBAaW50ZXJuYWwgdGVjaG5vbG9neSBwcmV2aWV3
CisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1Hcm91cGluZ0RpZ2l0cyhpbnQz
Ml90IG5ld1ZhbHVlKTsKKworCiAgICAgLyoqCiAgICAgICogQWxsb3dzIHlvdSB0byBnZXQgdGhl
IGJlaGF2aW9yIG9mIHRoZSBkZWNpbWFsIHNlcGFyYXRvciB3aXRoIGludGVnZXJzLgogICAgICAq
IChUaGUgZGVjaW1hbCBzZXBhcmF0b3Igd2lsbCBhbHdheXMgYXBwZWFyIHdpdGggZGVjaW1hbHMu
KQpAQCAtMTYzMCwyNCArMTY4NywyMiBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgdmlydHVhbCB2
b2lkIHNldERlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bihVQm9vbCBuZXdWYWx1ZSk7CiAKLSNp
Zm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIEFsbG93cyB5b3UgdG8gZ2V0
IHRoZSBwYXJzZSBiZWhhdmlvciBvZiB0aGUgcGF0dGVybiBkZWNpbWFsIG1hcmsuCiAgICAgICoK
ICAgICAgKiBAcmV0dXJuICAgIFRSVUUgaWYgaW5wdXQgbXVzdCBjb250YWluIGEgbWF0Y2ggdG8g
ZGVjaW1hbCBtYXJrIGluIHBhdHRlcm4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0
YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBVQm9vbCBpc0RlY2ltYWxQYXR0ZXJuTWF0Y2hSZXF1
aXJlZCh2b2lkKSBjb25zdDsKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogCiAgICAg
LyoqCiAgICAgICogQWxsb3dzIHlvdSB0byBzZXQgdGhlIGJlaGF2aW9yIG9mIHRoZSBwYXR0ZXJu
IGRlY2ltYWwgbWFyay4KLSAgICAgKiAKKyAgICAgKgogICAgICAqIGlmIFRSVUUsIHRoZSBpbnB1
dCBtdXN0IGhhdmUgYSBkZWNpbWFsIG1hcmsgaWYgb25lIHdhcyBzcGVjaWZpZWQgaW4gdGhlIHBh
dHRlcm4uIFdoZW4KICAgICAgKiBGQUxTRSB0aGUgZGVjaW1hbCBtYXJrIG1heSBiZSBvbWl0dGVk
IGZyb20gdGhlIGlucHV0LgogICAgICAqCiAgICAgICogQHBhcmFtIG5ld1ZhbHVlICAgIHNldCBU
UlVFIGlmIGlucHV0IG11c3QgY29udGFpbiBhIG1hdGNoIHRvIGRlY2ltYWwgbWFyayBpbiBwYXR0
ZXJuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICov
CiAgICAgdmlydHVhbCB2b2lkIHNldERlY2ltYWxQYXR0ZXJuTWF0Y2hSZXF1aXJlZChVQm9vbCBu
ZXdWYWx1ZSk7CiAKQEAgLTE4ODQsNDEgKzE5MzksMzcgQEAgcHVibGljOgogICAgICAqIEBwYXJh
bSBlYyBpbnB1dC1vdXRwdXQgZXJyb3IgY29kZQogICAgICAqIEBzdGFibGUgSUNVIDMuMAogICAg
ICAqLwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW5jeShjb25zdCBVQ2hhciogdGhlQ3VycmVu
Y3ksIFVFcnJvckNvZGUmIGVjKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVuY3koY29uc3Qg
Y2hhcjE2X3QqIHRoZUN1cnJlbmN5LCBVRXJyb3JDb2RlJiBlYyk7CiAKICAgICAvKioKICAgICAg
KiBTZXRzIHRoZSBjdXJyZW5jeSB1c2VkIHRvIGRpc3BsYXkgY3VycmVuY3kgYW1vdW50cy4gIFNl
ZQotICAgICAqIHNldEN1cnJlbmN5KGNvbnN0IFVDaGFyKiwgVUVycm9yQ29kZSYpLgotICAgICAq
IEBkZXByZWNhdGVkIElDVSAzLjAuIFVzZSBzZXRDdXJyZW5jeShjb25zdCBVQ2hhciosIFVFcnJv
ckNvZGUmKS4KKyAgICAgKiBzZXRDdXJyZW5jeShjb25zdCBjaGFyMTZfdCosIFVFcnJvckNvZGUm
KS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMy4wLiBVc2Ugc2V0Q3VycmVuY3koY29uc3QgY2hh
cjE2X3QqLCBVRXJyb3JDb2RlJikuCiAgICAgICovCi0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJl
bmN5KGNvbnN0IFVDaGFyKiB0aGVDdXJyZW5jeSk7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJl
bmN5KGNvbnN0IGNoYXIxNl90KiB0aGVDdXJyZW5jeSk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZU
X0FQSQogICAgIC8qKgogICAgICAqIFNldHMgdGhlIDx0dD5DdXJyZW5jeSBDb250ZXh0PC90dD4g
b2JqZWN0IHVzZWQgdG8gZGlzcGxheSBjdXJyZW5jeS4KICAgICAgKiBUaGlzIHRha2VzIGVmZmVj
dCBpbW1lZGlhdGVseSwgaWYgdGhpcyBmb3JtYXQgaXMgYQotICAgICAqIGN1cnJlbmN5IGZvcm1h
dC4gIAotICAgICAqIEBwYXJhbSBjdXJyZW5jeUNvbnRleHQgbmV3IGN1cnJlbmN5IGNvbnRleHQg
b2JqZWN0IHRvIHVzZS4gIAotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBjdXJyZW5jeSBm
b3JtYXQuCisgICAgICogQHBhcmFtIGN1cnJlbmN5Q29udGV4dCBuZXcgY3VycmVuY3kgY29udGV4
dCBvYmplY3QgdG8gdXNlLgorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgdm9p
ZCBzZXRDdXJyZW5jeVVzYWdlKFVDdXJyZW5jeVVzYWdlIG5ld1VzYWdlLCBVRXJyb3JDb2RlKiBl
Yyk7CiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHRoZSA8dHQ+Q3VycmVuY3kgQ29udGV4dDwv
dHQ+IG9iamVjdCB1c2VkIHRvIGRpc3BsYXkgY3VycmVuY3kKLSAgICAgKiBAZHJhZnQgSUNVIDU0
CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBVQ3VycmVuY3lVc2FnZSBnZXRD
dXJyZW5jeVVzYWdlKCkgY29uc3Q7Ci0jZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KIAog
Ci0jaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAgIC8qKgogICAgICAqIFRoZSByZXNv
dXJjZSB0YWdzIHdlIHVzZSB0byByZXRyaWV2ZSBkZWNpbWFsIGZvcm1hdCBkYXRhIGZyb20KICAg
ICAgKiBsb2NhbGUgcmVzb3VyY2UgYnVuZGxlcy4KICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMy40
LiBUaGlzIHN0cmluZyBoYXMgbm8gcHVibGljIHB1cnBvc2UuIFBsZWFzZSBkb24ndCB1c2UgaXQu
CiAgICAgICovCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgZmdOdW1iZXJQYXR0ZXJuc1tdOwotI2Vu
ZGlmICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KIAogI2lmbmRlZiBVX0hJREVfSU5URVJO
QUxfQVBJCiAgICAgLyoqCkBAIC0xOTQ0LDYgKzE5OTUsNDEgQEAgcHVibGljOgogICAgICAqICBA
aW50ZXJuYWwKICAgICAgKi8KICAgICAgRml4ZWREZWNpbWFsIGdldEZpeGVkRGVjaW1hbChEaWdp
dExpc3QgJm51bWJlciwgVUVycm9yQ29kZSAmc3RhdHVzKSBjb25zdDsKKworICAgIC8qKgorICAg
ICAqICBHZXQgYSBWaXNpYmxlRGlnaXRzV2l0aEV4cG9uZW50IGNvcnJlc3BvbmRpbmcgdG8gYSBk
b3VibGUKKyAgICAgKiAgYXMgaXQgd291bGQgYmUgZm9ybWF0dGVkIGJ5IHRoaXMgRGVjaW1hbEZv
cm1hdC4KKyAgICAgKiAgSW50ZXJuYWwsIG5vdCBpbnRlbmRlZCBmb3IgcHVibGljIHVzZS4KKyAg
ICAgKiAgQGludGVybmFsCisgICAgICovCisgICAgIFZpc2libGVEaWdpdHNXaXRoRXhwb25lbnQg
JmluaXRWaXNpYmxlRGlnaXRzV2l0aEV4cG9uZW50KAorICAgICAgICAgICAgIGRvdWJsZSBudW1i
ZXIsCisgICAgICAgICAgICAgVmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCAmZGlnaXRzLAorICAg
ICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiAg
R2V0IGEgVmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCBjb3JyZXNwb25kaW5nIHRvIGEgZm9ybWF0
dGFibGUKKyAgICAgKiAgYXMgaXQgd291bGQgYmUgZm9ybWF0dGVkIGJ5IHRoaXMgRGVjaW1hbEZv
cm1hdC4KKyAgICAgKiAgSW50ZXJuYWwsIG5vdCBpbnRlbmRlZCBmb3IgcHVibGljIHVzZS4KKyAg
ICAgKiAgQGludGVybmFsCisgICAgICovCisgICAgIFZpc2libGVEaWdpdHNXaXRoRXhwb25lbnQg
JmluaXRWaXNpYmxlRGlnaXRzV2l0aEV4cG9uZW50KAorICAgICAgICAgICAgIGNvbnN0IEZvcm1h
dHRhYmxlICZudW1iZXIsCisgICAgICAgICAgICAgVmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCAm
ZGlnaXRzLAorICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CisKKyAgICAv
KioKKyAgICAgKiAgR2V0IGEgVmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCBjb3JyZXNwb25kaW5n
IHRvIGEgRGlnaXRMaXN0CisgICAgICogIGFzIGl0IHdvdWxkIGJlIGZvcm1hdHRlZCBieSB0aGlz
IERlY2ltYWxGb3JtYXQuCisgICAgICogIE5vdGU6IHRoZSBEaWdpdExpc3QgbWF5IGJlIG1vZGlm
aWVkLgorICAgICAqICBJbnRlcm5hbCwgbm90IGludGVuZGVkIGZvciBwdWJsaWMgdXNlLgorICAg
ICAqICBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICAgVmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCAm
aW5pdFZpc2libGVEaWdpdHNXaXRoRXhwb25lbnQoCisgICAgICAgICAgICAgRGlnaXRMaXN0ICZu
dW1iZXIsCisgICAgICAgICAgICAgVmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCAmZGlnaXRzLAor
ICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CisKICNlbmRpZiAgLyogVV9I
SURFX0lOVEVSTkFMX0FQSSAqLwogCiBwdWJsaWM6CkBAIC0xOTc4LDggKzIwNjQsNiBAQCBwcml2
YXRlOgogCiAgICAgRGVjaW1hbEZvcm1hdCgpOyAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yIG5vdCBp
bXBsZW1lbnRlZAogCi0gICAgaW50MzJfdCBwcmVjaXNpb24oKSBjb25zdDsKLQogICAgIC8qKgog
ICAgICAqICAgSW5pdGlhbGl6ZSBhbGwgZmllbGRzIG9mIGEgbmV3IERlY2ltYWxGb3JtYXR0ZXIg
dG8gYSBzYWZlIGRlZmF1bHQgdmFsdWUuCiAgICAgICogICAgICBDb21tb24gY29kZSBmb3IgdXNl
IGJ5IGNvbnN0cnVjdG9ycy4KQEAgLTE5OTUsNzYgKzIwNzksMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyogICAgc3ltYm9sc1RvQWRvcHQgPSAw
CiAgICAgICAgICAgICAgICAgICAgKTsKIAotICAgIC8qKgotICAgICAqIERvZXMgdGhlIHJlYWwg
d29yayBvZiBnZW5lcmF0aW5nIGEgcGF0dGVybi4KLSAgICAgKgotICAgICAqIEBwYXJhbSByZXN1
bHQgICAgIE91dHB1dCBwYXJhbSB3aGljaCB3aWxsIHJlY2VpdmUgdGhlIHBhdHRlcm4uCi0gICAg
ICogICAgICAgICAgICAgICAgICAgUHJldmlvdXMgY29udGVudHMgYXJlIGRlbGV0ZWQuCi0gICAg
ICogQHBhcmFtIGxvY2FsaXplZCAgVFJVRSByZXR1cm4gbG9jYWxpemVkIHBhdHRlcm4uCi0gICAg
ICogQHJldHVybiAgICAgICAgICAgQSByZWZlcmVuY2UgdG8gJ3Jlc3VsdCcuCi0gICAgICovCi0g
ICAgVW5pY29kZVN0cmluZyYgdG9QYXR0ZXJuKFVuaWNvZGVTdHJpbmcmIHJlc3VsdCwgVUJvb2wg
bG9jYWxpemVkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIERvZXMgdGhlIHJlYWwgd29yayBv
ZiBhcHBseWluZyBhIHBhdHRlcm4uCi0gICAgICogQHBhcmFtIHBhdHRlcm4gICAgVGhlIHBhdHRl
cm4gdG8gYmUgYXBwbGllZC4KLSAgICAgKiBAcGFyYW0gbG9jYWxpemVkICBJZiB0cnVlLCB0aGUg
cGF0dGVybiBpcyBsb2NhbGl6ZWQ7IGVsc2UgZmFsc2UuCi0gICAgICogQHBhcmFtIHBhcnNlRXJy
b3IgU3RydWN0IHRvIHJlY2lldmUgaW5mb3JtYXRpb24gb24gcG9zaXRpb24KLSAgICAgKiAgICAg
ICAgICAgICAgICAgICBvZiBlcnJvciBpZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZAotICAgICAq
IEBwYXJhbSBzdGF0dXMgICAgIE91dHB1dCBwYXJhbSBzZXQgdG8gc3VjY2Vzcy9mYWlsdXJlIGNv
ZGUgb24KLSAgICAgKiAgICAgICAgICAgICAgICAgICBleGl0LiBJZiB0aGUgcGF0dGVybiBpcyBp
bnZhbGlkLCB0aGlzIHdpbGwgYmUKLSAgICAgKiAgICAgICAgICAgICAgICAgICBzZXQgdG8gYSBm
YWlsdXJlIHJlc3VsdC4KLSAgICAgKi8KLSAgICB2b2lkIGFwcGx5UGF0dGVybihjb25zdCBVbmlj
b2RlU3RyaW5nJiBwYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29sIGxv
Y2FsaXplZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUGFyc2VFcnJvciYgcGFyc2VF
cnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpOwot
Ci0gICAgLyoKLSAgICAgKiBzaW1pbGFyIHRvIGFwcGx5UGF0dGVybiwgYnV0IHdpdGhvdXQgcmUt
Z2VuIGFmZml4IGZvciBjdXJyZW5jeQotICAgICAqLwotICAgIHZvaWQgYXBwbHlQYXR0ZXJuSW50
ZXJuYWxseShjb25zdCBVbmljb2RlU3RyaW5nJiBwbHVyYWxDb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgcGF0dGVybiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgbG9jYWxpemVkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVUGFyc2VFcnJvciYgcGFyc2VFcnJvciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKTsKLQotICAgIC8qCi0gICAgICog
b25seSBhcHBseSBwYXR0ZXJuIHdpdGhvdXQgZXhwYW5kIGFmZml4ZXMKLSAgICAgKi8KLSAgICB2
b2lkIGFwcGx5UGF0dGVybldpdGhvdXRFeHBhbmRBZmZpeChjb25zdCBVbmljb2RlU3RyaW5nJiBw
YXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29sIGxv
Y2FsaXplZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUGFyc2VF
cnJvciYgcGFyc2VFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVRXJyb3JDb2RlJiBzdGF0dXMpOwotCi0KLSAgICAvKgotICAgICAqIGV4cGFuZCBhZmZpeGVz
IChhZnRlciBhcHBseSBwYXR0ZXIpIGFuZCByZS1jb21wdXRlIGZGb3JtYXRXaWR0aAotICAgICAq
LwotICAgIHZvaWQgZXhwYW5kQWZmaXhBZGp1c3RXaWR0aChjb25zdCBVbmljb2RlU3RyaW5nKiBw
bHVyYWxDb3VudCk7Ci0KLQotICAgIC8qKgotICAgICAqIERvIHRoZSB3b3JrIG9mIGZvcm1hdHRp
bmcgYSBudW1iZXIsIGVpdGhlciBhIGRvdWJsZSBvciBhIGxvbmcuCi0gICAgICoKLSAgICAgKiBA
cGFyYW0gYXBwZW5kVG8gICAgICAgT3V0cHV0IHBhcmFtZXRlciB0byByZWNlaXZlIHJlc3VsdC4K
LSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0
aW5nIGNvbnRlbnRzLgotICAgICAqIEBwYXJhbSBoYW5kbGVyICAgICAgICBSZWNvcmRzIGluZm9y
bWF0aW9uIGFib3V0IGZpZWxkIHBvc2l0aW9ucy4KLSAgICAgKiBAcGFyYW0gZGlnaXRzICAgICAg
ICAgdGhlIGRpZ2l0cyB0byBiZSBmb3JtYXR0ZWQuCi0gICAgICogQHBhcmFtIGlzSW50ZWdlciAg
ICAgIGlmIFRSVUUgZm9ybWF0IHRoZSBkaWdpdHMgYXMgSW50ZWdlci4KLSAgICAgKiBAcmV0dXJu
ICAgICAgICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgotICAgICAq
LwotICAgIFVuaWNvZGVTdHJpbmcmIHN1YmZvcm1hdChVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbkhhbmRsZXImIGhhbmRs
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpZ2l0TGlzdCYgICAgIGRpZ2l0cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgICAgICAgICAgaXNJbnRlZ2VyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpIGNvbnN0Owot
CisgICAgdm9pZCBoYW5kbGVDdXJyZW5jeVNpZ25JblBhdHRlcm4oVUVycm9yQ29kZSYgc3RhdHVz
KTsKIAogICAgIHZvaWQgcGFyc2UoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwKICAgICAgICAg
ICAgICAgIEZvcm1hdHRhYmxlJiByZXN1bHQsCiAgICAgICAgICAgICAgICBQYXJzZVBvc2l0aW9u
JiBwb3MsCi0gICAgICAgICAgICAgICBVQ2hhciogY3VycmVuY3kpIGNvbnN0OworICAgICAgICAg
ICAgICAgY2hhcjE2X3QqIGN1cnJlbmN5KSBjb25zdDsKIAogICAgIGVudW0gewogICAgICAgICBm
Z1N0YXR1c0luZmluaXRlLApAQCAtMjA4MCw3ICsyMTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICBpbnQ4X3QgdHlwZSwKICAgICAgICAgICAgICAgICAgICBQYXJzZVBvc2l0aW9u
JiBwYXJzZVBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgIERpZ2l0TGlzdCYgZGlnaXRzLCBV
Qm9vbCogc3RhdHVzLAotICAgICAgICAgICAgICAgICAgIFVDaGFyKiBjdXJyZW5jeSkgY29uc3Q7
CisgICAgICAgICAgICAgICAgICAgY2hhcjE2X3QqIGN1cnJlbmN5KSBjb25zdDsKIAogICAgIC8v
IE1peGVkIHN0eWxlIHBhcnNpbmcgZm9yIGN1cnJlbmN5LgogICAgIC8vIEl0IHBhcnNlcyBhZ2Fp
bnN0IHRoZSBjdXJyZW50IGN1cnJlbmN5IHBhdHRlcm4KQEAgLTIwOTEsNyArMjExMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZVBvc2l0aW9uJiBwYXJzZVBv
c2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlnaXRMaXN0JiBkaWdpdHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCogc3RhdHVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVUNoYXIqIGN1cnJlbmN5KSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIxNl90KiBjdXJyZW5jeSkgY29uc3Q7CiAKICAgICBpbnQzMl90IHNraXBQYWRk
aW5nKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsIGludDMyX3QgcG9zaXRpb24pIGNvbnN0Owog
CkBAIC0yMTAyLDcgKzIxMjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVuaWNvZGVTdHJpbmcqIGFmZml4UGF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
IFVCb29sIGNvbXBsZXhDdXJyZW5jeVBhcnNpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50OF90IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIqIGN1cnJlbmN5KSBj
b25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyMTZfdCogY3VycmVuY3kpIGNvbnN0
OwogCiAgICAgc3RhdGljIFVuaWNvZGVTdHJpbmcmIHRyaW1NYXJrc0Zyb21BZmZpeChjb25zdCBV
bmljb2RlU3RyaW5nJiBhZmZpeCwgVW5pY29kZVN0cmluZyYgdHJpbW1lZEFmZml4KTsKIApAQCAt
MjEyNSw3ICsyMTQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVW5pY29kZVN0cmluZyYgaW5wdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3QgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ4
X3QgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIqIGN1cnJlbmN5
KSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcjE2X3QqIGN1cnJl
bmN5KSBjb25zdDsKIAogICAgIHN0YXRpYyBpbnQzMl90IG1hdGNoKGNvbnN0IFVuaWNvZGVTdHJp
bmcmIHRleHQsIGludDMyX3QgcG9zLCBVQ2hhcjMyIGNoKTsKIApAQCAtMjE0NCwyMzEgKzIxNjQs
NDUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIzMiBkZWNp
bWFsQ2hhciwgY29uc3QgVW5pY29kZVNldCAqZGVjaW1hbFNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVUNoYXIzMiBzY2hhcik7CiAKLSAgICAvKioKLSAgICAgKiBHZXQgYSBkZWNp
bWFsIGZvcm1hdCBzeW1ib2wuCi0gICAgICogUmV0dXJucyBhIGNvbnN0IHJlZmVyZW5jZSB0byB0
aGUgc3ltYm9sIHN0cmluZy4KLSAgICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAgICBpbmxpbmUg
Y29uc3QgVW5pY29kZVN0cmluZyAmZ2V0Q29uc3RTeW1ib2woRGVjaW1hbEZvcm1hdFN5bWJvbHM6
OkVOdW1iZXJGb3JtYXRTeW1ib2wgc3ltYm9sKSBjb25zdDsKLQotICAgIGludDMyX3QgYXBwZW5k
QWZmaXgoVW5pY29kZVN0cmluZyYgYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgZG91Ymxl
IG51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb25IYW5kbGVyJiBo
YW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgaXNOZWdhdGl2ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFVCb29sIGlzUHJlZml4KSBjb25zdDsKLQotICAgIC8qKgotICAg
ICAqIEFwcGVuZCBhbiBhZmZpeCB0byB0aGUgZ2l2ZW4gVW5pY29kZVN0cmluZywgdXNpbmcgcXVv
dGVzIGlmCi0gICAgICogdGhlcmUgYXJlIHNwZWNpYWwgY2hhcmFjdGVycy4gIFNpbmdsZSBxdW90
ZXMgdGhlbXNlbHZlcyBtdXN0IGJlCi0gICAgICogZXNjYXBlZCBpbiBlaXRoZXIgY2FzZS4KLSAg
ICAgKi8KLSAgICB2b2lkIGFwcGVuZEFmZml4UGF0dGVybihVbmljb2RlU3RyaW5nJiBhcHBlbmRU
bywgY29uc3QgVW5pY29kZVN0cmluZyYgYWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVUJvb2wgbG9jYWxpemVkKSBjb25zdDsKLQotICAgIHZvaWQgYXBwZW5kQWZmaXhQYXR0ZXJu
KFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFVuaWNvZGVTdHJpbmcqIGFmZml4UGF0dGVybiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBleHBBZmZpeCwgVUJvb2wgbG9jYWxpemVkKSBjb25z
dDsKLQotICAgIHZvaWQgZXhwYW5kQWZmaXgoY29uc3QgVW5pY29kZVN0cmluZyYgcGF0dGVybiwK
LSAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFmZml4LAotICAgICAgICAgICAg
ICAgICAgICAgZG91YmxlIG51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRp
b25IYW5kbGVyJiBoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgVUJvb2wgZG9Gb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nKiBwbHVyYWxDb3VudCkg
Y29uc3Q7Ci0KLSAgICB2b2lkIGV4cGFuZEFmZml4ZXMoY29uc3QgVW5pY29kZVN0cmluZyogcGx1
cmFsQ291bnQpOwotCi0gICAgdm9pZCBhZGRQYWRkaW5nKFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRv
LAotICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uSGFuZGxlciYgaGFuZGxlciwKLSAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCBwcmVmaXhMZW4sIGludDMyX3Qgc3VmZml4TGVuKSBj
b25zdDsKLQotICAgIFVCb29sIGlzR3JvdXBpbmdQb3NpdGlvbihpbnQzMl90IHBvcykgY29uc3Q7
Ci0KLSAgICB2b2lkIHNldEN1cnJlbmN5Rm9yU3ltYm9scygpOwotCi0gICAgLy8gc2ltaWxhciB0
byBzZXRDdXJyZW5jeSB3aXRob3V0IHJlLWNvbXB1dGUgdGhlIGFmZml4ZXMgZm9yIGN1cnJlbmN5
LgotICAgIC8vIElmIGN1cnJlbmN5IGNoYW5nZXMsIHRoZSBhZmZpeCBwYXR0ZXJuIGZvciBjdXJy
ZW5jeSBpcyBub3QgY2hhbmdlZCwKLSAgICAvLyBidXQgdGhlIGFmZml4IHdpbGwgYmUgY2hhbmdl
ZC4gU28sIGFmZml4ZXMgbmVlZCB0byBiZQotICAgIC8vIHJlLWNvbXB1dGVkIGluIHNldEN1cnJl
bmN5KCksIGJ1dCBub3QgaW4gc2V0Q3VycmVuY3lJbnRlcm5hbGx5KCkuCi0gICAgdmlydHVhbCB2
b2lkIHNldEN1cnJlbmN5SW50ZXJuYWxseShjb25zdCBVQ2hhciogdGhlQ3VycmVuY3ksIFVFcnJv
ckNvZGUmIGVjKTsKLQogICAgIC8vIHNldCB1cCBjdXJyZW5jeSBhZmZpeCBwYXR0ZXJucyBmb3Ig
bWl4IHBhcnNpbmcuCiAgICAgLy8gVGhlIHBhdHRlcm5zIHNhdmVkIGhlcmUgYXJlIHRoZSBhZmZp
eCBwYXR0ZXJucyBvZiBkZWZhdWx0IGN1cnJlbmN5CiAgICAgLy8gcGF0dGVybiBhbmQgdGhlIHVu
aXF1ZSBhZmZpeCBwYXR0ZXJucyBvZiB0aGUgcGx1cmFsIGN1cnJlbmN5IHBhdHRlcm5zLgogICAg
IC8vIFRob3NlIHBhdHRlcm5zIGFyZSB1c2VkIGJ5IHBhcnNlRm9yQ3VycmVuY3koKS4KICAgICB2
b2lkIHNldHVwQ3VycmVuY3lBZmZpeFBhdHRlcm5zKFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKLSAg
ICAvLyBzZXQgdXAgdGhlIGN1cnJlbmN5IGFmZml4ZXMgdXNlZCBpbiBjdXJyZW5jeSBwbHVyYWwg
Zm9ybWF0dGluZy4KLSAgICAvLyBJdCBzZXRzIHVwIGJvdGggZkFmZml4ZXNGb3JDdXJyZW5jeSBm
b3IgY3VycmVuY3kgcGF0dGVybiBpZiB0aGUgY3VycmVudAotICAgIC8vIHBhdHRlcm4gY29udGFp
bnMgMyBjdXJyZW5jeSBzaWducywKLSAgICAvLyBhbmQgaXQgc2V0cyB1cCBmUGx1cmFsQWZmaXhl
c0ZvckN1cnJlbmN5IGZvciBjdXJyZW5jeSBwbHVyYWwgcGF0dGVybnMuCi0gICAgdm9pZCBzZXR1
cEN1cnJlbmN5QWZmaXhlcyhjb25zdCBVbmljb2RlU3RyaW5nJiBwYXR0ZXJuLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVUJvb2wgc2V0dXBGb3JDdXJyZW50UGF0dGVybiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29sIHNldHVwRm9yUGx1cmFsUGF0dGVybiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7Ci0JCiAgICAg
Ly8gZ2V0IHRoZSBjdXJyZW5jeSByb3VuZGluZyB3aXRoIHJlc3BlY3QgdG8gY3VycmVuY3kgdXNh
Z2UKLSAgICBkb3VibGUgZ2V0Q3VycmVuY3lSb3VuZGluZyhjb25zdCBVQ2hhciogY3VycmVuY3ks
CisgICAgZG91YmxlIGdldEN1cnJlbmN5Um91bmRpbmcoY29uc3QgY2hhcjE2X3QqIGN1cnJlbmN5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVjKSBjb25zdDsK
LQkKKwogICAgIC8vIGdldCB0aGUgY3VycmVuY3kgZnJhY3Rpb24gd2l0aCByZXNwZWN0IHRvIGN1
cnJlbmN5IHVzYWdlCi0gICAgaW50IGdldEN1cnJlbmN5RnJhY3Rpb25EaWdpdHMoY29uc3QgVUNo
YXIqIGN1cnJlbmN5LAorICAgIGludCBnZXRDdXJyZW5jeUZyYWN0aW9uRGlnaXRzKGNvbnN0IGNo
YXIxNl90KiBjdXJyZW5jeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJy
b3JDb2RlKiBlYykgY29uc3Q7CiAKICAgICAvLyBoYXNodGFibGUgb3BlcmF0aW9ucwogICAgIEhh
c2h0YWJsZSogaW5pdEhhc2hGb3JBZmZpeFBhdHRlcm4oVUVycm9yQ29kZSYgc3RhdHVzKTsKLSAg
ICBIYXNodGFibGUqIGluaXRIYXNoRm9yQWZmaXgoVUVycm9yQ29kZSYgc3RhdHVzKTsKIAogICAg
IHZvaWQgZGVsZXRlSGFzaEZvckFmZml4UGF0dGVybigpOwotICAgIHZvaWQgZGVsZXRlSGFzaEZv
ckFmZml4KEhhc2h0YWJsZSomIHRhYmxlKTsKIAogICAgIHZvaWQgY29weUhhc2hGb3JBZmZpeFBh
dHRlcm4oY29uc3QgSGFzaHRhYmxlKiBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBIYXNodGFibGUqIHRhcmdldCwgVUVycm9yQ29kZSYgc3RhdHVzKTsKLSAgICB2b2lk
IGNvcHlIYXNoRm9yQWZmaXgoY29uc3QgSGFzaHRhYmxlKiBzb3VyY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIEhhc2h0YWJsZSogdGFyZ2V0LCBVRXJyb3JDb2RlJiBzdGF0dXMpOwotCi0g
ICAgVW5pY29kZVN0cmluZyYgX2Zvcm1hdChpbnQ2NF90IG51bWJlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmllbGRQb3NpdGlvbkhhbmRsZXImIGhhbmRsZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpIGNvbnN0OwotICAgIFVuaWNvZGVTdHJpbmcm
IF9mb3JtYXQoZG91YmxlIG51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNv
ZGVTdHJpbmcmIGFwcGVuZFRvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3Np
dGlvbkhhbmRsZXImIGhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JD
b2RlICZzdGF0dXMpIGNvbnN0OwotICAgIFVuaWNvZGVTdHJpbmcmIF9mb3JtYXQoY29uc3QgRGln
aXRMaXN0ICZudW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5n
JiBhcHBlbmRUbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb25IYW5k
bGVyJiBoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmc3Rh
dHVzKSBjb25zdDsKIAotICAgIC8qKgotICAgICAqIENvbnN0YW50cy4KLSAgICAgKi8KLQotICAg
IFVuaWNvZGVTdHJpbmcgICAgICAgICAgIGZQb3NpdGl2ZVByZWZpeDsKLSAgICBVbmljb2RlU3Ry
aW5nICAgICAgICAgICBmUG9zaXRpdmVTdWZmaXg7Ci0gICAgVW5pY29kZVN0cmluZyAgICAgICAg
ICAgZk5lZ2F0aXZlUHJlZml4OwotICAgIFVuaWNvZGVTdHJpbmcgICAgICAgICAgIGZOZWdhdGl2
ZVN1ZmZpeDsKLSAgICBVbmljb2RlU3RyaW5nKiAgICAgICAgICBmUG9zUHJlZml4UGF0dGVybjsK
LSAgICBVbmljb2RlU3RyaW5nKiAgICAgICAgICBmUG9zU3VmZml4UGF0dGVybjsKLSAgICBVbmlj
b2RlU3RyaW5nKiAgICAgICAgICBmTmVnUHJlZml4UGF0dGVybjsKLSAgICBVbmljb2RlU3RyaW5n
KiAgICAgICAgICBmTmVnU3VmZml4UGF0dGVybjsKKyAgICBEZWNpbWFsRm9ybWF0SW1wbCAqZklt
cGw7CiAKICAgICAvKioKLSAgICAgKiBGb3JtYXR0ZXIgZm9yIENob2ljZUZvcm1hdC1iYXNlZCBj
dXJyZW5jeSBuYW1lcy4gIElmIHRoaXMgZmllbGQKLSAgICAgKiBpcyBub3QgbnVsbCwgdGhlbiBk
ZWxlZ2F0ZSB0byBpdCB0byBmb3JtYXQgY3VycmVuY3kgc3ltYm9scy4KLSAgICAgKiBAc2luY2Ug
SUNVIDIuNgorICAgICAqIENvbnN0YW50cy4KICAgICAgKi8KLSAgICBDaG9pY2VGb3JtYXQqICAg
ICAgICAgICBmQ3VycmVuY3lDaG9pY2U7Ci0KLSAgICBEaWdpdExpc3QgKiAgICAgICAgICAgICBm
TXVsdGlwbGllcjsgICAvLyBOVUxMIGZvciBtdWx0aXBsaWVyIG9mIG9uZQotICAgIGludDMyX3Qg
ICAgICAgICAgICAgICAgIGZTY2FsZTsKLSAgICBpbnQzMl90ICAgICAgICAgICAgICAgICBmR3Jv
dXBpbmdTaXplOwotICAgIGludDMyX3QgICAgICAgICAgICAgICAgIGZHcm91cGluZ1NpemUyOwot
ICAgIFVCb29sICAgICAgICAgICAgICAgICAgIGZEZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd247
Ci0gICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMqICAgZlN5bWJvbHM7CiAKLSAgICBVQm9vbCAgICAg
ICAgICAgICAgICAgICBmVXNlU2lnbmlmaWNhbnREaWdpdHM7Ci0gICAgaW50MzJfdCAgICAgICAg
ICAgICAgICAgZk1pblNpZ25pZmljYW50RGlnaXRzOwotICAgIGludDMyX3QgICAgICAgICAgICAg
ICAgIGZNYXhTaWduaWZpY2FudERpZ2l0czsKLQotICAgIFVCb29sICAgICAgICAgICAgICAgICAg
IGZVc2VFeHBvbmVudGlhbE5vdGF0aW9uOwotICAgIGludDhfdCAgICAgICAgICAgICAgICAgIGZN
aW5FeHBvbmVudERpZ2l0czsKLSAgICBVQm9vbCAgICAgICAgICAgICAgICAgICBmRXhwb25lbnRT
aWduQWx3YXlzU2hvd247CiAKICAgICBFbnVtU2V0PFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUsCiAg
ICAgICAgICAgICBVTlVNX01BWF9OT05CT09MRUFOX0FUVFJJQlVURSsxLAogICAgICAgICAgICAg
VU5VTV9MSU1JVF9CT09MRUFOX0FUVFJJQlVURT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmQm9vbEZsYWdzOwogCi0gICAgRGlnaXRMaXN0KiAgICAgICAgICAgICAgZlJvdW5kaW5nSW5j
cmVtZW50OyAgLy8gTlVMTCBpZiBubyByb3VuZGluZyBpbmNyZW1lbnQgc3BlY2lmaWVkLgotICAg
IEVSb3VuZGluZ01vZGUgICAgICAgICAgIGZSb3VuZGluZ01vZGU7Ci0KLSAgICBVQ2hhcjMyICAg
ICAgICAgICAgICAgICBmUGFkOwotICAgIGludDMyX3QgICAgICAgICAgICAgICAgIGZGb3JtYXRX
aWR0aDsKLSAgICBFUGFkUG9zaXRpb24gICAgICAgICAgICBmUGFkUG9zaXRpb247CiAKLSAgICAv
KgotICAgICAqIEZvbGxvd2luZyBhcmUgdXNlZCBmb3IgY3VycmVuY3kgZm9ybWF0Ci0gICAgICov
Ci0gICAgLy8gcGF0dGVybiB1c2VkIGluIHRoaXMgZm9ybWF0dGVyCi0gICAgVW5pY29kZVN0cmlu
ZyBmRm9ybWF0UGF0dGVybjsKICAgICAvLyBzdHlsZSBpcyBvbmx5IHZhbGlkIHdoZW4gZGVjaW1h
bCBmb3JtYXR0ZXIgaXMgY29uc3RydWN0ZWQgYnkKICAgICAvLyBEZWNpbWFsRm9ybWF0KHBhdHRl
cm4sIGRlY2ltYWxGb3JtYXRTeW1ib2wsIHN0eWxlKQogICAgIGludCBmU3R5bGU7Ci0gICAgLyoK
LSAgICAgKiBSZXByZXNlbnRzIHdoZXRoZXIgdGhpcyBpcyBhIGN1cnJlbmN5IGZvcm1hdCwgYW5k
IHdoaWNoCi0gICAgICogY3VycmVuY3kgZm9ybWF0IHN0eWxlLgotICAgICAqIDA6IG5vdCBjdXJy
ZW5jeSBmb3JtYXQgdHlwZTsKLSAgICAgKiAxOiBjdXJyZW5jeSBzdHlsZSAtLSBzeW1ib2wgbmFt
ZSwgc3VjaCBhcyAiJCIgZm9yIFVTIGRvbGxhci4KLSAgICAgKiAyOiBjdXJyZW5jeSBzdHlsZSAt
LSBJU08gbmFtZSwgc3VjaCBhcyBVU0QgZm9yIFVTIGRvbGxhci4KLSAgICAgKiAzOiBjdXJyZW5j
eSBzdHlsZSAtLSBwbHVyYWwgbG9uZyBuYW1lLCBzdWNoIGFzICJVUyBEb2xsYXIiIGZvcgotICAg
ICAqICAgICAgICAgICAgICAgICAgICAgICIxLjAwIFVTIERvbGxhciIsIG9yICJVUyBEb2xsYXJz
IiBmb3IKLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAiMy4wMCBVUyBEb2xsYXJzIi4KLSAg
ICAgKi8KLSAgICBpbnQgZkN1cnJlbmN5U2lnbkNvdW50OwotCi0KLSAgICAvKiBGb3IgY3VycmVu
Y3kgcGFyc2luZyBwdXJvc2UsCi0gICAgICogTmVlZCB0byByZW1lbWJlciBhbGwgcHJlZml4IHBh
dHRlcm5zIGFuZCBzdWZmaXggcGF0dGVybnMgb2YKLSAgICAgKiBldmVyeSBjdXJyZW5jeSBmb3Jt
YXQgcGF0dGVybiwKLSAgICAgKiBpbmNsdWRpbmcgdGhlIHBhdHRlcm4gb2YgZGVmYXVsdCBjdXJy
ZWNueSBzdHlsZQotICAgICAqIGFuZCBwbHVyYWwgY3VycmVuY3kgc3R5bGUuIEFuZCB0aGUgcGF0
dGVybnMgYXJlIHNldCB0aHJvdWdoIGFwcGx5UGF0dGVybi4KLSAgICAgKi8KLSAgICAvLyBUT0RP
OiBpbm5lcmNsYXNzPwotICAgIC8qIFRoaXMgaXMgbm90IG5lZWRlZCBpbiB0aGUgY2xhc3MgZGVj
bGFyYXRpb24sIHNvIGl0IGlzIG1vdmVkIGludG8gZGVjaW1mbXAuY3BwCi0gICAgc3RydWN0IEFm
Zml4UGF0dGVybnNGb3JDdXJyZW5jeSA6IHB1YmxpYyBVTWVtb3J5IHsKLSAgICAgICAgLy8gbmVn
YXRpdmUgcHJlZml4IHBhdHRlcm4KLSAgICAgICAgVW5pY29kZVN0cmluZyBuZWdQcmVmaXhQYXR0
ZXJuRm9yQ3VycmVuY3k7Ci0gICAgICAgIC8vIG5lZ2F0aXZlIHN1ZmZpeCBwYXR0ZXJuCi0gICAg
ICAgIFVuaWNvZGVTdHJpbmcgbmVnU3VmZml4UGF0dGVybkZvckN1cnJlbmN5OwotICAgICAgICAv
LyBwb3NpdGl2ZSBwcmVmaXggcGF0dGVybgotICAgICAgICBVbmljb2RlU3RyaW5nIHBvc1ByZWZp
eFBhdHRlcm5Gb3JDdXJyZW5jeTsKLSAgICAgICAgLy8gcG9zaXRpdmUgc3VmZml4IHBhdHRlcm4K
LSAgICAgICAgVW5pY29kZVN0cmluZyBwb3NTdWZmaXhQYXR0ZXJuRm9yQ3VycmVuY3k7Ci0gICAg
ICAgIGludDhfdCBwYXR0ZXJuVHlwZTsKLQotICAgICAgICBBZmZpeFBhdHRlcm5zRm9yQ3VycmVu
Y3koY29uc3QgVW5pY29kZVN0cmluZyYgbmVnUHJlZml4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgbmVnU3VmZml4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgcG9zUHJlZml4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgcG9zU3Vm
Zml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50OF90IHR5cGUpIHsKLSAg
ICAgICAgICAgIG5lZ1ByZWZpeFBhdHRlcm5Gb3JDdXJyZW5jeSA9IG5lZ1ByZWZpeDsKLSAgICAg
ICAgICAgIG5lZ1N1ZmZpeFBhdHRlcm5Gb3JDdXJyZW5jeSA9IG5lZ1N1ZmZpeDsKLSAgICAgICAg
ICAgIHBvc1ByZWZpeFBhdHRlcm5Gb3JDdXJyZW5jeSA9IHBvc1ByZWZpeDsKLSAgICAgICAgICAg
IHBvc1N1ZmZpeFBhdHRlcm5Gb3JDdXJyZW5jeSA9IHBvc1N1ZmZpeDsKLSAgICAgICAgICAgIHBh
dHRlcm5UeXBlID0gdHlwZTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgKi8KIAotICAgIC8qIGFm
Zml4IGZvciBjdXJyZW5jeSBmb3JtYXR0aW5nIHdoZW4gdGhlIGN1cnJlbmN5IHNpZ24gaW4gdGhl
IHBhdHRlcm4KLSAgICAgKiBlcXVhbHMgdG8gMywgc3VjaCBhcyB0aGUgcGF0dGVybiBjb250YWlu
cyAzIGN1cnJlbmN5IHNpZ24gb3IKLSAgICAgKiB0aGUgZm9ybWF0dGVyIHN0eWxlIGlzIGN1cnJl
bmN5IHBsdXJhbCBmb3JtYXQgc3R5bGUuCi0gICAgICovCi0gICAgLyogVGhpcyBpcyBub3QgbmVl
ZGVkIGluIHRoZSBjbGFzcyBkZWNsYXJhdGlvbiwgc28gaXQgaXMgbW92ZWQgaW50byBkZWNpbWZt
cC5jcHAKLSAgICBzdHJ1Y3QgQWZmaXhlc0ZvckN1cnJlbmN5IDogcHVibGljIFVNZW1vcnkgewot
ICAgICAgICAvLyBuZWdhdGl2ZSBwcmVmaXgKLSAgICAgICAgVW5pY29kZVN0cmluZyBuZWdQcmVm
aXhGb3JDdXJyZW5jeTsKLSAgICAgICAgLy8gbmVnYXRpdmUgc3VmZml4Ci0gICAgICAgIFVuaWNv
ZGVTdHJpbmcgbmVnU3VmZml4Rm9yQ3VycmVuY3k7Ci0gICAgICAgIC8vIHBvc2l0aXZlIHByZWZp
eAotICAgICAgICBVbmljb2RlU3RyaW5nIHBvc1ByZWZpeEZvckN1cnJlbmN5OwotICAgICAgICAv
LyBwb3NpdGl2ZSBzdWZmaXgKLSAgICAgICAgVW5pY29kZVN0cmluZyBwb3NTdWZmaXhGb3JDdXJy
ZW5jeTsKLQotICAgICAgICBpbnQzMl90IGZvcm1hdFdpZHRoOwotCi0gICAgICAgIEFmZml4ZXNG
b3JDdXJyZW5jeShjb25zdCBVbmljb2RlU3RyaW5nJiBuZWdQcmVmaXgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBuZWdTdWZmaXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBwb3NQcmVmaXgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBwb3NTdWZmaXgpIHsKLSAg
ICAgICAgICAgIG5lZ1ByZWZpeEZvckN1cnJlbmN5ID0gbmVnUHJlZml4OwotICAgICAgICAgICAg
bmVnU3VmZml4Rm9yQ3VycmVuY3kgPSBuZWdTdWZmaXg7Ci0gICAgICAgICAgICBwb3NQcmVmaXhG
b3JDdXJyZW5jeSA9IHBvc1ByZWZpeDsKLSAgICAgICAgICAgIHBvc1N1ZmZpeEZvckN1cnJlbmN5
ID0gcG9zU3VmZml4OwotICAgICAgICB9Ci0gICAgfTsKLSAgICAqLwogCiAgICAgLy8gQWZmaXgg
cGF0dGVybiBzZXQgZm9yIGN1cnJlbmN5LgogICAgIC8vIEl0IGlzIGEgc2V0IG9mIEFmZml4UGF0
dGVybnNGb3JDdXJyZW5jeSwKQEAgLTIzODUsMTYgKzIyMTksNiBAQCBwcml2YXRlOgogICAgIC8v
IGNvdW50IG1hdGNoIG9yIG5vdC4KICAgICBIYXNodGFibGUqIGZBZmZpeFBhdHRlcm5zRm9yQ3Vy
cmVuY3k7CiAKLSAgICAvLyBGb2xsb3dpbmcgMiBhcmUgYWZmaXhlcyBmb3IgY3VycmVuY3kuCi0g
ICAgLy8gSXQgaXMgYSBoYXNoIG1hcCBmcm9tIHBsdXJhbCBjb3VudCB0byBBZmZpeGVzRm9yQ3Vy
cmVuY3kuCi0gICAgLy8gQWZmaXhlc0ZvckN1cnJlbmN5IHNhdmVzIHRoZSBuZWdhdGl2ZSBwcmVm
aXgsCi0gICAgLy8gbmVnYXRpdmUgc3VmZml4LCBwb3NpdGl2ZSBwcmVmaXgsIGFuZCBwb3NpdGl2
ZSBzdWZmaXggb2YgYSBwYXR0ZXJuLgotICAgIC8vIEl0IGlzIHVzZWQgZHVyaW5nIGN1cnJlbmN5
IGZvcm1hdHRpbmcgb25seSB3aGVuIHRoZSBjdXJyZW5jeSBzaWduIGNvdW50Ci0gICAgLy8gaXMg
My4gSW4gd2hpY2ggY2FzZSwgdGhlIGFmZml4ZXMgYXJlIGdldHRpbmcgZnJvbSBoZXJlLCBub3QK
LSAgICAvLyBmcm9tIHRoZSBmTmVnYXRpdmVQcmVmaXggZXRjLgotICAgIEhhc2h0YWJsZSogZkFm
Zml4ZXNGb3JDdXJyZW5jeTsgIC8vIGZvciBjdXJyZW50IHBhdHRlcm4KLSAgICBIYXNodGFibGUq
IGZQbHVyYWxBZmZpeGVzRm9yQ3VycmVuY3k7ICAvLyBmb3IgcGx1cmFsIHBhdHRlcm4KLQogICAg
IC8vIEluZm9ybWF0aW9uIG5lZWRlZCBmb3IgRGVjaW1hbEZvcm1hdCB0byBmb3JtYXQvcGFyc2Ug
Y3VycmVuY3kgcGx1cmFsLgogICAgIEN1cnJlbmN5UGx1cmFsSW5mbyogZkN1cnJlbmN5UGx1cmFs
SW5mbzsKIApAQCAtMjQwNCw5ICsyMjI4LDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIERlY2ltYWwg
Rm9ybWF0IFN0YXRpYyBTZXRzIHNpbmdsZXRvbi4KICAgICBjb25zdCBEZWNpbWFsRm9ybWF0U3Rh
dGljU2V0cyAqZlN0YXRpY1NldHM7Ci0JCi0gICAgLy8gQ3VycmVuY3kgVXNhZ2UoU1RBTkRBUkQg
dnMgQ0FTSCkKLSAgICBVQ3VycmVuY3lVc2FnZSBmQ3VycmVuY3lVc2FnZTsKIAogcHJvdGVjdGVk
OgogCkBAIC0yNDI2LDcgKzIyNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICogaGF2ZSBhIGNhcGFj
aXR5IG9mIGF0IGxlYXN0IDQKICAgICAgKiBAaW50ZXJuYWwKICAgICAgKi8KLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0RWZmZWN0aXZlQ3VycmVuY3koVUNoYXIqIHJlc3VsdCwgVUVycm9yQ29kZSYgZWMp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBnZXRFZmZlY3RpdmVDdXJyZW5jeShjaGFyMTZfdCog
cmVzdWx0LCBVRXJyb3JDb2RlJiBlYykgY29uc3Q7CiAKICAgLyoqIG51bWJlciBvZiBpbnRlZ2Vy
IGRpZ2l0cwogICAgKiBAc3RhYmxlIElDVSAyLjQKQEAgLTI0NDksMjcgKzIyNzAsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgICovCiAgICAgc3RhdGljIGNvbnN0IGludDMyX3QgIGtNYXhTY2llbnRpZmlj
SW50ZWdlckRpZ2l0czsKIAotI2lmIFVDT05GSUdfRk9STUFUX0ZBU1RQQVRIU180OQotIHByaXZh
dGU6Ci0gICAgLyoqCi0gICAgICogSW50ZXJuYWwgc3RhdGUuCi0gICAgICogQGludGVybmFsCi0g
ICAgICovCi0gICAgdWludDhfdCBmUmVzZXJ2ZWRbVU5VTV9ERUNJTUFMRk9STUFUX0lOVEVSTkFM
X1NJWkVdOwotCi0KLSAgICAvKioKLSAgICAgKiBDYWxsZWQgd2hlbmV2ZXIgYW55IHN0YXRlIGNo
YW5nZXMuIFJlY29tcHV0ZXMgd2hldGhlciBmYXN0cGF0aCBpcyBPSyB0byB1c2UuCi0gICAgICov
Ci0gICAgdm9pZCBoYW5kbGVDaGFuZ2VkKCk7Ci0jZW5kaWYKIH07CiAKLWlubGluZSBjb25zdCBV
bmljb2RlU3RyaW5nICYKLURlY2ltYWxGb3JtYXQ6OmdldENvbnN0U3ltYm9sKERlY2ltYWxGb3Jt
YXRTeW1ib2xzOjpFTnVtYmVyRm9ybWF0U3ltYm9sIHN5bWJvbCkgY29uc3QgewotICAgIHJldHVy
biBmU3ltYm9scy0+Z2V0Q29uc3RTeW1ib2woc3ltYm9sKTsKLX0KLQogVV9OQU1FU1BBQ0VfRU5E
CiAKICNlbmRpZiAvKiAjaWYgIVVDT05GSUdfTk9fRk9STUFUVElORyAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS9kb2NtYWluLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L2RvY21haW4uaAppbmRleCBkZjNmZTg0MmFhY2YxZGRlZWIxZWM3N2UxYjJkNDBlM2FlNWY3NTc2
Li42MzY5MzFjZjI1ODIxYmZhZTVjOGNkYmYzNTY1YmI1NDhkNmEzMDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL2RvY21haW4uaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL2RvY21haW4uaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmlj
b2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8v
d3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENPUFlSSUdI
VDogCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTctMjAxMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKQEAgLTk2LDYgKzk4LDExIEBACiAgKiAgICAgPHRkPkMg
QVBJPC90ZD4KICAqICAgPC90cj4KICAqICAgPHRyPgorICogICAgIDx0ZD5Db2RlcGFnZSBEZXRl
Y3Rpb248L3RkPgorICogICAgIDx0ZD51Y3NkZXQuaDwvdGQ+CisgKiAgICAgPHRkPkMgQVBJPC90
ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgogICogICAgIDx0ZD5Vbmljb2RlIFRleHQgQ29tcHJl
c3Npb248L3RkPgogICogICAgIDx0ZD51Y252Lmg8YnIvPihlbmNvZGluZyBuYW1lICJTQ1NVIiBv
ciAiQk9DVS0xIik8L3RkPgogICogICAgIDx0ZD5DIEFQSTwvdGQ+CkBAIC0xMzMsNyArMTQwLDcg
QEAKICAqICAgPHRyPgogICogICAgIDx0ZD5OdW1iZXIgRm9ybWF0dGluZzwvdGQ+CiAgKiAgICAg
PHRkPnVudW0uaDwvdGQ+Ci0gKiAgICAgPHRkPmljdTo6TnVtYmVyRm9ybWF0PC90ZD4KKyAqICAg
ICA8dGQ+aWN1OjpudW1iZXI6Ok51bWJlckZvcm1hdHRlciAoSUNVIDYwKykgb3IgaWN1OjpOdW1i
ZXJGb3JtYXQgKG9sZGVyIHZlcnNpb25zKTwvdGQ+CiAgKiAgIDwvdHI+CiAgKiAgIDx0cj4KICAq
ICAgICA8dGQ+TnVtYmVyIFNwZWxsb3V0PGJyLz4oUnVsZSBCYXNlZCBOdW1iZXIgRm9ybWF0dGlu
Zyk8L3RkPgpAQCAtMTQ3LDcgKzE1NCw3IEBACiAgKiAgIDwvdHI+CiAgKiAgIDx0cj4KICAqICAg
ICA8dGQ+QmlkaXJlY3Rpb25hbCBBbGdvcml0aG08L3RkPgotICogICAgIDx0ZD51YmlkaS5oPC90
ZD4KKyAqICAgICA8dGQ+dWJpZGkuaCwgdWJpZGl0cmFuc2Zvcm0uaDwvdGQ+CiAgKiAgICAgPHRk
PkMgQVBJPC90ZD4KICAqICAgPC90cj4KICAqICAgPHRyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9kdGZtdHN5bS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9kdGZtdHN5
bS5oCmluZGV4IDc4ZDBjZWI1YTkwOTg2M2NmN2IxOWRjNTViZDhhYmUyYzJjYWFjMDIuLmZlOTE0
YjQ2MWU2MjQ5ZjYwMmU3ZWU1MTEzODg4MzZhODA0YTJjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvZHRmbXRzeW0uaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2R0
Zm10c3ltLmgKQEAgLTEsNiArMSw4IEBACi0vKiAgCisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5p
Y29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDov
L3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAorLyoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCi0qICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3Mg
TWFjaGluZXMKKyogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNp
bmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJl
c2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTE0LDIyICsxNiwyMyBAQAog
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkIHRvIG1hdGNoIEMrKyBjb252ZW50
aW9ucwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCi0gICAgIAorCiAjaWZuZGVmIERURk1U
U1lNX0gKICNkZWZpbmUgRFRGTVRTWU1fSAotIAorCiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMu
aCIKIAogI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKIAogI2luY2x1ZGUgInVuaWNvZGUvY2Fs
ZW5kYXIuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0cmVudW0uaCIKICNpbmNsdWRlICJ1bmljb2Rl
L3VvYmplY3QuaCIKICNpbmNsdWRlICJ1bmljb2RlL2xvY2lkLmgiCiAjaW5jbHVkZSAidW5pY29k
ZS91ZGF0LmgiCiAjaW5jbHVkZSAidW5pY29kZS91cmVzLmgiCiAKIC8qKgotICogXGZpbGUgCisg
KiBcZmlsZQogICogXGJyaWVmIEMrKyBBUEk6IFN5bWJvbHMgZm9yIGZvcm1hdHRpbmcgZGF0ZXMu
CiAgKi8KIApAQCAtMTE1LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAgKiBkYXRhIGZvciB0aGUg
ZGVmYXVsdCBsb2NhbGUsIGl0IHdpbGwgcmV0dXJuIGEgbGFzdC1yZXNvcnQgb2JqZWN0CiAgICAg
ICogYmFzZWQgb24gaGFyZC1jb2RlZCBzdHJpbmdzLgogICAgICAqCi0gICAgICogQHBhcmFtIHR5
cGUgICAgICBUeXBlIG9mIGNhbGVuZGFyIChhcyByZXR1cm5lZCBieSBDYWxlbmRhcjo6Z2V0VHlw
ZSkuIAorICAgICAqIEBwYXJhbSB0eXBlICAgICAgVHlwZSBvZiBjYWxlbmRhciAoYXMgcmV0dXJu
ZWQgYnkgQ2FsZW5kYXI6OmdldFR5cGUpLgogICAgICAqICAgICAgICAgICAgICAgICAgV2lsbCBi
ZSB1c2VkIHRvIGFjY2VzcyB0aGUgY29ycmVjdCBzZXQgb2Ygc3RyaW5ncy4KICAgICAgKiAgICAg
ICAgICAgICAgICAgIChOVUxMIG9yIGVtcHR5IHN0cmluZyBkZWZhdWx0cyB0byAiZ3JlZ29yaWFu
Ii4pCiAgICAgICogQHBhcmFtIHN0YXR1cyAgICBTdGF0dXMgY29kZS4gIEZhaWx1cmUKQEAgLTEz
MCw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgICogcmVzb3VyY2VzIGZvciB0aGUgZ2l2ZW4gbG9j
YWxlLCBpbiB0aGUgZGVmYXVsdCBjYWxlbmRhciAoR3JlZ29yaWFuKS4KICAgICAgKgogICAgICAq
IEBwYXJhbSBsb2NhbGUgICAgTG9jYWxlIHRvIGxvYWQgZm9ybWF0IGRhdGEgZnJvbS4KLSAgICAg
KiBAcGFyYW0gdHlwZSAgICAgIFR5cGUgb2YgY2FsZW5kYXIgKGFzIHJldHVybmVkIGJ5IENhbGVu
ZGFyOjpnZXRUeXBlKS4gCisgICAgICogQHBhcmFtIHR5cGUgICAgICBUeXBlIG9mIGNhbGVuZGFy
IChhcyByZXR1cm5lZCBieSBDYWxlbmRhcjo6Z2V0VHlwZSkuCiAgICAgICogICAgICAgICAgICAg
ICAgICBXaWxsIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBjb3JyZWN0IHNldCBvZiBzdHJpbmdzLgog
ICAgICAqICAgICAgICAgICAgICAgICAgKE5VTEwgb3IgZW1wdHkgc3RyaW5nIGRlZmF1bHRzIHRv
ICJncmVnb3JpYW4iLikKICAgICAgKiBAcGFyYW0gc3RhdHVzICAgIFN0YXR1cyBjb2RlLiAgRmFp
bHVyZQpAQCAtMjcwLDkgKzI3MywxNSBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1UgMy42
CiAgICAgICovCiAgICAgZW51bSBEdENvbnRleHRUeXBlIHsKLSAgICAgICAgIEZPUk1BVCwKLSAg
ICAgICAgIFNUQU5EQUxPTkUsCi0gICAgICAgICBEVF9DT05URVhUX0NPVU5UCisgICAgICAgIEZP
Uk1BVCwKKyAgICAgICAgU1RBTkRBTE9ORSwKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJ
CisgICAgICAgIC8qKgorICAgICAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1h
bCBEdENvbnRleHRUeXBlIHZhbHVlLgorICAgICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhl
IG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQy
MC4KKyAgICAgICAgICovCisgICAgICAgIERUX0NPTlRFWFRfQ09VTlQKKyNlbmRpZiAgLy8gVV9I
SURFX0RFUFJFQ0FURURfQVBJCiAgICAgfTsKIAogICAgIC8qKgpAQCAtMjgwLDE3ICsyODksMjEg
QEAgcHVibGljOgogICAgICAqIEBzdGFibGUgSUNVIDMuNgogICAgICAqLwogICAgIGVudW0gRHRX
aWR0aFR5cGUgewotICAgICAgICAgQUJCUkVWSUFURUQsCi0gICAgICAgICBXSURFLAotICAgICAg
ICAgTkFSUk9XLAotICAgICAgICAgLyoqCi0gICAgICAgICAgKiBTaG9ydCB3aWR0aCBpcyBjdXJy
ZW50bHkgb25seSBzdXBwb3J0ZWQgZm9yIHdlZWtkYXkgbmFtZXMuCi0gICAgICAgICAgKiBAc3Rh
YmxlIElDVSA1MQotICAgICAgICAgICovCi0gICAgICAgICBTSE9SVCwKLSAgICAgICAgIC8qKgot
ICAgICAgICAgICovCi0gICAgICAgICBEVF9XSURUSF9DT1VOVCA9IDQKKyAgICAgICAgQUJCUkVW
SUFURUQsCisgICAgICAgIFdJREUsCisgICAgICAgIE5BUlJPVywKKyAgICAgICAgLyoqCisgICAg
ICAgICAqIFNob3J0IHdpZHRoIGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCBmb3Igd2Vla2Rh
eSBuYW1lcy4KKyAgICAgICAgICogQHN0YWJsZSBJQ1UgNTEKKyAgICAgICAgICovCisgICAgICAg
IFNIT1JULAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAgICAgLyoqCisgICAg
ICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIER0V2lkdGhUeXBlIHZhbHVl
LgorICAgICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNo
YW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgICAgICovCisgICAg
ICAgIERUX1dJRFRIX0NPVU5UID0gNAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkK
ICAgICB9OwogCiAgICAgLyoqCkBAIC00MTQsMzMgKzQyNywzMCBAQCBwdWJsaWM6CiAgICAgICog
ZG9lc24ndCBzcGVjaWZ5IGFueSB0aW1lIHNlcGFyYXRvciwgYW5kIGFsd2F5cyByZWNvZ25pemVk
IHdoZW4gcGFyc2luZy4KICAgICAgKiBAaW50ZXJuYWwKICAgICAgKi8KLSAgICBzdGF0aWMgY29u
c3QgVUNoYXIgREVGQVVMVF9USU1FX1NFUEFSQVRPUiA9IDB4MDAzYTsgIC8vICc6JworICAgIHN0
YXRpYyBjb25zdCBjaGFyMTZfdCBERUZBVUxUX1RJTUVfU0VQQVJBVE9SID0gMHgwMDNhOyAgLy8g
JzonCiAKICAgICAvKioKICAgICAgKiBUaGlzIGFsdGVybmF0ZSB0aW1lIHNlcGFyYXRvciBpcyBh
bHdheXMgcmVjb2duaXplZCB3aGVuIHBhcnNpbmcuCiAgICAgICogQGludGVybmFsCiAgICAgICov
Ci0gICAgc3RhdGljIGNvbnN0IFVDaGFyIEFMVEVSTkFURV9USU1FX1NFUEFSQVRPUiA9IDB4MDAy
ZTsgIC8vICcuJwotI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCisgICAgc3RhdGlj
IGNvbnN0IGNoYXIxNl90IEFMVEVSTkFURV9USU1FX1NFUEFSQVRPUiA9IDB4MDAyZTsgIC8vICcu
JwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBHZXRzIHRoZSB0
aW1lIHNlcGFyYXRvciBzdHJpbmcuIEZvciBleGFtcGxlOiAiOiIuCiAgICAgICogQHBhcmFtIHJl
c3VsdCBPdXRwdXQgcGFyYW0gd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0aW1lIHNlcGFyYXRvciBz
dHJpbmcuCiAgICAgICogQHJldHVybiAgICAgICBBIHJlZmVyZW5jZSB0byAncmVzdWx0Jy4KLSAg
ICAgKiBAZHJhZnQgSUNVIDU1CisgICAgICogQGludGVybmFsCiAgICAgICovCiAgICAgVW5pY29k
ZVN0cmluZyYgZ2V0VGltZVNlcGFyYXRvclN0cmluZyhVbmljb2RlU3RyaW5nJiByZXN1bHQpIGNv
bnN0OwogCiAgICAgLyoqCiAgICAgICogU2V0cyB0aGUgdGltZSBzZXBhcmF0b3Igc3RyaW5nLiBG
b3IgZXhhbXBsZTogIjoiLgogICAgICAqIEBwYXJhbSBuZXdUaW1lU2VwYXJhdG9yIHRoZSBuZXcg
dGltZSBzZXBhcmF0b3Igc3RyaW5nLgotICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBAaW50
ZXJuYWwKICAgICAgKi8KICAgICB2b2lkIHNldFRpbWVTZXBhcmF0b3JTdHJpbmcoY29uc3QgVW5p
Y29kZVN0cmluZyYgbmV3VGltZVNlcGFyYXRvcik7Ci0jZW5kaWYgIC8qIFVfSElERV9EUkFGVF9B
UEkgKi8KKyNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogCi0jaWZuZGVmIFVfSElE
RV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBHZXRzIGN5Y2xpYyB5ZWFyIG5hbWUgc3RyaW5n
cyBpZiB0aGUgY2FsZW5kYXIgaGFzIHRoZW0sIGJ5IHdpZHRoIGFuZCBjb250ZXh0LgogICAgICAq
IEZvciBleGFtcGxlOiAiamlhLXppIiwgInlpLWNob3UiLCBldGMuCkBAIC00NDksNyArNDU5LDcg
QEAgcHVibGljOgogICAgICAqIEBwYXJhbSB3aWR0aCAgICAgVGhlIHJlcXVlc3RlZCBuYW1lIHdp
ZHRoOiBXSURFLCBBQkJSRVZJQVRFRCwgTkFSUk9XLgogICAgICAqIEByZXR1cm4gICAgICAgICAg
VGhlIHllYXIgbmFtZSBzdHJpbmdzIChEYXRlRm9ybWF0U3ltYm9scyByZXRhaW5zIG93bmVyc2hp
cCksCiAgICAgICogICAgICAgICAgICAgICAgICBvciBudWxsIGlmIHRoZXkgYXJlIG5vdCBhdmFp
bGFibGUgZm9yIHRoaXMgY2FsZW5kYXIuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBz
dGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgY29uc3QgVW5pY29kZVN0cmluZyogZ2V0WWVhck5h
bWVzKGludDMyX3QmIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIER0Q29udGV4
dFR5cGUgY29udGV4dCwgRHRXaWR0aFR5cGUgd2lkdGgpIGNvbnN0OwpAQCAtNDYxLDcgKzQ3MSw3
IEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gY291bnQgICAgIFRoZSBsZW5ndGggb2YgdGhlIGFy
cmF5LgogICAgICAqIEBwYXJhbSBjb250ZXh0ICAgVGhlIHVzYWdlIGNvbnRleHQ6IEZPUk1BVCwg
U1RBTkRBTE9ORSAoY3VycmVudGx5IG9ubHkgRk9STUFUIGlzIHN1cHBvcnRlZCkuCiAgICAgICog
QHBhcmFtIHdpZHRoICAgICBUaGUgbmFtZSB3aWR0aDogV0lERSwgQUJCUkVWSUFURUQsIE5BUlJP
VyAoY3VycmVudGx5IG9ubHkgQUJCUkVWSUFURUQgaXMgc3VwcG9ydGVkKS4KLSAgICAgKiBAZHJh
ZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICB2b2lkIHNldFll
YXJOYW1lcyhjb25zdCBVbmljb2RlU3RyaW5nKiB5ZWFyTmFtZXMsIGludDMyX3QgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRHRDb250ZXh0VHlwZSBjb250ZXh0LCBEdFdpZHRo
VHlwZSB3aWR0aCk7CkBAIC00NzQsNyArNDg0LDcgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSB3
aWR0aCAgICAgVGhlIHJlcXVlc3RlZCBuYW1lIHdpZHRoOiBXSURFLCBBQkJSRVZJQVRFRCwgTkFS
Uk9XLgogICAgICAqIEByZXR1cm4gICAgICAgICAgVGhlIHpvZGlhYyBuYW1lIHN0cmluZ3MgKERh
dGVGb3JtYXRTeW1ib2xzIHJldGFpbnMgb3duZXJzaGlwKSwKICAgICAgKiAgICAgICAgICAgICAg
ICAgIG9yIG51bGwgaWYgdGhleSBhcmUgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBjYWxlbmRhci4K
LSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAg
ICBjb25zdCBVbmljb2RlU3RyaW5nKiBnZXRab2RpYWNOYW1lcyhpbnQzMl90JiBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEdENvbnRleHRUeXBlIGNvbnRleHQsIER0V2lkdGhU
eXBlIHdpZHRoKSBjb25zdDsKQEAgLTQ4NiwxMyArNDk2LDExIEBAIHB1YmxpYzoKICAgICAgKiBA
cGFyYW0gY291bnQgICAgIFRoZSBsZW5ndGggb2YgdGhlIGFycmF5LgogICAgICAqIEBwYXJhbSBj
b250ZXh0ICAgVGhlIHVzYWdlIGNvbnRleHQ6IEZPUk1BVCwgU1RBTkRBTE9ORSAoY3VycmVudGx5
IG9ubHkgRk9STUFUIGlzIHN1cHBvcnRlZCkuCiAgICAgICogQHBhcmFtIHdpZHRoICAgICBUaGUg
bmFtZSB3aWR0aDogV0lERSwgQUJCUkVWSUFURUQsIE5BUlJPVyAoY3VycmVudGx5IG9ubHkgQUJC
UkVWSUFURUQgaXMgc3VwcG9ydGVkKS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0
YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICB2b2lkIHNldFpvZGlhY05hbWVzKGNvbnN0IFVuaWNv
ZGVTdHJpbmcqIHpvZGlhY05hbWVzLCBpbnQzMl90IGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIER0Q29udGV4dFR5cGUgY29udGV4dCwgRHRXaWR0aFR5cGUgd2lkdGgpOwogCi0j
ZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLQogI2lmbmRlZiBVX0hJREVfSU5URVJOQUxf
QVBJCiAgICAgLyoqCiAgICAgICogU29tZXdoYXQgdGVtcG9yYXJ5IGNvbnN0YW50cyBmb3IgbGVh
cCBtb250aCBwYXR0ZXJuIHR5cGVzLCBhZGVxdWF0ZSBmb3Igc3VwcG9ydGluZwpAQCAtNTU5LDcg
KzU2Nyw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuICAgIHRoZSBub24tbG9jYWxpemVkIGRh
dGUtdGltZSBwYXR0ZXJuIGNoYXJhY3RlcnMKICAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAg
Ki8KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgKiBVX0VYUE9SVDIgZ2V0UGF0dGVyblVDaGFycyh2
b2lkKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhcjE2X3QgKiBVX0VYUE9SVDIgZ2V0UGF0dGVyblVD
aGFycyh2b2lkKTsKIAogICAgIC8qKgogICAgICAqIEdldHMgbG9jYWxpemVkIGRhdGUtdGltZSBw
YXR0ZXJuIGNoYXJhY3RlcnMuIEZvciBleGFtcGxlOiAndScsICd0JywgZXRjLgpAQCAtODU1LDYg
Kzg2Myw0MiBAQCBwcml2YXRlOgogICAgICAqLwogICAgICBVQm9vbCBmQ2FwaXRhbGl6YXRpb25b
a0NhcENvbnRleHRVc2FnZVR5cGVDb3VudF1bMl07CiAKKyAgICAvKioKKyAgICAgKiBBYmJyZXZp
YXRlZCAoPT0gc2hvcnQpIGRheSBwZXJpb2Qgc3RyaW5ncy4KKyAgICAgKi8KKyAgICBVbmljb2Rl
U3RyaW5nICAqZkFiYnJldmlhdGVkRGF5UGVyaW9kczsKKyAgICBpbnQzMl90ICAgICAgICAgZkFi
YnJldmlhdGVkRGF5UGVyaW9kc0NvdW50OworCisgICAgLyoqCisgICAgICogV2lkZSBkYXkgcGVy
aW9kIHN0cmluZ3MuCisgICAgICovCisgICAgVW5pY29kZVN0cmluZyAgKmZXaWRlRGF5UGVyaW9k
czsKKyAgICBpbnQzMl90ICAgICAgICAgZldpZGVEYXlQZXJpb2RzQ291bnQ7CisKKyAgICAvKioK
KyAgICAgKiBOYXJyb3cgZGF5IHBlcmlvZCBzdHJpbmdzLgorICAgICAqLworICAgIFVuaWNvZGVT
dHJpbmcgICpmTmFycm93RGF5UGVyaW9kczsKKyAgICBpbnQzMl90ICAgICAgICAgZk5hcnJvd0Rh
eVBlcmlvZHNDb3VudDsKKworICAgIC8qKgorICAgICAqIFN0YW5kLWFsb25lIGFiYnJldmlhdGVk
ICg9PSBzaG9ydCkgZGF5IHBlcmlvZCBzdHJpbmdzLgorICAgICAqLworICAgIFVuaWNvZGVTdHJp
bmcgICpmU3RhbmRhbG9uZUFiYnJldmlhdGVkRGF5UGVyaW9kczsKKyAgICBpbnQzMl90ICAgICAg
ICAgZlN0YW5kYWxvbmVBYmJyZXZpYXRlZERheVBlcmlvZHNDb3VudDsKKworICAgIC8qKgorICAg
ICAqIFN0YW5kLWFsb25lIHdpZGUgZGF5IHBlcmlvZCBzdHJpbmdzLgorICAgICAqLworICAgIFVu
aWNvZGVTdHJpbmcgICpmU3RhbmRhbG9uZVdpZGVEYXlQZXJpb2RzOworICAgIGludDMyX3QgICAg
ICAgICBmU3RhbmRhbG9uZVdpZGVEYXlQZXJpb2RzQ291bnQ7CisKKyAgICAvKioKKyAgICAgKiBT
dGFuZC1hbG9uZSBuYXJyb3cgZGF5IHBlcmlvZCBzdHJpbmdzLgorICAgICAqLworICAgIFVuaWNv
ZGVTdHJpbmcgICpmU3RhbmRhbG9uZU5hcnJvd0RheVBlcmlvZHM7CisgICAgaW50MzJfdCAgICAg
ICAgIGZTdGFuZGFsb25lTmFycm93RGF5UGVyaW9kc0NvdW50OworCiBwcml2YXRlOgogICAgIC8q
KiB2YWxpZC9hY3R1YWwgbG9jYWxlIGluZm9ybWF0aW9uIAogICAgICAqICB0aGVzZSBhcmUgYWx3
YXlzIElDVSBsb2NhbGVzLCBzbyB0aGUgbGVuZ3RoIHNob3VsZCBub3QgYmUgYSBwcm9ibGVtCkBA
IC05MzQsNyArOTc4LDcgQEAgcHJpdmF0ZToKICAgICAgKiBSZXR1cm5zIHRoZSBkYXRlIGZvcm1h
dCBmaWVsZCBpbmRleCBvZiB0aGUgcGF0dGVybiBjaGFyYWN0ZXIgYywKICAgICAgKiBvciBVREFU
X0ZJRUxEX0NPVU5UIGlmIGMgaXMgbm90IGEgcGF0dGVybiBjaGFyYWN0ZXIuCiAgICAgICovCi0g
ICAgc3RhdGljIFVEYXRlRm9ybWF0RmllbGQgVV9FWFBPUlQyIGdldFBhdHRlcm5DaGFySW5kZXgo
VUNoYXIgYyk7CisgICAgc3RhdGljIFVEYXRlRm9ybWF0RmllbGQgVV9FWFBPUlQyIGdldFBhdHRl
cm5DaGFySW5kZXgoY2hhcjE2X3QgYyk7CiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIFRSVUUg
aWYgZiAod2l0aCBpdHMgcGF0dGVybiBjaGFyYWN0ZXIgcmVwZWF0ZWQgY291bnQgdGltZXMpIGlz
IGEgbnVtZXJpYyBmaWVsZC4KQEAgLTk0NCw3ICs5ODgsNyBAQCBwcml2YXRlOgogICAgIC8qKgog
ICAgICAqIFJldHVybnMgVFJVRSBpZiBjIChyZXBlYXRlZCBjb3VudCB0aW1lcykgaXMgdGhlIHBh
dHRlcm4gY2hhcmFjdGVyIGZvciBhIG51bWVyaWMgZmllbGQuCiAgICAgICovCi0gICAgc3RhdGlj
IFVCb29sIFVfRVhQT1JUMiBpc051bWVyaWNQYXR0ZXJuQ2hhcihVQ2hhciBjLCBpbnQzMl90IGNv
dW50KTsKKyAgICBzdGF0aWMgVUJvb2wgVV9FWFBPUlQyIGlzTnVtZXJpY1BhdHRlcm5DaGFyKGNo
YXIxNl90IGMsIGludDMyX3QgY291bnQpOwogcHVibGljOgogI2lmbmRlZiBVX0hJREVfSU5URVJO
QUxfQVBJCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2R0aW50
cnYuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRpbnRydi5oCmluZGV4IDViYWNjZTg4NDQ2
NzQ4ZTAzZTNiOTQ5ZDliZjUyODFlYTg1YTU5NDMuLjEwYjU2NmEzOWE4YmUzYjAwZWJmZDliZDQy
ZjZkZDhjOGZkNmVkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRpbnRy
di5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRpbnRydi5oCkBAIC0xLDMgKzEsNSBA
QAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExp
Y2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0
bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9kdGl0dmZtdC5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9kdGl0dmZtdC5oCmluZGV4IGZiMjdlZWM0ODE1OGQyZThiYmYxYjc1ODRmMjRjOTVk
ODJiZGQ4NWYuLjVlYWE1NTlkMGVhZjQ4YTQxNmVjYjAzNDA2YWY3NThmMjc5MDEwYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRpdHZmbXQuaAorKysgYi9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL2R0aXR2Zm10LmgKQEAgLTEsNSArMSw3IEBACisvLyDCqSAyMDE2IGFuZCBs
YXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVz
ZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCi0qIENvcHlyaWdodCAoQykgMjAwOC0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNiwg
SW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKICogb3RoZXJz
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtOTMs
OSArOTUsMTEgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAqCiAgKiA8UD4KICAqIFRoZSBjYWxlbmRh
ciBmaWVsZHMgd2Ugc3VwcG9ydCBmb3IgaW50ZXJ2YWwgZm9ybWF0dGluZyBhcmU6Ci0gKiB5ZWFy
LCBtb250aCwgZGF0ZSwgZGF5LW9mLXdlZWssIGFtLXBtLCBob3VyLCBob3VyLW9mLWRheSwgYW5k
IG1pbnV0ZS4KKyAqIHllYXIsIG1vbnRoLCBkYXRlLCBkYXktb2Ytd2VlaywgYW0tcG0sIGhvdXIs
IGhvdXItb2YtZGF5LCBtaW51dGUsIGFuZCBzZWNvbmQKKyAqICh0aG91Z2ggd2UgZG8gbm90IGN1
cnJlbnRseSBoYXZlIHNwZWNpZmljIGludGVydmFsRm9ybWF0IGRhdGUgZm9yIHNrZWxldG9ucwor
ICogd2l0aCBzZWNvbmRzKS4KICAqIFRob3NlIGNhbGVuZGFyIGZpZWxkcyBjYW4gYmUgZGVmaW5l
ZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgotICogeWVhciA+ICBtb250aCA+IGRhdGUgPiBob3Vy
IChpbiBkYXkpID4gIG1pbnV0ZQorICogeWVhciA+ICBtb250aCA+IGRhdGUgPiBob3VyIChpbiBk
YXkpID4gIG1pbnV0ZSA+IHNlY29uZAogICoKICAqIFRoZSBsYXJnZXN0IGRpZmZlcmVudCBjYWxl
bmRhciBmaWVsZHMgYmV0d2VlbiAyIGNhbGVuZGFycyBpcyB0aGUKICAqIGZpcnN0IGRpZmZlcmVu
dCBjYWxlbmRhciBmaWVsZCBpbiBhYm92ZSBvcmRlci4KQEAgLTM4Nyw2ICszOTEsOSBAQCBwdWJs
aWM6CiAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0
byBleGlzdGluZyBjb250ZW50cy4KICAgICAgKiBAcGFyYW0gZmllbGRQb3NpdGlvbiAgICAgT24g
aW5wdXQ6IGFuIGFsaWdubWVudCBmaWVsZCwgaWYgZGVzaXJlZC4KICAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgT24gb3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZp
ZWxkLgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZSBtYXkgYmUgbXVsdGlw
bGUgaW5zdGFuY2VzIG9mIGEgZ2l2ZW4gZmllbGQgdHlwZQorICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBhbiBpbnRlcnZhbCBmb3JtYXQ7IGluIHRoaXMgY2FzZSB0aGUgZmllbGRQ
b3NpdGlvbgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRzIHJlZmVyIHRv
IHRoZSBmaXJzdCBpbnN0YW5jZS4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgICAgICAgICAgT3V0
cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCiAgICAgICogQHJl
dHVybiAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4K
ICAgICAgKiBAc3RhYmxlIElDVSA0LjAKQEAgLTQwNiw2ICs0MTMsOSBAQCBwdWJsaWM6CiAgICAg
ICogICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0byBleGlzdGlu
ZyBjb250ZW50cy4KICAgICAgKiBAcGFyYW0gZmllbGRQb3NpdGlvbiAgICAgT24gaW5wdXQ6IGFu
IGFsaWdubWVudCBmaWVsZCwgaWYgZGVzaXJlZC4KICAgICAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgT24gb3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLgorICAg
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgaW5zdGFu
Y2VzIG9mIGEgZ2l2ZW4gZmllbGQgdHlwZQorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBhbiBpbnRlcnZhbCBmb3JtYXQ7IGluIHRoaXMgY2FzZSB0aGUgZmllbGRQb3NpdGlvbgor
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRzIHJlZmVyIHRvIHRoZSBmaXJz
dCBpbnN0YW5jZS4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgICAgICAgICAgT3V0cHV0IHBhcmFt
IGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCiAgICAgICogQHJldHVybiAgICAg
ICAgICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4KICAgICAgKiBA
c3RhYmxlIElDVSA0LjAKQEAgLTQzMCw2ICs0NDAsOSBAQCBwdWJsaWM6CiAgICAgICogICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0byBleGlzdGluZyBjb250ZW50
cy4KICAgICAgKiBAcGFyYW0gZmllbGRQb3NpdGlvbiAgICAgT24gaW5wdXQ6IGFuIGFsaWdubWVu
dCBmaWVsZCwgaWYgZGVzaXJlZC4KICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgT24g
b3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLgorICAgICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIGEg
Z2l2ZW4gZmllbGQgdHlwZQorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhbiBp
bnRlcnZhbCBmb3JtYXQ7IGluIHRoaXMgY2FzZSB0aGUgZmllbGRQb3NpdGlvbgorICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRzIHJlZmVyIHRvIHRoZSBmaXJzdCBpbnN0YW5j
ZS4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgICAgICAgICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3
aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCiAgICAgICogICAgICAgICAgICAgICAgICAgICAg
ICAgIENhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgaXQgaXMgU1VDQ0VTUwogICAgICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdCB0aGUgZnVuY3Rpb24gZW50cmFuY2UKQEAgLTQ5Myw3ICs1
MDYsMTMgQEAgcHVibGljOgogCiAKICAgICAvKioKLSAgICAgKiBHZXRzIHRoZSBkYXRlIGZvcm1h
dHRlcgorICAgICAqIEdldHMgdGhlIGRhdGUgZm9ybWF0dGVyLiBUaGUgRGF0ZUludGVydmFsRm9y
bWF0IGluc3RhbmNlIGNvbnRpbnVlcyB0byBvd24KKyAgICAgKiB0aGUgcmV0dXJuZWQgRGF0ZUZv
cm1hdHRlciBvYmplY3QsIGFuZCB3aWxsIHVzZSBhbmQgcG9zc2libHkgbW9kaWZ5IGl0CisgICAg
ICogZHVyaW5nIGZvcm1hdCBvcGVyYXRpb25zLiBJbiBhIG11bHRpLXRocmVhZGVkIGVudmlyb25t
ZW50LCB0aGUgcmV0dXJuZWQKKyAgICAgKiBEYXRlRm9ybWF0IGNhbiBvbmx5IGJlIHVzZWQgaWYg
aXQgaXMgY2VydGFpbiB0aGF0IG5vIG90aGVyIHRocmVhZHMgYXJlCisgICAgICogY29uY3VycmVu
dGx5IHVzaW5nIHRoaXMgRGF0ZUludGVydmFsRm9ybWF0dGVyLCBldmVuIGZvciBub21pbmFsbHkg
Y29uc3QKKyAgICAgKiBmdW5jdGlvbnMuCisgICAgICoKICAgICAgKiBAcmV0dXJuIHRoZSBkYXRl
IGZvcm1hdHRlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBkYXRlIGludGVydmFsIGZvcm1hdHRlci4K
ICAgICAgKiBAc3RhYmxlIElDVSA0LjAKICAgICAgKi8KQEAgLTU5OCw3ICs2MTcsNyBAQCBwcml2
YXRlOgogCiAgICAgLyoqCiAgICAgICogZGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgICAqIEBpbnRl
cm5hbCBJQ1UgNC4wCisgICAgICogQGludGVybmFsIChwcml2YXRlKQogICAgICAqLwogICAgIERh
dGVJbnRlcnZhbEZvcm1hdCgpOwogCkBAIC02NDIsMjcgKzY2MSwzMCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYg
c3RhdHVzKTsKIAogICAgIC8qKgotICAgICAqIENyZWF0ZSBhIHNpbXBsZSBkYXRlL3RpbWUgZm9y
bWF0dGVyIGZyb20gc2tlbGV0b24sIGdpdmVuIGxvY2FsZSwKLSAgICAgKiBhbmQgZGF0ZSB0aW1l
IHBhdHRlcm4gZ2VuZXJhdG9yLgotICAgICAqCi0gICAgICogQHBhcmFtIHNrZWxldG9uICB0aGUg
c2tlbGV0b24gb24gd2hpY2ggZGF0ZSBmb3JtYXQgYmFzZWQuCi0gICAgICogQHBhcmFtIGxvY2Fs
ZSAgICB0aGUgZ2l2ZW4gbG9jYWxlLgotICAgICAqIEBwYXJhbSBkdHBuZyAgICAgdGhlIGRhdGUg
dGltZSBwYXR0ZXJuIGdlbmVyYXRvci4KLSAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBw
YXJhbSB0byBiZSBzZXQgdG8gc3VjY2Vzcy9mYWlsdXJlIGNvZGUuCi0gICAgICogICAgICAgICAg
ICAgICAgICBJZiBpdCBpcyBmYWlsdXJlLCB0aGUgcmV0dXJuZWQgZGF0ZSBmb3JtYXR0ZXIgd2ls
bAotICAgICAqICAgICAgICAgICAgICAgICAgYmUgTlVMTC4KLSAgICAgKiBAcmV0dXJuICAgICAg
ICAgIGEgc2ltcGxlIGRhdGUgZm9ybWF0dGVyIHdoaWNoIHRoZSBjYWxsZXIgb3ducy4KKyAgICAg
KiAgQmVsb3cgYXJlIGZvciBnZW5lcmF0aW5nIGludGVydmFsIHBhdHRlcm5zIGxvY2FsIHRvIHRo
ZSBmb3JtYXR0ZXIKICAgICAgKi8KLSAgICBzdGF0aWMgU2ltcGxlRGF0ZUZvcm1hdCogVV9FWFBP
UlQyIGNyZWF0ZVNERlBhdHRlcm5JbnN0YW5jZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBza2VsZXRvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb2NhbGUmIGxvY2FsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZVBhdHRlcm5HZW5lcmF0
b3IqIGR0cG5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUmIHN0YXR1cyk7Ci0KIAogICAgIC8qKgotICAgICAqICBCZWxvdyBhcmUgZm9yIGdlbmVy
YXRpbmcgaW50ZXJ2YWwgcGF0dGVybnMgbG9jYWwgdG8gdGhlIGZvcm1hdHRlcgorICAgICAqIFBy
b3ZpZGUgYW4gdXBkYXRlZCBGaWVsZFBvc2l0aW9uIHBvc1Jlc3VsdCBiYXNlZCBvbiB0d28gZm9y
bWF0cywKKyAgICAgKiB0aGUgRmllbGRQb3NpdGlvbiB2YWx1ZXMgZm9yIGVhY2ggb2YgdGhlbSwg
YW5kIHRoZSBwYXR0ZXJuIHVzZWQKKyAgICAgKiB0byBjb21iaW5lIHRoZW0uIFRoZSBpZGVhIGlz
IGZvciBwb3NSZXN1bHQgdG8gaW5kaWNhdGUgdGhlIGZpcnN0CisgICAgICogaW5zdGFuY2UgKGlm
IGFueSkgb2YgdGhlIHNwZWNpZmllZCBmaWVsZCBpbiB0aGUgY29tYmluZWQgcmVzdWx0LAorICAg
ICAqIHdpdGggY29ycmVjdCBvZmZzZXRzLgorICAgICAqCisgICAgICogQHBhcmFtIGNvbWJpbmlu
Z1BhdHRlcm4gIFBhdHRlcm4gdXNlZCB0byBjb21iaW5lIHBhdDAgYW5kIHBhdDEKKyAgICAgKiBA
cGFyYW0gcGF0MCAgICAgICAgICAgICAgRm9ybWF0dGVkIGRhdGUvdGltZSB2YWx1ZSB0byByZXBs
YWNlIHswfQorICAgICAqIEBwYXJhbSBwb3MwICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHdp
dGhpbiBwYXQwCisgICAgICogQHBhcmFtIHBhdDEgICAgICAgICAgICAgIEZvcm1hdHRlZCBkYXRl
L3RpbWUgdmFsdWUgdG8gcmVwbGFjZSB7MX0KKyAgICAgKiBAcGFyYW0gcG9zMSAgICAgICAgICAg
ICAgRmllbGRQb3NpdGlvbiB3aXRoaW4gcGF0MQorICAgICAqIEBwYXJhbSBwb3NSZXN1bHQgICAg
ICAgICBGaWVsZFBvc2l0aW9uIHRvIGJlIHNldCB0byB0aGUgY29ycmVjdAorICAgICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgZmllbGQgaW5zdGFuY2Ug
d2hlbgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBwYXQwIGFuZCBwYXQxIGFyZSBj
b21iaW5lZCB1c2luZyBjb21iaW5pbmdQYXR0ZXJuCiAgICAgICovCisgICAgc3RhdGljIHZvaWQK
KyAgICBhZGp1c3RQb3NpdGlvbihVbmljb2RlU3RyaW5nJiBjb21iaW5pbmdQYXR0ZXJuLCAvLyBo
YXMgezB9IGFuZCB7MX0gaW4gaXQKKyAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBw
YXQwLCBGaWVsZFBvc2l0aW9uJiBwb3MwLCAvLyBwYXR0ZXJuIGFuZCBwb3MgY29ycmVzcG9uZGlu
ZyB0byB7MH0KKyAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBwYXQxLCBGaWVsZFBv
c2l0aW9uJiBwb3MxLCAvLyBwYXR0ZXJuIGFuZCBwb3MgY29ycmVzcG9uZGluZyB0byB7MX0KKyAg
ICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uJiBwb3NSZXN1bHQpOwogCiAKICAgICAvKioK
QEAgLTY3MSwxOSArNjkzLDI1IEBAIHByaXZhdGU6CiAgICAgICogVGhlIGZ1bGwgcGF0dGVybiB1
c2VkIGluIHRoaXMgZmFsbC1iYWNrIGZvcm1hdCBpcyB0aGUKICAgICAgKiBmdWxsIHBhdHRlcm4g
b2YgdGhlIGRhdGUgZm9ybWF0dGVyLgogICAgICAqCisgICAgICogZ0Zvcm1hdHRlck11dGV4IG11
c3QgYWxyZWFkeSBiZSBsb2NrZWQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisgICAgICoK
ICAgICAgKiBAcGFyYW0gZnJvbUNhbGVuZGFyICAgICAgY2FsZW5kYXIgc2V0IHRvIHRoZSBmcm9t
IGRhdGUgaW4gZGF0ZSBpbnRlcnZhbAogICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0
byBiZSBmb3JtYXR0ZWQgaW50byBkYXRlIGludGVydmFsIHN0cmluZwogICAgICAqIEBwYXJhbSB0
b0NhbGVuZGFyICAgICAgICBjYWxlbmRhciBzZXQgdG8gdGhlIHRvIGRhdGUgaW4gZGF0ZSBpbnRl
cnZhbAogICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBmb3JtYXR0ZWQgaW50
byBkYXRlIGludGVydmFsIHN0cmluZworICAgICAqIEBwYXJhbSBmcm9tVG9PblNhbWVEYXkgICBU
UlVFIGlmZiBmcm9tIGFuZCB0byBkYXRlcyBhcmUgb24gdGhlIHNhbWUgZGF5CisgICAgICogICAg
ICAgICAgICAgICAgICAgICAgICAgIChhbnkgZGlmZmVyZW5jZSBpcyBpbiBhbXBtL2hvdXJzIG9y
IGJlbG93KQogICAgICAqIEBwYXJhbSBhcHBlbmRUbyAgICAgICAgICBPdXRwdXQgcGFyYW1ldGVy
IHRvIHJlY2VpdmUgcmVzdWx0LgogICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1
bHQgaXMgYXBwZW5kZWQgdG8gZXhpc3RpbmcgY29udGVudHMuCiAgICAgICogQHBhcmFtIHBvcyAg
ICAgICAgICAgICAgIE9uIGlucHV0OiBhbiBhbGlnbm1lbnQgZmllbGQsIGlmIGRlc2lyZWQuCiAg
ICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dDogdGhlIG9mZnNldHMgb2Yg
dGhlIGFsaWdubWVudCBmaWVsZC4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgICAgICAgICAgb3V0
cHV0IHBhcmFtIHNldCB0byBzdWNjZXNzL2ZhaWx1cmUgY29kZSBvbiBleGl0CiAgICAgICogQHJl
dHVybiAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4K
KyAgICAgKiBAaW50ZXJuYWwgKHByaXZhdGUpCiAgICAgICovCiAgICAgVW5pY29kZVN0cmluZyYg
ZmFsbGJhY2tGb3JtYXQoQ2FsZW5kYXImIGZyb21DYWxlbmRhciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDYWxlbmRhciYgdG9DYWxlbmRhciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVQm9vbCBmcm9tVG9PblNhbWVEYXksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiYgcG9zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7CkBAIC04NzQsMTMg
KzkwMiwxMSBAQCBwcml2YXRlOgogICAgICAqIGJvdGggdGltZSBhbmQgZGF0ZS4gUHJlc2VudCB0
aGUgZGF0ZSBmb2xsb3dlZCBieQogICAgICAqIHRoZSByYW5nZSBleHByZXNzaW9uIGZvciB0aGUg
dGltZS4KICAgICAgKiBAcGFyYW0gZm9ybWF0ICAgICAgICAgZGF0ZSBhbmQgdGltZSBmb3JtYXQK
LSAgICAgKiBAcGFyYW0gZm9ybWF0TGVuICAgICAgZm9ybWF0IHN0cmluZyBsZW5ndGgKICAgICAg
KiBAcGFyYW0gZGF0ZVBhdHRlcm4gICAgZGF0ZSBwYXR0ZXJuCiAgICAgICogQHBhcmFtIGZpZWxk
ICAgICAgICAgIHRpbWUgY2FsZW5kYXIgZmllbGQ6IEFNX1BNLCBIT1VSLCBNSU5VVEUKICAgICAg
KiBAcGFyYW0gc3RhdHVzICAgICAgICAgb3V0cHV0IHBhcmFtIHNldCB0byBzdWNjZXNzL2ZhaWx1
cmUgY29kZSBvbiBleGl0CiAgICAgICovCi0gICAgdm9pZCBjb25jYXRTaW5nbGVEYXRlMlRpbWVJ
bnRlcnZhbChjb25zdCBVQ2hhciogZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCBmb3JtYXRMZW4sCisgICAgdm9pZCBjb25jYXRTaW5nbGVEYXRl
MlRpbWVJbnRlcnZhbChVbmljb2RlU3RyaW5nJiBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBkYXRlUGF0dGVybiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDYWxlbmRhckRhdGVGaWVsZHMg
ZmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2Rl
JiBzdGF0dXMpOwpAQCAtOTM3LDkgKzk2Myw0MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyogc2Vjb25kUGFydCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIFVCb29sIGxhdGVyRGF0ZUZpcnN0KTsKIAorICAgIC8qKgorICAgICAqIEZvcm1h
dCAyIENhbGVuZGFycyB0byBwcm9kdWNlIGEgc3RyaW5nLgorICAgICAqIEltcGxlbWVudGF0aW9u
IG9mIHRoZSBzaW1pbGFyIHB1YmxpYyBmb3JtYXQgZnVuY3Rpb24uCisgICAgICogTXVzdCBiZSBj
YWxsZWQgd2l0aCBnRm9ybWF0dGVyTXV0ZXggYWxyZWFkeSBsb2NrZWQuCisgICAgICoKKyAgICAg
KiBOb3RlOiAiZnJvbUNhbGVuZGFyIiBhbmQgInRvQ2FsZW5kYXIiIGFyZSBub3QgY29uc3QsCisg
ICAgICogc2luY2UgY2FsZW5kYXIgaXMgbm90IGNvbnN0IGluICBTaW1wbGVEYXRlRm9ybWF0Ojpm
b3JtYXQoQ2FsZW5kYXImKSwKKyAgICAgKgorICAgICAqIEBwYXJhbSBmcm9tQ2FsZW5kYXIgICAg
ICBjYWxlbmRhciBzZXQgdG8gdGhlIGZyb20gZGF0ZSBpbiBkYXRlIGludGVydmFsCisgICAgICog
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvcm1hdHRlZCBpbnRvIGRhdGUgaW50ZXJ2
YWwgc3RyaW5nCisgICAgICogQHBhcmFtIHRvQ2FsZW5kYXIgICAgICAgIGNhbGVuZGFyIHNldCB0
byB0aGUgdG8gZGF0ZSBpbiBkYXRlIGludGVydmFsCisgICAgICogICAgICAgICAgICAgICAgICAg
ICAgICAgIHRvIGJlIGZvcm1hdHRlZCBpbnRvIGRhdGUgaW50ZXJ2YWwgc3RyaW5nCisgICAgICog
QHBhcmFtIGFwcGVuZFRvICAgICAgICAgIE91dHB1dCBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSByZXN1
bHQuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0
byBleGlzdGluZyBjb250ZW50cy4KKyAgICAgKiBAcGFyYW0gZmllbGRQb3NpdGlvbiAgICAgT24g
aW5wdXQ6IGFuIGFsaWdubWVudCBmaWVsZCwgaWYgZGVzaXJlZC4KKyAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgT24gb3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZp
ZWxkLgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZSBtYXkgYmUgbXVsdGlw
bGUgaW5zdGFuY2VzIG9mIGEgZ2l2ZW4gZmllbGQgdHlwZQorICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBhbiBpbnRlcnZhbCBmb3JtYXQ7IGluIHRoaXMgY2FzZSB0aGUgZmllbGRQ
b3NpdGlvbgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRzIHJlZmVyIHRv
IHRoZSBmaXJzdCBpbnN0YW5jZS4KKyAgICAgKiBAcGFyYW0gc3RhdHVzICAgICAgICAgICAgT3V0
cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCisgICAgICogICAg
ICAgICAgICAgICAgICAgICAgICAgIENhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgaXQgaXMgU1VD
Q0VTUworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgZnVuY3Rpb24gZW50
cmFuY2UKKyAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBl
bmRUbycgcGFyYW1ldGVyLgorICAgICAqIEBpbnRlcm5hbCAocHJpdmF0ZSkKKyAgICAgKi8KKyAg
ICBVbmljb2RlU3RyaW5nJiBmb3JtYXRJbXBsKENhbGVuZGFyJiBmcm9tQ2FsZW5kYXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhciYgdG9DYWxlbmRhciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiYgZmllbGRQb3NpdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3QgOworCiAK
ICAgICAvLyBmcm9tIGNhbGVuZGFyIGZpZWxkIHRvIHBhdHRlcm4gbGV0dGVyCi0gICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGZnQ2FsZW5kYXJGaWVsZFRvUGF0dGVybkxldHRlcltdOworICAgIHN0YXRp
YyBjb25zdCBjaGFyMTZfdCBmZ0NhbGVuZGFyRmllbGRUb1BhdHRlcm5MZXR0ZXJbXTsKIAogCiAg
ICAgLyoqCkBAIC05NjAsMTYgKzEwMTcsMjAgQEAgcHJpdmF0ZToKICAgICBDYWxlbmRhciogZkZy
b21DYWxlbmRhcjsKICAgICBDYWxlbmRhciogZlRvQ2FsZW5kYXI7CiAKLSAgICAvKioKLSAgICAg
KiBEYXRlIHRpbWUgcGF0dGVybiBnZW5lcmF0b3IKLSAgICAgKi8KLSAgICBEYXRlVGltZVBhdHRl
cm5HZW5lcmF0b3IqIGZEdHBuZzsKKyAgICBMb2NhbGUgZkxvY2FsZTsKIAogICAgIC8qKgotICAg
ICAqIEZvbGxvd2luZyBhcmUgaW50ZXJ2YWwgaW5mb3JtYXRpb24gcmVsYXZlbnQgKGxvY2FsZSkg
dG8gdGhpcyBmb3JtYXR0ZXIuCisgICAgICogRm9sbG93aW5nIGFyZSBpbnRlcnZhbCBpbmZvcm1h
dGlvbiByZWxldmFudCAobG9jYWxlKSB0byB0aGlzIGZvcm1hdHRlci4KICAgICAgKi8KICAgICBV
bmljb2RlU3RyaW5nIGZTa2VsZXRvbjsKICAgICBQYXR0ZXJuSW5mbyBmSW50ZXJ2YWxQYXR0ZXJu
c1tEYXRlSW50ZXJ2YWxJbmZvOjprSVBJX01BWF9JTkRFWF07CisKKyAgICAvKioKKyAgICAgKiBQ
YXR0ZXJucyBmb3IgZmFsbGJhY2sgZm9ybWF0dGluZy4KKyAgICAgKi8KKyAgICBVbmljb2RlU3Ry
aW5nKiBmRGF0ZVBhdHRlcm47CisgICAgVW5pY29kZVN0cmluZyogZlRpbWVQYXR0ZXJuOworICAg
IFVuaWNvZGVTdHJpbmcqIGZEYXRlVGltZUZvcm1hdDsKIH07CiAKIGlubGluZSBVQm9vbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9kdGl0dmluZi5oIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9kdGl0dmluZi5oCmluZGV4IDlmNjY3NGU3MGQxOTJhM2FjZGU0YTYwNWI5YjAx
OWI2NzFkZmU3ZWIuLjcyNmUzNGE3NDVhMmVjMzBiYTU2N2I1OWVmYjM3MTM5ZjZmMTNkMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRpdHZpbmYuaAorKysgYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL2R0aXR2aW5mLmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFu
ZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9m
IHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNCwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAog
ICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
ICAqCkBAIC00OSwyMiArNTEsMjIgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAqIHRvIChkYXRlX2lu
dGVydmFsX3BhdHRlcm4pLgogICoKICAqIDxQPgotICogQSBza2VsZXRvbiAKKyAqIEEgc2tlbGV0
b24KICAqIDxvbD4KICAqIDxsaT4KLSAqIG9ubHkga2VlcHMgdGhlIGZpZWxkIHBhdHRlcm4gbGV0
dGVyIGFuZCBpZ25vcmVzIGFsbCBvdGhlciBwYXJ0cyAKKyAqIG9ubHkga2VlcHMgdGhlIGZpZWxk
IHBhdHRlcm4gbGV0dGVyIGFuZCBpZ25vcmVzIGFsbCBvdGhlciBwYXJ0cwogICogaW4gYSBwYXR0
ZXJuLCBzdWNoIGFzIHNwYWNlLCBwdW5jdHVhdGlvbnMsIGFuZCBzdHJpbmcgbGl0ZXJhbHMuCiAg
KiA8bGk+Ci0gKiBoaWRlcyB0aGUgb3JkZXIgb2YgZmllbGRzLiAKKyAqIGhpZGVzIHRoZSBvcmRl
ciBvZiBmaWVsZHMuCiAgKiA8bGk+CiAgKiBtaWdodCBoaWRlIGEgZmllbGQncyBwYXR0ZXJuIGxl
dHRlciBsZW5ndGguCiAgKgotICogRm9yIHRob3NlIG5vbi1kaWdpdCBjYWxlbmRhciBmaWVsZHMs
IHRoZSBwYXR0ZXJuIGxldHRlciBsZW5ndGggaXMgCi0gKiBpbXBvcnRhbnQsIHN1Y2ggYXMgTU1N
LCBNTU1NLCBhbmQgTU1NTU07IEVFRSBhbmQgRUVFRSwgCisgKiBGb3IgdGhvc2Ugbm9uLWRpZ2l0
IGNhbGVuZGFyIGZpZWxkcywgdGhlIHBhdHRlcm4gbGV0dGVyIGxlbmd0aCBpcworICogaW1wb3J0
YW50LCBzdWNoIGFzIE1NTSwgTU1NTSwgYW5kIE1NTU1NOyBFRUUgYW5kIEVFRUUsCiAgKiBhbmQg
dGhlIGZpZWxkJ3MgcGF0dGVybiBsZXR0ZXIgbGVuZ3RoIGlzIGhvbm9yZWQuCi0gKiAgICAKLSAq
IEZvciB0aGUgZGlnaXQgY2FsZW5kYXIgZmllbGRzLCAgc3VjaCBhcyBNIG9yIE1NLCBkIG9yIGRk
LCB5eSBvciB5eXl5LCAKLSAqIHRoZSBmaWVsZCBwYXR0ZXJuIGxlbmd0aCBpcyBpZ25vcmVkIGFu
ZCB0aGUgYmVzdCBtYXRjaCwgd2hpY2ggaXMgZGVmaW5lZCAKKyAqCisgKiBGb3IgdGhlIGRpZ2l0
IGNhbGVuZGFyIGZpZWxkcywgIHN1Y2ggYXMgTSBvciBNTSwgZCBvciBkZCwgeXkgb3IgeXl5eSwK
KyAqIHRoZSBmaWVsZCBwYXR0ZXJuIGxlbmd0aCBpcyBpZ25vcmVkIGFuZCB0aGUgYmVzdCBtYXRj
aCwgd2hpY2ggaXMgZGVmaW5lZAogICogaW4gZGF0ZSB0aW1lIHBhdHRlcm5zLCB3aWxsIGJlIHJl
dHVybmVkIHdpdGhvdXQgaG9ub3IgdGhlIGZpZWxkIHBhdHRlcm4KICAqIGxldHRlciBsZW5ndGgg
aW4gc2tlbGV0b24uCiAgKiA8L29sPgpAQCAtNzMsMjEgKzc1LDIxIEBAIFVfTkFNRVNQQUNFX0JF
R0lOCiAgKiBUaGUgY2FsZW5kYXIgZmllbGRzIHdlIHN1cHBvcnQgZm9yIGludGVydmFsIGZvcm1h
dHRpbmcgYXJlOgogICogeWVhciwgbW9udGgsIGRhdGUsIGRheS1vZi13ZWVrLCBhbS1wbSwgaG91
ciwgaG91ci1vZi1kYXksIGFuZCBtaW51dGUuCiAgKiBUaG9zZSBjYWxlbmRhciBmaWVsZHMgY2Fu
IGJlIGRlZmluZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKLSAqIHllYXIgPiAgbW9udGggPiBk
YXRlID4gYW0tcG0gPiBob3VyID4gIG1pbnV0ZSAKLSAqICAKKyAqIHllYXIgPiAgbW9udGggPiBk
YXRlID4gYW0tcG0gPiBob3VyID4gIG1pbnV0ZQorICoKICAqIFRoZSBsYXJnZXN0IGRpZmZlcmVu
dCBjYWxlbmRhciBmaWVsZHMgYmV0d2VlbiAyIGNhbGVuZGFycyBpcyB0aGUKICAqIGZpcnN0IGRp
ZmZlcmVudCBjYWxlbmRhciBmaWVsZCBpbiBhYm92ZSBvcmRlci4KICAqCi0gKiBGb3IgZXhhbXBs
ZTogdGhlIGxhcmdlc3QgZGlmZmVyZW50IGNhbGVuZGFyIGZpZWxkcyBiZXR3ZWVuICZxdW90O0ph
biAxMCwgMjAwNyZxdW90OyAKKyAqIEZvciBleGFtcGxlOiB0aGUgbGFyZ2VzdCBkaWZmZXJlbnQg
Y2FsZW5kYXIgZmllbGRzIGJldHdlZW4gJnF1b3Q7SmFuIDEwLCAyMDA3JnF1b3Q7CiAgKiBhbmQg
JnF1b3Q7RmViIDIwLCAyMDA4JnF1b3Q7IGlzIHllYXIuCi0gKiAgIAorICoKICAqIDxQPgogICog
VGhlcmUgaXMgYSBzZXQgb2YgcHJlLWRlZmluZWQgc3RhdGljIHNrZWxldG9uIHN0cmluZ3MuCiAg
KiBUaGVyZSBhcmUgcHJlLWRlZmluZWQgaW50ZXJ2YWwgcGF0dGVybnMgZm9yIHRob3NlIHByZS1k
ZWZpbmVkIHNrZWxldG9ucwogICogaW4gbG9jYWxlcycgcmVzb3VyY2UgZmlsZXMuCiAgKiBGb3Ig
ZXhhbXBsZSwgZm9yIGEgc2tlbGV0b24gVURBVF9ZRUFSX0FCQlJfTU9OVEhfREFZLCB3aGljaCBp
cyAgJnF1b3Q7eU1NTWQmcXVvdDssCi0gKiBpbiAgZW5fVVMsIGlmIHRoZSBsYXJnZXN0IGRpZmZl
cmVudCBjYWxlbmRhciBmaWVsZCBiZXR3ZWVuIGRhdGUxIGFuZCBkYXRlMiAKLSAqIGlzICZxdW90
O3llYXImcXVvdDssIHRoZSBkYXRlIGludGVydmFsIHBhdHRlcm4gIGlzICZxdW90O01NTSBkLCB5
eXl5IC0gTU1NIGQsIHl5eXkmcXVvdDssIAorICogaW4gIGVuX1VTLCBpZiB0aGUgbGFyZ2VzdCBk
aWZmZXJlbnQgY2FsZW5kYXIgZmllbGQgYmV0d2VlbiBkYXRlMSBhbmQgZGF0ZTIKKyAqIGlzICZx
dW90O3llYXImcXVvdDssIHRoZSBkYXRlIGludGVydmFsIHBhdHRlcm4gIGlzICZxdW90O01NTSBk
LCB5eXl5IC0gTU1NIGQsIHl5eXkmcXVvdDssCiAgKiBzdWNoIGFzICZxdW90O0phbiAxMCwgMjAw
NyAtIEphbiAxMCwgMjAwOCZxdW90Oy4KICAqIElmIHRoZSBsYXJnZXN0IGRpZmZlcmVudCBjYWxl
bmRhciBmaWVsZCBiZXR3ZWVuIGRhdGUxIGFuZCBkYXRlMiBpcyAmcXVvdDttb250aCZxdW90OywK
ICAqIHRoZSBkYXRlIGludGVydmFsIHBhdHRlcm4gaXMgJnF1b3Q7TU1NIGQgLSBNTU0gZCwgeXl5
eSZxdW90OywKQEAgLTk1LDcgKzk3LDcgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAqIElmIHRoZSBs
YXJnZXN0IGRpZmZlcmVudCBjYWxlbmRhciBmaWVsZCBiZXR3ZWVuIGRhdGUxIGFuZCBkYXRlMiBp
cyAmcXVvdDtkYXkmcXVvdDssCiAgKiB0aGUgZGF0ZSBpbnRlcnZhbCBwYXR0ZXJuIGlzICZxdW90
O01NTSBkLWQsIHl5eXkmcXVvdDssIHN1Y2ggYXMgJnF1b3Q7SmFuIDEwLTIwLCAyMDA3JnF1b3Q7
LgogICoKLSAqIEZvciBkYXRlIHNrZWxldG9uLCB0aGUgaW50ZXJ2YWwgcGF0dGVybnMgd2hlbiB5
ZWFyLCBvciBtb250aCwgb3IgZGF0ZSBpcyAKKyAqIEZvciBkYXRlIHNrZWxldG9uLCB0aGUgaW50
ZXJ2YWwgcGF0dGVybnMgd2hlbiB5ZWFyLCBvciBtb250aCwgb3IgZGF0ZSBpcwogICogZGlmZmVy
ZW50IGFyZSBkZWZpbmVkIGluIHJlc291cmNlIGZpbGVzLgogICogRm9yIHRpbWUgc2tlbGV0b24s
IHRoZSBpbnRlcnZhbCBwYXR0ZXJucyB3aGVuIGFtL3BtLCBvciBob3VyLCBvciBtaW51dGUgaXMK
ICAqIGRpZmZlcmVudCBhcmUgZGVmaW5lZCBpbiByZXNvdXJjZSBmaWxlcy4KQEAgLTEwOCw1NiAr
MTEwLDU1IEBAIFVfTkFNRVNQQUNFX0JFR0lOCiAgKiBXZSB1c2UgZmFsbGJhY2sgZm9ybWF0IGZv
ciB0aGUgZGVmYXVsdCBvcmRlciBmb3IgdGhlIGxvY2FsZS4KICAqIEZvciBleGFtcGxlLCBpZiB0
aGUgZmFsbGJhY2sgZm9ybWF0IGlzICZxdW90O3swfSAtIHsxfSZxdW90OywgaXQgbWVhbnMKICAq
IHRoZSBmaXJzdCBkYXRlIGluIHRoZSBpbnRlcnZhbCBwYXR0ZXJuIGZvciB0aGlzIGxvY2FsZSBp
cyBlYXJsaWVyIGRhdGUuCi0gKiBJZiB0aGUgZmFsbGJhY2sgZm9ybWF0IGlzICZxdW90O3sxfSAt
IHswfSZxdW90OywgaXQgbWVhbnMgdGhlIGZpcnN0IGRhdGUgaXMgdGhlIAorICogSWYgdGhlIGZh
bGxiYWNrIGZvcm1hdCBpcyAmcXVvdDt7MX0gLSB7MH0mcXVvdDssIGl0IG1lYW5zIHRoZSBmaXJz
dCBkYXRlIGlzIHRoZQogICogbGF0ZXIgZGF0ZS4KICAqIEZvciBhIHBhcnRpY3VsYXIgaW50ZXJ2
YWwgcGF0dGVybiwgdGhlIGRlZmF1bHQgb3JkZXIgY2FuIGJlIG92ZXJyaWRlbgogICogYnkgcHJl
Zml4aW5nICZxdW90O2xhdGVzdEZpcnN0OiZxdW90OyBvciAmcXVvdDtlYXJsaWVzdEZpcnN0OiZx
dW90OyB0byB0aGUgaW50ZXJ2YWwgcGF0dGVybi4KICAqIEZvciBleGFtcGxlLCBpZiB0aGUgZmFs
bGJhY2sgZm9ybWF0IGlzICZxdW90O3swfS17MX0mcXVvdDssCi0gKiBidXQgZm9yIHNrZWxldG9u
ICZxdW90O3lNTU1kJnF1b3Q7LCB0aGUgaW50ZXJ2YWwgcGF0dGVybiB3aGVuIGRheSBpcyBkaWZm
ZXJlbnQgaXMgCisgKiBidXQgZm9yIHNrZWxldG9uICZxdW90O3lNTU1kJnF1b3Q7LCB0aGUgaW50
ZXJ2YWwgcGF0dGVybiB3aGVuIGRheSBpcyBkaWZmZXJlbnQgaXMKICAqICZxdW90O2xhdGVzdEZp
cnN0OmQtZCBNTU0geXkmcXVvdDssIGl0IG1lYW5zIGJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBkYXRl
IGluIGludGVydmFsCiAgKiBwYXR0ZXJuIGlzIHRoZSBlYXJsaWVyIGRhdGUuIEJ1dCBmb3Igc2tl
bGV0b24gJnF1b3Q7eU1NTWQmcXVvdDssIHdoZW4gZGF5IGlzIGRpZmZlcmVudCwKICAqIHRoZSBm
aXJzdCBkYXRlIGluICZxdW90O2QtZCBNTU0geXkmcXVvdDsgaXMgdGhlIGxhdGVyIGRhdGUuCi0g
KiAKKyAqCiAgKiA8UD4KLSAqIFRoZSByZWNvbW1lbmRlZCB3YXkgdG8gY3JlYXRlIGEgRGF0ZUlu
dGVydmFsRm9ybWF0IG9iamVjdCBpcyB0byBwYXNzIGluIAotICogdGhlIGxvY2FsZS4gCi0gKiBC
eSB1c2luZyBhIExvY2FsZSBwYXJhbWV0ZXIsIHRoZSBEYXRlSW50ZXJ2YWxGb3JtYXQgb2JqZWN0
IGlzIAotICogaW5pdGlhbGl6ZWQgd2l0aCB0aGUgcHJlLWRlZmluZWQgaW50ZXJ2YWwgcGF0dGVy
bnMgZm9yIGEgZ2l2ZW4gb3IgCisgKiBUaGUgcmVjb21tZW5kZWQgd2F5IHRvIGNyZWF0ZSBhIERh
dGVJbnRlcnZhbEZvcm1hdCBvYmplY3QgaXMgdG8gcGFzcyBpbgorICogdGhlIGxvY2FsZS4KKyAq
IEJ5IHVzaW5nIGEgTG9jYWxlIHBhcmFtZXRlciwgdGhlIERhdGVJbnRlcnZhbEZvcm1hdCBvYmpl
Y3QgaXMKKyAqIGluaXRpYWxpemVkIHdpdGggdGhlIHByZS1kZWZpbmVkIGludGVydmFsIHBhdHRl
cm5zIGZvciBhIGdpdmVuIG9yCiAgKiBkZWZhdWx0IGxvY2FsZS4KICAqIDxQPgotICogVXNlcnMg
Y2FuIGFsc28gY3JlYXRlIERhdGVJbnRlcnZhbEZvcm1hdCBvYmplY3QgCisgKiBVc2VycyBjYW4g
YWxzbyBjcmVhdGUgRGF0ZUludGVydmFsRm9ybWF0IG9iamVjdAogICogYnkgc3VwcGx5aW5nIHRo
ZWlyIG93biBpbnRlcnZhbCBwYXR0ZXJucy4KICAqIEl0IHByb3ZpZGVzIGZsZXhpYmlsaXR5IGZv
ciBwb3dlciB1c2Vycy4KICAqCiAgKiA8UD4KICAqIEFmdGVyIGEgRGF0ZUludGVydmFsSW5mbyBv
YmplY3QgaXMgY3JlYXRlZCwgY2xpZW50cyBtYXkgbW9kaWZ5CiAgKiB0aGUgaW50ZXJ2YWwgcGF0
dGVybnMgdXNpbmcgc2V0SW50ZXJ2YWxQYXR0ZXJuIGZ1bmN0aW9uIGFzIHNvIGRlc2lyZWQuCi0g
KiBDdXJyZW50bHksIHVzZXJzIGNhbiBvbmx5IHNldCBpbnRlcnZhbCBwYXR0ZXJucyB3aGVuIHRo
ZSBmb2xsb3dpbmcgCi0gKiBjYWxlbmRhciBmaWVsZHMgYXJlIGRpZmZlcmVudDogRVJBLCBZRUFS
LCBNT05USCwgREFURSwgIERBWV9PRl9NT05USCwgCisgKiBDdXJyZW50bHksIHVzZXJzIGNhbiBv
bmx5IHNldCBpbnRlcnZhbCBwYXR0ZXJucyB3aGVuIHRoZSBmb2xsb3dpbmcKKyAqIGNhbGVuZGFy
IGZpZWxkcyBhcmUgZGlmZmVyZW50OiBFUkEsIFlFQVIsIE1PTlRILCBEQVRFLCAgREFZX09GX01P
TlRILAogICogREFZX09GX1dFRUssIEFNX1BNLCAgSE9VUiwgSE9VUl9PRl9EQVksIGFuZCBNSU5V
VEUuCiAgKiBJbnRlcnZhbCBwYXR0ZXJucyB3aGVuIG90aGVyIGNhbGVuZGFyIGZpZWxkcyBhcmUg
ZGlmZmVyZW50IGlzIG5vdCBzdXBwb3J0ZWQuCiAgKiA8UD4KLSAqIERhdGVJbnRlcnZhbEluZm8g
b2JqZWN0cyBhcmUgY2xvbmVhYmxlLiAKLSAqIFdoZW4gY2xpZW50cyBvYnRhaW4gYSBEYXRlSW50
ZXJ2YWxJbmZvIG9iamVjdCwgCisgKiBEYXRlSW50ZXJ2YWxJbmZvIG9iamVjdHMgYXJlIGNsb25l
YWJsZS4KKyAqIFdoZW4gY2xpZW50cyBvYnRhaW4gYSBEYXRlSW50ZXJ2YWxJbmZvIG9iamVjdCwK
ICAqIHRoZXkgY2FuIGZlZWwgZnJlZSB0byBtb2RpZnkgaXQgYXMgbmVjZXNzYXJ5LgogICogPFA+
Ci0gKiBEYXRlSW50ZXJ2YWxJbmZvIGFyZSBub3QgZXhwZWN0ZWQgdG8gYmUgc3ViY2xhc3NlZC4g
Ci0gKiBEYXRhIGZvciBhIGNhbGVuZGFyIGlzIGxvYWRlZCBvdXQgb2YgcmVzb3VyY2UgYnVuZGxl
cy4gCisgKiBEYXRlSW50ZXJ2YWxJbmZvIGFyZSBub3QgZXhwZWN0ZWQgdG8gYmUgc3ViY2xhc3Nl
ZC4KKyAqIERhdGEgZm9yIGEgY2FsZW5kYXIgaXMgbG9hZGVkIG91dCBvZiByZXNvdXJjZSBidW5k
bGVzLgogICogVGhyb3VnaCBJQ1UgNC40LCBkYXRlIGludGVydmFsIHBhdHRlcm5zIGFyZSBvbmx5
IHN1cHBvcnRlZCBpbiB0aGUgR3JlZ29yaWFuCi0gKiBjYWxlbmRhcjsgbm9uLUdyZWdvcmlhbiBj
YWxlbmRhcnMgYXJlIHN1cHBvcnRlZCBmcm9tIElDVSA0LjQuMS4gCisgKiBjYWxlbmRhcjsgbm9u
LUdyZWdvcmlhbiBjYWxlbmRhcnMgYXJlIHN1cHBvcnRlZCBmcm9tIElDVSA0LjQuMS4KICAqIEBz
dGFibGUgSUNVIDQuMAogKiovCiAKIGNsYXNzIFVfSTE4Tl9BUEkgRGF0ZUludGVydmFsSW5mbyBV
X0ZJTkFMIDogcHVibGljIFVPYmplY3QgewogcHVibGljOgotI2lmbmRlZiBVX0hJREVfSU5URVJO
QUxfQVBJCiAgICAgLyoqCiAgICAgICogRGVmYXVsdCBjb25zdHJ1Y3Rvci4KICAgICAgKiBJdCBk
b2VzIG5vdCBpbml0aWFsaXplIGFueSBpbnRlcnZhbCBwYXR0ZXJucyBleGNlcHQKICAgICAgKiB0
aGF0IGl0IGluaXRpYWxpemUgZGVmYXVsdCBmYWxsLWJhY2sgcGF0dGVybiBhcyAiezB9IC0gezF9
IiwKICAgICAgKiB3aGljaCBjYW4gYmUgcmVzZXQgYnkgc2V0RmFsbGJhY2tJbnRlcnZhbFBhdHRl
cm4oKS4KLSAgICAgKiBJdCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgc2V0RmFsbGJhY2tJbnRlcnZh
bFBhdHRlcm4oKSBhbmQgCi0gICAgICogc2V0SW50ZXJ2YWxQYXR0ZXJuKCksIAorICAgICAqIEl0
IHNob3VsZCBiZSBmb2xsb3dlZCBieSBzZXRGYWxsYmFja0ludGVydmFsUGF0dGVybigpIGFuZAor
ICAgICAqIHNldEludGVydmFsUGF0dGVybigpLAogICAgICAqIGFuZCBpcyByZWNvbW1lbmRlZCB0
byBiZSB1c2VkIG9ubHkgZm9yIHBvd2VyIHVzZXJzIHdobwogICAgICAqIHdhbnRzIHRvIGNyZWF0
ZSB0aGVpciBvd24gaW50ZXJ2YWwgcGF0dGVybnMgYW5kIHVzZSB0aGVtIHRvIGNyZWF0ZQogICAg
ICAqIGRhdGUgaW50ZXJ2YWwgZm9ybWF0dGVyLgpAQCAtMTY1LDEwICsxNjYsOSBAQCBwdWJsaWM6
CiAgICAgICogQGludGVybmFsIElDVSA0LjAKICAgICAgKi8KICAgICBEYXRlSW50ZXJ2YWxJbmZv
KFVFcnJvckNvZGUmIHN0YXR1cyk7Ci0jZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8K
IAogCi0gICAgLyoqIAorICAgIC8qKgogICAgICAqIENvbnN0cnVjdCBEYXRlSW50ZXJ2YWxJbmZv
IGZvciB0aGUgZ2l2ZW4gbG9jYWxlLAogICAgICAqIEBwYXJhbSBsb2NhbGUgIHRoZSBpbnRlcnZh
bCBwYXR0ZXJucyBhcmUgbG9hZGVkIGZyb20gdGhlIGFwcHJvcHJpYXRlIGNhbGVuZGFyCiAgICAg
ICogICAgICAgICAgICAgICAgZGF0YSAoc3BlY2lmaWVkIGNhbGVuZGFyIG9yIGRlZmF1bHQgY2Fs
ZW5kYXIpIGluIHRoaXMgbG9jYWxlLgpAQCAtMjI2LDcgKzIyNiw3IEBAIHB1YmxpYzoKIAogCiAK
LSAgICAvKiogCisgICAgLyoqCiAgICAgICogUHJvdmlkZXMgYSB3YXkgZm9yIGNsaWVudCB0byBi
dWlsZCBpbnRlcnZhbCBwYXR0ZXJucy4KICAgICAgKiBVc2VyIGNvdWxkIGNvbnN0cnVjdCBEYXRl
SW50ZXJ2YWxJbmZvIGJ5IHByb3ZpZGluZyBhIGxpc3Qgb2Ygc2tlbGV0b25zCiAgICAgICogYW5k
IHRoZWlyIHBhdHRlcm5zLgpAQCAtMjM2LDUzICsyMzYsNTMgQEAgcHVibGljOgogICAgICAqIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAqIERhdGVJbnRlcnZhbEluZm8g
ZEludGVydmFsSW5mbyA9IG5ldyBEYXRlSW50ZXJ2YWxJbmZvKCk7CiAgICAgICogZEludGVydmFs
SW5mby0+c2V0RmFsbGJhY2tJbnRlcnZhbFBhdHRlcm4oInswfSB+IHsxfSIpOwotICAgICAqIGRJ
bnRlcnZhbEluZm8tPnNldEludGVydmFsUGF0dGVybigieU1kIiwgVUNBTF9ZRUFSLCAiJ2Zyb20n
IHl5eXktTS1kICd0bycgeXl5eS1NLWQiLCBzdGF0dXMpOyAKKyAgICAgKiBkSW50ZXJ2YWxJbmZv
LT5zZXRJbnRlcnZhbFBhdHRlcm4oInlNZCIsIFVDQUxfWUVBUiwgIidmcm9tJyB5eXl5LU0tZCAn
dG8nIHl5eXktTS1kIiwgc3RhdHVzKTsKICAgICAgKiBkSW50ZXJ2YWxJbmZvLT5zZXRJbnRlcnZh
bFBhdHRlcm4oInlNTU1kIiwgVUNBTF9NT05USCwgIidmcm9tJyB5eXl5IE1NTSBkICd0bycgTU1N
IGQiLCBzdGF0dXMpOwogICAgICAqIGRJbnRlcnZhbEluZm8tPnNldEludGVydmFsUGF0dGVybigi
eU1NTWQiLCBVQ0FMX0RBWSwgInl5eXkgTU1NIGQtZCIsIHN0YXR1cywgc3RhdHVzKTsKICAgICAg
KiA8L3ByZT4KICAgICAgKgotICAgICAqIFJlc3RyaWN0aW9uOiAKLSAgICAgKiBDdXJyZW50bHks
IHVzZXJzIGNhbiBvbmx5IHNldCBpbnRlcnZhbCBwYXR0ZXJucyB3aGVuIHRoZSBmb2xsb3dpbmcg
Ci0gICAgICogY2FsZW5kYXIgZmllbGRzIGFyZSBkaWZmZXJlbnQ6IEVSQSwgWUVBUiwgTU9OVEgs
IERBVEUsICBEQVlfT0ZfTU9OVEgsIAorICAgICAqIFJlc3RyaWN0aW9uOgorICAgICAqIEN1cnJl
bnRseSwgdXNlcnMgY2FuIG9ubHkgc2V0IGludGVydmFsIHBhdHRlcm5zIHdoZW4gdGhlIGZvbGxv
d2luZworICAgICAqIGNhbGVuZGFyIGZpZWxkcyBhcmUgZGlmZmVyZW50OiBFUkEsIFlFQVIsIE1P
TlRILCBEQVRFLCAgREFZX09GX01PTlRILAogICAgICAqIERBWV9PRl9XRUVLLCBBTV9QTSwgIEhP
VVIsIEhPVVJfT0ZfREFZLCBhbmQgTUlOVVRFLgotICAgICAqIEludGVydmFsIHBhdHRlcm5zIHdo
ZW4gb3RoZXIgY2FsZW5kYXIgZmllbGRzIGFyZSBkaWZmZXJlbnQgYXJlIAorICAgICAqIEludGVy
dmFsIHBhdHRlcm5zIHdoZW4gb3RoZXIgY2FsZW5kYXIgZmllbGRzIGFyZSBkaWZmZXJlbnQgYXJl
CiAgICAgICogbm90IHN1cHBvcnRlZC4KICAgICAgKgogICAgICAqIEBwYXJhbSBza2VsZXRvbiAg
ICAgICAgIHRoZSBza2VsZXRvbiBvbiB3aGljaCBpbnRlcnZhbCBwYXR0ZXJuIGJhc2VkCiAgICAg
ICogQHBhcmFtIGxyZ0RpZmZDYWxVbml0ICAgdGhlIGxhcmdlc3QgZGlmZmVyZW50IGNhbGVuZGFy
IHVuaXQuCiAgICAgICogQHBhcmFtIGludGVydmFsUGF0dGVybiAgdGhlIGludGVydmFsIHBhdHRl
cm4gb24gdGhlIGxhcmdlc3QgZGlmZmVyZW50CiAgICAgICogICAgICAgICAgICAgICAgICAgICAg
ICAgY2FsZW5kYXIgdW5pdC4KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhh
bXBsZSwgaWYgbHJnRGlmZkNhbFVuaXQgaXMgCisgICAgICogICAgICAgICAgICAgICAgICAgICAg
ICAgRm9yIGV4YW1wbGUsIGlmIGxyZ0RpZmZDYWxVbml0IGlzCiAgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICAgInllYXIiLCB0aGUgaW50ZXJ2YWwgcGF0dGVybiBmb3IgZW5fVVMgd2hlbiB5
ZWFyCiAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgaXMgZGlmZmVyZW50IGNvdWxkIGJl
ICInZnJvbScgeXl5eSAndG8nIHl5eXkiLgogICAgICAqIEBwYXJhbSBzdGF0dXMgICAgICAgICAg
IG91dHB1dCBwYXJhbSBzZXQgdG8gc3VjY2Vzcy9mYWlsdXJlIGNvZGUgb24gZXhpdAogICAgICAq
IEBzdGFibGUgSUNVIDQuMAogICAgICAqLwotICAgIHZvaWQgc2V0SW50ZXJ2YWxQYXR0ZXJuKGNv
bnN0IFVuaWNvZGVTdHJpbmcmIHNrZWxldG9uLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVQ2FsZW5kYXJEYXRlRmllbGRzIGxyZ0RpZmZDYWxVbml0LCAKKyAgICB2b2lkIHNldEludGVy
dmFsUGF0dGVybihjb25zdCBVbmljb2RlU3RyaW5nJiBza2VsZXRvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVQ2FsZW5kYXJEYXRlRmllbGRzIGxyZ0RpZmZDYWxVbml0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIGludGVydmFsUGF0dGVy
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpOwogCiAg
ICAgLyoqCi0gICAgICogR2V0IHRoZSBpbnRlcnZhbCBwYXR0ZXJuIGdpdmVuIHNrZWxldG9uIGFu
ZCAKKyAgICAgKiBHZXQgdGhlIGludGVydmFsIHBhdHRlcm4gZ2l2ZW4gc2tlbGV0b24gYW5kCiAg
ICAgICogdGhlIGxhcmdlc3QgZGlmZmVyZW50IGNhbGVuZGFyIGZpZWxkLgogICAgICAqIEBwYXJh
bSBza2VsZXRvbiAgIHRoZSBza2VsZXRvbgogICAgICAqIEBwYXJhbSBmaWVsZCAgICAgIHRoZSBs
YXJnZXN0IGRpZmZlcmVudCBjYWxlbmRhciBmaWVsZAogICAgICAqIEBwYXJhbSByZXN1bHQgICAg
IG91dHB1dCBwYXJhbSB0byByZWNlaXZlIHRoZSBwYXR0ZXJuCiAgICAgICogQHBhcmFtIHN0YXR1
cyAgICAgb3V0cHV0IHBhcmFtIHNldCB0byBzdWNjZXNzL2ZhaWx1cmUgY29kZSBvbiBleGl0CiAg
ICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byAncmVzdWx0JwotICAgICAqIEBzdGFibGUgSUNV
IDQuMCAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjAKICAgICAgKi8KICAgICBVbmljb2RlU3RyaW5n
JiBnZXRJbnRlcnZhbFBhdHRlcm4oY29uc3QgVW5pY29kZVN0cmluZyYgc2tlbGV0b24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDYWxlbmRhckRhdGVGaWVsZHMgZmll
bGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcm
IHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29k
ZSYgc3RhdHVzKSBjb25zdDsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7CiAKICAgICAvKioKICAgICAgKiBHZXQgdGhlIGZh
bGxiYWNrIGludGVydmFsIHBhdHRlcm4uCiAgICAgICogQHBhcmFtICByZXN1bHQgICBvdXRwdXQg
cGFyYW0gdG8gcmVjZWl2ZSB0aGUgcGF0dGVybgogICAgICAqIEByZXR1cm4gYSByZWZlcmVuY2Ug
dG8gJ3Jlc3VsdCcKLSAgICAgKiBAc3RhYmxlIElDVSA0LjAgCisgICAgICogQHN0YWJsZSBJQ1Ug
NC4wCiAgICAgICovCiAgICAgVW5pY29kZVN0cmluZyYgZ2V0RmFsbGJhY2tJbnRlcnZhbFBhdHRl
cm4oVW5pY29kZVN0cmluZyYgcmVzdWx0KSBjb25zdDsKIApAQCAtMjk4LDcgKzI5OCw3IEBAIHB1
YmxpYzoKICAgICAgKgogICAgICAqIEBwYXJhbSBmYWxsYmFja1BhdHRlcm4gIGZhbGwtYmFjayBp
bnRlcnZhbCBwYXR0ZXJuLgogICAgICAqIEBwYXJhbSBzdGF0dXMgICAgICAgICAgIG91dHB1dCBw
YXJhbSBzZXQgdG8gc3VjY2Vzcy9mYWlsdXJlIGNvZGUgb24gZXhpdAotICAgICAqIEBzdGFibGUg
SUNVIDQuMCAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjAKICAgICAgKi8KICAgICB2b2lkIHNldEZh
bGxiYWNrSW50ZXJ2YWxQYXR0ZXJuKGNvbnN0IFVuaWNvZGVTdHJpbmcmIGZhbGxiYWNrUGF0dGVy
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1
cyk7CkBAIC0zMDgsNyArMzA4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvciBub3QuCiAgICAgICogcmV0dXJuIGRlZmF1bHQgZGF0ZSBvcmRlcmluZyBpbiBpbnRl
cnZhbCBwYXR0ZXJuLiBUUlVFIGlmIHRoZSBmaXJzdCBkYXRlCiAgICAgICogICAgICAgIGluIHBh
dHRlcm4gaXMgbGF0ZXIgZGF0ZSwgRkFMU0Ugb3RoZXJ3aXNlLgotICAgICAqIEBzdGFibGUgSUNV
IDQuMCAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjAKICAgICAgKi8KICAgICBVQm9vbCBnZXREZWZh
dWx0T3JkZXIoKSBjb25zdDsKIApAQCAtMzM5LDYgKzMzOSwxMSBAQCBwcml2YXRlOgogICAgICAq
LwogICAgIGZyaWVuZCBjbGFzcyBEYXRlSW50ZXJ2YWxGb3JtYXQ7CiAKKyAgICAvKioKKyAgICAg
KiBJbnRlcm5hbCBzdHJ1Y3QgdXNlZCB0byBsb2FkIHJlc291cmNlIGJ1bmRsZSBkYXRhLgorICAg
ICAqLworICAgIHN0cnVjdCBEYXRlSW50ZXJ2YWxTaW5rOworCiAgICAgLyoqCiAgICAgICogRm9s
bG93aW5nIGlzIGZvciBzYXZpbmcgdGhlIGludGVydmFsIHBhdHRlcm5zLgogICAgICAqIFdlIG9u
bHkgc3VwcG9ydCBpbnRlcnZhbCBwYXR0ZXJucyBvbgpAQCAtMzUzLDEzICszNTgsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAga0lQSV9BTV9QTSwKICAgICAgICAga0lQSV9IT1VSLAogICAgICAgICBr
SVBJX01JTlVURSwKKyAgICAgICAga0lQSV9TRUNPTkQsCiAgICAgICAgIGtJUElfTUFYX0lOREVY
CiAgICAgfTsKIHB1YmxpYzoKICNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQogICAgIC8qKgog
ICAgICAqIE1heCBpbmRleCBmb3Igc3RvcmVkIGludGVydmFsIHBhdHRlcm5zCi0gICAgICogQGlu
dGVybmFsIElDVSA0LjQgCisgICAgICogQGludGVybmFsIElDVSA0LjQKICAgICAgKi8KICAgICAg
ZW51bSB7CiAgICAgICAgICBrTWF4SW50ZXJ2YWxQYXR0ZXJuSW5kZXggPSBrSVBJX01BWF9JTkRF
WApAQCAtMzY4LDcgKzM3NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAKIAotICAgIC8qKiAKKyAg
ICAvKioKICAgICAgKiBJbml0aWFsaXplIHRoZSBEYXRlSW50ZXJ2YWxJbmZvIGZyb20gbG9jYWxl
CiAgICAgICogQHBhcmFtIGxvY2FsZSAgIHRoZSBnaXZlbiBsb2NhbGUuCiAgICAgICogQHBhcmFt
IHN0YXR1cyAgIG91dHB1dCBwYXJhbSBzZXQgdG8gc3VjY2Vzcy9mYWlsdXJlIGNvZGUgb24gZXhp
dApAQCAtMzg5LDEwICszOTUsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEludGVydmFsUGF0
dGVybkludGVybmFsbHkoY29uc3QgVW5pY29kZVN0cmluZyYgc2tlbGV0b24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDYWxlbmRhckRhdGVGaWVsZHMgbHJnRGlmZkNh
bFVuaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIGludGVydmFsUGF0dGVybiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKIAotICAgIC8qKmdpdmVuIGFuIGlu
cHV0IHNrZWxldG9uLCBnZXQgdGhlIGJlc3QgbWF0Y2ggc2tlbGV0b24gCisgICAgLyoqZ2l2ZW4g
YW4gaW5wdXQgc2tlbGV0b24sIGdldCB0aGUgYmVzdCBtYXRjaCBza2VsZXRvbgogICAgICAqIHdo
aWNoIGhhcyBwcmUtZGVmaW5lZCBpbnRlcnZhbCBwYXR0ZXJuIGluIHJlc291cmNlIGZpbGUuCiAg
ICAgICogQWxzbyByZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgaW5wdXQgc2tlbGV0
b24KICAgICAgKiBhbmQgdGhlIGJlc3QgbWF0Y2ggc2tlbGV0b24uCkBAIC00MDMsNyArNDA5LDcg
QEAgcHJpdmF0ZToKICAgICAgKiBAcGFyYW0gIGJlc3RNYXRjaERpc3RhbmNlSW5mbyAgdGhlIGRp
ZmZlcmVuY2UgYmV0d2VlbiBpbnB1dCBza2VsZXRvbgogICAgICAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmQgYmVzdCBtYXRjaCBza2VsZXRvbi4KICAgICAgKiAgICAgICAgIDAs
IGlmIHRoZXJlIGlzIGV4YWN0IG1hdGNoIGZvciBpbnB1dCBza2VsZXRvbgotICAgICAqICAgICAg
ICAgMSwgaWYgdGhlcmUgaXMgb25seSBmaWVsZCB3aWR0aCBkaWZmZXJlbmNlIGJldHdlZW4gCisg
ICAgICogICAgICAgICAxLCBpZiB0aGVyZSBpcyBvbmx5IGZpZWxkIHdpZHRoIGRpZmZlcmVuY2Ug
YmV0d2VlbgogICAgICAqICAgICAgICAgICAgdGhlIGJlc3QgbWF0Y2ggYW5kIHRoZSBpbnB1dCBz
a2VsZXRvbgogICAgICAqICAgICAgICAgMiwgdGhlIG9ubHkgZmllbGQgZGlmZmVyZW5jZSBpcyAn
dicgYW5kICd6JwogICAgICAqICAgICAgICAtMSwgaWYgdGhlcmUgaXMgY2FsZW5kYXIgZmllbGQg
ZGlmZmVyZW5jZSBiZXR3ZWVuCkBAIC00MjEsNyArNDI3LDcgQEAgcHJpdmF0ZToKICAgICAgKiBA
cGFyYW0gc2tlbGV0b24gICAgICAgICAgICBza2VsZXRvbiB0byBiZSBwYXJzZWQKICAgICAgKiBA
cGFyYW0gc2tlbGV0b25GaWVsZFdpZHRoICBwYXJzZWQgc2tlbGV0b24gZmllbGQgd2lkdGgKICAg
ICAgKi8KLSAgICBzdGF0aWMgdm9pZCBVX0VYUE9SVDIgcGFyc2VTa2VsZXRvbihjb25zdCBVbmlj
b2RlU3RyaW5nJiBza2VsZXRvbiwgCisgICAgc3RhdGljIHZvaWQgVV9FWFBPUlQyIHBhcnNlU2tl
bGV0b24oY29uc3QgVW5pY29kZVN0cmluZyYgc2tlbGV0b24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCogc2tlbGV0b25GaWVsZFdpZHRoKTsKIAogCkBA
IC00NDEsMTIgKzQ0NywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyIHBhdHRlcm5MZXR0ZXIpOwogCiAKLSAgICAvKiogCi0gICAgICog
Q29udmVydCBjYWxlbmRhciBmaWVsZCB0byB0aGUgaW50ZXJ2YWwgcGF0dGVybiBpbmRleCBpbiAK
KyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGNhbGVuZGFyIGZpZWxkIHRvIHRoZSBpbnRlcnZhbCBw
YXR0ZXJuIGluZGV4IGluCiAgICAgICogaGFzaCB0YWJsZS4KICAgICAgKgotICAgICAqIFNpbmNl
IHdlIG9ubHkgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGNhbGVuZGFyIGZpZWxkczogCi0gICAgICog
RVJBLCBZRUFSLCBNT05USCwgREFURSwgIERBWV9PRl9NT05USCwgREFZX09GX1dFRUssIAorICAg
ICAqIFNpbmNlIHdlIG9ubHkgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGNhbGVuZGFyIGZpZWxkczoK
KyAgICAgKiBFUkEsIFlFQVIsIE1PTlRILCBEQVRFLCAgREFZX09GX01PTlRILCBEQVlfT0ZfV0VF
SywKICAgICAgKiBBTV9QTSwgIEhPVVIsIEhPVVJfT0ZfREFZLCBhbmQgTUlOVVRFLAogICAgICAq
IFdlIHJlc2VydmUgb25seSA0IGludGVydmFsIHBhdHRlcm5zIGZvciBhIHNrZWxldG9uLgogICAg
ICAqCkBAIC00ODgsNyArNDk0LDcgQEAgcHJpdmF0ZToKIAogCiAgICAgLy8gZGF0YSBtZW1iZXJz
Ci0gICAgLy8gZmFsbGJhY2sgaW50ZXJ2YWwgcGF0dGVybiAKKyAgICAvLyBmYWxsYmFjayBpbnRl
cnZhbCBwYXR0ZXJuCiAgICAgVW5pY29kZVN0cmluZyBmRmFsbGJhY2tJbnRlcnZhbFBhdHRlcm47
CiAgICAgLy8gZGVmYXVsdCBvcmRlcgogICAgIFVCb29sIGZGaXJzdERhdGVJblB0bklzTGF0ZXJE
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9kdHB0bmdlbi5oIGIvU291
cmNlL1dURi9pY3UvdW5pY29kZS9kdHB0bmdlbi5oCmluZGV4IDE5MDc5MzViMzM3ZTMyMDM4NDdj
NjMwZmFmNTYwZDIyMDE1NTVmYjYuLjU3MTJlZGJiOWZmNjA3MjFhMjk4YzM1ZjQ1YWM1MjFiNDkz
OTk3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRwdG5nZW4uaAorKysg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2R0cHRuZ2VuLmgKQEAgLTEsNiArMSw4IEBACisvLyDC
qSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAm
IHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoK
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKLSogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTUsIEludGVy
bmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisqIENvcHlyaWdodCAo
QykgMjAwNy0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9u
IGFuZAogKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCiAqCkBAIC0xNiw2ICsxOCw3IEBACiAjaW5jbHVkZSAidW5pY29kZS9sb2NpZC5oIgogI2lu
Y2x1ZGUgInVuaWNvZGUvdWRhdC5oIgogI2luY2x1ZGUgInVuaWNvZGUvdWRhdHBnLmgiCisjaW5j
bHVkZSAidW5pY29kZS91bmlzdHIuaCIKIAogVV9OQU1FU1BBQ0VfQkVHSU4KIApAQCAtMjUsNiAr
MjgsNyBAQCBVX05BTUVTUEFDRV9CRUdJTgogICovCiAKIAorY2xhc3MgQ2hhclN0cmluZzsKIGNs
YXNzIEhhc2h0YWJsZTsKIGNsYXNzIEZvcm1hdFBhcnNlcjsKIGNsYXNzIERhdGVUaW1lTWF0Y2hl
cjsKQEAgLTM0LDE1ICszOCwxNSBAQCBjbGFzcyBQdG5Ta2VsZXRvbjsKIGNsYXNzIFNoYXJlZERh
dGVUaW1lUGF0dGVybkdlbmVyYXRvcjsKIAogLyoqCi0gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGZs
ZXhpYmxlIGdlbmVyYXRpb24gb2YgZGF0ZSBmb3JtYXQgcGF0dGVybnMsIGxpa2UgInl5LU1NLWRk
Ii4gCi0gKiBUaGUgdXNlciBjYW4gYnVpbGQgdXAgdGhlIGdlbmVyYXRvciBieSBhZGRpbmcgc3Vj
Y2Vzc2l2ZSBwYXR0ZXJucy4gT25jZSB0aGF0IAorICogVGhpcyBjbGFzcyBwcm92aWRlcyBmbGV4
aWJsZSBnZW5lcmF0aW9uIG9mIGRhdGUgZm9ybWF0IHBhdHRlcm5zLCBsaWtlICJ5eS1NTS1kZCIu
CisgKiBUaGUgdXNlciBjYW4gYnVpbGQgdXAgdGhlIGdlbmVyYXRvciBieSBhZGRpbmcgc3VjY2Vz
c2l2ZSBwYXR0ZXJucy4gT25jZSB0aGF0CiAgKiBpcyBkb25lLCBhIHF1ZXJ5IGNhbiBiZSBtYWRl
IHVzaW5nIGEgInNrZWxldG9uIiwgd2hpY2ggaXMgYSBwYXR0ZXJuIHdoaWNoIGp1c3QKLSAqIGlu
Y2x1ZGVzIHRoZSBkZXNpcmVkIGZpZWxkcyBhbmQgbGVuZ3Rocy4gVGhlIGdlbmVyYXRvciB3aWxs
IHJldHVybiB0aGUgImJlc3QgZml0IiAKKyAqIGluY2x1ZGVzIHRoZSBkZXNpcmVkIGZpZWxkcyBh
bmQgbGVuZ3Rocy4gVGhlIGdlbmVyYXRvciB3aWxsIHJldHVybiB0aGUgImJlc3QgZml0IgogICog
cGF0dGVybiBjb3JyZXNwb25kaW5nIHRvIHRoYXQgc2tlbGV0b24uCiAgKiA8cD5UaGUgbWFpbiBt
ZXRob2QgcGVvcGxlIHdpbGwgdXNlIGlzIGdldEJlc3RQYXR0ZXJuKFN0cmluZyBza2VsZXRvbiks
Ci0gKiBzaW5jZSBub3JtYWxseSB0aGlzIGNsYXNzIGlzIHByZS1idWlsdCB3aXRoIGRhdGEgZnJv
bSBhIHBhcnRpY3VsYXIgbG9jYWxlLiAKKyAqIHNpbmNlIG5vcm1hbGx5IHRoaXMgY2xhc3MgaXMg
cHJlLWJ1aWx0IHdpdGggZGF0YSBmcm9tIGEgcGFydGljdWxhciBsb2NhbGUuCiAgKiBIb3dldmVy
LCBnZW5lcmF0b3JzIGNhbiBiZSBidWlsdCBkaXJlY3RseSBmcm9tIG90aGVyIGRhdGEgYXMgd2Vs
bC4KLSAqIDxwPjxpPklzc3VlOiBtYXkgYmUgdXNlZnVsIHRvIGFsc28gaGF2ZSBhIGZ1bmN0aW9u
IHRoYXQgcmV0dXJucyB0aGUgbGlzdCBvZiAKKyAqIDxwPjxpPklzc3VlOiBtYXkgYmUgdXNlZnVs
IHRvIGFsc28gaGF2ZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbGlzdCBvZgogICogZmll
bGRzIGluIGEgcGF0dGVybiwgaW4gb3JkZXIsIHNpbmNlIHdlIGhhdmUgdGhhdCBpbnRlcm5hbGx5
LgogICogVGhhdCB3b3VsZCBiZSB1c2VmdWwgZm9yIGdldHRpbmcgdGhlIFVJIG9yZGVyIG9mIGZp
ZWxkIGVsZW1lbnRzLjwvaT4KICAqIEBzdGFibGUgSUNVIDMuOApAQCAtODQsNyArODgsNyBAQCBw
dWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1UgMy44CiAgICAgICovCiAgICAgIHN0YXRpYyBEYXRl
VGltZVBhdHRlcm5HZW5lcmF0b3IqIFVfRVhQT1JUMiBjcmVhdGVFbXB0eUluc3RhbmNlKFVFcnJv
ckNvZGUmIHN0YXR1cyk7Ci0gICAgIAorCiAgICAgLyoqCiAgICAgICogRGVzdHJ1Y3Rvci4KICAg
ICAgKiBAc3RhYmxlIElDVSAzLjgKQEAgLTkyLDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkRhdGVUaW1lUGF0dGVybkdlbmVyYXRvcigpOwogCiAgICAgLyoqCi0gICAgICogQ2xvbmUg
RGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yIG9iamVjdC4gQ2xpZW50cyBhcmUgcmVzcG9uc2libGUg
Zm9yIAorICAgICAqIENsb25lIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvciBvYmplY3QuIENsaWVu
dHMgYXJlIHJlc3BvbnNpYmxlIGZvcgogICAgICAqIGRlbGV0aW5nIHRoZSBEYXRlVGltZVBhdHRl
cm5HZW5lcmF0b3Igb2JqZWN0IGNsb25lZC4KICAgICAgKiBAc3RhYmxlIElDVSAzLjgKICAgICAg
Ki8KQEAgLTEwNiw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgICAqIEBzdGFibGUgSUNVIDMuOAog
ICAgICAgKi8KICAgICBVQm9vbCBvcGVyYXRvcj09KGNvbnN0IERhdGVUaW1lUGF0dGVybkdlbmVy
YXRvciYgb3RoZXIpIGNvbnN0OwotICAgIAorCiAgICAgLyoqCiAgICAgICogUmV0dXJuIHRydWUg
aWYgYW5vdGhlciBvYmplY3QgaXMgc2VtYW50aWNhbGx5IHVuZXF1YWwgdG8gdGhpcyBvbmUuCiAg
ICAgICoKQEAgLTEyNCw5ICsxMjgsMjggQEAgcHVibGljOgogICAgICAqIEBwYXJhbSBzdGF0dXMg
IE91dHB1dCBwYXJhbSBzZXQgdG8gc3VjY2Vzcy9mYWlsdXJlIGNvZGUgb24gZXhpdCwKICAgICAg
KiAgICAgICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZv
cmUgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICogQHJldHVybiBza2VsZXRvbiBzdWNoIGFzICJN
TU1kZCIKKyAgICAgKiBAc3RhYmxlIElDVSA1NgorICAgICAqLworICAgIHN0YXRpYyBVbmljb2Rl
U3RyaW5nIHN0YXRpY0dldFNrZWxldG9uKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBhdHRlcm4sIFVF
cnJvckNvZGUmIHN0YXR1cyk7CisKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IHRvIHJldHVybiBh
IHVuaXF1ZSBza2VsZXRvbiBmcm9tIGEgZ2l2ZW4gcGF0dGVybi4gRm9yIGV4YW1wbGUsCisgICAg
ICogYm90aCAiTU1NLWRkIiBhbmQgImRkL01NTSIgcHJvZHVjZSB0aGUgc2tlbGV0b24gIk1NTWRk
Ii4KKyAgICAgKiBnZXRTa2VsZXRvbigpIHdvcmtzIGV4YWN0bHkgbGlrZSBzdGF0aWNHZXRTa2Vs
ZXRvbigpLgorICAgICAqIFVzZSBzdGF0aWNHZXRTa2VsZXRvbigpIGluc3RlYWQgb2YgZ2V0U2tl
bGV0b24oKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYXR0ZXJuICAgSW5wdXQgcGF0dGVybiwg
c3VjaCBhcyAiZGQvTU1NIgorICAgICAqIEBwYXJhbSBzdGF0dXMgIE91dHB1dCBwYXJhbSBzZXQg
dG8gc3VjY2Vzcy9mYWlsdXJlIGNvZGUgb24gZXhpdCwKKyAgICAgKiAgICAgICAgICAgICAgICAg
IHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNh
bGwuCisgICAgICogQHJldHVybiBza2VsZXRvbiBzdWNoIGFzICJNTU1kZCIKICAgICAgKiBAc3Rh
YmxlIElDVSAzLjgKICAgICAgKi8KLSAgICBVbmljb2RlU3RyaW5nIGdldFNrZWxldG9uKGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHBhdHRlcm4sIFVFcnJvckNvZGUmIHN0YXR1cyk7CisgICAgVW5pY29k
ZVN0cmluZyBnZXRTa2VsZXRvbihjb25zdCBVbmljb2RlU3RyaW5nJiBwYXR0ZXJuLCBVRXJyb3JD
b2RlJiBzdGF0dXMpOyAvKiB7CisgICAgICAgIFRoZSBmdW5jdGlvbiBpcyBjb21tZW50ZWQgb3V0
IGJlY2F1c2UgaXQgaXMgYSBzdGFibGUgQVBJIGNhbGxpbmcgYSBkcmFmdCBBUEkuCisgICAgICAg
IEFmdGVyIHN0YXRpY0dldFNrZWxldG9uIGJlY29tZXMgc3RhYmxlLCBzdGF0aWNHZXRTa2VsZXRv
biBjYW4gYmUgdXNlZCBhbmQKKyAgICAgICAgdGhlc2UgY29tbWVudHMgYW5kIHRoZSBkZWZpbml0
aW9uIG9mIGdldFNrZWxldG9uIGluIGR0cHRuZ2VuLmNwcCBzaG91bGQgYmUgcmVtb3ZlZC4KKyAg
ICAgICAgcmV0dXJuIHN0YXRpY0dldFNrZWxldG9uKHBhdHRlcm4sIHN0YXR1cyk7CisgICAgfSov
CiAKICAgICAvKioKICAgICAgKiBVdGlsaXR5IHRvIHJldHVybiBhIHVuaXF1ZSBiYXNlIHNrZWxl
dG9uIGZyb20gYSBnaXZlbiBwYXR0ZXJuLiBUaGlzIGlzCkBAIC0xMzgsMzggKzE2MSw2MCBAQCBw
dWJsaWM6CiAgICAgICogQHBhcmFtIHBhdHRlcm4gIElucHV0IHBhdHRlcm4sIHN1Y2ggYXMgImRk
L01NTSIKICAgICAgKiBAcGFyYW0gc3RhdHVzICBPdXRwdXQgcGFyYW0gc2V0IHRvIHN1Y2Nlc3Mv
ZmFpbHVyZSBjb2RlIG9uIGV4aXQsCiAgICAgICogICAgICAgICAgICAgICB3aGljaCBtdXN0IG5v
dCBpbmRpY2F0ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgotICAgICAqIEBy
ZXR1cm4gYmFzZSBza2VsZXRvbiwgc3VjaCBhcyAiTWQiCisgICAgICogQHJldHVybiBiYXNlIHNr
ZWxldG9uLCBzdWNoIGFzICJNTU1kIgorICAgICAqIEBzdGFibGUgSUNVIDU2CisgICAgICovCisg
ICAgc3RhdGljIFVuaWNvZGVTdHJpbmcgc3RhdGljR2V0QmFzZVNrZWxldG9uKGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIHBhdHRlcm4sIFVFcnJvckNvZGUmIHN0YXR1cyk7CisKKyAgICAvKioKKyAgICAg
KiBVdGlsaXR5IHRvIHJldHVybiBhIHVuaXF1ZSBiYXNlIHNrZWxldG9uIGZyb20gYSBnaXZlbiBw
YXR0ZXJuLiBUaGlzIGlzCisgICAgICogdGhlIHNhbWUgYXMgdGhlIHNrZWxldG9uLCBleGNlcHQg
dGhhdCBkaWZmZXJlbmNlcyBpbiBsZW5ndGggYXJlIG1pbmltaXplZAorICAgICAqIHNvIGFzIHRv
IG9ubHkgcHJlc2VydmUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBzdHJpbmcgYW5kIG51bWVyaWMg
Zm9ybS4gU28KKyAgICAgKiBmb3IgZXhhbXBsZSwgYm90aCAiTU1NLWRkIiBhbmQgImQvTU1NIiBw
cm9kdWNlIHRoZSBza2VsZXRvbiAiTU1NZCIKKyAgICAgKiAobm90aWNlIHRoZSBzaW5nbGUgZCku
CisgICAgICogZ2V0QmFzZVNrZWxldG9uKCkgd29ya3MgZXhhY3RseSBsaWtlIHN0YXRpY0dldEJh
c2VTa2VsZXRvbigpLgorICAgICAqIFVzZSBzdGF0aWNHZXRCYXNlU2tlbGV0b24oKSBpbnN0ZWFk
IG9mIGdldEJhc2VTa2VsZXRvbigpLgorICAgICAqCisgICAgICogQHBhcmFtIHBhdHRlcm4gIElu
cHV0IHBhdHRlcm4sIHN1Y2ggYXMgImRkL01NTSIKKyAgICAgKiBAcGFyYW0gc3RhdHVzICBPdXRw
dXQgcGFyYW0gc2V0IHRvIHN1Y2Nlc3MvZmFpbHVyZSBjb2RlIG9uIGV4aXQsCisgICAgICogICAg
ICAgICAgICAgICB3aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBm
dW5jdGlvbiBjYWxsLgorICAgICAqIEByZXR1cm4gYmFzZSBza2VsZXRvbiwgc3VjaCBhcyAiTU1N
ZCIKICAgICAgKiBAc3RhYmxlIElDVSAzLjgKICAgICAgKi8KLSAgICBVbmljb2RlU3RyaW5nIGdl
dEJhc2VTa2VsZXRvbihjb25zdCBVbmljb2RlU3RyaW5nJiBwYXR0ZXJuLCBVRXJyb3JDb2RlJiBz
dGF0dXMpOworICAgIFVuaWNvZGVTdHJpbmcgZ2V0QmFzZVNrZWxldG9uKGNvbnN0IFVuaWNvZGVT
dHJpbmcmIHBhdHRlcm4sIFVFcnJvckNvZGUmIHN0YXR1cyk7IC8qIHsKKyAgICAgICAgVGhlIGZ1
bmN0aW9uIGlzIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSBpdCBpcyBhIHN0YWJsZSBBUEkgY2FsbGlu
ZyBhIGRyYWZ0IEFQSS4KKyAgICAgICAgQWZ0ZXIgc3RhdGljR2V0QmFzZVNrZWxldG9uIGJlY29t
ZXMgc3RhYmxlLCBzdGF0aWNHZXRCYXNlU2tlbGV0b24gY2FuIGJlIHVzZWQgYW5kCisgICAgICAg
IHRoZXNlIGNvbW1lbnRzIGFuZCB0aGUgZGVmaW5pdGlvbiBvZiBnZXRCYXNlU2tlbGV0b24gaW4g
ZHRwdG5nZW4uY3BwIHNob3VsZCBiZSByZW1vdmVkLgorICAgICAgICByZXR1cm4gc3RhdGljR2V0
QmFzZVNrZWxldG9uKHBhdHRlcm4sIHN0YXR1cyk7CisgICAgfSovCiAKICAgICAvKioKICAgICAg
KiBBZGRzIGEgcGF0dGVybiB0byB0aGUgZ2VuZXJhdG9yLiBJZiB0aGUgcGF0dGVybiBoYXMgdGhl
IHNhbWUgc2tlbGV0b24gYXMKICAgICAgKiBhbiBleGlzdGluZyBwYXR0ZXJuLCBhbmQgdGhlIG92
ZXJyaWRlIHBhcmFtZXRlciBpcyBzZXQsIHRoZW4gdGhlIHByZXZpb3VzCiAgICAgICogdmFsdWUg
aXMgb3ZlcnJpZGVuLiBPdGhlcndpc2UsIHRoZSBwcmV2aW91cyB2YWx1ZSBpcyByZXRhaW5lZC4g
SW4gZWl0aGVyCi0gICAgICogY2FzZSwgdGhlIGNvbmZsaWN0aW5nIHN0YXR1cyBpcyBzZXQgYW5k
IHByZXZpb3VzIHZhbGUgaXMgc3RvcmVkIGluIAorICAgICAqIGNhc2UsIHRoZSBjb25mbGljdGlu
ZyBzdGF0dXMgaXMgc2V0IGFuZCBwcmV2aW91cyB2YWxlIGlzIHN0b3JlZCBpbgogICAgICAqIGNv
bmZsaWN0aW5nIHBhdHRlcm4uCiAgICAgICogPHA+CiAgICAgICogTm90ZSB0aGF0IHNpbmdsZS1m
aWVsZCBwYXR0ZXJucyAobGlrZSAiTU1NIikgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQsIGFuZAog
ICAgICAqIGRvbid0IG5lZWQgdG8gYmUgYWRkZWQgZXhwbGljaXRseSEKICAgICAgKgogICAgICAq
IEBwYXJhbSBwYXR0ZXJuICAgSW5wdXQgcGF0dGVybiwgc3VjaCBhcyAiZGQvTU1NIgotICAgICAq
IEBwYXJhbSBvdmVycmlkZSAgV2hlbiBleGlzdGluZyB2YWx1ZXMgYXJlIHRvIGJlIG92ZXJyaWRk
ZW4gdXNlIHRydWUsIAorICAgICAqIEBwYXJhbSBvdmVycmlkZSAgV2hlbiBleGlzdGluZyB2YWx1
ZXMgYXJlIHRvIGJlIG92ZXJyaWRkZW4gdXNlIHRydWUsCiAgICAgICogICAgICAgICAgICAgICAg
ICAgb3RoZXJ3aXNlIHVzZSBmYWxzZS4KICAgICAgKiBAcGFyYW0gY29uZmxpY3RpbmdQYXR0ZXJu
ICBQcmV2aW91cyBwYXR0ZXJuIHdpdGggdGhlIHNhbWUgc2tlbGV0b24uCiAgICAgICogQHBhcmFt
IHN0YXR1cyAgT3V0cHV0IHBhcmFtIHNldCB0byBzdWNjZXNzL2ZhaWx1cmUgY29kZSBvbiBleGl0
LAogICAgICAqICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJl
IGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KLSAgICAgKiBAcmV0dXJuIGNvbmZsaWN0aW5nIHN0
YXR1cy4gIFRoZSB2YWx1ZSBjb3VsZCBiZSBVREFUUEdfTk9fQ09ORkxJQ1QsIAorICAgICAqIEBy
ZXR1cm4gY29uZmxpY3Rpbmcgc3RhdHVzLiAgVGhlIHZhbHVlIGNvdWxkIGJlIFVEQVRQR19OT19D
T05GTElDVCwKICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVURBVFBHX0JBU0Vf
Q09ORkxJQ1Qgb3IgVURBVFBHX0NPTkZMSUNULgogICAgICAqIEBzdGFibGUgSUNVIDMuOAotCSAq
IDxwPgotCSAqIDxoND5TYW1wbGUgY29kZTwvaDQ+Ci0JICogXHNuaXBwZXQgc2FtcGxlcy9kdHB0
bmdzYW1wbGUvZHRwdG5nc2FtcGxlLmNwcCBnZXRCZXN0UGF0dGVybkV4YW1wbGUxCi0JICogXHNu
aXBwZXQgc2FtcGxlcy9kdHB0bmdzYW1wbGUvZHRwdG5nc2FtcGxlLmNwcCBhZGRQYXR0ZXJuRXhh
bXBsZQotCSAqIDxwPgotICAgICAqLwotICAgIFVEYXRlVGltZVBhdHRlcm5Db25mbGljdCBhZGRQ
YXR0ZXJuKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBhdHRlcm4sIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVCb29sIG92ZXJyaWRlLCAKKyAgICAgKiA8cD4KKyAgICAg
KiA8aDQ+U2FtcGxlIGNvZGU8L2g0PgorICAgICAqIFxzbmlwcGV0IHNhbXBsZXMvZHRwdG5nc2Ft
cGxlL2R0cHRuZ3NhbXBsZS5jcHAgZ2V0QmVzdFBhdHRlcm5FeGFtcGxlMQorICAgICAqIFxzbmlw
cGV0IHNhbXBsZXMvZHRwdG5nc2FtcGxlL2R0cHRuZ3NhbXBsZS5jcHAgYWRkUGF0dGVybkV4YW1w
bGUKKyAgICAgKiA8cD4KKyAgICAgKi8KKyAgICBVRGF0ZVRpbWVQYXR0ZXJuQ29uZmxpY3QgYWRk
UGF0dGVybihjb25zdCBVbmljb2RlU3RyaW5nJiBwYXR0ZXJuLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVCb29sIG92ZXJyaWRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGNvbmZsaWN0aW5nUGF0dGVybiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0
dXMpOwogCkBAIC0yNjgsMTEgKzMxMywxMSBAQCBwdWJsaWM6CiAgICAgICogQHJldHVybiBiZXN0
UGF0dGVybgogICAgICAqICAgICAgICAgICAgVGhlIGJlc3QgcGF0dGVybiBmb3VuZCBmcm9tIHRo
ZSBnaXZlbiBza2VsZXRvbi4KICAgICAgKiBAc3RhYmxlIElDVSAzLjgKLQkgKiA8cD4KLQkgKiA8
aDQ+U2FtcGxlIGNvZGU8L2g0PgotCSAqIFxzbmlwcGV0IHNhbXBsZXMvZHRwdG5nc2FtcGxlL2R0
cHRuZ3NhbXBsZS5jcHAgZ2V0QmVzdFBhdHRlcm5FeGFtcGxlMQotCSAqIFxzbmlwcGV0IHNhbXBs
ZXMvZHRwdG5nc2FtcGxlL2R0cHRuZ3NhbXBsZS5jcHAgZ2V0QmVzdFBhdHRlcm5FeGFtcGxlCi0J
ICogPHA+CisgICAgICogPHA+CisgICAgICogPGg0PlNhbXBsZSBjb2RlPC9oND4KKyAgICAgKiBc
c25pcHBldCBzYW1wbGVzL2R0cHRuZ3NhbXBsZS9kdHB0bmdzYW1wbGUuY3BwIGdldEJlc3RQYXR0
ZXJuRXhhbXBsZTEKKyAgICAgKiBcc25pcHBldCBzYW1wbGVzL2R0cHRuZ3NhbXBsZS9kdHB0bmdz
YW1wbGUuY3BwIGdldEJlc3RQYXR0ZXJuRXhhbXBsZQorICAgICAqIDxwPgogICAgICAqLwogICAg
ICBVbmljb2RlU3RyaW5nIGdldEJlc3RQYXR0ZXJuKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNrZWxl
dG9uLCBVRXJyb3JDb2RlJiBzdGF0dXMpOwogCkBAIC0zMTYsMTQgKzM2MSwxNCBAQCBwdWJsaWM6
CiAgICAgICogICAgICAgICAgICAgICB3aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1cmUg
YmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAqIEByZXR1cm4gcGF0dGVybiBhZGp1c3Rl
ZCB0byBtYXRjaCB0aGUgc2tlbGV0b24gZmllbGRzIHdpZHRocyBhbmQgc3VidHlwZXMuCiAgICAg
ICogQHN0YWJsZSBJQ1UgMy44Ci0JICogPHA+Ci0JICogPGg0PlNhbXBsZSBjb2RlPC9oND4KLQkg
KiBcc25pcHBldCBzYW1wbGVzL2R0cHRuZ3NhbXBsZS9kdHB0bmdzYW1wbGUuY3BwIGdldEJlc3RQ
YXR0ZXJuRXhhbXBsZTEKLQkgKiBcc25pcHBldCBzYW1wbGVzL2R0cHRuZ3NhbXBsZS9kdHB0bmdz
YW1wbGUuY3BwIHJlcGxhY2VGaWVsZFR5cGVzRXhhbXBsZQotCSAqIDxwPgotICAgICAqLwotICAg
ICBVbmljb2RlU3RyaW5nIHJlcGxhY2VGaWVsZFR5cGVzKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBh
dHRlcm4sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIHNrZWxldG9uLCAKKyAgICAgKiA8cD4KKyAgICAgKiA8aDQ+U2FtcGxlIGNvZGU8
L2g0PgorICAgICAqIFxzbmlwcGV0IHNhbXBsZXMvZHRwdG5nc2FtcGxlL2R0cHRuZ3NhbXBsZS5j
cHAgZ2V0QmVzdFBhdHRlcm5FeGFtcGxlMQorICAgICAqIFxzbmlwcGV0IHNhbXBsZXMvZHRwdG5n
c2FtcGxlL2R0cHRuZ3NhbXBsZS5jcHAgcmVwbGFjZUZpZWxkVHlwZXNFeGFtcGxlCisgICAgICog
PHA+CisgICAgICovCisgICAgIFVuaWNvZGVTdHJpbmcgcmVwbGFjZUZpZWxkVHlwZXMoY29uc3Qg
VW5pY29kZVN0cmluZyYgcGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBza2VsZXRvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpOwogCiAgICAgLyoqCkBAIC0zNDgs
OCArMzkzLDggQEAgcHVibGljOgogICAgICAqIEByZXR1cm4gcGF0dGVybiBhZGp1c3RlZCB0byBt
YXRjaCB0aGUgc2tlbGV0b24gZmllbGRzIHdpZHRocyBhbmQgc3VidHlwZXMuCiAgICAgICogQHN0
YWJsZSBJQ1UgNC40CiAgICAgICovCi0gICAgIFVuaWNvZGVTdHJpbmcgcmVwbGFjZUZpZWxkVHlw
ZXMoY29uc3QgVW5pY29kZVN0cmluZyYgcGF0dGVybiwgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc2tlbGV0b24sIAorICAgICBVbmlj
b2RlU3RyaW5nIHJlcGxhY2VGaWVsZFR5cGVzKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBhdHRlcm4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmlu
ZyYgc2tlbGV0b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVURhdGVU
aW1lUGF0dGVybk1hdGNoT3B0aW9ucyBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKQEAgLTM2OCwxMiArNDEzLDEyIEBA
IHB1YmxpYzoKIAogICAgICAvKioKICAgICAgICogR2V0IHRoZSBwYXR0ZXJuIGNvcnJlc3BvbmRp
bmcgdG8gYSBnaXZlbiBza2VsZXRvbi4KLSAgICAgICogQHBhcmFtIHNrZWxldG9uIAorICAgICAg
KiBAcGFyYW0gc2tlbGV0b24KICAgICAgICogQHJldHVybiBwYXR0ZXJuIGNvcnJlc3BvbmRpbmcg
dG8gYSBnaXZlbiBza2VsZXRvbi4KICAgICAgICogQHN0YWJsZSBJQ1UgMy44CiAgICAgICAqLwog
ICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBnZXRQYXR0ZXJuRm9yU2tlbGV0b24oY29uc3QgVW5p
Y29kZVN0cmluZyYgc2tlbGV0b24pIGNvbnN0OwotICAgICAKKwogICAgIC8qKgogICAgICAqIFJl
dHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBiYXNlIHNrZWxldG9ucyAoaW4gY2Fub25pY2FsIGZvcm0p
IGZyb20gdGhpcyBjbGFzcy4KICAgICAgKgpAQCAtMzg3LDExICs0MzIsMTEgQEAgcHVibGljOgog
CiAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAgICAgLyoqCi0gICAgICAqIFJldHVybiBh
IGxpc3Qgb2YgcmVkdW5kYW50IHBhdHRlcm5zIGFyZSB0aG9zZSB3aGljaCBpZiByZW1vdmVkLCBt
YWtlIG5vIAotICAgICAgKiBkaWZmZXJlbmNlIGluIHRoZSByZXN1bHRpbmcgZ2V0QmVzdFBhdHRl
cm4gdmFsdWVzLiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgCi0gICAgICAqIGxpc3Qgb2YgdGhlbSwg
dG8gaGVscCBjaGVjayB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIHBhdHRlcm5zIHVzZWQgdG8gYnVp
bGQgCisgICAgICAqIFJldHVybiBhIGxpc3Qgb2YgcmVkdW5kYW50IHBhdHRlcm5zIGFyZSB0aG9z
ZSB3aGljaCBpZiByZW1vdmVkLCBtYWtlIG5vCisgICAgICAqIGRpZmZlcmVuY2UgaW4gdGhlIHJl
c3VsdGluZyBnZXRCZXN0UGF0dGVybiB2YWx1ZXMuIFRoaXMgbWV0aG9kIHJldHVybnMgYQorICAg
ICAgKiBsaXN0IG9mIHRoZW0sIHRvIGhlbHAgY2hlY2sgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSBw
YXR0ZXJucyB1c2VkIHRvIGJ1aWxkCiAgICAgICAqIHRoaXMgZ2VuZXJhdG9yLgotICAgICAgKiAK
KyAgICAgICoKICAgICAgICogQHBhcmFtIHN0YXR1cyAgT3V0cHV0IHBhcmFtIHNldCB0byBzdWNj
ZXNzL2ZhaWx1cmUgY29kZSBvbiBleGl0LAogICAgICAgKiAgICAgICAgICAgICAgIHdoaWNoIG11
c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAg
ICAqIEByZXR1cm4gYSBTdHJpbmdFbnVtZXJhdGlvbiB3aXRoIHRoZSByZWR1bmRhbnQgcGF0dGVy
bi4KQEAgLTQwOSw3ICs0NTQsNyBAQCBwdWJsaWM6CiAgICAgICogdGhlIGRlY2ltYWwgc3RyaW5n
IGlzICIsIi4gVGhlbiB0aGUgcmVzdWx0aW5nIHBhdHRlcm4gaXMgbW9kaWZpZWQgdG8gYmUKICAg
ICAgKiAiSDptbTpzcyxTU1NTIgogICAgICAqCi0gICAgICogQHBhcmFtIGRlY2ltYWwgCisgICAg
ICogQHBhcmFtIGRlY2ltYWwKICAgICAgKiBAc3RhYmxlIElDVSAzLjgKICAgICAgKi8KICAgICB2
b2lkIHNldERlY2ltYWwoY29uc3QgVW5pY29kZVN0cmluZyYgZGVjaW1hbCk7CkBAIC00NzMsMjEg
KzUxOCwyNSBAQCBwcml2YXRlOgogICAgIFVuaWNvZGVTdHJpbmcgZGVjaW1hbDsKICAgICBEYXRl
VGltZU1hdGNoZXIgKnNraXBNYXRjaGVyOwogICAgIEhhc2h0YWJsZSAqZkF2YWlsYWJsZUZvcm1h
dEtleUhhc2g7Ci0gICAgVW5pY29kZVN0cmluZyBoYWNrUGF0dGVybjsKICAgICBVbmljb2RlU3Ry
aW5nIGVtcHR5U3RyaW5nOwotICAgIFVDaGFyIGZEZWZhdWx0SG91ckZvcm1hdENoYXI7Ci0gICAg
CisgICAgY2hhcjE2X3QgZkRlZmF1bHRIb3VyRm9ybWF0Q2hhcjsKKworICAgIGludDMyX3QgZkFs
bG93ZWRIb3VyRm9ybWF0c1s3XTsgIC8vIEFjdHVhbGx5IGFuIGFycmF5IG9mIEFsbG93ZWRIb3Vy
Rm9ybWF0IGVudW0gdHlwZSwgZW5kaW5nIHdpdGggVU5LTk9XTi4KKwogICAgIC8qIGludGVybmFs
IGZsYWdzIG1hc2tzIGZvciBhZGp1c3RGaWVsZFR5cGVzIGV0Yy4gKi8KICAgICBlbnVtIHsKICAg
ICAgICAga0RUUEdOb0ZsYWdzID0gMCwKICAgICAgICAga0RUUEdGaXhGcmFjdGlvbmFsU2Vjb25k
cyA9IDEsCiAgICAgICAgIGtEVFBHU2tlbGV0b25Vc2VzQ2FwSiA9IDIKKyAgICAgICAgLy8gd2l0
aCAjMTMxODMsIG5vIGxvbmdlciBuZWVkIGZsYWdzIGZvciBiLCBCCiAgICAgfTsKIAogICAgIHZv
aWQgaW5pdERhdGEoY29uc3QgTG9jYWxlICZsb2NhbGUsIFVFcnJvckNvZGUgJnN0YXR1cyk7Ci0g
ICAgdm9pZCBhZGRDYW5vbmljYWxJdGVtcygpOworICAgIHZvaWQgYWRkQ2Fub25pY2FsSXRlbXMo
VUVycm9yQ29kZSAmc3RhdHVzKTsKICAgICB2b2lkIGFkZElDVVBhdHRlcm5zKGNvbnN0IExvY2Fs
ZSYgbG9jYWxlLCBVRXJyb3JDb2RlJiBzdGF0dXMpOwogICAgIHZvaWQgaGFja1RpbWVzKGNvbnN0
IFVuaWNvZGVTdHJpbmcmIGhhY2tQYXR0ZXJuLCBVRXJyb3JDb2RlJiBzdGF0dXMpOworICAgIHZv
aWQgZ2V0Q2FsZW5kYXJUeXBlVG9Vc2UoY29uc3QgTG9jYWxlJiBsb2NhbGUsIENoYXJTdHJpbmcm
IGRlc3RpbmF0aW9uLCBVRXJyb3JDb2RlJiBlcnIpOworICAgIHZvaWQgY29uc3VtZVNob3J0VGlt
ZVBhdHRlcm4oY29uc3QgVW5pY29kZVN0cmluZyYgc2hvcnRUaW1lUGF0dGVybiwgVUVycm9yQ29k
ZSYgc3RhdHVzKTsKICAgICB2b2lkIGFkZENMRFJEYXRhKGNvbnN0IExvY2FsZSYgbG9jYWxlLCBV
RXJyb3JDb2RlJiBzdGF0dXMpOwogICAgIFVEYXRlVGltZVBhdHRlcm5Db25mbGljdCBhZGRQYXR0
ZXJuV2l0aFNrZWxldG9uKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFVuaWNv
ZGVTdHJpbmcgKiBza2VsZXRvblRvVXNlLCBVQm9vbCBvdmVycmlkZSwgVW5pY29kZVN0cmluZyYg
Y29uZmxpY3RpbmdQYXR0ZXJuLCBVRXJyb3JDb2RlJiBzdGF0dXMpOwogICAgIHZvaWQgaW5pdEhh
c2h0YWJsZShVRXJyb3JDb2RlJiBzdGF0dXMpOwpAQCAtNDk1LDcgKzU0NCw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXREZWNpbWFsU3ltYm9scyhjb25zdCBMb2NhbGUmIGxvY2FsZSwgVUVycm9y
Q29kZSYgc3RhdHVzKTsKICAgICBVRGF0ZVRpbWVQYXR0ZXJuRmllbGQgZ2V0QXBwZW5kRm9ybWF0
TnVtYmVyKGNvbnN0IGNoYXIqIGZpZWxkKSBjb25zdDsKICAgICBVRGF0ZVRpbWVQYXR0ZXJuRmll
bGQgZ2V0QXBwZW5kTmFtZU51bWJlcihjb25zdCBjaGFyKiBmaWVsZCkgY29uc3Q7CisgICAgVW5p
Y29kZVN0cmluZyYgZ2V0TXV0YWJsZUFwcGVuZEl0ZW1OYW1lKFVEYXRlVGltZVBhdHRlcm5GaWVs
ZCBmaWVsZCk7CiAgICAgdm9pZCBnZXRBcHBlbmROYW1lKFVEYXRlVGltZVBhdHRlcm5GaWVsZCBm
aWVsZCwgVW5pY29kZVN0cmluZyYgdmFsdWUpOworICAgIFVuaWNvZGVTdHJpbmcgbWFwU2tlbGV0
b25NZXRhY2hhcmFjdGVycyhjb25zdCBVbmljb2RlU3RyaW5nJiBwYXR0ZXJuRm9ybSwgaW50MzJf
dCogZmxhZ3MsIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAgICAgaW50MzJfdCBnZXRDYW5vbmljYWxJ
bmRleChjb25zdCBVbmljb2RlU3RyaW5nJiBmaWVsZCk7CiAgICAgY29uc3QgVW5pY29kZVN0cmlu
ZyogZ2V0QmVzdFJhdyhEYXRlVGltZU1hdGNoZXImIHNvdXJjZSwgaW50MzJfdCBpbmNsdWRlTWFz
aywgRGlzdGFuY2VJbmZvKiBtaXNzaW5nRmllbGRzLCBjb25zdCBQdG5Ta2VsZXRvbioqIHNwZWNp
ZmllZFNrZWxldG9uUHRyID0gMCk7CiAgICAgVW5pY29kZVN0cmluZyBhZGp1c3RGaWVsZFR5cGVz
KGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFB0blNrZWxldG9uKiBzcGVjaWZp
ZWRTa2VsZXRvbiwgaW50MzJfdCBmbGFncywgVURhdGVUaW1lUGF0dGVybk1hdGNoT3B0aW9ucyBv
cHRpb25zID0gVURBVFBHX01BVENIX05PX09QVElPTlMpOwpAQCAtNTA1LDYgKzU1NiwxMiBAQCBw
cml2YXRlOgogICAgIFVCb29sIGlzQXZhaWxhYmxlRm9ybWF0U2V0KGNvbnN0IFVuaWNvZGVTdHJp
bmcgJmtleSkgY29uc3Q7CiAgICAgdm9pZCBjb3B5SGFzaHRhYmxlKEhhc2h0YWJsZSAqb3RoZXIs
IFVFcnJvckNvZGUgJnN0YXR1cyk7CiAgICAgVUJvb2wgaXNDYW5vbmljYWxJdGVtKGNvbnN0IFVu
aWNvZGVTdHJpbmcmIGl0ZW0pIGNvbnN0OworICAgIHN0YXRpYyB2b2lkIFVfQ0FMTENPTlYgbG9h
ZEFsbG93ZWRIb3VyRm9ybWF0c0RhdGEoVUVycm9yQ29kZSAmc3RhdHVzKTsKKyAgICB2b2lkIGdl
dEFsbG93ZWRIb3VyRm9ybWF0cyhjb25zdCBMb2NhbGUgJmxvY2FsZSwgVUVycm9yQ29kZSAmc3Rh
dHVzKTsKKworICAgIHN0cnVjdCBBcHBlbmRJdGVtRm9ybWF0c1Npbms7CisgICAgc3RydWN0IEFw
cGVuZEl0ZW1OYW1lc1Npbms7CisgICAgc3RydWN0IEF2YWlsYWJsZUZvcm1hdHNTaW5rOwogfSA7
Ly8gZW5kIGNsYXNzIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvcgogCiBVX05BTUVTUEFDRV9FTkQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRydWxlLmggYi9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL2R0cnVsZS5oCmluZGV4IGNiNTI2YTE1MmNlMzBmY2ZiMzljYmIzNGYyNzdh
ZWZhMjllNjIzMGQuLjA3NjcyNDkxYTY3MzQyY2IzNzBlZWJkMTYzZDRmODM3NDcxNzkzODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRydWxlLmgKKysrIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9kdHJ1bGUuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxh
dGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNl
OiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCwgSW50ZXJuYXRpb25hbCBCdXNp
bmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL2VudW1zZXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZW51
bXNldC5oCmluZGV4IDUxMDZjMzcxNzcxMTE5NDNiOTI3YzM3OTQ4YmRmY2U1MmM3NmMyMDkuLmY2
M2RkMTYyMmUyMGM0YTU3NzgwODBjNTFiZTliY2E1MzNlMDVmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvZW51bXNldC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
ZW51bXNldC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUs
IEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cu
dW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZXJyb3Jjb2RlLmggYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL2Vycm9yY29kZS5oCmluZGV4IDNiNjAxODEwZDdiMTJmYzU4OTVlYmY3
Njg5MjMyOTg1MjM2YjZkOTIuLjgxY2FkMjA3NDUyM2MyMWJkYmMxOGU3MmQ1ZTdkNTQ5YTNiZjlh
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZXJyb3Jjb2RlLmgKKysrIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS9lcnJvcmNvZGUuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKp
IDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYg
dGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtNiw3ICs4LDcgQEAKICoKICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICBlcnJvcmNvZGUuaAotKiAgIGVuY29kaW5nOiAg
IFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChub3Qg
dXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL2ZpZWxkcG9zLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2ZpZWxkcG9zLmgKaW5k
ZXggMzhhOTU3NmU3ODJhOTNlYzY0MjMzM2JmYmI5ODcwZGE3Nzk0ZGI5MS4uMGJjYzhkYWEwZjcz
ZTExNzM0N2NlNGRiODYxNWFiZWMzYThmOGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9maWVsZHBvcy5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZmllbGRwb3Mu
aApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgIENv
cHlyaWdodCAoQykgMTk5Ny0yMDA2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCkBA
IC01Niw3ICs1OCw3IEBAIFVfTkFNRVNQQUNFX0JFR0lOCiAgKiB0byBwZXJmb3JtIHBhcnRpYWwg
Zm9ybWF0dGluZyBvciB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAgKiBmb3JtYXR0ZWQg
b3V0cHV0IChzdWNoIGFzIHRoZSBwb3NpdGlvbiBvZiBhIGZpZWxkKS4KICAqCi0gKiBUaGUgRmll
bGRQb3NpdGlvbiBjbGFzcyBpcyBub3Qgc3VpdGFibGUgZm9yIHN1YmNsYXNzaW5nLgorICogVGhl
IEZpZWxkUG9zaXRpb24gY2xhc3MgaXMgbm90IGludGVuZGVkIGZvciBwdWJsaWMgc3ViY2xhc3Np
bmcuCiAgKgogICogPHA+CiAgKiBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIDxjb2RlPkZp
ZWxkUG9zaXRpb248L2NvZGU+IHRvIGFpZApAQCAtMTA3LDcgKzEwOSw4IEBAIGNsYXNzIFVfSTE4
Tl9BUEkgRmllbGRQb3NpdGlvbiA6IHB1YmxpYyBVT2JqZWN0IHsKIHB1YmxpYzoKICAgICAvKioK
ICAgICAgKiBET05UX0NBUkUgbWF5IGJlIHNwZWNpZmllZCBhcyB0aGUgZmllbGQgdG8gaW5kaWNh
dGUgdGhhdCB0aGUKLSAgICAgKiBjYWxsZXIgZG9lc24ndCBuZWVkIHRvIHNwZWNpZnkgYSBmaWVs
ZC4gIERvIG5vdCBzdWJjbGFzcy4KKyAgICAgKiBjYWxsZXIgZG9lc24ndCBuZWVkIHRvIHNwZWNp
ZnkgYSBmaWVsZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAgKi8KICAgICBlbnVtIHsg
RE9OVF9DQVJFID0gLTEgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9m
aWx0ZXJlZGJyay5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9maWx0ZXJlZGJyay5oCmluZGV4
IDE0MTI0MThiZTUwYmJhYTRjNWE2NDJmNzhmNWZkMDdiMWI0ZDZkZmUuLmEwMzE5YmYwYTc2YWY1
MjNmZjRlYzU1NmQ4NTVmZjcwNjM2OWYyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvZmlsdGVyZWRicmsuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2ZpbHRlcmVk
YnJrLmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5j
LiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qICAg
Q29weXJpZ2h0IChDKSAxOTk3LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMK
KyogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNo
aW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICovCkBAIC0xMiw3ICsxNCw2IEBACiAjaW5jbHVkZSAi
dW5pY29kZS9icmtpdGVyLmgiCiAKICNpZiAhVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04gJiYg
IVVDT05GSUdfTk9fRklMVEVSRURfQlJFQUtfSVRFUkFUSU9OCi0jaWZuZGVmIFVfSElERV9JTlRF
Uk5BTF9BUEkKIAogVV9OQU1FU1BBQ0VfQkVHSU4KIApAQCAtMzAsMjUgKzMxLDEzIEBAIFVfTkFN
RVNQQUNFX0JFR0lOCiAgKiAgYnV0IHdpdGggIk1yLiIgYXMgYW4gZXhjZXB0aW9uLCBhIGZpbHRl
cmVkIGJyZWFrIGl0ZXJhdG9yCiAgKiAgd291bGQgY29uc2lkZXIgdGhlIHN0cmluZyAiTXIuIFNt
aXRoIiB0byBiZSBhIHNpbmdsZSBzZWdtZW50LgogICoKLSAqIDxwPjxiPk5vdGU6PC9iPiBBbiBp
bnN0YW5jZSBvZiB7QGxpbmsgQnJlYWtJdGVyYXRvcn0gcmV0dXJuZWQgYnkgdGhpcyBidWlsZGVy
Ci0gKiBjbGFzcyBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCBmb2xsb3dpbmcgb3BlcmF0aW9u
cyBpbiB0aGlzIHRlY2hub2xvZ3kgcHJldmlldwotICogdmVyc2lvbjoKLSAqIDx1bD4KLSAqICAg
PGxpPntAbGluayBCcmVha0l0ZXJhdG9yI25leHQoaW50MzJfdCkgbmV4dChpbnQzMl90IG4pfTwv
bGk+Ci0gKiAgIDxsaT57QGxpbmsgQnJlYWtJdGVyYXRvciNwcmV2aW91cyh2b2lkKSBwcmV2aW91
cyh2b2lkKX08L2xpPgotICogICA8bGk+e0BsaW5rIEJyZWFrSXRlcmF0b3IjZm9sbG93aW5nKGlu
dDMyX3QpIGZvbGxvd2luZyhpbnQzMl90IG9mZnNldCl9PC9saT4KLSAqICAgPGxpPntAbGluayBC
cmVha0l0ZXJhdG9yI3ByZWNlZGluZyhpbnQzMl90KSBwcmVjZWRpbmcoaW50MzJfdCBvZmZzZXQp
fTwvbGk+Ci0gKiA8L3VsPgotICogV2hlbiBvbmUgb2YgYWJvdmUgbWV0aG9kcyBpcyBjYWxsZWQs
IEJyZWFrSXRlcmF0b3IuRE9ORSB3aWxsIGJlIHJldHVybmVkIGltbWVkaWF0ZWx5Ci0gKiB3aXRo
b3V0IHVwZGF0aW5nIHRoZSBpbnRlcm5hbCBzdGF0ZS4KLSAqCi0gKiBAaW50ZXJuYWwgdGVjaG5v
bG9neSBwcmV2aWV3CisgKiBAc3RhYmxlIElDVSA1NgogICovCi1jbGFzcyBVX0kxOE5fQVBJIEZp
bHRlcmVkQnJlYWtJdGVyYXRvckJ1aWxkZXIgOiBwdWJsaWMgVU9iamVjdCB7CitjbGFzcyBVX0NP
TU1PTl9BUEkgRmlsdGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlciA6IHB1YmxpYyBVT2JqZWN0IHsK
ICBwdWJsaWM6CiAgIC8qKgogICAgKiAgZGVzdHJ1Y3Rvci4KLSAgICogQGludGVybmFsIHRlY2hu
b2xvZ3kgcHJldmlldworICAgKiBAc3RhYmxlIElDVSA1NgogICAgKi8KICAgdmlydHVhbCB+Rmls
dGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlcigpOwogCkBAIC02MiwxOCArNTEsMzQgQEAgY2xhc3Mg
VV9JMThOX0FQSSBGaWx0ZXJlZEJyZWFrSXRlcmF0b3JCdWlsZGVyIDogcHVibGljIFVPYmplY3Qg
ewogICAgKiBAcGFyYW0gd2hlcmUgdGhlIGxvY2FsZS4KICAgICogQHBhcmFtIHN0YXR1cyBUaGUg
ZXJyb3IgY29kZS4KICAgICogQHJldHVybiB0aGUgbmV3IGJ1aWxkZXIKLSAgICogQGludGVybmFs
IHRlY2hub2xvZ3kgcHJldmlldworICAgKiBAc3RhYmxlIElDVSA1NgogICAgKi8KICAgc3RhdGlj
IEZpbHRlcmVkQnJlYWtJdGVyYXRvckJ1aWxkZXIgKmNyZWF0ZUluc3RhbmNlKGNvbnN0IExvY2Fs
ZSYgd2hlcmUsIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FU
RURfQVBJCisgIC8qKgorICAgKiBUaGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4g
ZmF2b3Igb2YgY3JlYXRlRW1wdHlJbnN0YW5jZSwgd2hpY2ggaGFzCisgICAqIGlkZW50aWNhbCBi
ZWhhdmlvci4KKyAgICogQHBhcmFtIHN0YXR1cyBUaGUgZXJyb3IgY29kZS4KKyAgICogQHJldHVy
biB0aGUgbmV3IGJ1aWxkZXIKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDYwIHVzZSBjcmVhdGVFbXB0
eUluc3RhbmNlIGluc3RlYWQKKyAgICogQHNlZSBjcmVhdGVFbXB0eUluc3RhbmNlKCkKKyAgICov
CisgIHN0YXRpYyBpbmxpbmUgRmlsdGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlciAqY3JlYXRlSW5z
dGFuY2UoVUVycm9yQ29kZSAmc3RhdHVzKSB7CisgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW5zdGFu
Y2Uoc3RhdHVzKTsKKyAgfQorI2VuZGlmICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KKwor
I2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgIC8qKgogICAgKiBDb25zdHJ1Y3QgYW4gZW1wdHkg
RmlsdGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlci4KICAgICogSW4gdGhpcyBzdGF0ZSwgaXQgd2ls
bCBub3Qgc3VwcHJlc3MgYW55IHNlZ21lbnQgYm91bmRhcmllcy4KICAgICogQHBhcmFtIHN0YXR1
cyBUaGUgZXJyb3IgY29kZS4KICAgICogQHJldHVybiB0aGUgbmV3IGJ1aWxkZXIKLSAgICogQGlu
dGVybmFsIHRlY2hub2xvZ3kgcHJldmlldworICAgKiBAZHJhZnQgSUNVIDYwCiAgICAqLwotICBz
dGF0aWMgRmlsdGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlciAqY3JlYXRlSW5zdGFuY2UoVUVycm9y
Q29kZSAmc3RhdHVzKTsKKyAgc3RhdGljIEZpbHRlcmVkQnJlYWtJdGVyYXRvckJ1aWxkZXIgKmNy
ZWF0ZUVtcHR5SW5zdGFuY2UoVUVycm9yQ29kZSAmc3RhdHVzKTsKKyNlbmRpZiAgLyogVV9ISURF
X0RSQUZUX0FQSSAqLwogCiAgIC8qKgogICAgKiBTdXBwcmVzcyBhIGNlcnRhaW4gc3RyaW5nIGZy
b20gYmVpbmcgdGhlIGVuZCBvZiBhIHNlZ21lbnQuCkBAIC04Myw3ICs4OCw3IEBAIGNsYXNzIFVf
STE4Tl9BUEkgRmlsdGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlciA6IHB1YmxpYyBVT2JqZWN0IHsK
ICAgICogQHBhcmFtIHN0YXR1cyBlcnJvciBjb2RlCiAgICAqIEByZXR1cm4gcmV0dXJucyBUUlVF
IGlmIHRoZSBzdHJpbmcgd2FzIG5vdCBwcmVzZW50IGFuZCBub3cgYWRkZWQsCiAgICAqIEZBTFNF
IGlmIHRoZSBjYWxsIHdhcyBhIG5vLW9wIGJlY2F1c2UgdGhlIHN0cmluZyB3YXMgYWxyZWFkeSBi
ZWluZyBzdXBwcmVzc2VkLgotICAgKiBAaW50ZXJuYWwgdGVjaG5vbG9neSBwcmV2aWV3CisgICAq
IEBzdGFibGUgSUNVIDU2CiAgICAqLwogICB2aXJ0dWFsIFVCb29sIHN1cHByZXNzQnJlYWtBZnRl
cihjb25zdCBVbmljb2RlU3RyaW5nJiBzdHJpbmcsIFVFcnJvckNvZGUmIHN0YXR1cykgPSAwOwog
CkBAIC05NiwxMCArMTAxLDI0IEBAIGNsYXNzIFVfSTE4Tl9BUEkgRmlsdGVyZWRCcmVha0l0ZXJh
dG9yQnVpbGRlciA6IHB1YmxpYyBVT2JqZWN0IHsKICAgICogQHBhcmFtIHN0YXR1cyBlcnJvciBj
b2RlCiAgICAqIEByZXR1cm4gcmV0dXJucyBUUlVFIGlmIHRoZSBzdHJpbmcgd2FzIHByZXNlbnQg
YW5kIG5vdyByZW1vdmVkLAogICAgKiBGQUxTRSBpZiB0aGUgY2FsbCB3YXMgYSBuby1vcCBiZWNh
dXNlIHRoZSBzdHJpbmcgd2FzIG5vdCBiZWluZyBzdXBwcmVzc2VkLgotICAgKiBAaW50ZXJuYWwg
dGVjaG5vbG9neSBwcmV2aWV3CisgICAqIEBzdGFibGUgSUNVIDU2CiAgICAqLwogICB2aXJ0dWFs
IFVCb29sIHVuc3VwcHJlc3NCcmVha0FmdGVyKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHN0cmluZywg
VUVycm9yQ29kZSYgc3RhdHVzKSA9IDA7CiAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJ
CisgIC8qKgorICAgKiBUaGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Ig
b2Ygd3JhcEl0ZXJhdG9yV2l0aEZpbHRlcigpCisgICAqIFRoZSBiZWhhdmlvciBpcyBpZGVudGlj
YWwuCisgICAqIEBwYXJhbSBhZG9wdEJyZWFrSXRlcmF0b3IgdGhlIGJyZWFrIGl0ZXJhdG9yIHRv
IGFkb3B0CisgICAqIEBwYXJhbSBzdGF0dXMgZXJyb3IgY29kZQorICAgKiBAcmV0dXJuIHRoZSBu
ZXcgQnJlYWtJdGVyYXRvciwgb3duZWQgYnkgdGhlIGNhbGxlci4KKyAgICogQGRlcHJlY2F0ZWQg
SUNVIDYwIHVzZSB3cmFwSXRlcmF0b3JXaXRoRmlsdGVyKCkgaW5zdGVhZAorICAgKiBAc2VlIHdy
YXBCcmVha0l0ZXJhdG9yV2l0aEZpbHRlcigpCisgICAqLworICB2aXJ0dWFsIEJyZWFrSXRlcmF0
b3IgKmJ1aWxkKEJyZWFrSXRlcmF0b3IqIGFkb3B0QnJlYWtJdGVyYXRvciwgVUVycm9yQ29kZSYg
c3RhdHVzKSA9IDA7CisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLworCisjaWZu
ZGVmIFVfSElERV9EUkFGVF9BUEkKICAgLyoqCiAgICAqIFdyYXAgKGFkb3B0KSBhbiBleGlzdGlu
ZyBicmVhayBpdGVyYXRvciBpbiBhIG5ldyBmaWx0ZXJlZCBpbnN0YW5jZS4KICAgICogVGhlIHJl
c3VsdGluZyBCcmVha0l0ZXJhdG9yIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIuCkBAIC0xMDcsMTcg
KzEyNiwyMSBAQCBjbGFzcyBVX0kxOE5fQVBJIEZpbHRlcmVkQnJlYWtJdGVyYXRvckJ1aWxkZXIg
OiBwdWJsaWMgVU9iamVjdCB7CiAgICAqIE5vdGUgdGhhdCB0aGUgYWRvcHRCcmVha0l0ZXJhdG9y
IGlzIGFkb3B0ZWQgYnkgdGhlIG5ldyBCcmVha0l0ZXJhdG9yCiAgICAqIGFuZCBzaG91bGQgbm8g
bG9uZ2VyIGJlIHVzZWQgYnkgdGhlIGNhbGxlci4KICAgICogVGhlIEZpbHRlcmVkQnJlYWtJdGVy
YXRvckJ1aWxkZXIgbWF5IGJlIHJldXNlZC4KKyAgICogVGhpcyBmdW5jdGlvbiBpcyBhbiBhbGlh
cyBmb3IgYnVpbGQoKQogICAgKiBAcGFyYW0gYWRvcHRCcmVha0l0ZXJhdG9yIHRoZSBicmVhayBp
dGVyYXRvciB0byBhZG9wdAogICAgKiBAcGFyYW0gc3RhdHVzIGVycm9yIGNvZGUKICAgICogQHJl
dHVybiB0aGUgbmV3IEJyZWFrSXRlcmF0b3IsIG93bmVkIGJ5IHRoZSBjYWxsZXIuCi0gICAqIEBp
bnRlcm5hbCB0ZWNobm9sb2d5IHByZXZpZXcKKyAgICogQGRyYWZ0IElDVSA2MAogICAgKi8KLSAg
dmlydHVhbCBCcmVha0l0ZXJhdG9yICpidWlsZChCcmVha0l0ZXJhdG9yKiBhZG9wdEJyZWFrSXRl
cmF0b3IsIFVFcnJvckNvZGUmIHN0YXR1cykgPSAwOworICBpbmxpbmUgQnJlYWtJdGVyYXRvciAq
d3JhcEl0ZXJhdG9yV2l0aEZpbHRlcihCcmVha0l0ZXJhdG9yKiBhZG9wdEJyZWFrSXRlcmF0b3Is
IFVFcnJvckNvZGUmIHN0YXR1cykgeworICAgIHJldHVybiBidWlsZChhZG9wdEJyZWFrSXRlcmF0
b3IsIHN0YXR1cyk7CisgIH0KKyNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogCiAgcHJv
dGVjdGVkOgogICAvKioKICAgICogRm9yIHN1YmNsYXNzIHVzZQotICAgKiBAaW50ZXJuYWwgdGVj
aG5vbG9neSBwcmV2aWV3CisgICAqIEBzdGFibGUgSUNVIDU2CiAgICAqLwogICBGaWx0ZXJlZEJy
ZWFrSXRlcmF0b3JCdWlsZGVyKCk7CiB9OwpAQCAtMTI1LDcgKzE0OCw2IEBAIGNsYXNzIFVfSTE4
Tl9BUEkgRmlsdGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlciA6IHB1YmxpYyBVT2JqZWN0IHsKIAog
VV9OQU1FU1BBQ0VfRU5ECiAKLSNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogI2Vu
ZGlmIC8vICNpZiAhVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04gJiYgIVVDT05GSUdfTk9fRklM
VEVSRURfQlJFQUtfSVRFUkFUSU9OCiAKICNlbmRpZiAvLyAjaWZuZGVmIEZJTFRFUkVEQlJLX0gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZm10YWJsZS5oIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9mbXRhYmxlLmgKaW5kZXggNmNhZDI3NmY0MjM2NmNkYWIyNTk2MGI4ZjA3
NGEwMzRkN2Y0ZDFiYi4uNzY2YTcxOTY5ZGVhZGM4MTQ2NDMxYTRlOTA0YzcwNTllYWQyZmNmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9mbXRhYmxlLmgKKysrIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS9mbXRhYmxlLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFu
ZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9m
IHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiAqICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTQsIEludGVybmF0aW9u
YWwgQnVzaW5lc3MgTWFjaGluZXMKQEAgLTEzNCw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgICog
ICAgICAgICAgICAgICAgZGVjaW1hbCBudW1iZXIuCiAgICAgICogQHN0YWJsZSBJQ1UgNC40CiAg
ICAgICovCi0gICAgRm9ybWF0dGFibGUoY29uc3QgU3RyaW5nUGllY2UgJm51bWJlciwgVUVycm9y
Q29kZSAmc3RhdHVzKTsKKyAgICBGb3JtYXR0YWJsZShTdHJpbmdQaWVjZSBudW1iZXIsIFVFcnJv
ckNvZGUgJnN0YXR1cyk7CiAKICAgICAvKioKICAgICAgKiBDcmVhdGVzIGEgRm9ybWF0dGFibGUg
b2JqZWN0IHdpdGggYSBVbmljb2RlU3RyaW5nIG9iamVjdCB0byBjb3B5IGZyb20uCkBAIC01ODEs
NyArNTgzLDcgQEAgcHVibGljOgogICAgICAqICAgICAgICAgICAgICAgICAgICAgIGluY29taW5n
IHN0cmluZyBpcyBub3QgYSB2YWxpZCBkZWNpbWFsIG51bWJlci4KICAgICAgKiBAc3RhYmxlIElD
VSA0LjQKICAgICAgKi8KLSAgICB2b2lkICAgICAgICAgICAgIHNldERlY2ltYWxOdW1iZXIoY29u
c3QgU3RyaW5nUGllY2UgJm51bWJlclN0cmluZywKKyAgICB2b2lkICAgICAgICAgICAgIHNldERl
Y2ltYWxOdW1iZXIoU3RyaW5nUGllY2UgbnVtYmVyU3RyaW5nLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpOwogCiAgICAgLyoqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2Zvcm1hdC5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9mb3JtYXQuaAppbmRleCBjYjhlYTYxZjc2ZTZjMjM2YmE1YzRhMTAzNDIzZDUxMjVm
YTRhNzk4Li5iMDUzMThkYWU3YmE3ZmFlNzBhZWFhNmFjYWMyNjJlY2RjMWQzMjI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2Zvcm1hdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvZm9ybWF0LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqIENvcHlyaWdodCAoQykgMTk5Ny0yMDExLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNz
IE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL2Zwb3NpdGVyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2Zwb3NpdGVy
LmgKaW5kZXggYjg0MjE2MWE2OWI3OTRjY2M2YmY5Nzg5OGEzODRjM2VlODI1ZGVjYi4uMzhjY2Q4
ZmViMzA2NzZiZDU5NjQzNmUwNGE4MWQ0ZDgyODhjNDZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9mcG9zaXRlci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZnBv
c2l0ZXIuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJ
bmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVu
aWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICog
ICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5l
cwpAQCAtNDUsNiArNDcsMTMgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KIAogY2xhc3MgVVZlY3RvcjMy
OwogCisvLyBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBudW1iZXIgZm9ybWF0dGluZzoKK25hbWVz
cGFjZSBudW1iZXIgeworbmFtZXNwYWNlIGltcGwgeworY2xhc3MgTnVtYmVyU3RyaW5nQnVpbGRl
cjsKK30KK30KKwogLyoqCiAgKiBGaWVsZFBvc2l0aW9uSXRlcmF0b3IgcmV0dXJucyB0aGUgZmll
bGQgaWRzIGFuZCB0aGVpciBzdGFydC9saW1pdCBwb3NpdGlvbnMgZ2VuZXJhdGVkCiAgKiBieSBh
IGNhbGwgdG8gRm9ybWF0Ojpmb3JtYXQuICBTZWUgRm9ybWF0LCBOdW1iZXJGb3JtYXQsIERlY2lt
YWxGb3JtYXQuCkBAIC05Nyw4ICsxMDYsNiBAQCBwdWJsaWM6CiAgICAgVUJvb2wgbmV4dChGaWVs
ZFBvc2l0aW9uJiBmcCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEZpZWxkUG9zaXRp
b25JdGVyYXRvckhhbmRsZXI7Ci0KICAgICAvKioKICAgICAgKiBTZXRzIHRoZSBkYXRhIHVzZWQg
YnkgdGhlIGl0ZXJhdG9yLCBhbmQgcmVzZXRzIHRoZSBwb3NpdGlvbi4KICAgICAgKiBSZXR1cm5z
IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUiBpbiBzdGF0dXMgaWYgdGhlIGRhdGEgaXMgbm90IHZh
bGlkIApAQCAtMTA2LDYgKzExMyw5IEBAIHByaXZhdGU6CiAgICAgICovCiAgICAgdm9pZCBzZXRE
YXRhKFVWZWN0b3IzMiAqYWRvcHQsIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKKyAgICBmcmllbmQg
Y2xhc3MgRmllbGRQb3NpdGlvbkl0ZXJhdG9ySGFuZGxlcjsKKyAgICBmcmllbmQgY2xhc3MgbnVt
YmVyOjppbXBsOjpOdW1iZXJTdHJpbmdCdWlsZGVyOworCiAgICAgVVZlY3RvcjMyICpkYXRhOwog
ICAgIGludDMyX3QgcG9zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
Z2VuZGVyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2dlbmRlci5oCmluZGV4IDFhNmFlOGZl
NmM4ZDQ4NTRmMjhkOWUwYTAyODlkNzVlMWFiM2M1N2EuLmUzYzI3ZDAyNGUwOTQzMTMyMWU0MjZl
ZTI1N2FmYTgxODgzZWEyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZ2Vu
ZGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9nZW5kZXIuaApAQCAtMSwzICsxLDUg
QEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBM
aWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5o
dG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
MywgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZ3JlZ29jYWwuaCBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvZ3JlZ29jYWwuaAppbmRleCBlNmFlNGQ2YTFkZjcwYjBjZWZmZTU5NmQ0NWZiNTJk
MTU4M2RlYTE0Li4yYjRmZTFkODc5Y2FkZjM2ZDhhMTUwZDAxMzY2OTA1NThkYTNjYmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2dyZWdvY2FsLmgKKysrIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9ncmVnb2NhbC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQg
bGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1
c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqIENvcHlyaWdo
dCAoQykgMTk5Ny0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0
aW9uIGFuZCBvdGhlcnMuCiAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL2ljdWRhdGF2ZXIuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
aWN1ZGF0YXZlci5oCmluZGV4IDYwOWY1ODBmMDZhMzVmZmU3ZDY3OTYyOTRjZDE4MzEyZTg0NmFj
MDIuLjFjYjIwMmUzZDQ1YzYyYWY1OTcxN2RjMDUyZmEzYTg4MTkyYzQ2ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvaWN1ZGF0YXZlci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvaWN1ZGF0YXZlci5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0
ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6
IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvaWN1cGx1Zy5o
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9pY3VwbHVnLmgKaW5kZXggNjFkYzJhM2ViMGFmYTFk
MTZiNTlmYzEzZGRjMGExZGNkMDUzYTY5MS4uMWE4OTRhNzFjNGFlODg5OWNjNWY3NWUzOWM1MTEy
YWY5NmYzZmQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9pY3VwbHVnLmgK
KysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9pY3VwbHVnLmgKQEAgLTEsNyArMSw5IEBACisv
LyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5z
ZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAog
LyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogKgotKiAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEy
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBh
bmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgpAQCAtMTA4LDYgKzExMCwxMCBAQAogI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCiAKIAor
I2lmIFVDT05GSUdfRU5BQkxFX1BMVUdJTlMKKworCisKIC8qID09PSBCYXNpYyB0eXBlcyA9PT0g
Ki8KIAogI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCkBAIC0xNTMsNyArMTU5LDExIEBAIHR5
cGVkZWYgZW51bSB7CiAgICAgVVBMVUdfUkVBU09OX1FVRVJZID0gMCwgICAgIC8qKjwgVGhlIHBs
dWdpbiBpcyBiZWluZyBxdWVyaWVkIGZvciBpbmZvLiAqKi8KICAgICBVUExVR19SRUFTT05fTE9B
RCA9IDEsICAgICAvKio8IFRoZSBwbHVnaW4gaXMgYmVpbmcgbG9hZGVkLiAqKi8KICAgICBVUExV
R19SRUFTT05fVU5MT0FEID0gMiwgICAvKio8IFRoZSBwbHVnaW4gaXMgYmVpbmcgdW5sb2FkZWQu
ICoqLwotICAgIFVQTFVHX1JFQVNPTl9DT1VOVCAgICAgICAgIC8qKjwgY291bnQgb2Yga25vd24g
cmVhc29ucyAqKi8KKyAgICAvKioKKyAgICAgKiBOdW1iZXIgb2Yga25vd24gcmVhc29ucy4KKyAg
ICAgKiBAaW50ZXJuYWwgVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNl
ZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KKyAgICBVUExVR19SRUFTT05fQ09VTlQKIH0g
VVBsdWdSZWFzb247CiAKIApAQCAtMTY5LDcgKzE3OSwxMSBAQCB0eXBlZGVmIGVudW0gewogICAg
IFVQTFVHX0xFVkVMX1VOS05PV04gPSAxLCAgICAgLyoqPCBUaGUgcGx1Z2luIGlzIHdhaXRpbmcg
dG8gYmUgaW5zdGFsbGVkLiAqKi8KICAgICBVUExVR19MRVZFTF9MT1cgICAgID0gMiwgICAgIC8q
KjwgVGhlIHBsdWdpbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgdV9pbml0IGNvbXBsZXRlcyAqKi8K
ICAgICBVUExVR19MRVZFTF9ISUdIICAgID0gMywgICAgIC8qKjwgVGhlIHBsdWdpbiBjYW4gcnVu
IGF0IGFueSB0aW1lLiAqKi8KLSAgICBVUExVR19MRVZFTF9DT1VOVCAgICAgICAgIC8qKjwgY291
bnQgb2Yga25vd24gcmVhc29ucyAqKi8KKyAgICAvKioKKyAgICAgKiBOdW1iZXIgb2Yga25vd24g
bGV2ZWxzLgorICAgICAqIEBpbnRlcm5hbCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92
ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLworICAgIFVQTFVHX0xFVkVM
X0NPVU5UCiB9IFVQbHVnTGV2ZWw7CiAKIC8qKgpAQCAtMzY4LDQgKzM4Miw3IEBAIFVfSU5URVJO
QUwgdm9pZCBVX0VYUE9SVDIKIHVwbHVnX3JlbW92ZVBsdWcoVVBsdWdEYXRhICpwbHVnLCBVRXJy
b3JDb2RlICpzdGF0dXMpOwogI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCiAKLSNl
bmRpZgorI2VuZGlmIC8qIFVDT05GSUdfRU5BQkxFX1BMVUdJTlMgKi8KKworI2VuZGlmIC8qIF9J
Q1VQTFVHICovCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvaWRuYS5oIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS9pZG5hLmgKaW5kZXggOTAxOTRhMzc4ZjM4MjU1YjgxOTgw
ODM4YjhmYzM4NDIyMGI1ODNiNi4uZjA4NjU4ZTUwMmUyMDA4MzhkY2FlMjM2YTMzMGJjNWIwOTJm
ZjdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9pZG5hLmgKKysrIGIvU291
cmNlL1dURi9pY3UvdW5pY29kZS9pZG5hLmgKQEAgLTEsMTAgKzEsMTIgQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAxMC0yMDEyLCBJbnRlcm5hdGlv
bmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAg
aWRuYS5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAog
KiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTE5
OCw3ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1UgNC42CiAgICAgICovCiAg
ICAgdmlydHVhbCB2b2lkCi0gICAgbGFiZWxUb0FTQ0lJX1VURjgoY29uc3QgU3RyaW5nUGllY2Ug
JmxhYmVsLCBCeXRlU2luayAmZGVzdCwKKyAgICBsYWJlbFRvQVNDSUlfVVRGOChTdHJpbmdQaWVj
ZSBsYWJlbCwgQnl0ZVNpbmsgJmRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgSUROQUluZm8g
JmluZm8sIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3Q7CiAKICAgICAvKioKQEAgLTIxNiw3
ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1UgNC42CiAgICAgICovCiAgICAg
dmlydHVhbCB2b2lkCi0gICAgbGFiZWxUb1VuaWNvZGVVVEY4KGNvbnN0IFN0cmluZ1BpZWNlICZs
YWJlbCwgQnl0ZVNpbmsgJmRlc3QsCisgICAgbGFiZWxUb1VuaWNvZGVVVEY4KFN0cmluZ1BpZWNl
IGxhYmVsLCBCeXRlU2luayAmZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgSUROQUluZm8g
JmluZm8sIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3Q7CiAKICAgICAvKioKQEAgLTIzNCw3
ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1UgNC42CiAgICAgICovCiAgICAg
dmlydHVhbCB2b2lkCi0gICAgbmFtZVRvQVNDSUlfVVRGOChjb25zdCBTdHJpbmdQaWVjZSAmbmFt
ZSwgQnl0ZVNpbmsgJmRlc3QsCisgICAgbmFtZVRvQVNDSUlfVVRGOChTdHJpbmdQaWVjZSBuYW1l
LCBCeXRlU2luayAmZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIElETkFJbmZvICZpbmZvLCBV
RXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OwogCiAgICAgLyoqCkBAIC0yNTIsNyArMjU0LDcg
QEAgcHVibGljOgogICAgICAqIEBzdGFibGUgSUNVIDQuNgogICAgICAqLwogICAgIHZpcnR1YWwg
dm9pZAotICAgIG5hbWVUb1VuaWNvZGVVVEY4KGNvbnN0IFN0cmluZ1BpZWNlICZuYW1lLCBCeXRl
U2luayAmZGVzdCwKKyAgICBuYW1lVG9Vbmljb2RlVVRGOChTdHJpbmdQaWVjZSBuYW1lLCBCeXRl
U2luayAmZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBJRE5BSW5mbyAmaW5mbywgVUVycm9y
Q29kZSAmZXJyb3JDb2RlKSBjb25zdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvbGlzdGZvcm1hdHRlci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9saXN0Zm9y
bWF0dGVyLmgKaW5kZXggZTQ4ZmFhYTEyNzZjNzBiOGJjMzhhN2ZlNmNkYTIzN2E2ZjVmMjRhZi4u
MTgwZmJjYjVjZGU1Yjc0M2E5ZmFmOGM4NGRjZGZkOGNhMjA3NDdkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9pY3UvdW5pY29kZS9saXN0Zm9ybWF0dGVyLmgKKysrIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9saXN0Zm9ybWF0dGVyLmgKQEAgLTEsMTIgKzEsMTQgQEAKKy8vIMKpIDIwMTYgYW5k
IGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2Yg
dXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgogKgotKiAgIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCBJbnRlcm5hdGlv
bmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYsIEludGVy
bmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAg
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxl
IG5hbWU6ICBsaXN0Zm9ybWF0dGVyLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVu
Y29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50
YXRpb246NAogKgpAQCAtMTQ1LDcgKzE0Nyw3IEBAIGNsYXNzIFVfQ09NTU9OX0FQSSBMaXN0Rm9y
bWF0dGVyIDogcHVibGljIFVPYmplY3R7CiAgICAgLyoqCiAgICAgICogQGludGVybmFsIGNvbnN0
cnVjdG9yIG1hZGUgcHVibGljIGZvciB0ZXN0aW5nLgogICAgICAqLwotICAgIExpc3RGb3JtYXR0
ZXIoY29uc3QgTGlzdEZvcm1hdERhdGEgJmRhdGEpOworICAgIExpc3RGb3JtYXR0ZXIoY29uc3Qg
TGlzdEZvcm1hdERhdGEgJmRhdGEsIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CiAgICAgLyoqCiAg
ICAgICogQGludGVybmFsIGNvbnN0cnVjdG9yIG1hZGUgcHVibGljIGZvciB0ZXN0aW5nLgogICAg
ICAqLwpAQCAtMTU1LDYgKzE1Nyw4IEBAIGNsYXNzIFVfQ09NTU9OX0FQSSBMaXN0Rm9ybWF0dGVy
IDogcHVibGljIFVPYmplY3R7CiAgIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZUhhc2goVUVycm9yQ29kZSYgZXJyb3JDb2RlKTsKICAgICBzdGF0aWMgY29uc3QgTGlzdEZvcm1h
dEludGVybmFsKiBnZXRMaXN0Rm9ybWF0SW50ZXJuYWwoY29uc3QgTG9jYWxlJiBsb2NhbGUsIGNv
bnN0IGNoYXIgKnN0eWxlLCBVRXJyb3JDb2RlJiBlcnJvckNvZGUpOworICAgIHN0cnVjdCBMaXN0
UGF0dGVybnNTaW5rOworICAgIHN0YXRpYyBMaXN0Rm9ybWF0SW50ZXJuYWwqIGxvYWRMaXN0Rm9y
bWF0SW50ZXJuYWwoY29uc3QgTG9jYWxlJiBsb2NhbGUsIGNvbnN0IGNoYXIqIHN0eWxlLCBVRXJy
b3JDb2RlJiBlcnJvckNvZGUpOwogCiAgICAgTGlzdEZvcm1hdHRlcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2xvY2FscG9pbnRlci5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9sb2NhbHBvaW50ZXIuaAppbmRleCBlM2FhYmY2NWMzODA3MDZmYTA4ODUzNjk3NDg3
YzcyN2FiOWFiYWVjLi5lMTdlZTNkODg2ZWYzNGRmMDRmODkxY2ViOGUwYjdjZmI4OGMwNWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2xvY2FscG9pbnRlci5oCisrKyBiL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvbG9jYWxwb2ludGVyLmgKQEAgLTEsMTIgKzEsMTQgQEAKKy8v
IMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNl
ICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAv
KgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogKgotKiAgIENvcHlyaWdodCAoQykgMjAwOS0yMDE0
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBh
bmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKICogICBmaWxlIG5hbWU6ICBsb2NhbHBvaW50ZXIuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFT
Q0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkK
ICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC0xOCw3ICsyMCw3IEBACiAjZGVmaW5lIF9fTE9DQUxQ
T0lOVEVSX0hfXwogCiAvKioKLSAqIFxmaWxlIAorICogXGZpbGUKICAqIFxicmllZiBDKysgQVBJ
OiAiU21hcnQgcG9pbnRlcnMiIGZvciB1c2Ugd2l0aCBhbmQgaW4gSUNVNEMgQysrIGNvZGUuCiAg
KgogICogVGhlc2UgY2xhc3NlcyBhcmUgaW5zcGlyZWQgYnkKQEAgLTUyLDcgKzU0LDcgQEAgVV9O
QU1FU1BBQ0VfQkVHSU4KICAqIERlc3RydWN0b3IgYW5kIGFkb3B0SW5zdGVhZCgpLgogICoKICAq
IFRoZXJlIGlzIG5vIG9wZXJhdG9yIFQgKigpIHByb3ZpZGVkIGJlY2F1c2UgdGhlIHByb2dyYW1t
ZXIgbXVzdCBkZWNpZGUKLSAqIHdoZXRoZXIgdG8gdXNlIGdldEFsaWFzKCkgKHdpdGhvdXQgdHJh
bnNmZXIgb2Ygb3duZXJzaGlwKSBvciBvcnBhbigpCisgKiB3aGV0aGVyIHRvIHVzZSBnZXRBbGlh
cygpICh3aXRob3V0IHRyYW5zZmVyIG9mIG93bmVyc2hpcCkgb3Igb3JwaGFuKCkKICAqICh3aXRo
IHRyYW5zZmVyIG9mIG93bmVyc2hpcCBhbmQgTlVMTGluZyBvZiB0aGUgcG9pbnRlcikuCiAgKgog
ICogQHNlZSBMb2NhbFBvaW50ZXIKQEAgLTE1MSwxMSArMTUzLDExIEBAIHByb3RlY3RlZDoKICAg
ICBUICpwdHI7CiBwcml2YXRlOgogICAgIC8vIE5vIGNvbXBhcmlzb24gb3BlcmF0b3JzIHdpdGgg
b3RoZXIgTG9jYWxQb2ludGVyQmFzZXMuCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExvY2Fs
UG9pbnRlckJhc2UgJm90aGVyKTsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTG9jYWxQb2lu
dGVyQmFzZSAmb3RoZXIpOwotICAgIC8vIE5vIG93bmVyc2hpcCB0cmFuc2ZlcjogTm8gY29weSBj
b25zdHJ1Y3Rvciwgbm8gYXNzaWdubWVudCBvcGVyYXRvci4KLSAgICBMb2NhbFBvaW50ZXJCYXNl
KGNvbnN0IExvY2FsUG9pbnRlckJhc2UgJm90aGVyKTsKLSAgICB2b2lkIG9wZXJhdG9yPShjb25z
dCBMb2NhbFBvaW50ZXJCYXNlICZvdGhlcik7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExv
Y2FsUG9pbnRlckJhc2U8VD4gJm90aGVyKTsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTG9j
YWxQb2ludGVyQmFzZTxUPiAmb3RoZXIpOworICAgIC8vIE5vIG93bmVyc2hpcCBzaGFyaW5nOiBO
byBjb3B5IGNvbnN0cnVjdG9yLCBubyBhc3NpZ25tZW50IG9wZXJhdG9yLgorICAgIExvY2FsUG9p
bnRlckJhc2UoY29uc3QgTG9jYWxQb2ludGVyQmFzZTxUPiAmb3RoZXIpOworICAgIHZvaWQgb3Bl
cmF0b3I9KGNvbnN0IExvY2FsUG9pbnRlckJhc2U8VD4gJm90aGVyKTsKICAgICAvLyBObyBoZWFw
IGFsbG9jYXRpb24uIFVzZSBvbmx5IG9uIHRoZSBzdGFjay4KICAgICBzdGF0aWMgdm9pZCAqIFVf
RVhQT1JUMiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpOwogICAgIHN0YXRpYyB2b2lkICogVV9F
WFBPUlQyIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKTsKQEAgLTE3Miw5ICsxNzQsOSBAQCBw
cml2YXRlOgogICogXGNvZGUKICAqIExvY2FsUG9pbnRlcjxVbmljb2RlU3RyaW5nPiBzKG5ldyBV
bmljb2RlU3RyaW5nKChVQ2hhcjMyKTB4NTAwMDUpKTsKICAqIGludDMyX3QgbGVuZ3RoPXMtPmxl
bmd0aCgpOyAgLy8gMgotICogVUNoYXIgbGVhZD1zLT5jaGFyQXQoMCk7ICAvLyAweGQ5MDAKKyAq
IGNoYXIxNl90IGxlYWQ9cy0+Y2hhckF0KDApOyAgLy8gMHhkOTAwCiAgKiBpZihzb21lIGNvbmRp
dGlvbikgeyByZXR1cm47IH0gIC8vIG5vIG5lZWQgdG8gZXhwbGljaXRseSBkZWxldGUgdGhlIHBv
aW50ZXIKLSAqIHMuYWRvcHRJbnN0ZWFkKG5ldyBVbmljb2RlU3RyaW5nKChVQ2hhcikweGZmZmMp
KTsKKyAqIHMuYWRvcHRJbnN0ZWFkKG5ldyBVbmljb2RlU3RyaW5nKChjaGFyMTZfdCkweGZmZmMp
KTsKICAqIGxlbmd0aD1zLT5sZW5ndGgoKTsgIC8vIDEKICAqIC8vIG5vIG5lZWQgdG8gZXhwbGlj
aXRseSBkZWxldGUgdGhlIHBvaW50ZXIKICAqIFxlbmRjb2RlCkBAIC0xODUsMTMgKzE4NywxNCBA
QCBwcml2YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIExvY2FsUG9pbnRlciA6IHB1
YmxpYyBMb2NhbFBvaW50ZXJCYXNlPFQ+IHsKIHB1YmxpYzoKKyAgICB1c2luZyBMb2NhbFBvaW50
ZXJCYXNlPFQ+OjpvcGVyYXRvcio7CisgICAgdXNpbmcgTG9jYWxQb2ludGVyQmFzZTxUPjo6b3Bl
cmF0b3ItPjsKICAgICAvKioKICAgICAgKiBDb25zdHJ1Y3RvciB0YWtlcyBvd25lcnNoaXAuCiAg
ICAgICogQHBhcmFtIHAgc2ltcGxlIHBvaW50ZXIgdG8gYW4gb2JqZWN0IHRoYXQgaXMgYWRvcHRl
ZAogICAgICAqIEBzdGFibGUgSUNVIDQuNAogICAgICAqLwogICAgIGV4cGxpY2l0IExvY2FsUG9p
bnRlcihUICpwPU5VTEwpIDogTG9jYWxQb2ludGVyQmFzZTxUPihwKSB7fQotI2lmbmRlZiBVX0hJ
REVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogQ29uc3RydWN0b3IgdGFrZXMgb3duZXJzaGlw
IGFuZCByZXBvcnRzIGFuIGVycm9yIGlmIE5VTEwuCiAgICAgICoKQEAgLTIwMywxNCArMjA2LDIx
IEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gcCBzaW1wbGUgcG9pbnRlciB0byBhbiBvYmplY3Qg
dGhhdCBpcyBhZG9wdGVkCiAgICAgICogQHBhcmFtIGVycm9yQ29kZSBpbi9vdXQgVUVycm9yQ29k
ZSwgc2V0IHRvIFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1IKICAgICAgKiAgICAgaWYgcD09TlVM
TCBhbmQgbm8gb3RoZXIgZmFpbHVyZSBjb2RlIGhhZCBiZWVuIHNldAotICAgICAqIEBkcmFmdCBJ
Q1UgNTUKKyAgICAgKiBAc3RhYmxlIElDVSA1NQogICAgICAqLwogICAgIExvY2FsUG9pbnRlcihU
ICpwLCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIDogTG9jYWxQb2ludGVyQmFzZTxUPihwKSB7CiAg
ICAgICAgIGlmKHA9PU5VTEwgJiYgVV9TVUNDRVNTKGVycm9yQ29kZSkpIHsKICAgICAgICAgICAg
IGVycm9yQ29kZT1VX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SOwogICAgICAgICB9CiAgICAgfQot
I2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCisgICAgLyoqCisgICAgICogTW92ZSBjb25z
dHJ1Y3RvciwgbGVhdmVzIHNyYyB3aXRoIGlzTnVsbCgpLgorICAgICAqIEBwYXJhbSBzcmMgc291
cmNlIHNtYXJ0IHBvaW50ZXIKKyAgICAgKiBAc3RhYmxlIElDVSA1NgorICAgICAqLworICAgIExv
Y2FsUG9pbnRlcihMb2NhbFBvaW50ZXI8VD4gJiZzcmMpIFVfTk9FWENFUFQgOiBMb2NhbFBvaW50
ZXJCYXNlPFQ+KHNyYy5wdHIpIHsKKyAgICAgICAgc3JjLnB0cj1OVUxMOworICAgIH0KICAgICAv
KioKICAgICAgKiBEZXN0cnVjdG9yIGRlbGV0ZXMgdGhlIG9iamVjdCBpdCBvd25zLgogICAgICAq
IEBzdGFibGUgSUNVIDQuNApAQCAtMjE4LDYgKzIyOCw1MSBAQCBwdWJsaWM6CiAgICAgfkxvY2Fs
UG9pbnRlcigpIHsKICAgICAgICAgZGVsZXRlIExvY2FsUG9pbnRlckJhc2U8VD46OnB0cjsKICAg
ICB9CisgICAgLyoqCisgICAgICogTW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yLCBsZWF2ZXMgc3Jj
IHdpdGggaXNOdWxsKCkuCisgICAgICogVGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiAqdGhp
cyBhbmQgc3JjIGFyZSB0aGUgc2FtZSBvYmplY3QuCisgICAgICogQHBhcmFtIHNyYyBzb3VyY2Ug
c21hcnQgcG9pbnRlcgorICAgICAqIEByZXR1cm4gKnRoaXMKKyAgICAgKiBAc3RhYmxlIElDVSA1
NgorICAgICAqLworICAgIExvY2FsUG9pbnRlcjxUPiAmb3BlcmF0b3I9KExvY2FsUG9pbnRlcjxU
PiAmJnNyYykgVV9OT0VYQ0VQVCB7CisgICAgICAgIHJldHVybiBtb3ZlRnJvbShzcmMpOworICAg
IH0KKyAgICAvLyBkbyBub3QgdXNlICNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSSBmb3IgbW92ZUZy
b20sIG5lZWRlZCBieSBub24tZHJhZnQgQVBJCisgICAgLyoqCisgICAgICogTW92ZSBhc3NpZ25t
ZW50LCBsZWF2ZXMgc3JjIHdpdGggaXNOdWxsKCkuCisgICAgICogVGhlIGJlaGF2aW9yIGlzIHVu
ZGVmaW5lZCBpZiAqdGhpcyBhbmQgc3JjIGFyZSB0aGUgc2FtZSBvYmplY3QuCisgICAgICoKKyAg
ICAgKiBDYW4gYmUgY2FsbGVkIGV4cGxpY2l0bHksIGRvZXMgbm90IG5lZWQgQysrMTEgc3VwcG9y
dC4KKyAgICAgKiBAcGFyYW0gc3JjIHNvdXJjZSBzbWFydCBwb2ludGVyCisgICAgICogQHJldHVy
biAqdGhpcworICAgICAqIEBkcmFmdCBJQ1UgNTYKKyAgICAgKi8KKyAgICBMb2NhbFBvaW50ZXI8
VD4gJm1vdmVGcm9tKExvY2FsUG9pbnRlcjxUPiAmc3JjKSBVX05PRVhDRVBUIHsKKyAgICAgICAg
ZGVsZXRlIExvY2FsUG9pbnRlckJhc2U8VD46OnB0cjsKKyAgICAgICAgTG9jYWxQb2ludGVyQmFz
ZTxUPjo6cHRyPXNyYy5wdHI7CisgICAgICAgIHNyYy5wdHI9TlVMTDsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKyAgICAvKioKKyAgICAgKiBTd2FwIHBvaW50ZXJzLgorICAgICAqIEBw
YXJhbSBvdGhlciBvdGhlciBzbWFydCBwb2ludGVyCisgICAgICogQHN0YWJsZSBJQ1UgNTYKKyAg
ICAgKi8KKyAgICB2b2lkIHN3YXAoTG9jYWxQb2ludGVyPFQ+ICZvdGhlcikgVV9OT0VYQ0VQVCB7
CisgICAgICAgIFQgKnRlbXA9TG9jYWxQb2ludGVyQmFzZTxUPjo6cHRyOworICAgICAgICBMb2Nh
bFBvaW50ZXJCYXNlPFQ+OjpwdHI9b3RoZXIucHRyOworICAgICAgICBvdGhlci5wdHI9dGVtcDsK
KyAgICB9CisgICAgLyoqCisgICAgICogTm9uLW1lbWJlciBMb2NhbFBvaW50ZXIgc3dhcCBmdW5j
dGlvbi4KKyAgICAgKiBAcGFyYW0gcDEgd2lsbCBnZXQgcDIncyBwb2ludGVyCisgICAgICogQHBh
cmFtIHAyIHdpbGwgZ2V0IHAxJ3MgcG9pbnRlcgorICAgICAqIEBzdGFibGUgSUNVIDU2CisgICAg
ICovCisgICAgZnJpZW5kIGlubGluZSB2b2lkIHN3YXAoTG9jYWxQb2ludGVyPFQ+ICZwMSwgTG9j
YWxQb2ludGVyPFQ+ICZwMikgVV9OT0VYQ0VQVCB7CisgICAgICAgIHAxLnN3YXAocDIpOworICAg
IH0KICAgICAvKioKICAgICAgKiBEZWxldGVzIHRoZSBvYmplY3QgaXQgb3ducywKICAgICAgKiBh
bmQgYWRvcHRzICh0YWtlcyBvd25lcnNoaXAgb2YpIHRoZSBvbmUgcGFzc2VkIGluLgpAQCAtMjI4
LDcgKzI4Myw2IEBAIHB1YmxpYzoKICAgICAgICAgZGVsZXRlIExvY2FsUG9pbnRlckJhc2U8VD46
OnB0cjsKICAgICAgICAgTG9jYWxQb2ludGVyQmFzZTxUPjo6cHRyPXA7CiAgICAgfQotI2lmbmRl
ZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogRGVsZXRlcyB0aGUgb2JqZWN0IGl0
IG93bnMsCiAgICAgICogYW5kIGFkb3B0cyAodGFrZXMgb3duZXJzaGlwIG9mKSB0aGUgb25lIHBh
c3NlZCBpbi4KQEAgLTI0Miw3ICsyOTYsNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHAgc2lt
cGxlIHBvaW50ZXIgdG8gYW4gb2JqZWN0IHRoYXQgaXMgYWRvcHRlZAogICAgICAqIEBwYXJhbSBl
cnJvckNvZGUgaW4vb3V0IFVFcnJvckNvZGUsIHNldCB0byBVX01FTU9SWV9BTExPQ0FUSU9OX0VS
Uk9SCiAgICAgICogICAgIGlmIHA9PU5VTEwgYW5kIG5vIG90aGVyIGZhaWx1cmUgY29kZSBoYWQg
YmVlbiBzZXQKLSAgICAgKiBAZHJhZnQgSUNVIDU1CisgICAgICogQHN0YWJsZSBJQ1UgNTUKICAg
ICAgKi8KICAgICB2b2lkIGFkb3B0SW5zdGVhZEFuZENoZWNrRXJyb3JDb2RlKFQgKnAsIFVFcnJv
ckNvZGUgJmVycm9yQ29kZSkgewogICAgICAgICBpZihVX1NVQ0NFU1MoZXJyb3JDb2RlKSkgewpA
QCAtMjU1LDcgKzMwOSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRlbGV0ZSBwOwogICAgICAg
ICB9CiAgICAgfQotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCiB9OwogCiAvKioKQEAg
LTI2NiwxMCArMzE5LDEwIEBAIHB1YmxpYzoKICAqIFVzYWdlIGV4YW1wbGU6CiAgKiBcY29kZQog
ICogTG9jYWxBcnJheTxVbmljb2RlU3RyaW5nPiBhKG5ldyBVbmljb2RlU3RyaW5nWzJdKTsKLSAq
IGFbMF0uYXBwZW5kKChVQ2hhcikweDYxKTsKKyAqIGFbMF0uYXBwZW5kKChjaGFyMTZfdCkweDYx
KTsKICAqIGlmKHNvbWUgY29uZGl0aW9uKSB7IHJldHVybjsgfSAgLy8gbm8gbmVlZCB0byBleHBs
aWNpdGx5IGRlbGV0ZSB0aGUgYXJyYXkKICAqIGEuYWRvcHRJbnN0ZWFkKG5ldyBVbmljb2RlU3Ry
aW5nWzRdKTsKLSAqIGFbM10uYXBwZW5kKChVQ2hhcikweDYyKS5hcHBlbmQoKFVDaGFyKTB4NjMp
LnJldmVyc2UoKTsKKyAqIGFbM10uYXBwZW5kKChjaGFyMTZfdCkweDYyKS5hcHBlbmQoKGNoYXIx
Nl90KTB4NjMpLnJldmVyc2UoKTsKICAqIC8vIG5vIG5lZWQgdG8gZXhwbGljaXRseSBkZWxldGUg
dGhlIGFycmF5CiAgKiBcZW5kY29kZQogICoKQEAgLTI3OSwxMiArMzMyLDQwIEBAIHB1YmxpYzoK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBMb2NhbEFycmF5IDogcHVibGljIExvY2FsUG9p
bnRlckJhc2U8VD4gewogcHVibGljOgorICAgIHVzaW5nIExvY2FsUG9pbnRlckJhc2U8VD46Om9w
ZXJhdG9yKjsKKyAgICB1c2luZyBMb2NhbFBvaW50ZXJCYXNlPFQ+OjpvcGVyYXRvci0+OwogICAg
IC8qKgogICAgICAqIENvbnN0cnVjdG9yIHRha2VzIG93bmVyc2hpcC4KICAgICAgKiBAcGFyYW0g
cCBzaW1wbGUgcG9pbnRlciB0byBhbiBhcnJheSBvZiBUIG9iamVjdHMgdGhhdCBpcyBhZG9wdGVk
CiAgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAgICovCiAgICAgZXhwbGljaXQgTG9jYWxBcnJh
eShUICpwPU5VTEwpIDogTG9jYWxQb2ludGVyQmFzZTxUPihwKSB7fQorICAgIC8qKgorICAgICAq
IENvbnN0cnVjdG9yIHRha2VzIG93bmVyc2hpcCBhbmQgcmVwb3J0cyBhbiBlcnJvciBpZiBOVUxM
LgorICAgICAqCisgICAgICogVGhpcyBjb25zdHJ1Y3RvciBpcyBpbnRlbmRlZCB0byBiZSB1c2Vk
IHdpdGggb3RoZXItY2xhc3MgY29uc3RydWN0b3JzCisgICAgICogdGhhdCBtYXkgcmVwb3J0IGEg
ZmFpbHVyZSBVRXJyb3JDb2RlLAorICAgICAqIHNvIHRoYXQgY2FsbGVycyBuZWVkIHRvIGNoZWNr
IG9ubHkgZm9yIFVfRkFJTFVSRShlcnJvckNvZGUpCisgICAgICogYW5kIG5vdCBhbHNvIHNlcGFy
YXRlbHkgZm9yIGlzTnVsbCgpLgorICAgICAqCisgICAgICogQHBhcmFtIHAgc2ltcGxlIHBvaW50
ZXIgdG8gYW4gYXJyYXkgb2YgVCBvYmplY3RzIHRoYXQgaXMgYWRvcHRlZAorICAgICAqIEBwYXJh
bSBlcnJvckNvZGUgaW4vb3V0IFVFcnJvckNvZGUsIHNldCB0byBVX01FTU9SWV9BTExPQ0FUSU9O
X0VSUk9SCisgICAgICogICAgIGlmIHA9PU5VTEwgYW5kIG5vIG90aGVyIGZhaWx1cmUgY29kZSBo
YWQgYmVlbiBzZXQKKyAgICAgKiBAc3RhYmxlIElDVSA1NgorICAgICAqLworICAgIExvY2FsQXJy
YXkoVCAqcCwgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSA6IExvY2FsUG9pbnRlckJhc2U8VD4ocCkg
eworICAgICAgICBpZihwPT1OVUxMICYmIFVfU1VDQ0VTUyhlcnJvckNvZGUpKSB7CisgICAgICAg
ICAgICBlcnJvckNvZGU9VV9NRU1PUllfQUxMT0NBVElPTl9FUlJPUjsKKyAgICAgICAgfQorICAg
IH0KKyAgICAvKioKKyAgICAgKiBNb3ZlIGNvbnN0cnVjdG9yLCBsZWF2ZXMgc3JjIHdpdGggaXNO
dWxsKCkuCisgICAgICogQHBhcmFtIHNyYyBzb3VyY2Ugc21hcnQgcG9pbnRlcgorICAgICAqIEBz
dGFibGUgSUNVIDU2CisgICAgICovCisgICAgTG9jYWxBcnJheShMb2NhbEFycmF5PFQ+ICYmc3Jj
KSBVX05PRVhDRVBUIDogTG9jYWxQb2ludGVyQmFzZTxUPihzcmMucHRyKSB7CisgICAgICAgIHNy
Yy5wdHI9TlVMTDsKKyAgICB9CiAgICAgLyoqCiAgICAgICogRGVzdHJ1Y3RvciBkZWxldGVzIHRo
ZSBhcnJheSBpdCBvd25zLgogICAgICAqIEBzdGFibGUgSUNVIDQuNApAQCAtMjkyLDYgKzM3Myw1
MSBAQCBwdWJsaWM6CiAgICAgfkxvY2FsQXJyYXkoKSB7CiAgICAgICAgIGRlbGV0ZVtdIExvY2Fs
UG9pbnRlckJhc2U8VD46OnB0cjsKICAgICB9CisgICAgLyoqCisgICAgICogTW92ZSBhc3NpZ25t
ZW50IG9wZXJhdG9yLCBsZWF2ZXMgc3JjIHdpdGggaXNOdWxsKCkuCisgICAgICogVGhlIGJlaGF2
aW9yIGlzIHVuZGVmaW5lZCBpZiAqdGhpcyBhbmQgc3JjIGFyZSB0aGUgc2FtZSBvYmplY3QuCisg
ICAgICogQHBhcmFtIHNyYyBzb3VyY2Ugc21hcnQgcG9pbnRlcgorICAgICAqIEByZXR1cm4gKnRo
aXMKKyAgICAgKiBAc3RhYmxlIElDVSA1NgorICAgICAqLworICAgIExvY2FsQXJyYXk8VD4gJm9w
ZXJhdG9yPShMb2NhbEFycmF5PFQ+ICYmc3JjKSBVX05PRVhDRVBUIHsKKyAgICAgICAgcmV0dXJu
IG1vdmVGcm9tKHNyYyk7CisgICAgfQorICAgIC8vIGRvIG5vdCB1c2UgI2lmbmRlZiBVX0hJREVf
RFJBRlRfQVBJIGZvciBtb3ZlRnJvbSwgbmVlZGVkIGJ5IG5vbi1kcmFmdCBBUEkKKyAgICAvKioK
KyAgICAgKiBNb3ZlIGFzc2lnbm1lbnQsIGxlYXZlcyBzcmMgd2l0aCBpc051bGwoKS4KKyAgICAg
KiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmICp0aGlzIGFuZCBzcmMgYXJlIHRoZSBzYW1l
IG9iamVjdC4KKyAgICAgKgorICAgICAqIENhbiBiZSBjYWxsZWQgZXhwbGljaXRseSwgZG9lcyBu
b3QgbmVlZCBDKysxMSBzdXBwb3J0LgorICAgICAqIEBwYXJhbSBzcmMgc291cmNlIHNtYXJ0IHBv
aW50ZXIKKyAgICAgKiBAcmV0dXJuICp0aGlzCisgICAgICogQGRyYWZ0IElDVSA1NgorICAgICAq
LworICAgIExvY2FsQXJyYXk8VD4gJm1vdmVGcm9tKExvY2FsQXJyYXk8VD4gJnNyYykgVV9OT0VY
Q0VQVCB7CisgICAgICAgIGRlbGV0ZVtdIExvY2FsUG9pbnRlckJhc2U8VD46OnB0cjsKKyAgICAg
ICAgTG9jYWxQb2ludGVyQmFzZTxUPjo6cHRyPXNyYy5wdHI7CisgICAgICAgIHNyYy5wdHI9TlVM
TDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAvKioKKyAgICAgKiBTd2FwIHBv
aW50ZXJzLgorICAgICAqIEBwYXJhbSBvdGhlciBvdGhlciBzbWFydCBwb2ludGVyCisgICAgICog
QHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8KKyAgICB2b2lkIHN3YXAoTG9jYWxBcnJheTxUPiAmb3Ro
ZXIpIFVfTk9FWENFUFQgeworICAgICAgICBUICp0ZW1wPUxvY2FsUG9pbnRlckJhc2U8VD46OnB0
cjsKKyAgICAgICAgTG9jYWxQb2ludGVyQmFzZTxUPjo6cHRyPW90aGVyLnB0cjsKKyAgICAgICAg
b3RoZXIucHRyPXRlbXA7CisgICAgfQorICAgIC8qKgorICAgICAqIE5vbi1tZW1iZXIgTG9jYWxB
cnJheSBzd2FwIGZ1bmN0aW9uLgorICAgICAqIEBwYXJhbSBwMSB3aWxsIGdldCBwMidzIHBvaW50
ZXIKKyAgICAgKiBAcGFyYW0gcDIgd2lsbCBnZXQgcDEncyBwb2ludGVyCisgICAgICogQHN0YWJs
ZSBJQ1UgNTYKKyAgICAgKi8KKyAgICBmcmllbmQgaW5saW5lIHZvaWQgc3dhcChMb2NhbEFycmF5
PFQ+ICZwMSwgTG9jYWxBcnJheTxUPiAmcDIpIFVfTk9FWENFUFQgeworICAgICAgICBwMS5zd2Fw
KHAyKTsKKyAgICB9CiAgICAgLyoqCiAgICAgICogRGVsZXRlcyB0aGUgYXJyYXkgaXQgb3ducywK
ICAgICAgKiBhbmQgYWRvcHRzICh0YWtlcyBvd25lcnNoaXAgb2YpIHRoZSBvbmUgcGFzc2VkIGlu
LgpAQCAtMzAyLDYgKzQyOCwzMiBAQCBwdWJsaWM6CiAgICAgICAgIGRlbGV0ZVtdIExvY2FsUG9p
bnRlckJhc2U8VD46OnB0cjsKICAgICAgICAgTG9jYWxQb2ludGVyQmFzZTxUPjo6cHRyPXA7CiAg
ICAgfQorICAgIC8qKgorICAgICAqIERlbGV0ZXMgdGhlIGFycmF5IGl0IG93bnMsCisgICAgICog
YW5kIGFkb3B0cyAodGFrZXMgb3duZXJzaGlwIG9mKSB0aGUgb25lIHBhc3NlZCBpbi4KKyAgICAg
KgorICAgICAqIElmIFVfRkFJTFVSRShlcnJvckNvZGUpLCB0aGVuIHRoZSBjdXJyZW50IGFycmF5
IGlzIHJldGFpbmVkIGFuZCB0aGUgbmV3IG9uZSBkZWxldGVkLgorICAgICAqCisgICAgICogSWYg
VV9TVUNDRVNTKGVycm9yQ29kZSkgYnV0IHRoZSBpbnB1dCBwb2ludGVyIGlzIE5VTEwsCisgICAg
ICogdGhlbiBVX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SIGlzIHNldCwKKyAgICAgKiB0aGUgY3Vy
cmVudCBhcnJheSBpcyBkZWxldGVkLCBhbmQgTlVMTCBpcyBzZXQuCisgICAgICoKKyAgICAgKiBA
cGFyYW0gcCBzaW1wbGUgcG9pbnRlciB0byBhbiBhcnJheSBvZiBUIG9iamVjdHMgdGhhdCBpcyBh
ZG9wdGVkCisgICAgICogQHBhcmFtIGVycm9yQ29kZSBpbi9vdXQgVUVycm9yQ29kZSwgc2V0IHRv
IFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1IKKyAgICAgKiAgICAgaWYgcD09TlVMTCBhbmQgbm8g
b3RoZXIgZmFpbHVyZSBjb2RlIGhhZCBiZWVuIHNldAorICAgICAqIEBzdGFibGUgSUNVIDU2Cisg
ICAgICovCisgICAgdm9pZCBhZG9wdEluc3RlYWRBbmRDaGVja0Vycm9yQ29kZShUICpwLCBVRXJy
b3JDb2RlICZlcnJvckNvZGUpIHsKKyAgICAgICAgaWYoVV9TVUNDRVNTKGVycm9yQ29kZSkpIHsK
KyAgICAgICAgICAgIGRlbGV0ZVtdIExvY2FsUG9pbnRlckJhc2U8VD46OnB0cjsKKyAgICAgICAg
ICAgIExvY2FsUG9pbnRlckJhc2U8VD46OnB0cj1wOworICAgICAgICAgICAgaWYocD09TlVMTCkg
eworICAgICAgICAgICAgICAgIGVycm9yQ29kZT1VX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVsZXRlW10gcDsK
KyAgICAgICAgfQorICAgIH0KICAgICAvKioKICAgICAgKiBBcnJheSBpdGVtIGFjY2VzcyAod3Jp
dGFibGUpLgogICAgICAqIE5vIGluZGV4IGJvdW5kcyBjaGVjay4KQEAgLTMxOSw5ICs0NzEsNiBA
QCBwdWJsaWM6CiAgKiBsaWtlIExvY2FsUG9pbnRlcjxUeXBlPiBleGNlcHQgdGhhdCB0aGlzIHN1
YmNsYXNzIHdpbGwgdXNlIHRoZSBjbG9zZUZ1bmN0aW9uCiAgKiByYXRoZXIgdGhhbiB0aGUgQysr
IGRlbGV0ZSBvcGVyYXRvci4KICAqCi0gKiBSZXF1aXJlbWVudDogVGhlIGNsb3NlRnVuY3Rpb24g
bXVzdCB0b2xlcmF0ZSBhIE5VTEwgcG9pbnRlci4KLSAqIChXZSBjb3VsZCBhZGQgYSBOVUxMIGNo
ZWNrIGhlcmUgYnV0IGl0IGlzIG5vcm1hbGx5IHJlZHVuZGFudC4pCi0gKgogICogVXNhZ2UgZXhh
bXBsZToKICAqIFxjb2RlCiAgKiBMb2NhbFVDYXNlTWFwUG9pbnRlciBjc20odWNhc2VtYXBfb3Bl
bihsb2NhbGVJRCwgb3B0aW9ucywgJmVycm9yQ29kZSkpOwpAQCAtMzM4LDEwICs0ODcsMzMgQEAg
cHVibGljOgogI2RlZmluZSBVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxQb2ludGVy
Q2xhc3NOYW1lLCBUeXBlLCBjbG9zZUZ1bmN0aW9uKSBcCiAgICAgY2xhc3MgTG9jYWxQb2ludGVy
Q2xhc3NOYW1lIDogcHVibGljIExvY2FsUG9pbnRlckJhc2U8VHlwZT4geyBcCiAgICAgcHVibGlj
OiBcCisgICAgICAgIHVzaW5nIExvY2FsUG9pbnRlckJhc2U8VHlwZT46Om9wZXJhdG9yKjsgXAor
ICAgICAgICB1c2luZyBMb2NhbFBvaW50ZXJCYXNlPFR5cGU+OjpvcGVyYXRvci0+OyBcCiAgICAg
ICAgIGV4cGxpY2l0IExvY2FsUG9pbnRlckNsYXNzTmFtZShUeXBlICpwPU5VTEwpIDogTG9jYWxQ
b2ludGVyQmFzZTxUeXBlPihwKSB7fSBcCi0gICAgICAgIH5Mb2NhbFBvaW50ZXJDbGFzc05hbWUo
KSB7IGNsb3NlRnVuY3Rpb24ocHRyKTsgfSBcCisgICAgICAgIExvY2FsUG9pbnRlckNsYXNzTmFt
ZShMb2NhbFBvaW50ZXJDbGFzc05hbWUgJiZzcmMpIFVfTk9FWENFUFQgXAorICAgICAgICAgICAg
ICAgIDogTG9jYWxQb2ludGVyQmFzZTxUeXBlPihzcmMucHRyKSB7IFwKKyAgICAgICAgICAgIHNy
Yy5wdHI9TlVMTDsgXAorICAgICAgICB9IFwKKyAgICAgICAgfkxvY2FsUG9pbnRlckNsYXNzTmFt
ZSgpIHsgaWYgKHB0ciAhPSBOVUxMKSB7IGNsb3NlRnVuY3Rpb24ocHRyKTsgfSB9IFwKKyAgICAg
ICAgTG9jYWxQb2ludGVyQ2xhc3NOYW1lICZvcGVyYXRvcj0oTG9jYWxQb2ludGVyQ2xhc3NOYW1l
ICYmc3JjKSBVX05PRVhDRVBUIHsgXAorICAgICAgICAgICAgcmV0dXJuIG1vdmVGcm9tKHNyYyk7
IFwKKyAgICAgICAgfSBcCisgICAgICAgIExvY2FsUG9pbnRlckNsYXNzTmFtZSAmbW92ZUZyb20o
TG9jYWxQb2ludGVyQ2xhc3NOYW1lICZzcmMpIFVfTk9FWENFUFQgeyBcCisgICAgICAgICAgICBp
ZiAocHRyICE9IE5VTEwpIHsgY2xvc2VGdW5jdGlvbihwdHIpOyB9IFwKKyAgICAgICAgICAgIExv
Y2FsUG9pbnRlckJhc2U8VHlwZT46OnB0cj1zcmMucHRyOyBcCisgICAgICAgICAgICBzcmMucHRy
PU5VTEw7IFwKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsgXAorICAgICAgICB9IFwKKyAgICAg
ICAgdm9pZCBzd2FwKExvY2FsUG9pbnRlckNsYXNzTmFtZSAmb3RoZXIpIFVfTk9FWENFUFQgeyBc
CisgICAgICAgICAgICBUeXBlICp0ZW1wPUxvY2FsUG9pbnRlckJhc2U8VHlwZT46OnB0cjsgXAor
ICAgICAgICAgICAgTG9jYWxQb2ludGVyQmFzZTxUeXBlPjo6cHRyPW90aGVyLnB0cjsgXAorICAg
ICAgICAgICAgb3RoZXIucHRyPXRlbXA7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGZyaWVuZCBp
bmxpbmUgdm9pZCBzd2FwKExvY2FsUG9pbnRlckNsYXNzTmFtZSAmcDEsIExvY2FsUG9pbnRlckNs
YXNzTmFtZSAmcDIpIFVfTk9FWENFUFQgeyBcCisgICAgICAgICAgICBwMS5zd2FwKHAyKTsgXAor
ICAgICAgICB9IFwKICAgICAgICAgdm9pZCBhZG9wdEluc3RlYWQoVHlwZSAqcCkgeyBcCi0gICAg
ICAgICAgICBjbG9zZUZ1bmN0aW9uKHB0cik7IFwKKyAgICAgICAgICAgIGlmIChwdHIgIT0gTlVM
TCkgeyBjbG9zZUZ1bmN0aW9uKHB0cik7IH0gXAogICAgICAgICAgICAgcHRyPXA7IFwKICAgICAg
ICAgfSBcCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9sb2Nkc3Bu
bS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9sb2Nkc3BubS5oCmluZGV4IDc0ODYyYjZkOGE1
YjIwM2E0ODNmNzJiOWMyZmEzZjNiYmFhYTg1NWIuLjdmMjI3ODI5YjRjYzAwZDRlN2M1NTYzY2Q5
MWM4NTM1NzM0NGUzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbG9jZHNw
bm0uaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2xvY2RzcG5tLmgKQEAgLTEsNiArMSw4
IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8g
TGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQu
aHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAx
NCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29y
cG9yYXRpb24gYW5kCiAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgogKi8KQEAgLTE4LDYgKzIwLDcgQEAKICNpZiAhVUNPTkZJR19OT19GT1JNQVRU
SU5HCiAKICNpbmNsdWRlICJ1bmljb2RlL2xvY2lkLmgiCisjaW5jbHVkZSAidW5pY29kZS9zdHJl
bnVtLmgiCiAjaW5jbHVkZSAidW5pY29kZS91c2NyaXB0LmgiCiAjaW5jbHVkZSAidW5pY29kZS91
bGRuYW1lcy5oIgogI2luY2x1ZGUgInVuaWNvZGUvdWRpc3BsYXljb250ZXh0LmgiCkBAIC0zMCw3
ICszMyw3IEBAIFVfTkFNRVNQQUNFX0JFR0lOCiAgKiB2YWx1ZXMsIHNlZSBMb2NhbGUuCiAgKiBA
c3RhYmxlIElDVSA0LjQKICAqLwotY2xhc3MgVV9JMThOX0FQSSBMb2NhbGVEaXNwbGF5TmFtZXMg
OiBwdWJsaWMgVU9iamVjdCB7CitjbGFzcyBVX0NPTU1PTl9BUEkgTG9jYWxlRGlzcGxheU5hbWVz
IDogcHVibGljIFVPYmplY3QgewogcHVibGljOgogICAgIC8qKgogICAgICAqIERlc3RydWN0b3Iu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2xvY2lkLmggYi9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL2xvY2lkLmgKaW5kZXggMWFkNWNiNTQ2ZWJlMzk3ZWY0MzZkZjM2NTAzZWI0
MzcxYzM4NjY5Ni4uZGQ3ZDA2OGE0ZTU0MDA0MjNkZTZiM2NhYjYwYzM2Mjc2ZWYxZmZhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9sb2NpZC5oCisrKyBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvbG9jaWQuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVy
OiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBo
dHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqCkBAIC0zMSwxMCArMzMsOCBAQAogCiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMu
aCIKICNpbmNsdWRlICJ1bmljb2RlL3VvYmplY3QuaCIKLSNpbmNsdWRlICJ1bmljb2RlL3VuaXN0
ci5oIgogI2luY2x1ZGUgInVuaWNvZGUvcHV0aWwuaCIKICNpbmNsdWRlICJ1bmljb2RlL3Vsb2Mu
aCIKLSNpbmNsdWRlICJ1bmljb2RlL3N0cmVudW0uaCIKIAogLyoqCiAgKiBcZmlsZQpAQCAtNDYs
NiArNDYsOSBAQCBVX05BTUVTUEFDRV9CRUdJTgogLy8gRm9yd2FyZCBEZWNsYXJhdGlvbnMKIHZv
aWQgVV9DQUxMQ09OViBsb2NhbGVfYXZhaWxhYmxlX2luaXQoKTsgLyoqPCBAaW50ZXJuYWwgKi8K
IAorY2xhc3MgU3RyaW5nRW51bWVyYXRpb247CitjbGFzcyBVbmljb2RlU3RyaW5nOworCiAvKioK
ICAqIEEgPGNvZGU+TG9jYWxlPC9jb2RlPiBvYmplY3QgcmVwcmVzZW50cyBhIHNwZWNpZmljIGdl
b2dyYXBoaWNhbCwgcG9saXRpY2FsLAogICogb3IgY3VsdHVyYWwgcmVnaW9uLiBBbiBvcGVyYXRp
b24gdGhhdCByZXF1aXJlcyBhIDxjb2RlPkxvY2FsZTwvY29kZT4gdG8gcGVyZm9ybQpAQCAtODUs
NyArODgsNyBAQCB2b2lkIFVfQ0FMTENPTlYgbG9jYWxlX2F2YWlsYWJsZV9pbml0KCk7IC8qKjwg
QGludGVybmFsICovCiAgKiA8UD4KICAqIFRoZSB0aGlyZCBjb25zdHJ1Y3RvciByZXF1aXJlcyBh
IHRoaXJkIGFyZ3VtZW50LS10aGUgPFNUUk9ORz5WYXJpYW50LjwvU1RST05HPgogICogVGhlIFZh
cmlhbnQgY29kZXMgYXJlIHZlbmRvciBhbmQgYnJvd3Nlci1zcGVjaWZpYy4KLSAqIEZvciBleGFt
cGxlLCB1c2UgUkVWSVNFRCBmb3IgYSBsYW5nYXVnZSdzIHJldmlzZWQgc2NyaXB0IG9ydGhvZ3Jh
cGh5LCBhbmQgUE9TSVggZm9yIFBPU0lYLgorICogRm9yIGV4YW1wbGUsIHVzZSBSRVZJU0VEIGZv
ciBhIGxhbmd1YWdlJ3MgcmV2aXNlZCBzY3JpcHQgb3J0aG9ncmFwaHksIGFuZCBQT1NJWCBmb3Ig
UE9TSVguCiAgKiBXaGVyZSB0aGVyZSBhcmUgdHdvIHZhcmlhbnRzLCBzZXBhcmF0ZSB0aGVtIHdp
dGggYW4gdW5kZXJzY29yZSwgYW5kCiAgKiBwdXQgdGhlIG1vc3QgaW1wb3J0YW50IG9uZSBmaXJz
dC4gRm9yCiAgKiBleGFtcGxlLCBhIFRyYWRpdGlvbmFsIFNwYW5pc2ggY29sbGF0aW9uIG1pZ2h0
IGJlIHJlZmVyZW5jZWQsIHdpdGgKQEAgLTQ5Myw3ICs0OTYsNiBAQCBwdWJsaWM6CiAgICAgICov
CiAgICAgdWludDMyX3QgICAgICAgIGdldExDSUQodm9pZCkgY29uc3Q7CiAKLSNpZm5kZWYgVV9I
SURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIGxvY2Fs
ZSdzIHNjcmlwdCBpcyB3cml0dGVuIHJpZ2h0LXRvLWxlZnQuCiAgICAgICogSWYgdGhlcmUgaXMg
bm8gc2NyaXB0IHN1YnRhZywgdGhlbiB0aGUgbGlrZWx5IHNjcmlwdCBpcyB1c2VkLCBzZWUgdWxv
Y19hZGRMaWtlbHlTdWJ0YWdzKCkuCkBAIC01MDUsMTAgKzUwNyw5IEBAIHB1YmxpYzoKICAgICAg
KiBSZXR1cm5zIFRSVUUgZm9yICJhciIgYW5kICJlbi1IZWJyIiwgRkFMU0UgZm9yICJ6aCIgYW5k
ICJmYS1DeXJsIi4KICAgICAgKgogICAgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgbG9jYWxlJ3Mg
c2NyaXB0IGlzIHdyaXR0ZW4gcmlnaHQtdG8tbGVmdAotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAg
ICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIFVCb29sIGlzUmlnaHRUb0xlZnQoKSBj
b25zdDsKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogCiAgICAgLyoqCiAgICAgICog
RmlsbHMgaW4gImRpc3BMYW5nIiB3aXRoIHRoZSBuYW1lIG9mIHRoaXMgbG9jYWxlJ3MgbGFuZ3Vh
Z2UgaW4gYSBmb3JtYXQgc3VpdGFibGUgZm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL21lYXNmbXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbWVhc2ZtdC5oCmluZGV4
IDYxYTFlODZkOWM0MzFlN2MxOGE0OGNjYjk3NmUzN2MxNmVkODJjMWIuLjE1NmJiODFiNTQ0ZGVl
ZWVkOWM1OWMwYzJkOGNkYWY5NmEyZTI4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvbWVhc2ZtdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbWVhc2ZtdC5oCkBA
IC0xLDYgKzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qIENvcHlyaWdodCAoYykgMjAwNC0y
MDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqIENvcHlyaWdodCAoYykgMjAw
NC0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqIENvcnBvcmF0aW9uIGFu
ZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBBdXRob3I6
IEFsYW4gTGl1CkBAIC01OSwxMSArNjEsMTMgQEAgZW51bSBVTWVhc3VyZUZvcm1hdFdpZHRoIHsK
ICAgICAgKi8KICAgICBVTUVBU0ZNVF9XSURUSF9OVU1FUklDLAogCisjaWZuZGVmIFVfSElERV9E
RVBSRUNBVEVEX0FQSQogICAgIC8qKgotICAgICAqIENvdW50IG9mIHZhbHVlcyBpbiB0aGlzIGVu
dW0uCi0gICAgICogQHN0YWJsZSBJQ1UgNTMKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdo
ZXN0IG5vcm1hbCBVTWVhc3VyZUZvcm1hdFdpZHRoIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVk
IElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0
aWNrZXQgIzEyNDIwLgogICAgICAqLwogICAgIFVNRUFTRk1UX1dJRFRIX0NPVU5UID0gNAorI2Vu
ZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH07CiAvKiogQHN0YWJsZSBJQ1UgNTMgKi8K
IHR5cGVkZWYgZW51bSBVTWVhc3VyZUZvcm1hdFdpZHRoIFVNZWFzdXJlRm9ybWF0V2lkdGg7IApA
QCAtNzgsNyArODIsNyBAQCBjbGFzcyBNZWFzdXJlRm9ybWF0Q2FjaGVEYXRhOwogY2xhc3MgU2hh
cmVkTnVtYmVyRm9ybWF0OwogY2xhc3MgU2hhcmVkUGx1cmFsUnVsZXM7CiBjbGFzcyBRdWFudGl0
eUZvcm1hdHRlcjsKLWNsYXNzIFNpbXBsZVBhdHRlcm5Gb3JtYXR0ZXI7CitjbGFzcyBTaW1wbGVG
b3JtYXR0ZXI7CiBjbGFzcyBMaXN0Rm9ybWF0dGVyOwogY2xhc3MgRGF0ZUZvcm1hdDsKIApAQCAt
MTg2LDcgKzE5MCw2IEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZUZvcm1hdCA6IHB1YmxpYyBG
b3JtYXQgewogICAgICAgICAgICAgRmllbGRQb3NpdGlvbiAmcG9zLAogICAgICAgICAgICAgVUVy
cm9yQ29kZSAmc3RhdHVzKSBjb25zdDsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAg
LyoqCiAgICAgICogRm9ybWF0cyBhIHNpbmdsZSBtZWFzdXJlIHBlciB1bml0LiBBbiBleGFtcGxl
IG9mIHN1Y2ggYQogICAgICAqIGZvcm1hdHRlZCBzdHJpbmcgaXMgMy41IG1ldGVycyBwZXIgc2Vj
b25kLgpAQCAtMTk4LDcgKzIwMSw3IEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZUZvcm1hdCA6
IHB1YmxpYyBGb3JtYXQgewogICAgICAqIEBwYXJhbSBzdGF0dXMgdGhlIGVycm9yLgogICAgICAq
IEByZXR1cm4gYXBwZW5kVG8gcmVmZXJlbmNlCiAgICAgICoKLSAgICAgKiBAZHJhZnQgSUNVIDU1
CisgICAgICogQHN0YWJsZSBJQ1UgNTUKICAgICAgKi8KICAgICBVbmljb2RlU3RyaW5nICZmb3Jt
YXRNZWFzdXJlUGVyVW5pdCgKICAgICAgICAgICAgIGNvbnN0IE1lYXN1cmUgJm1lYXN1cmUsCkBA
IC0yMDcsNyArMjEwLDE5IEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZUZvcm1hdCA6IHB1Ymxp
YyBGb3JtYXQgewogICAgICAgICAgICAgRmllbGRQb3NpdGlvbiAmcG9zLAogICAgICAgICAgICAg
VUVycm9yQ29kZSAmc3RhdHVzKSBjb25zdDsKIAotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJ
ICovCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgZGlzcGxheSBuYW1lIG9mIHRoZSBzcGVjaWZp
ZWQge0BsaW5rIE1lYXN1cmVVbml0fSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50CisgICAg
ICogbG9jYWxlIGFuZCBmb3JtYXQgd2lkdGguCisgICAgICogQHBhcmFtIHVuaXQgIFRoZSB1bml0
IGZvciB3aGljaCB0byBnZXQgYSBkaXNwbGF5IG5hbWUuCisgICAgICogQHBhcmFtIHN0YXR1cyB0
aGUgZXJyb3IuCisgICAgICogQHJldHVybiAgVGhlIGRpc3BsYXkgbmFtZSBpbiB0aGUgbG9jYWxl
IGFuZCB3aWR0aCBzcGVjaWZpZWQgaW4KKyAgICAgKiAgICAgICAgICB7QGxpbmsgTWVhc3VyZUZv
cm1hdCNnZXRJbnN0YW5jZX0sIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gZGlzcGxheSBuYW1lIGF2
YWlsYWJsZQorICAgICAqICAgICAgICAgIGZvciB0aGUgc3BlY2lmaWVkIHVuaXQuCisgICAgICoK
KyAgICAgKiBAc3RhYmxlIElDVSA1OAorICAgICAqLworICAgIFVuaWNvZGVTdHJpbmcgZ2V0VW5p
dERpc3BsYXlOYW1lKGNvbnN0IE1lYXN1cmVVbml0JiB1bml0LCBVRXJyb3JDb2RlICZzdGF0dXMp
IGNvbnN0OworCiAKICAgICAvKioKICAgICAgKiBSZXR1cm4gYSBmb3JtYXR0ZXIgZm9yIEN1cnJl
bmN5QW1vdW50IG9iamVjdHMgaW4gdGhlIGdpdmVuCkBAIC0zMjcsMTcgKzM0MiwxOSBAQCBjbGFz
cyBVX0kxOE5fQVBJIE1lYXN1cmVGb3JtYXQgOiBwdWJsaWMgRm9ybWF0IHsKICAgICAvLyBzaGFy
ZWQgYWNyb3NzIGluc3RhbmNlcy4KICAgICBMaXN0Rm9ybWF0dGVyICpsaXN0Rm9ybWF0dGVyOwog
Ci0gICAgY29uc3QgUXVhbnRpdHlGb3JtYXR0ZXIgKmdldFF1YW50aXR5Rm9ybWF0dGVyKAotICAg
ICAgICAgICAgaW50MzJfdCBpbmRleCwKLSAgICAgICAgICAgIGludDMyX3Qgd2lkdGhJbmRleCwK
LSAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CisgICAgY29uc3QgU2ltcGxl
Rm9ybWF0dGVyICpnZXRGb3JtYXR0ZXJPck51bGwoCisgICAgICAgICAgICBjb25zdCBNZWFzdXJl
VW5pdCAmdW5pdCwgVU1lYXN1cmVGb3JtYXRXaWR0aCB3aWR0aCwgaW50MzJfdCBpbmRleCkgY29u
c3Q7CiAKLSAgICBjb25zdCBTaW1wbGVQYXR0ZXJuRm9ybWF0dGVyICpnZXRQZXJVbml0Rm9ybWF0
dGVyKAotICAgICAgICAgICAgaW50MzJfdCBpbmRleCwKLSAgICAgICAgICAgIGludDMyX3Qgd2lk
dGhJbmRleCkgY29uc3Q7CisgICAgY29uc3QgU2ltcGxlRm9ybWF0dGVyICpnZXRGb3JtYXR0ZXIo
CisgICAgICAgICAgICBjb25zdCBNZWFzdXJlVW5pdCAmdW5pdCwgVU1lYXN1cmVGb3JtYXRXaWR0
aCB3aWR0aCwgaW50MzJfdCBpbmRleCwKKyAgICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29k
ZSkgY29uc3Q7CiAKLSAgICBjb25zdCBTaW1wbGVQYXR0ZXJuRm9ybWF0dGVyICpnZXRQZXJGb3Jt
YXR0ZXIoCi0gICAgICAgICAgICBpbnQzMl90IHdpZHRoSW5kZXgsCisgICAgY29uc3QgU2ltcGxl
Rm9ybWF0dGVyICpnZXRQbHVyYWxGb3JtYXR0ZXIoCisgICAgICAgICAgICBjb25zdCBNZWFzdXJl
VW5pdCAmdW5pdCwgVU1lYXN1cmVGb3JtYXRXaWR0aCB3aWR0aCwgaW50MzJfdCBpbmRleCwKKyAg
ICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3Q7CisKKyAgICBjb25zdCBTaW1w
bGVGb3JtYXR0ZXIgKmdldFBlckZvcm1hdHRlcigKKyAgICAgICAgICAgIFVNZWFzdXJlRm9ybWF0
V2lkdGggd2lkdGgsCiAgICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpIGNvbnN0OwogCiAg
ICAgaW50MzJfdCB3aXRoUGVyVW5pdEFuZEFwcGVuZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvbWVhc3VuaXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbWVhc3VuaXQu
aAppbmRleCBjNzM3MDY2N2QzMTVjZTIwZWUxMGVkMjcwMTg4Yzc4YTg1MzlhZjZiLi40MTQwYWUz
Njc5Zjk0ZTlmZjdhMjllZWQ0MWQyNTllMDQ2ODQ3ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL21lYXN1bml0LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9tZWFz
dW5pdC5oCkBAIC0xLDYgKzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIElu
Yy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5p
Y29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qIENvcHlyaWdodCAo
YykgMjAwNC0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqIENvcHlyaWdo
dCAoYykgMjAwNC0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqIENvcnBv
cmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog
KiBBdXRob3I6IEFsYW4gTGl1CkBAIC0zOCwxMSArNDAsMTAgQEAgY2xhc3MgVV9JMThOX0FQSSBN
ZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogCiAgICAgLyoqCiAgICAgICogRGVmYXVsdCBj
b25zdHJ1Y3Rvci4KKyAgICAgKiBQb3B1bGF0ZXMgdGhlIGluc3RhbmNlIHdpdGggdGhlIGJhc2Ug
ZGltZW5zaW9ubGVzcyB1bml0LgogICAgICAqIEBzdGFibGUgSUNVIDMuMAogICAgICAqLwotICAg
IE1lYXN1cmVVbml0KCkgOiBmVHlwZUlkKDApLCBmU3ViVHlwZUlkKDApIHsgCi0gICAgICAgIGZD
dXJyZW5jeVswXSA9IDA7Ci0gICAgfQorICAgIE1lYXN1cmVVbml0KCk7CiAgICAgCiAgICAgLyoq
CiAgICAgICogQ29weSBjb25zdHJ1Y3Rvci4KQEAgLTE0Nyw3ICsxNDgsNyBAQCBjbGFzcyBVX0kx
OE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICogPHByZT4KICAgICAg
KiAuICAgQmFzZSogcG9seW1vcnBoaWNfcG9pbnRlciA9IGNyZWF0ZVBvbHltb3JwaGljT2JqZWN0
KCk7CiAgICAgICogLiAgIGlmIChwb2x5bW9ycGhpY19wb2ludGVyLT5nZXREeW5hbWljQ2xhc3NJ
RCgpID09Ci0gICAgICogLiAgICAgICBlcml2ZWQ6OmdldFN0YXRpY0NsYXNzSUQoKSkgLi4uCisg
ICAgICogLiAgICAgICBEZXJpdmVkOjpnZXRTdGF0aWNDbGFzc0lEKCkpIC4uLgogICAgICAqIDwv
cHJlPgogICAgICAqIEByZXR1cm4gICAgICAgICAgVGhlIGNsYXNzIElEIGZvciBhbGwgb2JqZWN0
cyBvZiB0aGlzIGNsYXNzLgogICAgICAqIEBzdGFibGUgSUNVIDUzCkBAIC0xODMsNiArMTg0LDE0
IEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1YmxpYyBVT2JqZWN0IHsKICAgICAg
Ki8KICAgICBzdGF0aWMgaW50MzJfdCBnZXRJbmRleENvdW50KCk7CiAKKyAgICAvKioKKyAgICAg
KiBJQ1UgdXNlIG9ubHkuCisgICAgICogQHJldHVybiB0aGUgdW5pdC5nZXRJbmRleCgpIG9mIHRo
ZSB1bml0IHdoaWNoIGhhcyB0aGlzIHVuaXQuZ2V0VHlwZSgpIGFuZCB1bml0LmdldFN1YnR5cGUo
KSwKKyAgICAgKiAgICAgICAgIG9yIGEgbmVnYXRpdmUgdmFsdWUgaWYgdGhlcmUgaXMgbm8gc3Vj
aCB1bml0CisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgc3RhdGljIGludDMyX3QgaW50
ZXJuYWxHZXRJbmRleEZvclR5cGVBbmRTdWJ0eXBlKGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNo
YXIgKnN1YnR5cGUpOworCiAgICAgLyoqCiAgICAgICogSUNVIHVzZSBvbmx5LgogICAgICAqIEBp
bnRlcm5hbApAQCAtMjA3LDE2ICsyMTYsMTQgQEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5p
dDogcHVibGljIFVPYmplY3QgewogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3Jl
YXRlR0ZvcmNlKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQ
SQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBhY2NlbGVyYXRpb246IG1ldGVyLXBl
ci1zZWNvbmQtc3F1YXJlZC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQg
bXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAg
ICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3Rh
dGljIE1lYXN1cmVVbml0ICpjcmVhdGVNZXRlclBlclNlY29uZFNxdWFyZWQoVUVycm9yQ29kZSAm
c3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KICAgICAvKioKICAgICAg
KiBSZXR1cm5zIHVuaXQgb2YgYW5nbGU6IGFyYy1taW51dGUuCiAgICAgICogQ2FsbGVyIG93bnMg
cmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTI0MSwxNiArMjQ4LDIyIEBAIGNs
YXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1YmxpYyBVT2JqZWN0IHsKICAgICAgKi8KICAg
ICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZURlZ3JlZShVRXJyb3JDb2RlICZzdGF0dXMpOwog
Ci0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQg
b2YgYW5nbGU6IHJhZGlhbi4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQg
bXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAg
ICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3Rh
dGljIE1lYXN1cmVVbml0ICpjcmVhdGVSYWRpYW4oVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2Vu
ZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHVuaXQg
b2YgYW5nbGU6IHJldm9sdXRpb24uCisgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUg
YW5kIG11c3QgZnJlZSBpdC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgor
ICAgICAqIEBzdGFibGUgSUNVIDU2CisgICAgICovCisgICAgc3RhdGljIE1lYXN1cmVVbml0ICpj
cmVhdGVSZXZvbHV0aW9uQW5nbGUoVUVycm9yQ29kZSAmc3RhdHVzKTsKKwogICAgIC8qKgogICAg
ICAqIFJldHVybnMgdW5pdCBvZiBhcmVhOiBhY3JlLgogICAgICAqIENhbGxlciBvd25zIHJldHVy
bmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCkBAIC0yNjcsMTYgKzI4MCwxNCBAQCBjbGFzcyBV
X0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3Rh
dGljIE1lYXN1cmVVbml0ICpjcmVhdGVIZWN0YXJlKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNp
Zm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBh
cmVhOiBzcXVhcmUtY2VudGltZXRlci4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1
ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUu
Ci0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAg
ICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVTcXVhcmVDZW50aW1ldGVyKFVFcnJvckNvZGUg
JnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAgICAgLyoqCiAgICAg
ICogUmV0dXJucyB1bml0IG9mIGFyZWE6IHNxdWFyZS1mb290LgogICAgICAqIENhbGxlciBvd25z
IHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCkBAIC0yODUsMTYgKzI5NiwxNCBAQCBj
bGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAg
ICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVTcXVhcmVGb290KFVFcnJvckNvZGUgJnN0YXR1
cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMg
dW5pdCBvZiBhcmVhOiBzcXVhcmUtaW5jaC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2
YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNv
ZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICov
CiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVTcXVhcmVJbmNoKFVFcnJvckNvZGUgJnN0
YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAgICAgLyoqCiAgICAgICog
UmV0dXJucyB1bml0IG9mIGFyZWE6IHNxdWFyZS1raWxvbWV0ZXIuCiAgICAgICogQ2FsbGVyIG93
bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTMxOSwxMzYgKzMyOCwxNzQg
QEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAq
LwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlU3F1YXJlTWlsZShVRXJyb3JDb2RlICZz
dGF0dXMpOwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1
cm5zIHVuaXQgb2YgYXJlYTogc3F1YXJlLXlhcmQuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJu
ZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJv
ciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAg
ICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlU3F1YXJlWWFyZChVRXJyb3JDb2Rl
ICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJ
REVfRFJBRlRfQVBJCisgICAgLyoqCisgICAgICogUmV0dXJucyB1bml0IG9mIGNvbmNlbnRyOiBr
YXJhdC4KKyAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0
LgorICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCisgICAgICogQHN0YWJsZSBJ
Q1UgNTQKKyAgICAgKi8KKyAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUthcmF0KFVFcnJv
ckNvZGUgJnN0YXR1cyk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHVuaXQgb2YgY29uY2Vu
dHI6IG1pbGxpZ3JhbS1wZXItZGVjaWxpdGVyLgorICAgICAqIENhbGxlciBvd25zIHJldHVybmVk
IHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCisgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3Ig
Y29kZS4KKyAgICAgKiBAc3RhYmxlIElDVSA1NworICAgICAqLworICAgIHN0YXRpYyBNZWFzdXJl
VW5pdCAqY3JlYXRlTWlsbGlncmFtUGVyRGVjaWxpdGVyKFVFcnJvckNvZGUgJnN0YXR1cyk7CisK
KyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHVuaXQgb2YgY29uY2VudHI6IG1pbGxpbW9sZS1wZXIt
bGl0ZXIuCisgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBp
dC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgorICAgICAqIEBzdGFibGUg
SUNVIDU3CisgICAgICovCisgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVNaWxsaW1vbGVQ
ZXJMaXRlcihVRXJyb3JDb2RlICZzdGF0dXMpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB1
bml0IG9mIGNvbmNlbnRyOiBwYXJ0LXBlci1taWxsaW9uLgorICAgICAqIENhbGxlciBvd25zIHJl
dHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCisgICAgICogQHBhcmFtIHN0YXR1cyBJQ1Ug
ZXJyb3IgY29kZS4KKyAgICAgKiBAc3RhYmxlIElDVSA1NworICAgICAqLworICAgIHN0YXRpYyBN
ZWFzdXJlVW5pdCAqY3JlYXRlUGFydFBlck1pbGxpb24oVUVycm9yQ29kZSAmc3RhdHVzKTsKKwor
ICAgIC8qKgorICAgICAqIFJldHVybnMgdW5pdCBvZiBjb25zdW1wdGlvbjogbGl0ZXItcGVyLTEw
MGtpbG9tZXRlcnMuCisgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3Qg
ZnJlZSBpdC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgorICAgICAqIEBz
dGFibGUgSUNVIDU2CisgICAgICovCisgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVMaXRl
clBlcjEwMEtpbG9tZXRlcnMoVUVycm9yQ29kZSAmc3RhdHVzKTsKKwogICAgIC8qKgogICAgICAq
IFJldHVybnMgdW5pdCBvZiBjb25zdW1wdGlvbjogbGl0ZXItcGVyLWtpbG9tZXRlci4KICAgICAg
KiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBw
YXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAq
IEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVM
aXRlclBlcktpbG9tZXRlcihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURF
X0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICog
UmV0dXJucyB1bml0IG9mIGNvbnN1bXB0aW9uOiBtaWxlLXBlci1nYWxsb24uCiAgICAgICogQ2Fs
bGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0g
c3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3Rh
YmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlTWlsZVBl
ckdhbGxvbihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQ
SSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCisgICAgLyoqCisgICAgICogUmV0dXJucyB1
bml0IG9mIGNvbnN1bXB0aW9uOiBtaWxlLXBlci1nYWxsb24taW1wZXJpYWwuCisgICAgICogQ2Fs
bGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KKyAgICAgKiBAcGFyYW0g
c3RhdHVzIElDVSBlcnJvciBjb2RlLgorICAgICAqIEBzdGFibGUgSUNVIDU3CisgICAgICovCisg
ICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVNaWxlUGVyR2FsbG9uSW1wZXJpYWwoVUVycm9y
Q29kZSAmc3RhdHVzKTsKKworICAgIC8qCisgICAgICogVGhlIGZvbGxvd2luZyB3ZXJlIGRyYWZ0
IElDVSA1OCwgYnV0IGhhdmUgYmVlbiB3aXRoZHJhd246CisgICAgICogc3RhdGljIE1lYXN1cmVV
bml0ICpjcmVhdGVFYXN0KFVFcnJvckNvZGUgJnN0YXR1cyk7CisgICAgICogc3RhdGljIE1lYXN1
cmVVbml0ICpjcmVhdGVOb3J0aChVRXJyb3JDb2RlICZzdGF0dXMpOworICAgICAqIHN0YXRpYyBN
ZWFzdXJlVW5pdCAqY3JlYXRlU291dGgoVUVycm9yQ29kZSAmc3RhdHVzKTsKKyAgICAgKiBzdGF0
aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZVdlc3QoVUVycm9yQ29kZSAmc3RhdHVzKTsKKyAgICAgKi8K
KwogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBkaWdpdGFsOiBiaXQuCiAgICAgICog
Q2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFy
YW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBA
c3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlQml0
KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0j
aWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Yg
ZGlnaXRhbDogYnl0ZS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVz
dCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICog
QGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGlj
IE1lYXN1cmVVbml0ICpjcmVhdGVCeXRlKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAv
KiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioK
ICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZGlnaXRhbDogZ2lnYWJpdC4KICAgICAgKiBDYWxsZXIg
b3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0
dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUg
SUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVHaWdhYml0KFVF
cnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZu
ZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZGln
aXRhbDogZ2lnYWJ5dGUuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11
c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAq
IEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRp
YyBNZWFzdXJlVW5pdCAqY3JlYXRlR2lnYWJ5dGUoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2Vu
ZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAg
IC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBkaWdpdGFsOiBraWxvYml0LgogICAgICAqIENh
bGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFt
IHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0
YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUtpbG9i
aXQoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8K
LSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBv
ZiBkaWdpdGFsOiBraWxvYnl0ZS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBh
bmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0g
ICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAg
c3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVLaWxvYnl0ZShVRXJyb3JDb2RlICZzdGF0dXMpOwog
Ci0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJ
CiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGRpZ2l0YWw6IG1lZ2FiaXQuCiAgICAg
ICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBA
cGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAg
KiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRl
TWVnYWJpdChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQ
SSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1
bml0IG9mIGRpZ2l0YWw6IG1lZ2FieXRlLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZh
bHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29k
ZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8K
ICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1lZ2FieXRlKFVFcnJvckNvZGUgJnN0YXR1
cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFG
VF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZGlnaXRhbDogdGVyYWJpdC4K
ICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAor
ICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpj
cmVhdGVUZXJhYml0KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJB
RlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1
cm5zIHVuaXQgb2YgZGlnaXRhbDogdGVyYWJ5dGUuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJu
ZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJv
ciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAg
ICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlVGVyYWJ5dGUoVUVycm9yQ29kZSAm
c3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KKyAgICAvKioKKyAgICAg
KiBSZXR1cm5zIHVuaXQgb2YgZHVyYXRpb246IGNlbnR1cnkuCisgICAgICogQ2FsbGVyIG93bnMg
cmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIElD
VSBlcnJvciBjb2RlLgorICAgICAqIEBzdGFibGUgSUNVIDU2CisgICAgICovCisgICAgc3RhdGlj
IE1lYXN1cmVVbml0ICpjcmVhdGVDZW50dXJ5KFVFcnJvckNvZGUgJnN0YXR1cyk7CisKICAgICAv
KioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZHVyYXRpb246IGRheS4KICAgICAgKiBDYWxsZXIg
b3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgpAQCAtNDY1LDE2ICs1MTIsMTQg
QEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAq
LwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlSG91cihVRXJyb3JDb2RlICZzdGF0dXMp
OwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVu
aXQgb2YgZHVyYXRpb246IG1pY3Jvc2Vjb25kLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVk
IHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3Ig
Y29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAg
Ki8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1pY3Jvc2Vjb25kKFVFcnJvckNvZGUg
JnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAgICAgLyoqCiAgICAg
ICogUmV0dXJucyB1bml0IG9mIGR1cmF0aW9uOiBtaWxsaXNlY29uZC4KICAgICAgKiBDYWxsZXIg
b3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgpAQCAtNDk5LDE2ICs1NDQsMTQg
QEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAq
LwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlTW9udGgoVUVycm9yQ29kZSAmc3RhdHVz
KTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1
bml0IG9mIGR1cmF0aW9uOiBuYW5vc2Vjb25kLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVk
IHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3Ig
Y29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAg
Ki8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU5hbm9zZWNvbmQoVUVycm9yQ29kZSAm
c3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KICAgICAvKioKICAgICAg
KiBSZXR1cm5zIHVuaXQgb2YgZHVyYXRpb246IHNlY29uZC4KICAgICAgKiBDYWxsZXIgb3ducyBy
ZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgpAQCAtNTMzLDE1NiArNTc2LDEyNiBAQCBj
bGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAg
ICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVZZWFyKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAK
LSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBv
ZiBlbGVjdHJpYzogYW1wZXJlLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFu
ZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAg
ICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBz
dGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUFtcGVyZShVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0j
ZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAg
ICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGVsZWN0cmljOiBtaWxsaWFtcGVyZS4KICAg
ICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAq
IEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAg
ICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVh
dGVNaWxsaWFtcGVyZShVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RS
QUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0
dXJucyB1bml0IG9mIGVsZWN0cmljOiBvaG0uCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQg
dmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBj
b2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAq
LwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlT2htKFVFcnJvckNvZGUgJnN0YXR1cyk7
CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9B
UEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZWxlY3RyaWM6IHZvbHQuCiAgICAg
ICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBA
cGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAg
KiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRl
Vm9sdChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAq
LwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0
IG9mIGVuZXJneTogY2Fsb3JpZS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBh
bmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0g
ICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAg
c3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVDYWxvcmllKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAK
LSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkK
ICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZW5lcmd5OiBmb29kY2Fsb3JpZS4KICAg
ICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAq
IEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAg
ICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVh
dGVGb29kY2Fsb3JpZShVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RS
QUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0
dXJucyB1bml0IG9mIGVuZXJneTogam91bGUuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQg
dmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBj
b2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAq
LwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlSm91bGUoVUVycm9yQ29kZSAmc3RhdHVz
KTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZU
X0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBlbmVyZ3k6IGtpbG9jYWxvcmll
LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAg
ICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0
CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQg
KmNyZWF0ZUtpbG9jYWxvcmllKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJ
REVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAg
KiBSZXR1cm5zIHVuaXQgb2YgZW5lcmd5OiBraWxvam91bGUuCiAgICAgICogQ2FsbGVyIG93bnMg
cmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElD
VSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1
NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlS2lsb2pvdWxlKFVFcnJv
ckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVm
IFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZW5lcmd5
OiBraWxvd2F0dC1ob3VyLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBt
dXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAg
KiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0
aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUtpbG93YXR0SG91cihVRXJyb3JDb2RlICZzdGF0dXMpOwog
Ci0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJ
CiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGZyZXF1ZW5jeTogZ2lnYWhlcnR6Lgog
ICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAg
ICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0Cisg
ICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNy
ZWF0ZUdpZ2FoZXJ0eihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RS
QUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0
dXJucyB1bml0IG9mIGZyZXF1ZW5jeTogaGVydHouCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJu
ZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJv
ciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAg
ICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlSGVydHooVUVycm9yQ29kZSAmc3Rh
dHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RS
QUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBmcmVxdWVuY3k6IGtpbG9o
ZXJ0ei4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0
LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElD
VSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVV
bml0ICpjcmVhdGVLaWxvaGVydHooVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVf
SElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAg
ICAqIFJldHVybnMgdW5pdCBvZiBmcmVxdWVuY3k6IG1lZ2FoZXJ0ei4KICAgICAgKiBDYWxsZXIg
b3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0
dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUg
SUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVNZWdhaGVydHoo
VUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNp
Zm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBs
ZW5ndGg6IGFzdHJvbm9taWNhbC11bml0LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZh
bHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29k
ZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8K
ICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUFzdHJvbm9taWNhbFVuaXQoVUVycm9yQ29k
ZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KICAgICAvKioKICAg
ICAgKiBSZXR1cm5zIHVuaXQgb2YgbGVuZ3RoOiBjZW50aW1ldGVyLgogICAgICAqIENhbGxlciBv
d25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCkBAIC02OTEsMjYgKzcwNCwyMiBA
QCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICov
CiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVDZW50aW1ldGVyKFVFcnJvckNvZGUgJnN0
YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVy
bnMgdW5pdCBvZiBsZW5ndGg6IGRlY2ltZXRlci4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5l
ZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9y
IGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAg
ICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVEZWNpbWV0ZXIoVUVycm9yQ29kZSAm
c3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURF
X0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBsZW5ndGg6IGZhdGhv
bS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0Lgog
ICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1
NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0
ICpjcmVhdGVGYXRob20oVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9E
UkFGVF9BUEkgKi8KICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgbGVuZ3RoOiBmb290
LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCkBA
IC03MTksMTYgKzcyOCwxNCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMg
VU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVGb290KFVF
cnJvckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgog
ICAgICAqIFJldHVybnMgdW5pdCBvZiBsZW5ndGg6IGZ1cmxvbmcuCiAgICAgICogQ2FsbGVyIG93
bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVz
IElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElD
VSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlRnVybG9uZyhVRXJy
b3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogICAgIC8q
KgogICAgICAqIFJldHVybnMgdW5pdCBvZiBsZW5ndGg6IGluY2guCiAgICAgICogQ2FsbGVyIG93
bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTc2MSwxNiArNzY4LDE0IEBA
IGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1YmxpYyBVT2JqZWN0IHsKICAgICAgKi8K
ICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1ldGVyKFVFcnJvckNvZGUgJnN0YXR1cyk7
CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5p
dCBvZiBsZW5ndGg6IG1pY3JvbWV0ZXIuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFs
dWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2Rl
LgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwog
ICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlTWljcm9tZXRlcihVRXJyb3JDb2RlICZzdGF0
dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogICAgIC8qKgogICAgICAqIFJl
dHVybnMgdW5pdCBvZiBsZW5ndGg6IG1pbGUuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQg
dmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTc3OSw2ICs3ODQsMTQgQEAgY2xhc3MgVV9JMThO
X0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAqLwogICAgIHN0YXRpYyBN
ZWFzdXJlVW5pdCAqY3JlYXRlTWlsZShVRXJyb3JDb2RlICZzdGF0dXMpOwogCisgICAgLyoqCisg
ICAgICogUmV0dXJucyB1bml0IG9mIGxlbmd0aDogbWlsZS1zY2FuZGluYXZpYW4uCisgICAgICog
Q2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KKyAgICAgKiBAcGFy
YW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgorICAgICAqIEBzdGFibGUgSUNVIDU2CisgICAgICov
CisgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVNaWxlU2NhbmRpbmF2aWFuKFVFcnJvckNv
ZGUgJnN0YXR1cyk7CisKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgbGVuZ3RoOiBt
aWxsaW1ldGVyLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZy
ZWUgaXQuCkBAIC03ODcsMzYgKzgwMCwzMCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0
OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVh
dGVNaWxsaW1ldGVyKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZU
X0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBsZW5ndGg6IG5hbm9tZXRlci4K
ICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAor
ICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpj
cmVhdGVOYW5vbWV0ZXIoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9E
UkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJl
dHVybnMgdW5pdCBvZiBsZW5ndGg6IG5hdXRpY2FsLW1pbGUuCiAgICAgICogQ2FsbGVyIG93bnMg
cmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElD
VSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1
NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlTmF1dGljYWxNaWxlKFVF
cnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZu
ZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgbGVu
Z3RoOiBwYXJzZWMuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3Qg
ZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBk
cmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBN
ZWFzdXJlVW5pdCAqY3JlYXRlUGFyc2VjKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAv
KiBVX0hJREVfRFJBRlRfQVBJICovCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGxl
bmd0aDogcGljb21ldGVyLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBt
dXN0IGZyZWUgaXQuCkBAIC04MjUsNiArODMyLDE2IEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3Vy
ZVVuaXQ6IHB1YmxpYyBVT2JqZWN0IHsKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQg
KmNyZWF0ZVBpY29tZXRlcihVRXJyb3JDb2RlICZzdGF0dXMpOwogCisjaWZuZGVmIFVfSElERV9E
UkFGVF9BUEkKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHVuaXQgb2YgbGVuZ3RoOiBwb2ludC4K
KyAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgorICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCisgICAgICogQGRyYWZ0IElDVSA1OQor
ICAgICAqLworICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlUG9pbnQoVUVycm9yQ29kZSAm
c3RhdHVzKTsKKyNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLworCiAgICAgLyoqCiAgICAg
ICogUmV0dXJucyB1bml0IG9mIGxlbmd0aDogeWFyZC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1
cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgpAQCAtODMzLDI2ICs4NTAsMjIgQEAgY2xhc3Mg
VV9JMThOX0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAqLwogICAgIHN0
YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlWWFyZChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jaWZu
ZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgbGln
aHQ6IGx1eC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVl
IGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0
IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1
cmVVbml0ICpjcmVhdGVMdXgoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElE
RV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAq
IFJldHVybnMgdW5pdCBvZiBtYXNzOiBjYXJhdC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5l
ZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9y
IGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAg
ICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVDYXJhdChVRXJyb3JDb2RlICZzdGF0
dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogICAgIC8qKgogICAgICAqIFJl
dHVybnMgdW5pdCBvZiBtYXNzOiBncmFtLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZh
bHVlIGFuZCBtdXN0IGZyZWUgaXQuCkBAIC04NjksMzYgKzg4MiwzMCBAQCBjbGFzcyBVX0kxOE5f
QVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1l
YXN1cmVVbml0ICpjcmVhdGVLaWxvZ3JhbShVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jaWZuZGVm
IFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgbWFzczog
bWV0cmljLXRvbi4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBm
cmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRy
YWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1l
YXN1cmVVbml0ICpjcmVhdGVNZXRyaWNUb24oVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlm
IC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8q
KgogICAgICAqIFJldHVybnMgdW5pdCBvZiBtYXNzOiBtaWNyb2dyYW0uCiAgICAgICogQ2FsbGVy
IG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3Rh
dHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxl
IElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlTWljcm9ncmFt
KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0j
aWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Yg
bWFzczogbWlsbGlncmFtLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBt
dXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAg
KiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0
aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1pbGxpZ3JhbShVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0j
ZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5p
dCBvZiBtYXNzOiBvdW5jZS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQg
bXVzdCBmcmVlIGl0LgpAQCAtOTA3LDE2ICs5MTQsMTQgQEAgY2xhc3MgVV9JMThOX0FQSSBNZWFz
dXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5p
dCAqY3JlYXRlT3VuY2UoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJB
RlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIG1hc3M6IG91bmNlLXRyb3ku
CiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAg
ICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQK
KyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAq
Y3JlYXRlT3VuY2VUcm95KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVf
RFJBRlRfQVBJICovCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIG1hc3M6IHBvdW5k
LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCkBA
IC05MjUsMzYgKzkzMCwzMCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMg
VU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVQb3VuZChV
RXJyb3JDb2RlICZzdGF0dXMpOwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioK
ICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgbWFzczogc3RvbmUuCiAgICAgICogQ2FsbGVyIG93bnMg
cmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElD
VSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1
NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlU3RvbmUoVUVycm9yQ29k
ZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9I
SURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBtYXNzOiB0b24u
CiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAg
ICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQK
KyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAq
Y3JlYXRlVG9uKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRf
QVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5z
IHVuaXQgb2YgcG93ZXI6IGdpZ2F3YXR0LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZh
bHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29k
ZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8K
ICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUdpZ2F3YXR0KFVFcnJvckNvZGUgJnN0YXR1
cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAgICAgLyoqCiAgICAgICogUmV0
dXJucyB1bml0IG9mIHBvd2VyOiBob3JzZXBvd2VyLgogICAgICAqIENhbGxlciBvd25zIHJldHVy
bmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCkBAIC05NzEsMjYgKzk3MCwyMiBAQCBjbGFzcyBV
X0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3Rh
dGljIE1lYXN1cmVVbml0ICpjcmVhdGVLaWxvd2F0dChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0j
aWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Yg
cG93ZXI6IG1lZ2F3YXR0LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBt
dXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAg
KiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0
aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1lZ2F3YXR0KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNl
bmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAg
ICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgcG93ZXI6IG1pbGxpd2F0dC4KICAgICAgKiBD
YWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJh
bSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBz
dGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVNaWxs
aXdhdHQoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkg
Ki8KICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgcG93ZXI6IHdhdHQuCiAgICAgICog
Q2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTEwMjMsNDMg
KzEwMTgsMzcgQEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3Qg
ewogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlTWlsbGliYXIoVUVycm9y
Q29kZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAg
ICogUmV0dXJucyB1bml0IG9mIHByZXNzdXJlOiBtaWxsaW1ldGVyLW9mLW1lcmN1cnkuCiAgICAg
ICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBA
cGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAg
KiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRl
TWlsbGltZXRlck9mTWVyY3VyeShVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9I
SURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAg
ICogUmV0dXJucyB1bml0IG9mIHByZXNzdXJlOiBwb3VuZC1wZXItc3F1YXJlLWluY2guCiAgICAg
ICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBA
cGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAg
KiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRl
UG91bmRQZXJTcXVhcmVJbmNoKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJ
REVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKLSAgICAg
KiBSZXR1cm5zIHVuaXQgb2YgcHJvcG9ydGlvbjoga2FyYXQuCisgICAgICogUmV0dXJucyB1bml0
IG9mIHNwZWVkOiBraWxvbWV0ZXItcGVyLWhvdXIuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJu
ZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJv
ciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1MwogICAg
ICAqLwotICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlS2FyYXQoVUVycm9yQ29kZSAmc3Rh
dHVzKTsKKyAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUtpbG9tZXRlclBlckhvdXIoVUVy
cm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KICAgICAv
KioKLSAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygc3BlZWQ6IGtpbG9tZXRlci1wZXItaG91ci4KKyAg
ICAgKiBSZXR1cm5zIHVuaXQgb2Ygc3BlZWQ6IGtub3QuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0
dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBl
cnJvciBjb2RlLgotICAgICAqIEBzdGFibGUgSUNVIDUzCisgICAgICogQHN0YWJsZSBJQ1UgNTYK
ICAgICAgKi8KLSAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUtpbG9tZXRlclBlckhvdXIo
VUVycm9yQ29kZSAmc3RhdHVzKTsKKyAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUtub3Qo
VUVycm9yQ29kZSAmc3RhdHVzKTsKIAogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBz
cGVlZDogbWV0ZXItcGVyLXNlY29uZC4KQEAgLTEwOTMsNzYgKzEwODIsNzAgQEAgY2xhc3MgVV9J
MThOX0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAqLwogICAgIHN0YXRp
YyBNZWFzdXJlVW5pdCAqY3JlYXRlRmFocmVuaGVpdChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0j
aWZuZGVmIFVfSElERV9EUkFGVF9BUEkKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHVuaXQgb2Yg
dGVtcGVyYXR1cmU6IGdlbmVyaWMuCisgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUg
YW5kIG11c3QgZnJlZSBpdC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgor
ICAgICAqIEBzdGFibGUgSUNVIDU2CisgICAgICovCisgICAgc3RhdGljIE1lYXN1cmVVbml0ICpj
cmVhdGVHZW5lcmljVGVtcGVyYXR1cmUoVUVycm9yQ29kZSAmc3RhdHVzKTsKKwogICAgIC8qKgog
ICAgICAqIFJldHVybnMgdW5pdCBvZiB0ZW1wZXJhdHVyZToga2VsdmluLgogICAgICAqIENhbGxl
ciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0
YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJs
ZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUtlbHZpbihV
RXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lm
bmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIHZv
bHVtZTogYWNyZS1mb290LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBt
dXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAg
KiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0
aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUFjcmVGb290KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNl
bmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAg
ICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBidXNoZWwuCiAgICAgICogQ2Fs
bGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0g
c3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3Rh
YmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlQnVzaGVs
KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0j
aWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Yg
dm9sdW1lOiBjZW50aWxpdGVyLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFu
ZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAg
ICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBz
dGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUNlbnRpbGl0ZXIoVUVycm9yQ29kZSAmc3RhdHVzKTsK
IAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQ
SQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6IGN1YmljLWNlbnRpbWV0
ZXIuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4K
ICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1Ug
NTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5p
dCAqY3JlYXRlQ3ViaWNDZW50aW1ldGVyKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAv
KiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioK
ICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBjdWJpYy1mb290LgogICAgICAqIENhbGxl
ciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0
YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJs
ZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUN1YmljRm9v
dChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwot
I2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9m
IHZvbHVtZTogY3ViaWMtaW5jaC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBh
bmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0g
ICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAg
c3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVDdWJpY0luY2goVUVycm9yQ29kZSAmc3RhdHVzKTsK
IAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KICAgICAvKioKICAgICAgKiBSZXR1cm5z
IHVuaXQgb2Ygdm9sdW1lOiBjdWJpYy1raWxvbWV0ZXIuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0
dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTExNzEsMTYgKzExNTQsMTQgQEAgY2xh
c3MgVV9JMThOX0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAqLwogICAg
IHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlQ3ViaWNLaWxvbWV0ZXIoVUVycm9yQ29kZSAmc3Rh
dHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJu
cyB1bml0IG9mIHZvbHVtZTogY3ViaWMtbWV0ZXIuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJu
ZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJv
ciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAg
ICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlQ3ViaWNNZXRlcihVRXJyb3JDb2Rl
ICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogICAgIC8qKgogICAg
ICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6IGN1YmljLW1pbGUuCiAgICAgICogQ2FsbGVyIG93
bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTExODksNjYgKzExNzAsNzAg
QEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAq
LwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlQ3ViaWNNaWxlKFVFcnJvckNvZGUgJnN0
YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVy
bnMgdW5pdCBvZiB2b2x1bWU6IGN1YmljLXlhcmQuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJu
ZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJv
ciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAg
ICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlQ3ViaWNZYXJkKFVFcnJvckNvZGUg
JnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElE
RV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBjdXAu
CiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAg
ICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQK
KyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAq
Y3JlYXRlQ3VwKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRf
QVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKKyAgICAvKioKKyAgICAgKiBSZXR1cm5z
IHVuaXQgb2Ygdm9sdW1lOiBjdXAtbWV0cmljLgorICAgICAqIENhbGxlciBvd25zIHJldHVybmVk
IHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCisgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3Ig
Y29kZS4KKyAgICAgKiBAc3RhYmxlIElDVSA1NgorICAgICAqLworICAgIHN0YXRpYyBNZWFzdXJl
VW5pdCAqY3JlYXRlQ3VwTWV0cmljKFVFcnJvckNvZGUgJnN0YXR1cyk7CisKICAgICAvKioKICAg
ICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBkZWNpbGl0ZXIuCiAgICAgICogQ2FsbGVyIG93
bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVz
IElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElD
VSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlRGVjaWxpdGVyKFVF
cnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZu
ZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9s
dW1lOiBmbHVpZC1vdW5jZS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQg
bXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAg
ICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3Rh
dGljIE1lYXN1cmVVbml0ICpjcmVhdGVGbHVpZE91bmNlKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAK
LSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkK
ICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBnYWxsb24uCiAgICAgICog
Q2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFy
YW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBA
c3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlR2Fs
bG9uKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICov
Ci0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHVuaXQg
b2Ygdm9sdW1lOiBnYWxsb24taW1wZXJpYWwuCisgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQg
dmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBj
b2RlLgorICAgICAqIEBzdGFibGUgSUNVIDU3CisgICAgICovCisgICAgc3RhdGljIE1lYXN1cmVV
bml0ICpjcmVhdGVHYWxsb25JbXBlcmlhbChVRXJyb3JDb2RlICZzdGF0dXMpOworCiAgICAgLyoq
CiAgICAgICogUmV0dXJucyB1bml0IG9mIHZvbHVtZTogaGVjdG9saXRlci4KICAgICAgKiBDYWxs
ZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBz
dGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFi
bGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVIZWN0b2xp
dGVyKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICov
CiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIHZvbHVtZTogbGl0ZXIuCiAgICAgICog
Q2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTEyNTcsNjYg
KzEyNDIsNjIgQEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3Qg
ewogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlTGl0ZXIoVUVycm9yQ29k
ZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICog
UmV0dXJucyB1bml0IG9mIHZvbHVtZTogbWVnYWxpdGVyLgogICAgICAqIENhbGxlciBvd25zIHJl
dHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1Ug
ZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQK
ICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1lZ2FsaXRlcihVRXJyb3JD
b2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBV
X0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIHZvbHVtZTog
bWlsbGlsaXRlci4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBm
cmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRy
YWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1l
YXN1cmVVbml0ICpjcmVhdGVNaWxsaWxpdGVyKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRp
ZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAv
KioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBwaW50LgogICAgICAqIENhbGxlciBv
d25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1
cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJ
Q1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZVBpbnQoVUVycm9y
Q29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYg
VV9ISURFX0RSQUZUX0FQSQorICAgIC8qKgorICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6
IHBpbnQtbWV0cmljLgorICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0
IGZyZWUgaXQuCisgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KKyAgICAgKiBA
c3RhYmxlIElDVSA1NgorICAgICAqLworICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlUGlu
dE1ldHJpYyhVRXJyb3JDb2RlICZzdGF0dXMpOworCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1
bml0IG9mIHZvbHVtZTogcXVhcnQuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUg
YW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgot
ICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAg
IHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlUXVhcnQoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAot
I2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQog
ICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6IHRhYmxlc3Bvb24uCiAgICAg
ICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBA
cGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAg
KiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRl
VGFibGVzcG9vbihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZU
X0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJu
cyB1bml0IG9mIHZvbHVtZTogdGVhc3Bvb24uCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQg
dmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBj
b2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAq
LwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlVGVhc3Bvb24oVUVycm9yQ29kZSAmc3Rh
dHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KIAogLy8gRW5kIGdlbmVyYXRl
ZCBjcmVhdGVYWFggbWV0aG9kcwogCkBAIC0xMzM1LDYgKzEzMTYsMTIgQEAgY2xhc3MgVV9JMThO
X0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAqLwogICAgIHZvaWQgaW5p
dEN1cnJlbmN5KGNvbnN0IGNoYXIgKmlzb0N1cnJlbmN5KTsKIAorICAgIC8qKgorICAgICAqIEZv
ciBJQ1UgdXNlIG9ubHkuCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgdm9pZCBpbml0
Tm9Vbml0KGNvbnN0IGNoYXIgKnN1YnR5cGUpOworCiAjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5B
TF9BUEkgKi8KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
bWVhc3VyZS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9tZWFzdXJlLmgKaW5kZXggYzBmODhi
YmRhYTEzNGQ4YzNiOWM3YzZhZGZmMzI4MzMxZDUxOGU3MC4uOTliN2Q3YTE0Mzk5NDFhZjUwMjgx
ZDllYWYyZTllOWNkOTAxODk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9t
ZWFzdXJlLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9tZWFzdXJlLmgKQEAgLTEsMyAr
MSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgor
Ly8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmln
aHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMTUsIElu
dGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvbWVzc2FnZXBhdHRlcm4uaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbWVzc2Fn
ZXBhdHRlcm4uaAppbmRleCBmOGI4ZGZiNDNmMzE0OTI5NmNlMWM4MDY1MTFhZjgwODdhZTIyOTFl
Li5mMjhhZGFmZWUwZDJhY2Q0ODFmZjQwYmI2ODQ4NTViNjhmN2IyYzNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL21lc3NhZ2VwYXR0ZXJuLmgKKysrIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9tZXNzYWdlcGF0dGVybi5oCkBAIC0xLDEwICsxLDEyIEBACisvLyDCqSAyMDE2
IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1z
IG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMywgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwg
UmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTog
IG1lc3NhZ2VwYXR0ZXJuLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5n
OiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246
NAogKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9tc2dmbXQuaCBiL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvbXNnZm10LmgKaW5kZXggNWRlOTFlNDFmZjcwYzMxZTViMWZlZjMz
YzRiYTIyMWViYTJmNmI0Mi4uZmVmODAxMDc3NDdiZjg0NzNmM2RiY2NhYzMzMWIyMWNmZjI5OGRk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9tc2dmbXQuaAorKysgYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL21zZ2ZtdC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBh
bmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBv
ZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqIENvcHly
aWdodCAoQykgMjAwNy0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBv
cmF0aW9uIGFuZAogKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCkBAIC05MzcsNyArOTM5
LDcgQEAgcHJpdmF0ZToKICAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgbGlzdCB3aGlj
aCBtYXRjaGVzIHRoZSBrZXl3b3JkIHMuCiAgICAgICovCiAgICAgc3RhdGljIGludDMyX3QgZmlu
ZEtleXdvcmQoIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFVDaGFyICogY29uc3QgKmxpc3QpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyMTZfdCAqIGNvbnN0ICpsaXN0KTsKIAogICAgIC8qKgog
ICAgICAqIFRoaW4gd3JhcHBlciBhcm91bmQgdGhlIGZvcm1hdCguLi4gQXBwZW5kYWJsZVdyYXBw
ZXIgLi4uKSB2YXJpYW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9ub3Jt
YWxpemVyMi5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9ub3JtYWxpemVyMi5oCmluZGV4IGMw
M2NiYTM5ZTk4N2E2NjY5Mjk5YjViMjU2NzMwZTdmZWE0YzJlN2EuLjhhNmQ3MTM4MDIxYjU2NmM4
YTkzZDgyN2E5Mzk4OGJkMjVkYzg0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvbm9ybWFsaXplcjIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL25vcm1hbGl6ZXIy
LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBh
bmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2Rl
Lm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTYs
NyArOCw3IEBACiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgbm9y
bWFsaXplcjIuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRG
LTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBA
IC0yNiwxMiArMjgsMTUgQEAKIAogI2lmICFVQ09ORklHX05PX05PUk1BTElaQVRJT04KIAorI2lu
Y2x1ZGUgInVuaWNvZGUvc3RyaW5ncGllY2UuaCIKICNpbmNsdWRlICJ1bmljb2RlL3VuaXNldC5o
IgogI2luY2x1ZGUgInVuaWNvZGUvdW5pc3RyLmgiCiAjaW5jbHVkZSAidW5pY29kZS91bm9ybTIu
aCIKIAogVV9OQU1FU1BBQ0VfQkVHSU4KIAorY2xhc3MgQnl0ZVNpbms7CisKIC8qKgogICogVW5p
Y29kZSBub3JtYWxpemF0aW9uIGZ1bmN0aW9uYWxpdHkgZm9yIHN0YW5kYXJkIFVuaWNvZGUgbm9y
bWFsaXphdGlvbiBvcgogICogZm9yIHVzaW5nIGN1c3RvbSBtYXBwaW5nIHRhYmxlcy4KQEAgLTIx
Myw2ICsyMTgsMzUgQEAgcHVibGljOgogICAgIG5vcm1hbGl6ZShjb25zdCBVbmljb2RlU3RyaW5n
ICZzcmMsCiAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcgJmRlc3QsCiAgICAgICAgICAgICAg
IFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3QgPSAwOworCisgICAgLyoqCisgICAgICogTm9y
bWFsaXplcyBhIFVURi04IHN0cmluZyBhbmQgb3B0aW9uYWxseSByZWNvcmRzIGhvdyBzb3VyY2Ug
c3Vic3RyaW5ncworICAgICAqIHJlbGF0ZSB0byBjaGFuZ2VkIGFuZCB1bmNoYW5nZWQgcmVzdWx0
IHN1YnN0cmluZ3MuCisgICAgICoKKyAgICAgKiBDdXJyZW50bHkgaW1wbGVtZW50ZWQgY29tcGxl
dGVseSBvbmx5IGZvciAiY29tcG9zZSIgbW9kZXMsCisgICAgICogc3VjaCBhcyBmb3IgTkZDLCBO
RktDLCBhbmQgTkZLQ19DYXNlZm9sZAorICAgICAqIChVTk9STTJfQ09NUE9TRSBhbmQgVU5PUk0y
X0NPTVBPU0VfQ09OVElHVU9VUykuCisgICAgICogT3RoZXJ3aXNlIGN1cnJlbnRseSBjb252ZXJ0
cyB0byAmIGZyb20gVVRGLTE2IGFuZCBkb2VzIG5vdCBzdXBwb3J0IGVkaXRzLgorICAgICAqCisg
ICAgICogQHBhcmFtIG9wdGlvbnMgICBPcHRpb25zIGJpdCBzZXQsIHVzdWFsbHkgMC4gU2VlIFVf
T01JVF9VTkNIQU5HRURfVEVYVCBhbmQgVV9FRElUU19OT19SRVNFVC4KKyAgICAgKiBAcGFyYW0g
c3JjICAgICAgIFNvdXJjZSBVVEYtOCBzdHJpbmcuCisgICAgICogQHBhcmFtIHNpbmsgICAgICBB
IEJ5dGVTaW5rIHRvIHdoaWNoIHRoZSBub3JtYWxpemVkIFVURi04IHJlc3VsdCBzdHJpbmcgaXMg
d3JpdHRlbi4KKyAgICAgKiAgICAgICAgICAgICAgICAgIHNpbmsuRmx1c2goKSBpcyBjYWxsZWQg
YXQgdGhlIGVuZC4KKyAgICAgKiBAcGFyYW0gZWRpdHMgICAgIFJlY29yZHMgZWRpdHMgZm9yIGlu
ZGV4IG1hcHBpbmcsIHdvcmtpbmcgd2l0aCBzdHlsZWQgdGV4dCwKKyAgICAgKiAgICAgICAgICAg
ICAgICAgIGFuZCBnZXR0aW5nIG9ubHkgY2hhbmdlcyAoaWYgYW55KS4KKyAgICAgKiAgICAgICAg
ICAgICAgICAgIFRoZSBFZGl0cyBjb250ZW50cyBpcyB1bmRlZmluZWQgaWYgYW55IGVycm9yIG9j
Y3Vycy4KKyAgICAgKiAgICAgICAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gY2FsbHMgZWRpdHMt
PnJlc2V0KCkgZmlyc3QgdW5sZXNzCisgICAgICogICAgICAgICAgICAgICAgICBvcHRpb25zIGlu
Y2x1ZGVzIFVfRURJVFNfTk9fUkVTRVQuIGVkaXRzIGNhbiBiZSBudWxscHRyLgorICAgICAqIEBw
YXJhbSBlcnJvckNvZGUgU3RhbmRhcmQgSUNVIGVycm9yIGNvZGUuIEl0cyBpbnB1dCB2YWx1ZSBt
dXN0CisgICAgICogICAgICAgICAgICAgICAgICBwYXNzIHRoZSBVX1NVQ0NFU1MoKSB0ZXN0LCBv
ciBlbHNlIHRoZSBmdW5jdGlvbiByZXR1cm5zCisgICAgICogICAgICAgICAgICAgICAgICBpbW1l
ZGlhdGVseS4gQ2hlY2sgZm9yIFVfRkFJTFVSRSgpIG9uIG91dHB1dCBvciB1c2Ugd2l0aAorICAg
ICAqICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hhaW5pbmcuIChTZWUgVXNlciBHdWlkZSBm
b3IgZGV0YWlscy4pCisgICAgICogQGRyYWZ0IElDVSA2MAorICAgICAqLworICAgIHZpcnR1YWwg
dm9pZAorICAgIG5vcm1hbGl6ZVVURjgodWludDMyX3Qgb3B0aW9ucywgU3RyaW5nUGllY2Ugc3Jj
LCBCeXRlU2luayAmc2luaywKKyAgICAgICAgICAgICAgICAgIEVkaXRzICplZGl0cywgVUVycm9y
Q29kZSAmZXJyb3JDb2RlKSBjb25zdDsKKwogICAgIC8qKgogICAgICAqIEFwcGVuZHMgdGhlIG5v
cm1hbGl6ZWQgZm9ybSBvZiB0aGUgc2Vjb25kIHN0cmluZyB0byB0aGUgZmlyc3Qgc3RyaW5nCiAg
ICAgICogKG1lcmdpbmcgdGhlbSBhdCB0aGUgYm91bmRhcnkpIGFuZCByZXR1cm5zIHRoZSBmaXJz
dCBzdHJpbmcuCkBAIC0yODAsNyArMzE0LDcgQEAgcHVibGljOgogICAgICAqCiAgICAgICogV2hl
biB1c2VkIG9uIGEgc3RhbmRhcmQgTkZDIE5vcm1hbGl6ZXIyIGluc3RhbmNlLAogICAgICAqIGl0
IHJldHVybnMgdGhlIERlY29tcG9zaXRpb25fTWFwcGluZyBvbmx5IGlmIHRoZSBEZWNvbXBvc2l0
aW9uX1R5cGUgKGR0KSBpcyBDYW5vbmljYWwgKENhbik7Ci0gICAgICogaW4gdGhpcyBjYXNlLCB0
aGUgcmVzdWx0IGNvbnRhaW5zIGVpdGhlciBvbmUgb3IgdHdvIGNvZGUgcG9pbnRzICg9MS4uNCBV
Q2hhcnMpLgorICAgICAqIGluIHRoaXMgY2FzZSwgdGhlIHJlc3VsdCBjb250YWlucyBlaXRoZXIg
b25lIG9yIHR3byBjb2RlIHBvaW50cyAoPTEuLjQgY2hhcjE2X3RzKS4KICAgICAgKgogICAgICAq
IFRoaXMgZnVuY3Rpb24gaXMgaW5kZXBlbmRlbnQgb2YgdGhlIG1vZGUgb2YgdGhlIE5vcm1hbGl6
ZXIyLgogICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgRkFMU0UuCkBA
IC0zMzgsNiArMzcyLDMwIEBAIHB1YmxpYzoKICAgICAgKi8KICAgICB2aXJ0dWFsIFVCb29sCiAg
ICAgaXNOb3JtYWxpemVkKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnMsIFVFcnJvckNvZGUgJmVycm9y
Q29kZSkgY29uc3QgPSAwOworICAgIC8qKgorICAgICAqIFRlc3RzIGlmIHRoZSBVVEYtOCBzdHJp
bmcgaXMgbm9ybWFsaXplZC4KKyAgICAgKiBJbnRlcm5hbGx5LCBpbiBjYXNlcyB3aGVyZSB0aGUg
cXVpY2tDaGVjaygpIG1ldGhvZCB3b3VsZCByZXR1cm4gIm1heWJlIgorICAgICAqICh3aGljaCBp
cyBvbmx5IHBvc3NpYmxlIGZvciB0aGUgdHdvIENPTVBPU0UgbW9kZXMpIHRoaXMgbWV0aG9kCisg
ICAgICogcmVzb2x2ZXMgdG8gInllcyIgb3IgIm5vIiB0byBwcm92aWRlIGEgZGVmaW5pdGl2ZSBy
ZXN1bHQsCisgICAgICogYXQgdGhlIGNvc3Qgb2YgZG9pbmcgbW9yZSB3b3JrIGluIHRob3NlIGNh
c2VzLgorICAgICAqCisgICAgICogVGhpcyB3b3JrcyBmb3IgYWxsIG5vcm1hbGl6YXRpb24gbW9k
ZXMsCisgICAgICogYnV0IGl0IGlzIGN1cnJlbnRseSBvcHRpbWl6ZWQgZm9yIFVURi04IG9ubHkg
Zm9yICJjb21wb3NlIiBtb2RlcywKKyAgICAgKiBzdWNoIGFzIGZvciBORkMsIE5GS0MsIGFuZCBO
RktDX0Nhc2Vmb2xkCisgICAgICogKFVOT1JNMl9DT01QT1NFIGFuZCBVTk9STTJfQ09NUE9TRV9D
T05USUdVT1VTKS4KKyAgICAgKiBGb3Igb3RoZXIgbW9kZXMgaXQgY3VycmVudGx5IGNvbnZlcnRz
IHRvIFVURi0xNiBhbmQgY2FsbHMgaXNOb3JtYWxpemVkKCkuCisgICAgICoKKyAgICAgKiBAcGFy
YW0gcyBVVEYtOCBpbnB1dCBzdHJpbmcKKyAgICAgKiBAcGFyYW0gZXJyb3JDb2RlIFN0YW5kYXJk
IElDVSBlcnJvciBjb2RlLiBJdHMgaW5wdXQgdmFsdWUgbXVzdAorICAgICAqICAgICAgICAgICAg
ICAgICAgcGFzcyB0aGUgVV9TVUNDRVNTKCkgdGVzdCwgb3IgZWxzZSB0aGUgZnVuY3Rpb24gcmV0
dXJucworICAgICAqICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlbHkuIENoZWNrIGZvciBVX0ZB
SUxVUkUoKSBvbiBvdXRwdXQgb3IgdXNlIHdpdGgKKyAgICAgKiAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uIGNoYWluaW5nLiAoU2VlIFVzZXIgR3VpZGUgZm9yIGRldGFpbHMuKQorICAgICAqIEBy
ZXR1cm4gVFJVRSBpZiBzIGlzIG5vcm1hbGl6ZWQKKyAgICAgKiBAZHJhZnQgSUNVIDYwCisgICAg
ICovCisgICAgdmlydHVhbCBVQm9vbAorICAgIGlzTm9ybWFsaXplZFVURjgoU3RyaW5nUGllY2Ug
cywgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKKwogCiAgICAgLyoqCiAgICAgICogVGVz
dHMgaWYgdGhlIHN0cmluZyBpcyBub3JtYWxpemVkLgpAQCAtNDc3LDcgKzUzNSwzNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nICYKICAgICBub3JtYWxpemUoY29uc3QgVW5p
Y29kZVN0cmluZyAmc3JjLAogICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nICZkZXN0LAotICAg
ICAgICAgICAgICBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OworICAgICAgICAgICAgICBV
RXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0IFVfT1ZFUlJJREU7CisKKyAgICAvKioKKyAgICAg
KiBOb3JtYWxpemVzIGEgVVRGLTggc3RyaW5nIGFuZCBvcHRpb25hbGx5IHJlY29yZHMgaG93IHNv
dXJjZSBzdWJzdHJpbmdzCisgICAgICogcmVsYXRlIHRvIGNoYW5nZWQgYW5kIHVuY2hhbmdlZCBy
ZXN1bHQgc3Vic3RyaW5ncy4KKyAgICAgKgorICAgICAqIEN1cnJlbnRseSBpbXBsZW1lbnRlZCBj
b21wbGV0ZWx5IG9ubHkgZm9yICJjb21wb3NlIiBtb2RlcywKKyAgICAgKiBzdWNoIGFzIGZvciBO
RkMsIE5GS0MsIGFuZCBORktDX0Nhc2Vmb2xkCisgICAgICogKFVOT1JNMl9DT01QT1NFIGFuZCBV
Tk9STTJfQ09NUE9TRV9DT05USUdVT1VTKS4KKyAgICAgKiBPdGhlcndpc2UgY3VycmVudGx5IGNv
bnZlcnRzIHRvICYgZnJvbSBVVEYtMTYgYW5kIGRvZXMgbm90IHN1cHBvcnQgZWRpdHMuCisgICAg
ICoKKyAgICAgKiBAcGFyYW0gb3B0aW9ucyAgIE9wdGlvbnMgYml0IHNldCwgdXN1YWxseSAwLiBT
ZWUgVV9PTUlUX1VOQ0hBTkdFRF9URVhUIGFuZCBVX0VESVRTX05PX1JFU0VULgorICAgICAqIEBw
YXJhbSBzcmMgICAgICAgU291cmNlIFVURi04IHN0cmluZy4KKyAgICAgKiBAcGFyYW0gc2luayAg
ICAgIEEgQnl0ZVNpbmsgdG8gd2hpY2ggdGhlIG5vcm1hbGl6ZWQgVVRGLTggcmVzdWx0IHN0cmlu
ZyBpcyB3cml0dGVuLgorICAgICAqICAgICAgICAgICAgICAgICAgc2luay5GbHVzaCgpIGlzIGNh
bGxlZCBhdCB0aGUgZW5kLgorICAgICAqIEBwYXJhbSBlZGl0cyAgICAgUmVjb3JkcyBlZGl0cyBm
b3IgaW5kZXggbWFwcGluZywgd29ya2luZyB3aXRoIHN0eWxlZCB0ZXh0LAorICAgICAqICAgICAg
ICAgICAgICAgICAgYW5kIGdldHRpbmcgb25seSBjaGFuZ2VzIChpZiBhbnkpLgorICAgICAqICAg
ICAgICAgICAgICAgICAgVGhlIEVkaXRzIGNvbnRlbnRzIGlzIHVuZGVmaW5lZCBpZiBhbnkgZXJy
b3Igb2NjdXJzLgorICAgICAqICAgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBjYWxscyBl
ZGl0cy0+cmVzZXQoKSBmaXJzdCB1bmxlc3MKKyAgICAgKiAgICAgICAgICAgICAgICAgIG9wdGlv
bnMgaW5jbHVkZXMgVV9FRElUU19OT19SRVNFVC4gZWRpdHMgY2FuIGJlIG51bGxwdHIuCisgICAg
ICogQHBhcmFtIGVycm9yQ29kZSBTdGFuZGFyZCBJQ1UgZXJyb3IgY29kZS4gSXRzIGlucHV0IHZh
bHVlIG11c3QKKyAgICAgKiAgICAgICAgICAgICAgICAgIHBhc3MgdGhlIFVfU1VDQ0VTUygpIHRl
c3QsIG9yIGVsc2UgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAgICAgKiAgICAgICAgICAgICAgICAg
IGltbWVkaWF0ZWx5LiBDaGVjayBmb3IgVV9GQUlMVVJFKCkgb24gb3V0cHV0IG9yIHVzZSB3aXRo
CisgICAgICogICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGFpbmluZy4gKFNlZSBVc2VyIEd1
aWRlIGZvciBkZXRhaWxzLikKKyAgICAgKiBAZHJhZnQgSUNVIDYwCisgICAgICovCisgICAgdmly
dHVhbCB2b2lkCisgICAgbm9ybWFsaXplVVRGOCh1aW50MzJfdCBvcHRpb25zLCBTdHJpbmdQaWVj
ZSBzcmMsIEJ5dGVTaW5rICZzaW5rLAorICAgICAgICAgICAgICAgICAgRWRpdHMgKmVkaXRzLCBV
RXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0IFVfT1ZFUlJJREU7CisKICAgICAvKioKICAgICAg
KiBBcHBlbmRzIHRoZSBub3JtYWxpemVkIGZvcm0gb2YgdGhlIHNlY29uZCBzdHJpbmcgdG8gdGhl
IGZpcnN0IHN0cmluZwogICAgICAqIChtZXJnaW5nIHRoZW0gYXQgdGhlIGJvdW5kYXJ5KSBhbmQg
cmV0dXJucyB0aGUgZmlyc3Qgc3RyaW5nLgpAQCAtNDk1LDcgKzU4Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcgJgogICAgIG5vcm1hbGl6ZVNlY29uZEFuZEFwcGVuZChV
bmljb2RlU3RyaW5nICZmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VW5pY29kZVN0cmluZyAmc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJy
b3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
RXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0IFVfT1ZFUlJJREU7CiAgICAgLyoqCiAgICAgICog
QXBwZW5kcyB0aGUgc2Vjb25kIHN0cmluZyB0byB0aGUgZmlyc3Qgc3RyaW5nCiAgICAgICogKG1l
cmdpbmcgdGhlbSBhdCB0aGUgYm91bmRhcnkpIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBzdHJpbmcu
CkBAIC01MTMsNyArNjAwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyAm
CiAgICAgYXBwZW5kKFVuaWNvZGVTdHJpbmcgJmZpcnN0LAogICAgICAgICAgICBjb25zdCBVbmlj
b2RlU3RyaW5nICZzZWNvbmQsCi0gICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29u
c3Q7CisgICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3QgVV9PVkVSUklERTsK
IAogICAgIC8qKgogICAgICAqIEdldHMgdGhlIGRlY29tcG9zaXRpb24gbWFwcGluZyBvZiBjLgpA
QCAtNTI3LDcgKzYxNCw3IEBAIHB1YmxpYzoKICAgICAgKiBAc3RhYmxlIElDVSA0LjYKICAgICAg
Ki8KICAgICB2aXJ0dWFsIFVCb29sCi0gICAgZ2V0RGVjb21wb3NpdGlvbihVQ2hhcjMyIGMsIFVu
aWNvZGVTdHJpbmcgJmRlY29tcG9zaXRpb24pIGNvbnN0OworICAgIGdldERlY29tcG9zaXRpb24o
VUNoYXIzMiBjLCBVbmljb2RlU3RyaW5nICZkZWNvbXBvc2l0aW9uKSBjb25zdCBVX09WRVJSSURF
OwogCiAgICAgLyoqCiAgICAgICogR2V0cyB0aGUgcmF3IGRlY29tcG9zaXRpb24gbWFwcGluZyBv
ZiBjLgpAQCAtNTQxLDcgKzYyOCw3IEBAIHB1YmxpYzoKICAgICAgKiBAc3RhYmxlIElDVSA0OQog
ICAgICAqLwogICAgIHZpcnR1YWwgVUJvb2wKLSAgICBnZXRSYXdEZWNvbXBvc2l0aW9uKFVDaGFy
MzIgYywgVW5pY29kZVN0cmluZyAmZGVjb21wb3NpdGlvbikgY29uc3Q7CisgICAgZ2V0UmF3RGVj
b21wb3NpdGlvbihVQ2hhcjMyIGMsIFVuaWNvZGVTdHJpbmcgJmRlY29tcG9zaXRpb24pIGNvbnN0
IFVfT1ZFUlJJREU7CiAKICAgICAvKioKICAgICAgKiBQZXJmb3JtcyBwYWlyd2lzZSBjb21wb3Np
dGlvbiBvZiBhICYgYiBhbmQgcmV0dXJucyB0aGUgY29tcG9zaXRlIGlmIHRoZXJlIGlzIG9uZS4K
QEAgLTU1NCw3ICs2NDEsNyBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1UgNDkKICAgICAg
Ki8KICAgICB2aXJ0dWFsIFVDaGFyMzIKLSAgICBjb21wb3NlUGFpcihVQ2hhcjMyIGEsIFVDaGFy
MzIgYikgY29uc3Q7CisgICAgY29tcG9zZVBhaXIoVUNoYXIzMiBhLCBVQ2hhcjMyIGIpIGNvbnN0
IFVfT1ZFUlJJREU7CiAKICAgICAvKioKICAgICAgKiBHZXRzIHRoZSBjb21iaW5pbmcgY2xhc3Mg
b2YgYy4KQEAgLTU2NSw3ICs2NTIsNyBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1UgNDkK
ICAgICAgKi8KICAgICB2aXJ0dWFsIHVpbnQ4X3QKLSAgICBnZXRDb21iaW5pbmdDbGFzcyhVQ2hh
cjMyIGMpIGNvbnN0OworICAgIGdldENvbWJpbmluZ0NsYXNzKFVDaGFyMzIgYykgY29uc3QgVV9P
VkVSUklERTsKIAogICAgIC8qKgogICAgICAqIFRlc3RzIGlmIHRoZSBzdHJpbmcgaXMgbm9ybWFs
aXplZC4KQEAgLTU3OSw3ICs2NjYsMzAgQEAgcHVibGljOgogICAgICAqIEBzdGFibGUgSUNVIDQu
NAogICAgICAqLwogICAgIHZpcnR1YWwgVUJvb2wKLSAgICBpc05vcm1hbGl6ZWQoY29uc3QgVW5p
Y29kZVN0cmluZyAmcywgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKKyAgICBpc05vcm1h
bGl6ZWQoY29uc3QgVW5pY29kZVN0cmluZyAmcywgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25z
dCBVX09WRVJSSURFOworICAgIC8qKgorICAgICAqIFRlc3RzIGlmIHRoZSBVVEYtOCBzdHJpbmcg
aXMgbm9ybWFsaXplZC4KKyAgICAgKiBJbnRlcm5hbGx5LCBpbiBjYXNlcyB3aGVyZSB0aGUgcXVp
Y2tDaGVjaygpIG1ldGhvZCB3b3VsZCByZXR1cm4gIm1heWJlIgorICAgICAqICh3aGljaCBpcyBv
bmx5IHBvc3NpYmxlIGZvciB0aGUgdHdvIENPTVBPU0UgbW9kZXMpIHRoaXMgbWV0aG9kCisgICAg
ICogcmVzb2x2ZXMgdG8gInllcyIgb3IgIm5vIiB0byBwcm92aWRlIGEgZGVmaW5pdGl2ZSByZXN1
bHQsCisgICAgICogYXQgdGhlIGNvc3Qgb2YgZG9pbmcgbW9yZSB3b3JrIGluIHRob3NlIGNhc2Vz
LgorICAgICAqCisgICAgICogVGhpcyB3b3JrcyBmb3IgYWxsIG5vcm1hbGl6YXRpb24gbW9kZXMs
CisgICAgICogYnV0IGl0IGlzIGN1cnJlbnRseSBvcHRpbWl6ZWQgZm9yIFVURi04IG9ubHkgZm9y
ICJjb21wb3NlIiBtb2RlcywKKyAgICAgKiBzdWNoIGFzIGZvciBORkMsIE5GS0MsIGFuZCBORktD
X0Nhc2Vmb2xkCisgICAgICogKFVOT1JNMl9DT01QT1NFIGFuZCBVTk9STTJfQ09NUE9TRV9DT05U
SUdVT1VTKS4KKyAgICAgKiBGb3Igb3RoZXIgbW9kZXMgaXQgY3VycmVudGx5IGNvbnZlcnRzIHRv
IFVURi0xNiBhbmQgY2FsbHMgaXNOb3JtYWxpemVkKCkuCisgICAgICoKKyAgICAgKiBAcGFyYW0g
cyBVVEYtOCBpbnB1dCBzdHJpbmcKKyAgICAgKiBAcGFyYW0gZXJyb3JDb2RlIFN0YW5kYXJkIElD
VSBlcnJvciBjb2RlLiBJdHMgaW5wdXQgdmFsdWUgbXVzdAorICAgICAqICAgICAgICAgICAgICAg
ICAgcGFzcyB0aGUgVV9TVUNDRVNTKCkgdGVzdCwgb3IgZWxzZSB0aGUgZnVuY3Rpb24gcmV0dXJu
cworICAgICAqICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlbHkuIENoZWNrIGZvciBVX0ZBSUxV
UkUoKSBvbiBvdXRwdXQgb3IgdXNlIHdpdGgKKyAgICAgKiAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIGNoYWluaW5nLiAoU2VlIFVzZXIgR3VpZGUgZm9yIGRldGFpbHMuKQorICAgICAqIEByZXR1
cm4gVFJVRSBpZiBzIGlzIG5vcm1hbGl6ZWQKKyAgICAgKiBAZHJhZnQgSUNVIDYwCisgICAgICov
CisgICAgdmlydHVhbCBVQm9vbAorICAgIGlzTm9ybWFsaXplZFVURjgoU3RyaW5nUGllY2Ugcywg
VUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdCBVX09WRVJSSURFOwogICAgIC8qKgogICAgICAq
IFRlc3RzIGlmIHRoZSBzdHJpbmcgaXMgbm9ybWFsaXplZC4KICAgICAgKiBGb3IgZGV0YWlscyBz
ZWUgdGhlIE5vcm1hbGl6ZXIyIGJhc2UgY2xhc3MgZG9jdW1lbnRhdGlvbi4KQEAgLTU5Miw3ICs3
MDIsNyBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAgICovCiAgICAgdmly
dHVhbCBVTm9ybWFsaXphdGlvbkNoZWNrUmVzdWx0Ci0gICAgcXVpY2tDaGVjayhjb25zdCBVbmlj
b2RlU3RyaW5nICZzLCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OworICAgIHF1aWNrQ2hl
Y2soY29uc3QgVW5pY29kZVN0cmluZyAmcywgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdCBV
X09WRVJSSURFOwogICAgIC8qKgogICAgICAqIFJldHVybnMgdGhlIGVuZCBvZiB0aGUgbm9ybWFs
aXplZCBzdWJzdHJpbmcgb2YgdGhlIGlucHV0IHN0cmluZy4KICAgICAgKiBGb3IgZGV0YWlscyBz
ZWUgdGhlIE5vcm1hbGl6ZXIyIGJhc2UgY2xhc3MgZG9jdW1lbnRhdGlvbi4KQEAgLTYwNSw3ICs3
MTUsNyBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAgICovCiAgICAgdmly
dHVhbCBpbnQzMl90Ci0gICAgc3BhblF1aWNrQ2hlY2tZZXMoY29uc3QgVW5pY29kZVN0cmluZyAm
cywgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKKyAgICBzcGFuUXVpY2tDaGVja1llcyhj
b25zdCBVbmljb2RlU3RyaW5nICZzLCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0IFVfT1ZF
UlJJREU7CiAKICAgICAvKioKICAgICAgKiBUZXN0cyBpZiB0aGUgY2hhcmFjdGVyIGFsd2F5cyBo
YXMgYSBub3JtYWxpemF0aW9uIGJvdW5kYXJ5IGJlZm9yZSBpdCwKQEAgLTYxNSw3ICs3MjUsNyBA
QCBwdWJsaWM6CiAgICAgICogQHJldHVybiBUUlVFIGlmIGMgaGFzIGEgbm9ybWFsaXphdGlvbiBi
b3VuZGFyeSBiZWZvcmUgaXQKICAgICAgKiBAc3RhYmxlIElDVSA0LjQKICAgICAgKi8KLSAgICB2
aXJ0dWFsIFVCb29sIGhhc0JvdW5kYXJ5QmVmb3JlKFVDaGFyMzIgYykgY29uc3Q7CisgICAgdmly
dHVhbCBVQm9vbCBoYXNCb3VuZGFyeUJlZm9yZShVQ2hhcjMyIGMpIGNvbnN0IFVfT1ZFUlJJREU7
CiAKICAgICAvKioKICAgICAgKiBUZXN0cyBpZiB0aGUgY2hhcmFjdGVyIGFsd2F5cyBoYXMgYSBu
b3JtYWxpemF0aW9uIGJvdW5kYXJ5IGFmdGVyIGl0LApAQCAtNjI1LDcgKzczNSw3IEBAIHB1Ymxp
YzoKICAgICAgKiBAcmV0dXJuIFRSVUUgaWYgYyBoYXMgYSBub3JtYWxpemF0aW9uIGJvdW5kYXJ5
IGFmdGVyIGl0CiAgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAgICovCi0gICAgdmlydHVhbCBV
Qm9vbCBoYXNCb3VuZGFyeUFmdGVyKFVDaGFyMzIgYykgY29uc3Q7CisgICAgdmlydHVhbCBVQm9v
bCBoYXNCb3VuZGFyeUFmdGVyKFVDaGFyMzIgYykgY29uc3QgVV9PVkVSUklERTsKIAogICAgIC8q
KgogICAgICAqIFRlc3RzIGlmIHRoZSBjaGFyYWN0ZXIgaXMgbm9ybWFsaXphdGlvbi1pbmVydC4K
QEAgLTYzNCw3ICs3NDQsNyBAQCBwdWJsaWM6CiAgICAgICogQHJldHVybiBUUlVFIGlmIGMgaXMg
bm9ybWFsaXphdGlvbi1pbmVydAogICAgICAqIEBzdGFibGUgSUNVIDQuNAogICAgICAqLwotICAg
IHZpcnR1YWwgVUJvb2wgaXNJbmVydChVQ2hhcjMyIGMpIGNvbnN0OworICAgIHZpcnR1YWwgVUJv
b2wgaXNJbmVydChVQ2hhcjMyIGMpIGNvbnN0IFVfT1ZFUlJJREU7CiBwcml2YXRlOgogICAgIFVu
aWNvZGVTdHJpbmcgJgogICAgIG5vcm1hbGl6ZShjb25zdCBVbmljb2RlU3RyaW5nICZzcmMsCkBA
IC02NDIsNiArNzUyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgIFVTZXRTcGFuQ29uZGl0
aW9uIHNwYW5Db25kaXRpb24sCiAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSkg
Y29uc3Q7CiAKKyAgICB2b2lkCisgICAgbm9ybWFsaXplVVRGOCh1aW50MzJfdCBvcHRpb25zLCBj
b25zdCBjaGFyICpzcmMsIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgQnl0ZVNp
bmsgJnNpbmssIEVkaXRzICplZGl0cywKKyAgICAgICAgICAgICAgICAgIFVTZXRTcGFuQ29uZGl0
aW9uIHNwYW5Db25kaXRpb24sCisgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZlcnJvckNv
ZGUpIGNvbnN0OworCiAgICAgVW5pY29kZVN0cmluZyAmCiAgICAgbm9ybWFsaXplU2Vjb25kQW5k
QXBwZW5kKFVuaWNvZGVTdHJpbmcgJmZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBVbmljb2RlU3RyaW5nICZzZWNvbmQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL25vcm1senIuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbm9ybWx6ci5oCmlu
ZGV4IDA2Y2JmZDQ3N2U2NzM1MTQ4ZGIxZTYxOGIwYTJlMDQ1NWMxZDZkMjMuLjAxNDEwNThmYjAw
MTRhMTkyOGFjMmIwOTQ1NDhlOWM0NTZmMWViNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvbm9ybWx6ci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbm9ybWx6ci5o
CkBAIC0xLDcgKzEsOSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5k
IG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENPUFlSSUdIVDoKLSAqIENv
cHlyaWdodCAoYykgMTk5Ni0yMDExLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENv
cnBvcmF0aW9uIGFuZAorICogQ29weXJpZ2h0IChjKSAxOTk2LTIwMTUsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCiAgKiBvdGhlcnMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICAqLwpAQCAtMjYsMTQgKzI4LDE2IEBACiAKIFVfTkFN
RVNQQUNFX0JFR0lOCiAvKioKLSAqIFRoZSBOb3JtYWxpemVyIGNsYXNzIHN1cHBvcnRzIHRoZSBz
dGFuZGFyZCBub3JtYWxpemF0aW9uIGZvcm1zIGRlc2NyaWJlZCBpbgotICogPGEgaHJlZj0iaHR0
cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxNS8iIHRhcmdldD0idW5pY29k
ZSI+Ci0gKiBVbmljb2RlIFN0YW5kYXJkIEFubmV4ICMxNTogVW5pY29kZSBOb3JtYWxpemF0aW9u
IEZvcm1zPC9hPi4KKyAqIE9sZCBVbmljb2RlIG5vcm1hbGl6YXRpb24gQVBJLgogICoKLSAqIE5v
dGU6IFRoaXMgQVBJIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSBOb3JtYWxpemVyMiBjbGFzcyBh
bmQgaXMgb25seSBhdmFpbGFibGUKKyAqIFRoaXMgQVBJIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRo
ZSBOb3JtYWxpemVyMiBjbGFzcyBhbmQgaXMgb25seSBhdmFpbGFibGUKICAqIGZvciBiYWNrd2Fy
ZCBjb21wYXRpYmlsaXR5LiBUaGlzIGNsYXNzIHNpbXBseSBkZWxlZ2F0ZXMgdG8gdGhlIE5vcm1h
bGl6ZXIyIGNsYXNzLgogICogVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogVGhlIG5ldyBBUEkgZG9l
cyBub3QgcHJvdmlkZSBhIHJlcGxhY2VtZW50IGZvciBOb3JtYWxpemVyOjpjb21wYXJlKCkuCiAg
KgorICogVGhlIE5vcm1hbGl6ZXIgY2xhc3Mgc3VwcG9ydHMgdGhlIHN0YW5kYXJkIG5vcm1hbGl6
YXRpb24gZm9ybXMgZGVzY3JpYmVkIGluCisgKiA8YSBocmVmPSJodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL3VuaWNvZGUvcmVwb3J0cy90cjE1LyIgdGFyZ2V0PSJ1bmljb2RlIj4KKyAqIFVuaWNvZGUg
U3RhbmRhcmQgQW5uZXggIzE1OiBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybXM8L2E+LgorICoK
ICAqIFRoZSBOb3JtYWxpemVyIGNsYXNzIGNvbnNpc3RzIG9mIHR3byBwYXJ0czoKICAqIC0gc3Rh
dGljIGZ1bmN0aW9ucyB0aGF0IG5vcm1hbGl6ZSBzdHJpbmdzIG9yIHRlc3QgaWYgc3RyaW5ncyBh
cmUgbm9ybWFsaXplZAogICogLSBhIE5vcm1hbGl6ZXIgb2JqZWN0IGlzIGFuIGl0ZXJhdG9yIHRo
YXQgdGFrZXMgYW55IGtpbmQgb2YgdGV4dCBhbmQKQEAgLTEyOSwxMCArMTMzLDExIEBAIFVfTkFN
RVNQQUNFX0JFR0lOCiAgKi8KIGNsYXNzIFVfQ09NTU9OX0FQSSBOb3JtYWxpemVyIDogcHVibGlj
IFVPYmplY3QgewogcHVibGljOgorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgLyoq
CiAgICAqIElmIERPTkUgaXMgcmV0dXJuZWQgZnJvbSBhbiBpdGVyYXRpb24gZnVuY3Rpb24gdGhh
dCByZXR1cm5zIGEgY29kZSBwb2ludCwKICAgICogdGhlbiB0aGVyZSBhcmUgbm8gbW9yZSBub3Jt
YWxpemF0aW9uIHJlc3VsdHMgYXZhaWxhYmxlLgotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICog
QGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgZW51
bSB7CiAgICAgICBET05FPTB4ZmZmZgpAQCAtMTQ4LDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICog
ICAgICAgICAgICAgIHdpbGwgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgog
ICAgKgogICAgKiBAcGFyYW0gbW9kZSAgVGhlIG5vcm1hbGl6YXRpb24gbW9kZS4KLSAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5z
dGVhZC4KICAgICovCiAgIE5vcm1hbGl6ZXIoY29uc3QgVW5pY29kZVN0cmluZyYgc3RyLCBVTm9y
bWFsaXphdGlvbk1vZGUgbW9kZSk7CiAKQEAgLTE2MSw5ICsxNjYsOSBAQCBwdWJsaWM6CiAgICAq
CiAgICAqIEBwYXJhbSBsZW5ndGggTGVuZ3RoIG9mIHRoZSBzdHJpbmcsIG9yIC0xIGlmIE5VTC10
ZXJtaW5hdGVkLgogICAgKiBAcGFyYW0gbW9kZSAgVGhlIG5vcm1hbGl6YXRpb24gbW9kZS4KLSAg
ICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXpl
cjIgaW5zdGVhZC4KICAgICovCi0gIE5vcm1hbGl6ZXIoY29uc3QgVUNoYXIqIHN0ciwgaW50MzJf
dCBsZW5ndGgsIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlKTsKKyAgTm9ybWFsaXplcihDb25zdENo
YXIxNlB0ciBzdHIsIGludDMyX3QgbGVuZ3RoLCBVTm9ybWFsaXphdGlvbk1vZGUgbW9kZSk7CiAK
ICAgLyoqCiAgICAqIENyZWF0ZXMgYSBuZXcgPGNvZGU+Tm9ybWFsaXplcjwvY29kZT4gb2JqZWN0
IGZvciBpdGVyYXRpbmcgb3ZlciB0aGUKQEAgLTE3MywyMCArMTc4LDIxIEBAIHB1YmxpYzoKICAg
ICogICAgICAgICAgICAgIHdpbGwgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5n
LgogICAgKgogICAgKiBAcGFyYW0gbW9kZSAgVGhlIG5vcm1hbGl6YXRpb24gbW9kZS4KLSAgICog
QHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIg
aW5zdGVhZC4KICAgICovCiAgIE5vcm1hbGl6ZXIoY29uc3QgQ2hhcmFjdGVySXRlcmF0b3ImIGl0
ZXIsIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlKTsKKyNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FU
RURfQVBJICovCiAKICAgLyoqCiAgICAqIENvcHkgY29uc3RydWN0b3IuCiAgICAqIEBwYXJhbSBj
b3B5IFRoZSBvYmplY3QgdG8gYmUgY29waWVkLgotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICog
QGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgTm9y
bWFsaXplcihjb25zdCBOb3JtYWxpemVyJiBjb3B5KTsKIAogICAvKioKICAgICogRGVzdHJ1Y3Rv
cgotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3Jt
YWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgdmlydHVhbCB+Tm9ybWFsaXplcigpOwogCkBAIC0x
OTUsNiArMjAxLDcgQEAgcHVibGljOgogICAvLyBTdGF0aWMgdXRpbGl0eSBtZXRob2RzCiAgIC8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAvKioK
ICAgICogTm9ybWFsaXplcyBhIDxjb2RlPlVuaWNvZGVTdHJpbmc8L2NvZGU+IGFjY29yZGluZyB0
byB0aGUgc3BlY2lmaWVkIG5vcm1hbGl6YXRpb24gbW9kZS4KICAgICogVGhpcyBpcyBhIHdyYXBw
ZXIgZm9yIHVub3JtX25vcm1hbGl6ZSgpLCB1c2luZyBVbmljb2RlU3RyaW5nJ3MuCkBAIC0yMDcs
NyArMjE0LDcgQEAgcHVibGljOgogICAgKiBAcGFyYW0gb3B0aW9ucyAgIHRoZSBvcHRpb25hbCBm
ZWF0dXJlcyB0byBiZSBlbmFibGVkICgwIGZvciBubyBvcHRpb25zKQogICAgKiBAcGFyYW0gcmVz
dWx0ICAgIFRoZSBub3JtYWxpemVkIHN0cmluZyAob24gb3V0cHV0KS4KICAgICogQHBhcmFtIHN0
YXR1cyAgICBUaGUgZXJyb3IgY29kZS4KLSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXBy
ZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIHN0YXRpYyB2
b2lkIFVfRVhQT1JUMiBub3JtYWxpemUoY29uc3QgVW5pY29kZVN0cmluZyYgc291cmNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgVU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUsIGludDMyX3Qgb3B0
aW9ucywKQEAgLTIyOSw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAqIEBwYXJhbSBvcHRpb25zICAg
dGhlIG9wdGlvbmFsIGZlYXR1cmVzIHRvIGJlIGVuYWJsZWQgKDAgZm9yIG5vIG9wdGlvbnMpCiAg
ICAqIEBwYXJhbSByZXN1bHQgICAgVGhlIGNvbXBvc2VkIHN0cmluZyAob24gb3V0cHV0KS4KICAg
ICogQHBhcmFtIHN0YXR1cyAgICBUaGUgZXJyb3IgY29kZS4KLSAgICogQHN0YWJsZSBJQ1UgMi4w
CisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICov
CiAgIHN0YXRpYyB2b2lkIFVfRVhQT1JUMiBjb21wb3NlKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNv
dXJjZSwKICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBjb21wYXQsIGludDMyX3Qgb3B0aW9u
cywKQEAgLTI1MSw3ICsyNTgsNyBAQCBwdWJsaWM6CiAgICAqIEBwYXJhbSBvcHRpb25zICAgdGhl
IG9wdGlvbmFsIGZlYXR1cmVzIHRvIGJlIGVuYWJsZWQgKDAgZm9yIG5vIG9wdGlvbnMpCiAgICAq
IEBwYXJhbSByZXN1bHQgICAgVGhlIGRlY29tcG9zZWQgc3RyaW5nIChvbiBvdXRwdXQpLgogICAg
KiBAcGFyYW0gc3RhdHVzICAgIFRoZSBlcnJvciBjb2RlLgotICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8K
ICAgc3RhdGljIHZvaWQgVV9FWFBPUlQyIGRlY29tcG9zZShjb25zdCBVbmljb2RlU3RyaW5nJiBz
b3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBjb21wYXQsIGludDMyX3Qgb3B0
aW9ucywKQEAgLTI3Niw3ICsyODMsNyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gVU5PUk1fWUVT
LCBVTk9STV9OTyBvciBVTk9STV9NQVlCRQogICAgKgogICAgKiBAc2VlIGlzTm9ybWFsaXplZAot
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxp
emVyMiBpbnN0ZWFkLgogICAgKi8KICAgc3RhdGljIGlubGluZSBVTm9ybWFsaXphdGlvbkNoZWNr
UmVzdWx0CiAgIHF1aWNrQ2hlY2soY29uc3QgVW5pY29kZVN0cmluZyAmc291cmNlLCBVTm9ybWFs
aXphdGlvbk1vZGUgbW9kZSwgVUVycm9yQ29kZSAmc3RhdHVzKTsKQEAgLTI5Miw3ICsyOTksNyBA
QCBwdWJsaWM6CiAgICAqIEByZXR1cm4gVU5PUk1fWUVTLCBVTk9STV9OTyBvciBVTk9STV9NQVlC
RQogICAgKgogICAgKiBAc2VlIGlzTm9ybWFsaXplZAotICAgKiBAc3RhYmxlIElDVSAyLjYKKyAg
ICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAg
c3RhdGljIFVOb3JtYWxpemF0aW9uQ2hlY2tSZXN1bHQKICAgcXVpY2tDaGVjayhjb25zdCBVbmlj
b2RlU3RyaW5nICZzb3VyY2UsIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBpbnQzMl90IG9wdGlv
bnMsIFVFcnJvckNvZGUgJnN0YXR1cyk7CkBAIC0zMTUsNyArMzIyLDcgQEAgcHVibGljOgogICAg
KiAgICAgICAgICJtb2RlIiBub3JtYWxpemF0aW9uIGZvcm0uCiAgICAqCiAgICAqIEBzZWUgcXVp
Y2tDaGVjawotICAgKiBAc3RhYmxlIElDVSAyLjIKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVz
ZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgc3RhdGljIGlubGluZSBVQm9vbAogICBp
c05vcm1hbGl6ZWQoY29uc3QgVW5pY29kZVN0cmluZyAmc3JjLCBVTm9ybWFsaXphdGlvbk1vZGUg
bW9kZSwgVUVycm9yQ29kZSAmZXJyb3JDb2RlKTsKQEAgLTMzMyw3ICszNDAsNyBAQCBwdWJsaWM6
CiAgICAqICAgICAgICAgIm1vZGUiIG5vcm1hbGl6YXRpb24gZm9ybS4KICAgICoKICAgICogQHNl
ZSBxdWlja0NoZWNrCi0gICAqIEBzdGFibGUgSUNVIDIuNgorICAgKiBAZGVwcmVjYXRlZCBJQ1Ug
NTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICBzdGF0aWMgVUJvb2wKICAgaXNO
b3JtYWxpemVkKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNyYywgVU5vcm1hbGl6YXRpb25Nb2RlIG1v
ZGUsIGludDMyX3Qgb3B0aW9ucywgVUVycm9yQ29kZSAmZXJyb3JDb2RlKTsKQEAgLTM2NSwxMyAr
MzcyLDE0IEBAIHB1YmxpYzoKICAgICogQHNlZSB1bm9ybV9uZXh0CiAgICAqIEBzZWUgdW5vcm1f
cHJldmlvdXMKICAgICoKLSAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAqIEBkZXByZWNhdGVkIElD
VSA1NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIHN0YXRpYyBVbmljb2RlU3Ry
aW5nICYKICAgVV9FWFBPUlQyIGNvbmNhdGVuYXRlKGNvbnN0IFVuaWNvZGVTdHJpbmcgJmxlZnQs
IGNvbnN0IFVuaWNvZGVTdHJpbmcgJnJpZ2h0LAogICAgICAgICAgICAgICBVbmljb2RlU3RyaW5n
ICZyZXN1bHQsCiAgICAgICAgICAgICAgIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBpbnQzMl90
IG9wdGlvbnMsCiAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CisjZW5kaWYg
IC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogCiAgIC8qKgogICAgKiBDb21wYXJlIHR3byBz
dHJpbmdzIGZvciBjYW5vbmljYWwgZXF1aXZhbGVuY2UuCkBAIC00NDIsNiArNDUwLDcgQEAgcHVi
bGljOgogICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMsCiAgICAgICAgICAgVUVycm9yQ29kZSAm
ZXJyb3JDb2RlKTsKIAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgIC8vIEl0ZXJhdGlvbiBBUEkKICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00
NTIsNyArNDYxLDcgQEAgcHVibGljOgogICAgKiBUaGUgZ2V0SW5kZXgoKSBpcyBub3QgY2hhbmdl
ZC4KICAgICoKICAgICogQHJldHVybiB0aGUgY3VycmVudCBub3JtYWxpemVkIGNvZGUgcG9pbnQK
LSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFs
aXplcjIgaW5zdGVhZC4KICAgICovCiAgIFVDaGFyMzIgICAgICAgICAgICAgIGN1cnJlbnQodm9p
ZCk7CiAKQEAgLTQ2Miw3ICs0NzEsNyBAQCBwdWJsaWM6CiAgICAqIChQb3N0LWluY3JlbWVudCBz
ZW1hbnRpY3MuKQogICAgKgogICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBub3JtYWxpemVkIGNvZGUg
cG9pbnQKLSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2Ug
Tm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIFVDaGFyMzIgICAgICAgICAgICAgIGZpcnN0
KHZvaWQpOwogCkBAIC00NzIsNyArNDgxLDcgQEAgcHVibGljOgogICAgKiAoUHJlLWRlY3JlbWVu
dCBzZW1hbnRpY3MuKQogICAgKgogICAgKiBAcmV0dXJuIHRoZSBsYXN0IG5vcm1hbGl6ZWQgY29k
ZSBwb2ludAotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVz
ZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgVUNoYXIzMiAgICAgICAgICAgICAgbGFz
dCh2b2lkKTsKIApAQCAtNDg4LDcgKzQ5Nyw3IEBAIHB1YmxpYzoKICAgICogVGhlIEMgQVBJIHVu
b3JtX25leHQoKSBpcyBtb3JlIGVmZmljaWVudCBhbmQgZG9lcyBub3QgaGF2ZSB0aGlzIGFtYmln
dWl0eS4KICAgICoKICAgICogQHJldHVybiB0aGUgbmV4dCBub3JtYWxpemVkIGNvZGUgcG9pbnQK
LSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFs
aXplcjIgaW5zdGVhZC4KICAgICovCiAgIFVDaGFyMzIgICAgICAgICAgICAgIG5leHQodm9pZCk7
CiAKQEAgLTUwNCw3ICs1MTMsNyBAQCBwdWJsaWM6CiAgICAqIFRoZSBDIEFQSSB1bm9ybV9wcmV2
aW91cygpIGlzIG1vcmUgZWZmaWNpZW50IGFuZCBkb2VzIG5vdCBoYXZlIHRoaXMgYW1iaWd1aXR5
LgogICAgKgogICAgKiBAcmV0dXJuIHRoZSBwcmV2aW91cyBub3JtYWxpemVkIGNvZGUgcG9pbnQK
LSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFs
aXplcjIgaW5zdGVhZC4KICAgICovCiAgIFVDaGFyMzIgICAgICAgICAgICAgIHByZXZpb3VzKHZv
aWQpOwogCkBAIC01MTUsMTQgKzUyNCwxNCBAQCBwdWJsaWM6CiAgICAqIHNwZWNpZmllZCBoZXJl
LgogICAgKgogICAgKiBAcGFyYW0gaW5kZXggdGhlIGRlc2lyZWQgaW5kZXggaW4gdGhlIGlucHV0
IHRleHQuCi0gICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNl
IE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICB2b2lkICAgICAgICAgICAgICAgICBzZXRJ
bmRleE9ubHkoaW50MzJfdCBpbmRleCk7CiAKICAgLyoqCiAgICAqIFJlc2V0IHRoZSBpbmRleCB0
byB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0LgogICAgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8g
c2V0SW5kZXhPbmx5KHN0YXJ0SW5kZXgpKS4KLSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBk
ZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIHZvaWQg
ICAgICAgICAgICAgICAgcmVzZXQodm9pZCk7CiAKQEAgLTUzOCw3ICs1NDcsNyBAQCBwdWJsaWM6
CiAgICAqIHdhcyByZXR1cm5lZCBmcm9tIHdpdGggcHJldmlvdXMoKS4KICAgICoKICAgICogQHJl
dHVybiB0aGUgY3VycmVudCBpbmRleCBpbiB0aGUgaW5wdXQgdGV4dAotICAgKiBAc3RhYmxlIElD
VSAyLjAKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgog
ICAgKi8KICAgaW50MzJfdCAgICAgICAgICAgIGdldEluZGV4KHZvaWQpIGNvbnN0OwogCkBAIC01
NDgsNyArNTU3LDcgQEAgcHVibGljOgogICAgKiBvdmVyIHdoaWNoIHRoaXMgPGNvZGU+Tm9ybWFs
aXplcjwvY29kZT4gaXMgaXRlcmF0aW5nLgogICAgKgogICAgKiBAcmV0dXJuIHRoZSBzbWFsbGVz
dCBpbmRleCBpbiB0aGUgaW5wdXQgdGV4dCB3aGVyZSB0aGUgTm9ybWFsaXplciBvcGVyYXRlcwot
ICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxp
emVyMiBpbnN0ZWFkLgogICAgKi8KICAgaW50MzJfdCAgICAgICAgICAgIHN0YXJ0SW5kZXgodm9p
ZCkgY29uc3Q7CiAKQEAgLTU2MCw3ICs1NjksNyBAQCBwdWJsaWM6CiAgICAqIGJlZm9yZSB0aGlz
IGluZGV4LgogICAgKgogICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBpbmRleCBpbiB0aGUgaW5wdXQg
dGV4dCB3aGVyZSB0aGUgTm9ybWFsaXplciBkb2VzIG5vdCBvcGVyYXRlCi0gICAqIEBzdGFibGUg
SUNVIDIuMAorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQu
CiAgICAqLwogICBpbnQzMl90ICAgICAgICAgICAgZW5kSW5kZXgodm9pZCkgY29uc3Q7CiAKQEAg
LTU3MCw3ICs1NzksNyBAQCBwdWJsaWM6CiAgICAqCiAgICAqIEBwYXJhbSB0aGF0IGEgTm9ybWFs
aXplciBvYmplY3QgdG8gY29tcGFyZSB0aGlzIG9uZSB0bwogICAgKiBAcmV0dXJuIGNvbXBhcmlz
b24gcmVzdWx0Ci0gICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYg
VXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICBVQm9vbCAgICAgICAgb3BlcmF0b3I9
PShjb25zdCBOb3JtYWxpemVyJiB0aGF0KSBjb25zdDsKIApAQCAtNTgwLDcgKzU4OSw3IEBAIHB1
YmxpYzoKICAgICoKICAgICogQHBhcmFtIHRoYXQgYSBOb3JtYWxpemVyIG9iamVjdCB0byBjb21w
YXJlIHRoaXMgb25lIHRvCiAgICAqIEByZXR1cm4gY29tcGFyaXNvbiByZXN1bHQKLSAgICogQHN0
YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5z
dGVhZC4KICAgICovCiAgIGlubGluZSBVQm9vbCAgICAgICAgb3BlcmF0b3IhPShjb25zdCBOb3Jt
YWxpemVyJiB0aGF0KSBjb25zdDsKIApAQCAtNTg4LDcgKzU5Nyw3IEBAIHB1YmxpYzoKICAgICog
UmV0dXJucyBhIHBvaW50ZXIgdG8gYSBuZXcgTm9ybWFsaXplciB0aGF0IGlzIGEgY2xvbmUgb2Yg
dGhpcyBvbmUuCiAgICAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRo
ZSBuZXcgY2xvbmUuCiAgICAqIEByZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3IE5vcm1hbGl6ZXIK
LSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFs
aXplcjIgaW5zdGVhZC4KICAgICovCiAgIE5vcm1hbGl6ZXIqICAgICAgICBjbG9uZSh2b2lkKSBj
b25zdDsKIApAQCAtNTk2LDcgKzYwNSw3IEBAIHB1YmxpYzoKICAgICogR2VuZXJhdGVzIGEgaGFz
aCBjb2RlIGZvciB0aGlzIGl0ZXJhdG9yLgogICAgKgogICAgKiBAcmV0dXJuIHRoZSBoYXNoIGNv
ZGUKLSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9y
bWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIGludDMyX3QgICAgICAgICAgICAgICAgaGFzaENv
ZGUodm9pZCkgY29uc3Q7CiAKQEAgLTYxNyw3ICs2MjYsNyBAQCBwdWJsaWM6CiAgICAqIDxwPgog
ICAgKiBAcGFyYW0gbmV3TW9kZSB0aGUgbmV3IG1vZGUgZm9yIHRoaXMgPGNvZGU+Tm9ybWFsaXpl
cjwvY29kZT4uCiAgICAqIEBzZWUgI2dldFVNb2RlCi0gICAqIEBzdGFibGUgSUNVIDIuMAorICAg
KiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICB2
b2lkIHNldE1vZGUoVU5vcm1hbGl6YXRpb25Nb2RlIG5ld01vZGUpOwogCkBAIC02MjksNyArNjM4
LDcgQEAgcHVibGljOgogICAgKgogICAgKiBAcmV0dXJuIHRoZSBtb2RlIGZvciB0aGlzIDxjb2Rl
Pk5vcm1hbGl6ZXI8L2NvZGU+CiAgICAqIEBzZWUgI3NldE1vZGUKLSAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAg
ICovCiAgIFVOb3JtYWxpemF0aW9uTW9kZSBnZXRVTW9kZSh2b2lkKSBjb25zdDsKIApAQCAtNjQ3
LDcgKzY1Niw3IEBAIHB1YmxpYzoKICAgICogICAgICAgICAgICAgICAgICB0dXJuIHRoZSBvcHRp
b24ocykgb24gYW5kIDxjb2RlPkZBTFNFPC9jb2RlPiB0byB0dXJuIGl0L3RoZW0gb2ZmLgogICAg
KgogICAgKiBAc2VlICNnZXRPcHRpb24KLSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXBy
ZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIHZvaWQgc2V0
T3B0aW9uKGludDMyX3Qgb3B0aW9uLAogICAgICAgICAgVUJvb2wgdmFsdWUpOwpAQCAtNjYwLDcg
KzY2OSw3IEBAIHB1YmxpYzoKICAgICogQHBhcmFtIG9wdGlvbiB0aGUgb3B0aW9uKHMpIHRoYXQg
YXJlIHRvIGJlIGNoZWNrZWQKICAgICogQHJldHVybiBUUlVFIGlmIGFueSBvZiB0aGUgb3B0aW9u
KHMpIGFyZSBzZXQKICAgICogQHNlZSAjc2V0T3B0aW9uCi0gICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwog
ICBVQm9vbCBnZXRPcHRpb24oaW50MzJfdCBvcHRpb24pIGNvbnN0OwogCkBAIC02NzAsNyArNjc5
LDcgQEAgcHVibGljOgogICAgKgogICAgKiBAcGFyYW0gbmV3VGV4dCBhIHN0cmluZyB0aGF0IHJl
cGxhY2VzIHRoZSBjdXJyZW50IGlucHV0IHRleHQKICAgICogQHBhcmFtIHN0YXR1cyBhIFVFcnJv
ckNvZGUKLSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2Ug
Tm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIHZvaWQgc2V0VGV4dChjb25zdCBVbmljb2Rl
U3RyaW5nJiBuZXdUZXh0LAogICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpOwpAQCAtNjgx
LDcgKzY5MCw3IEBAIHB1YmxpYzoKICAgICoKICAgICogQHBhcmFtIG5ld1RleHQgYSBDaGFyYWN0
ZXJJdGVyYXRvciBvYmplY3QgdGhhdCByZXBsYWNlcyB0aGUgY3VycmVudCBpbnB1dCB0ZXh0CiAg
ICAqIEBwYXJhbSBzdGF0dXMgYSBVRXJyb3JDb2RlCi0gICAqIEBzdGFibGUgSUNVIDIuMAorICAg
KiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICB2
b2lkIHNldFRleHQoY29uc3QgQ2hhcmFjdGVySXRlcmF0b3ImIG5ld1RleHQsCiAgICAgICAgICAg
IFVFcnJvckNvZGUgJnN0YXR1cyk7CkBAIC02OTMsMzAgKzcwMiwzMSBAQCBwdWJsaWM6CiAgICAq
IEBwYXJhbSBuZXdUZXh0IGEgc3RyaW5nIHRoYXQgcmVwbGFjZXMgdGhlIGN1cnJlbnQgaW5wdXQg
dGV4dAogICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZywgb3IgLTEg
aWYgTlVMLXRlcm1pbmF0ZWQKICAgICogQHBhcmFtIHN0YXR1cyBhIFVFcnJvckNvZGUKLSAgICog
QHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIg
aW5zdGVhZC4KICAgICovCi0gIHZvaWQgc2V0VGV4dChjb25zdCBVQ2hhciogbmV3VGV4dCwKKyAg
dm9pZCBzZXRUZXh0KENvbnN0Q2hhcjE2UHRyIG5ld1RleHQsCiAgICAgICAgICAgICAgICAgICAg
IGludDMyX3QgbGVuZ3RoLAogICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVzKTsKICAgLyoq
CiAgICAqIENvcGllcyB0aGUgaW5wdXQgdGV4dCBpbnRvIHRoZSBVbmljb2RlU3RyaW5nIGFyZ3Vt
ZW50LgogICAgKgogICAgKiBAcGFyYW0gcmVzdWx0IFJlY2VpdmVzIGEgY29weSBvZiB0aGUgdGV4
dCB1bmRlciBpdGVyYXRpb24uCi0gICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBAZGVwcmVjYXRl
ZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICB2b2lkICAgICAgICAg
ICAgZ2V0VGV4dChVbmljb2RlU3RyaW5nJiAgcmVzdWx0KTsKIAogICAvKioKICAgICogSUNVICJw
b29yIG1hbidzIFJUVEkiLCByZXR1cm5zIGEgVUNsYXNzSUQgZm9yIHRoaXMgY2xhc3MuCiAgICAq
IEByZXR1cm5zIGEgVUNsYXNzSUQgZm9yIHRoaXMgY2xhc3MuCi0gICAqIEBzdGFibGUgSUNVIDIu
MgorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAq
LwogICBzdGF0aWMgVUNsYXNzSUQgVV9FWFBPUlQyIGdldFN0YXRpY0NsYXNzSUQoKTsKKyNlbmRp
ZiAgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCiAKICAgLyoqCiAgICAqIElDVSAicG9vciBt
YW4ncyBSVFRJIiwgcmV0dXJucyBhIFVDbGFzc0lEIGZvciB0aGUgYWN0dWFsIGNsYXNzLgogICAg
KiBAcmV0dXJuIGEgVUNsYXNzSUQgZm9yIHRoZSBhY3R1YWwgY2xhc3MuCi0gICAqIEBzdGFibGUg
SUNVIDIuMgorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQu
CiAgICAqLwogICB2aXJ0dWFsIFVDbGFzc0lEIGdldER5bmFtaWNDbGFzc0lEKCkgY29uc3Q7CiAK
QEAgLTc0Miw3ICs3NTIsNyBAQCBwcml2YXRlOgogCiAgIEZpbHRlcmVkTm9ybWFsaXplcjIqZkZp
bHRlcmVkTm9ybTI7ICAvLyBvd25lZCBpZiBub3QgTlVMTAogICBjb25zdCBOb3JtYWxpemVyMiAg
KmZOb3JtMjsgIC8vIG5vdCBvd25lZDsgbWF5IGJlIGVxdWFsIHRvIGZGaWx0ZXJlZE5vcm0yCi0g
IFVOb3JtYWxpemF0aW9uTW9kZSAgZlVNb2RlOworICBVTm9ybWFsaXphdGlvbk1vZGUgIGZVTW9k
ZTsgIC8vIGRlcHJlY2F0ZWQKICAgaW50MzJfdCAgICAgICAgICAgICBmT3B0aW9uczsKIAogICAv
LyBUaGUgaW5wdXQgdGV4dCBhbmQgb3VyIHBvc2l0aW9uIGluIGl0CkBAIC03NjEsNiArNzcxLDcg
QEAgcHJpdmF0ZToKIC8vIElubGluZSBpbXBsZW1lbnRhdGlvbnMKIC8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogaW5saW5lIFVCb29sCiBOb3JtYWxp
emVyOjpvcGVyYXRvciE9IChjb25zdCBOb3JtYWxpemVyJiBvdGhlcikgY29uc3QKIHsgcmV0dXJu
ICEgb3BlcmF0b3I9PShvdGhlcik7IH0KQEAgLTc3OCwxNCArNzg5LDE1IEBAIE5vcm1hbGl6ZXI6
OmlzTm9ybWFsaXplZChjb25zdCBVbmljb2RlU3RyaW5nJiBzb3VyY2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVzKSB7CiAgICAgcmV0dXJuIGlzTm9ybWFsaXpl
ZChzb3VyY2UsIG1vZGUsIDAsIHN0YXR1cyk7CiB9CisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNB
VEVEX0FQSSAqLwogCiBpbmxpbmUgaW50MzJfdAogTm9ybWFsaXplcjo6Y29tcGFyZShjb25zdCBV
bmljb2RlU3RyaW5nICZzMSwgY29uc3QgVW5pY29kZVN0cmluZyAmczIsCiAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUg
JmVycm9yQ29kZSkgewogICAvLyBhbGwgYXJndW1lbnQgY2hlY2tpbmcgaXMgZG9uZSBpbiB1bm9y
bV9jb21wYXJlCi0gIHJldHVybiB1bm9ybV9jb21wYXJlKHMxLmdldEJ1ZmZlcigpLCBzMS5sZW5n
dGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgczIuZ2V0QnVmZmVyKCksIHMyLmxlbmd0aCgp
LAorICByZXR1cm4gdW5vcm1fY29tcGFyZSh0b1VDaGFyUHRyKHMxLmdldEJ1ZmZlcigpKSwgczEu
bGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgIHRvVUNoYXJQdHIoczIuZ2V0QnVmZmVy
KCkpLCBzMi5sZW5ndGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywKICAgICAg
ICAgICAgICAgICAgICAgICAgJmVycm9yQ29kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL251bWZtdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9udW1mbXQuaApp
bmRleCAxNjRjNjU3NjlmZThhM2YwYTdhMzgwZDMyMmYxYmEyM2U1YTBlODRjLi42OGJlMDIxMDU1
YmFmYjc4MGRmNTBhZTY1MGM5MmNmYWI4OTE1YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL251bWZtdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbnVtZm10LmgK
QEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQg
b3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9y
Zy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qIENvcHlyaWdo
dCAoQykgMTk5Ny0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0
aW9uIGFuZCBvdGhlcnMuCisqIENvcHlyaWdodCAoQykgMTk5Ny0yMDE2LCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCiAqIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtNTYsNiArNTgsMTIgQEAg
Y2xhc3MgU3RyaW5nRW51bWVyYXRpb247CiAgKiBmb3JtYXR0aW5nIGFuZCBwYXJzaW5nIGEgbnVt
YmVyLiAgQWxzbyBwcm92aWRlcyBtZXRob2RzIGZvcgogICogZGV0ZXJtaW5pbmcgd2hpY2ggbG9j
YWxlcyBoYXZlIG51bWJlciBmb3JtYXRzLCBhbmQgd2hhdCB0aGVpciBuYW1lcwogICogYXJlLgor
ICoKKyAqIDxwPjxzdHJvbmc+Tk9URTo8L3N0cm9uZz4gU3RhcnRpbmcgaW4gSUNVIDYwLCB0aGVy
ZSBpcyBhIG5ldyBzZXQgb2YgQVBJcyBmb3IgbG9jYWxpemVkIG51bWJlcgorICogZm9ybWF0dGlu
ZyB0aGF0IGFyZSBkZXNpZ25lZCB0byBiZSBhbiBpbXByb3ZlbWVudCBvdmVyIERlY2ltYWxGb3Jt
YXQuICBOZXcgdXNlcnMgYXJlIGRpc2NvdXJhZ2VkCisgKiBmcm9tIHVzaW5nIERlY2ltYWxGb3Jt
YXQuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIG51bWJlcmZvcm1hdHRlci5oLgorICoKKyAq
IFxoZWFkZXJmaWxlIHVuaWNvZGUvbnVtZm10LmggInVuaWNvZGUvbnVtZm10LmgiCiAgKiA8UD4K
ICAqIE51bWJlckZvcm1hdCBoZWxwcyB5b3UgdG8gZm9ybWF0IGFuZCBwYXJzZSBudW1iZXJzIGZv
ciBhbnkgbG9jYWxlLgogICogWW91ciBjb2RlIGNhbiBiZSBjb21wbGV0ZWx5IGluZGVwZW5kZW50
IG9mIHRoZSBsb2NhbGUgY29udmVudGlvbnMKQEAgLTY0LDE2ICs3MiwyMiBAQCBjbGFzcyBTdHJp
bmdFbnVtZXJhdGlvbjsKICAqIDxQPgogICogVG8gZm9ybWF0IGEgbnVtYmVyIGZvciB0aGUgY3Vy
cmVudCBMb2NhbGUsIHVzZSBvbmUgb2YgdGhlIHN0YXRpYwogICogZmFjdG9yeSBtZXRob2RzOgot
ICogPHByZT4KICAqIFxjb2RlCi0gKiAgICBkb3VibGUgbXlOdW1iZXIgPSA3LjA7Ci0gKiAgICBV
bmljb2RlU3RyaW5nIG15U3RyaW5nOwotICogICAgVUVycm9yQ29kZSBzdWNjZXNzID0gVV9aRVJP
X0VSUk9SOwotICogICAgTnVtYmVyRm9ybWF0KiBuZiA9IE51bWJlckZvcm1hdDo6Y3JlYXRlSW5z
dGFuY2Uoc3VjY2VzcykKLSAqICAgIG5mLT5mb3JtYXQobXlOdW1iZXIsIG15U3RyaW5nKTsKLSAq
ICAgIGNvdXQgPDwgIiBFeGFtcGxlIDE6ICIgPDwgbXlTdHJpbmcgPDwgZW5kbDsKKyAqICAgICNp
bmNsdWRlIDxpb3N0cmVhbT4KKyAqICAgICNpbmNsdWRlICJ1bmljb2RlL251bWZtdC5oIgorICog
ICAgI2luY2x1ZGUgInVuaWNvZGUvdW5pc3RyLmgiCisgKiAgICAjaW5jbHVkZSAidW5pY29kZS91
c3RyZWFtLmgiCisgKiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOworICogICAgCisgKiAgICBpbnQg
bWFpbigpIHsKKyAqICAgICAgICBkb3VibGUgbXlOdW1iZXIgPSA3LjA7CisgKiAgICAgICAgVW5p
Y29kZVN0cmluZyBteVN0cmluZzsKKyAqICAgICAgICBVRXJyb3JDb2RlIHN1Y2Nlc3MgPSBVX1pF
Uk9fRVJST1I7CisgKiAgICAgICAgTnVtYmVyRm9ybWF0KiBuZiA9IE51bWJlckZvcm1hdDo6Y3Jl
YXRlSW5zdGFuY2Uoc3VjY2Vzcyk7CisgKiAgICAgICAgbmYtPmZvcm1hdChteU51bWJlciwgbXlT
dHJpbmcpOworICogICAgICAgIGNvdXQgPDwgIiBFeGFtcGxlIDE6ICIgPDwgbXlTdHJpbmcgPDwg
ZW5kbDsKKyAqICAgIH0KICAqIFxlbmRjb2RlCi0gKiA8L3ByZT4KICAqIE5vdGUgdGhhdCB0aGVy
ZSBhcmUgYWRkaXRpb25hbCBmYWN0b3J5IG1ldGhvZHMgd2l0aGluIHN1YmNsYXNzZXMgb2YKICAq
IE51bWJlckZvcm1hdC4KICAqIDxQPgpAQCAtODEsNjggKzk1LDU2IEBAIGNsYXNzIFN0cmluZ0Vu
dW1lcmF0aW9uOwogICogdGhlIGZvcm1hdCBhbmQgdXNlIGl0IG11bHRpcGxlIHRpbWVzIHNvIHRo
YXQgdGhlIHN5c3RlbSBkb2Vzbid0CiAgKiBoYXZlIHRvIGZldGNoIHRoZSBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgbG9jYWwgbGFuZ3VhZ2UgYW5kIGNvdW50cnkKICAqIGNvbnZlbnRpb25zIG11bHRp
cGxlIHRpbWVzLgotICogPHByZT4KICAqIFxjb2RlCiAgKiAgICAgVW5pY29kZVN0cmluZyBteVN0
cmluZzsKICAqICAgICBVRXJyb3JDb2RlIHN1Y2Nlc3MgPSBVX1pFUk9fRVJST1I7Ci0gKiAgICAg
bmYgPSBOdW1iZXJGb3JtYXQ6OmNyZWF0ZUluc3RhbmNlKCBzdWNjZXNzICk7Ci0gKiAgICAgaW50
MzJfdCBhW10gPSB7IDEyMywgMzMzMywgLTEyMzQ1NjcgfTsKLSAqICAgICBjb25zdCBpbnQzMl90
IGFfbGVuID0gc2l6ZW9mKGEpIC8gc2l6ZW9mKGFbMF0pOwotICogICAgIG15U3RyaW5nLnJlbW92
ZSgpOwotICogICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGFfbGVuOyBpKyspIHsKLSAqICAg
ICAgICAgbmYtPmZvcm1hdChhW2ldLCBteVN0cmluZyk7Ci0gKiAgICAgICAgIG15U3RyaW5nICs9
ICIgOyAiOworICogICAgIE51bWJlckZvcm1hdCAqbmYgPSBOdW1iZXJGb3JtYXQ6OmNyZWF0ZUlu
c3RhbmNlKCBzdWNjZXNzICk7CisgKiAgICAgZm9yIChpbnQzMl90IG51bWJlcjogezEyMywgMzMz
MywgLTEyMzQ1Njd9KSB7CisgKiAgICAgICAgIG5mLT5mb3JtYXQobnVtYmVyLCBteVN0cmluZyk7
CisgKiAgICAgICAgIG15U3RyaW5nICs9ICI7ICI7CiAgKiAgICAgfQogICogICAgIGNvdXQgPDwg
IiBFeGFtcGxlIDI6ICIgPDwgbXlTdHJpbmcgPDwgZW5kbDsKICAqIFxlbmRjb2RlCi0gKiA8L3By
ZT4KICAqIFRvIGZvcm1hdCBhIG51bWJlciBmb3IgYSBkaWZmZXJlbnQgTG9jYWxlLCBzcGVjaWZ5
IGl0IGluIHRoZQotICogY2FsbCB0byBjcmVhdGVJbnN0YW5jZSgpLgotICogPHByZT4KKyAqIGNh
bGwgdG8gXGMgY3JlYXRlSW5zdGFuY2UoKS4KICAqIFxjb2RlCi0gKiAgICAgbmYgPSBOdW1iZXJG
b3JtYXQ6OmNyZWF0ZUluc3RhbmNlKCBMb2NhbGU6OkZSRU5DSCwgc3VjY2VzcyApOworICogICAg
IG5mID0gTnVtYmVyRm9ybWF0OjpjcmVhdGVJbnN0YW5jZShMb2NhbGU6OmdldEZyZW5jaCgpLCBz
dWNjZXNzKTsKICAqIFxlbmRjb2RlCi0gKiA8L3ByZT4KLSAqIFlvdSBjYW4gdXNlIGEgTnVtYmVy
Rm9ybWF0IHRvIHBhcnNlIGFsc28uCi0gKiA8cHJlPgorICogWW91IGNhbiB1c2UgYSBcYyBOdW1i
ZXJGb3JtYXQgdG8gcGFyc2UgYWxzby4KICAqIFxjb2RlCiAgKiAgICBVRXJyb3JDb2RlIHN1Y2Nl
c3M7CiAgKiAgICBGb3JtYXR0YWJsZSByZXN1bHQoLTk5OSk7ICAvLyBpbml0aWFsaXplZCB3aXRo
IGVycm9yIGNvZGUKICAqICAgIG5mLT5wYXJzZShteVN0cmluZywgcmVzdWx0LCBzdWNjZXNzKTsK
ICAqIFxlbmRjb2RlCi0gKiA8L3ByZT4KLSAqIFVzZSBjcmVhdGVJbnN0YW5jZSB0byBnZXQgdGhl
IG5vcm1hbCBudW1iZXIgZm9ybWF0IGZvciB0aGF0IGNvdW50cnkuCi0gKiBUaGVyZSBhcmUgb3Ro
ZXIgc3RhdGljIGZhY3RvcnkgbWV0aG9kcyBhdmFpbGFibGUuICBVc2UgZ2V0Q3VycmVuY3kKLSAq
IHRvIGdldCB0aGUgY3VycmVuY3kgbnVtYmVyIGZvcm1hdCBmb3IgdGhhdCBjb3VudHJ5LiAgVXNl
IGdldFBlcmNlbnQKKyAqIFVzZSBcYyBjcmVhdGVJbnN0YW5jZSgpIHRvIGdldCB0aGUgbm9ybWFs
IG51bWJlciBmb3JtYXQgZm9yIGEgXGMgTG9jYWxlLgorICogVGhlcmUgYXJlIG90aGVyIHN0YXRp
YyBmYWN0b3J5IG1ldGhvZHMgYXZhaWxhYmxlLiAgVXNlIFxjIGNyZWF0ZUN1cnJlbmN5SW5zdGFu
Y2UoKQorICogdG8gZ2V0IHRoZSBjdXJyZW5jeSBudW1iZXIgZm9ybWF0IGZvciB0aGF0IGNvdW50
cnkuICBVc2UgXGMgY3JlYXRlUGVyY2VudEluc3RhbmNlKCkKICAqIHRvIGdldCBhIGZvcm1hdCBm
b3IgZGlzcGxheWluZyBwZXJjZW50YWdlcy4gV2l0aCB0aGlzIGZvcm1hdCwgYQogICogZnJhY3Rp
b24gZnJvbSAwLjUzIGlzIGRpc3BsYXllZCBhcyA1MyUuCiAgKiA8UD4KLSAqIFN0YXJ0aW5nIGZy
b20gSUNVIDQuMiwgeW91IGNhbiB1c2UgY3JlYXRlSW5zdGFuY2UoKSBieSBwYXNzaW5nIGluIGEg
J3N0eWxlJwotICogYXMgcGFyYW1ldGVyIHRvIGdldCB0aGUgY29ycmVjdCBpbnN0YW5jZS4KLSAq
IEZvciBleGFtcGxlLAotICogdXNlIGNyZWF0ZUluc3RhbmNlKC4uLmtOdW1iZXJTdHlsZS4uLikg
dG8gZ2V0IHRoZSBub3JtYWwgbnVtYmVyIGZvcm1hdCwKLSAqIGNyZWF0ZUluc3RhbmNlKC4uLmtQ
ZXJjZW50U3R5bGUuLi4pIHRvIGdldCBhIGZvcm1hdCBmb3IgZGlzcGxheWluZwotICogcGVyY2Vu
dGFnZSwKLSAqIGNyZWF0ZUluc3RhbmNlKC4uLmtTY2llbnRpZmljU3R5bGUuLi4pIHRvIGdldCBh
IGZvcm1hdCBmb3IgZGlzcGxheWluZwotICogc2NpZW50aWZpYyBudW1iZXIsCi0gKiBjcmVhdGVJ
bnN0YW5jZSguLi5rQ3VycmVuY3lTdHlsZS4uLikgdG8gZ2V0IHRoZSBjdXJyZW5jeSBudW1iZXIg
Zm9ybWF0LAotICogaW4gd2hpY2ggdGhlIGN1cnJlbmN5IGlzIHJlcHJlc2VudGVkIGJ5IGl0cyBz
eW1ib2wsIGZvciBleGFtcGxlLCAiJDMuMDAiLgotICogY3JlYXRlSW5zdGFuY2UoLi4ua0lzb0N1
cnJlbmN5U3R5bGUuLi4pICB0byBnZXQgdGhlIGN1cnJlbmN5IG51bWJlciBmb3JtYXQsCi0gKiBp
biB3aGljaCB0aGUgY3VycmVuY3kgaXMgcmVwcmVzZW50ZWQgYnkgaXRzIElTTyBjb2RlLCBmb3Ig
ZXhhbXBsZSAiVVNEMy4wMCIuCi0gKiBjcmVhdGVJbnN0YW5jZSguLi5rUGx1cmFsQ3VycmVuY3lT
dHlsZS4uLikgdG8gZ2V0IHRoZSBjdXJyZW5jeSBudW1iZXIgZm9ybWF0LAorICogVGhlIHR5cGUg
b2YgbnVtYmVyIGZvcm1hdHRpbmcgY2FuIGJlIHNwZWNpZmllZCBieSBwYXNzaW5nIGEgJ3N0eWxl
JyBwYXJhbWV0ZXIgdG8gXGMgY3JlYXRlSW5zdGFuY2UoKS4KKyAqIEZvciBleGFtcGxlLCB1c2Vc
bgorICogXGMgY3JlYXRlSW5zdGFuY2UobG9jYWxlLCBVTlVNX0RFQ0lNQUwsIGVycm9yQ29kZSkg
dG8gZ2V0IHRoZSBub3JtYWwgbnVtYmVyIGZvcm1hdCxcbgorICogXGMgY3JlYXRlSW5zdGFuY2Uo
bG9jYWxlLCBVTlVNX1BFUkNFTlQsIGVycm9yQ29kZSkgdG8gZ2V0IGEgZm9ybWF0IGZvciBkaXNw
bGF5aW5nIHBlcmNlbnRhZ2UsXG4KKyAqIFxjIGNyZWF0ZUluc3RhbmNlKGxvY2FsZSwgVU5VTV9T
Q0lFTlRJRklDLCBlcnJvckNvZGUpIHRvIGdldCBhIGZvcm1hdCBmb3IgZGlzcGxheWluZyBzY2ll
bnRpZmljIG51bWJlcixcbgorICogXGMgY3JlYXRlSW5zdGFuY2UobG9jYWxlLCBVTlVNX0NVUlJF
TkNZLCBlcnJvckNvZGUpIHRvIGdldCB0aGUgY3VycmVuY3kgbnVtYmVyIGZvcm1hdCwKKyAqIGlu
IHdoaWNoIHRoZSBjdXJyZW5jeSBpcyByZXByZXNlbnRlZCBieSBpdHMgc3ltYm9sLCBmb3IgZXhh
bXBsZSwgIiQzLjAwIi5cbgorICogXGMgY3JlYXRlSW5zdGFuY2UobG9jYWxlLCBVTlVNX0NVUlJF
TkNZX0lTTywgZXJyb3JDb2RlKSAgdG8gZ2V0IHRoZSBjdXJyZW5jeSBudW1iZXIgZm9ybWF0LAor
ICogaW4gd2hpY2ggdGhlIGN1cnJlbmN5IGlzIHJlcHJlc2VudGVkIGJ5IGl0cyBJU08gY29kZSwg
Zm9yIGV4YW1wbGUgIlVTRDMuMDAiLlxuCisgKiBcYyBjcmVhdGVJbnN0YW5jZShsb2NhbGUsIFVO
VU1fQ1VSUkVOQ1lfUExVUkFMLCBlcnJvckNvZGUpIHRvIGdldCB0aGUgY3VycmVuY3kgbnVtYmVy
IGZvcm1hdCwKICAqIGluIHdoaWNoIHRoZSBjdXJyZW5jeSBpcyByZXByZXNlbnRlZCBieSBpdHMg
ZnVsbCBuYW1lIGluIHBsdXJhbCBmb3JtYXQsCiAgKiBmb3IgZXhhbXBsZSwgIjMuMDAgVVMgZG9s
bGFycyIgb3IgIjEuMDAgVVMgZG9sbGFyIi4KICAqIDxQPgogICogWW91IGNhbiBhbHNvIGNvbnRy
b2wgdGhlIGRpc3BsYXkgb2YgbnVtYmVycyB3aXRoIHN1Y2ggbWV0aG9kcyBhcwotICogZ2V0TWlu
aW11bUZyYWN0aW9uRGlnaXRzLiAgSWYgeW91IHdhbnQgZXZlbiBtb3JlIGNvbnRyb2wgb3ZlciB0
aGUKKyAqIFxjIGdldE1pbmltdW1GcmFjdGlvbkRpZ2l0cygpLiAgSWYgeW91IHdhbnQgZXZlbiBt
b3JlIGNvbnRyb2wgb3ZlciB0aGUKICAqIGZvcm1hdCBvciBwYXJzaW5nLCBvciB3YW50IHRvIGdp
dmUgeW91ciB1c2VycyBtb3JlIGNvbnRyb2wsIHlvdSBjYW4KLSAqIHRyeSBjYXN0aW5nIHRoZSBO
dW1iZXJGb3JtYXQgeW91IGdldCBmcm9tIHRoZSBmYWN0b3J5IG1ldGhvZHMgdG8gYQotICogRGVj
aW1hbE51bWJlckZvcm1hdC4gVGhpcyB3aWxsIHdvcmsgZm9yIHRoZSB2YXN0IG1ham9yaXR5IG9m
Ci0gKiBjb3VudHJpZXM7IGp1c3QgcmVtZW1iZXIgdG8gcHV0IGl0IGluIGEgdHJ5IGJsb2NrIGlu
IGNhc2UgeW91CisgKiB0cnkgZHluYW1pY19jYXN0aW5nIHRoZSBcYyBOdW1iZXJGb3JtYXQgeW91
IGdldCBmcm9tIHRoZSBmYWN0b3J5IG1ldGhvZHMgdG8gYQorICogXGMgRGVjaW1hbEZvcm1hdC4g
VGhpcyB3aWxsIHdvcmsgZm9yIHRoZSB2YXN0IG1ham9yaXR5IG9mCisgKiBjb3VudHJpZXM7IGp1
c3QgcmVtZW1iZXIgdG8gdGVzdCBmb3IgTlVMTCBpbiBjYXNlIHlvdQogICogZW5jb3VudGVyIGFu
IHVudXN1YWwgb25lLgogICogPFA+CiAgKiBZb3UgY2FuIGFsc28gdXNlIGZvcm1zIG9mIHRoZSBw
YXJzZSBhbmQgZm9ybWF0IG1ldGhvZHMgd2l0aAotICogUGFyc2VQb3NpdGlvbiBhbmQgRmllbGRQ
b3NpdGlvbiB0byBhbGxvdyB5b3UgdG86CisgKiBcYyBQYXJzZVBvc2l0aW9uIGFuZCBcYyBGaWVs
ZFBvc2l0aW9uIHRvIGFsbG93IHlvdSB0bzoKICAqIDx1bCB0eXBlPXJvdW5kPgogICogICA8bGk+
KGEpIHByb2dyZXNzaXZlbHkgcGFyc2UgdGhyb3VnaCBwaWVjZXMgb2YgYSBzdHJpbmcuCiAgKiAg
IDxsaT4oYikgYWxpZ24gdGhlIGRlY2ltYWwgcG9pbnQgYW5kIG90aGVyIGFyZWFzLgpAQCAtMTUw
LDggKzE1Miw4IEBAIGNsYXNzIFN0cmluZ0VudW1lcmF0aW9uOwogICogRm9yIGV4YW1wbGUsIHlv
dSBjYW4gYWxpZ24gbnVtYmVycyBpbiB0d28gd2F5cy4KICAqIDxQPgogICogSWYgeW91IGFyZSB1
c2luZyBhIG1vbm9zcGFjZWQgZm9udCB3aXRoIHNwYWNpbmcgZm9yIGFsaWdubWVudCwgeW91Ci0g
KiBjYW4gcGFzcyB0aGUgRmllbGRQb3NpdGlvbiBpbiB5b3VyIGZvcm1hdCBjYWxsLCB3aXRoIGZp
ZWxkID0KLSAqIElOVEVHRVJfRklFTEQuIE9uIG91dHB1dCwgZ2V0RW5kSW5kZXggd2lsbCBiZSBz
ZXQgdG8gdGhlIG9mZnNldAorICogY2FuIHBhc3MgdGhlIFxjIEZpZWxkUG9zaXRpb24gaW4geW91
ciBmb3JtYXQgY2FsbCwgd2l0aCBmaWVsZCA9CisgKiBcYyBVTlVNX0lOVEVHRVJfRklFTEQuIE9u
IG91dHB1dCwgXGMgZ2V0RW5kSW5kZXggd2lsbCBiZSBzZXQgdG8gdGhlIG9mZnNldAogICogYmV0
d2VlbiB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGludGVnZXIgYW5kIHRoZSBkZWNpbWFsLiBB
ZGQKICAqIChkZXNpcmVkU3BhY2VDb3VudCAtIGdldEVuZEluZGV4KSBzcGFjZXMgYXQgdGhlIGZy
b250IG9mIHRoZQogICogc3RyaW5nLgpAQCAtMTcxLDYgKzE3MywzMyBAQCBjbGFzcyBTdHJpbmdF
bnVtZXJhdGlvbjsKICAqLwogY2xhc3MgVV9JMThOX0FQSSBOdW1iZXJGb3JtYXQgOiBwdWJsaWMg
Rm9ybWF0IHsKIHB1YmxpYzoKKyAgICAvKioKKyAgICAgKiBSb3VuZGluZyBtb2RlLgorICAgICAq
CisgICAgICogPHA+CisgICAgICogRm9yIG1vcmUgZGV0YWlsIG9uIHJvdW5kaW5nIG1vZGVzLCBz
ZWU6CisgICAgICogaHR0cDovL3VzZXJndWlkZS5pY3UtcHJvamVjdC5vcmcvZm9ybWF0cGFyc2Uv
bnVtYmVycy9yb3VuZGluZy1tb2RlcworICAgICAqCisgICAgICogQHN0YWJsZSBJQ1UgMi40Cisg
ICAgICovCisgICAgZW51bSBFUm91bmRpbmdNb2RlIHsKKyAgICAgICAga1JvdW5kQ2VpbGluZywg
IC8qKjwgUm91bmQgdG93YXJkcyBwb3NpdGl2ZSBpbmZpbml0eSAqLworICAgICAgICBrUm91bmRG
bG9vciwgICAgLyoqPCBSb3VuZCB0b3dhcmRzIG5lZ2F0aXZlIGluZmluaXR5ICovCisgICAgICAg
IGtSb3VuZERvd24sICAgICAvKio8IFJvdW5kIHRvd2FyZHMgemVybyAqLworICAgICAgICBrUm91
bmRVcCwgICAgICAgLyoqPCBSb3VuZCBhd2F5IGZyb20gemVybyAqLworICAgICAgICBrUm91bmRI
YWxmRXZlbiwgLyoqPCBSb3VuZCB0b3dhcmRzIHRoZSBuZWFyZXN0IGludGVnZXIsIG9yCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvd2FyZHMgdGhlIG5lYXJlc3QgZXZlbiBpbnRlZ2Vy
IGlmIGVxdWlkaXN0YW50ICovCisgICAgICAgIGtSb3VuZEhhbGZEb3duLCAvKio8IFJvdW5kIHRv
d2FyZHMgdGhlIG5lYXJlc3QgaW50ZWdlciwgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG93YXJkcyB6ZXJvIGlmIGVxdWlkaXN0YW50ICovCisgICAgICAgIGtSb3VuZEhhbGZVcCwg
ICAvKio8IFJvdW5kIHRvd2FyZHMgdGhlIG5lYXJlc3QgaW50ZWdlciwgb3IKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXdheSBmcm9tIHplcm8gaWYgZXF1aWRpc3RhbnQgKi8KKyAgICAg
ICAgLyoqCisgICAgICAgICAgKiAgUmV0dXJuIFVfRk9STUFUX0lORVhBQ1RfRVJST1IgaWYgbnVt
YmVyIGRvZXMgbm90IGZvcm1hdCBleGFjdGx5LgorICAgICAgICAgICogIEBzdGFibGUgSUNVIDQu
OAorICAgICAgICAgICovCisgICAgICAgIGtSb3VuZFVubmVjZXNzYXJ5CisgICAgfTsKKwogICAg
IC8qKgogICAgICAqIEFsaWdubWVudCBGaWVsZCBjb25zdGFudHMgdXNlZCB0byBjb25zdHJ1Y3Qg
YSBGaWVsZFBvc2l0aW9uIG9iamVjdC4KICAgICAgKiBTaWduaWZpZXMgdGhhdCB0aGUgcG9zaXRp
b24gb2YgdGhlIGludGVnZXIgcGFydCBvciBmcmFjdGlvbiBwYXJ0IG9mCkBAIC0yNzEsNyArMzAw
LDcgQEAgcHVibGljOgogICAgICAqICAgICAgICAgICAgICAgICAgTlVMTC4KICAgICAgKiBAcGFy
YW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBmaWxsZWQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3Rh
dHVzLgogICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFy
YW1ldGVyLgotICAgICAqIEBzdGFibGUgNC40CisgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAg
ICovCiAgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoY29uc3QgRm9ybWF0dGFibGUm
IG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBh
cHBlbmRUbywKQEAgLTM5NCw3ICs0MjMsNyBAQCBwdWJsaWM6CiAgICAgICogICAgICAgICAgICAg
ICAgICBDYW4gYmUgTlVMTC4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBm
aWxsZWQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzLgogICAgICAqIEByZXR1cm4gICAgICAg
ICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgotICAgICAqIEBzdGFibGUgNC40
CisgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAgICovCiAgICAgdmlydHVhbCBVbmljb2RlU3Ry
aW5nJiBmb3JtYXQoZG91YmxlIG51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywKQEAgLTQ0Niw3ICs0NzUsNyBAQCBwdWJsaWM6
CiAgICAgICogICAgICAgICAgICAgICAgICBDYW4gYmUgTlVMTC4KICAgICAgKiBAcGFyYW0gc3Rh
dHVzICAgIE91dHB1dCBwYXJhbSBmaWxsZWQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzLgog
ICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1ldGVy
LgotICAgICAqIEBzdGFibGUgNC40CisgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAgICovCiAg
ICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoaW50MzJfdCBudW1iZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCkBAIC00
NzksNiArNTA4LDcgQEAgcHVibGljOgogICAgICAqICAgICAgICAgICAgICAgICAgUmVzdWx0IGlz
IGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgogICAgICAqIEBwYXJhbSBwb3MgICAgICAg
T24gaW5wdXQ6IGFuIGFsaWdubWVudCBmaWVsZCwgaWYgZGVzaXJlZC4KICAgICAgKiAgICAgICAg
ICAgICAgICAgIE9uIG91dHB1dDogdGhlIG9mZnNldHMgb2YgdGhlIGFsaWdubWVudCBmaWVsZC4K
KyAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBmaWxsZWQgd2l0aCBzdWNjZXNz
L2ZhaWx1cmUgc3RhdHVzLgogICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRvICdh
cHBlbmRUbycgcGFyYW1ldGVyLgogICAgICAqIEBpbnRlcm5hbAogICAgICovCkBAIC00OTgsNyAr
NTI4LDcgQEAgcHVibGljOgogICAgICAqICAgICAgICAgICAgICAgICAgQ2FuIGJlIE5VTEwuCiAg
ICAgICogQHBhcmFtIHN0YXR1cyAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9m
YWlsdXJlIHN0YXR1cy4KICAgICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBw
ZW5kVG8nIHBhcmFtZXRlci4KLSAgICAgKiBAc3RhYmxlIDQuNAorICAgICAqIEBzdGFibGUgSUNV
IDQuNAogICAgICAqLwogICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyYgZm9ybWF0KGludDY0X3Qg
bnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcm
IGFwcGVuZFRvLApAQCAtNTE5LDE1ICs1NDksMTUgQEAgcHVibGljOgogICAgICAqICAgICAgICAg
ICAgICAgICAgQ2FuIGJlIE5VTEwuCiAgICAgICogQHBhcmFtIHN0YXR1cyAgICBPdXRwdXQgcGFy
YW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9mYWlsdXJlIHN0YXR1cy4KICAgICAgKiBAcmV0dXJuICAg
ICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4KLSAgICAgKiBAc3RhYmxl
IDQuNAorICAgICAqIEBzdGFibGUgSUNVIDQuNAogICAgICAqLwotICAgIHZpcnR1YWwgVW5pY29k
ZVN0cmluZyYgZm9ybWF0KGNvbnN0IFN0cmluZ1BpZWNlICZudW1iZXIsCisgICAgdmlydHVhbCBV
bmljb2RlU3RyaW5nJiBmb3JtYXQoU3RyaW5nUGllY2UgbnVtYmVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb25JdGVyYXRvciogcG9zSXRlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0
OwogcHVibGljOgogICAgIC8qKgotICAgICAqIEZvcm1hdCBhIGRlY2ltYWwgbnVtYmVyLiAKKyAg
ICAgKiBGb3JtYXQgYSBkZWNpbWFsIG51bWJlci4KICAgICAgKiBUaGUgbnVtYmVyIGlzIGEgRGln
aXRMaXN0IHdyYXBwZXIgb250byBhIGZsb2F0aW5nIHBvaW50IGRlY2ltYWwgbnVtYmVyLgogICAg
ICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGluIE51bWJlckZvcm1hdCBjb252ZXJ0cyB0
aGUgZGVjaW1hbCBudW1iZXIKICAgICAgKiB0byBhIGRvdWJsZSBhbmQgZm9ybWF0cyB0aGF0LiAg
U3ViY2xhc3NlcyBvZiBOdW1iZXJGb3JtYXQgdGhhdCB3YW50CkBAIC01NDksNyArNTc5LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0
YXR1cykgY29uc3Q7CiAKICAgICAvKioKLSAgICAgKiBGb3JtYXQgYSBkZWNpbWFsIG51bWJlci4g
CisgICAgICogRm9ybWF0IGEgZGVjaW1hbCBudW1iZXIuCiAgICAgICogVGhlIG51bWJlciBpcyBh
IERpZ2l0TGlzdCB3cmFwcGVyIG9udG8gYSBmbG9hdGluZyBwb2ludCBkZWNpbWFsIG51bWJlci4K
ICAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpbiBOdW1iZXJGb3JtYXQgY29udmVy
dHMgdGhlIGRlY2ltYWwgbnVtYmVyCiAgICAgICogdG8gYSBkb3VibGUgYW5kIGZvcm1hdHMgdGhh
dC4gIFN1YmNsYXNzZXMgb2YgTnVtYmVyRm9ybWF0IHRoYXQgd2FudApAQCAtNjU5LDggKzY4OSw4
IEBAIHB1YmxpYzoKICAgICAvKioKICAgICAgKiBTZXRzIHdoZXRoZXIgbGVuaWVudCBwYXJzaW5n
IHNob3VsZCBiZSBlbmFibGVkIChpdCBpcyBvZmYgYnkgZGVmYXVsdCkuCiAgICAgICoKLSAgICAg
KiBAcGFyYW0gZW5hYmxlIDxjb2RlPlRSVUU8L2NvZGU+IGlmIGxlbmllbnQgcGFyc2luZyBzaG91
bGQgYmUgdXNlZCwKLSAgICAgKiAgICAgICAgICAgICAgIDxjb2RlPkZBTFNFPC9jb2RlPiBvdGhl
cndpc2UuCisgICAgICogQHBhcmFtIGVuYWJsZSBcYyBUUlVFIGlmIGxlbmllbnQgcGFyc2luZyBz
aG91bGQgYmUgdXNlZCwKKyAgICAgKiAgICAgICAgICAgICAgIFxjIEZBTFNFIG90aGVyd2lzZS4K
ICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGVu
aWVudChVQm9vbCBlbmFibGUpOwpAQCAtNjY4LDI4ICs2OTgsMjMgQEAgcHVibGljOgogICAgIC8q
KgogICAgICAqIFJldHVybnMgd2hldGhlciBsZW5pZW50IHBhcnNpbmcgaXMgZW5hYmxlZCAoaXQg
aXMgb2ZmIGJ5IGRlZmF1bHQpLgogICAgICAqCi0gICAgICogQHJldHVybiA8Y29kZT5UUlVFPC9j
b2RlPiBpZiBsZW5pZW50IHBhcnNpbmcgaXMgZW5hYmxlZCwKLSAgICAgKiAgICAgICAgIDxjb2Rl
PkZBTFNFPC9jb2RlPiBvdGhlcndpc2UuCisgICAgICogQHJldHVybiBcYyBUUlVFIGlmIGxlbmll
bnQgcGFyc2luZyBpcyBlbmFibGVkLAorICAgICAqICAgICAgICAgXGMgRkFMU0Ugb3RoZXJ3aXNl
LgogICAgICAqIEBzZWUgI3NldExlbmllbnQKICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAg
Ki8KICAgICB2aXJ0dWFsIFVCb29sIGlzTGVuaWVudCh2b2lkKSBjb25zdDsKIAogICAgIC8qKgot
ICAgICAqIFJldHVybnMgdGhlIGRlZmF1bHQgbnVtYmVyIGZvcm1hdCBmb3IgdGhlIGN1cnJlbnQg
ZGVmYXVsdAotICAgICAqIGxvY2FsZS4gIFRoZSBkZWZhdWx0IGZvcm1hdCBpcyBvbmUgb2YgdGhl
IHN0eWxlcyBwcm92aWRlZCBieQotICAgICAqIHRoZSBvdGhlciBmYWN0b3J5IG1ldGhvZHM6IGdl
dE51bWJlckluc3RhbmNlLAotICAgICAqIGdldEN1cnJlbmN5SW5zdGFuY2Ugb3IgZ2V0UGVyY2Vu
dEluc3RhbmNlLiAgRXhhY3RseSB3aGljaCBvbmUKLSAgICAgKiBpcyBsb2NhbGUgZGVwZW5kYW50
LgorICAgICAqIENyZWF0ZSBhIGRlZmF1bHQgc3R5bGUgTnVtYmVyRm9ybWF0IGZvciB0aGUgY3Vy
cmVudCBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBUaGUgZGVmYXVsdCBmb3JtYXR0aW5nIHN0eWxl
IGlzIGxvY2FsZSBkZXBlbmRlbnQuCiAgICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAgICovCiAg
ICAgc3RhdGljIE51bWJlckZvcm1hdCogVV9FWFBPUlQyIGNyZWF0ZUluc3RhbmNlKFVFcnJvckNv
ZGUmKTsKIAogICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIGRlZmF1bHQgbnVtYmVyIGZvcm1h
dCBmb3IgdGhlIHNwZWNpZmllZCBsb2NhbGUuCi0gICAgICogVGhlIGRlZmF1bHQgZm9ybWF0IGlz
IG9uZSBvZiB0aGUgc3R5bGVzIHByb3ZpZGVkIGJ5IHRoZSBvdGhlcgotICAgICAqIGZhY3Rvcnkg
bWV0aG9kczogZ2V0TnVtYmVySW5zdGFuY2UsIGdldEN1cnJlbmN5SW5zdGFuY2Ugb3IKLSAgICAg
KiBnZXRQZXJjZW50SW5zdGFuY2UuICBFeGFjdGx5IHdoaWNoIG9uZSBpcyBsb2NhbGUgZGVwZW5k
YW50LgorICAgICAqIENyZWF0ZSBhIGRlZmF1bHQgc3R5bGUgTnVtYmVyRm9ybWF0IGZvciB0aGUg
c3BlY2lmaWVkIGxvY2FsZS4KKyAgICAgKiBUaGUgZGVmYXVsdCBmb3JtYXR0aW5nIHN0eWxlIGlz
IGxvY2FsZSBkZXBlbmRlbnQuCiAgICAgICogQHBhcmFtIGluTG9jYWxlICAgIHRoZSBnaXZlbiBs
b2NhbGUuCiAgICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAgICovCkBAIC02OTcsNyArNzIyLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUmKTsKIAogICAgIC8qKgotICAgICAqIENyZWF0ZXMgdGhlIHNwZWNpZmllZCBkZWNpbWFs
IGZvcm1hdCBzdHlsZSBvZiB0aGUgZGVzaXJlZCBsb2NhbGUuCisgICAgICogQ3JlYXRlIGEgc3Bl
Y2lmaWMgc3R5bGUgTnVtYmVyRm9ybWF0IGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KICAgICAg
KiBAcGFyYW0gZGVzaXJlZExvY2FsZSAgICB0aGUgZ2l2ZW4gbG9jYWxlLgogICAgICAqIEBwYXJh
bSBzdHlsZSAgICAgICAgICAgIHRoZSBnaXZlbiBzdHlsZS4KICAgICAgKiBAcGFyYW0gZXJyb3JD
b2RlICAgICAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9mYWlsdXJlIHN0YXR1
cy4KQEAgLTgyMSw3ICs4NDYsNyBAQCBwdWJsaWM6CiAgICAgICogUmV0dXJucyB0cnVlIGlmIGdy
b3VwaW5nIGlzIHVzZWQgaW4gdGhpcyBmb3JtYXQuIEZvciBleGFtcGxlLAogICAgICAqIGluIHRo
ZSBFbmdsaXNoIGxvY2FsZSwgd2l0aCBncm91cGluZyBvbiwgdGhlIG51bWJlciAxMjM0NTY3CiAg
ICAgICogbWlnaHQgYmUgZm9ybWF0dGVkIGFzICIxLDIzNCw1NjciLiBUaGUgZ3JvdXBpbmcgc2Vw
YXJhdG9yIGFzCi0gICAgICogd2VsbCBhcyB0aGUgc2l6ZSBvZiBlYWNoIGdyb3VwIGlzIGxvY2Fs
ZSBkZXBlbmRhbnQgYW5kIGlzCisgICAgICogd2VsbCBhcyB0aGUgc2l6ZSBvZiBlYWNoIGdyb3Vw
IGlzIGxvY2FsZSBkZXBlbmRlbnQgYW5kIGlzCiAgICAgICogZGV0ZXJtaW5lZCBieSBzdWItY2xh
c3NlcyBvZiBOdW1iZXJGb3JtYXQuCiAgICAgICogQHNlZSBzZXRHcm91cGluZ1VzZWQKICAgICAg
KiBAc3RhYmxlIElDVSAyLjAKQEAgLTkzOCw3ICs5NjMsNyBAQCBwdWJsaWM6CiAgICAgICogQHBh
cmFtIGVjIGlucHV0LW91dHB1dCBlcnJvciBjb2RlCiAgICAgICogQHN0YWJsZSBJQ1UgMy4wCiAg
ICAgICovCi0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbmN5KGNvbnN0IFVDaGFyKiB0aGVDdXJy
ZW5jeSwgVUVycm9yQ29kZSYgZWMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW5jeShjb25z
dCBjaGFyMTZfdCogdGhlQ3VycmVuY3ksIFVFcnJvckNvZGUmIGVjKTsKIAogICAgIC8qKgogICAg
ICAqIEdldHMgdGhlIGN1cnJlbmN5IHVzZWQgdG8gZGlzcGxheSBjdXJyZW5jeQpAQCAtOTQ3LDcg
Kzk3Miw3IEBAIHB1YmxpYzoKICAgICAgKiB0aGUgY3VycmVuY3kgaW4gdXNlLCBvciBhIHBvaW50
ZXIgdG8gdGhlIGVtcHR5IHN0cmluZy4KICAgICAgKiBAc3RhYmxlIElDVSAyLjYKICAgICAgKi8K
LSAgICBjb25zdCBVQ2hhciogZ2V0Q3VycmVuY3koKSBjb25zdDsKKyAgICBjb25zdCBjaGFyMTZf
dCogZ2V0Q3VycmVuY3koKSBjb25zdDsKIAkKICAgICAvKioKICAgICAgKiBTZXQgYSBwYXJ0aWN1
bGFyIFVEaXNwbGF5Q29udGV4dCB2YWx1ZSBpbiB0aGUgZm9ybWF0dGVyLCBzdWNoIGFzCkBAIC05
NTUsNyArOTgwLDcgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgVURpc3BsYXlD
b250ZXh0IHZhbHVlIHRvIHNldC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElucHV0L291dHB1dCBz
dGF0dXMuIElmIGF0IGVudHJ5IHRoaXMgaW5kaWNhdGVzIGEgZmFpbHVyZQogICAgICAqICAgICAg
ICAgICAgICAgc3RhdHVzLCB0aGUgZnVuY3Rpb24gd2lsbCBkbyBub3RoaW5nOyBvdGhlcndpc2Ug
dGhpcyB3aWxsIGJlCi0gICAgICogICAgICAgICAgICAgICB1cGRhdGVkIHdpdGggYW55IG5ldyBz
dGF0dXMgZnJvbSB0aGUgZnVuY3Rpb24uIAorICAgICAqICAgICAgICAgICAgICAgdXBkYXRlZCB3
aXRoIGFueSBuZXcgc3RhdHVzIGZyb20gdGhlIGZ1bmN0aW9uLgogICAgICAqIEBzdGFibGUgSUNV
IDUzCiAgICAgICovCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHQoVURpc3BsYXlDb250ZXh0
IHZhbHVlLCBVRXJyb3JDb2RlJiBzdGF0dXMpOwpAQCAtOTY2LDEyICs5OTEsMjcgQEAgcHVibGlj
OgogICAgICAqIEBwYXJhbSB0eXBlIFRoZSBVRGlzcGxheUNvbnRleHRUeXBlIHdob3NlIHZhbHVl
IHRvIHJldHVybgogICAgICAqIEBwYXJhbSBzdGF0dXMgSW5wdXQvb3V0cHV0IHN0YXR1cy4gSWYg
YXQgZW50cnkgdGhpcyBpbmRpY2F0ZXMgYSBmYWlsdXJlCiAgICAgICogICAgICAgICAgICAgICBz
dGF0dXMsIHRoZSBmdW5jdGlvbiB3aWxsIGRvIG5vdGhpbmc7IG90aGVyd2lzZSB0aGlzIHdpbGwg
YmUKLSAgICAgKiAgICAgICAgICAgICAgIHVwZGF0ZWQgd2l0aCBhbnkgbmV3IHN0YXR1cyBmcm9t
IHRoZSBmdW5jdGlvbi4gCisgICAgICogICAgICAgICAgICAgICB1cGRhdGVkIHdpdGggYW55IG5l
dyBzdGF0dXMgZnJvbSB0aGUgZnVuY3Rpb24uCiAgICAgICogQHJldHVybiBUaGUgVURpc3BsYXlD
b250ZXh0VmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgdHlwZS4KICAgICAgKiBAc3RhYmxlIElDVSA1
MwogICAgICAqLwogICAgIHZpcnR1YWwgVURpc3BsYXlDb250ZXh0IGdldENvbnRleHQoVURpc3Bs
YXlDb250ZXh0VHlwZSB0eXBlLCBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OwogCisgICAgLyoq
CisgICAgICogR2V0IHRoZSByb3VuZGluZyBtb2RlLiBUaGlzIHdpbGwgYWx3YXlzIHJldHVybiBO
dW1iZXJGb3JtYXQ6OkVSb3VuZGluZ01vZGU6OmtSb3VuZFVubmVjZXNzYXJ5CisgICAgICogaWYg
dGhlIHN1YmNsYXNzIGRvZXMgbm90IHN1cHBvcnQgcm91bmRpbmcuIAorICAgICAqIEByZXR1cm4g
QSByb3VuZGluZyBtb2RlCisgICAgICogQGRyYWZ0IElDVSA2MAorICAgICAqLworICAgIHZpcnR1
YWwgRVJvdW5kaW5nTW9kZSBnZXRSb3VuZGluZ01vZGUodm9pZCkgY29uc3Q7CisKKyAgICAvKioK
KyAgICAgKiBTZXQgdGhlIHJvdW5kaW5nIG1vZGUuIElmIGEgc3ViY2xhc3MgZG9lcyBub3Qgc3Vw
cG9ydCByb3VuZGluZywgdGhpcyB3aWxsIGRvIG5vdGhpbmcuCisgICAgICogQHBhcmFtIHJvdW5k
aW5nTW9kZSBBIHJvdW5kaW5nIG1vZGUKKyAgICAgKiBAZHJhZnQgSUNVIDYwCisgICAgICovCisg
ICAgdmlydHVhbCB2b2lkIHNldFJvdW5kaW5nTW9kZShFUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9k
ZSk7CisKIHB1YmxpYzoKIAogICAgIC8qKgpAQCAtMTAyNSw3ICsxMDY1LDcgQEAgcHJvdGVjdGVk
OgogICAgICAqIGhhdmUgYSBjYXBhY2l0eSBvZiBhdCBsZWFzdCA0CiAgICAgICogQGludGVybmFs
CiAgICAgICovCi0gICAgdmlydHVhbCB2b2lkIGdldEVmZmVjdGl2ZUN1cnJlbmN5KFVDaGFyKiBy
ZXN1bHQsIFVFcnJvckNvZGUmIGVjKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RWZmZWN0
aXZlQ3VycmVuY3koY2hhcjE2X3QqIHJlc3VsdCwgVUVycm9yQ29kZSYgZWMpIGNvbnN0OwogCiAj
aWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAgICAvKioKQEAgLTEwNjIsMTUgKzExMDIsMTcg
QEAgcHJpdmF0ZToKICAgICBpbnQzMl90ICAgICBmTWluRnJhY3Rpb25EaWdpdHM7CiAKICAgcHJv
dGVjdGVkOgorICAgIC8qKiBcaW50ZXJuYWwgKi8KICAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBn
RGVmYXVsdE1heEludGVnZXJEaWdpdHM7CisgICAgLyoqIFxpbnRlcm5hbCAqLwogICAgIHN0YXRp
YyBjb25zdCBpbnQzMl90IGdEZWZhdWx0TWluSW50ZWdlckRpZ2l0czsKLSAKKwogICBwcml2YXRl
OgogICAgIFVCb29sICAgICAgZlBhcnNlSW50ZWdlck9ubHk7CiAgICAgVUJvb2wgICAgICBmTGVu
aWVudDsgLy8gVFJVRSA9PiBsZW5pZW50IHBhcnNlIGlzIGVuYWJsZWQKIAogICAgIC8vIElTTyBj
dXJyZW5jeSBjb2RlCi0gICAgVUNoYXIgICAgICBmQ3VycmVuY3lbNF07CisgICAgY2hhcjE2X3Qg
ICAgICBmQ3VycmVuY3lbNF07CiAKICAgICBVRGlzcGxheUNvbnRleHQgZkNhcGl0YWxpemF0aW9u
Q29udGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9udW1zeXMuaCBi
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbnVtc3lzLmgKaW5kZXggZGVlZGEyY2FiY2RlMzRkZDMz
MDQyYWQ3MWJkOGQ3ODhjZTgyZTA2OS4uOWVjM2YxM2ZkMTBiM2UxNWRiYTgyYjZlZWUzOWFjMzRj
MDM0MjZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9udW1zeXMuaAorKysg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL251bXN5cy5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkg
MjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0
ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE0LCBJbnRlcm5h
dGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZApAQCAtMTkxLDcgKzE5Myw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldEFsZ29yaXRobWljKFVCb29sIGFsZ29yaXRobWlj
KTsKIAotICAgIHZvaWQgc2V0RGVzYyhVbmljb2RlU3RyaW5nIGRlc2MpOworICAgIHZvaWQgc2V0
RGVzYyhjb25zdCBVbmljb2RlU3RyaW5nICZkZXNjKTsKIAogICAgIHZvaWQgc2V0TmFtZShjb25z
dCBjaGFyKiBuYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9wYXJz
ZWVyci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9wYXJzZWVyci5oCmluZGV4IDQ0ZmYwMDgx
MWRlN2JjNTliMzJlZDQ2NzcwNTBmYjdlMWI0ZjExM2IuLmZjMWUzZjRjOGU2MGExZmViYTEyYTRi
NzIxOTRiMWRmNzU3MGFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcGFy
c2VlcnIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3BhcnNlZXJyLmgKQEAgLTEsMyAr
MSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgor
Ly8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmln
aHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSwg
SW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9wYXJzZXBvcy5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9wYXJzZXBvcy5o
CmluZGV4IGNkZjQ5ZTA0ZWMyN2MyNjY2ZTdkNDEzZDBhZGViZWU0ZDUzZGM3Y2QuLmJiZWJjYTdi
NTcxM2EyYWExMmQyZmExZmQ0MzMxYzFlMzIxYTQ0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvcGFyc2Vwb3MuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3BhcnNl
cG9zLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5j
LiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICogQ29weXJpZ2h0IChDKSAxOTk3LTIwMDUsIElu
dGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvcGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
cGxhdGZvcm0uaAppbmRleCA0ODI5MDAwNjlkMTBjYTg3MjY5M2VhODE5YzVlNDM0ZWY0Y2VlZDJj
Li5mMjIwYjFmYzM0ZDhlMmE5MDc3MWI0OWFlZWU0YjIyOTBiZjhiZmNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9wbGF0Zm9ybS5oCkBAIC0xLDcgKzEsOSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVu
aWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6
Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKICoKLSogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVz
cyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1
c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEzMCw2ICsxMzIsOCBAQAog
I2RlZmluZSBVX1BGX0JST1dTRVJfTkFUSVZFX0NMSUVOVCA0MDIwCiAvKiogQW5kcm9pZCBpcyBi
YXNlZCBvbiBMaW51eC4gQGludGVybmFsICovCiAjZGVmaW5lIFVfUEZfQU5EUk9JRCA0MDUwCisv
KiogRnVjaHNpYSBpcyBhIFBPU0lYLWlzaCBwbGF0Zm9ybS4gQGludGVybmFsICovCisjZGVmaW5l
IFVfUEZfRlVDSFNJQSA0MTAwCiAvKiBNYXhpbXVtIHZhbHVlIGZvciBMaW51eC1iYXNlZCBwbGF0
Zm9ybSBpcyA0NDk5ICovCiAvKiogei9PUyBpcyB0aGUgc3VjY2Vzc29yIHRvIE9TLzM5MCB3aGlj
aCB3YXMgdGhlIHN1Y2Nlc3NvciB0byBNVlMuIEBpbnRlcm5hbCAqLwogI2RlZmluZSBVX1BGX09T
MzkwIDkwMDAKQEAgLTE0OCw4ICsxNTIsMTAgQEAKICMgICBkZWZpbmUgVV9QTEFURk9STSBVX1BG
X0FORFJPSUQKICAgICAvKiBBbmRyb2lkIHdjaGFyX3Qgc3VwcG9ydCBkZXBlbmRzIG9uIHRoZSBB
UEkgbGV2ZWwuICovCiAjICAgaW5jbHVkZSA8YW5kcm9pZC9hcGktbGV2ZWwuaD4KLSNlbGlmIGRl
ZmluZWQoX19uYXRpdmVfY2xpZW50X18pCisjZWxpZiBkZWZpbmVkKF9fcG5hY2xfXykgfHwgZGVm
aW5lZChfX25hdGl2ZV9jbGllbnRfXykKICMgICBkZWZpbmUgVV9QTEFURk9STSBVX1BGX0JST1dT
RVJfTkFUSVZFX0NMSUVOVAorI2VsaWYgZGVmaW5lZChfX0Z1Y2hzaWFfXykKKyMgICBkZWZpbmUg
VV9QTEFURk9STSBVX1BGX0ZVQ0hTSUEKICNlbGlmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQo
X19saW51eF9fKSB8fCBkZWZpbmVkKF9fbGludXgpCiAjICAgZGVmaW5lIFVfUExBVEZPUk0gVV9Q
Rl9MSU5VWAogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19NQUNIX18pCkBA
IC0xNjAsNiArMTY2LDkgQEAKICMgICAgICAgZGVmaW5lIFVfUExBVEZPUk0gVV9QRl9EQVJXSU4K
ICMgICBlbmRpZgogI2VsaWYgZGVmaW5lZChCU0QpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRl
ZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX19NaXJCU0RfXykKKyMgICBpZiBkZWZpbmVk
KF9fRnJlZUJTRF9fKQorIyAgICAgICBpbmNsdWRlIDxzeXMvZW5kaWFuLmg+CisjICAgZW5kaWYK
ICMgICBkZWZpbmUgVV9QTEFURk9STSBVX1BGX0JTRAogI2VsaWYgZGVmaW5lZChzdW4pIHx8IGRl
ZmluZWQoX19zdW4pCiAgICAgLyogQ2hlY2sgZGVmaW5lZChfX1NWUjQpIHx8IGRlZmluZWQoX19z
dnI0X18pIHRvIGRpc3Rpbmd1aXNoIFNvbGFyaXMgZnJvbSBTdW5PUz8gKi8KQEAgLTE4Nyw2ICsx
OTYsMjAgQEAKICMgICBkZWZpbmUgVV9QTEFURk9STSBVX1BGX1VOS05PV04KICNlbmRpZgogCisv
KioKKyAqIFxkZWYgVVBSVl9JTkNPTVBMRVRFX0NQUDExX1NVUFBPUlQKKyAqIFRoaXMgc3dpdGNo
IHR1cm5zIG9mZiBJQ1UgNjAgTnVtYmVyRm9ybWF0dGVyIGNvZGUuCisgKiBCeSBkZWZhdWx0LCB0
aGlzIHN3aXRjaCBpcyBlbmFibGVkIG9uIEFJWCBhbmQgei9PUywKKyAqIHdoaWNoIGhhdmUgcG9v
ciBDKysxMSBzdXBwb3J0LgorICoKKyAqIE5PVEU6IFRoaXMgc3dpdGNoIGlzIGludGVuZGVkIHRv
IGJlIHRlbXBvcmFyeTsgc2VlICMxMzM5My4KKyAqCisgKiBAaW50ZXJuYWwKKyAqLworI2lmbmRl
ZiBVUFJWX0lOQ09NUExFVEVfQ1BQMTFfU1VQUE9SVAorIyAgIGRlZmluZSBVUFJWX0lOQ09NUExF
VEVfQ1BQMTFfU1VQUE9SVCAoVV9QTEFURk9STSA9PSBVX1BGX0FJWCB8fCBVX1BMQVRGT1JNID09
IFVfUEZfT1MzOTAgfHwgVV9QTEFURk9STSA9PSBVX1BGX1NPTEFSSVMgKQorI2VuZGlmCisKIC8q
KgogICogXGRlZiBDWUdXSU5NU1ZDCiAgKiBEZWZpbmVkIGlmIHRoaXMgaXMgV2luZG93cyB3aXRo
IEN5Z3dpbiwgYnV0IHVzaW5nIE1TVkMgcmF0aGVyIHRoYW4gZ2NjLgpAQCAtMjI4LDYgKzI1MSwx
OCBAQAogIyAgIGRlZmluZSBVX1BMQVRGT1JNX0hBU19XSU4zMl9BUEkgMAogI2VuZGlmCiAKKy8q
KgorICogXGRlZiBVX1BMQVRGT1JNX0hBU19XSU5VV1BfQVBJCisgKiBEZWZpbmVzIHdoZXRoZXIg
dGFyZ2V0IGlzIGludGVuZGVkIGZvciBVbml2ZXJzYWwgV2luZG93cyBQbGF0Zm9ybSBBUEkKKyAq
IFNldCB0byAxIGZvciBXaW5kb3dzMTAgUmVsZWFzZSBTb2x1dGlvbiBDb25maWd1cmF0aW9uCisg
KiBAaW50ZXJuYWwKKyAqLworI2lmZGVmIFVfUExBVEZPUk1fSEFTX1dJTlVXUF9BUEkKKyAgICAv
KiBVc2UgdGhlIHByZWRlZmluZWQgdmFsdWUuICovCisjZWxzZQorIyAgIGRlZmluZSBVX1BMQVRG
T1JNX0hBU19XSU5VV1BfQVBJIDAKKyNlbmRpZgorCiAvKioKICAqIFxkZWYgVV9QTEFURk9STV9J
TVBMRU1FTlRTX1BPU0lYCiAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIHBsYXRmb3JtIGltcGxlbWVu
dHMgKG1vc3Qgb2YpIHRoZSBQT1NJWCBBUEkuCkBAIC0zMTMsNDIgKzM0OCw2IEBACiAjICAgZGVm
aW5lIFVfSEFWRV9JTlRUWVBFU19IIFVfSEFWRV9TVERJTlRfSAogI2VuZGlmCiAKLS8qKgotICog
XGRlZiBVX0lPU1RSRUFNX1NPVVJDRQotICogRGVmaW5lcyB3aGF0IHN1cHBvcnQgZm9yIEMrKyBz
dHJlYW1zIGlzIGF2YWlsYWJsZS4KLSAqCi0gKiBJZiBVX0lPU1RSRUFNX1NPVVJDRSBpcyBzZXQg
dG8gMTk5NzExLCB0aGVuICZsdDtpb3N0cmVhbSZndDsgaXMgYXZhaWxhYmxlCi0gKiAodGhlIElT
Ty9JRUMgQysrIEZESVMgd2FzIHB1Ymxpc2hlZCBpbiBOb3ZlbWJlciAxOTk3KSwgYW5kIHRoZW4K
LSAqIG9uZSBzaG91bGQgcXVhbGlmeSBzdHJlYW1zIHVzaW5nIHRoZSBzdGQgbmFtZXNwYWNlIGlu
IElDVSBoZWFkZXIKLSAqIGZpbGVzLgotICogU3RhcnRpbmcgd2l0aCBJQ1UgNDksIHRoaXMgaXMg
dGhlIG9ubHkgc3VwcG9ydGVkIHZlcnNpb24uCi0gKgotICogSWYgVV9JT1NUUkVBTV9TT1VSQ0Ug
aXMgc2V0IHRvIDE5ODUwNiwgdGhlbiAmbHQ7aW9zdHJlYW0uaCZndDsgaXMKLSAqIGF2YWlsYWJs
ZSBpbnN0ZWFkIChpbiBKdW5lIDE5ODUgU3Ryb3VzdHJ1cCBwdWJsaXNoZWQKLSAqICJBbiBFeHRl
bnNpYmxlIEkvTyBGYWNpbGl0eSBmb3IgQysrIiBhdCB0aGUgc3VtbWVyIFVTRU5JWCBjb25mZXJl
bmNlKS4KLSAqIFN0YXJ0aW5nIHdpdGggSUNVIDQ5LCB0aGlzIHZlcnNpb24gaXMgbm90IHN1cHBv
cnRlZCBhbnkgbW9yZS4KLSAqCi0gKiBJZiBVX0lPU1RSRUFNX1NPVVJDRSBpcyAwIChvciBhbnkg
dmFsdWUgbGVzcyB0aGFuIDE5OTcxMSksCi0gKiB0aGVuIEMrKyBzdHJlYW1zIGFyZSBub3QgYXZh
aWxhYmxlIGFuZAotICogc3VwcG9ydCBmb3IgdGhlbSB3aWxsIGJlIHNpbGVudGx5IHN1cHByZXNz
ZWQgaW4gSUNVLgotICoKLSAqIEBpbnRlcm5hbAotICovCi0jaWZuZGVmIFVfSU9TVFJFQU1fU09V
UkNFCi0jZGVmaW5lIFVfSU9TVFJFQU1fU09VUkNFIDE5OTcxMQotI2VuZGlmCi0KLS8qKgotICog
XGRlZiBVX0hBVkVfU1REX1NUUklORwotICogRGVmaW5lcyB3aGV0aGVyIHRoZSBzdGFuZGFyZCBD
KysgKFNUTCkgJmx0O3N0cmluZyZndDsgaGVhZGVyIGlzIGF2YWlsYWJsZS4KLSAqIEBpbnRlcm5h
bAotICovCi0jaWZkZWYgVV9IQVZFX1NURF9TVFJJTkcKLSAgICAvKiBVc2UgdGhlIHByZWRlZmlu
ZWQgdmFsdWUuICovCi0jZWxzZQotIyAgIGRlZmluZSBVX0hBVkVfU1REX1NUUklORyAxCi0jZW5k
aWYKLQogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogLyoqIEB7IENvbXBpbGVyIGFuZCBlbnZpcm9u
bWVudCBmZWF0dXJlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0qLwpAQCAtNDI1LDEwICs0MjQsMjUgQEAKICMgICBkZWZpbmUgVV9I
QVZFX0RFQlVHX0xPQ0FUSU9OX05FVyAwCiAjZW5kaWYKIAotLyogQ29tcGF0aWJpbGl0eSB3aXRo
IG5vbiBjbGFuZyBjb21waWxlcnMgKi8KKy8qIENvbXBhdGliaWxpdHkgd2l0aCBjb21waWxlcnMg
b3RoZXIgdGhhbiBjbGFuZzogaHR0cDovL2NsYW5nLmxsdm0ub3JnL2RvY3MvTGFuZ3VhZ2VFeHRl
bnNpb25zLmh0bWwgKi8KICNpZm5kZWYgX19oYXNfYXR0cmlidXRlCiAjICAgIGRlZmluZSBfX2hh
c19hdHRyaWJ1dGUoeCkgMAogI2VuZGlmCisjaWZuZGVmIF9faGFzX2NwcF9hdHRyaWJ1dGUKKyMg
ICAgZGVmaW5lIF9faGFzX2NwcF9hdHRyaWJ1dGUoeCkgMAorI2VuZGlmCisjaWZuZGVmIF9faGFz
X2J1aWx0aW4KKyMgICAgZGVmaW5lIF9faGFzX2J1aWx0aW4oeCkgMAorI2VuZGlmCisjaWZuZGVm
IF9faGFzX2ZlYXR1cmUKKyMgICAgZGVmaW5lIF9faGFzX2ZlYXR1cmUoeCkgMAorI2VuZGlmCisj
aWZuZGVmIF9faGFzX2V4dGVuc2lvbgorIyAgICBkZWZpbmUgX19oYXNfZXh0ZW5zaW9uKHgpIDAK
KyNlbmRpZgorI2lmbmRlZiBfX2hhc193YXJuaW5nCisjICAgIGRlZmluZSBfX2hhc193YXJuaW5n
KHgpIDAKKyNlbmRpZgogCiAvKioKICAqIFxkZWYgVV9NQUxMT0NfQVRUUgpAQCAtNDU0LDYgKzQ2
OCw3NyBAQAogIyAgIGRlZmluZSBVX0FMTE9DX1NJWkVfQVRUUjIoWCxZKQogI2VuZGlmCiAKKy8q
KgorICogXGRlZiBVX0NQTFVTUExVU19WRVJTSU9OCisgKiAwIGlmIG5vIEMrKzsgMSwgMTEsIDE0
LCAuLi4gaWYgQysrLgorICogU3VwcG9ydCBmb3Igc3BlY2lmaWMgZmVhdHVyZXMgY2Fubm90IGFs
d2F5cyBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBDKysgdmVyc2lvbiBhbG9uZS4KKyAqIEBpbnRlcm5h
bAorICovCisjaWZkZWYgVV9DUExVU1BMVVNfVkVSU0lPTgorIyAgIGlmIFVfQ1BMVVNQTFVTX1ZF
UlNJT04gIT0gMCAmJiAhZGVmaW5lZChfX2NwbHVzcGx1cykKKyMgICAgICAgdW5kZWYgVV9DUExV
U1BMVVNfVkVSU0lPTgorIyAgICAgICBkZWZpbmUgVV9DUExVU1BMVVNfVkVSU0lPTiAwCisjICAg
ZW5kaWYKKyAgICAvKiBPdGhlcndpc2UgdXNlIHRoZSBwcmVkZWZpbmVkIHZhbHVlLiAqLworI2Vs
aWYgIWRlZmluZWQoX19jcGx1c3BsdXMpCisjICAgZGVmaW5lIFVfQ1BMVVNQTFVTX1ZFUlNJT04g
MAorI2VsaWYgX19jcGx1c3BsdXMgPj0gMjAxNDAyTAorIyAgIGRlZmluZSBVX0NQTFVTUExVU19W
RVJTSU9OIDE0CisjZWxpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCisjICAgZGVmaW5lIFVfQ1BM
VVNQTFVTX1ZFUlNJT04gMTEKKyNlbHNlCisgICAgLy8gQysrOTggb3IgQysrMDMKKyMgICBkZWZp
bmUgVV9DUExVU1BMVVNfVkVSU0lPTiAxCisjZW5kaWYKKworI2lmIChVX1BMQVRGT1JNID09IFVf
UEZfQUlYIHx8IFVfUExBVEZPUk0gPT0gVV9QRl9PUzM5MCkgJiYgZGVmaW5lZChfX2NwbHVzcGx1
cykgJiYoVV9DUExVU1BMVVNfVkVSU0lPTiA8IDExKQorLy8gYWRkIGluIHN0ZDo6bnVsbHB0cl90
CituYW1lc3BhY2Ugc3RkIHsKKyAgdHlwZWRlZiBkZWNsdHlwZShudWxscHRyKSBudWxscHRyX3Q7
Cit9OworI2VuZGlmCisKKy8qKgorICogXGRlZiBVX05PRVhDRVBUCisgKiAibm9leGNlcHQiIGlm
IHN1cHBvcnRlZCwgb3RoZXJ3aXNlIGVtcHR5LgorICogU29tZSBjb2RlLCBlc3BlY2lhbGx5IFNU
TCBjb250YWluZXJzLCB1c2VzIG1vdmUgc2VtYW50aWNzIG9mIG9iamVjdHMgb25seQorICogaWYg
dGhlIG1vdmUgY29uc3RydWN0b3IgYW5kIHRoZSBtb3ZlIG9wZXJhdG9yIGFyZSBkZWNsYXJlZCBh
cyBub3QgdGhyb3dpbmcgZXhjZXB0aW9ucy4KKyAqIEBpbnRlcm5hbAorICovCisjaWZkZWYgVV9O
T0VYQ0VQVAorICAgIC8qIFVzZSB0aGUgcHJlZGVmaW5lZCB2YWx1ZS4gKi8KKyNlbGlmIGRlZmlu
ZWQoX0hBU19FWENFUFRJT05TKSAmJiAhX0hBU19FWENFUFRJT05TICAvKiBWaXN1YWwgU3R1ZGlv
ICovCisjICAgZGVmaW5lIFVfTk9FWENFUFQKKyNlbGlmIFVfQ1BMVVNQTFVTX1ZFUlNJT04gPj0g
MTEgfHwgX19oYXNfZmVhdHVyZShjeHhfbm9leGNlcHQpIHx8IF9faGFzX2V4dGVuc2lvbihjeHhf
bm9leGNlcHQpIFwKKyAgICAgICAgfHwgKGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49
IDE5MDApICAvKiBWaXN1YWwgU3R1ZGlvIDIwMTUgKi8KKyMgICBkZWZpbmUgVV9OT0VYQ0VQVCBu
b2V4Y2VwdAorI2Vsc2UKKyMgICBkZWZpbmUgVV9OT0VYQ0VQVAorI2VuZGlmCisKKy8qKgorICog
XGRlZiBVX0ZBTExUSFJPVUdICisgKiBBbm5vdGF0ZSBpbnRlbnRpb25hbCBmYWxsLXRocm91Z2gg
YmV0d2VlbiBzd2l0Y2ggbGFiZWxzLgorICogaHR0cDovL2NsYW5nLmxsdm0ub3JnL2RvY3MvQXR0
cmlidXRlUmVmZXJlbmNlLmh0bWwjZmFsbHRocm91Z2gtY2xhbmctZmFsbHRocm91Z2gKKyAqIEBp
bnRlcm5hbAorICovCisjaWZuZGVmIF9fY3BsdXNwbHVzCisgICAgLy8gTm90IGZvciBDLgorI2Vs
aWYgZGVmaW5lZChVX0ZBTExUSFJPVUdIKQorICAgIC8vIFVzZSB0aGUgcHJlZGVmaW5lZCB2YWx1
ZS4KKyNlbGlmIGRlZmluZWQoX19jbGFuZ19fKQorICAgIC8vIFRlc3QgZm9yIGNvbXBpbGVyIHZz
LiBmZWF0dXJlIHNlcGFyYXRlbHkuCisgICAgLy8gT3RoZXIgY29tcGlsZXJzIG1pZ2h0IGNob2tl
IG9uIHRoZSBmZWF0dXJlIHRlc3QuCisjICAgaWYgX19oYXNfY3BwX2F0dHJpYnV0ZShjbGFuZzo6
ZmFsbHRocm91Z2gpIHx8IFwKKyAgICAgICAgICAgIChfX2hhc19mZWF0dXJlKGN4eF9hdHRyaWJ1
dGVzKSAmJiBfX2hhc193YXJuaW5nKCItV2ltcGxpY2l0LWZhbGx0aHJvdWdoIikpCisjICAgICAg
IGRlZmluZSBVX0ZBTExUSFJPVUdIIFtbY2xhbmc6OmZhbGx0aHJvdWdoXV0KKyMgICBlbmRpZgor
I2VuZGlmCisKKyNpZm5kZWYgVV9GQUxMVEhST1VHSAorIyAgIGRlZmluZSBVX0ZBTExUSFJPVUdI
CisjZW5kaWYKKwogLyoqIEB9ICovCiAKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KQEAgLTY2OSw4
ICs3NTQsOSBAQAogICAgICAqIGdjYyA0LjQgZGVmaW5lcyB0aGUgX19DSEFSMTZfVFlQRV9fIG1h
Y3JvIHRvIGEgdXNhYmxlIHR5cGUgYnV0CiAgICAgICogZG9lcyBub3Qgc3VwcG9ydCB1ImFiYyIg
c3RyaW5nIGxpdGVyYWxzLgogICAgICAqIEMrKzExIGFuZCBDMTEgcmVxdWlyZSBzdXBwb3J0IGZv
ciBVVEYtMTYgbGl0ZXJhbHMKKyAgICAgKiBUT0RPOiBGaXggZm9yIHBsYWluIEMuIERvZXNuJ3Qg
d29yayBvbiBNYWMuCiAgICAgICovCi0jICAgaWYgKGRlZmluZWQoX19jcGx1c3BsdXMpICYmIF9f
Y3BsdXNwbHVzID49IDIwMTEwM0wpIHx8IChkZWZpbmVkKF9fU1REQ19WRVJTSU9OX18pICYmIF9f
U1REQ19WRVJTSU9OX18gPj0gMjAxMTEyTCkKKyMgICBpZiBVX0NQTFVTUExVU19WRVJTSU9OID49
IDExIHx8IChkZWZpbmVkKF9fU1REQ19WRVJTSU9OX18pICYmIF9fU1REQ19WRVJTSU9OX18gPj0g
MjAxMTEyTCkKICMgICAgICAgZGVmaW5lIFVfSEFWRV9DSEFSMTZfVCAxCiAjICAgZWxzZQogIyAg
ICAgICBkZWZpbmUgVV9IQVZFX0NIQVIxNl9UIDAKQEAgLTc0OCw2ICs4MzQsMTIgQEAKICAqIFRo
aXMgaXMgb25seSB1c2VkIGZvciBub24tSUNVLUFQSSBmdW5jdGlvbnMuCiAgKiBXaGVuIGEgZnVu
Y3Rpb24gaXMgYSBwdWJsaWMgSUNVIEFQSSwKICAqIHlvdSBtdXN0IHVzZSB0aGUgVV9DQVBJIGFu
ZCBVX0VYUE9SVDIgcXVhbGlmaWVycy4KKyAqCisgKiBQbGVhc2Ugbm90ZSwgeW91IG5lZWQgdG8g
dXNlIFVfQ0FMTENPTlYgYWZ0ZXIgdGhlICouCisgKgorICogTk8gOiAic3RhdGljIGNvbnN0IGNo
YXIgVV9DQUxMQ09OViAqZnVuYyggLiAuIC4gKSIKKyAqIFlFUzogInN0YXRpYyBjb25zdCBjaGFy
KiBVX0NBTExDT05WIGZ1bmMoIC4gLiAuICkiCisgKgogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8K
ICNpZiBVX1BMQVRGT1JNID09IFVfUEZfT1MzOTAgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKQEAg
LTc1Niw2ICs4NDgsMTYgQEAKICMgICAgZGVmaW5lIFVfQ0FMTENPTlYgVV9FWFBPUlQyCiAjZW5k
aWYKIAorLyoqCisgKiBcZGVmIFVfQ0FMTENPTlZfRlBUUgorICogU2ltaWxhciB0byBVX0NBTExD
T05WLCBidXQgb25seSB1c2VkIG9uIGZ1bmN0aW9uIHBvaW50ZXJzLgorICogQGludGVybmFsCisg
Ki8KKyNpZiBVX1BMQVRGT1JNID09IFVfUEZfT1MzOTAgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykK
KyMgICAgZGVmaW5lIFVfQ0FMTENPTlZfRlBUUiBVX0NBTExDT05WCisjZWxzZQorIyAgICBkZWZp
bmUgVV9DQUxMQ09OVl9GUFRSCisjZW5kaWYKIC8qIEB9ICovCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9wbHVyZm10LmggYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3BsdXJmbXQuaAppbmRleCBmNzA5OWQ4MWUyMzE0ZjIyMDM4ZjFkMTkyNzc3MWM0OTdjZGNi
ZjQ3Li5mZDUzN2MyNGMyMWI1ZGE1YzFhY2ExMjYzMTAxZjMyOTFkODMyYjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3BsdXJmbXQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3BsdXJmbXQuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBV
bmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRw
Oi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvcGx1cnJ1bGUuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcGx1cnJ1bGUuaAppbmRleCA2
ZDIxOWZiMmY3MzVhNTk4YTEwMjY5YjUzNDUxYWZkYjUyNDAwNzQ1Li5kMzcyZDc5Yzg0NTE3OTFm
N2VhM2ExMjAwODNhMGVhNGY1MzgzZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3BsdXJydWxlLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9wbHVycnVsZS5oCkBA
IC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAo
QykgMjAwOC0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9u
IGFuZApAQCAtMjcsNiArMjksOSBAQAogCiAjaW5jbHVkZSAidW5pY29kZS9mb3JtYXQuaCIKICNp
bmNsdWRlICJ1bmljb2RlL3VwbHVyYWxydWxlcy5oIgorI2lmbmRlZiBVX0hJREVfSU5URVJOQUxf
QVBJCisjaW5jbHVkZSAidW5pY29kZS9udW1mbXQuaCIKKyNlbmRpZiAgLyogVV9ISURFX0lOVEVS
TkFMX0FQSSAqLwogCiAvKioKICAqIFZhbHVlIHJldHVybmVkIGJ5IFBsdXJhbFJ1bGVzOjpnZXRV
bmlxdWVLZXl3b3JkVmFsdWUoKSB3aGVuIHRoZXJlIGlzIG5vCkBAIC0zOCw3ICs0Myw4IEBACiBV
X05BTUVTUEFDRV9CRUdJTgogCiBjbGFzcyBIYXNodGFibGU7Ci1jbGFzcyBGaXhlZERlY2ltYWw7
CitjbGFzcyBJRml4ZWREZWNpbWFsOworY2xhc3MgVmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudDsK
IGNsYXNzIFJ1bGVDaGFpbjsKIGNsYXNzIFBsdXJhbFJ1bGVQYXJzZXI7CiBjbGFzcyBQbHVyYWxL
ZXl3b3JkRW51bWVyYXRpb247CkBAIC0zNDIsMTAgKzM0OCwzMCBAQCBwdWJsaWM6CiAgICAgVW5p
Y29kZVN0cmluZyBzZWxlY3QoZG91YmxlIG51bWJlcikgY29uc3Q7CiAKICNpZm5kZWYgVV9ISURF
X0lOVEVSTkFMX0FQSQorICAgIC8qKgorICAgICAqIEdpdmVuIGEgbnVtYmVyIGFuZCBhIGZvcm1h
dCwgcmV0dXJucyB0aGUga2V5d29yZCBvZiB0aGUgZmlyc3QgYXBwbGljYWJsZQorICAgICAqIHJ1
bGUgZm9yIHRoaXMgUGx1cmFsUnVsZXMgb2JqZWN0LgorICAgICAqIE5vdGU6IFRoaXMgaW50ZXJu
YWwgcHJldmlldyBpbnRlcmZhY2UgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZSBpZgorICAg
ICAqIGFuIGFyY2hpdGVjdHVyYWxseSBjbGVhbmVyIHNvbHV0aW9uIHJlYWNoZXMgc3RhYmxlIHN0
YXR1cy4KKyAgICAgKiBAcGFyYW0gb2JqIFRoZSBudW1lcmljIG9iamVjdCBmb3Igd2hpY2ggdGhl
IHJ1bGUgc2hvdWxkIGJlIGRldGVybWluZWQuCisgICAgICogQHBhcmFtIGZtdCBUaGUgTnVtYmVy
Rm9ybWF0IHNwZWNpZnlpbmcgaG93IHRoZSBudW1iZXIgd2lsbCBiZSBmb3JtYXR0ZWQKKyAgICAg
KiAgICAgICAgKHRoaXMgY2FuIGFmZmVjdCB0aGUgcGx1cmFsIGZvcm0sIGUuZy4gIjEgZG9sbGFy
IiB2cyAiMS4wIGRvbGxhcnMiKS4KKyAgICAgKiBAcGFyYW0gc3RhdHVzICBJbnB1dC9vdXRwdXQg
cGFyYW1ldGVyLiBJZiBhdCBlbnRyeSB0aGlzIGluZGljYXRlcyBhCisgICAgICogICAgICAgICAg
ICAgICAgZmFpbHVyZSBzdGF0dXMsIHRoZSBtZXRob2QgcmV0dXJucyBpbW1lZGlhdGVseTsgb3Ro
ZXJ3aXNlCisgICAgICogICAgICAgICAgICAgICAgdGhpcyBpcyBzZXQgdG8gaW5kaWNhdGUgdGhl
IG91dGNvbWUgb2YgdGhlIGNhbGwuCisgICAgICogQHJldHVybiBUaGUga2V5d29yZCBvZiB0aGUg
c2VsZWN0ZWQgcnVsZS4gVW5kZWZpbmVkIGluIHRoZSBjYXNlIG9mIGFuIGVycm9yLgorICAgICAq
IEBpbnRlcm5hbCBJQ1UgNTkgdGVjaG5vbG9neSBwcmV2aWV3LCBtYXkgYmUgcmVtb3ZlZCBpbiB0
aGUgZnV0dXJlCisgICAgICovCisgICAgVW5pY29kZVN0cmluZyBzZWxlY3QoY29uc3QgRm9ybWF0
dGFibGUmIG9iaiwgY29uc3QgTnVtYmVyRm9ybWF0JiBmbXQsIFVFcnJvckNvZGUmIHN0YXR1cykg
Y29uc3Q7CisKKyAgICAvKioKKyAgICAgICogQGludGVybmFsCisgICAgICAqLworICAgIFVuaWNv
ZGVTdHJpbmcgc2VsZWN0KGNvbnN0IElGaXhlZERlY2ltYWwgJm51bWJlcikgY29uc3Q7CiAgICAg
LyoqCiAgICAgICAqIEBpbnRlcm5hbAogICAgICAgKi8KLSAgICBVbmljb2RlU3RyaW5nIHNlbGVj
dChjb25zdCBGaXhlZERlY2ltYWwgJm51bWJlcikgY29uc3Q7CisgICAgVW5pY29kZVN0cmluZyBz
ZWxlY3QoY29uc3QgVmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCAmbnVtYmVyKSBjb25zdDsKICNl
bmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogCiAgICAgLyoqCkBAIC0zNzYsNyArNDAy
LDcgQEAgcHVibGljOgogICAgIC8qKgogICAgICAqIERlcHJlY2F0ZWQgRnVuY3Rpb24sIGRvZXMg
bm90IHByb2R1Y2UgdXNlZnVsIHJlc3VsdHMuCiAgICAgICoKLSAgICAgKiBPcmdpbmFsbHkgaW50
ZW5kZWQgdG8gcmV0dXJuIGFsbCB0aGUgdmFsdWVzIGZvciB3aGljaCBzZWxlY3QoKSB3b3VsZCBy
ZXR1cm4gdGhlIGtleXdvcmQuCisgICAgICogT3JpZ2luYWxseSBpbnRlbmRlZCB0byByZXR1cm4g
YWxsIHRoZSB2YWx1ZXMgZm9yIHdoaWNoIHNlbGVjdCgpIHdvdWxkIHJldHVybiB0aGUga2V5d29y
ZC4KICAgICAgKiBJZiB0aGUga2V5d29yZCBpcyB1bmtub3duLCByZXR1cm5zIG5vIHZhbHVlcywg
YnV0IHRoaXMgaXMgbm90IGFuIGVycm9yLiAgSWYKICAgICAgKiB0aGUgbnVtYmVyIG9mIHZhbHVl
cyBpcyB1bmxpbWl0ZWQsIHJldHVybnMgbm8gdmFsdWVzIGFuZCAtMSBhcyB0aGUKICAgICAgKiBj
b3VudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcHR5cGVzLmggYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3B0eXBlcy5oCmluZGV4IGI3ZjcxMTYwMzI4MmMzNmM3MzIyMjBl
N2E5NmM5MTMzZGQwMjUwZmUuLjZlYWYyZGJmMDM1NzI1NjgxMDIyODNjNTc5NTdkZThiZjk1YTZm
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcHR5cGVzLmgKKysrIGIvU291
cmNlL1dURi9pY3UvdW5pY29kZS9wdHlwZXMuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3B1
dGlsLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3B1dGlsLmgKaW5kZXggZGYxYjE3YmFkMGY2
NTM1MTBmZGYxOGRkNGM3OGVhZDk0YThhMjI4My4uNDA2NTUxYThkODZiZDBmZjYzNDQ5YjhmMTQw
OTA5ZDRkZmIyMDg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9wdXRpbC5o
CisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcHV0aWwuaApAQCAtMSwzICsxLDUgQEAKKy8v
IMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNl
ICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAv
KgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3JiYmkuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmJiaS5oCmluZGV4IGQ0NzU5
OGE1MGU2ZmEzYmFiMmFkNDllMDIyYWFmMzk2Y2FjMzI5ZTUuLjUyMWU1MDJmMTE5MGNjOGFlYTMx
ZmJmMTExMzRhZWZkODNkNGM1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
cmJiaS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmJiaS5oCkBAIC0xLDYgKzEsOCBA
QAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExp
Y2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0
bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDE5OTktMjAxNCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uICAgKgorKiAgIENvcHly
aWdodCAoQykgMTk5OS0yMDE2IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9y
YXRpb24gICAqCiAqICAgYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCkBAIC0y
OSwyMyArMzEsMTQgQEAKICNpbmNsdWRlICJ1bmljb2RlL3NjaHJpdGVyLmgiCiAjaW5jbHVkZSAi
dW5pY29kZS91Y2hyaXRlci5oIgogCi0KLXN0cnVjdCBVVHJpZTsKLQogVV9OQU1FU1BBQ0VfQkVH
SU4KIAogLyoqIEBpbnRlcm5hbCAqLworY2xhc3MgIExhbmd1YWdlQnJlYWtFbmdpbmU7CiBzdHJ1
Y3QgUkJCSURhdGFIZWFkZXI7Ci1jbGFzcyAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvclRhYmxlczsK
LWNsYXNzICBCcmVha0l0ZXJhdG9yOwogY2xhc3MgIFJCQklEYXRhV3JhcHBlcjsKLWNsYXNzICBV
U3RhY2s7Ci1jbGFzcyAgTGFuZ3VhZ2VCcmVha0VuZ2luZTsKIGNsYXNzICBVbmhhbmRsZWRFbmdp
bmU7Ci1zdHJ1Y3QgUkJCSVN0YXRlVGFibGU7Ci0KLQotCitjbGFzcyAgVVN0YWNrOwogCiAvKioK
ICAqCkBAIC01NiwxNSArNDksMTEgQEAgc3RydWN0IFJCQklTdGF0ZVRhYmxlOwogICoKICAqIDxw
PlNlZSB0aGUgSUNVIFVzZXIgR3VpZGUgZm9yIGluZm9ybWF0aW9uIG9uIEJyZWFrIEl0ZXJhdG9y
IFJ1bGVzLjwvcD4KICAqCi0gKiA8cD5UaGlzIGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBz
dWJjbGFzc2VkLiAgKENsYXNzIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IKLSAqICAgIGlz
IGEgc3ViY2xhc3MsIGJ1dCB0aGF0IHJlbGF0aW9uc2hpcCBpcyBlZmZlY3RpdmVseSBpbnRlcm5h
bCB0byB0aGUgSUNVCi0gKiAgICBpbXBsZW1lbnRhdGlvbi4gIFRoZSBzdWJjbGFzc2luZyBpbnRl
cmZhY2UgdG8gUnVsZXNCYXNlZEJyZWFrSXRlcmF0b3IgaXMKLSAqICAgIG5vdCBwYXJ0IG9mIHRo
ZSBJQ1UgQVBJLCBhbmQgbWF5IG5vdCByZW1haW4gc3RhYmxlLjwvcD4KLSAqCisgKiA8cD5UaGlz
IGNsYXNzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBzdWJjbGFzc2VkLjwvcD4KICAqLwogY2xhc3Mg
VV9DT01NT05fQVBJIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgLypVX0ZJTkFMKi8gOiBwdWJsaWMg
QnJlYWtJdGVyYXRvciB7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6CiAgICAgLyoqCiAgICAgICog
VGhlIFVUZXh0IHRocm91Z2ggd2hpY2ggdGhpcyBCcmVha0l0ZXJhdG9yIGFjY2Vzc2VzIHRoZSB0
ZXh0CiAgICAgICogQGludGVybmFsCkBAIC05OCw0OCArODcsNTAgQEAgcHJvdGVjdGVkOgogICAg
ICAqLwogICAgIFJCQklEYXRhV3JhcHBlciAgICAqZkRhdGE7CiAKLSAgICAvKiogSW5kZXggb2Yg
dGhlIFJ1bGUge3RhZ30gdmFsdWVzIGZvciB0aGUgbW9zdCByZWNlbnQgbWF0Y2guCisgICAgLyoq
IAorICAgICAqICBUaGUgaXRlcmF0aW9uIHN0YXRlIC0gY3VycmVudCBwb3NpdGlvbiwgcnVsZSBz
dGF0dXMgZm9yIHRoZSBjdXJyZW50IHBvc2l0aW9uLAorICAgICAqICAgICAgICAgICAgICAgICAg
ICAgICAgYW5kIHdoZXRoZXIgdGhlIGl0ZXJhdG9yIHJhbiBvZmYgdGhlIGVuZCwgeWllbGRpbmcg
VUJSS19ET05FLgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBwb3NpdGlv
biBpcyBwaW5uZWQgdG8gYmUgMCA8IHBvc2l0aW9uIDw9IHRleHQubGVuZ3RoLgorICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBwb3NpdGlvbiBpcyBhbHdheXMgc2V0IHRvIGEg
Ym91bmRhcnkuCiAgICAgICogIEBpbnRlcm5hbAogICAgICovCi0gICAgaW50MzJfdCAgICAgICAg
ICAgICBmTGFzdFJ1bGVTdGF0dXNJbmRleDsKKyAgICAvKioKKyAgICAgICogVGhlIGN1cnJlbnQg
IHBvc2l0aW9uIG9mIHRoZSBpdGVyYXRvci4gUGlubmVkLCAwIDwgZlBvc2l0aW9uIDw9IHRleHQu
bGVuZ3RoLgorICAgICAgKiBOZXZlciBoYXMgdGhlIHZhbHVlIFVCUktfRE9ORSAoLTEpLgorICAg
ICAgKi8KKyAgICBpbnQzMl90ICAgICAgICAgZlBvc2l0aW9uOwogCiAgICAgLyoqCi0gICAgICog
UnVsZSB0YWcgdmFsdWUgdmFsaWQgZmxhZy4KLSAgICAgKiBTb21lIGl0ZXJhdG9yIG9wZXJhdGlv
bnMgZG9uJ3QgaW50cmluc2ljYWxseSBzZXQgdGhlIGNvcnJlY3QgdGFnIHZhbHVlLgotICAgICAq
IFRoaXMgZmxhZyBsZXRzIHVzIGxhemlseSBjb21wdXRlIHRoZSB2YWx1ZSBpZiB3ZSBhcmUgZXZl
ciBhc2tlZCBmb3IgaXQuCi0gICAgICogQGludGVybmFsCi0gICAgICovCi0gICAgVUJvb2wgICAg
ICAgICAgICAgICBmTGFzdFN0YXR1c0luZGV4VmFsaWQ7CisgICAgICAqIFRPRE86CisgICAgICAq
LworICAgIGludDMyX3QgICAgICAgICBmUnVsZVN0YXR1c0luZGV4OwogCiAgICAgLyoqCi0gICAg
ICogQ291bnRlciBmb3IgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGVuY291bnRlcmVkIHdpdGgg
dGhlICJkaWN0aW9uYXJ5IgotICAgICAqICAgZmxhZyBzZXQuCi0gICAgICogQGludGVybmFsCi0g
ICAgICovCi0gICAgdWludDMyX3QgICAgICAgICAgICBmRGljdGlvbmFyeUNoYXJDb3VudDsKKyAg
ICAgICogVHJ1ZSB3aGVuIGl0ZXJhdGlvbiBoYXMgcnVuIG9mZiB0aGUgZW5kLCBhbmQgaXRlcmF0
b3IgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gVUJSS19ET05FLgorICAgICAgKi8KKyAgICBVQm9v
bCAgICAgICAgICAgZkRvbmU7CiAKICAgICAvKioKLSAgICAgKiBXaGVuIGEgcmFuZ2Ugb2YgY2hh
cmFjdGVycyBpcyBkaXZpZGVkIHVwIHVzaW5nIHRoZSBkaWN0aW9uYXJ5LCB0aGUgYnJlYWsKLSAg
ICAgKiBwb3NpdGlvbnMgdGhhdCBhcmUgZGlzY292ZXJlZCBhcmUgc3RvcmVkIGhlcmUsIHByZXZl
bnRpbmcgdXMgZnJvbSBoYXZpbmcKLSAgICAgKiB0byB1c2UgZWl0aGVyIHRoZSBkaWN0aW9uYXJ5
IG9yIHRoZSBzdGF0ZSB0YWJsZSBhZ2FpbiB1bnRpbCB0aGUgaXRlcmF0b3IKLSAgICAgKiBsZWF2
ZXMgdGhpcyByYW5nZSBvZiB0ZXh0LiBIYXMgdGhlIG1vc3QgaW1wYWN0IGZvciBsaW5lIGJyZWFr
aW5nLgotICAgICAqIEBpbnRlcm5hbAorICAgICAqICAgQ2FjaGUgb2YgcHJldmlvdXNseSBkZXRl
cm1pbmVkIGJvdW5kYXJ5IHBvc2l0aW9ucy4KICAgICAgKi8KLSAgICBpbnQzMl90KiAgICAgICAg
ICAgIGZDYWNoZWRCcmVha1Bvc2l0aW9uczsKLQorICBwdWJsaWM6ICAgIC8vIFRPRE86IGRlYnVn
LCByZXR1cm4gdG8gcHJpdmF0ZS4KKyAgICBjbGFzcyBCcmVha0NhY2hlOworICAgIEJyZWFrQ2Fj
aGUgICAgICAgICAqZkJyZWFrQ2FjaGU7CisgIHByaXZhdGU6CiAgICAgLyoqCi0gICAgICogVGhl
IG51bWJlciBvZiBlbGVtZW50cyBpbiBmQ2FjaGVkQnJlYWtQb3NpdGlvbnMKKyAgICAgKiBDb3Vu
dGVyIGZvciB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZW5jb3VudGVyZWQgd2l0aCB0aGUgImRp
Y3Rpb25hcnkiCisgICAgICogICBmbGFnIHNldC4KICAgICAgKiBAaW50ZXJuYWwKICAgICAgKi8K
LSAgICBpbnQzMl90ICAgICAgICAgICAgIGZOdW1DYWNoZWRCcmVha1Bvc2l0aW9uczsKKyAgICB1
aW50MzJfdCAgICAgICAgICAgIGZEaWN0aW9uYXJ5Q2hhckNvdW50OwogCiAgICAgLyoqCi0gICAg
ICogaWYgZkNhY2hlZEJyZWFrUG9zaXRpb25zIGlzIG5vdCBudWxsLCB0aGlzIGluZGljYXRlcyB3
aGljaCBpdGVtIGluIHRoZQotICAgICAqIGNhY2hlIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3Np
dGlvbiByZWZlcnMgdG8KLSAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiAgQ2FjaGUgb2YgYm91bmRh
cnkgcG9zaXRpb25zIHdpdGhpbiBhIHJlZ2lvbiBvZiB0ZXh0IHRoYXQgaGFzIGJlZW4KKyAgICAg
KiAgc3ViLWRpdmlkZWQgYnkgZGljdGlvbmFyeSBiYXNlZCBicmVha2luZy4KICAgICAgKi8KLSAg
ICBpbnQzMl90ICAgICAgICAgICAgIGZQb3NpdGlvbkluQ2FjaGU7Ci0gICAgCisgICAgY2xhc3Mg
RGljdGlvbmFyeUNhY2hlOworICAgIERpY3Rpb25hcnlDYWNoZSAqZkRpY3Rpb25hcnlDYWNoZTsK
KwogICAgIC8qKgogICAgICAqCiAgICAgICogSWYgcHJlc2VudCwgVVN0YWNrIG9mIExhbmd1YWdl
QnJlYWtFbmdpbmUgb2JqZWN0cyB0aGF0IG1pZ2h0IGhhbmRsZQpAQCAtMTQ4LDcgKzEzOSw3IEBA
IHByb3RlY3RlZDoKICAgICAgKiBAaW50ZXJuYWwKICAgICAgKi8KICAgICBVU3RhY2sgICAgICAg
ICAgICAgICpmTGFuZ3VhZ2VCcmVha0VuZ2luZXM7Ci0gICAgCisKICAgICAvKioKICAgICAgKgog
ICAgICAqIElmIHByZXNlbnQsIHRoZSBzcGVjaWFsIExhbmd1YWdlQnJlYWtFbmdpbmUgdXNlZCBm
b3IgaGFuZGxpbmcKQEAgLTE1NywzMiArMTQ4LDE4IEBAIHByb3RlY3RlZDoKICAgICAgKiBAaW50
ZXJuYWwKICAgICAgKi8KICAgICBVbmhhbmRsZWRFbmdpbmUgICAgICpmVW5oYW5kbGVkQnJlYWtF
bmdpbmU7Ci0gICAgCisKICAgICAvKioKICAgICAgKgogICAgICAqIFRoZSB0eXBlIG9mIHRoZSBi
cmVhayBpdGVyYXRvciwgb3IgLTEgaWYgaXQgaGFzIG5vdCBiZWVuIHNldC4KICAgICAgKiBAaW50
ZXJuYWwKICAgICAgKi8KICAgICBpbnQzMl90ICAgICAgICAgICAgIGZCcmVha1R5cGU7Ci0gICAg
Ci1wcm90ZWN0ZWQ6CisKICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgLy8gY29uc3RydWN0b3Jz
CiAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQogCi0jaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKLSAg
ICAvKioKLSAgICAgKiBDb25zdGFudCB0byBiZSB1c2VkIGluIHRoZSBjb25zdHJ1Y3RvcgotICAg
ICAqIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IoUkJCSURhdGFIZWFkZXIqLCBFRG9udEFkb3B0LCBV
RXJyb3JDb2RlICYpOwotICAgICAqIHdoaWNoIGRvZXMgbm90IGFkb3B0IHRoZSBtZW1vcnkgaW5k
aWNhdGVkIGJ5IHRoZSBSQkJJRGF0YUhlYWRlcioKLSAgICAgKiBwYXJhbWV0ZXIuCi0gICAgICoK
LSAgICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAgICBlbnVtIEVEb250QWRvcHQgewotICAgICAg
ICBrRG9udEFkb3B0Ci0gICAgfTsKLQogICAgIC8qKgogICAgICAqIENvbnN0cnVjdG9yIGZyb20g
YSBmbGF0dGVuZWQgc2V0IG9mIFJCQkkgZGF0YSBpbiBtYWxsb2NlZCBtZW1vcnkuCiAgICAgICog
ICAgICAgICAgICAgUnVsZXNCYXNlZEJyZWFrSXRlcmF0b3JzIGJ1aWx0IGZyb20gYSBjdXN0b20g
c2V0IG9mIHJ1bGVzCkBAIC0xOTUsMjQgKzE3MiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgICovCiAg
ICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcihSQkJJRGF0YUhlYWRlciogZGF0YSwgVUVycm9yQ29k
ZSAmc3RhdHVzKTsKIAotICAgIC8qKgotICAgICAqIENvbnN0cnVjdG9yIGZyb20gYSBmbGF0dGVu
ZWQgc2V0IG9mIFJCQkkgZGF0YSBpbiBtZW1vcnkgd2hpY2ggbmVlZCBub3QKLSAgICAgKiAgICAg
ICAgICAgICBiZSBtYWxsb2NlZCAoZS5nLiBpdCBtYXkgYmUgYSBtZW1vcnktbWFwcGVkIGZpbGUs
IGV0Yy4pLgotICAgICAqCi0gICAgICogICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIGRvZXMgbm90
IGFkb3B0IHRoZSBtZW1vcnksIGFuZCBkb2VzIG5vdAotICAgICAqICAgICAgICAgICAgIGZyZWUg
aXQgd2hlbiBkb25lLgotICAgICAqIEBpbnRlcm5hbAotICAgICAqLwotICAgIFJ1bGVCYXNlZEJy
ZWFrSXRlcmF0b3IoY29uc3QgUkJCSURhdGFIZWFkZXIqIGRhdGEsIGVudW0gRURvbnRBZG9wdCBk
b250QWRvcHQsIFVFcnJvckNvZGUgJnN0YXR1cyk7Ci0jZW5kaWYgIC8qIFVfSElERV9JTlRFUk5B
TF9BUEkgKi8KLQotCisgICAgLyoqIEBpbnRlcm5hbCAqLwogICAgIGZyaWVuZCBjbGFzcyBSQkJJ
UnVsZUJ1aWxkZXI7CiAgICAgLyoqIEBpbnRlcm5hbCAqLwogICAgIGZyaWVuZCBjbGFzcyBCcmVh
a0l0ZXJhdG9yOwogCi0KLQogcHVibGljOgogCiAgICAgLyoqIERlZmF1bHQgY29uc3RydWN0b3Iu
ICBDcmVhdGVzIGFuIGVtcHR5IHNoZWxsIG9mIGFuIGl0ZXJhdG9yLCB3aXRoIG5vCkBAIC0yNDgs
NyArMjEyLDcgQEAgcHVibGljOgogICAgICAqIGNvbnN0dWN0aW9uIGZyb20gc291cmNlIHJ1bGVz
LgogICAgICAqCiAgICAgICogT3duZXJzaGlwIG9mIHRoZSBzdG9yYWdlIGNvbnRhaW5pbmcgdGhl
IGNvbXBpbGVkIHJ1bGVzIHJlbWFpbnMgd2l0aCB0aGUKLSAgICAgKiBjYWxsZXIgb2YgdGhpcyBm
dW5jdGlvbi4gIFRoZSBjb21waWxlZCBydWxlcyBtdXN0IG5vdCBiZSAgbW9kaWZpZWQgb3IgCisg
ICAgICogY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24uICBUaGUgY29tcGlsZWQgcnVsZXMgbXVzdCBu
b3QgYmUgIG1vZGlmaWVkIG9yCiAgICAgICogZGVsZXRlZCBkdXJpbmcgdGhlIGxpZmUgb2YgdGhl
IGJyZWFrIGl0ZXJhdG9yLgogICAgICAqCiAgICAgICogVGhlIGNvbXBpbGVkIHJ1bGVzIGFyZSBu
b3QgY29tcGF0aWJsZSBhY3Jvc3MgZGlmZmVyZW50IG1ham9yIHZlcnNpb25zIG9mIElDVS4KQEAg
LTQwMiw2ICszNjYsMTEgQEAgcHVibGljOgogICAgIC8qKgogICAgICAqIFNldCB0aGUgaXRlcmF0
b3IgdG8gYW5hbHl6ZSBhIG5ldyBwaWVjZSBvZiB0ZXh0LiAgVGhpcyBmdW5jdGlvbiByZXNldHMK
ICAgICAgKiB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhlIGJlZ2lubmluZyBv
ZiB0aGUgdGV4dC4KKyAgICAgKgorICAgICAqIFRoZSBCcmVha0l0ZXJhdG9yIHdpbGwgcmV0YWlu
IGEgcmVmZXJlbmNlIHRvIHRoZSBzdXBwbGllZCBzdHJpbmcuCisgICAgICogVGhlIGNhbGxlciBt
dXN0IG5vdCBtb2RpZnkgb3IgZGVsZXRlIHRoZSB0ZXh0IHdoaWxlIHRoZSBCcmVha0l0ZXJhdG9y
CisgICAgICogcmV0YWlucyB0aGUgcmVmZXJlbmNlLgorICAgICAqCiAgICAgICogQHBhcmFtIG5l
d1RleHQgVGhlIHRleHQgdG8gYW5hbHl6ZS4KICAgICAgKiAgQHN0YWJsZSBJQ1UgMi4wCiAgICAg
ICovCkBAIC00OTEsNyArNDYwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFVCb29sIGlzQm91
bmRhcnkoaW50MzJfdCBvZmZzZXQpOwogCiAgICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgY3Vy
cmVudCBpdGVyYXRpb24gcG9zaXRpb24uCisgICAgICogUmV0dXJucyB0aGUgY3VycmVudCBpdGVy
YXRpb24gcG9zaXRpb24uIE5vdGUgdGhhdCBVQlJLX0RPTkUgaXMgbmV2ZXIKKyAgICAgKiByZXR1
cm5lZCBmcm9tIHRoaXMgZnVuY3Rpb247IGlmIGl0ZXJhdGlvbiBoYXMgcnVuIHRvIHRoZSBlbmQg
b2YgYQorICAgICAqIHN0cmluZywgY3VycmVudCgpIHdpbGwgcmV0dXJuIHRoZSBsZW5ndGggb2Yg
dGhlIHN0cmluZyB3aGlsZQorICAgICAqIG5leHQoKSB3aWxsIHJldHVybiBVQlJLX0RPTkUpLgog
ICAgICAqIEByZXR1cm4gVGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uLgogICAgICAqIEBz
dGFibGUgSUNVIDIuMAogICAgICAqLwpAQCAtNTIzLDYgKzQ5NSw3IEBAIHB1YmxpYzoKICAgICAg
KiBOb3RlOiB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0aHJlYWQgc2FmZS4gIEl0IHNob3VsZCBub3Qg
aGF2ZSBiZWVuCiAgICAgICogICAgICAgZGVjbGFyZWQgY29uc3QsIGFuZCB0aGUgY29uc3QgcmVt
YWlucyBvbmx5IGZvciBjb21wYXRpYmlsaXR5CiAgICAgICogICAgICAgcmVhc29ucy4gIChUaGUg
ZnVuY3Rpb24gaXMgbG9naWNhbGx5IGNvbnN0LCBidXQgbm90IGJpdC13aXNlIGNvbnN0KS4KKyAg
ICAgKiAgIFRPRE86IGNoZWNrIHRoaXMuIFByb2JhYmx5IHRocmVhZCBzYWZlIG5vdy4KICAgICAg
KiA8cD4KICAgICAgKiBAcmV0dXJuIHRoZSBzdGF0dXMgZnJvbSB0aGUgYnJlYWsgcnVsZSB0aGF0
IGRldGVybWluZWQgdGhlIG1vc3QgcmVjZW50bHkKICAgICAgKiByZXR1cm5lZCBicmVhayBwb3Np
dGlvbi4KQEAgLTY2MSw3ICs2MzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSdWxlQmFzZWRC
cmVha0l0ZXJhdG9yICZyZWZyZXNoSW5wdXRUZXh0KFVUZXh0ICppbnB1dCwgVUVycm9yQ29kZSAm
c3RhdHVzKTsKIAogCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIC8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
ICAgICAvLyBpbXBsZW1lbnRhdGlvbgogICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTY3MCw4NSAr
NjQzLDQ0IEBAIHByb3RlY3RlZDoKICAgICAgKiBpbiB0ZXh0IG9yIGl0ZXJhdGlvbiBwb3NpdGlv
bi4KICAgICAgKiBAaW50ZXJuYWwKICAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQodm9p
ZCk7Ci0KLSNpZiAwCi0gICAgLyoqCi0gICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBjYXRlZ29y
eSBsb29rdXAgZm9yIHRoaXMgY2hhcgotICAgICAgKiBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBpbiB0
aGUgc2V0IG9mIGRpY3Rpb25hcnkgbG9va3VwIGNoYXJzLgotICAgICAgKiBUaGlzIGZ1bmN0aW9u
IGlzIGludGVuZGVkIGZvciB1c2UgYnkgZGljdGlvbmFyeSBiYXNlZCBicmVhayBpdGVyYXRvcnMu
Ci0gICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY2F0ZWdvcnkgbG9va3VwIGZvciB0aGlzIGNo
YXIKLSAgICAgICogaW5kaWNhdGVzIHRoYXQgaXQgaXMgaW4gdGhlIHNldCBvZiBkaWN0aW9uYXJ5
IGxvb2t1cCBjaGFycy4KLSAgICAgICogQGludGVybmFsCi0gICAgICAqLwotICAgIHZpcnR1YWwg
VUJvb2wgaXNEaWN0aW9uYXJ5Q2hhcihVQ2hhcjMyKTsKLQotICAgIC8qKgotICAgICAgKiBHZXQg
dGhlIHR5cGUgb2YgdGhlIGJyZWFrIGl0ZXJhdG9yLgotICAgICAgKiBAaW50ZXJuYWwKLSAgICAg
ICovCi0gICAgdmlydHVhbCBpbnQzMl90IGdldEJyZWFrVHlwZSgpIGNvbnN0OwotI2VuZGlmCisg
ICAgdm9pZCByZXNldCh2b2lkKTsKIAogICAgIC8qKgogICAgICAgKiBTZXQgdGhlIHR5cGUgb2Yg
dGhlIGJyZWFrIGl0ZXJhdG9yLgogICAgICAgKiBAaW50ZXJuYWwKICAgICAgICovCi0gICAgdmly
dHVhbCB2b2lkIHNldEJyZWFrVHlwZShpbnQzMl90IHR5cGUpOworICAgIHZvaWQgc2V0QnJlYWtU
eXBlKGludDMyX3QgdHlwZSk7CiAKLSNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQogICAgIC8q
KgogICAgICAgKiBDb21tb24gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHVzZWQgYnkgY29uc3Ry
dWN0b3JzIGFuZCBidWZmZXJDbG9uZS4KICAgICAgICogQGludGVybmFsCiAgICAgICAqLwotICAg
IHZvaWQgaW5pdCgpOwotI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCi0KLXByaXZh
dGU6CisgICAgdm9pZCBpbml0KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKICAgICAvKioKLSAgICAg
KiBUaGlzIG1ldGhvZCBiYWNrcyB0aGUgaXRlcmF0b3IgYmFjayB1cCB0byBhICJzYWZlIHBvc2l0
aW9uIiBpbiB0aGUgdGV4dC4KLSAgICAgKiBUaGlzIGlzIGEgcG9zaXRpb24gdGhhdCB3ZSBrbm93
LCB3aXRob3V0IGFueSBjb250ZXh0LCBtdXN0IGJlIGEgYnJlYWsgcG9zaXRpb24uCi0gICAgICog
VGhlIHZhcmlvdXMgY2FsbGluZyBtZXRob2RzIHRoZW4gaXRlcmF0ZSBmb3J3YXJkIGZyb20gdGhp
cyBzYWZlIHBvc2l0aW9uIHRvCi0gICAgICogdGhlIGFwcHJvcHJpYXRlIHBvc2l0aW9uIHRvIHJl
dHVybi4gIChGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBkZXNjcmlwdGlvbgotICAgICAq
IG9mIGJ1aWxkQmFja3dhcmRzU3RhdGVUYWJsZSgpIGluIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Iu
QnVpbGRlci4pCi0gICAgICogQHBhcmFtIHN0YXRldGFibGUgc3RhdGUgdGFibGUgdXNlZCBvZiBt
b3ZpbmcgYmFja3dhcmRzCisgICAgICogSXRlcmF0ZSBiYWNrd2FyZHMgZnJvbSBhbiBhcmJpdHJh
cnkgcG9zaXRpb24gaW4gdGhlIGlucHV0IHRleHQgdXNpbmcgdGhlIFNhZmUgUmV2ZXJzZSBydWxl
cy4KKyAgICAgKiBUaGlzIGxvY2F0ZXMgYSAiU2FmZSBQb3NpdGlvbiIgZnJvbSB3aGljaCB0aGUg
Zm9yd2FyZCBicmVhayBydWxlcworICAgICAqIHdpbGwgb3BlcmF0ZSBjb3JyZWN0bHkuIEEgU2Fm
ZSBQb3NpdGlvbiBpcyBub3QgbmVjZXNzYXJpbHkgYSBib3VuZGFyeSBpdHNlbGYuCisgICAgICoK
KyAgICAgKiBAcGFyYW0gZnJvbVBvc2l0aW9uIHRoZSBwb3NpdGlvbiBpbiB0aGUgaW5wdXQgdGV4
dCB0byBiZWdpbiB0aGUgaXRlcmF0aW9uLgogICAgICAqIEBpbnRlcm5hbAogICAgICAqLwotICAg
IGludDMyX3QgaGFuZGxlUHJldmlvdXMoY29uc3QgUkJCSVN0YXRlVGFibGUgKnN0YXRldGFibGUp
OworICAgIGludDMyX3QgaGFuZGxlUHJldmlvdXMoaW50MzJfdCBmcm9tUG9zaXRpb24pOwogCiAg
ICAgLyoqCi0gICAgICogVGhpcyBtZXRob2QgaXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgbmV4dCgpIG1ldGhvZC4gIEFsbCBpdGVyYXRpb24KLSAgICAgKiB2ZWN0b3JzIHRocm91
Z2ggaGVyZS4gIFRoaXMgbWV0aG9kIGluaXRpYWxpemVzIHRoZSBzdGF0ZSBtYWNoaW5lIHRvIHN0
YXRlIDEKLSAgICAgKiBhbmQgYWR2YW5jZXMgdGhyb3VnaCB0aGUgdGV4dCBjaGFyYWN0ZXIgYnkg
Y2hhcmFjdGVyIHVudGlsIHdlIHJlYWNoIHRoZSBlbmQKLSAgICAgKiBvZiB0aGUgdGV4dCBvciB0
aGUgc3RhdGUgbWFjaGluZSB0cmFuc2l0aW9ucyB0byBzdGF0ZSAwLiAgV2UgdXBkYXRlIG91ciBy
ZXR1cm4KLSAgICAgKiB2YWx1ZSBldmVyeSB0aW1lIHRoZSBzdGF0ZSBtYWNoaW5lIHBhc3NlcyB0
aHJvdWdoIGEgcG9zc2libGUgZW5kIHN0YXRlLgotICAgICAqIEBwYXJhbSBzdGF0ZXRhYmxlIHN0
YXRlIHRhYmxlIHVzZWQgb2YgbW92aW5nIGZvcndhcmRzCi0gICAgICogQGludGVybmFsCi0gICAg
ICovCi0gICAgaW50MzJfdCBoYW5kbGVOZXh0KGNvbnN0IFJCQklTdGF0ZVRhYmxlICpzdGF0ZXRh
YmxlKTsKLQotcHJvdGVjdGVkOgotCi0jaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKLSAgICAv
KioKLSAgICAgKiBUaGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IGltcGxlbWVudHMg
ZGljdGlvbmFyeS1iYXNlZAotICAgICAqIGJyZWFraW5nLiAgQ292ZXJpbmcgYXQgbGVhc3QgdGhl
IHJhbmdlIGZyb20gc3RhcnRQb3MgdG8gZW5kUG9zLAotICAgICAqIGl0IGNoZWNrcyBmb3IgZGlj
dGlvbmFyeSBjaGFyYWN0ZXJzLCBhbmQgaWYgaXQgZmluZHMgdGhlbSBkZXRlcm1pbmVzCi0gICAg
ICogdGhlIGFwcHJvcHJpYXRlIG9iamVjdCB0byBkZWFsIHdpdGggdGhlbS4gSXQgbWF5IGNhY2hl
IGZvdW5kIGJyZWFrcyBpbgotICAgICAqIGZDYWNoZWRCcmVha1Bvc2l0aW9ucyBhcyBpdCBnb2Vz
LiBJdCBtYXkgd2VsbCBhbHNvIGxvb2sgYXQgdGV4dCBvdXRzaWRlCi0gICAgICogdGhlIHJhbmdl
IHN0YXJ0UG9zIHRvIGVuZFBvcy4KLSAgICAgKiBJZiBnb2luZyBmb3J3YXJkLCBlbmRQb3MgaXMg
dGhlIG5vcm1hbCBVbmljb2RlIGJyZWFrIHJlc3VsdCwgYW5kCi0gICAgICogaWYgZ29pbmQgaW4g
cmV2ZXJzZSwgc3RhcnRQb3MgaXMgdGhlIG5vcm1hbCBVbmljb2RlIGJyZWFrIHJlc3VsdAotICAg
ICAqIEBwYXJhbSBzdGFydFBvcyAgVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIGEgcmFuZ2Ugb2YgdGV4
dAotICAgICAqIEBwYXJhbSBlbmRQb3MgICAgVGhlIGVuZCBwb3NpdGlvbiBvZiBhIHJhbmdlIG9m
IHRleHQKLSAgICAgKiBAcGFyYW0gcmV2ZXJzZSAgIFRoZSBjYWxsIGlzIGZvciB0aGUgcmV2ZXJz
ZSBkaXJlY3Rpb24KKyAgICAgKiBGaW5kIGEgcnVsZS1iYXNlZCBib3VuZGFyeSBieSBydW5uaW5n
IHRoZSBzdGF0ZSBtYWNoaW5lLgorICAgICAqIElucHV0CisgICAgICogICAgZlBvc2l0aW9uLCB0
aGUgcG9zaXRpb24gaW4gdGhlIHRleHQgdG8gYmVnaW4gZnJvbS4KKyAgICAgKiBPdXRwdXQKKyAg
ICAgKiAgICBmUG9zaXRpb246ICAgICAgICAgICB0aGUgYm91bmRhcnkgZm9sbG93aW5nIHRoZSBz
dGFydGluZyBwb3NpdGlvbi4KKyAgICAgKiAgICBmRGljdGlvbmFyeUNoYXJDb3VudCB0aGUgbnVt
YmVyIG9mIGRpY3Rpb25hcnkgY2hhcmFjdGVycyBlbmNvdW50ZXJlZC4KKyAgICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICBJZiA+IDAsIHRoZSBzZWdtZW50IHdpbGwgYmUgZnVydGhlciBzdWJk
aXZpZGVkCisgICAgICogICAgZlJ1bGVTdGF0dXNJbmRleCAgICAgSW5mbyBmcm9tIHRoZSBzdGF0
ZSB0YWJsZSBpbmRpY2F0aW5nIHdoaWNoIHJ1bGVzIGNhdXNlZCB0aGUgYm91bmRhcnkuCisgICAg
ICoKICAgICAgKiBAaW50ZXJuYWwKICAgICAgKi8KLSAgICBpbnQzMl90IGNoZWNrRGljdGlvbmFy
eShpbnQzMl90IHN0YXJ0UG9zLCBpbnQzMl90IGVuZFBvcywgVUJvb2wgcmV2ZXJzZSk7Ci0jZW5k
aWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KKyAgICBpbnQzMl90IGhhbmRsZU5leHQoKTsK
IAotcHJpdmF0ZToKIAogICAgIC8qKgogICAgICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUg
YXBwcm9wcmlhdGUgTGFuZ3VhZ2VCcmVha0VuZ2luZSBmb3IgYQpAQCAtNzU4LDExICs2OTAsMTQg
QEAgcHJpdmF0ZToKICAgICAgKi8KICAgICBjb25zdCBMYW5ndWFnZUJyZWFrRW5naW5lICpnZXRM
YW5ndWFnZUJyZWFrRW5naW5lKFVDaGFyMzIgYyk7CiAKKyAgcHVibGljOgorI2lmbmRlZiBVX0hJ
REVfSU5URVJOQUxfQVBJCiAgICAgLyoqCi0gICAgICogIEBpbnRlcm5hbAorICAgICAqICAgRGVi
dWdnaW5nIGZ1bmN0aW9uIG9ubHkuCisgICAgICogICBAaW50ZXJuYWwKICAgICAgKi8KLSAgICB2
b2lkIG1ha2VSdWxlU3RhdHVzVmFsaWQoKTsKLQorICAgICB2b2lkIGR1bXBDYWNoZSgpOworI2Vu
ZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCiB9OwogCiAvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9yYm5mLmggYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL3JibmYuaAppbmRleCA3MDU4Yzk2NzFjYjExN2M0ZTMwZTlkYzZlYTU5
MDBjNTk4MTNhZGMxLi4xMjkyNTQ0M2IyZDhmYTYzNzJlNmU2ZWZjNjEwZDZkMzViMDIwYzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JibmYuaAorKysgYi9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3JibmYuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVy
OiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBo
dHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVz
cyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgpAQCAtMzgsNiArNDAsNyBAQAogCiBV
X05BTUVTUEFDRV9CRUdJTgogCitjbGFzcyBORlJ1bGU7CiBjbGFzcyBORlJ1bGVTZXQ7CiBjbGFz
cyBMb2NhbGl6YXRpb25JbmZvOwogY2xhc3MgUGx1cmFsRm9ybWF0OwpAQCAtNTMsNyArNTYsMTMg
QEAgZW51bSBVUkJORlJ1bGVTZXRUYWcgewogICAgIFVSQk5GX09SRElOQUwsCiAgICAgVVJCTkZf
RFVSQVRJT04sCiAgICAgVVJCTkZfTlVNQkVSSU5HX1NZU1RFTSwKKyNpZm5kZWYgVV9ISURFX0RF
UFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBu
b3JtYWwgVVJCTkZSdWxlU2V0VGFnIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBU
aGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEy
NDIwLgorICAgICAqLwogICAgIFVSQk5GX0NPVU5UCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNB
VEVEX0FQSQogfTsKIAogLyoqCkBAIC0yNjQsMTcgKzI3Myw0NyBAQCBlbnVtIFVSQk5GUnVsZVNl
dFRhZyB7CiAgKiAgIDwvdHI+CiAgKiAgIDx0cj4KICAqICAgICA8dGQ+eC54OjwvdGQ+Ci0gKiAg
ICAgPHRkPlRoZSBydWxlIGlzIGFuIDxlbT5pbXByb3BlciBmcmFjdGlvbiBydWxlLjwvZW0+PC90
ZD4KKyAqICAgICA8dGQ+VGhlIHJ1bGUgaXMgYW4gPGVtPmltcHJvcGVyIGZyYWN0aW9uIHJ1bGU8
L2VtPi4gSWYgdGhlIGZ1bGwgc3RvcCBpbgorICogICAgIHRoZSBtaWRkbGUgb2YgdGhlIHJ1bGUg
bmFtZSBpcyByZXBsYWNlZCB3aXRoIHRoZSBkZWNpbWFsIHBvaW50CisgKiAgICAgdGhhdCBpcyB1
c2VkIGluIHRoZSBsYW5ndWFnZSBvciBEZWNpbWFsRm9ybWF0U3ltYm9scywgdGhlbiB0aGF0IHJ1
bGUgd2lsbAorICogICAgIGhhdmUgcHJlY2VkZW5jZSB3aGVuIGZvcm1hdHRpbmcgYW5kIHBhcnNp
bmcgdGhpcyBydWxlLiBGb3IgZXhhbXBsZSwgc29tZQorICogICAgIGxhbmd1YWdlcyB1c2UgdGhl
IGNvbW1hLCBhbmQgY2FuIHRodXMgYmUgd3JpdHRlbiBhcyB4LHggaW5zdGVhZC4gRm9yIGV4YW1w
bGUsCisgKiAgICAgeW91IGNhbiB1c2UgIngueDogJmx0OyZsdDsgcG9pbnQgJmd0OyZndDs7eCx4
OiAmbHQ7Jmx0OyBjb21tYSAmZ3Q7Jmd0OzsiIHRvCisgKiAgICAgaGFuZGxlIHRoZSBkZWNpbWFs
IHBvaW50IHRoYXQgbWF0Y2hlcyB0aGUgbGFuZ3VhZ2UncyBuYXR1cmFsIHNwZWxsaW5nIG9mCisg
KiAgICAgdGhlIHB1bmN0dWF0aW9uIG9mIGVpdGhlciB0aGUgZnVsbCBzdG9wIG9yIGNvbW1hLjwv
dGQ+CiAgKiAgIDwvdHI+CiAgKiAgIDx0cj4KICAqICAgICA8dGQ+MC54OjwvdGQ+Ci0gKiAgICAg
PHRkPlRoZSBydWxlIGlzIGEgPGVtPnByb3BlciBmcmFjdGlvbiBydWxlLjwvZW0+PC90ZD4KKyAq
ICAgICA8dGQ+VGhlIHJ1bGUgaXMgYSA8ZW0+cHJvcGVyIGZyYWN0aW9uIHJ1bGU8L2VtPi4gSWYg
dGhlIGZ1bGwgc3RvcCBpbgorICogICAgIHRoZSBtaWRkbGUgb2YgdGhlIHJ1bGUgbmFtZSBpcyBy
ZXBsYWNlZCB3aXRoIHRoZSBkZWNpbWFsIHBvaW50CisgKiAgICAgdGhhdCBpcyB1c2VkIGluIHRo
ZSBsYW5ndWFnZSBvciBEZWNpbWFsRm9ybWF0U3ltYm9scywgdGhlbiB0aGF0IHJ1bGUgd2lsbAor
ICogICAgIGhhdmUgcHJlY2VkZW5jZSB3aGVuIGZvcm1hdHRpbmcgYW5kIHBhcnNpbmcgdGhpcyBy
dWxlLiBGb3IgZXhhbXBsZSwgc29tZQorICogICAgIGxhbmd1YWdlcyB1c2UgdGhlIGNvbW1hLCBh
bmQgY2FuIHRodXMgYmUgd3JpdHRlbiBhcyAwLHggaW5zdGVhZC4gRm9yIGV4YW1wbGUsCisgKiAg
ICAgeW91IGNhbiB1c2UgIjAueDogcG9pbnQgJmd0OyZndDs7MCx4OiBjb21tYSAmZ3Q7Jmd0Ozsi
IHRvCisgKiAgICAgaGFuZGxlIHRoZSBkZWNpbWFsIHBvaW50IHRoYXQgbWF0Y2hlcyB0aGUgbGFu
Z3VhZ2UncyBuYXR1cmFsIHNwZWxsaW5nIG9mCisgKiAgICAgdGhlIHB1bmN0dWF0aW9uIG9mIGVp
dGhlciB0aGUgZnVsbCBzdG9wIG9yIGNvbW1hLjwvdGQ+CiAgKiAgIDwvdHI+CiAgKiAgIDx0cj4K
ICAqICAgICA8dGQ+eC4wOjwvdGQ+Ci0gKiAgICAgPHRkPlRoZSBydWxlIGlzIGEgPGVtPm1hc3Rl
ciBydWxlLjwvZW0+PC90ZD4KKyAqICAgICA8dGQ+VGhlIHJ1bGUgaXMgYSA8ZW0+bWFzdGVyIHJ1
bGU8L2VtPi4gSWYgdGhlIGZ1bGwgc3RvcCBpbgorICogICAgIHRoZSBtaWRkbGUgb2YgdGhlIHJ1
bGUgbmFtZSBpcyByZXBsYWNlZCB3aXRoIHRoZSBkZWNpbWFsIHBvaW50CisgKiAgICAgdGhhdCBp
cyB1c2VkIGluIHRoZSBsYW5ndWFnZSBvciBEZWNpbWFsRm9ybWF0U3ltYm9scywgdGhlbiB0aGF0
IHJ1bGUgd2lsbAorICogICAgIGhhdmUgcHJlY2VkZW5jZSB3aGVuIGZvcm1hdHRpbmcgYW5kIHBh
cnNpbmcgdGhpcyBydWxlLiBGb3IgZXhhbXBsZSwgc29tZQorICogICAgIGxhbmd1YWdlcyB1c2Ug
dGhlIGNvbW1hLCBhbmQgY2FuIHRodXMgYmUgd3JpdHRlbiBhcyB4LDAgaW5zdGVhZC4gRm9yIGV4
YW1wbGUsCisgKiAgICAgeW91IGNhbiB1c2UgInguMDogJmx0OyZsdDsgcG9pbnQ7eCwwOiAmbHQ7
Jmx0OyBjb21tYTsiIHRvCisgKiAgICAgaGFuZGxlIHRoZSBkZWNpbWFsIHBvaW50IHRoYXQgbWF0
Y2hlcyB0aGUgbGFuZ3VhZ2UncyBuYXR1cmFsIHNwZWxsaW5nIG9mCisgKiAgICAgdGhlIHB1bmN0
dWF0aW9uIG9mIGVpdGhlciB0aGUgZnVsbCBzdG9wIG9yIGNvbW1hLjwvdGQ+CisgKiAgIDwvdHI+
CisgKiAgIDx0cj4KKyAqICAgICA8dGQ+SW5mOjwvdGQ+CisgKiAgICAgPHRkPlRoZSBydWxlIGZv
ciBpbmZpbml0eS48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkPk5hTjo8
L3RkPgorICogICAgIDx0ZD5UaGUgcnVsZSBmb3IgYW4gSUVFRSA3NTQgTmFOIChub3QgYSBudW1i
ZXIpLjwvdGQ+CiAgKiAgIDwvdHI+CiAgKiAgIDx0cj4KKyAqICAgPHRyPgogICogICAgIDx0ZD48
ZW0+bm90aGluZzwvZW0+PC90ZD4KICAqICAgICA8dGQ+SWYgdGhlIHJ1bGUncyBydWxlIGRlc2Ny
aXB0b3IgaXMgbGVmdCBvdXQsIHRoZSBiYXNlIHZhbHVlIGlzIG9uZSBwbHVzIHRoZQogICogICAg
IHByZWNlZGluZyBydWxlJ3MgYmFzZSB2YWx1ZSAob3IgemVybyBpZiB0aGlzIGlzIHRoZSBmaXJz
dCBydWxlIGluIHRoZSBsaXN0KSBpbiBhIG5vcm1hbApAQCAtODI3LDYgKzg2Niw1MiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24mIHBvcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25z
dDsKIAorcHJvdGVjdGVkOgorICAgIC8qKgorICAgICAqIEZvcm1hdCBhIGRlY2ltYWwgbnVtYmVy
LgorICAgICAqIFRoZSBudW1iZXIgaXMgYSBEaWdpdExpc3Qgd3JhcHBlciBvbnRvIGEgZmxvYXRp
bmcgcG9pbnQgZGVjaW1hbCBudW1iZXIuCisgICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24gaW4gTnVtYmVyRm9ybWF0IGNvbnZlcnRzIHRoZSBkZWNpbWFsIG51bWJlcgorICAgICAqIHRv
IGEgZG91YmxlIGFuZCBmb3JtYXRzIHRoYXQuICBTdWJjbGFzc2VzIG9mIE51bWJlckZvcm1hdCB0
aGF0IHdhbnQKKyAgICAgKiB0byBzcGVjaWZpY2FsbHkgaGFuZGxlIGJpZyBkZWNpbWFsIG51bWJl
cnMgbXVzdCBvdmVycmlkZSB0aGlzIG1ldGhvZC4KKyAgICAgKiBjbGFzcyBEZWNpbWFsRm9ybWF0
IGRvZXMgc28uCisgICAgICoKKyAgICAgKiBAcGFyYW0gbnVtYmVyICAgIFRoZSBudW1iZXIsIGEg
RGlnaXRMaXN0IGZvcm1hdCBEZWNpbWFsIEZsb2F0aW5nIFBvaW50LgorICAgICAqIEBwYXJhbSBh
cHBlbmRUbyAgT3V0cHV0IHBhcmFtZXRlciB0byByZWNlaXZlIHJlc3VsdC4KKyAgICAgKiAgICAg
ICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0byBleGlzdGluZyBjb250ZW50cy4KKyAg
ICAgKiBAcGFyYW0gcG9zSXRlciAgIE9uIHJldHVybiwgY2FuIGJlIHVzZWQgdG8gaXRlcmF0ZSBv
dmVyIHBvc2l0aW9ucworICAgICAqICAgICAgICAgICAgICAgICAgb2YgZmllbGRzIGdlbmVyYXRl
ZCBieSB0aGlzIGZvcm1hdCBjYWxsLgorICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBh
cmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCisgICAgICogQHJldHVybiAg
ICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCisgICAgICogQGludGVy
bmFsCisgICAgICovCisgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoY29uc3QgRGln
aXRMaXN0ICZudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29k
ZVN0cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmll
bGRQb3NpdGlvbkl0ZXJhdG9yKiBwb3NJdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBGb3Jt
YXQgYSBkZWNpbWFsIG51bWJlci4KKyAgICAgKiBUaGUgbnVtYmVyIGlzIGEgRGlnaXRMaXN0IHdy
YXBwZXIgb250byBhIGZsb2F0aW5nIHBvaW50IGRlY2ltYWwgbnVtYmVyLgorICAgICAqIFRoZSBk
ZWZhdWx0IGltcGxlbWVudGF0aW9uIGluIE51bWJlckZvcm1hdCBjb252ZXJ0cyB0aGUgZGVjaW1h
bCBudW1iZXIKKyAgICAgKiB0byBhIGRvdWJsZSBhbmQgZm9ybWF0cyB0aGF0LiAgU3ViY2xhc3Nl
cyBvZiBOdW1iZXJGb3JtYXQgdGhhdCB3YW50CisgICAgICogdG8gc3BlY2lmaWNhbGx5IGhhbmRs
ZSBiaWcgZGVjaW1hbCBudW1iZXJzIG11c3Qgb3ZlcnJpZGUgdGhpcyBtZXRob2QuCisgICAgICog
Y2xhc3MgRGVjaW1hbEZvcm1hdCBkb2VzIHNvLgorICAgICAqCisgICAgICogQHBhcmFtIG51bWJl
ciAgICBUaGUgbnVtYmVyLCBhIERpZ2l0TGlzdCBmb3JtYXQgRGVjaW1hbCBGbG9hdGluZyBQb2lu
dC4KKyAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1dCBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSBy
ZXN1bHQuCisgICAgICogICAgICAgICAgICAgICAgICBSZXN1bHQgaXMgYXBwZW5kZWQgdG8gZXhp
c3RpbmcgY29udGVudHMuCisgICAgICogQHBhcmFtIHBvcyAgICAgICBPbiBpbnB1dDogYW4gYWxp
Z25tZW50IGZpZWxkLCBpZiBkZXNpcmVkLgorICAgICAqICAgICAgICAgICAgICAgICAgT24gb3V0
cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLgorICAgICAqIEBwYXJhbSBz
dGF0dXMgICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMu
CisgICAgICogQHJldHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0
ZXIuCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgdmlydHVhbCBVbmljb2RlU3RyaW5n
JiBmb3JtYXQoY29uc3QgRGlnaXRMaXN0ICZudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiYgcG9zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7CitwdWJsaWM6CisKICAgdXNp
bmcgTnVtYmVyRm9ybWF0OjpwYXJzZTsKIAogICAvKioKQEAgLTkyNSw2ICsxMDEwLDIwIEBAIHB1
YmxpYzoKICAgICovCiAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZXh0KFVEaXNwbGF5Q29udGV4dCB2
YWx1ZSwgVUVycm9yQ29kZSYgc3RhdHVzKTsKIAorICAgIC8qKgorICAgICAqIEdldCB0aGUgcm91
bmRpbmcgbW9kZS4KKyAgICAgKiBAcmV0dXJuIEEgcm91bmRpbmcgbW9kZQorICAgICAqIEBkcmFm
dCBJQ1UgNjAKKyAgICAgKi8KKyAgICB2aXJ0dWFsIEVSb3VuZGluZ01vZGUgZ2V0Um91bmRpbmdN
b2RlKHZvaWQpIGNvbnN0OworCisgICAgLyoqCisgICAgICogU2V0IHRoZSByb3VuZGluZyBtb2Rl
LgorICAgICAqIEBwYXJhbSByb3VuZGluZ01vZGUgQSByb3VuZGluZyBtb2RlCisgICAgICogQGRy
YWZ0IElDVSA2MAorICAgICAqLworICAgIHZpcnR1YWwgdm9pZCBzZXRSb3VuZGluZ01vZGUoRVJv
dW5kaW5nTW9kZSByb3VuZGluZ01vZGUpOworCiBwdWJsaWM6CiAgICAgLyoqCiAgICAgICogSUNV
ICJwb29yIG1hbidzIFJUVEkiLCByZXR1cm5zIGEgVUNsYXNzSUQgZm9yIHRoaXMgY2xhc3MuCkBA
IC05NzQsMTkgKzEwNzMsMjYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3Bvc2UoKTsKICAgICB2
b2lkIHN0cmlwV2hpdGVzcGFjZShVbmljb2RlU3RyaW5nJiBzcmMpOwogICAgIHZvaWQgaW5pdERl
ZmF1bHRSdWxlU2V0KCk7Ci0gICAgdm9pZCBmb3JtYXQoZG91YmxlIG51bWJlciwgTkZSdWxlU2V0
JiBydWxlU2V0KTsKICAgICBORlJ1bGVTZXQqIGZpbmRSdWxlU2V0KGNvbnN0IFVuaWNvZGVTdHJp
bmcmIG5hbWUsIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7CiAKICAgICAvKiBmcmllbmQgYWNj
ZXNzICovCiAgICAgZnJpZW5kIGNsYXNzIE5GU3Vic3RpdHV0aW9uOwogICAgIGZyaWVuZCBjbGFz
cyBORlJ1bGU7CisgICAgZnJpZW5kIGNsYXNzIE5GUnVsZVNldDsKICAgICBmcmllbmQgY2xhc3Mg
RnJhY3Rpb25hbFBhcnRTdWJzdGl0dXRpb247CiAKICAgICBpbmxpbmUgTkZSdWxlU2V0ICogZ2V0
RGVmYXVsdFJ1bGVTZXQoKSBjb25zdDsKICAgICBjb25zdCBSdWxlQmFzZWRDb2xsYXRvciAqIGdl
dENvbGxhdG9yKCkgY29uc3Q7Ci0gICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgKiBnZXREZWNpbWFs
Rm9ybWF0U3ltYm9scygpIGNvbnN0OworICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzICogaW5pdGlh
bGl6ZURlY2ltYWxGb3JtYXRTeW1ib2xzKFVFcnJvckNvZGUgJnN0YXR1cyk7CisgICAgY29uc3Qg
RGVjaW1hbEZvcm1hdFN5bWJvbHMgKiBnZXREZWNpbWFsRm9ybWF0U3ltYm9scygpIGNvbnN0Owor
ICAgIE5GUnVsZSAqIGluaXRpYWxpemVEZWZhdWx0SW5maW5pdHlSdWxlKFVFcnJvckNvZGUgJnN0
YXR1cyk7CisgICAgY29uc3QgTkZSdWxlICogZ2V0RGVmYXVsdEluZmluaXR5UnVsZSgpIGNvbnN0
OworICAgIE5GUnVsZSAqIGluaXRpYWxpemVEZWZhdWx0TmFOUnVsZShVRXJyb3JDb2RlICZzdGF0
dXMpOworICAgIGNvbnN0IE5GUnVsZSAqIGdldERlZmF1bHROYU5SdWxlKCkgY29uc3Q7CiAgICAg
UGx1cmFsRm9ybWF0ICpjcmVhdGVQbHVyYWxGb3JtYXQoVVBsdXJhbFR5cGUgcGx1cmFsVHlwZSwg
Y29uc3QgVW5pY29kZVN0cmluZyAmcGF0dGVybiwgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsK
LSAgICBVbmljb2RlU3RyaW5nJiBhZGp1c3RGb3JDYXBpdGFsaXphdGlvbkNvbnRleHQoaW50MzJf
dCBzdGFydFBvcywgVW5pY29kZVN0cmluZyYgY3VycmVudFJlc3VsdCkgY29uc3Q7CisgICAgVW5p
Y29kZVN0cmluZyYgYWRqdXN0Rm9yQ2FwaXRhbGl6YXRpb25Db250ZXh0KGludDMyX3Qgc3RhcnRQ
b3MsIFVuaWNvZGVTdHJpbmcmIGN1cnJlbnRSZXN1bHQsIFVFcnJvckNvZGUmIHN0YXR1cykgY29u
c3Q7CisgICAgVW5pY29kZVN0cmluZyYgZm9ybWF0KGludDY0X3QgbnVtYmVyLCBORlJ1bGVTZXQg
KnJ1bGVTZXQsIFVuaWNvZGVTdHJpbmcmIHRvQXBwZW5kVG8sIFVFcnJvckNvZGUmIHN0YXR1cykg
Y29uc3Q7CisgICAgdm9pZCBmb3JtYXQoZG91YmxlIG51bWJlciwgTkZSdWxlU2V0JiBycywgVW5p
Y29kZVN0cmluZyYgdG9BcHBlbmRUbywgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBORlJ1bGVTZXQgKipydWxlU2V0czsKQEAgLTk5Niw2ICsxMTAyLDkgQEAgcHJp
dmF0ZToKICAgICBMb2NhbGUgbG9jYWxlOwogICAgIFJ1bGVCYXNlZENvbGxhdG9yKiBjb2xsYXRv
cjsKICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyogZGVjaW1hbEZvcm1hdFN5bWJvbHM7CisgICAg
TkZSdWxlICpkZWZhdWx0SW5maW5pdHlSdWxlOworICAgIE5GUnVsZSAqZGVmYXVsdE5hTlJ1bGU7
CisgICAgRVJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGU7CiAgICAgVUJvb2wgbGVuaWVudDsKICAg
ICBVbmljb2RlU3RyaW5nKiBsZW5pZW50UGFyc2VSdWxlczsKICAgICBMb2NhbGl6YXRpb25JbmZv
KiBsb2NhbGl6YXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9yYnR6
LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JidHouaAppbmRleCBmMjBmYzgxYTRlNWMyYzhm
NzIzNTZjYzU5ODBiZTg0OTY5MWQ0NWRkLi42ZDY1MmY2OTJiMjIxZWFmNjEwMjE2MWM2YzhmZDIw
MzRmMDgzNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JidHouaAorKysg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JidHouaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIw
MTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVy
bXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMywgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS9yZWdleC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9y
ZWdleC5oCmluZGV4IGMzYzY0NDFiNmY4Y2I0ZmY2MzJhODc4YTczMDg4ZDQ4YTQzZmU1NzQuLjY4
MjlmN2JhNDcyNTVmZjY1ZGVkZTg2Mjg2NzE3NmQyNWQ0MWRhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvcmVnZXguaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Jl
Z2V4LmgKQEAgLTEsMTAgKzEsMTIgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJ
bmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVu
aWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIENvcHlyaWdo
dCAoQykgMjAwMi0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29w
eXJpZ2h0IChDKSAyMDAyLTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICog
ICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKICogICBmaWxlIG5hbWU6ICByZWdleC5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkK
KyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIGluZGVudGF0aW9uOjQKICoKICogICBjcmVhdGVk
IG9uOiAyMDAyb2N0MjIKQEAgLTM0OCwxNyArMzUwLDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgLyoqCiAgICAgICogQ2F1c2UgYSBjb21waWxhdGlvbiBlcnJvciBpZiBhbiBhcHBsaWNhdGlv
biBhY2NpZGVudGFsbHkgYXR0ZW1wdHMgdG8KLSAgICAgKiAgIGNyZWF0ZSBhIG1hdGNoZXIgd2l0
aCBhIChVQ2hhciAqKSBzdHJpbmcgYXMgaW5wdXQgcmF0aGVyIHRoYW4KKyAgICAgKiAgIGNyZWF0
ZSBhIG1hdGNoZXIgd2l0aCBhIChjaGFyMTZfdCAqKSBzdHJpbmcgYXMgaW5wdXQgcmF0aGVyIHRo
YW4KICAgICAgKiAgIGEgVW5pY29kZVN0cmluZy4gIEF2b2lkcyBhIGRhbmdsaW5nIHJlZmVyZW5j
ZSB0byBhIHRlbXBvcmFyeSBzdHJpbmcuCiAgICAgICogPHA+Ci0gICAgICogVG8gZWZmaWNpZW50
bHkgd29yayB3aXRoIFVDaGFyICpzdHJpbmdzLCB3cmFwIHRoZSBkYXRhIGluIGEgVW5pY29kZVN0
cmluZworICAgICAqIFRvIGVmZmljaWVudGx5IHdvcmsgd2l0aCBjaGFyMTZfdCAqc3RyaW5ncywg
d3JhcCB0aGUgZGF0YSBpbiBhIFVuaWNvZGVTdHJpbmcKICAgICAgKiB1c2luZyBvbmUgb2YgdGhl
IGFsaWFzaW5nIGNvbnN0cnVjdG9ycywgc3VjaCBhcwotICAgICAqIDxjb2RlPlVuaWNvZGVTdHJp
bmcoVUJvb2wgaXNUZXJtaW5hdGVkLCBjb25zdCBVQ2hhciAqdGV4dCwgaW50MzJfdCB0ZXh0TGVu
Z3RoKTs8L2NvZGU+CisgICAgICogPGNvZGU+VW5pY29kZVN0cmluZyhVQm9vbCBpc1Rlcm1pbmF0
ZWQsIGNvbnN0IGNoYXIxNl90ICp0ZXh0LCBpbnQzMl90IHRleHRMZW5ndGgpOzwvY29kZT4KICAg
ICAgKiBvciBpbiBhIFVUZXh0LCB1c2luZwotICAgICAqIDxjb2RlPnV0ZXh0X29wZW5VQ2hhcnMo
VVRleHQgKnV0LCBjb25zdCBVQ2hhciAqdGV4dCwgaW50NjRfdCB0ZXh0TGVuZ3RoLCBVRXJyb3JD
b2RlICpzdGF0dXMpOzwvY29kZT4KKyAgICAgKiA8Y29kZT51dGV4dF9vcGVuVUNoYXJzKFVUZXh0
ICp1dCwgY29uc3QgY2hhcjE2X3QgKnRleHQsIGludDY0X3QgdGV4dExlbmd0aCwgVUVycm9yQ29k
ZSAqc3RhdHVzKTs8L2NvZGU+CiAgICAgICoKICAgICAgKi8KLSAgICBSZWdleE1hdGNoZXIgKm1h
dGNoZXIoY29uc3QgVUNoYXIgKmlucHV0LAorICAgIFJlZ2V4TWF0Y2hlciAqbWF0Y2hlcihjb25z
dCBjaGFyMTZfdCAqaW5wdXQsCiAgICAgICAgIFVFcnJvckNvZGUgICAgICAgICAgJnN0YXR1cykg
Y29uc3Q7CiBwdWJsaWM6CiAKQEAgLTQ1MCw3ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgICogQHBh
cmFtICBncm91cE5hbWUgICBUaGUgY2FwdHVyZSBncm91cCBuYW1lLgogICAgICAqIEBwYXJhbSAg
c3RhdHVzICAgICAgQSBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycy4KICAgICAgKgot
ICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBAc3RhYmxlIElDVSA1NQogICAgICAqLwogICAg
IHZpcnR1YWwgaW50MzJfdCBncm91cE51bWJlckZyb21OYW1lKGNvbnN0IFVuaWNvZGVTdHJpbmcg
Jmdyb3VwTmFtZSwgVUVycm9yQ29kZSAmc3RhdHVzKSBjb25zdDsKIApAQCAtNDY5LDcgKzQ3MSw3
IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgICAgICAgIG51bC10ZXJtaW5hdGVkLgog
ICAgICAqIEBwYXJhbSAgc3RhdHVzICAgICAgQSBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVy
cm9ycy4KICAgICAgKgotICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBAc3RhYmxlIElDVSA1
NQogICAgICAqLwogICAgIHZpcnR1YWwgaW50MzJfdCBncm91cE51bWJlckZyb21OYW1lKGNvbnN0
IGNoYXIgKmdyb3VwTmFtZSwgaW50MzJfdCBuYW1lTGVuZ3RoLCBVRXJyb3JDb2RlICZzdGF0dXMp
IGNvbnN0OwogCkBAIC03NDYsMTcgKzc0OCwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8q
KgogICAgICAqIENhdXNlIGEgY29tcGlsYXRpb24gZXJyb3IgaWYgYW4gYXBwbGljYXRpb24gYWNj
aWRlbnRhbGx5IGF0dGVtcHRzIHRvCi0gICAgICogICBjcmVhdGUgYSBtYXRjaGVyIHdpdGggYSAo
VUNoYXIgKikgc3RyaW5nIGFzIGlucHV0IHJhdGhlciB0aGFuCisgICAgICogICBjcmVhdGUgYSBt
YXRjaGVyIHdpdGggYSAoY2hhcjE2X3QgKikgc3RyaW5nIGFzIGlucHV0IHJhdGhlciB0aGFuCiAg
ICAgICogICBhIFVuaWNvZGVTdHJpbmcuICAgIEF2b2lkcyBhIGRhbmdsaW5nIHJlZmVyZW5jZSB0
byBhIHRlbXBvcmFyeSBzdHJpbmcuCiAgICAgICogPHA+Ci0gICAgICogVG8gZWZmaWNpZW50bHkg
d29yayB3aXRoIFVDaGFyICpzdHJpbmdzLCB3cmFwIHRoZSBkYXRhIGluIGEgVW5pY29kZVN0cmlu
ZworICAgICAqIFRvIGVmZmljaWVudGx5IHdvcmsgd2l0aCBjaGFyMTZfdCAqc3RyaW5ncywgd3Jh
cCB0aGUgZGF0YSBpbiBhIFVuaWNvZGVTdHJpbmcKICAgICAgKiB1c2luZyBvbmUgb2YgdGhlIGFs
aWFzaW5nIGNvbnN0cnVjdG9ycywgc3VjaCBhcwotICAgICAqIDxjb2RlPlVuaWNvZGVTdHJpbmco
VUJvb2wgaXNUZXJtaW5hdGVkLCBjb25zdCBVQ2hhciAqdGV4dCwgaW50MzJfdCB0ZXh0TGVuZ3Ro
KTs8L2NvZGU+CisgICAgICogPGNvZGU+VW5pY29kZVN0cmluZyhVQm9vbCBpc1Rlcm1pbmF0ZWQs
IGNvbnN0IGNoYXIxNl90ICp0ZXh0LCBpbnQzMl90IHRleHRMZW5ndGgpOzwvY29kZT4KICAgICAg
KiBvciBpbiBhIFVUZXh0LCB1c2luZwotICAgICAqIDxjb2RlPnV0ZXh0X29wZW5VQ2hhcnMoVVRl
eHQgKnV0LCBjb25zdCBVQ2hhciAqdGV4dCwgaW50NjRfdCB0ZXh0TGVuZ3RoLCBVRXJyb3JDb2Rl
ICpzdGF0dXMpOzwvY29kZT4KKyAgICAgKiA8Y29kZT51dGV4dF9vcGVuVUNoYXJzKFVUZXh0ICp1
dCwgY29uc3QgY2hhcjE2X3QgKnRleHQsIGludDY0X3QgdGV4dExlbmd0aCwgVUVycm9yQ29kZSAq
c3RhdHVzKTs8L2NvZGU+CiAgICAgICoKICAgICAgKi8KLSAgICBSZWdleE1hdGNoZXIoY29uc3Qg
VW5pY29kZVN0cmluZyAmcmVnZXhwLCBjb25zdCBVQ2hhciAqaW5wdXQsCisgICAgUmVnZXhNYXRj
aGVyKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnJlZ2V4cCwgY29uc3QgY2hhcjE2X3QgKmlucHV0LAog
ICAgICAgICB1aW50MzJfdCBmbGFncywgVUVycm9yQ29kZSAmc3RhdHVzKTsKIHB1YmxpYzoKIApA
QCAtODQ5LDcgKzg1MSw3IEBAIHB1YmxpYzoKICAgICAqICAgICBwb3NpdGlvbiBtYXkgbm90IGJl
IHZhbGlkIHdpdGggdGhlIGFsdGVyZWQgaW5wdXQgc3RyaW5nLjwvcD4KICAgICAqICBAcGFyYW0g
ICBzdGF0dXMgIEEgcmVmZXJlbmNlIHRvIGEgVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJv
cnMuCiAgICAgKiAgQHJldHVybiAgVFJVRSBpZiBhIG1hdGNoIGlzIGZvdW5kLgotICAgICogIEBk
cmFmdCBJQ1UgNTUKKyAgICAqIEBzdGFibGUgSUNVIDU1CiAgICAgKi8KICAgICB2aXJ0dWFsIFVC
b29sIGZpbmQoVUVycm9yQ29kZSAmc3RhdHVzKTsKIApAQCAtODgxLDYgKzg4MywxMSBAQCBwdWJs
aWM6CiAgICAgKiAgICBSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRleHQgY2FwdHVy
ZWQgYnkgdGhlIGdpdmVuIGdyb3VwCiAgICAgKiAgICBkdXJpbmcgdGhlIHByZXZpb3VzIG1hdGNo
IG9wZXJhdGlvbi4gIEdyb3VwKDApIGlzIHRoZSBlbnRpcmUgbWF0Y2guCiAgICAgKgorICAgICog
ICAgQSB6ZXJvIGxlbmd0aCBzdHJpbmcgaXMgcmV0dXJuZWQgYm90aCBmb3IgY2FwdHVyZSBncm91
cHMgdGhhdCBkaWQgbm90CisgICAgKiAgICBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2ggYW5kIGZv
ciBhY3R1YWwgemVybyBsZW5ndGggbWF0Y2hlcy4KKyAgICAqICAgIFRvIGRpc3Rpbmd1aXNoIGJl
dHdlZW4gdGhlc2UgdHdvIGNhc2VzIHVzZSB0aGUgZnVuY3Rpb24gc3RhcnQoKSwKKyAgICAqICAg
IHdoaWNoIHJldHVybnMgLTEgZm9yIG5vbi1wYXJ0aWNpcGF0aW5nIGdyb3Vwcy4KKyAgICAqCiAg
ICAgKiAgICBAcGFyYW0gZ3JvdXBOdW0gdGhlIGNhcHR1cmUgZ3JvdXAgbnVtYmVyCiAgICAgKiAg
ICBAcGFyYW0gICBzdGF0dXMgICAgIEEgcmVmZXJlbmNlIHRvIGEgVUVycm9yQ29kZSB0byByZWNl
aXZlIGFueSBlcnJvcnMuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlIGVy
cm9ycyBhcmUgIFVfUkVHRVhfSU5WQUxJRF9TVEFURSBpZiBubyBtYXRjaApAQCAtOTE5LDYgKzky
NiwxMSBAQCBwdWJsaWM6CiAgICAgKiAgIFJldHVybnMgYSBzaGFsbG93IGNsb25lIG9mIHRoZSBl
bnRpcmUgbGl2ZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgVVRleHQgY3VycmVudCBuYXRpdmUgaW5k
ZXgKICAgICAqICAgc2V0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJlcXVlc3RlZCBncm91cC4K
ICAgICAqCisgICAgKiAgIEEgZ3JvdXAgbGVuZ3RoIG9mIHplcm8gaXMgcmV0dXJuZWQgYm90aCBm
b3IgY2FwdHVyZSBncm91cHMgdGhhdCBkaWQgbm90CisgICAgKiAgIHBhcnRpY2lwYXRlIGluIHRo
ZSBtYXRjaCBhbmQgZm9yIGFjdHVhbCB6ZXJvIGxlbmd0aCBtYXRjaGVzLgorICAgICogICBUbyBk
aXN0aW5ndWlzaCBiZXR3ZWVuIHRoZXNlIHR3byBjYXNlcyB1c2UgdGhlIGZ1bmN0aW9uIHN0YXJ0
KCksCisgICAgKiAgIHdoaWNoIHJldHVybnMgLTEgZm9yIG5vbi1wYXJ0aWNpcGF0aW5nIGdyb3Vw
cy4KKyAgICAqCiAgICAgKiAgIEBwYXJhbSAgIGdyb3VwTnVtICAgVGhlIGNhcHR1cmUgZ3JvdXAg
bnVtYmVyLgogICAgICogICBAcGFyYW0gICBkZXN0ICAgICAgICBUaGUgVVRleHQgaW50byB3aGlj
aCB0aGUgaW5wdXQgc2hvdWxkIGJlIGNsb25lZCwgb3IgTlVMTCB0byBjcmVhdGUgYSBuZXcgVVRl
eHQuCiAgICAgKiAgIEBwYXJhbSAgIGdyb3VwX2xlbiAgIEEgcmVmZXJlbmNlIHRvIHJlY2VpdmUg
dGhlIGxlbmd0aCBvZiB0aGUgZGVzaXJlZCBjYXB0dXJlIGdyb3VwCkBAIC0xMTQ0LDE3ICsxMTU2
LDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLyoqCiAgICAgICogQ2F1c2UgYSBjb21waWxh
dGlvbiBlcnJvciBpZiBhbiBhcHBsaWNhdGlvbiBhY2NpZGVudGFsbHkgYXR0ZW1wdHMgdG8KLSAg
ICAgKiAgIHJlc2V0IGEgbWF0Y2hlciB3aXRoIGEgKFVDaGFyICopIHN0cmluZyBhcyBpbnB1dCBy
YXRoZXIgdGhhbgorICAgICAqICAgcmVzZXQgYSBtYXRjaGVyIHdpdGggYSAoY2hhcjE2X3QgKikg
c3RyaW5nIGFzIGlucHV0IHJhdGhlciB0aGFuCiAgICAgICogICBhIFVuaWNvZGVTdHJpbmcuICAg
IEF2b2lkcyBhIGRhbmdsaW5nIHJlZmVyZW5jZSB0byBhIHRlbXBvcmFyeSBzdHJpbmcuCiAgICAg
ICogPHA+Ci0gICAgICogVG8gZWZmaWNpZW50bHkgd29yayB3aXRoIFVDaGFyICpzdHJpbmdzLCB3
cmFwIHRoZSBkYXRhIGluIGEgVW5pY29kZVN0cmluZworICAgICAqIFRvIGVmZmljaWVudGx5IHdv
cmsgd2l0aCBjaGFyMTZfdCAqc3RyaW5ncywgd3JhcCB0aGUgZGF0YSBpbiBhIFVuaWNvZGVTdHJp
bmcKICAgICAgKiB1c2luZyBvbmUgb2YgdGhlIGFsaWFzaW5nIGNvbnN0cnVjdG9ycywgc3VjaCBh
cwotICAgICAqIDxjb2RlPlVuaWNvZGVTdHJpbmcoVUJvb2wgaXNUZXJtaW5hdGVkLCBjb25zdCBV
Q2hhciAqdGV4dCwgaW50MzJfdCB0ZXh0TGVuZ3RoKTs8L2NvZGU+CisgICAgICogPGNvZGU+VW5p
Y29kZVN0cmluZyhVQm9vbCBpc1Rlcm1pbmF0ZWQsIGNvbnN0IGNoYXIxNl90ICp0ZXh0LCBpbnQz
Ml90IHRleHRMZW5ndGgpOzwvY29kZT4KICAgICAgKiBvciBpbiBhIFVUZXh0LCB1c2luZwotICAg
ICAqIDxjb2RlPnV0ZXh0X29wZW5VQ2hhcnMoVVRleHQgKnV0LCBjb25zdCBVQ2hhciAqdGV4dCwg
aW50NjRfdCB0ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlICpzdGF0dXMpOzwvY29kZT4KKyAgICAgKiA8
Y29kZT51dGV4dF9vcGVuVUNoYXJzKFVUZXh0ICp1dCwgY29uc3QgY2hhcjE2X3QgKnRleHQsIGlu
dDY0X3QgdGV4dExlbmd0aCwgVUVycm9yQ29kZSAqc3RhdHVzKTs8L2NvZGU+CiAgICAgICoKICAg
ICAgKi8KLSAgICBSZWdleE1hdGNoZXIgJnJlc2V0KGNvbnN0IFVDaGFyICppbnB1dCk7CisgICAg
UmVnZXhNYXRjaGVyICZyZXNldChjb25zdCBjaGFyMTZfdCAqaW5wdXQpOwogcHVibGljOgogCiAg
ICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmVnaW9uLmggYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3JlZ2lvbi5oCmluZGV4IGNiNzUyMzRiZjliNjE5NmFhMDkxNTA4
MDQyNzAzNTg4ZTM3NmE0ZTguLjgwYjI5MjllOWYwMGMzYzYzYjFkZTYzMjM1OGExZTEwNGQ0MTkw
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmVnaW9uLmgKKysrIGIvU291
cmNlL1dURi9pY3UvdW5pY29kZS9yZWdpb24uaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1LCBJbnRlcm5hdGlv
bmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3Jh
dGlvbiBhbmQgb3RoZXJzLgogICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAgKi8KQEAgLTEwMSwxMyArMTAzLDExIEBAIHB1YmxpYzoKICAgICAgKi8KICAg
ICBzdGF0aWMgY29uc3QgUmVnaW9uKiBVX0VYUE9SVDIgZ2V0SW5zdGFuY2UgKGludDMyX3QgY29k
ZSwgVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAg
LyoqCiAgICAgICogUmV0dXJucyBhbiBlbnVtZXJhdGlvbiBvdmVyIHRoZSBJRHMgb2YgYWxsIGtu
b3duIHJlZ2lvbnMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gdHlwZS4KLSAgICAgKiBAZHJhZnQgSUNV
IDU1CisgICAgICogQHN0YWJsZSBJQ1UgNTUKICAgICAgKi8KICAgICBzdGF0aWMgU3RyaW5nRW51
bWVyYXRpb24qIFVfRVhQT1JUMiBnZXRBdmFpbGFibGUoVVJlZ2lvblR5cGUgdHlwZSwgVUVycm9y
Q29kZSAmc3RhdHVzKTsKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAgICAKICAgICAv
KioKICAgICAgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcmVnaW9uIHRoYXQgY29udGFpbnMg
dGhpcyByZWdpb24uICBSZXR1cm5zIE5VTEwgaWYgdGhpcyByZWdpb24gaXMgY29kZSAiMDAxIiAo
V29ybGQpCkBAIC0xMjcsNyArMTI3LDYgQEAgcHVibGljOgogICAgICAqLwogICAgIGNvbnN0IFJl
Z2lvbiogZ2V0Q29udGFpbmluZ1JlZ2lvbihVUmVnaW9uVHlwZSB0eXBlKSBjb25zdDsKIAotI2lm
bmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJuIGFuIGVudW1lcmF0
aW9uIG92ZXIgdGhlIElEcyBvZiBhbGwgdGhlIHJlZ2lvbnMgdGhhdCBhcmUgaW1tZWRpYXRlIGNo
aWxkcmVuIG9mIHRoaXMgcmVnaW9uIGluIHRoZQogICAgICAqIHJlZ2lvbiBoaWVyYXJjaHkuIFRo
ZXNlIHJldHVybmVkIHJlZ2lvbnMgY291bGQgYmUgZWl0aGVyIG1hY3JvIHJlZ2lvbnMsIHRlcnJp
dG9yaWVzLCBvciBhIG1peHR1cmUgb2YgdGhlIHR3bywKQEAgLTEzNSw3ICsxMzQsNyBAQCBwdWJs
aWM6CiAgICAgICogYW55IHN1Yi1yZWdpb25zLiBGb3IgZXhhbXBsZSwgY2FsbGluZyB0aGlzIG1l
dGhvZCB3aXRoIHJlZ2lvbiAiMTUwIiAoRXVyb3BlKSByZXR1cm5zIGFuIGVudW1lcmF0aW9uIGNv
bnRhaW5pbmcKICAgICAgKiB0aGUgdmFyaW91cyBzdWIgcmVnaW9ucyBvZiBFdXJvcGUgLSAiMDM5
IiAoU291dGhlcm4gRXVyb3BlKSAtICIxNTEiIChFYXN0ZXJuIEV1cm9wZSkgLSAiMTU0IiAoTm9y
dGhlcm4gRXVyb3BlKQogICAgICAqIGFuZCAiMTU1IiAoV2VzdGVybiBFdXJvcGUpLgotICAgICAq
IEBkcmFmdCBJQ1UgNTUgCisgICAgICogQHN0YWJsZSBJQ1UgNTUKICAgICAgKi8KICAgICBTdHJp
bmdFbnVtZXJhdGlvbiogZ2V0Q29udGFpbmVkUmVnaW9ucyhVRXJyb3JDb2RlICZzdGF0dXMpIGNv
bnN0OwogCkBAIC0xNDQsMTAgKzE0Myw5IEBAIHB1YmxpYzoKICAgICAgKiBoaWVyYXJjaHkgYW5k
IG1hdGNoIHRoZSBnaXZlbiB0eXBlLiAgVGhpcyBBUEkgbWF5IHJldHVybiBhbiBlbXB0eSBlbnVt
ZXJhdGlvbiBpZiB0aGlzIHJlZ2lvbiBkb2Vzbid0IGhhdmUgYW55CiAgICAgICogc3ViLXJlZ2lv
bnMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gdHlwZS4gRm9yIGV4YW1wbGUsIGNhbGxpbmcgdGhpcyBt
ZXRob2Qgd2l0aCByZWdpb24gIjE1MCIgKEV1cm9wZSkgYW5kIHR5cGUKICAgICAgKiAiVVJHTl9U
RVJSSVRPUlkiIHJldHVybnMgYSBzZXQgY29udGFpbmluZyBhbGwgdGhlIHRlcnJpdG9yaWVzIGlu
IEV1cm9wZSAoICJGUiIgKEZyYW5jZSkgLSAiSVQiIChJdGFseSkgLSAiREUiIChHZXJtYW55KSBl
dGMuICkKLSAgICAgKiBAZHJhZnQgSUNVIDU1IAorICAgICAqIEBzdGFibGUgSUNVIDU1CiAgICAg
ICovCiAgICAgU3RyaW5nRW51bWVyYXRpb24qIGdldENvbnRhaW5lZFJlZ2lvbnMoIFVSZWdpb25U
eXBlIHR5cGUsIFVFcnJvckNvZGUgJnN0YXR1cyApIGNvbnN0OwotI2VuZGlmIC8qIFVfSElERV9E
UkFGVF9BUEkgKi8KICAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyByZWdp
b24gY29udGFpbnMgdGhlIHN1cHBsaWVkIG90aGVyIHJlZ2lvbiBhbnl3aGVyZSBpbiB0aGUgcmVn
aW9uIGhpZXJhcmNoeS4KQEAgLTE1NSwxNSArMTUzLDEzIEBAIHB1YmxpYzoKICAgICAgKi8KICAg
ICBVQm9vbCBjb250YWlucyhjb25zdCBSZWdpb24gJm90aGVyKSBjb25zdDsKIAotI2lmbmRlZiBV
X0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogRm9yIGRlcHJlY2F0ZWQgcmVnaW9ucywg
cmV0dXJuIGFuIGVudW1lcmF0aW9uIG92ZXIgdGhlIElEcyBvZiB0aGUgcmVnaW9ucyB0aGF0IGFy
ZSB0aGUgcHJlZmVycmVkIHJlcGxhY2VtZW50CiAgICAgICogcmVnaW9ucyBmb3IgdGhpcyByZWdp
b24uICBSZXR1cm5zIG51bGwgZm9yIGEgbm9uLWRlcHJlY2F0ZWQgcmVnaW9uLiAgRm9yIGV4YW1w
bGUsIGNhbGxpbmcgdGhpcyBtZXRob2Qgd2l0aCByZWdpb24KICAgICAgKiAiU1UiIChTb3ZpZXQg
VW5pb24pIHdvdWxkIHJldHVybiBhIGxpc3Qgb2YgdGhlIHJlZ2lvbnMgY29udGFpbmluZyAiUlUi
IChSdXNzaWEpLCAiQU0iIChBcm1lbmlhKSwgIkFaIiAoQXplcmJhaWphbiksIGV0Yy4uLgotICAg
ICAqIEBkcmFmdCBJQ1UgNTUgCisgICAgICogQHN0YWJsZSBJQ1UgNTUgCiAgICAgICovCiAgICAg
U3RyaW5nRW51bWVyYXRpb24qIGdldFByZWZlcnJlZFZhbHVlcyhVRXJyb3JDb2RlICZzdGF0dXMp
IGNvbnN0OwotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KIAogICAgIC8qKgogICAgICAq
IFJldHVybiB0aGlzIHJlZ2lvbidzIGNhbm9uaWNhbCByZWdpb24gY29kZS4KQEAgLTIxNiw3ICsy
MTIsNyBAQCBwcml2YXRlOgogICAgICAqIGFueXRoaW5nIG1lYW5pbmdmdWwuCiAgICAgICovCiAK
LSAgICBzdGF0aWMgdm9pZCBsb2FkUmVnaW9uRGF0YShVRXJyb3JDb2RlICZzdGF0dXMpOworICAg
IHN0YXRpYyB2b2lkIFVfQ0FMTENPTlYgbG9hZFJlZ2lvbkRhdGEoVUVycm9yQ29kZSAmc3RhdHVz
KTsKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9yZWxkYXRlZm10
LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JlbGRhdGVmbXQuaAppbmRleCA3YjQxNmNmY2Y2
ZjcxNWU5N2NkNTliMzQzYjZiZDRjNzIzMTViMDhjLi4wOWQ5NjIwYmU1YjA2MzFkZjg3YjBlNDRj
YTNkMWQzMzM3ZDEyMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JlbGRh
dGVmbXQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JlbGRhdGVmbXQuaApAQCAtMSw2
ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMu
CisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHly
aWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVz
IENvcnBvcmF0aW9uIGFuZAogKiBvdGhlcnMuCiAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgpAQCAtMTUsNiArMTcsNyBAQAogI2luY2x1ZGUgInVuaWNvZGUvdXR5
cGVzLmgiCiAjaW5jbHVkZSAidW5pY29kZS91b2JqZWN0LmgiCiAjaW5jbHVkZSAidW5pY29kZS91
ZGlzcGxheWNvbnRleHQuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3VyZWxkYXRlZm10LmgiCiAjaW5j
bHVkZSAidW5pY29kZS9sb2NpZC5oIgogCiAvKioKQEAgLTIyLDQyICsyNSw3IEBACiAgKiBcYnJp
ZWYgQysrIEFQSTogRm9ybWF0cyByZWxhdGl2ZSBkYXRlcyBzdWNoIGFzICIxIGRheSBhZ28iIG9y
ICJ0b21vcnJvdyIKICAqLwogCi0jaWYgIVVDT05GSUdfTk9fRk9STUFUVElORyAmJiAhVUNPTkZJ
R19OT19CUkVBS19JVEVSQVRJT04KLQotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCi0KLS8qKgot
ICogVGhlIGZvcm1hdHRpbmcgc3R5bGUKLSAqIEBkcmFmdCBJQ1UgNTQKLSAqLwotdHlwZWRlZiBl
bnVtIFVEYXRlUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclN0eWxlIHsKLQotICAvKioKLSAgICog
RXZlcnl0aGluZyBzcGVsbGVkIG91dC4KLSAgICogQGRyYWZ0IElDVSA1NAotICAgKi8KLSAgVURB
VF9TVFlMRV9MT05HLAotCi0gIC8qKgotICAgKiBBYmJyZXZpYXRpb25zIHVzZWQgd2hlbiBwb3Nz
aWJsZS4KLSAgICogQGRyYWZ0IElDVSA1NAotICAgKi8KLSAgVURBVF9TVFlMRV9TSE9SVCwKLQot
ICAvKioKLSAgICogVXNlIHRoZSBzaG9ydGVzdCBwb3NzaWJsZSBmb3JtLgotICAgKiBAZHJhZnQg
SUNVIDU0Ci0gICAqLwotICBVREFUX1NUWUxFX05BUlJPVywKLQotICAvKioKLSAgICogVGhlIG51
bWJlciBvZiBzdHlsZXMuCi0gICAqIEBkcmFmdCBJQ1UgNTQKLSAgICovCi0gIFVEQVRfU1RZTEVf
Q09VTlQKLX0gVURhdGVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyU3R5bGU7IAotCi0jZW5kaWYg
LyogVV9ISURFX0RSQUZUX0FQSSAqLworI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKIAogLyoq
CiAgKiBSZXByZXNlbnRzIHRoZSB1bml0IGZvciBmb3JtYXR0aW5nIGEgcmVsYXRpdmUgZGF0ZS4g
ZS5nICJpbiA1IGRheXMiCkBAIC0xMDgsMTEgKzc2LDEzIEBAIHR5cGVkZWYgZW51bSBVRGF0ZVJl
bGF0aXZlVW5pdCB7CiAgICAgICovCiAgICAgVURBVF9SRUxBVElWRV9ZRUFSUywKIAorI2lmbmRl
ZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgICAvKioKLSAgICAgKiBDb3VudCBvZiBpdGVtcyBp
biB0aGlzIGVudW0uCi0gICAgICogQHN0YWJsZSBJQ1UgNTMKKyAgICAgKiBPbmUgbW9yZSB0aGFu
IHRoZSBoaWdoZXN0IG5vcm1hbCBVRGF0ZVJlbGF0aXZlVW5pdCB2YWx1ZS4KKyAgICAgKiBAZGVw
cmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNl
ZSBJQ1UgdGlja2V0ICMxMjQyMC4KICAgICAgKi8KICAgICBVREFUX1JFTEFUSVZFX1VOSVRfQ09V
TlQKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9IFVEYXRlUmVsYXRpdmVVbml0
OwogCiAvKioKQEAgLTE5NSwxMSArMTY1LDEzIEBAIHR5cGVkZWYgZW51bSBVRGF0ZUFic29sdXRl
VW5pdCB7CiAgICAgICovCiAgICAgVURBVF9BQlNPTFVURV9OT1csCiAKKyNpZm5kZWYgVV9ISURF
X0RFUFJFQ0FURURfQVBJCiAgICAgLyoqCi0gICAgICogQ291bnQgb2YgaXRlbXMgaW4gdGhpcyBl
bnVtLgotICAgICAqIEBzdGFibGUgSUNVIDUzCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGln
aGVzdCBub3JtYWwgVURhdGVBYnNvbHV0ZVVuaXQgdmFsdWUuCisgICAgICogQGRlcHJlY2F0ZWQg
SUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRp
Y2tldCAjMTI0MjAuCiAgICAgICovCiAgICAgVURBVF9BQlNPTFVURV9VTklUX0NPVU5UCisjZW5k
aWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBVRGF0ZUFic29sdXRlVW5pdDsKIAogLyoq
CkBAIC0yNDUsMTYgKzIxNywyMCBAQCB0eXBlZGVmIGVudW0gVURhdGVEaXJlY3Rpb24gewogICAg
ICAqLwogICAgIFVEQVRfRElSRUNUSU9OX1BMQUlOLAogCisjaWZuZGVmIFVfSElERV9ERVBSRUNB
VEVEX0FQSQogICAgIC8qKgotICAgICAqIENvdW50IG9mIGl0ZW1zIGluIHRoaXMgZW51bS4KLSAg
ICAgKiBAc3RhYmxlIElDVSA1MworICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9y
bWFsIFVEYXRlRGlyZWN0aW9uIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUg
bnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIw
LgogICAgICAqLwogICAgIFVEQVRfRElSRUNUSU9OX0NPVU5UCisjZW5kaWYgIC8vIFVfSElERV9E
RVBSRUNBVEVEX0FQSQogfSBVRGF0ZURpcmVjdGlvbjsKIAorI2lmICFVQ09ORklHX05PX0JSRUFL
X0lURVJBVElPTgogCiBVX05BTUVTUEFDRV9CRUdJTgogCitjbGFzcyBCcmVha0l0ZXJhdG9yOwog
Y2xhc3MgUmVsYXRpdmVEYXRlVGltZUNhY2hlRGF0YTsKIGNsYXNzIFNoYXJlZE51bWJlckZvcm1h
dDsKIGNsYXNzIFNoYXJlZFBsdXJhbFJ1bGVzOwpAQCAtMzU4LDcgKzMzNCw2IEBAIHB1YmxpYzoK
ICAgICBSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKAogICAgICAgICBjb25zdCBMb2NhbGUmIGxv
Y2FsZSwgTnVtYmVyRm9ybWF0ICpuZlRvQWRvcHQsIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKLSNp
Zm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIENyZWF0ZSBSZWxhdGl2ZURh
dGVUaW1lRm9ybWF0dGVyIHdpdGggZ2l2ZW4gbG9jYWxlLCBOdW1iZXJGb3JtYXQsCiAgICAgICog
YW5kIGNhcGl0YWxpemF0aW9uIGNvbnRleHQuCkBAIC0zNzIsNyArMzQ3LDcgQEAgcHVibGljOgog
ICAgICAqIEBwYXJhbSBjYXBpdGFsaXphdGlvbkNvbnRleHQgQSB2YWx1ZSBmcm9tIFVEaXNwbGF5
Q29udGV4dCB0aGF0IHBlcnRhaW5zIHRvCiAgICAgICogY2FwaXRhbGl6YXRpb24uCiAgICAgICog
QHN0YXR1cyBBbnkgZXJyb3IgaXMgcmV0dXJuZWQgaGVyZS4gCi0gICAgICogQGRyYWZ0IElDVSA1
NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgUmVsYXRpdmVEYXRlVGltZUZv
cm1hdHRlcigKICAgICAgICAgICAgIGNvbnN0IExvY2FsZSYgbG9jYWxlLApAQCAtMzgwLDcgKzM1
NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFVEYXRlUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRl
clN0eWxlIHN0eWxlLAogICAgICAgICAgICAgVURpc3BsYXlDb250ZXh0IGNhcGl0YWxpemF0aW9u
Q29udGV4dCwKICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7Ci0jZW5kaWYgIC8qIFVf
SElERV9EUkFGVF9BUEkgKi8KIAogICAgIC8qKgogICAgICAqIENvcHkgY29uc3RydWN0b3IuCkBA
IC00NDEsNiArNDE1LDUyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFw
cGVuZFRvLAogICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKIAorICAgIC8q
KgorICAgICAqIEZvcm1hdCBhIGNvbWJpbmF0aW9uIG9mIFVSZWxhdGl2ZURhdGVUaW1lVW5pdCBh
bmQgbnVtZXJpYyBvZmZzZXQKKyAgICAgKiB1c2luZyBhIG51bWVyaWMgc3R5bGUsIGUuZy4gIjEg
d2VlayBhZ28iLCAiaW4gMSB3ZWVrIiwKKyAgICAgKiAiNSB3ZWVrcyBhZ28iLCAiaW4gNSB3ZWVr
cyIuCisgICAgICogCisgICAgICogQHBhcmFtIG9mZnNldCAgICBUaGUgc2lnbmVkIG9mZnNldCBm
b3IgdGhlIHNwZWNpZmllZCB1bml0LiBUaGlzCisgICAgICogICAgICAgICAgICAgICAgICB3aWxs
IGJlIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhpcyBvYmplY3QncworICAgICAqICAgICAgICAg
ICAgICAgICAgTnVtYmVyRm9ybWF0IG9iamVjdC4KKyAgICAgKiBAcGFyYW0gdW5pdCAgICAgIFRo
ZSB1bml0IHRvIHVzZSB3aGVuIGZvcm1hdHRpbmcgdGhlIHJlbGF0aXZlCisgICAgICogICAgICAg
ICAgICAgICAgICBkYXRlLCBlLmcuIFVEQVRfUkVMX1VOSVRfV0VFSywKKyAgICAgKiAgICAgICAg
ICAgICAgICAgIFVEQVRfUkVMX1VOSVRfRlJJREFZLgorICAgICAqIEBwYXJhbSBhcHBlbmRUbyAg
VGhlIHN0cmluZyB0byB3aGljaCB0aGUgZm9ybWF0dGVkIHJlc3VsdCB3aWxsIGJlCisgICAgICog
ICAgICAgICAgICAgICAgICBhcHBlbmRlZC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzICAgIElDVSBl
cnJvciBjb2RlIHJldHVybmVkIGhlcmUuCisgICAgICogQHJldHVybiAgICAgICAgICBhcHBlbmRU
bworICAgICAqIEBzdGFibGUgSUNVIDU3CisgICAgICovCisgICAgVW5pY29kZVN0cmluZyYgZm9y
bWF0TnVtZXJpYygKKyAgICAgICAgICAgIGRvdWJsZSBvZmZzZXQsCisgICAgICAgICAgICBVUmVs
YXRpdmVEYXRlVGltZVVuaXQgdW5pdCwKKyAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVu
ZFRvLAorICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKKworICAgIC8qKgor
ICAgICAqIEZvcm1hdCBhIGNvbWJpbmF0aW9uIG9mIFVSZWxhdGl2ZURhdGVUaW1lVW5pdCBhbmQg
bnVtZXJpYyBvZmZzZXQKKyAgICAgKiB1c2luZyBhIHRleHQgc3R5bGUgaWYgcG9zc2libGUsIGUu
Zy4gImxhc3Qgd2VlayIsICJ0aGlzIHdlZWsiLAorICAgICAqICJuZXh0IHdlZWsiLCAieWVzdGVy
ZGF5IiwgInRvbW9ycm93Ii4gRmFsbHMgYmFjayB0byBudW1lcmljCisgICAgICogc3R5bGUgaWYg
bm8gYXBwcm9wcmlhdGUgdGV4dCB0ZXJtIGlzIGF2YWlsYWJsZSBmb3IgdGhlIHNwZWNpZmllZAor
ICAgICAqIG9mZnNldCBpbiB0aGUgb2JqZWN0J3MgbG9jYWxlLgorICAgICAqCisgICAgICogQHBh
cmFtIG9mZnNldCAgICBUaGUgc2lnbmVkIG9mZnNldCBmb3IgdGhlIHNwZWNpZmllZCB1bml0Lgor
ICAgICAqIEBwYXJhbSB1bml0ICAgICAgVGhlIHVuaXQgdG8gdXNlIHdoZW4gZm9ybWF0dGluZyB0
aGUgcmVsYXRpdmUKKyAgICAgKiAgICAgICAgICAgICAgICAgIGRhdGUsIGUuZy4gVURBVF9SRUxf
VU5JVF9XRUVLLAorICAgICAqICAgICAgICAgICAgICAgICAgVURBVF9SRUxfVU5JVF9GUklEQVku
CisgICAgICogQHBhcmFtIGFwcGVuZFRvICBUaGUgc3RyaW5nIHRvIHdoaWNoIHRoZSBmb3JtYXR0
ZWQgcmVzdWx0IHdpbGwgYmUKKyAgICAgKiAgICAgICAgICAgICAgICAgIGFwcGVuZGVkLgorICAg
ICAqIEBwYXJhbSBzdGF0dXMgICAgSUNVIGVycm9yIGNvZGUgcmV0dXJuZWQgaGVyZS4KKyAgICAg
KiBAcmV0dXJuICAgICAgICAgIGFwcGVuZFRvCisgICAgICogQHN0YWJsZSBJQ1UgNTcKKyAgICAg
Ki8KKyAgICBVbmljb2RlU3RyaW5nJiBmb3JtYXQoCisgICAgICAgICAgICBkb3VibGUgb2Zmc2V0
LAorICAgICAgICAgICAgVVJlbGF0aXZlRGF0ZVRpbWVVbml0IHVuaXQsCisgICAgICAgICAgICBV
bmljb2RlU3RyaW5nJiBhcHBlbmRUbywKKyAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykg
Y29uc3Q7CisKICAgICAvKioKICAgICAgKiBDb21iaW5lcyBhIHJlbGF0aXZlIGRhdGUgc3RyaW5n
IGFuZCBhIHRpbWUgc3RyaW5nIGluIHRoaXMgb2JqZWN0J3MKICAgICAgKiBsb2NhbGUuIFRoaXMg
aXMgZG9uZSB3aXRoIHRoZSBzYW1lIGRhdGUtdGltZSBzZXBhcmF0b3IgdXNlZCBmb3IgdGhlCkBA
IC00NjYsMjEgKzQ4NiwxOSBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgY29uc3QgTnVtYmVyRm9y
bWF0JiBnZXROdW1iZXJGb3JtYXQoKSBjb25zdDsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJ
CiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgY2FwaXRhbGl6YXRpb24gY29udGV4dC4KICAg
ICAgKgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAq
LwogICAgIFVEaXNwbGF5Q29udGV4dCBnZXRDYXBpdGFsaXphdGlvbkNvbnRleHQoKSBjb25zdDsK
IAogICAgIC8qKgogICAgICAqIFJldHVybnMgdGhlIGZvcm1hdCBzdHlsZS4KICAgICAgKgotICAg
ICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIFVE
YXRlUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclN0eWxlIGdldEZvcm1hdFN0eWxlKCkgY29uc3Q7
Ci0jZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KIAogcHJpdmF0ZToKICAgICBjb25zdCBS
ZWxhdGl2ZURhdGVUaW1lQ2FjaGVEYXRhKiBmQ2FjaGU7CkBAIC00OTksNSArNTE3LDYgQEAgcHJp
dmF0ZToKIAogVV9OQU1FU1BBQ0VfRU5ECiAKLSNlbmRpZiAvKiAhVUNPTkZJR19OT19GT1JNQVRU
SU5HICYmICFVQ09ORklHX05PX0JSRUFLX0lURVJBVElPTiovCi0jZW5kaWYKKyNlbmRpZiAvKiAh
VUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04gKi8KKyNlbmRpZiAvKiAhVUNPTkZJR19OT19GT1JN
QVRUSU5HICovCisjZW5kaWYgLyogX19SRUxEQVRFRk1UX0ggKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvcmVwLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JlcC5oCmlu
ZGV4IDRjN2VhZTE0MDFkY2Q2Yzk1NDIxNTdkYmZhMGYyZmUzZWE4ZGM0ZWQuLjQxZmRjMDQwNDk3
YmYyY2RkNDBjMDAzZTkxMDc2ZjU5NjQ1MDczYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvcmVwLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9yZXAuaApAQCAtMSwz
ICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMu
CisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHly
aWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAxOTk5LTIw
MTIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCkBAIC05
MSw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuIDE2LWJpdCBjb2RlIHVuaXQgb2Yg
dGV4dCBhdCBnaXZlbiBvZmZzZXQKICAgICAgKiBAc3RhYmxlIElDVSAxLjgKICAgICAgKi8KLSAg
ICBpbmxpbmUgVUNoYXIgY2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKyAgICBpbmxpbmUg
Y2hhcjE2X3QgY2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKIAogICAgIC8qKgogICAgICAq
IFJldHVybnMgdGhlIDMyLWJpdCBjb2RlIHBvaW50IGF0IHRoZSBnaXZlbiAxNi1iaXQgb2Zmc2V0
IGludG8KQEAgLTIyOCw3ICsyMzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICogVmlydHVhbCB2ZXJz
aW9uIG9mIGNoYXJBdCgpLgogICAgICAqIEBzdGFibGUgSUNVIDIuNAogICAgICAqLwotICAgIHZp
cnR1YWwgVUNoYXIgZ2V0Q2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBjaGFyMTZfdCBnZXRDaGFyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0ID0gMDsKIAogICAg
IC8qKgogICAgICAqIFZpcnR1YWwgdmVyc2lvbiBvZiBjaGFyMzJBdCgpLgpAQCAtMjQ0LDcgKzI0
Niw3IEBAIFJlcGxhY2VhYmxlOjpsZW5ndGgoKSBjb25zdCB7CiAgICAgcmV0dXJuIGdldExlbmd0
aCgpOwogfQogCi1pbmxpbmUgVUNoYXIKK2lubGluZSBjaGFyMTZfdAogUmVwbGFjZWFibGU6OmNo
YXJBdChpbnQzMl90IG9mZnNldCkgY29uc3QgewogICAgIHJldHVybiBnZXRDaGFyQXQob2Zmc2V0
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmVzYnVuZC5oIGIvU291
cmNlL1dURi9pY3UvdW5pY29kZS9yZXNidW5kLmgKaW5kZXggNmUzYzFiMmFmYzAxN2VkMjEwZWZi
MDAyNGQ5NDYwYmI5NmFiNTFiYi4uYjUyMmE3YTYxNTQyMmNkYzc4ODcwOGJjZmZmZDU0OTVmNzM0
NTAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9yZXNidW5kLmgKKysrIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS9yZXNidW5kLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAy
MDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRl
cm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgogKgpAQCAtMjE0LDcgKzIxNiw3IEBAIHB1YmxpYzoKICAgICAg
KiAgICAgICAgICAgICAgICBjb3VsZCBiZSA8VFQ+VV9NSVNTSU5HX1JFU09VUkNFX0VSUk9SPC9U
VD4gaWYgdGhlIGtleSBpcyBub3QgZm91bmQKICAgICAgKiAgICAgICAgICAgICAgICBjb3VsZCBi
ZSBhIHdhcm5pbmcKICAgICAgKiAgICAgICAgICAgICAgICBlLmcuOiA8VFQ+VV9VU0lOR19GQUxM
QkFDS19XQVJOSU5HPC9UVD4sPFRUPlVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIDwvVFQ+Ci0gICAg
ICogQHJldHVybiBhIHBvaW50ZXIgdG8gYSB6ZXJvLXRlcm1pbmF0ZWQgVUNoYXIgYXJyYXkgd2hp
Y2ggbGl2ZXMgaW4gYSBtZW1vcnkgbWFwcGVkL0RMTCBmaWxlLgorICAgICAqIEByZXR1cm4gYSBw
b2ludGVyIHRvIGEgemVyby10ZXJtaW5hdGVkIGNoYXIxNl90IGFycmF5IHdoaWNoIGxpdmVzIGlu
IGEgbWVtb3J5IG1hcHBlZC9ETEwgZmlsZS4KICAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAg
Ki8KICAgICBVbmljb2RlU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3NjaHJpdGVyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NjaHJpdGVyLmgKaW5kZXggZDBi
NWUyMjUwM2NmZjI2MWQyY2QyNDBmZjEyMDA3ZjkzN2Y3ODNiMi4uYjFkYzkzOWJkNjZmODU1NDRm
NGZkZTJiY2I0OTY2NTI3MjcyNmI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS9zY2hyaXRlci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc2Nocml0ZXIuaApAQCAt
MSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC0xNzMsNyArMTc1
LDcgQEAgcHJvdGVjdGVkOgogICAgKiBAcGFyYW0gbmV3VGV4dExlbmd0aCBUaGUgbGVuZ3RoIG9m
IHRoZSBTdHJpbmcKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICB2b2lkIHNldFRleHQo
Y29uc3QgVUNoYXIqIG5ld1RleHQsIGludDMyX3QgbmV3VGV4dExlbmd0aCk7CisgIHZvaWQgc2V0
VGV4dChjb25zdCBjaGFyMTZfdCogbmV3VGV4dCwgaW50MzJfdCBuZXdUZXh0TGVuZ3RoKTsKIAog
ICAvKioKICAgICogQ29weSBvZiB0aGUgaXRlcmF0ZWQgc3RyaW5nIG9iamVjdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc2NpZW50aWZpY251bWJlcmZvcm1hdHRlci5oIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS9zY2llbnRpZmljbnVtYmVyZm9ybWF0dGVyLmgKaW5kZXgg
NzAwNjk0Y2QyNGJiMGZjMWNjZTE3ZDdlODk5Y2Q1YzBiMzQ4NWZkNi4uMTUwMjNkNTE0MWE0NzBh
NjUyMjIxNTMyMDI0ODE2YTM1NzI3NWJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9zY2llbnRpZmljbnVtYmVyZm9ybWF0dGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9zY2llbnRpZmljbnVtYmVyZm9ybWF0dGVyLmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAy
MDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRl
cm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKLSogQ29weXJpZ2h0IChjKSAyMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNz
IE1hY2hpbmVzCisqIENvcHlyaWdodCAoYykgMjAxNC0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzCiAqIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgogKi8KQEAgLTExLDcgKzEzLDYgQEAKIAogI2lmICFVQ09ORklH
X05PX0ZPUk1BVFRJTkcKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAKICNpbmNsdWRlICJ1
bmljb2RlL3VuaXN0ci5oIgogCkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEZvcm1hdHRhYmxlOwog
ICogZm10LT5mb3JtYXQoMS4yMzQ1NmUtNzgsIGFwcGVuZFRvLCBzdGF0dXMpOwogICogPC9wcmU+
CiAgKgotICogQGRyYWZ0IElDVSA1NQorICogQHN0YWJsZSBJQ1UgNTUKICAqLwogY2xhc3MgVV9J
MThOX0FQSSBTY2llbnRpZmljTnVtYmVyRm9ybWF0dGVyIDogcHVibGljIFVPYmplY3QgewogcHVi
bGljOgpAQCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHN0YXR1cyBlcnJv
ciByZXR1cm5lZCBoZXJlLgogICAgICAqIEByZXR1cm4gVGhlIG5ldyBTY2llbnRpZmljTnVtYmVy
Rm9ybWF0dGVyIGluc3RhbmNlLgogICAgICAqCi0gICAgICogQGRyYWZ0IElDVSA1NQorICAgICAq
IEBzdGFibGUgSUNVIDU1CiAgICAgICovCiAgICAgc3RhdGljIFNjaWVudGlmaWNOdW1iZXJGb3Jt
YXR0ZXIgKmNyZWF0ZVN1cGVyc2NyaXB0SW5zdGFuY2UoCiAgICAgICAgICAgICBEZWNpbWFsRm9y
bWF0ICpmbXRUb0Fkb3B0LCBVRXJyb3JDb2RlICZzdGF0dXMpOwpAQCAtNzAsNyArNzEsNyBAQCBw
dWJsaWM6CiAgICAgICogQHBhcmFtIHN0YXR1cyBlcnJvciByZXR1cm5lZCBoZXJlLgogICAgICAq
IEByZXR1cm4gVGhlIFNjaWVudGlmaWNOdW1iZXJGb3JtYXR0ZXIgaW5zdGFuY2UuCiAgICAgICoK
LSAgICAgKiBAZHJhZnQgSUNVIDU1CisgICAgICogQHN0YWJsZSBJQ1UgNTUKICAgICAgKi8KICAg
ICBzdGF0aWMgU2NpZW50aWZpY051bWJlckZvcm1hdHRlciAqY3JlYXRlU3VwZXJzY3JpcHRJbnN0
YW5jZSgKICAgICAgICAgICAgIGNvbnN0IExvY2FsZSAmbG9jYWxlLCBVRXJyb3JDb2RlICZzdGF0
dXMpOwpAQCAtODYsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHN0YXR1cyBlcnJv
ciByZXR1cm5lZCBoZXJlLgogICAgICAqIEByZXR1cm4gVGhlIG5ldyBTY2llbnRpZmljTnVtYmVy
Rm9ybWF0dGVyIGluc3RhbmNlLgogICAgICAqCi0gICAgICogQGRyYWZ0IElDVSA1NQorICAgICAq
IEBzdGFibGUgSUNVIDU1CiAgICAgICovCiAgICAgc3RhdGljIFNjaWVudGlmaWNOdW1iZXJGb3Jt
YXR0ZXIgKmNyZWF0ZU1hcmt1cEluc3RhbmNlKAogICAgICAgICAgICAgRGVjaW1hbEZvcm1hdCAq
Zm10VG9BZG9wdCwKQEAgLTEwMyw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHN0
YXR1cyBlcnJvciByZXR1cm5lZCBoZXJlLgogICAgICAqIEByZXR1cm4gVGhlIFNjaWVudGlmaWNO
dW1iZXJGb3JtYXR0ZXIgaW5zdGFuY2UuCiAgICAgICoKLSAgICAgKiBAZHJhZnQgSUNVIDU1Cisg
ICAgICogQHN0YWJsZSBJQ1UgNTUKICAgICAgKi8KICAgICBzdGF0aWMgU2NpZW50aWZpY051bWJl
ckZvcm1hdHRlciAqY3JlYXRlTWFya3VwSW5zdGFuY2UoCiAgICAgICAgICAgICBjb25zdCBMb2Nh
bGUgJmxvY2FsZSwKQEAgLTExNCw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICAvKioKICAgICAg
KiBSZXR1cm5zIGEgY29weSBvZiB0aGlzIG9iamVjdC4gQ2FsbGVyIG11c3QgZnJlZSByZXR1cm5l
ZCBjb3B5LgotICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBAc3RhYmxlIElDVSA1NQogICAg
ICAqLwogICAgIFNjaWVudGlmaWNOdW1iZXJGb3JtYXR0ZXIgKmNsb25lKCkgY29uc3QgewogICAg
ICAgICByZXR1cm4gbmV3IFNjaWVudGlmaWNOdW1iZXJGb3JtYXR0ZXIoKnRoaXMpOwpAQCAtMTIy
LDcgKzEyMyw3IEBAIHB1YmxpYzoKIAogICAgIC8qKgogICAgICAqIERlc3RydWN0b3IuCi0gICAg
ICogQGRyYWZ0IElDVSA1NQorICAgICAqIEBzdGFibGUgSUNVIDU1CiAgICAgICovCiAgICAgdmly
dHVhbCB+U2NpZW50aWZpY051bWJlckZvcm1hdHRlcigpOwogCkBAIC0xMzQsNyArMTM1LDcgQEAg
cHVibGljOgogICAgICAqIEBwYXJhbSBzdGF0dXMgYW55IGVycm9yIHJldHVybmVkIGhlcmUuCiAg
ICAgICogQHJldHVybiBhcHBlbmRUbwogICAgICAqCi0gICAgICogQGRyYWZ0IElDVSA1NQorICAg
ICAqIEBzdGFibGUgSUNVIDU1CiAgICAgICovCiAgICAgVW5pY29kZVN0cmluZyAmZm9ybWF0KAog
ICAgICAgICAgICAgY29uc3QgRm9ybWF0dGFibGUgJm51bWJlciwKQEAgLTIxNiw3ICsyMTcsNiBA
QCBwdWJsaWM6CiAKIFVfTkFNRVNQQUNFX0VORAogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQ
SSAqLwogCiAjZW5kaWYgLyogIVVDT05GSUdfTk9fRk9STUFUVElORyAqLwogI2VuZGlmIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9zZWFyY2guaCBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvc2VhcmNoLmgKaW5kZXggNzFiYmYyZGQ1MjlkYjYwMDE1YjVjMGFiZTdhNWIxZDAx
YWE3MjI4Yi4uNjVmN2YxMGJjYzFjNWM2MDY1YmU3YThlOWE2ZTk1YjFiMTI4ZDc5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9zZWFyY2guaAorKysgYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3NlYXJjaC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6
IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0
dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAq
ICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTEgSUJNIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NlbGZtdC5oIGIvU291
cmNlL1dURi9pY3UvdW5pY29kZS9zZWxmbXQuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAw
NzU1CmluZGV4IDYzNTE0NGJiOWIzNWQ2YmFkM2EzOTdjZDM1M2M4ZmYwZmU4MjZmZjQuLjA4ZTlk
NDQ0ZWU5NzE1YTJhNGI1MmMxNmEzNzk1Mjc2ODk0YWNiNTkKLS0tIGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9zZWxmbXQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NlbGZtdC5oCkBA
IC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ09QWVJJR0hUOgogICogQ29weXJpZ2h0
IChjKSAxOTk3LTIwMTEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRp
b24gYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NpbXBsZXR6LmggYi9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3NpbXBsZXR6LmgKaW5kZXggNDc2MmY2Mzk5NTYxNzFkNDM2
YjhhZTNiZmY4ODIzMzFmZjY1OTU0MC4uNWI4MDI2MzJiMGRlNzg1MDRjYWZjMTRlYzgxYzg3NjIy
MmI0ODJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9zaW1wbGV0ei5oCisr
KyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc2ltcGxldHouaApAQCAtMSwzICsxLDUgQEAKKy8v
IMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNl
ICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAv
KgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAxMywg
SW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyAgICAgICAgICAgICAgICAgICAgICoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc21wZHRmbXQuaCBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvc21wZHRmbXQuaAppbmRleCBjY2RhZmY0MmFiYjg5MTFlYTNlYmM2NTM5MGIx
OTliNTFhZTQyM2EwLi45ODAxYjI5YmRiNzQ5YmRlOGJmNmYwZmRhOWYwMmZkZWI0NGYwOWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NtcGR0Zm10LmgKKysrIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS9zbXBkdGZtdC5oCkBAIC0xLDUgKzEsNyBAQAorLy8gwqkgMjAxNiBh
bmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBv
ZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCi0qIENvcHly
aWdodCAoQykgMTk5Ny0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBv
cmF0aW9uIGFuZAorKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNp
bmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtODksNyArOTEsNyBAQCBjbGFzcyBT
aW1wbGVEYXRlRm9ybWF0TXV0YWJsZU5GczsKICAqICAgICAgICAgPHRkIHN0eWxlPSJ0ZXh0LWFs
aWduOiBjZW50ZXIiIHJvd3NwYW49IjMiPkc8L3RkPgogICogICAgICAgICA8dGQgc3R5bGU9InRl
eHQtYWxpZ246IGNlbnRlciI+MS4uMzwvdGQ+CiAgKiAgICAgICAgIDx0ZD5BRDwvdGQ+Ci0gKiAg
ICAgICAgIDx0ZCByb3dzcGFuPSIzIj5FcmEgLSBSZXBsYWNlZCB3aXRoIHRoZSBFcmEgc3RyaW5n
IGZvciB0aGUgY3VycmVudCBkYXRlLiBPbmUgdG8gdGhyZWUgbGV0dGVycyBmb3IgdGhlIAorICog
ICAgICAgICA8dGQgcm93c3Bhbj0iMyI+RXJhIC0gUmVwbGFjZWQgd2l0aCB0aGUgRXJhIHN0cmlu
ZyBmb3IgdGhlIGN1cnJlbnQgZGF0ZS4gT25lIHRvIHRocmVlIGxldHRlcnMgZm9yIHRoZQogICog
ICAgICAgICBhYmJyZXZpYXRlZCBmb3JtLCBmb3VyIGxldHRlcnMgZm9yIHRoZSBsb25nICh3aWRl
KSBmb3JtLCBmaXZlIGZvciB0aGUgbmFycm93IGZvcm0uPC90ZD4KICAqICAgICA8L3RyPgogICog
ICAgIDx0cj4KQEAgLTIxOCw3ICsyMjAsNyBAQCBjbGFzcyBTaW1wbGVEYXRlRm9ybWF0TXV0YWJs
ZU5GczsKICAqICAgICAgICAgPHRkIHJvd3NwYW49IjMiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50
ZXIiPnE8L3RkPgogICogICAgICAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+MS4u
MjwvdGQ+CiAgKiAgICAgICAgIDx0ZD4wMjwvdGQ+Ci0gKiAgICAgICAgIDx0ZCByb3dzcGFuPSIz
Ij48Yj5TdGFuZC1BbG9uZTwvYj4gUXVhcnRlciAtIFVzZSBvbmUgb3IgdHdvIGZvciB0aGUgbnVt
ZXJpY2FsIHF1YXJ0ZXIsIHRocmVlIGZvciB0aGUgYWJicmV2aWF0aW9uLCAKKyAqICAgICAgICAg
PHRkIHJvd3NwYW49IjMiPjxiPlN0YW5kLUFsb25lPC9iPiBRdWFydGVyIC0gVXNlIG9uZSBvciB0
d28gZm9yIHRoZSBudW1lcmljYWwgcXVhcnRlciwgdGhyZWUgZm9yIHRoZSBhYmJyZXZpYXRpb24s
CiAgKiAgICAgICAgIG9yIGZvdXIgZm9yIHRoZSBmdWxsIG5hbWUgKGZpdmUgZm9yIHRoZSBuYXJy
b3cgbmFtZSBpcyBub3QgeWV0IHN1cHBvcnRlZCkuPC90ZD4KICAqICAgICA8L3RyPgogICogICAg
IDx0cj4KQEAgLTI1NCw3ICsyNTYsNyBAQCBjbGFzcyBTaW1wbGVEYXRlRm9ybWF0TXV0YWJsZU5G
czsKICAqICAgICAgICAgPHRkIHJvd3NwYW49IjQiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIi
Pkw8L3RkPgogICogICAgICAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+MS4uMjwv
dGQ+CiAgKiAgICAgICAgIDx0ZD4wOTwvdGQ+Ci0gKiAgICAgICAgIDx0ZCByb3dzcGFuPSI0Ij48
Yj5TdGFuZC1BbG9uZTwvYj4gTW9udGggLSBVc2Ugb25lIG9yIHR3byBmb3IgdGhlIG51bWVyaWNh
bCBtb250aCwgdGhyZWUgZm9yIHRoZSBhYmJyZXZpYXRpb24sIAorICogICAgICAgICA8dGQgcm93
c3Bhbj0iNCI+PGI+U3RhbmQtQWxvbmU8L2I+IE1vbnRoIC0gVXNlIG9uZSBvciB0d28gZm9yIHRo
ZSBudW1lcmljYWwgbW9udGgsIHRocmVlIGZvciB0aGUgYWJicmV2aWF0aW9uLAogICogICAgICAg
ICBmb3VyIGZvciB0aGUgZnVsbCAod2lkZSkgbmFtZSwgb3IgNSBmb3IgdGhlIG5hcnJvdyBuYW1l
LiBXaXRoIHR3byAoIkxMIiksIHRoZSBtb250aCBudW1iZXIgaXMgemVyby1wYWRkZWQgaWYKICAq
ICAgICAgICAgbmVjZXNzYXJ5IChlLmcuICIwOCIpPC90ZD4KICAqICAgICA8L3RyPgpAQCAtMzEw
LDcgKzMxMiw3IEBAIGNsYXNzIFNpbXBsZURhdGVGb3JtYXRNdXRhYmxlTkZzOwogICogICAgICAg
ICA8dGQ+MjQ1MTMzNDwvdGQ+CiAgKiAgICAgICAgIDx0ZD5Nb2RpZmllZCBKdWxpYW4gZGF5LiBU
aGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjb252ZW50aW9uYWwgSnVsaWFuIGRheSBudW1iZXIg
aW4gdHdvIHJlZ2FyZHMuCiAgKiAgICAgICAgIEZpcnN0LCBpdCBkZW1hcmNhdGVzIGRheXMgYXQg
bG9jYWwgem9uZSBtaWRuaWdodCwgcmF0aGVyIHRoYW4gbm9vbiBHTVQuIFNlY29uZCwgaXQgaXMg
YSBsb2NhbCBudW1iZXI7Ci0gKiAgICAgICAgIHRoYXQgaXMsIGl0IGRlcGVuZHMgb24gdGhlIGxv
Y2FsIHRpbWUgem9uZS4gSXQgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBzaW5nbGUgbnVtYmVyIHRo
YXQgZW5jb21wYXNzZXMgCisgKiAgICAgICAgIHRoYXQgaXMsIGl0IGRlcGVuZHMgb24gdGhlIGxv
Y2FsIHRpbWUgem9uZS4gSXQgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBzaW5nbGUgbnVtYmVyIHRo
YXQgZW5jb21wYXNzZXMKICAqICAgICAgICAgYWxsIHRoZSBkYXRlLXJlbGF0ZWQgZmllbGRzLjwv
dGQ+CiAgKiAgICAgPC90cj4KICAqICAgICA8dHI+CkBAIC0zMTksNyArMzIxLDcgQEAgY2xhc3Mg
U2ltcGxlRGF0ZUZvcm1hdE11dGFibGVORnM7CiAgKiAgICAgICAgIDx0ZCByb3dzcGFuPSI0IiBz
dHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj5FPC90ZD4KICAqICAgICAgICAgPHRkIHN0eWxlPSJ0
ZXh0LWFsaWduOiBjZW50ZXIiPjEuLjM8L3RkPgogICogICAgICAgICA8dGQ+VHVlPC90ZD4KLSAq
ICAgICAgICAgPHRkIHJvd3NwYW49IjQiPkRheSBvZiB3ZWVrIC0gVXNlIG9uZSB0aHJvdWdoIHRo
cmVlIGxldHRlcnMgZm9yIHRoZSBzaG9ydCBkYXksIGZvdXIgZm9yIHRoZSBmdWxsICh3aWRlKSBu
YW1lLCAKKyAqICAgICAgICAgPHRkIHJvd3NwYW49IjQiPkRheSBvZiB3ZWVrIC0gVXNlIG9uZSB0
aHJvdWdoIHRocmVlIGxldHRlcnMgZm9yIHRoZSBzaG9ydCBkYXksIGZvdXIgZm9yIHRoZSBmdWxs
ICh3aWRlKSBuYW1lLAogICogICAgICAgICBmaXZlIGZvciB0aGUgbmFycm93IG5hbWUsIG9yIHNp
eCBmb3IgdGhlIHNob3J0IG5hbWUuPC90ZD4KICAqICAgICA8L3RyPgogICogICAgIDx0cj4KQEAg
LTUzOSw3ICs1NDEsNyBAQCBjbGFzcyBTaW1wbGVEYXRlRm9ybWF0TXV0YWJsZU5GczsKICAqICAg
ICAgICAgPHRkPlRoZSA8aT5nZW5lcmljIGxvY2F0aW9uIGZvcm1hdDwvaT4uCiAgKiAgICAgICAg
IFdoZXJlIHRoYXQgaXMgdW5hdmFpbGFibGUsIGZhbGxzIGJhY2sgdG8gdGhlIDxpPmxvbmcgbG9j
YWxpemVkIEdNVCBmb3JtYXQ8L2k+ICgiT09PTyI7CiAgKiAgICAgICAgIE5vdGU6IEZhbGxiYWNr
IGlzIG9ubHkgbmVjZXNzYXJ5IHdpdGggYSBHTVQtc3R5bGUgVGltZSBab25lIElELCBsaWtlIEV0
Yy9HTVQtODMwLik8YnI+Ci0gKiAgICAgICAgIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgd2hl
biBwcmVzZW50aW5nIHBvc3NpYmxlIHRpbWV6b25lIGNob2ljZXMgZm9yIHVzZXIgc2VsZWN0aW9u
LCAKKyAqICAgICAgICAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHByZXNlbnRpbmcg
cG9zc2libGUgdGltZXpvbmUgY2hvaWNlcyBmb3IgdXNlciBzZWxlY3Rpb24sCiAgKiAgICAgICAg
IHNpbmNlIHRoZSBuYW1pbmcgaXMgbW9yZSB1bmlmb3JtIHRoYW4gdGhlICJ2IiBmb3JtYXQuPC90
ZD4KICAqICAgICA8L3RyPgogICogICAgIDx0cj4KQEAgLTY1MSw3ICs2NTMsNyBAQCBjbGFzcyBT
aW1wbGVEYXRlRm9ybWF0TXV0YWJsZU5GczsKICAqICAgICAgICAgPSBuZXcgU2ltcGxlRGF0ZUZv
cm1hdCAoInl5eXkuTU0uZGQgRyAnYXQnIGhoOm1tOnNzIGEgenp6Iiwgc3VjY2VzcyApOwogICog
ICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbChzdWNjZXNzKTsKICAqICAgICBVRGF0ZSBjdXJyZW50
VGltZV8xID0gY2FsLmdldFRpbWUoc3VjY2Vzcyk7Ci0gKiAgICAgRmllbGRQb3NpdGlvbiBmcCgw
KTsKKyAqICAgICBGaWVsZFBvc2l0aW9uIGZwKEZpZWxkUG9zaXRpb246OkRPTlRfQ0FSRSk7CiAg
KiAgICAgVW5pY29kZVN0cmluZyBkYXRlU3RyaW5nOwogICogICAgIGZvcm1hdHRlci0+Zm9ybWF0
KCBjdXJyZW50VGltZV8xLCBkYXRlU3RyaW5nLCBmcCApOwogICogICAgIGNvdXQgPDwgInJlc3Vs
dDogIiA8PCBkYXRlU3RyaW5nIDw8IGVuZGw7CkBAIC05OTksNiArMTAwMSwxMiBAQCBwdWJsaWM6
CiAgICAgICogKFByZXN1bWFibHksIGxldHRlcnMgdGhhdCB3b3VsZCBiZSBtb3JlIG1uZW1vbmlj
IGluIHRoYXQgbG9jYWxlJ3MKICAgICAgKiBsYW5ndWFnZS4pICBUaGlzIGZ1bmN0aW9uIHdvdWxk
IHByb2R1Y2UgYSBwYXR0ZXJuIHVzaW5nIHRob3NlCiAgICAgICogbGV0dGVycy4KKyAgICAgKiA8
cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gVGhpcyBpbXBsZW1lbnRhdGlvbiBkZXBlbmRzIG9uIERh
dGVGb3JtYXRTeW1ib2xzOjpnZXRMb2NhbFBhdHRlcm5DaGFycygpCisgICAgICogdG8gZ2V0IGxv
Y2FsaXplZCBmb3JtYXQgcGF0dGVybiBjaGFyYWN0ZXJzLiBJQ1UgZG9lcyBub3QgaW5jbHVkZQor
ICAgICAqIGxvY2FsaXplZCBwYXR0ZXJuIGNoYXJhY3RlciBkYXRhLCB0aGVyZWZvcmUsIHVubGVz
cyB1c2VyIHNldHMgbG9jYWxpemVkCisgICAgICogcGF0dGVybiBjaGFyYWN0ZXJzIG1hbnVhbGx5
LCB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdCBhcworICAgICAqIHRvUGF0dGVy
bigpLgogICAgICAqCiAgICAgICogQHBhcmFtIHJlc3VsdCAgICBSZWNlaXZlcyB0aGUgbG9jYWxp
emVkIHBhdHRlcm4uCiAgICAgICogQHBhcmFtIHN0YXR1cyAgICBPdXRwdXQgcGFyYW0gc2V0IHRv
IHN1Y2Nlc3MvZmFpbHVyZSBjb2RlIG9uCkBAIC0xMTI2LDE4ICsxMTM0LDE3IEBAIHB1YmxpYzoK
ICAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIFVEaXNwbGF5Q29udGV4dCB2YWx1ZSB0byBzZXQuCiAg
ICAgICogQHBhcmFtIHN0YXR1cyBJbnB1dC9vdXRwdXQgc3RhdHVzLiBJZiBhdCBlbnRyeSB0aGlz
IGluZGljYXRlcyBhIGZhaWx1cmUKICAgICAgKiAgICAgICAgICAgICAgIHN0YXR1cywgdGhlIGZ1
bmN0aW9uIHdpbGwgZG8gbm90aGluZzsgb3RoZXJ3aXNlIHRoaXMgd2lsbCBiZQotICAgICAqICAg
ICAgICAgICAgICAgdXBkYXRlZCB3aXRoIGFueSBuZXcgc3RhdHVzIGZyb20gdGhlIGZ1bmN0aW9u
LiAKKyAgICAgKiAgICAgICAgICAgICAgIHVwZGF0ZWQgd2l0aCBhbnkgbmV3IHN0YXR1cyBmcm9t
IHRoZSBmdW5jdGlvbi4KICAgICAgKiBAc3RhYmxlIElDVSA1MwogICAgICAqLwogICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250ZXh0KFVEaXNwbGF5Q29udGV4dCB2YWx1ZSwgVUVycm9yQ29kZSYgc3Rh
dHVzKTsKLSAgICAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQorCiAgICAgLyoqCiAgICAgICog
T3ZlcnJpZGVzIGJhc2UgY2xhc3MgbWV0aG9kIGFuZAotICAgICAqIFRoaXMgbWV0aG9kIGNsZWFy
cyBwZXIgZmllbGQgTnVtYmVyRm9ybWF0IGluc3RhbmNlcyAKLSAgICAgKiBwcmV2aW91c2x5IHNl
dCBieSB7QHNlZSBhZG9wdE51bWJlckZvcm1hdChjb25zdCBVbmljb2RlU3RyaW5nJiwgTnVtYmVy
Rm9ybWF0KiwgVUVycm9yQ29kZSl9IAorICAgICAqIFRoaXMgbWV0aG9kIGNsZWFycyBwZXIgZmll
bGQgTnVtYmVyRm9ybWF0IGluc3RhbmNlcworICAgICAqIHByZXZpb3VzbHkgc2V0IGJ5IHtAc2Vl
IGFkb3B0TnVtYmVyRm9ybWF0KGNvbnN0IFVuaWNvZGVTdHJpbmcmLCBOdW1iZXJGb3JtYXQqLCBV
RXJyb3JDb2RlKX0KICAgICAgKiBAcGFyYW0gYWRvcHRORiB0aGUgTnVtYmVmZXJGb3JtYXQgdXNl
ZAotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwog
ICAgIHZvaWQgYWRvcHROdW1iZXJGb3JtYXQoTnVtYmVyRm9ybWF0ICpmb3JtYXRUb0Fkb3B0KTsK
IApAQCAtMTE0NSw3ICsxMTUyLDcgQEAgcHVibGljOgogICAgICAqIEFsbG93IHRoZSB1c2VyIHRv
IHNldCB0aGUgTnVtYmVyRm9ybWF0IGZvciBzZXZlcmFsIGZpZWxkcwogICAgICAqIEl0IGNhbiBi
ZSBhIHNpbmdsZSBmaWVsZCBsaWtlOiAieSIoeWVhcikgb3IgIk0iKG1vbnRoKQogICAgICAqIEl0
IGNhbiBiZSBzZXZlcmFsIGZpZWxkIGNvbWJpbmVkIHRvZ2V0aGVyOiAieU0iKHllYXIgYW5kIG1v
bnRoKQotICAgICAqIE5vdGU6IAorICAgICAqIE5vdGU6CiAgICAgICogMSBzeW1ib2wgZmllbGQg
aXMgZW5vdWdoIGZvciBtdWx0aXBsZSBzeW1ib2wgZmllbGQgKHNvICJ5IiB3aWxsIG92ZXJyaWRl
ICJ5eSIsICJ5eXkiKQogICAgICAqIElmIHRoZSBmaWVsZCBpcyBub3QgbnVtZXJpYywgdGhlbiBv
dmVycmlkZSBoYXMgbm8gZWZmZWN0IChsaWtlICJNTU0iIHdpbGwgdXNlIGFiYnJldmlhdGlvbiwg
bm90IG51bWVyaWNhbCBmaWVsZCkKICAgICAgKiBQZXIgZmllbGQgTnVtYmVyRm9ybWF0IGNhbiBh
bHNvIGJlIGNsZWFyZWQgaW4ge0BzZWUgRGF0ZUZvcm1hdDo6c2V0TnVtYmVyRm9ybWF0KGNvbnN0
IE51bWJlckZvcm1hdCYgbmV3TnVtYmVyRm9ybWF0KX0KQEAgLTExNTQsMTcgKzExNjEsMTYgQEAg
cHVibGljOgogICAgICAqIEBwYXJhbSBhZG9wdE5GIHRoZSBOdW1iZWZlckZvcm1hdCB1c2VkCiAg
ICAgICogQHBhcmFtIHN0YXR1cyAgUmVjZWl2ZXMgYSBzdGF0dXMgY29kZSwgd2hpY2ggd2lsbCBi
ZSBVX1pFUk9fRVJST1IKICAgICAgKiAgICAgICAgICAgICAgICBpZiB0aGUgb3BlcmF0aW9uIHN1
Y2NlZWRzLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAg
ICAqLwogICAgIHZvaWQgYWRvcHROdW1iZXJGb3JtYXQoY29uc3QgVW5pY29kZVN0cmluZyYgZmll
bGRzLCBOdW1iZXJGb3JtYXQgKmZvcm1hdFRvQWRvcHQsIFVFcnJvckNvZGUgJnN0YXR1cyk7CiAK
ICAgICAvKioKICAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gYmUgdXNlZCBmb3Ig
YSBwYXJ0aWN1bGFyIGZpZWxkLgogICAgICAqIEBwYXJhbSBmaWVsZCBUaGUgVURhdGVGb3JtYXRG
aWVsZCB0byBnZXQKLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQK
ICAgICAgKi8KLSAgICBjb25zdCBOdW1iZXJGb3JtYXQgKiBnZXROdW1iZXJGb3JtYXRGb3JGaWVs
ZChVQ2hhciBmaWVsZCkgY29uc3Q7Ci0jZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KKyAg
ICBjb25zdCBOdW1iZXJGb3JtYXQgKiBnZXROdW1iZXJGb3JtYXRGb3JGaWVsZChjaGFyMTZfdCBm
aWVsZCkgY29uc3Q7CiAKICNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQogICAgIC8qKgpAQCAt
MTI1Niw3ICsxMjYyLDcgQEAgcHJpdmF0ZToKICAgICAgKiAgICAgICAgICAgICAgICAgIHN1Y2Nl
ZWRzLgogICAgICAqLwogICAgIHZvaWQgc3ViRm9ybWF0KFVuaWNvZGVTdHJpbmcgJmFwcGVuZFRv
LAotICAgICAgICAgICAgICAgICAgIFVDaGFyIGNoLAorICAgICAgICAgICAgICAgICAgIGNoYXIx
Nl90IGNoLAogICAgICAgICAgICAgICAgICAgIGludDMyX3QgY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgVURpc3BsYXlDb250ZXh0IGNhcGl0YWxpemF0aW9uQ29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90IGZpZWxkTnVtLApAQCAtMTI3MSw3ICsxMjc3LDcgQEAgcHJpdmF0ZToK
ICAgICAgKiBoYXZpbmcgYSBudW1iZXIgb2YgZGlnaXRzIGJldHdlZW4gIm1pbkRpZ2l0cyIgYW5k
CiAgICAgICogIm1heERpZ2l0cyIuICBVc2VzIHRoZSBEYXRlRm9ybWF0J3MgTnVtYmVyRm9ybWF0
LgogICAgICAqCi0gICAgICogQHBhcmFtIGN1cnJlbnROdW1iZXJGb3JtYXQgCisgICAgICogQHBh
cmFtIGN1cnJlbnROdW1iZXJGb3JtYXQKICAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1dCBw
YXJhbWV0ZXIgdG8gcmVjZWl2ZSByZXN1bHQuCiAgICAgICogICAgICAgICAgICAgICAgICBGb3Jt
YXR0ZWQgbnVtYmVyIGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgogICAgICAqIEBw
YXJhbSB2YWx1ZSAgICAgVmFsdWUgdG8gZm9ybWF0LgpAQCAtMTI4OCw3ICsxMjk0LDcgQEAgcHJp
dmF0ZToKICAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gZm9ybWF0IGNoYXJhY3Rlciwg
b2NjdXJpbmcgY291bnQKICAgICAgKiB0aW1lcywgcmVwcmVzZW50cyBhIG51bWVyaWMgZmllbGQu
CiAgICAgICovCi0gICAgc3RhdGljIFVCb29sIGlzTnVtZXJpYyhVQ2hhciBmb3JtYXRDaGFyLCBp
bnQzMl90IGNvdW50KTsKKyAgICBzdGF0aWMgVUJvb2wgaXNOdW1lcmljKGNoYXIxNl90IGZvcm1h
dENoYXIsIGludDMyX3QgY291bnQpOwogCiAgICAgLyoqCiAgICAgICogUmV0dXJucyBUUlVFIGlm
IHRoZSBwYXR0ZXJuT2Zmc2V0IGlzIGF0IHRoZSBzdGFydCBvZiBhIG51bWVyaWMgZmllbGQuCkBA
IC0xMzU5LDcgKzEzNjUsMTQgQEAgcHJpdmF0ZToKICAgICAgKi8KICAgICBpbnQzMl90IG1hdGNo
UXVhcnRlclN0cmluZyhjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LCBpbnQzMl90IHN0YXJ0LCBV
Q2FsZW5kYXJEYXRlRmllbGRzIGZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFVuaWNvZGVTdHJpbmcqIHN0cmluZ0FycmF5LCBpbnQzMl90IHN0cmluZ0FycmF5Q291
bnQsIENhbGVuZGFyJiBjYWwpIGNvbnN0OwotICAgIAorCisgICAgLyoqCisgICAgICogVXNlZCBi
eSBzdWJQYXJzZSgpIHRvIG1hdGNoIGxvY2FsaXplZCBkYXkgcGVyaW9kIHN0cmluZ3MuCisgICAg
ICovCisgICAgaW50MzJfdCBtYXRjaERheVBlcmlvZFN0cmluZ3MoY29uc3QgVW5pY29kZVN0cmlu
ZyYgdGV4dCwgaW50MzJfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBVbmljb2RlU3RyaW5nKiBzdHJpbmdBcnJheSwgaW50MzJfdCBzdHJpbmdBcnJheUNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgJmRheVBlcmlv
ZCkgY29uc3Q7CisKICAgICAvKioKICAgICAgKiBQcml2YXRlIGZ1bmN0aW9uIHVzZWQgYnkgc3Vi
UGFyc2UgdG8gbWF0Y2ggbGl0ZXJhbCBwYXR0ZXJuIHRleHQuCiAgICAgICoKQEAgLTEzNzYsOSAr
MTM4OSw5IEBAIHByaXZhdGU6CiAgICAgICogQHJldHVybiA8Y29kZT5UUlVFPC9jb2RlPiBpZiB0
aGUgbGl0ZXJhbCB0ZXh0IGNvdWxkIGJlIG1hdGNoZWQsIDxjb2RlPkZBTFNFPC9jb2RlPiBvdGhl
cndpc2UuCiAgICAgICovCiAgICAgc3RhdGljIFVCb29sIG1hdGNoTGl0ZXJhbHMoY29uc3QgVW5p
Y29kZVN0cmluZyAmcGF0dGVybiwgaW50MzJfdCAmcGF0dGVybk9mZnNldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nICZ0ZXh0LCBpbnQzMl90ICZ0
ZXh0T2Zmc2V0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2Rl
U3RyaW5nICZ0ZXh0LCBpbnQzMl90ICZ0ZXh0T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVCb29sIHdoaXRlc3BhY2VMZW5pZW50LCBVQm9vbCBwYXJ0aWFsTWF0Y2hMZW5p
ZW50LCBVQm9vbCBvbGRMZW5pZW5jeSk7Ci0gICAgCisKICAgICAvKioKICAgICAgKiBQcml2YXRl
IG1lbWJlciBmdW5jdGlvbiB0aGF0IGNvbnZlcnRzIHRoZSBwYXJzZWQgZGF0ZSBzdHJpbmdzIGlu
dG8KICAgICAgKiB0aW1lRmllbGRzLiBSZXR1cm5zIC1zdGFydCAoZm9yIFBhcnNlUG9zaXRpb24p
IGlmIGZhaWxlZC4KQEAgLTEzOTksOSArMTQxMiwxMCBAQCBwcml2YXRlOgogICAgICAqIEByZXR1
cm4gdGhlIG5ldyBzdGFydCBwb3NpdGlvbiBpZiBtYXRjaGluZyBzdWNjZWVkZWQ7IGEgbmVnYXRp
dmUgbnVtYmVyCiAgICAgICogaW5kaWNhdGluZyBtYXRjaGluZyBmYWlsdXJlLCBvdGhlcndpc2Uu
CiAgICAgICovCi0gICAgaW50MzJfdCBzdWJQYXJzZShjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0
LCBpbnQzMl90JiBzdGFydCwgVUNoYXIgY2gsIGludDMyX3QgY291bnQsCisgICAgaW50MzJfdCBz
dWJQYXJzZShjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LCBpbnQzMl90JiBzdGFydCwgY2hhcjE2
X3QgY2gsIGludDMyX3QgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBvYmV5Q291
bnQsIFVCb29sIGFsbG93TmVnYXRpdmUsIFVCb29sIGFtYmlndW91c1llYXJbXSwgaW50MzJfdCYg
c2F2ZUhlYnJld01vbnRoLCBDYWxlbmRhciYgY2FsLAotICAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCBwYXRMb2MsIE1lc3NhZ2VGb3JtYXQgKiBudW1lcmljTGVhcE1vbnRoRm9ybWF0dGVyLCBV
VGltZVpvbmVGb3JtYXRUaW1lVHlwZSAqdHpUaW1lVHlwZSwgU2ltcGxlRGF0ZUZvcm1hdE11dGFi
bGVORnMgJm11dGFibGVORnMpIGNvbnN0OworICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBw
YXRMb2MsIE1lc3NhZ2VGb3JtYXQgKiBudW1lcmljTGVhcE1vbnRoRm9ybWF0dGVyLCBVVGltZVpv
bmVGb3JtYXRUaW1lVHlwZSAqdHpUaW1lVHlwZSwgU2ltcGxlRGF0ZUZvcm1hdE11dGFibGVORnMg
Jm11dGFibGVORnMsCisgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICpkYXlQZXJpb2Q9TlVM
TCkgY29uc3Q7CiAKICAgICB2b2lkIHBhcnNlSW50KGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQs
CiAgICAgICAgICAgICAgICAgICBGb3JtYXR0YWJsZSYgbnVtYmVyLApAQCAtMTQxOSw2ICsxNDMz
LDE2IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBjaGVja0ludFN1ZmZpeChjb25zdCBVbmljb2Rl
U3RyaW5nJiB0ZXh0LCBpbnQzMl90IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBwYXRMb2MsIFVCb29sIGlzTmVnYXRpdmUpIGNvbnN0OwogCisgICAgLyoqCisgICAg
ICogQ291bnRzIG51bWJlciBvZiBkaWdpdCBjb2RlIHBvaW50cyBpbiB0aGUgc3BlY2lmaWVkIHRl
eHQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGV4dCAgaW5wdXQgdGV4dAorICAgICAqIEBwYXJh
bSBzdGFydCBzdGFydCBpbmRleCwgaW5jbHVzaXZlCisgICAgICogQHBhcmFtIGVuZCAgIGVuZCBp
bmRleCwgZXhjbHVzaXZlCisgICAgICogQHJldHVybiAgbnVtYmVyIG9mIGRpZ2l0cyBmb3VuZCBp
biB0aGUgdGV4dCBpbiB0aGUgc3BlY2lmaWVkIHJhbmdlLgorICAgICovCisgICAgaW50MzJfdCBj
b3VudERpZ2l0cyhjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LCBpbnQzMl90IHN0YXJ0LCBpbnQz
Ml90IGVuZCkgY29uc3Q7CisKICAgICAvKioKICAgICAgKiBUcmFuc2xhdGUgYSBwYXR0ZXJuLCBt
YXBwaW5nIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBmcm9tIHN0cmluZyB0byB0aGUKICAgICAgKiBj
b3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbiB0aGUgdG8gc3RyaW5nLiBSZXR1cm4gYW4gZXJyb3Ig
aWYgdGhlIG9yaWdpbmFsCkBAIC0xNTA5LDEyICsxNTMzLDEyIEBAIHByaXZhdGU6CiAgICAgLyoq
CiAgICAgICogTWFwIGNhbGVuZGFyIGZpZWxkIGxldHRlciBpbnRvIGNhbGVuZGFyIGZpZWxkIGxl
dmVsLgogICAgICAqLwotICAgIHN0YXRpYyBpbnQzMl90IGdldExldmVsRnJvbUNoYXIoVUNoYXIg
Y2gpOworICAgIHN0YXRpYyBpbnQzMl90IGdldExldmVsRnJvbUNoYXIoY2hhcjE2X3QgY2gpOwog
CiAgICAgLyoqCiAgICAgICogVGVsbCBpZiBhIGNoYXJhY3RlciBjYW4gYmUgdXNlZCB0byBkZWZp
bmUgYSBmaWVsZCBpbiBhIGZvcm1hdCBzdHJpbmcuCiAgICAgICovCi0gICAgc3RhdGljIFVCb29s
IGlzU3ludGF4Q2hhcihVQ2hhciBjaCk7CisgICAgc3RhdGljIFVCb29sIGlzU3ludGF4Q2hhcihj
aGFyMTZfdCBjaCk7CiAKICAgICAvKioKICAgICAgKiBUaGUgZm9ybWF0dGluZyBwYXR0ZXJuIGZv
ciB0aGlzIGZvcm1hdHRlci4KQEAgLTE1NTgsNiArMTU4MiwxNCBAQCBwcml2YXRlOgogICAgICAq
LwogICAgIFVEYXRlICAgICAgICAgICAgICAgIGZEZWZhdWx0Q2VudHVyeVN0YXJ0OwogCisgICAg
VUJvb2wgICAgICAgICAgICAgICAgZkhhc01pbnV0ZTsKKyAgICBVQm9vbCAgICAgICAgICAgICAg
ICBmSGFzU2Vjb25kOworCisgICAgLyoqCisgICAgICogU2V0cyBmSGFzTWludXRlcyBhbmQgZkhh
c1NlY29uZHMuCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgICAgICAgcGFyc2VQYXR0ZXJu
KCk7CisKICAgICAvKioKICAgICAgKiBTZWUgZG9jdW1lbnRhdGlvbiBmb3IgZGVmYXVsdENlbnR1
cnlTdGFydC4KICAgICAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc29y
dGtleS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zb3J0a2V5LmgKaW5kZXggYzEyNWVlZWNm
MDA5ODBjZjQ1MjE0ODg3NGJkM2Q3NzUyMWUwZDc2Zi4uMWY0MjQ2MDE4ZjAwZjIxNDQxYjkwMTg1
NTZmNDEwNWRiYjY0OTRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9zb3J0
a2V5LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zb3J0a2V5LmgKQEAgLTEsMyArMSw1
IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8g
TGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQu
aHRtbAogLyoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAxOTk2LTIw
MTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVy
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc3RkX3N0cmluZy5oIGIvU291
cmNlL1dURi9pY3UvdW5pY29kZS9zdGRfc3RyaW5nLmgKaW5kZXggMDU5NTVjNWQxZTcyN2Y4ZTM1
YmNhZWI3ZDk1Zjg1YTcwZDYzMGNhMS4uNzI5YzU2Mzk5NTA2ZWIzOGIyYzllZGMxYzY0MjBlNWFi
YmU1ZDg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9zdGRfc3RyaW5nLmgK
KysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zdGRfc3RyaW5nLmgKQEAgLTEsMyArMSw1IEBA
CisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGlj
ZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRt
bAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTYsNyArOCw3IEBACiAqCiAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgc3RkX3N0cmluZy5oCi0qICAgZW5j
b2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAg
IDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTI1LDEzICsyNywxMSBAQAog
CiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKIAotI2lmIFVfSEFWRV9TVERfU1RSSU5HCi0K
LSNpZiAhZGVmaW5lZChfTVNDX1ZFUikKLW5hbWVzcGFjZSBzdGQgeyBjbGFzcyB0eXBlX2luZm87
IH0gLy8gV09SS0FST1VORDogaHR0cDovL2xsdm0ub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTEz
MzY0CisvLyBXb3JrYXJvdW5kIGZvciBhIGxpYnN0ZGMrKyBidWcgYmVmb3JlIGxpYnN0ZGMrKzQu
NiAoMjAxMSkuCisvLyBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzY0
CisjaWYgZGVmaW5lZChfX0dMSUJDWFhfXykKK25hbWVzcGFjZSBzdGQgeyBjbGFzcyB0eXBlX2lu
Zm87IH0KICNlbmRpZgogI2luY2x1ZGUgPHN0cmluZz4KIAotI2VuZGlmICAvLyBVX0hBVkVfU1RE
X1NUUklORwotCiAjZW5kaWYgIC8vIF9fU1REX1NUUklOR19IX18KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvc3RyZW51bS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zdHJl
bnVtLmgKaW5kZXggM2RiZTIxYzZiMmRkZGZiODY5Mzg3ZDQ4ZWZkNjI0M2RiMzkxNWIzOS4uNjFk
NTE0ODEzYjkyYzE0Njc5YTk5Y2U0ZjdjMmM5Zjg5YjZmMTVmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS9zdHJlbnVtLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9z
dHJlbnVtLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwg
SW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51
bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoK
QEAgLTMzLDcgKzM1LDcgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAqIGNhbGwsIHNvIHRoZSByZXR1
cm5lZCBzdHJpbmcgc3RpbGwgbWlnaHQgbm90IGJlICd2YWxpZCcgb24KICAqIHN1YnNlcXVlbnQg
dXNlLjwvcD4KICAqCi0gKiA8cD5TdHJpbmdzIG1heSB0YWtlIHRoZSBmb3JtIG9mIGNvbnN0IGNo
YXIqLCBjb25zdCBVQ2hhciosIG9yIGNvbnN0CisgKiA8cD5TdHJpbmdzIG1heSB0YWtlIHRoZSBm
b3JtIG9mIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyMTZfdCosIG9yIGNvbnN0CiAgKiBVbmljb2Rl
U3RyaW5nKi4gIFRoZSB0eXBlIHlvdSBnZXQgaXMgZGV0ZXJtaW5lIGJ5IHRoZSB2YXJpYW50IG9m
CiAgKiAnbmV4dCcgdGhhdCB5b3UgY2FsbC4gIEluIGdlbmVyYWwgdGhlIFN0cmluZ0VudW1lcmF0
aW9uIGlzCiAgKiBvcHRpbWl6ZWQgZm9yIG9uZSBvZiB0aGVzZSB0eXBlcywgYnV0IGFsbCBTdHJp
bmdFbnVtZXJhdGlvbnMgY2FuCkBAIC0xMTAsNyArMTEyLDcgQEAgcHVibGljOgogICAgICAqIDxw
PklmIHRoZSBpdGVyYXRvciBpcyBvdXQgb2Ygc3luYyB3aXRoIGl0cyBzZXJ2aWNlLCBzdGF0dXMg
aXMgc2V0CiAgICAgICogdG8gVV9FTlVNX09VVF9PRl9TWU5DX0VSUk9SIGFuZCBOVUxMIGlzIHJl
dHVybmVkLjwvcD4KICAgICAgKgotICAgICAqIDxwPklmIHRoZSBuYXRpdmUgc2VydmljZSBzdHJp
bmcgaXMgYSBVQ2hhciogc3RyaW5nLCBpdCBpcworICAgICAqIDxwPklmIHRoZSBuYXRpdmUgc2Vy
dmljZSBzdHJpbmcgaXMgYSBjaGFyMTZfdCogc3RyaW5nLCBpdCBpcwogICAgICAqIGNvbnZlcnRl
ZCB0byBjaGFyKiB3aXRoIHRoZSBpbnZhcmlhbnQgY29udmVydGVyLiAgSWYgdGhlCiAgICAgICog
Y29udmVyc2lvbiBmYWlscyAoYmVjYXVzZSBhIGNoYXJhY3RlciBjYW5ub3QgYmUgY29udmVydGVk
KSB0aGVuCiAgICAgICogc3RhdHVzIGlzIHNldCB0byBVX0lOVkFSSUFOVF9DT05WRVJTSU9OX0VS
Uk9SIGFuZCB0aGUgcmV0dXJuCkBAIC0xMjksNyArMTMxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogbmV4dChpbnQzMl90ICpyZXN1bHRMZW5ndGgsIFVFcnJvckNvZGUmIHN0
YXR1cyk7CiAKICAgICAvKioKLSAgICAgKiA8cD5SZXR1cm5zIHRoZSBuZXh0IGVsZW1lbnQgYXMg
YSBOVUwtdGVybWluYXRlZCBVQ2hhciouICBJZiB0aGVyZQorICAgICAqIDxwPlJldHVybnMgdGhl
IG5leHQgZWxlbWVudCBhcyBhIE5VTC10ZXJtaW5hdGVkIGNoYXIxNl90Ki4gIElmIHRoZXJlCiAg
ICAgICogYXJlIG5vIG1vcmUgZWxlbWVudHMsIHJldHVybnMgTlVMTC4gIElmIHRoZSByZXN1bHRM
ZW5ndGggcG9pbnRlcgogICAgICAqIGlzIG5vdCBOVUxMLCB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJp
bmcgKG5vdCBjb3VudGluZyB0aGUKICAgICAgKiB0ZXJtaW5hdGluZyBOVUwpIGlzIHJldHVybmVk
IGF0IHRoYXQgYWRkcmVzcy4gIElmIGFuIGVycm9yCkBAIC0xNTEsNyArMTUzLDcgQEAgcHVibGlj
OgogICAgICAqCiAgICAgICogQHN0YWJsZSBJQ1UgMi40IAogICAgICAqLwotICAgIHZpcnR1YWwg
Y29uc3QgVUNoYXIqIHVuZXh0KGludDMyX3QgKnJlc3VsdExlbmd0aCwgVUVycm9yQ29kZSYgc3Rh
dHVzKTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIxNl90KiB1bmV4dChpbnQzMl90ICpyZXN1bHRM
ZW5ndGgsIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKICAgICAvKioKICAgICAgKiA8cD5SZXR1cm5z
IHRoZSBuZXh0IGVsZW1lbnQgYSBVbmljb2RlU3RyaW5nKi4gIElmIHRoZXJlIGFyZSBubwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9zdHJpbmdwaWVjZS5oIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9zdHJpbmdwaWVjZS5oCmluZGV4IGIyOTU3MWQ0YWRiYmRkOWQ2ZDgzMmFh
ZWIwZjk3NjhiMjQxNjFhNTYuLmIwODg3ZWZmYTUyNTg1NjAxODk3YjJhODQyMDE3N2FkNTg4NDNl
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc3RyaW5ncGllY2UuaAorKysg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N0cmluZ3BpZWNlLmgKQEAgLTEsMyArMSw1IEBACisv
LyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5z
ZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAog
Ly8gQ29weXJpZ2h0IChDKSAyMDA5LTIwMTMsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGlu
ZXMKIC8vIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAvLwpA
QCAtNDAsOSArNDIsOSBAQCBVX05BTUVTUEFDRV9CRUdJTgogICogaW4gYSAiY29uc3QgY2hhcioi
IG9yIGEgInN0cmluZyIgd2hlcmV2ZXIgYSAiU3RyaW5nUGllY2UiIGlzCiAgKiBleHBlY3RlZC4K
ICAqCi0gKiBGdW5jdGlvbnMgb3IgbWV0aG9kcyBtYXkgdXNlIGNvbnN0IFN0cmluZ1BpZWNlJiBw
YXJhbWV0ZXJzIHRvIGFjY2VwdCBlaXRoZXIKLSAqIGEgImNvbnN0IGNoYXIqIiBvciBhICJzdHJp
bmciIHZhbHVlIHRoYXQgd2lsbCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0bwotICogYSBTdHJp
bmdQaWVjZS4KKyAqIEZ1bmN0aW9ucyBvciBtZXRob2RzIG1heSB1c2UgU3RyaW5nUGllY2UgcGFy
YW1ldGVycyB0byBhY2NlcHQgZWl0aGVyIGEKKyAqICJjb25zdCBjaGFyKiIgb3IgYSAic3RyaW5n
IiB2YWx1ZSB0aGF0IHdpbGwgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYQorICogU3RyaW5n
UGllY2UuCiAgKgogICogU3lzdGVtYXRpYyB1c2FnZSBvZiBTdHJpbmdQaWVjZSBpcyBlbmNvdXJh
Z2VkIGFzIGl0IHdpbGwgcmVkdWNlIHVubmVjZXNzYXJ5CiAgKiBjb252ZXJzaW9ucyBmcm9tICJj
b25zdCBjaGFyKiIgdG8gInN0cmluZyIgYW5kIGJhY2sgYWdhaW4uCkBAIC02NiwxNCArNjgsMTIg
QEAgY2xhc3MgVV9DT01NT05fQVBJIFN0cmluZ1BpZWNlIDogcHVibGljIFVNZW1vcnkgewogICAg
KiBAc3RhYmxlIElDVSA0LjIKICAgICovCiAgIFN0cmluZ1BpZWNlKGNvbnN0IGNoYXIqIHN0cik7
Ci0jaWYgVV9IQVZFX1NURF9TVFJJTkcKICAgLyoqCiAgICAqIENvbnN0cnVjdHMgZnJvbSBhIHN0
ZDo6c3RyaW5nLgogICAgKiBAc3RhYmxlIElDVSA0LjIKICAgICovCiAgIFN0cmluZ1BpZWNlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpCiAgICAgOiBwdHJfKHN0ci5kYXRhKCkpLCBsZW5ndGhfKHN0
YXRpY19jYXN0PGludDMyX3Q+KHN0ci5zaXplKCkpKSB7IH0KLSNlbmRpZgogICAvKioKICAgICog
Q29uc3RydWN0cyBmcm9tIGEgY29uc3QgY2hhciAqIHBvaW50ZXIgYW5kIGEgc3BlY2lmaWVkIGxl
bmd0aC4KICAgICogQHBhcmFtIG9mZnNldCBhIGNvbnN0IGNoYXIgKiBwb2ludGVyIChuZWVkIG5v
dCBiZSB0ZXJtaW5hdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9zdHJp
bmd0cmllYnVpbGRlci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zdHJpbmd0cmllYnVpbGRl
ci5oCmluZGV4IDA0NDQ3ZTU0MzcxM2QxYWM5YjVjOTM2NTdmYTE1MDczY2E0MzZjYTIuLmNhZWFl
NTFhNDcyMjIwODcwMzM5MzFhMTlhMjI0NTYwNGE1YjkzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvc3RyaW5ndHJpZWJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3N0cmluZ3RyaWVidWlsZGVyLmgKQEAgLTEsMTAgKzEsMTIgQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAxMC0yMDEyLDIwMTQsIEludGVy
bmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAg
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5h
bWU6ICBzdHJpbmd0cmllYnVpbGRlci5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBl
bmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVu
dGF0aW9uOjQKICoKQEAgLTEwMyw3ICsxMDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLyoqIEBpbnRl
cm5hbCAqLwogICAgIHZpcnR1YWwgaW50MzJfdCBnZXRFbGVtZW50U3RyaW5nTGVuZ3RoKGludDMy
X3QgaSkgY29uc3QgPSAwOwogICAgIC8qKiBAaW50ZXJuYWwgKi8KLSAgICB2aXJ0dWFsIFVDaGFy
IGdldEVsZW1lbnRVbml0KGludDMyX3QgaSwgaW50MzJfdCB1bml0SW5kZXgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNoYXIxNl90IGdldEVsZW1lbnRVbml0KGludDMyX3QgaSwgaW50MzJfdCB1
bml0SW5kZXgpIGNvbnN0ID0gMDsKICAgICAvKiogQGludGVybmFsICovCiAgICAgdmlydHVhbCBp
bnQzMl90IGdldEVsZW1lbnRWYWx1ZShpbnQzMl90IGkpIGNvbnN0ID0gMDsKIApAQCAtMTE4LDcg
KzEyMCw3IEBAIHByb3RlY3RlZDoKICAgICAvKiogQGludGVybmFsICovCiAgICAgdmlydHVhbCBp
bnQzMl90IHNraXBFbGVtZW50c0J5U29tZVVuaXRzKGludDMyX3QgaSwgaW50MzJfdCB1bml0SW5k
ZXgsIGludDMyX3QgY291bnQpIGNvbnN0ID0gMDsKICAgICAvKiogQGludGVybmFsICovCi0gICAg
dmlydHVhbCBpbnQzMl90IGluZGV4T2ZFbGVtZW50V2l0aE5leHRVbml0KGludDMyX3QgaSwgaW50
MzJfdCB1bml0SW5kZXgsIFVDaGFyIHVuaXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludDMy
X3QgaW5kZXhPZkVsZW1lbnRXaXRoTmV4dFVuaXQoaW50MzJfdCBpLCBpbnQzMl90IHVuaXRJbmRl
eCwgY2hhcjE2X3QgdW5pdCkgY29uc3QgPSAwOwogCiAgICAgLyoqIEBpbnRlcm5hbCAqLwogICAg
IHZpcnR1YWwgVUJvb2wgbWF0Y2hOb2Rlc0NhbkhhdmVWYWx1ZXMoKSBjb25zdCA9IDA7CkBAIC0x
MzUsNyArMTM3LDcgQEAgcHJvdGVjdGVkOgogICAgIC8qKiBAaW50ZXJuYWwgKi8KICAgICBzdGF0
aWMgY29uc3QgaW50MzJfdCBrTWF4QnJhbmNoTGluZWFyU3ViTm9kZUxlbmd0aD01OwogCi0gICAg
Ly8gTWF4aW11bSBudW1iZXIgb2YgbmVzdGVkIHNwbGl0LWJyYW5jaCBsZXZlbHMgZm9yIGEgYnJh
bmNoIG9uIGFsbCAyXjE2IHBvc3NpYmxlIFVDaGFyIHVuaXRzLgorICAgIC8vIE1heGltdW0gbnVt
YmVyIG9mIG5lc3RlZCBzcGxpdC1icmFuY2ggbGV2ZWxzIGZvciBhIGJyYW5jaCBvbiBhbGwgMl4x
NiBwb3NzaWJsZSBjaGFyMTZfdCB1bml0cy4KICAgICAvLyBsb2cyKDJeMTYva01heEJyYW5jaExp
bmVhclN1Yk5vZGVMZW5ndGgpIHJvdW5kZWQgdXAuCiAgICAgLyoqIEBpbnRlcm5hbCAqLwogICAg
IHN0YXRpYyBjb25zdCBpbnQzMl90IGtNYXhTcGxpdEJyYW5jaExldmVscz0xNDsKQEAgLTE4NCw3
ICsxODYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgLyoqIEBpbnRlcm5hbCAqLwogICAgIFVIYXNodGFi
bGUgKm5vZGVzOwogCi0jaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKKyAgICAvLyBEbyBub3Qg
Y29uZGl0aW9uYWxpemUgdGhlIGZvbGxvd2luZyB3aXRoICNpZm5kZWYgVV9ISURFX0lOVEVSTkFM
X0FQSSwKKyAgICAvLyBpdCBpcyBuZWVkZWQgZm9yIGxheW91dCBvZiBvdGhlciBvYmplY3RzLgog
ICAgIC8qKiBAaW50ZXJuYWwgKi8KICAgICBjbGFzcyBOb2RlIDogcHVibGljIFVPYmplY3Qgewog
ICAgIHB1YmxpYzoKQEAgLTI0Myw2ICsyNDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGludDMy
X3Qgb2Zmc2V0OwogICAgIH07CiAKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQogICAgIC8v
IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSBvdmVycmlkZGVuIGJlY2F1c2UKICAgICAvLyByZWdp
c3RlckZpbmFsVmFsdWUoKSBjb21wYXJlcyBhIHN0YWNrLWFsbG9jYXRlZCBGaW5hbFZhbHVlTm9k
ZQogICAgIC8vIChzdGFjay1hbGxvY2F0ZWQgc28gdGhhdCB3ZSBkb24ndCB1bm5lY2Vzc2FyaWx5
IGNyZWF0ZSBsb3RzIG9mIGR1cGxpY2F0ZSBub2RlcykKQEAgLTI1MiwxMyArMjU2LDE2IEBAIHBy
b3RlY3RlZDoKICAgICAvKiogQGludGVybmFsICovCiAgICAgY2xhc3MgRmluYWxWYWx1ZU5vZGUg
OiBwdWJsaWMgTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGaW5hbFZhbHVlTm9kZShpbnQz
Ml90IHYpIDogTm9kZSgweDExMTExMSozNyt2KSwgdmFsdWUodikge30KKyAgICAgICAgRmluYWxW
YWx1ZU5vZGUoaW50MzJfdCB2KSA6IE5vZGUoMHgxMTExMTF1KjM3dSt2KSwgdmFsdWUodikge30K
ICAgICAgICAgdmlydHVhbCBVQm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUgJm90aGVyKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCB2b2lkIHdyaXRlKFN0cmluZ1RyaWVCdWlsZGVyICZidWlsZGVy
KTsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGludDMyX3QgdmFsdWU7CiAgICAgfTsKKyNlbmRp
ZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogCisgICAgLy8gRG8gbm90IGNvbmRpdGlvbmFs
aXplIHRoZSBmb2xsb3dpbmcgd2l0aCAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEksCisgICAg
Ly8gaXQgaXMgbmVlZGVkIGZvciBsYXlvdXQgb2Ygb3RoZXIgb2JqZWN0cy4KICAgICAvKioKICAg
ICAgKiBAaW50ZXJuYWwgCiAgICAgICovCkBAIC0yNjksMzQgKzI3NiwzOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoaW50MzJfdCB2KSB7CiAgICAgICAgICAgICBoYXNWYWx1
ZT1UUlVFOwogICAgICAgICAgICAgdmFsdWU9djsKLSAgICAgICAgICAgIGhhc2g9aGFzaCozNyt2
OworICAgICAgICAgICAgaGFzaD1oYXNoKjM3dSt2OwogICAgICAgICB9CiAgICAgcHJvdGVjdGVk
OgogICAgICAgICBVQm9vbCBoYXNWYWx1ZTsKICAgICAgICAgaW50MzJfdCB2YWx1ZTsKICAgICB9
OwogCisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAgICAvKiogCiAgICAgICogQGludGVy
bmFsIAogICAgICAqLwogICAgIGNsYXNzIEludGVybWVkaWF0ZVZhbHVlTm9kZSA6IHB1YmxpYyBW
YWx1ZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJtZWRpYXRlVmFsdWVOb2RlKGlu
dDMyX3QgdiwgTm9kZSAqbmV4dE5vZGUpCi0gICAgICAgICAgICAgICAgOiBWYWx1ZU5vZGUoMHgy
MjIyMjIqMzcraGFzaENvZGUobmV4dE5vZGUpKSwgbmV4dChuZXh0Tm9kZSkgeyBzZXRWYWx1ZSh2
KTsgfQorICAgICAgICAgICAgICAgIDogVmFsdWVOb2RlKDB4MjIyMjIydSozN3UraGFzaENvZGUo
bmV4dE5vZGUpKSwgbmV4dChuZXh0Tm9kZSkgeyBzZXRWYWx1ZSh2KTsgfQogICAgICAgICB2aXJ0
dWFsIFVCb29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZSAmb3RoZXIpIGNvbnN0OwogICAgICAgICB2
aXJ0dWFsIGludDMyX3QgbWFya1JpZ2h0RWRnZXNGaXJzdChpbnQzMl90IGVkZ2VOdW1iZXIpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgd3JpdGUoU3RyaW5nVHJpZUJ1aWxkZXIgJmJ1aWxkZXIpOwog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgTm9kZSAqbmV4dDsKICAgICB9OworI2VuZGlmICAvKiBV
X0hJREVfSU5URVJOQUxfQVBJICovCiAKKyAgICAvLyBEbyBub3QgY29uZGl0aW9uYWxpemUgdGhl
IGZvbGxvd2luZyB3aXRoICNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSSwKKyAgICAvLyBpdCBp
cyBuZWVkZWQgZm9yIGxheW91dCBvZiBvdGhlciBvYmplY3RzLgogICAgIC8qKgogICAgICAqIEBp
bnRlcm5hbCAKICAgICAgKi8KICAgICBjbGFzcyBMaW5lYXJNYXRjaE5vZGUgOiBwdWJsaWMgVmFs
dWVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIExpbmVhck1hdGNoTm9kZShpbnQzMl90IGxl
biwgTm9kZSAqbmV4dE5vZGUpCi0gICAgICAgICAgICAgICAgOiBWYWx1ZU5vZGUoKDB4MzMzMzMz
KjM3K2xlbikqMzcraGFzaENvZGUobmV4dE5vZGUpKSwKKyAgICAgICAgICAgICAgICA6IFZhbHVl
Tm9kZSgoMHgzMzMzMzN1KjM3dStsZW4pKjM3dStoYXNoQ29kZShuZXh0Tm9kZSkpLAogICAgICAg
ICAgICAgICAgICAgbGVuZ3RoKGxlbiksIG5leHQobmV4dE5vZGUpIHt9CiAgICAgICAgIHZpcnR1
YWwgVUJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlICZvdGhlcikgY29uc3Q7CiAgICAgICAgIHZp
cnR1YWwgaW50MzJfdCBtYXJrUmlnaHRFZGdlc0ZpcnN0KGludDMyX3QgZWRnZU51bWJlcik7CkBA
IC0zMDUsNiArMzE2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBOb2RlICpuZXh0OwogICAgIH07
CiAKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQogICAgIC8qKgogICAgICAqIEBpbnRlcm5h
bCAKICAgICAgKi8KQEAgLTMyNiwyNSArMzM4LDI1IEBAIHByb3RlY3RlZDoKICAgICAgICAgdmly
dHVhbCB2b2lkIHdyaXRlKFN0cmluZ1RyaWVCdWlsZGVyICZidWlsZGVyKTsKICAgICAgICAgLy8g
QWRkcyBhIHVuaXQgd2l0aCBhIGZpbmFsIHZhbHVlLgogICAgICAgICB2b2lkIGFkZChpbnQzMl90
IGMsIGludDMyX3QgdmFsdWUpIHsKLSAgICAgICAgICAgIHVuaXRzW2xlbmd0aF09KFVDaGFyKWM7
CisgICAgICAgICAgICB1bml0c1tsZW5ndGhdPShjaGFyMTZfdCljOwogICAgICAgICAgICAgZXF1
YWxbbGVuZ3RoXT1OVUxMOwogICAgICAgICAgICAgdmFsdWVzW2xlbmd0aF09dmFsdWU7CiAgICAg
ICAgICAgICArK2xlbmd0aDsKLSAgICAgICAgICAgIGhhc2g9KGhhc2gqMzcrYykqMzcrdmFsdWU7
CisgICAgICAgICAgICBoYXNoPShoYXNoKjM3dStjKSozN3UrdmFsdWU7CiAgICAgICAgIH0KICAg
ICAgICAgLy8gQWRkcyBhIHVuaXQgd2hpY2ggbGVhZHMgdG8gYW5vdGhlciBtYXRjaCBub2RlLgog
ICAgICAgICB2b2lkIGFkZChpbnQzMl90IGMsIE5vZGUgKm5vZGUpIHsKLSAgICAgICAgICAgIHVu
aXRzW2xlbmd0aF09KFVDaGFyKWM7CisgICAgICAgICAgICB1bml0c1tsZW5ndGhdPShjaGFyMTZf
dCljOwogICAgICAgICAgICAgZXF1YWxbbGVuZ3RoXT1ub2RlOwogICAgICAgICAgICAgdmFsdWVz
W2xlbmd0aF09MDsKICAgICAgICAgICAgICsrbGVuZ3RoOwotICAgICAgICAgICAgaGFzaD0oaGFz
aCozNytjKSozNytoYXNoQ29kZShub2RlKTsKKyAgICAgICAgICAgIGhhc2g9KGhhc2gqMzd1K2Mp
KjM3dStoYXNoQ29kZShub2RlKTsKICAgICAgICAgfQogICAgIHByb3RlY3RlZDoKICAgICAgICAg
Tm9kZSAqZXF1YWxba01heEJyYW5jaExpbmVhclN1Yk5vZGVMZW5ndGhdOyAgLy8gTlVMTCBtZWFu
cyAiaGFzIGZpbmFsIHZhbHVlIi4KICAgICAgICAgaW50MzJfdCBsZW5ndGg7CiAgICAgICAgIGlu
dDMyX3QgdmFsdWVzW2tNYXhCcmFuY2hMaW5lYXJTdWJOb2RlTGVuZ3RoXTsKLSAgICAgICAgVUNo
YXIgdW5pdHNba01heEJyYW5jaExpbmVhclN1Yk5vZGVMZW5ndGhdOworICAgICAgICBjaGFyMTZf
dCB1bml0c1trTWF4QnJhbmNoTGluZWFyU3ViTm9kZUxlbmd0aF07CiAgICAgfTsKIAogICAgIC8q
KgpAQCAtMzUyLDE1ICszNjQsMTUgQEAgcHJvdGVjdGVkOgogICAgICAqLwogICAgIGNsYXNzIFNw
bGl0QnJhbmNoTm9kZSA6IHB1YmxpYyBCcmFuY2hOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFNwbGl0QnJhbmNoTm9kZShVQ2hhciBtaWRkbGVVbml0LCBOb2RlICpsZXNzVGhhbk5vZGUsIE5v
ZGUgKmdyZWF0ZXJPckVxdWFsTm9kZSkKLSAgICAgICAgICAgICAgICA6IEJyYW5jaE5vZGUoKCgw
eDU1NTU1NSozNyttaWRkbGVVbml0KSozNysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhhc2hDb2RlKGxlc3NUaGFuTm9kZSkpKjM3K2hhc2hDb2RlKGdyZWF0ZXJPckVxdWFsTm9kZSkp
LAorICAgICAgICBTcGxpdEJyYW5jaE5vZGUoY2hhcjE2X3QgbWlkZGxlVW5pdCwgTm9kZSAqbGVz
c1RoYW5Ob2RlLCBOb2RlICpncmVhdGVyT3JFcXVhbE5vZGUpCisgICAgICAgICAgICAgICAgOiBC
cmFuY2hOb2RlKCgoMHg1NTU1NTV1KjM3dSttaWRkbGVVbml0KSozN3UrCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNoQ29kZShsZXNzVGhhbk5vZGUpKSozN3UraGFzaENvZGUoZ3Jl
YXRlck9yRXF1YWxOb2RlKSksCiAgICAgICAgICAgICAgICAgICB1bml0KG1pZGRsZVVuaXQpLCBs
ZXNzVGhhbihsZXNzVGhhbk5vZGUpLCBncmVhdGVyT3JFcXVhbChncmVhdGVyT3JFcXVhbE5vZGUp
IHt9CiAgICAgICAgIHZpcnR1YWwgVUJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlICZvdGhlcikg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgaW50MzJfdCBtYXJrUmlnaHRFZGdlc0ZpcnN0KGludDMy
X3QgZWRnZU51bWJlcik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3cml0ZShTdHJpbmdUcmllQnVp
bGRlciAmYnVpbGRlcik7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBVQ2hhciB1bml0OworICAg
ICAgICBjaGFyMTZfdCB1bml0OwogICAgICAgICBOb2RlICpsZXNzVGhhbjsKICAgICAgICAgTm9k
ZSAqZ3JlYXRlck9yRXF1YWw7CiAgICAgfTsKQEAgLTM3MCw3ICszODIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgY2xhc3MgQnJhbmNoSGVhZE5vZGUgOiBwdWJsaWMgVmFsdWVOb2RlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIEJyYW5jaEhlYWROb2RlKGludDMyX3QgbGVuLCBOb2RlICpzdWJOb2RlKQot
ICAgICAgICAgICAgICAgIDogVmFsdWVOb2RlKCgweDY2NjY2NiozNytsZW4pKjM3K2hhc2hDb2Rl
KHN1Yk5vZGUpKSwKKyAgICAgICAgICAgICAgICA6IFZhbHVlTm9kZSgoMHg2NjY2NjZ1KjM3dSts
ZW4pKjM3dStoYXNoQ29kZShzdWJOb2RlKSksCiAgICAgICAgICAgICAgICAgICBsZW5ndGgobGVu
KSwgbmV4dChzdWJOb2RlKSB7fQogICAgICAgICB2aXJ0dWFsIFVCb29sIG9wZXJhdG9yPT0oY29u
c3QgTm9kZSAmb3RoZXIpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGludDMyX3QgbWFya1JpZ2h0
RWRnZXNGaXJzdChpbnQzMl90IGVkZ2VOdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9zdHNlYXJjaC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zdHNlYXJjaC5o
CmluZGV4IGQzOGNiMjNmMjE1N2U2OTQ1ZTY2YjEwZjJiODQ0MjAwZTNlMTZjMTMuLjU3YjViMzIx
ZTkwZDkxZGIzNWYzODk4NWZmNTM1Y2M0ZGNiM2I2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvc3RzZWFyY2guaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N0c2Vh
cmNoLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5j
LiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQg
KEMpIDIwMDEtMjAxNCBJQk0gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc3ltdGFibGUuaCBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvc3ltdGFibGUuaAppbmRleCA0MjhmOGJmZjIzZTEyZjE3NDQ0YmRiMzRmMDRjMTVj
YjdkM2E1ODY5Li4zNWU1ZjIzOGE3MDk1NDViZWFjYjhjNjVmZDEzYmFmZWQwYTRmYjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N5bXRhYmxlLmgKKysrIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9zeW10YWJsZS5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQg
bGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1
c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCiAqICAgQ29weXJpZ2h0IChjKSAyMDAwLTIwMDUsIEludGVybmF0aW9uYWwgQnVzaW5lc3Mg
TWFjaGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdGJsY29sbC5oIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS90Ymxjb2xsLmgKaW5kZXggZTU2ZjE4OWFkMmQxZjgyZWZl
NzljODczN2MwOGRlODhhMTkwNjZhZi4uMjRiYTIxM2I0MWVhY2MxMTgxZjE5MjZmNGQxMWRhNDY3
YTc3ZjI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS90Ymxjb2xsLmgKKysr
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS90Ymxjb2xsLmgKQEAgLTEsNiArMSw4IEBACisvLyDC
qSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAm
IHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoK
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgotKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxNSwgSW50ZXJu
YXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyogQ29weXJpZ2h0IChD
KSAxOTk2LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24g
YW5kCiAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgogKi8KQEAgLTk0LDEyICs5NiwxMiBAQCBjbGFzcyBVVmVjdG9yNjQ7CiAgKiBDb2xsYXRvciwg
dXNpbmcgZGF0YS1kcml2ZW4gdGFibGVzLiBUaGUgdXNlciBjYW4gY3JlYXRlIGEgY3VzdG9taXpl
ZAogICogdGFibGUtYmFzZWQgY29sbGF0aW9uLgogICogPHA+Ci0gKiBGb3IgbW9yZSBpbmZvcm1h
dGlvbiBhYm91dCB0aGUgY29sbGF0aW9uIHNlcnZpY2Ugc2VlIAorICogRm9yIG1vcmUgaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGNvbGxhdGlvbiBzZXJ2aWNlIHNlZQogICogPGEgaHJlZj0iaHR0cDov
L3VzZXJndWlkZS5pY3UtcHJvamVjdC5vcmcvY29sbGF0aW9uIj50aGUgVXNlciBHdWlkZTwvYT4u
CiAgKiA8cD4KLSAqIENvbGxhdGlvbiBzZXJ2aWNlIHByb3ZpZGVzIGNvcnJlY3Qgc29ydGluZyBv
cmRlcnMgZm9yIG1vc3QgbG9jYWxlcyBzdXBwb3J0ZWQgaW4gSUNVLiAKKyAqIENvbGxhdGlvbiBz
ZXJ2aWNlIHByb3ZpZGVzIGNvcnJlY3Qgc29ydGluZyBvcmRlcnMgZm9yIG1vc3QgbG9jYWxlcyBz
dXBwb3J0ZWQgaW4gSUNVLgogICogSWYgc3BlY2lmaWMgZGF0YSBmb3IgYSBsb2NhbGUgaXMgbm90
IGF2YWlsYWJsZSwgdGhlIG9yZGVycyBldmVudHVhbGx5IGZhbGxzIGJhY2sKLSAqIHRvIHRoZSA8
YSBocmVmPSJodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWNvbGxhdGlv
bi5odG1sI1Jvb3RfQ29sbGF0aW9uIj5DTERSIHJvb3Qgc29ydCBvcmRlcjwvYT4uIAorICogdG8g
dGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtY29s
bGF0aW9uLmh0bWwjUm9vdF9Db2xsYXRpb24iPkNMRFIgcm9vdCBzb3J0IG9yZGVyPC9hPi4KICAq
IDxwPgogICogU29ydCBvcmRlcmluZyBtYXkgYmUgY3VzdG9taXplZCBieSBwcm92aWRpbmcgeW91
ciBvd24gc2V0IG9mIHJ1bGVzLiBGb3IgbW9yZSBvbgogICogdGhpcyBzdWJqZWN0IHNlZSB0aGUg
PGEgaHJlZj0iaHR0cDovL3VzZXJndWlkZS5pY3UtcHJvamVjdC5vcmcvY29sbGF0aW9uL2N1c3Rv
bWl6YXRpb24iPgpAQCAtMTYxLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgVUNvbEF0dHJpYnV0ZVZhbHVlIGRlY29tcG9zaXRpb25Nb2RlLAogICAgICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpOwogCi0jaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkg
CisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAgICAvKioKICAgICAgKiBUT0RPOiBkb2N1
bWVudCAmIHByb3Bvc2UgYXMgcHVibGljIEFQSQogICAgICAqIEBpbnRlcm5hbApAQCAtMTgwLDgg
KzE4Miw4IEBAIHB1YmxpYzoKIAogCiAgICAgLyoqIE9wZW5zIGEgY29sbGF0b3IgZnJvbSBhIGNv
bGxhdG9yIGJpbmFyeSBpbWFnZSBjcmVhdGVkIHVzaW5nCi0gICAgKiAgY2xvbmVCaW5hcnkuIEJp
bmFyeSBpbWFnZSB1c2VkIGluIGluc3RhbnRpYXRpb24gb2YgdGhlIAotICAgICogIGNvbGxhdG9y
IHJlbWFpbnMgb3duZWQgYnkgdGhlIHVzZXIgYW5kIHNob3VsZCBzdGF5IGFyb3VuZCBmb3IgCisg
ICAgKiAgY2xvbmVCaW5hcnkuIEJpbmFyeSBpbWFnZSB1c2VkIGluIGluc3RhbnRpYXRpb24gb2Yg
dGhlCisgICAgKiAgY29sbGF0b3IgcmVtYWlucyBvd25lZCBieSB0aGUgdXNlciBhbmQgc2hvdWxk
IHN0YXkgYXJvdW5kIGZvcgogICAgICogIHRoZSBsaWZldGltZSBvZiB0aGUgY29sbGF0b3IuIFRo
ZSBBUEkgYWxzbyB0YWtlcyBhIGJhc2UgY29sbGF0b3IKICAgICAqICB3aGljaCBtdXN0IGJlIHRo
ZSByb290IGNvbGxhdG9yLgogICAgICogIEBwYXJhbSBiaW4gYmluYXJ5IGltYWdlIG93bmVkIGJ5
IHRoZSB1c2VyIGFuZCByZXF1aXJlZCB0aHJvdWdoIHRoZQpAQCAtMTk2LDggKzE5OCw4IEBAIHB1
YmxpYzoKICAgICAqICBAc2VlIGNsb25lQmluYXJ5CiAgICAgKiAgQHN0YWJsZSBJQ1UgMy40CiAg
ICAgKi8KLSAgICBSdWxlQmFzZWRDb2xsYXRvcihjb25zdCB1aW50OF90ICpiaW4sIGludDMyX3Qg
bGVuZ3RoLCAKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgUnVsZUJhc2VkQ29sbGF0b3IgKmJh
c2UsIAorICAgIFJ1bGVCYXNlZENvbGxhdG9yKGNvbnN0IHVpbnQ4X3QgKmJpbiwgaW50MzJfdCBs
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ1bGVCYXNlZENvbGxhdG9yICpiYXNl
LAogICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpOwogCiAgICAgLyoqCkBA
IC0yNTgsNyArMjYwLDcgQEAgcHVibGljOgogCiAgICAgLyoqCiAgICAgKiBUaGUgY29tcGFyaXNv
biBmdW5jdGlvbiBjb21wYXJlcyB0aGUgY2hhcmFjdGVyIGRhdGEgc3RvcmVkIGluIHR3bwotICAg
ICogZGlmZmVyZW50IHN0cmluZ3MuIFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlciBh
IHN0cmluZyBpcyBsZXNzIAorICAgICogZGlmZmVyZW50IHN0cmluZ3MuIFJldHVybnMgaW5mb3Jt
YXRpb24gYWJvdXQgd2hldGhlciBhIHN0cmluZyBpcyBsZXNzCiAgICAgKiB0aGFuLCBncmVhdGVy
IHRoYW4gb3IgZXF1YWwgdG8gYW5vdGhlciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gc291cmNlIHRo
ZSBzb3VyY2Ugc3RyaW5nIHRvIGJlIGNvbXBhcmVkIHdpdGguCiAgICAgKiBAcGFyYW0gdGFyZ2V0
IHRoZSBzdHJpbmcgdGhhdCBpcyB0byBiZSBjb21wYXJlZCB3aXRoIHRoZSBzb3VyY2Ugc3RyaW5n
LgpAQCAtMjczLDE1ICsyNzUsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CiAKICAgICAvKioKLSAgICAq
IERvZXMgdGhlIHNhbWUgdGhpbmcgYXMgY29tcGFyZSBidXQgbGltaXRzIHRoZSBjb21wYXJpc29u
IHRvIGEgc3BlY2lmaWVkIAorICAgICogRG9lcyB0aGUgc2FtZSB0aGluZyBhcyBjb21wYXJlIGJ1
dCBsaW1pdHMgdGhlIGNvbXBhcmlzb24gdG8gYSBzcGVjaWZpZWQKICAgICAqIGxlbmd0aAogICAg
ICogQHBhcmFtIHNvdXJjZSB0aGUgc291cmNlIHN0cmluZyB0byBiZSBjb21wYXJlZCB3aXRoLgog
ICAgICogQHBhcmFtIHRhcmdldCB0aGUgc3RyaW5nIHRoYXQgaXMgdG8gYmUgY29tcGFyZWQgd2l0
aCB0aGUgc291cmNlIHN0cmluZy4KICAgICAqIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCB0aGUg
Y29tcGFyaXNvbiBpcyBsaW1pdGVkIHRvCiAgICAgKiBAcGFyYW0gc3RhdHVzIHBvc3NpYmxlIGVy
cm9yIGNvZGUKLSAgICAqIEByZXR1cm4gUmV0dXJucyBhbiBlbnVtIHZhbHVlLiBVQ09MX0dSRUFU
RVIgaWYgc291cmNlICh1cCB0byB0aGUgc3BlY2lmaWVkIAotICAgICogICAgICAgICBsZW5ndGgp
IGlzIGdyZWF0ZXIgdGhhbiB0YXJnZXQ7IFVDT0xfRVFVQUwgaWYgc291cmNlICh1cCB0byBzcGVj
aWZpZWQgCi0gICAgKiAgICAgICAgIGxlbmd0aCkgaXMgZXF1YWwgdG8gdGFyZ2V0OyBVQ09MX0xF
U1MgaWYgc291cmNlICh1cCB0byB0aGUgc3BlY2lmaWVkIAorICAgICogQHJldHVybiBSZXR1cm5z
IGFuIGVudW0gdmFsdWUuIFVDT0xfR1JFQVRFUiBpZiBzb3VyY2UgKHVwIHRvIHRoZSBzcGVjaWZp
ZWQKKyAgICAqICAgICAgICAgbGVuZ3RoKSBpcyBncmVhdGVyIHRoYW4gdGFyZ2V0OyBVQ09MX0VR
VUFMIGlmIHNvdXJjZSAodXAgdG8gc3BlY2lmaWVkCisgICAgKiAgICAgICAgIGxlbmd0aCkgaXMg
ZXF1YWwgdG8gdGFyZ2V0OyBVQ09MX0xFU1MgaWYgc291cmNlICh1cCB0byB0aGUgc3BlY2lmaWVk
CiAgICAgKiAgICAgICAgIGxlbmd0aCkgaXMgbGVzcyAgdGhhbiB0YXJnZXQuCiAgICAgKiBAc3Rh
YmxlIElDVSAyLjYKICAgICAqLwpAQCAtMjkyLDcgKzI5NCw3IEBAIHB1YmxpYzoKIAogICAgIC8q
KgogICAgICogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gY29tcGFyZXMgdGhlIGNoYXJhY3RlciBk
YXRhIHN0b3JlZCBpbiB0d28KLSAgICAqIGRpZmZlcmVudCBzdHJpbmcgYXJyYXlzLiBSZXR1cm5z
IGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgYSBzdHJpbmcgYXJyYXkgCisgICAgKiBkaWZmZXJl
bnQgc3RyaW5nIGFycmF5cy4gUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB3aGV0aGVyIGEgc3Ry
aW5nIGFycmF5CiAgICAgKiBpcyBsZXNzIHRoYW4sIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBh
bm90aGVyIHN0cmluZyBhcnJheS4KICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIHNvdXJjZSBzdHJp
bmcgYXJyYXkgdG8gYmUgY29tcGFyZWQgd2l0aC4KICAgICAqIEBwYXJhbSBzb3VyY2VMZW5ndGgg
dGhlIGxlbmd0aCBvZiB0aGUgc291cmNlIHN0cmluZyBhcnJheS4gIElmIHRoaXMgdmFsdWUKQEAg
LTMwNiw4ICszMDgsOCBAQCBwdWJsaWM6CiAgICAgKiB0aGFuIHRhcmdldAogICAgICogQHN0YWJs
ZSBJQ1UgMi42CiAgICAgKi8KLSAgICB2aXJ0dWFsIFVDb2xsYXRpb25SZXN1bHQgY29tcGFyZShj
b25zdCBVQ2hhciogc291cmNlLCBpbnQzMl90IHNvdXJjZUxlbmd0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogdGFyZ2V0LCBpbnQzMl90IHRhcmdl
dExlbmd0aCwKKyAgICB2aXJ0dWFsIFVDb2xsYXRpb25SZXN1bHQgY29tcGFyZShjb25zdCBjaGFy
MTZfdCogc291cmNlLCBpbnQzMl90IHNvdXJjZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyMTZfdCogdGFyZ2V0LCBpbnQzMl90IHRhcmdldExl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZz
dGF0dXMpIGNvbnN0OwogCiAgICAgLyoqCkBAIC0zNDYsNyArMzQ4LDcgQEAgcHVibGljOgogICAg
ICAqIFRyYW5zZm9ybXMgdGhlIHN0cmluZyBpbnRvIGEgc2VyaWVzIG9mIGNoYXJhY3RlcnMKICAg
ICAgKiB0aGF0IGNhbiBiZSBjb21wYXJlZCB3aXRoIENvbGxhdGlvbktleS5jb21wYXJlKCkuCiAg
ICAgICoKLSAgICAgKiBOb3RlIHRoYXQgc29ydCBrZXlzIGFyZSBvZnRlbiBsZXNzIGVmZmljaWVu
dCB0aGFuIHNpbXBseSBkb2luZyBjb21wYXJpc29uLiAgCisgICAgICogTm90ZSB0aGF0IHNvcnQg
a2V5cyBhcmUgb2Z0ZW4gbGVzcyBlZmZpY2llbnQgdGhhbiBzaW1wbHkgZG9pbmcgY29tcGFyaXNv
bi4KICAgICAgKiBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIElDVSBVc2VyIEd1aWRlLgogICAg
ICAqCiAgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgc291cmNlIHN0cmluZy4KQEAgLTM2NCw3ICsz
NjYsNyBAQCBwdWJsaWM6CiAgICAgICogVHJhbnNmb3JtcyBhIHNwZWNpZmllZCByZWdpb24gb2Yg
dGhlIHN0cmluZyBpbnRvIGEgc2VyaWVzIG9mIGNoYXJhY3RlcnMKICAgICAgKiB0aGF0IGNhbiBi
ZSBjb21wYXJlZCB3aXRoIENvbGxhdGlvbktleS5jb21wYXJlLgogICAgICAqCi0gICAgICogTm90
ZSB0aGF0IHNvcnQga2V5cyBhcmUgb2Z0ZW4gbGVzcyBlZmZpY2llbnQgdGhhbiBzaW1wbHkgZG9p
bmcgY29tcGFyaXNvbi4gIAorICAgICAqIE5vdGUgdGhhdCBzb3J0IGtleXMgYXJlIG9mdGVuIGxl
c3MgZWZmaWNpZW50IHRoYW4gc2ltcGx5IGRvaW5nIGNvbXBhcmlzb24uCiAgICAgICogRm9yIG1v
cmUgZGV0YWlscywgc2VlIHRoZSBJQ1UgVXNlciBHdWlkZS4KICAgICAgKgogICAgICAqIEBwYXJh
bSBzb3VyY2UgdGhlIHNvdXJjZSBzdHJpbmcuCkBAIC0zNzUsNyArMzc3LDcgQEAgcHVibGljOgog
ICAgICAqIEBzZWUgQ29sbGF0aW9uS2V5CiAgICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAgICov
Ci0gICAgdmlydHVhbCBDb2xsYXRpb25LZXkmIGdldENvbGxhdGlvbktleShjb25zdCBVQ2hhciAq
c291cmNlLAorICAgIHZpcnR1YWwgQ29sbGF0aW9uS2V5JiBnZXRDb2xsYXRpb25LZXkoY29uc3Qg
Y2hhcjE2X3QgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDMyX3Qgc291cmNlTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ29sbGF0aW9uS2V5JiBrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OwpAQCAtNDEzLDcgKzQx
NSw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVyc2lvbihVVmVy
c2lvbkluZm8gaW5mbykgY29uc3Q7CiAKLSNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJIAor
I2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHRo
ZSBtYXhpbXVtIGxlbmd0aCBvZiBhbnkgZXhwYW5zaW9uIHNlcXVlbmNlcyB0aGF0IGVuZCB3aXRo
IHRoZQogICAgICAqIHNwZWNpZmllZCBjb21wYXJpc29uIG9yZGVyLgpAQCAtNDU4LDcgKzQ2MCw3
IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgVUNsYXNzSUQgVV9FWFBPUlQyIGdldFN0
YXRpY0NsYXNzSUQodm9pZCk7CiAKLSNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJIAorI2lm
bmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgICAvKioKICAgICAgKiBEbyBub3QgdXNlIHRo
aXMgbWV0aG9kOiBUaGUgY2FsbGVyIGFuZCB0aGUgSUNVIGxpYnJhcnkgbWlnaHQgdXNlIGRpZmZl
cmVudCBoZWFwcy4KICAgICAgKiBVc2UgY2xvbmVCaW5hcnkoKSBpbnN0ZWFkIHdoaWNoIHdyaXRl
cyB0byBjYWxsZXItcHJvdmlkZWQgbWVtb3J5LgpAQCAtNDcyLDcgKzQ3NCw3IEBAIHB1YmxpYzoK
ICAgICB1aW50OF90ICpjbG9uZVJ1bGVEYXRhKGludDMyX3QgJmxlbmd0aCwgVUVycm9yQ29kZSAm
c3RhdHVzKSBjb25zdDsKICNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCiAKLSAg
ICAvKiogQ3JlYXRlcyBhIGJpbmFyeSBpbWFnZSBvZiBhIGNvbGxhdG9yLiBUaGlzIGJpbmFyeSBp
bWFnZSBjYW4gYmUgc3RvcmVkIGFuZCAKKyAgICAvKiogQ3JlYXRlcyBhIGJpbmFyeSBpbWFnZSBv
ZiBhIGNvbGxhdG9yLiBUaGlzIGJpbmFyeSBpbWFnZSBjYW4gYmUgc3RvcmVkIGFuZAogICAgICog
IGxhdGVyIHVzZWQgdG8gaW5zdGFudGlhdGUgYSBjb2xsYXRvciB1c2luZyB1Y29sX29wZW5CaW5h
cnkuCiAgICAgKiAgVGhpcyBBUEkgc3VwcG9ydHMgcHJlZmxpZ2h0aW5nLgogICAgICogIEBwYXJh
bSBidWZmZXIgYSBmaWxsLWluIGJ1ZmZlciB0byByZWNlaXZlIHRoZSBiaW5hcnkgaW1hZ2UKQEAg
LTU1MCw3ICs1NTIsNyBAQCBwdWJsaWM6CiAgICAgICogdGhlIHRvcCBvZiBvbmUgb2YgdGhlIHN1
cHBvcnRlZCByZW9yZGVyaW5nIGdyb3VwcywKICAgICAgKiBhbmQgaXQgbXVzdCBub3QgYmUgYmV5
b25kIHRoZSBsYXN0IG9mIHRob3NlIGdyb3Vwcy4KICAgICAgKiBTZWUgc2V0TWF4VmFyaWFibGUo
KS4KLSAgICAgKiBAcGFyYW0gdmFyVG9wIG9uZSBvciBtb3JlIChpZiBjb250cmFjdGlvbikgVUNo
YXJzIHRvIHdoaWNoIHRoZSB2YXJpYWJsZSB0b3Agc2hvdWxkIGJlIHNldAorICAgICAqIEBwYXJh
bSB2YXJUb3Agb25lIG9yIG1vcmUgKGlmIGNvbnRyYWN0aW9uKSBjaGFyMTZfdHMgdG8gd2hpY2gg
dGhlIHZhcmlhYmxlIHRvcCBzaG91bGQgYmUgc2V0CiAgICAgICogQHBhcmFtIGxlbiBsZW5ndGgg
b2YgdmFyaWFibGUgdG9wIHN0cmluZy4gSWYgLTEgaXQgaXMgY29uc2lkZXJlZCB0byBiZSB6ZXJv
IHRlcm1pbmF0ZWQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBlcnJvciBjb2RlLiBJZiBlcnJvciBj
b2RlIGlzIHNldCwgdGhlIHJldHVybiB2YWx1ZSBpcyB1bmRlZmluZWQuIEVycm9ycyBzZXQgYnkg
dGhpcyBmdW5jdGlvbiBhcmU6IDxicj4KICAgICAgKiAgICBVX0NFX05PVF9GT1VORF9FUlJPUiBp
ZiBtb3JlIHRoYW4gb25lIGNoYXJhY3RlciB3YXMgcGFzc2VkIGFuZCB0aGVyZSBpcyBubyBzdWNo
IGNvbnRyYWN0aW9uPGJyPgpAQCAtNTU5LDcgKzU2MSw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0
dXJuIHZhcmlhYmxlIHRvcCBwcmltYXJ5IHdlaWdodAogICAgICAqIEBkZXByZWNhdGVkIElDVSA1
MyBDYWxsIHNldE1heFZhcmlhYmxlKCkgaW5zdGVhZC4KICAgICAgKi8KLSAgICB2aXJ0dWFsIHVp
bnQzMl90IHNldFZhcmlhYmxlVG9wKGNvbnN0IFVDaGFyICp2YXJUb3AsIGludDMyX3QgbGVuLCBV
RXJyb3JDb2RlICZzdGF0dXMpOworICAgIHZpcnR1YWwgdWludDMyX3Qgc2V0VmFyaWFibGVUb3Ao
Y29uc3QgY2hhcjE2X3QgKnZhclRvcCwgaW50MzJfdCBsZW4sIFVFcnJvckNvZGUgJnN0YXR1cyk7
CiAKICAgICAvKioKICAgICAgKiBTZXRzIHRoZSB2YXJpYWJsZSB0b3AgdG8gdGhlIHByaW1hcnkg
d2VpZ2h0IG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5nLgpAQCAtNTY4LDcgKzU3MCw3IEBAIHB1Ymxp
YzoKICAgICAgKiB0aGUgdG9wIG9mIG9uZSBvZiB0aGUgc3VwcG9ydGVkIHJlb3JkZXJpbmcgZ3Jv
dXBzLAogICAgICAqIGFuZCBpdCBtdXN0IG5vdCBiZSBiZXlvbmQgdGhlIGxhc3Qgb2YgdGhvc2Ug
Z3JvdXBzLgogICAgICAqIFNlZSBzZXRNYXhWYXJpYWJsZSgpLgotICAgICAqIEBwYXJhbSB2YXJU
b3AgYSBVbmljb2RlU3RyaW5nIHNpemUgMSBvciBtb3JlIChpZiBjb250cmFjdGlvbikgb2YgVUNo
YXJzIHRvIHdoaWNoIHRoZSB2YXJpYWJsZSB0b3Agc2hvdWxkIGJlIHNldAorICAgICAqIEBwYXJh
bSB2YXJUb3AgYSBVbmljb2RlU3RyaW5nIHNpemUgMSBvciBtb3JlIChpZiBjb250cmFjdGlvbikg
b2YgY2hhcjE2X3RzIHRvIHdoaWNoIHRoZSB2YXJpYWJsZSB0b3Agc2hvdWxkIGJlIHNldAogICAg
ICAqIEBwYXJhbSBzdGF0dXMgZXJyb3IgY29kZS4gSWYgZXJyb3IgY29kZSBpcyBzZXQsIHRoZSBy
ZXR1cm4gdmFsdWUgaXMgdW5kZWZpbmVkLiBFcnJvcnMgc2V0IGJ5IHRoaXMgZnVuY3Rpb24gYXJl
OiA8YnI+CiAgICAgICogICAgVV9DRV9OT1RfRk9VTkRfRVJST1IgaWYgbW9yZSB0aGFuIG9uZSBj
aGFyYWN0ZXIgd2FzIHBhc3NlZCBhbmQgdGhlcmUgaXMgbm8gc3VjaCBjb250cmFjdGlvbjxicj4K
ICAgICAgKiAgICBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IgaWYgdGhlIHZhcmlhYmxlIHRvcCBp
cyBiZXlvbmQKQEAgLTYwMSwxMCArNjAzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVpbnQz
Ml90IGdldFZhcmlhYmxlVG9wKFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CiAKICAgICAvKioK
LSAgICAgKiBHZXQgYSBVbmljb2RlU2V0IHRoYXQgY29udGFpbnMgYWxsIHRoZSBjaGFyYWN0ZXJz
IGFuZCBzZXF1ZW5jZXMgdGFpbG9yZWQgaW4gCisgICAgICogR2V0IGEgVW5pY29kZVNldCB0aGF0
IGNvbnRhaW5zIGFsbCB0aGUgY2hhcmFjdGVycyBhbmQgc2VxdWVuY2VzIHRhaWxvcmVkIGluCiAg
ICAgICogdGhpcyBjb2xsYXRvci4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgICAgZXJyb3IgY29k
ZSBvZiB0aGUgb3BlcmF0aW9uCi0gICAgICogQHJldHVybiBhIHBvaW50ZXIgdG8gYSBVbmljb2Rl
U2V0IG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgCisgICAgICogQHJldHVybiBhIHBvaW50ZXIg
dG8gYSBVbmljb2RlU2V0IG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUKICAgICAgKiAgICAgICAg
IGNvZGUgcG9pbnRzIGFuZCBzZXF1ZW5jZXMgdGhhdCBtYXkgc29ydCBkaWZmZXJlbnRseSB0aGFu
CiAgICAgICogICAgICAgICBpbiB0aGUgcm9vdCBjb2xsYXRvci4gVGhlIG9iamVjdCBtdXN0IGJl
IGRpc3Bvc2VkIG9mIGJ5IHVzaW5nIGRlbGV0ZQogICAgICAqIEBzdGFibGUgSUNVIDIuNApAQCAt
NjE0LDcgKzYxNiw3IEBAIHB1YmxpYzoKICAgICAvKioKICAgICAgKiBHZXQgdGhlIHNvcnQga2V5
IGFzIGFuIGFycmF5IG9mIGJ5dGVzIGZyb20gYSBVbmljb2RlU3RyaW5nLgogICAgICAqCi0gICAg
ICogTm90ZSB0aGF0IHNvcnQga2V5cyBhcmUgb2Z0ZW4gbGVzcyBlZmZpY2llbnQgdGhhbiBzaW1w
bHkgZG9pbmcgY29tcGFyaXNvbi4gIAorICAgICAqIE5vdGUgdGhhdCBzb3J0IGtleXMgYXJlIG9m
dGVuIGxlc3MgZWZmaWNpZW50IHRoYW4gc2ltcGx5IGRvaW5nIGNvbXBhcmlzb24uCiAgICAgICog
Rm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBJQ1UgVXNlciBHdWlkZS4KICAgICAgKgogICAgICAq
IEBwYXJhbSBzb3VyY2Ugc3RyaW5nIHRvIGJlIHByb2Nlc3NlZC4KQEAgLTYyOSw5ICs2MzEsOSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCByZXN1bHRM
ZW5ndGgpIGNvbnN0OwogCiAgICAgLyoqCi0gICAgICogR2V0IHRoZSBzb3J0IGtleSBhcyBhbiBh
cnJheSBvZiBieXRlcyBmcm9tIGEgVUNoYXIgYnVmZmVyLgorICAgICAqIEdldCB0aGUgc29ydCBr
ZXkgYXMgYW4gYXJyYXkgb2YgYnl0ZXMgZnJvbSBhIGNoYXIxNl90IGJ1ZmZlci4KICAgICAgKgot
ICAgICAqIE5vdGUgdGhhdCBzb3J0IGtleXMgYXJlIG9mdGVuIGxlc3MgZWZmaWNpZW50IHRoYW4g
c2ltcGx5IGRvaW5nIGNvbXBhcmlzb24uICAKKyAgICAgKiBOb3RlIHRoYXQgc29ydCBrZXlzIGFy
ZSBvZnRlbiBsZXNzIGVmZmljaWVudCB0aGFuIHNpbXBseSBkb2luZyBjb21wYXJpc29uLgogICAg
ICAqIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgSUNVIFVzZXIgR3VpZGUuCiAgICAgICoKICAg
ICAgKiBAcGFyYW0gc291cmNlIHN0cmluZyB0byBiZSBwcm9jZXNzZWQuCkBAIC02NDQsNyArNjQ2
LDcgQEAgcHVibGljOgogICAgICAqIEByZXR1cm4gTnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCBmb3Ig
c3RvcmluZyB0aGUgc29ydCBrZXkKICAgICAgKiBAc3RhYmxlIElDVSAyLjIKICAgICAgKi8KLSAg
ICB2aXJ0dWFsIGludDMyX3QgZ2V0U29ydEtleShjb25zdCBVQ2hhciAqc291cmNlLCBpbnQzMl90
IHNvdXJjZUxlbmd0aCwKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0U29ydEtleShjb25zdCBjaGFy
MTZfdCAqc291cmNlLCBpbnQzMl90IHNvdXJjZUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpyZXN1bHQsIGludDMyX3QgcmVzdWx0TGVuZ3RoKSBjb25zdDsK
IAogICAgIC8qKgpAQCAtNjU4LDcgKzY2MCw3IEBAIHB1YmxpYzoKICAgICAgKiBAc2VlIHVjb2xf
c2V0UmVvcmRlckNvZGVzCiAgICAgICogQHNlZSBDb2xsYXRvciNnZXRFcXVpdmFsZW50UmVvcmRl
ckNvZGVzCiAgICAgICogQHNlZSBDb2xsYXRvciNzZXRSZW9yZGVyQ29kZXMKLSAgICAgKiBAc3Rh
YmxlIElDVSA0LjggCisgICAgICogQHN0YWJsZSBJQ1UgNC44CiAgICAgICovCiAgICAgIHZpcnR1
YWwgaW50MzJfdCBnZXRSZW9yZGVyQ29kZXMoaW50MzJfdCAqZGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwKQEAgLTY2NiwxNCAr
NjY4LDE0IEBAIHB1YmxpYzoKIAogICAgIC8qKgogICAgICAqIFNldHMgdGhlIG9yZGVyaW5nIG9m
IHNjcmlwdHMgZm9yIHRoaXMgY29sbGF0b3IuCi0gICAgICogQHBhcmFtIHJlb3JkZXJDb2RlcyBB
biBhcnJheSBvZiBzY3JpcHQgY29kZXMgaW4gdGhlIG5ldyBvcmRlci4gVGhpcyBjYW4gYmUgTlVM
TCBpZiB0aGUgCisgICAgICogQHBhcmFtIHJlb3JkZXJDb2RlcyBBbiBhcnJheSBvZiBzY3JpcHQg
Y29kZXMgaW4gdGhlIG5ldyBvcmRlci4gVGhpcyBjYW4gYmUgTlVMTCBpZiB0aGUKICAgICAgKiBs
ZW5ndGggaXMgYWxzbyBzZXQgdG8gMC4gQW4gZW1wdHkgYXJyYXkgd2lsbCBjbGVhciBhbnkgcmVv
cmRlcmluZyBjb2RlcyBvbiB0aGUgY29sbGF0b3IuCiAgICAgICogQHBhcmFtIHJlb3JkZXJDb2Rl
c0xlbmd0aCBUaGUgbGVuZ3RoIG9mIHJlb3JkZXJDb2Rlcy4KICAgICAgKiBAcGFyYW0gc3RhdHVz
IGVycm9yIGNvZGUKICAgICAgKiBAc2VlIHVjb2xfc2V0UmVvcmRlckNvZGVzCiAgICAgICogQHNl
ZSBDb2xsYXRvciNnZXRSZW9yZGVyQ29kZXMKICAgICAgKiBAc2VlIENvbGxhdG9yI2dldEVxdWl2
YWxlbnRSZW9yZGVyQ29kZXMKLSAgICAgKiBAc3RhYmxlIElDVSA0LjggCisgICAgICogQHN0YWJs
ZSBJQ1UgNC44CiAgICAgICovCiAgICAgIHZpcnR1YWwgdm9pZCBzZXRSZW9yZGVyQ29kZXMoY29u
c3QgaW50MzJfdCogcmVvcmRlckNvZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDMyX3QgcmVvcmRlckNvZGVzTGVuZ3RoLApAQCAtNjg5LDE4ICs2OTEsMTggQEAgcHVi
bGljOgogICAgICAgICAgICAgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKIAogICAgIC8q
KiBHZXQgdGhlIHNob3J0IGRlZmluaXRpb24gc3RyaW5nIGZvciBhIGNvbGxhdG9yLiBUaGlzIGlu
dGVybmFsIEFQSSBoYXJ2ZXN0cyB0aGUgY29sbGF0b3IncwotICAgICAqICBsb2NhbGUgYW5kIHRo
ZSBhdHRyaWJ1dGUgc2V0IGFuZCBwcm9kdWNlcyBhIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGZv
ciBvcGVuaW5nIAorICAgICAqICBsb2NhbGUgYW5kIHRoZSBhdHRyaWJ1dGUgc2V0IGFuZCBwcm9k
dWNlcyBhIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGZvciBvcGVuaW5nCiAgICAgICogIGEgY29s
bGF0b3Igd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIHVzaW5nIHRoZSB1Y29sX29wZW5Gcm9tU2hv
cnRTdHJpbmcgQVBJLgogICAgICAqICBUaGlzIHN0cmluZyB3aWxsIGJlIG5vcm1hbGl6ZWQuCiAg
ICAgICogIFRoZSBzdHJ1Y3R1cmUgYW5kIHRoZSBzeW50YXggb2YgdGhlIHN0cmluZyBpcyBkZWZp
bmVkIGluIHRoZSAiTmFtaW5nIGNvbGxhdG9ycyIKLSAgICAgKiAgc2VjdGlvbiBvZiB0aGUgdXNl
cnMgZ3VpZGU6IAorICAgICAqICBzZWN0aW9uIG9mIHRoZSB1c2VycyBndWlkZToKICAgICAgKiAg
aHR0cDovL3VzZXJndWlkZS5pY3UtcHJvamVjdC5vcmcvY29sbGF0aW9uL2NvbmNlcHRzI1RPQy1D
b2xsYXRvci1uYW1pbmctc2NoZW1lCiAgICAgICogIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgcHJl
ZmxpZ2h0aW5nLgotICAgICAqIAorICAgICAqCiAgICAgICogIFRoaXMgaXMgaW50ZXJuYWwsIGFu
ZCBpbnRlbmRlZCB0byBiZSB1c2VkIHdpdGggZGVsZWdhdGUgY29udmVydGVycy4KICAgICAgKgog
ICAgICAqICBAcGFyYW0gbG9jYWxlIGEgbG9jYWxlIHRoYXQgd2lsbCBhcHBlYXIgYXMgYSBjb2xs
YXRvcnMgbG9jYWxlIGluIHRoZSByZXN1bHRpbmcKLSAgICAgKiAgICAgICAgICAgICAgICBzaG9y
dCBzdHJpbmcgZGVmaW5pdGlvbi4gSWYgTlVMTCwgdGhlIGxvY2FsZSB3aWxsIGJlIGhhcnZlc3Rl
ZCAKKyAgICAgKiAgICAgICAgICAgICAgICBzaG9ydCBzdHJpbmcgZGVmaW5pdGlvbi4gSWYgTlVM
TCwgdGhlIGxvY2FsZSB3aWxsIGJlIGhhcnZlc3RlZAogICAgICAqICAgICAgICAgICAgICAgIGZy
b20gdGhlIGNvbGxhdG9yLgogICAgICAqICBAcGFyYW0gYnVmZmVyIHNwYWNlIHRvIGhvbGQgdGhl
IHJlc3VsdGluZyBzdHJpbmcKICAgICAgKiAgQHBhcmFtIGNhcGFjaXR5IGNhcGFjaXR5IG9mIHRo
ZSBidWZmZXIKQEAgLTcyNCw2ICs3MjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBVQ2hhckl0
ZXJhdG9yICppdGVyLCB1aW50MzJfdCBzdGF0ZVsyXSwKICAgICAgICAgICAgIHVpbnQ4X3QgKmRl
c3QsIGludDMyX3QgY291bnQsIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3Q7CiAKKyAgICAv
LyBEbyBub3QgZW5jbG9zZSB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciB3aXRoICNpZm5kZWYgVV9I
SURFX0lOVEVSTkFMX0FQSQogICAgIC8qKgogICAgICAqIE9ubHkgZm9yIHVzZSBpbiB1Y29sX29w
ZW5SdWxlcygpLgogICAgICAqIEBpbnRlcm5hbApAQCAtODE4LDE3ICs4MjEsMTcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGFkb3B0VGFpbG9yaW5nKENvbGxhdGlvblRhaWxvcmluZyAqdCwgVUVycm9y
Q29kZSAmZXJyb3JDb2RlKTsKIAogICAgIC8vIEJvdGggbGVuZ3RocyBtdXN0IGJlIDwwIG9yIGVs
c2UgYm90aCBtdXN0IGJlID49MC4KLSAgICBVQ29sbGF0aW9uUmVzdWx0IGRvQ29tcGFyZShjb25z
dCBVQ2hhciAqbGVmdCwgaW50MzJfdCBsZWZ0TGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFVDaGFyICpyaWdodCwgaW50MzJfdCByaWdodExlbmd0aCwKKyAgICBV
Q29sbGF0aW9uUmVzdWx0IGRvQ29tcGFyZShjb25zdCBjaGFyMTZfdCAqbGVmdCwgaW50MzJfdCBs
ZWZ0TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90
ICpyaWdodCwgaW50MzJfdCByaWdodExlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OwogICAgIFVDb2xsYXRpb25SZXN1bHQg
ZG9Db21wYXJlKGNvbnN0IHVpbnQ4X3QgKmxlZnQsIGludDMyX3QgbGVmdExlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpyaWdodCwgaW50MzJfdCBy
aWdodExlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZl
cnJvckNvZGUpIGNvbnN0OwogCi0gICAgdm9pZCB3cml0ZVNvcnRLZXkoY29uc3QgVUNoYXIgKnMs
IGludDMyX3QgbGVuZ3RoLAorICAgIHZvaWQgd3JpdGVTb3J0S2V5KGNvbnN0IGNoYXIxNl90ICpz
LCBpbnQzMl90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICBTb3J0S2V5Qnl0ZVNpbmsg
JnNpbmssIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3Q7CiAKLSAgICB2b2lkIHdyaXRlSWRl
bnRpY2FsTGV2ZWwoY29uc3QgVUNoYXIgKnMsIGNvbnN0IFVDaGFyICpsaW1pdCwKKyAgICB2b2lk
IHdyaXRlSWRlbnRpY2FsTGV2ZWwoY29uc3QgY2hhcjE2X3QgKnMsIGNvbnN0IGNoYXIxNl90ICps
aW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydEtleUJ5dGVTaW5rICZzaW5r
LCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OwogCiAgICAgY29uc3QgQ29sbGF0aW9uU2V0
dGluZ3MgJmdldERlZmF1bHRTZXR0aW5ncygpIGNvbnN0OwpAQCAtODUzLDcgKzg1Niw3IEBAIHBy
aXZhdGU6CiAgICAgICovCiAgICAgVUJvb2wgaXNVbnNhZmUoVUNoYXIzMiBjKSBjb25zdDsKIAot
ICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVNYXhFeHBhbnNpb25zKGNvbnN0IENvbGxhdGlvblRhaWxv
cmluZyAqdCwgVUVycm9yQ29kZSAmZXJyb3JDb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBVX0NBTExD
T05WIGNvbXB1dGVNYXhFeHBhbnNpb25zKGNvbnN0IENvbGxhdGlvblRhaWxvcmluZyAqdCwgVUVy
cm9yQ29kZSAmZXJyb3JDb2RlKTsKICAgICBVQm9vbCBpbml0TWF4RXhwYW5zaW9ucyhVRXJyb3JD
b2RlICZlcnJvckNvZGUpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRGYXN0TGF0aW5PcHRpb25zKENv
bGxhdGlvblNldHRpbmdzICZvd25lZFNldHRpbmdzKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdGltZXpvbmUuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdGlt
ZXpvbmUuaAppbmRleCBjMzM1NmM5NzM4YTI2MzAzNTI1ZWI0YjRiNDVjNzZmOTI3NDE1MjY2Li44
M2RlZTMxNzc4NGE4MTk5NjJkNDExOGY2YmYzOWZhZmRlZTI4MDgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3RpbWV6b25lLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29k
ZS90aW1lem9uZS5oCkBAIC0xLDUgKzEsNyBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNv
ZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93
d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qIENvcHly
aWdodCAoYykgMTk5Ny0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBv
cmF0aW9uCisqIENvcHlyaWdodCAoYykgMTk5Ny0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNz
IE1hY2hpbmVzIENvcnBvcmF0aW9uCiAqIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgogKgpAQCAtNjYsOCArNjgsOCBAQCBjbGFzcyBTdHJpbmdFbnVt
ZXJhdGlvbjsKICAqIFRpbWVab25lICp0eiA9IFRpbWVab25lOjpjcmVhdGVUaW1lWm9uZSgiQW1l
cmljYS9Mb3NfQW5nZWxlcyIpOwogICogPC9wcmU+CiAgKiBcaHRtbG9ubHk8L2Jsb2NrcXVvdGU+
XGVuZGh0bWxvbmx5Ci0gKiBZb3UgY2FuIHVzZSA8Y29kZT5nZXRBdmFpbGFibGVJRHM8L2NvZGU+
IG1ldGhvZCB0byBpdGVyYXRlIHRocm91Z2gKLSAqIGFsbCB0aGUgc3VwcG9ydGVkIHRpbWUgem9u
ZSBJRHMsIG9yIGdldENhbm9uaWNhbElEIG1ldGhvZCB0byBjaGVjaworICogWW91IGNhbiB1c2Ug
dGhlIDxjb2RlPmNyZWF0ZUVudW1lcmF0aW9uPC9jb2RlPiBtZXRob2QgdG8gaXRlcmF0ZSB0aHJv
dWdoCisgKiBhbGwgdGhlIHN1cHBvcnRlZCB0aW1lIHpvbmUgSURzLCBvciB0aGUgPGNvZGU+Z2V0
Q2Fub25pY2FsSUQ8L2NvZGU+IG1ldGhvZCB0byBjaGVjawogICogaWYgYSB0aW1lIHpvbmUgSUQg
aXMgc3VwcG9ydGVkIG9yIG5vdC4gIFlvdSBjYW4gdGhlbiBjaG9vc2UgYQogICogc3VwcG9ydGVk
IElEIHRvIGdldCBhIDxjb2RlPlRpbWVab25lPC9jb2RlPi4KICAqIElmIHRoZSB0aW1lIHpvbmUg
eW91IHdhbnQgaXMgbm90IHJlcHJlc2VudGVkIGJ5IG9uZSBvZiB0aGUKQEAgLTI3Myw3ICsyNzUs
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFVuaWNvZGVTdHJpbmcgVV9FWFBPUlQyIGdl
dEVxdWl2YWxlbnRJRChjb25zdCBVbmljb2RlU3RyaW5nJiBpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCk7CiAKLSNpZm5kZWYg
VV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2Yg
VGltZVpvbmUgZGV0ZWN0ZWQgZnJvbSB0aGUgY3VycmVudCBob3N0CiAgICAgICogc3lzdGVtIGNv
bmZpZ3VyYXRpb24uIE5vdGUgdGhhdCBJQ1U0QyBkb2VzIG5vdCBjaGFuZ2UgdGhlIGRlZmF1bHQK
QEAgLTI4NSwxMCArMjg2LDkgQEAgcHVibGljOgogICAgICAqCiAgICAgICogQHJldHVybiAgQSBu
ZXcgaW5zdGFuY2Ugb2YgVGltZVpvbmUgZGV0ZWN0ZWQgZnJvbSB0aGUgY3VycmVudCBob3N0IHN5
c3RlbQogICAgICAqICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCi0gICAgICogQGRyYWZ0IElDVSA1
NQorICAgICAqIEBzdGFibGUgSUNVIDU1CiAgICAgICovCiAgICAgc3RhdGljIFRpbWVab25lKiBV
X0VYUE9SVDIgZGV0ZWN0SG9zdFRpbWVab25lKCk7Ci0jZW5kaWYKIAogICAgIC8qKgogICAgICAq
IENyZWF0ZXMgYSBuZXcgY29weSBvZiB0aGUgZGVmYXVsdCBUaW1lWm9uZSBmb3IgdGhpcyBob3N0
LiBVbmxlc3MgdGhlIGRlZmF1bHQgdGltZQpAQCAtODYzLDcgKzg2Myw3IEBAIHByaXZhdGU6CiAg
ICAgICogQHBhcmFtIGlkIHpvbmUgaWQgc3RyaW5nCiAgICAgICogQHJldHVybiB0aGUgcG9pbnRl
ciBvZiB0aGUgSUQgcmVzb3VyY2UsIG9yIE5VTEwuCiAgICAgICovCi0gICAgc3RhdGljIGNvbnN0
IFVDaGFyKiBmaW5kSUQoY29uc3QgVW5pY29kZVN0cmluZyYgaWQpOworICAgIHN0YXRpYyBjb25z
dCBjaGFyMTZfdCogZmluZElEKGNvbnN0IFVuaWNvZGVTdHJpbmcmIGlkKTsKIAogICAgIC8qKgog
ICAgICAqIFJlc29sdmUgYSBsaW5rIGluIE9sc29uIHR6ZGF0YS4gIFdoZW4gdGhlIGdpdmVuIGlk
IGlzIGtub3duIGFuZCBpdCdzIG5vdCBhIGxpbmssCkBAIC04NzMsNyArODczLDcgQEAgcHJpdmF0
ZToKICAgICAgKiBAcGFyYW0gaWQgem9uZSBpZCBzdHJpbmcKICAgICAgKiBAcmV0dXJuIHRoZSBk
ZXJlZmVyZW5jZWQgem9uZSBvciBOVUxMCiAgICAgICovCi0gICAgc3RhdGljIGNvbnN0IFVDaGFy
KiBkZXJlZmVyT2xzb25MaW5rKGNvbnN0IFVuaWNvZGVTdHJpbmcmIGlkKTsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhcjE2X3QqIGRlcmVmZXJPbHNvbkxpbmsoY29uc3QgVW5pY29kZVN0cmluZyYgaWQp
OwogCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgcmVnaW9uIGNvZGUgYXNzb2NpYXRlZCB3
aXRoIHRoZSBnaXZlbiB6b25lLApAQCAtODgxLDcgKzg4MSw3IEBAIHByaXZhdGU6CiAgICAgICog
QHBhcmFtIGlkIHpvbmUgaWQgc3RyaW5nCiAgICAgICogQHJldHVybiB0aGUgcmVnaW9uIGFzc29j
aWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gem9uZQogICAgICAqLwotICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciogZ2V0UmVnaW9uKGNvbnN0IFVuaWNvZGVTdHJpbmcmIGlkKTsKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhcjE2X3QqIGdldFJlZ2lvbihjb25zdCBVbmljb2RlU3RyaW5nJiBpZCk7CiAKICAgcHVibGlj
OgogI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCkBAIC04OTMsNyArODkzLDcgQEAgcHJpdmF0
ZToKICAgICAgKiBAcmV0dXJuIHRoZSByZWdpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiB6
b25lCiAgICAgICogQGludGVybmFsCiAgICAgICovCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyKiBn
ZXRSZWdpb24oY29uc3QgVW5pY29kZVN0cmluZyYgaWQsIFVFcnJvckNvZGUmIHN0YXR1cyk7Cisg
ICAgc3RhdGljIGNvbnN0IGNoYXIxNl90KiBnZXRSZWdpb24oY29uc3QgVW5pY29kZVN0cmluZyYg
aWQsIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkg
Ki8KIAogICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS90bXVu
aXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdG11bml0LmgKaW5kZXggZTQxN2YzNTIyYmNl
YjNjNWNlZTZhYzNhNDFjMjRmZTZiNmFhYmMwNy4uZmE1OWYxMDQ3MzRiYWEzM2Y2Mjk5YWE3Zjc2
MmQzZjk5MDMyNmIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS90bXVuaXQu
aAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3RtdW5pdC5oCkBAIC0xLDcgKzEsOSBAQAor
Ly8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vu
c2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwK
IC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTQs
IEdvb2dsZSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQg
KgotICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE2LCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uLCAgICAgICAqCisgKiBH
b29nbGUsIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqLwogCkBAIC00
MSwxOCArNDMsMjQgQEAgcHVibGljOgogICAgICAgICBVVElNRVVOSVRfSE9VUiwKICAgICAgICAg
VVRJTUVVTklUX01JTlVURSwKICAgICAgICAgVVRJTUVVTklUX1NFQ09ORCwKKyNpZm5kZWYgVV9I
SURFX0RFUFJFQ0FURURfQVBJCisgICAgICAgIC8qKgorICAgICAgICAgKiBPbmUgbW9yZSB0aGFu
IHRoZSBoaWdoZXN0IG5vcm1hbCBVVGltZVVuaXRGaWVsZHMgdmFsdWUuCisgICAgICAgICAqIEBk
ZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwg
c2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAgICAgKi8KICAgICAgICAgVVRJTUVVTklUX0ZJ
RUxEX0NPVU5UCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAgIH07CiAKICAg
ICAvKioKICAgICAgKiBDcmVhdGUgSW5zdGFuY2UuCi0gICAgICogQHBhcmFtIHRpbWVVbml0Rmll
bGQgIHRpbWUgdW5pdCBmaWVsZCBiYXNlZCBvbiB3aGljaCB0aGUgaW5zdGFuY2UgCisgICAgICog
QHBhcmFtIHRpbWVVbml0RmllbGQgIHRpbWUgdW5pdCBmaWVsZCBiYXNlZCBvbiB3aGljaCB0aGUg
aW5zdGFuY2UKICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgaXMgY3JlYXRlZC4KLSAgICAg
KiBAcGFyYW0gc3RhdHVzICAgICAgICAgaW5wdXQtb3V0cHV0IGVycm9yIGNvZGUuIAorICAgICAq
IEBwYXJhbSBzdGF0dXMgICAgICAgICBpbnB1dC1vdXRwdXQgZXJyb3IgY29kZS4KICAgICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHRpbWVVbml0RmllbGQgaXMgaW52YWxpZCwKICAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICAgdGhlbiB0aGlzIHdpbGwgYmUgc2V0IHRvIFVfSUxM
RUdBTF9BUkdVTUVOVF9FUlJPUi4KICAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICAgYSBUaW1l
VW5pdCBpbnN0YW5jZQotICAgICAqIEBzdGFibGUgSUNVIDQuMiAKKyAgICAgKiBAc3RhYmxlIElD
VSA0LjIKICAgICAgKi8KICAgICBzdGF0aWMgVGltZVVuaXQqIFVfRVhQT1JUMiBjcmVhdGVJbnN0
YW5jZShVVGltZVVuaXRGaWVsZHMgdGltZVVuaXRGaWVsZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpOwpAQCAtNjAsMTkg
KzY4LDE5IEBAIHB1YmxpYzoKIAogICAgIC8qKgogICAgICAqIE92ZXJyaWRlIGNsb25lLgotICAg
ICAqIEBzdGFibGUgSUNVIDQuMiAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjIKICAgICAgKi8KICAg
ICB2aXJ0dWFsIFVPYmplY3QqIGNsb25lKCkgY29uc3Q7CiAKICAgICAvKioKICAgICAgKiBDb3B5
IG9wZXJhdG9yLgotICAgICAqIEBzdGFibGUgSUNVIDQuMiAKKyAgICAgKiBAc3RhYmxlIElDVSA0
LjIKICAgICAgKi8KICAgICBUaW1lVW5pdChjb25zdCBUaW1lVW5pdCYgb3RoZXIpOwogCiAgICAg
LyoqCiAgICAgICogQXNzaWdubWVudCBvcGVyYXRvci4KLSAgICAgKiBAc3RhYmxlIElDVSA0LjIg
CisgICAgICogQHN0YWJsZSBJQ1UgNC4yCiAgICAgICovCiAgICAgVGltZVVuaXQmIG9wZXJhdG9y
PShjb25zdCBUaW1lVW5pdCYgb3RoZXIpOwogCkBAIC04Miw3ICs5MCw3IEBAIHB1YmxpYzoKICAg
ICAgKiBAcmV0dXJuIFRoZSBjbGFzcyBJRCBmb3IgdGhpcyBvYmplY3QuIEFsbCBvYmplY3RzIG9m
IGEgZ2l2ZW4KICAgICAgKiBjbGFzcyBoYXZlIHRoZSBzYW1lIGNsYXNzIElELiAgT2JqZWN0cyBv
ZiBvdGhlciBjbGFzc2VzIGhhdmUKICAgICAgKiBkaWZmZXJlbnQgY2xhc3MgSURzLgotICAgICAq
IEBzdGFibGUgSUNVIDQuMiAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjIKICAgICAgKi8KICAgICB2
aXJ0dWFsIFVDbGFzc0lEIGdldER5bmFtaWNDbGFzc0lEKCkgY29uc3Q7CiAKQEAgLTkwLDcgKzk4
LDcgQEAgcHVibGljOgogICAgICAqIFJldHVybnMgdGhlIGNsYXNzIElEIGZvciB0aGlzIGNsYXNz
LiBUaGlzIGlzIHVzZWQgdG8gY29tcGFyZSB0bwogICAgICAqIHRoZSByZXR1cm4gdmFsdWUgb2Yg
Z2V0RHluYW1pY0NsYXNzSUQoKS4KICAgICAgKiBAcmV0dXJuIFRoZSBjbGFzcyBJRCBmb3IgYWxs
IG9iamVjdHMgb2YgdGhpcyBjbGFzcy4KLSAgICAgKiBAc3RhYmxlIElDVSA0LjIgCisgICAgICog
QHN0YWJsZSBJQ1UgNC4yCiAgICAgICovCiAgICAgc3RhdGljIFVDbGFzc0lEIFVfRVhQT1JUMiBn
ZXRTdGF0aWNDbGFzc0lEKCk7CiAKQEAgLTk4LDEzICsxMDYsMTMgQEAgcHVibGljOgogICAgIC8q
KgogICAgICAqIEdldCB0aW1lIHVuaXQgZmllbGQuCiAgICAgICogQHJldHVybiB0aW1lIHVuaXQg
ZmllbGQuCi0gICAgICogQHN0YWJsZSBJQ1UgNC4yIAorICAgICAqIEBzdGFibGUgSUNVIDQuMgog
ICAgICAqLwogICAgIFVUaW1lVW5pdEZpZWxkcyBnZXRUaW1lVW5pdEZpZWxkKCkgY29uc3Q7CiAK
ICAgICAvKioKICAgICAgKiBEZXN0cnVjdG9yLgotICAgICAqIEBzdGFibGUgSUNVIDQuMiAKKyAg
ICAgKiBAc3RhYmxlIElDVSA0LjIKICAgICAgKi8KICAgICB2aXJ0dWFsIH5UaW1lVW5pdCgpOwog
CkBAIC0xMTMsNyArMTIxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8qKgogICAgICAqIENvbnN0cnVj
dG9yCi0gICAgICogQGludGVybmFsIElDVSA0LjIgCisgICAgICogQGludGVybmFsIChwcml2YXRl
KQogICAgICAqLwogICAgIFRpbWVVbml0KFVUaW1lVW5pdEZpZWxkcyB0aW1lVW5pdEZpZWxkKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS90bXV0YW10LmggYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL3RtdXRhbXQuaAppbmRleCBiZDJiOGE0YTllMjEyODVjMTdiYjhlY2Ji
OTYyODA2NTg3MWU2ZmVlLi4yNzRiZmE2ZjIzZmIwZDk5Y2MyMTk0MzgxZGYwYTNmZDZmN2Y1MzNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3RtdXRhbXQuaAorKysgYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3RtdXRhbXQuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKICAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwLCBHb29nbGUsIElu
dGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdG11dGZtdC5oIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS90bXV0Zm10LmgKaW5kZXggNzI4ZmYxMzIxOWEwMTJkMWM4ODZlZTk4YmI4ZDhlYTE4M2Ni
ZDE4Yi4uOGYyNDU4NTlhNjIyYmFmYmZjMzQ1YjVjNmI5Y2VlY2FlNzBmODFmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS90bXV0Zm10LmgKKysrIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS90bXV0Zm10LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNCwgR29vZ2xlLCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uCkBAIC01MCw2ICs1Miw4IEBAIFVfTkFNRVNQ
QUNFX0JFR0lOCiBjbGFzcyBIYXNodGFibGU7CiBjbGFzcyBVVmVjdG9yOwogCitzdHJ1Y3QgVGlt
ZVVuaXRGb3JtYXRSZWFkU2luazsKKwogLyoqCiAgKiBGb3JtYXQgb3IgcGFyc2UgYSBUaW1lVW5p
dEFtb3VudCwgdXNpbmcgcGx1cmFsIHJ1bGVzIGZvciB0aGUgdW5pdHMgd2hlcmUgYXZhaWxhYmxl
LgogICoKQEAgLTIyNyw2ICsyMzEsNyBAQCBwcml2YXRlOgogICAgIC8vIFVUSU1FVU5JVF9ZRUFS
LgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBnZXRUaW1lVW5pdE5hbWUoVGltZVVuaXQ6OlVUaW1l
VW5pdEZpZWxkcyBmaWVsZCwgVUVycm9yQ29kZSYgc3RhdHVzKTsKIAorICAgIGZyaWVuZCBzdHJ1
Y3QgVGltZVVuaXRGb3JtYXRSZWFkU2luazsKIH07CiAKIGlubGluZSBVQm9vbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS90cmFuc2xpdC5oIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS90cmFuc2xpdC5oCmluZGV4IDIyZTFlMjRlNTAwZDlmMjA5Y2JjNThhY2NhOTUzNDMzMGI2
MGZkNDEuLmJjY2JhNTQ4MDI0MjQ2N2U2M2E4MmRjNzA0ZDFiYzkyNDdmMDc1NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdHJhbnNsaXQuaAorKysgYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3RyYW5zbGl0LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRl
cjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTog
aHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
ICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGlu
ZXMKQEAgLTEzMTcsNyArMTMxOSw3IEBAIGlubGluZSBpbnQzMl90IFRyYW5zbGl0ZXJhdG9yOjpn
ZXRNYXhpbXVtQ29udGV4dExlbmd0aCh2b2lkKSBjb25zdCB7CiBpbmxpbmUgdm9pZCBUcmFuc2xp
dGVyYXRvcjo6c2V0SUQoY29uc3QgVW5pY29kZVN0cmluZyYgaWQpIHsKICAgICBJRCA9IGlkOwog
ICAgIC8vIE5VTC10ZXJtaW5hdGUgdGhlIElEIHN0cmluZywgd2hpY2ggaXMgYSBub24tYWxpYXNl
ZCBjb3B5LgotICAgIElELmFwcGVuZCgoVUNoYXIpMCk7CisgICAgSUQuYXBwZW5kKChjaGFyMTZf
dCkwKTsKICAgICBJRC50cnVuY2F0ZShJRC5sZW5ndGgoKS0xKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS90emZtdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS90
emZtdC5oCmluZGV4IDI0ZjBlNDllYjc5MjUxZTRkYWEzNGNjMmU0YTNhNzJiMzRkMDRmMWMuLjcy
NGZmNGQ4NWJiMjY1Nzk2NjExZWVkYTRkMmNhNjg1NThmMmQ2OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdHpmbXQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3R6
Zm10LmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5j
LiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29y
cG9yYXRpb24gYW5kCisqIENvcHlyaWdodCAoQykgMjAxMS0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1
c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAogKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwpAQCAtMjMzLDE4ICsyMzUsMTUgQEAg
dHlwZWRlZiBlbnVtIFVUaW1lWm9uZUZvcm1hdFBhcnNlT3B0aW9uIHsKICAgICAgKiBieSBvdGhl
ciBzdHlsZXMuCiAgICAgICogQHN0YWJsZSBJQ1UgNTAKICAgICAgKi8KLSAgICBVVFpGTVRfUEFS
U0VfT1BUSU9OX0FMTF9TVFlMRVMgID0gMHgwMQotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCi0g
ICAgLAorICAgIFVUWkZNVF9QQVJTRV9PUFRJT05fQUxMX1NUWUxFUyAgPSAweDAxLAogICAgICAv
KioKICAgICAgICogV2hlbiBwYXJzaW5nIGEgdGltZSB6b25lIGRpc3BsYXkgbmFtZSBpbiBVVFpG
TVRfU1RZTEVfU1BFQ0lGSUNfU0hPUlQsCiAgICAgICAqIGxvb2sgZm9yIHRoZSBJQU5BIHR6IGRh
dGFiYXNlIGNvbXBhdGlibGUgem9uZSBhYmJyZXZpYXRpb25zIGluIGFkZGl0aW9uCiAgICAgICAq
IHRvIHRoZSBsb2NhbGl6ZWQgbmFtZXMgY29taW5nIGZyb20gdGhlIHtAbGluayBUaW1lWm9uZU5h
bWVzfSBjdXJyZW50bHkKICAgICAgICogdXNlZCBieSB0aGUge0BsaW5rIFRpbWVab25lRm9ybWF0
fS4gCi0gICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAg
ICovCiAgICAgVVRaRk1UX1BBUlNFX09QVElPTl9UWl9EQVRBQkFTRV9BQkJSRVZJQVRJT05TID0g
MHgwMgotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCiB9IFVUaW1lWm9uZUZvcm1hdFBh
cnNlT3B0aW9uOwogCiBVX0NERUNMX0VORApAQCAtOTQzLDcgKzk0Miw3IEBAIHByaXZhdGU6CiAg
ICAgICogQHBhcmFtIHBhcnNlZExlbiB0aGUgcGFyc2VkIGxlbmd0aCwgb3IgMCBvbiBmYWlsdXJl
LgogICAgICAqIEByZXR1cm4gdGhlIHBhcnNlZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzLgogICAg
ICAqLwotICAgIGludDMyX3QgcGFyc2VEZWZhdWx0T2Zmc2V0RmllbGRzKGNvbnN0IFVuaWNvZGVT
dHJpbmcmIHRleHQsIGludDMyX3Qgc3RhcnQsIFVDaGFyIHNlcGFyYXRvciwKKyAgICBpbnQzMl90
IHBhcnNlRGVmYXVsdE9mZnNldEZpZWxkcyhjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LCBpbnQz
Ml90IHN0YXJ0LCBjaGFyMTZfdCBzZXBhcmF0b3IsCiAgICAgICAgIGludDMyX3QmIHBhcnNlZExl
bikgY29uc3Q7CiAKICAgICAvKioKQEAgLTk4Myw3ICs5ODIsNyBAQCBwcml2YXRlOgogICAgICAq
IEBwYXJhbSBtYXhGaWVsZHMgVGhlIG1heGltdW0gZmllbGRzCiAgICAgICogQHJldHVybiBUaGUg
b2Zmc2V0IHN0cmluZwogICAgICAqLwotICAgIHN0YXRpYyBVbmljb2RlU3RyaW5nJiBmb3JtYXRP
ZmZzZXRXaXRoQXNjaWlEaWdpdHMoaW50MzJfdCBvZmZzZXQsIFVDaGFyIHNlcCwKKyAgICBzdGF0
aWMgVW5pY29kZVN0cmluZyYgZm9ybWF0T2Zmc2V0V2l0aEFzY2lpRGlnaXRzKGludDMyX3Qgb2Zm
c2V0LCBjaGFyMTZfdCBzZXAsCiAgICAgICAgIE9mZnNldEZpZWxkcyBtaW5GaWVsZHMsIE9mZnNl
dEZpZWxkcyBtYXhGaWVsZHMsIFVuaWNvZGVTdHJpbmcmIHJlc3VsdCk7CiAKICAgICAvKioKQEAg
LTEwMTMsNyArMTAxMiw3IEBAIHByaXZhdGU6CiAgICAgICogQHBhcmFtIG1heEZpZWxkcyBUaGUg
bWF4aW11bSBGaWVsZHMgdG8gYmUgcGFyc2VkCiAgICAgICogQHJldHVybiBQYXJzZWQgb2Zmc2V0
LCAwIG9yIHBvc2l0aXZlIG51bWJlci4KICAgICAgKi8KLSAgICBzdGF0aWMgaW50MzJfdCBwYXJz
ZUFzY2lpT2Zmc2V0RmllbGRzKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsIFBhcnNlUG9zaXRp
b24mIHBvcywgVUNoYXIgc2VwLAorICAgIHN0YXRpYyBpbnQzMl90IHBhcnNlQXNjaWlPZmZzZXRG
aWVsZHMoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwgUGFyc2VQb3NpdGlvbiYgcG9zLCBjaGFy
MTZfdCBzZXAsCiAgICAgICAgIE9mZnNldEZpZWxkcyBtaW5GaWVsZHMsIE9mZnNldEZpZWxkcyBt
YXhGaWVsZHMpOwogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3R6bmFtZXMuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdHpuYW1lcy5oCmluZGV4IDk1ODNk
ZWQwMjJmMmViMmI4MTA0YjEyNTVhMDJkMTY1N2U3ZTc4MTIuLjM5OTI2NWQ4NWFlNjZjYjhiODQ4
OWI1OGM1YTM1NWUwM2Y0NDY2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dHpuYW1lcy5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdHpuYW1lcy5oCkBAIC0xLDYg
KzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4K
Ky8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJp
Z2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qIENvcHlyaWdodCAoQykgMjAx
MS0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAor
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5l
cyBDb3Jwb3JhdGlvbiBhbmQKICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgogKi8KQEAgLTEzMyw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+VGltZVpvbmVOYW1lcygpOwogCiAgICAgLyoqCi0gICAgICogUmV0dXJuIHRydWUgaWYg
dGhlIGdpdmVuIFRpbWVab25lTmFtZXMgb2JqZWN0cyBhcmUgZW1hbnRpY2FsbHkgZXF1YWwuCisg
ICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIFRpbWVab25lTmFtZXMgb2JqZWN0cyBhcmUg
c2VtYW50aWNhbGx5IGVxdWFsLgogICAgICAqIEBwYXJhbSBvdGhlciB0aGUgb2JqZWN0IHRvIGJl
IGNvbXBhcmVkIHdpdGguCiAgICAgICogQHJldHVybiBSZXR1cm4gVFJVRSBpZiB0aGUgZ2l2ZW4g
Rm9ybWF0IG9iamVjdHMgYXJlIHNlbWFudGljYWxseSBlcXVhbC4KICAgICAgKiBAc3RhYmxlIElD
VSA1MApAQCAtMTY3LDcgKzE2OSw2IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgVGlt
ZVpvbmVOYW1lcyogVV9FWFBPUlQyIGNyZWF0ZUluc3RhbmNlKGNvbnN0IExvY2FsZSYgbG9jYWxl
LCBVRXJyb3JDb2RlJiBzdGF0dXMpOwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAv
KioKICAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIDxjb2RlPlRpbWVab25lTmFtZXM8L2Nv
ZGU+IGNvbnRhaW5pbmcgb25seSBzaG9ydCBzcGVjaWZpYwogICAgICAqIHpvbmUgbmFtZXMgKFNI
T1JUX1NUQU5EQVJEIGFuZCBTSE9SVF9EQVlMSUdIVCksCkBAIC0xNzYsMTAgKzE3Nyw5IEBAIHB1
YmxpYzoKICAgICAgKiBOb3RlOiBUaGUgaW5wdXQgbG9jYWxlIGlzIHVzZWQgZm9yIHJlc29sdmlu
ZyBhbWJpZ3VvdXMgbmFtZXMgKGUuZy4gIklTVCIgaXMgcGFyc2VkCiAgICAgICogYXMgSXNyYWVs
IFN0YW5kYXJkIFRpbWUgZm9yIElzcmFlbCwgd2hpbGUgaXQgaXMgcGFyc2VkIGFzIEluZGlhIFN0
YW5kYXJkIFRpbWUgZm9yCiAgICAgICogYWxsIG90aGVyIHJlZ2lvbnMpLiBUaGUgem9uZSBuYW1l
cyByZXR1cm5lZCBieSB0aGlzIGluc3RhbmNlIGFyZSBub3QgbG9jYWxpemVkLgotICAgICAqIEBk
cmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgICBzdGF0aWMg
VGltZVpvbmVOYW1lcyogVV9FWFBPUlQyIGNyZWF0ZVRaREJJbnN0YW5jZShjb25zdCBMb2NhbGUm
IGxvY2FsZSwgVUVycm9yQ29kZSYgc3RhdHVzKTsKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJ
ICovCiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIGFuIGVudW1lcmF0aW9uIG9mIGFsbCBhdmFp
bGFibGUgbWV0YSB6b25lIElEcy4KQEAgLTI5MCw2ICsyOTAsMTYgQEAgcHVibGljOgogICAgICAq
LwogICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyYgZ2V0RGlzcGxheU5hbWUoY29uc3QgVW5pY29k
ZVN0cmluZyYgdHpJRCwgVVRpbWVab25lTmFtZVR5cGUgdHlwZSwgVURhdGUgZGF0ZSwgVW5pY29k
ZVN0cmluZyYgbmFtZSkgY29uc3Q7CiAKKyAgICAvKioKKyAgICAgKiBAaW50ZXJuYWwgSUNVIGlu
dGVybmFsIG9ubHksIGZvciBzcGVjaWZpYyB1c2VycyBvbmx5IHVudGlsIHByb3Bvc2VkIHB1Ymxp
Y2x5LgorICAgICAqLworICAgIHZpcnR1YWwgdm9pZCBsb2FkQWxsRGlzcGxheU5hbWVzKFVFcnJv
ckNvZGUmIHN0YXR1cyk7CisKKyAgICAvKioKKyAgICAgKiBAaW50ZXJuYWwgSUNVIGludGVybmFs
IG9ubHksIGZvciBzcGVjaWZpYyB1c2VycyBvbmx5IHVudGlsIHByb3Bvc2VkIHB1YmxpY2x5Lgor
ICAgICAqLworICAgIHZpcnR1YWwgdm9pZCBnZXREaXNwbGF5TmFtZXMoY29uc3QgVW5pY29kZVN0
cmluZyYgdHpJRCwgY29uc3QgVVRpbWVab25lTmFtZVR5cGUgdHlwZXNbXSwgaW50MzJfdCBudW1U
eXBlcywgVURhdGUgZGF0ZSwgVW5pY29kZVN0cmluZyBkZXN0W10sIFVFcnJvckNvZGUmIHN0YXR1
cykgY29uc3Q7CisKICAgICAvKioKICAgICAgKiA8Y29kZT5NYXRjaEluZm9Db2xsZWN0aW9uPC9j
b2RlPiByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiB0aW1lIHpvbmUgbmFtZSBtYXRjaGVzIHVz
ZWQgYnkKICAgICAgKiB7QGxpbmsgVGltZVpvbmVOYW1lcyNmaW5kfS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvdHpydWxlLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3R6
cnVsZS5oCmluZGV4IGFmYTQwMTQ4ZDQyZDgyZWE0ODQxNTk3MTZlYzBiNDk0M2VlNTdmNzEuLjE2
NDdmZGE3MDNlZTY4N2U0MzNlMDc3M2U2OGYwNDdmNTRjZTIzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdHpydWxlLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS90
enJ1bGUuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJ
bmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVu
aWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAwOCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBD
b3Jwb3JhdGlvbiBhbmQgICAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS90
enRyYW5zLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3R6dHJhbnMuaAppbmRleCA5NGI4ZTkx
MjY3YTVjNmE5ZTkxZmVkZjk5YjE3YzcyYTg1NWNkM2ZiLi5hNDc2YzY4YzhmNzUxZmM3NGI3NDAz
Y2YwNDZjNmQyZGU5OWI1YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3R6
dHJhbnMuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3R6dHJhbnMuaApAQCAtMSwzICsx
LDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisv
LyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdo
dC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAwOCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAg
ICAgICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3ViaWRpLmggYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3ViaWRpLmgKaW5kZXggMjcwNDJlZDdmNGI5NGUyMDc4ZDE3NTQ3
NGIzYmUyYTlkYWYzZjkxMS4uZWYyMWYyNDIwNjY2Y2Q0ZGI0N2NkMWViYzUxNjJkZjZlYmExMWQx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91YmlkaS5oCisrKyBiL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdWJpZGkuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5k
IGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2Yg
dXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCiAqCkBAIC02LDcgKzgsNyBAQAogKgogKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CiAqICAgZmlsZSBuYW1lOiAgdWJpZGkuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAg
ZW5jb2Rpbmc6ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRl
bnRhdGlvbjo0CiAqCkBAIC03MTgsOSArNzIwLDEzIEBAIHR5cGVkZWYgZW51bSBVQmlEaVJlb3Jk
ZXJpbmdNb2RlIHsKICAgICAgICogPGNvZGU+VUJJRElfUkVPUkRFUl9OVU1CRVJTX1NQRUNJQUw8
L2NvZGU+IEJpZGkgYWxnb3JpdGhtLgogICAgICAgKiBAc3RhYmxlIElDVSAzLjYgKi8KICAgICBV
QklESV9SRU9SREVSX0lOVkVSU0VfRk9SX05VTUJFUlNfU1BFQ0lBTCwKLSAgICAvKiogTnVtYmVy
IG9mIHZhbHVlcyBmb3IgcmVvcmRlcmluZyBtb2RlLgotICAgICAgKiBAc3RhYmxlIElDVSAzLjYg
Ki8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogTnVtYmVy
IG9mIHZhbHVlcyBmb3IgcmVvcmRlcmluZyBtb2RlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1
OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQg
IzEyNDIwLgorICAgICAqLwogICAgIFVCSURJX1JFT1JERVJfQ09VTlQKKyNlbmRpZiAgLy8gVV9I
SURFX0RFUFJFQ0FURURfQVBJCiB9IFVCaURpUmVvcmRlcmluZ01vZGU7CiAKIC8qKgpAQCAtMTE5
MCwxMSArMTE5NiwxNCBAQCB1YmlkaV9zZXRDb250ZXh0KFVCaURpICpwQmlEaSwKICAqICAgICAg
ICBBIGxldmVsIG92ZXJyaWRlcyB0aGUgZGlyZWN0aW9uYWwgcHJvcGVydHkgb2YgaXRzIGNvcnJl
c3BvbmRpbmcKICAqICAgICAgICAoc2FtZSBpbmRleCkgY2hhcmFjdGVyIGlmIHRoZSBsZXZlbCBo
YXMgdGhlCiAgKiAgICAgICAgPGNvZGU+I1VCSURJX0xFVkVMX09WRVJSSURFPC9jb2RlPiBiaXQg
c2V0Ljxicj48YnI+Ci0gKiAgICAgICAgRXhjZXB0IGZvciB0aGF0IGJpdCwgaXQgbXVzdCBiZQor
ICogICAgICAgIEFzaWRlIGZyb20gdGhhdCBiaXQsIGl0IG11c3QgYmUKICAqICAgICAgICA8Y29k
ZT5wYXJhTGV2ZWw8PWVtYmVkZGluZ0xldmVsc1tdPD1VQklESV9NQVhfRVhQTElDSVRfTEVWRUw8
L2NvZGU+LAotICogICAgICAgIHdpdGggb25lIGV4Y2VwdGlvbjogYSBsZXZlbCBvZiB6ZXJvIG1h
eSBiZSBzcGVjaWZpZWQgZm9yIGEgcGFyYWdyYXBoCi0gKiAgICAgICAgc2VwYXJhdG9yIGV2ZW4g
aWYgPGNvZGU+cGFyYUxldmVsPjA8L2NvZGU+IHdoZW4gbXVsdGlwbGUgcGFyYWdyYXBocwotICog
ICAgICAgIGFyZSBzdWJtaXR0ZWQgaW4gdGhlIHNhbWUgY2FsbCB0byA8Y29kZT51YmlkaV9zZXRQ
YXJhKCk8L2NvZGU+Ljxicj48YnI+CisgKiAgICAgICAgZXhjZXB0IHRoYXQgbGV2ZWwgMCBpcyBh
bHdheXMgYWxsb3dlZC4KKyAqICAgICAgICBMZXZlbCAwIGZvciBhIHBhcmFncmFwaCBzZXBhcmF0
b3IgcHJldmVudHMgcmVvcmRlcmluZyBvZiBwYXJhZ3JhcGhzOworICogICAgICAgIHRoaXMgb25s
eSB3b3JrcyByZWxpYWJseSBpZiA8Y29kZT4jVUJJRElfTEVWRUxfT1ZFUlJJREU8L2NvZGU+Cisg
KiAgICAgICAgaXMgYWxzbyBzZXQgZm9yIHBhcmFncmFwaCBzZXBhcmF0b3JzLgorICogICAgICAg
IExldmVsIDAgZm9yIG90aGVyIGNoYXJhY3RlcnMgaXMgdHJlYXRlZCBhcyBhIHdpbGRjYXJkCisg
KiAgICAgICAgYW5kIGlzIGxpZnRlZCB1cCB0byB0aGUgcmVzb2x2ZWQgbGV2ZWwgb2YgdGhlIHN1
cnJvdW5kaW5nIHBhcmFncmFwaC48YnI+PGJyPgogICogICAgICAgIDxzdHJvbmc+Q2F1dGlvbjog
PC9zdHJvbmc+QSBjb3B5IG9mIHRoaXMgcG9pbnRlciwgbm90IG9mIHRoZSBsZXZlbHMsCiAgKiAg
ICAgICAgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIDxjb2RlPlVCaURpPC9jb2RlPiBvYmplY3Q7CiAg
KiAgICAgICAgdGhlIDxjb2RlPmVtYmVkZGluZ0xldmVsczwvY29kZT4gYXJyYXkgbXVzdCBub3Qg
YmUKQEAgLTE5NTksMTMgKzE5NjgsMTkgQEAgVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKIHVi
aWRpX2dldFJlc3VsdExlbmd0aChjb25zdCBVQmlEaSAqcEJpRGkpOwogCiBVX0NERUNMX0JFR0lO
CisKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCiAvKioKLSAqIHZhbHVlIHJldHVybmVk
IGJ5IDxjb2RlPlVCaURpQ2xhc3NDYWxsYmFjazwvY29kZT4gY2FsbGJhY2tzIHdoZW4KKyAqIFZh
bHVlIHJldHVybmVkIGJ5IDxjb2RlPlVCaURpQ2xhc3NDYWxsYmFjazwvY29kZT4gY2FsbGJhY2tz
IHdoZW4KICAqIHRoZXJlIGlzIG5vIG5lZWQgdG8gb3ZlcnJpZGUgdGhlIHN0YW5kYXJkIEJpZGkg
Y2xhc3MgZm9yIGEgZ2l2ZW4gY29kZSBwb2ludC4KKyAqCisgKiBUaGlzIGNvbnN0YW50IGlzIGRl
cHJlY2F0ZWQ7IHVzZSB1X2dldEludFByb3BlcnR5TWF4VmFsdWUoVUNIQVJfQklESV9DTEFTUykr
MSBpbnN0ZWFkLgorICoKICAqIEBzZWUgVUJpRGlDbGFzc0NhbGxiYWNrCi0gKiBAc3RhYmxlIElD
VSAzLjYKKyAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdl
IG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgogICovCiAjZGVmaW5lIFVfQklESV9D
TEFTU19ERUZBVUxUICBVX0NIQVJfRElSRUNUSU9OX0NPVU5UCisjZW5kaWYgIC8vIFVfSElERV9E
RVBSRUNBVEVEX0FQSQogCiAvKioKICAqIENhbGxiYWNrIHR5cGUgZGVjbGFyYXRpb24gZm9yIG92
ZXJyaWRpbmcgZGVmYXVsdCBCaWRpIGNsYXNzIHZhbHVlcyB3aXRoCkBAIC0xOTgxLDggKzE5OTYs
OCBAQCBVX0NERUNMX0JFR0lOCiAgKgogICogQHJldHVybiBUaGUgZGlyZWN0aW9uYWwgcHJvcGVy
dHkgLyBCaWRpIGNsYXNzIGZvciB0aGUgZ2l2ZW4gY29kZSBwb2ludAogICogICAgICAgICA8Y29k
ZT5jPC9jb2RlPiBpZiB0aGUgZGVmYXVsdCBjbGFzcyBoYXMgYmVlbiBvdmVycmlkZGVuLCBvcgot
ICogICAgICAgICA8Y29kZT4jVV9CSURJX0NMQVNTX0RFRkFVTFQ8L2NvZGU+IGlmIHRoZSBzdGFu
ZGFyZCBCaWRpIGNsYXNzIHZhbHVlCi0gKiAgICAgICAgIGZvciA8Y29kZT5jPC9jb2RlPiBpcyB0
byBiZSB1c2VkLgorICogICAgICAgICA8Y29kZT4jVV9CSURJX0NMQVNTX0RFRkFVTFQ9dV9nZXRJ
bnRQcm9wZXJ0eU1heFZhbHVlKFVDSEFSX0JJRElfQ0xBU1MpKzE8L2NvZGU+CisgKiAgICAgICAg
IGlmIHRoZSBzdGFuZGFyZCBCaWRpIGNsYXNzIHZhbHVlIGZvciA8Y29kZT5jPC9jb2RlPiBpcyB0
byBiZSB1c2VkLgogICogQHNlZSB1YmlkaV9zZXRDbGFzc0NhbGxiYWNrCiAgKiBAc2VlIHViaWRp
X2dldENsYXNzQ2FsbGJhY2sKICAqIEBzdGFibGUgSUNVIDMuNgpAQCAtMTk5NSw4ICsyMDEwLDgg
QEAgVV9DREVDTF9FTkQKIC8qKgogICogUmV0cmlldmUgdGhlIEJpZGkgY2xhc3MgZm9yIGEgZ2l2
ZW4gY29kZSBwb2ludC4KICAqIDxwPklmIGEgPGNvZGU+I1VCaURpQ2xhc3NDYWxsYmFjazwvY29k
ZT4gY2FsbGJhY2sgaXMgZGVmaW5lZCBhbmQgcmV0dXJucyBhCi0gKiB2YWx1ZSBvdGhlciB0aGFu
IDxjb2RlPiNVX0JJRElfQ0xBU1NfREVGQVVMVDwvY29kZT4sIHRoYXQgdmFsdWUgaXMgdXNlZDsK
LSAqIG90aGVyd2lzZSB0aGUgZGVmYXVsdCBjbGFzcyBkZXRlcm1pbmF0aW9uIG1lY2hhbmlzbSBp
cyBpbnZva2VkLjwvcD4KKyAqIHZhbHVlIG90aGVyIHRoYW4gPGNvZGU+I1VfQklESV9DTEFTU19E
RUZBVUxUPXVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShVQ0hBUl9CSURJX0NMQVNTKSsxPC9jb2Rl
PiwKKyAqIHRoYXQgdmFsdWUgaXMgdXNlZDsgb3RoZXJ3aXNlIHRoZSBkZWZhdWx0IGNsYXNzIGRl
dGVybWluYXRpb24gbWVjaGFuaXNtIGlzIGludm9rZWQuPC9wPgogICoKICAqIEBwYXJhbSBwQmlE
aSBpcyB0aGUgcGFyYWdyYXBoIDxjb2RlPlVCaURpPC9jb2RlPiBvYmplY3QuCiAgKgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91YnJrLmggYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3VicmsuaAppbmRleCA5YmRiNGQ1ZDlkZTMxODhlM2ZlZDcyZTM5ZWZlYjc1MmI1ZGE1YjA0
Li42MDAzMjhjNDljNjZiYzE5MzRiMGYxZTQxYjRmODI2ZmVhMmY1YTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3VicmsuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3VicmsuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJ
bmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVu
aWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qIENv
cHlyaWdodCAoQykgMTk5Ni0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENv
cnBvcmF0aW9uIGFuZCBvdGhlcnMuCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDE1LCBJbnRlcm5h
dGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCiAqIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCkBAIC00NSwxMCArNDcs
MjAgQEAKICAqIHdoZW4gbGluZS13cmFwcGluZy4gVGhlIG1lY2hhbmlzbSBjb3JyZWN0bHkgaGFu
ZGxlcyBwdW5jdHVhdGlvbiBhbmQKICAqIGh5cGhlbmF0ZWQgd29yZHMuCiAgKiA8cD4KKyAqIE5v
dGU6IFRoZSBsb2NhbGUga2V5d29yZCAibGIiIGNhbiBiZSB1c2VkIHRvIG1vZGlmeSBsaW5lIGJy
ZWFrCisgKiBiZWhhdmlvciBhY2NvcmRpbmcgdG8gdGhlIENTUyBsZXZlbCAzIGxpbmUtYnJlYWsg
b3B0aW9ucywgc2VlCisgKiA8aHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXRleHQvI2xpbmUt
YnJlYWtpbmc+LiBGb3IgZXhhbXBsZToKKyAqICJqYUBsYj1zdHJpY3QiLCAiemhAbGI9bG9vc2Ui
LgorICogPHA+CiAgKiBTZW50ZW5jZSBib3VuZGFyeSBhbmFseXNpcyBhbGxvd3Mgc2VsZWN0aW9u
IHdpdGggY29ycmVjdAogICogaW50ZXJwcmV0YXRpb24gb2YgcGVyaW9kcyB3aXRoaW4gbnVtYmVy
cyBhbmQgYWJicmV2aWF0aW9ucywgYW5kCiAgKiB0cmFpbGluZyBwdW5jdHVhdGlvbiBtYXJrcyBz
dWNoIGFzIHF1b3RhdGlvbiBtYXJrcyBhbmQgcGFyZW50aGVzZXMuCiAgKiA8cD4KKyAqIE5vdGU6
IFRoZSBsb2NhbGUga2V5d29yZCAic3MiIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSB1c2Ugb2YKKyAq
IHNlZ21lbnRhdGlvbiBzdXBwcmVzc2lvbiBkYXRhIChwcmV2ZW50aW5nIGJyZWFrcyBpbiBFbmds
aXNoIGFmdGVyCisgKiBhYmJyZXZpYXRpb25zIHN1Y2ggYXMgIk1yLiIgb3IgIkVzdC4iLCBmb3Ig
ZXhhbXBsZSksIGFzIGZvbGxvd3M6CisgKiAiZW5Ac3M9c3RhbmRhcmQiLgorICogPHA+CiAgKiBX
b3JkIGJvdW5kYXJ5IGFuYWx5c2lzIGlzIHVzZWQgYnkgc2VhcmNoIGFuZCByZXBsYWNlIGZ1bmN0
aW9ucywgYXMKICAqIHdlbGwgYXMgd2l0aGluIHRleHQgZWRpdGluZyBhcHBsaWNhdGlvbnMgdGhh
dCBhbGxvdyB0aGUgdXNlciB0bwogICogc2VsZWN0IHdvcmRzIHdpdGggYSBkb3VibGUgY2xpY2su
IFdvcmQgc2VsZWN0aW9uIHByb3ZpZGVzIGNvcnJlY3QKQEAgLTYwLDcgKzcyLDcgQEAKICAqICJF
eHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVycyIsIHdoaWNoIGFyZSBncm91cGluZ3Mgb2YgY29kZXBv
aW50cwogICogdGhhdCBzaG91bGQgYmUgdHJlYXRlZCBhcyBjaGFyYWN0ZXItbGlrZSB1bml0cyBm
b3IgbWFueSB0ZXh0IG9wZXJhdGlvbnMuCiAgKiBQbGVhc2Ugc2VlIFVuaWNvZGUgU3RhbmRhcmQg
QW5uZXggIzI5LCBVbmljb2RlIFRleHQgU2VnbWVudGF0aW9uLAotICogaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9yZXBvcnRzL3RyMjkvIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIAorICogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMjkvIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0
aW9uCiAgKiBvbiBncmFwaGVtZSBjbHVzdGVycyBhbmQgZ3VpZGVsaW5lcyBvbiB0aGVpciB1c2Uu
CiAgKiA8cD4KICAqIFRpdGxlIGJvdW5kYXJ5IGFuYWx5c2lzIGxvY2F0ZXMgYWxsIHBvc2l0aW9u
cywKQEAgLTEwNCw4ICsxMTYsMTIgQEAgdHlwZWRlZiBlbnVtIFVCcmVha0l0ZXJhdG9yVHlwZSB7
CiAgICAqIEBkZXByZWNhdGVkIElDVSAyLjggVXNlIHRoZSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGZv
ciB0aXRsZWNhc2luZyBmb3IgVW5pY29kZSA0IGFuZCBsYXRlci4KICAgICovCiAgIFVCUktfVElU
TEUgPSA0LAotI2VuZGlmIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwotICBVQlJLX0NPVU5U
ID0gNQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVC
cmVha0l0ZXJhdG9yVHlwZSB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51
bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4K
KyAgICAgKi8KKyAgICBVQlJLX0NPVU5UID0gNQorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRF
RF9BUEkKIH0gVUJyZWFrSXRlcmF0b3JUeXBlOwogCiAvKiogVmFsdWUgaW5kaWNhdGluZyBhbGwg
dGV4dCBib3VuZGFyaWVzIGhhdmUgYmVlbiByZXR1cm5lZC4KQEAgLTEyMCw3ICsxMzYsMTAgQEAg
dHlwZWRlZiBlbnVtIFVCcmVha0l0ZXJhdG9yVHlwZSB7CiAgKiAgd29yZCwgdG8gYWxsb3cgZm9y
IGZ1cnRoZXIgc3ViZGl2aXNpb25zIG9mIGEgY2F0ZWdvcnkgaW4gZnV0dXJlIHJlbGVhc2VzLgog
ICogIEFwcGxpY2F0aW9ucyBzaG91bGQgY2hlY2sgZm9yIHRhZyB2YWx1ZXMgZmFsbGluZyB3aXRo
aW4gdGhlIHJhbmdlLCByYXRoZXIKICAqICB0aGFuIGZvciBzaW5nbGUgaW5kaXZpZHVhbCB2YWx1
ZXMuCi0gKiAgQHN0YWJsZSBJQ1UgMi4yCisgKgorICogVGhlIG51bWVyaWMgdmFsdWVzIG9mIGFs
bCBvZiB0aGVzZSBjb25zdGFudHMgYXJlIHN0YWJsZSAod2lsbCBub3QgY2hhbmdlKS4KKyAqCisg
KiBAc3RhYmxlIElDVSAyLjIKICovCiB0eXBlZGVmIGVudW0gVVdvcmRCcmVhayB7CiAgICAgLyoq
IFRhZyB2YWx1ZSBmb3IgIndvcmRzIiB0aGF0IGRvIG5vdCBmaXQgaW50byBhbnkgb2Ygb3RoZXIg
Y2F0ZWdvcmllcy4KQEAgLTE1Myw3ICsxNzIsMTAgQEAgdHlwZWRlZiBlbnVtIFVXb3JkQnJlYWsg
ewogICogIHdvcmQsIHRvIGFsbG93IGZvciBmdXJ0aGVyIHN1YmRpdmlzaW9ucyBvZiBhIGNhdGVn
b3J5IGluIGZ1dHVyZSByZWxlYXNlcy4KICAqICBBcHBsaWNhdGlvbnMgc2hvdWxkIGNoZWNrIGZv
ciB0YWcgdmFsdWVzIGZhbGxpbmcgd2l0aGluIHRoZSByYW5nZSwgcmF0aGVyCiAgKiAgdGhhbiBm
b3Igc2luZ2xlIGluZGl2aWR1YWwgdmFsdWVzLgotICogIEBzdGFibGUgSUNVIDIuOAorICoKKyAq
IFRoZSBudW1lcmljIHZhbHVlcyBvZiBhbGwgb2YgdGhlc2UgY29uc3RhbnRzIGFyZSBzdGFibGUg
KHdpbGwgbm90IGNoYW5nZSkuCisgKgorICogQHN0YWJsZSBJQ1UgMi44CiAqLwogdHlwZWRlZiBl
bnVtIFVMaW5lQnJlYWtUYWcgewogICAgIC8qKiBUYWcgdmFsdWUgZm9yIHNvZnQgbGluZSBicmVh
a3MsIHBvc2l0aW9ucyBhdCB3aGljaCBhIGxpbmUgYnJlYWsKQEAgLTE3NSw3ICsxOTcsMTAgQEAg
dHlwZWRlZiBlbnVtIFVMaW5lQnJlYWtUYWcgewogICogIHNlbnRlbmNlLCB0byBhbGxvdyBmb3Ig
ZnVydGhlciBzdWJkaXZpc2lvbnMgb2YgYSBjYXRlZ29yeSBpbiBmdXR1cmUgcmVsZWFzZXMuCiAg
KiAgQXBwbGljYXRpb25zIHNob3VsZCBjaGVjayBmb3IgdGFnIHZhbHVlcyBmYWxsaW5nIHdpdGhp
biB0aGUgcmFuZ2UsIHJhdGhlcgogICogIHRoYW4gZm9yIHNpbmdsZSBpbmRpdmlkdWFsIHZhbHVl
cy4KLSAqICBAc3RhYmxlIElDVSAyLjgKKyAqCisgKiBUaGUgbnVtZXJpYyB2YWx1ZXMgb2YgYWxs
IG9mIHRoZXNlIGNvbnN0YW50cyBhcmUgc3RhYmxlICh3aWxsIG5vdCBjaGFuZ2UpLgorICoKKyAq
IEBzdGFibGUgSUNVIDIuOAogKi8KIHR5cGVkZWYgZW51bSBVU2VudGVuY2VCcmVha1RhZyB7CiAg
ICAgLyoqIFRhZyB2YWx1ZSBmb3IgZm9yIHNlbnRlbmNlcyAgZW5kaW5nIHdpdGggYSBzZW50ZW5j
ZSB0ZXJtaW5hdG9yCkBAIC0yMDIsOCArMjI3LDExIEBAIHR5cGVkZWYgZW51bSBVU2VudGVuY2VC
cmVha1RhZyB7CiAgKiBhbmQgc2VudGVuY2UgYnJlYWtzIGluIHRleHQuCiAgKiBAcGFyYW0gdHlw
ZSBUaGUgdHlwZSBvZiBVQnJlYWtJdGVyYXRvciB0byBvcGVuOiBvbmUgb2YgVUJSS19DSEFSQUNU
RVIsIFVCUktfV09SRCwKICAqIFVCUktfTElORSwgVUJSS19TRU5URU5DRQotICogQHBhcmFtIGxv
Y2FsZSBUaGUgbG9jYWxlIHNwZWNpZnlpbmcgdGhlIHRleHQtYnJlYWtpbmcgY29udmVudGlvbnMu
Ci0gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBiZSBpdGVyYXRlZCBvdmVyLgorICogQHBhcmFt
IGxvY2FsZSBUaGUgbG9jYWxlIHNwZWNpZnlpbmcgdGhlIHRleHQtYnJlYWtpbmcgY29udmVudGlv
bnMuIE5vdGUgdGhhdAorICogbG9jYWxlIGtleXMgc3VjaCBhcyAibGIiIGFuZCAic3MiIG1heSBi
ZSB1c2VkIHRvIG1vZGlmeSB0ZXh0IGJyZWFrIGJlaGF2aW9yLAorICogc2VlIGdlbmVyYWwgZGlz
Y3Vzc2lvbiBvZiBCcmVha0l0ZXJhdG9yIEMgQVBJLgorICogQHBhcmFtIHRleHQgVGhlIHRleHQg
dG8gYmUgaXRlcmF0ZWQgb3Zlci4gTWF5IGJlIG51bGwsIGluIHdoaWNoIGNhc2UgdWJya19zZXRU
ZXh0KCkgaXMKKyAqICAgICAgICB1c2VkIHRvIHNwZWNpZnkgdGhlIHRleHQgdG8gYmUgaXRlcmF0
ZWQuCiAgKiBAcGFyYW0gdGV4dExlbmd0aCBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGV4
dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgogICogQHBhcmFtIHN0YXR1cyBBIFVFcnJvckNv
ZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLgogICogQHJldHVybiBBIFVCcmVha0l0ZXJhdG9yIGZv
ciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KQEAgLTI0MCw2ICsyNjgsMzQgQEAgdWJya19vcGVuUnVs
ZXMoY29uc3QgVUNoYXIgICAgICpydWxlcywKICAgICAgICAgICAgICAgIFVQYXJzZUVycm9yICAg
ICAqcGFyc2VFcnIsCiAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICAgICAgKnN0YXR1cyk7CiAK
KyNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQorLyoqCisgKiBPcGVuIGEgbmV3IFVCcmVha0l0ZXJh
dG9yIGZvciBsb2NhdGluZyB0ZXh0IGJvdW5kYXJpZXMgdXNpbmcgcHJlY29tcGlsZWQgYmluYXJ5
IHJ1bGVzLgorICogT3BlbmluZyBhIFVCcmVha0l0ZXJhdG9yIHRoaXMgd2F5IGlzIHN1YnN0YW50
aWFsbHkgZmFzdGVyIHRoYW4gdXNpbmcgdWJya19vcGVuUnVsZXMuCisgKiBCaW5hcnkgcnVsZXMg
bWF5IGJlIG9idGFpbmVkIHVzaW5nIHVicmtfZ2V0QmluYXJ5UnVsZXMuIFRoZSBjb21waWxlZCBy
dWxlcyBhcmUgbm90CisgKiBjb21wYXRpYmxlIGFjcm9zcyBkaWZmZXJlbnQgbWFqb3IgdmVyc2lv
bnMgb2YgSUNVLCBub3IgYWNyb3NzIHBsYXRmb3JtcyBvZiBkaWZmZXJlbnQKKyAqIGVuZGlhbm5l
c3Mgb3IgZGlmZmVyZW50IGJhc2UgY2hhcmFjdGVyIHNldCBmYW1pbHkgKEFTQ0lJIHZzIEVCQ0RJ
QykuCisgKiBAcGFyYW0gYmluYXJ5UnVsZXMgQSBzZXQgb2YgY29tcGlsZWQgYmluYXJ5IHJ1bGVz
IHNwZWNpZnlpbmcgdGhlIHRleHQgYnJlYWtpbmcKKyAqICAgICAgICAgICAgICAgICAgICBjb252
ZW50aW9ucy4gT3duZXJzaGlwIG9mIHRoZSBzdG9yYWdlIGNvbnRhaW5pbmcgdGhlIGNvbXBpbGVk
CisgKiAgICAgICAgICAgICAgICAgICAgcnVsZXMgcmVtYWlucyB3aXRoIHRoZSBjYWxsZXIgb2Yg
dGhpcyBmdW5jdGlvbi4gVGhlIGNvbXBpbGVkCisgKiAgICAgICAgICAgICAgICAgICAgcnVsZXMg
bXVzdCBub3QgYmUgbW9kaWZpZWQgb3IgZGVsZXRlZCBkdXJpbmcgdGhlIGxpZmUgb2YgdGhlCisg
KiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaXRlcmF0b3IuCisgKiBAcGFyYW0gcnVsZXNMZW5n
dGggVGhlIGxlbmd0aCBvZiBiaW5hcnlSdWxlcyBpbiBieXRlczsgbXVzdCBiZSA+PSAwLgorICog
QHBhcmFtIHRleHQgICAgICAgIFRoZSB0ZXh0IHRvIGJlIGl0ZXJhdGVkIG92ZXIuICBNYXkgYmUg
bnVsbCwgaW4gd2hpY2ggY2FzZQorICogICAgICAgICAgICAgICAgICAgIHVicmtfc2V0VGV4dCgp
IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgdGV4dCB0byBiZSBpdGVyYXRlZC4KKyAqIEBwYXJhbSB0
ZXh0TGVuZ3RoICBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGV4dCwgb3IgLTEgaWYgbnVs
bC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyAgICAgIFBvaW50ZXIgdG8gVUVycm9yQ29k
ZSB0byByZWNlaXZlIGFueSBlcnJvcnMuCisgKiBAcmV0dXJuICAgICAgICAgICAgVUJyZWFrSXRl
cmF0b3IgZm9yIHRoZSBzcGVjaWZpZWQgcnVsZXMuCisgKiBAc2VlIHVicmtfZ2V0QmluYXJ5UnVs
ZXMKKyAqIEBkcmFmdCBJQ1UgNTkKKyAqLworVV9EUkFGVCBVQnJlYWtJdGVyYXRvciogVV9FWFBP
UlQyCit1YnJrX29wZW5CaW5hcnlSdWxlcyhjb25zdCB1aW50OF90ICpiaW5hcnlSdWxlcywgaW50
MzJfdCBydWxlc0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICogIHRl
eHQsIGludDMyX3QgdGV4dExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUg
KiAgIHN0YXR1cyk7CisKKyNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLworCiAvKioKICAq
IFRocmVhZCBzYWZlIGNsb25pbmcgb3BlcmF0aW9uCiAgKiBAcGFyYW0gYmkgaXRlcmF0b3IgdG8g
YmUgY2xvbmVkCkBAIC0zMDQsNyArMzYwLDExIEBAIFVfTkFNRVNQQUNFX0VORAogI2VuZGlmCiAK
IC8qKgotICogU2V0cyBhbiBleGlzdGluZyBpdGVyYXRvciB0byBwb2ludCB0byBhIG5ldyBwaWVj
ZSBvZiB0ZXh0CisgKiBTZXRzIGFuIGV4aXN0aW5nIGl0ZXJhdG9yIHRvIHBvaW50IHRvIGEgbmV3
IHBpZWNlIG9mIHRleHQuCisgKiBUaGUgYnJlYWsgaXRlcmF0b3IgcmV0YWlucyBhIHBvaW50ZXIg
dG8gdGhlIHN1cHBsaWVkIHRleHQuCisgKiBUaGUgY2FsbGVyIG11c3Qgbm90IG1vZGlmeSBvciBk
ZWxldGUgdGhlIHRleHQgd2hpbGUgdGhlIEJyZWFrSXRlcmF0b3IKKyAqIHJldGFpbnMgdGhlIHJl
ZmVyZW5jZS4KKyAqCiAgKiBAcGFyYW0gYmkgVGhlIGl0ZXJhdG9yIHRvIHVzZQogICogQHBhcmFt
IHRleHQgVGhlIHRleHQgdG8gYmUgc2V0CiAgKiBAcGFyYW0gdGV4dExlbmd0aCBUaGUgbGVuZ3Ro
IG9mIHRoZSB0ZXh0CkBAIC01MzUsNiArNTk1LDQwIEBAIHVicmtfcmVmcmVzaFVUZXh0KFVCcmVh
a0l0ZXJhdG9yICpiaSwKICAgICAgICAgICAgICAgICAgICAgICAgVVRleHQgICAgICAgICAgKnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICpzdGF0dXMpOwogCisK
KyNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQorLyoqCisgKiBHZXQgYSBjb21waWxlZCBiaW5hcnkg
dmVyc2lvbiBvZiB0aGUgcnVsZXMgc3BlY2lmeWluZyB0aGUgYmVoYXZpb3Igb2YgYSBVQnJlYWtJ
dGVyYXRvci4KKyAqIFRoZSBiaW5hcnkgcnVsZXMgbWF5IGJlIHVzZWQgd2l0aCB1YnJrX29wZW5C
aW5hcnlSdWxlcyB0byBvcGVuIGEgbmV3IFVCcmVha0l0ZXJhdG9yCisgKiBtb3JlIHF1aWNrbHkg
dGhhbiB1c2luZyB1YnJrX29wZW5SdWxlcy4gVGhlIGNvbXBpbGVkIHJ1bGVzIGFyZSBub3QgY29t
cGF0aWJsZSBhY3Jvc3MKKyAqIGRpZmZlcmVudCBtYWpvciB2ZXJzaW9ucyBvZiBJQ1UsIG5vciBh
Y3Jvc3MgcGxhdGZvcm1zIG9mIGRpZmZlcmVudCBlbmRpYW5uZXNzIG9yCisgKiBkaWZmZXJlbnQg
YmFzZSBjaGFyYWN0ZXIgc2V0IGZhbWlseSAoQVNDSUkgdnMgRUJDRElDKS4gU3VwcG9ydHMgcHJl
ZmxpZ2h0aW5nICh3aXRoCisgKiBiaW5hcnlSdWxlcz1OVUxMIGFuZCBydWxlc0NhcGFjaXR5PTAp
IHRvIGdldCB0aGUgcnVsZXMgbGVuZ3RoIHdpdGhvdXQgY29weWluZyB0aGVtIHRvCisgKiB0aGUg
YmluYXJ5UnVsZXMgYnVmZmVyLiBIb3dldmVyLCB3aGV0aGVyIHByZWZsaWdodGluZyBvciBub3Qs
IGlmIHRoZSBhY3R1YWwgbGVuZ3RoCisgKiBpcyBncmVhdGVyIHRoYW4gSU5UMzJfTUFYLCB0aGVu
IHRoZSBmdW5jdGlvbiByZXR1cm5zIDAgYW5kIHNldHMgKnN0YXR1cyB0bworICogVV9JTkRFWF9P
VVRPRkJPVU5EU19FUlJPUi4KKworICogQHBhcmFtIGJpICAgICAgICAgICAgVGhlIGJyZWFrIGl0
ZXJhdG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBiaW5hcnlSdWxlcyAgIEJ1ZmZlciB0byByZWNlaXZl
IHRoZSBjb21waWxlZCBiaW5hcnkgcnVsZXM7IHNldCB0byBOVUxMIGZvcgorICogICAgICAgICAg
ICAgICAgICAgICAgcHJlZmxpZ2h0aW5nLgorICogQHBhcmFtIHJ1bGVzQ2FwYWNpdHkgQ2FwYWNp
dHkgKGluIGJ5dGVzKSBvZiB0aGUgYmluYXJ5UnVsZXMgYnVmZmVyOyBzZXQgdG8gMCBmb3IKKyAq
ICAgICAgICAgICAgICAgICAgICAgIHByZWZsaWdodGluZy4gTXVzdCBiZSA+PSAwLgorICogQHBh
cmFtIHN0YXR1cyAgICAgICAgUG9pbnRlciB0byBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVy
cm9ycywgc3VjaCBhcworICogICAgICAgICAgICAgICAgICAgICAgVV9CVUZGRVJfT1ZFUkZMT1df
RVJST1IsIFVfSU5ERVhfT1VUT0ZCT1VORFNfRVJST1IsIG9yCisgKiAgICAgICAgICAgICAgICAg
ICAgICBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IuCisgKiBAcmV0dXJuICAgICAgICAgICAgICBU
aGUgYWN0dWFsIGJ5dGUgbGVuZ3RoIG9mIHRoZSBiaW5hcnkgcnVsZXMsIGlmIDw9IElOVDMyX01B
WDsKKyAqICAgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSAwLiBJZiBub3QgcHJlZmxpZ2h0
aW5nIGFuZCB0aGlzIGlzIGxhcmdlciB0aGFuCisgKiAgICAgICAgICAgICAgICAgICAgICBydWxl
c0NhcGFjaXR5LCAqc3RhdHVzIHdpbGwgYmUgc2V0IHRvIGFuIGVycm9yLgorICogQHNlZSB1YnJr
X29wZW5CaW5hcnlSdWxlcworICogQGRyYWZ0IElDVSA1OQorICovCitVX0RSQUZUIGludDMyX3Qg
VV9FWFBPUlQyCit1YnJrX2dldEJpbmFyeVJ1bGVzKFVCcmVha0l0ZXJhdG9yICpiaSwKKyAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqICAgICAgIGJpbmFyeVJ1bGVzLCBpbnQzMl90IHJ1bGVz
Q2FwYWNpdHksCisgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKiAgICBzdGF0dXMpOwor
CisjZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KKwogI2VuZGlmIC8qICNpZiAhVUNPTkZJ
R19OT19CUkVBS19JVEVSQVRJT04gKi8KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3VjYWwuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNhbC5oCmluZGV4
IDM2ODI4NjA3MDk5YTc2ZTE2OTMzOTkyYTc5NGNjZThhOTAwYmM2ZWUuLmM3NjVlNzg1OWY1OWY0
ODliN2Y2ZDRmMWJhOWQyNjNkMzQyZWNiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdWNhbC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNhbC5oCkBAIC0xLDMg
KzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4K
Ky8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJp
Z2h0Lmh0bWwKIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0IChDKSAx
OTk2LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5k
CkBAIC00MjMsMTAgKzQyNSwxMiBAQCBlbnVtIFVDYWxlbmRhckRhdGVGaWVsZHMgewogICAgKi8K
ICAgVUNBTF9JU19MRUFQX01PTlRILAogCi0gIC8qKgotICAgKiBGaWVsZCBjb3VudAotICAgKiBA
c3RhYmxlIElDVSAyLjYKLSAgICovCisgICAgLyogRG8gbm90IGNvbmRpdGlvbmFsaXplIHRoZSBm
b2xsb3dpbmcgd2l0aCAjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSSwKKyAgICAgKiBpdCBp
cyBuZWVkZWQgZm9yIGxheW91dCBvZiBDYWxlbmRhciwgRGF0ZUZvcm1hdCwgYW5kIG90aGVyIG9i
amVjdHMgKi8KKyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1h
bCBVQ2FsZW5kYXJEYXRlRmllbGRzIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBU
aGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEy
NDIwLgorICAgICAqLwogICBVQ0FMX0ZJRUxEX0NPVU5ULAogCiAgLyoqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3VjYXNlbWFwLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3VjYXNlbWFwLmgKaW5kZXggYjM3ZTE2NTg4Njk3ZjFhOTMwMTkxZWUzZGY4MTZjNjNiN2JkMzhj
MS4uNmIyNTNlM2Q2Mzg0NzVlNTM1MTc5MjgzNDY3OTE0ZjE4MGE2YTU1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS91Y2FzZW1hcC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdWNhc2VtYXAuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBV
bmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRw
Oi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgogKgpAQCAtNiw3ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBm
aWxlIG5hbWU6ICB1Y2FzZW1hcC5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNv
ZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0
aW9uOjQKICoKQEAgLTIwLDggKzIyLDkgQEAKICNkZWZpbmUgX19VQ0FTRU1BUF9IX18KIAogI2lu
Y2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCi0jaW5jbHVkZSAidW5pY29kZS91c3RyaW5nLmgiCiAj
aW5jbHVkZSAidW5pY29kZS9sb2NhbHBvaW50ZXIuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0cmlu
Z29wdGlvbnMuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3VzdHJpbmcuaCIKIAogLyoqCiAgKiBcZmls
ZQpAQCAtMTQyLDQ3ICsxNDUsNiBAQCB1Y2FzZW1hcF9zZXRMb2NhbGUoVUNhc2VNYXAgKmNzbSwg
Y29uc3QgY2hhciAqbG9jYWxlLCBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKIFVfU1RBQkxFIHZv
aWQgVV9FWFBPUlQyCiB1Y2FzZW1hcF9zZXRPcHRpb25zKFVDYXNlTWFwICpjc20sIHVpbnQzMl90
IG9wdGlvbnMsIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwogCi0vKioKLSAqIERvIG5vdCBsb3dl
cmNhc2Ugbm9uLWluaXRpYWwgcGFydHMgb2Ygd29yZHMgd2hlbiB0aXRsZWNhc2luZy4KLSAqIE9w
dGlvbiBiaXQgZm9yIHRpdGxlY2FzaW5nIEFQSXMgdGhhdCB0YWtlIGFuIG9wdGlvbnMgYml0IHNl
dC4KLSAqCi0gKiBCeSBkZWZhdWx0LCB0aXRsZWNhc2luZyB3aWxsIHRpdGxlY2FzZSB0aGUgZmly
c3QgY2FzZWQgY2hhcmFjdGVyCi0gKiBvZiBhIHdvcmQgYW5kIGxvd2VyY2FzZSBhbGwgb3RoZXIg
Y2hhcmFjdGVycy4KLSAqIFdpdGggdGhpcyBvcHRpb24sIHRoZSBvdGhlciBjaGFyYWN0ZXJzIHdp
bGwgbm90IGJlIG1vZGlmaWVkLgotICoKLSAqIEBzZWUgdWNhc2VtYXBfc2V0T3B0aW9ucwotICog
QHNlZSB1Y2FzZW1hcF90b1RpdGxlCi0gKiBAc2VlIHVjYXNlbWFwX3V0ZjhUb1RpdGxlCi0gKiBA
c2VlIFVuaWNvZGVTdHJpbmc6OnRvVGl0bGUKLSAqIEBzdGFibGUgSUNVIDMuOAotICovCi0jZGVm
aW5lIFVfVElUTEVDQVNFX05PX0xPV0VSQ0FTRSAweDEwMAotCi0vKioKLSAqIERvIG5vdCBhZGp1
c3QgdGhlIHRpdGxlY2FzaW5nIGluZGV4ZXMgZnJvbSBCcmVha0l0ZXJhdG9yOjpuZXh0KCkgaW5k
ZXhlczsKLSAqIHRpdGxlY2FzZSBleGFjdGx5IHRoZSBjaGFyYWN0ZXJzIGF0IGJyZWFrcyBmcm9t
IHRoZSBpdGVyYXRvci4KLSAqIE9wdGlvbiBiaXQgZm9yIHRpdGxlY2FzaW5nIEFQSXMgdGhhdCB0
YWtlIGFuIG9wdGlvbnMgYml0IHNldC4KLSAqCi0gKiBCeSBkZWZhdWx0LCB0aXRsZWNhc2luZyB3
aWxsIHRha2UgZWFjaCBicmVhayBpdGVyYXRvciBpbmRleCwKLSAqIGFkanVzdCBpdCBieSBsb29r
aW5nIGZvciB0aGUgbmV4dCBjYXNlZCBjaGFyYWN0ZXIsIGFuZCB0aXRsZWNhc2UgdGhhdCBvbmUu
Ci0gKiBPdGhlciBjaGFyYWN0ZXJzIGFyZSBsb3dlcmNhc2VkLgotICoKLSAqIFRoaXMgZm9sbG93
cyBVbmljb2RlIDQgJiA1IHNlY3Rpb24gMy4xMyBEZWZhdWx0IENhc2UgT3BlcmF0aW9uczoKLSAq
Ci0gKiBSMyAgdG9UaXRsZWNhc2UoWCk6IEZpbmQgdGhlIHdvcmQgYm91bmRhcmllcyBiYXNlZCBv
biBVbmljb2RlIFN0YW5kYXJkIEFubmV4Ci0gKiAjMjksICJUZXh0IEJvdW5kYXJpZXMuIiBCZXR3
ZWVuIGVhY2ggcGFpciBvZiB3b3JkIGJvdW5kYXJpZXMsIGZpbmQgdGhlIGZpcnN0Ci0gKiBjYXNl
ZCBjaGFyYWN0ZXIgRi4gSWYgRiBleGlzdHMsIG1hcCBGIHRvIGRlZmF1bHRfdGl0bGUoRik7IHRo
ZW4gbWFwIGVhY2gKLSAqIHN1YnNlcXVlbnQgY2hhcmFjdGVyIEMgdG8gZGVmYXVsdF9sb3dlcihD
KS4KLSAqCi0gKiBAc2VlIHVjYXNlbWFwX3NldE9wdGlvbnMKLSAqIEBzZWUgdWNhc2VtYXBfdG9U
aXRsZQotICogQHNlZSB1Y2FzZW1hcF91dGY4VG9UaXRsZQotICogQHNlZSBVbmljb2RlU3RyaW5n
Ojp0b1RpdGxlCi0gKiBAc2VlIFVfVElUTEVDQVNFX05PX0xPV0VSQ0FTRQotICogQHN0YWJsZSBJ
Q1UgMy44Ci0gKi8KLSNkZWZpbmUgVV9USVRMRUNBU0VfTk9fQlJFQUtfQURKVVNUTUVOVCAweDIw
MAotCiAjaWYgIVVDT05GSUdfTk9fQlJFQUtfSVRFUkFUSU9OCiAKIC8qKgpAQCAtMjQwLDcgKzIw
Miw3IEBAIHVjYXNlbWFwX3NldEJyZWFrSXRlcmF0b3IoVUNhc2VNYXAgKmNzbSwgVUJyZWFrSXRl
cmF0b3IgKml0ZXJUb0Fkb3B0LCBVRXJyb3JDb2RlCiAgKiBUaGUgc3RhbmRhcmQgdGl0bGVjYXNl
IGl0ZXJhdG9yIGZvciB0aGUgcm9vdCBsb2NhbGUgaW1wbGVtZW50cyB0aGUKICAqIGFsZ29yaXRo
bSBvZiBVbmljb2RlIFRSIDIxLgogICoKLSAqIFRoaXMgZnVuY3Rpb24gdXNlcyBvbmx5IHRoZSBz
ZXRVVGV4dCgpLCBmaXJzdCgpLCBuZXh0KCkgYW5kIGNsb3NlKCkgbWV0aG9kcyBvZiB0aGUKKyAq
IFRoaXMgZnVuY3Rpb24gdXNlcyBvbmx5IHRoZSBzZXRUZXh0KCksIGZpcnN0KCkgYW5kIG5leHQo
KSBtZXRob2RzIG9mIHRoZQogICogcHJvdmlkZWQgYnJlYWsgaXRlcmF0b3IuCiAgKgogICogVGhl
IHJlc3VsdCBtYXkgYmUgbG9uZ2VyIG9yIHNob3J0ZXIgdGhhbiB0aGUgb3JpZ2luYWwuCkBAIC0y
NTEsNyArMjEzLDcgQEAgdWNhc2VtYXBfc2V0QnJlYWtJdGVyYXRvcihVQ2FzZU1hcCAqY3NtLCBV
QnJlYWtJdGVyYXRvciAqaXRlclRvQWRvcHQsIFVFcnJvckNvZGUKICAqIEBwYXJhbSBkZXN0ICAg
ICAgQSBidWZmZXIgZm9yIHRoZSByZXN1bHQgc3RyaW5nLiBUaGUgcmVzdWx0IHdpbGwgYmUgTlVM
LXRlcm1pbmF0ZWQgaWYKICAqICAgICAgICAgICAgICAgICAgdGhlIGJ1ZmZlciBpcyBsYXJnZSBl
bm91Z2guCiAgKiAgICAgICAgICAgICAgICAgIFRoZSBjb250ZW50cyBpcyB1bmRlZmluZWQgaW4g
Y2FzZSBvZiBmYWlsdXJlLgotICogQHBhcmFtIGRlc3RDYXBhY2l0eSBUaGUgc2l6ZSBvZiB0aGUg
YnVmZmVyIChudW1iZXIgb2YgYnl0ZXMpLiBJZiBpdCBpcyAwLCB0aGVuCisgKiBAcGFyYW0gZGVz
dENhcGFjaXR5IFRoZSBzaXplIG9mIHRoZSBidWZmZXIgKG51bWJlciBvZiBVQ2hhcnMpLiBJZiBp
dCBpcyAwLCB0aGVuCiAgKiAgICAgICAgICAgICAgICAgIGRlc3QgbWF5IGJlIE5VTEwgYW5kIHRo
ZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdAogICog
ICAgICAgICAgICAgICAgICB3aXRob3V0IHdyaXRpbmcgYW55IG9mIHRoZSByZXN1bHQgc3RyaW5n
LgogICogQHBhcmFtIHNyYyAgICAgICBUaGUgb3JpZ2luYWwgc3RyaW5nLgpAQCAtMjcwLDcgKzIz
Miw3IEBAIHVjYXNlbWFwX3RvVGl0bGUoVUNhc2VNYXAgKmNzbSwKICAgICAgICAgICAgICAgICAg
Y29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAgICAgICAgICAgIFVF
cnJvckNvZGUgKnBFcnJvckNvZGUpOwogCi0jZW5kaWYKKyNlbmRpZiAgLy8gVUNPTkZJR19OT19C
UkVBS19JVEVSQVRJT04KIAogLyoqCiAgKiBMb3dlcmNhc2UgdGhlIGNoYXJhY3RlcnMgaW4gYSBV
VEYtOCBzdHJpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjYXQuaCBi
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNhdC5oCmluZGV4IGFkOWYwMzczYTMwZDc3Zjg1ZTk5
YjQxMDNkMDNmNTc2N2JlMzg1NjUuLjRkMWZmM2Y2YjI4ZDFlZjI5MzA3ODM0NGMyMjI1ZmJjNjlm
YjdjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNhdC5oCisrKyBiL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNhdC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBh
bmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBv
ZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNz
IE1hY2hpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjaGFyLmggYi9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3VjaGFyLmgKaW5kZXggMWQzYWUwZGQ0M2Y0MzVmYmYwMWVj
MmRlZTBlNTE2MzkyMWQ2ZTU1MS4uMzYxMzM3NGQ5YTQzYTVkZjdlOGYzMDJkYjYxZjNmYjI4MWU5
NGU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2hhci5oCisrKyBiL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNoYXIuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgotKiAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTYsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTI0LDYgKzI2LDcgQEAKICNkZWZpbmUg
VUNIQVJfSAogCiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKKyNpbmNsdWRlICJ1bmljb2Rl
L3N0cmluZ29wdGlvbnMuaCIKIAogVV9DREVDTF9CRUdJTgogCkBAIC0zOSw3ICs0Miw3IEBAIFVf
Q0RFQ0xfQkVHSU4KICAqIEBzZWUgdV9nZXRVbmljb2RlVmVyc2lvbgogICogQHN0YWJsZSBJQ1Ug
Mi4wCiAgKi8KLSNkZWZpbmUgVV9VTklDT0RFX1ZFUlNJT04gIjcuMCIKKyNkZWZpbmUgVV9VTklD
T0RFX1ZFUlNJT04gIjEwLjAiCiAKIC8qKgogICogXGZpbGUKQEAgLTE0Niw4ICsxNDksOSBAQCBV
X0NERUNMX0JFR0lOCiAgKgogICogVGhlIHByb3BlcnRpZXMgQVBJcyBhcmUgaW50ZW5kZWQgdG8g
cmVmbGVjdCBVbmljb2RlIHByb3BlcnRpZXMgYXMgZGVmaW5lZAogICogaW4gdGhlIFVuaWNvZGUg
Q2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIGFuZCBVbmljb2RlIFRlY2huaWNhbCBSZXBvcnRzIChV
VFIpLgotICogRm9yIGRldGFpbHMgYWJvdXQgdGhlIHByb3BlcnRpZXMgc2VlIGh0dHA6Ly93d3cu
dW5pY29kZS5vcmcvdWNkLyAuCi0gKiBGb3IgbmFtZXMgb2YgVW5pY29kZSBwcm9wZXJ0aWVzIHNl
ZSB0aGUgVUNEIGZpbGUgUHJvcGVydHlBbGlhc2VzLnR4dC4KKyAqCisgKiBGb3IgZGV0YWlscyBh
Ym91dCB0aGUgcHJvcGVydGllcyBzZWUKKyAqIFVBWCAjNDQ6IFVuaWNvZGUgQ2hhcmFjdGVyIERh
dGFiYXNlIChodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHI0NC8pLgogICoKICAqIElt
cG9ydGFudDogSWYgSUNVIGlzIGJ1aWx0IHdpdGggVUNEIGZpbGVzIGZyb20gVW5pY29kZSB2ZXJz
aW9ucyBiZWxvdywgZS5nLiwgMy4yLAogICogdGhlbiBwcm9wZXJ0aWVzIG1hcmtlZCB3aXRoICJu
ZXcgaW4gVW5pY29kZSAzLjIiIGFyZSBub3Qgb3Igbm90IGZ1bGx5IGF2YWlsYWJsZS4KQEAgLTM5
Nyw4ICs0MDEsNTggQEAgdHlwZWRlZiBlbnVtIFVQcm9wZXJ0eSB7CiAgICAgVUNIQVJfQ0hBTkdF
U19XSEVOX0NBU0VNQVBQRUQ9NTUsCiAgICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBDaGFuZ2VzX1do
ZW5fTkZLQ19DYXNlZm9sZGVkLiBAc3RhYmxlIElDVSA0LjQgKi8KICAgICBVQ0hBUl9DSEFOR0VT
X1dIRU5fTkZLQ19DQVNFRk9MREVEPTU2LAotICAgIC8qKiBPbmUgbW9yZSB0aGFuIHRoZSBsYXN0
IGNvbnN0YW50IGZvciBiaW5hcnkgVW5pY29kZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElDVSAyLjEg
Ki8KLSAgICBVQ0hBUl9CSU5BUllfTElNSVQ9NTcsCisgICAgLyoqCisgICAgICogQmluYXJ5IHBy
b3BlcnR5IEVtb2ppLgorICAgICAqIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMv
dHI1MS8jRW1vamlfUHJvcGVydGllcworICAgICAqCisgICAgICogQHN0YWJsZSBJQ1UgNTcKKyAg
ICAgKi8KKyAgICBVQ0hBUl9FTU9KST01NywKKyAgICAvKioKKyAgICAgKiBCaW5hcnkgcHJvcGVy
dHkgRW1vamlfUHJlc2VudGF0aW9uLgorICAgICAqIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L3JlcG9ydHMvdHI1MS8jRW1vamlfUHJvcGVydGllcworICAgICAqCisgICAgICogQHN0YWJsZSBJ
Q1UgNTcKKyAgICAgKi8KKyAgICBVQ0hBUl9FTU9KSV9QUkVTRU5UQVRJT049NTgsCisgICAgLyoq
CisgICAgICogQmluYXJ5IHByb3BlcnR5IEVtb2ppX01vZGlmaWVyLgorICAgICAqIFNlZSBodHRw
Oi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHI1MS8jRW1vamlfUHJvcGVydGllcworICAgICAq
CisgICAgICogQHN0YWJsZSBJQ1UgNTcKKyAgICAgKi8KKyAgICBVQ0hBUl9FTU9KSV9NT0RJRklF
Uj01OSwKKyAgICAvKioKKyAgICAgKiBCaW5hcnkgcHJvcGVydHkgRW1vamlfTW9kaWZpZXJfQmFz
ZS4KKyAgICAgKiBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyNTEvI0Vtb2pp
X1Byb3BlcnRpZXMKKyAgICAgKgorICAgICAqIEBzdGFibGUgSUNVIDU3CisgICAgICovCisgICAg
VUNIQVJfRU1PSklfTU9ESUZJRVJfQkFTRT02MCwKKyAgICAvKioKKyAgICAgKiBCaW5hcnkgcHJv
cGVydHkgRW1vamlfQ29tcG9uZW50LgorICAgICAqIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L3JlcG9ydHMvdHI1MS8jRW1vamlfUHJvcGVydGllcworICAgICAqCisgICAgICogQHN0YWJsZSBJ
Q1UgNjAKKyAgICAgKi8KKyAgICBVQ0hBUl9FTU9KSV9DT01QT05FTlQ9NjEsCisgICAgLyoqCisg
ICAgICogQmluYXJ5IHByb3BlcnR5IFJlZ2lvbmFsX0luZGljYXRvci4KKyAgICAgKiBAc3RhYmxl
IElDVSA2MAorICAgICAqLworICAgIFVDSEFSX1JFR0lPTkFMX0lORElDQVRPUj02MiwKKyAgICAv
KioKKyAgICAgKiBCaW5hcnkgcHJvcGVydHkgUHJlcGVuZGVkX0NvbmNhdGVuYXRpb25fTWFyay4K
KyAgICAgKiBAc3RhYmxlIElDVSA2MAorICAgICAqLworICAgIFVDSEFSX1BSRVBFTkRFRF9DT05D
QVRFTkFUSU9OX01BUks9NjMsCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8q
KgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIGJpbmFyeSBVbmlj
b2RlIHByb3BlcnRpZXMuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZh
bHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICov
CisgICAgVUNIQVJfQklOQVJZX0xJTUlULAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9B
UEkKIAogICAgIC8qKiBFbnVtZXJhdGVkIHByb3BlcnR5IEJpZGlfQ2xhc3MuCiAgICAgICAgIFNh
bWUgYXMgdV9jaGFyRGlyZWN0aW9uLCByZXR1cm5zIFVDaGFyRGlyZWN0aW9uIHZhbHVlcy4gQHN0
YWJsZSBJQ1UgMi4yICovCkBAIC00ODUsOCArNTM5LDEzIEBAIHR5cGVkZWYgZW51bSBVUHJvcGVy
dHkgewogICAgICAgICAoaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyOS8pCiAgICAg
ICAgIFJldHVybnMgVUJpZGlQYWlyZWRCcmFja2V0VHlwZSB2YWx1ZXMuIEBzdGFibGUgSUNVIDUy
ICovCiAgICAgVUNIQVJfQklESV9QQUlSRURfQlJBQ0tFVF9UWVBFPTB4MTAxNSwKLSAgICAvKiog
T25lIG1vcmUgdGhhbiB0aGUgbGFzdCBjb25zdGFudCBmb3IgZW51bWVyYXRlZC9pbnRlZ2VyIFVu
aWNvZGUgcHJvcGVydGllcy4gQHN0YWJsZSBJQ1UgMi4yICovCisjaWZuZGVmIFVfSElERV9ERVBS
RUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3Rh
bnQgZm9yIGVudW1lcmF0ZWQvaW50ZWdlciBVbmljb2RlIHByb3BlcnRpZXMuCisgICAgICogQGRl
cHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBz
ZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVUNIQVJfSU5UX0xJTUlUPTB4MTAx
NiwKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiAKICAgICAvKiogQml0bWFzayBw
cm9wZXJ0eSBHZW5lcmFsX0NhdGVnb3J5X01hc2suCiAgICAgICAgIFRoaXMgaXMgdGhlIEdlbmVy
YWxfQ2F0ZWdvcnkgcHJvcGVydHkgcmV0dXJuZWQgYXMgYSBiaXQgbWFzay4KQEAgLTQ5OSwxNiAr
NTU4LDI2IEBAIHR5cGVkZWYgZW51bSBVUHJvcGVydHkgewogICAgIFVDSEFSX0dFTkVSQUxfQ0FU
RUdPUllfTUFTSz0weDIwMDAsCiAgICAgLyoqIEZpcnN0IGNvbnN0YW50IGZvciBiaXQtbWFzayBV
bmljb2RlIHByb3BlcnRpZXMuIEBzdGFibGUgSUNVIDIuNCAqLwogICAgIFVDSEFSX01BU0tfU1RB
UlQ9VUNIQVJfR0VORVJBTF9DQVRFR09SWV9NQVNLLAotICAgIC8qKiBPbmUgbW9yZSB0aGFuIHRo
ZSBsYXN0IGNvbnN0YW50IGZvciBiaXQtbWFzayBVbmljb2RlIHByb3BlcnRpZXMuIEBzdGFibGUg
SUNVIDIuNCAqLworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAg
KiBPbmUgbW9yZSB0aGFuIHRoZSBsYXN0IGNvbnN0YW50IGZvciBiaXQtbWFzayBVbmljb2RlIHBy
b3BlcnRpZXMuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1h
eSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAg
VUNIQVJfTUFTS19MSU1JVD0weDIwMDEsCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQ
SQogCiAgICAgLyoqIERvdWJsZSBwcm9wZXJ0eSBOdW1lcmljX1ZhbHVlLgogICAgICAgICBDb3Jy
ZXNwb25kcyB0byB1X2dldE51bWVyaWNWYWx1ZS4gQHN0YWJsZSBJQ1UgMi40ICovCiAgICAgVUNI
QVJfTlVNRVJJQ19WQUxVRT0weDMwMDAsCiAgICAgLyoqIEZpcnN0IGNvbnN0YW50IGZvciBkb3Vi
bGUgVW5pY29kZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElDVSAyLjQgKi8KICAgICBVQ0hBUl9ET1VC
TEVfU1RBUlQ9VUNIQVJfTlVNRVJJQ19WQUxVRSwKLSAgICAvKiogT25lIG1vcmUgdGhhbiB0aGUg
bGFzdCBjb25zdGFudCBmb3IgZG91YmxlIFVuaWNvZGUgcHJvcGVydGllcy4gQHN0YWJsZSBJQ1Ug
Mi40ICovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9u
ZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIGRvdWJsZSBVbmljb2RlIHByb3BlcnRp
ZXMuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFu
Z2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVUNIQVJf
RE9VQkxFX0xJTUlUPTB4MzAwMSwKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiAK
ICAgICAvKiogU3RyaW5nIHByb3BlcnR5IEFnZS4KICAgICAgICAgQ29ycmVzcG9uZHMgdG8gdV9j
aGFyQWdlLiBAc3RhYmxlIElDVSAyLjQgKi8KQEAgLTU2MCw4ICs2MjksMTMgQEAgdHlwZWRlZiBl
bnVtIFVQcm9wZXJ0eSB7CiAgICAgLyoqIFN0cmluZyBwcm9wZXJ0eSBCaWRpX1BhaXJlZF9CcmFj
a2V0IChuZXcgaW4gVW5pY29kZSA2LjMpLgogICAgICAgICBDb3JyZXNwb25kcyB0byB1X2dldEJp
ZGlQYWlyZWRCcmFja2V0LiBAc3RhYmxlIElDVSA1MiAqLwogICAgIFVDSEFSX0JJRElfUEFJUkVE
X0JSQUNLRVQ9MHg0MDBELAotICAgIC8qKiBPbmUgbW9yZSB0aGFuIHRoZSBsYXN0IGNvbnN0YW50
IGZvciBzdHJpbmcgVW5pY29kZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElDVSAyLjQgKi8KKyNpZm5k
ZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0
aGUgbGFzdCBjb25zdGFudCBmb3Igc3RyaW5nIFVuaWNvZGUgcHJvcGVydGllcy4KKyAgICAgKiBA
ZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUs
IHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVQ0hBUl9TVFJJTkdfTElNSVQ9
MHg0MDBFLAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIAogICAgIC8qKiBNaXNj
ZWxsYW5lb3VzIHByb3BlcnR5IFNjcmlwdF9FeHRlbnNpb25zIChuZXcgaW4gVW5pY29kZSA2LjAp
LgogICAgICAgICBTb21lIGNoYXJhY3RlcnMgYXJlIGNvbW1vbmx5IHVzZWQgaW4gbXVsdGlwbGUg
c2NyaXB0cy4KQEAgLTU3MSw5ICs2NDUsMTQgQEAgdHlwZWRlZiBlbnVtIFVQcm9wZXJ0eSB7CiAg
ICAgVUNIQVJfU0NSSVBUX0VYVEVOU0lPTlM9MHg3MDAwLAogICAgIC8qKiBGaXJzdCBjb25zdGFu
dCBmb3IgVW5pY29kZSBwcm9wZXJ0aWVzIHdpdGggdW51c3VhbCB2YWx1ZSB0eXBlcy4gQHN0YWJs
ZSBJQ1UgNC42ICovCiAgICAgVUNIQVJfT1RIRVJfUFJPUEVSVFlfU1RBUlQ9VUNIQVJfU0NSSVBU
X0VYVEVOU0lPTlMsCi0gICAgLyoqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9y
IFVuaWNvZGUgcHJvcGVydGllcyB3aXRoIHVudXN1YWwgdmFsdWUgdHlwZXMuCi0gICAgICogQHN0
YWJsZSBJQ1UgNC42ICovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgor
ICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIFVuaWNvZGUgcHJvcGVy
dGllcyB3aXRoIHVudXN1YWwgdmFsdWUgdHlwZXMuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4
IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAj
MTI0MjAuCisgICAgICovCiAgICAgVUNIQVJfT1RIRVJfUFJPUEVSVFlfTElNSVQ9MHg3MDAxLAor
I2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKKwogICAgIC8qKiBSZXByZXNlbnRzIGEg
bm9uZXhpc3RlbnQgb3IgaW52YWxpZCBwcm9wZXJ0eSBvciBwcm9wZXJ0eSB2YWx1ZS4gQHN0YWJs
ZSBJQ1UgMi40ICovCiAgICAgVUNIQVJfSU5WQUxJRF9DT0RFID0gLTEKIH0gVVByb3BlcnR5OwpA
QCAtNjU0LDcgKzczMywxMyBAQCB0eXBlZGVmIGVudW0gVUNoYXJDYXRlZ29yeQogICAgIFVfSU5J
VElBTF9QVU5DVFVBVElPTiAgICAgPSAyOCwKICAgICAvKiogUGYgQHN0YWJsZSBJQ1UgMi4wICov
CiAgICAgVV9GSU5BTF9QVU5DVFVBVElPTiAgICAgICA9IDI5LAotICAgIC8qKiBPbmUgaGlnaGVy
IHRoYW4gdGhlIGxhc3QgZW51bSBVQ2hhckNhdGVnb3J5IGNvbnN0YW50LiBAc3RhYmxlIElDVSAy
LjAgKi8KKyAgICAvKioKKyAgICAgKiBPbmUgaGlnaGVyIHRoYW4gdGhlIGxhc3QgZW51bSBVQ2hh
ckNhdGVnb3J5IGNvbnN0YW50LgorICAgICAqIFRoaXMgbnVtZXJpYyB2YWx1ZSBpcyBzdGFibGUg
KHdpbGwgbm90IGNoYW5nZSksIHNlZQorICAgICAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcG9s
aWNpZXMvc3RhYmlsaXR5X3BvbGljeS5odG1sI1Byb3BlcnR5X1ZhbHVlCisgICAgICoKKyAgICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KICAgICBVX0NIQVJfQ0FURUdPUllfQ09VTlQKIH0g
VUNoYXJDYXRlZ29yeTsKIApAQCAtODI4LDggKzkxMywxNSBAQCB0eXBlZGVmIGVudW0gVUNoYXJE
aXJlY3Rpb24gewogICAgIFVfUklHSFRfVE9fTEVGVF9JU09MQVRFICAgICAgID0gMjEsCiAgICAg
LyoqIFBESSBAc3RhYmxlIElDVSA1MiAqLwogICAgIFVfUE9QX0RJUkVDVElPTkFMX0lTT0xBVEUg
ICAgID0gMjIsCi0gICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworI2lmbmRlZiBVX0hJREVfREVQ
UkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IFVD
aGFyRGlyZWN0aW9uIHZhbHVlLgorICAgICAqIFRoZSBoaWdoZXN0IHZhbHVlIGlzIGF2YWlsYWJs
ZSB2aWEgdV9nZXRJbnRQcm9wZXJ0eU1heFZhbHVlKFVDSEFSX0JJRElfQ0xBU1MpLgorICAgICAq
CisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ug
b3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVV9DSEFSX0RJ
UkVDVElPTl9DT1VOVAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVUNoYXJE
aXJlY3Rpb247CiAKIC8qKgpAQCAtODUxLDggKzk0MywxNSBAQCB0eXBlZGVmIGVudW0gVUJpZGlQ
YWlyZWRCcmFja2V0VHlwZSB7CiAgICAgVV9CUFRfT1BFTiwKICAgICAvKiogQ2xvc2UgcGFpcmVk
IGJyYWNrZXQuIEBzdGFibGUgSUNVIDUyICovCiAgICAgVV9CUFRfQ0xPU0UsCi0gICAgLyoqIEBz
dGFibGUgSUNVIDUyICovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgor
ICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVCaWRpUGFpcmVkQnJhY2tl
dFR5cGUgdmFsdWUuCisgICAgICogVGhlIGhpZ2hlc3QgdmFsdWUgaXMgYXZhaWxhYmxlIHZpYSB1
X2dldEludFByb3BlcnR5TWF4VmFsdWUoVUNIQVJfQklESV9QQUlSRURfQlJBQ0tFVF9UWVBFKS4K
KyAgICAgKgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkg
Y2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwogICAgIFVf
QlBUX0NPVU5UIC8qIDMgKi8KKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9IFVC
aWRpUGFpcmVkQnJhY2tldFR5cGU7CiAKIC8qKgpAQCAtMTE4Myw3ICsxMjgyLDcgQEAgZW51bSBV
QmxvY2tDb2RlIHsKICAgICAgKiBVbmljb2RlIDQuMC4xIHJlbmFtZXMgdGhlICJDeXJpbGxpYyBT
dXBwbGVtZW50YXJ5IiBibG9jayB0byAiQ3lyaWxsaWMgU3VwcGxlbWVudCIuCiAgICAgICogQHN0
YWJsZSBJQ1UgMi4yCiAgICAgICovCi0gICAgVUJMT0NLX0NZUklMTElDX1NVUFBMRU1FTlRBUlkg
PSBVQkxPQ0tfQ1lSSUxMSUNfU1VQUExFTUVOVCwgCisgICAgVUJMT0NLX0NZUklMTElDX1NVUFBM
RU1FTlRBUlkgPSBVQkxPQ0tfQ1lSSUxMSUNfU1VQUExFTUVOVCwKICAgICAvKiogQHN0YWJsZSBJ
Q1UgMi4yICovCiAgICAgVUJMT0NLX1RBR0FMT0cgPSA5OCwgLypbMTcwMF0qLwogICAgIC8qKiBA
c3RhYmxlIElDVSAyLjIgKi8KQEAgLTE1MTksOCArMTYxOCw4MCBAQCBlbnVtIFVCbG9ja0NvZGUg
ewogICAgIC8qKiBAc3RhYmxlIElDVSA1NCAqLwogICAgIFVCTE9DS19XQVJBTkdfQ0lUSSA9IDI1
MiwgLypbMTE4QTBdKi8KIAotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KLSAgICBVQkxPQ0tf
Q09VTlQgPSAyNTMsCisgICAgLyogTmV3IGJsb2NrcyBpbiBVbmljb2RlIDguMCAqLworCisgICAg
LyoqIEBzdGFibGUgSUNVIDU2ICovCisgICAgVUJMT0NLX0FIT00gPSAyNTMsIC8qWzExNzAwXSov
CisgICAgLyoqIEBzdGFibGUgSUNVIDU2ICovCisgICAgVUJMT0NLX0FOQVRPTElBTl9ISUVST0dM
WVBIUyA9IDI1NCwgLypbMTQ0MDBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTYgKi8KKyAgICBV
QkxPQ0tfQ0hFUk9LRUVfU1VQUExFTUVOVCA9IDI1NSwgLypbQUI3MF0qLworICAgIC8qKiBAc3Rh
YmxlIElDVSA1NiAqLworICAgIFVCTE9DS19DSktfVU5JRklFRF9JREVPR1JBUEhTX0VYVEVOU0lP
Tl9FID0gMjU2LCAvKlsyQjgyMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSA1NiAqLworICAgIFVC
TE9DS19FQVJMWV9EWU5BU1RJQ19DVU5FSUZPUk0gPSAyNTcsIC8qWzEyNDgwXSovCisgICAgLyoq
IEBzdGFibGUgSUNVIDU2ICovCisgICAgVUJMT0NLX0hBVFJBTiA9IDI1OCwgLypbMTA4RTBdKi8K
KyAgICAvKiogQHN0YWJsZSBJQ1UgNTYgKi8KKyAgICBVQkxPQ0tfTVVMVEFOSSA9IDI1OSwgLypb
MTEyODBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTYgKi8KKyAgICBVQkxPQ0tfT0xEX0hVTkdB
UklBTiA9IDI2MCwgLypbMTBDODBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTYgKi8KKyAgICBV
QkxPQ0tfU1VQUExFTUVOVEFMX1NZTUJPTFNfQU5EX1BJQ1RPR1JBUEhTID0gMjYxLCAvKlsxRjkw
MF0qLworICAgIC8qKiBAc3RhYmxlIElDVSA1NiAqLworICAgIFVCTE9DS19TVVRUT05fU0lHTldS
SVRJTkcgPSAyNjIsIC8qWzFEODAwXSovCisKKyAgICAvKiBOZXcgYmxvY2tzIGluIFVuaWNvZGUg
OS4wICovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgNTggKi8KKyAgICBVQkxPQ0tfQURMQU0gPSAy
NjMsIC8qWzFFOTAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVUJMT0NLX0JI
QUlLU1VLSSA9IDI2NCwgLypbMTFDMDBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTggKi8KKyAg
ICBVQkxPQ0tfQ1lSSUxMSUNfRVhURU5ERURfQyA9IDI2NSwgLypbMUM4MF0qLworICAgIC8qKiBA
c3RhYmxlIElDVSA1OCAqLworICAgIFVCTE9DS19HTEFHT0xJVElDX1NVUFBMRU1FTlQgPSAyNjYs
IC8qWzFFMDAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVUJMT0NLX0lERU9H
UkFQSElDX1NZTUJPTFNfQU5EX1BVTkNUVUFUSU9OID0gMjY3LCAvKlsxNkZFMF0qLworICAgIC8q
KiBAc3RhYmxlIElDVSA1OCAqLworICAgIFVCTE9DS19NQVJDSEVOID0gMjY4LCAvKlsxMUM3MF0q
LworICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAgIFVCTE9DS19NT05HT0xJQU5fU1VQUExF
TUVOVCA9IDI2OSwgLypbMTE2NjBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTggKi8KKyAgICBV
QkxPQ0tfTkVXQSA9IDI3MCwgLypbMTE0MDBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTggKi8K
KyAgICBVQkxPQ0tfT1NBR0UgPSAyNzEsIC8qWzEwNEIwXSovCisgICAgLyoqIEBzdGFibGUgSUNV
IDU4ICovCisgICAgVUJMT0NLX1RBTkdVVCA9IDI3MiwgLypbMTcwMDBdKi8KKyAgICAvKiogQHN0
YWJsZSBJQ1UgNTggKi8KKyAgICBVQkxPQ0tfVEFOR1VUX0NPTVBPTkVOVFMgPSAyNzMsIC8qWzE4
ODAwXSovCisKKyAgICAvLyBOZXcgYmxvY2tzIGluIFVuaWNvZGUgMTAuMAorCisgICAgLyoqIEBz
dGFibGUgSUNVIDYwICovCisgICAgVUJMT0NLX0NKS19VTklGSUVEX0lERU9HUkFQSFNfRVhURU5T
SU9OX0YgPSAyNzQsIC8qWzJDRUIwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDYwICovCisgICAg
VUJMT0NLX0tBTkFfRVhURU5ERURfQSA9IDI3NSwgLypbMUIxMDBdKi8KKyAgICAvKiogQHN0YWJs
ZSBJQ1UgNjAgKi8KKyAgICBVQkxPQ0tfTUFTQVJBTV9HT05ESSA9IDI3NiwgLypbMTFEMDBdKi8K
KyAgICAvKiogQHN0YWJsZSBJQ1UgNjAgKi8KKyAgICBVQkxPQ0tfTlVTSFUgPSAyNzcsIC8qWzFC
MTcwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDYwICovCisgICAgVUJMT0NLX1NPWU9NQk8gPSAy
NzgsIC8qWzExQTUwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDYwICovCisgICAgVUJMT0NLX1NZ
UklBQ19TVVBQTEVNRU5UID0gMjc5LCAvKlswODYwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDYw
ICovCisgICAgVUJMT0NLX1pBTkFCQVpBUl9TUVVBUkUgPSAyODAsIC8qWzExQTAwXSovCisKKyNp
Zm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhh
biB0aGUgaGlnaGVzdCBub3JtYWwgVUJsb2NrQ29kZSB2YWx1ZS4KKyAgICAgKiBUaGUgaGlnaGVz
dCB2YWx1ZSBpcyBhdmFpbGFibGUgdmlhIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShVQ0hBUl9C
TE9DSykuCisgICAgICoKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFs
dWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8K
KyAgICBVQkxPQ0tfQ09VTlQgPSAyODEsCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQ
SQogCiAgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwogICAgIFVCTE9DS19JTlZBTElEX0NPREU9
LTEKQEAgLTE1NDksNyArMTcyMCwxNSBAQCB0eXBlZGVmIGVudW0gVUVhc3RBc2lhbldpZHRoIHsK
ICAgICBVX0VBX0ZVTExXSURUSCwgLypbRl0qLwogICAgIFVfRUFfTkFSUk9XLCAgICAvKltOYV0q
LwogICAgIFVfRUFfV0lERSwgICAgICAvKltXXSovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVE
X0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVF
YXN0QXNpYW5XaWR0aCB2YWx1ZS4KKyAgICAgKiBUaGUgaGlnaGVzdCB2YWx1ZSBpcyBhdmFpbGFi
bGUgdmlhIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShVQ0hBUl9FQVNUX0FTSUFOX1dJRFRIKS4K
KyAgICAgKgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkg
Y2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwogICAgIFVf
RUFfQ09VTlQKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9IFVFYXN0QXNpYW5X
aWR0aDsKIAogLyoqCkBAIC0xNTY2LDcgKzE3NDUsNyBAQCB0eXBlZGVmIGVudW0gVUVhc3RBc2lh
bldpZHRoIHsKIHR5cGVkZWYgZW51bSBVQ2hhck5hbWVDaG9pY2UgewogICAgIC8qKiBVbmljb2Rl
IGNoYXJhY3RlciBuYW1lIChOYW1lIHByb3BlcnR5KS4gQHN0YWJsZSBJQ1UgMi4wICovCiAgICAg
VV9VTklDT0RFX0NIQVJfTkFNRSwKLSNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJIAorI2lm
bmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgICAvKioKICAgICAgKiBUaGUgVW5pY29kZV8x
X05hbWUgcHJvcGVydHkgdmFsdWUgd2hpY2ggaXMgb2YgbGl0dGxlIHByYWN0aWNhbCB2YWx1ZS4K
ICAgICAgKiBCZWdpbm5pbmcgd2l0aCBJQ1UgNDksIElDVSBBUElzIHJldHVybiBhbiBlbXB0eSBz
dHJpbmcgZm9yIHRoaXMgbmFtZSBjaG9pY2UuCkBAIC0xNTc4LDggKzE3NTcsMTMgQEAgdHlwZWRl
ZiBlbnVtIFVDaGFyTmFtZUNob2ljZSB7CiAgICAgVV9FWFRFTkRFRF9DSEFSX05BTUUgPSBVX1VO
SUNPREVfQ0hBUl9OQU1FKzIsCiAgICAgLyoqIENvcnJlY3RlZCBuYW1lIGZyb20gTmFtZUFsaWFz
ZXMudHh0LiBAc3RhYmxlIElDVSA0LjQgKi8KICAgICBVX0NIQVJfTkFNRV9BTElBUywKLSAgICAv
KiogQHN0YWJsZSBJQ1UgMi4wICovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAg
IC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVDaGFyTmFtZUNo
b2ljZSB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUg
bWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAg
ICBVX0NIQVJfTkFNRV9DSE9JQ0VfQ09VTlQKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURf
QVBJCiB9IFVDaGFyTmFtZUNob2ljZTsKIAogLyoqCkBAIC0xNTk4LDcgKzE3ODIsMTMgQEAgdHlw
ZWRlZiBlbnVtIFVDaGFyTmFtZUNob2ljZSB7CiB0eXBlZGVmIGVudW0gVVByb3BlcnR5TmFtZUNo
b2ljZSB7CiAgICAgVV9TSE9SVF9QUk9QRVJUWV9OQU1FLAogICAgIFVfTE9OR19QUk9QRVJUWV9O
QU1FLAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUg
bW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVUHJvcGVydHlOYW1lQ2hvaWNlIHZhbHVlLgor
ICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92
ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwogICAgIFVfUFJPUEVSVFlf
TkFNRV9DSE9JQ0VfQ09VTlQKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9IFVQ
cm9wZXJ0eU5hbWVDaG9pY2U7CiAKIC8qKgpAQCAtMTYzMiw3ICsxODIyLDE1IEBAIHR5cGVkZWYg
ZW51bSBVRGVjb21wb3NpdGlvblR5cGUgewogICAgIFVfRFRfU1VQRVIsICAgICAgICAgICAgIC8q
W3N1cF0qLwogICAgIFVfRFRfVkVSVElDQUwsICAgICAgICAgIC8qW3ZlcnRdKi8KICAgICBVX0RU
X1dJREUsICAgICAgICAgICAgICAvKlt3aWRlXSovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVE
X0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVE
ZWNvbXBvc2l0aW9uVHlwZSB2YWx1ZS4KKyAgICAgKiBUaGUgaGlnaGVzdCB2YWx1ZSBpcyBhdmFp
bGFibGUgdmlhIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShVQ0hBUl9ERUNPTVBPU0lUSU9OX1RZ
UEUpLgorICAgICAqCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVl
IG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAg
ICAgVV9EVF9DT1VOVCAvKiAxOCAqLworI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkK
IH0gVURlY29tcG9zaXRpb25UeXBlOwogCiAvKioKQEAgLTE2NTQsNyArMTg1MiwxNSBAQCB0eXBl
ZGVmIGVudW0gVUpvaW5pbmdUeXBlIHsKICAgICBVX0pUX0xFRlRfSk9JTklORywgICAgICAvKltM
XSovCiAgICAgVV9KVF9SSUdIVF9KT0lOSU5HLCAgICAgLypbUl0qLwogICAgIFVfSlRfVFJBTlNQ
QVJFTlQsICAgICAgIC8qW1RdKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAg
LyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVUpvaW5pbmdUeXBl
IHZhbHVlLgorICAgICAqIFRoZSBoaWdoZXN0IHZhbHVlIGlzIGF2YWlsYWJsZSB2aWEgdV9nZXRJ
bnRQcm9wZXJ0eU1heFZhbHVlKFVDSEFSX0pPSU5JTkdfVFlQRSkuCisgICAgICoKKyAgICAgKiBA
ZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUs
IHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVX0pUX0NPVU5UIC8qIDYgKi8K
KyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9IFVKb2luaW5nVHlwZTsKIAogLyoq
CkBAIC0xNzU3LDcgKzE5NjMsMzEgQEAgdHlwZWRlZiBlbnVtIFVKb2luaW5nR3JvdXAgewogICAg
IFVfSkdfTUFOSUNIQUVBTl9ZT0RILCAgLyoqPCBAc3RhYmxlIElDVSA1NCAqLwogICAgIFVfSkdf
TUFOSUNIQUVBTl9aQVlJTiwgIC8qKjwgQHN0YWJsZSBJQ1UgNTQgKi8KICAgICBVX0pHX1NUUkFJ
R0hUX1dBVywgIC8qKjwgQHN0YWJsZSBJQ1UgNTQgKi8KKyAgICBVX0pHX0FGUklDQU5fRkVILCAg
LyoqPCBAc3RhYmxlIElDVSA1OCAqLworICAgIFVfSkdfQUZSSUNBTl9OT09OLCAgLyoqPCBAc3Rh
YmxlIElDVSA1OCAqLworICAgIFVfSkdfQUZSSUNBTl9RQUYsICAvKio8IEBzdGFibGUgSUNVIDU4
ICovCisKKyAgICBVX0pHX01BTEFZQUxBTV9CSEEsICAvKio8IEBzdGFibGUgSUNVIDYwICovCisg
ICAgVV9KR19NQUxBWUFMQU1fSkEsICAvKio8IEBzdGFibGUgSUNVIDYwICovCisgICAgVV9KR19N
QUxBWUFMQU1fTExBLCAgLyoqPCBAc3RhYmxlIElDVSA2MCAqLworICAgIFVfSkdfTUFMQVlBTEFN
X0xMTEEsICAvKio8IEBzdGFibGUgSUNVIDYwICovCisgICAgVV9KR19NQUxBWUFMQU1fTkdBLCAg
LyoqPCBAc3RhYmxlIElDVSA2MCAqLworICAgIFVfSkdfTUFMQVlBTEFNX05OQSwgIC8qKjwgQHN0
YWJsZSBJQ1UgNjAgKi8KKyAgICBVX0pHX01BTEFZQUxBTV9OTk5BLCAgLyoqPCBAc3RhYmxlIElD
VSA2MCAqLworICAgIFVfSkdfTUFMQVlBTEFNX05ZQSwgIC8qKjwgQHN0YWJsZSBJQ1UgNjAgKi8K
KyAgICBVX0pHX01BTEFZQUxBTV9SQSwgIC8qKjwgQHN0YWJsZSBJQ1UgNjAgKi8KKyAgICBVX0pH
X01BTEFZQUxBTV9TU0EsICAvKio8IEBzdGFibGUgSUNVIDYwICovCisgICAgVV9KR19NQUxBWUFM
QU1fVFRBLCAgLyoqPCBAc3RhYmxlIElDVSA2MCAqLworCisjaWZuZGVmIFVfSElERV9ERVBSRUNB
VEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFs
IFVKb2luaW5nR3JvdXAgdmFsdWUuCisgICAgICogVGhlIGhpZ2hlc3QgdmFsdWUgaXMgYXZhaWxh
YmxlIHZpYSB1X2dldEludFByb3BlcnR5TWF4VmFsdWUoVUNIQVJfSk9JTklOR19HUk9VUCkuCisg
ICAgICoKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNo
YW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVX0pH
X0NPVU5UCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBVSm9pbmluZ0dyb3Vw
OwogCiAvKioKQEAgLTE3ODMsMTAgKzIwMTMsMzEgQEAgdHlwZWRlZiBlbnVtIFVHcmFwaGVtZUNs
dXN0ZXJCcmVhayB7CiAgICAgVV9HQ0JfTFZUID0gNywgICAgICAgICAgICAgIC8qW0xWVF0qLwog
ICAgIFVfR0NCX1QgPSA4LCAgICAgICAgICAgICAgICAvKltUXSovCiAgICAgVV9HQ0JfViA9IDks
ICAgICAgICAgICAgICAgIC8qW1ZdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNC4wICovCiAgICAg
VV9HQ0JfU1BBQ0lOR19NQVJLID0gMTAsICAgIC8qW1NNXSovIC8qIGZyb20gaGVyZSBvbjogbmV3
IGluIFVuaWNvZGUgNS4xL0lDVSA0LjAgKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNC4wICovCiAg
ICAgVV9HQ0JfUFJFUEVORCA9IDExLCAgICAgICAgIC8qW1BQXSovCisgICAgLyoqIEBzdGFibGUg
SUNVIDUwICovCiAgICAgVV9HQ0JfUkVHSU9OQUxfSU5ESUNBVE9SID0gMTIsICAvKltSSV0qLyAv
KiBuZXcgaW4gVW5pY29kZSA2LjIvSUNVIDUwICovCi0gICAgVV9HQ0JfQ09VTlQgPSAxMworICAg
IC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAgIFVfR0NCX0VfQkFTRSA9IDEzLCAgICAgICAgICAv
KltFQl0qLyAvKiBmcm9tIGhlcmUgb246IG5ldyBpbiBVbmljb2RlIDkuMC9JQ1UgNTggKi8KKyAg
ICAvKiogQHN0YWJsZSBJQ1UgNTggKi8KKyAgICBVX0dDQl9FX0JBU0VfR0FaID0gMTQsICAgICAg
LypbRUJHXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVV9HQ0JfRV9NT0RJRklF
UiA9IDE1LCAgICAgIC8qW0VNXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVV9H
Q0JfR0xVRV9BRlRFUl9aV0ogPSAxNiwgIC8qW0dBWl0qLworICAgIC8qKiBAc3RhYmxlIElDVSA1
OCAqLworICAgIFVfR0NCX1pXSiA9IDE3LCAgICAgICAgICAgICAvKltaV0pdKi8KKyNpZm5kZWYg
VV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUg
aGlnaGVzdCBub3JtYWwgVUdyYXBoZW1lQ2x1c3RlckJyZWFrIHZhbHVlLgorICAgICAqIFRoZSBo
aWdoZXN0IHZhbHVlIGlzIGF2YWlsYWJsZSB2aWEgdV9nZXRJbnRQcm9wZXJ0eU1heFZhbHVlKFVD
SEFSX0dSQVBIRU1FX0NMVVNURVJfQlJFQUspLgorICAgICAqCisgICAgICogQGRlcHJlY2F0ZWQg
SUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRp
Y2tldCAjMTI0MjAuCisgICAgICovCisgICAgVV9HQ0JfQ09VTlQgPSAxOAorI2VuZGlmICAvLyBV
X0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVUdyYXBoZW1lQ2x1c3RlckJyZWFrOwogCiAvKioKQEAg
LTE4MTEsMTYgKzIwNjIsNDMgQEAgdHlwZWRlZiBlbnVtIFVXb3JkQnJlYWtWYWx1ZXMgewogICAg
IFVfV0JfTUlETlVNID0gNSwgICAgICAgICAgICAvKltNTl0qLwogICAgIFVfV0JfTlVNRVJJQyA9
IDYsICAgICAgICAgICAvKltOVV0qLwogICAgIFVfV0JfRVhURU5ETlVNTEVUID0gNywgICAgICAv
KltFWF0qLworICAgIC8qKiBAc3RhYmxlIElDVSA0LjAgKi8KICAgICBVX1dCX0NSID0gOCwgICAg
ICAgICAgICAgICAgLypbQ1JdKi8gLyogZnJvbSBoZXJlIG9uOiBuZXcgaW4gVW5pY29kZSA1LjEv
SUNVIDQuMCAqLworICAgIC8qKiBAc3RhYmxlIElDVSA0LjAgKi8KICAgICBVX1dCX0VYVEVORCA9
IDksICAgICAgICAgICAgLypbRXh0ZW5kXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDQuMCAqLwog
ICAgIFVfV0JfTEYgPSAxMCwgICAgICAgICAgICAgICAvKltMRl0qLworICAgIC8qKiBAc3RhYmxl
IElDVSA0LjAgKi8KICAgICBVX1dCX01JRE5VTUxFVCA9MTEsICAgICAgICAgLypbTUJdKi8KKyAg
ICAvKiogQHN0YWJsZSBJQ1UgNC4wICovCiAgICAgVV9XQl9ORVdMSU5FID0xMiwgICAgICAgICAg
IC8qW05MXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDUwICovCiAgICAgVV9XQl9SRUdJT05BTF9J
TkRJQ0FUT1IgPSAxMywgICAvKltSSV0qLyAvKiBuZXcgaW4gVW5pY29kZSA2LjIvSUNVIDUwICov
CisgICAgLyoqIEBzdGFibGUgSUNVIDUyICovCiAgICAgVV9XQl9IRUJSRVdfTEVUVEVSID0gMTQs
ICAgIC8qW0hMXSovIC8qIGZyb20gaGVyZSBvbjogbmV3IGluIFVuaWNvZGUgNi4zL0lDVSA1MiAq
LworICAgIC8qKiBAc3RhYmxlIElDVSA1MiAqLwogICAgIFVfV0JfU0lOR0xFX1FVT1RFID0gMTUs
ICAgICAvKltTUV0qLworICAgIC8qKiBAc3RhYmxlIElDVSA1MiAqLwogICAgIFVfV0JfRE9VQkxF
X1FVT1RFID0gMTYsICAgICAvKltEUV0qLwotICAgIFVfV0JfQ09VTlQgPSAxNworICAgIC8qKiBA
c3RhYmxlIElDVSA1OCAqLworICAgIFVfV0JfRV9CQVNFID0gMTcsICAgICAgICAgICAvKltFQl0q
LyAvKiBmcm9tIGhlcmUgb246IG5ldyBpbiBVbmljb2RlIDkuMC9JQ1UgNTggKi8KKyAgICAvKiog
QHN0YWJsZSBJQ1UgNTggKi8KKyAgICBVX1dCX0VfQkFTRV9HQVogPSAxOCwgICAgICAgLypbRUJH
XSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVV9XQl9FX01PRElGSUVSID0gMTks
ICAgICAgIC8qW0VNXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVV9XQl9HTFVF
X0FGVEVSX1pXSiA9IDIwLCAgIC8qW0dBWl0qLworICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLwor
ICAgIFVfV0JfWldKID0gMjEsICAgICAgICAgICAgICAvKltaV0pdKi8KKyNpZm5kZWYgVV9ISURF
X0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVz
dCBub3JtYWwgVVdvcmRCcmVha1ZhbHVlcyB2YWx1ZS4KKyAgICAgKiBUaGUgaGlnaGVzdCB2YWx1
ZSBpcyBhdmFpbGFibGUgdmlhIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShVQ0hBUl9XT1JEX0JS
RUFLKS4KKyAgICAgKgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1
ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwor
ICAgIFVfV0JfQ09VTlQgPSAyMgorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH0g
VVdvcmRCcmVha1ZhbHVlczsKIAogLyoqCkBAIC0xODUxLDcgKzIxMjksMTUgQEAgdHlwZWRlZiBl
bnVtIFVTZW50ZW5jZUJyZWFrIHsKICAgICBVX1NCX0VYVEVORCA9IDEyLCAgICAgICAgICAgLypb
RVhdKi8KICAgICBVX1NCX0xGID0gMTMsICAgICAgICAgICAgICAgLypbTEZdKi8KICAgICBVX1NC
X1NDT05USU5VRSA9IDE0LCAgICAgICAgLypbU0NdKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FU
RURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwg
VVNlbnRlbmNlQnJlYWsgdmFsdWUuCisgICAgICogVGhlIGhpZ2hlc3QgdmFsdWUgaXMgYXZhaWxh
YmxlIHZpYSB1X2dldEludFByb3BlcnR5TWF4VmFsdWUoVUNIQVJfU0VOVEVOQ0VfQlJFQUspLgor
ICAgICAqCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBj
aGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVV9T
Ql9DT1VOVCA9IDE1CisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBVU2VudGVu
Y2VCcmVhazsKIAogLyoqCkBAIC0xODk4LDE4ICsyMTg0LDQzIEBAIHR5cGVkZWYgZW51bSBVTGlu
ZUJyZWFrIHsKICAgICBVX0xCX1NQQUNFID0gMjYsICAgICAgICAgICAgIC8qW1NQXSovCiAgICAg
VV9MQl9CUkVBS19TWU1CT0xTID0gMjcsICAgICAvKltTWV0qLwogICAgIFVfTEJfWldTUEFDRSA9
IDI4LCAgICAgICAgICAgLypbWlddKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCiAgICAg
VV9MQl9ORVhUX0xJTkUgPSAyOSwgICAgICAgICAvKltOTF0qLyAvKiBmcm9tIGhlcmUgb246IG5l
dyBpbiBVbmljb2RlIDQvSUNVIDIuNiAqLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjYgKi8KICAg
ICBVX0xCX1dPUkRfSk9JTkVSID0gMzAsICAgICAgIC8qW1dKXSovCisgICAgLyoqIEBzdGFibGUg
SUNVIDMuNCAqLwogICAgIFVfTEJfSDIgPSAzMSwgICAgICAgICAgICAgICAgLypbSDJdKi8gLyog
ZnJvbSBoZXJlIG9uOiBuZXcgaW4gVW5pY29kZSA0LjEvSUNVIDMuNCAqLworICAgIC8qKiBAc3Rh
YmxlIElDVSAzLjQgKi8KICAgICBVX0xCX0gzID0gMzIsICAgICAgICAgICAgICAgIC8qW0gzXSov
CisgICAgLyoqIEBzdGFibGUgSUNVIDMuNCAqLwogICAgIFVfTEJfSkwgPSAzMywgICAgICAgICAg
ICAgICAgLypbSkxdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMy40ICovCiAgICAgVV9MQl9KVCA9
IDM0LCAgICAgICAgICAgICAgICAvKltKVF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAzLjQgKi8K
ICAgICBVX0xCX0pWID0gMzUsICAgICAgICAgICAgICAgIC8qW0pWXSovCisgICAgLyoqIEBzdGFi
bGUgSUNVIDQuNCAqLwogICAgIFVfTEJfQ0xPU0VfUEFSRU5USEVTSVMgPSAzNiwgLypbQ1BdKi8g
LyogbmV3IGluIFVuaWNvZGUgNS4yL0lDVSA0LjQgKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNDkg
Ki8KICAgICBVX0xCX0NPTkRJVElPTkFMX0pBUEFORVNFX1NUQVJURVIgPSAzNywvKltDSl0qLyAv
KiBuZXcgaW4gVW5pY29kZSA2LjEvSUNVIDQ5ICovCisgICAgLyoqIEBzdGFibGUgSUNVIDQ5ICov
CiAgICAgVV9MQl9IRUJSRVdfTEVUVEVSID0gMzgsICAgICAvKltITF0qLyAvKiBuZXcgaW4gVW5p
Y29kZSA2LjEvSUNVIDQ5ICovCisgICAgLyoqIEBzdGFibGUgSUNVIDUwICovCiAgICAgVV9MQl9S
RUdJT05BTF9JTkRJQ0FUT1IgPSAzOSwvKltSSV0qLyAvKiBuZXcgaW4gVW5pY29kZSA2LjIvSUNV
IDUwICovCi0gICAgVV9MQl9DT1VOVCA9IDQwCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisg
ICAgVV9MQl9FX0JBU0UgPSA0MCwgICAgICAgICAgICAvKltFQl0qLyAvKiBmcm9tIGhlcmUgb246
IG5ldyBpbiBVbmljb2RlIDkuMC9JQ1UgNTggKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTggKi8K
KyAgICBVX0xCX0VfTU9ESUZJRVIgPSA0MSwgICAgICAgIC8qW0VNXSovCisgICAgLyoqIEBzdGFi
bGUgSUNVIDU4ICovCisgICAgVV9MQl9aV0ogPSA0MiwgICAgICAgICAgICAgICAvKltaV0pdKi8K
KyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUg
dGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVUxpbmVCcmVhayB2YWx1ZS4KKyAgICAgKiBUaGUgaGln
aGVzdCB2YWx1ZSBpcyBhdmFpbGFibGUgdmlhIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShVQ0hB
Ul9MSU5FX0JSRUFLKS4KKyAgICAgKgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVt
ZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgor
ICAgICAqLworICAgIFVfTEJfQ09VTlQgPSA0MworI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRF
RF9BUEkKIH0gVUxpbmVCcmVhazsKIAogLyoqCkBAIC0xOTI5LDcgKzIyNDAsMTUgQEAgdHlwZWRl
ZiBlbnVtIFVOdW1lcmljVHlwZSB7CiAgICAgVV9OVF9ERUNJTUFMLCAgICAgICAgICAgLypbZGVd
Ki8KICAgICBVX05UX0RJR0lULCAgICAgICAgICAgICAvKltkaV0qLwogICAgIFVfTlRfTlVNRVJJ
QywgICAgICAgICAgIC8qW251XSovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAg
IC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVOdW1lcmljVHlw
ZSB2YWx1ZS4KKyAgICAgKiBUaGUgaGlnaGVzdCB2YWx1ZSBpcyBhdmFpbGFibGUgdmlhIHVfZ2V0
SW50UHJvcGVydHlNYXhWYWx1ZShVQ0hBUl9OVU1FUklDX1RZUEUpLgorICAgICAqCisgICAgICog
QGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1l
LCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVV9OVF9DT1VOVAorI2VuZGlm
ICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVU51bWVyaWNUeXBlOwogCiAvKioKQEAgLTE5
NTEsNyArMjI3MCwxNSBAQCB0eXBlZGVmIGVudW0gVUhhbmd1bFN5bGxhYmxlVHlwZSB7CiAgICAg
VV9IU1RfVFJBSUxJTkdfSkFNTywgICAgLypbVF0qLwogICAgIFVfSFNUX0xWX1NZTExBQkxFLCAg
ICAgIC8qW0xWXSovCiAgICAgVV9IU1RfTFZUX1NZTExBQkxFLCAgICAgLypbTFZUXSovCisjaWZu
ZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4g
dGhlIGhpZ2hlc3Qgbm9ybWFsIFVIYW5ndWxTeWxsYWJsZVR5cGUgdmFsdWUuCisgICAgICogVGhl
IGhpZ2hlc3QgdmFsdWUgaXMgYXZhaWxhYmxlIHZpYSB1X2dldEludFByb3BlcnR5TWF4VmFsdWUo
VUNIQVJfSEFOR1VMX1NZTExBQkxFX1RZUEUpLgorICAgICAqCisgICAgICogQGRlcHJlY2F0ZWQg
SUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRp
Y2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVV9IU1RfQ09VTlQKKyNlbmRpZiAgLy8gVV9ISURF
X0RFUFJFQ0FURURfQVBJCiB9IFVIYW5ndWxTeWxsYWJsZVR5cGU7CiAKIC8qKgpAQCAtMjgxNiw3
ICszMTQzLDcgQEAgdV9jaGFyTmFtZShVQ2hhcjMyIGNvZGUsIFVDaGFyTmFtZUNob2ljZSBuYW1l
Q2hvaWNlLAogICAgICAgICAgICBjaGFyICpidWZmZXIsIGludDMyX3QgYnVmZmVyTGVuZ3RoLAog
ICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKIAotI2lmbmRlZiBVX0hJREVfREVQ
UkVDQVRFRF9BUEkgCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogLyoqCiAgKiBSZXR1
cm5zIGFuIGVtcHR5IHN0cmluZy4KICAqIFVzZWQgdG8gcmV0dXJuIHRoZSBJU08gMTA2NDYgY29t
bWVudCBmb3IgYSBjaGFyYWN0ZXIuCkBAIC0zMjQzLDI3ICszNTcwLDYgQEAgdV90b3VwcGVyKFVD
aGFyMzIgYyk7CiBVX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgogdV90b3RpdGxlKFVDaGFyMzIg
Yyk7CiAKLS8qKiBPcHRpb24gdmFsdWUgZm9yIGNhc2UgZm9sZGluZzogdXNlIGRlZmF1bHQgbWFw
cGluZ3MgZGVmaW5lZCBpbiBDYXNlRm9sZGluZy50eHQuIEBzdGFibGUgSUNVIDIuMCAqLwotI2Rl
ZmluZSBVX0ZPTERfQ0FTRV9ERUZBVUxUIDAKLQotLyoqCi0gKiBPcHRpb24gdmFsdWUgZm9yIGNh
c2UgZm9sZGluZzoKLSAqCi0gKiBVc2UgdGhlIG1vZGlmaWVkIHNldCBvZiBtYXBwaW5ncyBwcm92
aWRlZCBpbiBDYXNlRm9sZGluZy50eHQgdG8gaGFuZGxlIGRvdHRlZCBJCi0gKiBhbmQgZG90bGVz
cyBpIGFwcHJvcHJpYXRlbHkgZm9yIFR1cmtpYyBsYW5ndWFnZXMgKHRyLCBheikuCi0gKgotICog
QmVmb3JlIFVuaWNvZGUgMy4yLCBDYXNlRm9sZGluZy50eHQgY29udGFpbnMgbWFwcGluZ3MgbWFy
a2VkIHdpdGggJ0knIHRoYXQKLSAqIGFyZSB0byBiZSBpbmNsdWRlZCBmb3IgZGVmYXVsdCBtYXBw
aW5ncyBhbmQKLSAqIGV4Y2x1ZGVkIGZvciB0aGUgVHVya2ljLXNwZWNpZmljIG1hcHBpbmdzLgot
ICoKLSAqIFVuaWNvZGUgMy4yIENhc2VGb2xkaW5nLnR4dCBpbnN0ZWFkIGNvbnRhaW5zIG1hcHBp
bmdzIG1hcmtlZCB3aXRoICdUJyB0aGF0Ci0gKiBhcmUgdG8gYmUgZXhjbHVkZWQgZm9yIGRlZmF1
bHQgbWFwcGluZ3MgYW5kCi0gKiBpbmNsdWRlZCBmb3IgdGhlIFR1cmtpYy1zcGVjaWZpYyBtYXBw
aW5ncy4KLSAqCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotI2RlZmluZSBVX0ZPTERfQ0FTRV9F
WENMVURFX1NQRUNJQUxfSSAxCi0KIC8qKgogICogVGhlIGdpdmVuIGNoYXJhY3RlciBpcyBtYXBw
ZWQgdG8gaXRzIGNhc2UgZm9sZGluZyBlcXVpdmFsZW50IGFjY29yZGluZyB0bwogICogVW5pY29k
ZURhdGEudHh0IGFuZCBDYXNlRm9sZGluZy50eHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3VjaGFyc3RyaWUuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNoYXJzdHJp
ZS5oCmluZGV4IDA1NzVhOTc0ZDBjOTU3YWNjN2QzN2ZjYzAwZTM2ZDAzOGE3YzFhYmEuLmRmYzkz
ZjZkMGJhZThhY2YwMjQ2M2I5OTA0NGU4ZGVhNzJlOTM5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdWNoYXJzdHJpZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dWNoYXJzdHJpZS5oCkBAIC0xLDEwICsxLDEyIEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5p
Y29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDov
L3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKICogICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVk
LgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIHVjaGFyc3RyaWUuaAot
KiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICogICB0YWIg
c2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC0zNCw3ICszNiw3
IEBAIGNsYXNzIFVWZWN0b3IzMjsKIAogLyoqCiAgKiBMaWdodC13ZWlnaHQsIG5vbi1jb25zdCBy
ZWFkZXIgY2xhc3MgZm9yIGEgVUNoYXJzVHJpZS4KLSAqIFRyYXZlcnNlcyBhIFVDaGFyLXNlcmlh
bGl6ZWQgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBtaW5pbWFsIHN0YXRlLAorICogVHJhdmVyc2VzIGEg
Y2hhcjE2X3Qtc2VyaWFsaXplZCBkYXRhIHN0cnVjdHVyZSB3aXRoIG1pbmltYWwgc3RhdGUsCiAg
KiBmb3IgbWFwcGluZyBzdHJpbmdzICgxNi1iaXQtdW5pdCBzZXF1ZW5jZXMpIHRvIG5vbi1uZWdh
dGl2ZSBpbnRlZ2VyIHZhbHVlcy4KICAqCiAgKiBUaGlzIGNsYXNzIG93bnMgdGhlIHNlcmlhbGl6
ZWQgdHJpZSBkYXRhIG9ubHkgaWYgaXQgd2FzIGNvbnN0cnVjdGVkIGJ5CkBAIC01MCwxOCArNTIs
MTggQEAgcHVibGljOgogICAgIC8qKgogICAgICAqIENvbnN0cnVjdHMgYSBVQ2hhcnNUcmllIHJl
YWRlciBpbnN0YW5jZS4KICAgICAgKgotICAgICAqIFRoZSB0cmllVUNoYXJzIG11c3QgY29udGFp
biBhIGNvcHkgb2YgYSBVQ2hhciBzZXF1ZW5jZSBmcm9tIHRoZSBVQ2hhcnNUcmllQnVpbGRlciwK
LSAgICAgKiBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBVQ2hhciBvZiB0aGF0IHNlcXVlbmNlLgot
ICAgICAqIFRoZSBVQ2hhcnNUcmllIG9iamVjdCB3aWxsIG5vdCByZWFkIG1vcmUgVUNoYXJzIHRo
YW4KKyAgICAgKiBUaGUgdHJpZVVDaGFycyBtdXN0IGNvbnRhaW4gYSBjb3B5IG9mIGEgY2hhcjE2
X3Qgc2VxdWVuY2UgZnJvbSB0aGUgVUNoYXJzVHJpZUJ1aWxkZXIsCisgICAgICogc3RhcnRpbmcg
d2l0aCB0aGUgZmlyc3QgY2hhcjE2X3Qgb2YgdGhhdCBzZXF1ZW5jZS4KKyAgICAgKiBUaGUgVUNo
YXJzVHJpZSBvYmplY3Qgd2lsbCBub3QgcmVhZCBtb3JlIGNoYXIxNl90cyB0aGFuCiAgICAgICog
dGhlIFVDaGFyc1RyaWVCdWlsZGVyIGdlbmVyYXRlZCBpbiB0aGUgY29ycmVzcG9uZGluZyBidWls
ZCgpIGNhbGwuCiAgICAgICoKICAgICAgKiBUaGUgYXJyYXkgaXMgbm90IGNvcGllZC9jbG9uZWQg
YW5kIG11c3Qgbm90IGJlIG1vZGlmaWVkIHdoaWxlCiAgICAgICogdGhlIFVDaGFyc1RyaWUgb2Jq
ZWN0IGlzIGluIHVzZS4KICAgICAgKgotICAgICAqIEBwYXJhbSB0cmllVUNoYXJzIFRoZSBVQ2hh
ciBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBzZXJpYWxpemVkIHRyaWUuCisgICAgICogQHBhcmFt
IHRyaWVVQ2hhcnMgVGhlIGNoYXIxNl90IGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHNlcmlhbGl6
ZWQgdHJpZS4KICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KLSAgICBVQ2hhcnNUcmll
KGNvbnN0IFVDaGFyICp0cmllVUNoYXJzKQorICAgIFVDaGFyc1RyaWUoQ29uc3RDaGFyMTZQdHIg
dHJpZVVDaGFycykKICAgICAgICAgICAgIDogb3duZWRBcnJheV8oTlVMTCksIHVjaGFyc18odHJp
ZVVDaGFycyksCiAgICAgICAgICAgICAgIHBvc18odWNoYXJzXyksIHJlbWFpbmluZ01hdGNoTGVu
Z3RoXygtMSkge30KIApAQCAtNzMsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICAvKioKICAgICAg
KiBDb3B5IGNvbnN0cnVjdG9yLCBjb3BpZXMgdGhlIG90aGVyIHRyaWUgcmVhZGVyIG9iamVjdCBh
bmQgaXRzIHN0YXRlLAotICAgICAqIGJ1dCBub3QgdGhlIFVDaGFyIGFycmF5IHdoaWNoIHdpbGwg
YmUgc2hhcmVkLiAoU2hhbGxvdyBjb3B5LikKKyAgICAgKiBidXQgbm90IHRoZSBjaGFyMTZfdCBh
cnJheSB3aGljaCB3aWxsIGJlIHNoYXJlZC4gKFNoYWxsb3cgY29weS4pCiAgICAgICogQHBhcmFt
IG90aGVyIEFub3RoZXIgVUNoYXJzVHJpZSBvYmplY3QuCiAgICAgICogQHN0YWJsZSBJQ1UgNC44
CiAgICAgICovCkBAIC0xMDcsOCArMTA5LDggQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBVQ2hhcnNUcmllOwogCi0gICAgICAgIGNvbnN0IFVDaGFyICp1Y2hh
cnM7Ci0gICAgICAgIGNvbnN0IFVDaGFyICpwb3M7CisgICAgICAgIGNvbnN0IGNoYXIxNl90ICp1
Y2hhcnM7CisgICAgICAgIGNvbnN0IGNoYXIxNl90ICpwb3M7CiAgICAgICAgIGludDMyX3QgcmVt
YWluaW5nTWF0Y2hMZW5ndGg7CiAgICAgfTsKIApAQCAtMTQ2LDE0ICsxNDgsMTQgQEAgcHVibGlj
OgogCiAgICAgLyoqCiAgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzdHJpbmcgc28gZmFy
IG1hdGNoZXMsIHdoZXRoZXIgaXQgaGFzIGEgdmFsdWUsCi0gICAgICogYW5kIHdoZXRoZXIgYW5v
dGhlciBpbnB1dCBVQ2hhciBjYW4gY29udGludWUgYSBtYXRjaGluZyBzdHJpbmcuCisgICAgICog
YW5kIHdoZXRoZXIgYW5vdGhlciBpbnB1dCBjaGFyMTZfdCBjYW4gY29udGludWUgYSBtYXRjaGlu
ZyBzdHJpbmcuCiAgICAgICogQHJldHVybiBUaGUgbWF0Y2gvdmFsdWUgUmVzdWx0LgogICAgICAq
IEBzdGFibGUgSUNVIDQuOAogICAgICAqLwogICAgIFVTdHJpbmdUcmllUmVzdWx0IGN1cnJlbnQo
KSBjb25zdDsKIAogICAgIC8qKgotICAgICAqIFRyYXZlcnNlcyB0aGUgdHJpZSBmcm9tIHRoZSBp
bml0aWFsIHN0YXRlIGZvciB0aGlzIGlucHV0IFVDaGFyLgorICAgICAqIFRyYXZlcnNlcyB0aGUg
dHJpZSBmcm9tIHRoZSBpbml0aWFsIHN0YXRlIGZvciB0aGlzIGlucHV0IGNoYXIxNl90LgogICAg
ICAqIEVxdWl2YWxlbnQgdG8gcmVzZXQoKS5uZXh0KHVjaGFyKS4KICAgICAgKiBAcGFyYW0gdWNo
YXIgSW5wdXQgY2hhciB2YWx1ZS4gVmFsdWVzIGJlbG93IDAgYW5kIGFib3ZlIDB4ZmZmZiB3aWxs
IG5ldmVyIG1hdGNoLgogICAgICAqIEByZXR1cm4gVGhlIG1hdGNoL3ZhbHVlIFJlc3VsdC4KQEAg
LTE3NSw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgVVN0cmluZ1RyaWVSZXN1bHQgZmlyc3RGb3JD
b2RlUG9pbnQoVUNoYXIzMiBjcCk7CiAKICAgICAvKioKLSAgICAgKiBUcmF2ZXJzZXMgdGhlIHRy
aWUgZnJvbSB0aGUgY3VycmVudCBzdGF0ZSBmb3IgdGhpcyBpbnB1dCBVQ2hhci4KKyAgICAgKiBU
cmF2ZXJzZXMgdGhlIHRyaWUgZnJvbSB0aGUgY3VycmVudCBzdGF0ZSBmb3IgdGhpcyBpbnB1dCBj
aGFyMTZfdC4KICAgICAgKiBAcGFyYW0gdWNoYXIgSW5wdXQgY2hhciB2YWx1ZS4gVmFsdWVzIGJl
bG93IDAgYW5kIGFib3ZlIDB4ZmZmZiB3aWxsIG5ldmVyIG1hdGNoLgogICAgICAqIEByZXR1cm4g
VGhlIG1hdGNoL3ZhbHVlIFJlc3VsdC4KICAgICAgKiBAc3RhYmxlIElDVSA0LjgKQEAgLTIwNiw3
ICsyMDgsNyBAQCBwdWJsaWM6CiAgICAgICogQHJldHVybiBUaGUgbWF0Y2gvdmFsdWUgUmVzdWx0
LgogICAgICAqIEBzdGFibGUgSUNVIDQuOAogICAgICAqLwotICAgIFVTdHJpbmdUcmllUmVzdWx0
IG5leHQoY29uc3QgVUNoYXIgKnMsIGludDMyX3QgbGVuZ3RoKTsKKyAgICBVU3RyaW5nVHJpZVJl
c3VsdCBuZXh0KENvbnN0Q2hhcjE2UHRyIHMsIGludDMyX3QgbGVuZ3RoKTsKIAogICAgIC8qKgog
ICAgICAqIFJldHVybnMgYSBtYXRjaGluZyBzdHJpbmcncyB2YWx1ZSBpZiBjYWxsZWQgaW1tZWRp
YXRlbHkgYWZ0ZXIKQEAgLTIxOCw3ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJ
Q1UgNC44CiAgICAgICovCiAgICAgaW5saW5lIGludDMyX3QgZ2V0VmFsdWUoKSBjb25zdCB7Ci0g
ICAgICAgIGNvbnN0IFVDaGFyICpwb3M9cG9zXzsKKyAgICAgICAgY29uc3QgY2hhcjE2X3QgKnBv
cz1wb3NfOwogICAgICAgICBpbnQzMl90IGxlYWRVbml0PSpwb3MrKzsKICAgICAgICAgLy8gVV9B
U1NFUlQobGVhZFVuaXQ+PWtNaW5WYWx1ZUxlYWQpOwogICAgICAgICByZXR1cm4gbGVhZFVuaXQm
a1ZhbHVlSXNGaW5hbCA/CkBAIC0yMzUsMTYgKzIzNywxNiBAQCBwdWJsaWM6CiAgICAgICogQHN0
YWJsZSBJQ1UgNC44CiAgICAgICovCiAgICAgaW5saW5lIFVCb29sIGhhc1VuaXF1ZVZhbHVlKGlu
dDMyX3QgJnVuaXF1ZVZhbHVlKSBjb25zdCB7Ci0gICAgICAgIGNvbnN0IFVDaGFyICpwb3M9cG9z
XzsKKyAgICAgICAgY29uc3QgY2hhcjE2X3QgKnBvcz1wb3NfOwogICAgICAgICAvLyBTa2lwIHRo
ZSByZXN0IG9mIGEgcGVuZGluZyBsaW5lYXItbWF0Y2ggbm9kZS4KICAgICAgICAgcmV0dXJuIHBv
cyE9TlVMTCAmJiBmaW5kVW5pcXVlVmFsdWUocG9zK3JlbWFpbmluZ01hdGNoTGVuZ3RoXysxLCBG
QUxTRSwgdW5pcXVlVmFsdWUpOwogICAgIH0KIAogICAgIC8qKgotICAgICAqIEZpbmRzIGVhY2gg
VUNoYXIgd2hpY2ggY29udGludWVzIHRoZSBzdHJpbmcgZnJvbSB0aGUgY3VycmVudCBzdGF0ZS4K
LSAgICAgKiBUaGF0IGlzLCBlYWNoIFVDaGFyIGMgZm9yIHdoaWNoIGl0IHdvdWxkIGJlIG5leHQo
YykhPVVTVFJJTkdUUklFX05PX01BVENIIG5vdy4KLSAgICAgKiBAcGFyYW0gb3V0IEVhY2ggbmV4
dCBVQ2hhciBpcyBhcHBlbmRlZCB0byB0aGlzIG9iamVjdC4KLSAgICAgKiBAcmV0dXJuIHRoZSBu
dW1iZXIgb2YgVUNoYXJzIHdoaWNoIGNvbnRpbnVlIHRoZSBzdHJpbmcgZnJvbSBoZXJlCisgICAg
ICogRmluZHMgZWFjaCBjaGFyMTZfdCB3aGljaCBjb250aW51ZXMgdGhlIHN0cmluZyBmcm9tIHRo
ZSBjdXJyZW50IHN0YXRlLgorICAgICAqIFRoYXQgaXMsIGVhY2ggY2hhcjE2X3QgYyBmb3Igd2hp
Y2ggaXQgd291bGQgYmUgbmV4dChjKSE9VVNUUklOR1RSSUVfTk9fTUFUQ0ggbm93LgorICAgICAq
IEBwYXJhbSBvdXQgRWFjaCBuZXh0IGNoYXIxNl90IGlzIGFwcGVuZGVkIHRvIHRoaXMgb2JqZWN0
LgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBjaGFyMTZfdHMgd2hpY2ggY29udGludWUg
dGhlIHN0cmluZyBmcm9tIGhlcmUKICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KICAg
ICBpbnQzMl90IGdldE5leHRVQ2hhcnMoQXBwZW5kYWJsZSAmb3V0KSBjb25zdDsKQEAgLTI1Niw4
ICsyNTgsOCBAQCBwdWJsaWM6CiAgICAgY2xhc3MgVV9DT01NT05fQVBJIEl0ZXJhdG9yIDogcHVi
bGljIFVNZW1vcnkgewogICAgIHB1YmxpYzoKICAgICAgICAgLyoqCi0gICAgICAgICAqIEl0ZXJh
dGVzIGZyb20gdGhlIHJvb3Qgb2YgYSBVQ2hhci1zZXJpYWxpemVkIFVDaGFyc1RyaWUuCi0gICAg
ICAgICAqIEBwYXJhbSB0cmllVUNoYXJzIFRoZSB0cmllIFVDaGFycy4KKyAgICAgICAgICogSXRl
cmF0ZXMgZnJvbSB0aGUgcm9vdCBvZiBhIGNoYXIxNl90LXNlcmlhbGl6ZWQgVUNoYXJzVHJpZS4K
KyAgICAgICAgICogQHBhcmFtIHRyaWVVQ2hhcnMgVGhlIHRyaWUgY2hhcjE2X3RzLgogICAgICAg
ICAgKiBAcGFyYW0gbWF4U3RyaW5nTGVuZ3RoIElmIDAsIHRoZSBpdGVyYXRvciByZXR1cm5zIGZ1
bGwgc3RyaW5ncy4KICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICBPdGhlcndpc2Us
IHRoZSBpdGVyYXRvciByZXR1cm5zIHN0cmluZ3Mgd2l0aCB0aGlzIG1heGltdW0gbGVuZ3RoLgog
ICAgICAgICAgKiBAcGFyYW0gZXJyb3JDb2RlIFN0YW5kYXJkIElDVSBlcnJvciBjb2RlLiBJdHMg
aW5wdXQgdmFsdWUgbXVzdApAQCAtMjY2LDcgKzI2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICog
ICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGFpbmluZy4gKFNlZSBVc2VyIEd1aWRlIGZvciBk
ZXRhaWxzLikKICAgICAgICAgICogQHN0YWJsZSBJQ1UgNC44CiAgICAgICAgICAqLwotICAgICAg
ICBJdGVyYXRvcihjb25zdCBVQ2hhciAqdHJpZVVDaGFycywgaW50MzJfdCBtYXhTdHJpbmdMZW5n
dGgsIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CisgICAgICAgIEl0ZXJhdG9yKENvbnN0Q2hhcjE2
UHRyIHRyaWVVQ2hhcnMsIGludDMyX3QgbWF4U3RyaW5nTGVuZ3RoLCBVRXJyb3JDb2RlICZlcnJv
ckNvZGUpOwogCiAgICAgICAgIC8qKgogICAgICAgICAgKiBJdGVyYXRlcyBmcm9tIHRoZSBjdXJy
ZW50IHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgVUNoYXJzVHJpZS4KQEAgLTMzNCwxMSArMzM2LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAgICB9CiAKLSAgICAg
ICAgY29uc3QgVUNoYXIgKmJyYW5jaE5leHQoY29uc3QgVUNoYXIgKnBvcywgaW50MzJfdCBsZW5n
dGgsIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CisgICAgICAgIGNvbnN0IGNoYXIxNl90ICpicmFu
Y2hOZXh0KGNvbnN0IGNoYXIxNl90ICpwb3MsIGludDMyX3QgbGVuZ3RoLCBVRXJyb3JDb2RlICZl
cnJvckNvZGUpOwogCi0gICAgICAgIGNvbnN0IFVDaGFyICp1Y2hhcnNfOwotICAgICAgICBjb25z
dCBVQ2hhciAqcG9zXzsKLSAgICAgICAgY29uc3QgVUNoYXIgKmluaXRpYWxQb3NfOworICAgICAg
ICBjb25zdCBjaGFyMTZfdCAqdWNoYXJzXzsKKyAgICAgICAgY29uc3QgY2hhcjE2X3QgKnBvc187
CisgICAgICAgIGNvbnN0IGNoYXIxNl90ICppbml0aWFsUG9zXzsKICAgICAgICAgaW50MzJfdCBy
ZW1haW5pbmdNYXRjaExlbmd0aF87CiAgICAgICAgIGludDMyX3QgaW5pdGlhbFJlbWFpbmluZ01h
dGNoTGVuZ3RoXzsKICAgICAgICAgVUJvb2wgc2tpcFZhbHVlXzsgIC8vIFNraXAgaW50ZXJtZWRp
YXRlIHZhbHVlIHdoaWNoIHdhcyBhbHJlYWR5IGRlbGl2ZXJlZC4KQEAgLTM2Niw3ICszNjgsNyBA
QCBwcml2YXRlOgogICAgICAqIHRoaXMgY29uc3RydWN0b3IgYWRvcHRzIHRoZSBidWlsZGVyJ3Mg
YXJyYXkuCiAgICAgICogVGhpcyBjb25zdHJ1Y3RvciBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYnVp
bGRlci4KICAgICAgKi8KLSAgICBVQ2hhcnNUcmllKFVDaGFyICphZG9wdFVDaGFycywgY29uc3Qg
VUNoYXIgKnRyaWVVQ2hhcnMpCisgICAgVUNoYXJzVHJpZShjaGFyMTZfdCAqYWRvcHRVQ2hhcnMs
IGNvbnN0IGNoYXIxNl90ICp0cmllVUNoYXJzKQogICAgICAgICAgICAgOiBvd25lZEFycmF5Xyhh
ZG9wdFVDaGFycyksIHVjaGFyc18odHJpZVVDaGFycyksCiAgICAgICAgICAgICAgIHBvc18odWNo
YXJzXyksIHJlbWFpbmluZ01hdGNoTGVuZ3RoXygtMSkge30KIApAQCAtMzc5LDcgKzM4MSw3IEBA
IHByaXZhdGU6CiAKICAgICAvLyBSZWFkcyBhIGNvbXBhY3QgMzItYml0IGludGVnZXIuCiAgICAg
Ly8gcG9zIGlzIGFscmVhZHkgYWZ0ZXIgdGhlIGxlYWRVbml0LCBhbmQgdGhlIGxlYWQgdW5pdCBo
YXMgYml0IDE1IHJlc2V0LgotICAgIHN0YXRpYyBpbmxpbmUgaW50MzJfdCByZWFkVmFsdWUoY29u
c3QgVUNoYXIgKnBvcywgaW50MzJfdCBsZWFkVW5pdCkgeworICAgIHN0YXRpYyBpbmxpbmUgaW50
MzJfdCByZWFkVmFsdWUoY29uc3QgY2hhcjE2X3QgKnBvcywgaW50MzJfdCBsZWFkVW5pdCkgewog
ICAgICAgICBpbnQzMl90IHZhbHVlOwogICAgICAgICBpZihsZWFkVW5pdDxrTWluVHdvVW5pdFZh
bHVlTGVhZCkgewogICAgICAgICAgICAgdmFsdWU9bGVhZFVuaXQ7CkBAIC0zOTAsNyArMzkyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQotICAg
IHN0YXRpYyBpbmxpbmUgY29uc3QgVUNoYXIgKnNraXBWYWx1ZShjb25zdCBVQ2hhciAqcG9zLCBp
bnQzMl90IGxlYWRVbml0KSB7CisgICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyMTZfdCAqc2tp
cFZhbHVlKGNvbnN0IGNoYXIxNl90ICpwb3MsIGludDMyX3QgbGVhZFVuaXQpIHsKICAgICAgICAg
aWYobGVhZFVuaXQ+PWtNaW5Ud29Vbml0VmFsdWVMZWFkKSB7CiAgICAgICAgICAgICBpZihsZWFk
VW5pdDxrVGhyZWVVbml0VmFsdWVMZWFkKSB7CiAgICAgICAgICAgICAgICAgKytwb3M7CkBAIC00
MDAsMTIgKzQwMiwxMiBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwb3M7
CiAgICAgfQotICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgVUNoYXIgKnNraXBWYWx1ZShjb25zdCBV
Q2hhciAqcG9zKSB7CisgICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyMTZfdCAqc2tpcFZhbHVl
KGNvbnN0IGNoYXIxNl90ICpwb3MpIHsKICAgICAgICAgaW50MzJfdCBsZWFkVW5pdD0qcG9zKys7
CiAgICAgICAgIHJldHVybiBza2lwVmFsdWUocG9zLCBsZWFkVW5pdCYweDdmZmYpOwogICAgIH0K
IAotICAgIHN0YXRpYyBpbmxpbmUgaW50MzJfdCByZWFkTm9kZVZhbHVlKGNvbnN0IFVDaGFyICpw
b3MsIGludDMyX3QgbGVhZFVuaXQpIHsKKyAgICBzdGF0aWMgaW5saW5lIGludDMyX3QgcmVhZE5v
ZGVWYWx1ZShjb25zdCBjaGFyMTZfdCAqcG9zLCBpbnQzMl90IGxlYWRVbml0KSB7CiAgICAgICAg
IC8vIFVfQVNTRVJUKGtNaW5WYWx1ZUxlYWQ8PWxlYWRVbml0ICYmIGxlYWRVbml0PGtWYWx1ZUlz
RmluYWwpOwogICAgICAgICBpbnQzMl90IHZhbHVlOwogICAgICAgICBpZihsZWFkVW5pdDxrTWlu
VHdvVW5pdE5vZGVWYWx1ZUxlYWQpIHsKQEAgLTQxNyw3ICs0MTksNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9Ci0gICAgc3RhdGljIGlubGluZSBj
b25zdCBVQ2hhciAqc2tpcE5vZGVWYWx1ZShjb25zdCBVQ2hhciAqcG9zLCBpbnQzMl90IGxlYWRV
bml0KSB7CisgICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyMTZfdCAqc2tpcE5vZGVWYWx1ZShj
b25zdCBjaGFyMTZfdCAqcG9zLCBpbnQzMl90IGxlYWRVbml0KSB7CiAgICAgICAgIC8vIFVfQVNT
RVJUKGtNaW5WYWx1ZUxlYWQ8PWxlYWRVbml0ICYmIGxlYWRVbml0PGtWYWx1ZUlzRmluYWwpOwog
ICAgICAgICBpZihsZWFkVW5pdD49a01pblR3b1VuaXROb2RlVmFsdWVMZWFkKSB7CiAgICAgICAg
ICAgICBpZihsZWFkVW5pdDxrVGhyZWVVbml0Tm9kZVZhbHVlTGVhZCkgewpAQCAtNDI5LDcgKzQz
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBwb3M7CiAgICAgfQogCi0gICAgc3RhdGlj
IGlubGluZSBjb25zdCBVQ2hhciAqanVtcEJ5RGVsdGEoY29uc3QgVUNoYXIgKnBvcykgeworICAg
IHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhcjE2X3QgKmp1bXBCeURlbHRhKGNvbnN0IGNoYXIxNl90
ICpwb3MpIHsKICAgICAgICAgaW50MzJfdCBkZWx0YT0qcG9zKys7CiAgICAgICAgIGlmKGRlbHRh
Pj1rTWluVHdvVW5pdERlbHRhTGVhZCkgewogICAgICAgICAgICAgaWYoZGVsdGE9PWtUaHJlZVVu
aXREZWx0YUxlYWQpIHsKQEAgLTQ0Miw3ICs0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gcG9zK2RlbHRhOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCBVQ2hhciAqc2tpcERlbHRh
KGNvbnN0IFVDaGFyICpwb3MpIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhcjE2X3QgKnNraXBEZWx0
YShjb25zdCBjaGFyMTZfdCAqcG9zKSB7CiAgICAgICAgIGludDMyX3QgZGVsdGE9KnBvcysrOwog
ICAgICAgICBpZihkZWx0YT49a01pblR3b1VuaXREZWx0YUxlYWQpIHsKICAgICAgICAgICAgIGlm
KGRlbHRhPT1rVGhyZWVVbml0RGVsdGFMZWFkKSB7CkBAIC00NTksMjggKzQ2MSwyOCBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIC8vIEhhbmRsZXMgYSBicmFuY2ggbm9kZSBmb3IgYm90aCBuZXh0
KHVjaGFyKSBhbmQgbmV4dChzdHJpbmcpLgotICAgIFVTdHJpbmdUcmllUmVzdWx0IGJyYW5jaE5l
eHQoY29uc3QgVUNoYXIgKnBvcywgaW50MzJfdCBsZW5ndGgsIGludDMyX3QgdWNoYXIpOworICAg
IFVTdHJpbmdUcmllUmVzdWx0IGJyYW5jaE5leHQoY29uc3QgY2hhcjE2X3QgKnBvcywgaW50MzJf
dCBsZW5ndGgsIGludDMyX3QgdWNoYXIpOwogCiAgICAgLy8gUmVxdWlyZXMgcmVtYWluaW5nTGVu
Z3RoXzwwLgotICAgIFVTdHJpbmdUcmllUmVzdWx0IG5leHRJbXBsKGNvbnN0IFVDaGFyICpwb3Ms
IGludDMyX3QgdWNoYXIpOworICAgIFVTdHJpbmdUcmllUmVzdWx0IG5leHRJbXBsKGNvbnN0IGNo
YXIxNl90ICpwb3MsIGludDMyX3QgdWNoYXIpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyBm
b3IgaGFzVW5pcXVlVmFsdWUoKS4KICAgICAvLyBSZWN1cnNpdmVseSBmaW5kcyBhIHVuaXF1ZSB2
YWx1ZSAob3Igd2hldGhlciB0aGVyZSBpcyBub3QgYSB1bmlxdWUgb25lKQogICAgIC8vIGZyb20g
YSBicmFuY2guCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyICpmaW5kVW5pcXVlVmFsdWVGcm9tQnJh
bmNoKGNvbnN0IFVDaGFyICpwb3MsIGludDMyX3QgbGVuZ3RoLAorICAgIHN0YXRpYyBjb25zdCBj
aGFyMTZfdCAqZmluZFVuaXF1ZVZhbHVlRnJvbUJyYW5jaChjb25zdCBjaGFyMTZfdCAqcG9zLCBp
bnQzMl90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVUJvb2wgaGF2ZVVuaXF1ZVZhbHVlLCBpbnQzMl90ICZ1bmlxdWVWYWx1ZSk7CiAg
ICAgLy8gUmVjdXJzaXZlbHkgZmluZHMgYSB1bmlxdWUgdmFsdWUgKG9yIHdoZXRoZXIgdGhlcmUg
aXMgbm90IGEgdW5pcXVlIG9uZSkKICAgICAvLyBzdGFydGluZyBmcm9tIGEgcG9zaXRpb24gb24g
YSBub2RlIGxlYWQgdW5pdC4KLSAgICBzdGF0aWMgVUJvb2wgZmluZFVuaXF1ZVZhbHVlKGNvbnN0
IFVDaGFyICpwb3MsIFVCb29sIGhhdmVVbmlxdWVWYWx1ZSwgaW50MzJfdCAmdW5pcXVlVmFsdWUp
OworICAgIHN0YXRpYyBVQm9vbCBmaW5kVW5pcXVlVmFsdWUoY29uc3QgY2hhcjE2X3QgKnBvcywg
VUJvb2wgaGF2ZVVuaXF1ZVZhbHVlLCBpbnQzMl90ICZ1bmlxdWVWYWx1ZSk7CiAKICAgICAvLyBI
ZWxwZXIgZnVuY3Rpb25zIGZvciBnZXROZXh0VUNoYXJzKCkuCiAgICAgLy8gZ2V0TmV4dFVDaGFy
cygpIHdoZW4gcG9zIGlzIG9uIGEgYnJhbmNoIG5vZGUuCi0gICAgc3RhdGljIHZvaWQgZ2V0TmV4
dEJyYW5jaFVDaGFycyhjb25zdCBVQ2hhciAqcG9zLCBpbnQzMl90IGxlbmd0aCwgQXBwZW5kYWJs
ZSAmb3V0KTsKKyAgICBzdGF0aWMgdm9pZCBnZXROZXh0QnJhbmNoVUNoYXJzKGNvbnN0IGNoYXIx
Nl90ICpwb3MsIGludDMyX3QgbGVuZ3RoLCBBcHBlbmRhYmxlICZvdXQpOwogCiAgICAgLy8gVUNo
YXJzVHJpZSBkYXRhIHN0cnVjdHVyZQogICAgIC8vCi0gICAgLy8gVGhlIHRyaWUgY29uc2lzdHMg
b2YgYSBzZXJpZXMgb2YgVUNoYXItc2VyaWFsaXplZCBub2RlcyBmb3IgaW5jcmVtZW50YWwKLSAg
ICAvLyBVbmljb2RlIHN0cmluZy9VQ2hhciBzZXF1ZW5jZSBtYXRjaGluZy4gKFVDaGFyPTE2LWJp
dCB1bnNpZ25lZCBpbnRlZ2VyKQorICAgIC8vIFRoZSB0cmllIGNvbnNpc3RzIG9mIGEgc2VyaWVz
IG9mIGNoYXIxNl90LXNlcmlhbGl6ZWQgbm9kZXMgZm9yIGluY3JlbWVudGFsCisgICAgLy8gVW5p
Y29kZSBzdHJpbmcvY2hhcjE2X3Qgc2VxdWVuY2UgbWF0Y2hpbmcuIChjaGFyMTZfdD0xNi1iaXQg
dW5zaWduZWQgaW50ZWdlcikKICAgICAvLyBUaGUgcm9vdCBub2RlIGlzIGF0IHRoZSBiZWdpbm5p
bmcgb2YgdGhlIHRyaWUgZGF0YS4KICAgICAvLwogICAgIC8vIFR5cGVzIG9mIG5vZGVzIGFyZSBk
aXN0aW5ndWlzaGVkIGJ5IHRoZWlyIG5vZGUgbGVhZCB1bml0IHJhbmdlcy4KQEAgLTQ4OSw5ICs0
OTEsOSBAQCBwcml2YXRlOgogICAgIC8vCiAgICAgLy8gTm9kZSB0eXBlczoKICAgICAvLyAgLSBG
aW5hbC12YWx1ZSBub2RlOiBTdG9yZXMgYSAzMi1iaXQgaW50ZWdlciBpbiBhIGNvbXBhY3QsIHZh
cmlhYmxlLWxlbmd0aCBmb3JtYXQuCi0gICAgLy8gICAgVGhlIHZhbHVlIGlzIGZvciB0aGUgc3Ry
aW5nL1VDaGFyIHNlcXVlbmNlIHNvIGZhci4KKyAgICAvLyAgICBUaGUgdmFsdWUgaXMgZm9yIHRo
ZSBzdHJpbmcvY2hhcjE2X3Qgc2VxdWVuY2Ugc28gZmFyLgogICAgIC8vICAtIE1hdGNoIG5vZGUs
IG9wdGlvbmFsbHkgd2l0aCBhbiBpbnRlcm1lZGlhdGUgdmFsdWUgaW4gYSBkaWZmZXJlbnQgY29t
cGFjdCBmb3JtYXQuCi0gICAgLy8gICAgVGhlIHZhbHVlLCBpZiBwcmVzZW50LCBpcyBmb3IgdGhl
IHN0cmluZy9VQ2hhciBzZXF1ZW5jZSBzbyBmYXIuCisgICAgLy8gICAgVGhlIHZhbHVlLCBpZiBw
cmVzZW50LCBpcyBmb3IgdGhlIHN0cmluZy9jaGFyMTZfdCBzZXF1ZW5jZSBzbyBmYXIuCiAgICAg
Ly8KICAgICAvLyAgQXNpZGUgZnJvbSB0aGUgdmFsdWUsIHdoaWNoIHVzZXMgdGhlIG5vZGUgbGVh
ZCB1bml0J3MgaGlnaCBiaXRzOgogICAgIC8vCkBAIC01NTgsMTUgKzU2MCwxNSBAQCBwcml2YXRl
OgogCiAgICAgc3RhdGljIGNvbnN0IGludDMyX3Qga01heFR3b1VuaXREZWx0YT0oKGtUaHJlZVVu
aXREZWx0YUxlYWQta01pblR3b1VuaXREZWx0YUxlYWQpPDwxNiktMTsgIC8vIDB4MDNmZWZmZmYK
IAotICAgIFVDaGFyICpvd25lZEFycmF5XzsKKyAgICBjaGFyMTZfdCAqb3duZWRBcnJheV87CiAK
ICAgICAvLyBGaXhlZCB2YWx1ZSByZWZlcmVuY2luZyB0aGUgVUNoYXJzVHJpZSB3b3Jkcy4KLSAg
ICBjb25zdCBVQ2hhciAqdWNoYXJzXzsKKyAgICBjb25zdCBjaGFyMTZfdCAqdWNoYXJzXzsKIAog
ICAgIC8vIEl0ZXJhdG9yIHZhcmlhYmxlcy4KIAogICAgIC8vIFBvaW50ZXIgdG8gbmV4dCB0cmll
IHVuaXQgdG8gcmVhZC4gTlVMTCBpZiBubyBtb3JlIG1hdGNoZXMuCi0gICAgY29uc3QgVUNoYXIg
KnBvc187CisgICAgY29uc3QgY2hhcjE2X3QgKnBvc187CiAgICAgLy8gUmVtYWluaW5nIGxlbmd0
aCBvZiBhIGxpbmVhci1tYXRjaCBub2RlLCBtaW51cyAxLiBOZWdhdGl2ZSBpZiBub3QgaW4gc3Vj
aCBhIG5vZGUuCiAgICAgaW50MzJfdCByZW1haW5pbmdNYXRjaExlbmd0aF87CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2hhcnN0cmllYnVpbGRlci5oIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS91Y2hhcnN0cmllYnVpbGRlci5oCmluZGV4IDM1ZTM1M2Q0MWI1MTVl
ZWE4ZmY2YWQ5NzIwMzE1MDFlMjE2NDRmMzkuLjJhYTQ3NTdlNTJjYjA3YzdlMWMyNzkwMmQ4ODNh
MzU3YjY2ZDMxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNoYXJzdHJp
ZWJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjaGFyc3RyaWVidWlsZGVy
LmgKQEAgLTEsMTAgKzEsMTIgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMu
IGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIENv
cHlyaWdodCAoQykgMjAxMC0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisq
ICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGlu
ZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1Y2hhcnN0cmllYnVpbGRlci5o
Ci0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRh
YiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTg3LDIxICs4
OSwyMSBAQCBwdWJsaWM6CiAgICAgVUNoYXJzVHJpZSAqYnVpbGQoVVN0cmluZ1RyaWVCdWlsZE9w
dGlvbiBidWlsZE9wdGlvbiwgVUVycm9yQ29kZSAmZXJyb3JDb2RlKTsKIAogICAgIC8qKgotICAg
ICAqIEJ1aWxkcyBhIFVDaGFyc1RyaWUgZm9yIHRoZSBhZGQoKWVkIGRhdGEgYW5kIFVDaGFyLXNl
cmlhbGl6ZXMgaXQuCisgICAgICogQnVpbGRzIGEgVUNoYXJzVHJpZSBmb3IgdGhlIGFkZCgpZWQg
ZGF0YSBhbmQgY2hhcjE2X3Qtc2VyaWFsaXplcyBpdC4KICAgICAgKiBPbmNlIGJ1aWx0LCBubyBm
dXJ0aGVyIGRhdGEgY2FuIGJlIGFkZCgpZWQgdW50aWwgY2xlYXIoKSBpcyBjYWxsZWQuCiAgICAg
ICoKICAgICAgKiBBIFVDaGFyc1RyaWUgY2Fubm90IGJlIGVtcHR5LiBBdCBsZWFzdCBvbmUgKHN0
cmluZywgdmFsdWUpIHBhaXIKICAgICAgKiBtdXN0IGhhdmUgYmVlbiBhZGQoKWVkLgogICAgICAq
CiAgICAgICogTXVsdGlwbGUgY2FsbHMgdG8gYnVpbGRVbmljb2RlU3RyaW5nKCkgc2V0IHRoZSBV
bmljb2RlU3RyaW5ncyB0byB0aGUKLSAgICAgKiBidWlsZGVyJ3Mgc2FtZSBVQ2hhciBhcnJheSwg
d2l0aG91dCByZWJ1aWxkaW5nLgorICAgICAqIGJ1aWxkZXIncyBzYW1lIGNoYXIxNl90IGFycmF5
LCB3aXRob3V0IHJlYnVpbGRpbmcuCiAgICAgICogSWYgYnVpbGRVbmljb2RlU3RyaW5nKCkgaXMg
Y2FsbGVkIGFmdGVyIGJ1aWxkKCksIHRoZSB0cmllIHdpbGwgYmUKICAgICAgKiByZS1zZXJpYWxp
emVkIGludG8gYSBuZXcgYXJyYXkuCiAgICAgICogSWYgYnVpbGQoKSBpcyBjYWxsZWQgYWZ0ZXIg
YnVpbGRVbmljb2RlU3RyaW5nKCksIHRoZSB0cmllIG9iamVjdCB3aWxsIGJlY29tZQogICAgICAq
IHRoZSBvd25lciBvZiB0aGUgcHJldmlvdXNseSByZXR1cm5lZCBhcnJheS4KICAgICAgKiBBZnRl
ciBjbGVhcigpIGhhcyBiZWVuIGNhbGxlZCwgYSBuZXcgYXJyYXkgd2lsbCBiZSB1c2VkIGFzIHdl
bGwuCiAgICAgICogQHBhcmFtIGJ1aWxkT3B0aW9uIEJ1aWxkIG9wdGlvbiwgc2VlIFVTdHJpbmdU
cmllQnVpbGRPcHRpb24uCi0gICAgICogQHBhcmFtIHJlc3VsdCBBIFVuaWNvZGVTdHJpbmcgd2hp
Y2ggd2lsbCBiZSBzZXQgdG8gdGhlIFVDaGFyLXNlcmlhbGl6ZWQKKyAgICAgKiBAcGFyYW0gcmVz
dWx0IEEgVW5pY29kZVN0cmluZyB3aGljaCB3aWxsIGJlIHNldCB0byB0aGUgY2hhcjE2X3Qtc2Vy
aWFsaXplZAogICAgICAqICAgICAgICAgICAgICAgVUNoYXJzVHJpZSBmb3IgdGhlIGFkZCgpZWQg
ZGF0YS4KICAgICAgKiBAcGFyYW0gZXJyb3JDb2RlIFN0YW5kYXJkIElDVSBlcnJvciBjb2RlLiBJ
dHMgaW5wdXQgdmFsdWUgbXVzdAogICAgICAqICAgICAgICAgICAgICAgICAgcGFzcyB0aGUgVV9T
VUNDRVNTKCkgdGVzdCwgb3IgZWxzZSB0aGUgZnVuY3Rpb24gcmV0dXJucwpAQCAtMTMzLDE0ICsx
MzUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkVUNoYXJzKFVTdHJpbmdUcmllQnVpbGRP
cHRpb24gYnVpbGRPcHRpb24sIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CiAKICAgICB2aXJ0dWFs
IGludDMyX3QgZ2V0RWxlbWVudFN0cmluZ0xlbmd0aChpbnQzMl90IGkpIGNvbnN0OwotICAgIHZp
cnR1YWwgVUNoYXIgZ2V0RWxlbWVudFVuaXQoaW50MzJfdCBpLCBpbnQzMl90IHVuaXRJbmRleCkg
Y29uc3Q7CisgICAgdmlydHVhbCBjaGFyMTZfdCBnZXRFbGVtZW50VW5pdChpbnQzMl90IGksIGlu
dDMyX3QgdW5pdEluZGV4KSBjb25zdDsKICAgICB2aXJ0dWFsIGludDMyX3QgZ2V0RWxlbWVudFZh
bHVlKGludDMyX3QgaSkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGludDMyX3QgZ2V0TGltaXRPZkxp
bmVhck1hdGNoKGludDMyX3QgZmlyc3QsIGludDMyX3QgbGFzdCwgaW50MzJfdCB1bml0SW5kZXgp
IGNvbnN0OwogCiAgICAgdmlydHVhbCBpbnQzMl90IGNvdW50RWxlbWVudFVuaXRzKGludDMyX3Qg
c3RhcnQsIGludDMyX3QgbGltaXQsIGludDMyX3QgdW5pdEluZGV4KSBjb25zdDsKICAgICB2aXJ0
dWFsIGludDMyX3Qgc2tpcEVsZW1lbnRzQnlTb21lVW5pdHMoaW50MzJfdCBpLCBpbnQzMl90IHVu
aXRJbmRleCwgaW50MzJfdCBjb3VudCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQzMl90IGluZGV4
T2ZFbGVtZW50V2l0aE5leHRVbml0KGludDMyX3QgaSwgaW50MzJfdCB1bml0SW5kZXgsIFVDaGFy
IHVuaXQpIGNvbnN0OworICAgIHZpcnR1YWwgaW50MzJfdCBpbmRleE9mRWxlbWVudFdpdGhOZXh0
VW5pdChpbnQzMl90IGksIGludDMyX3QgdW5pdEluZGV4LCBjaGFyMTZfdCB1bml0KSBjb25zdDsK
IAogICAgIHZpcnR1YWwgVUJvb2wgbWF0Y2hOb2Rlc0NhbkhhdmVWYWx1ZXMoKSBjb25zdCB7IHJl
dHVybiBUUlVFOyB9CiAKQEAgLTE1MCwxMSArMTUyLDExIEBAIHByaXZhdGU6CiAKICAgICBjbGFz
cyBVQ1RMaW5lYXJNYXRjaE5vZGUgOiBwdWJsaWMgTGluZWFyTWF0Y2hOb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFVDVExpbmVhck1hdGNoTm9kZShjb25zdCBVQ2hhciAqdW5pdHMsIGludDMy
X3QgbGVuLCBOb2RlICpuZXh0Tm9kZSk7CisgICAgICAgIFVDVExpbmVhck1hdGNoTm9kZShjb25z
dCBjaGFyMTZfdCAqdW5pdHMsIGludDMyX3QgbGVuLCBOb2RlICpuZXh0Tm9kZSk7CiAgICAgICAg
IHZpcnR1YWwgVUJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlICZvdGhlcikgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB3cml0ZShTdHJpbmdUcmllQnVpbGRlciAmYnVpbGRlcik7CiAgICAg
cHJpdmF0ZToKLSAgICAgICAgY29uc3QgVUNoYXIgKnM7CisgICAgICAgIGNvbnN0IGNoYXIxNl90
ICpzOwogICAgIH07CiAKICAgICB2aXJ0dWFsIE5vZGUgKmNyZWF0ZUxpbmVhck1hdGNoTm9kZShp
bnQzMl90IGksIGludDMyX3QgdW5pdEluZGV4LCBpbnQzMl90IGxlbmd0aCwKQEAgLTE2Miw3ICsx
NjQsNyBAQCBwcml2YXRlOgogCiAgICAgVUJvb2wgZW5zdXJlQ2FwYWNpdHkoaW50MzJfdCBsZW5n
dGgpOwogICAgIHZpcnR1YWwgaW50MzJfdCB3cml0ZShpbnQzMl90IHVuaXQpOwotICAgIGludDMy
X3Qgd3JpdGUoY29uc3QgVUNoYXIgKnMsIGludDMyX3QgbGVuZ3RoKTsKKyAgICBpbnQzMl90IHdy
aXRlKGNvbnN0IGNoYXIxNl90ICpzLCBpbnQzMl90IGxlbmd0aCk7CiAgICAgdmlydHVhbCBpbnQz
Ml90IHdyaXRlRWxlbWVudFVuaXRzKGludDMyX3QgaSwgaW50MzJfdCB1bml0SW5kZXgsIGludDMy
X3QgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIGludDMyX3Qgd3JpdGVWYWx1ZUFuZEZpbmFsKGludDMy
X3QgaSwgVUJvb2wgaXNGaW5hbCk7CiAgICAgdmlydHVhbCBpbnQzMl90IHdyaXRlVmFsdWVBbmRU
eXBlKFVCb29sIGhhc1ZhbHVlLCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IG5vZGUpOwpAQCAtMTcz
LDkgKzE3NSw5IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBlbGVtZW50c0NhcGFjaXR5OwogICAg
IGludDMyX3QgZWxlbWVudHNMZW5ndGg7CiAKLSAgICAvLyBVQ2hhciBzZXJpYWxpemF0aW9uIG9m
IHRoZSB0cmllLgorICAgIC8vIGNoYXIxNl90IHNlcmlhbGl6YXRpb24gb2YgdGhlIHRyaWUuCiAg
ICAgLy8gR3Jvd3MgZnJvbSB0aGUgYmFjazogdWNoYXJzTGVuZ3RoIG1lYXN1cmVzIGZyb20gdGhl
IGVuZCBvZiB0aGUgYnVmZmVyIQotICAgIFVDaGFyICp1Y2hhcnM7CisgICAgY2hhcjE2X3QgKnVj
aGFyczsKICAgICBpbnQzMl90IHVjaGFyc0NhcGFjaXR5OwogICAgIGludDMyX3QgdWNoYXJzTGVu
Z3RoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNocml0ZXIuaCBi
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNocml0ZXIuaAppbmRleCA2ZDVhOTkwZjdiN2VkM2Q1
YmFjZjJkYTg0NzFlZjhmZjk0MjJmOTljLi5lZmNkMjYzZjhiY2M5MGVhNmE3OGI5ZTZjMWY3NjUx
YmU2MjFhNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjaHJpdGVyLmgK
KysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2hyaXRlci5oCkBAIC0xLDMgKzEsNSBAQAor
Ly8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vu
c2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwK
IC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCiAqICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDUsIEludGVybmF0
aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKQEAgLTEzLDE4ICsxNSwxOCBAQAogCiAvKioKICAqIFxm
aWxlIAotICogXGJyaWVmIEMrKyBBUEk6IFVDaGFyIENoYXJhY3RlciBJdGVyYXRvcgorICogXGJy
aWVmIEMrKyBBUEk6IGNoYXIxNl90IENoYXJhY3RlciBJdGVyYXRvcgogICovCiAgCiBVX05BTUVT
UEFDRV9CRUdJTgogCiAvKioKICAqIEEgY29uY3JldGUgc3ViY2xhc3Mgb2YgQ2hhcmFjdGVySXRl
cmF0b3IgdGhhdCBpdGVyYXRlcyBvdmVyIHRoZQotICogY2hhcmFjdGVycyAoY29kZSB1bml0cyBv
ciBjb2RlIHBvaW50cykgaW4gYSBVQ2hhciBhcnJheS4KKyAqIGNoYXJhY3RlcnMgKGNvZGUgdW5p
dHMgb3IgY29kZSBwb2ludHMpIGluIGEgY2hhcjE2X3QgYXJyYXkuCiAgKiBJdCdzIHBvc3NpYmxl
IG5vdCBvbmx5IHRvIGNyZWF0ZSBhbgotICogaXRlcmF0b3IgdGhhdCBpdGVyYXRlcyBvdmVyIGFu
IGVudGlyZSBVQ2hhciBhcnJheSwgYnV0IGFsc28gdG8KLSAqIGNyZWF0ZSBvbmUgdGhhdCBpdGVy
YXRlcyBvdmVyIG9ubHkgYSBzdWJyYW5nZSBvZiBhIFVDaGFyIGFycmF5Ci0gKiAoaXRlcmF0b3Jz
IG92ZXIgZGlmZmVyZW50IHN1YnJhbmdlcyBvZiB0aGUgc2FtZSBVQ2hhciBhcnJheSBkb24ndAor
ICogaXRlcmF0b3IgdGhhdCBpdGVyYXRlcyBvdmVyIGFuIGVudGlyZSBjaGFyMTZfdCBhcnJheSwg
YnV0IGFsc28gdG8KKyAqIGNyZWF0ZSBvbmUgdGhhdCBpdGVyYXRlcyBvdmVyIG9ubHkgYSBzdWJy
YW5nZSBvZiBhIGNoYXIxNl90IGFycmF5CisgKiAoaXRlcmF0b3JzIG92ZXIgZGlmZmVyZW50IHN1
YnJhbmdlcyBvZiB0aGUgc2FtZSBjaGFyMTZfdCBhcnJheSBkb24ndAogICogY29tcGFyZSBlcXVh
bCkuCiAgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yCiAgKiBAc2VlIEZvcndhcmRDaGFyYWN0ZXJJ
dGVyYXRvcgpAQCAtMzMsMzQgKzM1LDM0IEBAIFVfTkFNRVNQQUNFX0JFR0lOCiBjbGFzcyBVX0NP
TU1PTl9BUEkgVUNoYXJDaGFyYWN0ZXJJdGVyYXRvciA6IHB1YmxpYyBDaGFyYWN0ZXJJdGVyYXRv
ciB7CiBwdWJsaWM6CiAgIC8qKgotICAgKiBDcmVhdGUgYW4gaXRlcmF0b3Igb3ZlciB0aGUgVUNo
YXIgYXJyYXkgcmVmZXJyZWQgdG8gYnkgInRleHRQdHIiLgorICAgKiBDcmVhdGUgYW4gaXRlcmF0
b3Igb3ZlciB0aGUgY2hhcjE2X3QgYXJyYXkgcmVmZXJyZWQgdG8gYnkgInRleHRQdHIiLgogICAg
KiBUaGUgaXRlcmF0aW9uIHJhbmdlIGlzIDAgdG8gPGNvZGU+bGVuZ3RoLTE8L2NvZGU+LgogICAg
KiB0ZXh0IGlzIG9ubHkgYWxpYXNlZCwgbm90IGFkb3B0ZWQgKHRoZQogICAgKiBkZXN0cnVjdG9y
IHdpbGwgbm90IGRlbGV0ZSBpdCkuCi0gICAqIEBwYXJhbSB0ZXh0UHRyIFRoZSBVQ2hhciBhcnJh
eSB0byBiZSBpdGVyYXRlZCBvdmVyCi0gICAqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0
aGUgVUNoYXIgYXJyYXkKKyAgICogQHBhcmFtIHRleHRQdHIgVGhlIGNoYXIxNl90IGFycmF5IHRv
IGJlIGl0ZXJhdGVkIG92ZXIKKyAgICogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBj
aGFyMTZfdCBhcnJheQogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIFVDaGFyQ2hhcmFj
dGVySXRlcmF0b3IoY29uc3QgVUNoYXIqIHRleHRQdHIsIGludDMyX3QgbGVuZ3RoKTsKKyAgVUNo
YXJDaGFyYWN0ZXJJdGVyYXRvcihDb25zdENoYXIxNlB0ciB0ZXh0UHRyLCBpbnQzMl90IGxlbmd0
aCk7CiAKICAgLyoqCi0gICAqIENyZWF0ZSBhbiBpdGVyYXRvciBvdmVyIHRoZSBVQ2hhciBhcnJh
eSByZWZlcnJlZCB0byBieSAidGV4dFB0ciIuCisgICAqIENyZWF0ZSBhbiBpdGVyYXRvciBvdmVy
IHRoZSBjaGFyMTZfdCBhcnJheSByZWZlcnJlZCB0byBieSAidGV4dFB0ciIuCiAgICAqIFRoZSBp
dGVyYXRpb24gcmFuZ2UgaXMgMCB0byA8Y29kZT5sZW5ndGgtMTwvY29kZT4uCiAgICAqIHRleHQg
aXMgb25seSBhbGlhc2VkLCBub3QgYWRvcHRlZCAodGhlCiAgICAqIGRlc3RydWN0b3Igd2lsbCBu
b3QgZGVsZXRlIGl0KS4KICAgICogVGhlIHN0YXJ0aW5nCiAgICAqIHBvc2l0aW9uIGlzIHNwZWNp
ZmllZCBieSAicG9zaXRpb24iLiBJZiAicG9zaXRpb24iIGlzIG91dHNpZGUgdGhlIHZhbGlkCiAg
ICAqIGl0ZXJhdGlvbiByYW5nZSwgdGhlIGJlaGF2aW9yIG9mIHRoaXMgb2JqZWN0IGlzIHVuZGVm
aW5lZC4KLSAgICogQHBhcmFtIHRleHRQdHIgVGhlIFVDaGFyIGFycmF5IHRvIGJlIGl0ZXJhdGQg
b3ZlcgotICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIFVDaGFyIGFycmF5Cisg
ICAqIEBwYXJhbSB0ZXh0UHRyIFRoZSBjaGFyMTZfdCBhcnJheSB0byBiZSBpdGVyYXRkIG92ZXIK
KyAgICogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBjaGFyMTZfdCBhcnJheQogICAg
KiBAcGFyYW0gcG9zaXRpb24gVGhlIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIHRoZSBpdGVyYXRpb24K
ICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBVQ2hhckNoYXJhY3Rlckl0ZXJhdG9yKGNv
bnN0IFVDaGFyKiB0ZXh0UHRyLCBpbnQzMl90IGxlbmd0aCwKKyAgVUNoYXJDaGFyYWN0ZXJJdGVy
YXRvcihDb25zdENoYXIxNlB0ciB0ZXh0UHRyLCBpbnQzMl90IGxlbmd0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IHBvc2l0aW9uKTsKIAogICAvKioKLSAgICogQ3JlYXRlIGFu
IGl0ZXJhdG9yIG92ZXIgdGhlIFVDaGFyIGFycmF5IHJlZmVycmVkIHRvIGJ5ICJ0ZXh0UHRyIi4K
KyAgICogQ3JlYXRlIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGNoYXIxNl90IGFycmF5IHJlZmVycmVk
IHRvIGJ5ICJ0ZXh0UHRyIi4KICAgICogVGhlIGl0ZXJhdGlvbiByYW5nZSBpcyAwIHRvIDxjb2Rl
PmVuZC0xPC9jb2RlPi4KICAgICogdGV4dCBpcyBvbmx5IGFsaWFzZWQsIG5vdCBhZG9wdGVkICh0
aGUKICAgICogZGVzdHJ1Y3RvciB3aWxsIG5vdCBkZWxldGUgaXQpLgpAQCAtNjgsMTQgKzcwLDE0
IEBAIHB1YmxpYzoKICAgICogcG9zaXRpb24gaXMgc3BlY2lmaWVkIGJ5ICJwb3NpdGlvbiIuIElm
IGJlZ2luIGFuZCBlbmQgZG8gbm90CiAgICAqIGZvcm0gYSB2YWxpZCBpdGVyYXRpb24gcmFuZ2Ug
b3IgInBvc2l0aW9uIiBpcyBvdXRzaWRlIHRoZSB2YWxpZAogICAgKiBpdGVyYXRpb24gcmFuZ2Us
IHRoZSBiZWhhdmlvciBvZiB0aGlzIG9iamVjdCBpcyB1bmRlZmluZWQuCi0gICAqIEBwYXJhbSB0
ZXh0UHRyIFRoZSBVQ2hhciBhcnJheSB0byBiZSBpdGVyYXRlZCBvdmVyCi0gICAqIEBwYXJhbSBs
ZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgVUNoYXIgYXJyYXkKKyAgICogQHBhcmFtIHRleHRQdHIg
VGhlIGNoYXIxNl90IGFycmF5IHRvIGJlIGl0ZXJhdGVkIG92ZXIKKyAgICogQHBhcmFtIGxlbmd0
aCBUaGUgbGVuZ3RoIG9mIHRoZSBjaGFyMTZfdCBhcnJheQogICAgKiBAcGFyYW0gdGV4dEJlZ2lu
ICBUaGUgYmVnaW4gcG9zaXRpb24gb2YgdGhlIGl0ZXJhdGlvbiByYW5nZQogICAgKiBAcGFyYW0g
dGV4dEVuZCAgICBUaGUgZW5kIHBvc2l0aW9uIG9mIHRoZSBpdGVyYXRpb24gcmFuZ2UKICAgICog
QHBhcmFtIHBvc2l0aW9uICAgIFRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgaXRlcmF0aW9u
CiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgVUNoYXJDaGFyYWN0ZXJJdGVyYXRvcihj
b25zdCBVQ2hhciogdGV4dFB0ciwgaW50MzJfdCBsZW5ndGgsCisgIFVDaGFyQ2hhcmFjdGVySXRl
cmF0b3IoQ29uc3RDaGFyMTZQdHIgdGV4dFB0ciwgaW50MzJfdCBsZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCB0ZXh0QmVnaW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCB0ZXh0RW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcG9z
aXRpb24pOwpAQCAtMTM5LDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICogQHJldHVybiB0aGUgZmly
c3QgY29kZSB1bml0IGluIGl0cyBpdGVyYXRpb24gcmFuZ2UuCiAgICAqIEBzdGFibGUgSUNVIDIu
MAogICAgKi8KLSAgdmlydHVhbCBVQ2hhciAgICAgICAgIGZpcnN0KHZvaWQpOworICB2aXJ0dWFs
IGNoYXIxNl90ICAgICAgICAgZmlyc3Qodm9pZCk7CiAKICAgLyoqCiAgICAqIFNldHMgdGhlIGl0
ZXJhdG9yIHRvIHJlZmVyIHRvIHRoZSBmaXJzdCBjb2RlIHVuaXQgaW4gaXRzCkBAIC0xNDksNyAr
MTUxLDcgQEAgcHVibGljOgogICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBjb2RlIHVuaXQgaW4gaXRz
IGl0ZXJhdGlvbiByYW5nZQogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIHZpcnR1YWwg
VUNoYXIgICAgICAgICBmaXJzdFBvc3RJbmModm9pZCk7CisgIHZpcnR1YWwgY2hhcjE2X3QgICAg
ICAgICBmaXJzdFBvc3RJbmModm9pZCk7CiAKICAgLyoqCiAgICAqIFNldHMgdGhlIGl0ZXJhdG9y
IHRvIHJlZmVyIHRvIHRoZSBmaXJzdCBjb2RlIHBvaW50IGluIGl0cwpAQCAtMTc5LDcgKzE4MSw3
IEBAIHB1YmxpYzoKICAgICogQHJldHVybiB0aGUgbGFzdCBjb2RlIHVuaXQgaW4gaXRzIGl0ZXJh
dGlvbiByYW5nZS4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICB2aXJ0dWFsIFVDaGFy
ICAgICAgICAgbGFzdCh2b2lkKTsKKyAgdmlydHVhbCBjaGFyMTZfdCAgICAgICAgIGxhc3Qodm9p
ZCk7CiAKICAgLyoqCiAgICAqIFNldHMgdGhlIGl0ZXJhdG9yIHRvIHJlZmVyIHRvIHRoZSBsYXN0
IGNvZGUgcG9pbnQgaW4gaXRzCkBAIC0xOTgsNyArMjAwLDcgQEAgcHVibGljOgogICAgKiBAcmV0
dXJuIHRoZSBjb2RlIHVuaXQKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICB2aXJ0dWFs
IFVDaGFyICAgICAgICAgc2V0SW5kZXgoaW50MzJfdCBwb3NpdGlvbik7CisgIHZpcnR1YWwgY2hh
cjE2X3QgICAgICAgICBzZXRJbmRleChpbnQzMl90IHBvc2l0aW9uKTsKIAogICAvKioKICAgICog
U2V0cyB0aGUgaXRlcmF0b3IgdG8gcmVmZXIgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29kZSBw
b2ludApAQCAtMjE4LDcgKzIyMCw3IEBAIHB1YmxpYzoKICAgICogQHJldHVybiB0aGUgY29kZSB1
bml0IHRoZSBpdGVyYXRvciBjdXJyZW50bHkgcmVmZXJzIHRvLgogICAgKiBAc3RhYmxlIElDVSAy
LjAKICAgICovCi0gIHZpcnR1YWwgVUNoYXIgICAgICAgICBjdXJyZW50KHZvaWQpIGNvbnN0Owor
ICB2aXJ0dWFsIGNoYXIxNl90ICAgICAgICAgY3VycmVudCh2b2lkKSBjb25zdDsKIAogICAvKioK
ICAgICogUmV0dXJucyB0aGUgY29kZSBwb2ludCB0aGUgaXRlcmF0b3IgY3VycmVudGx5IHJlZmVy
cyB0by4KQEAgLTIzNCw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gdGhlIG5leHQg
Y29kZSB1bml0IGluIHRoZSBpdGVyYXRpb24gcmFuZ2UuCiAgICAqIEBzdGFibGUgSUNVIDIuMAog
ICAgKi8KLSAgdmlydHVhbCBVQ2hhciAgICAgICAgIG5leHQodm9pZCk7CisgIHZpcnR1YWwgY2hh
cjE2X3QgICAgICAgICBuZXh0KHZvaWQpOwogCiAgIC8qKgogICAgKiBHZXRzIHRoZSBjdXJyZW50
IGNvZGUgdW5pdCBmb3IgcmV0dXJuaW5nIGFuZCBhZHZhbmNlcyB0byB0aGUgbmV4dCBjb2RlIHVu
aXQKQEAgLTI0NCw3ICsyNDYsNyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gdGhlIGN1cnJlbnQg
Y29kZSB1bml0LgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIHZpcnR1YWwgVUNoYXIg
ICAgICAgICBuZXh0UG9zdEluYyh2b2lkKTsKKyAgdmlydHVhbCBjaGFyMTZfdCAgICAgICAgIG5l
eHRQb3N0SW5jKHZvaWQpOwogCiAgIC8qKgogICAgKiBBZHZhbmNlcyB0byB0aGUgbmV4dCBjb2Rl
IHBvaW50IGluIHRoZSBpdGVyYXRpb24gcmFuZ2UgKHRvd2FyZApAQCAtMjg2LDcgKzI4OCw3IEBA
IHB1YmxpYzoKICAgICogQHJldHVybiB0aGUgcHJldmlvdXMgY29kZSB1bml0IGluIHRoZSBpdGVy
YXRpb24gcmFuZ2UuCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgdmlydHVhbCBVQ2hh
ciAgICAgICAgIHByZXZpb3VzKHZvaWQpOworICB2aXJ0dWFsIGNoYXIxNl90ICAgICAgICAgcHJl
dmlvdXModm9pZCk7CiAKICAgLyoqCiAgICAqIEFkdmFuY2VzIHRvIHRoZSBwcmV2aW91cyBjb2Rl
IHBvaW50IGluIHRoZSBpdGVyYXRpb24gcmFuZ2UgKHRvd2FyZApAQCAtMzMyLDE2ICszMzQsMjAg
QEAgcHVibGljOgogICAgKiBAcmV0dXJuIHRoZSBuZXcgcG9zaXRpb24KICAgICogQHN0YWJsZSBJ
Q1UgMi4wCiAgICAqLworI2lmZGVmIG1vdmUzMgorICAgLy8gT25lIG9mIHRoZSBzeXN0ZW0gaGVh
ZGVycyByaWdodCBub3cgaXMgc29tZXRpbWVzIGRlZmluaW5nIGEgY29uZmxpY3RpbmcgbWFjcm8g
d2UgZG9uJ3QgdXNlCisjdW5kZWYgbW92ZTMyCisjZW5kaWYKICAgdmlydHVhbCBpbnQzMl90ICAg
ICAgbW92ZTMyKGludDMyX3QgZGVsdGEsIEVPcmlnaW4gb3JpZ2luKTsKIAogICAvKioKICAgICog
U2V0cyB0aGUgaXRlcmF0b3IgdG8gaXRlcmF0ZSBvdmVyIGEgbmV3IHJhbmdlIG9mIHRleHQKICAg
ICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICB2b2lkIHNldFRleHQoY29uc3QgVUNoYXIqIG5l
d1RleHQsIGludDMyX3QgbmV3VGV4dExlbmd0aCk7CisgIHZvaWQgc2V0VGV4dChDb25zdENoYXIx
NlB0ciBuZXdUZXh0LCBpbnQzMl90IG5ld1RleHRMZW5ndGgpOwogCiAgIC8qKgotICAgKiBDb3Bp
ZXMgdGhlIFVDaGFyIGFycmF5IHVuZGVyIGl0ZXJhdGlvbiBpbnRvIHRoZSBVbmljb2RlU3RyaW5n
CisgICAqIENvcGllcyB0aGUgY2hhcjE2X3QgYXJyYXkgdW5kZXIgaXRlcmF0aW9uIGludG8gdGhl
IFVuaWNvZGVTdHJpbmcKICAgICogcmVmZXJyZWQgdG8gYnkgInJlc3VsdCIuICBFdmVuIGlmIHRo
aXMgaXRlcmF0b3IgaXRlcmF0ZXMgYWNyb3NzCiAgICAqIG9ubHkgYSBwYXJ0IG9mIHRoaXMgc3Ry
aW5nLCB0aGUgd2hvbGUgc3RyaW5nIGlzIGNvcGllZC4KICAgICogQHBhcmFtIHJlc3VsdCBSZWNl
aXZlcyBhIGNvcHkgb2YgdGhlIHRleHQgdW5kZXIgaXRlcmF0aW9uLgpAQCAtMzczLDcgKzM3OSw3
IEBAIHByb3RlY3RlZDoKICAgICogUHJvdGVjdGVkIG1lbWJlciB0ZXh0CiAgICAqIEBzdGFibGUg
SUNVIDIuMAogICAgKi8KLSAgY29uc3QgVUNoYXIqICAgICAgICAgICAgdGV4dDsKKyAgY29uc3Qg
Y2hhcjE2X3QqICAgICAgICAgICAgdGV4dDsKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91Y2xlYW4uaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNsZWFuLmgK
aW5kZXggZDlhMWU1MzkwNThjZGU4NWVmZDJhYTg0Y2I3MDdkMzc0MTc0MjVmZS4uNWIwNDg2ZDM5
NTAxNzdiMWM4MGQ3MTNmOTJmYzYyZmRlMmNiMGI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91Y2xlYW4uaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbGVhbi5o
CkBAIC0xLDEwICsxLDEyIEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBh
bmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2Rl
Lm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmln
aHQgKEMpIDIwMDEtMjAxNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgICAg
ICAgICAgICAgICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgdWNsZWFuLmgKLSogICBlbmNv
ZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAg
OCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpAQCAtOTksNyArMTAxLDcgQEAgdV9p
bml0KFVFcnJvckNvZGUgKnN0YXR1cyk7CiBVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMiAKIHVfY2xl
YW51cCh2b2lkKTsKIAotCitVX0NERUNMX0JFR0lOCiAvKioKICAgKiAgUG9pbnRlciB0eXBlIGZv
ciBhIHVzZXIgc3VwcGxpZWQgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb24uCiAgICogIEBwYXJh
bSBjb250ZXh0IHVzZXIgc3VwcGxpZWQgdmFsdWUsIG9idGFpbmVkIGZyb20gZnJvbSB1X3NldE1l
bW9yeUZ1bmN0aW9ucygpLgpAQCAtMTQ3LDkgKzE0OSwxMCBAQCB0eXBlZGVmIHZvaWQgIFVfQ0FM
TENPTlYgVU1lbUZyZWVGbiAoY29uc3Qgdm9pZCAqY29udGV4dCwgdm9pZCAqbWVtKTsKICAqICBA
c3lzdGVtCiAgKi8gIAogVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgCi11X3NldE1lbW9yeUZ1bmN0
aW9ucyhjb25zdCB2b2lkICpjb250ZXh0LCBVTWVtQWxsb2NGbiAqYSwgVU1lbVJlYWxsb2NGbiAq
ciwgVU1lbUZyZWVGbiAqZiwgCit1X3NldE1lbW9yeUZ1bmN0aW9ucyhjb25zdCB2b2lkICpjb250
ZXh0LCBVTWVtQWxsb2NGbiAqIFVfQ0FMTENPTlZfRlBUUiBhLCBVTWVtUmVhbGxvY0ZuICogVV9D
QUxMQ09OVl9GUFRSIHIsIFVNZW1GcmVlRm4gKiBVX0NBTExDT05WX0ZQVFIgZiwgCiAgICAgICAg
ICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKK1VfQ0RFQ0xfRU5ECiAKICNpZm5k
ZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0x
NzAsNiArMTczLDcgQEAgdV9zZXRNZW1vcnlGdW5jdGlvbnMoY29uc3Qgdm9pZCAqY29udGV4dCwg
VU1lbUFsbG9jRm4gKmEsIFVNZW1SZWFsbG9jRm4gKnIsIFVNZW0KICAgKi8KIHR5cGVkZWYgdm9p
ZCAqVU1UWDsKIAorVV9DREVDTF9CRUdJTgogLyoqCiAgICogIEZ1bmN0aW9uIFBvaW50ZXIgdHlw
ZSBmb3IgYSB1c2VyIHN1cHBsaWVkIG11dGV4IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgogICAq
ICBUaGUgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBieSBJQ1Ugd2hlbmV2
ZXIgSUNVIG5lZWRzIHRvIGNyZWF0ZSBhCkBAIC0xOTksNyArMjAzLDcgQEAgdHlwZWRlZiB2b2lk
IFVfQ0FMTENPTlYgVU10eEluaXRGbiAoY29uc3Qgdm9pZCAqY29udGV4dCwgVU1UWCAgKm11dGV4
LCBVRXJyb3JDb2QKICAgKiAgQHN5c3RlbQogICAqLwogdHlwZWRlZiB2b2lkIFVfQ0FMTENPTlYg
VU10eEZuICAgKGNvbnN0IHZvaWQgKmNvbnRleHQsIFVNVFggICptdXRleCk7Ci0KK1VfQ0RFQ0xf
RU5ECiAKIC8qKgogICAqICBTZXQgdGhlIGZ1bmN0aW9ucyB0aGF0IElDVSB3aWxsIHVzZSBmb3Ig
bXV0ZXggb3BlcmF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y252
LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnYuaAppbmRleCA1NjQ2NTZjMjg0ZjhlMDI3
MGIyYzk1NjI1NDMyMmI0NDQzYjMwMzUxLi4wNWQwMDUwZjRhMmZjOWY5NzNkYTA4ZjNmY2QyNjVm
MjQxMjg4MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnYuaAorKysg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnYuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIw
MTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVy
bXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMTk5OS0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1
c2luZXNzIE1hY2hpbmVzCkBAIC0yNyw3ICsyOSw3IEBACiAgKiBjb252ZXJ0ZXIsIHlvdSBjYW4g
Z2V0IGl0cyBwcm9wZXJ0aWVzLCBzZXQgb3B0aW9ucywgY29udmVydCB5b3VyIGRhdGEgYW5kCiAg
KiBjbG9zZSB0aGUgY29udmVydGVyLjwvcD4KICAqCi0gKiA8cD5TaW5jZSBtYW55IHNvZnR3YXJl
IHByb2dyYW1zIHJlY29naXplIGRpZmZlcmVudCBjb252ZXJ0ZXIgbmFtZXMgZm9yCisgKiA8cD5T
aW5jZSBtYW55IHNvZnR3YXJlIHByb2dyYW1zIHJlY29nbml6ZSBkaWZmZXJlbnQgY29udmVydGVy
IG5hbWVzIGZvcgogICogZGlmZmVyZW50IHR5cGVzIG9mIGNvbnZlcnRlcnMsIHRoZXJlIGFyZSBv
dGhlciBmdW5jdGlvbnMgaW4gdGhpcyBBUEkgdG8KICAqIGl0ZXJhdGUgb3ZlciB0aGUgY29udmVy
dGVyIGFsaWFzZXMuIFRoZSBmdW5jdGlvbnMge0BsaW5rIHVjbnZfZ2V0QXZhaWxhYmxlTmFtZSgp
IH0sCiAgKiB7QGxpbmsgdWNudl9nZXRBbGlhcygpIH0gYW5kIHtAbGluayB1Y252X2dldFN0YW5k
YXJkTmFtZSgpIH0gYXJlIHNvbWUgb2YgdGhlCkBAIC0xODIsNyArMTg0LDcgQEAgdHlwZWRlZiBl
bnVtIHsKIAogLyoqCiAgKiBGdW5jdGlvbiBwb2ludGVyIGZvciBlcnJvciBjYWxsYmFjayBpbiB0
aGUgY29kZXBhZ2UgdG8gdW5pY29kZSBkaXJlY3Rpb24uCi0gKiBDYWxsZWQgd2hlbiBhbiBlcnJv
ciBoYXMgb2NjdXJlZCBpbiBjb252ZXJzaW9uIHRvIHVuaWNvZGUsIG9yIG9uIG9wZW4vY2xvc2Ug
b2YgdGhlIGNhbGxiYWNrIChzZWUgcmVhc29uKS4KKyAqIENhbGxlZCB3aGVuIGFuIGVycm9yIGhh
cyBvY2N1cnJlZCBpbiBjb252ZXJzaW9uIHRvIHVuaWNvZGUsIG9yIG9uIG9wZW4vY2xvc2Ugb2Yg
dGhlIGNhbGxiYWNrIChzZWUgcmVhc29uKS4KICAqIEBwYXJhbSBjb250ZXh0IFBvaW50ZXIgdG8g
dGhlIGNhbGxiYWNrJ3MgcHJpdmF0ZSBkYXRhCiAgKiBAcGFyYW0gYXJncyBJbmZvcm1hdGlvbiBh
Ym91dCB0aGUgY29udmVyc2lvbiBpbiBwcm9ncmVzcwogICogQHBhcmFtIGNvZGVVbml0cyBQb2lu
dHMgdG8gJ2xlbmd0aCcgYnl0ZXMgb2YgdGhlIGNvbmNlcm5lZCBjb2RlcGFnZSBzZXF1ZW5jZQpA
QCAtNDUwLDcgKzQ1Miw3IEBAIHVjbnZfb3BlblUoY29uc3QgVUNoYXIgKm5hbWUsCiAgKiBAcGFy
YW0gcGxhdGZvcm0gdGhlIHBsYXRmb3JtIGluIHdoaWNoIHRoZSBjb2RlcGFnZSBudW1iZXIgZXhp
c3RzCiAgKiBAcGFyYW0gZXJyIGVycm9yIHN0YXR1cyA8VFQ+VV9NRU1PUllfQUxMT0NBVElPTl9F
UlJPUiwgVV9GSUxFX0FDQ0VTU19FUlJPUjwvVFQ+CiAgKiBAcmV0dXJuIHRoZSBjcmVhdGVkIFVu
aWNvZGUgY29udmVydGVyIG9iamVjdCwgb3IgPFRUPk5VTEw8L1RUPiBpZiBhbiBlcnJvcgotICog
ICBvY2N1cmVkLgorICogICBvY2N1cnJlZC4KICAqIEBzZWUgdWNudl9vcGVuCiAgKiBAc2VlIHVj
bnZfb3BlblUKICAqIEBzZWUgdWNudl9jbG9zZQpAQCAtNTk0LDcgKzU5Niw3IEBAIFVfTkFNRVNQ
QUNFX0VORAogICogc3RhdGVmdWwsIHRoZW4gc3ViQ2hhcnMgd2lsbCBiZSBhbiBlbXB0eSBzdHJp
bmcuCiAgKgogICogQHBhcmFtIGNvbnZlcnRlciB0aGUgVW5pY29kZSBjb252ZXJ0ZXIKLSAqIEBw
YXJhbSBzdWJDaGFycyB0aGUgc3Vic2l0dXRpb24gY2hhcmFjdGVycworICogQHBhcmFtIHN1YkNo
YXJzIHRoZSBzdWJzdGl0dXRpb24gY2hhcmFjdGVycwogICogQHBhcmFtIGxlbiBvbiBpbnB1dCB0
aGUgY2FwYWNpdHkgb2Ygc3ViQ2hhcnMsIG9uIG91dHB1dCB0aGUgbnVtYmVyCiAgKiBvZiBieXRl
cyBjb3BpZWQgdG8gaXQKICAqIEBwYXJhbSAgZXJyIHRoZSBvdXRnb2luZyBlcnJvciBzdGF0dXMg
Y29kZS4KQEAgLTgzMCw3ICs4MzIsNyBAQCB1Y252X2dldE1pbkNoYXJTaXplKGNvbnN0IFVDb252
ZXJ0ZXIgKmNvbnZlcnRlcik7CiAgKiBuYW1lIHdpbGwgYmUgZmlsbGVkIGluLgogICoKICAqIEBw
YXJhbSBjb252ZXJ0ZXIgdGhlIFVuaWNvZGUgY29udmVydGVyLgotICogQHBhcmFtIGRpc3BsYXlM
b2NhbGUgaXMgdGhlIHNwZWNpZmljIExvY2FsZSB3ZSB3YW50IHRvIGxvY2FsaXNlZCBmb3IKKyAq
IEBwYXJhbSBkaXNwbGF5TG9jYWxlIGlzIHRoZSBzcGVjaWZpYyBMb2NhbGUgd2Ugd2FudCB0byBs
b2NhbGl6ZWQgZm9yCiAgKiBAcGFyYW0gZGlzcGxheU5hbWUgdXNlciBwcm92aWRlZCBidWZmZXIg
dG8gYmUgZmlsbGVkIGluCiAgKiBAcGFyYW0gZGlzcGxheU5hbWVDYXBhY2l0eSBzaXplIG9mIGRp
c3BsYXlOYW1lIEJ1ZmZlcgogICogQHBhcmFtIGVyciBlcnJvciBzdGF0dXMgY29kZQpAQCAtODc1
LDcgKzg3Nyw3IEBAIHVjbnZfZ2V0TmFtZShjb25zdCBVQ29udmVydGVyICpjb252ZXJ0ZXIsIFVF
cnJvckNvZGUgKmVycik7CiAgKgogICogQHBhcmFtIGNvbnZlcnRlciB0aGUgVW5pY29kZSBjb252
ZXJ0ZXIKICAqIEBwYXJhbSBlcnIgdGhlIGVycm9yIHN0YXR1cyBjb2RlLgotICogQHJldHVybiBJ
ZiBhbnkgZXJyb3Igb2NjdXJycywgLTEgd2lsbCBiZSByZXR1cm5lZCBvdGhlcndpc2UsIHRoZSBj
b2RlcGFnZSBudW1iZXIKKyAqIEByZXR1cm4gSWYgYW55IGVycm9yIG9jY3VycywgLTEgd2lsbCBi
ZSByZXR1cm5lZCBvdGhlcndpc2UsIHRoZSBjb2RlcGFnZSBudW1iZXIKICAqIHdpbGwgYmUgcmV0
dXJuZWQKICAqIEBzZWUgdWNudl9vcGVuQ0NTSUQKICAqIEBzZWUgdWNudl9nZXRQbGF0Zm9ybQpA
QCAtOTQxLDggKzk0MywxMyBAQCB0eXBlZGVmIGVudW0gVUNvbnZlcnRlclVuaWNvZGVTZXQgewog
ICAgIFVDTlZfUk9VTkRUUklQX1NFVCwKICAgICAvKiogU2VsZWN0IHRoZSBzZXQgb2YgVW5pY29k
ZSBjb2RlIHBvaW50cyB3aXRoIHJvdW5kdHJpcCBvciBmYWxsYmFjayBtYXBwaW5ncy4gQHN0YWJs
ZSBJQ1UgNC4wICovCiAgICAgVUNOVl9ST1VORFRSSVBfQU5EX0ZBTExCQUNLX1NFVCwKLSAgICAv
KiogTnVtYmVyIG9mIFVDb252ZXJ0ZXJVbmljb2RlU2V0IHNlbGVjdG9ycy4gQHN0YWJsZSBJQ1Ug
Mi42ICovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE51
bWJlciBvZiBVQ29udmVydGVyVW5pY29kZVNldCBzZWxlY3RvcnMuCisgICAgICogQGRlcHJlY2F0
ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNV
IHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVUNOVl9TRVRfQ09VTlQKKyNlbmRpZiAgLy8g
VV9ISURFX0RFUFJFQ0FURURfQVBJCiB9IFVDb252ZXJ0ZXJVbmljb2RlU2V0OwogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNudl9jYi5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91Y252X2NiLmgKaW5kZXggZjBlNjdiYTExZTBjNGJiMTA4NzcxNzQ5ODBjYmU0OGVj
MTViZjc5OC4uMTQxNjllZDYxYzE0YzliOTU0OWE0Zjg0N2Y4ZGQzZjE4YjEwMTUzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y252X2NiLmgKKysrIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91Y252X2NiLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRl
cjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTog
aHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
ICogICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNo
aW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y252X2Vyci5oIGIvU291
cmNlL1dURi9pY3UvdW5pY29kZS91Y252X2Vyci5oCmluZGV4IGUwOTJlOTVmODA4YmY3MGMwNjNh
NjRkMWQ3ZDRiZTMzM2FkYWNiNDUuLjJmNzQ3NTRjZTRkZTE0MTRhNTUyMjBiNTFiOWY2N2ZkNDc5
OThkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNudl9lcnIuaAorKysg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnZfZXJyLmgKQEAgLTEsMyArMSw1IEBACisvLyDC
qSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAm
IHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoK
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwOSwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91
Y252c2VsLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnZzZWwuaAppbmRleCBlYjk1ODhl
YjJkYmVmMDExYTc3Yzc2YzU2NWU4ZmE4MDEzZWQ3Y2JkLi5kNDIzODQ1Y2ViNjI5NzRiNzlmNTNm
ZDgwMzBmOTVhYzY0MWEwOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vj
bnZzZWwuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnZzZWwuaApAQCAtMSwzICsx
LDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisv
LyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdo
dC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS91Y29sLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vjb2wuaApp
bmRleCA1MTBkZGM4YzZiZGRjZWFmNDk1YzNjN2UxYTcxZDU1OGVjNjQzMDkyLi5lY2FiZDllMDli
OWQ3YTljZGQzNjVmNjk0NTU1MjE0NzY3MzY2YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3Vjb2wuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vjb2wuaApAQCAt
MSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKGMp
IDE5OTYtMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBh
bmQgb3RoZXJzLgpAQCAtMTIzLDggKzEyNSwxMyBAQCB0eXBlZGVmIGVudW0gewogICAvKiogdXBw
ZXIgY2FzZSBzb3J0cyBiZWZvcmUgbG93ZXIgY2FzZSAqLwogICBVQ09MX1VQUEVSX0ZJUlNUID0g
MjUsCiAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25l
IG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVUNvbEF0dHJpYnV0ZVZhbHVlIHZhbHVlLgor
ICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92
ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwogICBVQ09MX0FUVFJJQlVU
RV9WQUxVRV9DT1VOVAotCisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogfSBV
Q29sQXR0cmlidXRlVmFsdWU7CiAKIC8qKgpAQCAtMTkxLDEyICsxOTgsMTMgQEAgdHlwZWRlZiBl
bnVtIHsKICAgICAqIEBzdGFibGUgSUNVIDQuOAogICAgICovICAgIAogICAgIFVDT0xfUkVPUkRF
Ul9DT0RFX0RJR0lUICAgICAgICAgPSAweDEwMDQsCi0gICAvKioKLSAgICAqIFRoZSBsaW1pdCBv
ZiB0aGUgcmVvcmRlciBjb2Rlcy4gVGhpcyBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIHJhbmdlIGNo
ZWNraW5nIAotICAgICogYW5kIGVudW1lcmF0aW9uIG9mIHRoZSByZW9yZGVyIGNvZGVzLgotICAg
ICogQHN0YWJsZSBJQ1UgNC44Ci0gICAgKi8gICAgCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVE
X0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVD
b2xSZW9yZGVyQ29kZSB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVy
aWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAg
ICAgKi8KICAgICBVQ09MX1JFT1JERVJfQ09ERV9MSU1JVCAgICAgICAgID0gMHgxMDA1CisjZW5k
aWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogfSBVQ29sUmVvcmRlckNvZGU7CiAKIC8q
KgpAQCAtMzMzLDEwICszNDEsMTMgQEAgdHlwZWRlZiBlbnVtIHsKICAgICAgICogQHN0YWJsZSBJ
Q1UgMi44CiAgICAgICAqLwogICAgICBVQ09MX05VTUVSSUNfQ09MTEFUSU9OID0gVUNPTF9TVFJF
TkdUSCArIDIsIAotICAgICAvKioKLSAgICAgICogVGhlIG51bWJlciBvZiBVQ29sQXR0cmlidXRl
IGNvbnN0YW50cy4KLSAgICAgICogQHN0YWJsZSBJQ1UgMi4wCi0gICAgICAqLworCisgICAgLyog
RG8gbm90IGNvbmRpdGlvbmFsaXplIHRoZSBmb2xsb3dpbmcgd2l0aCAjaWZuZGVmIFVfSElERV9E
RVBSRUNBVEVEX0FQSSwKKyAgICAgKiBpdCBpcyBuZWVkZWQgZm9yIGxheW91dCBvZiBSdWxlQmFz
ZWRDb2xsYXRvciBvYmplY3QuICovCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUg
aGlnaGVzdCBub3JtYWwgVUNvbEF0dHJpYnV0ZSB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJ
Q1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlj
a2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICAgVUNPTF9BVFRSSUJVVEVfQ09VTlQKIH0gVUNvbEF0
dHJpYnV0ZTsKIApAQCAtMTA1MCw3ICsxMDYxLDEzIEBAIHR5cGVkZWYgZW51bSB7CiAgIFVDT0xf
Qk9VTkRfVVBQRVIgPSAxLAogICAvKiogdXBwZXIgYm91bmQgdGhhdCB3aWxsIG1hdGNoIGFsbCB0
aGUgc3RyaW5ncyB0aGF0IGhhdmUgdGhlIHNhbWUgaW5pdGlhbCBzdWJzdHJpbmcgYXMgdGhlIGdp
dmVuIHN0cmluZyAqLwogICBVQ09MX0JPVU5EX1VQUEVSX0xPTkcgPSAyLAotICBVQ09MX0JPVU5E
X1ZBTFVFX0NPVU5UCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAg
ICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVDb2xCb3VuZE1vZGUgdmFsdWUu
CisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ug
b3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCisgICAgVUNPTF9CT1VO
RF9WQUxVRV9DT1VOVAorI2VuZGlmICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KIH0gVUNv
bEJvdW5kTW9kZTsKIAogLyoqCkBAIC0xMjY5LDYgKzEyODYsNyBAQCB1Y29sX3NldFZhcmlhYmxl
VG9wKFVDb2xsYXRvciAqY29sbCwKICAqLwogVV9TVEFCTEUgdWludDMyX3QgVV9FWFBPUlQyIHVj
b2xfZ2V0VmFyaWFibGVUb3AoY29uc3QgVUNvbGxhdG9yICpjb2xsLCBVRXJyb3JDb2RlICpzdGF0
dXMpOwogCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogLyoqCiAgKiBTZXRzIHRoZSB2
YXJpYWJsZSB0b3AgdG8gdGhlIHNwZWNpZmllZCBwcmltYXJ5IHdlaWdodC4KICAqCkBAIC0xMjg0
LDYgKzEzMDIsNyBAQCBVX1NUQUJMRSB1aW50MzJfdCBVX0VYUE9SVDIgdWNvbF9nZXRWYXJpYWJs
ZVRvcChjb25zdCBVQ29sbGF0b3IgKmNvbGwsIFVFcnJvckNvZAogICovCiBVX0RFUFJFQ0FURUQg
dm9pZCBVX0VYUE9SVDIgCiB1Y29sX3Jlc3RvcmVWYXJpYWJsZVRvcChVQ29sbGF0b3IgKmNvbGws
IGNvbnN0IHVpbnQzMl90IHZhclRvcCwgVUVycm9yQ29kZSAqc3RhdHVzKTsKKyNlbmRpZiAgLyog
VV9ISURFX0RFUFJFQ0FURURfQVBJICovCiAKIC8qKgogICogVGhyZWFkIHNhZmUgY2xvbmluZyBv
cGVyYXRpb24uIFRoZSByZXN1bHQgaXMgYSBjbG9uZSBvZiBhIGdpdmVuIGNvbGxhdG9yLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y29sZWl0ci5oIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91Y29sZWl0ci5oCmluZGV4IGY5ODc2MjQwNTY3MjdjNDRmNjdjYTEwNTcyZjdh
OGRkZTk2YmFiM2YuLjg1ZWM4MzgzZDdjYjJlYjU4MDM3ZWY4YTYxNDBiMDQzZDIyNjJiOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNvbGVpdHIuaAorKysgYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL3Vjb2xlaXRyLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFu
ZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9m
IHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNCwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcwpAQCAtMTUwLDcgKzE1Miw3IEBAIHVjb2xfcmVzZXQoVUNvbGxh
dGlvbkVsZW1lbnRzICplbGVtcyk7CiAgKiBBIHNpbmdsZSBjaGFyYWN0ZXIgbWF5IGNvbnRhaW4g
bW9yZSB0aGFuIG9uZSBjb2xsYXRpb24gZWxlbWVudC4KICAqIEBwYXJhbSBlbGVtcyBUaGUgVUNv
bGxhdGlvbkVsZW1lbnRzIGNvbnRhaW5pbmcgdGhlIHRleHQuCiAgKiBAcGFyYW0gc3RhdHVzIEEg
cG9pbnRlciB0byBhIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLgotICogQHJldHVy
biBUaGUgbmV4dCBjb2xsYXRpb24gZWxlbWVudHMgb3JkZXJpbmcsIG90aGVyd2lzZSByZXR1cm5z
IE5VTExPUkRFUiAKKyAqIEByZXR1cm4gVGhlIG5leHQgY29sbGF0aW9uIGVsZW1lbnRzIG9yZGVy
aW5nLCBvdGhlcndpc2UgcmV0dXJucyBVQ09MX05VTExPUkRFUiAKICAqICAgICAgICAgaWYgYW4g
ZXJyb3IgaGFzIG9jY3VyZWQgb3IgaWYgdGhlIGVuZCBvZiBzdHJpbmcgaGFzIGJlZW4gcmVhY2hl
ZAogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KQEAgLTE2Niw3ICsxNjgsNyBAQCB1Y29sX25leHQo
VUNvbGxhdGlvbkVsZW1lbnRzICplbGVtcywgVUVycm9yQ29kZSAqc3RhdHVzKTsKICAqICAgICAg
ICAgICAgICAgYSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUiBpcyByZXR1cm5lZCBpZiB0aGUgaW50
ZXJuYWwgc3RhY2sKICAqICAgICAgICAgICAgICAgYnVmZmVyIGhhcyBiZWVuIGV4aGF1c3RlZC4K
ICAqIEByZXR1cm4gVGhlIHByZXZpb3VzIGNvbGxhdGlvbiBlbGVtZW50cyBvcmRlcmluZywgb3Ro
ZXJ3aXNlIHJldHVybnMgCi0gKiAgICAgICAgIE5VTExPUkRFUiBpZiBhbiBlcnJvciBoYXMgb2Nj
dXJlZCBvciBpZiB0aGUgc3RhcnQgb2Ygc3RyaW5nIGhhcyAKKyAqICAgICAgICAgVUNPTF9OVUxM
T1JERVIgaWYgYW4gZXJyb3IgaGFzIG9jY3VyZWQgb3IgaWYgdGhlIHN0YXJ0IG9mIHN0cmluZyBo
YXMgCiAgKiAgICAgICAgIGJlZW4gcmVhY2hlZC4KICAqIEBzdGFibGUgSUNVIDIuMAogICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vjb25maWcuaCBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdWNvbmZpZy5oCmluZGV4IGY2MjIzYmI4YTg3YjVhNGJkYzliNTgzYTg0Yjg3
ZGE2ODNmNDZhMDcuLjhlNjc3NTZiYTk4ZGUyMDY3MmQyOWExZDQwOTQyOTJhNGNhMzY4NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNvbmZpZy5oCisrKyBiL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdWNvbmZpZy5oCkBAIC0xLDEwICsxLDEyIEBACisvLyDCqSAyMDE2IGFu
ZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9m
IHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyogIAogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgotKiAgIENvcHlyaWdodCAoQykgMjAwMi0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTYsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1Y29uZmlnLmgKLSog
ICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNp
emU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpAQCAtNzQsNyArNzYsNyBA
QAogI2VuZGlmCiAKIC8qKgotICogRGV0ZXJtaW5lcyB3aGV0ZXIgdG8gZW5hYmxlIGF1dG8gY2xl
YW51cCBvZiBsaWJyYXJpZXMuIAorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGVuYWJsZSBhdXRv
IGNsZWFudXAgb2YgbGlicmFyaWVzLiAKICAqIEBpbnRlcm5hbAogICovCiAjaWZuZGVmIFVDTE5f
Tk9fQVVUT19DTEVBTlVQCkBAIC04Nyw3ICs4OSw3IEBACiAgKiBAaW50ZXJuYWwKICAqLwogI2lm
bmRlZiBVX0RJU0FCTEVfUkVOQU1JTkcKLSNkZWZpbmUgVV9ESVNBQkxFX1JFTkFNSU5HIDAKKyNk
ZWZpbmUgVV9ESVNBQkxFX1JFTkFNSU5HIDEKICNlbmRpZgogCiAvKioKQEAgLTEzNCw2ICsxMzYs
MTUgQEAKICNkZWZpbmUgVV9FTkFCTEVfVFJBQ0lORyAwCiAjZW5kaWYKIAorLyoqCisgKiBcZGVm
IFVDT05GSUdfRU5BQkxFX1BMVUdJTlMKKyAqIERldGVybWluZXMgd2hldGhlciB0byBlbmFibGUg
SUNVIHBsdWdpbnMuCisgKiBAaW50ZXJuYWwKKyAqLworI2lmbmRlZiBVQ09ORklHX0VOQUJMRV9Q
TFVHSU5TCisjZGVmaW5lIFVDT05GSUdfRU5BQkxFX1BMVUdJTlMgMAorI2VuZGlmCisKIC8qKgog
ICogXGRlZiBVX0VOQUJMRV9EWUxPQUQKICAqIFdoZXRoZXIgdG8gZW5hYmxlIER5bmFtaWMgbG9h
ZGluZyBpbiBJQ1UuCkBAIC0xNTIsNyArMTYzLDYgQEAKICNkZWZpbmUgVV9DSEVDS19EWUxPQUQg
MQogI2VuZGlmCiAKLQogLyoqCiAgKiBcZGVmIFVfREVGQVVMVF9TSE9XX0RSQUZUCiAgKiBEbyB3
ZSBhbGxvdyBJQ1UgdXNlcnMgdG8gdXNlIHRoZSBkcmFmdCBBUElzIGJ5IGRlZmF1bHQ/CkBAIC0y
NTIsNyArMjYyLDggQEAKIAogLyoqCiAgKiBcZGVmIFVDT05GSUdfTk9fQ09OVkVSU0lPTgotICog
SUNVIHdpbGwgbm90IGNvbXBsZXRlbHkgYnVpbGQgd2l0aCB0aGlzIHN3aXRjaCB0dXJuZWQgb24u
CisgKiBJQ1Ugd2lsbCBub3QgY29tcGxldGVseSBidWlsZCAoY29tcGlsaW5nIHRoZSB0b29scyBm
YWlscykgd2l0aCB0aGlzCisgKiBzd2l0Y2ggdHVybmVkIG9uLgogICogVGhpcyBzd2l0Y2ggdHVy
bnMgb2ZmIGFsbCBjb252ZXJ0ZXJzLgogICoKICAqIFlvdSBtYXkgd2FudCB0byB1c2UgdGhpcyB0
b2dldGhlciB3aXRoIFVfQ0hBUlNFVF9JU19VVEY4IGRlZmluZWQgdG8gMQpAQCAtMjc4LDcgKzI4
OSw3IEBACiAgKiBUaGlzIGlzIG5vdCBwb3NzaWJsZSBvbiBFQkNESUMgcGxhdGZvcm1zCiAgKiBi
ZWNhdXNlIHRoZXkgbmVlZCBpYm0tMzcgb3IgaWJtLTEwNDcgZGVmYXVsdCBjb252ZXJ0ZXJzLgog
ICoKLSAqIEBkcmFmdCBJQ1UgNTUKKyAqIEBzdGFibGUgSUNVIDU1CiAgKi8KICNpZm5kZWYgVUNP
TkZJR19PTkxZX0hUTUxfQ09OVkVSU0lPTgogIyAgIGRlZmluZSBVQ09ORklHX09OTFlfSFRNTF9D
T05WRVJTSU9OIDAKQEAgLTMxMCw3ICszMjEsOSBAQAogICovCiAjaWZuZGVmIFVDT05GSUdfTk9f
Tk9STUFMSVpBVElPTgogIyAgIGRlZmluZSBVQ09ORklHX05PX05PUk1BTElaQVRJT04gMAotI2Vs
aWYgVUNPTkZJR19OT19OT1JNQUxJWkFUSU9OCisjZW5kaWYKKworI2lmIFVDT05GSUdfTk9fTk9S
TUFMSVpBVElPTgogICAgIC8qIGNvbW1vbiBsaWJyYXJ5ICovCiAgICAgLyogSUNVIDUwIENKSyBk
aWN0aW9uYXJ5IEJyZWFrSXRlcmF0b3IgdXNlcyBub3JtYWxpemF0aW9uICovCiAjICAgZGVmaW5l
IFVDT05GSUdfTk9fQlJFQUtfSVRFUkFUSU9OIDEKQEAgLTQzNyw5ICs0NTAsNiBAQAogICovCiAj
aWZuZGVmIFVDT05GSUdfTk9fRklMVEVSRURfQlJFQUtfSVRFUkFUSU9OCiAjICAgZGVmaW5lIFVD
T05GSUdfTk9fRklMVEVSRURfQlJFQUtfSVRFUkFUSU9OIDAKLQotCi0KICNlbmRpZgogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNzZGV0LmggYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL3Vjc2RldC5oCmluZGV4IGQzYTI5N2JlMWUxZWRhMTM5MmE3NzcwMDBh
NTk5YzE1ZGJjNGQwMDQuLjUyZWQ1YWQwZWUyZWI1NTNhZTQzMTkzODBlOTcxMDNiOGU3NWZlNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNzZGV0LmgKKysrIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS91Y3NkZXQuaApAQCAtMSwxMCArMSwxMiBAQAorLy8gwqkgMjAxNiBh
bmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBv
ZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgogICogICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMywgSW50ZXJuYXRpb25hbCBCdXNp
bmVzcyBNYWNoaW5lcwogICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgIGZpbGUgbmFtZTogIHVjc2RldC5oCi0gKiAg
IGVuY29kaW5nOiAgIFVTLUFTQ0lJCisgKiAgIGVuY29kaW5nOiAgIFVURi04CiAgKiAgIGluZGVu
dGF0aW9uOjQKICAqCiAgKiAgIGNyZWF0ZWQgb246IDIwMDVBdWcwNApAQCAtNDMsNiArNDUsMTAg
QEAKICAqIGluIGEgc2luZ2xlIGxhbmd1YWdlLCBhbmQgYSBtaW5pbXVtIG9mIGEgZmV3IGh1bmRy
ZWQgYnl0ZXMgd29ydGggb2YgcGxhaW4gdGV4dAogICogaW4gdGhlIGxhbmd1YWdlIGFyZSBuZWVk
ZWQuICBUaGUgZGV0ZWN0aW9uIHByb2Nlc3Mgd2lsbCBhdHRlbXB0IHRvCiAgKiBpZ25vcmUgaHRt
bCBvciB4bWwgc3R5bGUgbWFya3VwIHRoYXQgY291bGQgb3RoZXJ3aXNlIG9ic2N1cmUgdGhlIGNv
bnRlbnQuCisgKiA8cD4KKyAqIEFuIGFsdGVybmF0aXZlIHRvIHRoZSBJQ1UgQ2hhcnNldCBEZXRl
Y3RvciBpcyB0aGUKKyAqIENvbXBhY3QgRW5jb2RpbmcgRGV0ZWN0b3IsIGh0dHBzOi8vZ2l0aHVi
LmNvbS9nb29nbGUvY29tcGFjdF9lbmNfZGV0LgorICogSXQgb2Z0ZW4gZ2l2ZXMgbW9yZSBhY2N1
cmF0ZSByZXN1bHRzLCBlc3BlY2lhbGx5IHdpdGggc2hvcnQgaW5wdXQgc2FtcGxlcy4KICAqLwog
IAogCkBAIC0zOTMsNyArMzk5LDcgQEAgdWNzZGV0X2dldERldGVjdGFibGVDaGFyc2V0cyhjb25z
dCBVQ2hhcnNldERldGVjdG9yICp1Y3NkLCAgVUVycm9yQ29kZSAqc3RhdHVzKTsKIC8qKgogICAq
IEVuYWJsZSBvciBkaXNhYmxlIGluZGl2aWR1YWwgY2hhcnNldCBlbmNvZGluZy4KICAgKiBBIG5h
bWUgb2YgY2hhcnNldCBlbmNvZGluZyBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSBuYW1lcyByZXR1
cm5lZCBieQotICAqIHtAbGluayAjZ2V0QWxsRGV0ZWN0YWJsZUNoYXJzZXRzKCl9LgorICAqIHtA
bGluayAjdWNzZGV0X2dldEFsbERldGVjdGFibGVDaGFyc2V0cygpfS4KICAgKgogICAqIEBwYXJh
bSB1Y3NkIGEgQ2hhcnNldCBkZXRlY3Rvci4KICAgKiBAcGFyYW0gZW5jb2RpbmcgZW5jb2Rpbmcg
dGhlIG5hbWUgb2YgY2hhcnNldCBlbmNvZGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdWN1cnIuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWN1cnIuaAppbmRleCA1
YjE5NjkwMTY5M2Y0MGNjMjU5Zjk2M2VmYTk5ODA5MzQ4YTYzOTQ2Li4xYWJiM2IyMmU5N2FmNDFk
Y2Y0YjQyMmI2NzU1OTQzN2QzNGJlZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3VjdXJyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y3Vyci5oCkBAIC0xLDYg
KzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4K
Ky8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJp
Z2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqIENvcnBvcmF0aW9uIGFuZCBvdGhl
cnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KQEAgLTEzLDU1ICsx
NSw1MyBAQAogLyoqCiAgKiBcZmlsZSAKICAqIFxicmllZiBDIEFQSTogRW5jYXBzdWxhdGVzIGlu
Zm9ybWF0aW9uIGFib3V0IGEgY3VycmVuY3kuCisgKgorICogVGhlIHVjdXJyIEFQSSBlbmNhcHN1
bGF0ZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBjdXJyZW5jeSwgYXMgZGVmaW5lZCBieQorICogSVNP
IDQyMTcuICBBIGN1cnJlbmN5IGlzIHJlcHJlc2VudGVkIGJ5IGEgMy1jaGFyYWN0ZXIgc3RyaW5n
CisgKiBjb250YWluaW5nIGl0cyBJU08gNDIxNyBjb2RlLiAgVGhpcyBBUEkgY2FuIHJldHVybiB2
YXJpb3VzIGRhdGEKKyAqIG5lY2Vzc2FyeSB0aGUgcHJvcGVyIGRpc3BsYXkgb2YgYSBjdXJyZW5j
eToKKyAqCisgKiA8dWw+PGxpPkEgZGlzcGxheSBzeW1ib2wsIGZvciBhIHNwZWNpZmljIGxvY2Fs
ZQorICogPGxpPlRoZSBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIHRvIGRpc3BsYXkKKyAqIDxs
aT5BIHJvdW5kaW5nIGluY3JlbWVudAorICogPC91bD4KKyAqCisgKiBUaGUgPHR0PkRlY2ltYWxG
b3JtYXQ8L3R0PiBjbGFzcyB1c2VzIHRoZXNlIGRhdGEgdG8gZGlzcGxheQorICogY3VycmVuY2ll
cy4KKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEBzaW5jZSBJQ1UgMi4yCiAgKi8KIAogI2lmICFV
Q09ORklHX05PX0ZPUk1BVFRJTkcKIAogLyoqCiAgKiBDdXJyZW5jeSBVc2FnZSB1c2VkIGZvciBE
ZWNpbWFsIEZvcm1hdAotICogQGRyYWZ0IElDVSA1NAorICogQHN0YWJsZSBJQ1UgNTQKICAqLwog
ZW51bSBVQ3VycmVuY3lVc2FnZSB7Ci0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioK
ICAgICAgKiBhIHNldHRpbmcgdG8gc3BlY2lmeSBjdXJyZW5jeSB1c2FnZSB3aGljaCBkZXRlcm1p
bmVzIGN1cnJlbmN5IGRpZ2l0CiAgICAgICogYW5kIHJvdW5kaW5nIGZvciBzdGFuZGFyZCB1c2Fn
ZSwgZm9yIGV4YW1wbGU6ICI1MC4wMCBOVCQiCiAgICAgICogdXNlZCBhcyBERUZBVUxUIHZhbHVl
Ci0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAg
ICAgVUNVUlJfVVNBR0VfU1RBTkRBUkQ9MCwKICAgICAvKioKICAgICAgKiBhIHNldHRpbmcgdG8g
c3BlY2lmeSBjdXJyZW5jeSB1c2FnZSB3aGljaCBkZXRlcm1pbmVzIGN1cnJlbmN5IGRpZ2l0CiAg
ICAgICogYW5kIHJvdW5kaW5nIGZvciBjYXNoIHVzYWdlLCBmb3IgZXhhbXBsZTogIjUwIE5UJCIK
LSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAg
ICBVQ1VSUl9VU0FHRV9DQVNIPTEsCi0jZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KKyNp
Zm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCiAgICAgLyoqCiAgICAgICogT25lIGhpZ2hlciB0
aGFuIHRoZSBsYXN0IGVudW0gVUN1cnJlbmN5VXNhZ2UgY29uc3RhbnQuCi0gICAgICogQGRyYWZ0
IElDVSA1NAorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkg
Y2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgogICAgICAqLwogICAgIFVD
VVJSX1VTQUdFX0NPVU5UPTIKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9Owog
dHlwZWRlZiBlbnVtIFVDdXJyZW5jeVVzYWdlIFVDdXJyZW5jeVVzYWdlOyAKIAotLyoqCi0gKiBU
aGUgdWN1cnIgQVBJIGVuY2Fwc3VsYXRlcyBpbmZvcm1hdGlvbiBhYm91dCBhIGN1cnJlbmN5LCBh
cyBkZWZpbmVkIGJ5Ci0gKiBJU08gNDIxNy4gIEEgY3VycmVuY3kgaXMgcmVwcmVzZW50ZWQgYnkg
YSAzLWNoYXJhY3RlciBzdHJpbmcKLSAqIGNvbnRhaW5pbmcgaXRzIElTTyA0MjE3IGNvZGUuICBU
aGlzIEFQSSBjYW4gcmV0dXJuIHZhcmlvdXMgZGF0YQotICogbmVjZXNzYXJ5IHRoZSBwcm9wZXIg
ZGlzcGxheSBvZiBhIGN1cnJlbmN5OgotICoKLSAqIDx1bD48bGk+QSBkaXNwbGF5IHN5bWJvbCwg
Zm9yIGEgc3BlY2lmaWMgbG9jYWxlCi0gKiA8bGk+VGhlIG51bWJlciBvZiBmcmFjdGlvbiBkaWdp
dHMgdG8gZGlzcGxheQotICogPGxpPkEgcm91bmRpbmcgaW5jcmVtZW50Ci0gKiA8L3VsPgotICoK
LSAqIFRoZSA8dHQ+RGVjaW1hbEZvcm1hdDwvdHQ+IGNsYXNzIHVzZXMgdGhlc2UgZGF0YSB0byBk
aXNwbGF5Ci0gKiBjdXJyZW5jaWVzLgotICogQGF1dGhvciBBbGFuIExpdQotICogQHNpbmNlIElD
VSAyLjIKLSAqLwotCiAvKioKICAqIEZpbmRzIGEgY3VycmVuY3kgY29kZSBmb3IgdGhlIGdpdmVu
IGxvY2FsZS4KICAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZSBmb3Igd2hpY2ggdG8gcmV0cmll
dmUgYSBjdXJyZW5jeSBjb2RlLiAKQEAgLTIwNCw3ICsyMDQsNiBAQCBVX1NUQUJMRSBpbnQzMl90
IFVfRVhQT1JUMgogdWN1cnJfZ2V0RGVmYXVsdEZyYWN0aW9uRGlnaXRzKGNvbnN0IFVDaGFyKiBj
dXJyZW5jeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlYyk7
CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogLyoqCiAgKiBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgdGhlIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMgdGhhdCBzaG91bGQKICAqIGJlIGRpc3Bs
YXllZCBmb3IgdGhlIGdpdmVuIGN1cnJlbmN5IHdpdGggdXNhZ2UuCkBAIC0yMTMsMTMgKzIxMiwx
MiBAQCB1Y3Vycl9nZXREZWZhdWx0RnJhY3Rpb25EaWdpdHMoY29uc3QgVUNoYXIqIGN1cnJlbmN5
LAogICogQHBhcmFtIGVjIGlucHV0LW91dHB1dCBlcnJvciBjb2RlCiAgKiBAcmV0dXJuIGEgbm9u
LW5lZ2F0aXZlIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMgdG8gYmUKICAqIGRpc3BsYXllZCwg
b3IgMCBpZiB0aGVyZSBpcyBhbiBlcnJvcgotICogQGRyYWZ0IElDVSA1NAorICogQHN0YWJsZSBJ
Q1UgNTQKICAqLwotVV9EUkFGVCBpbnQzMl90IFVfRVhQT1JUMgorVV9TVEFCTEUgaW50MzJfdCBV
X0VYUE9SVDIKIHVjdXJyX2dldERlZmF1bHRGcmFjdGlvbkRpZ2l0c0ZvclVzYWdlKGNvbnN0IFVD
aGFyKiBjdXJyZW5jeSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBVQ3VycmVuY3lVc2FnZSB1c2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUqIGVjKTsKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAq
LwogCiAvKioKICAqIFJldHVybnMgdGhlIHJvdW5kaW5nIGluY3JlbWVudCBmb3IgdGhlIGdpdmVu
IGN1cnJlbmN5LCBvciAwLjAgaWYgbm8KQEAgLTIzNSw3ICsyMzMsNiBAQCBVX1NUQUJMRSBkb3Vi
bGUgVV9FWFBPUlQyCiB1Y3Vycl9nZXRSb3VuZGluZ0luY3JlbWVudChjb25zdCBVQ2hhciogY3Vy
cmVuY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlYyk7CiAKLSNp
Zm5kZWYgVV9ISURFX0RSQUZUX0FQSQogLyoqCiAgKiBSZXR1cm5zIHRoZSByb3VuZGluZyBpbmNy
ZW1lbnQgZm9yIHRoZSBnaXZlbiBjdXJyZW5jeSwgb3IgMC4wIGlmIG5vCiAgKiByb3VuZGluZyBp
cyBkb25lIGJ5IHRoZSBjdXJyZW5jeSBnaXZlbiB1c2FnZS4KQEAgLTI0NCwxMyArMjQxLDEyIEBA
IHVjdXJyX2dldFJvdW5kaW5nSW5jcmVtZW50KGNvbnN0IFVDaGFyKiBjdXJyZW5jeSwKICAqIEBw
YXJhbSBlYyBpbnB1dC1vdXRwdXQgZXJyb3IgY29kZQogICogQHJldHVybiB0aGUgbm9uLW5lZ2F0
aXZlIHJvdW5kaW5nIGluY3JlbWVudCwgb3IgMC4wIGlmIG5vbmUsCiAgKiBvciAwLjAgaWYgdGhl
cmUgaXMgYW4gZXJyb3IKLSAqIEBkcmFmdCBJQ1UgNTQKKyAqIEBzdGFibGUgSUNVIDU0CiAgKi8K
LVVfRFJBRlQgZG91YmxlIFVfRVhQT1JUMgorVV9TVEFCTEUgZG91YmxlIFVfRVhQT1JUMgogdWN1
cnJfZ2V0Um91bmRpbmdJbmNyZW1lbnRGb3JVc2FnZShjb25zdCBVQ2hhciogY3VycmVuY3ksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDdXJyZW5jeVVzYWdlIHVz
YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlYyk7
Ci0jZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KIAogLyoqCiAgKiBTZWxlY3RvciBjb25z
dGFudHMgZm9yIHVjdXJyX29wZW5DdXJyZW5jaWVzKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3VkYXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWRhdC5oCmluZGV4
IDUzMjYxM2EwNjM3ZGJiZTA3OTY4ZjJlMTEwZDFlNjA4YTM2OTczM2QuLjkwYWZmMjBkZjJhMTIy
Yjc2NDI4ZjkwMzA2MmQwNzc2Nzg5OGQ4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdWRhdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWRhdC5oCkBAIC0xLDYg
KzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4K
Ky8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJp
Z2h0Lmh0bWwKIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChDKSAx
OTk2LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyAqIENvcHlyaWdodCAo
QykgMTk5Ni0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAgKiBDb3Jwb3Jh
dGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKICovCkBAIC0xNTAsNyArMTUyLDcgQEAKICAqLwogdHlwZWRlZiB2b2lkKiBVRGF0ZUZv
cm1hdDsKIAotLyoqIFRoZSBwb3NzaWJsZSBkYXRlL3RpbWUgZm9ybWF0IHN0eWxlcyAKKy8qKiBU
aGUgcG9zc2libGUgZGF0ZS90aW1lIGZvcm1hdCBzdHlsZXMKICAqICBAc3RhYmxlIElDVSAyLjYK
ICAqLwogdHlwZWRlZiBlbnVtIFVEYXRlRm9ybWF0U3R5bGUgewpAQCAtMTY3LDE2ICsxNjksMTYg
QEAgdHlwZWRlZiBlbnVtIFVEYXRlRm9ybWF0U3R5bGUgewogCiAgICAgLyoqIEJpdGZpZWxkIGZv
ciByZWxhdGl2ZSBkYXRlICovCiAgICAgVURBVF9SRUxBVElWRSA9ICgxIDw8IDcpLAotICAgIAor
CiAgICAgVURBVF9GVUxMX1JFTEFUSVZFID0gVURBVF9GVUxMIHwgVURBVF9SRUxBVElWRSwKLSAg
ICAgICAgCisKICAgICBVREFUX0xPTkdfUkVMQVRJVkUgPSBVREFUX0xPTkcgfCBVREFUX1JFTEFU
SVZFLAotICAgIAorCiAgICAgVURBVF9NRURJVU1fUkVMQVRJVkUgPSBVREFUX01FRElVTSB8IFVE
QVRfUkVMQVRJVkUsCi0gICAgCisKICAgICBVREFUX1NIT1JUX1JFTEFUSVZFID0gVURBVF9TSE9S
VCB8IFVEQVRfUkVMQVRJVkUsCi0gICAgCi0gICAgCisKKwogICAgIC8qKiBObyBzdHlsZSAqLwog
ICAgIFVEQVRfTk9ORSA9IC0xLAogCkBAIC0yOTQsNyArMjk2LDcgQEAgdHlwZWRlZiBlbnVtIFVE
YXRlRm9ybWF0U3R5bGUgewogICogVXNlZCBpbiBjb21iaW5hdGlvbnMgZGF0ZSArIHRpbWUsIGRh
dGUgKyB0aW1lICsgem9uZSwgb3IgdGltZSArIHpvbmUuCiAgKiBAc3RhYmxlIElDVSA0LjAKICAq
LwotI2RlZmluZSBVREFUX1lFQVJfQUJCUl9NT05USF9XRUVLREFZX0RBWSAieU1NTUVkIiAKKyNk
ZWZpbmUgVURBVF9ZRUFSX0FCQlJfTU9OVEhfV0VFS0RBWV9EQVkgInlNTU1FZCIKIC8qKgogICog
Q29uc3RhbnQgZm9yIGRhdGUgc2tlbGV0b24gd2l0aCB5ZWFyLCBudW1lcmljIG1vbnRoLCB3ZWVr
ZGF5LCBhbmQgZGF5LgogICogVXNlZCBpbiBjb21iaW5hdGlvbnMgZGF0ZSArIHRpbWUsIGRhdGUg
KyB0aW1lICsgem9uZSwgb3IgdGltZSArIHpvbmUuCkBAIC00NDYsNyArNDQ4LDcgQEAgdHlwZWRl
ZiBlbnVtIFVEYXRlRm9ybWF0U3R5bGUgewogCiAvKiBkZXByZWNhdGVkIHNrZWxldG9uIGNvbnN0
YW50cyAqLwogCi0jaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSSAKKyNpZm5kZWYgVV9ISURF
X0RFUFJFQ0FURURfQVBJCiAvKioKICAqIENvbnN0YW50IGZvciBkYXRlIHNrZWxldG9uIHdpdGgg
c3RhbmRhbG9uZSBtb250aC4KICAqIEBkZXByZWNhdGVkIElDVSA1MCBVc2UgVURBVF9NT05USCBp
bnN0ZWFkLgpAQCAtNzU5LDMwICs3NjEsNTQgQEAgdHlwZWRlZiBlbnVtIFVEYXRlRm9ybWF0Rmll
bGQgewogICAgICAqIEBpbnRlcm5hbCBJQ1UgNTMKICAgICAgKi8KICAgICBVREFUX1JFTEFURURf
WUVBUl9GSUVMRCA9IDM0LAotI2VuZGlmIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KKyNlbmRp
ZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkK
ICAgICAvKioKLSAgICAgKiBGaWVsZFBvc2l0aW9uIGFuZCBVRmllbGRQb3NpdGlvbiBzZWxlY3Rv
ciBmb3IgJzonIHRpbWUgc2VwYXJhdG9yLAotICAgICAqIG5vIGNvcnJlc3BvbmRpbmcgVUNBTF8g
ZmllbGQuCi0gICAgICogQGRyYWZ0IElDVSA1NQorICAgICAqIEZpZWxkUG9zaXRpb24gc2VsZWN0
b3IgZm9yICdiJyBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogRGlzcGxheXMgbWlkbmlnaHQgYW5k
IG5vb24gZm9yIDEyYW0gYW5kIDEycG0sIHJlc3BlY3RpdmVseSwgaWYgYXZhaWxhYmxlOworICAg
ICAqIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gQU0gLyBQTS4KKyAgICAgKiBAc3RhYmxlIElDVSA1
NwogICAgICAqLwotICAgIFVEQVRfVElNRV9TRVBBUkFUT1JfRklFTEQgPSAzNSwKLSNlbmRpZiAg
LyogVV9ISURFX0RSQUZUX0FQSSAqLworICAgIFVEQVRfQU1fUE1fTUlETklHSFRfTk9PTl9GSUVM
RCA9IDM1LAogCi0gICAvKioKKyAgICAvKiBGaWVsZFBvc2l0aW9uIHNlbGVjdG9yIGZvciAnQicg
ZmllbGQgYWxpZ25tZW50LgorICAgICAqIERpc3BsYXlzIGZsZXhpYmxlIGRheSBwZXJpb2RzLCBz
dWNoIGFzICJpbiB0aGUgbW9ybmluZyIsIGlmIGF2YWlsYWJsZS4KKyAgICAgKiBAc3RhYmxlIElD
VSA1NworICAgICAqLworICAgIFVEQVRfRkxFWElCTEVfREFZX1BFUklPRF9GSUVMRCA9IDM2LAor
CisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKKyAgICAvKioKKyAgICAgKiBGaWVsZFBvc2l0
aW9uIGFuZCBVRmllbGRQb3NpdGlvbiBzZWxlY3RvciBmb3IgdGltZSBzZXBhcmF0b3IsCisgICAg
ICogbm8gY29ycmVzcG9uZGluZyBVQ0FMXyBmaWVsZC4gTm8gcGF0dGVybiBjaGFyYWN0ZXIgaXMg
Y3VycmVudGx5CisgICAgICogZGVmaW5lZCBmb3IgdGhpcy4KKyAgICAgKiBAaW50ZXJuYWwKKyAg
ICAgKi8KKyAgICBVREFUX1RJTUVfU0VQQVJBVE9SX0ZJRUxEID0gMzcsCisjZW5kaWYgIC8qIFVf
SElERV9JTlRFUk5BTF9BUEkgKi8KKworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAg
ICAvKioKICAgICAgKiBOdW1iZXIgb2YgRmllbGRQb3NpdGlvbiBhbmQgVUZpZWxkUG9zaXRpb24g
c2VsZWN0b3JzIGZvcgogICAgICAqIERhdGVGb3JtYXQgYW5kIFVEYXRlRm9ybWF0LgogICAgICAq
IFZhbGlkIHNlbGVjdG9ycyByYW5nZSBmcm9tIDAgdG8gVURBVF9GSUVMRF9DT1VOVC0xLgotICAg
ICAqIFRoaXMgdmFsdWUgaXMgc3ViamVjdCB0byBjaGFuZ2UgaWYgbmV3IGZpZWxkcyBhcmUgZGVm
aW5lZAotICAgICAqIGluIHRoZSBmdXR1cmUuCi0gICAgICogQHN0YWJsZSBJQ1UgMy4wCisgICAg
ICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0
aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCiAgICAgICovCi0gICAgVURBVF9GSUVMRF9DT1VO
VCA9IDM2Ci0KKyAgICBVREFUX0ZJRUxEX0NPVU5UID0gMzgKKyNlbmRpZiAgLyogVV9ISURFX0RF
UFJFQ0FURURfQVBJICovCiB9IFVEYXRlRm9ybWF0RmllbGQ7CiAKIAorI2lmbmRlZiBVX0hJREVf
SU5URVJOQUxfQVBJCisvKioKKyAqIElzIGEgcGF0dGVybiBjaGFyYWN0ZXIgZGVmaW5lZCBmb3Ig
VURBVF9USU1FX1NFUEFSQVRPUl9GSUVMRD8KKyAqIEluIElDVSA1NSBpdCB3YXMgQ09MT04sIGJ1
dCB0aGF0IHdhcyB3aXRoZHJhd24gaW4gSUNVIDU2LgorICogQGludGVybmFsIElDVSA1NgorICov
CisjZGVmaW5lIFVEQVRfSEFTX1BBVFRFUk5fQ0hBUl9GT1JfVElNRV9TRVBBUkFUT1IgMAorI2Vu
ZGlmIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KKworCiAvKioKICAqIE1hcHMgZnJvbSBhIFVE
YXRlRm9ybWF0RmllbGQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgVUNhbGVuZGFyRGF0ZUZpZWxkcy4K
ICAqIE5vdGU6IHNpbmNlIHRoZSBtYXBwaW5nIGlzIG1hbnktdG8tb25lLCB0aGVyZSBpcyBubyBp
bnZlcnNlIG1hcHBpbmcuCkBAIC03OTEsNyArODE3LDcgQEAgdHlwZWRlZiBlbnVtIFVEYXRlRm9y
bWF0RmllbGQgewogICogb2YgZXJyb3IgKGUuZy4sIHRoZSBpbnB1dCBmaWVsZCBpcyBVREFUX0ZJ
RUxEX0NPVU5UKS4KICAqIEBzdGFibGUgSUNVIDQuNAogICovCi1VX1NUQUJMRSBVQ2FsZW5kYXJE
YXRlRmllbGRzIFVfRVhQT1JUMgorVV9DQVBJIFVDYWxlbmRhckRhdGVGaWVsZHMgVV9FWFBPUlQy
CiB1ZGF0X3RvQ2FsZW5kYXJEYXRlRmllbGQoVURhdGVGb3JtYXRGaWVsZCBmaWVsZCk7CiAKIApA
QCAtODIzLDcgKzg0OSw3IEBAIHVkYXRfdG9DYWxlbmRhckRhdGVGaWVsZChVRGF0ZUZvcm1hdEZp
ZWxkIGZpZWxkKTsKICAqIGFuIGVycm9yIG9jY3VycmVkLgogICogQHN0YWJsZSBJQ1UgMi4wCiAg
Ki8KLVVfU1RBQkxFIFVEYXRlRm9ybWF0KiBVX0VYUE9SVDIgCitVX0NBUEkgVURhdGVGb3JtYXQq
IFVfRVhQT1JUMgogdWRhdF9vcGVuKFVEYXRlRm9ybWF0U3R5bGUgIHRpbWVTdHlsZSwKICAgICAg
ICAgICBVRGF0ZUZvcm1hdFN0eWxlICBkYXRlU3R5bGUsCiAgICAgICAgICAgY29uc3QgY2hhciAg
ICAgICAgKmxvY2FsZSwKQEAgLTg0MCwxMyArODY2LDEzIEBAIHVkYXRfb3BlbihVRGF0ZUZvcm1h
dFN0eWxlICB0aW1lU3R5bGUsCiAqIEBwYXJhbSBmb3JtYXQgVGhlIGZvcm1hdHRlciB0byBjbG9z
ZS4KICogQHN0YWJsZSBJQ1UgMi4wCiAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgCitVX0NB
UEkgdm9pZCBVX0VYUE9SVDIKIHVkYXRfY2xvc2UoVURhdGVGb3JtYXQqIGZvcm1hdCk7CiAKIAog
LyoqCiAgKiBEYXRlRm9ybWF0IGJvb2xlYW4gYXR0cmlidXRlcwotICogCisgKgogICogQHN0YWJs
ZSBJQ1UgNTMKICAqLwogdHlwZWRlZiBlbnVtIFVEYXRlRm9ybWF0Qm9vbGVhbkF0dHJpYnV0ZSB7
CkBAIC04NjEsMjIgKzg4NywyNCBAQCB0eXBlZGVmIGVudW0gVURhdGVGb3JtYXRCb29sZWFuQXR0
cmlidXRlIHsKICAgICAgKiBAc3RhYmxlIElDVSA1MwogICAgICAqLwogICAgIFVEQVRfUEFSU0Vf
QUxMT1dfTlVNRVJJQyA9IDEsCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAg
ICAgKiBpbmRpY2F0ZXMgdG9sZXJhbmNlIG9mIGEgcGFydGlhbCBsaXRlcmFsIG1hdGNoCi0gICAg
ICogQGRyYWZ0IElDVSA1MworICAgICAqIGUuZy4gYWNjZXB0aW5nICItLW1vbi0wMi1tYXJjaC0y
MDExIiBmb3IgYSBwYXR0ZXJuIG9mICInLS06ICdFRUUtV1ctTU1NTS15eXl5IgorICAgICAqIEBz
dGFibGUgSUNVIDU2CisgICAgICovCisgICAgVURBVF9QQVJTRV9QQVJUSUFMX0xJVEVSQUxfTUFU
Q0ggPSAyLAorICAgIC8qKgorICAgICAqIGluZGljYXRlcyB0b2xlcmFuY2Ugb2YgcGF0dGVybiBt
aXNtYXRjaCBiZXR3ZWVuIGlucHV0IGRhdGEgYW5kIHNwZWNpZmllZCBmb3JtYXQgcGF0dGVybi4K
KyAgICAgKiBlLmcuIGFjY2VwdGluZyAiU2VwdGVtYmVyIiBmb3IgYSBtb250aCBwYXR0ZXJuIG9m
IE1NTSAoIlNlcCIpCisgICAgICogQHN0YWJsZSBJQ1UgNTYKICAgICAgKi8KLSAgICBVREFUX1BB
UlNFX1BBUlRJQUxfTUFUQ0ggPSAyLAotICAgIC8qKiAgCi0gICAgICogaW5kaWNhdGVzIHRvbGVy
YW5jZSBvZiBwYXR0ZXJuIG1pc21hdGNoIGJldHdlZW4gaW5wdXQgZGF0YSBhbmQgc3BlY2lmaWVk
IGZvcm1hdCBwYXR0ZXJuLiAKLSAgICAgKiBlLmcuIGFjY2VwdGluZyAiU2VwdGVtYmVyIiBmb3Ig
YSBtb250aCBwYXR0ZXJuIG9mIE1NTSAoIlNlcCIpICAgCi0gICAgICogQGRyYWZ0IElDVSA1Mwot
ICAgICAqLyAKICAgICBVREFUX1BBUlNFX01VTFRJUExFX1BBVFRFUk5TX0ZPUl9NQVRDSCA9IDMs
Ci0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLworCisgICAgLyogRG8gbm90IGNvbmRpdGlv
bmFsaXplIHRoZSBmb2xsb3dpbmcgd2l0aCAjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSSwK
KyAgICAgKiBpdCBpcyBuZWVkZWQgZm9yIGxheW91dCBvZiBEYXRlRm9ybWF0IG9iamVjdC4gKi8K
ICAgICAvKioKLSAgICAgKiBjb3VudCBib29sZWFuIGRhdGUgZm9ybWF0IGNvbnN0YW50cwotICAg
ICAqIEBzdGFibGUgSUNVIDUzCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3Jt
YWwgVURhdGVGb3JtYXRCb29sZWFuQXR0cmlidXRlIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVk
IElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0
aWNrZXQgIzEyNDIwLgogICAgICAqLwogICAgIFVEQVRfQk9PTEVBTl9BVFRSSUJVVEVfQ09VTlQg
PSA0CiB9IFVEYXRlRm9ybWF0Qm9vbGVhbkF0dHJpYnV0ZTsKQEAgLTg5MSw3ICs5MTksNyBAQCB0
eXBlZGVmIGVudW0gVURhdGVGb3JtYXRCb29sZWFuQXR0cmlidXRlIHsKICAqIEByZXR1cm4gVGhl
IHZhbHVlIG9mIGF0dHIuCiAgKiBAc3RhYmxlIElDVSA1MwogICovCi1VX1NUQUJMRSBVQm9vbCBV
X0VYUE9SVDIKK1VfQ0FQSSBVQm9vbCBVX0VYUE9SVDIKIHVkYXRfZ2V0Qm9vbGVhbkF0dHJpYnV0
ZShjb25zdCBVRGF0ZUZvcm1hdCogZm10LCBVRGF0ZUZvcm1hdEJvb2xlYW5BdHRyaWJ1dGUgYXR0
ciwgVUVycm9yQ29kZSogc3RhdHVzKTsKIAogLyoqCkBAIC05MDQsNyArOTMyLDcgQEAgdWRhdF9n
ZXRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFVEYXRlRm9ybWF0KiBmbXQsIFVEYXRlRm9ybWF0Qm9v
bGVhbkF0dHJpYnV0ZSBhdHQKICAqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGFuIFVFcnJv
ckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzCiAgKiBAc3RhYmxlIElDVSA1MwogICovCi1VX1NU
QUJMRSB2b2lkIFVfRVhQT1JUMgorVV9DQVBJIHZvaWQgVV9FWFBPUlQyCiB1ZGF0X3NldEJvb2xl
YW5BdHRyaWJ1dGUoVURhdGVGb3JtYXQgKmZtdCwgVURhdGVGb3JtYXRCb29sZWFuQXR0cmlidXRl
IGF0dHIsIFVCb29sIG5ld1ZhbHVlLCBVRXJyb3JDb2RlKiBzdGF0dXMpOwogCiAKQEAgLTkzNiw3
ICs5NjQsNyBAQCBVX05BTUVTUEFDRV9FTkQKICAqIEByZXR1cm4gQSBwb2ludGVyIHRvIGEgVURh
dGVGb3JtYXQgaWRlbnRpY2FsIHRvIGZtdC4KICAqIEBzdGFibGUgSUNVIDIuMAogICovCi1VX1NU
QUJMRSBVRGF0ZUZvcm1hdCogVV9FWFBPUlQyIAorVV9DQVBJIFVEYXRlRm9ybWF0KiBVX0VYUE9S
VDIKIHVkYXRfY2xvbmUoY29uc3QgVURhdGVGb3JtYXQgKmZtdCwKICAgICAgICBVRXJyb3JDb2Rl
ICpzdGF0dXMpOwogCkBAIC05NTgsNyArOTg2LDcgQEAgdWRhdF9jbG9uZShjb25zdCBVRGF0ZUZv
cm1hdCAqZm10LAogKiBAc2VlIFVGaWVsZFBvc2l0aW9uCiAqIEBzdGFibGUgSUNVIDIuMAogKi8K
LVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAorVV9DQVBJIGludDMyX3QgVV9FWFBPUlQyCiB1
ZGF0X2Zvcm1hdCggICAgY29uc3QgICAgVURhdGVGb3JtYXQqICAgIGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIFVEYXRlICAgICAgICAgICBkYXRlVG9Gb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBVQ2hhciogICAgICAgICAgcmVzdWx0LApAQCAtOTY2LDcgKzk5NCw2IEBA
IHVkYXRfZm9ybWF0KCAgICBjb25zdCAgICBVRGF0ZUZvcm1hdCogICAgZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgVUZpZWxkUG9zaXRpb24qIHBvc2l0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgVUVycm9yQ29kZSogICAgIHN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RS
QUZUX0FQSQogLyoqCiAqIEZvcm1hdCBhIGRhdGUgdXNpbmcgYW4gVURhdGVGb3JtYXQuCiAqIFRo
ZSBkYXRlIHdpbGwgYmUgZm9ybWF0dGVkIHVzaW5nIHRoZSBjb252ZW50aW9ucyBzcGVjaWZpZWQg
aW4ge0BsaW5rICN1ZGF0X29wZW4gfQpAQCAtOTg3LDkgKzEwMTQsOSBAQCB1ZGF0X2Zvcm1hdCgg
ICAgY29uc3QgICAgVURhdGVGb3JtYXQqICAgIGZvcm1hdCwKICogQHNlZSB1ZGF0X2Zvcm1hdAog
KiBAc2VlIHVkYXRfcGFyc2VDYWxlbmRhcgogKiBAc2VlIFVGaWVsZFBvc2l0aW9uCi0qIEBkcmFm
dCBJQ1UgNTUKKyogQHN0YWJsZSBJQ1UgNTUKICovCi1VX0RSQUZUIGludDMyX3QgVV9FWFBPUlQy
CitVX0NBUEkgaW50MzJfdCBVX0VYUE9SVDIKIHVkYXRfZm9ybWF0Q2FsZW5kYXIoICAgIGNvbnN0
IFVEYXRlRm9ybWF0KiAgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgVUNhbGVuZGFy
KiAgICAgIGNhbGVuZGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIqICAgICAgICAg
IHJlc3VsdCwKQEAgLTEwMjIsOSArMTA0OSw5IEBAIHVkYXRfZm9ybWF0Q2FsZW5kYXIoICAgIGNv
bnN0IFVEYXRlRm9ybWF0KiAgZm9ybWF0LAogKiAgICAgICAgICBUaGUgdG90YWwgYnVmZmVyIHNp
emUgbmVlZGVkOyBpZiBncmVhdGVyIHRoYW4gcmVzdWx0TGVuZ3RoLCB0aGUgb3V0cHV0IHdhcyB0
cnVuY2F0ZWQuCiAqIEBzZWUgdWRhdF9wYXJzZQogKiBAc2VlIFVGaWVsZFBvc2l0aW9uSXRlcmF0
b3IKLSogQGRyYWZ0IElDVSA1NQorKiBAc3RhYmxlIElDVSA1NQogKi8KLVVfRFJBRlQgaW50MzJf
dCBVX0VYUE9SVDIgCitVX0NBUEkgaW50MzJfdCBVX0VYUE9SVDIKIHVkYXRfZm9ybWF0Rm9yRmll
bGRzKCAgIGNvbnN0IFVEYXRlRm9ybWF0KiBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBVRGF0ZSAgICAgICAgICAgZGF0ZVRvRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
VUNoYXIqICAgICAgICAgIHJlc3VsdCwKQEAgLTEwNjAsOSArMTA4Nyw5IEBAIHVkYXRfZm9ybWF0
Rm9yRmllbGRzKCAgIGNvbnN0IFVEYXRlRm9ybWF0KiBmb3JtYXQsCiAqIEBzZWUgdWRhdF9mb3Jt
YXQKICogQHNlZSB1ZGF0X3BhcnNlQ2FsZW5kYXIKICogQHNlZSBVRmllbGRQb3NpdGlvbkl0ZXJh
dG9yCi0qIEBkcmFmdCBJQ1UgNTUKKyogQHN0YWJsZSBJQ1UgNTUKICovCi1VX0RSQUZUIGludDMy
X3QgVV9FWFBPUlQyCitVX0NBUEkgaW50MzJfdCBVX0VYUE9SVDIKIHVkYXRfZm9ybWF0Q2FsZW5k
YXJGb3JGaWVsZHMoIGNvbnN0IFVEYXRlRm9ybWF0KiBmb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBVQ2FsZW5kYXIqICAgICAgY2FsZW5kYXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBVQ2hhciogICAgICAgICAgcmVzdWx0LApAQCAtMTA3MCw3ICsxMDk3LDYgQEAgdWRhdF9mb3Jt
YXRDYWxlbmRhckZvckZpZWxkcyggY29uc3QgVURhdGVGb3JtYXQqIGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIGZwb3NpdGVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogICAgIHN0YXR1cyk7CiAKLSNlbmRpZiAgLyog
VV9ISURFX0RSQUZUX0FQSSAqLwogCiAvKioKICogUGFyc2UgYSBzdHJpbmcgaW50byBhbiBkYXRl
L3RpbWUgdXNpbmcgYSBVRGF0ZUZvcm1hdC4KQEAgLTEwOTcsNyArMTEyMyw3IEBAIHVkYXRfZm9y
bWF0Q2FsZW5kYXJGb3JGaWVsZHMoIGNvbnN0IFVEYXRlRm9ybWF0KiBmb3JtYXQsCiAqIEBzZWUg
dWRhdF9mb3JtYXQKICogQHN0YWJsZSBJQ1UgMi4wCiAqLwotVV9TVEFCTEUgVURhdGUgVV9FWFBP
UlQyIAorVV9DQVBJIFVEYXRlIFVfRVhQT1JUMgogdWRhdF9wYXJzZShjb25zdCAgICBVRGF0ZUZv
cm1hdCogICAgZm9ybWF0LAogICAgICAgICAgICBjb25zdCAgICBVQ2hhciogICAgICAgICAgdGV4
dCwKICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAgICAgICAgIHRleHRMZW5ndGgsCkBAIC0x
MTI1LDcgKzExNTEsNyBAQCB1ZGF0X3BhcnNlKGNvbnN0ICAgIFVEYXRlRm9ybWF0KiAgICBmb3Jt
YXQsCiAqIEBzZWUgdWRhdF9mb3JtYXQKICogQHN0YWJsZSBJQ1UgMi4wCiAqLwotVV9TVEFCTEUg
dm9pZCBVX0VYUE9SVDIgCitVX0NBUEkgdm9pZCBVX0VYUE9SVDIKIHVkYXRfcGFyc2VDYWxlbmRh
cihjb25zdCAgICBVRGF0ZUZvcm1hdCogICAgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVDYWxlbmRhciogICAgICBjYWxlbmRhciwKICAgICAgICAgICAgICAgICAgICBjb25z
dCAgICBVQ2hhciogICAgICAgICAgdGV4dCwKQEAgLTExNDIsNyArMTE2OCw3IEBAIHVkYXRfcGFy
c2VDYWxlbmRhcihjb25zdCAgICBVRGF0ZUZvcm1hdCogICAgZm9ybWF0LAogKiBAc2VlIHVkYXRf
c2V0TGVuaWVudAogKiBAc3RhYmxlIElDVSAyLjAKICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9S
VDIgCitVX0NBUEkgVUJvb2wgVV9FWFBPUlQyCiB1ZGF0X2lzTGVuaWVudChjb25zdCBVRGF0ZUZv
cm1hdCogZm10KTsKIAogLyoqCkBAIC0xMTU0LDcgKzExODAsNyBAQCB1ZGF0X2lzTGVuaWVudChj
b25zdCBVRGF0ZUZvcm1hdCogZm10KTsKICogQHNlZSBkYXRfaXNMZW5pZW50CiAqIEBzdGFibGUg
SUNVIDIuMAogKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAorVV9DQVBJIHZvaWQgVV9FWFBP
UlQyCiB1ZGF0X3NldExlbmllbnQoICAgIFVEYXRlRm9ybWF0KiAgICBmbXQsCiAgICAgICAgICAg
ICAgICAgICAgIFVCb29sICAgICAgICAgIGlzTGVuaWVudCk7CiAKQEAgLTExNjcsNyArMTE5Myw3
IEBAIHVkYXRfc2V0TGVuaWVudCggICAgVURhdGVGb3JtYXQqICAgIGZtdCwKICogQHNlZSB1ZGF0
X3NldENhbGVuZGFyCiAqIEBzdGFibGUgSUNVIDIuMAogKi8KLVVfU1RBQkxFIGNvbnN0IFVDYWxl
bmRhciogVV9FWFBPUlQyIAorVV9DQVBJIGNvbnN0IFVDYWxlbmRhciogVV9FWFBPUlQyCiB1ZGF0
X2dldENhbGVuZGFyKGNvbnN0IFVEYXRlRm9ybWF0KiBmbXQpOwogCiAvKioKQEAgLTExNzksNyAr
MTIwNSw3IEBAIHVkYXRfZ2V0Q2FsZW5kYXIoY29uc3QgVURhdGVGb3JtYXQqIGZtdCk7CiAqIEBz
ZWUgdWRhdF9zZXRDYWxlbmRhcgogKiBAc3RhYmxlIElDVSAyLjAKICovCi1VX1NUQUJMRSB2b2lk
IFVfRVhQT1JUMiAKK1VfQ0FQSSB2b2lkIFVfRVhQT1JUMgogdWRhdF9zZXRDYWxlbmRhciggICAg
ICAgICAgICBVRGF0ZUZvcm1hdCogICAgZm10LAogICAgICAgICAgICAgICAgICAgICBjb25zdCAg
IFVDYWxlbmRhciogICAgICBjYWxlbmRhclRvU2V0KTsKIApAQCAtMTE5MiwxMCArMTIxOCw5IEBA
IHVkYXRfc2V0Q2FsZW5kYXIoICAgICAgICAgICAgVURhdGVGb3JtYXQqICAgIGZtdCwKICogQHNl
ZSB1ZGF0X3NldE51bWJlckZvcm1hdAogKiBAc3RhYmxlIElDVSAyLjAKICovCi1VX1NUQUJMRSBj
b25zdCBVTnVtYmVyRm9ybWF0KiBVX0VYUE9SVDIgCitVX0NBUEkgY29uc3QgVU51bWJlckZvcm1h
dCogVV9FWFBPUlQyCiB1ZGF0X2dldE51bWJlckZvcm1hdChjb25zdCBVRGF0ZUZvcm1hdCogZm10
KTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAvKioKICogR2V0IHRoZSBVTnVtYmVyRm9y
bWF0IGZvciBzcGVjaWZpYyBmaWVsZCBhc3NvY2lhdGVkIHdpdGggYW4gVURhdGVGb3JtYXQuCiAq
IEZvciBleGFtcGxlOiAneScgZm9yIHllYXIgYW5kICdNJyBmb3IgbW9udGgKQEAgLTEyMDMsMTYg
KzEyMjgsMTYgQEAgdWRhdF9nZXROdW1iZXJGb3JtYXQoY29uc3QgVURhdGVGb3JtYXQqIGZtdCk7
CiAqIEBwYXJhbSBmaWVsZCB0aGUgZmllbGQgdG8gcXVlcnkKICogQHJldHVybiBBIHBvaW50ZXIg
dG8gdGhlIFVOdW1iZXJGb3JtYXQgdXNlZCBieSBmbXQgdG8gZm9ybWF0IGZpZWxkIG51bWJlcnMu
CiAqIEBzZWUgdWRhdF9zZXROdW1iZXJGb3JtYXRGb3JGaWVsZAotKiBAZHJhZnQgSUNVIDU0Cisq
IEBzdGFibGUgSUNVIDU0CiAqLwotVV9EUkFGVCBjb25zdCBVTnVtYmVyRm9ybWF0KiBVX0VYUE9S
VDIgCitVX0NBUEkgY29uc3QgVU51bWJlckZvcm1hdCogVV9FWFBPUlQyCiB1ZGF0X2dldE51bWJl
ckZvcm1hdEZvckZpZWxkKGNvbnN0IFVEYXRlRm9ybWF0KiBmbXQsIFVDaGFyIGZpZWxkKTsKIAog
LyoqCiAqIFNldCB0aGUgVU51bWJlckZvcm1hdCBmb3Igc3BlY2lmaWMgZmllbGQgYXNzb2NpYXRl
ZCB3aXRoIGFuIFVEYXRlRm9ybWF0LgogKiBJdCBjYW4gYmUgYSBzaW5nbGUgZmllbGQgbGlrZTog
InkiKHllYXIpIG9yICJNIihtb250aCkKICogSXQgY2FuIGJlIHNldmVyYWwgZmllbGQgY29tYmlu
ZWQgdG9nZXRoZXI6ICJ5TSIoeWVhciBhbmQgbW9udGgpCi0qIE5vdGU6IAorKiBOb3RlOgogKiAx
IHN5bWJvbCBmaWVsZCBpcyBlbm91Z2ggZm9yIG11bHRpcGxlIHN5bWJvbCBmaWVsZCAoc28gInki
IHdpbGwgb3ZlcnJpZGUgInl5IiwgInl5eSIpCiAqIElmIHRoZSBmaWVsZCBpcyBub3QgbnVtZXJp
YywgdGhlbiBvdmVycmlkZSBoYXMgbm8gZWZmZWN0IChsaWtlICJNTU0iIHdpbGwgdXNlIGFiYnJl
dmlhdGlvbiwgbm90IG51bWVyaWNhbCBmaWVsZCkKICoKQEAgLTEyMjEsMzIgKzEyNDYsMjggQEAg
dWRhdF9nZXROdW1iZXJGb3JtYXRGb3JGaWVsZChjb25zdCBVRGF0ZUZvcm1hdCogZm10LCBVQ2hh
ciBmaWVsZCk7CiAqIEBwYXJhbSBudW1iZXJGb3JtYXRUb1NldCBBIHBvaW50ZXIgdG8gdGhlIFVO
dW1iZXJGb3JtYXQgdG8gYmUgdXNlZCBieSBmbXQgdG8gZm9ybWF0IG51bWJlcnMuCiAqIEBwYXJh
bSBzdGF0dXMgZXJyb3IgY29kZSBwYXNzZWQgYXJvdW5kIChtZW1vcnkgYWxsb2NhdGlvbiBvciBp
bnZhbGlkIGZpZWxkcykKICogQHNlZSB1ZGF0X2dldE51bWJlckZvcm1hdEZvckZpZWxkCi0qIEBk
cmFmdCBJQ1UgNTQKKyogQHN0YWJsZSBJQ1UgNTQKICovCi1VX0RSQUZUIHZvaWQgVV9FWFBPUlQy
IAorVV9DQVBJIHZvaWQgVV9FWFBPUlQyCiB1ZGF0X2Fkb3B0TnVtYmVyRm9ybWF0Rm9yRmllbGRz
KCAgVURhdGVGb3JtYXQqIGZtdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBV
Q2hhciogZmllbGRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOdW1iZXJG
b3JtYXQqICBudW1iZXJGb3JtYXRUb1NldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOwotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICov
Ci0KIC8qKgogKiBTZXQgdGhlIFVOdW1iZXJGb3JtYXQgYXNzb2NpYXRlZCB3aXRoIGFuIFVEYXRl
Rm9ybWF0LgogKiBBIFVEYXRlRm9ybWF0IHVzZXMgYSBVTnVtYmVyRm9ybWF0IHRvIGZvcm1hdCBu
dW1iZXJzIHdpdGhpbiBhIGRhdGUsCiAqIGZvciBleGFtcGxlIHRoZSBkYXkgbnVtYmVyLgotKiBU
aGlzIG1ldGhvZCBhbHNvIGNsZWFycyBwZXIgZmllbGQgTnVtYmVyRm9ybWF0IGluc3RhbmNlcyBw
cmV2aW91c2x5IAotKiBzZXQgYnkge0BzZWUgdWRhdF9zZXROdW1iZXJGb3JtYXRGb3JGaWVsZH0g
CisqIFRoaXMgbWV0aG9kIGFsc28gY2xlYXJzIHBlciBmaWVsZCBOdW1iZXJGb3JtYXQgaW5zdGFu
Y2VzIHByZXZpb3VzbHkKKyogc2V0IGJ5IHtAc2VlIHVkYXRfc2V0TnVtYmVyRm9ybWF0Rm9yRmll
bGR9CiAqIEBwYXJhbSBmbXQgVGhlIGZvcm1hdHRlciB0byBzZXQuCiAqIEBwYXJhbSBudW1iZXJG
b3JtYXRUb1NldCBBIHBvaW50ZXIgdG8gdGhlIFVOdW1iZXJGb3JtYXQgdG8gYmUgdXNlZCBieSBm
bXQgdG8gZm9ybWF0IG51bWJlcnMuCiAqIEBzZWUgdWRhdF9nZXROdW1iZXJGb3JtYXQKICogQHNl
ZSB1ZGF0X3NldE51bWJlckZvcm1hdEZvckZpZWxkCiAqIEBzdGFibGUgSUNVIDIuMAogKi8KLVVf
U1RBQkxFIHZvaWQgVV9FWFBPUlQyIAorVV9DQVBJIHZvaWQgVV9FWFBPUlQyCiB1ZGF0X3NldE51
bWJlckZvcm1hdCggICAgICAgICAgICBVRGF0ZUZvcm1hdCogICAgZm10LAogICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgICBVTnVtYmVyRm9ybWF0KiAgbnVtYmVyRm9ybWF0VG9TZXQpOwot
Ci0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKIC8qKgogKiBBZG9wdCB0aGUgVU51bWJlckZvcm1h
dCBhc3NvY2lhdGVkIHdpdGggYW4gVURhdGVGb3JtYXQuCiAqIEEgVURhdGVGb3JtYXQgdXNlcyBh
IFVOdW1iZXJGb3JtYXQgdG8gZm9ybWF0IG51bWJlcnMgd2l0aGluIGEgZGF0ZSwKQEAgLTEyNTQs
MTMgKzEyNzUsMTEgQEAgdWRhdF9zZXROdW1iZXJGb3JtYXQoICAgICAgICAgICAgVURhdGVGb3Jt
YXQqICAgIGZtdCwKICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHNldC4KICogQHBhcmFt
IG51bWJlckZvcm1hdFRvQWRvcHQgQSBwb2ludGVyIHRvIHRoZSBVTnVtYmVyRm9ybWF0IHRvIGJl
IHVzZWQgYnkgZm10IHRvIGZvcm1hdCBudW1iZXJzLgogKiBAc2VlIHVkYXRfZ2V0TnVtYmVyRm9y
bWF0Ci0qIEBkcmFmdCBJQ1UgNTQKKyogQHN0YWJsZSBJQ1UgNTQKICovCi1VX0RSQUZUIHZvaWQg
VV9FWFBPUlQyIAorVV9DQVBJIHZvaWQgVV9FWFBPUlQyCiB1ZGF0X2Fkb3B0TnVtYmVyRm9ybWF0
KCAgICAgICAgICAgIFVEYXRlRm9ybWF0KiAgICBmbXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVOdW1iZXJGb3JtYXQqICBudW1iZXJGb3JtYXRUb0Fkb3B0KTsKLSNlbmRp
ZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotCiAvKioKICogR2V0IGEgbG9jYWxlIGZvciB3aGlj
aCBkYXRlL3RpbWUgZm9ybWF0dGluZyBwYXR0ZXJucyBhcmUgYXZhaWxhYmxlLgogKiBBIFVEYXRl
Rm9ybWF0IGluIGEgbG9jYWxlIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gd2lsbCBwZXJmb3Jt
IHRoZSBjb3JyZWN0CkBAIC0xMjcwLDcgKzEyODksNyBAQCB1ZGF0X2Fkb3B0TnVtYmVyRm9ybWF0
KCAgICAgICAgICAgIFVEYXRlRm9ybWF0KiAgICBmbXQsCiAqIEBzZWUgdWRhdF9jb3VudEF2YWls
YWJsZQogKiBAc3RhYmxlIElDVSAyLjAKICovCi1VX1NUQUJMRSBjb25zdCBjaGFyKiBVX0VYUE9S
VDIgCitVX0NBUEkgY29uc3QgY2hhciogVV9FWFBPUlQyCiB1ZGF0X2dldEF2YWlsYWJsZShpbnQz
Ml90IGxvY2FsZUluZGV4KTsKIAogLyoqCkBAIC0xMjgxLDcgKzEzMDAsNyBAQCB1ZGF0X2dldEF2
YWlsYWJsZShpbnQzMl90IGxvY2FsZUluZGV4KTsKICogQHNlZSB1ZGF0X2dldEF2YWlsYWJsZQog
KiBAc3RhYmxlIElDVSAyLjAKICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMiAKK1VfQ0FQ
SSBpbnQzMl90IFVfRVhQT1JUMgogdWRhdF9jb3VudEF2YWlsYWJsZSh2b2lkKTsKIAogLyoqCkBA
IC0xMjk0LDcgKzEzMTMsNyBAQCB1ZGF0X2NvdW50QXZhaWxhYmxlKHZvaWQpOwogKiBAc2VlIHVk
YXRfU2V0MkRpZ2l0WWVhclN0YXJ0CiAqIEBzdGFibGUgSUNVIDIuMAogKi8KLVVfU1RBQkxFIFVE
YXRlIFVfRVhQT1JUMiAKK1VfQ0FQSSBVRGF0ZSBVX0VYUE9SVDIKIHVkYXRfZ2V0MkRpZ2l0WWVh
clN0YXJ0KCAgICBjb25zdCAgIFVEYXRlRm9ybWF0ICAgICAqZm10LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAgICAgICpzdGF0dXMpOwogCkBAIC0xMzA4
LDcgKzEzMjcsNyBAQCB1ZGF0X2dldDJEaWdpdFllYXJTdGFydCggICAgY29uc3QgICBVRGF0ZUZv
cm1hdCAgICAgKmZtdCwKICogQHNlZSB1ZGF0X1NldDJEaWdpdFllYXJTdGFydAogKiBAc3RhYmxl
IElDVSAyLjAKICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMiAKK1VfQ0FQSSB2b2lkIFVfRVhQ
T1JUMgogdWRhdF9zZXQyRGlnaXRZZWFyU3RhcnQoICAgIFVEYXRlRm9ybWF0ICAgICAqZm10LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVEYXRlICAgICAgICAgICBkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICAqc3RhdHVzKTsKQEAgLTEzMjUsNyAr
MTM0NCw3IEBAIHVkYXRfc2V0MkRpZ2l0WWVhclN0YXJ0KCAgICBVRGF0ZUZvcm1hdCAgICAgKmZt
dCwKICogQHNlZSB1ZGF0X2FwcGx5UGF0dGVybgogKiBAc3RhYmxlIElDVSAyLjAKICovCi1VX1NU
QUJMRSBpbnQzMl90IFVfRVhQT1JUMiAKK1VfQ0FQSSBpbnQzMl90IFVfRVhQT1JUMgogdWRhdF90
b1BhdHRlcm4oICAgIGNvbnN0ICAgVURhdGVGb3JtYXQgICAgICpmbXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBVQm9vbCAgICAgICAgICBsb2NhbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBVQ2hhciAgICAgICAgICAgKnJlc3VsdCwKQEAgLTEzNDIsMTQgKzEzNjEsMTQgQEAgdWRh
dF90b1BhdHRlcm4oICAgIGNvbnN0ICAgVURhdGVGb3JtYXQgICAgICpmbXQsCiAqIEBzZWUgdWRh
dF90b1BhdHRlcm4KICogQHN0YWJsZSBJQ1UgMi4wCiAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9S
VDIgCitVX0NBUEkgdm9pZCBVX0VYUE9SVDIKIHVkYXRfYXBwbHlQYXR0ZXJuKCAgICAgICAgICAg
IFVEYXRlRm9ybWF0ICAgICAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVC
b29sICAgICAgICAgIGxvY2FsaXplZCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgICBVQ2hh
ciAgICAgICAgICAgKnBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJf
dCAgICAgICAgIHBhdHRlcm5MZW5ndGgpOwogCi0vKiogCi0gKiBUaGUgcG9zc2libGUgdHlwZXMg
b2YgZGF0ZSBmb3JtYXQgc3ltYm9scyAKKy8qKgorICogVGhlIHBvc3NpYmxlIHR5cGVzIG9mIGRh
dGUgZm9ybWF0IHN5bWJvbHMKICAqIEBzdGFibGUgSUNVIDIuNgogICovCiB0eXBlZGVmIGVudW0g
VURhdGVGb3JtYXRTeW1ib2xUeXBlIHsKQEAgLTE0MDgsNDQgKzE0MjcsNDEgQEAgdHlwZWRlZiBl
bnVtIFVEYXRlRm9ybWF0U3ltYm9sVHlwZSB7CiAgICAgICogU3RhbmRhbG9uZSB2ZXJzaW9uIG9m
IFVEQVRfU0hPUlRFUl9XRUVLREFZUy4KICAgICAgKiBAc3RhYmxlIElDVSA1MQogICAgICAqLwot
ICAgIFVEQVRfU1RBTkRBTE9ORV9TSE9SVEVSX1dFRUtEQVlTCi0jaWZuZGVmIFVfSElERV9EUkFG
VF9BUEkKLSAgICAsCisgICAgVURBVF9TVEFOREFMT05FX1NIT1JURVJfV0VFS0RBWVMsCiAgICAg
LyoqCiAgICAgICogQ3ljbGljIHllYXIgbmFtZXMgKG9ubHkgc3VwcG9ydGVkIGZvciBzb21lIGNh
bGVuZGFycywgYW5kIG9ubHkgZm9yIEZPUk1BVCB1c2FnZTsKICAgICAgKiB1ZGF0X3NldFN5bWJv
bHMgbm90IHN1cHBvcnRlZCBmb3IgVURBVF9DWUNMSUNfWUVBUlNfV0lERSkKLSAgICAgKiBAZHJh
ZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBVREFUX0NZQ0xJ
Q19ZRUFSU19XSURFLAogICAgIC8qKgogICAgICAqIEN5Y2xpYyB5ZWFyIG5hbWVzIChvbmx5IHN1
cHBvcnRlZCBmb3Igc29tZSBjYWxlbmRhcnMsIGFuZCBvbmx5IGZvciBGT1JNQVQgdXNhZ2UpCi0g
ICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAg
VURBVF9DWUNMSUNfWUVBUlNfQUJCUkVWSUFURUQsCiAgICAgLyoqCiAgICAgICogQ3ljbGljIHll
YXIgbmFtZXMgKG9ubHkgc3VwcG9ydGVkIGZvciBzb21lIGNhbGVuZGFycywgYW5kIG9ubHkgZm9y
IEZPUk1BVCB1c2FnZTsKICAgICAgKiB1ZGF0X3NldFN5bWJvbHMgbm90IHN1cHBvcnRlZCBmb3Ig
VURBVF9DWUNMSUNfWUVBUlNfTkFSUk9XKQotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBA
c3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIFVEQVRfQ1lDTElDX1lFQVJTX05BUlJPVywKICAg
ICAvKioKICAgICAgKiBDYWxlbmRhciB6b2RpYWMgIG5hbWVzIChvbmx5IHN1cHBvcnRlZCBmb3Ig
c29tZSBjYWxlbmRhcnMsIGFuZCBvbmx5IGZvciBGT1JNQVQgdXNhZ2U7CiAgICAgICogdWRhdF9z
ZXRTeW1ib2xzIG5vdCBzdXBwb3J0ZWQgZm9yIFVEQVRfWk9ESUFDX05BTUVTX1dJREUpCi0gICAg
ICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgVURB
VF9aT0RJQUNfTkFNRVNfV0lERSwKICAgICAvKioKICAgICAgKiBDYWxlbmRhciB6b2RpYWMgIG5h
bWVzIChvbmx5IHN1cHBvcnRlZCBmb3Igc29tZSBjYWxlbmRhcnMsIGFuZCBvbmx5IGZvciBGT1JN
QVQgdXNhZ2UpCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAg
ICAgICovCiAgICAgVURBVF9aT0RJQUNfTkFNRVNfQUJCUkVWSUFURUQsCiAgICAgLyoqCiAgICAg
ICogQ2FsZW5kYXIgem9kaWFjICBuYW1lcyAob25seSBzdXBwb3J0ZWQgZm9yIHNvbWUgY2FsZW5k
YXJzLCBhbmQgb25seSBmb3IgRk9STUFUIHVzYWdlOwogICAgICAqIHVkYXRfc2V0U3ltYm9scyBu
b3Qgc3VwcG9ydGVkIGZvciBVREFUX1pPRElBQ19OQU1FU19OQVJST1cpCi0gICAgICogQGRyYWZ0
IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgVURBVF9aT0RJQUNf
TkFNRVNfTkFSUk9XCi0jZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KIH0gVURhdGVGb3Jt
YXRTeW1ib2xUeXBlOwogCiBzdHJ1Y3QgVURhdGVGb3JtYXRTeW1ib2xzOwpAQCAtMTQ3MSw3ICsx
NDg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVURhdGVGb3JtYXRTeW1ib2xzIFVEYXRlRm9ybWF0U3lt
Ym9sczsKICogQHNlZSB1ZGF0X3NldFN5bWJvbHMKICogQHN0YWJsZSBJQ1UgMi4wCiAqLwotVV9T
VEFCTEUgaW50MzJfdCBVX0VYUE9SVDIgCitVX0NBUEkgaW50MzJfdCBVX0VYUE9SVDIKIHVkYXRf
Z2V0U3ltYm9scyhjb25zdCAgIFVEYXRlRm9ybWF0ICAgICAgICAgICAgICpmbXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUgICB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCAgICAgICAgICAgICAgICAgc3ltYm9sSW5kZXgsCkBAIC0x
NDkxLDcgKzE1MDcsNyBAQCB1ZGF0X2dldFN5bWJvbHMoY29uc3QgICBVRGF0ZUZvcm1hdCAgICAg
ICAgICAgICAqZm10LAogKiBAc2VlIHVkYXRfc2V0U3ltYm9scwogKiBAc3RhYmxlIElDVSAyLjAK
ICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMiAKK1VfQ0FQSSBpbnQzMl90IFVfRVhQT1JU
MgogdWRhdF9jb3VudFN5bWJvbHMoICAgIGNvbnN0ICAgIFVEYXRlRm9ybWF0ICAgICAgICAgICAg
ICAgICpmbXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVURhdGVGb3JtYXRTeW1ib2xU
eXBlICAgIHR5cGUpOwogCkBAIC0xNTEwLDcgKzE1MjYsNyBAQCB1ZGF0X2NvdW50U3ltYm9scygg
ICAgY29uc3QgICAgVURhdGVGb3JtYXQgICAgICAgICAgICAgICAgKmZtdCwKICogQHNlZSB1ZGF0
X2NvdW50U3ltYm9scwogKiBAc3RhYmxlIElDVSAyLjAKICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQ
T1JUMiAKK1VfQ0FQSSB2b2lkIFVfRVhQT1JUMgogdWRhdF9zZXRTeW1ib2xzKCAgICBVRGF0ZUZv
cm1hdCAgICAgICAgICAgICAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBVRGF0ZUZvcm1h
dFN5bWJvbFR5cGUgICB0eXBlLAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAg
ICAgICAgICBzeW1ib2xJbmRleCwKQEAgLTE1MjIsMTUgKzE1MzgsMTUgQEAgdWRhdF9zZXRTeW1i
b2xzKCAgICBVRGF0ZUZvcm1hdCAgICAgICAgICAgICAqZm9ybWF0LAogICogR2V0IHRoZSBsb2Nh
bGUgZm9yIHRoaXMgZGF0ZSBmb3JtYXQgb2JqZWN0LgogICogWW91IGNhbiBjaG9vc2UgYmV0d2Vl
biB2YWxpZCBhbmQgYWN0dWFsIGxvY2FsZS4KICAqIEBwYXJhbSBmbXQgVGhlIGZvcm1hdHRlciB0
byBnZXQgdGhlIGxvY2FsZSBmcm9tCi0gKiBAcGFyYW0gdHlwZSB0eXBlIG9mIHRoZSBsb2NhbGUg
d2UncmUgbG9va2luZyBmb3IgKHZhbGlkIG9yIGFjdHVhbCkgCisgKiBAcGFyYW0gdHlwZSB0eXBl
IG9mIHRoZSBsb2NhbGUgd2UncmUgbG9va2luZyBmb3IgKHZhbGlkIG9yIGFjdHVhbCkKICAqIEBw
YXJhbSBzdGF0dXMgZXJyb3IgY29kZSBmb3IgdGhlIG9wZXJhdGlvbgogICogQHJldHVybiB0aGUg
bG9jYWxlIG5hbWUKICAqIEBzdGFibGUgSUNVIDIuOAogICovCi1VX1NUQUJMRSBjb25zdCBjaGFy
KiBVX0VYUE9SVDIKK1VfQ0FQSSBjb25zdCBjaGFyKiBVX0VYUE9SVDIKIHVkYXRfZ2V0TG9jYWxl
QnlUeXBlKGNvbnN0IFVEYXRlRm9ybWF0ICpmbXQsCiAgICAgICAgICAgICAgICAgICAgICBVTG9j
RGF0YUxvY2FsZVR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIHN0
YXR1cyk7IAorICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsKIAogLyoq
CiAgKiBTZXQgYSBwYXJ0aWN1bGFyIFVEaXNwbGF5Q29udGV4dCB2YWx1ZSBpbiB0aGUgZm9ybWF0
dGVyLCBzdWNoIGFzCkBAIC0xNTQwLDcgKzE1NTYsNyBAQCB1ZGF0X2dldExvY2FsZUJ5VHlwZShj
b25zdCBVRGF0ZUZvcm1hdCAqZm10LAogICogQHBhcmFtIHN0YXR1cyBBIHBvaW50ZXIgdG8gYW4g
VUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMKICAqIEBzdGFibGUgSUNVIDUxCiAgKi8K
LVVfRFJBRlQgdm9pZCBVX0VYUE9SVDIKK1VfQ0FQSSB2b2lkIFVfRVhQT1JUMgogdWRhdF9zZXRD
b250ZXh0KFVEYXRlRm9ybWF0KiBmbXQsIFVEaXNwbGF5Q29udGV4dCB2YWx1ZSwgVUVycm9yQ29k
ZSogc3RhdHVzKTsKIAogLyoqCkBAIC0xNTUyLDcgKzE1NjgsNyBAQCB1ZGF0X3NldENvbnRleHQo
VURhdGVGb3JtYXQqIGZtdCwgVURpc3BsYXlDb250ZXh0IHZhbHVlLCBVRXJyb3JDb2RlKiBzdGF0
dXMpOwogICogQHJldHVybiBUaGUgVURpc3BsYXlDb250ZXh0VmFsdWUgZm9yIHRoZSBzcGVjaWZp
ZWQgdHlwZS4KICAqIEBzdGFibGUgSUNVIDUzCiAgKi8KLVVfU1RBQkxFIFVEaXNwbGF5Q29udGV4
dCBVX0VYUE9SVDIKK1VfQ0FQSSBVRGlzcGxheUNvbnRleHQgVV9FWFBPUlQyCiB1ZGF0X2dldENv
bnRleHQoY29uc3QgVURhdGVGb3JtYXQqIGZtdCwgVURpc3BsYXlDb250ZXh0VHlwZSB0eXBlLCBV
RXJyb3JDb2RlKiBzdGF0dXMpOwogCiAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKQEAgLTE1
NjcsNyArMTU4Myw3IEBAIHVkYXRfZ2V0Q29udGV4dChjb25zdCBVRGF0ZUZvcm1hdCogZm10LCBV
RGlzcGxheUNvbnRleHRUeXBlIHR5cGUsIFVFcnJvckNvZGUqIHN0CiAqIEBzZWUgdWRhdF9hcHBs
eVBhdHRlcm5SZWxhdGl2ZQogKiBAaW50ZXJuYWwgSUNVIDQuMiB0ZWNobm9sb2d5IHByZXZpZXcK
ICovCi1VX0lOVEVSTkFMIGludDMyX3QgVV9FWFBPUlQyIAorVV9JTlRFUk5BTCBpbnQzMl90IFVf
RVhQT1JUMgogdWRhdF90b1BhdHRlcm5SZWxhdGl2ZURhdGUoY29uc3QgVURhdGVGb3JtYXQgKmZt
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyICAgICAgICAgICAgICpyZXN1bHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICByZXN1bHRMZW5n
dGgsCkBAIC0xNTg0LDcgKzE2MDAsNyBAQCB1ZGF0X3RvUGF0dGVyblJlbGF0aXZlRGF0ZShjb25z
dCBVRGF0ZUZvcm1hdCAqZm10LAogKiBAc2VlIHVkYXRfYXBwbHlQYXR0ZXJuUmVsYXRpdmUKICog
QGludGVybmFsIElDVSA0LjIgdGVjaG5vbG9neSBwcmV2aWV3CiAqLwotVV9JTlRFUk5BTCBpbnQz
Ml90IFVfRVhQT1JUMiAKK1VfSU5URVJOQUwgaW50MzJfdCBVX0VYUE9SVDIKIHVkYXRfdG9QYXR0
ZXJuUmVsYXRpdmVUaW1lKGNvbnN0IFVEYXRlRm9ybWF0ICpmbXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVQ2hhciAgICAgICAgICAgICAqcmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCAgICAgICAgICAgcmVzdWx0TGVuZ3RoLApAQCAtMTYwMiw3ICsxNjE4
LDcgQEAgdWRhdF90b1BhdHRlcm5SZWxhdGl2ZVRpbWUoY29uc3QgVURhdGVGb3JtYXQgKmZtdCwK
ICogQHNlZSB1ZGF0X3RvUGF0dGVyblJlbGF0aXZlRGF0ZSwgdWRhdF90b1BhdHRlcm5SZWxhdGl2
ZVRpbWUKICogQGludGVybmFsIElDVSA0LjIgdGVjaG5vbG9neSBwcmV2aWV3CiAqLwotVV9JTlRF
Uk5BTCB2b2lkIFVfRVhQT1JUMiAKK1VfSU5URVJOQUwgdm9pZCBVX0VYUE9SVDIKIHVkYXRfYXBw
bHlQYXR0ZXJuUmVsYXRpdmUoVURhdGVGb3JtYXQgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVUNoYXIgKmRhdGVQYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90ICAgICBkYXRlUGF0dGVybkxlbmd0aCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdWRhdGEuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWRhdGEuaApp
bmRleCAyOWU0NjYzMGQ1Mzk4ZDgyNzM4ZDFkNjFmZmM0ZDJjOTE0ZThjNjhiLi5hMDI4NmUxZTQy
MDM2NzgyOTg2ZDUyM2FiZjM3MGU3YzNhMjVhYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3VkYXRhLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91ZGF0YS5oCkBA
IC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTYsNyArOCw3
IEBACiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1ZGF0YS5oCi0q
ICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBz
aXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTQwOCw4ICs0MTAs
MTMgQEAgdHlwZWRlZiBlbnVtIFVEYXRhRmlsZUFjY2VzcyB7CiAgICAgVURBVEFfUEFDS0FHRVNf
RklSU1QsCiAgICAgLyoqIElDVSBkb2VzIG5vdCBhY2Nlc3MgdGhlIGZpbGUgc3lzdGVtIGZvciBk
YXRhIGxvYWRpbmcuIEBzdGFibGUgSUNVIDMuNCAqLwogICAgIFVEQVRBX05PX0ZJTEVTLAotICAg
IC8qKiBOdW1iZXIgb2YgcmVhbCBVRGF0YUZpbGVBY2Nlc3MgdmFsdWVzLiBAc3RhYmxlIElDVSAz
LjQgKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogTnVt
YmVyIG9mIHJlYWwgVURhdGFGaWxlQWNjZXNzIHZhbHVlcy4KKyAgICAgKiBAZGVwcmVjYXRlZCBJ
Q1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlj
a2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVREFUQV9GSUxFX0FDQ0VTU19DT1VOVAorI2VuZGlm
ICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVURhdGFGaWxlQWNjZXNzOwogCiAvKioKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWRhdGVpbnRlcnZhbGZvcm1hdC5oIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS91ZGF0ZWludGVydmFsZm9ybWF0LmgKaW5kZXggNWVlOTJl
NjI5YWY1NDkxM2EzODRhZTc1NjRjMzk3YTkxNGJlZDI4My4uOTMwMGRkY2Y4MmI5NjU2Y2NlMDYz
MGRkN2Q3ODFlYTMxNDkyYjM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91
ZGF0ZWludGVydmFsZm9ybWF0LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91ZGF0ZWlu
dGVydmFsZm9ybWF0LmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5p
Y29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDov
L3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCi0qIENvcHlyaWdodCAoQykgMjAxMC0yMDEyLCBJbnRlcm5hdGlvbmFsIEJ1
c2luZXNzIE1hY2hpbmVzCisqIENvcHlyaWdodCAoQykgMjAxMC0yMDEyLDIwMTUgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCkBAIC0x
NjAsNiArMTYyLDkgQEAgVV9OQU1FU1BBQ0VfRU5ECiAgKiAgICAgICAgICAgIHRoZSBiZWdpbm5p
bmcgYW5kIGVuZGluZyBpbmRpY2VzIG9mIGZpZWxkIG51bWJlciBwb3NpdGlvbi0+ZmllbGQsCiAg
KiAgICAgICAgICAgIGlmIHN1Y2ggYSBmaWVsZCBleGlzdHMuIFRoaXMgcGFyYW1ldGVyIG1heSBi
ZSBOVUxMLCBpbiB3aGljaCBjYXNlCiAgKiAgICAgICAgICAgIG5vIGZpZWxkIHBvc2l0aW9uIGRh
dGEgaXMgcmV0dXJuZWQuCisgKiAgICAgICAgICAgIFRoZXJlIG1heSBiZSBtdWx0aXBsZSBpbnN0
YW5jZXMgb2YgYSBnaXZlbiBmaWVsZCB0eXBlIGluIGFuCisgKiAgICAgICAgICAgIGludGVydmFs
IGZvcm1hdDsgaW4gdGhpcyBjYXNlIHRoZSBwb3NpdGlvbiBpbmRpY2VzIHJlZmVyIHRvIHRoZQor
ICogICAgICAgICAgICBmaXJzdCBpbnN0YW5jZS4KICAqIEBwYXJhbSBzdGF0dXMKICAqICAgICAg
ICAgICAgQSBwb2ludGVyIHRvIGEgVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMuCiAg
KiBAcmV0dXJuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VkYXRwZy5oIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS91ZGF0cGcuaAppbmRleCA2Yjk1MjUyODk1ZTAyNTM0NGJj
MzM5ZmE1OTRjYmYzYWUzYTE5M2RlLi43NmJhYTNkYTU4OTQwZmUyMmMyYzNkNzhlZDUwMjc5Mzk5
YzU1MmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VkYXRwZy5oCisrKyBi
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWRhdHBnLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAy
MDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRl
cm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKICoKQEAgLTYsNyArOCw3IEBACiAqCiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgdWRhdHBnLmgKLSogICBlbmNvZGluZzogICBVUy1B
U0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQp
CiAqICAgaW5kZW50YXRpb246NAogKgpAQCAtODMsNyArODUsMTMgQEAgdHlwZWRlZiBlbnVtIFVE
YXRlVGltZVBhdHRlcm5GaWVsZCB7CiAgICAgVURBVFBHX0ZSQUNUSU9OQUxfU0VDT05EX0ZJRUxE
LAogICAgIC8qKiBAc3RhYmxlIElDVSAzLjggKi8KICAgICBVREFUUEdfWk9ORV9GSUVMRCwKLSAg
ICAvKiogQHN0YWJsZSBJQ1UgMy44ICovCisKKyAgICAvKiBEbyBub3QgY29uZGl0aW9uYWxpemUg
dGhlIGZvbGxvd2luZyB3aXRoICNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJLAorICAgICAq
IGl0IGlzIG5lZWRlZCBmb3IgbGF5b3V0IG9mIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvciBvYmpl
Y3QuICovCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwg
VURhdGVUaW1lUGF0dGVybkZpZWxkIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBU
aGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEy
NDIwLgorICAgICAqLwogICAgIFVEQVRQR19GSUVMRF9DT1VOVAogfSBVRGF0ZVRpbWVQYXR0ZXJu
RmllbGQ7CiAKQEAgLTEyMCw4ICsxMjgsMTMgQEAgdHlwZWRlZiBlbnVtIFVEYXRlVGltZVBhdHRl
cm5Db25mbGljdCB7CiAgICAgVURBVFBHX0JBU0VfQ09ORkxJQ1QsCiAgICAgLyoqIEBzdGFibGUg
SUNVIDMuOCAqLwogICAgIFVEQVRQR19DT05GTElDVCwKLSAgICAvKiogQHN0YWJsZSBJQ1UgMy44
ICovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBt
b3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVEYXRlVGltZVBhdHRlcm5Db25mbGljdCB2YWx1
ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5n
ZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVREFUUEdf
Q09ORkxJQ1RfQ09VTlQKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9IFVEYXRl
VGltZVBhdHRlcm5Db25mbGljdDsKIAogLyoqCkBAIC0yNTksNyArMjcyLDggQEAgdWRhdHBnX2dl
dEJlc3RQYXR0ZXJuV2l0aE9wdGlvbnMoVURhdGVUaW1lUGF0dGVybkdlbmVyYXRvciAqZHRwZywK
ICAgKiBDb25zZWN1dGl2ZSBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIGRvIG5vdCBhZmZlY3QgZWFj
aCBvdGhlciwKICAgKiBidXQgdGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBjb25jdXJyZW50
bHkgb24gYSBzaW5nbGUgZ2VuZXJhdG9yIG9iamVjdC4KICAgKgotICAqIEBwYXJhbSBkdHBnICAg
ICBhIHBvaW50ZXIgdG8gVURhdGVUaW1lUGF0dGVybkdlbmVyYXRvci4KKyAgKiBAcGFyYW0gdW51
c2VkRHRwZyAgICAgYSBwb2ludGVyIHRvIFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3IuCisgICog
ICAgVGhpcyBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuIENhbGxlcnMgbWF5IHBhc3MgTlVM
TC4KICAgKiBAcGFyYW0gcGF0dGVybiAgaW5wdXQgcGF0dGVybiwgc3VjaCBhcyAiZGQvTU1NIi4K
ICAgKiBAcGFyYW0gbGVuZ3RoICAgdGhlIGxlbmd0aCBvZiBwYXR0ZXJuLgogICAqIEBwYXJhbSBz
a2VsZXRvbiBzdWNoIGFzICJNTU1kZCIKQEAgLTI3MCw3ICsyODQsNyBAQCB1ZGF0cGdfZ2V0QmVz
dFBhdHRlcm5XaXRoT3B0aW9ucyhVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yICpkdHBnLAogICAq
IEBzdGFibGUgSUNVIDMuOAogICAqLwogVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVkYXRw
Z19nZXRTa2VsZXRvbihVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yICpkdHBnLAordWRhdHBnX2dl
dFNrZWxldG9uKFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3IgKnVudXNlZER0cGcsCiAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVUNoYXIgKnBhdHRlcm4sIGludDMyX3QgbGVuZ3RoLAogICAgICAg
ICAgICAgICAgICAgIFVDaGFyICpza2VsZXRvbiwgaW50MzJfdCBjYXBhY2l0eSwKICAgICAgICAg
ICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKQEAgLTI4OCw3ICszMDIsOCBAQCB1
ZGF0cGdfZ2V0U2tlbGV0b24oVURhdGVUaW1lUGF0dGVybkdlbmVyYXRvciAqZHRwZywKICAqIENv
bnNlY3V0aXZlIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gZG8gbm90IGFmZmVjdCBlYWNoIG90aGVy
LAogICogYnV0IHRoaXMgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgY29uY3VycmVudGx5IG9uIGEg
c2luZ2xlIGdlbmVyYXRvciBvYmplY3QuCiAgKgotICogQHBhcmFtIGR0cGcgICAgIGEgcG9pbnRl
ciB0byBVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yLgorICogQHBhcmFtIHVudXNlZER0cGcgICAg
IGEgcG9pbnRlciB0byBVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yLgorICogICAgVGhpcyBwYXJh
bWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuIENhbGxlcnMgbWF5IHBhc3MgTlVMTC4KICAqIEBwYXJh
bSBwYXR0ZXJuICBpbnB1dCBwYXR0ZXJuLCBzdWNoIGFzICJkZC9NTU0iLgogICogQHBhcmFtIGxl
bmd0aCAgIHRoZSBsZW5ndGggb2YgcGF0dGVybi4KICAqIEBwYXJhbSBiYXNlU2tlbGV0b24gc3Vj
aCBhcyAiTWQiCkBAIC0yOTksNyArMzE0LDcgQEAgdWRhdHBnX2dldFNrZWxldG9uKFVEYXRlVGlt
ZVBhdHRlcm5HZW5lcmF0b3IgKmR0cGcsCiAgKiBAc3RhYmxlIElDVSAzLjgKICAqLwogVV9TVEFC
TEUgaW50MzJfdCBVX0VYUE9SVDIKLXVkYXRwZ19nZXRCYXNlU2tlbGV0b24oVURhdGVUaW1lUGF0
dGVybkdlbmVyYXRvciAqZHRwZywKK3VkYXRwZ19nZXRCYXNlU2tlbGV0b24oVURhdGVUaW1lUGF0
dGVybkdlbmVyYXRvciAqdW51c2VkRHRwZywKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VUNoYXIgKnBhdHRlcm4sIGludDMyX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBV
Q2hhciAqYmFzZVNrZWxldG9uLCBpbnQzMl90IGNhcGFjaXR5LAogICAgICAgICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdWRpc3BsYXljb250ZXh0LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VkaXNw
bGF5Y29udGV4dC5oCmluZGV4IDkyYjJmOTRhNDkxZGNjZWVjZDMzYmU3MTUxOTVhNDM0NzQ5NTJm
ZWQuLjM5ODQ4MWM2ODEyMjQ3ODU2MThmNWFkMTJlMTFiOTFiMDkzYjEwNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWRpc3BsYXljb250ZXh0LmgKKysrIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91ZGlzcGxheWNvbnRleHQuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIw
MTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVy
bXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSogQ29weXJpZ2h0IChDKSAyMDE0LCBJbnRl
cm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2LCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog
Ki8KQEAgLTM1LDE2ICszNywxOSBAQCBlbnVtIFVEaXNwbGF5Q29udGV4dFR5cGUgewogICAgICAq
IFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9CRUdJTk5JTkdfT0ZfU0VOVEVOQ0UsIGV0Yy4K
ICAgICAgKiBAc3RhYmxlIElDVSA1MQogICAgICAqLwotICAgIFVESVNQQ1RYX1RZUEVfQ0FQSVRB
TElaQVRJT04gPSAxCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKLSAgICAsCisgICAgVURJU1BD
VFhfVFlQRV9DQVBJVEFMSVpBVElPTiA9IDEsCiAgICAgLyoqCiAgICAgICogVHlwZSB0byByZXRy
aWV2ZSB0aGUgZGlzcGxheSBsZW5ndGggc2V0dGluZywgZS5nLgogICAgICAqIFVESVNQQ1RYX0xF
TkdUSF9GVUxMLCBVRElTUENUWF9MRU5HVEhfU0hPUlQuCi0gICAgICogQGRyYWZ0IElDVSA1NAor
ICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCi0gICAgVURJU1BDVFhfVFlQRV9ESVNQTEFZ
X0xFTkdUSCA9IDIKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLworICAgIFVESVNQQ1RY
X1RZUEVfRElTUExBWV9MRU5HVEggPSAyLAorICAgIC8qKgorICAgICAqIFR5cGUgdG8gcmV0cmll
dmUgdGhlIHN1YnN0aXR1dGUgaGFuZGxpbmcgc2V0dGluZywgZS5nLgorICAgICAqIFVESVNQQ1RY
X1NVQlNUSVRVVEUsIFVESVNQQ1RYX05PX1NVQlNUSVRVVEUuCisgICAgICogQHN0YWJsZSBJQ1Ug
NTgKKyAgICAgKi8KKyAgICBVRElTUENUWF9UWVBFX1NVQlNUSVRVVEVfSEFORExJTkcgPSAzCiB9
OwogLyoqCiAqICBAc3RhYmxlIElDVSA1MQpAQCAtMTE1LDkgKzEyMCw3IEBAIGVudW0gVURpc3Bs
YXlDb250ZXh0IHsKICAgICAgKiBpc29sYXRlZCBuYW1lIG9uIGEgY2FsZW5kYXIgcGFnZS4KICAg
ICAgKiBAc3RhYmxlIElDVSA1MQogICAgICAqLwotICAgIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9O
X0ZPUl9TVEFOREFMT05FID0gKFVESVNQQ1RYX1RZUEVfQ0FQSVRBTElaQVRJT048PDgpICsgNAot
I2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCi0gICAgLAorICAgIFVESVNQQ1RYX0NBUElUQUxJWkFU
SU9OX0ZPUl9TVEFOREFMT05FID0gKFVESVNQQ1RYX1RZUEVfQ0FQSVRBTElaQVRJT048PDgpICsg
NCwKICAgICAvKioKICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAg
ICAqIERJU1BMQVlfTEVOR1RIIGNhbiBiZSBzZXQgdG8gb25lIG9mIFVESVNQQ1RYX0xFTkdUSF9G
VUxMIG9yCkBAIC0xMjgsMTcgKzEzMSwzNiBAQCBlbnVtIFVEaXNwbGF5Q29udGV4dCB7CiAgICAg
ICogQSBwb3NzaWJsZSBzZXR0aW5nIGZvciBESVNQTEFZX0xFTkdUSDoKICAgICAgKiB1c2UgZnVs
bCBuYW1lcyB3aGVuIGdlbmVyYXRpbmcgYSBsb2NhbGUgbmFtZSwKICAgICAgKiBlLmcuICJVbml0
ZWQgU3RhdGVzIiBmb3IgVVMuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUg
SUNVIDU0CiAgICAgICovCiAgICAgVURJU1BDVFhfTEVOR1RIX0ZVTEwgPSAoVURJU1BDVFhfVFlQ
RV9ESVNQTEFZX0xFTkdUSDw8OCkgKyAwLAogICAgIC8qKgogICAgICAqIEEgcG9zc2libGUgc2V0
dGluZyBmb3IgRElTUExBWV9MRU5HVEg6CiAgICAgICogdXNlIHNob3J0IG5hbWVzIHdoZW4gZ2Vu
ZXJhdGluZyBhIGxvY2FsZSBuYW1lLAogICAgICAqIGUuZy4gIlUuUy4iIGZvciBVUy4KLSAgICAg
KiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKKyAgICAgKi8KKyAgICBVRElT
UENUWF9MRU5HVEhfU0hPUlQgPSAoVURJU1BDVFhfVFlQRV9ESVNQTEFZX0xFTkdUSDw8OCkgKyAx
LAorICAgIC8qKgorICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAg
ICogU1VCU1RJVFVURV9IQU5ETElORyBjYW4gYmUgc2V0IHRvIG9uZSBvZiBVRElTUENUWF9TVUJT
VElUVVRFIG9yCisgICAgICogVURJU1BDVFhfTk9fU1VCU1RJVFVURS4gVXNlIFVEaXNwbGF5Q29u
dGV4dFR5cGUgVURJU1BDVFhfVFlQRV9TVUJTVElUVVRFX0hBTkRMSU5HCisgICAgICogdG8gZ2V0
IHRoZSB2YWx1ZS4KICAgICAgKi8KLSAgICBVRElTUENUWF9MRU5HVEhfU0hPUlQgPSAoVURJU1BD
VFhfVFlQRV9ESVNQTEFZX0xFTkdUSDw8OCkgKyAxCi0jZW5kaWYgIC8qIFVfSElERV9EUkFGVF9B
UEkgKi8KKyAgICAvKioKKyAgICAgKiBBIHBvc3NpYmxlIHNldHRpbmcgZm9yIFNVQlNUSVRVVEVf
SEFORExJTkc6CisgICAgICogUmV0dXJucyBhIGZhbGxiYWNrIHZhbHVlIChlLmcuLCB0aGUgaW5w
dXQgY29kZSkgd2hlbiBubyBkYXRhIGlzIGF2YWlsYWJsZS4KKyAgICAgKiBUaGlzIGlzIHRoZSBk
ZWZhdWx0IHZhbHVlLgorICAgICAqIEBzdGFibGUgSUNVIDU4CisgICAgICovCisgICAgVURJU1BD
VFhfU1VCU1RJVFVURSA9IChVRElTUENUWF9UWVBFX1NVQlNUSVRVVEVfSEFORExJTkc8PDgpICsg
MCwKKyAgICAvKioKKyAgICAgKiBBIHBvc3NpYmxlIHNldHRpbmcgZm9yIFNVQlNUSVRVVEVfSEFO
RExJTkc6CisgICAgICogUmV0dXJucyBhIG51bGwgdmFsdWUgd2hlbiBubyBkYXRhIGlzIGF2YWls
YWJsZS4KKyAgICAgKiBAc3RhYmxlIElDVSA1OAorICAgICAqLworICAgIFVESVNQQ1RYX05PX1NV
QlNUSVRVVEUgPSAoVURJU1BDVFhfVFlQRV9TVUJTVElUVVRFX0hBTkRMSU5HPDw4KSArIDEKKwog
fTsKIC8qKgogKiAgQHN0YWJsZSBJQ1UgNTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdWVudW0uaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWVudW0uaAppbmRleCA1NDA4
ZWM1YTY2MDViNzU0MDg1OGI0ZWY2N2U5OTlmZTIyYzUxMmFhLi5mYzZlZmEyNDUwZGIxN2Q3ZTY5
Y2FhNjQ1MmM5NTYyNTdhOTcwYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3VlbnVtLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91ZW51bS5oCkBAIC0xLDMgKzEs
NSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8v
IExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0
Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC02LDcgKzgsNyBAQAogKgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIHVlbnVtLmgKLSogICBlbmNv
ZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAg
OCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246MgogKgpAQCAtMjEsNyArMjMsOSBAQAogI2lu
Y2x1ZGUgInVuaWNvZGUvbG9jYWxwb2ludGVyLmgiCiAKICNpZiBVX1NIT1dfQ1BMVVNQTFVTX0FQ
SQotI2luY2x1ZGUgInVuaWNvZGUvc3RyZW51bS5oIgorVV9OQU1FU1BBQ0VfQkVHSU4KK2NsYXNz
IFN0cmluZ0VudW1lcmF0aW9uOworVV9OQU1FU1BBQ0VfRU5ECiAjZW5kaWYKIAogLyoqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VmaWVsZHBvc2l0ZXIuaCBiL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdWZpZWxkcG9zaXRlci5oCmluZGV4IDZjYzlmZmFkYTQ5NmMzMDE4Y2Vk
NzdlOWYwMWIzNmI2MjExYWM2MDcuLjNhZTczYjZkODQzOTc0OTk5YTRiMzkxY2RlODQ0NDdkOTcw
ZDFhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWZpZWxkcG9zaXRlci5o
CisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWZpZWxkcG9zaXRlci5oCkBAIC0xLDYgKzEs
OCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8v
IExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0
Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBDb3B5cmlnaHQg
KEMpIDIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogQ29ycG9yYXRp
b24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCiAqLwpAQCAtMTEsNyArMTMsNiBAQAogI2luY2x1ZGUgInVuaWNvZGUvdXR5
cGVzLmgiCiAKICNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HCi0jaWZuZGVmIFVfSElERV9EUkFG
VF9BUEkKIAogI2luY2x1ZGUgInVuaWNvZGUvbG9jYWxwb2ludGVyLmgiCiAKQEAgLTM3LDEwICsz
OCwxMCBAQAogCiAvKioKICAqIE9wYXF1ZSBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yIG9iamVjdCBm
b3IgdXNlIGluIEMuCi0gKiBAZHJhZnQgSUNVIDU1CisgKiBAc3RhYmxlIElDVSA1NQogICovCiBz
dHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRvcjsKLXR5cGVkZWYgc3RydWN0IFVGaWVsZFBvc2l0
aW9uSXRlcmF0b3IgVUZpZWxkUG9zaXRpb25JdGVyYXRvcjsgIC8qKjwgQyB0eXBlZGVmIGZvciBz
dHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRvci4gQGRyYWZ0IElDVSA1NSAqLwordHlwZWRlZiBz
dHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRvciBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yOyAgLyoq
PCBDIHR5cGVkZWYgZm9yIHN0cnVjdCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLiBAc3RhYmxlIElD
VSA1NSAqLwogCiAvKioKICAqIE9wZW4gYSBuZXcsIHVuc2V0IFVGaWVsZFBvc2l0aW9uSXRlcmF0
b3Igb2JqZWN0LgpAQCAtNDksMTggKzUwLDE4IEBAIHR5cGVkZWYgc3RydWN0IFVGaWVsZFBvc2l0
aW9uSXRlcmF0b3IgVUZpZWxkUG9zaXRpb25JdGVyYXRvcjsgIC8qKjwgQyB0eXBlZGVmIGZvCiAg
KiBAcmV0dXJuCiAgKiAgICAgICAgICBBIHBvaW50ZXIgdG8gYW4gZW1wdHkgKHVuc2V0KSBVRmll
bGRQb3NpdGlvbkl0ZXJhdG9yIG9iamVjdCwKICAqICAgICAgICAgIG9yIE5VTEwgaWYgYW4gZXJy
b3Igb2NjdXJyZWQuCi0gKiBAZHJhZnQgSUNVIDU1CisgKiBAc3RhYmxlIElDVSA1NQogICovCi1V
X0RSQUZUIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIFVfRVhQT1JUMgorVV9TVEFCTEUgVUZpZWxk
UG9zaXRpb25JdGVyYXRvciogVV9FWFBPUlQyCiB1ZmllbGRwb3NpdGVyX29wZW4oVUVycm9yQ29k
ZSogc3RhdHVzKTsKIAogLyoqCiAgKiBDbG9zZSBhIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3Igb2Jq
ZWN0LiBPbmNlIGNsb3NlZCBpdCBtYXkgbm8gbG9uZ2VyIGJlIHVzZWQuCiAgKiBAcGFyYW0gZnBv
c2l0ZXIKICAqICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgVUZpZWxkUG9zaXRpb25JdGVyYXRv
ciBvYmplY3QgdG8gY2xvc2UuCi0gKiBAZHJhZnQgSUNVIDU1CisgKiBAc3RhYmxlIElDVSA1NQog
ICovCi1VX0RSQUZUIHZvaWQgVV9FWFBPUlQyCitVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgogdWZp
ZWxkcG9zaXRlcl9jbG9zZShVRmllbGRQb3NpdGlvbkl0ZXJhdG9yICpmcG9zaXRlcik7CiAKIApA
QCAtNzUsNyArNzYsNyBAQCBVX05BTUVTUEFDRV9CRUdJTgogICoKICAqIEBzZWUgTG9jYWxQb2lu
dGVyQmFzZQogICogQHNlZSBMb2NhbFBvaW50ZXIKLSAqIEBkcmFmdCBJQ1UgNTUKKyAqIEBzdGFi
bGUgSUNVIDU1CiAgKi8KIFVfREVGSU5FX0xPQ0FMX09QRU5fUE9JTlRFUihMb2NhbFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3JQb2ludGVyLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCB1ZmllbGRwb3Np
dGVyX2Nsb3NlKTsKIApAQCAtODUsOCArODYsOCBAQCBVX05BTUVTUEFDRV9FTkQKIAogLyoqCiAg
KiBHZXQgaW5mb3JtYXRpb24gZm9yIHRoZSBuZXh0IGZpZWxkIGluIHRoZSBmb3JtYXR0ZWQgc3Ry
aW5nIHRvIHdoaWNoIHRoaXMKLSAqIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IgY3VycmVudGx5IGFw
cGxpZXMsIG9yIHJldHVybiBGQUxTRSBpZiB0aGVyZSBhcmUKLSAqIG5vIG1vcmUgZmllbGRzLgor
ICogVUZpZWxkUG9zaXRpb25JdGVyYXRvciBjdXJyZW50bHkgYXBwbGllcywgb3IgcmV0dXJuIGEg
bmVnYXRpdmUgdmFsdWUgaWYgdGhlcmUKKyAqIGFyZSBubyBtb3JlIGZpZWxkcy4KICAqIEBwYXJh
bSBmcG9zaXRlcgogICogICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBVRmllbGRQb3NpdGlvbkl0
ZXJhdG9yIG9iamVjdCBjb250YWluaW5nIGl0ZXJhdGlvbgogICogICAgICAgICAgc3RhdGUgZm9y
IHRoZSBmb3JtYXQgZmllbGRzLgpAQCAtMTA5LDEzICsxMTAsMTIgQEAgVV9OQU1FU1BBQ0VfRU5E
CiAgKiAgICAgICAgICBkZXNjcmlwdGlvbnMgb2YgZm9ybWF0IGZ1bmN0aW9ucyB0aGF0IHRha2Ug
YSBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKgogICogICAgICAgICAgcGFyYW1ldGVyLCBzdWNoIGFz
IHtAbGluayAjdWRhdF9mb3JtYXRGb3JGaWVsZHN9LgogICoKLSAqIEBkcmFmdCBJQ1UgNTUKKyAq
IEBzdGFibGUgSUNVIDU1CiAgKi8KLVVfRFJBRlQgaW50MzJfdCBVX0VYUE9SVDIKK1VfU1RBQkxF
IGludDMyX3QgVV9FWFBPUlQyCiB1ZmllbGRwb3NpdGVyX25leHQoVUZpZWxkUG9zaXRpb25JdGVy
YXRvciAqZnBvc2l0ZXIsCiAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAqYmVnaW5JbmRleCwg
aW50MzJfdCAqZW5kSW5kZXgpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogI2Vu
ZGlmIC8qICNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HICovCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Zm9ybWF0dGFibGUuaCBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdWZvcm1hdHRhYmxlLmgKaW5kZXggYTY0YWUxNDY1M2ExOWQ1NmE4NmU2YTFhNDk2
N2QzNTE4YjIxM2E5OS4uOWJhMmEzNjkwMWFhODM1NmM1ZDRkNzQ0ZWMwMzhlMmJmMTBjYmE4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Zm9ybWF0dGFibGUuaAorKysgYi9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3Vmb3JtYXR0YWJsZS5oCkBAIC0xLDMgKzEsNSBAQAorLy8g
wqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2Ug
JiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8q
CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCwgSW50
ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgpAQCAt
NDksNyArNTEsMTMgQEAgdHlwZWRlZiBlbnVtIFVGb3JtYXR0YWJsZVR5cGUgewogICBVRk1UX0FS
UkFZLCAgICAvKio8IHVmbXRfY291bnRBcnJheSgpIGFuZCB1Zm10X2dldEFycmF5KCkgd2lsbCBy
ZXR1cm4gdGhlIHZhbHVlLiAgQHNlZSB1Zm10X2dldEFycmF5SXRlbUJ5SW5kZXggKi8KICAgVUZN
VF9JTlQ2NCwgICAgLyoqPCB1Zm10X2dldEludDY0KCkgd2lsbCByZXR1cm4gd2l0aG91dCBjb252
ZXJzaW9uLiBAc2VlIHVmbXRfZ2V0SW50NjQgKi8KICAgVUZNVF9PQkpFQ1QsICAgLyoqPCB1Zm10
X2dldE9iamVjdCgpIHdpbGwgcmV0dXJuIHdpdGhvdXQgY29udmVyc2lvbi4gIEBzZWUgdWZtdF9n
ZXRPYmplY3QqLwotICBVRk1UX0NPVU5UICAgICAvKio8IENvdW50IG9mIGRlZmluZWQgVUZvcm1h
dHRhYmxlVHlwZSB2YWx1ZXMgKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAg
LyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVUZvcm1hdHRhYmxl
VHlwZSB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUg
bWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KKyAg
ICBVRk1UX0NPVU5UCisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogfSBVRm9y
bWF0dGFibGVUeXBlOwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWdl
bmRlci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Z2VuZGVyLmgKaW5kZXggODZlMjI5ZGY2
MWIyOThmOTZhMGExZTJjMTI2ZmY0MzczZmYwZDk2OC4uZDAxNWEyMzAwY2Y2ZDZhZjEyOTVlOTNi
ODcyMGNmODYyMDg5ODc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Z2Vu
ZGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Z2VuZGVyLmgKQEAgLTEsMyArMSw1
IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8g
TGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQu
aHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VpZG5hLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3VpZG5hLmgKaW5kZXggZGVjZWNlMWZiMGUzMGY5MzNhMTVjYjJkYzQzZjc1MWJhMWIwOTM3Yi4u
MGRhZmI3NjIwMTc0NDEyZWJmNzc4MzkzZDNmMDc5NzE4N2Y1Nzc0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9pY3UvdW5pY29kZS91aWRuYS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dWlkbmEuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJ
bmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVu
aWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAq
CkBAIC02LDcgKzgsNyBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgIGZpbGUg
bmFtZTogIHVpZG5hLmgKLSAqICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyAqICAgZW5jb2Rpbmc6
ICAgVVRGLTgKICAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAgKiAgIGluZGVudGF0aW9u
OjQKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VpdGVyLmggYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3VpdGVyLmgKaW5kZXggMGNkYjhmZmJlNWM4MTU0YWM5ZDkwOGY2
MDViMGViMTZlYTViYjE5OS4uMTFhZDc1YWNkNTE1YzZlMTA2YjM0ZDdjODAwM2ZlNzQ3Y2ZjMmIw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91aXRlci5oCisrKyBiL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdWl0ZXIuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5k
IGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2Yg
dXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgogKgpAQCAtNiw3ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKICogICBmaWxlIG5hbWU6ICB1aXRlci5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyog
ICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGlu
ZGVudGF0aW9uOjQKICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxkbmFt
ZXMuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxkbmFtZXMuaAppbmRleCBiMGEyYmIwZmM4
OWZmYjZjOWU1NGMzMzNjZWMyYTJjMjlmNWU4ODJjLi4zZWJmZmEyM2RiNWYxMjFlOWJkN2IxODM2
MjViMTQyYjBlMjg3ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VsZG5h
bWVzLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bGRuYW1lcy5oCkBAIC0xLDcgKzEs
OSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8v
IExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0
Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAyMDEw
LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAg
ICAgICogCi0qICAgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqICAgQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisqICAg
b3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICov
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxpc3Rmb3JtYXR0ZXIuaCBi
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxpc3Rmb3JtYXR0ZXIuaAppbmRleCAxYzZjYjJkN2Ix
MjM5NTQwMmNiMjFkNjI2OWJmNDQ0NDlmNWJkZWI5Li45ZmUyNGY3YzdiNWVmY2JkYTgxMmQ2Mjk1
MzJjODZlZGRhYjUzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VsaXN0
Zm9ybWF0dGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bGlzdGZvcm1hdHRlci5o
CkBAIC0xLDYgKzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5k
IG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot
KiBDb3B5cmlnaHQgKEMpIDIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMK
ICogQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAqLwpAQCAtMTEsNyArMTMsNiBAQAogI2luY2x1ZGUg
InVuaWNvZGUvdXR5cGVzLmgiCiAKICNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HCi0jaWZuZGVm
IFVfSElERV9EUkFGVF9BUEkKIAogI2luY2x1ZGUgInVuaWNvZGUvbG9jYWxwb2ludGVyLmgiCiAK
QEAgLTI3LDEwICsyOCwxMCBAQAogCiAvKioKICAqIE9wYXF1ZSBVTGlzdEZvcm1hdHRlciBvYmpl
Y3QgZm9yIHVzZSBpbiBDCi0gKiBAZHJhZnQgSUNVIDU1CisgKiBAc3RhYmxlIElDVSA1NQogICov
CiBzdHJ1Y3QgVUxpc3RGb3JtYXR0ZXI7Ci10eXBlZGVmIHN0cnVjdCBVTGlzdEZvcm1hdHRlciBV
TGlzdEZvcm1hdHRlcjsgIC8qKjwgQyB0eXBlZGVmIGZvciBzdHJ1Y3QgVUxpc3RGb3JtYXR0ZXIu
IEBkcmFmdCBJQ1UgNTUgKi8KK3R5cGVkZWYgc3RydWN0IFVMaXN0Rm9ybWF0dGVyIFVMaXN0Rm9y
bWF0dGVyOyAgLyoqPCBDIHR5cGVkZWYgZm9yIHN0cnVjdCBVTGlzdEZvcm1hdHRlci4gQHN0YWJs
ZSBJQ1UgNTUgKi8KIAogLyoqCiAgKiBPcGVuIGEgbmV3IFVMaXN0Rm9ybWF0dGVyIG9iamVjdCB1
c2luZyB0aGUgcnVsZXMgZm9yIGEgZ2l2ZW4gbG9jYWxlLgpAQCAtNDYsOSArNDcsOSBAQCB0eXBl
ZGVmIHN0cnVjdCBVTGlzdEZvcm1hdHRlciBVTGlzdEZvcm1hdHRlcjsgIC8qKjwgQyB0eXBlZGVm
IGZvciBzdHJ1Y3QgVUxpc3RGbwogICogQHJldHVybgogICogICAgICAgICAgICBBIHBvaW50ZXIg
dG8gYSBVTGlzdEZvcm1hdHRlciBvYmplY3QgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlLAogICog
ICAgICAgICAgICBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkLgotICogQGRyYWZ0IElDVSA1
NQorICogQHN0YWJsZSBJQ1UgNTUKICAqLwotVV9EUkFGVCBVTGlzdEZvcm1hdHRlciogVV9FWFBP
UlQyCitVX0NBUEkgVUxpc3RGb3JtYXR0ZXIqIFVfRVhQT1JUMgogdWxpc3RmbXRfb3Blbihjb25z
dCBjaGFyKiAgbG9jYWxlLAogICAgICAgICAgICAgICBVRXJyb3JDb2RlKiAgc3RhdHVzKTsKIApA
QCAtNTYsOSArNTcsOSBAQCB1bGlzdGZtdF9vcGVuKGNvbnN0IGNoYXIqICBsb2NhbGUsCiAgKiBD
bG9zZSBhIFVMaXN0Rm9ybWF0dGVyIG9iamVjdC4gT25jZSBjbG9zZWQgaXQgbWF5IG5vIGxvbmdl
ciBiZSB1c2VkLgogICogQHBhcmFtIGxpc3RmbXQKICAqICAgICAgICAgICAgVGhlIFVMaXN0Rm9y
bWF0dGVyIG9iamVjdCB0byBjbG9zZS4KLSAqIEBkcmFmdCBJQ1UgNTUKKyAqIEBzdGFibGUgSUNV
IDU1CiAgKi8KLVVfRFJBRlQgdm9pZCBVX0VYUE9SVDIKK1VfQ0FQSSB2b2lkIFVfRVhQT1JUMgog
dWxpc3RmbXRfY2xvc2UoVUxpc3RGb3JtYXR0ZXIgKmxpc3RmbXQpOwogCiAKQEAgLTczLDcgKzc0
LDcgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAqCiAgKiBAc2VlIExvY2FsUG9pbnRlckJhc2UKICAq
IEBzZWUgTG9jYWxQb2ludGVyCi0gKiBAZHJhZnQgSUNVIDU1CisgKiBAc3RhYmxlIElDVSA1NQog
ICovCiBVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVTGlzdEZvcm1hdHRlclBvaW50
ZXIsIFVMaXN0Rm9ybWF0dGVyLCB1bGlzdGZtdF9jbG9zZSk7CiAKQEAgLTExMyw5ICsxMTQsOSBA
QCBVX05BTUVTUEFDRV9FTkQKICAqICAgICAgICAgICAgVGhlIHRvdGFsIGJ1ZmZlciBzaXplIG5l
ZWRlZDsgaWYgZ3JlYXRlciB0aGFuIHJlc3VsdExlbmd0aCwgdGhlCiAgKiAgICAgICAgICAgIG91
dHB1dCB3YXMgdHJ1bmNhdGVkLiBNYXkgYmUgPD0wIGlmIHVuYWJsZSB0byBkZXRlcm1pbmUgdGhl
CiAgKiAgICAgICAgICAgIHRvdGFsIGJ1ZmZlciBzaXplIG5lZWRlZCAoZS5nLiBmb3IgaWxsZWdh
bCBhcmd1bWVudHMpLgotICogQGRyYWZ0IElDVSA1NQorICogQHN0YWJsZSBJQ1UgNTUKICAqLwot
VV9EUkFGVCBpbnQzMl90IFVfRVhQT1JUMgorVV9DQVBJIGludDMyX3QgVV9FWFBPUlQyCiB1bGlz
dGZtdF9mb3JtYXQoY29uc3QgVUxpc3RGb3JtYXR0ZXIqIGxpc3RmbXQsCiAgICAgICAgICAgICAg
ICAgY29uc3QgVUNoYXIqIGNvbnN0IHN0cmluZ3NbXSwKICAgICAgICAgICAgICAgICBjb25zdCBp
bnQzMl90ICogICAgc3RyaW5nTGVuZ3RocywKQEAgLTEyNCw3ICsxMjUsNiBAQCB1bGlzdGZtdF9m
b3JtYXQoY29uc3QgVUxpc3RGb3JtYXR0ZXIqIGxpc3RmbXQsCiAgICAgICAgICAgICAgICAgaW50
MzJfdCAgICAgICAgICAgIHJlc3VsdENhcGFjaXR5LAogICAgICAgICAgICAgICAgIFVFcnJvckNv
ZGUqICAgICAgICBzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogI2Vu
ZGlmIC8qICNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HICovCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bG9jLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3Vsb2MuaAppbmRleCBjMzA1YzhiNzhjOGE4NTNiOTM4ZDY1ZDE2YTFlMTI5NmRiNzczN2JiLi4y
M2E1NGE5OTgxY2E5NjE5ZmEwNTYwMjQ1MDA4YWIwYWExNTcyMmRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3Vsb2MuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vs
b2MuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMu
IGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIENvcHlyaWdodCAo
QykgMTk5Ny0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJp
Z2h0IChDKSAxOTk3LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBD
b3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKICoKQEAgLTU5LDcgKzYxLDcgQEAKICAqIGh0dHA6Ly93d3cuaWNzLnVjaS5lZHUvcHViL2ll
dGYvaHR0cC9yZWxhdGVkL2lzbzYzOS50eHQ8L2E+CiAgKgogICogPFA+Ci0gKiBUaGUgc2Vjb25k
IG9wdGlvbiBpbmNsdWRlcyBhbiBhZGRpdG9uYWwgPFNUUk9ORz5JU08gQ291bnRyeQorICogVGhl
IHNlY29uZCBvcHRpb24gaW5jbHVkZXMgYW4gYWRkaXRpb25hbCA8U1RST05HPklTTyBDb3VudHJ5
CiAgKiBDb2RlLjwvU1RST05HPiBUaGVzZSBjb2RlcyBhcmUgdGhlIHVwcGVyLWNhc2UgdHdvLWxl
dHRlciBjb2RlcwogICogYXMgZGVmaW5lZCBieSBJU08tMzE2Ni4KICAqIFlvdSBjYW4gZmluZCBh
IGZ1bGwgbGlzdCBvZiB0aGVzZSBjb2RlcyBhdCBhIG51bWJlciBvZiBzaXRlcywgc3VjaCBhczoK
QEAgLTY3LDcgKzY5LDcgQEAKICAqIGh0dHA6Ly93d3cuY2hlbWllLmZ1LWJlcmxpbi5kZS9kaXZl
cnNlL2RvYy9JU09fMzE2Ni5odG1sPC9hPgogICoKICAqIDxQPgotICogVGhlIHRoaXJkIG9wdGlv
biByZXF1aXJlcyBhbm90aGVyIGFkZGl0b25hbCBpbmZvcm1hdGlvbi0tdGhlIAorICogVGhlIHRo
aXJkIG9wdGlvbiByZXF1aXJlcyBhbm90aGVyIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24tLXRoZSAK
ICAqIDxTVFJPTkc+VmFyaWFudC48L1NUUk9ORz4KICAqIFRoZSBWYXJpYW50IGNvZGVzIGFyZSB2
ZW5kb3IgYW5kIGJyb3dzZXItc3BlY2lmaWMuCiAgKiBGb3IgZXhhbXBsZSwgdXNlIFdJTiBmb3Ig
V2luZG93cywgTUFDIGZvciBNYWNpbnRvc2gsIGFuZCBQT1NJWCBmb3IgUE9TSVguCkBAIC0xNTUs
NyArMTU3LDcgQEAKICAqIDxTVFJPTkc+anVzdDwvU1RST05HPiBhIG1lY2hhbmlzbSBmb3IgaWRl
bnRpZnlpbmcgdGhlc2Ugc2VydmljZXMuCiAgKgogICogPFA+Ci0gKiBFYWNoIGludGVybmF0aW9u
YWwgc2VyaXZjZSB0aGF0IHBlcmZvcm1zIGxvY2FsZS1zZW5zaXRpdmUgb3BlcmF0aW9ucyAKKyAq
IEVhY2ggaW50ZXJuYXRpb25hbCBzZXJ2aWNlIHRoYXQgcGVyZm9ybXMgbG9jYWxlLXNlbnNpdGl2
ZSBvcGVyYXRpb25zIAogICogYWxsb3dzIHlvdQogICogdG8gZ2V0IGFsbCB0aGUgYXZhaWxhYmxl
IG9iamVjdHMgb2YgdGhhdCB0eXBlLiBZb3UgY2FuIHNpZnQKICAqIHRocm91Z2ggdGhlc2Ugb2Jq
ZWN0cyBieSBsYW5ndWFnZSwgY291bnRyeSwgb3IgdmFyaWFudCwKQEAgLTM0OCwxMCArMzUwLDE0
IEBAIHR5cGVkZWYgZW51bSB7CiAgICAqICBAZGVwcmVjYXRlZCBJQ1UgMi44IAogICAgKi8KICAg
VUxPQ19SRVFVRVNURURfTE9DQUxFID0gMiwKLSNlbmRpZiAvKiBVX0hJREVfREVQUkVDQVRFRF9B
UEkgKi8KIAotICBVTE9DX0RBVEFfTE9DQUxFX1RZUEVfTElNSVQgPSAzCi19IFVMb2NEYXRhTG9j
YWxlVHlwZSA7CisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3Jt
YWwgVUxvY0RhdGFMb2NhbGVUeXBlIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBU
aGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEy
NDIwLgorICAgICAqLworICAgIFVMT0NfREFUQV9MT0NBTEVfVFlQRV9MSU1JVCA9IDMKKyNlbmRp
ZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCit9IFVMb2NEYXRhTG9jYWxlVHlwZTsKIAogI2lm
bmRlZiBVX0hJREVfU1lTVEVNX0FQSQogLyoqCkBAIC01MzMsNiArNTM5LDkgQEAgdWxvY19nZXRJ
U08zQ291bnRyeShjb25zdCBjaGFyKiBsb2NhbGVJRCk7CiAgKiBHZXRzIHRoZSBXaW4zMiBMQ0lE
IHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KICAqIElmIHRoZSBJQ1UgbG9jYWxlIGlz
IG5vdCByZWNvZ25pemVkIGJ5IFdpbmRvd3MsIDAgd2lsbCBiZSByZXR1cm5lZC4KICAqCisgKiBM
Q0lEcyB3ZXJlIGRlcHJlY2F0ZWQgd2l0aCBXaW5kb3dzIFZpc3RhIGFuZCBNaWNyb3NvZnQgcmVj
b21tZW5kcworICogdGhhdCBkZXZlbG9wZXJzIHVzZSBCQ1A0NyBzdHlsZSB0YWdzIGluc3RlYWQg
KHVsb2NfdG9MYW5ndWFnZVRhZykuCisgKgogICogQHBhcmFtIGxvY2FsZUlEIHRoZSBsb2NhbGUg
dG8gZ2V0IHRoZSBXaW4zMiBMQ0lEIHZhbHVlIHdpdGgKICAqIEByZXR1cm4gY291bnRyeSB0aGUg
V2luMzIgTENJRCBmb3IgbG9jYWxlSUQKICAqIEBzdGFibGUgSUNVIDIuMApAQCAtNTcxLDcgKzU4
MCw3IEBAIHVsb2NfZ2V0RGlzcGxheUxhbmd1YWdlKGNvbnN0IGNoYXIqIGxvY2FsZSwKICAqICAg
ICAgICAgICAgICAgICBpZiB0aGUgbG9jYWxlJ3MgbGFuZ3VhZ2UgY29kZSBpcyAiZW4iLCBwYXNz
aW5nIExvY2FsZTo6Z2V0RnJlbmNoKCkgZm9yCiAgKiAgICAgICAgICAgICAgICAgaW5Mb2NhbGUg
d291bGQgcmVzdWx0IGluICIiLCB3aGlsZSBwYXNzaW5nIExvY2FsZTo6Z2V0R2VybWFuKCkKICAq
ICAgICAgICAgICAgICAgICBmb3IgaW5Mb2NhbGUgd291bGQgcmVzdWx0IGluICIiLiBOVUxMIG1h
eSBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGRlZmF1bHQuCi0gKiBAcGFyYW0gc2NyaXB0IHRoZSBk
aXNwbGF5YWJsZSBjb3VudHJ5IGNvZGUgZm9yIGxvY2FsZUlECisgKiBAcGFyYW0gc2NyaXB0IHRo
ZSBkaXNwbGF5YWJsZSBzY3JpcHQgZm9yIHRoZSBsb2NhbGVJRAogICogQHBhcmFtIHNjcmlwdENh
cGFjaXR5IHRoZSBzaXplIG9mIHRoZSBzY3JpcHQgYnVmZmVyIHRvIHN0b3JlIHRoZSAgCiAgKiBk
aXNwbGF5YWJsZSBzY3JpcHQgY29kZSB3aXRoCiAgKiBAcGFyYW0gc3RhdHVzIGVycm9yIGluZm9y
bWF0aW9uIGlmIHJldHJpZXZpbmcgdGhlIGRpc3BsYXlhYmxlIHNjcmlwdCBjb2RlIGZhaWxlZApA
QCAtNTg4LDYgKzU5Nyw4IEBAIHVsb2NfZ2V0RGlzcGxheVNjcmlwdChjb25zdCBjaGFyKiBsb2Nh
bGUsCiAKIC8qKgogICogR2V0cyB0aGUgY291bnRyeSBuYW1lIHN1aXRhYmxlIGZvciBkaXNwbGF5
IGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KKyAqIFdhcm5pbmc6IHRoaXMgaXMgZm9yIHRoZSBy
ZWdpb24gcGFydCBvZiBhIHZhbGlkIGxvY2FsZSBJRDsgaXQgY2Fubm90IGp1c3QgYmUgdGhlIHJl
Z2lvbiBjb2RlIChsaWtlICJGUiIpLgorICogVG8gZ2V0IHRoZSBkaXNwbGF5IG5hbWUgZm9yIGEg
cmVnaW9uIGFsb25lLCBvciBmb3Igb3RoZXIgb3B0aW9ucywgdXNlIFVMb2NhbGVEaXNwbGF5TmFt
ZXMgaW5zdGVhZC4KICAqCiAgKiBAcGFyYW0gbG9jYWxlIHRoZSBsb2NhbGUgdG8gZ2V0IHRoZSBk
aXNwbGF5YWJsZSBjb3VudHJ5IGNvZGUgd2l0aC4gTlVMTCBtYXkgYmUgdXNlZCB0byBzcGVjaWZ5
IHRoZSBkZWZhdWx0LgogICogQHBhcmFtIGRpc3BsYXlMb2NhbGUgU3BlY2lmaWVzIHRoZSBsb2Nh
bGUgdG8gYmUgdXNlZCB0byBkaXNwbGF5IHRoZSBuYW1lLiAgSW4gb3RoZXIgd29yZHMsCkBAIC04
NDQsMTAgKzg1NSwxMiBAQCB1bG9jX29wZW5LZXl3b3Jkcyhjb25zdCBjaGFyKiBsb2NhbGVJRCwK
ICAqIEdldCB0aGUgdmFsdWUgZm9yIGEga2V5d29yZC4gTG9jYWxlIG5hbWUgZG9lcyBub3QgbmVl
ZCB0byBiZSBub3JtYWxpemVkLgogICogCiAgKiBAcGFyYW0gbG9jYWxlSUQgbG9jYWxlIG5hbWUg
Y29udGFpbmluZyB0aGUga2V5d29yZCAoImRlX0RFQGN1cnJlbmN5PUVVUk87Y29sbGF0aW9uPVBI
T05FQk9PSyIpCi0gKiBAcGFyYW0ga2V5d29yZE5hbWUgbmFtZSBvZiB0aGUga2V5d29yZCBmb3Ig
d2hpY2ggd2Ugd2FudCB0aGUgdmFsdWUuIENhc2UgaW5zZW5zaXRpdmUuCisgKiBAcGFyYW0ga2V5
d29yZE5hbWUgbmFtZSBvZiB0aGUga2V5d29yZCBmb3Igd2hpY2ggd2Ugd2FudCB0aGUgdmFsdWU7
IG11c3Qgbm90IGJlCisgKiAgTlVMTCBvciBlbXB0eSwgYW5kIG11c3QgY29uc2lzdCBvbmx5IG9m
IFtBLVphLXowLTldLiBDYXNlIGluc2Vuc2l0aXZlLgogICogQHBhcmFtIGJ1ZmZlciByZWNlaXZp
bmcgYnVmZmVyCiAgKiBAcGFyYW0gYnVmZmVyQ2FwYWNpdHkgY2FwYWNpdHkgb2YgcmVjZWl2aW5n
IGJ1ZmZlcgotICogQHBhcmFtIHN0YXR1cyBjb250YWluaW5nIGVycm9yIGNvZGUgLSBidWZmZXIg
bm90IGJpZyBlbm91Z2guCisgKiBAcGFyYW0gc3RhdHVzIGNvbnRhaW5pbmcgZXJyb3IgY29kZTog
ZS5nLiBidWZmZXIgbm90IGJpZyBlbm91Z2ggb3IgaWxsLWZvcm1lZCBsb2NhbGVJRAorICogIG9y
IGtleXdvcmROYW1lIHBhcmFtZXRlcnMuCiAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2Yga2V5d29y
ZCB2YWx1ZQogICogQHN0YWJsZSBJQ1UgMi44CiAgKi8KQEAgLTg2NCwxOCArODc3LDI2IEBAIHVs
b2NfZ2V0S2V5d29yZFZhbHVlKGNvbnN0IGNoYXIqIGxvY2FsZUlELAogICogRm9yIHJlbW92aW5n
IGFsbCBrZXl3b3JkcywgdXNlIHVsb2NfZ2V0QmFzZU5hbWUoKS4KICAqCiAgKiBOT1RFOiBVbmxp
a2UgYWxtb3N0IGV2ZXJ5IG90aGVyIElDVSBmdW5jdGlvbiB3aGljaCB0YWtlcyBhCi0gKiBidWZm
ZXIsIHRoaXMgZnVuY3Rpb24gd2lsbCBOT1QgdHJ1bmNhdGUgdGhlIG91dHB1dCB0ZXh0LiBJZiBh
Ci0gKiBCVUZGRVJfT1ZFUkZMT1dfRVJST1IgaXMgcmVjZWl2ZWQsIGl0IG1lYW5zIHRoYXQgdGhl
IG9yaWdpbmFsCi0gKiBidWZmZXIgaXMgdW50b3VjaGVkLiBUaGlzIGlzIGRvbmUgdG8gcHJldmVu
dCBpbmNvcnJlY3Qgb3IgcG9zc2libHkKLSAqIGV2ZW4gbWFsZm9ybWVkIGxvY2FsZXMgZnJvbSBi
ZWluZyBnZW5lcmF0ZWQgYW5kIHVzZWQuCisgKiBidWZmZXIsIHRoaXMgZnVuY3Rpb24gd2lsbCBO
T1QgdHJ1bmNhdGUgdGhlIG91dHB1dCB0ZXh0LCBhbmQgd2lsbAorICogbm90IHVwZGF0ZSB0aGUg
YnVmZmVyIHdpdGggdW50ZXJtaW5hdGVkIHRleHQgc2V0dGluZyBhIHN0YXR1cyBvZgorICogVV9T
VFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORy4gSWYgYSBCVUZGRVJfT1ZFUkZMT1dfRVJST1Ig
aXMgcmVjZWl2ZWQsCisgKiBpdCBtZWFucyBhIHRlcm1pbmF0ZWQgdmVyc2lvbiBvZiB0aGUgdXBk
YXRlZCBsb2NhbGUgSUQgd291bGQgbm90IGZpdAorICogaW4gdGhlIGJ1ZmZlciwgYW5kIHRoZSBv
cmlnaW5hbCBidWZmZXIgaXMgdW50b3VjaGVkLiBUaGlzIGlzIGRvbmUgdG8KKyAqIHByZXZlbnQg
aW5jb3JyZWN0IG9yIHBvc3NpYmx5IGV2ZW4gbWFsZm9ybWVkIGxvY2FsZXMgZnJvbSBiZWluZyBn
ZW5lcmF0ZWQKKyAqIGFuZCB1c2VkLgogICoKLSAqIEBwYXJhbSBrZXl3b3JkTmFtZSBuYW1lIG9m
IHRoZSBrZXl3b3JkIHRvIGJlIHNldC4gQ2FzZSBpbnNlbnNpdGl2ZS4KKyAqIEBwYXJhbSBrZXl3
b3JkTmFtZSBuYW1lIG9mIHRoZSBrZXl3b3JkIHRvIGJlIHNldDsgbXVzdCBub3QgYmUKKyAqICBO
VUxMIG9yIGVtcHR5LCBhbmQgbXVzdCBjb25zaXN0IG9ubHkgb2YgW0EtWmEtejAtOV0uIENhc2Ug
aW5zZW5zaXRpdmUuCiAgKiBAcGFyYW0ga2V5d29yZFZhbHVlIHZhbHVlIG9mIHRoZSBrZXl3b3Jk
IHRvIGJlIHNldC4gSWYgMC1sZW5ndGggb3IKLSAqICBOVUxMLCB3aWxsIHJlc3VsdCBpbiB0aGUg
a2V5d29yZCBiZWluZyByZW1vdmVkLiBObyBlcnJvciBpcyBnaXZlbiBpZiAKLSAqICB0aGF0IGtl
eXdvcmQgZG9lcyBub3QgZXhpc3QuCi0gKiBAcGFyYW0gYnVmZmVyIGlucHV0IGJ1ZmZlciBjb250
YWluaW5nIGxvY2FsZSB0byBiZSBtb2RpZmllZC4KKyAqICBOVUxMLCB3aWxsIHJlc3VsdCBpbiB0
aGUga2V5d29yZCBiZWluZyByZW1vdmVkOyBubyBlcnJvciBpcyBnaXZlbiBpZiAKKyAqICB0aGF0
IGtleXdvcmQgZG9lcyBub3QgZXhpc3QuIE90aGVyd2lzZSwgbXVzdCBjb25zaXN0IG9ubHkgb2YK
KyAqICBbQS1aYS16MC05XSBhbmQgWy9fKy1dLgorICogQHBhcmFtIGJ1ZmZlciBpbnB1dCBidWZm
ZXIgY29udGFpbmluZyB3ZWxsLWZvcm1lZCBsb2NhbGUgSUQgdG8gYmUKKyAqICBtb2RpZmllZC4K
ICAqIEBwYXJhbSBidWZmZXJDYXBhY2l0eSBjYXBhY2l0eSBvZiByZWNlaXZpbmcgYnVmZmVyCi0g
KiBAcGFyYW0gc3RhdHVzIGNvbnRhaW5pbmcgZXJyb3IgY29kZSAtIGJ1ZmZlciBub3QgYmlnIGVu
b3VnaC4KKyAqIEBwYXJhbSBzdGF0dXMgY29udGFpbmluZyBlcnJvciBjb2RlOiBlLmcuIGJ1ZmZl
ciBub3QgYmlnIGVub3VnaAorICogIG9yIGlsbC1mb3JtZWQga2V5d29yZE5hbWUgb3Iga2V5d29y
ZFZhbHVlIHBhcmFtZXRlcnMsIG9yIGlsbC1mb3JtZWQKKyAqICBsb2NhbGUgSUQgaW4gYnVmZmVy
IG9uIGlucHV0LgogICogQHJldHVybiB0aGUgbGVuZ3RoIG5lZWRlZCBmb3IgdGhlIGJ1ZmZlcgog
ICogQHNlZSB1bG9jX2dldEtleXdvcmRWYWx1ZQogICogQHN0YWJsZSBJQ1UgMy4yCkBAIC04ODYs
NyArOTA3LDYgQEAgdWxvY19zZXRLZXl3b3JkVmFsdWUoY29uc3QgY2hhcioga2V5d29yZE5hbWUs
CiAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBidWZmZXIsIGludDMyX3QgYnVmZmVyQ2FwYWNp
dHksCiAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOwogCi0jaWZuZGVm
IFVfSElERV9EUkFGVF9BUEkKIC8qKgogICogUmV0dXJucyB3aGV0aGVyIHRoZSBsb2NhbGUncyBz
Y3JpcHQgaXMgd3JpdHRlbiByaWdodC10by1sZWZ0LgogICogSWYgdGhlcmUgaXMgbm8gc2NyaXB0
IHN1YnRhZywgdGhlbiB0aGUgbGlrZWx5IHNjcmlwdCBpcyB1c2VkLCBzZWUgdWxvY19hZGRMaWtl
bHlTdWJ0YWdzKCkuCkBAIC04OTksMTEgKzkxOSwxMCBAQCB1bG9jX3NldEtleXdvcmRWYWx1ZShj
b25zdCBjaGFyKiBrZXl3b3JkTmFtZSwKICAqCiAgKiBAcGFyYW0gbG9jYWxlIGlucHV0IGxvY2Fs
ZSBJRAogICogQHJldHVybiBUUlVFIGlmIHRoZSBsb2NhbGUncyBzY3JpcHQgaXMgd3JpdHRlbiBy
aWdodC10by1sZWZ0Ci0gKiBAZHJhZnQgSUNVIDU0CisgKiBAc3RhYmxlIElDVSA1NAogICovCi1V
X0RSQUZUIFVCb29sIFVfRVhQT1JUMgorVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCiB1bG9jX2lz
UmlnaHRUb0xlZnQoY29uc3QgY2hhciAqbG9jYWxlKTsKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZU
X0FQSSAqLwogCiAvKioKICAqIGVudW1zIGZvciB0aGUgIHJldHVybiB2YWx1ZSBmb3IgdGhlIGNo
YXJhY3RlciBhbmQgbGluZSBvcmllbnRhdGlvbgpAQCAtMTE1MSw3ICsxMTcwLDYgQEAgdWxvY190
b0xhbmd1YWdlVGFnKGNvbnN0IGNoYXIqIGxvY2FsZUlELAogICAgICAgICAgICAgICAgICAgIFVC
b29sIHN0cmljdCwKICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlcnIpOwogCi0jaWZu
ZGVmIFVfSElERV9EUkFGVF9BUEkKIC8qKgogICogQ29udmVydHMgdGhlIHNwZWNpZmllZCBrZXl3
b3JkIChsZWdhY3kga2V5LCBvciBCQ1AgNDcgVW5pY29kZSBsb2NhbGUKICAqIGV4dGVuc2lvbiBr
ZXkpIHRvIHRoZSBlcXVpdmFsZW50IEJDUCA0NyBVbmljb2RlIGxvY2FsZSBleHRlbnNpb24ga2V5
LgpAQCAtMTE3MSw5ICsxMTg5LDkgQEAgdWxvY190b0xhbmd1YWdlVGFnKGNvbnN0IGNoYXIqIGxv
Y2FsZUlELAogICogICAgICAgICAgICAgICAgICAgICAgbWFwcGVkIHRvIGEgd2VsbC1mb3JtZWQg
QkNQIDQ3IFVuaWNvZGUgbG9jYWxlIGV4dGVuc2lvbgogICogICAgICAgICAgICAgICAgICAgICAg
a2V5LiAKICAqIEBzZWUgdWxvY190b0xlZ2FjeUtleQotICogQGRyYWZ0IElDVSA1NAorICogQHN0
YWJsZSBJQ1UgNTQKICAqLwotVV9EUkFGVCBjb25zdCBjaGFyKiBVX0VYUE9SVDIKK1VfU1RBQkxF
IGNvbnN0IGNoYXIqIFVfRVhQT1JUMgogdWxvY190b1VuaWNvZGVMb2NhbGVLZXkoY29uc3QgY2hh
cioga2V5d29yZCk7CiAKIC8qKgpAQCAtMTIwMiw5ICsxMjIwLDkgQEAgdWxvY190b1VuaWNvZGVM
b2NhbGVLZXkoY29uc3QgY2hhcioga2V5d29yZCk7CiAgKiAgICAgICAgICAgICAgICAgICAgICBv
ciBOVUxMIGlmIHRoZSBsb2NhbGUga2V5d29yZCB2YWx1ZSBjYW5ub3QgYmUgbWFwcGVkIHRvCiAg
KiAgICAgICAgICAgICAgICAgICAgICBhIHdlbGwtZm9ybWVkIEJDUCA0NyBVbmljb2RlIGxvY2Fs
ZSBleHRlbnNpb24gdHlwZS4KICAqIEBzZWUgdWxvY190b0xlZ2FjeVR5cGUKLSAqIEBkcmFmdCBJ
Q1UgNTQKKyAqIEBzdGFibGUgSUNVIDU0CiAgKi8KLVVfRFJBRlQgY29uc3QgY2hhciogVV9FWFBP
UlQyCitVX1NUQUJMRSBjb25zdCBjaGFyKiBVX0VYUE9SVDIKIHVsb2NfdG9Vbmljb2RlTG9jYWxl
VHlwZShjb25zdCBjaGFyKiBrZXl3b3JkLCBjb25zdCBjaGFyKiB2YWx1ZSk7CiAKIC8qKgpAQCAt
MTIxNyw5ICsxMjM1LDkgQEAgdWxvY190b1VuaWNvZGVMb2NhbGVUeXBlKGNvbnN0IGNoYXIqIGtl
eXdvcmQsIGNvbnN0IGNoYXIqIHZhbHVlKTsKICAqIEByZXR1cm4gICAgICAgICAgICAgIHRoZSB3
ZWxsLWZvcm1lZCBsZWdhY3kga2V5LCBvciBOVUxMIGlmIHRoZSBzcGVjaWZpZWQKICAqICAgICAg
ICAgICAgICAgICAgICAgIGtleXdvcmQgY2Fubm90IGJlIG1hcHBlZCB0byBhIHdlbGwtZm9ybWVk
IGxlZ2FjeSBrZXkuCiAgKiBAc2VlIHRvVW5pY29kZUxvY2FsZUtleQotICogQGRyYWZ0IElDVSA1
NAorICogQHN0YWJsZSBJQ1UgNTQKICAqLwotVV9EUkFGVCBjb25zdCBjaGFyKiBVX0VYUE9SVDIK
K1VfU1RBQkxFIGNvbnN0IGNoYXIqIFVfRVhQT1JUMgogdWxvY190b0xlZ2FjeUtleShjb25zdCBj
aGFyKiBrZXl3b3JkKTsKIAogLyoqCkBAIC0xMjQ2LDExICsxMjY0LDkgQEAgdWxvY190b0xlZ2Fj
eUtleShjb25zdCBjaGFyKiBrZXl3b3JkKTsKICAqICAgICAgICAgICAgICAgICAgICAgIGtleXdv
cmQgdmFsdWUgY2Fubm90IGJlIG1hcHBlZCB0byBhIHdlbGwtZm9ybWVkIGxlZ2FjeQogICogICAg
ICAgICAgICAgICAgICAgICAgdHlwZS4KICAqIEBzZWUgdG9Vbmljb2RlTG9jYWxlVHlwZQotICog
QGRyYWZ0IElDVSA1NAorICogQHN0YWJsZSBJQ1UgNTQKICAqLwotVV9EUkFGVCBjb25zdCBjaGFy
KiBVX0VYUE9SVDIKK1VfU1RBQkxFIGNvbnN0IGNoYXIqIFVfRVhQT1JUMgogdWxvY190b0xlZ2Fj
eVR5cGUoY29uc3QgY2hhcioga2V5d29yZCwgY29uc3QgY2hhciogdmFsdWUpOwogCi0jZW5kaWYg
IC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLQogI2VuZGlmIC8qX1VMT0MqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS91bG9jZGF0YS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29k
ZS91bG9jZGF0YS5oCmluZGV4IDYzNDk1ZjY4MWNlZTRhMWZkZjdkMzFmZTRiYmJkMzI3M2UyNjJk
MmQuLmRlOGQ4NTM5YzY3NDlhY2NkNTA1MzdiZjY5ZjFlZDNmYjEyNjg1ZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxvY2RhdGEuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3Vsb2NkYXRhLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqCkBAIC02LDcgKzgsNyBAQAogKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1bG9jZGF0
YS5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAg
IHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTQ3LDgg
KzQ5LDEzIEBAIHR5cGVkZWYgZW51bSBVTG9jYWxlRGF0YUV4ZW1wbGFyU2V0VHlwZSAgewogICAg
IFVMT0NEQVRBX0VTX0lOREVYPTIsCiAgICAgLyoqIFB1bmN0dWF0aW9uIHNldCBAc3RhYmxlIElD
VSA1MSAqLwogICAgIFVMT0NEQVRBX0VTX1BVTkNUVUFUSU9OPTMsCi0gICAgLyoqIE9uZSBoaWdo
ZXIgdGhhbiB0aGUgbGFzdCB2YWxpZCB0eXBlIEBzdGFibGUgSUNVIDMuNCAqLworI2lmbmRlZiBV
X0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBo
aWdoZXN0IG5vcm1hbCBVTG9jYWxlRGF0YUV4ZW1wbGFyU2V0VHlwZSB2YWx1ZS4KKyAgICAgKiBA
ZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUs
IHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVTE9DREFUQV9FU19DT1VOVD00
CisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogfSBVTG9jYWxlRGF0YUV4ZW1w
bGFyU2V0VHlwZTsKIAogLyoqIFRoZSBwb3NzaWJsZSB0eXBlcyBvZiBkZWxpbWl0ZXJzLgpAQCAt
NjMsOCArNzAsMTMgQEAgdHlwZWRlZiBlbnVtIFVMb2NhbGVEYXRhRGVsaW1pdGVyVHlwZSB7CiAg
ICAgVUxPQ0RBVEFfQUxUX1FVT1RBVElPTl9TVEFSVCA9IDIsCiAgICAgLyoqIEFsdGVybmF0ZSBx
dW90YXRpb24gZW5kIEBzdGFibGUgSUNVIDMuNCAqLwogICAgIFVMT0NEQVRBX0FMVF9RVU9UQVRJ
T05fRU5EID0gMywKLSAgICAvKiogT25lIGhpZ2hlciB0aGFuIHRoZSBsYXN0IHZhbGlkIHR5cGUg
QHN0YWJsZSBJQ1UgMy40ICovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8q
KgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVMb2NhbGVEYXRhRGVs
aW1pdGVyVHlwZSB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMg
dmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAg
Ki8KICAgICBVTE9DREFUQV9ERUxJTUlURVJfQ09VTlQgPSA0CisjZW5kaWYgIC8qIFVfSElERV9E
RVBSRUNBVEVEX0FQSSAqLwogfSBVTG9jYWxlRGF0YURlbGltaXRlclR5cGU7CiAKIC8qKgpAQCAt
MTg5LDcgKzIwMSwxMyBAQCB0eXBlZGVmIGVudW0gVU1lYXN1cmVtZW50U3lzdGVtIHsKICAgICBV
TVNfU0ksICAgICAvKio8IE1lYXN1cmVtZW50IHN5c3RlbSBzcGVjaWZpZWQgYnkgU0kgb3RoZXJ3
aXNlIGtub3duIGFzIE1ldHJpYyBzeXN0ZW0uIEBzdGFibGUgSUNVIDIuOCAqLwogICAgIFVNU19V
UywgICAgIC8qKjwgTWVhc3VyZW1lbnQgc3lzdGVtIGZvbGxvd2VkIGluIHRoZSBVbml0ZWQgU3Rh
dGVzIG9mIEFtZXJpY2EuIEBzdGFibGUgSUNVIDIuOCAqLwogICAgIFVNU19VSywgICAgIC8qKjwg
TWl4IG9mIG1ldHJpYyBhbmQgaW1wZXJpYWwgdW5pdHMgdXNlZCBpbiBHcmVhdCBCcml0YWluLiBA
c3RhYmxlIElDVSA1NSAqLworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioK
KyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVTWVhc3VyZW1lbnRTeXN0
ZW0gdmFsdWUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1h
eSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAg
VU1TX0xJTUlUCisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogfSBVTWVhc3Vy
ZW1lbnRTeXN0ZW07CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91
bWFjaGluZS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bWFjaGluZS5oCmluZGV4IDUzMjE1
OTIxNmE1ZTNkMTMwMjdhN2ZmZWY2ZmMzMjhjN2I2ZjY0YjkuLjkxYjg3MjE0OTM4MmJlYzRjMmUx
OTk0ZDNkZTExMzRkODNhYjFlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dW1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VtYWNoaW5lLmgKQEAgLTEs
MTIgKzEsMTQgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCi0qICAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAg
IENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgdW1hY2hpbmUuaAotKiAgIGVuY29kaW5n
OiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChu
b3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC0xMzIsNyArMTM0LDcgQEAKICAqIEBp
bnRlcm5hbAogICovCiAKLSNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBfX2NwbHVzcGx1cz49
MjAxMTAzTAorI2lmIFVfQ1BMVVNQTFVTX1ZFUlNJT04gPj0gMTEKIC8qIEMrKzExICovCiAjaWZu
ZGVmIFVfT1ZFUlJJREUKICNkZWZpbmUgVV9PVkVSUklERSBvdmVycmlkZQpAQCAtMjg4LDMwICsy
OTAsOTIgQEAgdHlwZWRlZiBpbnQ4X3QgVUJvb2w7CiAvKiogTnVtYmVyIG9mIGJ5dGVzIGluIGEg
VUNoYXIuIEBzdGFibGUgSUNVIDIuMCAqLwogI2RlZmluZSBVX1NJWkVPRl9VQ0hBUiAyCiAKKy8q
KgorICogXGRlZiBVX0NIQVIxNl9JU19UWVBFREVGCisgKiBJZiAxLCB0aGVuIGNoYXIxNl90IGlz
IGEgdHlwZWRlZiBhbmQgbm90IGEgcmVhbCB0eXBlICh5ZXQpCisgKiBAaW50ZXJuYWwKKyAqLwor
I2lmIChVX1BMQVRGT1JNID09IFVfUEZfQUlYKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJihV
X0NQTFVTUExVU19WRVJTSU9OIDwgMTEpCisvLyBmb3IgQUlYLCB1Y2hhci5oIG5lZWRzIHRvIGJl
IGluY2x1ZGVkCisjIGluY2x1ZGUgPHVjaGFyLmg+CisjIGRlZmluZSBVX0NIQVIxNl9JU19UWVBF
REVGIDEKKyNlbHNlCisjIGRlZmluZSBVX0NIQVIxNl9JU19UWVBFREVGIDAKKyNlbmRpZgorCisK
IC8qKgogICogXHZhciBVQ2hhcgotICogRGVmaW5lIFVDaGFyIHRvIGJlIFVDSEFSX1RZUEUsIGlm
IHRoYXQgaXMgI2RlZmluZWQgKGZvciBleGFtcGxlLCB0byBjaGFyMTZfdCksCi0gKiBvciB3Y2hh
cl90IGlmIHRoYXQgaXMgMTYgYml0cyB3aWRlOyBhbHdheXMgYXNzdW1lZCB0byBiZSB1bnNpZ25l
ZC4KLSAqIElmIG5laXRoZXIgaXMgYXZhaWxhYmxlLCB0aGVuIGRlZmluZSBVQ2hhciB0byBiZSB1
aW50MTZfdC4KICAqCi0gKiBUaGlzIG1ha2VzIHRoZSBkZWZpbml0aW9uIG9mIFVDaGFyIHBsYXRm
b3JtLWRlcGVuZGVudAotICogYnV0IGFsbG93cyBkaXJlY3Qgc3RyaW5nIHR5cGUgY29tcGF0aWJp
bGl0eSB3aXRoIHBsYXRmb3JtcyB3aXRoCi0gKiAxNi1iaXQgd2NoYXJfdCB0eXBlcy4KKyAqIFRo
ZSBiYXNlIHR5cGUgZm9yIFVURi0xNiBjb2RlIHVuaXRzIGFuZCBwb2ludGVycy4KKyAqIFVuc2ln
bmVkIDE2LWJpdCBpbnRlZ2VyLgorICogU3RhcnRpbmcgd2l0aCBJQ1UgNTksIEMrKyBBUEkgdXNl
cyBjaGFyMTZfdCBkaXJlY3RseSwgd2hpbGUgQyBBUEkgY29udGludWVzIHRvIHVzZSBVQ2hhci4K
KyAqCisgKiBVQ2hhciBpcyBjb25maWd1cmFibGUgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIFVDSEFS
X1RZUEUKKyAqIG9uIHRoZSBwcmVwcm9jZXNzb3Igb3IgY29tcGlsZXIgY29tbWFuZCBsaW5lOgor
ICogLURVQ0hBUl9UWVBFPXVpbnQxNl90IG9yIC1EVUNIQVJfVFlQRT13Y2hhcl90IChpZiBVX1NJ
WkVPRl9XQ0hBUl9UPT0yKSBldGMuCisgKiAoVGhlIFVDSEFSX1RZUEUgY2FuIGFsc28gYmUgI2Rl
ZmluZWQgZWFybGllciBpbiB0aGlzIGZpbGUsIGZvciBvdXRzaWRlIHRoZSBJQ1UgbGlicmFyeSBj
b2RlLikKKyAqIFRoaXMgaXMgZm9yIHRyYW5zaXRpb25hbCB1c2UgZnJvbSBhcHBsaWNhdGlvbiBj
b2RlIHRoYXQgdXNlcyB1aW50MTZfdCBvciB3Y2hhcl90IGZvciBVVEYtMTYuCisgKgorICogVGhl
IGRlZmF1bHQgaXMgVUNoYXI9Y2hhcjE2X3QuCisgKgorICogQysrMTEgZGVmaW5lcyBjaGFyMTZf
dCBhcyBiaXQtY29tcGF0aWJsZSB3aXRoIHVpbnQxNl90LCBidXQgYXMgYSBkaXN0aW5jdCB0eXBl
LgorICoKKyAqIEluIEMsIGNoYXIxNl90IGlzIGEgc2ltcGxlIHR5cGVkZWYgb2YgdWludF9sZWFz
dDE2X3QuCisgKiBJQ1UgcmVxdWlyZXMgdWludF9sZWFzdDE2X3Q9dWludDE2X3QgZm9yIGRhdGEg
bWVtb3J5IG1hcHBpbmcuCisgKiBPbiBtYWNPUywgY2hhcjE2X3QgaXMgbm90IGF2YWlsYWJsZSBi
ZWNhdXNlIHRoZSB1Y2hhci5oIHN0YW5kYXJkIGhlYWRlciBpcyBtaXNzaW5nLgogICoKICAqIEBz
dGFibGUgSUNVIDQuNAogICovCi0jaWYgZGVmaW5lZChVQ0hBUl9UWVBFKQorCisjaWYgMQorICAg
IC8vICNpZiAxIGlzIG5vcm1hbC4gVUNoYXIgZGVmYXVsdHMgdG8gY2hhcjE2X3QgaW4gQysrLgor
ICAgIC8vIEZvciBjb25maWd1cmF0aW9uIHRlc3Rpbmcgb2YgVUNoYXI9dWludDE2X3QgdGVtcG9y
YXJpbHkgY2hhbmdlIHRoaXMgdG8gI2lmIDAuCisgICAgLy8gVGhlIGludGx0ZXN0IE1ha2VmaWxl
ICNkZWZpbmVzIFVDSEFSX1RZUEU9Y2hhcjE2X3QsCisgICAgLy8gc28gd2Ugb25seSAjZGVmaW5l
IGl0IHRvIHVpbnQxNl90IGlmIGl0IGlzIHVuZGVmaW5lZCBzbyBmYXIuCisjZWxpZiAhZGVmaW5l
ZChVQ0hBUl9UWVBFKQorIyAgIGRlZmluZSBVQ0hBUl9UWVBFIHVpbnQxNl90CisjZW5kaWYKKwor
I2lmIGRlZmluZWQoVV9DT01CSU5FRF9JTVBMRU1FTlRBVElPTikgfHwgZGVmaW5lZChVX0NPTU1P
Tl9JTVBMRU1FTlRBVElPTikgfHwgXAorICAgICAgICBkZWZpbmVkKFVfSTE4Tl9JTVBMRU1FTlRB
VElPTikgfHwgZGVmaW5lZChVX0lPX0lNUExFTUVOVEFUSU9OKQorICAgIC8vIEluc2lkZSB0aGUg
SUNVIGxpYnJhcnkgY29kZSwgbmV2ZXIgY29uZmlndXJhYmxlLgorICAgIHR5cGVkZWYgY2hhcjE2
X3QgVUNoYXI7CisjZWxpZiBkZWZpbmVkKFVDSEFSX1RZUEUpCiAgICAgdHlwZWRlZiBVQ0hBUl9U
WVBFIFVDaGFyOwotLyogTm90ICNlbGlmIFVfSEFWRV9DSEFSMTZfVCAtLSBiZWNhdXNlIHRoYXQg
aXMgdHlwZS1pbmNvbXBhdGlibGUgd2l0aCBwcmUtQysrMTEgY2FsbGVycwotICAgIHR5cGVkZWYg
Y2hhcjE2X3QgVUNoYXI7ICAqLwotI2VsaWYgVV9TSVpFT0ZfV0NIQVJfVD09MgotICAgIHR5cGVk
ZWYgd2NoYXJfdCBVQ2hhcjsKLSNlbGlmIGRlZmluZWQoX19DSEFSMTZfVFlQRV9fKQotICAgIHR5
cGVkZWYgX19DSEFSMTZfVFlQRV9fIFVDaGFyOworI2VsaWYgMAorICAgIHR5cGVkZWYgY2hhcjE2
X3QgVUNoYXI7CiAjZWxzZQogICAgIHR5cGVkZWYgdWludDE2X3QgVUNoYXI7CiAjZW5kaWYKIAor
LyoqCisgKiBcdmFyIE9sZFVDaGFyCisgKiBEZWZhdWx0IElDVSA1OCBkZWZpbml0aW9uIG9mIFVD
aGFyLgorICogQSBiYXNlIHR5cGUgZm9yIFVURi0xNiBjb2RlIHVuaXRzIGFuZCBwb2ludGVycy4K
KyAqIFVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyLgorICoKKyAqIERlZmluZSBPbGRVQ2hhciB0byBi
ZSB3Y2hhcl90IGlmIHRoYXQgaXMgMTYgYml0cyB3aWRlLgorICogSWYgd2NoYXJfdCBpcyBub3Qg
MTYgYml0cyB3aWRlLCB0aGVuIGRlZmluZSBVQ2hhciB0byBiZSB1aW50MTZfdC4KKyAqCisgKiBU
aGlzIG1ha2VzIHRoZSBkZWZpbml0aW9uIG9mIE9sZFVDaGFyIHBsYXRmb3JtLWRlcGVuZGVudAor
ICogYnV0IGFsbG93cyBkaXJlY3Qgc3RyaW5nIHR5cGUgY29tcGF0aWJpbGl0eSB3aXRoIHBsYXRm
b3JtcyB3aXRoCisgKiAxNi1iaXQgd2NoYXJfdCB0eXBlcy4KKyAqCisgKiBUaGlzIGlzIGhvdyBV
Q2hhciB3YXMgZGVmaW5lZCBpbiBJQ1UgNTgsIGZvciB0cmFuc2l0aW9uIGNvbnZlbmllbmNlLgor
ICogRXhjZXB0aW9uOiBJQ1UgNTggVUNoYXIgd2FzIGRlZmluZWQgdG8gVUNIQVJfVFlQRSBpZiB0
aGF0IG1hY3JvIHdhcyBkZWZpbmVkLgorICogVGhlIGN1cnJlbnQgVUNoYXIgcmVzcG9uZHMgdG8g
VUNIQVJfVFlQRSBidXQgT2xkVUNoYXIgZG9lcyBub3QuCisgKgorICogQGRyYWZ0IElDVSA1OQor
ICovCisjaWYgVV9TSVpFT0ZfV0NIQVJfVD09MgorICAgIHR5cGVkZWYgd2NoYXJfdCBPbGRVQ2hh
cjsKKyNlbGlmIGRlZmluZWQoX19DSEFSMTZfVFlQRV9fKQorICAgIHR5cGVkZWYgX19DSEFSMTZf
VFlQRV9fIE9sZFVDaGFyOworI2Vsc2UKKyAgICB0eXBlZGVmIHVpbnQxNl90IE9sZFVDaGFyOwor
I2VuZGlmCisKIC8qKgogICogRGVmaW5lIFVDaGFyMzIgYXMgYSB0eXBlIGZvciBzaW5nbGUgVW5p
Y29kZSBjb2RlIHBvaW50cy4KICAqIFVDaGFyMzIgaXMgYSBzaWduZWQgMzItYml0IGludGVnZXIg
KHNhbWUgYXMgaW50MzJfdCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vt
aXNjLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VtaXNjLmgKaW5kZXggZDg1NDUxZmM3Njdj
MDU4MzVmNmMxNWY1NjZmMzU2MmUyZDRhZjgzNC4uMjEzMjkwYjlhZmEzM2NmZGJkYjA2MDVjNzll
NTUwZGYzMzNmNWNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bWlzYy5o
CisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW1pc2MuaApAQCAtMSwxMCArMSwxMiBAQAor
Ly8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vu
c2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwK
IC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCiAqICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDYsIEludGVybmF0
aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1bWlzYy5o
Ci0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRh
YiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW1zZy5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91
bXNnLmgKaW5kZXggNTJmZTkwZTJkNmFkODI2MTI2MjZhYzIyZGEzZjI1MmI5MTE0NjEwMS4uNWQy
MzVlNDJlODBiYTdkOTA1ODA2NzAyOWMwYTk3ZDA4MzYyNjU3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS91bXNnLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bXNn
LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBh
bmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2Rl
Lm9yZy9jb3B5cmlnaHQuaHRtbAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDT1BZUklHSFQ6IAogICogQ29w
eXJpZ2h0IChjKSAxOTk3LTIwMTEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29y
cG9yYXRpb24gYW5kCkBAIC02LDcgKzgsNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogICBmaWxl
IG5hbWU6ICB1bXNnLmgKLSAqICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyAqICAgZW5jb2Rpbmc6
ICAgVVRGLTgKICAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAgKiAgIGluZGVudGF0aW9u
OjQKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaWZpbHQuaCBiL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvdW5pZmlsdC5oCmluZGV4IGNlOTUyYWZhZWZiZTczYjRhNGQz
MTg5MWNlYmIwNjE3NGUwZWQ3YjkuLmUxMDUyNzE1NGI2ZGUxM2U2NWRlMzlmNDE5NTU0N2EyMTlm
YzkzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW5pZmlsdC5oCisrKyBi
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW5pZmlsdC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkg
MjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0
ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMTk5OS0yMDEwLCBJbnRlcm5hdGlvbmFsIEJ1
c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCkBAIC0yOCw3ICszMCw3IEBA
IFVfTkFNRVNQQUNFX0JFR0lOCiAgKiBkZWZpbmVkIHJhbmdlLgogICogQHN0YWJsZSBJQ1UgMy4w
CiAgKi8KLSNkZWZpbmUgVV9FVEhFUiAoKFVDaGFyKTB4RkZGRikKKyNkZWZpbmUgVV9FVEhFUiAo
KGNoYXIxNl90KTB4RkZGRikKIAogLyoqCiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91bmlmdW5jdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bmlmdW5jdC5oCmlu
ZGV4IDNhYTdiMDM1OGMwMzkwNTU2YTU3ZDEzMjhhNTM5MmQzMWI3NjdjNjQuLjFjNTA3NTk2ODYx
NDhlOThjNjYwZmFiZjU2YWMzNTNiNjc1Yjg3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdW5pZnVuY3QuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaWZ1bmN0
LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBh
bmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2Rl
Lm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQgKGMp
IDIwMDItMjAwNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bmltYXRjaC5oIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91bmltYXRjaC5oCmluZGV4IDBkYmIxNGVmYzIwNDFmNzhjNDk3M2FkNmQ1
MWY3ZjVhNTFiYTFiYTkuLmVlNDMyNmY5M2MxZWI4OGJkN2NlOTExMjMwNmQ1NTljMTM2NTUyOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW5pbWF0Y2guaAorKysgYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3VuaW1hdGNoLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2
IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1z
IG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICogQ29w
eXJpZ2h0IChDKSAyMDAxLTIwMDUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29y
cG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW5pcmVwbC5oIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91bmlyZXBsLmgKaW5kZXggNmI3NzQ2YjIyMTNmY2ZjZjhmODgwMTdlOTQw
ODM5MmJmZjYyN2UxMi4uZGRjYjBhZDBlOGVkMGNhMWY4NDhhYTMwOWJlNDM2NmQ0NjhhMjYwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bmlyZXBsLmgKKysrIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS91bmlyZXBsLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFu
ZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9m
IHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKICogICBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVz
cyBNYWNoaW5lcyBDb3Jwb3JhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS91bmlzZXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW5pc2V0LmgKaW5kZXggMjM3ZWJm
NzY2YzM2NWNkYjlmMGVjMDUyYWViYjQzZmJkNDYyZDQzNi4uNGE0Y2UxOTNiNjQ3MTk4MmYzN2Rm
MmZiNWM0ZjcyZDMzNTA4NmZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91
bmlzZXQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaXNldC5oCkBAIC0xLDYgKzEs
OCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8v
IExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0
Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSogQ29weXJpZ2h0IChDKSAxOTk5LTIwMTQs
IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24KKyogQ29weXJpZ2h0
IChDKSAxOTk5LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRp
b24KICogYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgogKiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCkBAIC0yOTIsNyArMjk0
LDcgQEAgY2xhc3MgVV9DT01NT05fQVBJIFVuaWNvZGVTZXQgVV9GSU5BTCA6IHB1YmxpYyBVbmlj
b2RlRmlsdGVyIHsKICAgICAgKiBpbmRpY2F0aW5nIHRoYXQgdG9QYXR0ZXJuKCkgbXVzdCBnZW5l
cmF0ZSBhIHBhdHRlcm4KICAgICAgKiByZXByZXNlbnRhdGlvbiBmcm9tIHRoZSBpbnZlcnNpb24g
bGlzdC4KICAgICAgKi8KLSAgICBVQ2hhciAqcGF0OworICAgIGNoYXIxNl90ICpwYXQ7CiAgICAg
VVZlY3Rvciogc3RyaW5nczsgLy8gbWFpbnRhaW5lZCBpbiBzb3J0ZWQgb3JkZXIKICAgICBVbmlj
b2RlU2V0U3RyaW5nU3BhbiAqc3RyaW5nU3BhbjsKIApAQCAtMzA3LDEyICszMDksMTIgQEAgcHVi
bGljOgogICAgICAqIEEgYm9ndXMgc2V0IGhhcyBubyB2YWx1ZS4gSXQgaXMgZGlmZmVyZW50IGZy
b20gYW4gZW1wdHkgc2V0LgogICAgICAqIEl0IGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQg
bm8gc2V0IHZhbHVlIGlzIGF2YWlsYWJsZS4KICAgICAgKgotICAgICAqIEByZXR1cm4gVFJVRSBp
ZiB0aGUgc2V0IGlzIHZhbGlkLCBGQUxTRSBvdGhlcndpc2UKKyAgICAgKiBAcmV0dXJuIFRSVUUg
aWYgdGhlIHNldCBpcyBib2d1cy9pbnZhbGlkLCBGQUxTRSBvdGhlcndpc2UKICAgICAgKiBAc2Vl
IHNldFRvQm9ndXMoKQogICAgICAqIEBzdGFibGUgSUNVIDQuMAogICAgICAqLwogICAgIGlubGlu
ZSBVQm9vbCBpc0JvZ3VzKHZvaWQpIGNvbnN0OwotICAgIAorCiAgICAgLyoqCiAgICAgICogTWFr
ZSB0aGlzIFVuaWNvZGVTZXQgb2JqZWN0IGludmFsaWQuCiAgICAgICogVGhlIHN0cmluZyB3aWxs
IHRlc3QgVFJVRSB3aXRoIGlzQm9ndXMoKS4KQEAgLTM2MCw3ICszNjIsNyBAQCBwdWJsaWM6CiAg
ICAgVW5pY29kZVNldCgpOwogCiAgICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIHNldCBjb250
YWluaW5nIHRoZSBnaXZlbiByYW5nZS4gSWYgPGNvZGU+ZW5kID4KKyAgICAgKiBDb25zdHJ1Y3Rz
IGEgc2V0IGNvbnRhaW5pbmcgdGhlIGdpdmVuIHJhbmdlLiBJZiA8Y29kZT5lbmQgPAogICAgICAq
IHN0YXJ0PC9jb2RlPiB0aGVuIGFuIGVtcHR5IHNldCBpcyBjcmVhdGVkLgogICAgICAqCiAgICAg
ICogQHBhcmFtIHN0YXJ0IGZpcnN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiByYW5nZQpAQCAt
MzY5LDYgKzM3MSwyOCBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgVW5pY29kZVNldChVQ2hhcjMy
IHN0YXJ0LCBVQ2hhcjMyIGVuZCk7CiAKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQorICAg
IC8qKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIGVudW0gRVNlcmlhbGl6YXRpb24g
eworICAgICAga1NlcmlhbGl6ZWQgIC8qIHJlc3VsdCBvZiBzZXJpYWxpemUoKSAqLworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgc2V0IGZyb20gdGhlIG91dHB1dCBvZiBz
ZXJpYWxpemUoKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBidWZmZXIgdGhlIDE2IGJpdCBhcnJh
eQorICAgICAqIEBwYXJhbSBidWZmZXJMZW4gdGhlIG9yaWdpbmFsIGxlbmd0aCByZXR1cm5lZCBm
cm9tIHNlcmlhbGl6ZSgpCisgICAgICogQHBhcmFtIHNlcmlhbGl6YXRpb24gdGhlIHZhbHVlICdr
U2VyaWFsaXplZCcKKyAgICAgKiBAcGFyYW0gc3RhdHVzIGVycm9yIGNvZGUKKyAgICAgKgorICAg
ICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIFVuaWNvZGVTZXQoY29uc3QgdWludDE2X3QgYnVm
ZmVyW10sIGludDMyX3QgYnVmZmVyTGVuLAorICAgICAgICAgICAgICAgRVNlcmlhbGl6YXRpb24g
c2VyaWFsaXphdGlvbiwgVUVycm9yQ29kZSAmc3RhdHVzKTsKKyNlbmRpZiAgLyogVV9ISURFX0lO
VEVSTkFMX0FQSSAqLworCiAgICAgLyoqCiAgICAgICogQ29uc3RydWN0cyBhIHNldCBmcm9tIHRo
ZSBnaXZlbiBwYXR0ZXJuLiAgU2VlIHRoZSBjbGFzcwogICAgICAqIGRlc2NyaXB0aW9uIGZvciB0
aGUgc3ludGF4IG9mIHRoZSBwYXR0ZXJuIGxhbmd1YWdlLgpAQCAtODY3LDcgKzg5MSw3IEBAIHB1
YmxpYzoKICAgICAgKiBAc3RhYmxlIElDVSAzLjgKICAgICAgKiBAc2VlIFVTZXRTcGFuQ29uZGl0
aW9uCiAgICAgICovCi0gICAgaW50MzJfdCBzcGFuKGNvbnN0IFVDaGFyICpzLCBpbnQzMl90IGxl
bmd0aCwgVVNldFNwYW5Db25kaXRpb24gc3BhbkNvbmRpdGlvbikgY29uc3Q7CisgICAgaW50MzJf
dCBzcGFuKGNvbnN0IGNoYXIxNl90ICpzLCBpbnQzMl90IGxlbmd0aCwgVVNldFNwYW5Db25kaXRp
b24gc3BhbkNvbmRpdGlvbikgY29uc3Q7CiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHRoZSBl
bmQgb2YgdGhlIHN1YnN0cmluZyBvZiB0aGUgaW5wdXQgc3RyaW5nIGFjY29yZGluZyB0byB0aGUg
VVNldFNwYW5Db25kaXRpb24uCkBAIC05MDAsNyArOTI0LDcgQEAgcHVibGljOgogICAgICAqIEBz
dGFibGUgSUNVIDMuOAogICAgICAqIEBzZWUgVVNldFNwYW5Db25kaXRpb24KICAgICAgKi8KLSAg
ICBpbnQzMl90IHNwYW5CYWNrKGNvbnN0IFVDaGFyICpzLCBpbnQzMl90IGxlbmd0aCwgVVNldFNw
YW5Db25kaXRpb24gc3BhbkNvbmRpdGlvbikgY29uc3Q7CisgICAgaW50MzJfdCBzcGFuQmFjayhj
b25zdCBjaGFyMTZfdCAqcywgaW50MzJfdCBsZW5ndGgsIFVTZXRTcGFuQ29uZGl0aW9uIHNwYW5D
b25kaXRpb24pIGNvbnN0OwogCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2Yg
dGhlIHN1YnN0cmluZyBvZiB0aGUgaW5wdXQgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgVVNldFNw
YW5Db25kaXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaXN0ci5o
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bmlzdHIuaAppbmRleCA0OGZlMmIzYjFkNmM4YTM1
Yzc3ZmFhMTIyMGU0ZmZkNzc5NjAwMzEwLi5iOTlhNjg2MTI2YzRlMTRmYWE0ODlmODQ0ZGUyZjc4
M2JiNjljMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaXN0ci5oCisr
KyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW5pc3RyLmgKQEAgLTEsNiArMSw4IEBACisvLyDC
qSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAm
IHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoK
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAxNCwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMTk5OC0yMDE2LCBJbnRlcm5h
dGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC0yMiwyOSArMjQsMTkgQEAK
ICNkZWZpbmUgVU5JU1RSX0gKIAogLyoqCi0gKiBcZmlsZSAKLSAqIFxicmllZiBDKysgQVBJOiBV
bmljb2RlIFN0cmluZyAKKyAqIFxmaWxlCisgKiBcYnJpZWYgQysrIEFQSTogVW5pY29kZSBTdHJp
bmcKICAqLwogCisjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5o
IgorI2luY2x1ZGUgInVuaWNvZGUvY2hhcjE2cHRyLmgiCiAjaW5jbHVkZSAidW5pY29kZS9yZXAu
aCIKICNpbmNsdWRlICJ1bmljb2RlL3N0ZF9zdHJpbmcuaCIKICNpbmNsdWRlICJ1bmljb2RlL3N0
cmluZ3BpZWNlLmgiCiAjaW5jbHVkZSAidW5pY29kZS9ieXRlc3RyZWFtLmgiCi0jaW5jbHVkZSAi
dW5pY29kZS91Y2FzZW1hcC5oIgogCiBzdHJ1Y3QgVUNvbnZlcnRlcjsgICAgICAgICAgLy8gdW5p
Y29kZS91Y252LmgKLWNsYXNzICBTdHJpbmdUaHJlYWRUZXN0OwotCi0jaWZuZGVmIFVfQ09NUEFS
RV9DT0RFX1BPSU5UX09SREVSCi0vKiBzZWUgYWxzbyB1c3RyaW5nLmggYW5kIHVub3JtLmggKi8K
LS8qKgotICogT3B0aW9uIGJpdCBmb3IgdV9zdHJDYXNlQ29tcGFyZSwgdV9zdHJjYXNlY21wLCB1
bm9ybV9jb21wYXJlLCBldGM6Ci0gKiBDb21wYXJlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRl
ciBpbnN0ZWFkIG9mIGNvZGUgdW5pdCBvcmRlci4KLSAqIEBzdGFibGUgSUNVIDIuMgotICovCi0j
ZGVmaW5lIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSICAweDgwMDAKLSNlbmRpZgogCiAjaWZu
ZGVmIFVTVFJJTkdfSAogLyoqCkBAIC01NCwyOCArNDYsMzQgQEAgVV9TVEFCTEUgaW50MzJfdCBV
X0VYUE9SVDIKIHVfc3RybGVuKGNvbnN0IFVDaGFyICpzKTsKICNlbmRpZgogCi0vKioKLSAqIFxk
ZWYgVV9TVFJJTkdfQ0FTRV9NQVBQRVJfREVGSU5FRAotICogQGludGVybmFsCi0gKi8KLSNpZm5k
ZWYgVV9TVFJJTkdfQ0FTRV9NQVBQRVJfREVGSU5FRAotI2RlZmluZSBVX1NUUklOR19DQVNFX01B
UFBFUl9ERUZJTkVECitVX05BTUVTUEFDRV9CRUdJTgogCisjaWYgIVVDT05GSUdfTk9fQlJFQUtf
SVRFUkFUSU9OCitjbGFzcyBCcmVha0l0ZXJhdG9yOyAgICAgICAgLy8gdW5pY29kZS9icmtpdGVy
LmgKKyNlbmRpZgorY2xhc3MgRWRpdHM7CisKK1VfTkFNRVNQQUNFX0VORAorCisvLyBOb3QgI2lm
bmRlZiBVX0hJREVfSU5URVJOQUxfQVBJIGJlY2F1c2UgVW5pY29kZVN0cmluZyBuZWVkcyB0aGUg
VVN0cmluZ0Nhc2VNYXBwZXIuCiAvKioKICAqIEludGVybmFsIHN0cmluZyBjYXNlIG1hcHBpbmcg
ZnVuY3Rpb24gdHlwZS4KKyAqIEFsbCBlcnJvciBjaGVja2luZyBtdXN0IGJlIGRvbmUuCisgKiBz
cmMgYW5kIGRlc3QgbXVzdCBub3Qgb3ZlcmxhcC4KICAqIEBpbnRlcm5hbAogICovCiB0eXBlZGVm
IGludDMyX3QgVV9DQUxMQ09OVgotVVN0cmluZ0Nhc2VNYXBwZXIoY29uc3QgVUNhc2VNYXAgKmNz
bSwKLSAgICAgICAgICAgICAgICAgIFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwK
LSAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7Ci0KK1VTdHJpbmdDYXNl
TWFwcGVyKGludDMyX3QgY2FzZUxvY2FsZSwgdWludDMyX3Qgb3B0aW9ucywKKyNpZiAhVUNPTkZJ
R19OT19CUkVBS19JVEVSQVRJT04KKyAgICAgICAgICAgICAgICAgIGljdTo6QnJlYWtJdGVyYXRv
ciAqaXRlciwKICNlbmRpZgorICAgICAgICAgICAgICAgICAgY2hhcjE2X3QgKmRlc3QsIGludDMy
X3QgZGVzdENhcGFjaXR5LAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcjE2X3QgKnNyYywg
aW50MzJfdCBzcmNMZW5ndGgsCisgICAgICAgICAgICAgICAgICBpY3U6OkVkaXRzICplZGl0cywK
KyAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CiAKIFVfTkFNRVNQQUNF
X0JFR0lOCiAKLWNsYXNzIEJyZWFrSXRlcmF0b3I7ICAgICAgICAvLyB1bmljb2RlL2Jya2l0ZXIu
aAogY2xhc3MgTG9jYWxlOyAgICAgICAgICAgICAgIC8vIHVuaWNvZGUvbG9jaWQuaAogY2xhc3Mg
U3RyaW5nQ2hhcmFjdGVySXRlcmF0b3I7CiBjbGFzcyBVbmljb2RlU3RyaW5nQXBwZW5kYWJsZTsg
IC8vIHVuaWNvZGUvYXBwZW5kYWJsZS5oCkBAIC05NiwxMCArOTQsMTIgQEAgY2xhc3MgVW5pY29k
ZVN0cmluZ0FwcGVuZGFibGU7ICAvLyB1bmljb2RlL2FwcGVuZGFibGUuaAogCiAvKioKICAqIFVu
aWNvZGUgU3RyaW5nIGxpdGVyYWxzIGluIEMrKy4KLSAqIERlcGVuZGVudCBvbiB0aGUgcGxhdGZv
cm0gcHJvcGVydGllcywgZGlmZmVyZW50IFVuaWNvZGVTdHJpbmcKLSAqIGNvbnN0cnVjdG9ycyBz
aG91bGQgYmUgdXNlZCB0byBjcmVhdGUgYSBVbmljb2RlU3RyaW5nIG9iamVjdCBmcm9tCi0gKiBh
IHN0cmluZyBsaXRlcmFsLgotICogVGhlIG1hY3JvcyBhcmUgZGVmaW5lZCBmb3IgbWF4aW11bSBw
ZXJmb3JtYW5jZS4KKyAqCisgKiBOb3RlOiB0aGVzZSBtYWNyb3MgYXJlIG5vdCByZWNvbW1lbmRl
ZCBmb3IgbmV3IGNvZGUuCisgKiBQcmlvciB0byB0aGUgYXZhaWxhYmlsaXR5IG9mIEMrKzExIGFu
ZCB1InVuaWNvZGUgc3RyaW5nIGxpdGVyYWxzIiwKKyAqIHRoZXNlIG1hY3JvcyB3ZXJlIHByb3Zp
ZGVkIGZvciBwb3J0YWJpbGl0eSBhbmQgZWZmaWNpZW5jeSB3aGVuCisgKiBpbml0aWFsaXppbmcg
VW5pY29kZVN0cmluZ3MgZnJvbSBsaXRlcmFscy4KKyAqCiAgKiBUaGV5IHdvcmsgb25seSBmb3Ig
c3RyaW5ncyB0aGF0IGNvbnRhaW4gImludmFyaWFudCBjaGFyYWN0ZXJzIiwgaS5lLiwKICAqIG9u
bHkgbGF0aW4gbGV0dGVycywgZGlnaXRzLCBhbmQgc29tZSBwdW5jdHVhdGlvbi4KICAqIFNlZSB1
dHlwZXMuaCBmb3IgZGV0YWlscy4KQEAgLTEwNywxOCArMTA3LDEyIEBAIGNsYXNzIFVuaWNvZGVT
dHJpbmdBcHBlbmRhYmxlOyAgLy8gdW5pY29kZS9hcHBlbmRhYmxlLmgKICAqIFRoZSBzdHJpbmcg
cGFyYW1ldGVyIG11c3QgYmUgYSBDIHN0cmluZyBsaXRlcmFsLgogICogVGhlIGxlbmd0aCBvZiB0
aGUgc3RyaW5nLCBub3QgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZwogICogPGNvZGU+TlVMPC9j
b2RlPiwgbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBjb25zdGFudC4KLSAqIFRoZSBVX1NUUklOR19E
RUNMIG1hY3JvIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBmb3Igb25lCi0gKiBzdWNo
IHN0cmluZyB2YXJpYWJsZSBiZWZvcmUgaXQgaXMgdXNlZC4KICAqIEBzdGFibGUgSUNVIDIuMAog
ICovCi0jaWYgZGVmaW5lZChVX0RFQ0xBUkVfVVRGMTYpCi0jICAgZGVmaW5lIFVOSUNPREVfU1RS
SU5HKGNzLCBfbGVuZ3RoKSBpY3U6OlVuaWNvZGVTdHJpbmcoVFJVRSwgKGNvbnN0IFVDaGFyICop
VV9ERUNMQVJFX1VURjE2KGNzKSwgX2xlbmd0aCkKLSNlbGlmIFVfU0laRU9GX1dDSEFSX1Q9PVVf
U0laRU9GX1VDSEFSICYmIChVX0NIQVJTRVRfRkFNSUxZPT1VX0FTQ0lJX0ZBTUlMWSB8fCAoVV9T
SVpFT0ZfVUNIQVIgPT0gMiAmJiBkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpKSkKLSMgICBkZWZp
bmUgVU5JQ09ERV9TVFJJTkcoY3MsIF9sZW5ndGgpIGljdTo6VW5pY29kZVN0cmluZyhUUlVFLCAo
Y29uc3QgVUNoYXIgKilMICMjIGNzLCBfbGVuZ3RoKQotI2VsaWYgVV9TSVpFT0ZfVUNIQVI9PTEg
JiYgVV9DSEFSU0VUX0ZBTUlMWT09VV9BU0NJSV9GQU1JTFkKLSMgICBkZWZpbmUgVU5JQ09ERV9T
VFJJTkcoY3MsIF9sZW5ndGgpIGljdTo6VW5pY29kZVN0cmluZyhUUlVFLCAoY29uc3QgVUNoYXIg
KiljcywgX2xlbmd0aCkKKyNpZiAhVV9DSEFSMTZfSVNfVFlQRURFRgorIyBkZWZpbmUgVU5JQ09E
RV9TVFJJTkcoY3MsIF9sZW5ndGgpIGljdTo6VW5pY29kZVN0cmluZyhUUlVFLCB1ICMjIGNzLCBf
bGVuZ3RoKQogI2Vsc2UKLSMgICBkZWZpbmUgVU5JQ09ERV9TVFJJTkcoY3MsIF9sZW5ndGgpIGlj
dTo6VW5pY29kZVN0cmluZyhjcywgX2xlbmd0aCwgVVNfSU5WKQorIyBkZWZpbmUgVU5JQ09ERV9T
VFJJTkcoY3MsIF9sZW5ndGgpIGljdTo6VW5pY29kZVN0cmluZyhUUlVFLCAoY29uc3QgY2hhcjE2
X3QqKXUgIyMgY3MsIF9sZW5ndGgpCiAjZW5kaWYKIAogLyoqCkBAIC0xMzksNyArMTMzLDcgQEAg
Y2xhc3MgVW5pY29kZVN0cmluZ0FwcGVuZGFibGU7ICAvLyB1bmljb2RlL2FwcGVuZGFibGUuaAog
LyoqCiAgKiBcZGVmIFVOSVNUUl9GUk9NX0NIQVJfRVhQTElDSVQKICAqIFRoaXMgY2FuIGJlIGRl
ZmluZWQgdG8gYmUgZW1wdHkgb3IgImV4cGxpY2l0Ii4KLSAqIElmIGV4cGxpY2l0LCB0aGVuIHRo
ZSBVbmljb2RlU3RyaW5nKFVDaGFyKSBhbmQgVW5pY29kZVN0cmluZyhVQ2hhcjMyKQorICogSWYg
ZXhwbGljaXQsIHRoZW4gdGhlIFVuaWNvZGVTdHJpbmcoY2hhcjE2X3QpIGFuZCBVbmljb2RlU3Ry
aW5nKFVDaGFyMzIpCiAgKiBjb25zdHJ1Y3RvcnMgYXJlIG1hcmtlZCBhcyBleHBsaWNpdCwgcHJl
dmVudGluZyB0aGVpciBpbmFkdmVydGVudCB1c2UuCiAgKiBAc3RhYmxlIElDVSA0OQogICovCkBA
IC0xNTYsNyArMTUwLDcgQEAgY2xhc3MgVW5pY29kZVN0cmluZ0FwcGVuZGFibGU7ICAvLyB1bmlj
b2RlL2FwcGVuZGFibGUuaAogLyoqCiAgKiBcZGVmIFVOSVNUUl9GUk9NX1NUUklOR19FWFBMSUNJ
VAogICogVGhpcyBjYW4gYmUgZGVmaW5lZCB0byBiZSBlbXB0eSBvciAiZXhwbGljaXQiLgotICog
SWYgZXhwbGljaXQsIHRoZW4gdGhlIFVuaWNvZGVTdHJpbmcoY29uc3QgY2hhciAqKSBhbmQgVW5p
Y29kZVN0cmluZyhjb25zdCBVQ2hhciAqKQorICogSWYgZXhwbGljaXQsIHRoZW4gdGhlIFVuaWNv
ZGVTdHJpbmcoY29uc3QgY2hhciAqKSBhbmQgVW5pY29kZVN0cmluZyhjb25zdCBjaGFyMTZfdCAq
KQogICogY29uc3RydWN0b3JzIGFyZSBtYXJrZWQgYXMgZXhwbGljaXQsIHByZXZlbnRpbmcgdGhl
aXIgaW5hZHZlcnRlbnQgdXNlLgogICoKICAqIEluIHBhcnRpY3VsYXIsIHRoaXMgaGVscHMgcHJl
dmVudCBhY2NpZGVudGFsbHkgZGVwZW5kaW5nIG9uIElDVSBjb252ZXJzaW9uIGNvZGUKQEAgLTE3
MywyMCArMTY3LDY3IEBAIGNsYXNzIFVuaWNvZGVTdHJpbmdBcHBlbmRhYmxlOyAgLy8gdW5pY29k
ZS9hcHBlbmRhYmxlLmgKICMgZW5kaWYKICNlbmRpZgogCisvKioKKyAqIFxkZWYgVU5JU1RSX09C
SkVDVF9TSVpFCisgKiBEZXNpcmVkIHNpemVvZihVbmljb2RlU3RyaW5nKSBpbiBieXRlcy4KKyAq
IEl0IHNob3VsZCBiZSBhIG11bHRpcGxlIG9mIHNpemVvZihwb2ludGVyKSB0byBhdm9pZCB1bnVz
YWJsZSBzcGFjZSBmb3IgcGFkZGluZy4KKyAqIFRoZSBvYmplY3Qgc2l6ZSBtYXkgd2FudCB0byBi
ZSBhIG11bHRpcGxlIG9mIDE2IGJ5dGVzLAorICogd2hpY2ggaXMgYSBjb21tb24gZ3JhbnVsYXJp
dHkgZm9yIGhlYXAgYWxsb2NhdGlvbi4KKyAqCisgKiBBbnkgc3BhY2UgaW5zaWRlIHRoZSBvYmpl
Y3QgYmV5b25kIHNpemVvZih2dGFibGUgcG9pbnRlcikgKyAyCisgKiBpcyBhdmFpbGFibGUgZm9y
IHN0b3Jpbmcgc2hvcnQgc3RyaW5ncyBpbnNpZGUgdGhlIG9iamVjdC4KKyAqIFRoZSBiaWdnZXIg
dGhlIG9iamVjdCwgdGhlIGxvbmdlciBhIHN0cmluZyB0aGF0IGNhbiBiZSBzdG9yZWQgaW5zaWRl
IHRoZSBvYmplY3QsCisgKiB3aXRob3V0IGFkZGl0aW9uYWwgaGVhcCBhbGxvY2F0aW9uLgorICoK
KyAqIERlcGVuZGluZyBvbiBhIHBsYXRmb3JtJ3MgcG9pbnRlciBzaXplLCBwb2ludGVyIGFsaWdu
bWVudCByZXF1aXJlbWVudHMsCisgKiBhbmQgc3RydWN0IHBhZGRpbmcsIHRoZSBjb21waWxlciB3
aWxsIHVzdWFsbHkgcm91bmQgdXAgc2l6ZW9mKFVuaWNvZGVTdHJpbmcpCisgKiB0byA0ICogc2l6
ZW9mKHBvaW50ZXIpIChvciAzICogc2l6ZW9mKHBvaW50ZXIpIGZvciBQMTI4IGRhdGEgbW9kZWxz
KSwKKyAqIHRvIGhvbGQgdGhlIGZpZWxkcyBmb3IgaGVhcC1hbGxvY2F0ZWQgc3RyaW5ncy4KKyAq
IFN1Y2ggYSBtaW5pbXVtIHNpemUgYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG9iamVjdCBpcyBlYXNp
bHkgbGFyZ2UgZW5vdWdoCisgKiB0byBob2xkIGF0IGxlYXN0IDIgY2hhcjE2X3RzLCBmb3Igb25l
IHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCAoVTE2X01BWF9MRU5HVEgpLgorICoKKyAqIHNpemVv
ZihVbmljb2RlU3RyaW5nKSA+PSA0OCBzaG91bGQgd29yayBmb3IgYWxsIGtub3duIHBsYXRmb3Jt
cy4KKyAqCisgKiBGb3IgZXhhbXBsZSwgb24gYSA2NC1iaXQgbWFjaGluZSB3aGVyZSBzaXplb2Yo
dnRhYmxlIHBvaW50ZXIpIGlzIDgsCisgKiBzaXplb2YoVW5pY29kZVN0cmluZykgPSA2NCB3b3Vs
ZCBsZWF2ZSBzcGFjZSBmb3IKKyAqICg2NCAtIHNpemVvZih2dGFibGUgcG9pbnRlcikgLSAyKSAv
IFVfU0laRU9GX1VDSEFSID0gKDY0IC0gOCAtIDIpIC8gMiA9IDI3CisgKiBjaGFyMTZfdHMgc3Rv
cmVkIGluc2lkZSB0aGUgb2JqZWN0LgorICoKKyAqIFRoZSBtaW5pbXVtIG9iamVjdCBzaXplIG9u
IGEgNjQtYml0IG1hY2hpbmUgd291bGQgYmUKKyAqIDQgKiBzaXplb2YocG9pbnRlcikgPSA0ICog
OCA9IDMyIGJ5dGVzLAorICogYW5kIHRoZSBpbnRlcm5hbCBidWZmZXIgd291bGQgaG9sZCB1cCB0
byAxMSBjaGFyMTZfdHMgaW4gdGhhdCBjYXNlLgorICoKKyAqIEBzZWUgVTE2X01BWF9MRU5HVEgK
KyAqIEBzdGFibGUgSUNVIDU2CisgKi8KKyNpZm5kZWYgVU5JU1RSX09CSkVDVF9TSVpFCisjIGRl
ZmluZSBVTklTVFJfT0JKRUNUX1NJWkUgNjQKKyNlbmRpZgorCiAvKioKICAqIFVuaWNvZGVTdHJp
bmcgaXMgYSBzdHJpbmcgY2xhc3MgdGhhdCBzdG9yZXMgVW5pY29kZSBjaGFyYWN0ZXJzIGRpcmVj
dGx5IGFuZCBwcm92aWRlcwotICogc2ltaWxhciBmdW5jdGlvbmFsaXR5IGFzIHRoZSBKYXZhIFN0
cmluZyBhbmQgU3RyaW5nQnVmZmVyIGNsYXNzZXMuCisgKiBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkg
YXMgdGhlIEphdmEgU3RyaW5nIGFuZCBTdHJpbmdCdWZmZXIvU3RyaW5nQnVpbGRlciBjbGFzc2Vz
LgogICogSXQgaXMgYSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWJzdHJhY3QgY2xh
c3MgUmVwbGFjZWFibGUgKGZvciB0cmFuc2xpdGVyYXRpb24pLgogICoKKyAqIEEgVW5pY29kZVN0
cmluZyBtYXkgYWxzbyAiYWxpYXMiIGFuIGV4dGVybmFsIGFycmF5IG9mIGNoYXJhY3RlcnMKKyAq
ICh0aGF0IGlzLCBwb2ludCB0byBpdCwgcmF0aGVyIHRoYW4gb3duIHRoZSBhcnJheSkKKyAqIHdo
b3NlIGxpZmV0aW1lIG11c3QgdGhlbiBhdCBsZWFzdCBtYXRjaCB0aGUgbGlmZXRpbWUgb2YgdGhl
IGFsaWFzaW5nIG9iamVjdC4KKyAqIFRoaXMgYWxpYXNpbmcgbWF5IGJlIHByZXNlcnZlZCB3aGVu
IHJldHVybmluZyBhIFVuaWNvZGVTdHJpbmcgYnkgdmFsdWUsCisgKiBkZXBlbmRpbmcgb24gdGhl
IGNvbXBpbGVyIGFuZCB0aGUgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24sCisgKiB2aWEgUmV0dXJu
IFZhbHVlIE9wdGltaXphdGlvbiAoUlZPKSBvciB0aGUgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9y
LgorICogKEhvd2V2ZXIsIHRoZSBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IgZG9lcyBub3QgcHJl
c2VydmUgYWxpYXNpbmcuKQorICogRm9yIGRldGFpbHMgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBz
dG9yYWdlIG1vZGVscyBhdCB0aGUgZW5kIG9mIHRoZSBjbGFzcyBBUEkgZG9jcworICogYW5kIGlu
IHRoZSBVc2VyIEd1aWRlIGNoYXB0ZXIgbGlua2VkIGZyb20gdGhlcmUuCisgKgogICogVGhlIFVu
aWNvZGVTdHJpbmcgY2xhc3MgaXMgbm90IHN1aXRhYmxlIGZvciBzdWJjbGFzc2luZy4KICAqCiAg
KiA8cD5Gb3IgYW4gb3ZlcnZpZXcgb2YgVW5pY29kZSBzdHJpbmdzIGluIEMgYW5kIEMrKyBzZWUg
dGhlCi0gKiA8YSBocmVmPSJodHRwOi8vaWN1LXByb2plY3Qub3JnL3VzZXJndWlkZS9zdHJpbmdz
Lmh0bWwiPlVzZXIgR3VpZGUgU3RyaW5ncyBjaGFwdGVyPC9hPi48L3A+CisgKiA8YSBocmVmPSJo
dHRwOi8vdXNlcmd1aWRlLmljdS1wcm9qZWN0Lm9yZy9zdHJpbmdzI1RPQy1TdHJpbmdzLWluLUMt
Qy0iPlVzZXIgR3VpZGUgU3RyaW5ncyBjaGFwdGVyPC9hPi48L3A+CiAgKgogICogPHA+SW4gSUNV
LCBhIFVuaWNvZGUgc3RyaW5nIGNvbnNpc3RzIG9mIDE2LWJpdCBVbmljb2RlIDxlbT5jb2RlIHVu
aXRzPC9lbT4uCiAgKiBBIFVuaWNvZGUgY2hhcmFjdGVyIG1heSBiZSBzdG9yZWQgd2l0aCBlaXRo
ZXIgb25lIGNvZGUgdW5pdAogICogKHRoZSBtb3N0IGNvbW1vbiBjYXNlKSBvciB3aXRoIGEgbWF0
Y2hlZCBwYWlyIG9mIHNwZWNpYWwgY29kZSB1bml0cwotICogKCJzdXJyb2dhdGVzIikuIFRoZSBk
YXRhIHR5cGUgZm9yIGNvZGUgdW5pdHMgaXMgVUNoYXIuIAorICogKCJzdXJyb2dhdGVzIikuIFRo
ZSBkYXRhIHR5cGUgZm9yIGNvZGUgdW5pdHMgaXMgY2hhcjE2X3QuCiAgKiBGb3Igc2luZ2xlLWNo
YXJhY3RlciBoYW5kbGluZywgYSBVbmljb2RlIGNoYXJhY3RlciBjb2RlIDxlbT5wb2ludDwvZW0+
IGlzIGEgdmFsdWUKICAqIGluIHRoZSByYW5nZSAwLi4weDEwZmZmZi4gSUNVIHVzZXMgdGhlIFVD
aGFyMzIgdHlwZSBmb3IgY29kZSBwb2ludHMuPC9wPgogICoKQEAgLTIwMiw3ICsyNDMsNyBAQCBj
bGFzcyBVbmljb2RlU3RyaW5nQXBwZW5kYWJsZTsgIC8vIHVuaWNvZGUvYXBwZW5kYWJsZS5oCiAg
KiB0aGFuIG90aGVyIElDVSBBUElzLiBJbiBwYXJ0aWN1bGFyOgogICogLSBJZiBpbmRleGVzIGFy
ZSBvdXQgb2YgYm91bmRzIGZvciBhIFVuaWNvZGVTdHJpbmcgb2JqZWN0CiAgKiAgICg8MCBvciA+
bGVuZ3RoKCkpIHRoZW4gdGhleSBhcmUgInBpbm5lZCIgdG8gdGhlIG5lYXJlc3QgYm91bmRhcnku
Ci0gKiAtIElmIHByaW1pdGl2ZSBzdHJpbmcgcG9pbnRlciB2YWx1ZXMgKGUuZy4sIGNvbnN0IFVD
aGFyICogb3IgY2hhciAqKQorICogLSBJZiBwcmltaXRpdmUgc3RyaW5nIHBvaW50ZXIgdmFsdWVz
IChlLmcuLCBjb25zdCBjaGFyMTZfdCAqIG9yIGNoYXIgKikKICAqICAgZm9yIGlucHV0IHN0cmlu
Z3MgYXJlIE5VTEwsIHRoZW4gdGhvc2UgaW5wdXQgc3RyaW5nIHBhcmFtZXRlcnMgYXJlIHRyZWF0
ZWQKICAqICAgYXMgaWYgdGhleSBwb2ludGVkIHRvIGFuIGVtcHR5IHN0cmluZy4KICAqICAgSG93
ZXZlciwgdGhpcyBpcyA8ZW0+bm90PC9lbT4gdGhlIGNhc2UgZm9yIGNoYXIgKiBwYXJhbWV0ZXJz
IGZvciBjaGFyc2V0IG5hbWVzCkBAIC0yMzYsNyArMjc3LDcgQEAgY2xhc3MgVW5pY29kZVN0cmlu
Z0FwcGVuZGFibGU7ICAvLyB1bmljb2RlL2FwcGVuZGFibGUuaAogICogc2lnbmlmaWNhbnQgcGVy
Zm9ybWFuY2UgaW1wcm92ZW1lbnRzLgogICogQWxzbywgdGhlIGludGVybmFsIGJ1ZmZlciBpcyBh
Y2Nlc3NpYmxlIHZpYSBzcGVjaWFsIGZ1bmN0aW9ucy4KICAqIEZvciBkZXRhaWxzIHNlZSB0aGUK
LSAqIDxhIGhyZWY9Imh0dHA6Ly9pY3UtcHJvamVjdC5vcmcvdXNlcmd1aWRlL3N0cmluZ3MuaHRt
bCI+VXNlciBHdWlkZSBTdHJpbmdzIGNoYXB0ZXI8L2E+LjwvcD4KKyAqIDxhIGhyZWY9Imh0dHA6
Ly91c2VyZ3VpZGUuaWN1LXByb2plY3Qub3JnL3N0cmluZ3MjVE9DLU1heGltaXppbmctUGVyZm9y
bWFuY2Utd2l0aC10aGUtVW5pY29kZVN0cmluZy1TdG9yYWdlLU1vZGVsIj5Vc2VyIEd1aWRlIFN0
cmluZ3MgY2hhcHRlcjwvYT4uPC9wPgogICoKICAqIEBzZWUgdXRmLmgKICAqIEBzZWUgQ2hhcmFj
dGVySXRlcmF0b3IKQEAgLTM4OSw3ICs0MzAsNyBAQCBwdWJsaWM6CiAgICAqIGluIDxjb2RlPnNy
Y0NoYXJzPC9jb2RlPi4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbmxpbmUgaW50
OF90IGNvbXBhcmUoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICBpbmxpbmUgaW50OF90IGNvbXBh
cmUoQ29uc3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkg
Y29uc3Q7CiAKICAgLyoqCkBAIC00MDgsNyArNDQ5LDcgQEAgcHVibGljOgogICAgKi8KICAgaW5s
aW5lIGludDhfdCBjb21wYXJlKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICBpbnQzMl90IGxlbmd0
aCwKLSAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycykgY29uc3Q7CisgICAgICAgICBjb25z
dCBjaGFyMTZfdCAqc3JjQ2hhcnMpIGNvbnN0OwogCiAgIC8qKgogICAgKiBDb21wYXJlIHRoZSBj
aGFyYWN0ZXJzIGJpdHdpc2UgaW4gdGhlIHJhbmdlCkBAIC00MjksNyArNDcwLDcgQEAgcHVibGlj
OgogICAgKi8KICAgaW5saW5lIGludDhfdCBjb21wYXJlKGludDMyX3Qgc3RhcnQsCiAgICAgICAg
ICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAg
ICAgIGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQs
CiAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7CiAKQEAgLTU0Myw3ICs1ODQsNyBA
QCBwdWJsaWM6CiAgICAqIGluIGNvZGUgcG9pbnQgb3JkZXIKICAgICogQHN0YWJsZSBJQ1UgMi4w
CiAgICAqLwotICBpbmxpbmUgaW50OF90IGNvbXBhcmVDb2RlUG9pbnRPcmRlcihjb25zdCBVQ2hh
ciAqc3JjQ2hhcnMsCisgIGlubGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQb2ludE9yZGVyKENvbnN0
Q2hhcjE2UHRyIHNyY0NoYXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7CiAKICAgLyoqCkBAIC01NjcsNyArNjA4LDcgQEAg
cHVibGljOgogICAgKi8KICAgaW5saW5lIGludDhfdCBjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50
MzJfdCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVD
aGFyICpzcmNDaGFycykgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycykgY29uc3Q7CiAKICAgLyoqCiAgICAqIENvbXBh
cmUgdHdvIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgpAQCAtNTkyLDcgKzYz
Myw3IEBAIHB1YmxpYzoKICAgICovCiAgIGlubGluZSBpbnQ4X3QgY29tcGFyZUNvZGVQb2ludE9y
ZGVyKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDMyX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OwogCkBAIC03MTYsNyArNzU3LDcg
QEAgcHVibGljOgogICAgKiBAcmV0dXJuIEEgbmVnYXRpdmUsIHplcm8sIG9yIHBvc2l0aXZlIGlu
dGVnZXIgaW5kaWNhdGluZyB0aGUgY29tcGFyaXNvbiByZXN1bHQuCiAgICAqIEBzdGFibGUgSUNV
IDIuMAogICAgKi8KLSAgaW5saW5lIGludDhfdCBjYXNlQ29tcGFyZShjb25zdCBVQ2hhciAqc3Jj
Q2hhcnMsCisgIGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoQ29uc3RDaGFyMTZQdHIgc3JjQ2hh
cnMsCiAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKICAgICAgICAgIHVpbnQzMl90IG9wdGlv
bnMpIGNvbnN0OwogCkBAIC03NDIsNyArNzgzLDcgQEAgcHVibGljOgogICAgKi8KICAgaW5saW5l
IGludDhfdCBjYXNlQ29tcGFyZShpbnQzMl90IHN0YXJ0LAogICAgICAgICAgaW50MzJfdCBsZW5n
dGgsCi0gICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICBjb25zdCBjaGFy
MTZfdCAqc3JjQ2hhcnMsCiAgICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdDsKIAogICAv
KioKQEAgLTc2OSw3ICs4MTAsNyBAQCBwdWJsaWM6CiAgICAqLwogICBpbmxpbmUgaW50OF90IGNh
c2VDb21wYXJlKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKLSAgICAg
ICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgIGNvbnN0IGNoYXIxNl90ICpzcmND
aGFycywKICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICBpbnQzMl90IHNyY0xl
bmd0aCwKICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0OwpAQCAtODM0LDcgKzg3NSw3
IEBAIHB1YmxpYzoKICAgICogRkFMU0Ugb3RoZXJ3aXNlCiAgICAqIEBzdGFibGUgSUNVIDIuMAog
ICAgKi8KLSAgaW5saW5lIFVCb29sIHN0YXJ0c1dpdGgoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAor
ICBpbmxpbmUgVUJvb2wgc3RhcnRzV2l0aChDb25zdENoYXIxNlB0ciBzcmNDaGFycywKICAgICAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsKIAogICAvKioKQEAgLTg0Niw3ICs4ODcs
NyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gVFJVRSBpZiB0aGlzIGVuZHMgd2l0aCB0aGUgY2hh
cmFjdGVycyBpbiA8VFQ+c3JjQ2hhcnM8L1RUPiwgRkFMU0Ugb3RoZXJ3aXNlCiAgICAqIEBzdGFi
bGUgSUNVIDIuMAogICAgKi8KLSAgaW5saW5lIFVCb29sIHN0YXJ0c1dpdGgoY29uc3QgVUNoYXIg
KnNyY0NoYXJzLAorICBpbmxpbmUgVUJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyMTZfdCAqc3Jj
Q2hhcnMsCiAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAogICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpIGNvbnN0OwogCkBAIC04ODEsNyArOTIyLDcgQEAgcHVibGljOgogICAgKiBG
QUxTRSBvdGhlcndpc2UKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbmxpbmUgVUJv
b2wgZW5kc1dpdGgoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICBpbmxpbmUgVUJvb2wgZW5kc1dp
dGgoQ29uc3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgp
IGNvbnN0OwogCiAgIC8qKgpAQCAtODk0LDcgKzkzNSw3IEBAIHB1YmxpYzoKICAgICogRkFMU0Ug
b3RoZXJ3aXNlCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgaW5saW5lIFVCb29sIGVu
ZHNXaXRoKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgaW5saW5lIFVCb29sIGVuZHNXaXRoKGNv
bnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAogICAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsKIApAQCAtOTcxLDcgKzEwMTIsNyBAQCBw
dWJsaWM6CiAgICAqIG9yIC0xIGlmIG5vdCBmb3VuZC4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAg
ICAqLwotICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAg
aW5saW5lIGludDMyX3QgaW5kZXhPZihjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAgICAgICAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBj
b25zdDsKIApAQCAtOTg3LDcgKzEwMjgsNyBAQCBwdWJsaWM6CiAgICAqIG9yIC0xIGlmIG5vdCBm
b3VuZC4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbmxpbmUgaW50MzJfdCBpbmRl
eE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihDb25z
dENoYXIxNlB0ciBzcmNDaGFycywKICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCiAg
ICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3Ro
KSBjb25zdDsKQEAgLTEwMDgsNyArMTA0OSw3IEBAIHB1YmxpYzoKICAgICogb3IgLTEgaWYgbm90
IGZvdW5kLgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIGludDMyX3QgaW5kZXhPZihj
b25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgIGludDMyX3QgaW5kZXhPZihjb25zdCBjaGFyMTZfdCAq
c3JjQ2hhcnMsCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICAgICAg
IGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LApAQCAtMTAy
MSw3ICsxMDYyLDcgQEAgcHVibGljOgogICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlz
IG9mIDxUVD5jPC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KICAgICogQHN0YWJsZSBJQ1UgMi4w
CiAgICAqLwotICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKFVDaGFyIGMpIGNvbnN0OworICBpbmxp
bmUgaW50MzJfdCBpbmRleE9mKGNoYXIxNl90IGMpIGNvbnN0OwogCiAgIC8qKgogICAgKiBMb2Nh
dGUgaW4gdGhpcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY29kZSBwb2ludCA8VFQ+Yzwv
VFQ+LApAQCAtMTA0MSw3ICsxMDgyLDcgQEAgcHVibGljOgogICAgKiBAcmV0dXJuIFRoZSBvZmZz
ZXQgaW50byB0aGlzIG9mIDxUVD5jPC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KICAgICogQHN0
YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKFVDaGFyIGMsCisg
IGlubGluZSBpbnQzMl90IGluZGV4T2YoY2hhcjE2X3QgYywKICAgICAgICAgICAgICAgaW50MzJf
dCBzdGFydCkgY29uc3Q7CiAKICAgLyoqCkBAIC0xMDY2LDcgKzExMDcsNyBAQCBwdWJsaWM6CiAg
ICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYg
bm90IGZvdW5kLgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBpbnQzMl90
IGluZGV4T2YoVUNoYXIgYywKKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihjaGFyMTZfdCBjLAog
ICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAogICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0
aCkgY29uc3Q7CiAKQEAgLTExNTQsNyArMTE5NSw3IEBAIHB1YmxpYzoKICAgICogb3IgLTEgaWYg
bm90IGZvdW5kLgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBpbnQzMl90
IGxhc3RJbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgaW5saW5lIGludDMyX3QgbGFz
dEluZGV4T2YoY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAgICAgICAgICBpbnQzMl90
IHNyY0xlbmd0aCwKICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3Q7CiAKQEAgLTEx
NzAsNyArMTIxMSw3IEBAIHB1YmxpYzoKICAgICogb3IgLTEgaWYgbm90IGZvdW5kLgogICAgKiBA
c3RhYmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9mKGNvbnN0
IFVDaGFyICpzcmNDaGFycywKKyAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2YoQ29uc3RDaGFy
MTZQdHIgc3JjQ2hhcnMsCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAg
ICAgICAgICBpbnQzMl90IHN0YXJ0LAogICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCkgY29u
c3Q7CkBAIC0xMTkxLDcgKzEyMzIsNyBAQCBwdWJsaWM6CiAgICAqIG9yIC0xIGlmIG5vdCBmb3Vu
ZC4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbnQzMl90IGxhc3RJbmRleE9mKGNv
bnN0IFVDaGFyICpzcmNDaGFycywKKyAgaW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBjaGFyMTZf
dCAqc3JjQ2hhcnMsCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICAg
ICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LApAQCAt
MTIwNCw3ICsxMjQ1LDcgQEAgcHVibGljOgogICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0
aGlzIG9mIDxUVD5jPC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KICAgICogQHN0YWJsZSBJQ1Ug
Mi4wCiAgICAqLwotICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihVQ2hhciBjKSBjb25zdDsK
KyAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2YoY2hhcjE2X3QgYykgY29uc3Q7CiAKICAgLyoq
CiAgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGNvZGUgcG9p
bnQgPFRUPmM8L1RUPiwKQEAgLTEyMjQsNyArMTI2NSw3IEBAIHB1YmxpYzoKICAgICogQHJldHVy
biBUaGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQu
CiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4
T2YoVUNoYXIgYywKKyAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2YoY2hhcjE2X3QgYywKICAg
ICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3Q7CiAKICAgLyoqCkBAIC0xMjQ5LDcgKzEy
OTAsNyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRU
PmM8L1RUPiwgb3IgLTEgaWYgbm90IGZvdW5kLgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICov
Ci0gIGlubGluZSBpbnQzMl90IGxhc3RJbmRleE9mKFVDaGFyIGMsCisgIGlubGluZSBpbnQzMl90
IGxhc3RJbmRleE9mKGNoYXIxNl90IGMsCiAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCiAg
ICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKIApAQCAtMTI3OSw3ICsxMzIwLDcg
QEAgcHVibGljOgogICAgKiAgICAgICAgIG9yIDB4ZmZmZiBpZiB0aGUgb2Zmc2V0IGlzIG5vdCB2
YWxpZCBmb3IgdGhpcyBzdHJpbmcKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbmxp
bmUgVUNoYXIgY2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKyAgaW5saW5lIGNoYXIxNl90
IGNoYXJBdChpbnQzMl90IG9mZnNldCkgY29uc3Q7CiAKICAgLyoqCiAgICAqIFJldHVybiB0aGUg
Y29kZSB1bml0IGF0IG9mZnNldCA8dHQ+b2Zmc2V0PC90dD4uCkBAIC0xMjg4LDcgKzEzMjksNyBA
QCBwdWJsaWM6CiAgICAqIEByZXR1cm4gdGhlIGNvZGUgdW5pdCBhdCBvZmZzZXQgPHR0Pm9mZnNl
dDwvdHQ+CiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgaW5saW5lIFVDaGFyIG9wZXJh
dG9yW10gKGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKyAgaW5saW5lIGNoYXIxNl90IG9wZXJhdG9y
W10gKGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKIAogICAvKioKICAgICogUmV0dXJuIHRoZSBjb2Rl
IHBvaW50IHRoYXQgY29udGFpbnMgdGhlIGNvZGUgdW5pdApAQCAtMTQwOSw3ICsxNDUwLDcgQEAg
cHVibGljOgogICAgKi8KICAgaW5saW5lIHZvaWQgZXh0cmFjdChpbnQzMl90IHN0YXJ0LAogICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgICAgVUNoYXIgKmRzdCwKKyAgICAgICAg
ICAgQ2hhcjE2UHRyIGRzdCwKICAgICAgICAgICAgaW50MzJfdCBkc3RTdGFydCA9IDApIGNvbnN0
OwogCiAgIC8qKgpAQCAtMTQyOCwxMyArMTQ2OSwxMyBAQCBwdWJsaWM6CiAgICAqIHRoZW4gZXh0
cmFjdCgpIHdpbGwgbm90IGNvcHkgdGhlIGNvbnRlbnRzLgogICAgKgogICAgKiBAcGFyYW0gZGVz
dCBEZXN0aW5hdGlvbiBzdHJpbmcgYnVmZmVyLgotICAgKiBAcGFyYW0gZGVzdENhcGFjaXR5IE51
bWJlciBvZiBVQ2hhcnMgYXZhaWxhYmxlIGF0IGRlc3QuCisgICAqIEBwYXJhbSBkZXN0Q2FwYWNp
dHkgTnVtYmVyIG9mIGNoYXIxNl90cyBhdmFpbGFibGUgYXQgZGVzdC4KICAgICogQHBhcmFtIGVy
cm9yQ29kZSBJQ1UgZXJyb3IgY29kZS4KICAgICogQHJldHVybiBsZW5ndGgoKQogICAgKiBAc3Rh
YmxlIElDVSAyLjAKICAgICovCiAgIGludDMyX3QKLSAgZXh0cmFjdChVQ2hhciAqZGVzdCwgaW50
MzJfdCBkZXN0Q2FwYWNpdHksCisgIGV4dHJhY3QoQ2hhcjE2UHRyIGRlc3QsIGludDMyX3QgZGVz
dENhcGFjaXR5LAogICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3Q7CiAKICAg
LyoqCkBAIC0xNDY0LDcgKzE1MDUsNyBAQCBwdWJsaWM6CiAgICAqLwogICBpbmxpbmUgdm9pZCBl
eHRyYWN0QmV0d2VlbihpbnQzMl90IHN0YXJ0LAogICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0
LAotICAgICAgICAgICAgICBVQ2hhciAqZHN0LAorICAgICAgICAgICAgICBjaGFyMTZfdCAqZHN0
LAogICAgICAgICAgICAgICBpbnQzMl90IGRzdFN0YXJ0ID0gMCkgY29uc3Q7CiAKICAgLyoqCkBA
IC0xNDgxLDEyICsxNTIyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgVW5pY29kZVN0cmlu
ZyYgdGFyZ2V0KSBjb25zdDsKIAogICAvKioKLSAgICogQ29weSB0aGUgY2hhcmFjdGVycyBpbiB0
aGUgcmFuZ2UgCi0gICAqIFs8dHQ+c3RhcnQ8L1RUPiwgPHR0PnN0YXJ0ICsgbGVuZ3RoPC9UVD4p
IGludG8gYW4gYXJyYXkgb2YgY2hhcmFjdGVycy4KKyAgICogQ29weSB0aGUgY2hhcmFjdGVycyBp
biB0aGUgcmFuZ2UKKyAgICogWzx0dD5zdGFydDwvVFQ+LCA8dHQ+c3RhcnQgKyBzdGFydExlbmd0
aDwvVFQ+KSBpbnRvIGFuIGFycmF5IG9mIGNoYXJhY3RlcnMuCiAgICAqIEFsbCBjaGFyYWN0ZXJz
IG11c3QgYmUgaW52YXJpYW50IChzZWUgdXR5cGVzLmgpLgogICAgKiBVc2UgVVNfSU5WIGFzIHRo
ZSBsYXN0LCBzaWduYXR1cmUtZGlzdGluZ3Vpc2hpbmcgcGFyYW1ldGVyLgogICAgKgotICAgKiBU
aGlzIGZ1bmN0aW9uIGRvZXMgbm90IHdyaXRlIGFueSBtb3JlIHRoYW4gPGNvZGU+dGFyZ2V0TGVu
Z3RoPC9jb2RlPgorICAgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHdyaXRlIGFueSBtb3JlIHRo
YW4gPGNvZGU+dGFyZ2V0Q2FwYWNpdHk8L2NvZGU+CiAgICAqIGNoYXJhY3RlcnMgYnV0IHJldHVy
bnMgdGhlIGxlbmd0aCBvZiB0aGUgZW50aXJlIG91dHB1dCBzdHJpbmcKICAgICogc28gdGhhdCBv
bmUgY2FuIGFsbG9jYXRlIGEgbGFyZ2VyIGJ1ZmZlciBhbmQgY2FsbCB0aGUgZnVuY3Rpb24gYWdh
aW4KICAgICogaWYgbmVjZXNzYXJ5LgpAQCAtMTY2NSw4ICsxNzA2LDYgQEAgcHVibGljOgogICAg
Ki8KICAgdm9pZCB0b1VURjgoQnl0ZVNpbmsgJnNpbmspIGNvbnN0OwogCi0jaWYgVV9IQVZFX1NU
RF9TVFJJTkcKLQogICAvKioKICAgICogQ29udmVydCB0aGUgVW5pY29kZVN0cmluZyB0byBVVEYt
OCBhbmQgYXBwZW5kIHRoZSByZXN1bHQKICAgICogdG8gYSBzdGFuZGFyZCBzdHJpbmcuCkBAIC0x
NjgxLDEzICsxNzIwLDExIEBAIHB1YmxpYzoKICAgICovCiAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0
cmluZ0NsYXNzPgogICBTdHJpbmdDbGFzcyAmdG9VVEY4U3RyaW5nKFN0cmluZ0NsYXNzICZyZXN1
bHQpIGNvbnN0IHsKLSAgICBTdHJpbmdCeXRlU2luazxTdHJpbmdDbGFzcz4gc2JzKCZyZXN1bHQp
OworICAgIFN0cmluZ0J5dGVTaW5rPFN0cmluZ0NsYXNzPiBzYnMoJnJlc3VsdCwgbGVuZ3RoKCkp
OwogICAgIHRvVVRGOChzYnMpOwogICAgIHJldHVybiByZXN1bHQ7CiAgIH0KIAotI2VuZGlmCi0K
ICAgLyoqCiAgICAqIENvbnZlcnQgdGhlIFVuaWNvZGVTdHJpbmcgdG8gVVRGLTMyLgogICAgKiBV
bnBhaXJlZCBzdXJyb2dhdGVzIGFyZSByZXBsYWNlZCB3aXRoIFUrRkZGRC4KQEAgLTE3MDksNyAr
MTc0Niw3IEBAIHB1YmxpYzoKIAogICAvKioKICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhl
IFVuaWNvZGVTdHJpbmcgb2JqZWN0LgotICAgKiBUaGUgbGVuZ3RoIGlzIHRoZSBudW1iZXIgb2Yg
VUNoYXIgY29kZSB1bml0cyBhcmUgaW4gdGhlIFVuaWNvZGVTdHJpbmcuCisgICAqIFRoZSBsZW5n
dGggaXMgdGhlIG51bWJlciBvZiBjaGFyMTZfdCBjb2RlIHVuaXRzIGFyZSBpbiB0aGUgVW5pY29k
ZVN0cmluZy4KICAgICogSWYgeW91IHdhbnQgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cywgcGxl
YXNlIHVzZSBjb3VudENoYXIzMigpLgogICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIFVu
aWNvZGVTdHJpbmcgb2JqZWN0CiAgICAqIEBzZWUgY291bnRDaGFyMzIKQEAgLTE3MTgsMTQgKzE3
NTUsMTQgQEAgcHVibGljOgogICBpbmxpbmUgaW50MzJfdCBsZW5ndGgodm9pZCkgY29uc3Q7CiAK
ICAgLyoqCi0gICAqIENvdW50IFVuaWNvZGUgY29kZSBwb2ludHMgaW4gdGhlIGxlbmd0aCBVQ2hh
ciBjb2RlIHVuaXRzIG9mIHRoZSBzdHJpbmcuCi0gICAqIEEgY29kZSBwb2ludCBtYXkgb2NjdXB5
IGVpdGhlciBvbmUgb3IgdHdvIFVDaGFyIGNvZGUgdW5pdHMuCisgICAqIENvdW50IFVuaWNvZGUg
Y29kZSBwb2ludHMgaW4gdGhlIGxlbmd0aCBjaGFyMTZfdCBjb2RlIHVuaXRzIG9mIHRoZSBzdHJp
bmcuCisgICAqIEEgY29kZSBwb2ludCBtYXkgb2NjdXB5IGVpdGhlciBvbmUgb3IgdHdvIGNoYXIx
Nl90IGNvZGUgdW5pdHMuCiAgICAqIENvdW50aW5nIGNvZGUgcG9pbnRzIGludm9sdmVzIHJlYWRp
bmcgYWxsIGNvZGUgdW5pdHMuCiAgICAqCiAgICAqIFRoaXMgZnVuY3Rpb25zIGlzIGJhc2ljYWxs
eSB0aGUgaW52ZXJzZSBvZiBtb3ZlSW5kZXgzMigpLgogICAgKgogICAgKiBAcGFyYW0gc3RhcnQg
dGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjb2RlIHVuaXQgdG8gY2hlY2sKLSAgICogQHBhcmFtIGxl
bmd0aCB0aGUgbnVtYmVyIG9mIFVDaGFyIGNvZGUgdW5pdHMgdG8gY2hlY2sKKyAgICogQHBhcmFt
IGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXIxNl90IGNvZGUgdW5pdHMgdG8gY2hlY2sKICAgICog
QHJldHVybiB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSBzcGVjaWZpZWQgY29kZSB1
bml0cwogICAgKiBAc2VlIGxlbmd0aAogICAgKiBAc3RhYmxlIElDVSAyLjAKQEAgLTE3MzQsNyAr
MTc3MSw3IEBAIHB1YmxpYzoKICAgY291bnRDaGFyMzIoaW50MzJfdCBzdGFydD0wLCBpbnQzMl90
IGxlbmd0aD1JTlQzMl9NQVgpIGNvbnN0OwogCiAgIC8qKgotICAgKiBDaGVjayBpZiB0aGUgbGVu
Z3RoIFVDaGFyIGNvZGUgdW5pdHMgb2YgdGhlIHN0cmluZworICAgKiBDaGVjayBpZiB0aGUgbGVu
Z3RoIGNoYXIxNl90IGNvZGUgdW5pdHMgb2YgdGhlIHN0cmluZwogICAgKiBjb250YWluIG1vcmUg
VW5pY29kZSBjb2RlIHBvaW50cyB0aGFuIGEgY2VydGFpbiBudW1iZXIuCiAgICAqIFRoaXMgaXMg
bW9yZSBlZmZpY2llbnQgdGhhbiBjb3VudGluZyBhbGwgY29kZSBwb2ludHMgaW4gdGhpcyBwYXJ0
IG9mIHRoZSBzdHJpbmcKICAgICogYW5kIGNvbXBhcmluZyB0aGF0IG51bWJlciB3aXRoIGEgdGhy
ZXNob2xkLgpAQCAtMTc0MiwxMCArMTc3OSwxMCBAQCBwdWJsaWM6CiAgICAqIGZhbGxzIHdpdGhp
biBhIGNlcnRhaW4gcmFuZ2UsIGFuZAogICAgKiBuZXZlciBuZWVkcyB0byBjb3VudCBtb3JlIHRo
YW4gJ251bWJlcisxJyBjb2RlIHBvaW50cy4KICAgICogTG9naWNhbGx5IGVxdWl2YWxlbnQgdG8g
KGNvdW50Q2hhcjMyKHN0YXJ0LCBsZW5ndGgpPm51bWJlcikuCi0gICAqIEEgVW5pY29kZSBjb2Rl
IHBvaW50IG1heSBvY2N1cHkgZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1bml0cy4KKyAg
ICogQSBVbmljb2RlIGNvZGUgcG9pbnQgbWF5IG9jY3VweSBlaXRoZXIgb25lIG9yIHR3byBjaGFy
MTZfdCBjb2RlIHVuaXRzLgogICAgKgogICAgKiBAcGFyYW0gc3RhcnQgdGhlIGluZGV4IG9mIHRo
ZSBmaXJzdCBjb2RlIHVuaXQgdG8gY2hlY2sgKDAgZm9yIHRoZSBlbnRpcmUgc3RyaW5nKQotICAg
KiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgVUNoYXIgY29kZSB1bml0cyB0byBjaGVjawor
ICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcjE2X3QgY29kZSB1bml0cyB0byBj
aGVjawogICAgKiAgICAgICAgICAgICAgICh1c2UgSU5UMzJfTUFYIGZvciB0aGUgZW50aXJlIHN0
cmluZzsgcmVtZW1iZXIgdGhhdCBzdGFydC9sZW5ndGgKICAgICogICAgICAgICAgICAgICAgdmFs
dWVzIGFyZSBwaW5uZWQpCiAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBvZiBjb2RlIHBv
aW50cyBpbiB0aGUgKHN1YilzdHJpbmcgaXMgY29tcGFyZWQgYWdhaW5zdApAQCAtMTc3MSw3ICsx
ODA4LDcgQEAgcHVibGljOgogICAgKiBUaGlzIGlzIHVzZWZ1bCB0b2dldGhlciB3aXRoIHRoZSBn
ZXRCdWZmZXIgZnVuY3Rpb25zLgogICAgKiBTZWUgdGhlcmUgZm9yIGRldGFpbHMuCiAgICAqCi0g
ICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBVQ2hhcnMgYXZhaWxhYmxlIGluIHRoZSBpbnRlcm5h
bCBidWZmZXIKKyAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXIxNl90cyBhdmFpbGFibGUg
aW4gdGhlIGludGVybmFsIGJ1ZmZlcgogICAgKiBAc2VlIGdldEJ1ZmZlcgogICAgKiBAc3RhYmxl
IElDVSAyLjAKICAgICovCkBAIC0xODEwLDkgKzE4NDcsMjAgQEAgcHVibGljOgogICAvKioKICAg
ICogQXNzaWdubWVudCBvcGVyYXRvci4gIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyBV
bmljb2RlU3RyaW5nCiAgICAqIHdpdGggdGhlIGNoYXJhY3RlcnMgZnJvbSA8VFQ+c3JjVGV4dDwv
VFQ+LgorICAgKgorICAgKiBTdGFydGluZyB3aXRoIElDVSAyLjQsIHRoZSBhc3NpZ25tZW50IG9w
ZXJhdG9yIGFuZCB0aGUgY29weSBjb25zdHJ1Y3RvcgorICAgKiBhbGxvY2F0ZSBhIG5ldyBidWZm
ZXIgYW5kIGNvcHkgdGhlIGJ1ZmZlciBjb250ZW50cyBldmVuIGZvciByZWFkb25seSBhbGlhc2Vz
LgorICAgKiBCeSBjb250cmFzdCwgdGhlIGZhc3RDb3B5RnJvbSgpIGZ1bmN0aW9uIGltcGxlbWVu
dHMgdGhlIG9sZCwKKyAgICogbW9yZSBlZmZpY2llbnQgYnV0IGxlc3Mgc2FmZSBiZWhhdmlvcgor
ICAgKiBvZiBtYWtpbmcgdGhpcyBzdHJpbmcgYWxzbyBhIHJlYWRvbmx5IGFsaWFzIHRvIHRoZSBz
YW1lIGJ1ZmZlci4KKyAgICoKKyAgICogSWYgdGhlIHNvdXJjZSBvYmplY3QgaGFzIGFuICJvcGVu
IiBidWZmZXIgZnJvbSBnZXRCdWZmZXIobWluQ2FwYWNpdHkpLAorICAgKiB0aGVuIHRoZSBjb3B5
IGlzIGFuIGVtcHR5IHN0cmluZy4KKyAgICoKICAgICogQHBhcmFtIHNyY1RleHQgVGhlIHRleHQg
Y29udGFpbmluZyB0aGUgY2hhcmFjdGVycyB0byByZXBsYWNlCiAgICAqIEByZXR1cm4gYSByZWZl
cmVuY2UgdG8gdGhpcwogICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQHNlZSBmYXN0Q29weUZy
b20KICAgICovCiAgIFVuaWNvZGVTdHJpbmcgJm9wZXJhdG9yPShjb25zdCBVbmljb2RlU3RyaW5n
ICZzcmNUZXh0KTsKIApAQCAtMTgzNCwxMiArMTg4Miw1OCBAQCBwdWJsaWM6CiAgICAqIGluY2x1
ZGluZyBpdHMgY29udGVudHMsIGZvciBleGFtcGxlIGZvciBzdHJpbmdzIGZyb20gcmVzb3VyY2Ug
YnVuZGxlcwogICAgKiBvciBhbGlhc2VzIHRvIHN0cmluZyBjb25zdGFudHMuCiAgICAqCisgICAq
IElmIHRoZSBzb3VyY2Ugb2JqZWN0IGhhcyBhbiAib3BlbiIgYnVmZmVyIGZyb20gZ2V0QnVmZmVy
KG1pbkNhcGFjaXR5KSwKKyAgICogdGhlbiB0aGUgY29weSBpcyBhbiBlbXB0eSBzdHJpbmcuCisg
ICAqCiAgICAqIEBwYXJhbSBzcmMgVGhlIHRleHQgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyB0
byByZXBsYWNlLgogICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKICAgICogQHN0YWJs
ZSBJQ1UgMi40CiAgICAqLwogICBVbmljb2RlU3RyaW5nICZmYXN0Q29weUZyb20oY29uc3QgVW5p
Y29kZVN0cmluZyAmc3JjKTsKIAorICAvKioKKyAgICogTW92ZSBhc3NpZ25tZW50IG9wZXJhdG9y
LCBtaWdodCBsZWF2ZSBzcmMgaW4gYm9ndXMgc3RhdGUuCisgICAqIFRoaXMgc3RyaW5nIHdpbGwg
aGF2ZSB0aGUgc2FtZSBjb250ZW50cyBhbmQgc3RhdGUgdGhhdCB0aGUgc291cmNlIHN0cmluZyBo
YWQuCisgICAqIFRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgKnRoaXMgYW5kIHNyYyBhcmUg
dGhlIHNhbWUgb2JqZWN0LgorICAgKiBAcGFyYW0gc3JjIHNvdXJjZSBzdHJpbmcKKyAgICogQHJl
dHVybiAqdGhpcworICAgKiBAc3RhYmxlIElDVSA1NgorICAgKi8KKyAgVW5pY29kZVN0cmluZyAm
b3BlcmF0b3I9KFVuaWNvZGVTdHJpbmcgJiZzcmMpIFVfTk9FWENFUFQgeworICAgIHJldHVybiBt
b3ZlRnJvbShzcmMpOworICB9CisKKyAgLy8gZG8gbm90IHVzZSAjaWZuZGVmIFVfSElERV9EUkFG
VF9BUEkgZm9yIG1vdmVGcm9tLCBuZWVkZWQgYnkgbm9uLWRyYWZ0IEFQSQorICAvKioKKyAgICog
TW92ZSBhc3NpZ25tZW50LCBtaWdodCBsZWF2ZSBzcmMgaW4gYm9ndXMgc3RhdGUuCisgICAqIFRo
aXMgc3RyaW5nIHdpbGwgaGF2ZSB0aGUgc2FtZSBjb250ZW50cyBhbmQgc3RhdGUgdGhhdCB0aGUg
c291cmNlIHN0cmluZyBoYWQuCisgICAqIFRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgKnRo
aXMgYW5kIHNyYyBhcmUgdGhlIHNhbWUgb2JqZWN0LgorICAgKgorICAgKiBDYW4gYmUgY2FsbGVk
IGV4cGxpY2l0bHksIGRvZXMgbm90IG5lZWQgQysrMTEgc3VwcG9ydC4KKyAgICogQHBhcmFtIHNy
YyBzb3VyY2Ugc3RyaW5nCisgICAqIEByZXR1cm4gKnRoaXMKKyAgICogQGRyYWZ0IElDVSA1Ngor
ICAgKi8KKyAgVW5pY29kZVN0cmluZyAmbW92ZUZyb20oVW5pY29kZVN0cmluZyAmc3JjKSBVX05P
RVhDRVBUOworCisgIC8qKgorICAgKiBTd2FwIHN0cmluZ3MuCisgICAqIEBwYXJhbSBvdGhlciBv
dGhlciBzdHJpbmcKKyAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICovCisgIHZvaWQgc3dhcChVbmlj
b2RlU3RyaW5nICZvdGhlcikgVV9OT0VYQ0VQVDsKKworICAvKioKKyAgICogTm9uLW1lbWJlciBV
bmljb2RlU3RyaW5nIHN3YXAgZnVuY3Rpb24uCisgICAqIEBwYXJhbSBzMSB3aWxsIGdldCBzMidz
IGNvbnRlbnRzIGFuZCBzdGF0ZQorICAgKiBAcGFyYW0gczIgd2lsbCBnZXQgczEncyBjb250ZW50
cyBhbmQgc3RhdGUKKyAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICovCisgIGZyaWVuZCBVX0NPTU1P
Tl9BUEkgaW5saW5lIHZvaWQgVV9FWFBPUlQyCisgIHN3YXAoVW5pY29kZVN0cmluZyAmczEsIFVu
aWNvZGVTdHJpbmcgJnMyKSBVX05PRVhDRVBUIHsKKyAgICBzMS5zd2FwKHMyKTsKKyAgfQorCiAg
IC8qKgogICAgKiBBc3NpZ25tZW50IG9wZXJhdG9yLiAgUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBp
biB0aGlzIFVuaWNvZGVTdHJpbmcKICAgICogd2l0aCB0aGUgY29kZSB1bml0IDxUVD5jaDwvVFQ+
LgpAQCAtMTg0Nyw3ICsxOTQxLDcgQEAgcHVibGljOgogICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNl
IHRvIHRoaXMKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbmxpbmUgVW5pY29kZVN0
cmluZyYgb3BlcmF0b3I9IChVQ2hhciBjaCk7CisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBvcGVy
YXRvcj0gKGNoYXIxNl90IGNoKTsKIAogICAvKioKICAgICogQXNzaWdubWVudCBvcGVyYXRvci4g
IFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyBVbmljb2RlU3RyaW5nCkBAIC0xOTA3LDcg
KzIwMDEsNyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcwogICAg
KiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhj
b25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBzZXRUbyhjb25z
dCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7
CiAKICAgLyoqCkBAIC0xOTE4LDcgKzIwMTIsNyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gYSBy
ZWZlcmVuY2UgdG8gdGhpcwogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIFVuaWNvZGVT
dHJpbmcmIHNldFRvKFVDaGFyIHNyY0NoYXIpOworICBVbmljb2RlU3RyaW5nJiBzZXRUbyhjaGFy
MTZfdCBzcmNDaGFyKTsKIAogICAvKioKICAgICogU2V0IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBV
bmljb2RlU3RyaW5nIG9iamVjdCB0byB0aGUgY29kZSBwb2ludApAQCAtMTkzMSw3ICsyMDI1LDcg
QEAgcHVibGljOgogICBVbmljb2RlU3RyaW5nJiBzZXRUbyhVQ2hhcjMyIHNyY0NoYXIpOwogCiAg
IC8qKgotICAgKiBBbGlhc2luZyBzZXRUbygpIGZ1bmN0aW9uLCBhbmFsb2dvdXMgdG8gdGhlIHJl
YWRvbmx5LWFsaWFzaW5nIFVDaGFyKiBjb25zdHJ1Y3Rvci4KKyAgICogQWxpYXNpbmcgc2V0VG8o
KSBmdW5jdGlvbiwgYW5hbG9nb3VzIHRvIHRoZSByZWFkb25seS1hbGlhc2luZyBjaGFyMTZfdCog
Y29uc3RydWN0b3IuCiAgICAqIFRoZSB0ZXh0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIFVuaWNvZGVT
dHJpbmcgb2JqZWN0LCBidXQKICAgICogaXQgd2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUg
VW5pY29kZVN0cmluZyBpcyBkZXN0cm95ZWQuCiAgICAqIFRoaXMgaGFzIGNvcHktb24td3JpdGUg
c2VtYW50aWNzOgpAQCAtMTk1NCwxMSArMjA0OCwxMSBAQCBwdWJsaWM6CiAgICAqIEBzdGFibGUg
SUNVIDIuMAogICAgKi8KICAgVW5pY29kZVN0cmluZyAmc2V0VG8oVUJvb2wgaXNUZXJtaW5hdGVk
LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqdGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgQ29uc3RDaGFyMTZQdHIgdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCB0ZXh0TGVuZ3RoKTsKIAogICAvKioKLSAgICogQWxpYXNpbmcgc2V0VG8oKSBmdW5j
dGlvbiwgYW5hbG9nb3VzIHRvIHRoZSB3cml0YWJsZS1hbGlhc2luZyBVQ2hhciogY29uc3RydWN0
b3IuCisgICAqIEFsaWFzaW5nIHNldFRvKCkgZnVuY3Rpb24sIGFuYWxvZ291cyB0byB0aGUgd3Jp
dGFibGUtYWxpYXNpbmcgY2hhcjE2X3QqIGNvbnN0cnVjdG9yLgogICAgKiBUaGUgdGV4dCB3aWxs
IGJlIHVzZWQgZm9yIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCwgYnV0CiAgICAqIGl0IHdpbGwg
bm90IGJlIHJlbGVhc2VkIHdoZW4gdGhlIFVuaWNvZGVTdHJpbmcgaXMgZGVzdHJveWVkLgogICAg
KiBUaGlzIGhhcyB3cml0ZS10aHJvdWdoIHNlbWFudGljczoKQEAgLTE5NjcsMTYgKzIwNjEsMTYg
QEAgcHVibGljOgogICAgKiBhIG5ldyBidWZmZXIgd2lsbCBiZSBhbGxvY2F0ZWQgYW5kIHRoZSBj
b250ZW50cyBjb3BpZWQgYXMgd2l0aCByZWd1bGFybHkKICAgICogY29uc3RydWN0ZWQgc3RyaW5n
cy4KICAgICogSW4gYW4gYXNzaWdubWVudCB0byBhbm90aGVyIFVuaWNvZGVTdHJpbmcsIHRoZSBi
dWZmZXIgd2lsbCBiZSBjb3BpZWQuCi0gICAqIFRoZSBleHRyYWN0KFVDaGFyICpkc3QpIGZ1bmN0
aW9uIGRldGVjdHMgd2hldGhlciB0aGUgZHN0IHBvaW50ZXIgaXMgdGhlIHNhbWUKKyAgICogVGhl
IGV4dHJhY3QoQ2hhcjE2UHRyIGRzdCkgZnVuY3Rpb24gZGV0ZWN0cyB3aGV0aGVyIHRoZSBkc3Qg
cG9pbnRlciBpcyB0aGUgc2FtZQogICAgKiBhcyB0aGUgc3RyaW5nIGJ1ZmZlciBpdHNlbGYgYW5k
IHdpbGwgaW4gdGhpcyBjYXNlIG5vdCBjb3B5IHRoZSBjb250ZW50cy4KICAgICoKICAgICogQHBh
cmFtIGJ1ZmZlciBUaGUgY2hhcmFjdGVycyB0byBhbGlhcyBmb3IgdGhlIFVuaWNvZGVTdHJpbmcu
CiAgICAqIEBwYXJhbSBidWZmTGVuZ3RoIFRoZSBudW1iZXIgb2YgVW5pY29kZSBjaGFyYWN0ZXJz
IGluIDxjb2RlPmJ1ZmZlcjwvY29kZT4gdG8gYWxpYXMuCi0gICAqIEBwYXJhbSBidWZmQ2FwYWNp
dHkgVGhlIHNpemUgb2YgPGNvZGU+YnVmZmVyPC9jb2RlPiBpbiBVQ2hhcnMuCisgICAqIEBwYXJh
bSBidWZmQ2FwYWNpdHkgVGhlIHNpemUgb2YgPGNvZGU+YnVmZmVyPC9jb2RlPiBpbiBjaGFyMTZf
dHMuCiAgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcwogICAgKiBAc3RhYmxlIElDVSAy
LjAKICAgICovCi0gIFVuaWNvZGVTdHJpbmcgJnNldFRvKFVDaGFyICpidWZmZXIsCisgIFVuaWNv
ZGVTdHJpbmcgJnNldFRvKGNoYXIxNl90ICpidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
IGludDMyX3QgYnVmZkxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBidWZm
Q2FwYWNpdHkpOwogCkBAIC0yMDEyLDcgKzIxMDYsNyBAQCBwdWJsaWM6CiAgICAqICAgcy50cnVu
Y2F0ZSgwKTsgICAgICAgIC8vIHNldCB0byBhbiBlbXB0eSBzdHJpbmcgKGNvbXBsZXRlIHRydW5j
YXRpb24pLCBvcgogICAgKiAgIHM9VW5pY29kZVN0cmluZygpOyAgICAvLyBhc3NpZ24gYW4gZW1w
dHkgc3RyaW5nLCBvcgogICAgKiAgIHMuc2V0VG8oKFVDaGFyMzIpLTEpOyAvLyBzZXQgdG8gYSBw
c2V1ZG8gY29kZSBwb2ludCB0aGF0IGlzIG91dCBvZiByYW5nZSwgb3IKLSAgICogICBzdGF0aWMg
Y29uc3QgVUNoYXIgbnVsPTA7CisgICAqICAgc3RhdGljIGNvbnN0IGNoYXIxNl90IG51bD0wOwog
ICAgKiAgIHMuc2V0VG8oJm51bCwgMCk7ICAgICAvLyBzZXQgdG8gYW4gZW1wdHkgQyBVbmljb2Rl
IHN0cmluZwogICAgKiB9CiAgICAqIFxlbmRjb2RlCkBAIC0yMDMwLDcgKzIxMjQsNyBAQCBwdWJs
aWM6CiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KICAgVW5pY29kZVN0cmluZyYgc2V0Q2hh
ckF0KGludDMyX3Qgb2Zmc2V0LAotICAgICAgICAgICAgICAgVUNoYXIgY2gpOworICAgICAgICAg
ICAgICAgY2hhcjE2X3QgY2gpOwogCiAKICAgLyogQXBwZW5kIG9wZXJhdGlvbnMgKi8KQEAgLTIw
NDIsNyArMjEzNiw3IEBAIHB1YmxpYzoKICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlz
CiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSBpbmxpbmUgIFVuaWNvZGVTdHJpbmcmIG9w
ZXJhdG9yKz0gKFVDaGFyIGNoKTsKKyBpbmxpbmUgIFVuaWNvZGVTdHJpbmcmIG9wZXJhdG9yKz0g
KGNoYXIxNl90IGNoKTsKIAogICAvKioKICAgICogQXBwZW5kIG9wZXJhdG9yLiBBcHBlbmQgdGhl
IGNvZGUgcG9pbnQgPFRUPmNoPC9UVD4gdG8gdGhlIFVuaWNvZGVTdHJpbmcKQEAgLTIxMDIsNyAr
MjE5Niw3IEBAIHB1YmxpYzoKICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCiAgICAq
IEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChj
b25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgIGlubGluZSBVbmljb2RlU3RyaW5nJiBhcHBlbmQoY29u
c3QgY2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKICAg
ICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKIApAQCAtMjExNSw3ICsyMjA5LDcgQEAgcHVi
bGljOgogICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKICAgICogQHN0YWJsZSBJQ1Ug
Mi4wCiAgICAqLwotICBpbmxpbmUgVW5pY29kZVN0cmluZyYgYXBwZW5kKGNvbnN0IFVDaGFyICpz
cmNDaGFycywKKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChDb25zdENoYXIxNlB0ciBz
cmNDaGFycywKICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKIAogICAvKioKQEAgLTIx
MjQsNyArMjIxOCw3IEBAIHB1YmxpYzoKICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlz
CiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFw
cGVuZChVQ2hhciBzcmNDaGFyKTsKKyAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGFwcGVuZChjaGFy
MTZfdCBzcmNDaGFyKTsKIAogICAvKioKICAgICogQXBwZW5kIHRoZSBjb2RlIHBvaW50IDxUVD5z
cmNDaGFyPC9UVD4gdG8gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgpAQCAtMjE4MCw3ICsyMjc0
LDcgQEAgcHVibGljOgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCiAgIGlubGluZSBVbmlj
b2RlU3RyaW5nJiBpbnNlcnQoaW50MzJfdCBzdGFydCwKLSAgICAgICAgICAgIGNvbnN0IFVDaGFy
ICpzcmNDaGFycywKKyAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAg
ICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7
CiAKQEAgLTIxOTQsNyArMjI4OCw3IEBAIHB1YmxpYzoKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAg
ICAqLwogICBpbmxpbmUgVW5pY29kZVN0cmluZyYgaW5zZXJ0KGludDMyX3Qgc3RhcnQsCi0gICAg
ICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICBDb25zdENoYXIxNlB0
ciBzcmNDaGFycywKICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKIAogICAvKioKQEAg
LTIyMDYsNyArMjMwMCw3IEBAIHB1YmxpYzoKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwog
ICBpbmxpbmUgVW5pY29kZVN0cmluZyYgaW5zZXJ0KGludDMyX3Qgc3RhcnQsCi0gICAgICAgICAg
ICBVQ2hhciBzcmNDaGFyKTsKKyAgICAgICAgICAgIGNoYXIxNl90IHNyY0NoYXIpOwogCiAgIC8q
KgogICAgKiBJbnNlcnQgdGhlIGNvZGUgcG9pbnQgPFRUPnNyY0NoYXI8L1RUPiBpbnRvIHRoZSBV
bmljb2RlU3RyaW5nIG9iamVjdCBhdApAQCAtMjI4MCw3ICsyMzc0LDcgQEAgcHVibGljOgogICAg
Ki8KICAgVW5pY29kZVN0cmluZyYgcmVwbGFjZShpbnQzMl90IHN0YXJ0LAogICAgICAgICAgICAg
IGludDMyX3QgbGVuZ3RoLAotICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAg
ICAgICAgICAgICBjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAgICAgICAgICAgICAgaW50MzJf
dCBzcmNTdGFydCwKICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCk7CiAKQEAgLTIyOTgs
NyArMjM5Miw3IEBAIHB1YmxpYzoKICAgICovCiAgIGlubGluZSBVbmljb2RlU3RyaW5nJiByZXBs
YWNlKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCi0gICAgICAg
ICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgIENvbnN0Q2hhcjE2UHRy
IHNyY0NoYXJzLAogICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKIAogICAvKioKQEAg
LTIzMTQsNyArMjQwOCw3IEBAIHB1YmxpYzoKICAgICovCiAgIGlubGluZSBVbmljb2RlU3RyaW5n
JiByZXBsYWNlKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCi0g
ICAgICAgICAgICAgVUNoYXIgc3JjQ2hhcik7CisgICAgICAgICAgICAgY2hhcjE2X3Qgc3JjQ2hh
cik7CiAKICAgLyoqCiAgICAqIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCkBA
IC0yNTEyLDcgKzI2MDYsNyBAQCBwdWJsaWM6CiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8K
ICAgVUJvb2wgcGFkTGVhZGluZyhpbnQzMl90IHRhcmdldExlbmd0aCwKLSAgICAgICAgICAgICAg
ICAgICAgVUNoYXIgcGFkQ2hhciA9IDB4MDAyMCk7CisgICAgICAgICAgICAgICAgICAgIGNoYXIx
Nl90IHBhZENoYXIgPSAweDAwMjApOwogCiAgIC8qKgogICAgKiBQYWQgdGhlIGVuZCBvZiB0aGlz
IFVuaWNvZGVTdHJpbmcgd2l0aCB0aGUgY2hhcmFjdGVyIDxUVD5wYWRDaGFyPC9UVD4uCkBAIC0y
NTI2LDcgKzI2MjAsNyBAQCBwdWJsaWM6CiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KICAg
VUJvb2wgcGFkVHJhaWxpbmcoaW50MzJfdCB0YXJnZXRMZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICBVQ2hhciBwYWRDaGFyID0gMHgwMDIwKTsKKyAgICAgICAgICAgICAgICAgICAgIGNoYXIx
Nl90IHBhZENoYXIgPSAweDAwMjApOwogCiAgIC8qKgogICAgKiBUcnVuY2F0ZSB0aGlzIFVuaWNv
ZGVTdHJpbmcgdG8gdGhlIDxUVD50YXJnZXRMZW5ndGg8L1RUPi4KQEAgLTI2ODEsMTEgKzI3NzUs
MTEgQEAgcHVibGljOgogICAgKiAgICAgICAgICAgICAgICAgIGJyZWFrIGl0ZXJhdG9yIGlzIG9w
ZW5lZC4KICAgICogICAgICAgICAgICAgICAgICBPdGhlcndpc2UgdGhlIHByb3ZpZGVkIGl0ZXJh
dG9yIGlzIHNldCB0byB0aGUgc3RyaW5nJ3MgdGV4dC4KICAgICogQHBhcmFtIGxvY2FsZSAgICBU
aGUgbG9jYWxlIHRvIGNvbnNpZGVyLgorICAgKiBAcGFyYW0gb3B0aW9ucyAgIE9wdGlvbnMgYml0
IHNldCwgdXN1YWxseSAwLiBTZWUgVV9USVRMRUNBU0VfTk9fTE9XRVJDQVNFLAorICAgKiAgICAg
ICAgICAgICAgICAgIFVfVElUTEVDQVNFX05PX0JSRUFLX0FESlVTVE1FTlQsIFVfVElUTEVDQVNF
X0FESlVTVF9UT19DQVNFRCwKKyAgICogICAgICAgICAgICAgICAgICBVX1RJVExFQ0FTRV9XSE9M
RV9TVFJJTkcsIFVfVElUTEVDQVNFX1NFTlRFTkNFUy4KICAgICogQHBhcmFtIG9wdGlvbnMgT3B0
aW9ucyBiaXQgc2V0LCBzZWUgdWNhc2VtYXBfb3BlbigpLgogICAgKiBAcmV0dXJuIEEgcmVmZXJl
bmNlIHRvIHRoaXMuCi0gICAqIEBzZWUgVV9USVRMRUNBU0VfTk9fTE9XRVJDQVNFCi0gICAqIEBz
ZWUgVV9USVRMRUNBU0VfTk9fQlJFQUtfQURKVVNUTUVOVAotICAgKiBAc2VlIHVjYXNlbWFwX29w
ZW4KICAgICogQHN0YWJsZSBJQ1UgMy44CiAgICAqLwogICBVbmljb2RlU3RyaW5nICZ0b1RpdGxl
KEJyZWFrSXRlcmF0b3IgKnRpdGxlSXRlciwgY29uc3QgTG9jYWxlICZsb2NhbGUsIHVpbnQzMl90
IG9wdGlvbnMpOwpAQCAtMjcxMyw3ICsyODA3LDcgQEAgcHVibGljOgogCiAgIC8qKgogICAgKiBH
ZXQgYSByZWFkL3dyaXRlIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlci4KLSAgICogVGhl
IGJ1ZmZlciBpcyBndWFyYW50ZWVkIHRvIGJlIGxhcmdlIGVub3VnaCBmb3IgYXQgbGVhc3QgbWlu
Q2FwYWNpdHkgVUNoYXJzLAorICAgKiBUaGUgYnVmZmVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgbGFy
Z2UgZW5vdWdoIGZvciBhdCBsZWFzdCBtaW5DYXBhY2l0eSBjaGFyMTZfdHMsCiAgICAqIHdyaXRh
YmxlLCBhbmQgaXMgc3RpbGwgb3duZWQgYnkgdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgogICAg
KiBDYWxscyB0byBnZXRCdWZmZXIobWluQ2FwYWNpdHkpIG11c3Qgbm90IGJlIG5lc3RlZCwgYW5k
CiAgICAqIG11c3QgYmUgbWF0Y2hlZCB3aXRoIGNhbGxzIHRvIHJlbGVhc2VCdWZmZXIobmV3TGVu
Z3RoKS4KQEAgLTI3NDQsMTcgKzI4MzgsMTcgQEAgcHVibGljOgogICAgKiAtIFlvdSBtdXN0IGNh
bGwgcmVsZWFzZUJ1ZmZlcihuZXdMZW5ndGgpIGJlZm9yZSBhbmQgaW4gb3JkZXIgdG8KICAgICog
ICByZXR1cm4gdG8gbm9ybWFsIFVuaWNvZGVTdHJpbmcgb3BlcmF0aW9uLgogICAgKgotICAgKiBA
cGFyYW0gbWluQ2FwYWNpdHkgdGhlIG1pbmltdW0gbnVtYmVyIG9mIFVDaGFycyB0aGF0IGFyZSB0
byBiZSBhdmFpbGFibGUKKyAgICogQHBhcmFtIG1pbkNhcGFjaXR5IHRoZSBtaW5pbXVtIG51bWJl
ciBvZiBjaGFyMTZfdHMgdGhhdCBhcmUgdG8gYmUgYXZhaWxhYmxlCiAgICAqICAgICAgICBpbiB0
aGUgYnVmZmVyLCBzdGFydGluZyBhdCB0aGUgcmV0dXJuZWQgcG9pbnRlcjsKICAgICogICAgICAg
IGRlZmF1bHQgdG8gdGhlIGN1cnJlbnQgc3RyaW5nIGNhcGFjaXR5IGlmIG1pbkNhcGFjaXR5PT0t
MQogICAgKiBAcmV0dXJuIGEgd3JpdGFibGUgcG9pbnRlciB0byB0aGUgaW50ZXJuYWwgc3RyaW5n
IGJ1ZmZlciwKLSAgICogICAgICAgICBvciAwIGlmIGFuIGVycm9yIG9jY3VycyAobmVzdGVkIGNh
bGxzLCBvdXQgb2YgbWVtb3J5KQorICAgKiAgICAgICAgIG9yIG51bGxwdHIgaWYgYW4gZXJyb3Ig
b2NjdXJzIChuZXN0ZWQgY2FsbHMsIG91dCBvZiBtZW1vcnkpCiAgICAqCiAgICAqIEBzZWUgcmVs
ZWFzZUJ1ZmZlcgogICAgKiBAc2VlIGdldFRlcm1pbmF0ZWRCdWZmZXIoKQogICAgKiBAc3RhYmxl
IElDVSAyLjAKICAgICovCi0gIFVDaGFyICpnZXRCdWZmZXIoaW50MzJfdCBtaW5DYXBhY2l0eSk7
CisgIGNoYXIxNl90ICpnZXRCdWZmZXIoaW50MzJfdCBtaW5DYXBhY2l0eSk7CiAKICAgLyoqCiAg
ICAqIFJlbGVhc2UgYSByZWFkL3dyaXRlIGJ1ZmZlciBvbiBhIFVuaWNvZGVTdHJpbmcgb2JqZWN0
IHdpdGggYW4KQEAgLTI4MDIsMTMgKzI4OTYsMTMgQEAgcHVibGljOgogICAgKiBiZSBtb2RpZmll
ZC4KICAgICoKICAgICogQHJldHVybiBhIHJlYWQtb25seSBwb2ludGVyIHRvIHRoZSBpbnRlcm5h
bCBzdHJpbmcgYnVmZmVyLAotICAgKiAgICAgICAgIG9yIDAgaWYgdGhlIHN0cmluZyBpcyBlbXB0
eSBvciBib2d1cworICAgKiAgICAgICAgIG9yIG51bGxwdHIgaWYgdGhlIHN0cmluZyBpcyBlbXB0
eSBvciBib2d1cwogICAgKgogICAgKiBAc2VlIGdldEJ1ZmZlcihpbnQzMl90IG1pbkNhcGFjaXR5
KQogICAgKiBAc2VlIGdldFRlcm1pbmF0ZWRCdWZmZXIoKQogICAgKiBAc3RhYmxlIElDVSAyLjAK
ICAgICovCi0gIGlubGluZSBjb25zdCBVQ2hhciAqZ2V0QnVmZmVyKCkgY29uc3Q7CisgIGlubGlu
ZSBjb25zdCBjaGFyMTZfdCAqZ2V0QnVmZmVyKCkgY29uc3Q7CiAKICAgLyoqCiAgICAqIEdldCBh
IHJlYWQtb25seSBwb2ludGVyIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIsCkBAIC0yODQzLDcgKzI5
MzcsNyBAQCBwdWJsaWM6CiAgICAqIEBzZWUgZ2V0QnVmZmVyKCkKICAgICogQHN0YWJsZSBJQ1Ug
Mi4yCiAgICAqLwotICBjb25zdCBVQ2hhciAqZ2V0VGVybWluYXRlZEJ1ZmZlcigpOworICBjb25z
dCBjaGFyMTZfdCAqZ2V0VGVybWluYXRlZEJ1ZmZlcigpOwogCiAgIC8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQogICAvLyBDb25zdHJ1Y3RvcnMKQEAgLTI4NTUsOCAr
Mjk0OSw4IEBAIHB1YmxpYzoKICAgaW5saW5lIFVuaWNvZGVTdHJpbmcoKTsKIAogICAvKioKLSAg
ICogQ29uc3RydWN0IGEgVW5pY29kZVN0cmluZyB3aXRoIGNhcGFjaXR5IHRvIGhvbGQgPFRUPmNh
cGFjaXR5PC9UVD4gVUNoYXJzCi0gICAqIEBwYXJhbSBjYXBhY2l0eSB0aGUgbnVtYmVyIG9mIFVD
aGFycyB0aGlzIFVuaWNvZGVTdHJpbmcgc2hvdWxkIGhvbGQKKyAgICogQ29uc3RydWN0IGEgVW5p
Y29kZVN0cmluZyB3aXRoIGNhcGFjaXR5IHRvIGhvbGQgPFRUPmNhcGFjaXR5PC9UVD4gY2hhcjE2
X3RzCisgICAqIEBwYXJhbSBjYXBhY2l0eSB0aGUgbnVtYmVyIG9mIGNoYXIxNl90cyB0aGlzIFVu
aWNvZGVTdHJpbmcgc2hvdWxkIGhvbGQKICAgICogYmVmb3JlIGEgcmVzaXplIGlzIG5lY2Vzc2Fy
eTsgaWYgY291bnQgaXMgZ3JlYXRlciB0aGFuIDAgYW5kIGNvdW50CiAgICAqIGNvZGUgcG9pbnRz
IGMgdGFrZSB1cCBtb3JlIHNwYWNlIHRoYW4gY2FwYWNpdHksIHRoZW4gY2FwYWNpdHkgaXMgYWRq
dXN0ZWQKICAgICogYWNjb3JkaW5nbHkuCkBAIC0yODY4LDcgKzI5NjIsNyBAQCBwdWJsaWM6CiAg
IFVuaWNvZGVTdHJpbmcoaW50MzJfdCBjYXBhY2l0eSwgVUNoYXIzMiBjLCBpbnQzMl90IGNvdW50
KTsKIAogICAvKioKLSAgICogU2luZ2xlIFVDaGFyIChjb2RlIHVuaXQpIGNvbnN0cnVjdG9yLgor
ICAgKiBTaW5nbGUgY2hhcjE2X3QgKGNvZGUgdW5pdCkgY29uc3RydWN0b3IuCiAgICAqCiAgICAq
IEl0IGlzIHJlY29tbWVuZGVkIHRvIG1hcmsgdGhpcyBjb25zdHJ1Y3RvciAiZXhwbGljaXQiIGJ5
CiAgICAqIDxjb2RlPi1EVU5JU1RSX0ZST01fQ0hBUl9FWFBMSUNJVD1leHBsaWNpdDwvY29kZT4K
QEAgLTI4NzYsNyArMjk3MCw3IEBAIHB1YmxpYzoKICAgICogQHBhcmFtIGNoIHRoZSBjaGFyYWN0
ZXIgdG8gcGxhY2UgaW4gdGhlIFVuaWNvZGVTdHJpbmcKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAg
ICAqLwotICBVTklTVFJfRlJPTV9DSEFSX0VYUExJQ0lUIFVuaWNvZGVTdHJpbmcoVUNoYXIgY2gp
OworICBVTklTVFJfRlJPTV9DSEFSX0VYUExJQ0lUIFVuaWNvZGVTdHJpbmcoY2hhcjE2X3QgY2gp
OwogCiAgIC8qKgogICAgKiBTaW5nbGUgVUNoYXIzMiAoY29kZSBwb2ludCkgY29uc3RydWN0b3Iu
CkBAIC0yODkwLDcgKzI5ODQsNyBAQCBwdWJsaWM6CiAgIFVOSVNUUl9GUk9NX0NIQVJfRVhQTElD
SVQgVW5pY29kZVN0cmluZyhVQ2hhcjMyIGNoKTsKIAogICAvKioKLSAgICogVUNoYXIqIGNvbnN0
cnVjdG9yLgorICAgKiBjaGFyMTZfdCogY29uc3RydWN0b3IuCiAgICAqCiAgICAqIEl0IGlzIHJl
Y29tbWVuZGVkIHRvIG1hcmsgdGhpcyBjb25zdHJ1Y3RvciAiZXhwbGljaXQiIGJ5CiAgICAqIDxj
b2RlPi1EVU5JU1RSX0ZST01fU1RSSU5HX0VYUExJQ0lUPWV4cGxpY2l0PC9jb2RlPgpAQCAtMjg5
OSwyMCArMjk5MywxMjEgQEAgcHVibGljOgogICAgKiBtdXN0IGJlIE5VTEwgKFUrMDAwMCkgdGVy
bWluYXRlZC4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBVTklTVFJfRlJPTV9TVFJJ
TkdfRVhQTElDSVQgVW5pY29kZVN0cmluZyhjb25zdCBVQ2hhciAqdGV4dCk7CisgIFVOSVNUUl9G
Uk9NX1NUUklOR19FWFBMSUNJVCBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIxNl90ICp0ZXh0KTsK
KworICAvKgorICAgKiBEbyBub3QgdXNlICNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSSBmb3IgdGhl
IGZvbGxvd2luZyBjb25zdHJ1Y3RvciwKKyAgICogaXQgc2hvdWxkIGFsd2F5cyBiZSBhdmFpbGFi
bGUgcmVnYXJkbGVzcyBvZiBVX0hJREVfRFJBRlRfQVBJIHN0YXR1cworICAgKi8KKyNpZiAhVV9D
SEFSMTZfSVNfVFlQRURFRgorICAvKioKKyAgICogdWludDE2X3QgKiBjb25zdHJ1Y3Rvci4KKyAg
ICogRGVsZWdhdGVzIHRvIFVuaWNvZGVTdHJpbmcoY29uc3QgY2hhcjE2X3QgKikuCisgICAqCisg
ICAqIEl0IGlzIHJlY29tbWVuZGVkIHRvIG1hcmsgdGhpcyBjb25zdHJ1Y3RvciAiZXhwbGljaXQi
IGJ5CisgICAqIDxjb2RlPi1EVU5JU1RSX0ZST01fU1RSSU5HX0VYUExJQ0lUPWV4cGxpY2l0PC9j
b2RlPgorICAgKiBvbiB0aGUgY29tcGlsZXIgY29tbWFuZCBsaW5lIG9yIHNpbWlsYXIuCisgICAq
IEBwYXJhbSB0ZXh0IE5VTC10ZXJtaW5hdGVkIFVURi0xNiBzdHJpbmcKKyAgICogQGRyYWZ0IElD
VSA1OQorICAgKi8KKyAgVU5JU1RSX0ZST01fU1RSSU5HX0VYUExJQ0lUIFVuaWNvZGVTdHJpbmco
Y29uc3QgdWludDE2X3QgKnRleHQpIDoKKyAgICAgIFVuaWNvZGVTdHJpbmcoQ29uc3RDaGFyMTZQ
dHIodGV4dCkpIHt9CisjZW5kaWYKKworICAvKgorICAgKiBEbyBub3QgdXNlICNpZm5kZWYgVV9I
SURFX0RSQUZUX0FQSSBmb3IgdGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RvciwKKyAgICogaXQgc2hv
dWxkIGFsd2F5cyBiZSBhdmFpbGFibGUgcmVnYXJkbGVzcyBvZiBVX0hJREVfRFJBRlRfQVBJIHN0
YXR1cworICAgKi8KKyNpZiBVX1NJWkVPRl9XQ0hBUl9UPT0yIHx8IGRlZmluZWQoVV9JTl9ET1hZ
R0VOKQorICAvKioKKyAgICogd2NoYXJfdCAqIGNvbnN0cnVjdG9yLgorICAgKiAoT25seSBkZWZp
bmVkIGlmIFVfU0laRU9GX1dDSEFSX1Q9PTIuKQorICAgKiBEZWxlZ2F0ZXMgdG8gVW5pY29kZVN0
cmluZyhjb25zdCBjaGFyMTZfdCAqKS4KKyAgICoKKyAgICogSXQgaXMgcmVjb21tZW5kZWQgdG8g
bWFyayB0aGlzIGNvbnN0cnVjdG9yICJleHBsaWNpdCIgYnkKKyAgICogPGNvZGU+LURVTklTVFJf
RlJPTV9TVFJJTkdfRVhQTElDSVQ9ZXhwbGljaXQ8L2NvZGU+CisgICAqIG9uIHRoZSBjb21waWxl
ciBjb21tYW5kIGxpbmUgb3Igc2ltaWxhci4KKyAgICogQHBhcmFtIHRleHQgTlVMLXRlcm1pbmF0
ZWQgVVRGLTE2IHN0cmluZworICAgKiBAZHJhZnQgSUNVIDU5CisgICAqLworICBVTklTVFJfRlJP
TV9TVFJJTkdfRVhQTElDSVQgVW5pY29kZVN0cmluZyhjb25zdCB3Y2hhcl90ICp0ZXh0KSA6Cisg
ICAgICBVbmljb2RlU3RyaW5nKENvbnN0Q2hhcjE2UHRyKHRleHQpKSB7fQorI2VuZGlmCiAKKyAg
LyoKKyAgICogRG8gbm90IHVzZSAjaWZuZGVmIFVfSElERV9EUkFGVF9BUEkgZm9yIHRoZSBmb2xs
b3dpbmcgY29uc3RydWN0b3IsCisgICAqIGl0IHNob3VsZCBhbHdheXMgYmUgYXZhaWxhYmxlIHJl
Z2FyZGxlc3Mgb2YgVV9ISURFX0RSQUZUX0FQSSBzdGF0dXMKKyAgICovCiAgIC8qKgotICAgKiBV
Q2hhciogY29uc3RydWN0b3IuCisgICAqIG51bGxwdHJfdCBjb25zdHJ1Y3Rvci4KKyAgICogRWZm
ZWN0aXZlbHkgdGhlIHNhbWUgYXMgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IsIG1ha2VzIGFuIGVt
cHR5IHN0cmluZyBvYmplY3QuCisgICAqCisgICAqIEl0IGlzIHJlY29tbWVuZGVkIHRvIG1hcmsg
dGhpcyBjb25zdHJ1Y3RvciAiZXhwbGljaXQiIGJ5CisgICAqIDxjb2RlPi1EVU5JU1RSX0ZST01f
U1RSSU5HX0VYUExJQ0lUPWV4cGxpY2l0PC9jb2RlPgorICAgKiBvbiB0aGUgY29tcGlsZXIgY29t
bWFuZCBsaW5lIG9yIHNpbWlsYXIuCisgICAqIEBwYXJhbSB0ZXh0IG51bGxwdHIKKyAgICogQGRy
YWZ0IElDVSA1OQorICAgKi8KKyAgVU5JU1RSX0ZST01fU1RSSU5HX0VYUExJQ0lUIGlubGluZSBV
bmljb2RlU3RyaW5nKGNvbnN0IHN0ZDo6bnVsbHB0cl90IHRleHQpOworCisgIC8qKgorICAgKiBj
aGFyMTZfdCogY29uc3RydWN0b3IuCiAgICAqIEBwYXJhbSB0ZXh0IFRoZSBjaGFyYWN0ZXJzIHRv
IHBsYWNlIGluIHRoZSBVbmljb2RlU3RyaW5nLgogICAgKiBAcGFyYW0gdGV4dExlbmd0aCBUaGUg
bnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycyBpbiA8VFQ+dGV4dDwvVFQ+CiAgICAqIHRvIGNv
cHkuCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgVW5pY29kZVN0cmluZyhjb25zdCBV
Q2hhciAqdGV4dCwKKyAgVW5pY29kZVN0cmluZyhjb25zdCBjaGFyMTZfdCAqdGV4dCwKICAgICAg
ICAgaW50MzJfdCB0ZXh0TGVuZ3RoKTsKIAorICAvKgorICAgKiBEbyBub3QgdXNlICNpZm5kZWYg
VV9ISURFX0RSQUZUX0FQSSBmb3IgdGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RvciwKKyAgICogaXQg
c2hvdWxkIGFsd2F5cyBiZSBhdmFpbGFibGUgcmVnYXJkbGVzcyBvZiBVX0hJREVfRFJBRlRfQVBJ
IHN0YXR1cworICAgKi8KKyNpZiAhVV9DSEFSMTZfSVNfVFlQRURFRgogICAvKioKLSAgICogUmVh
ZG9ubHktYWxpYXNpbmcgVUNoYXIqIGNvbnN0cnVjdG9yLgorICAgKiB1aW50MTZfdCAqIGNvbnN0
cnVjdG9yLgorICAgKiBEZWxlZ2F0ZXMgdG8gVW5pY29kZVN0cmluZyhjb25zdCBjaGFyMTZfdCAq
LCBpbnQzMl90KS4KKyAgICogQHBhcmFtIHRleHQgVVRGLTE2IHN0cmluZworICAgKiBAcGFyYW0g
bGVuZ3RoIHN0cmluZyBsZW5ndGgKKyAgICogQGRyYWZ0IElDVSA1OQorICAgKi8KKyAgVW5pY29k
ZVN0cmluZyhjb25zdCB1aW50MTZfdCAqdGV4dCwgaW50MzJfdCBsZW5ndGgpIDoKKyAgICAgIFVu
aWNvZGVTdHJpbmcoQ29uc3RDaGFyMTZQdHIodGV4dCksIGxlbmd0aCkge30KKyNlbmRpZgorCisg
IC8qCisgICAqIERvIG5vdCB1c2UgI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJIGZvciB0aGUgZm9s
bG93aW5nIGNvbnN0cnVjdG9yLAorICAgKiBpdCBzaG91bGQgYWx3YXlzIGJlIGF2YWlsYWJsZSBy
ZWdhcmRsZXNzIG9mIFVfSElERV9EUkFGVF9BUEkgc3RhdHVzCisgICAqLworI2lmIFVfU0laRU9G
X1dDSEFSX1Q9PTIgfHwgZGVmaW5lZChVX0lOX0RPWFlHRU4pCisgIC8qKgorICAgKiB3Y2hhcl90
ICogY29uc3RydWN0b3IuCisgICAqIChPbmx5IGRlZmluZWQgaWYgVV9TSVpFT0ZfV0NIQVJfVD09
Mi4pCisgICAqIERlbGVnYXRlcyB0byBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIxNl90ICosIGlu
dDMyX3QpLgorICAgKiBAcGFyYW0gdGV4dCBOVUwtdGVybWluYXRlZCBVVEYtMTYgc3RyaW5nCisg
ICAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAorICAgKiBAZHJhZnQgSUNVIDU5CisgICAq
LworICBVbmljb2RlU3RyaW5nKGNvbnN0IHdjaGFyX3QgKnRleHQsIGludDMyX3QgbGVuZ3RoKSA6
CisgICAgICBVbmljb2RlU3RyaW5nKENvbnN0Q2hhcjE2UHRyKHRleHQpLCBsZW5ndGgpIHt9Cisj
ZW5kaWYKKworICAvKgorICAgKiBEbyBub3QgdXNlICNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSSBm
b3IgdGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RvciwKKyAgICogaXQgc2hvdWxkIGFsd2F5cyBiZSBh
dmFpbGFibGUgcmVnYXJkbGVzcyBvZiBVX0hJREVfRFJBRlRfQVBJIHN0YXR1cworICAgKi8KKyAg
LyoqCisgICAqIG51bGxwdHJfdCBjb25zdHJ1Y3Rvci4KKyAgICogRWZmZWN0aXZlbHkgdGhlIHNh
bWUgYXMgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IsIG1ha2VzIGFuIGVtcHR5IHN0cmluZyBvYmpl
Y3QuCisgICAqIEBwYXJhbSB0ZXh0IG51bGxwdHIKKyAgICogQHBhcmFtIGxlbmd0aCBpZ25vcmVk
CisgICAqIEBkcmFmdCBJQ1UgNTkKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nKGNvbnN0
IHN0ZDo6bnVsbHB0cl90IHRleHQsIGludDMyX3QgbGVuZ3RoKTsKKworICAvKioKKyAgICogUmVh
ZG9ubHktYWxpYXNpbmcgY2hhcjE2X3QqIGNvbnN0cnVjdG9yLgogICAgKiBUaGUgdGV4dCB3aWxs
IGJlIHVzZWQgZm9yIHRoZSBVbmljb2RlU3RyaW5nIG9iamVjdCwgYnV0CiAgICAqIGl0IHdpbGwg
bm90IGJlIHJlbGVhc2VkIHdoZW4gdGhlIFVuaWNvZGVTdHJpbmcgaXMgZGVzdHJveWVkLgogICAg
KiBUaGlzIGhhcyBjb3B5LW9uLXdyaXRlIHNlbWFudGljczoKQEAgLTI5MzQsMTEgKzMxMjksMTEg
QEAgcHVibGljOgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCiAgIFVuaWNvZGVTdHJpbmco
VUJvb2wgaXNUZXJtaW5hdGVkLAotICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICp0ZXh0LAor
ICAgICAgICAgICAgICAgIENvbnN0Q2hhcjE2UHRyIHRleHQsCiAgICAgICAgICAgICAgICAgaW50
MzJfdCB0ZXh0TGVuZ3RoKTsKIAogICAvKioKLSAgICogV3JpdGFibGUtYWxpYXNpbmcgVUNoYXIq
IGNvbnN0cnVjdG9yLgorICAgKiBXcml0YWJsZS1hbGlhc2luZyBjaGFyMTZfdCogY29uc3RydWN0
b3IuCiAgICAqIFRoZSB0ZXh0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIFVuaWNvZGVTdHJpbmcgb2Jq
ZWN0LCBidXQKICAgICogaXQgd2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUgVW5pY29kZVN0
cmluZyBpcyBkZXN0cm95ZWQuCiAgICAqIFRoaXMgaGFzIHdyaXRlLXRocm91Z2ggc2VtYW50aWNz
OgpAQCAtMjk0NywxNSArMzE0Miw2NCBAQCBwdWJsaWM6CiAgICAqIGEgbmV3IGJ1ZmZlciB3aWxs
IGJlIGFsbG9jYXRlZCBhbmQgdGhlIGNvbnRlbnRzIGNvcGllZCBhcyB3aXRoIHJlZ3VsYXJseQog
ICAgKiBjb25zdHJ1Y3RlZCBzdHJpbmdzLgogICAgKiBJbiBhbiBhc3NpZ25tZW50IHRvIGFub3Ro
ZXIgVW5pY29kZVN0cmluZywgdGhlIGJ1ZmZlciB3aWxsIGJlIGNvcGllZC4KLSAgICogVGhlIGV4
dHJhY3QoVUNoYXIgKmRzdCkgZnVuY3Rpb24gZGV0ZWN0cyB3aGV0aGVyIHRoZSBkc3QgcG9pbnRl
ciBpcyB0aGUgc2FtZQorICAgKiBUaGUgZXh0cmFjdChDaGFyMTZQdHIgZHN0KSBmdW5jdGlvbiBk
ZXRlY3RzIHdoZXRoZXIgdGhlIGRzdCBwb2ludGVyIGlzIHRoZSBzYW1lCiAgICAqIGFzIHRoZSBz
dHJpbmcgYnVmZmVyIGl0c2VsZiBhbmQgd2lsbCBpbiB0aGlzIGNhc2Ugbm90IGNvcHkgdGhlIGNv
bnRlbnRzLgogICAgKgogICAgKiBAcGFyYW0gYnVmZmVyIFRoZSBjaGFyYWN0ZXJzIHRvIGFsaWFz
IGZvciB0aGUgVW5pY29kZVN0cmluZy4KICAgICogQHBhcmFtIGJ1ZmZMZW5ndGggVGhlIG51bWJl
ciBvZiBVbmljb2RlIGNoYXJhY3RlcnMgaW4gPGNvZGU+YnVmZmVyPC9jb2RlPiB0byBhbGlhcy4K
LSAgICogQHBhcmFtIGJ1ZmZDYXBhY2l0eSBUaGUgc2l6ZSBvZiA8Y29kZT5idWZmZXI8L2NvZGU+
IGluIFVDaGFycy4KKyAgICogQHBhcmFtIGJ1ZmZDYXBhY2l0eSBUaGUgc2l6ZSBvZiA8Y29kZT5i
dWZmZXI8L2NvZGU+IGluIGNoYXIxNl90cy4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwot
ICBVbmljb2RlU3RyaW5nKFVDaGFyICpidWZmZXIsIGludDMyX3QgYnVmZkxlbmd0aCwgaW50MzJf
dCBidWZmQ2FwYWNpdHkpOworICBVbmljb2RlU3RyaW5nKGNoYXIxNl90ICpidWZmZXIsIGludDMy
X3QgYnVmZkxlbmd0aCwgaW50MzJfdCBidWZmQ2FwYWNpdHkpOworCisgIC8qCisgICAqIERvIG5v
dCB1c2UgI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJIGZvciB0aGUgZm9sbG93aW5nIGNvbnN0cnVj
dG9yLAorICAgKiBpdCBzaG91bGQgYWx3YXlzIGJlIGF2YWlsYWJsZSByZWdhcmRsZXNzIG9mIFVf
SElERV9EUkFGVF9BUEkgc3RhdHVzCisgICAqLworI2lmICFVX0NIQVIxNl9JU19UWVBFREVGCisg
IC8qKgorICAgKiBXcml0YWJsZS1hbGlhc2luZyB1aW50MTZfdCAqIGNvbnN0cnVjdG9yLgorICAg
KiBEZWxlZ2F0ZXMgdG8gVW5pY29kZVN0cmluZyhjb25zdCBjaGFyMTZfdCAqLCBpbnQzMl90LCBp
bnQzMl90KS4KKyAgICogQHBhcmFtIGJ1ZmZlciB3cml0YWJsZSBidWZmZXIgb2YvZm9yIFVURi0x
NiB0ZXh0CisgICAqIEBwYXJhbSBidWZmTGVuZ3RoIGxlbmd0aCBvZiB0aGUgY3VycmVudCBidWZm
ZXIgY29udGVudHMKKyAgICogQHBhcmFtIGJ1ZmZDYXBhY2l0eSBidWZmZXIgY2FwYWNpdHkKKyAg
ICogQGRyYWZ0IElDVSA1OQorICAgKi8KKyAgVW5pY29kZVN0cmluZyh1aW50MTZfdCAqYnVmZmVy
LCBpbnQzMl90IGJ1ZmZMZW5ndGgsIGludDMyX3QgYnVmZkNhcGFjaXR5KSA6CisgICAgICBVbmlj
b2RlU3RyaW5nKENoYXIxNlB0cihidWZmZXIpLCBidWZmTGVuZ3RoLCBidWZmQ2FwYWNpdHkpIHt9
CisjZW5kaWYKKworICAvKgorICAgKiBEbyBub3QgdXNlICNpZm5kZWYgVV9ISURFX0RSQUZUX0FQ
SSBmb3IgdGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RvciwKKyAgICogaXQgc2hvdWxkIGFsd2F5cyBi
ZSBhdmFpbGFibGUgcmVnYXJkbGVzcyBvZiBVX0hJREVfRFJBRlRfQVBJIHN0YXR1cworICAgKi8K
KyNpZiBVX1NJWkVPRl9XQ0hBUl9UPT0yIHx8IGRlZmluZWQoVV9JTl9ET1hZR0VOKQorICAvKioK
KyAgICogV3JpdGFibGUtYWxpYXNpbmcgd2NoYXJfdCAqIGNvbnN0cnVjdG9yLgorICAgKiAoT25s
eSBkZWZpbmVkIGlmIFVfU0laRU9GX1dDSEFSX1Q9PTIuKQorICAgKiBEZWxlZ2F0ZXMgdG8gVW5p
Y29kZVN0cmluZyhjb25zdCBjaGFyMTZfdCAqLCBpbnQzMl90LCBpbnQzMl90KS4KKyAgICogQHBh
cmFtIGJ1ZmZlciB3cml0YWJsZSBidWZmZXIgb2YvZm9yIFVURi0xNiB0ZXh0CisgICAqIEBwYXJh
bSBidWZmTGVuZ3RoIGxlbmd0aCBvZiB0aGUgY3VycmVudCBidWZmZXIgY29udGVudHMKKyAgICog
QHBhcmFtIGJ1ZmZDYXBhY2l0eSBidWZmZXIgY2FwYWNpdHkKKyAgICogQGRyYWZ0IElDVSA1OQor
ICAgKi8KKyAgVW5pY29kZVN0cmluZyh3Y2hhcl90ICpidWZmZXIsIGludDMyX3QgYnVmZkxlbmd0
aCwgaW50MzJfdCBidWZmQ2FwYWNpdHkpIDoKKyAgICAgIFVuaWNvZGVTdHJpbmcoQ2hhcjE2UHRy
KGJ1ZmZlciksIGJ1ZmZMZW5ndGgsIGJ1ZmZDYXBhY2l0eSkge30KKyNlbmRpZgorCisgIC8qCisg
ICAqIERvIG5vdCB1c2UgI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJIGZvciB0aGUgZm9sbG93aW5n
IGNvbnN0cnVjdG9yLAorICAgKiBpdCBzaG91bGQgYWx3YXlzIGJlIGF2YWlsYWJsZSByZWdhcmRs
ZXNzIG9mIFVfSElERV9EUkFGVF9BUEkgc3RhdHVzCisgICAqLworICAvKioKKyAgICogV3JpdGFi
bGUtYWxpYXNpbmcgbnVsbHB0cl90IGNvbnN0cnVjdG9yLgorICAgKiBFZmZlY3RpdmVseSB0aGUg
c2FtZSBhcyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciwgbWFrZXMgYW4gZW1wdHkgc3RyaW5nIG9i
amVjdC4KKyAgICogQHBhcmFtIGJ1ZmZlciBudWxscHRyCisgICAqIEBwYXJhbSBidWZmTGVuZ3Ro
IGlnbm9yZWQKKyAgICogQHBhcmFtIGJ1ZmZDYXBhY2l0eSBpZ25vcmVkCisgICAqIEBkcmFmdCBJ
Q1UgNTkKKyAgICovCisgIGlubGluZSBVbmljb2RlU3RyaW5nKHN0ZDo6bnVsbHB0cl90IGJ1ZmZl
ciwgaW50MzJfdCBidWZmTGVuZ3RoLCBpbnQzMl90IGJ1ZmZDYXBhY2l0eSk7CiAKICNpZiBVX0NI
QVJTRVRfSVNfVVRGOCB8fCAhVUNPTkZJR19OT19DT05WRVJTSU9OCiAKQEAgLTMwODksMTEgKzMz
MzMsMzAgQEAgcHVibGljOgogCiAgIC8qKgogICAgKiBDb3B5IGNvbnN0cnVjdG9yLgorICAgKgor
ICAgKiBTdGFydGluZyB3aXRoIElDVSAyLjQsIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yIGFuZCB0
aGUgY29weSBjb25zdHJ1Y3RvcgorICAgKiBhbGxvY2F0ZSBhIG5ldyBidWZmZXIgYW5kIGNvcHkg
dGhlIGJ1ZmZlciBjb250ZW50cyBldmVuIGZvciByZWFkb25seSBhbGlhc2VzLgorICAgKiBCeSBj
b250cmFzdCwgdGhlIGZhc3RDb3B5RnJvbSgpIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIG9sZCwK
KyAgICogbW9yZSBlZmZpY2llbnQgYnV0IGxlc3Mgc2FmZSBiZWhhdmlvcgorICAgKiBvZiBtYWtp
bmcgdGhpcyBzdHJpbmcgYWxzbyBhIHJlYWRvbmx5IGFsaWFzIHRvIHRoZSBzYW1lIGJ1ZmZlci4K
KyAgICoKKyAgICogSWYgdGhlIHNvdXJjZSBvYmplY3QgaGFzIGFuICJvcGVuIiBidWZmZXIgZnJv
bSBnZXRCdWZmZXIobWluQ2FwYWNpdHkpLAorICAgKiB0aGVuIHRoZSBjb3B5IGlzIGFuIGVtcHR5
IHN0cmluZy4KKyAgICoKICAgICogQHBhcmFtIHRoYXQgVGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0
IHRvIGNvcHkuCiAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBAc2VlIGZhc3RDb3B5RnJvbQog
ICAgKi8KICAgVW5pY29kZVN0cmluZyhjb25zdCBVbmljb2RlU3RyaW5nJiB0aGF0KTsKIAorICAv
KioKKyAgICogTW92ZSBjb25zdHJ1Y3RvciwgbWlnaHQgbGVhdmUgc3JjIGluIGJvZ3VzIHN0YXRl
LgorICAgKiBUaGlzIHN0cmluZyB3aWxsIGhhdmUgdGhlIHNhbWUgY29udGVudHMgYW5kIHN0YXRl
IHRoYXQgdGhlIHNvdXJjZSBzdHJpbmcgaGFkLgorICAgKiBAcGFyYW0gc3JjIHNvdXJjZSBzdHJp
bmcKKyAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICovCisgIFVuaWNvZGVTdHJpbmcoVW5pY29kZVN0
cmluZyAmJnNyYykgVV9OT0VYQ0VQVDsKKwogICAvKioKICAgICogJ1N1YnN0cmluZycgY29uc3Ry
dWN0b3IgZnJvbSB0YWlsIG9mIHNvdXJjZSBzdHJpbmcuCiAgICAqIEBwYXJhbSBzcmMgVGhlIFVu
aWNvZGVTdHJpbmcgb2JqZWN0IHRvIGNvcHkuCkBAIC0zMTQ3LDcgKzM0MTAsNyBAQCBwdWJsaWM6
CiAgICAqIEBzZWUgdG9VVEY4U3RyaW5nCiAgICAqIEBzdGFibGUgSUNVIDQuMgogICAgKi8KLSAg
c3RhdGljIFVuaWNvZGVTdHJpbmcgZnJvbVVURjgoY29uc3QgU3RyaW5nUGllY2UgJnV0ZjgpOwor
ICBzdGF0aWMgVW5pY29kZVN0cmluZyBmcm9tVVRGOChTdHJpbmdQaWVjZSB1dGY4KTsKIAogICAv
KioKICAgICogQ3JlYXRlIGEgVW5pY29kZVN0cmluZyBmcm9tIGEgVVRGLTMyIHN0cmluZy4KQEAg
LTMyNTEsNyArMzUxNCw3IEBAIHByb3RlY3RlZDoKICAgICogVW5pY29kZVN0cmluZzo6Y2hhckF0
KCkgdG8gYmUgaW5saW5lIGFnYWluIChzZWUgaml0dGVyYnVnIDcwOSkuCiAgICAqIEBzdGFibGUg
SUNVIDIuNAogICAgKi8KLSAgdmlydHVhbCBVQ2hhciBnZXRDaGFyQXQoaW50MzJfdCBvZmZzZXQp
IGNvbnN0OworICB2aXJ0dWFsIGNoYXIxNl90IGdldENoYXJBdChpbnQzMl90IG9mZnNldCkgY29u
c3Q7CiAKICAgLyoqCiAgICAqIFRoZSBjaGFuZ2UgaW4gUmVwbGFjZWFibGUgdG8gdXNlIHZpcnR1
YWwgZ2V0Q2hhcjMyQXQoKSBhbGxvd3MKQEAgLTMyNjIsNyArMzUyNSw3IEBAIHByb3RlY3RlZDoK
IAogcHJpdmF0ZToKICAgLy8gRm9yIGNoYXIqIGNvbnN0cnVjdG9ycy4gQ291bGQgYmUgbWFkZSBw
dWJsaWMuCi0gIFVuaWNvZGVTdHJpbmcgJnNldFRvVVRGOChjb25zdCBTdHJpbmdQaWVjZSAmdXRm
OCk7CisgIFVuaWNvZGVTdHJpbmcgJnNldFRvVVRGOChTdHJpbmdQaWVjZSB1dGY4KTsKICAgLy8g
Rm9yIGV4dHJhY3QoY2hhciopLgogICAvLyBXZSBjb3VsZCBtYWtlIGEgdG9VVEY4KHRhcmdldCwg
Y2FwYWNpdHksIGVycm9yQ29kZSkgcHVibGljIGJ1dCBub3QKICAgLy8gdGhpcyB2ZXJzaW9uOiBO
ZXcgQVBJIHdpbGwgYmUgY2xlYW5lciBpZiB3ZSBtYWtlIGNhbGxlcnMgY3JlYXRlIHN1YnN0cmlu
Z3MKQEAgLTMyODcsNyArMzU1MCw3IEBAIHByaXZhdGU6CiAKICAgaW50OF90IGRvQ29tcGFyZShp
bnQzMl90IHN0YXJ0LAogICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgICAgY29u
c3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICBjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMs
CiAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoKSBjb25zdDsKIApAQCAtMzMwMCw3ICszNTYzLDcgQEAgcHJpdmF0ZToKIAogICBpbnQ4X3Qg
ZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFydCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsKIApAQCAtMzMxNSwxMiArMzU3OCwxMiBA
QCBwcml2YXRlOgogICBpbnQ4X3QKICAgZG9DYXNlQ29tcGFyZShpbnQzMl90IHN0YXJ0LAogICAg
ICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFy
ICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAg
ICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKICAgICAgICAgICAgICAgICBpbnQzMl90
IHNyY0xlbmd0aCwKICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdDsKIAot
ICBpbnQzMl90IGRvSW5kZXhPZihVQ2hhciBjLAorICBpbnQzMl90IGRvSW5kZXhPZihjaGFyMTZf
dCBjLAogICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKICAgICAgICAgICAgIGludDMyX3QgbGVu
Z3RoKSBjb25zdDsKIApAQCAtMzMyOCw3ICszNTkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQz
Ml90IGxlbmd0aCkgY29uc3Q7CiAKLSAgaW50MzJfdCBkb0xhc3RJbmRleE9mKFVDaGFyIGMsCisg
IGludDMyX3QgZG9MYXN0SW5kZXhPZihjaGFyMTZfdCBjLAogICAgICAgICAgICAgICAgIGludDMy
X3Qgc3RhcnQsCiAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0OwogCkBAIC0z
MzM4LDE0ICszNjAxLDE0IEBAIHByaXZhdGU6CiAKICAgdm9pZCBkb0V4dHJhY3QoaW50MzJfdCBz
dGFydCwKICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAotICAgICAgICAgVUNoYXIgKmRzdCwKKyAg
ICAgICAgIGNoYXIxNl90ICpkc3QsCiAgICAgICAgICBpbnQzMl90IGRzdFN0YXJ0KSBjb25zdDsK
IAogICBpbmxpbmUgdm9pZCBkb0V4dHJhY3QoaW50MzJfdCBzdGFydCwKICAgICAgICAgIGludDMy
X3QgbGVuZ3RoLAogICAgICAgICAgVW5pY29kZVN0cmluZyYgdGFyZ2V0KSBjb25zdDsKIAotICBp
bmxpbmUgVUNoYXIgZG9DaGFyQXQoaW50MzJfdCBvZmZzZXQpICBjb25zdDsKKyAgaW5saW5lIGNo
YXIxNl90IGRvQ2hhckF0KGludDMyX3Qgb2Zmc2V0KSAgY29uc3Q7CiAKICAgVW5pY29kZVN0cmlu
ZyYgZG9SZXBsYWNlKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0
aCwKQEAgLTMzNTUsMTAgKzM2MTgsMTMgQEAgcHJpdmF0ZToKIAogICBVbmljb2RlU3RyaW5nJiBk
b1JlcGxhY2UoaW50MzJfdCBzdGFydCwKICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAot
ICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgY29u
c3QgY2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwK
ICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKIAorICBVbmljb2RlU3RyaW5nJiBk
b0FwcGVuZChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmMsIGludDMyX3Qgc3JjU3RhcnQsIGludDMy
X3Qgc3JjTGVuZ3RoKTsKKyAgVW5pY29kZVN0cmluZyYgZG9BcHBlbmQoY29uc3QgY2hhcjE2X3Qg
KnNyY0NoYXJzLCBpbnQzMl90IHNyY1N0YXJ0LCBpbnQzMl90IHNyY0xlbmd0aCk7CisKICAgVW5p
Y29kZVN0cmluZyYgZG9SZXZlcnNlKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBpbnQz
Ml90IGxlbmd0aCk7CiAKQEAgLTMzNjcsOCArMzYzMyw4IEBAIHByaXZhdGU6CiAKICAgLy8gZ2V0
IHBvaW50ZXIgdG8gc3RhcnQgb2YgYXJyYXkKICAgLy8gdGhlc2UgZG8gbm90IGNoZWNrIGZvciBr
T3BlbkdldEJ1ZmZlciwgdW5saWtlIHRoZSBwdWJsaWMgZ2V0QnVmZmVyKCkgZnVuY3Rpb24KLSAg
aW5saW5lIFVDaGFyKiBnZXRBcnJheVN0YXJ0KHZvaWQpOwotICBpbmxpbmUgY29uc3QgVUNoYXIq
IGdldEFycmF5U3RhcnQodm9pZCkgY29uc3Q7CisgIGlubGluZSBjaGFyMTZfdCogZ2V0QXJyYXlT
dGFydCh2b2lkKTsKKyAgaW5saW5lIGNvbnN0IGNoYXIxNl90KiBnZXRBcnJheVN0YXJ0KHZvaWQp
IGNvbnN0OwogCiAgIGlubGluZSBVQm9vbCBoYXNTaG9ydExlbmd0aCgpIGNvbnN0OwogICBpbmxp
bmUgaW50MzJfdCBnZXRTaG9ydExlbmd0aCgpIGNvbnN0OwpAQCAtMzM4NSw3ICszNjUxLDcgQEAg
cHJpdmF0ZToKICAgaW5saW5lIHZvaWQgc2V0U2hvcnRMZW5ndGgoaW50MzJfdCBsZW4pOwogICBp
bmxpbmUgdm9pZCBzZXRMZW5ndGgoaW50MzJfdCBsZW4pOwogICBpbmxpbmUgdm9pZCBzZXRUb0Vt
cHR5KCk7Ci0gIGlubGluZSB2b2lkIHNldEFycmF5KFVDaGFyICphcnJheSwgaW50MzJfdCBsZW4s
IGludDMyX3QgY2FwYWNpdHkpOyAvLyBzZXRzIGxlbmd0aCBidXQgbm90IGZsYWdzCisgIGlubGlu
ZSB2b2lkIHNldEFycmF5KGNoYXIxNl90ICphcnJheSwgaW50MzJfdCBsZW4sIGludDMyX3QgY2Fw
YWNpdHkpOyAvLyBzZXRzIGxlbmd0aCBidXQgbm90IGZsYWdzCiAKICAgLy8gYWxsb2NhdGUgdGhl
IGFycmF5OyByZXN1bHQgbWF5IGJlIHRoZSBzdGFjayBidWZmZXIKICAgLy8gc2V0cyByZWZDb3Vu
dCB0byAxIGlmIGFwcHJvcHJpYXRlCkBAIC0zNDAzLDYgKzM2NjksOSBAQCBwcml2YXRlOgogICAv
LyBpbXBsZW1lbnRzIGFzc2lnbWVudCBvcGVyYXRvciwgY29weSBjb25zdHJ1Y3RvciwgYW5kIGZh
c3RDb3B5RnJvbSgpCiAgIFVuaWNvZGVTdHJpbmcgJmNvcHlGcm9tKGNvbnN0IFVuaWNvZGVTdHJp
bmcgJnNyYywgVUJvb2wgZmFzdENvcHk9RkFMU0UpOwogCisgIC8vIENvcGllcyBqdXN0IHRoZSBm
aWVsZHMgd2l0aG91dCBtZW1vcnkgbWFuYWdlbWVudC4KKyAgdm9pZCBjb3B5RmllbGRzRnJvbShV
bmljb2RlU3RyaW5nICZzcmMsIFVCb29sIHNldFNyY1RvQm9ndXMpIFVfTk9FWENFUFQ7CisKICAg
Ly8gUGluIHN0YXJ0IGFuZCBsaW1pdCB0byBhY2NlcHRhYmxlIHZhbHVlcy4KICAgaW5saW5lIHZv
aWQgcGluSW5kZXgoaW50MzJfdCYgc3RhcnQpIGNvbnN0OwogICBpbmxpbmUgdm9pZCBwaW5JbmRp
Y2VzKGludDMyX3QmIHN0YXJ0LApAQCAtMzQ2NSw3ICszNzM0LDExIEBAIHByaXZhdGU6CiAgICAq
IGFzIGluIHVzdHJfaW1wLmggZm9yIHVzdHJjYXNlX21hcCgpLgogICAgKi8KICAgVW5pY29kZVN0
cmluZyAmCi0gIGNhc2VNYXAoY29uc3QgVUNhc2VNYXAgKmNzbSwgVVN0cmluZ0Nhc2VNYXBwZXIg
KnN0cmluZ0Nhc2VNYXBwZXIpOworICBjYXNlTWFwKGludDMyX3QgY2FzZUxvY2FsZSwgdWludDMy
X3Qgb3B0aW9ucywKKyNpZiAhVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04KKyAgICAgICAgICBC
cmVha0l0ZXJhdG9yICppdGVyLAorI2VuZGlmCisgICAgICAgICAgVVN0cmluZ0Nhc2VNYXBwZXIg
KnN0cmluZ0Nhc2VNYXBwZXIpOwogCiAgIC8vIHJlZiBjb3VudGluZwogICB2b2lkIGFkZFJlZih2
b2lkKTsKQEAgLTM0NzQsMTEgKzM3NDcsMTMgQEAgcHJpdmF0ZToKIAogICAvLyBjb25zdGFudHMK
ICAgZW51bSB7Ci0gICAgLy8gU2V0IHRoZSBzdGFjayBidWZmZXIgc2l6ZSBzbyB0aGF0IHNpemVv
ZihVbmljb2RlU3RyaW5nKSBpcywKLSAgICAvLyBuYXR1cmFsbHkgKHdpdGhvdXQgcGFkZGluZyks
IGEgbXVsdGlwbGUgb2Ygc2l6ZW9mKHBvaW50ZXIpLgotICAgIFVTX1NUQUNLQlVGX1NJWkU9IHNp
emVvZih2b2lkICopPT00ID8gMTMgOiAxNSwgLy8gU2l6ZSBvZiBzdGFjayBidWZmZXIgZm9yIHNo
b3J0IHN0cmluZ3MKKyAgICAvKioKKyAgICAgKiBTaXplIG9mIHN0YWNrIGJ1ZmZlciBmb3Igc2hv
cnQgc3RyaW5ncy4KKyAgICAgKiBNdXN0IGJlIGF0IGxlYXN0IFUxNl9NQVhfTEVOR1RIIGZvciB0
aGUgc2luZ2xlLWNvZGUgcG9pbnQgY29uc3RydWN0b3IgdG8gd29yay4KKyAgICAgKiBAc2VlIFVO
SVNUUl9PQkpFQ1RfU0laRQorICAgICAqLworICAgIFVTX1NUQUNLQlVGX1NJWkU9KGludDMyX3Qp
KFVOSVNUUl9PQkpFQ1RfU0laRS1zaXplb2Yodm9pZCAqKS0yKS9VX1NJWkVPRl9VQ0hBUiwKICAg
ICBrSW52YWxpZFVDaGFyPTB4ZmZmZiwgLy8gVStGRkZGIHJldHVybmVkIGJ5IGNoYXJBdChpbnZh
bGlkIGluZGV4KQotICAgIGtHcm93U2l6ZT0xMjgsIC8vIGdyb3cgc2l6ZSBmb3IgdGhpcyBidWZm
ZXIKICAgICBrSW52YWxpZEhhc2hDb2RlPTAsIC8vIGludmFsaWQgaGFzaCBjb2RlCiAgICAga0Vt
cHR5SGFzaENvZGU9MSwgLy8gaGFzaCBjb2RlIGZvciBlbXB0eSBzdHJpbmcKIApAQCAtMzUwMyw3
ICszNzc4LDYgQEAgcHJpdmF0ZToKICAgICBrV3JpdGFibGVBbGlhcz0wCiAgIH07CiAKLSAgZnJp
ZW5kIGNsYXNzIFN0cmluZ1RocmVhZFRlc3Q7CiAgIGZyaWVuZCBjbGFzcyBVbmljb2RlU3RyaW5n
QXBwZW5kYWJsZTsKIAogICB1bmlvbiBTdGFja0J1ZmZlck9yRmllbGRzOyAgICAgICAgLy8gZm9y
d2FyZCBkZWNsYXJhdGlvbiBuZWNlc3NhcnkgYmVmb3JlIGZyaWVuZCBkZWNsYXJhdGlvbgpAQCAt
MzU0NCw5ICszODE4LDEwIEBAIHByaXZhdGU6CiAgICAqIChQYWRkaW5nIGF0IHRoZSBlbmQgb2Yg
ZkZpZWxkcyBpcyBvazoKICAgICogQXMgbG9uZyBhcyBpdCBpcyBubyBsYXJnZXIgdGhhbiBmU3Rh
Y2tGaWVsZHMsIGl0IGlzIG5vdCB3YXN0ZWQgc3BhY2UuKQogICAgKgotICAgKiBGb3Igc29tZSBv
ZiB0aGUgaGlzdG9yeSBvZiB0aGUgVW5pY29kZVN0cmluZyBjbGFzcyBmaWVsZHMgbGF5b3V0LAot
ICAgKiBzZWUgSUNVIHRpY2tldCAjMTEzMzYgIlVuaWNvZGVTdHJpbmc6IHJlY29tYmluZSBzdGFj
ayBidWZmZXIgYXJyYXlzIgotICAgKiBhbmQgdGlja2V0ICM4MzIyICJ3aHkgaXMgc2l6ZW9mKFVu
aWNvZGVTdHJpbmcpPT00OD8iLgorICAgKiBGb3Igc29tZSBvZiB0aGUgaGlzdG9yeSBvZiB0aGUg
VW5pY29kZVN0cmluZyBjbGFzcyBmaWVsZHMgbGF5b3V0LCBzZWUKKyAgICogLSBJQ1UgdGlja2V0
ICMxMTU1MSAibG9uZ2VyIFVuaWNvZGVTdHJpbmcgY29udGVudHMgaW4gc3RhY2sgYnVmZmVyIgor
ICAgKiAtIElDVSB0aWNrZXQgIzExMzM2ICJVbmljb2RlU3RyaW5nOiByZWNvbWJpbmUgc3RhY2sg
YnVmZmVyIGFycmF5cyIKKyAgICogLSBJQ1UgdGlja2V0ICM4MzIyICJ3aHkgaXMgc2l6ZW9mKFVu
aWNvZGVTdHJpbmcpPT00OD8iCiAgICAqLwogICAvLyAoaW1wbGljaXQpICp2dGFibGU7CiAgIHVu
aW9uIFN0YWNrQnVmZmVyT3JGaWVsZHMgewpAQCAtMzU1NCwxMyArMzgyOSwxNSBAQCBwcml2YXRl
OgogICAgIC8vIEVhY2ggc3RydWN0IG9mIHRoZSB1bmlvbiBtdXN0IGJlZ2luIHdpdGggZkxlbmd0
aEFuZEZsYWdzLgogICAgIHN0cnVjdCB7CiAgICAgICBpbnQxNl90IGZMZW5ndGhBbmRGbGFnczsg
ICAgICAgICAgLy8gYml0IGZpZWxkczogc2VlIGNvbnN0YW50cyBhYm92ZQotICAgICAgVUNoYXIg
ZkJ1ZmZlcltVU19TVEFDS0JVRl9TSVpFXTsgIC8vIGJ1ZmZlciBmb3Igc2hvcnQgc3RyaW5ncwor
ICAgICAgY2hhcjE2X3QgZkJ1ZmZlcltVU19TVEFDS0JVRl9TSVpFXTsgIC8vIGJ1ZmZlciBmb3Ig
c2hvcnQgc3RyaW5ncwogICAgIH0gZlN0YWNrRmllbGRzOwogICAgIHN0cnVjdCB7CiAgICAgICBp
bnQxNl90IGZMZW5ndGhBbmRGbGFnczsgICAgICAgICAgLy8gYml0IGZpZWxkczogc2VlIGNvbnN0
YW50cyBhYm92ZQotICAgICAgVUNoYXIgICAqZkFycmF5OyAgICAvLyB0aGUgVW5pY29kZSBkYXRh
Ci0gICAgICBpbnQzMl90IGZDYXBhY2l0eTsgIC8vIGNhcGFjaXR5IG9mIGZBcnJheSAoaW4gVUNo
YXJzKQogICAgICAgaW50MzJfdCBmTGVuZ3RoOyAgICAvLyBudW1iZXIgb2YgY2hhcmFjdGVycyBp
biBmQXJyYXkgaWYgPjEyNzsgZWxzZSB1bmRlZmluZWQKKyAgICAgIGludDMyX3QgZkNhcGFjaXR5
OyAgLy8gY2FwYWNpdHkgb2YgZkFycmF5IChpbiBjaGFyMTZfdHMpCisgICAgICAvLyBhcnJheSBw
b2ludGVyIGxhc3QgdG8gbWluaW1pemUgcGFkZGluZyBmb3IgbWFjaGluZXMgd2l0aCBQMTI4IGRh
dGEgbW9kZWwKKyAgICAgIC8vIG9yIHBvaW50ZXIgc2l6ZXMgdGhhdCBhcmUgbm90IGEgcG93ZXIg
b2YgMgorICAgICAgY2hhcjE2X3QgICAqZkFycmF5OyAgICAvLyB0aGUgVW5pY29kZSBkYXRhCiAg
ICAgfSBmRmllbGRzOwogICB9IGZVbmlvbjsKIH07CkBAIC0zNjEzLDEzICszODkwLDEzIEBAIFVu
aWNvZGVTdHJpbmc6OnBpbkluZGljZXMoaW50MzJfdCYgc3RhcnQsCiAgIH0KIH0KIAotaW5saW5l
IFVDaGFyKgoraW5saW5lIGNoYXIxNl90KgogVW5pY29kZVN0cmluZzo6Z2V0QXJyYXlTdGFydCgp
IHsKICAgcmV0dXJuIChmVW5pb24uZkZpZWxkcy5mTGVuZ3RoQW5kRmxhZ3Mma1VzaW5nU3RhY2tC
dWZmZXIpID8KICAgICBmVW5pb24uZlN0YWNrRmllbGRzLmZCdWZmZXIgOiBmVW5pb24uZkZpZWxk
cy5mQXJyYXk7CiB9CiAKLWlubGluZSBjb25zdCBVQ2hhcioKK2lubGluZSBjb25zdCBjaGFyMTZf
dCoKIFVuaWNvZGVTdHJpbmc6OmdldEFycmF5U3RhcnQoKSBjb25zdCB7CiAgIHJldHVybiAoZlVu
aW9uLmZGaWVsZHMuZkxlbmd0aEFuZEZsYWdzJmtVc2luZ1N0YWNrQnVmZmVyKSA/CiAgICAgZlVu
aW9uLmZTdGFja0ZpZWxkcy5mQnVmZmVyIDogZlVuaW9uLmZGaWVsZHMuZkFycmF5OwpAQCAtMzYz
NCw2ICszOTExLDE4IEBAIFVuaWNvZGVTdHJpbmc6OlVuaWNvZGVTdHJpbmcoKSB7CiAgIGZVbmlv
bi5mU3RhY2tGaWVsZHMuZkxlbmd0aEFuZEZsYWdzPWtTaG9ydFN0cmluZzsKIH0KIAoraW5saW5l
IFVuaWNvZGVTdHJpbmc6OlVuaWNvZGVTdHJpbmcoY29uc3Qgc3RkOjpudWxscHRyX3QgLyp0ZXh0
Ki8pIHsKKyAgZlVuaW9uLmZTdGFja0ZpZWxkcy5mTGVuZ3RoQW5kRmxhZ3M9a1Nob3J0U3RyaW5n
OworfQorCitpbmxpbmUgVW5pY29kZVN0cmluZzo6VW5pY29kZVN0cmluZyhjb25zdCBzdGQ6Om51
bGxwdHJfdCAvKnRleHQqLywgaW50MzJfdCAvKmxlbmd0aCovKSB7CisgIGZVbmlvbi5mU3RhY2tG
aWVsZHMuZkxlbmd0aEFuZEZsYWdzPWtTaG9ydFN0cmluZzsKK30KKworaW5saW5lIFVuaWNvZGVT
dHJpbmc6OlVuaWNvZGVTdHJpbmcoc3RkOjpudWxscHRyX3QgLypidWZmZXIqLywgaW50MzJfdCAv
KmJ1ZmZMZW5ndGgqLywgaW50MzJfdCAvKmJ1ZmZDYXBhY2l0eSovKSB7CisgIGZVbmlvbi5mU3Rh
Y2tGaWVsZHMuZkxlbmd0aEFuZEZsYWdzPWtTaG9ydFN0cmluZzsKK30KKwogLy89PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBSZWFkLW9ubHkgaW1wbGVtZW50YXRp
b24gbWV0aG9kcwogLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBA
IC0zNjgwLDEwICszOTY5LDEwIEBAIFVuaWNvZGVTdHJpbmc6OmlzQnVmZmVyV3JpdGFibGUoKSBj
b25zdAogICAgICAgKCEoZlVuaW9uLmZGaWVsZHMuZkxlbmd0aEFuZEZsYWdzJmtSZWZDb3VudGVk
KSB8fCByZWZDb3VudCgpPT0xKSk7CiB9CiAKLWlubGluZSBjb25zdCBVQ2hhciAqCitpbmxpbmUg
Y29uc3QgY2hhcjE2X3QgKgogVW5pY29kZVN0cmluZzo6Z2V0QnVmZmVyKCkgY29uc3QgewogICBp
ZihmVW5pb24uZkZpZWxkcy5mTGVuZ3RoQW5kRmxhZ3MmKGtJc0JvZ3VzfGtPcGVuR2V0QnVmZmVy
KSkgewotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogICB9IGVsc2UgaWYoZlVu
aW9uLmZGaWVsZHMuZkxlbmd0aEFuZEZsYWdzJmtVc2luZ1N0YWNrQnVmZmVyKSB7CiAgICAgcmV0
dXJuIGZVbmlvbi5mU3RhY2tGaWVsZHMuZkJ1ZmZlcjsKICAgfSBlbHNlIHsKQEAgLTM3NTEsNyAr
NDA0MCw3IEBAIFVuaWNvZGVTdHJpbmc6OmNvbXBhcmUoaW50MzJfdCBzdGFydCwKIHsgcmV0dXJu
IGRvQ29tcGFyZShzdGFydCwgX2xlbmd0aCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7
IH0KIAogaW5saW5lIGludDhfdAotVW5pY29kZVN0cmluZzo6Y29tcGFyZShjb25zdCBVQ2hhciAq
c3JjQ2hhcnMsCitVbmljb2RlU3RyaW5nOjpjb21wYXJlKENvbnN0Q2hhcjE2UHRyIHNyY0NoYXJz
LAogICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0CiB7IHJldHVybiBkb0Nv
bXBhcmUoMCwgbGVuZ3RoKCksIHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgpOyB9CiAKQEAgLTM3NjYs
MTMgKzQwNTUsMTMgQEAgVW5pY29kZVN0cmluZzo6Y29tcGFyZShpbnQzMl90IHN0YXJ0LAogaW5s
aW5lIGludDhfdAogVW5pY29kZVN0cmluZzo6Y29tcGFyZShpbnQzMl90IHN0YXJ0LAogICAgICAg
ICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAotICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNy
Y0NoYXJzKSBjb25zdAorICAgICAgICAgICAgICAgY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzKSBj
b25zdAogeyByZXR1cm4gZG9Db21wYXJlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNDaGFycywgMCwgX2xl
bmd0aCk7IH0KIAogaW5saW5lIGludDhfdAogVW5pY29kZVN0cmluZzo6Y29tcGFyZShpbnQzMl90
IHN0YXJ0LAogICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAotICAgICAgICAgICAgICAg
Y29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgY29uc3QgY2hhcjE2X3QgKnNy
Y0NoYXJzLAogICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKICAgICAgICAgICAgICAg
IGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdAogeyByZXR1cm4gZG9Db21wYXJlKHN0YXJ0LCBfbGVu
Z3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCk7IH0KQEAgLTM4MTIsNyArNDEwMSw3
IEBAIFVuaWNvZGVTdHJpbmc6OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LAog
eyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQsIF9sZW5ndGgsIHNyY1RleHQs
IDAsIHNyY1RleHQubGVuZ3RoKCkpOyB9CiAKIGlubGluZSBpbnQ4X3QKLVVuaWNvZGVTdHJpbmc6
OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCitVbmljb2RlU3Ry
aW5nOjpjb21wYXJlQ29kZVBvaW50T3JkZXIoQ29uc3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0
CiB7IHJldHVybiBkb0NvbXBhcmVDb2RlUG9pbnRPcmRlcigwLCBsZW5ndGgoKSwgc3JjQ2hhcnMs
IDAsIHNyY0xlbmd0aCk7IH0KIApAQCAtMzgyNywxMyArNDExNiwxMyBAQCBVbmljb2RlU3RyaW5n
Ojpjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFydCwKIGlubGluZSBpbnQ4X3QKIFVu
aWNvZGVTdHJpbmc6OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMpIGNvbnN0
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcjE2X3QgKnNy
Y0NoYXJzKSBjb25zdAogeyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQsIF9s
ZW5ndGgsIHNyY0NoYXJzLCAwLCBfbGVuZ3RoKTsgfQogCiBpbmxpbmUgaW50OF90CiBVbmljb2Rl
U3RyaW5nOjpjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFydCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25z
dAogeyByZXR1cm4gZG9Db21wYXJlQ29kZVBvaW50T3JkZXIoc3RhcnQsIF9sZW5ndGgsIHNyY0No
YXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoKTsgfQpAQCAtMzg3Nyw3ICs0MTY2LDcgQEAgVW5pY29k
ZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKIH0KIAogaW5saW5lIGludDhfdAot
VW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorVW5pY29k
ZVN0cmluZzo6Y2FzZUNvbXBhcmUoQ29uc3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0IHsKICAgcmV0dXJuIGRvQ2FzZUNvbXBhcmUo
MCwgbGVuZ3RoKCksIHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgsIG9wdGlvbnMpOwpAQCAtMzg5Niw3
ICs0MTg1LDcgQEAgVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKIGlu
bGluZSBpbnQ4X3QKIFVuaWNvZGVTdHJpbmc6OmNhc2VDb21wYXJlKGludDMyX3Qgc3RhcnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBvcHRpb25zKSBjb25zdCB7CiAgIHJldHVybiBkb0Nhc2VDb21wYXJlKHN0
YXJ0LCBfbGVuZ3RoLCBzcmNDaGFycywgMCwgX2xlbmd0aCwgb3B0aW9ucyk7CiB9CkBAIC0zOTA0
LDcgKzQxOTMsNyBAQCBVbmljb2RlU3RyaW5nOjpjYXNlQ29tcGFyZShpbnQzMl90IHN0YXJ0LAog
aW5saW5lIGludDhfdAogVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQz
Ml90IHNyY0xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlv
bnMpIGNvbnN0IHsKQEAgLTM5NTUsNyArNDI0NCw3IEBAIFVuaWNvZGVTdHJpbmc6OmluZGV4T2Yo
Y29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwKIHsgcmV0dXJuIGluZGV4T2YodGV4dCwgMCwgdGV4
dC5sZW5ndGgoKSwgc3RhcnQsIF9sZW5ndGgpOyB9CiAKIGlubGluZSBpbnQzMl90Ci1Vbmljb2Rl
U3RyaW5nOjppbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKK1VuaWNvZGVTdHJpbmc6Omlu
ZGV4T2YoY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAgICAgICAgICAgaW50MzJfdCBz
cmNMZW5ndGgsCiAgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25zdCB7CiAgIHBpbklu
ZGV4KHN0YXJ0KTsKQEAgLTM5NjMsMTQgKzQyNTIsMTQgQEAgVW5pY29kZVN0cmluZzo6aW5kZXhP
Zihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCiB9CiAKIGlubGluZSBpbnQzMl90Ci1Vbmljb2RlU3Ry
aW5nOjppbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKK1VuaWNvZGVTdHJpbmc6OmluZGV4
T2YoQ29uc3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xl
bmd0aCwKICAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBpbnQz
Ml90IF9sZW5ndGgpIGNvbnN0CiB7IHJldHVybiBpbmRleE9mKHNyY0NoYXJzLCAwLCBzcmNMZW5n
dGgsIHN0YXJ0LCBfbGVuZ3RoKTsgfQogCiBpbmxpbmUgaW50MzJfdAotVW5pY29kZVN0cmluZzo6
aW5kZXhPZihVQ2hhciBjLAorVW5pY29kZVN0cmluZzo6aW5kZXhPZihjaGFyMTZfdCBjLAogICAg
ICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0
aCkgY29uc3QKIHsgcmV0dXJuIGRvSW5kZXhPZihjLCBzdGFydCwgX2xlbmd0aCk7IH0KQEAgLTM5
ODIsNyArNDI3MSw3IEBAIFVuaWNvZGVTdHJpbmc6OmluZGV4T2YoVUNoYXIzMiBjLAogeyByZXR1
cm4gZG9JbmRleE9mKGMsIHN0YXJ0LCBfbGVuZ3RoKTsgfQogCiBpbmxpbmUgaW50MzJfdAotVW5p
Y29kZVN0cmluZzo6aW5kZXhPZihVQ2hhciBjKSBjb25zdAorVW5pY29kZVN0cmluZzo6aW5kZXhP
ZihjaGFyMTZfdCBjKSBjb25zdAogeyByZXR1cm4gZG9JbmRleE9mKGMsIDAsIGxlbmd0aCgpKTsg
fQogCiBpbmxpbmUgaW50MzJfdApAQCAtMzk5MCw3ICs0Mjc5LDcgQEAgVW5pY29kZVN0cmluZzo6
aW5kZXhPZihVQ2hhcjMyIGMpIGNvbnN0CiB7IHJldHVybiBpbmRleE9mKGMsIDAsIGxlbmd0aCgp
KTsgfQogCiBpbmxpbmUgaW50MzJfdAotVW5pY29kZVN0cmluZzo6aW5kZXhPZihVQ2hhciBjLAor
VW5pY29kZVN0cmluZzo6aW5kZXhPZihjaGFyMTZfdCBjLAogICAgICAgICAgICAgICAgaW50MzJf
dCBzdGFydCkgY29uc3QgewogICBwaW5JbmRleChzdGFydCk7CiAgIHJldHVybiBkb0luZGV4T2Yo
Yywgc3RhcnQsIGxlbmd0aCgpIC0gc3RhcnQpOwpAQCAtNDAwNCwxNCArNDI5MywxNCBAQCBVbmlj
b2RlU3RyaW5nOjppbmRleE9mKFVDaGFyMzIgYywKIH0KIAogaW5saW5lIGludDMyX3QKLVVuaWNv
ZGVTdHJpbmc6Omxhc3RJbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKK1VuaWNvZGVTdHJp
bmc6Omxhc3RJbmRleE9mKENvbnN0Q2hhcjE2UHRyIHNyY0NoYXJzLAogICAgICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAogICAgICAg
ICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKSBjb25zdAogeyByZXR1cm4gbGFzdEluZGV4T2Yoc3Jj
Q2hhcnMsIDAsIHNyY0xlbmd0aCwgc3RhcnQsIF9sZW5ndGgpOyB9CiAKIGlubGluZSBpbnQzMl90
Ci1Vbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCitVbmlj
b2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAgICAgICAg
ICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKICAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQp
IGNvbnN0IHsKICAgcGluSW5kZXgoc3RhcnQpOwpAQCAtNDA1Miw3ICs0MzQxLDcgQEAgVW5pY29k
ZVN0cmluZzo6bGFzdEluZGV4T2YoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCkgY29uc3QKIHsg
cmV0dXJuIGxhc3RJbmRleE9mKHRleHQsIDAsIHRleHQubGVuZ3RoKCksIDAsIGxlbmd0aCgpKTsg
fQogCiBpbmxpbmUgaW50MzJfdAotVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoVUNoYXIgYywK
K1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKGNoYXIxNl90IGMsCiAgICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0LAogICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKSBjb25zdAogeyBy
ZXR1cm4gZG9MYXN0SW5kZXhPZihjLCBzdGFydCwgX2xlbmd0aCk7IH0KQEAgLTQwNjUsNyArNDM1
NCw3IEBAIFVuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKFVDaGFyMzIgYywKIH0KIAogaW5saW5l
IGludDMyX3QKLVVuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKFVDaGFyIGMpIGNvbnN0CitVbmlj
b2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjaGFyMTZfdCBjKSBjb25zdAogeyByZXR1cm4gZG9MYXN0
SW5kZXhPZihjLCAwLCBsZW5ndGgoKSk7IH0KIAogaW5saW5lIGludDMyX3QKQEAgLTQwNzQsNyAr
NDM2Myw3IEBAIFVuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKFVDaGFyMzIgYykgY29uc3Qgewog
fQogCiBpbmxpbmUgaW50MzJfdAotVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoVUNoYXIgYywK
K1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKGNoYXIxNl90IGMsCiAgICAgICAgICAgICAgICBp
bnQzMl90IHN0YXJ0KSBjb25zdCB7CiAgIHBpbkluZGV4KHN0YXJ0KTsKICAgcmV0dXJuIGRvTGFz
dEluZGV4T2YoYywgc3RhcnQsIGxlbmd0aCgpIC0gc3RhcnQpOwpAQCAtNDA5OCwxNyArNDM4Nywx
NyBAQCBVbmljb2RlU3RyaW5nOjpzdGFydHNXaXRoKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1Rl
eHQsCiB7IHJldHVybiBkb0NvbXBhcmUoMCwgc3JjTGVuZ3RoLCBzcmNUZXh0LCBzcmNTdGFydCwg
c3JjTGVuZ3RoKSA9PSAwOyB9CiAKIGlubGluZSBVQm9vbAotVW5pY29kZVN0cmluZzo6c3RhcnRz
V2l0aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdCB7CitV
bmljb2RlU3RyaW5nOjpzdGFydHNXaXRoKENvbnN0Q2hhcjE2UHRyIHNyY0NoYXJzLCBpbnQzMl90
IHNyY0xlbmd0aCkgY29uc3QgewogICBpZihzcmNMZW5ndGggPCAwKSB7Ci0gICAgc3JjTGVuZ3Ro
ID0gdV9zdHJsZW4oc3JjQ2hhcnMpOworICAgIHNyY0xlbmd0aCA9IHVfc3RybGVuKHRvVUNoYXJQ
dHIoc3JjQ2hhcnMpKTsKICAgfQogICByZXR1cm4gZG9Db21wYXJlKDAsIHNyY0xlbmd0aCwgc3Jj
Q2hhcnMsIDAsIHNyY0xlbmd0aCkgPT0gMDsKIH0KIAogaW5saW5lIFVCb29sCi1Vbmljb2RlU3Ry
aW5nOjpzdGFydHNXaXRoKGNvbnN0IFVDaGFyICpzcmNDaGFycywgaW50MzJfdCBzcmNTdGFydCwg
aW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0IHsKK1VuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgoY29u
c3QgY2hhcjE2X3QgKnNyY0NoYXJzLCBpbnQzMl90IHNyY1N0YXJ0LCBpbnQzMl90IHNyY0xlbmd0
aCkgY29uc3QgewogICBpZihzcmNMZW5ndGggPCAwKSB7Ci0gICAgc3JjTGVuZ3RoID0gdV9zdHJs
ZW4oc3JjQ2hhcnMpOworICAgIHNyY0xlbmd0aCA9IHVfc3RybGVuKHRvVUNoYXJQdHIoc3JjQ2hh
cnMpKTsKICAgfQogICByZXR1cm4gZG9Db21wYXJlKDAsIHNyY0xlbmd0aCwgc3JjQ2hhcnMsIHNy
Y1N0YXJ0LCBzcmNMZW5ndGgpID09IDA7CiB9CkBAIC00MTI4LDIxICs0NDE3LDIxIEBAIFVuaWNv
ZGVTdHJpbmc6OmVuZHNXaXRoKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCiB9CiAKIGlu
bGluZSBVQm9vbAotVW5pY29kZVN0cmluZzo6ZW5kc1dpdGgoY29uc3QgVUNoYXIgKnNyY0NoYXJz
LAorVW5pY29kZVN0cmluZzo6ZW5kc1dpdGgoQ29uc3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAg
ICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QgewogICBpZihzcmNMZW5ndGggPCAwKSB7
Ci0gICAgc3JjTGVuZ3RoID0gdV9zdHJsZW4oc3JjQ2hhcnMpOworICAgIHNyY0xlbmd0aCA9IHVf
c3RybGVuKHRvVUNoYXJQdHIoc3JjQ2hhcnMpKTsKICAgfQogICByZXR1cm4gZG9Db21wYXJlKGxl
bmd0aCgpIC0gc3JjTGVuZ3RoLCBzcmNMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgc3JjQ2hh
cnMsIDAsIHNyY0xlbmd0aCkgPT0gMDsKIH0KIAogaW5saW5lIFVCb29sCi1Vbmljb2RlU3RyaW5n
OjplbmRzV2l0aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCitVbmljb2RlU3RyaW5nOjplbmRzV2l0
aChjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0
LAogICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0IHsKICAgaWYoc3JjTGVuZ3Ro
IDwgMCkgewotICAgIHNyY0xlbmd0aCA9IHVfc3RybGVuKHNyY0NoYXJzICsgc3JjU3RhcnQpOwor
ICAgIHNyY0xlbmd0aCA9IHVfc3RybGVuKHRvVUNoYXJQdHIoc3JjQ2hhcnMgKyBzcmNTdGFydCkp
OwogICB9CiAgIHJldHVybiBkb0NvbXBhcmUobGVuZ3RoKCkgLSBzcmNMZW5ndGgsIHNyY0xlbmd0
aCwKICAgICAgICAgICAgICAgICAgICBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCkgPT0g
MDsKQEAgLTQxNjgsMTQgKzQ0NTcsMTQgQEAgVW5pY29kZVN0cmluZzo6cmVwbGFjZShpbnQzMl90
IHN0YXJ0LAogaW5saW5lIFVuaWNvZGVTdHJpbmcmCiBVbmljb2RlU3RyaW5nOjpyZXBsYWNlKGlu
dDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCi0gICAgICAgICAg
ICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICBDb25zdENoYXIxNlB0
ciBzcmNDaGFycywKICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQogeyByZXR1cm4g
ZG9SZXBsYWNlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKTsgfQogCiBp
bmxpbmUgVW5pY29kZVN0cmluZyYKIFVuaWNvZGVTdHJpbmc6OnJlcGxhY2UoaW50MzJfdCBzdGFy
dCwKICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKLSAgICAgICAgICAgICAgIGNvbnN0
IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90ICpzcmNDaGFy
cywKICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICAgICAgICBpbnQz
Ml90IHNyY0xlbmd0aCkKIHsgcmV0dXJuIGRvUmVwbGFjZShzdGFydCwgX2xlbmd0aCwgc3JjQ2hh
cnMsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CkBAIC00MTgzLDcgKzQ0NzIsNyBAQCBVbmljb2Rl
U3RyaW5nOjpyZXBsYWNlKGludDMyX3Qgc3RhcnQsCiBpbmxpbmUgVW5pY29kZVN0cmluZyYKIFVu
aWNvZGVTdHJpbmc6OnJlcGxhY2UoaW50MzJfdCBzdGFydCwKICAgICAgICAgICAgICAgIGludDMy
X3QgX2xlbmd0aCwKLSAgICAgICAgICAgICAgIFVDaGFyIHNyY0NoYXIpCisgICAgICAgICAgICAg
ICBjaGFyMTZfdCBzcmNDaGFyKQogeyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCBfbGVuZ3RoLCAm
c3JjQ2hhciwgMCwgMSk7IH0KIAogaW5saW5lIFVuaWNvZGVTdHJpbmcmCkBAIC00MjI2LDcgKzQ1
MTUsNyBAQCBVbmljb2RlU3RyaW5nOjpkb0V4dHJhY3QoaW50MzJfdCBzdGFydCwKIGlubGluZSB2
b2lkCiBVbmljb2RlU3RyaW5nOjpleHRyYWN0KGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAg
ICBpbnQzMl90IF9sZW5ndGgsCi0gICAgICAgICAgICAgICBVQ2hhciAqdGFyZ2V0LAorICAgICAg
ICAgICAgICAgQ2hhcjE2UHRyIHRhcmdldCwKICAgICAgICAgICAgICAgIGludDMyX3QgdGFyZ2V0
U3RhcnQpIGNvbnN0CiB7IGRvRXh0cmFjdChzdGFydCwgX2xlbmd0aCwgdGFyZ2V0LCB0YXJnZXRT
dGFydCk7IH0KIApAQCAtNDI1NCw3ICs0NTQzLDcgQEAgVW5pY29kZVN0cmluZzo6ZXh0cmFjdChp
bnQzMl90IHN0YXJ0LAogaW5saW5lIHZvaWQKIFVuaWNvZGVTdHJpbmc6OmV4dHJhY3RCZXR3ZWVu
KGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxpbWl0LAotICAgICAg
ICAgICAgICAgICAgVUNoYXIgKmRzdCwKKyAgICAgICAgICAgICAgICAgIGNoYXIxNl90ICpkc3Qs
CiAgICAgICAgICAgICAgICAgICBpbnQzMl90IGRzdFN0YXJ0KSBjb25zdCB7CiAgIHBpbkluZGV4
KHN0YXJ0KTsKICAgcGluSW5kZXgobGltaXQpOwpAQCAtNDI2Niw3ICs0NTU1LDcgQEAgVW5pY29k
ZVN0cmluZzo6dGVtcFN1YlN0cmluZ0JldHdlZW4oaW50MzJfdCBzdGFydCwgaW50MzJfdCBsaW1p
dCkgY29uc3QgewogICAgIHJldHVybiB0ZW1wU3ViU3RyaW5nKHN0YXJ0LCBsaW1pdCAtIHN0YXJ0
KTsKIH0KIAotaW5saW5lIFVDaGFyCitpbmxpbmUgY2hhcjE2X3QKIFVuaWNvZGVTdHJpbmc6OmRv
Q2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAogewogICBpZigodWludDMyX3Qpb2Zmc2V0IDwg
KHVpbnQzMl90KWxlbmd0aCgpKSB7CkBAIC00Mjc2LDExICs0NTY1LDExIEBAIFVuaWNvZGVTdHJp
bmc6OmRvQ2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAogICB9CiB9CiAKLWlubGluZSBVQ2hh
cgoraW5saW5lIGNoYXIxNl90CiBVbmljb2RlU3RyaW5nOjpjaGFyQXQoaW50MzJfdCBvZmZzZXQp
IGNvbnN0CiB7IHJldHVybiBkb0NoYXJBdChvZmZzZXQpOyB9CiAKLWlubGluZSBVQ2hhcgoraW5s
aW5lIGNoYXIxNl90CiBVbmljb2RlU3RyaW5nOjpvcGVyYXRvcltdIChpbnQzMl90IG9mZnNldCkg
Y29uc3QKIHsgcmV0dXJuIGRvQ2hhckF0KG9mZnNldCk7IH0KIApAQCAtNDMyMSwxNCArNDYxMCwx
NCBAQCBVbmljb2RlU3RyaW5nOjpzZXRUb0VtcHR5KCkgewogfQogCiBpbmxpbmUgdm9pZAotVW5p
Y29kZVN0cmluZzo6c2V0QXJyYXkoVUNoYXIgKmFycmF5LCBpbnQzMl90IGxlbiwgaW50MzJfdCBj
YXBhY2l0eSkgeworVW5pY29kZVN0cmluZzo6c2V0QXJyYXkoY2hhcjE2X3QgKmFycmF5LCBpbnQz
Ml90IGxlbiwgaW50MzJfdCBjYXBhY2l0eSkgewogICBzZXRMZW5ndGgobGVuKTsKICAgZlVuaW9u
LmZGaWVsZHMuZkFycmF5ID0gYXJyYXk7CiAgIGZVbmlvbi5mRmllbGRzLmZDYXBhY2l0eSA9IGNh
cGFjaXR5OwogfQogCiBpbmxpbmUgVW5pY29kZVN0cmluZyYKLVVuaWNvZGVTdHJpbmc6Om9wZXJh
dG9yPSAoVUNoYXIgY2gpCitVbmljb2RlU3RyaW5nOjpvcGVyYXRvcj0gKGNoYXIxNl90IGNoKQog
eyByZXR1cm4gZG9SZXBsYWNlKDAsIGxlbmd0aCgpLCAmY2gsIDAsIDEpOyB9CiAKIGlubGluZSBV
bmljb2RlU3RyaW5nJgpAQCAtNDM2MCw3ICs0NjQ5LDcgQEAgVW5pY29kZVN0cmluZzo6c2V0VG8o
Y29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCkKIH0KIAogaW5saW5lIFVuaWNvZGVTdHJpbmcm
Ci1Vbmljb2RlU3RyaW5nOjpzZXRUbyhjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCitVbmljb2RlU3Ry
aW5nOjpzZXRUbyhjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAgICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpCiB7CiAgIHVuQm9ndXMoKTsKQEAgLTQzNjgsNyArNDY1Nyw3IEBAIFVuaWNv
ZGVTdHJpbmc6OnNldFRvKGNvbnN0IFVDaGFyICpzcmNDaGFycywKIH0KIAogaW5saW5lIFVuaWNv
ZGVTdHJpbmcmCi1Vbmljb2RlU3RyaW5nOjpzZXRUbyhVQ2hhciBzcmNDaGFyKQorVW5pY29kZVN0
cmluZzo6c2V0VG8oY2hhcjE2X3Qgc3JjQ2hhcikKIHsKICAgdW5Cb2d1cygpOwogICByZXR1cm4g
ZG9SZXBsYWNlKDAsIGxlbmd0aCgpLCAmc3JjQ2hhciwgMCwgMSk7CkBAIC00Mzg1LDMwICs0Njc0
LDMwIEBAIGlubGluZSBVbmljb2RlU3RyaW5nJgogVW5pY29kZVN0cmluZzo6YXBwZW5kKGNvbnN0
IFVuaWNvZGVTdHJpbmcmIHNyY1RleHQsCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQs
CiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQoteyByZXR1cm4gZG9SZXBsYWNlKGxl
bmd0aCgpLCAwLCBzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGVuZ3RoKTsgfQoreyByZXR1cm4gZG9B
cHBlbmQoc3JjVGV4dCwgc3JjU3RhcnQsIHNyY0xlbmd0aCk7IH0KIAogaW5saW5lIFVuaWNvZGVT
dHJpbmcmCiBVbmljb2RlU3RyaW5nOjphcHBlbmQoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4
dCkKLXsgcmV0dXJuIGRvUmVwbGFjZShsZW5ndGgoKSwgMCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5s
ZW5ndGgoKSk7IH0KK3sgcmV0dXJuIGRvQXBwZW5kKHNyY1RleHQsIDAsIHNyY1RleHQubGVuZ3Ro
KCkpOyB9CiAKIGlubGluZSBVbmljb2RlU3RyaW5nJgotVW5pY29kZVN0cmluZzo6YXBwZW5kKGNv
bnN0IFVDaGFyICpzcmNDaGFycywKK1VuaWNvZGVTdHJpbmc6OmFwcGVuZChjb25zdCBjaGFyMTZf
dCAqc3JjQ2hhcnMsCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICAg
ICAgIGludDMyX3Qgc3JjTGVuZ3RoKQoteyByZXR1cm4gZG9SZXBsYWNlKGxlbmd0aCgpLCAwLCBz
cmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCk7IH0KK3sgcmV0dXJuIGRvQXBwZW5kKHNyY0No
YXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoKTsgfQogCiBpbmxpbmUgVW5pY29kZVN0cmluZyYKLVVu
aWNvZGVTdHJpbmc6OmFwcGVuZChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCitVbmljb2RlU3RyaW5n
OjphcHBlbmQoQ29uc3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAgICAgICAgICAgIGludDMyX3Qg
c3JjTGVuZ3RoKQoteyByZXR1cm4gZG9SZXBsYWNlKGxlbmd0aCgpLCAwLCBzcmNDaGFycywgMCwg
c3JjTGVuZ3RoKTsgfQoreyByZXR1cm4gZG9BcHBlbmQoc3JjQ2hhcnMsIDAsIHNyY0xlbmd0aCk7
IH0KIAogaW5saW5lIFVuaWNvZGVTdHJpbmcmCi1Vbmljb2RlU3RyaW5nOjphcHBlbmQoVUNoYXIg
c3JjQ2hhcikKLXsgcmV0dXJuIGRvUmVwbGFjZShsZW5ndGgoKSwgMCwgJnNyY0NoYXIsIDAsIDEp
OyB9CitVbmljb2RlU3RyaW5nOjphcHBlbmQoY2hhcjE2X3Qgc3JjQ2hhcikKK3sgcmV0dXJuIGRv
QXBwZW5kKCZzcmNDaGFyLCAwLCAxKTsgfQogCiBpbmxpbmUgVW5pY29kZVN0cmluZyYKLVVuaWNv
ZGVTdHJpbmc6Om9wZXJhdG9yKz0gKFVDaGFyIGNoKQoteyByZXR1cm4gZG9SZXBsYWNlKGxlbmd0
aCgpLCAwLCAmY2gsIDAsIDEpOyB9CitVbmljb2RlU3RyaW5nOjpvcGVyYXRvcis9IChjaGFyMTZf
dCBjaCkKK3sgcmV0dXJuIGRvQXBwZW5kKCZjaCwgMCwgMSk7IH0KIAogaW5saW5lIFVuaWNvZGVT
dHJpbmcmCiBVbmljb2RlU3RyaW5nOjpvcGVyYXRvcis9IChVQ2hhcjMyIGNoKSB7CkBAIC00NDE3
LDcgKzQ3MDYsNyBAQCBVbmljb2RlU3RyaW5nOjpvcGVyYXRvcis9IChVQ2hhcjMyIGNoKSB7CiAK
IGlubGluZSBVbmljb2RlU3RyaW5nJgogVW5pY29kZVN0cmluZzo6b3BlcmF0b3IrPSAoY29uc3Qg
VW5pY29kZVN0cmluZyYgc3JjVGV4dCkKLXsgcmV0dXJuIGRvUmVwbGFjZShsZW5ndGgoKSwgMCwg
c3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7IH0KK3sgcmV0dXJuIGRvQXBwZW5kKHNyY1Rl
eHQsIDAsIHNyY1RleHQubGVuZ3RoKCkpOyB9CiAKIGlubGluZSBVbmljb2RlU3RyaW5nJgogVW5p
Y29kZVN0cmluZzo6aW5zZXJ0KGludDMyX3Qgc3RhcnQsCkBAIC00NDMzLDIwICs0NzIyLDIwIEBA
IFVuaWNvZGVTdHJpbmc6Omluc2VydChpbnQzMl90IHN0YXJ0LAogCiBpbmxpbmUgVW5pY29kZVN0
cmluZyYKIFVuaWNvZGVTdHJpbmc6Omluc2VydChpbnQzMl90IHN0YXJ0LAotICAgICAgICAgICAg
ICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90ICpz
cmNDaGFycywKICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKICAgICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgpCiB7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIDAsIHNyY0NoYXJz
LCBzcmNTdGFydCwgc3JjTGVuZ3RoKTsgfQogCiBpbmxpbmUgVW5pY29kZVN0cmluZyYKIFVuaWNv
ZGVTdHJpbmc6Omluc2VydChpbnQzMl90IHN0YXJ0LAotICAgICAgICAgICAgICBjb25zdCBVQ2hh
ciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgIENvbnN0Q2hhcjE2UHRyIHNyY0NoYXJzLAogICAg
ICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkKIHsgcmV0dXJuIGRvUmVwbGFjZShzdGFydCwg
MCwgc3JjQ2hhcnMsIDAsIHNyY0xlbmd0aCk7IH0KIAogaW5saW5lIFVuaWNvZGVTdHJpbmcmCiBV
bmljb2RlU3RyaW5nOjppbnNlcnQoaW50MzJfdCBzdGFydCwKLSAgICAgICAgICAgICAgVUNoYXIg
c3JjQ2hhcikKKyAgICAgICAgICAgICAgY2hhcjE2X3Qgc3JjQ2hhcikKIHsgcmV0dXJuIGRvUmVw
bGFjZShzdGFydCwgMCwgJnNyY0NoYXIsIDAsIDEpOyB9CiAKIGlubGluZSBVbmljb2RlU3RyaW5n
JgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bm9ybS5oIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91bm9ybS5oCmluZGV4IGZiYjdiNDliMzY0ODU0ODQzN2U0MWZmMDUzMGZk
ZTliM2M4ZTE4ZjIuLjM4MzlkZTEyOTU3M2MxOWIwNTI0N2FlOWQzNWMyYjI5NGVlNDFmMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW5vcm0uaAorKysgYi9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3Vub3JtLmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRl
cjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTog
aHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKLSogQ29weXJpZ2h0IChjKSAxOTk2LTIwMTAsIEludGVybmF0aW9uYWwgQnVzaW5l
c3MgTWFjaGluZXMgQ29ycG9yYXRpb24KKyogQ29weXJpZ2h0IChjKSAxOTk2LTIwMTYsIEludGVy
bmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24KICogICAgICAgICAgICAgICBh
bmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog
KiBGaWxlIHVub3JtLmgKQEAgLTI0LDE0ICsyNiwxNSBAQAogCiAvKioKICAqIFxmaWxlCi0gKiBc
YnJpZWYgQyBBUEk6IFVuaWNvZGUgTm9ybWFsaXphdGlvbiAKKyAqIFxicmllZiBDIEFQSTogVW5p
Y29kZSBOb3JtYWxpemF0aW9uCiAgKgotICogPGgyPlVuaWNvZGUgbm9ybWFsaXphdGlvbiBBUEk8
L2gyPgorICogT2xkIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBBUEkuCiAgKgotICogTm90ZTogVGhp
cyBBUEkgaGFzIGJlZW4gcmVwbGFjZWQgYnkgdGhlIHVub3JtMi5oIEFQSSBhbmQgaXMgb25seSBh
dmFpbGFibGUKKyAqIFRoaXMgQVBJIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSB1bm9ybTIuaCBB
UEkgYW5kIGlzIG9ubHkgYXZhaWxhYmxlCiAgKiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4g
VGhlIGZ1bmN0aW9ucyBoZXJlIHNpbXBseSBkZWxlZ2F0ZSB0byB0aGUKICAqIHVub3JtMi5oIGZ1
bmN0aW9ucywgZm9yIGV4YW1wbGUgdW5vcm0yX2dldEluc3RhbmNlKCkgYW5kIHVub3JtMl9ub3Jt
YWxpemUoKS4KICAqIFRoZXJlIGlzIG9uZSBleGNlcHRpb246IFRoZSBuZXcgQVBJIGRvZXMgbm90
IHByb3ZpZGUgYSByZXBsYWNlbWVudCBmb3IgdW5vcm1fY29tcGFyZSgpLgorICogSXRzIGRlY2xh
cmF0aW9uIGhhcyBiZWVuIG1vdmVkIHRvIHVub3JtMi5oLgogICoKICAqIDxjb2RlPnVub3JtX25v
cm1hbGl6ZTwvY29kZT4gdHJhbnNmb3JtcyBVbmljb2RlIHRleHQgaW50byBhbiBlcXVpdmFsZW50
IGNvbXBvc2VkIG9yCiAgKiBkZWNvbXBvc2VkIGZvcm0sIGFsbG93aW5nIGZvciBlYXNpZXIgc29y
dGluZyBhbmQgc2VhcmNoaW5nIG9mIHRleHQuCkBAIC01Nyw3ICs2MCw3IEBACiAgKgogICogVG8g
YSB1c2VyIG9mIHlvdXIgcHJvZ3JhbSwgaG93ZXZlciwgYm90aCBvZiB0aGVzZSBzZXF1ZW5jZXMg
c2hvdWxkIGJlCiAgKiB0cmVhdGVkIGFzIHRoZSBzYW1lICJ1c2VyLWxldmVsIiBjaGFyYWN0ZXIg
IkEgd2l0aCBhY3V0ZSBhY2NlbnQiLiAgV2hlbiB5b3UgYXJlIHNlYXJjaGluZyBvcgotICogY29t
cGFyaW5nIHRleHQsIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZXNlIHR3byBzZXF1ZW5jZXMgYXJl
IHRyZWF0ZWQgCisgKiBjb21wYXJpbmcgdGV4dCwgeW91IG11c3QgZW5zdXJlIHRoYXQgdGhlc2Ug
dHdvIHNlcXVlbmNlcyBhcmUgdHJlYXRlZAogICogZXF1aXZhbGVudGx5LiAgSW4gYWRkaXRpb24s
IHlvdSBtdXN0IGhhbmRsZSBjaGFyYWN0ZXJzIHdpdGggbW9yZSB0aGFuIG9uZQogICogYWNjZW50
LiAgU29tZXRpbWVzIHRoZSBvcmRlciBvZiBhIGNoYXJhY3RlcidzIGNvbWJpbmluZyBhY2NlbnRz
IGlzCiAgKiBzaWduaWZpY2FudCwgd2hpbGUgaW4gb3RoZXIgY2FzZXMgYWNjZW50IHNlcXVlbmNl
cyBpbiBkaWZmZXJlbnQgb3JkZXJzIGFyZQpAQCAtODUsOCArODgsOCBAQAogICogd2lsbCBvZnRl
biB3YW50IHRvIHVzZSB0aGVzZSBtYXBwaW5ncy4KICAqCiAgKiA8Y29kZT51bm9ybV9ub3JtYWxp
emU8L2NvZGU+IGhlbHBzIHNvbHZlIHRoZXNlIHByb2JsZW1zIGJ5IHRyYW5zZm9ybWluZyB0ZXh0
IGludG8gdGhlCi0gKiBjYW5vbmljYWwgY29tcG9zZWQgYW5kIGRlY29tcG9zZWQgZm9ybXMgYXMg
c2hvd24gaW4gdGhlIGZpcnN0IGV4YW1wbGUgYWJvdmUuICAKLSAqIEluIGFkZGl0aW9uLCB5b3Ug
Y2FuIGhhdmUgaXQgcGVyZm9ybSBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb25zIHNvIHRoYXQg
CisgKiBjYW5vbmljYWwgY29tcG9zZWQgYW5kIGRlY29tcG9zZWQgZm9ybXMgYXMgc2hvd24gaW4g
dGhlIGZpcnN0IGV4YW1wbGUgYWJvdmUuCisgKiBJbiBhZGRpdGlvbiwgeW91IGNhbiBoYXZlIGl0
IHBlcmZvcm0gY29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9ucyBzbyB0aGF0CiAgKiB5b3UgY2Fu
IHRyZWF0IGNvbXBhdGliaWxpdHkgY2hhcmFjdGVycyB0aGUgc2FtZSBhcyB0aGVpciBlcXVpdmFs
ZW50cy4KICAqIEZpbmFsbHksIDxjb2RlPnVub3JtX25vcm1hbGl6ZTwvY29kZT4gcmVhcnJhbmdl
cyBhY2NlbnRzIGludG8gdGhlIHByb3BlciBjYW5vbmljYWwKICAqIG9yZGVyLCBzbyB0aGF0IHlv
dSBkbyBub3QgaGF2ZSB0byB3b3JyeSBhYm91dCBhY2NlbnQgcmVhcnJhbmdlbWVudCBvbiB5b3Vy
CkBAIC0xMjYsNDMgKzEyOSw0NyBAQAogICogRm9yIG1vcmUgdXNhZ2UgZXhhbXBsZXMsIHNlZSB0
aGUgVW5pY29kZSBTdGFuZGFyZCBBbm5leC4KICAqLwogCisvLyBEbyBub3QgY29uZGl0aW9uYWxp
emUgdGhlIGZvbGxvd2luZyBlbnVtIHdpdGggI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEks
CisvLyBpdCBpcyBuZWVkZWQgZm9yIGxheW91dCBvZiBOb3JtYWxpemVyIG9iamVjdC4KIC8qKgog
ICogQ29uc3RhbnRzIGZvciBub3JtYWxpemF0aW9uIG1vZGVzLgotICogQHN0YWJsZSBJQ1UgMi4w
CisgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGluc3RlYWQuCiAgKi8KIHR5cGVk
ZWYgZW51bSB7Ci0gIC8qKiBObyBkZWNvbXBvc2l0aW9uL2NvbXBvc2l0aW9uLiBAc3RhYmxlIElD
VSAyLjAgKi8KLSAgVU5PUk1fTk9ORSA9IDEsIAotICAvKiogQ2Fub25pY2FsIGRlY29tcG9zaXRp
b24uIEBzdGFibGUgSUNVIDIuMCAqLworICAvKiogTm8gZGVjb21wb3NpdGlvbi9jb21wb3NpdGlv
bi4gQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1bm9ybTIuaCBpbnN0ZWFkLiAqLworICBVTk9STV9O
T05FID0gMSwKKyAgLyoqIENhbm9uaWNhbCBkZWNvbXBvc2l0aW9uLiBAZGVwcmVjYXRlZCBJQ1Ug
NTYgVXNlIHVub3JtMi5oIGluc3RlYWQuICovCiAgIFVOT1JNX05GRCA9IDIsCi0gIC8qKiBDb21w
YXRpYmlsaXR5IGRlY29tcG9zaXRpb24uIEBzdGFibGUgSUNVIDIuMCAqLworICAvKiogQ29tcGF0
aWJpbGl0eSBkZWNvbXBvc2l0aW9uLiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGlu
c3RlYWQuICovCiAgIFVOT1JNX05GS0QgPSAzLAotICAvKiogQ2Fub25pY2FsIGRlY29tcG9zaXRp
b24gZm9sbG93ZWQgYnkgY2Fub25pY2FsIGNvbXBvc2l0aW9uLiBAc3RhYmxlIElDVSAyLjAgKi8K
KyAgLyoqIENhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIGZvbGxvd2VkIGJ5IGNhbm9uaWNhbCBjb21w
b3NpdGlvbi4gQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1bm9ybTIuaCBpbnN0ZWFkLiAqLwogICBV
Tk9STV9ORkMgPSA0LAotICAvKiogRGVmYXVsdCBub3JtYWxpemF0aW9uLiBAc3RhYmxlIElDVSAy
LjAgKi8KLSAgVU5PUk1fREVGQVVMVCA9IFVOT1JNX05GQywgCi0gIC8qKiBDb21wYXRpYmlsaXR5
IGRlY29tcG9zaXRpb24gZm9sbG93ZWQgYnkgY2Fub25pY2FsIGNvbXBvc2l0aW9uLiBAc3RhYmxl
IElDVSAyLjAgKi8KKyAgLyoqIERlZmF1bHQgbm9ybWFsaXphdGlvbi4gQGRlcHJlY2F0ZWQgSUNV
IDU2IFVzZSB1bm9ybTIuaCBpbnN0ZWFkLiAqLworICBVTk9STV9ERUZBVUxUID0gVU5PUk1fTkZD
LAorICAvKiogQ29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uIGZvbGxvd2VkIGJ5IGNhbm9uaWNh
bCBjb21wb3NpdGlvbi4gQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1bm9ybTIuaCBpbnN0ZWFkLiAq
LwogICBVTk9STV9ORktDID01LAotICAvKiogIkZhc3QgQyBvciBEIiBmb3JtLiBAc3RhYmxlIElD
VSAyLjAgKi8KKyAgLyoqICJGYXN0IEMgb3IgRCIgZm9ybS4gQGRlcHJlY2F0ZWQgSUNVIDU2IFVz
ZSB1bm9ybTIuaCBpbnN0ZWFkLiAqLwogICBVTk9STV9GQ0QgPSA2LAogCi0gIC8qKiBPbmUgbW9y
ZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbGl6YXRpb24gbW9kZSBjb25zdGFudC4gQHN0YWJsZSBJ
Q1UgMi4wICovCisgIC8qKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbGl6YXRpb24g
bW9kZSBjb25zdGFudC4gQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1bm9ybTIuaCBpbnN0ZWFkLiAq
LwogICBVTk9STV9NT0RFX0NPVU5UCiB9IFVOb3JtYWxpemF0aW9uTW9kZTsKIAorI2lmbmRlZiBV
X0hJREVfREVQUkVDQVRFRF9BUEkKKwogLyoqCiAgKiBDb25zdGFudHMgZm9yIG9wdGlvbnMgZmxh
Z3MgZm9yIG5vcm1hbGl6YXRpb24uCiAgKiBVc2UgMCBmb3IgZGVmYXVsdCBvcHRpb25zLAogICog
aW5jbHVkaW5nIG5vcm1hbGl6YXRpb24gYWNjb3JkaW5nIHRvIHRoZSBVbmljb2RlIHZlcnNpb24K
ICAqIHRoYXQgaXMgY3VycmVudGx5IHN1cHBvcnRlZCBieSBJQ1UgKHNlZSB1X2dldFVuaWNvZGVW
ZXJzaW9uKS4KLSAqIEBzdGFibGUgSUNVIDIuNgorICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1
bm9ybTIuaCBpbnN0ZWFkLgogICovCiBlbnVtIHsKICAgICAvKioKICAgICAgKiBPcHRpb25zIGJp
dCBzZXQgdmFsdWUgdG8gc2VsZWN0IFVuaWNvZGUgMy4yIG5vcm1hbGl6YXRpb24KICAgICAgKiAo
ZXhjZXB0IE5vcm1hbGl6YXRpb25Db3JyZWN0aW9ucykuCiAgICAgICogQXQgbW9zdCBvbmUgVW5p
Y29kZSB2ZXJzaW9uIGNhbiBiZSBzZWxlY3RlZCBhdCBhIHRpbWUuCi0gICAgICogQHN0YWJsZSBJ
Q1UgMi42CisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1bm9ybTIuaCBpbnN0ZWFkLgog
ICAgICAqLwogICAgIFVOT1JNX1VOSUNPREVfM18yPTB4MjAKIH07CkBAIC0xODAsNyArMTg3LDcg
QEAgZW51bSB7CiAgKiBpbnRlcm5hbCBub3JtYWxpemF0aW9uIGZ1bmN0aW9ucy4pCiAgKgogICog
QHNlZSB1bm9ybV9jb21wYXJlCi0gKiBAc3RhYmxlIElDVSAyLjYKKyAqIEBkZXByZWNhdGVkIElD
VSA1NiBVc2UgdW5vcm0yLmggaW5zdGVhZC4KICAqLwogI2RlZmluZSBVTk9STV9DT01QQVJFX05P
Uk1fT1BUSU9OU19TSElGVCAyMAogCkBAIC0xOTIsNyArMTk5LDcgQEAgZW51bSB7CiAgKgogICog
QHBhcmFtIHNvdXJjZSBUaGUgc3RyaW5nIHRvIG5vcm1hbGl6ZS4KICAqIEBwYXJhbSBzb3VyY2VM
ZW5ndGggVGhlIGxlbmd0aCBvZiBzb3VyY2UsIG9yIC0xIGlmIE5VTC10ZXJtaW5hdGVkLgotICog
QHBhcmFtIG1vZGUgVGhlIG5vcm1hbGl6YXRpb24gbW9kZTsgb25lIG9mIFVOT1JNX05PTkUsIAor
ICogQHBhcmFtIG1vZGUgVGhlIG5vcm1hbGl6YXRpb24gbW9kZTsgb25lIG9mIFVOT1JNX05PTkUs
CiAgKiAgICAgICAgICAgICBVTk9STV9ORkQsIFVOT1JNX05GQywgVU5PUk1fTkZLQywgVU5PUk1f
TkZLRCwgVU5PUk1fREVGQVVMVC4KICAqIEBwYXJhbSBvcHRpb25zIFRoZSBub3JtYWxpemF0aW9u
IG9wdGlvbnMsIE9SZWQgdG9nZXRoZXIgKDAgZm9yIG5vIG9wdGlvbnMpLgogICogQHBhcmFtIHJl
c3VsdCBBIHBvaW50ZXIgdG8gYSBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgcmVzdWx0IHN0cmluZy4K
QEAgLTIwMSwyMyArMjA4LDIzIEBAIGVudW0gewogICogQHBhcmFtIHN0YXR1cyBBIHBvaW50ZXIg
dG8gYSBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycy4KICAqIEByZXR1cm4gVGhlIHRv
dGFsIGJ1ZmZlciBzaXplIG5lZWRlZDsgaWYgZ3JlYXRlciB0aGFuIHJlc3VsdExlbmd0aCwKICAq
ICAgICAgICAgdGhlIG91dHB1dCB3YXMgdHJ1bmNhdGVkLCBhbmQgdGhlIGVycm9yIGNvZGUgaXMg
c2V0IHRvIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SLgotICogQHN0YWJsZSBJQ1UgMi4wCisgKiBA
ZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGluc3RlYWQuCiAgKi8KLVVfU1RBQkxFIGlu
dDMyX3QgVV9FWFBPUlQyIAorVV9ERVBSRUNBVEVEIGludDMyX3QgVV9FWFBPUlQyCiB1bm9ybV9u
b3JtYWxpemUoY29uc3QgVUNoYXIgKnNvdXJjZSwgaW50MzJfdCBzb3VyY2VMZW5ndGgsCiAgICAg
ICAgICAgICAgICAgVU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUsIGludDMyX3Qgb3B0aW9ucywKICAg
ICAgICAgICAgICAgICBVQ2hhciAqcmVzdWx0LCBpbnQzMl90IHJlc3VsdExlbmd0aCwKICAgICAg
ICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwogCiAvKioKLSAqIFBlcmZvcm1pbmcgcXVp
Y2sgY2hlY2sgb24gYSBzdHJpbmcsIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBzdHJpbmcg
aXMgCisgKiBQZXJmb3JtaW5nIHF1aWNrIGNoZWNrIG9uIGEgc3RyaW5nLCB0byBxdWlja2x5IGRl
dGVybWluZSBpZiB0aGUgc3RyaW5nIGlzCiAgKiBpbiBhIHBhcnRpY3VsYXIgbm9ybWFsaXphdGlv
biBmb3JtYXQuCiAgKiBUaHJlZSB0eXBlcyBvZiByZXN1bHQgY2FuIGJlIHJldHVybmVkIFVOT1JN
X1lFUywgVU5PUk1fTk8gb3IKICAqIFVOT1JNX01BWUJFLiBSZXN1bHQgVU5PUk1fWUVTIGluZGlj
YXRlcyB0aGF0IHRoZSBhcmd1bWVudAogICogc3RyaW5nIGlzIGluIHRoZSBkZXNpcmVkIG5vcm1h
bGl6ZWQgZm9ybWF0LCBVTk9STV9OTyBkZXRlcm1pbmVzIHRoYXQKLSAqIGFyZ3VtZW50IHN0cmlu
ZyBpcyBub3QgaW4gdGhlIGRlc2lyZWQgbm9ybWFsaXplZCBmb3JtYXQuIEEgCi0gKiBVTk9STV9N
QVlCRSByZXN1bHQgaW5kaWNhdGVzIHRoYXQgYSBtb3JlIHRob3JvdWdoIGNoZWNrIGlzIHJlcXVp
cmVkLCAKLSAqIHRoZSB1c2VyIG1heSBoYXZlIHRvIHB1dCB0aGUgc3RyaW5nIGluIGl0cyBub3Jt
YWxpemVkIGZvcm0gYW5kIGNvbXBhcmUgdGhlIAorICogYXJndW1lbnQgc3RyaW5nIGlzIG5vdCBp
biB0aGUgZGVzaXJlZCBub3JtYWxpemVkIGZvcm1hdC4gQQorICogVU5PUk1fTUFZQkUgcmVzdWx0
IGluZGljYXRlcyB0aGF0IGEgbW9yZSB0aG9yb3VnaCBjaGVjayBpcyByZXF1aXJlZCwKKyAqIHRo
ZSB1c2VyIG1heSBoYXZlIHRvIHB1dCB0aGUgc3RyaW5nIGluIGl0cyBub3JtYWxpemVkIGZvcm0g
YW5kIGNvbXBhcmUgdGhlCiAgKiByZXN1bHRzLgogICoKICAqIEBwYXJhbSBzb3VyY2UgICAgICAg
c3RyaW5nIGZvciBkZXRlcm1pbmluZyBpZiBpdCBpcyBpbiBhIG5vcm1hbGl6ZWQgZm9ybWF0CkBA
IC0yMjcsOSArMjM0LDkgQEAgdW5vcm1fbm9ybWFsaXplKGNvbnN0IFVDaGFyICpzb3VyY2UsIGlu
dDMyX3Qgc291cmNlTGVuZ3RoLAogICogQHJldHVybiBVTk9STV9ZRVMsIFVOT1JNX05PIG9yIFVO
T1JNX01BWUJFCiAgKgogICogQHNlZSB1bm9ybV9pc05vcm1hbGl6ZWQKLSAqIEBzdGFibGUgSUNV
IDIuMAorICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1bm9ybTIuaCBpbnN0ZWFkLgogICovCi1V
X1NUQUJMRSBVTm9ybWFsaXphdGlvbkNoZWNrUmVzdWx0IFVfRVhQT1JUMgorVV9ERVBSRUNBVEVE
IFVOb3JtYWxpemF0aW9uQ2hlY2tSZXN1bHQgVV9FWFBPUlQyCiB1bm9ybV9xdWlja0NoZWNrKGNv
bnN0IFVDaGFyICpzb3VyY2UsIGludDMyX3Qgc291cmNlbGVuZ3RoLAogICAgICAgICAgICAgICAg
ICBVTm9ybWFsaXphdGlvbk1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAq
c3RhdHVzKTsKQEAgLTI0OCwxMCArMjU1LDEwIEBAIHVub3JtX3F1aWNrQ2hlY2soY29uc3QgVUNo
YXIgKnNvdXJjZSwgaW50MzJfdCBzb3VyY2VsZW5ndGgsCiAgKgogICogQHNlZSB1bm9ybV9xdWlj
a0NoZWNrCiAgKiBAc2VlIHVub3JtX2lzTm9ybWFsaXplZAotICogQHN0YWJsZSBJQ1UgMi42Cisg
KiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGluc3RlYWQuCiAgKi8KLVVfU1RBQkxF
IFVOb3JtYWxpemF0aW9uQ2hlY2tSZXN1bHQgVV9FWFBPUlQyCi11bm9ybV9xdWlja0NoZWNrV2l0
aE9wdGlvbnMoY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgsIAorVV9ERVBSRUNB
VEVEIFVOb3JtYWxpemF0aW9uQ2hlY2tSZXN1bHQgVV9FWFBPUlQyCit1bm9ybV9xdWlja0NoZWNr
V2l0aE9wdGlvbnMoY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUsIGludDMyX3Qgb3B0
aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2Rl
KTsKIApAQCAtMjc0LDkgKzI4MSw5IEBAIHVub3JtX3F1aWNrQ2hlY2tXaXRoT3B0aW9ucyhjb25z
dCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwKICAqICAgICAgICAgIm1vZGUiIG5vcm1h
bGl6YXRpb24gZm9ybS4KICAqCiAgKiBAc2VlIHVub3JtX3F1aWNrQ2hlY2sKLSAqIEBzdGFibGUg
SUNVIDIuMgorICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1bm9ybTIuaCBpbnN0ZWFkLgogICov
Ci1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK1VfREVQUkVDQVRFRCBVQm9vbCBVX0VYUE9SVDIK
IHVub3JtX2lzTm9ybWFsaXplZChjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICBVTm9ybWFsaXphdGlvbk1vZGUgbW9kZSwKICAgICAgICAgICAg
ICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKQEAgLTI5Niw5ICszMDMsOSBAQCB1bm9y
bV9pc05vcm1hbGl6ZWQoY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgsCiAgKgog
ICogQHNlZSB1bm9ybV9xdWlja0NoZWNrCiAgKiBAc2VlIHVub3JtX2lzTm9ybWFsaXplZAotICog
QHN0YWJsZSBJQ1UgMi42CisgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGluc3Rl
YWQuCiAgKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgorVV9ERVBSRUNBVEVEIFVCb29sIFVf
RVhQT1JUMgogdW5vcm1faXNOb3JtYWxpemVkV2l0aE9wdGlvbnMoY29uc3QgVUNoYXIgKnNyYywg
aW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTm9ybWFs
aXphdGlvbk1vZGUgbW9kZSwgaW50MzJfdCBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CkBAIC0zNzQsOSArMzgxLDkgQEAgdW5v
cm1faXNOb3JtYWxpemVkV2l0aE9wdGlvbnMoY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNM
ZW5ndGgsCiAgKiBAc2VlIHVub3JtX3ByZXZpb3VzCiAgKiBAc2VlIHVub3JtX25vcm1hbGl6ZQog
ICoKLSAqIEBzdGFibGUgSUNVIDIuMQorICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1bm9ybTIu
aCBpbnN0ZWFkLgogICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgorVV9ERVBSRUNBVEVE
IGludDMyX3QgVV9FWFBPUlQyCiB1bm9ybV9uZXh0KFVDaGFySXRlcmF0b3IgKnNyYywKICAgICAg
ICAgICAgVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LAogICAgICAgICAgICBVTm9y
bWFsaXphdGlvbk1vZGUgbW9kZSwgaW50MzJfdCBvcHRpb25zLApAQCAtNDA3LDkgKzQxNCw5IEBA
IHVub3JtX25leHQoVUNoYXJJdGVyYXRvciAqc3JjLAogICogQHNlZSB1bm9ybV9uZXh0CiAgKiBA
c2VlIHVub3JtX25vcm1hbGl6ZQogICoKLSAqIEBzdGFibGUgSUNVIDIuMQorICogQGRlcHJlY2F0
ZWQgSUNVIDU2IFVzZSB1bm9ybTIuaCBpbnN0ZWFkLgogICovCi1VX1NUQUJMRSBpbnQzMl90IFVf
RVhQT1JUMgorVV9ERVBSRUNBVEVEIGludDMyX3QgVV9FWFBPUlQyCiB1bm9ybV9wcmV2aW91cyhV
Q2hhckl0ZXJhdG9yICpzcmMsCiAgICAgICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJfdCBk
ZXN0Q2FwYWNpdHksCiAgICAgICAgICAgICAgICBVTm9ybWFsaXphdGlvbk1vZGUgbW9kZSwgaW50
MzJfdCBvcHRpb25zLApAQCAtNDUxLDExMSArNDU4LDE1IEBAIHVub3JtX3ByZXZpb3VzKFVDaGFy
SXRlcmF0b3IgKnNyYywKICAqIEBzZWUgdW5vcm1fbmV4dAogICogQHNlZSB1bm9ybV9wcmV2aW91
cwogICoKLSAqIEBzdGFibGUgSUNVIDIuMQorICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1bm9y
bTIuaCBpbnN0ZWFkLgogICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgorVV9ERVBSRUNB
VEVEIGludDMyX3QgVV9FWFBPUlQyCiB1bm9ybV9jb25jYXRlbmF0ZShjb25zdCBVQ2hhciAqbGVm
dCwgaW50MzJfdCBsZWZ0TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnJp
Z2h0LCBpbnQzMl90IHJpZ2h0TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgVUNoYXIgKmRlc3Qs
IGludDMyX3QgZGVzdENhcGFjaXR5LAogICAgICAgICAgICAgICAgICAgVU5vcm1hbGl6YXRpb25N
b2RlIG1vZGUsIGludDMyX3Qgb3B0aW9ucywKICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUg
KnBFcnJvckNvZGUpOwogCi0vKioKLSAqIE9wdGlvbiBiaXQgZm9yIHVub3JtX2NvbXBhcmU6Ci0g
KiBCb3RoIGlucHV0IHN0cmluZ3MgYXJlIGFzc3VtZWQgdG8gZnVsZmlsbCBGQ0QgY29uZGl0aW9u
cy4KLSAqIEBzdGFibGUgSUNVIDIuMgotICovCi0jZGVmaW5lIFVOT1JNX0lOUFVUX0lTX0ZDRCAg
ICAgICAgICAweDIwMDAwCi0KLS8qKgotICogT3B0aW9uIGJpdCBmb3IgdW5vcm1fY29tcGFyZToK
LSAqIFBlcmZvcm0gY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uLgotICogQHN0YWJsZSBJQ1Ug
Mi4yCi0gKi8KLSNkZWZpbmUgVV9DT01QQVJFX0lHTk9SRV9DQVNFICAgICAgIDB4MTAwMDAKLQot
I2lmbmRlZiBVX0NPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUgotLyogc2VlIGFsc28gdW5pc3RyLmgg
YW5kIHVzdHJpbmcuaCAqLwotLyoqCi0gKiBPcHRpb24gYml0IGZvciB1X3N0ckNhc2VDb21wYXJl
LCB1X3N0cmNhc2VjbXAsIHVub3JtX2NvbXBhcmUsIGV0YzoKLSAqIENvbXBhcmUgc3RyaW5ncyBp
biBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1bml0IG9yZGVyLgotICogQHN0YWJs
ZSBJQ1UgMi4yCi0gKi8KLSNkZWZpbmUgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIgIDB4ODAw
MAotI2VuZGlmCi0KLS8qKgotICogQ29tcGFyZSB0d28gc3RyaW5ncyBmb3IgY2Fub25pY2FsIGVx
dWl2YWxlbmNlLgotICogRnVydGhlciBvcHRpb25zIGluY2x1ZGUgY2FzZS1pbnNlbnNpdGl2ZSBj
b21wYXJpc29uIGFuZAotICogY29kZSBwb2ludCBvcmRlciAoYXMgb3Bwb3NlZCB0byBjb2RlIHVu
aXQgb3JkZXIpLgotICoKLSAqIENhbm9uaWNhbCBlcXVpdmFsZW5jZSBiZXR3ZWVuIHR3byBzdHJp
bmdzIGlzIGRlZmluZWQgYXMgdGhlaXIgbm9ybWFsaXplZAotICogZm9ybXMgKE5GRCBvciBORkMp
IGJlaW5nIGlkZW50aWNhbC4KLSAqIFRoaXMgZnVuY3Rpb24gY29tcGFyZXMgc3RyaW5ncyBpbmNy
ZW1lbnRhbGx5IGluc3RlYWQgb2Ygbm9ybWFsaXppbmcKLSAqIChhbmQgb3B0aW9uYWxseSBjYXNl
LWZvbGRpbmcpIGJvdGggc3RyaW5ncyBlbnRpcmVseSwKLSAqIGltcHJvdmluZyBwZXJmb3JtYW5j
ZSBzaWduaWZpY2FudGx5LgotICoKLSAqIEJ1bGsgbm9ybWFsaXphdGlvbiBpcyBvbmx5IG5lY2Vz
c2FyeSBpZiB0aGUgc3RyaW5ncyBkbyBub3QgZnVsZmlsbCB0aGUgRkNECi0gKiBjb25kaXRpb25z
LiBPbmx5IGluIHRoaXMgY2FzZSwgYW5kIG9ubHkgaWYgdGhlIHN0cmluZ3MgYXJlIHJlbGF0aXZl
bHkgbG9uZywKLSAqIGlzIG1lbW9yeSBhbGxvY2F0ZWQgdGVtcG9yYXJpbHkuCi0gKiBGb3IgRkNE
IHN0cmluZ3MgYW5kIHNob3J0IG5vbi1GQ0Qgc3RyaW5ncyB0aGVyZSBpcyBubyBtZW1vcnkgYWxs
b2NhdGlvbi4KLSAqCi0gKiBTZW1hbnRpY2FsbHksIHRoaXMgaXMgZXF1aXZhbGVudCB0bwotICog
ICBzdHJjbXBbQ29kZVBvaW50T3JkZXJdKE5GRChmb2xkQ2FzZShORkQoczEpKSksIE5GRChmb2xk
Q2FzZShORkQoczIpKSkpCi0gKiB3aGVyZSBjb2RlIHBvaW50IG9yZGVyIGFuZCBmb2xkQ2FzZSBh
cmUgYWxsIG9wdGlvbmFsLgotICoKLSAqIFVBWCAyMSAyLjUgQ2FzZWxlc3MgTWF0Y2hpbmcgc3Bl
Y2lmaWVzIHRoYXQgZm9yIGEgY2Fub25pY2FsIGNhc2VsZXNzIG1hdGNoCi0gKiB0aGUgY2FzZSBm
b2xkaW5nIG11c3QgYmUgcGVyZm9ybWVkIGZpcnN0LCB0aGVuIHRoZSBub3JtYWxpemF0aW9uLgot
ICoKLSAqIEBwYXJhbSBzMSBGaXJzdCBzb3VyY2Ugc3RyaW5nLgotICogQHBhcmFtIGxlbmd0aDEg
TGVuZ3RoIG9mIGZpcnN0IHNvdXJjZSBzdHJpbmcsIG9yIC0xIGlmIE5VTC10ZXJtaW5hdGVkLgot
ICoKLSAqIEBwYXJhbSBzMiBTZWNvbmQgc291cmNlIHN0cmluZy4KLSAqIEBwYXJhbSBsZW5ndGgy
IExlbmd0aCBvZiBzZWNvbmQgc291cmNlIHN0cmluZywgb3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQu
Ci0gKgotICogQHBhcmFtIG9wdGlvbnMgQSBiaXQgc2V0IG9mIG9wdGlvbnM6Ci0gKiAgIC0gVV9G
T0xEX0NBU0VfREVGQVVMVCBvciAwIGlzIHVzZWQgZm9yIGRlZmF1bHQgb3B0aW9uczoKLSAqICAg
ICBDYXNlLXNlbnNpdGl2ZSBjb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciwgYW5kIHRoZSBp
bnB1dCBzdHJpbmdzCi0gKiAgICAgYXJlIHF1aWNrLWNoZWNrZWQgZm9yIEZDRC4KLSAqCi0gKiAg
IC0gVU5PUk1fSU5QVVRfSVNfRkNECi0gKiAgICAgU2V0IGlmIHRoZSBjYWxsZXIga25vd3MgdGhh
dCBib3RoIHMxIGFuZCBzMiBmdWxmaWxsIHRoZSBGQ0QgY29uZGl0aW9ucy4KLSAqICAgICBJZiBu
b3Qgc2V0LCB0aGUgZnVuY3Rpb24gd2lsbCBxdWlja0NoZWNrIGZvciBGQ0QKLSAqICAgICBhbmQg
bm9ybWFsaXplIGlmIG5lY2Vzc2FyeS4KLSAqCi0gKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRf
T1JERVIKLSAqICAgICBTZXQgdG8gY2hvb3NlIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBj
b2RlIHVuaXQgb3JkZXIKLSAqICAgICAoc2VlIHVfc3RyQ29tcGFyZSBmb3IgZGV0YWlscykuCi0g
KgotICogICAtIFVfQ09NUEFSRV9JR05PUkVfQ0FTRQotICogICAgIFNldCB0byBjb21wYXJlIHN0
cmluZ3MgY2FzZS1pbnNlbnNpdGl2ZWx5IHVzaW5nIGNhc2UgZm9sZGluZywKLSAqICAgICBpbnN0
ZWFkIG9mIGNhc2Utc2Vuc2l0aXZlbHkuCi0gKiAgICAgSWYgc2V0LCB0aGVuIHRoZSBmb2xsb3dp
bmcgY2FzZSBmb2xkaW5nIG9wdGlvbnMgYXJlIHVzZWQuCi0gKgotICogICAtIE9wdGlvbnMgYXMg
dXNlZCB3aXRoIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvbnMsIGN1cnJlbnRseToKLSAqCi0g
KiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKLSAqICAgIChzZWUgdV9zdHJDYXNl
Q29tcGFyZSBmb3IgZGV0YWlscykKLSAqCi0gKiAgIC0gcmVndWxhciBub3JtYWxpemF0aW9uIG9w
dGlvbnMgc2hpZnRlZCBsZWZ0IGJ5IFVOT1JNX0NPTVBBUkVfTk9STV9PUFRJT05TX1NISUZUCi0g
KgotICogQHBhcmFtIHBFcnJvckNvZGUgSUNVIGVycm9yIGNvZGUgaW4vb3V0IHBhcmFtZXRlci4K
LSAqICAgICAgICAgICAgICAgICAgIE11c3QgZnVsZmlsbCBVX1NVQ0NFU1MgYmVmb3JlIHRoZSBm
dW5jdGlvbiBjYWxsLgotICogQHJldHVybiA8MCBvciAwIG9yID4wIGFzIHVzdWFsIGZvciBzdHJp
bmcgY29tcGFyaXNvbnMKLSAqCi0gKiBAc2VlIHVub3JtX25vcm1hbGl6ZQotICogQHNlZSBVTk9S
TV9GQ0QKLSAqIEBzZWUgdV9zdHJDb21wYXJlCi0gKiBAc2VlIHVfc3RyQ2FzZUNvbXBhcmUKLSAq
Ci0gKiBAc3RhYmxlIElDVSAyLjIKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXVu
b3JtX2NvbXBhcmUoY29uc3QgVUNoYXIgKnMxLCBpbnQzMl90IGxlbmd0aDEsCi0gICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyICpzMiwgaW50MzJfdCBsZW5ndGgyLAotICAgICAgICAgICAgICB1aW50
MzJfdCBvcHRpb25zLAotICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKLQor
I2VuZGlmICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KICNlbmRpZiAvKiAjaWYgIVVDT05G
SUdfTk9fTk9STUFMSVpBVElPTiAqLwotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdW5vcm0yLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vub3JtMi5oCmlu
ZGV4IDcxNTJmYzEwOTQ2NmQwN2M1MGJiY2E1YzlkZjdiNzdjMTk5N2Y5MDAuLmE5YmQwMmYyNTYz
NjFmMzQzOGNiNzU5NzJkOTNkNjY4ZTIyM2IzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdW5vcm0yLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bm9ybTIuaApA
QCAtMSwxMiArMSwxNCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5k
IG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCi0qICAgQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTMsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyog
ICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5l
cwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIHVub3JtMi5oCi0qICAgZW5j
b2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAg
IDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTMwLDYgKzMyLDcgQEAKIAog
I2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCiAjaW5jbHVkZSAidW5pY29kZS9sb2NhbHBvaW50
ZXIuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0cmluZ29wdGlvbnMuaCIKICNpbmNsdWRlICJ1bmlj
b2RlL3VzZXQuaCIKIAogLyoqCkBAIC01MjQsNSArNTI3LDc3IEBAIHVub3JtMl9oYXNCb3VuZGFy
eUFmdGVyKGNvbnN0IFVOb3JtYWxpemVyMiAqbm9ybTIsIFVDaGFyMzIgYyk7CiBVX1NUQUJMRSBV
Qm9vbCBVX0VYUE9SVDIKIHVub3JtMl9pc0luZXJ0KGNvbnN0IFVOb3JtYWxpemVyMiAqbm9ybTIs
IFVDaGFyMzIgYyk7CiAKKy8qKgorICogQ29tcGFyZXMgdHdvIHN0cmluZ3MgZm9yIGNhbm9uaWNh
bCBlcXVpdmFsZW5jZS4KKyAqIEZ1cnRoZXIgb3B0aW9ucyBpbmNsdWRlIGNhc2UtaW5zZW5zaXRp
dmUgY29tcGFyaXNvbiBhbmQKKyAqIGNvZGUgcG9pbnQgb3JkZXIgKGFzIG9wcG9zZWQgdG8gY29k
ZSB1bml0IG9yZGVyKS4KKyAqCisgKiBDYW5vbmljYWwgZXF1aXZhbGVuY2UgYmV0d2VlbiB0d28g
c3RyaW5ncyBpcyBkZWZpbmVkIGFzIHRoZWlyIG5vcm1hbGl6ZWQKKyAqIGZvcm1zIChORkQgb3Ig
TkZDKSBiZWluZyBpZGVudGljYWwuCisgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIHN0cmluZ3Mg
aW5jcmVtZW50YWxseSBpbnN0ZWFkIG9mIG5vcm1hbGl6aW5nCisgKiAoYW5kIG9wdGlvbmFsbHkg
Y2FzZS1mb2xkaW5nKSBib3RoIHN0cmluZ3MgZW50aXJlbHksCisgKiBpbXByb3ZpbmcgcGVyZm9y
bWFuY2Ugc2lnbmlmaWNhbnRseS4KKyAqCisgKiBCdWxrIG5vcm1hbGl6YXRpb24gaXMgb25seSBu
ZWNlc3NhcnkgaWYgdGhlIHN0cmluZ3MgZG8gbm90IGZ1bGZpbGwgdGhlIEZDRAorICogY29uZGl0
aW9ucy4gT25seSBpbiB0aGlzIGNhc2UsIGFuZCBvbmx5IGlmIHRoZSBzdHJpbmdzIGFyZSByZWxh
dGl2ZWx5IGxvbmcsCisgKiBpcyBtZW1vcnkgYWxsb2NhdGVkIHRlbXBvcmFyaWx5LgorICogRm9y
IEZDRCBzdHJpbmdzIGFuZCBzaG9ydCBub24tRkNEIHN0cmluZ3MgdGhlcmUgaXMgbm8gbWVtb3J5
IGFsbG9jYXRpb24uCisgKgorICogU2VtYW50aWNhbGx5LCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8K
KyAqICAgc3RyY21wW0NvZGVQb2ludE9yZGVyXShORkQoZm9sZENhc2UoTkZEKHMxKSkpLCBORkQo
Zm9sZENhc2UoTkZEKHMyKSkpKQorICogd2hlcmUgY29kZSBwb2ludCBvcmRlciBhbmQgZm9sZENh
c2UgYXJlIGFsbCBvcHRpb25hbC4KKyAqCisgKiBVQVggMjEgMi41IENhc2VsZXNzIE1hdGNoaW5n
IHNwZWNpZmllcyB0aGF0IGZvciBhIGNhbm9uaWNhbCBjYXNlbGVzcyBtYXRjaAorICogdGhlIGNh
c2UgZm9sZGluZyBtdXN0IGJlIHBlcmZvcm1lZCBmaXJzdCwgdGhlbiB0aGUgbm9ybWFsaXphdGlv
bi4KKyAqCisgKiBAcGFyYW0gczEgRmlyc3Qgc291cmNlIHN0cmluZy4KKyAqIEBwYXJhbSBsZW5n
dGgxIExlbmd0aCBvZiBmaXJzdCBzb3VyY2Ugc3RyaW5nLCBvciAtMSBpZiBOVUwtdGVybWluYXRl
ZC4KKyAqCisgKiBAcGFyYW0gczIgU2Vjb25kIHNvdXJjZSBzdHJpbmcuCisgKiBAcGFyYW0gbGVu
Z3RoMiBMZW5ndGggb2Ygc2Vjb25kIHNvdXJjZSBzdHJpbmcsIG9yIC0xIGlmIE5VTC10ZXJtaW5h
dGVkLgorICoKKyAqIEBwYXJhbSBvcHRpb25zIEEgYml0IHNldCBvZiBvcHRpb25zOgorICogICAt
IFVfRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0IG9wdGlvbnM6Cisg
KiAgICAgQ2FzZS1zZW5zaXRpdmUgY29tcGFyaXNvbiBpbiBjb2RlIHVuaXQgb3JkZXIsIGFuZCB0
aGUgaW5wdXQgc3RyaW5ncworICogICAgIGFyZSBxdWljay1jaGVja2VkIGZvciBGQ0QuCisgKgor
ICogICAtIFVOT1JNX0lOUFVUX0lTX0ZDRAorICogICAgIFNldCBpZiB0aGUgY2FsbGVyIGtub3dz
IHRoYXQgYm90aCBzMSBhbmQgczIgZnVsZmlsbCB0aGUgRkNEIGNvbmRpdGlvbnMuCisgKiAgICAg
SWYgbm90IHNldCwgdGhlIGZ1bmN0aW9uIHdpbGwgcXVpY2tDaGVjayBmb3IgRkNECisgKiAgICAg
YW5kIG5vcm1hbGl6ZSBpZiBuZWNlc3NhcnkuCisgKgorICogICAtIFVfQ09NUEFSRV9DT0RFX1BP
SU5UX09SREVSCisgKiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQg
b2YgY29kZSB1bml0IG9yZGVyCisgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMp
LgorICoKKyAqICAgLSBVX0NPTVBBUkVfSUdOT1JFX0NBU0UKKyAqICAgICBTZXQgdG8gY29tcGFy
ZSBzdHJpbmdzIGNhc2UtaW5zZW5zaXRpdmVseSB1c2luZyBjYXNlIGZvbGRpbmcsCisgKiAgICAg
aW5zdGVhZCBvZiBjYXNlLXNlbnNpdGl2ZWx5LgorICogICAgIElmIHNldCwgdGhlbiB0aGUgZm9s
bG93aW5nIGNhc2UgZm9sZGluZyBvcHRpb25zIGFyZSB1c2VkLgorICoKKyAqICAgLSBPcHRpb25z
IGFzIHVzZWQgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb25zLCBjdXJyZW50bHk6Cisg
KgorICogICAtIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCisgKiAgICAoc2VlIHVfc3Ry
Q2FzZUNvbXBhcmUgZm9yIGRldGFpbHMpCisgKgorICogICAtIHJlZ3VsYXIgbm9ybWFsaXphdGlv
biBvcHRpb25zIHNoaWZ0ZWQgbGVmdCBieSBVTk9STV9DT01QQVJFX05PUk1fT1BUSU9OU19TSElG
VAorICoKKyAqIEBwYXJhbSBwRXJyb3JDb2RlIElDVSBlcnJvciBjb2RlIGluL291dCBwYXJhbWV0
ZXIuCisgKiAgICAgICAgICAgICAgICAgICBNdXN0IGZ1bGZpbGwgVV9TVUNDRVNTIGJlZm9yZSB0
aGUgZnVuY3Rpb24gY2FsbC4KKyAqIEByZXR1cm4gPDAgb3IgMCBvciA+MCBhcyB1c3VhbCBmb3Ig
c3RyaW5nIGNvbXBhcmlzb25zCisgKgorICogQHNlZSB1bm9ybV9ub3JtYWxpemUKKyAqIEBzZWUg
VU5PUk1fRkNECisgKiBAc2VlIHVfc3RyQ29tcGFyZQorICogQHNlZSB1X3N0ckNhc2VDb21wYXJl
CisgKgorICogQHN0YWJsZSBJQ1UgMi4yCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQy
Cit1bm9ybV9jb21wYXJlKGNvbnN0IFVDaGFyICpzMSwgaW50MzJfdCBsZW5ndGgxLAorICAgICAg
ICAgICAgICBjb25zdCBVQ2hhciAqczIsIGludDMyX3QgbGVuZ3RoMiwKKyAgICAgICAgICAgICAg
dWludDMyX3Qgb3B0aW9ucywKKyAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7
CisKICNlbmRpZiAgLyogIVVDT05GSUdfTk9fTk9STUFMSVpBVElPTiAqLwogI2VuZGlmICAvKiBf
X1VOT1JNMl9IX18gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW51bS5o
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bnVtLmgKaW5kZXggNDc4MDg5ZmYxMDQ2OGEwY2Nk
MDU0NWJiMTNkNjZiNjk0NzVkNjA3Mi4uMmFiMDliNWQwZDQxN2FlZTA2NmQyZmE2YTlmNWRjZDk4
MzdlOGFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bnVtLmgKKysrIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS91bnVtLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2
IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1z
IG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAxOTk3LTIwMTUsIEludGVybmF0aW9u
YWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4KQEAgLTIzLDYgKzI1
LDcgQEAKICNpbmNsdWRlICJ1bmljb2RlL3BhcnNlZXJyLmgiCiAjaW5jbHVkZSAidW5pY29kZS91
Zm9ybWF0dGFibGUuaCIKICNpbmNsdWRlICJ1bmljb2RlL3VkaXNwbGF5Y29udGV4dC5oIgorI2lu
Y2x1ZGUgInVuaWNvZGUvdWZpZWxkcG9zaXRlci5oIgogCiAvKioKICAqIFxmaWxlCkBAIC0xMTIs
NyArMTE1LDcgQEAKICAqIDxQPgogICogWW91IGNhbiBhbHNvIGNvbnRyb2wgdGhlIGRpc3BsYXkg
b2YgbnVtYmVycyB3aXRoIHN1Y2ggZnVuY3Rpb24gYXMKICAqIHVudW1fZ2V0QXR0cmlidXRlcygp
IGFuZCB1bnVtX3NldEF0dHJpYnV0ZXMoKSwgd2hpY2ggbGV0IHlvdSBzZXQgdGhlCi0gKiBtaW1p
bnVtIGZyYWN0aW9uIGRpZ2l0cywgZ3JvdXBpbmcsIGV0Yy4KKyAqIG1pbmltdW0gZnJhY3Rpb24g
ZGlnaXRzLCBncm91cGluZywgZXRjLgogICogQHNlZSBVTnVtYmVyRm9ybWF0QXR0cmlidXRlcyBm
b3IgbW9yZSBkZXRhaWxzCiAgKiA8UD4KICAqIFlvdSBjYW4gYWxzbyB1c2UgZm9ybXMgb2YgdGhl
IHBhcnNlIGFuZCBmb3JtYXQgbWV0aG9kcyB3aXRoCkBAIC0xMjMsNyArMTI2LDcgQEAKICAqIDwv
dWw+CiAgKiA8cD4KICAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gY2hhbmdlIG9yIHNldCB0aGUg
c3ltYm9scyB1c2VkIGZvciBhIHBhcnRpY3VsYXIKLSAqIGxvY2FsZSBsaWtlIHRoZSBjdXJyZW5j
eSBzeW1ib2wsIHRoZSBncm91cGluZyBzZXBlcmF0b3IgLCBtb25ldGFyeSBzZXBlcmF0b3IKKyAq
IGxvY2FsZSBsaWtlIHRoZSBjdXJyZW5jeSBzeW1ib2wsIHRoZSBncm91cGluZyBzZXBhcmF0b3Ig
LCBtb25ldGFyeSBzZXBhcmF0b3IKICAqIGV0YyBieSBtYWtpbmcgdXNlIG9mIGZ1bmN0aW9ucyB1
bnVtX3NldFN5bWJvbHMoKSBhbmQgdW51bV9nZXRTeW1ib2xzKCkuCiAgKi8KIApAQCAtMTQ4LDcg
KzE1MSwxMSBAQCB0eXBlZGVmIGVudW0gVU51bWJlckZvcm1hdFN0eWxlIHsKICAgICAgKi8KICAg
ICBVTlVNX0RFQ0lNQUw9MSwKICAgICAvKioKLSAgICAgKiBDdXJyZW5jeSBmb3JtYXQgd2l0aCBh
IGN1cnJlbmN5IHN5bWJvbCwgZS5nLiwgIiQxLjAwIi4KKyAgICAgKiBDdXJyZW5jeSBmb3JtYXQg
KGdlbmVyaWMpLgorICAgICAqIERlZmF1bHRzIHRvIFVOVU1fQ1VSUkVOQ1lfU1RBTkRBUkQgc3R5
bGUKKyAgICAgKiAodXNpbmcgY3VycmVuY3kgc3ltYm9sLCBlLmcuLCAiJDEuMDAiLCB3aXRoIG5v
bi1hY2NvdW50aW5nCisgICAgICogc3R5bGUgZm9yIG5lZ2F0aXZlIHZhbHVlcyBlLmcuIHVzaW5n
IG1pbnVzIHNpZ24pLgorICAgICAqIFRoZSBzcGVjaWZpYyBzdHlsZSBtYXkgYmUgc3BlY2lmaWVk
IHVzaW5nIHRoZSAtY2YtIGxvY2FsZSBrZXkuCiAgICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAg
ICovCiAgICAgVU5VTV9DVVJSRU5DWT0yLApAQCAtMjA1LDIzICsyMTIsNDUgQEAgdHlwZWRlZiBl
bnVtIFVOdW1iZXJGb3JtYXRTdHlsZSB7CiAgICAgLyoqCiAgICAgICogQ3VycmVuY3kgZm9ybWF0
IGZvciBhY2NvdW50aW5nLCBlLmcuLCAiKCQzLjAwKSIgZm9yCiAgICAgICogbmVnYXRpdmUgY3Vy
cmVuY3kgYW1vdW50IGluc3RlYWQgb2YgIi0kMy4wMCIgKHtAbGluayAjVU5VTV9DVVJSRU5DWX0p
LgorICAgICAqIE92ZXJyaWRlcyBhbnkgc3R5bGUgc3BlY2lmaWVkIHVzaW5nIC1jZi0ga2V5IGlu
IGxvY2FsZS4KICAgICAgKiBAc3RhYmxlIElDVSA1MwogICAgICAqLwogICAgIFVOVU1fQ1VSUkVO
Q1lfQUNDT1VOVElORz0xMiwKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAg
ICAqIEN1cnJlbmN5IGZvcm1hdCB3aXRoIGEgY3VycmVuY3kgc3ltYm9sIGdpdmVuIENBU0ggdXNh
Z2UsIGUuZy4sIAogICAgICAqICJOVCQzIiBpbnN0ZWFkIG9mICJOVCQzLjIzIi4KLSAgICAgKiBA
ZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBVTlVNX0NB
U0hfQ1VSUkVOQ1k9MTMsCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLworICAgIC8qKgor
ICAgICAqIERlY2ltYWwgZm9ybWF0IGV4cHJlc3NlZCB1c2luZyBjb21wYWN0IG5vdGF0aW9uCisg
ICAgICogKHNob3J0IGZvcm0sIGNvcnJlc3BvbmRzIHRvIFVOdW1iZXJDb21wYWN0U3R5bGU9VU5V
TV9TSE9SVCkKKyAgICAgKiBlLmcuICIyM0siLCAiNDVCIgorICAgICAqIEBzdGFibGUgSUNVIDU2
CisgICAgICovCisgICAgVU5VTV9ERUNJTUFMX0NPTVBBQ1RfU0hPUlQ9MTQsCisgICAgLyoqCisg
ICAgICogRGVjaW1hbCBmb3JtYXQgZXhwcmVzc2VkIHVzaW5nIGNvbXBhY3Qgbm90YXRpb24KKyAg
ICAgKiAobG9uZyBmb3JtLCBjb3JyZXNwb25kcyB0byBVTnVtYmVyQ29tcGFjdFN0eWxlPVVOVU1f
TE9ORykKKyAgICAgKiBlLmcuICIyMyB0aG91c2FuZCIsICI0NSBiaWxsaW9uIgorICAgICAqIEBz
dGFibGUgSUNVIDU2CisgICAgICovCisgICAgVU5VTV9ERUNJTUFMX0NPTVBBQ1RfTE9ORz0xNSwK
KyAgICAvKioKKyAgICAgKiBDdXJyZW5jeSBmb3JtYXQgd2l0aCBhIGN1cnJlbmN5IHN5bWJvbCwg
ZS5nLiwgIiQxLjAwIiwKKyAgICAgKiB1c2luZyBub24tYWNjb3VudGluZyBzdHlsZSBmb3IgbmVn
YXRpdmUgdmFsdWVzIChlLmcuIG1pbnVzIHNpZ24pLgorICAgICAqIE92ZXJyaWRlcyBhbnkgc3R5
bGUgc3BlY2lmaWVkIHVzaW5nIC1jZi0ga2V5IGluIGxvY2FsZS4KKyAgICAgKiBAc3RhYmxlIElD
VSA1NgorICAgICAqLworICAgIFVOVU1fQ1VSUkVOQ1lfU1RBTkRBUkQ9MTYsCiAKKyNpZm5kZWYg
VV9ISURFX0RFUFJFQ0FURURfQVBJCiAgICAgLyoqCi0gICAgICogT25lIG1vcmUgdGhhbiB0aGUg
aGlnaGVzdCBudW1iZXIgZm9ybWF0IHN0eWxlIGNvbnN0YW50LgotICAgICAqIEBzdGFibGUgSUNV
IDQuOAorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVOdW1iZXJGb3Jt
YXRTdHlsZSB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFs
dWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KICAgICAgKi8K
LSAgICBVTlVNX0ZPUk1BVF9TVFlMRV9DT1VOVD0xNCwKKyAgICBVTlVNX0ZPUk1BVF9TVFlMRV9D
T1VOVD0xNywKKyNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCiAKICAgICAvKioK
ICAgICAgKiBEZWZhdWx0IGZvcm1hdApAQCAtMjM1LDggKzI2NCwxMyBAQCB0eXBlZGVmIGVudW0g
VU51bWJlckZvcm1hdFN0eWxlIHsKICAgICBVTlVNX0lHTk9SRSA9IFVOVU1fUEFUVEVSTl9ERUNJ
TUFMCiB9IFVOdW1iZXJGb3JtYXRTdHlsZTsKIAotLyoqIFRoZSBwb3NzaWJsZSBudW1iZXIgZm9y
bWF0IHJvdW5kaW5nIG1vZGVzLiAKLSAqICBAc3RhYmxlIElDVSAyLjAKKy8qKiBUaGUgcG9zc2li
bGUgbnVtYmVyIGZvcm1hdCByb3VuZGluZyBtb2Rlcy4KKyAqCisgKiA8cD4KKyAqIEZvciBtb3Jl
IGRldGFpbCBvbiByb3VuZGluZyBtb2Rlcywgc2VlOgorICogaHR0cDovL3VzZXJndWlkZS5pY3Ut
cHJvamVjdC5vcmcvZm9ybWF0cGFyc2UvbnVtYmVycy9yb3VuZGluZy1tb2RlcworICoKKyAqIEBz
dGFibGUgSUNVIDIuMAogICovCiB0eXBlZGVmIGVudW0gVU51bWJlckZvcm1hdFJvdW5kaW5nTW9k
ZSB7CiAgICAgVU5VTV9ST1VORF9DRUlMSU5HLApAQCAtMjk3LDcgKzMzMSwxMyBAQCBlbnVtIFVD
dXJyZW5jeVNwYWNpbmcgewogICAgIFVOVU1fQ1VSUkVOQ1lfU1VSUk9VTkRJTkdfTUFUQ0gsCiAg
ICAgLyoqIEBzdGFibGUgSUNVIDQuOCAqLwogICAgIFVOVU1fQ1VSUkVOQ1lfSU5TRVJULAotICAg
IC8qKiBAc3RhYmxlIElDVSA0LjggKi8KKworICAgIC8qIERvIG5vdCBjb25kaXRpb25hbGl6ZSB0
aGUgZm9sbG93aW5nIHdpdGggI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEksCisgICAgICog
aXQgaXMgbmVlZGVkIGZvciBsYXlvdXQgb2YgRGVjaW1hbEZvcm1hdFN5bWJvbHMgb2JqZWN0LiAq
LworICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVDdXJy
ZW5jeVNwYWNpbmcgdmFsdWUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmlj
IHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAg
ICovCiAgICAgVU5VTV9DVVJSRU5DWV9TUEFDSU5HX0NPVU5UCiB9OwogdHlwZWRlZiBlbnVtIFVD
dXJyZW5jeVNwYWNpbmcgVUN1cnJlbmN5U3BhY2luZzsgLyoqPCBAc3RhYmxlIElDVSA0LjggKi8K
QEAgLTMzMSw4ICszNzEsMTMgQEAgdHlwZWRlZiBlbnVtIFVOdW1iZXJGb3JtYXRGaWVsZHMgewog
ICAgIFVOVU1fUEVSTUlMTF9GSUVMRCwKICAgICAvKiogQHN0YWJsZSBJQ1UgNDkgKi8KICAgICBV
TlVNX1NJR05fRklFTEQsCi0gICAgLyoqIEBzdGFibGUgSUNVIDQ5ICovCisjaWZuZGVmIFVfSElE
RV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hl
c3Qgbm9ybWFsIFVOdW1iZXJGb3JtYXRGaWVsZHMgdmFsdWUuCisgICAgICogQGRlcHJlY2F0ZWQg
SUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRp
Y2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVU5VTV9GSUVMRF9DT1VOVAorI2VuZGlmICAvKiBV
X0hJREVfREVQUkVDQVRFRF9BUEkgKi8KIH0gVU51bWJlckZvcm1hdEZpZWxkczsKIAogCkBAIC01
MTQsNiArNTU5LDU5IEBAIHVudW1fZm9ybWF0RG91YmxlKCAgICBjb25zdCAgICBVTnVtYmVyRm9y
bWF0KiAgZm10LAogICAgICAgICAgICAgVUZpZWxkUG9zaXRpb24gICpwb3MsIC8qIDAgaWYgaWdu
b3JlICovCiAgICAgICAgICAgICBVRXJyb3JDb2RlKiAgICAgc3RhdHVzKTsKIAorI2lmbmRlZiBV
X0hJREVfRFJBRlRfQVBJCisvKioKKyogRm9ybWF0IGEgZG91YmxlIHVzaW5nIGEgVU51bWJlckZv
cm1hdCBhY2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUsCisqIGFuZCBpbml0
aWFsaXplIGEgVUZpZWxkUG9zaXRpb25JdGVyYXRvciB0aGF0IGVudW1lcmF0ZXMgdGhlIHN1YmNv
bXBvbmVudHMgb2YKKyogdGhlIHJlc3VsdGluZyBzdHJpbmcuCisqCisqIEBwYXJhbSBmb3JtYXQK
KyogICAgICAgICAgVGhlIGZvcm1hdHRlciB0byB1c2UuCisqIEBwYXJhbSBudW1iZXIKKyogICAg
ICAgICAgVGhlIG51bWJlciB0byBmb3JtYXQuCisqIEBwYXJhbSByZXN1bHQKKyogICAgICAgICAg
QSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIE5VTEwtdGVybWluYXRlZCBmb3Jt
YXR0ZWQKKyogICAgICAgICAgbnVtYmVyLiBJZiB0aGUgZm9ybWF0dGVkIG51bWJlciBmaXRzIGlu
dG8gZGVzdCBidXQgY2Fubm90IGJlCisqICAgICAgICAgIE5VTEwtdGVybWluYXRlZCAobGVuZ3Ro
ID09IHJlc3VsdExlbmd0aCkgdGhlbiB0aGUgZXJyb3IgY29kZSBpcyBzZXQKKyogICAgICAgICAg
dG8gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORy4gSWYgdGhlIGZvcm1hdHRlZCBudW1i
ZXIgZG9lc24ndAorKiAgICAgICAgICBmaXQgaW50byByZXN1bHQgdGhlbiB0aGUgZXJyb3IgY29k
ZSBpcyBzZXQgdG8KKyogICAgICAgICAgVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IuCisqIEBwYXJh
bSByZXN1bHRMZW5ndGgKKyogICAgICAgICAgVGhlIG1heGltdW0gc2l6ZSBvZiByZXN1bHQuCisq
IEBwYXJhbSBmcG9zaXRlcgorKiAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBVRmllbGRQb3NpdGlv
bkl0ZXJhdG9yIGNyZWF0ZWQgYnkge0BsaW5rICN1ZmllbGRwb3NpdGVyX29wZW59CisqICAgICAg
ICAgIChtYXkgYmUgTlVMTCBpZiBmaWVsZCBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgbmVl
ZGVkLCBidXQgaW4gdGhpcworKiAgICAgICAgICBjYXNlIGl0J3MgcHJlZmVyYWJsZSB0byB1c2Ug
e0BsaW5rICN1bnVtX2Zvcm1hdERvdWJsZX0pLiBJdGVyYXRpb24KKyogICAgICAgICAgaW5mb3Jt
YXRpb24gYWxyZWFkeSBwcmVzZW50IGluIHRoZSBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yIGlzIGRl
bGV0ZWQsCisqICAgICAgICAgIGFuZCB0aGUgaXRlcmF0b3IgaXMgcmVzZXQgdG8gYXBwbHkgdG8g
dGhlIGZpZWxkcyBpbiB0aGUgZm9ybWF0dGVkCisqICAgICAgICAgIHN0cmluZyBjcmVhdGVkIGJ5
IHRoaXMgZnVuY3Rpb24gY2FsbC4gVGhlIGZpZWxkIHZhbHVlcyBhbmQgaW5kZXhlcworKiAgICAg
ICAgICByZXR1cm5lZCBieSB7QGxpbmsgI3VmaWVsZHBvc2l0ZXJfbmV4dH0gcmVwcmVzZW50IGZp
ZWxkcyBkZW5vdGVkIGJ5CisqICAgICAgICAgIHRoZSBVTnVtYmVyRm9ybWF0RmllbGRzIGVudW0u
IEZpZWxkcyBhcmUgbm90IHJldHVybmVkIGluIGEgZ3VhcmFudGVlZAorKiAgICAgICAgICBvcmRl
ci4gRmllbGRzIGNhbm5vdCBvdmVybGFwLCBidXQgdGhleSBtYXkgbmVzdC4gRm9yIGV4YW1wbGUs
IDEyMzQKKyogICAgICAgICAgY291bGQgZm9ybWF0IGFzICIxLDIzNCIgd2hpY2ggbWlnaHQgY29u
c2lzdCBvZiBhIGdyb3VwaW5nIHNlcGFyYXRvcgorKiAgICAgICAgICBmaWVsZCBmb3IgJywnIGFu
ZCBhbiBpbnRlZ2VyIGZpZWxkIGVuY29tcGFzc2luZyB0aGUgZW50aXJlIHN0cmluZy4KKyogQHBh
cmFtIHN0YXR1cworKiAgICAgICAgICBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29kZSB0byByZWNl
aXZlIGFueSBlcnJvcnMKKyogQHJldHVybgorKiAgICAgICAgICBUaGUgdG90YWwgYnVmZmVyIHNp
emUgbmVlZGVkOyBpZiBncmVhdGVyIHRoYW4gcmVzdWx0TGVuZ3RoLCB0aGUKKyogICAgICAgICAg
b3V0cHV0IHdhcyB0cnVuY2F0ZWQuCisqIEBzZWUgdW51bV9mb3JtYXREb3VibGUKKyogQHNlZSB1
bnVtX3BhcnNlCisqIEBzZWUgdW51bV9wYXJzZURvdWJsZQorKiBAc2VlIFVGaWVsZFBvc2l0aW9u
SXRlcmF0b3IKKyogQHNlZSBVTnVtYmVyRm9ybWF0RmllbGRzCisqIEBkcmFmdCBJQ1UgNTkKKyov
CitVX0RSQUZUIGludDMyX3QgVV9FWFBPUlQyCit1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyhj
b25zdCBVTnVtYmVyRm9ybWF0KiBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIqIHJlc3VsdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0TGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVUZpZWxkUG9zaXRpb25JdGVyYXRvciogZnBvc2l0ZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOworCisjZW5kaWYg
IC8qIFVfSElERV9EUkFGVF9BUEkgKi8KKwogLyoqCiAqIEZvcm1hdCBhIGRlY2ltYWwgbnVtYmVy
IHVzaW5nIGEgVU51bWJlckZvcm1hdC4KICogVGhlIG51bWJlciB3aWxsIGJlIGZvcm1hdHRlZCBh
Y2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCkBAIC02MTUsNiArNzEzLDgg
QEAgdW51bV9mb3JtYXRVRm9ybWF0dGFibGUoY29uc3QgVU51bWJlckZvcm1hdCogZm10LAogLyoq
CiAqIFBhcnNlIGEgc3RyaW5nIGludG8gYW4gaW50ZWdlciB1c2luZyBhIFVOdW1iZXJGb3JtYXQu
CiAqIFRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgYWNjb3JkaW5nIHRvIHRoZSBVTnVtYmVyRm9y
bWF0J3MgbG9jYWxlLgorKiBOb3RlOiBwYXJzaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN0eWxl
cyBVTlVNX0RFQ0lNQUxfQ09NUEFDVF9TSE9SVAorKiBhbmQgVU5VTV9ERUNJTUFMX0NPTVBBQ1Rf
TE9ORy4KICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHVzZS4KICogQHBhcmFtIHRleHQg
VGhlIHRleHQgdG8gcGFyc2UuCiAqIEBwYXJhbSB0ZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGV4
dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgpAQCAtNjM5LDYgKzczOSw4IEBAIHVudW1fcGFy
c2UoICAgIGNvbnN0ICAgVU51bWJlckZvcm1hdCogIGZtdCwKIC8qKgogKiBQYXJzZSBhIHN0cmlu
ZyBpbnRvIGFuIGludDY0IHVzaW5nIGEgVU51bWJlckZvcm1hdC4KICogVGhlIHN0cmluZyB3aWxs
IGJlIHBhcnNlZCBhY2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisqIE5v
dGU6IHBhcnNpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3R5bGVzIFVOVU1fREVDSU1BTF9DT01Q
QUNUX1NIT1JUCisqIGFuZCBVTlVNX0RFQ0lNQUxfQ09NUEFDVF9MT05HLgogKiBAcGFyYW0gZm10
IFRoZSBmb3JtYXR0ZXIgdG8gdXNlLgogKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBwYXJzZS4K
ICogQHBhcmFtIHRleHRMZW5ndGggVGhlIGxlbmd0aCBvZiB0ZXh0LCBvciAtMSBpZiBudWxsLXRl
cm1pbmF0ZWQuCkBAIC02NjMsNiArNzY1LDggQEAgdW51bV9wYXJzZUludDY0KGNvbnN0IFVOdW1i
ZXJGb3JtYXQqICBmbXQsCiAvKioKICogUGFyc2UgYSBzdHJpbmcgaW50byBhIGRvdWJsZSB1c2lu
ZyBhIFVOdW1iZXJGb3JtYXQuCiAqIFRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgYWNjb3JkaW5n
IHRvIHRoZSBVTnVtYmVyRm9ybWF0J3MgbG9jYWxlLgorKiBOb3RlOiBwYXJzaW5nIGlzIG5vdCBz
dXBwb3J0ZWQgZm9yIHN0eWxlcyBVTlVNX0RFQ0lNQUxfQ09NUEFDVF9TSE9SVAorKiBhbmQgVU5V
TV9ERUNJTUFMX0NPTVBBQ1RfTE9ORy4KICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIHVz
ZS4KICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2UuCiAqIEBwYXJhbSB0ZXh0TGVuZ3Ro
IFRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgpAQCAtNjkxLDYg
Kzc5NSw4IEBAIHVudW1fcGFyc2VEb3VibGUoICAgIGNvbnN0ICAgVU51bWJlckZvcm1hdCogIGZt
dCwKICogVGhlIHN5bnRheCBvZiB0aGUgb3V0cHV0IGlzIGEgIm51bWVyaWMgc3RyaW5nIgogKiBh
cyBkZWZpbmVkIGluIHRoZSBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbiwgYXZhaWxh
YmxlIGF0CiAqIGh0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbAorKiBOb3RlOiBwYXJzaW5n
IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN0eWxlcyBVTlVNX0RFQ0lNQUxfQ09NUEFDVF9TSE9SVAor
KiBhbmQgVU5VTV9ERUNJTUFMX0NPTVBBQ1RfTE9ORy4KICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0
dGVyIHRvIHVzZS4KICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gcGFyc2UuCiAqIEBwYXJhbSB0
ZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgpA
QCAtNzUwLDYgKzg1Niw4IEBAIHVudW1fcGFyc2VEb3VibGVDdXJyZW5jeShjb25zdCBVTnVtYmVy
Rm9ybWF0KiBmbXQsCiAgKiBQYXJzZSBhIFVDaGFyIHN0cmluZyBpbnRvIGEgVUZvcm1hdHRhYmxl
LgogICogRXhhbXBsZSBjb2RlOgogICogXHNuaXBwZXQgdGVzdC9jaW50bHRzdC9jbnVtdHN0LmMg
dW51bV9wYXJzZVRvVUZvcm1hdHRhYmxlCisgKiBOb3RlOiBwYXJzaW5nIGlzIG5vdCBzdXBwb3J0
ZWQgZm9yIHN0eWxlcyBVTlVNX0RFQ0lNQUxfQ09NUEFDVF9TSE9SVAorICogYW5kIFVOVU1fREVD
SU1BTF9DT01QQUNUX0xPTkcuCiAgKiBAcGFyYW0gZm10IHRoZSBmb3JtYXR0ZXIgdG8gdXNlCiAg
KiBAcGFyYW0gcmVzdWx0IHRoZSBVRm9ybWF0dGFibGUgdG8gaG9sZCB0aGUgcmVzdWx0LiBJZiBO
VUxMLCBhIG5ldyBVRm9ybWF0dGFibGUgd2lsbCBiZSBhbGxvY2F0ZWQgKHdoaWNoIHRoZSBjYWxs
ZXIgbXVzdCBjbG9zZSB3aXRoIHVmbXRfY2xvc2UpLgogICogQHBhcmFtIHRleHQgdGhlIHRleHQg
dG8gcGFyc2UKQEAgLTc4MCw3ICs4ODgsNyBAQCB1bnVtX3BhcnNlVG9VRm9ybWF0dGFibGUoY29u
c3QgVU51bWJlckZvcm1hdCogZm10LAogICogQHBhcmFtIGxvY2FsaXplZCBUUlVFIGlmIHRoZSBw
YXR0ZXJuIGlzIGxvY2FsaXplZCwgRkFMU0Ugb3RoZXJ3aXNlLgogICogQHBhcmFtIHBhdHRlcm4g
VGhlIG5ldyBwYXR0ZXJuCiAgKiBAcGFyYW0gcGF0dGVybkxlbmd0aCBUaGUgbGVuZ3RoIG9mIHBh
dHRlcm4sIG9yIC0xIGlmIG51bGwtdGVybWluYXRlZC4KLSAqIEBwYXJhbSBwYXJzZUVycm9yIEEg
cG9pbnRlciB0byBVUGFyc2VFcnJvciB0byByZWNpZXZlIGluZm9ybWF0aW9uCisgKiBAcGFyYW0g
cGFyc2VFcnJvciBBIHBvaW50ZXIgdG8gVVBhcnNlRXJyb3IgdG8gcmVjZWl2ZSBpbmZvcm1hdGlv
bgogICogYWJvdXQgZXJyb3JzIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nLCBvciBOVUxMIGlmIG5v
IHBhcnNlIGVycm9yCiAgKiBpbmZvcm1hdGlvbiBpcyBkZXNpcmVkLgogICogQHBhcmFtIHN0YXR1
cyBBIHBvaW50ZXIgdG8gYW4gaW5wdXQtb3V0cHV0IFVFcnJvckNvZGUuCkBAIC04MzUsNiArOTQz
LDkgQEAgdHlwZWRlZiBlbnVtIFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGVWYWx1ZSB7CiAgIFVOVU1f
WUVTID0gMSwKICAgLyoqIEBpbnRlcm5hbCAqLwogICBVTlVNX01BWUJFID0gMgorI2Vsc2UKKyAg
LyoqIEBpbnRlcm5hbCAqLworICBVTlVNX0ZPUk1BVF9BVFRSSUJVVEVfVkFMVUVfSElEREVOCiAj
ZW5kaWYgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogfSBVTnVtYmVyRm9ybWF0QXR0cmlidXRl
VmFsdWU7CiAjZW5kaWYKQEAgLTg5MSw3ICsxMDAyLDcgQEAgdHlwZWRlZiBlbnVtIFVOdW1iZXJG
b3JtYXRBdHRyaWJ1dGUgewogICAgKiBUaGlzIGlzIGFuIGludGVybmFsIElDVSBBUEkuIERvIG5v
dCB1c2UuCiAgICAqIEBpbnRlcm5hbAogICAgKi8KLSAgVU5VTV9QQVJTRV9BTExfSU5QVVQgPSBV
TlVNX0xFTklFTlRfUEFSU0UgKyAxLAorICBVTlVNX1BBUlNFX0FMTF9JTlBVVCA9IDIwLAogI2Vu
ZGlmCiAgIC8qKiAKICAgICAqIFNjYWxlLCB3aGljaCBhZGp1c3RzIHRoZSBwb3NpdGlvbiBvZiB0
aGUKQEAgLTkwMiwyMyArMTAxMywyNSBAQCB0eXBlZGVmIGVudW0gVU51bWJlckZvcm1hdEF0dHJp
YnV0ZSB7CiAgICAgKiA8cD5FeGFtcGxlOiBzZXR0aW5nIHRoZSBzY2FsZSB0byAtNCwgMTIzIGZv
cm1hdHMgYXMgIjAuMDEyMyIKICAgICAqCiAgICAqIEBzdGFibGUgSUNVIDUxICovCi0gIFVOVU1f
U0NBTEUgPSBVTlVNX0xFTklFTlRfUEFSU0UgKyAyLAotCisgIFVOVU1fU0NBTEUgPSAyMSwKICNp
Zm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQotICAvKiogQ291bnQgb2YgInJlZ3VsYXIiIG51bWVy
aWMgYXR0cmlidXRlcy4KLSAgICogQGludGVybmFsICovCi0gIFVOVU1fTlVNRVJJQ19BVFRSSUJV
VEVfQ09VTlQgPSBVTlVNX0xFTklFTlRfUEFSU0UgKyAzLAorICAvKioKKyAgICogTWluaW11bSBn
cm91cGluZyBkaWdpdHMsIHRlY2hub2xvZ3kgcHJldmlldy4KKyAgICogU2VlIERlY2ltYWxGb3Jt
YXQ6OmdldE1pbmltdW1Hcm91cGluZ0RpZ2l0cygpLgorICAgKgorICAgKiBAaW50ZXJuYWwgdGVj
aG5vbG9neSBwcmV2aWV3CisgICAqLworICBVTlVNX01JTklNVU1fR1JPVVBJTkdfRElHSVRTID0g
MjIsCisgIC8qIFRPRE86IHRlc3QgQyBBUEkgd2hlbiBpdCBiZWNvbWVzIEBkcmFmdCAqLwogI2Vu
ZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQ
SQogICAvKiogCiAgICAqIGlmIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byAwLCBpdCBpcyBzZXQg
dG8gVU5VTV9DVVJSRU5DWV9TVEFOREFSRCBwdXJwb3NlLAogICAgKiBvdGhlcndpc2UgaXQgaXMg
VU5VTV9DVVJSRU5DWV9DQVNIIHB1cnBvc2UKICAgICogRGVmYXVsdDogMCAoVU5VTV9DVVJSRU5D
WV9TVEFOREFSRCBwdXJwb3NlKQotICAgKiBAZHJhZnQgSUNVIDU0CisgICAqIEBzdGFibGUgSUNV
IDU0CiAgICAqLwotICBVTlVNX0NVUlJFTkNZX1VTQUdFID0gVU5VTV9MRU5JRU5UX1BBUlNFICsg
NCwKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLworICBVTlVNX0NVUlJFTkNZX1VTQUdF
ID0gMjMsCiAKICAgLyogVGhlIGZvbGxvd2luZyBjYW5ub3QgYmUgI2lmbmRlZiBVX0hJREVfSU5U
RVJOQUxfQVBJLCBuZWVkZWQgaW4gLmggZmlsZSB2YXJpYWJsZSBkZWNsYXJhcmlvbnMgKi8KICAg
LyoqIE9uZSBiZWxvdyB0aGUgZmlyc3QgYml0ZmllbGQtYm9vbGVhbiBpdGVtLgpAQCAtOTQwLDIy
ICsxMDUzLDIwIEBAIHR5cGVkZWYgZW51bSBVTnVtYmVyRm9ybWF0QXR0cmlidXRlIHsKICAgICov
CiAgIFVOVU1fUEFSU0VfTk9fRVhQT05FTlQsCiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQog
ICAvKiogCiAgICAqIGlmIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byAxLCBzcGVjaWZpZXMgdGhh
dCwgaWYgdGhlIHBhdHRlcm4gY29udGFpbnMgYSAKICAgICogZGVjaW1hbCBtYXJrIHRoZSBpbnB1
dCBpcyByZXF1aXJlZCB0byBoYXZlIG9uZS4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDAs
CiAgICAqIHNwZWNpZmllcyB0aGF0IGlucHV0IGRvZXMgbm90IGhhdmUgdG8gY29udGFpbiBhIGRl
Y2ltYWwgbWFyay4KICAgICogSGFzIG5vIGVmZmVjdCBvbiBmb3JtYXR0aW5nLgogICAgKiBEZWZh
dWx0OiAwICh1bnNldCkKLSAgICogQGRyYWZ0IElDVSA1NAorICAgKiBAc3RhYmxlIElDVSA1NAog
ICAgKi8KLSAgVU5VTV9QQVJTRV9ERUNJTUFMX01BUktfUkVRVUlSRUQgPSBVTlVNX1BBUlNFX05P
X0VYUE9ORU5UKzEsCi0jZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KKyAgVU5VTV9QQVJT
RV9ERUNJTUFMX01BUktfUkVRVUlSRUQgPSAweDEwMDIsCiAKICAgLyogVGhlIGZvbGxvd2luZyBj
YW5ub3QgYmUgI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJLCBuZWVkZWQgaW4gLmggZmlsZSB2
YXJpYWJsZSBkZWNsYXJhcmlvbnMgKi8KICAgLyoqIExpbWl0IG9mIGJvb2xlYW4gYXR0cmlidXRl
cy4KICAgICogQGludGVybmFsICovCi0gIFVOVU1fTElNSVRfQk9PTEVBTl9BVFRSSUJVVEUgPSBV
TlVNX1BBUlNFX05PX0VYUE9ORU5UKzIKKyAgVU5VTV9MSU1JVF9CT09MRUFOX0FUVFJJQlVURSA9
IDB4MTAwMwogfSBVTnVtYmVyRm9ybWF0QXR0cmlidXRlOwogCiAvKioKQEAgLTk2Niw3ICsxMDc3
LDcgQEAgdHlwZWRlZiBlbnVtIFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGUgewogKiBVTlVNX0RFQ0lN
QUxfQUxXQVlTX1NIT1dOLCBVTlVNX01BWF9JTlRFR0VSX0RJR0lUUywgVU5VTV9NSU5fSU5URUdF
Ul9ESUdJVFMsIFVOVU1fSU5URUdFUl9ESUdJVFMsCiAqIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lU
UywgVU5VTV9NSU5fRlJBQ1RJT05fRElHSVRTLCBVTlVNX0ZSQUNUSU9OX0RJR0lUUywgVU5VTV9N
VUxUSVBMSUVSLAogKiBVTlVNX0dST1VQSU5HX1NJWkUsIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5V
TV9GT1JNQVRfV0lEVEgsIFVOVU1fUEFERElOR19QT1NJVElPTiwgVU5VTV9TRUNPTkRBUllfR1JP
VVBJTkdfU0laRSwKLSogVU5VTV9TQ0FMRS4KKyogVU5VTV9TQ0FMRSwgVU5VTV9NSU5JTVVNX0dS
T1VQSU5HX0RJR0lUUy4KICogQHJldHVybiBUaGUgdmFsdWUgb2YgYXR0ci4KICogQHNlZSB1bnVt
X3NldEF0dHJpYnV0ZQogKiBAc2VlIHVudW1fZ2V0RG91YmxlQXR0cmlidXRlCkBAIC05ODksNyAr
MTEwMCw3IEBAIHVudW1fZ2V0QXR0cmlidXRlKGNvbnN0IFVOdW1iZXJGb3JtYXQqICAgICAgICAg
IGZtdCwKICogVU5VTV9ERUNJTUFMX0FMV0FZU19TSE9XTiwgVU5VTV9NQVhfSU5URUdFUl9ESUdJ
VFMsIFVOVU1fTUlOX0lOVEVHRVJfRElHSVRTLCBVTlVNX0lOVEVHRVJfRElHSVRTLAogKiBVTlVN
X01BWF9GUkFDVElPTl9ESUdJVFMsIFVOVU1fTUlOX0ZSQUNUSU9OX0RJR0lUUywgVU5VTV9GUkFD
VElPTl9ESUdJVFMsIFVOVU1fTVVMVElQTElFUiwKICogVU5VTV9HUk9VUElOR19TSVpFLCBVTlVN
X1JPVU5ESU5HX01PREUsIFVOVU1fRk9STUFUX1dJRFRILCBVTlVNX1BBRERJTkdfUE9TSVRJT04s
IFVOVU1fU0VDT05EQVJZX0dST1VQSU5HX1NJWkUsCi0qIFVOVU1fTEVOSUVOVF9QQVJTRSwgb3Ig
VU5VTV9TQ0FMRS4KKyogVU5VTV9MRU5JRU5UX1BBUlNFLCBVTlVNX1NDQUxFLCBVTlVNX01JTklN
VU1fR1JPVVBJTkdfRElHSVRTLgogKiBAcGFyYW0gbmV3VmFsdWUgVGhlIG5ldyB2YWx1ZSBvZiBh
dHRyLgogKiBAc2VlIHVudW1fZ2V0QXR0cmlidXRlCiAqIEBzZWUgdW51bV9nZXREb3VibGVBdHRy
aWJ1dGUKQEAgLTEyMjgsMTUgKzEzMzksMTggQEAgdHlwZWRlZiBlbnVtIFVOdW1iZXJGb3JtYXRT
eW1ib2wgewogICAgKi8KICAgVU5VTV9OSU5FX0RJR0lUX1NZTUJPTCA9IDI2LAogCi0jaWZuZGVm
IFVfSElERV9EUkFGVF9BUEkKICAgLyoqIE11bHRpcGxpY2F0aW9uIHNpZ24KLSAgICogQGRyYWZ0
IElDVSA1NAorICAgKiBAc3RhYmxlIElDVSA1NAogICAgKi8KICAgVU5VTV9FWFBPTkVOVF9NVUxU
SVBMSUNBVElPTl9TWU1CT0wgPSAyNywKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLwog
Ci0gIC8qKiBjb3VudCBzeW1ib2wgY29uc3RhbnRzICovCisjaWZuZGVmIFVfSElERV9ERVBSRUNB
VEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFs
IFVOdW1iZXJGb3JtYXRTeW1ib2wgdmFsdWUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRo
ZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0
MjAuCisgICAgICovCiAgIFVOVU1fRk9STUFUX1NZTUJPTF9DT1VOVCA9IDI4CisjZW5kaWYgIC8q
IFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogfSBVTnVtYmVyRm9ybWF0U3ltYm9sOwogCiAvKioK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW51bXN5cy5oIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91bnVtc3lzLmgKaW5kZXggZjVhMmM0M2U5MjhlZTg2ZjNkZWUyOGQ5N2Uz
MzU1YTFkMTY3ZGE2NS4uNzk1ZWM2MDI1NWYyM2VmZGI2NzZhMjBkNzMzYzEzY2Q3YTQxNWRmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bnVtc3lzLmgKKysrIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS91bnVtc3lzLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFu
ZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9m
IHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0LCBJbnRl
cm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3VvYmplY3QuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW9iamVjdC5oCmluZGV4
IDU0Y2VhY2U2MjZkNzM1Y2JhYzZkODM1YmY2YWJhMzQ4MzNhOWY0M2EuLjk3ODJmMjcyZjZkNzA0
NWE1YzFjNjY4NDY4YzczYTYyZDMxNjAxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdW9iamVjdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW9iamVjdC5oCkBA
IC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTYsNyArOCw3
IEBACiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1b2JqZWN0LmgK
LSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFi
IHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS91cGx1cmFscnVsZXMuaCBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdXBsdXJhbHJ1bGVzLmgKaW5kZXggNWJjYWRkNGJkYTYwZjQxYzc0YTBmNDVlYmUxMTVl
MDdhNGIyNDdkMy4uOTlkOTNhNGUwNTE3YWI4ZDg3NzliZDdiMDlhZmVmZWI5Zjk0NmY0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91cGx1cmFscnVsZXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3VwbHVyYWxydWxlcy5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkg
MjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0
ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAx
MywgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpAQCAtMTMsNiArMTUsMTAgQEAKICNp
ZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HCiAKICNpbmNsdWRlICJ1bmljb2RlL2xvY2FscG9pbnRl
ci5oIgorI2luY2x1ZGUgInVuaWNvZGUvdWVudW0uaCIKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFM
X0FQSQorI2luY2x1ZGUgInVuaWNvZGUvdW51bS5oIgorI2VuZGlmICAvKiBVX0hJREVfSU5URVJO
QUxfQVBJICovCiAKIC8qKgogICogXGZpbGUKQEAgLTUyLDExICs1OCwxMyBAQCBlbnVtIFVQbHVy
YWxUeXBlIHsKICAgICAgKiBAc3RhYmxlIElDVSA1MAogICAgICAqLwogICAgIFVQTFVSQUxfVFlQ
RV9PUkRJTkFMLAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgICAvKioKLSAgICAg
KiBOdW1iZXIgb2YgUGx1cmFsIHJ1bGVzIHR5cGVzLgotICAgICAqIEBzdGFibGUgSUNVIDUwCisg
ICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVVBsdXJhbFR5cGUgdmFsdWUu
CisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ug
b3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCiAgICAgICovCiAgICAgVVBMVVJBTF9U
WVBFX0NPVU5UCisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogfTsKIC8qKgog
ICogQHN0YWJsZSBJQ1UgNTAKQEAgLTc5LDcgKzg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVVBsdXJh
bFJ1bGVzIFVQbHVyYWxSdWxlczsgIC8qKjwgQyB0eXBlZGVmIGZvciBzdHJ1Y3QgVVBsdXJhbFJ1
bGUKICAqIEByZXR1cm4gQSBVUGx1cmFsUnVsZXMgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlLCBv
ciBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkLgogICogQHN0YWJsZSBJQ1UgNC44CiAgKi8KLVVf
U1RBQkxFIFVQbHVyYWxSdWxlcyogVV9FWFBPUlQyCitVX0NBUEkgVVBsdXJhbFJ1bGVzKiBVX0VY
UE9SVDIKIHVwbHJ1bGVzX29wZW4oY29uc3QgY2hhciAqbG9jYWxlLCBVRXJyb3JDb2RlICpzdGF0
dXMpOwogCiAvKioKQEAgLTkxLDcgKzk5LDcgQEAgdXBscnVsZXNfb3Blbihjb25zdCBjaGFyICps
b2NhbGUsIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAgKiBAcmV0dXJuIEEgVVBsdXJhbFJ1bGVzIGZv
ciB0aGUgc3BlY2lmaWVkIGxvY2FsZSwgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KICAq
IEBzdGFibGUgSUNVIDUwCiAgKi8KLVVfRFJBRlQgVVBsdXJhbFJ1bGVzKiBVX0VYUE9SVDIKK1Vf
Q0FQSSBVUGx1cmFsUnVsZXMqIFVfRVhQT1JUMgogdXBscnVsZXNfb3BlbkZvclR5cGUoY29uc3Qg
Y2hhciAqbG9jYWxlLCBVUGx1cmFsVHlwZSB0eXBlLCBVRXJyb3JDb2RlICpzdGF0dXMpOwogCiAv
KioKQEAgLTk5LDcgKzEwNyw3IEBAIHVwbHJ1bGVzX29wZW5Gb3JUeXBlKGNvbnN0IGNoYXIgKmxv
Y2FsZSwgVVBsdXJhbFR5cGUgdHlwZSwgVUVycm9yQ29kZSAqc3RhdHVzKTsKICAqIEBwYXJhbSB1
cGxydWxlcyBUaGUgVVBsdXJhbFJ1bGVzIG9iamVjdCB0byBjbG9zZS4KICAqIEBzdGFibGUgSUNV
IDQuOAogICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgorVV9DQVBJIHZvaWQgVV9FWFBPUlQy
CiB1cGxydWxlc19jbG9zZShVUGx1cmFsUnVsZXMgKnVwbHJ1bGVzKTsKIAogCkBAIC0xMzQsMTIg
KzE0Miw1NSBAQCBVX05BTUVTUEFDRV9FTkQKICAqIEByZXR1cm4gVGhlIGxlbmd0aCBvZiBrZXl3
b3JkLgogICogQHN0YWJsZSBJQ1UgNC44CiAgKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQy
CitVX0NBUEkgaW50MzJfdCBVX0VYUE9SVDIKIHVwbHJ1bGVzX3NlbGVjdChjb25zdCBVUGx1cmFs
UnVsZXMgKnVwbHJ1bGVzLAogICAgICAgICAgICAgICAgZG91YmxlIG51bWJlciwKICAgICAgICAg
ICAgICAgIFVDaGFyICprZXl3b3JkLCBpbnQzMl90IGNhcGFjaXR5LAogICAgICAgICAgICAgICAg
VUVycm9yQ29kZSAqc3RhdHVzKTsKIAorI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCisvKioK
KyAqIEdpdmVuIGEgbnVtYmVyLCByZXR1cm5zIHRoZSBrZXl3b3JkIG9mIHRoZSBmaXJzdCBydWxl
IHRoYXQgYXBwbGllcyB0byB0aGUKKyAqIG51bWJlciwgYWNjb3JkaW5nIHRvIHRoZSBVUGx1cmFs
UnVsZXMgb2JqZWN0IGFuZCBnaXZlbiB0aGUgbnVtYmVyIGZvcm1hdAorICogc3BlY2lmaWVkIGJ5
IHRoZSBVTnVtYmVyRm9ybWF0IG9iamVjdC4KKyAqIE5vdGU6IFRoaXMgaW50ZXJuYWwgcHJldmll
dyBpbnRlcmZhY2UgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZSBpZgorICogYW4gYXJjaGl0
ZWN0dXJhbGx5IGNsZWFuZXIgc29sdXRpb24gcmVhY2hlcyBzdGFibGUgc3RhdHVzLgorICogQHBh
cmFtIHVwbHJ1bGVzIFRoZSBVUGx1cmFsUnVsZXMgb2JqZWN0IHNwZWNpZnlpbmcgdGhlIHJ1bGVz
LgorICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGZvciB3aGljaCB0aGUgcnVsZSBoYXMgdG8g
YmUgZGV0ZXJtaW5lZC4KKyAqIEBwYXJhbSBmbXQgVGhlIFVOdW1iZXJGb3JtYXQgc3BlY2lmeWlu
ZyBob3cgdGhlIG51bWJlciB3aWxsIGJlIGZvcm1hdHRlZAorICogICAgICAgICh0aGlzIGNhbiBh
ZmZlY3QgdGhlIHBsdXJhbCBmb3JtLCBlLmcuICIxIGRvbGxhciIgdnMgIjEuMCBkb2xsYXJzIiku
CisgKiAgICAgICAgSWYgdGhpcyBpcyBOVUxMLCB0aGUgZnVuY3Rpb24gYmVoYXZlcyBsaWtlIHVw
bHJ1bGVzX3NlbGVjdC4KKyAqIEBwYXJhbSBrZXl3b3JkIFRoZSBrZXl3b3JkIG9mIHRoZSBydWxl
IHRoYXQgYXBwbGllcyB0byBudW1iZXIuCisgKiBAcGFyYW0gY2FwYWNpdHkgVGhlIGNhcGFjaXR5
IG9mIHRoZSBrZXl3b3JkIGJ1ZmZlci4KKyAqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGEg
VUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMuCisgKiBAcmV0dXJuIFRoZSBsZW5ndGgg
b2Yga2V5d29yZC4KKyAqIEBpbnRlcm5hbCBJQ1UgNTkgdGVjaG5vbG9neSBwcmV2aWV3LCBtYXkg
YmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlCisgKi8KK1VfSU5URVJOQUwgaW50MzJfdCBVX0VYUE9S
VDIKK3VwbHJ1bGVzX3NlbGVjdFdpdGhGb3JtYXQoY29uc3QgVVBsdXJhbFJ1bGVzICp1cGxydWxl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG51bWJlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVU51bWJlckZvcm1hdCAqZm10LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBVQ2hhciAqa2V5d29yZCwgaW50MzJfdCBjYXBhY2l0eSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworI2VuZGlmICAvKiBVX0hJREVf
SU5URVJOQUxfQVBJICovCisKKyNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQorLyoqCisgKiBDcmVh
dGVzIGEgc3RyaW5nIGVudW1lcmF0aW9uIG9mIGFsbCBwbHVyYWwgcnVsZSBrZXl3b3JkcyB1c2Vk
IGluIHRoaXMKKyAqIFVQbHVyYWxSdWxlcyBvYmplY3QuIFRoZSBydWxlICJvdGhlciIgaXMgYWx3
YXlzIHByZXNlbnQgYnkgZGVmYXVsdC4KKyAqIEBwYXJhbSB1cGxydWxlcyBUaGUgVVBsdXJhbFJ1
bGVzIG9iamVjdCBzcGVjaWZ5aW5nIHRoZSBydWxlcyBmb3IKKyAqICAgICAgICBhIGdpdmVuIGxv
Y2FsZS4KKyAqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGEgVUVycm9yQ29kZSB0byByZWNl
aXZlIGFueSBlcnJvcnMuCisgKiBAcmV0dXJuIGEgc3RyaW5nIGVudW1lcmF0aW9uIG92ZXIgcGx1
cmFsIHJ1bGUga2V5d29yZHMsIG9yIE5VTEwKKyAqIHVwb24gZXJyb3IuIFRoZSBjYWxsZXIgaXMg
cmVzcG9uc2libGUgZm9yIGNsb3NpbmcgdGhlIHJlc3VsdC4KKyAqIEBkcmFmdCBJQ1UgNTkKKyAq
LworVV9EUkFGVCBVRW51bWVyYXRpb24qIFVfRVhQT1JUMgordXBscnVsZXNfZ2V0S2V5d29yZHMo
Y29uc3QgVVBsdXJhbFJ1bGVzICp1cGxydWxlcywKKyAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUgKnN0YXR1cyk7CisjZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KKwogI2VuZGlm
IC8qICNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HICovCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS91cmVnZXguaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dXJlZ2V4LmgKaW5kZXggYjFiNWQ2NWQxNTA2ZWNjOTk5YTQ1ODZhNWMwMmQ4MTNkNGVjZjNmZC4u
ZjNlODIxNDk0NDQ5OTFkMjk5MjEwOTkwNmRjNDc1YTA1ODQzNzllYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9pY3UvdW5pY29kZS91cmVnZXguaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3VyZWdleC5oCkBAIC0xLDEwICsxLDEyIEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29k
ZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3
dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSogICBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAg
IENvcHlyaWdodCAoQykgMjAwNC0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVz
CiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgdXJlZ2V4LmgKLSogICBlbmNvZGluZzogICBVUy1B
U0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgaW5kZW50YXRpb246NAogKgogKiAgIGNy
ZWF0ZWQgb246IDIwMDRtYXIwOQpAQCAtNDg3LDcgKzQ4OSw3IEBAIHVyZWdleF9tYXRjaGVzNjQo
VVJlZ3VsYXJFeHByZXNzaW9uICpyZWdleHAsCiAgICoKICAgKiAgIDxwPklmIHRoZSBtYXRjaCBz
dWNjZWVkcyB0aGVuIG1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIG9idGFpbmVkIHZpYSB0aGUKICAg
KiAgICA8Y29kZT51cmVnZXhwX3N0YXJ0KCk8L2NvZGU+LCA8Y29kZT51cmVnZXhwX2VuZCgpPC9j
b2RlPiwKLSAgKiAgICBhbmQgPGNvZGU+dXJlZ2V4cF9ncm91cCgpPC9jb2RlPiBmdW5jdGlvbnMu
PC9wPgorICAqICAgIGFuZCA8Y29kZT51cmVnZXhfZ3JvdXAoKTwvY29kZT4gZnVuY3Rpb25zLjwv
cD4KICAgKgogICAqICAgIEBwYXJhbSAgIHJlZ2V4cCAgICAgIFRoZSBjb21waWxlZCByZWd1bGFy
IGV4cHJlc3Npb24uCiAgICogICAgQHBhcmFtICAgc3RhcnRJbmRleCAgVGhlIGlucHV0IHN0cmlu
ZyAobmF0aXZlKSBpbmRleCBhdCB3aGljaCB0byBiZWdpbiBtYXRjaGluZywgb3IKQEAgLTUxNiw3
ICs1MTgsNyBAQCB1cmVnZXhfbG9va2luZ0F0KFVSZWd1bGFyRXhwcmVzc2lvbiAqcmVnZXhwLAog
ICAqCiAgICogICA8cD5JZiB0aGUgbWF0Y2ggc3VjY2VlZHMgdGhlbiBtb3JlIGluZm9ybWF0aW9u
IGNhbiBiZSBvYnRhaW5lZCB2aWEgdGhlCiAgICogICAgPGNvZGU+dXJlZ2V4cF9zdGFydCgpPC9j
b2RlPiwgPGNvZGU+dXJlZ2V4cF9lbmQoKTwvY29kZT4sCi0gICogICAgYW5kIDxjb2RlPnVyZWdl
eHBfZ3JvdXAoKTwvY29kZT4gZnVuY3Rpb25zLjwvcD4KKyAgKiAgICBhbmQgPGNvZGU+dXJlZ2V4
X2dyb3VwKCk8L2NvZGU+IGZ1bmN0aW9ucy48L3A+CiAgICoKICAgKiAgICBAcGFyYW0gICByZWdl
eHAgICAgICBUaGUgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uLgogICAqICAgIEBwYXJhbSAg
IHN0YXJ0SW5kZXggIFRoZSBpbnB1dCBzdHJpbmcgKG5hdGl2ZSkgaW5kZXggYXQgd2hpY2ggdG8g
YmVnaW4gbWF0Y2hpbmcsIG9yCkBAIC02MDcsNyArNjA5LDYgQEAgVV9TVEFCTEUgaW50MzJfdCBV
X0VYUE9SVDIKIHVyZWdleF9ncm91cENvdW50KFVSZWd1bGFyRXhwcmVzc2lvbiAqcmVnZXhwLAog
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAgICAgICAgICpzdGF0dXMpOwogCi0jaWZuZGVm
IFVfSElERV9EUkFGVF9BUEkKIC8qKgogICAqIEdldCB0aGUgZ3JvdXAgbnVtYmVyIGNvcnJlc3Bv
bmRpbmcgdG8gYSBuYW1lZCBjYXB0dXJlIGdyb3VwLgogICAqIFRoZSByZXR1cm5lZCBudW1iZXIg
Y2FuIGJlIHVzZWQgd2l0aCBhbnkgZnVuY3Rpb24gdGhhdCBhY2Nlc3MKQEAgLTYyMiw5ICs2MjMs
OSBAQCB1cmVnZXhfZ3JvdXBDb3VudChVUmVndWxhckV4cHJlc3Npb24gKnJlZ2V4cCwKICAgKiAg
ICAgICAgICAgICAgICAgICAgIG51bC10ZXJtaW5hdGVkIHN0cmluZy4KICAgKiBAcGFyYW0gIHN0
YXR1cyAgICAgIEEgcG9pbnRlciB0byBhIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3Jz
LgogICAqCi0gICogQGRyYWZ0IElDVSA1NQorICAqIEBzdGFibGUgSUNVIDU1CiAgICovCi1VX0RS
QUZUIGludDMyX3QgVV9FWFBPUlQyCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgogdXJlZ2V4
X2dyb3VwTnVtYmVyRnJvbU5hbWUoVVJlZ3VsYXJFeHByZXNzaW9uICpyZWdleHAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAgICAgICAgKmdyb3VwTmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgICAgICAgICAgICAgbmFtZUxlbmd0aCwKQEAg
LTY0NiwxNCArNjQ3LDEzIEBAIHVyZWdleF9ncm91cE51bWJlckZyb21OYW1lKFVSZWd1bGFyRXhw
cmVzc2lvbiAqcmVnZXhwLAogICAqICAgICAgICAgICAgICAgICAgICAgbnVsLXRlcm1pbmF0ZWQu
CiAgICogQHBhcmFtICBzdGF0dXMgICAgICBBIHBvaW50ZXIgdG8gYSBVRXJyb3JDb2RlIHRvIHJl
Y2VpdmUgYW55IGVycm9ycy4KICAgKgotICAqIEBkcmFmdCBJQ1UgNTUKKyAgKiBAc3RhYmxlIElD
VSA1NQogICAqLwotVV9EUkFGVCBpbnQzMl90IFVfRVhQT1JUMgorVV9TVEFCTEUgaW50MzJfdCBV
X0VYUE9SVDIKIHVyZWdleF9ncm91cE51bWJlckZyb21DTmFtZShVUmVndWxhckV4cHJlc3Npb24g
KnJlZ2V4cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICAgICAg
Kmdyb3VwTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAg
ICAgIG5hbWVMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAg
ICAgICAgICAqc3RhdHVzKTsKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogCiAvKiog
RXh0cmFjdCB0aGUgc3RyaW5nIGZvciB0aGUgc3BlY2lmaWVkIG1hdGNoaW5nIGV4cHJlc3Npb24g
b3Igc3ViZXhwcmVzc2lvbi4KICAgKiBHcm91cCAjMCBpcyB0aGUgY29tcGxldGUgc3RyaW5nIG9m
IG1hdGNoZWQgdGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXJlZ2lv
bi5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91cmVnaW9uLmgKaW5kZXggOTliMzgxZmZkNGE2
NmQ1NmVlM2ZmM2Y2NTM5NWQ3M2YyY2QxZmMxOC4uYTVkZTQ5Njc0YjUyZDhlODY4YzUxNTY1NjQ1
MzFlYmFlZjRkNTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91cmVnaW9u
LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91cmVnaW9uLmgKQEAgLTEsMyArMSw1IEBA
CisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGlj
ZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRt
bAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykg
MjAxNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpAQCAtMTA1LDExICsxMDcsMTMg
QEAgdHlwZWRlZiBlbnVtIFVSZWdpb25UeXBlIHsKICAgICAgKi8KICAgICBVUkdOX0RFUFJFQ0FU
RUQsCiAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCiAgICAgLyoqCi0gICAgICogTWF4
aW11bSB2YWx1ZSBmb3IgdGhpcyB1bnVtZXJhdGlvbi4KLSAgICAgKiBAc3RhYmxlIElDVSA1MSAK
KyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVUmVnaW9uVHlwZSB2YWx1
ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5n
ZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KICAgICAgKi8KICAgICBVUkdOX0xJ
TUlUCisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogfSBVUmVnaW9uVHlwZTsK
IAogI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdXJlbmFtZS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91cmVuYW1lLmgKaW5k
ZXggMzEzZjI3MWFiMzFlYTcxNzUxMmQ4NDU4YTdlZjUxNzBiNmUwMGRhYS4uOTgyNjU1YzQ0MjVl
MGI3OTU4NmQzYmViNjNkYjVmYzI1NjZhNzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91cmVuYW1lLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91cmVuYW1lLmgK
QEAgLTEsMTEgKzEsMTMgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIENvcHly
aWdodCAoQykgMjAwMi0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAg
Q29weXJpZ2h0IChDKSAyMDAyLTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMK
ICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKICoKICogICBmaWxlIG5hbWU6ICB1cmVuYW1lLmgKLSogICBlbmNv
ZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAg
OCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpAQCAtOTgsMTIgKzEwMCwxNyBAQAog
I2RlZmluZSBfVVRGMTZCRURhdGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKF9VVEYxNkJFRGF0
YSkKICNkZWZpbmUgX1VURjE2RGF0YSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoX1VURjE2RGF0
YSkKICNkZWZpbmUgX1VURjE2TEVEYXRhIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShfVVRGMTZM
RURhdGEpCisjZGVmaW5lIF9VVEYxNnYyRGF0YSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoX1VU
RjE2djJEYXRhKQogI2RlZmluZSBfVVRGMzJCRURhdGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KF9VVEYzMkJFRGF0YSkKICNkZWZpbmUgX1VURjMyRGF0YSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUoX1VURjMyRGF0YSkKICNkZWZpbmUgX1VURjMyTEVEYXRhIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRShfVVRGMzJMRURhdGEpCiAjZGVmaW5lIF9VVEY3RGF0YSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUoX1VURjdEYXRhKQogI2RlZmluZSBfVVRGOERhdGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKF9VVEY4RGF0YSkKKyNkZWZpbmUgYWxsb3dlZEhvdXJGb3JtYXRzQ2xlYW51cCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUoYWxsb3dlZEhvdXJGb3JtYXRzQ2xlYW51cCkKKyNkZWZpbmUgY2hl
Y2tJbXBsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShjaGVja0ltcGwpCiAjZGVmaW5lIGNtZW1v
cnlfY2xlYW51cCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoY21lbW9yeV9jbGVhbnVwKQorI2Rl
ZmluZSBkYXlQZXJpb2RSdWxlc0NsZWFudXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGRheVBl
cmlvZFJ1bGVzQ2xlYW51cCkKKyNkZWZpbmUgZGVsZXRlQWxsb3dlZEhvdXJGb3JtYXRzIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRShkZWxldGVBbGxvd2VkSG91ckZvcm1hdHMpCiAjZGVmaW5lIGdU
aW1lWm9uZUZpbGVzSW5pdE9uY2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGdUaW1lWm9uZUZp
bGVzSW5pdE9uY2UpCiAjZGVmaW5lIGl6cnVsZV9jbG9uZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUoaXpydWxlX2Nsb25lKQogI2RlZmluZSBpenJ1bGVfY2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKGl6cnVsZV9jbG9zZSkKQEAgLTExOSwxNiArMTI2LDYgQEAKICNkZWZpbmUgaXpydWxl
X2dldFN0YXRpY0NsYXNzSUQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGl6cnVsZV9nZXRTdGF0
aWNDbGFzc0lEKQogI2RlZmluZSBpenJ1bGVfaXNFcXVpdmFsZW50VG8gVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKGl6cnVsZV9pc0VxdWl2YWxlbnRUbykKICNkZWZpbmUgaXpydWxlX29wZW4gVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKGl6cnVsZV9vcGVuKQotI2RlZmluZSBsZV9jbG9zZSBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUobGVfY2xvc2UpCi0jZGVmaW5lIGxlX2NyZWF0ZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUobGVfY3JlYXRlKQotI2RlZmluZSBsZV9nZXRDaGFySW5kaWNlcyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUobGVfZ2V0Q2hhckluZGljZXMpCi0jZGVmaW5lIGxlX2dl
dENoYXJJbmRpY2VzV2l0aEJhc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxlX2dldENoYXJJ
bmRpY2VzV2l0aEJhc2UpCi0jZGVmaW5lIGxlX2dldEdseXBoQ291bnQgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKGxlX2dldEdseXBoQ291bnQpCi0jZGVmaW5lIGxlX2dldEdseXBoUG9zaXRpb24g
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxlX2dldEdseXBoUG9zaXRpb24pCi0jZGVmaW5lIGxl
X2dldEdseXBoUG9zaXRpb25zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShsZV9nZXRHbHlwaFBv
c2l0aW9ucykKLSNkZWZpbmUgbGVfZ2V0R2x5cGhzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShs
ZV9nZXRHbHlwaHMpCi0jZGVmaW5lIGxlX2xheW91dENoYXJzIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRShsZV9sYXlvdXRDaGFycykKLSNkZWZpbmUgbGVfcmVzZXQgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKGxlX3Jlc2V0KQogI2RlZmluZSBsb2NhbGVfZ2V0S2V5d29yZHMgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKGxvY2FsZV9nZXRLZXl3b3JkcykKICNkZWZpbmUgbG9jYWxlX2dldEtleXdv
cmRzU3RhcnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxvY2FsZV9nZXRLZXl3b3Jkc1N0YXJ0
KQogI2RlZmluZSBsb2NhbGVfZ2V0X2RlZmF1bHQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxv
Y2FsZV9nZXRfZGVmYXVsdCkKQEAgLTQ3NCw2ICs0NzEsOSBAQAogI2RlZmluZSB1YmlkaV9zZXRS
ZW9yZGVyaW5nT3B0aW9ucyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfc2V0UmVvcmRl
cmluZ09wdGlvbnMpCiAjZGVmaW5lIHViaWRpX3dyaXRlUmVvcmRlcmVkIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1YmlkaV93cml0ZVJlb3JkZXJlZCkKICNkZWZpbmUgdWJpZGlfd3JpdGVSZXZl
cnNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV93cml0ZVJldmVyc2UpCisjZGVmaW5l
IHViaWRpdHJhbnNmb3JtX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaXRyYW5z
Zm9ybV9jbG9zZSkKKyNkZWZpbmUgdWJpZGl0cmFuc2Zvcm1fb3BlbiBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWJpZGl0cmFuc2Zvcm1fb3BlbikKKyNkZWZpbmUgdWJpZGl0cmFuc2Zvcm1fdHJh
bnNmb3JtIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaXRyYW5zZm9ybV90cmFuc2Zvcm0p
CiAjZGVmaW5lIHVibG9ja19nZXRDb2RlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmxvY2tf
Z2V0Q29kZSkKICNkZWZpbmUgdWJya19jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJy
a19jbG9zZSkKICNkZWZpbmUgdWJya19jb3VudEF2YWlsYWJsZSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWJya19jb3VudEF2YWlsYWJsZSkKQEAgLTQ4MSw2ICs0ODEsNyBAQAogI2RlZmluZSB1
YnJrX2ZpcnN0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX2ZpcnN0KQogI2RlZmluZSB1
YnJrX2ZvbGxvd2luZyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJya19mb2xsb3dpbmcpCiAj
ZGVmaW5lIHVicmtfZ2V0QXZhaWxhYmxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX2dl
dEF2YWlsYWJsZSkKKyNkZWZpbmUgdWJya19nZXRCaW5hcnlSdWxlcyBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWJya19nZXRCaW5hcnlSdWxlcykKICNkZWZpbmUgdWJya19nZXRMb2NhbGVCeVR5
cGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVicmtfZ2V0TG9jYWxlQnlUeXBlKQogI2RlZmlu
ZSB1YnJrX2dldFJ1bGVTdGF0dXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVicmtfZ2V0UnVs
ZVN0YXR1cykKICNkZWZpbmUgdWJya19nZXRSdWxlU3RhdHVzVmVjIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1YnJrX2dldFJ1bGVTdGF0dXNWZWMpCkBAIC00ODgsNiArNDg5LDcgQEAKICNkZWZp
bmUgdWJya19sYXN0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX2xhc3QpCiAjZGVmaW5l
IHVicmtfbmV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJya19uZXh0KQogI2RlZmluZSB1
YnJrX29wZW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVicmtfb3BlbikKKyNkZWZpbmUgdWJy
a19vcGVuQmluYXJ5UnVsZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVicmtfb3BlbkJpbmFy
eVJ1bGVzKQogI2RlZmluZSB1YnJrX29wZW5SdWxlcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWJya19vcGVuUnVsZXMpCiAjZGVmaW5lIHVicmtfcHJlY2VkaW5nIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1YnJrX3ByZWNlZGluZykKICNkZWZpbmUgdWJya19wcmV2aW91cyBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWJya19wcmV2aW91cykKQEAgLTU0OSw3ICs1NTEsNiBAQAogI2RlZmlu
ZSB1Y2FzZV9hZGRTdHJpbmdDYXNlQ2xvc3VyZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNh
c2VfYWRkU3RyaW5nQ2FzZUNsb3N1cmUpCiAjZGVmaW5lIHVjYXNlX2ZvbGQgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVjYXNlX2ZvbGQpCiAjZGVmaW5lIHVjYXNlX2dldENhc2VMb2NhbGUgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYXNlX2dldENhc2VMb2NhbGUpCi0jZGVmaW5lIHVjYXNl
X2dldFNpbmdsZXRvbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhc2VfZ2V0U2luZ2xldG9u
KQogI2RlZmluZSB1Y2FzZV9nZXRUeXBlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZV9n
ZXRUeXBlKQogI2RlZmluZSB1Y2FzZV9nZXRUeXBlT3JJZ25vcmFibGUgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVjYXNlX2dldFR5cGVPcklnbm9yYWJsZSkKICNkZWZpbmUgdWNhc2VfaGFzQmlu
YXJ5UHJvcGVydHkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYXNlX2hhc0JpbmFyeVByb3Bl
cnR5KQpAQCAtOTQ0LDYgKzk0NSw3IEBACiAjZGVmaW5lIHVoYXNoX2lnZXQgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVoYXNoX2lnZXQpCiAjZGVmaW5lIHVoYXNoX2lnZXRpIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1aGFzaF9pZ2V0aSkKICNkZWZpbmUgdWhhc2hfaW5pdCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWhhc2hfaW5pdCkKKyNkZWZpbmUgdWhhc2hfaW5pdFNpemUgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX2luaXRTaXplKQogI2RlZmluZSB1aGFzaF9pcHV0IFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9pcHV0KQogI2RlZmluZSB1aGFzaF9pcHV0aSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfaXB1dGkpCiAjZGVmaW5lIHVoYXNoX2lyZW1v
dmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX2lyZW1vdmUpCkBAIC0xMDEzLDYgKzEw
MTUsNyBAQAogI2RlZmluZSB1bGlzdF9nZXRMaXN0U2l6ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodWxpc3RfZ2V0TGlzdFNpemUpCiAjZGVmaW5lIHVsaXN0X2dldE5leHQgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVsaXN0X2dldE5leHQpCiAjZGVmaW5lIHVsaXN0X25leHRfa2V5d29yZF92
YWx1ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxpc3RfbmV4dF9rZXl3b3JkX3ZhbHVlKQor
I2RlZmluZSB1bGlzdF9yZW1vdmVTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsaXN0
X3JlbW92ZVN0cmluZykKICNkZWZpbmUgdWxpc3RfcmVzZXRMaXN0IFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1bGlzdF9yZXNldExpc3QpCiAjZGVmaW5lIHVsaXN0X3Jlc2V0X2tleXdvcmRfdmFs
dWVzX2l0ZXJhdG9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bGlzdF9yZXNldF9rZXl3b3Jk
X3ZhbHVlc19pdGVyYXRvcikKICNkZWZpbmUgdWxpc3RmbXRfY2xvc2UgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVsaXN0Zm10X2Nsb3NlKQpAQCAtMTA3Nyw2ICsxMDgwLDcgQEAKICNkZWZpbmUg
dWxvY2RhdGFfc2V0Tm9TdWJzdGl0dXRlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jZGF0
YV9zZXROb1N1YnN0aXR1dGUpCiAjZGVmaW5lIHVsb2NpbXBfZ2V0Q291bnRyeSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWxvY2ltcF9nZXRDb3VudHJ5KQogI2RlZmluZSB1bG9jaW1wX2dldExh
bmd1YWdlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jaW1wX2dldExhbmd1YWdlKQorI2Rl
ZmluZSB1bG9jaW1wX2dldFJlZ2lvbkZvclN1cHBsZW1lbnRhbERhdGEgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVsb2NpbXBfZ2V0UmVnaW9uRm9yU3VwcGxlbWVudGFsRGF0YSkKICNkZWZpbmUg
dWxvY2ltcF9nZXRTY3JpcHQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NpbXBfZ2V0U2Ny
aXB0KQogI2RlZmluZSB1bG9jaW1wX3RvQmNwS2V5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
bG9jaW1wX3RvQmNwS2V5KQogI2RlZmluZSB1bG9jaW1wX3RvQmNwVHlwZSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWxvY2ltcF90b0JjcFR5cGUpCkBAIC0xMTQzLDYgKzExNDcsNyBAQAogI2Rl
ZmluZSB1bnVtX2Zvcm1hdERlY2ltYWwgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVudW1fZm9y
bWF0RGVjaW1hbCkKICNkZWZpbmUgdW51bV9mb3JtYXREb3VibGUgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVudW1fZm9ybWF0RG91YmxlKQogI2RlZmluZSB1bnVtX2Zvcm1hdERvdWJsZUN1cnJl
bmN5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtX2Zvcm1hdERvdWJsZUN1cnJlbmN5KQor
I2RlZmluZSB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMpCiAjZGVmaW5lIHVudW1fZm9ybWF0SW50NjQg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVudW1fZm9ybWF0SW50NjQpCiAjZGVmaW5lIHVudW1f
Zm9ybWF0VUZvcm1hdHRhYmxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtX2Zvcm1hdFVG
b3JtYXR0YWJsZSkKICNkZWZpbmUgdW51bV9nZXRBdHRyaWJ1dGUgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVudW1fZ2V0QXR0cmlidXRlKQpAQCAtMTE3NCw5ICsxMTc5LDExIEBACiAjZGVmaW5l
IHVudW1zeXNfb3BlbkF2YWlsYWJsZU5hbWVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVt
c3lzX29wZW5BdmFpbGFibGVOYW1lcykKICNkZWZpbmUgdW51bXN5c19vcGVuQnlOYW1lIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtc3lzX29wZW5CeU5hbWUpCiAjZGVmaW5lIHVwbHJ1bGVz
X2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGxydWxlc19jbG9zZSkKKyNkZWZpbmUg
dXBscnVsZXNfZ2V0S2V5d29yZHMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwbHJ1bGVzX2dl
dEtleXdvcmRzKQogI2RlZmluZSB1cGxydWxlc19vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1cGxydWxlc19vcGVuKQogI2RlZmluZSB1cGxydWxlc19vcGVuRm9yVHlwZSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXBscnVsZXNfb3BlbkZvclR5cGUpCiAjZGVmaW5lIHVwbHJ1bGVzX3Nl
bGVjdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBscnVsZXNfc2VsZWN0KQorI2RlZmluZSB1
cGxydWxlc19zZWxlY3RXaXRoRm9ybWF0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGxydWxl
c19zZWxlY3RXaXRoRm9ybWF0KQogI2RlZmluZSB1cGx1Z19jbG9zZUxpYnJhcnkgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVwbHVnX2Nsb3NlTGlicmFyeSkKICNkZWZpbmUgdXBsdWdfZmluZExp
YnJhcnkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwbHVnX2ZpbmRMaWJyYXJ5KQogI2RlZmlu
ZSB1cGx1Z19nZXRDb25maWd1cmF0aW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGx1Z19n
ZXRDb25maWd1cmF0aW9uKQpAQCAtMTIxMyw2ICsxMjIwLDcgQEAKICNkZWZpbmUgdXBydl9jb21w
YXJlSW52RWJjZGljIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2NvbXBhcmVJbnZFYmNk
aWMpCiAjZGVmaW5lIHVwcnZfY29tcGFyZUludkViY2RpY0FzQXNjaWkgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVwcnZfY29tcGFyZUludkViY2RpY0FzQXNjaWkpCiAjZGVmaW5lIHVwcnZfY29u
dmVydFRvTENJRCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9jb252ZXJ0VG9MQ0lEKQor
I2RlZmluZSB1cHJ2X2NvbnZlcnRUb0xDSURQbGF0Zm9ybSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXBydl9jb252ZXJ0VG9MQ0lEUGxhdGZvcm0pCiAjZGVmaW5lIHVwcnZfY29udmVydFRvUG9z
aXggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfY29udmVydFRvUG9zaXgpCiAjZGVmaW5l
IHVwcnZfY29weUFzY2lpIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2NvcHlBc2NpaSkK
ICNkZWZpbmUgdXBydl9jb3B5RWJjZGljIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2Nv
cHlFYmNkaWMpCkBAIC0xMzU0LDYgKzEzNjIsNyBAQAogI2RlZmluZSB1cHJ2X3RvdXBwZXIgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfdG91cHBlcikKICNkZWZpbmUgdXBydl90cnVuYyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl90cnVuYykKICNkZWZpbmUgdXBydl90em5hbWUg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfdHpuYW1lKQorI2RlZmluZSB1cHJ2X3R6bmFt
ZV9jbGVhcl9jYWNoZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl90em5hbWVfY2xlYXJf
Y2FjaGUpCiAjZGVmaW5lIHVwcnZfdHpzZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZf
dHpzZXQpCiAjZGVmaW5lIHVwcnZfdWludDE2Q29tcGFyYXRvciBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXBydl91aW50MTZDb21wYXJhdG9yKQogI2RlZmluZSB1cHJ2X3VpbnQzMkNvbXBhcmF0
b3IgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfdWludDMyQ29tcGFyYXRvcikKQEAgLTE0
NDUsMTEgKzE0NTQsMTcgQEAKICNkZWZpbmUgdXJlZ2lvbl9nZXRSZWdpb25Gcm9tQ29kZSBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2lvbl9nZXRSZWdpb25Gcm9tQ29kZSkKICNkZWZpbmUg
dXJlZ2lvbl9nZXRSZWdpb25Gcm9tTnVtZXJpY0NvZGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVyZWdpb25fZ2V0UmVnaW9uRnJvbU51bWVyaWNDb2RlKQogI2RlZmluZSB1cmVnaW9uX2dldFR5
cGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdpb25fZ2V0VHlwZSkKKyNkZWZpbmUgdXJl
bGRhdGVmbXRfY2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWxkYXRlZm10X2Nsb3Nl
KQorI2RlZmluZSB1cmVsZGF0ZWZtdF9jb21iaW5lRGF0ZUFuZFRpbWUgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVyZWxkYXRlZm10X2NvbWJpbmVEYXRlQW5kVGltZSkKKyNkZWZpbmUgdXJlbGRh
dGVmbXRfZm9ybWF0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVsZGF0ZWZtdF9mb3JtYXQp
CisjZGVmaW5lIHVyZWxkYXRlZm10X2Zvcm1hdE51bWVyaWMgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVyZWxkYXRlZm10X2Zvcm1hdE51bWVyaWMpCisjZGVmaW5lIHVyZWxkYXRlZm10X29wZW4g
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWxkYXRlZm10X29wZW4pCiAjZGVmaW5lIHVyZXNf
Y2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfY2xvc2UpCiAjZGVmaW5lIHVyZXNf
Y29weVJlc2IgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfY29weVJlc2IpCiAjZGVmaW5l
IHVyZXNfY291bnRBcnJheUl0ZW1zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2NvdW50
QXJyYXlJdGVtcykKICNkZWZpbmUgdXJlc19maW5kUmVzb3VyY2UgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVyZXNfZmluZFJlc291cmNlKQogI2RlZmluZSB1cmVzX2ZpbmRTdWJSZXNvdXJjZSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19maW5kU3ViUmVzb3VyY2UpCisjZGVmaW5lIHVy
ZXNfZ2V0QWxsSXRlbXNXaXRoRmFsbGJhY2sgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNf
Z2V0QWxsSXRlbXNXaXRoRmFsbGJhY2spCiAjZGVmaW5lIHVyZXNfZ2V0QmluYXJ5IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1cmVzX2dldEJpbmFyeSkKICNkZWZpbmUgdXJlc19nZXRCeUluZGV4
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2dldEJ5SW5kZXgpCiAjZGVmaW5lIHVyZXNf
Z2V0QnlLZXkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfZ2V0QnlLZXkpCkBAIC0xNTk3
LDEzICsxNjEyLDIwIEBACiAjZGVmaW5lIHVzcG9vZl9hcmVDb25mdXNhYmxlVVRGOCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2FyZUNvbmZ1c2FibGVVVEY4KQogI2RlZmluZSB1c3Bv
b2ZfYXJlQ29uZnVzYWJsZVVuaWNvZGVTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVz
cG9vZl9hcmVDb25mdXNhYmxlVW5pY29kZVN0cmluZykKICNkZWZpbmUgdXNwb29mX2NoZWNrIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfY2hlY2spCisjZGVmaW5lIHVzcG9vZl9jaGVj
azIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9jaGVjazIpCisjZGVmaW5lIHVzcG9v
Zl9jaGVjazJVVEY4IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfY2hlY2syVVRGOCkK
KyNkZWZpbmUgdXNwb29mX2NoZWNrMlVuaWNvZGVTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVzcG9vZl9jaGVjazJVbmljb2RlU3RyaW5nKQogI2RlZmluZSB1c3Bvb2ZfY2hlY2tVVEY4
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfY2hlY2tVVEY4KQogI2RlZmluZSB1c3Bv
b2ZfY2hlY2tVbmljb2RlU3RyaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfY2hl
Y2tVbmljb2RlU3RyaW5nKQogI2RlZmluZSB1c3Bvb2ZfY2xvbmUgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVzcG9vZl9jbG9uZSkKICNkZWZpbmUgdXNwb29mX2Nsb3NlIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1c3Bvb2ZfY2xvc2UpCisjZGVmaW5lIHVzcG9vZl9jbG9zZUNoZWNrUmVzdWx0
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfY2xvc2VDaGVja1Jlc3VsdCkKICNkZWZp
bmUgdXNwb29mX2dldEFsbG93ZWRDaGFycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29m
X2dldEFsbG93ZWRDaGFycykKICNkZWZpbmUgdXNwb29mX2dldEFsbG93ZWRMb2NhbGVzIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0QWxsb3dlZExvY2FsZXMpCiAjZGVmaW5lIHVz
cG9vZl9nZXRBbGxvd2VkVW5pY29kZVNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29m
X2dldEFsbG93ZWRVbmljb2RlU2V0KQorI2RlZmluZSB1c3Bvb2ZfZ2V0Q2hlY2tSZXN1bHRDaGVj
a3MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9nZXRDaGVja1Jlc3VsdENoZWNrcykK
KyNkZWZpbmUgdXNwb29mX2dldENoZWNrUmVzdWx0TnVtZXJpY3MgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVzcG9vZl9nZXRDaGVja1Jlc3VsdE51bWVyaWNzKQorI2RlZmluZSB1c3Bvb2ZfZ2V0
Q2hlY2tSZXN1bHRSZXN0cmljdGlvbkxldmVsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bv
b2ZfZ2V0Q2hlY2tSZXN1bHRSZXN0cmljdGlvbkxldmVsKQogI2RlZmluZSB1c3Bvb2ZfZ2V0Q2hl
Y2tzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0Q2hlY2tzKQogI2RlZmluZSB1
c3Bvb2ZfZ2V0SW5jbHVzaW9uU2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0
SW5jbHVzaW9uU2V0KQogI2RlZmluZSB1c3Bvb2ZfZ2V0SW5jbHVzaW9uVW5pY29kZVNldCBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2dldEluY2x1c2lvblVuaWNvZGVTZXQpCkBAIC0x
NjEzLDcgKzE2MzUsOSBAQAogI2RlZmluZSB1c3Bvb2ZfZ2V0U2tlbGV0b24gVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVzcG9vZl9nZXRTa2VsZXRvbikKICNkZWZpbmUgdXNwb29mX2dldFNrZWxl
dG9uVVRGOCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2dldFNrZWxldG9uVVRGOCkK
ICNkZWZpbmUgdXNwb29mX2dldFNrZWxldG9uVW5pY29kZVN0cmluZyBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXNwb29mX2dldFNrZWxldG9uVW5pY29kZVN0cmluZykKKyNkZWZpbmUgdXNwb29m
X2ludGVybmFsSW5pdFN0YXRpY3MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9pbnRl
cm5hbEluaXRTdGF0aWNzKQogI2RlZmluZSB1c3Bvb2Zfb3BlbiBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXNwb29mX29wZW4pCisjZGVmaW5lIHVzcG9vZl9vcGVuQ2hlY2tSZXN1bHQgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9vcGVuQ2hlY2tSZXN1bHQpCiAjZGVmaW5lIHVzcG9v
Zl9vcGVuRnJvbVNlcmlhbGl6ZWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9vcGVu
RnJvbVNlcmlhbGl6ZWQpCiAjZGVmaW5lIHVzcG9vZl9vcGVuRnJvbVNvdXJjZSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXNwb29mX29wZW5Gcm9tU291cmNlKQogI2RlZmluZSB1c3Bvb2Zfc2Vy
aWFsaXplIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2Zfc2VyaWFsaXplKQpAQCAtMTYz
MSwxMiArMTY1NSwxNCBAQAogI2RlZmluZSB1c3RyX2hhc2hDaGFyc04gVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVzdHJfaGFzaENoYXJzTikKICNkZWZpbmUgdXN0cl9oYXNoSUNoYXJzTiBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXN0cl9oYXNoSUNoYXJzTikKICNkZWZpbmUgdXN0cl9oYXNo
VUNoYXJzTiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXN0cl9oYXNoVUNoYXJzTikKKyNkZWZp
bmUgdXN0cmNhc2VfZ2V0Q2FzZUxvY2FsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXN0cmNh
c2VfZ2V0Q2FzZUxvY2FsZSkKKyNkZWZpbmUgdXN0cmNhc2VfZ2V0VGl0bGVCcmVha0l0ZXJhdG9y
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3RyY2FzZV9nZXRUaXRsZUJyZWFrSXRlcmF0b3Ip
CiAjZGVmaW5lIHVzdHJjYXNlX2ludGVybmFsRm9sZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXN0cmNhc2VfaW50ZXJuYWxGb2xkKQogI2RlZmluZSB1c3RyY2FzZV9pbnRlcm5hbFRvTG93ZXIg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzdHJjYXNlX2ludGVybmFsVG9Mb3dlcikKICNkZWZp
bmUgdXN0cmNhc2VfaW50ZXJuYWxUb1RpdGxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Ry
Y2FzZV9pbnRlcm5hbFRvVGl0bGUpCiAjZGVmaW5lIHVzdHJjYXNlX2ludGVybmFsVG9VcHBlciBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXN0cmNhc2VfaW50ZXJuYWxUb1VwcGVyKQogI2RlZmlu
ZSB1c3RyY2FzZV9tYXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzdHJjYXNlX21hcCkKLSNk
ZWZpbmUgdXN0cmNhc2Vfc2V0VGVtcENhc2VNYXBMb2NhbGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVzdHJjYXNlX3NldFRlbXBDYXNlTWFwTG9jYWxlKQorI2RlZmluZSB1c3RyY2FzZV9tYXBX
aXRoT3ZlcmxhcCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXN0cmNhc2VfbWFwV2l0aE92ZXJs
YXApCiAjZGVmaW5lIHV0ZXh0X2NoYXIzMkF0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dGV4
dF9jaGFyMzJBdCkKICNkZWZpbmUgdXRleHRfY2xvbmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHV0ZXh0X2Nsb25lKQogI2RlZmluZSB1dGV4dF9jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXRleHRfY2xvc2UpCkBAIC0xNjgxLDcgKzE3MDcsNiBAQAogI2RlZmluZSB1dHJhY2VfZnVu
Y3Rpb25OYW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJhY2VfZnVuY3Rpb25OYW1lKQog
I2RlZmluZSB1dHJhY2VfZ2V0RnVuY3Rpb25zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJh
Y2VfZ2V0RnVuY3Rpb25zKQogI2RlZmluZSB1dHJhY2VfZ2V0TGV2ZWwgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHV0cmFjZV9nZXRMZXZlbCkKLSNkZWZpbmUgdXRyYWNlX2xldmVsIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1dHJhY2VfbGV2ZWwpCiAjZGVmaW5lIHV0cmFjZV9zZXRGdW5jdGlv
bnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmFjZV9zZXRGdW5jdGlvbnMpCiAjZGVmaW5l
IHV0cmFjZV9zZXRMZXZlbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyYWNlX3NldExldmVs
KQogI2RlZmluZSB1dHJhY2VfdmZvcm1hdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyYWNl
X3Zmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VyZXAuaCBiL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvdXJlcC5oCmluZGV4IGM3Yjk5NDc2ZjAwYjhiM2U4OTdhMzVm
YWE0NjI4MmZlZGVmYzM3NzQuLjkzMjIwMmRkYjA0YjFjMTNlZmY0YTJhNDg5ZmRkYWRmZTVlNjE0
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXJlcC5oCisrKyBiL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdXJlcC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQg
bGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1
c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxMCwgSW50ZXJuYXRpb25hbCBC
dXNpbmVzcyBNYWNoaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91cmVz
LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VyZXMuaAppbmRleCBjOTFmMDMwYjEwMDQ1NDFk
MTNmODNkODg3MjVmNWRlOTgzYmM0YjM4Li45MThiOWYyMDhlMmNkMDQ3MzA2ODQ2Y2I1YjUyOWU2
Y2Q4ZjRmMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VyZXMuaAorKysg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VyZXMuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIw
MTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVy
bXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgotKiAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDEyLDIwMTQsIEludGVybmF0aW9u
YWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiwgSW50ZXJu
YXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBB
bGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtMTIsNyArMTQsNyBAQAog
KiAgIDA0LzAxLzk3ICAgIGFsaXUgICAgICAgIENyZWF0aW9uLgogKiAgIDAyLzIyLzk5ICAgIGRh
bWliYSAgICAgIG92ZXJoYXVsLgogKiAgIDA0LzA0Lzk5ICAgIGhlbGVuYSAgICAgIEZpeGVkIGlu
dGVybmFsIGhlYWRlciBpbmNsdXNpb24uCi0qICAgMDQvMTUvOTkgICAgTWFkaHUgICAgICAgVXBk
YXRlZCBKYXZhZG9jICAKKyogICAwNC8xNS85OSAgICBNYWRodSAgICAgICBVcGRhdGVkIEphdmFk
b2MKICogICAwNi8xNC85OSAgICBzdGVwaGVuICAgICBSZW1vdmVkIGZ1bmN0aW9ucyB0YWtpbmcg
YSBmaWxlbmFtZSBzdWZmaXguCiAqICAgMDcvMjAvOTkgICAgc3RlcGhlbiAgICAgTGFuZ3VhZ2Ut
aW5kZXBlbmRlbnQgeXBlZGVmIHRvIHZvaWQqCiAqICAgMTEvMDkvOTkgICAgd2VpdiAgICAgICAg
QWRkZWQgdXJlc19nZXRMb2NhbGUoKQpAQCAtMjksNyArMzEsNyBAQAogCiAvKioKICAqIFxmaWxl
Ci0gKiBcYnJpZWYgQyBBUEk6IFJlc291cmNlIEJ1bmRsZSAKKyAqIFxicmllZiBDIEFQSTogUmVz
b3VyY2UgQnVuZGxlCiAgKgogICogPGgyPkMgQVBJOiBSZXNvdXJjZSBCdW5kbGU8L2gyPgogICoK
QEAgLTQwLDcgKzQyLDcgQEAKICAqIDxQPgogICogUmVzb3VyY2UgYnVuZGxlcyBpbiBJQ1U0QyBh
cmUgY3VycmVudGx5IGRlZmluZWQgdXNpbmcgdGV4dCBmaWxlcyB3aGljaCBjb25mb3JtIHRvIHRo
ZSBmb2xsb3dpbmcKICAqIDxhIGhyZWY9Imh0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3Jl
cG9zL2ljdS9pY3VodG1sL3RydW5rL2Rlc2lnbi9ibmZfcmIudHh0Ij5CTkYgZGVmaW5pdGlvbjwv
YT4uCi0gKiBNb3JlIG9uIHJlc291cmNlIGJ1bmRsZSBjb25jZXB0cyBhbmQgc3ludGF4IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgCisgKiBNb3JlIG9uIHJlc291cmNlIGJ1bmRsZSBjb25jZXB0cyBhbmQg
c3ludGF4IGNhbiBiZSBmb3VuZCBpbiB0aGUKICAqIDxhIGhyZWY9Imh0dHA6Ly9pY3UtcHJvamVj
dC5vcmcvdXNlcmd1aWRlL1Jlc291cmNlTWFuYWdlbWVudC5odG1sIj5Vc2VycyBHdWlkZTwvYT4u
CiAgKiA8UD4KICAqLwpAQCAtMTE5LDEwICsxMjEsMTQgQEAgdHlwZWRlZiBlbnVtIHsKICAgICAv
KiogQGRlcHJlY2F0ZWQgSUNVIDIuNiBVc2UgdGhlIFVSRVNfIGNvbnN0YW50IGluc3RlYWQuICov
CiAgICAgUkVTX0lOVF9WRUNUT1I9VVJFU19JTlRfVkVDVE9SLAogICAgIC8qKiBAZGVwcmVjYXRl
ZCBJQ1UgMi42IE5vdCB1c2VkLiAqLwotICAgIFJFU19SRVNFUlZFRD0xNSwgCi0jZW5kaWYgLyog
VV9ISURFX0RFUFJFQ0FURURfQVBJICovCisgICAgUkVTX1JFU0VSVkVEPTE1LAogCisgICAgLyoq
CisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVVJlc1R5cGUgdmFsdWUu
CisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ug
b3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVVJFU19MSU1J
VCA9IDE2CisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBVUmVzVHlwZTsKIAog
LyoKQEAgLTEzNCwxNSArMTQwLDE1IEBAIHR5cGVkZWYgZW51bSB7CiAgKiB0aGVpciBjb3JyZXNw
b25kaW5nIGtleXMuCiAgKiBOb3RlIHRoYXQgdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBvZiBj
YWxsaW5nIDxUVD51cmVzX2Nsb3NlPC9UVD4gb24gZWFjaCBzdWNjZXNmdWxseQogICogb3BlbmVk
IHJlc291cmNlIGJ1bmRsZS4KLSAqIEBwYXJhbSBwYWNrYWdlTmFtZSAgIFRoZSBwYWNrYWdlTmFt
ZSBhbmQgbG9jYWxlIHRvZ2V0aGVyIHBvaW50IHRvIGFuIElDVSB1ZGF0YSBvYmplY3QsIAotICog
ICAgICAgICAgICAgICAgICAgICAgYXMgZGVmaW5lZCBieSA8Y29kZT4gdWRhdGFfb3BlbiggcGFj
a2FnZU5hbWUsICJyZXMiLCBsb2NhbGUsIGVycikgPC9jb2RlPiAKKyAqIEBwYXJhbSBwYWNrYWdl
TmFtZSAgIFRoZSBwYWNrYWdlTmFtZSBhbmQgbG9jYWxlIHRvZ2V0aGVyIHBvaW50IHRvIGFuIElD
VSB1ZGF0YSBvYmplY3QsCisgKiAgICAgICAgICAgICAgICAgICAgICBhcyBkZWZpbmVkIGJ5IDxj
b2RlPiB1ZGF0YV9vcGVuKCBwYWNrYWdlTmFtZSwgInJlcyIsIGxvY2FsZSwgZXJyKSA8L2NvZGU+
CiAgKiAgICAgICAgICAgICAgICAgICAgICBvciBlcXVpdmFsZW50LiAgVHlwaWNhbGx5LCBwYWNr
YWdlTmFtZSB3aWxsIHJlZmVyIHRvIGEgKC5kYXQpIGZpbGUsIG9yIHRvCiAgKiAgICAgICAgICAg
ICAgICAgICAgICBhIHBhY2thZ2UgcmVnaXN0ZXJlZCB3aXRoIHVkYXRhX3NldEFwcERhdGEoKS4g
VXNpbmcgYSBmdWxsIGZpbGUgb3IgZGlyZWN0b3J5CiAgKiAgICAgICAgICAgICAgICAgICAgICBw
YXRobmFtZSBmb3IgcGFja2FnZU5hbWUgaXMgZGVwcmVjYXRlZC4gSWYgTlVMTCwgSUNVIGRhdGEg
d2lsbCBiZSB1c2VkLgogICogQHBhcmFtIGxvY2FsZSAgc3BlY2lmaWVzIHRoZSBsb2NhbGUgZm9y
IHdoaWNoIHdlIHdhbnQgdG8gb3BlbiB0aGUgcmVzb3VyY2UKICAqICAgICAgICAgICAgICAgIGlm
IE5VTEwsIHRoZSBkZWZhdWx0IGxvY2FsZSB3aWxsIGJlIHVzZWQuIElmIHN0cmxlbihsb2NhbGUp
ID09IDAKICAqICAgICAgICAgICAgICAgIHJvb3QgbG9jYWxlIHdpbGwgYmUgdXNlZC4KLSAqICAg
ICAgICAgICAgICAgIAorICoKICAqIEBwYXJhbSBzdGF0dXMgIGZpbGxzIGluIHRoZSBvdXRnb2lu
ZyBlcnJvciBjb2RlLgogICogVGhlIFVFcnJvckNvZGUgZXJyIHBhcmFtZXRlciBpcyB1c2VkIHRv
IHJldHVybiBzdGF0dXMgaW5mb3JtYXRpb24gdG8gdGhlIHVzZXIuIFRvCiAgKiBjaGVjayB3aGV0
aGVyIHRoZSBjb25zdHJ1Y3Rpb24gc3VjY2VlZGVkIG9yIG5vdCwgeW91IHNob3VsZCBjaGVjayB0
aGUgdmFsdWUgb2YKQEAgLTE1MCwzOSArMTU2LDM5IEBAIHR5cGVkZWYgZW51bSB7CiAgKiBpbmZv
cm1hdGlvbmFsIHN0YXR1cyByZXN1bHRzIHdoaWNoIHN0aWxsIGluZGljYXRlIHN1Y2Nlc3MuIFVf
VVNJTkdfRkFMTEJBQ0tfV0FSTklORwogICogaW5kaWNhdGVzIHRoYXQgYSBmYWxsIGJhY2sgbG9j
YWxlIHdhcyB1c2VkLiBGb3IgZXhhbXBsZSwgJ2RlX0NIJyB3YXMgcmVxdWVzdGVkLAogICogYnV0
IG5vdGhpbmcgd2FzIGZvdW5kIHRoZXJlLCBzbyAnZGUnIHdhcyB1c2VkLiBVX1VTSU5HX0RFRkFV
TFRfV0FSTklORyBpbmRpY2F0ZXMgdGhhdAotICogdGhlIGRlZmF1bHQgbG9jYWxlIGRhdGEgb3Ig
cm9vdCBsb2NhbGUgZGF0YSB3YXMgdXNlZDsgbmVpdGhlciB0aGUgcmVxdWVzdGVkIGxvY2FsZSAK
LSAqIG5vciBhbnkgb2YgaXRzIGZhbGwgYmFjayBsb2NhbGVzIGNvdWxkIGJlIGZvdW5kLiBQbGVh
c2Ugc2VlIHRoZSB1c2VycyBndWlkZSBmb3IgbW9yZSAKKyAqIHRoZSBkZWZhdWx0IGxvY2FsZSBk
YXRhIG9yIHJvb3QgbG9jYWxlIGRhdGEgd2FzIHVzZWQ7IG5laXRoZXIgdGhlIHJlcXVlc3RlZCBs
b2NhbGUKKyAqIG5vciBhbnkgb2YgaXRzIGZhbGwgYmFjayBsb2NhbGVzIGNvdWxkIGJlIGZvdW5k
LiBQbGVhc2Ugc2VlIHRoZSB1c2VycyBndWlkZSBmb3IgbW9yZQogICogaW5mb3JtYXRpb24gb24g
dGhpcyB0b3BpYy4KICAqIEByZXR1cm4gICAgICBhIG5ld2x5IGFsbG9jYXRlZCByZXNvdXJjZSBi
dW5kbGUuCiAgKiBAc2VlIHVyZXNfY2xvc2UKICAqIEBzdGFibGUgSUNVIDIuMAogICovCi1VX1NU
QUJMRSBVUmVzb3VyY2VCdW5kbGUqICBVX0VYUE9SVDIgCitVX1NUQUJMRSBVUmVzb3VyY2VCdW5k
bGUqICBVX0VYUE9SVDIKIHVyZXNfb3Blbihjb25zdCBjaGFyKiAgICBwYWNrYWdlTmFtZSwKLSAg
ICAgICAgICBjb25zdCBjaGFyKiAgbG9jYWxlLCAKKyAgICAgICAgICBjb25zdCBjaGFyKiAgbG9j
YWxlLAogICAgICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOwogCiAKLS8qKiBUaGlzIGZ1
bmN0aW9uIGRvZXMgbm90IGNhcmUgd2hhdCBraW5kIG9mIGxvY2FsZUlEIGlzIHBhc3NlZCBpbi4g
SXQgc2ltcGx5IG9wZW5zIGEgYnVuZGxlIHdpdGggCisvKiogVGhpcyBmdW5jdGlvbiBkb2VzIG5v
dCBjYXJlIHdoYXQga2luZCBvZiBsb2NhbGVJRCBpcyBwYXNzZWQgaW4uIEl0IHNpbXBseSBvcGVu
cyBhIGJ1bmRsZSB3aXRoCiAgKiAgdGhhdCBuYW1lLiBGYWxsYmFjayBtZWNoYW5pc20gaXMgZGlz
YWJsZWQgZm9yIHRoZSBuZXcgYnVuZGxlLiBJZiB0aGUgcmVxdWVzdGVkIGJ1bmRsZSBjb250YWlu
cwogICogIGFuICUlQUxJQVMgZGlyZWN0aXZlLCB0aGUgcmVzdWx0cyBhcmUgdW5kZWZpbmVkLgot
ICogQHBhcmFtIHBhY2thZ2VOYW1lICAgVGhlIHBhY2thZ2VOYW1lIGFuZCBsb2NhbGUgdG9nZXRo
ZXIgcG9pbnQgdG8gYW4gSUNVIHVkYXRhIG9iamVjdCwgCi0gKiAgICAgICAgICAgICAgICAgICAg
ICBhcyBkZWZpbmVkIGJ5IDxjb2RlPiB1ZGF0YV9vcGVuKCBwYWNrYWdlTmFtZSwgInJlcyIsIGxv
Y2FsZSwgZXJyKSA8L2NvZGU+IAorICogQHBhcmFtIHBhY2thZ2VOYW1lICAgVGhlIHBhY2thZ2VO
YW1lIGFuZCBsb2NhbGUgdG9nZXRoZXIgcG9pbnQgdG8gYW4gSUNVIHVkYXRhIG9iamVjdCwKKyAq
ICAgICAgICAgICAgICAgICAgICAgIGFzIGRlZmluZWQgYnkgPGNvZGU+IHVkYXRhX29wZW4oIHBh
Y2thZ2VOYW1lLCAicmVzIiwgbG9jYWxlLCBlcnIpIDwvY29kZT4KICAqICAgICAgICAgICAgICAg
ICAgICAgIG9yIGVxdWl2YWxlbnQuICBUeXBpY2FsbHksIHBhY2thZ2VOYW1lIHdpbGwgcmVmZXIg
dG8gYSAoLmRhdCkgZmlsZSwgb3IgdG8KICAqICAgICAgICAgICAgICAgICAgICAgIGEgcGFja2Fn
ZSByZWdpc3RlcmVkIHdpdGggdWRhdGFfc2V0QXBwRGF0YSgpLiBVc2luZyBhIGZ1bGwgZmlsZSBv
ciBkaXJlY3RvcnkKICAqICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lIGZvciBwYWNrYWdl
TmFtZSBpcyBkZXByZWNhdGVkLiBJZiBOVUxMLCBJQ1UgZGF0YSB3aWxsIGJlIHVzZWQuCiAgKiBA
cGFyYW0gbG9jYWxlICBzcGVjaWZpZXMgdGhlIGxvY2FsZSBmb3Igd2hpY2ggd2Ugd2FudCB0byBv
cGVuIHRoZSByZXNvdXJjZQogICogICAgICAgICAgICAgICAgaWYgTlVMTCwgdGhlIGRlZmF1bHQg
bG9jYWxlIHdpbGwgYmUgdXNlZC4gSWYgc3RybGVuKGxvY2FsZSkgPT0gMAogICogICAgICAgICAg
ICAgICAgcm9vdCBsb2NhbGUgd2lsbCBiZSB1c2VkLgotICogICAgICAgICAgICAgICAgCisgKgog
ICogQHBhcmFtIHN0YXR1cyBmaWxscyBpbiB0aGUgb3V0Z29pbmcgZXJyb3IgY29kZS4gRWl0aGVy
IFVfWkVST19FUlJPUiBvciBVX01JU1NJTkdfUkVTT1VSQ0VfRVJST1IKICAqIEByZXR1cm4gICAg
ICBhIG5ld2x5IGFsbG9jYXRlZCByZXNvdXJjZSBidW5kbGUgb3IgTlVMTCBpZiBpdCBkb2Vzbid0
IGV4aXN0LgogICogQHNlZSB1cmVzX2Nsb3NlCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9T
VEFCTEUgVVJlc291cmNlQnVuZGxlKiBVX0VYUE9SVDIgCi11cmVzX29wZW5EaXJlY3QoY29uc3Qg
Y2hhciogcGFja2FnZU5hbWUsIAotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2FsZSwg
CitVX1NUQUJMRSBVUmVzb3VyY2VCdW5kbGUqIFVfRVhQT1JUMgordXJlc19vcGVuRGlyZWN0KGNv
bnN0IGNoYXIqIHBhY2thZ2VOYW1lLAorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2Fs
ZSwKICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOwogCiAvKioKQEAgLTE5MCw4
ICsxOTYsOCBAQCB1cmVzX29wZW5EaXJlY3QoY29uc3QgY2hhciogcGFja2FnZU5hbWUsCiAgKiBU
aGlzIHBhdGggd2lsbCBiZSBjb252ZXJ0ZWQgdG8gY2hhciAqIHVzaW5nIHRoZSBkZWZhdWx0IGNv
bnZlcnRlciwKICAqIHRoZW4gdXJlc19vcGVuKCkgaXMgY2FsbGVkLgogICoKLSAqIEBwYXJhbSBw
YWNrYWdlTmFtZSAgIFRoZSBwYWNrYWdlTmFtZSBhbmQgbG9jYWxlIHRvZ2V0aGVyIHBvaW50IHRv
IGFuIElDVSB1ZGF0YSBvYmplY3QsIAotICogICAgICAgICAgICAgICAgICAgICAgYXMgZGVmaW5l
ZCBieSA8Y29kZT4gdWRhdGFfb3BlbiggcGFja2FnZU5hbWUsICJyZXMiLCBsb2NhbGUsIGVycikg
PC9jb2RlPiAKKyAqIEBwYXJhbSBwYWNrYWdlTmFtZSAgIFRoZSBwYWNrYWdlTmFtZSBhbmQgbG9j
YWxlIHRvZ2V0aGVyIHBvaW50IHRvIGFuIElDVSB1ZGF0YSBvYmplY3QsCisgKiAgICAgICAgICAg
ICAgICAgICAgICBhcyBkZWZpbmVkIGJ5IDxjb2RlPiB1ZGF0YV9vcGVuKCBwYWNrYWdlTmFtZSwg
InJlcyIsIGxvY2FsZSwgZXJyKSA8L2NvZGU+CiAgKiAgICAgICAgICAgICAgICAgICAgICBvciBl
cXVpdmFsZW50LiAgVHlwaWNhbGx5LCBwYWNrYWdlTmFtZSB3aWxsIHJlZmVyIHRvIGEgKC5kYXQp
IGZpbGUsIG9yIHRvCiAgKiAgICAgICAgICAgICAgICAgICAgICBhIHBhY2thZ2UgcmVnaXN0ZXJl
ZCB3aXRoIHVkYXRhX3NldEFwcERhdGEoKS4gVXNpbmcgYSBmdWxsIGZpbGUgb3IgZGlyZWN0b3J5
CiAgKiAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSBmb3IgcGFja2FnZU5hbWUgaXMgZGVw
cmVjYXRlZC4gSWYgTlVMTCwgSUNVIGRhdGEgd2lsbCBiZSB1c2VkLgpAQCAtMjAzLDIxICsyMDks
MjEgQEAgdXJlc19vcGVuRGlyZWN0KGNvbnN0IGNoYXIqIHBhY2thZ2VOYW1lLAogICogQHNlZSB1
cmVzX29wZW4KICAqIEBzdGFibGUgSUNVIDIuMAogICovCi1VX1NUQUJMRSBVUmVzb3VyY2VCdW5k
bGUqIFVfRVhQT1JUMiAKLXVyZXNfb3BlblUoY29uc3QgVUNoYXIqIHBhY2thZ2VOYW1lLCAKLSAg
ICAgICAgICAgY29uc3QgY2hhciogbG9jYWxlLCAKK1VfU1RBQkxFIFVSZXNvdXJjZUJ1bmRsZSog
VV9FWFBPUlQyCit1cmVzX29wZW5VKGNvbnN0IFVDaGFyKiBwYWNrYWdlTmFtZSwKKyAgICAgICAg
ICAgY29uc3QgY2hhciogbG9jYWxlLAogICAgICAgICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOwog
CiAjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogLyoqCiAgKiBSZXR1cm5zIHRoZSBudW1i
ZXIgb2Ygc3RyaW5ncy9hcnJheXMgaW4gcmVzb3VyY2UgYnVuZGxlcy4KLSAqIEJldHRlciB0byB1
c2UgdXJlc19nZXRTaXplLCBhcyB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZC4gCisg
KiBCZXR0ZXIgdG8gdXNlIHVyZXNfZ2V0U2l6ZSwgYXMgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGRl
cHJlY2F0ZWQuCiAgKgogICpAcGFyYW0gcmVzb3VyY2VCdW5kbGUgcmVzb3VyY2UgYnVuZGxlIGNv
bnRhaW5pbmcgdGhlIGRlc2lyZWQgc3RyaW5ncwogICpAcGFyYW0gcmVzb3VyY2VLZXkga2V5IHRh
Z2dpbmcgdGhlIHJlc291cmNlCiAgKkBwYXJhbSBlcnIgZmlsbHMgaW4gdGhlIG91dGdvaW5nIGVy
cm9yIGNvZGUKICAqICAgICAgICAgICAgICAgIGNvdWxkIGJlIDxUVD5VX01JU1NJTkdfUkVTT1VS
Q0VfRVJST1I8L1RUPiBpZiB0aGUga2V5IGlzIG5vdCBmb3VuZAotICogICAgICAgICAgICAgICAg
Y291bGQgYmUgYSBub24tZmFpbGluZyBlcnJvciAKKyAqICAgICAgICAgICAgICAgIGNvdWxkIGJl
IGEgbm9uLWZhaWxpbmcgZXJyb3IKICAqICAgICAgICAgICAgICAgIGUuZy46IDxUVD5VX1VTSU5H
X0ZBTExCQUNLX1dBUk5JTkc8L1RUPiw8VFQ+VV9VU0lOR19GQUxMQkFDS19XQVJOSU5HIDwvVFQ+
CiAgKkByZXR1cm46IGZvciAgICA8U1RST05HPkFycmF5czwvU1RST05HPjogcmV0dXJucyB0aGUg
bnVtYmVyIG9mIHJlc291cmNlcyBpbiB0aGUgYXJyYXkKICAqICAgICAgICAgICAgICAgIDxTVFJP
Tkc+VGFibGVzPC9TVFJPTkc+OiByZXR1cm5zIHRoZSBudW1iZXIgb2YgcmVzb3VyY2VzIGluIHRo
ZSB0YWJsZQpAQCAtMjI1LDcgKzIzMSw3IEBAIHVyZXNfb3BlblUoY29uc3QgVUNoYXIqIHBhY2th
Z2VOYW1lLAogICpAc2VlIHVyZXNfZ2V0U2l6ZQogICogQGRlcHJlY2F0ZWQgSUNVIDIuOCBVc2Vy
IHVyZXNfZ2V0U2l6ZSBpbnN0ZWFkCiAgKi8KLVVfREVQUkVDQVRFRCBpbnQzMl90IFVfRVhQT1JU
MiAKK1VfREVQUkVDQVRFRCBpbnQzMl90IFVfRVhQT1JUMgogdXJlc19jb3VudEFycmF5SXRlbXMo
Y29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwKICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHJlc291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgVUVycm9y
Q29kZSogZXJyKTsKQEAgLTIzOSw3ICsyNDUsNyBAQCB1cmVzX2NvdW50QXJyYXlJdGVtcyhjb25z
dCBVUmVzb3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLAogICogQHNlZSB1cmVzX29wZW4KICAq
IEBzdGFibGUgSUNVIDIuMAogICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMiAKK1VfU1RBQkxF
IHZvaWQgVV9FWFBPUlQyCiB1cmVzX2Nsb3NlKFVSZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5k
bGUpOwogCiAjaWYgVV9TSE9XX0NQTFVTUExVU19BUEkKQEAgLTI3MiwxMiArMjc4LDEyIEBAIFVf
TkFNRVNQQUNFX0VORAogICogQHNlZSB1cmVzX2dldFZlcnNpb24KICAqIEBkZXByZWNhdGVkIElD
VSAyLjggVXNlIHVyZXNfZ2V0VmVyc2lvbiBpbnN0ZWFkLgogICovCi1VX0RFUFJFQ0FURUQgY29u
c3QgY2hhciogVV9FWFBPUlQyIAorVV9ERVBSRUNBVEVEIGNvbnN0IGNoYXIqIFVfRVhQT1JUMgog
dXJlc19nZXRWZXJzaW9uTnVtYmVyKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogICByZXNvdXJjZUJ1
bmRsZSk7CiAjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogCiAvKioKLSAqIFJl
dHVybiB0aGUgdmVyc2lvbiBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUmVzb3VyY2VCdW5k
bGUgYXMgYW4gCisgKiBSZXR1cm4gdGhlIHZlcnNpb24gbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0
aGlzIFJlc291cmNlQnVuZGxlIGFzIGFuCiAgKiBVVmVyc2lvbkluZm8gYXJyYXkuCiAgKgogICog
QHBhcmFtIHJlc0IgVGhlIHJlc291cmNlIGJ1bmRsZSBmb3Igd2hpY2ggdGhlIHZlcnNpb24gaXMg
Y2hlY2tlZC4KQEAgLTI4NSwxNSArMjkxLDE1IEBAIHVyZXNfZ2V0VmVyc2lvbk51bWJlcihjb25z
dCBVUmVzb3VyY2VCdW5kbGUqICAgcmVzb3VyY2VCdW5kbGUpOwogICogICAgICAgICAgICAgICAg
ICAgIGFzIHNwZWNpZmllZCBpbiB0aGUgcmVzb3VyY2UgYnVuZGxlIG9yIGl0cyBwYXJlbnQuCiAg
KiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgCi11cmVzX2dl
dFZlcnNpb24oY29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNCLCAKK1VfU1RBQkxFIHZvaWQgVV9F
WFBPUlQyCit1cmVzX2dldFZlcnNpb24oY29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNCLAogICAg
ICAgICAgICAgICAgIFVWZXJzaW9uSW5mbyB2ZXJzaW9uSW5mbyk7CiAKICNpZm5kZWYgVV9ISURF
X0RFUFJFQ0FURURfQVBJCiAvKioKICAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgTG9jYWxlIGFz
c29jaWF0ZWQgd2l0aCB0aGlzIFJlc291cmNlQnVuZGxlLiBUaGlzIEFQSSBhbGxvd3MKLSAqIHlv
dSB0byBxdWVyeSBmb3IgdGhlIHJlYWwgbG9jYWxlIG9mIHRoZSByZXNvdXJjZS4gRm9yIGV4YW1w
bGUsIGlmIHlvdSByZXF1ZXN0ZWQgCi0gKiAiZW5fVVNfQ0FMSUZPUk5JQSIgYW5kIG9ubHkgImVu
X1VTIiBidW5kbGUgZXhpc3RzLCAiZW5fVVMiIHdpbGwgYmUgcmV0dXJuZWQuIAorICogeW91IHRv
IHF1ZXJ5IGZvciB0aGUgcmVhbCBsb2NhbGUgb2YgdGhlIHJlc291cmNlLiBGb3IgZXhhbXBsZSwg
aWYgeW91IHJlcXVlc3RlZAorICogImVuX1VTX0NBTElGT1JOSUEiIGFuZCBvbmx5ICJlbl9VUyIg
YnVuZGxlIGV4aXN0cywgImVuX1VTIiB3aWxsIGJlIHJldHVybmVkLgogICogRm9yIHN1YnJlc291
cmNlcywgdGhlIGxvY2FsZSB3aGVyZSB0aGlzIHJlc291cmNlIGNvbWVzIGZyb20gd2lsbCBiZSBy
ZXR1cm5lZC4KICAqIElmIGZhbGxiYWNrIGhhcyBvY2N1cmVkLCBnZXRMb2NhbGUgd2lsbCByZWZs
ZWN0IHRoaXMuCiAgKgpAQCAtMzAyLDEzICszMDgsMTMgQEAgdXJlc19nZXRWZXJzaW9uKGNvbnN0
IFVSZXNvdXJjZUJ1bmRsZSogcmVzQiwKICAqIEByZXR1cm4gIEEgTG9jYWxlIG5hbWUKICAqIEBk
ZXByZWNhdGVkIElDVSAyLjggVXNlIHVyZXNfZ2V0TG9jYWxlQnlUeXBlIGluc3RlYWQuCiAgKi8K
LVVfREVQUkVDQVRFRCBjb25zdCBjaGFyKiBVX0VYUE9SVDIgCi11cmVzX2dldExvY2FsZShjb25z
dCBVUmVzb3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLCAKK1VfREVQUkVDQVRFRCBjb25zdCBj
aGFyKiBVX0VYUE9SVDIKK3VyZXNfZ2V0TG9jYWxlKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVz
b3VyY2VCdW5kbGUsCiAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOwogI2VuZGlm
ICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KIAogLyoqCi0gKiBSZXR1cm4gdGhlIG5hbWUg
b2YgdGhlIExvY2FsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBSZXNvdXJjZUJ1bmRsZS4gCisgKiBS
ZXR1cm4gdGhlIG5hbWUgb2YgdGhlIExvY2FsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBSZXNvdXJj
ZUJ1bmRsZS4KICAqIFlvdSBjYW4gY2hvb3NlIGJldHdlZW4gcmVxdWVzdGVkLCB2YWxpZCBhbmQg
cmVhbCBsb2NhbGUuCiAgKgogICogQHBhcmFtIHJlc291cmNlQnVuZGxlIHJlc291cmNlIGJ1bmRs
ZSBpbiBxdWVzdGlvbgpAQCAtMzE5LDkgKzMyNSw5IEBAIHVyZXNfZ2V0TG9jYWxlKGNvbnN0IFVS
ZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsCiAgKiBAcmV0dXJuICBBIExvY2FsZSBuYW1l
CiAgKiBAc3RhYmxlIElDVSAyLjgKICAqLwotVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQy
IAotdXJlc19nZXRMb2NhbGVCeVR5cGUoY29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNvdXJjZUJ1
bmRsZSwgCi0gICAgICAgICAgICAgICAgICAgICBVTG9jRGF0YUxvY2FsZVR5cGUgdHlwZSwgCitV
X1NUQUJMRSBjb25zdCBjaGFyKiBVX0VYUE9SVDIKK3VyZXNfZ2V0TG9jYWxlQnlUeXBlKGNvbnN0
IFVSZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsCisgICAgICAgICAgICAgICAgICAgICBV
TG9jRGF0YUxvY2FsZVR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUq
IHN0YXR1cyk7CiAKIApAQCAtMzMyLDggKzMzOCw4IEBAIHVyZXNfZ2V0TG9jYWxlQnlUeXBlKGNv
bnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsCiAgKiBUT0RPIG5lZWQgdG8gcmV2
aXNpdCB1c2VmdWxuZXNzIG9mIHRoaXMgZnVuY3Rpb24KICAqICAgICAgYW5kIHVzYWdlIG1vZGVs
IGZvciBmaWxsSW4gcGFyYW1ldGVycyB3aXRob3V0IGtub3dpbmcgc2l6ZW9mKFVSZXNvdXJjZUJ1
bmRsZSkKICAqIEBwYXJhbSByIFRoZSByZXNvdXJjZWJ1bmRsZSB0byBvcGVuCi0gKiBAcGFyYW0g
cGFja2FnZU5hbWUgICBUaGUgcGFja2FnZU5hbWUgYW5kIGxvY2FsZSB0b2dldGhlciBwb2ludCB0
byBhbiBJQ1UgdWRhdGEgb2JqZWN0LCAKLSAqICAgICAgICAgICAgICAgICAgICAgIGFzIGRlZmlu
ZWQgYnkgPGNvZGU+IHVkYXRhX29wZW4oIHBhY2thZ2VOYW1lLCAicmVzIiwgbG9jYWxlLCBlcnIp
IDwvY29kZT4gCisgKiBAcGFyYW0gcGFja2FnZU5hbWUgICBUaGUgcGFja2FnZU5hbWUgYW5kIGxv
Y2FsZSB0b2dldGhlciBwb2ludCB0byBhbiBJQ1UgdWRhdGEgb2JqZWN0LAorICogICAgICAgICAg
ICAgICAgICAgICAgYXMgZGVmaW5lZCBieSA8Y29kZT4gdWRhdGFfb3BlbiggcGFja2FnZU5hbWUs
ICJyZXMiLCBsb2NhbGUsIGVycikgPC9jb2RlPgogICogICAgICAgICAgICAgICAgICAgICAgb3Ig
ZXF1aXZhbGVudC4gIFR5cGljYWxseSwgcGFja2FnZU5hbWUgd2lsbCByZWZlciB0byBhICguZGF0
KSBmaWxlLCBvciB0bwogICogICAgICAgICAgICAgICAgICAgICAgYSBwYWNrYWdlIHJlZ2lzdGVy
ZWQgd2l0aCB1ZGF0YV9zZXRBcHBEYXRhKCkuIFVzaW5nIGEgZnVsbCBmaWxlIG9yIGRpcmVjdG9y
eQogICogICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgZm9yIHBhY2thZ2VOYW1lIGlzIGRl
cHJlY2F0ZWQuIElmIE5VTEwsIElDVSBkYXRhIHdpbGwgYmUgdXNlZC4KQEAgLTM0MiwxMCArMzQ4
LDEwIEBAIHVyZXNfZ2V0TG9jYWxlQnlUeXBlKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVzb3Vy
Y2VCdW5kbGUsCiAgKiBAcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIHJlc291cmNlIGJ1bmRsZSBv
ciBOVUxMIGlmIGl0IGRvZXNuJ3QgZXhpc3QuCiAgKiBAaW50ZXJuYWwKICAqLwotVV9JTlRFUk5B
TCB2b2lkIFVfRVhQT1JUMiAKLXVyZXNfb3BlbkZpbGxJbihVUmVzb3VyY2VCdW5kbGUgKnIsIAor
VV9JTlRFUk5BTCB2b2lkIFVfRVhQT1JUMgordXJlc19vcGVuRmlsbEluKFVSZXNvdXJjZUJ1bmRs
ZSAqciwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwYWNrYWdlTmFtZSwKLSAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBsb2NhbGVJRCwgCisgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogbG9jYWxlSUQsCiAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsKICNlbmRp
ZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogCkBAIC0zNTcsNyArMzYzLDcgQEAgdXJlc19v
cGVuRmlsbEluKFVSZXNvdXJjZUJ1bmRsZSAqciwKICAqIEBwYXJhbSBzdGF0dXMgZmlsbHMgaW4g
dGhlIG91dGdvaW5nIGVycm9yIGNvZGUKICAqICAgICAgICAgICAgICAgIGNvdWxkIGJlIDxUVD5V
X01JU1NJTkdfUkVTT1VSQ0VfRVJST1I8L1RUPiBpZiB0aGUga2V5IGlzIG5vdCBmb3VuZAogICog
ICAgICAgICAgICAgICAgQWx3YXlzIGNoZWNrIHRoZSB2YWx1ZSBvZiBzdGF0dXMuIERvbid0IGNv
dW50IG9uIHJldHVybmluZyBOVUxMLgotICogICAgICAgICAgICAgICAgY291bGQgYmUgYSBub24t
ZmFpbGluZyBlcnJvciAKKyAqICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgbm9uLWZhaWxpbmcg
ZXJyb3IKICAqICAgICAgICAgICAgICAgIGUuZy46IDxUVD5VX1VTSU5HX0ZBTExCQUNLX1dBUk5J
Tkc8L1RUPiw8VFQ+VV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgPC9UVD4KICAqIEByZXR1cm4gYSBw
b2ludGVyIHRvIGEgemVyby10ZXJtaW5hdGVkIFVDaGFyIGFycmF5IHdoaWNoIGxpdmVzIGluIGEg
bWVtb3J5IG1hcHBlZC9ETEwgZmlsZS4KICAqIEBzZWUgdXJlc19nZXRCaW5hcnkKQEAgLTM2Niw5
ICszNzIsOSBAQCB1cmVzX29wZW5GaWxsSW4oVVJlc291cmNlQnVuZGxlICpyLAogICogQHNlZSB1
cmVzX2dldFVJbnQKICAqIEBzdGFibGUgSUNVIDIuMAogICovCi1VX1NUQUJMRSBjb25zdCBVQ2hh
ciogVV9FWFBPUlQyIAotdXJlc19nZXRTdHJpbmcoY29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNv
dXJjZUJ1bmRsZSwgCi0gICAgICAgICAgICAgICBpbnQzMl90KiBsZW4sIAorVV9TVEFCTEUgY29u
c3QgVUNoYXIqIFVfRVhQT1JUMgordXJlc19nZXRTdHJpbmcoY29uc3QgVVJlc291cmNlQnVuZGxl
KiByZXNvdXJjZUJ1bmRsZSwKKyAgICAgICAgICAgICAgIGludDMyX3QqIGxlbiwKICAgICAgICAg
ICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7CiAKIC8qKgpAQCAtNDI1LDE0ICs0MzEsMTQgQEAg
dXJlc19nZXRVVEY4U3RyaW5nKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzQiwKICAgICAgICAg
ICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwogCiAvKioKLSAqIFJldHVybnMgYSBiaW5h
cnkgZGF0YSBmcm9tIGEgYmluYXJ5IHJlc291cmNlLiAKKyAqIFJldHVybnMgYSBiaW5hcnkgZGF0
YSBmcm9tIGEgYmluYXJ5IHJlc291cmNlLgogICoKICAqIEBwYXJhbSByZXNvdXJjZUJ1bmRsZSBh
IHN0cmluZyByZXNvdXJjZQogICogQHBhcmFtIGxlbiAgICBmaWxscyBpbiB0aGUgbGVuZ3RoIG9m
IHJlc3VsdGluZyBieXRlIGNodW5rCiAgKiBAcGFyYW0gc3RhdHVzIGZpbGxzIGluIHRoZSBvdXRn
b2luZyBlcnJvciBjb2RlCiAgKiAgICAgICAgICAgICAgICBjb3VsZCBiZSA8VFQ+VV9NSVNTSU5H
X1JFU09VUkNFX0VSUk9SPC9UVD4gaWYgdGhlIGtleSBpcyBub3QgZm91bmQKICAqICAgICAgICAg
ICAgICAgIEFsd2F5cyBjaGVjayB0aGUgdmFsdWUgb2Ygc3RhdHVzLiBEb24ndCBjb3VudCBvbiBy
ZXR1cm5pbmcgTlVMTC4KLSAqICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgbm9uLWZhaWxpbmcg
ZXJyb3IgCisgKiAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIG5vbi1mYWlsaW5nIGVycm9yCiAg
KiAgICAgICAgICAgICAgICBlLmcuOiA8VFQ+VV9VU0lOR19GQUxMQkFDS19XQVJOSU5HPC9UVD4s
PFRUPlVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIDwvVFQ+CiAgKiBAcmV0dXJuIGEgcG9pbnRlciB0
byBhIGNodW5rIG9mIHVuc2lnbmVkIGJ5dGVzIHdoaWNoIGxpdmUgaW4gYSBtZW1vcnkgbWFwcGVk
L0RMTCBmaWxlLgogICogQHNlZSB1cmVzX2dldFN0cmluZwpAQCAtNDQxLDIwICs0NDcsMjAgQEAg
dXJlc19nZXRVVEY4U3RyaW5nKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzQiwKICAqIEBzZWUg
dXJlc19nZXRVSW50CiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgY29uc3QgdWlu
dDhfdCogVV9FWFBPUlQyIAotdXJlc19nZXRCaW5hcnkoY29uc3QgVVJlc291cmNlQnVuZGxlKiBy
ZXNvdXJjZUJ1bmRsZSwgCi0gICAgICAgICAgICAgICBpbnQzMl90KiBsZW4sIAorVV9TVEFCTEUg
Y29uc3QgdWludDhfdCogVV9FWFBPUlQyCit1cmVzX2dldEJpbmFyeShjb25zdCBVUmVzb3VyY2VC
dW5kbGUqIHJlc291cmNlQnVuZGxlLAorICAgICAgICAgICAgICAgaW50MzJfdCogbGVuLAogICAg
ICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsKIAogLyoqCi0gKiBSZXR1cm5zIGEgMzIg
Yml0IGludGVnZXIgYXJyYXkgZnJvbSBhIHJlc291cmNlLiAKKyAqIFJldHVybnMgYSAzMiBiaXQg
aW50ZWdlciBhcnJheSBmcm9tIGEgcmVzb3VyY2UuCiAgKgogICogQHBhcmFtIHJlc291cmNlQnVu
ZGxlIGFuIGludCB2ZWN0b3IgcmVzb3VyY2UKICAqIEBwYXJhbSBsZW4gICAgZmlsbHMgaW4gdGhl
IGxlbmd0aCBvZiByZXN1bHRpbmcgYnl0ZSBjaHVuawogICogQHBhcmFtIHN0YXR1cyBmaWxscyBp
biB0aGUgb3V0Z29pbmcgZXJyb3IgY29kZQogICogICAgICAgICAgICAgICAgY291bGQgYmUgPFRU
PlVfTUlTU0lOR19SRVNPVVJDRV9FUlJPUjwvVFQ+IGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kCiAg
KiAgICAgICAgICAgICAgICBBbHdheXMgY2hlY2sgdGhlIHZhbHVlIG9mIHN0YXR1cy4gRG9uJ3Qg
Y291bnQgb24gcmV0dXJuaW5nIE5VTEwuCi0gKiAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIG5v
bi1mYWlsaW5nIGVycm9yIAorICogICAgICAgICAgICAgICAgY291bGQgYmUgYSBub24tZmFpbGlu
ZyBlcnJvcgogICogICAgICAgICAgICAgICAgZS5nLjogPFRUPlVfVVNJTkdfRkFMTEJBQ0tfV0FS
TklORzwvVFQ+LDxUVD5VX1VTSU5HX0RFRkFVTFRfV0FSTklORyA8L1RUPgogICogQHJldHVybiBh
IHBvaW50ZXIgdG8gYSBjaHVuayBvZiBpbnRlZ2VycyB3aGljaCBsaXZlIGluIGEgbWVtb3J5IG1h
cHBlZC9ETEwgZmlsZS4KICAqIEBzZWUgdXJlc19nZXRCaW5hcnkKQEAgLTQ2MywxOSArNDY5LDE5
IEBAIHVyZXNfZ2V0QmluYXJ5KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUs
CiAgKiBAc2VlIHVyZXNfZ2V0VUludAogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLVVfU1RBQkxF
IGNvbnN0IGludDMyX3QqIFVfRVhQT1JUMiAKLXVyZXNfZ2V0SW50VmVjdG9yKGNvbnN0IFVSZXNv
dXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsIAotICAgICAgICAgICAgICAgICAgaW50MzJfdCog
bGVuLCAKK1VfU1RBQkxFIGNvbnN0IGludDMyX3QqIFVfRVhQT1JUMgordXJlc19nZXRJbnRWZWN0
b3IoY29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwKKyAgICAgICAgICAgICAg
ICAgIGludDMyX3QqIGxlbiwKICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7
CiAKIC8qKgotICogUmV0dXJucyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYSByZXNvdXJjZS4g
CisgKiBSZXR1cm5zIGFuIHVuc2lnbmVkIGludGVnZXIgZnJvbSBhIHJlc291cmNlLgogICogVGhp
cyBpbnRlZ2VyIGlzIG9yaWdpbmFsbHkgMjggYml0cy4KICAqCiAgKiBAcGFyYW0gcmVzb3VyY2VC
dW5kbGUgYSBzdHJpbmcgcmVzb3VyY2UKICAqIEBwYXJhbSBzdGF0dXMgZmlsbHMgaW4gdGhlIG91
dGdvaW5nIGVycm9yIGNvZGUKICAqICAgICAgICAgICAgICAgIGNvdWxkIGJlIDxUVD5VX01JU1NJ
TkdfUkVTT1VSQ0VfRVJST1I8L1RUPiBpZiB0aGUga2V5IGlzIG5vdCBmb3VuZAotICogICAgICAg
ICAgICAgICAgY291bGQgYmUgYSBub24tZmFpbGluZyBlcnJvciAKKyAqICAgICAgICAgICAgICAg
IGNvdWxkIGJlIGEgbm9uLWZhaWxpbmcgZXJyb3IKICAqICAgICAgICAgICAgICAgIGUuZy46IDxU
VD5VX1VTSU5HX0ZBTExCQUNLX1dBUk5JTkc8L1RUPiw8VFQ+VV9VU0lOR19ERUZBVUxUX1dBUk5J
TkcgPC9UVD4KICAqIEByZXR1cm4gYW4gaW50ZWdlciB2YWx1ZQogICogQHNlZSB1cmVzX2dldElu
dApAQCAtNDg0LDE4ICs0OTAsMTggQEAgdXJlc19nZXRJbnRWZWN0b3IoY29uc3QgVVJlc291cmNl
QnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwKICAqIEBzZWUgdXJlc19nZXRTdHJpbmcKICAqIEBzdGFi
bGUgSUNVIDIuMAogICovCi1VX1NUQUJMRSB1aW50MzJfdCBVX0VYUE9SVDIgCi11cmVzX2dldFVJ
bnQoY29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwgCitVX1NUQUJMRSB1aW50
MzJfdCBVX0VYUE9SVDIKK3VyZXNfZ2V0VUludChjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJlc291
cmNlQnVuZGxlLAogICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKIC8qKgotICog
UmV0dXJucyBhIHNpZ25lZCBpbnRlZ2VyIGZyb20gYSByZXNvdXJjZS4gCisgKiBSZXR1cm5zIGEg
c2lnbmVkIGludGVnZXIgZnJvbSBhIHJlc291cmNlLgogICogVGhpcyBpbnRlZ2VyIGlzIG9yaWdp
bmFsbHkgMjggYml0IGFuZCB0aGUgc2lnbiBnZXRzIHByb3BhZ2F0ZWQuCiAgKgogICogQHBhcmFt
IHJlc291cmNlQnVuZGxlIGEgc3RyaW5nIHJlc291cmNlCiAgKiBAcGFyYW0gc3RhdHVzICBmaWxs
cyBpbiB0aGUgb3V0Z29pbmcgZXJyb3IgY29kZQogICogICAgICAgICAgICAgICAgY291bGQgYmUg
PFRUPlVfTUlTU0lOR19SRVNPVVJDRV9FUlJPUjwvVFQ+IGlmIHRoZSBrZXkgaXMgbm90IGZvdW5k
Ci0gKiAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIG5vbi1mYWlsaW5nIGVycm9yIAorICogICAg
ICAgICAgICAgICAgY291bGQgYmUgYSBub24tZmFpbGluZyBlcnJvcgogICogICAgICAgICAgICAg
ICAgZS5nLjogPFRUPlVfVVNJTkdfRkFMTEJBQ0tfV0FSTklORzwvVFQ+LDxUVD5VX1VTSU5HX0RF
RkFVTFRfV0FSTklORyA8L1RUPgogICogQHJldHVybiBhbiBpbnRlZ2VyIHZhbHVlCiAgKiBAc2Vl
IHVyZXNfZ2V0VUludApAQCAtNTA0LDIxICs1MTAsMjEgQEAgdXJlc19nZXRVSW50KGNvbnN0IFVS
ZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsCiAgKiBAc2VlIHVyZXNfZ2V0U3RyaW5nCiAg
KiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIgCi11cmVz
X2dldEludChjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLCAKK1VfU1RBQkxF
IGludDMyX3QgVV9FWFBPUlQyCit1cmVzX2dldEludChjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJl
c291cmNlQnVuZGxlLAogICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKIAogLyoqCi0g
KiBSZXR1cm5zIHRoZSBzaXplIG9mIGEgcmVzb3VyY2UuIFNpemUgZm9yIHNjYWxhciB0eXBlcyBp
cyBhbHdheXMgMSwgCisgKiBSZXR1cm5zIHRoZSBzaXplIG9mIGEgcmVzb3VyY2UuIFNpemUgZm9y
IHNjYWxhciB0eXBlcyBpcyBhbHdheXMgMSwKICAqIGFuZCBmb3IgdmVjdG9yL3RhYmxlIHR5cGVz
IGlzIHRoZSBudW1iZXIgb2YgY2hpbGQgcmVzb3VyY2VzLgotICogQHdhcm5pbmcgSW50ZWdlciBh
cnJheSBpcyB0cmVhdGVkIGFzIGEgc2NhbGFyIHR5cGUuIFRoZXJlIGFyZSBubyAKKyAqIEB3YXJu
aW5nIEludGVnZXIgYXJyYXkgaXMgdHJlYXRlZCBhcyBhIHNjYWxhciB0eXBlLiBUaGVyZSBhcmUg
bm8KICAqICAgICAgICAgIEFQSXMgdG8gYWNjZXNzIGluZGl2aWR1YWwgbWVtYmVycyBvZiBhbiBp
bnRlZ2VyIGFycmF5LiBJdAogICogICAgICAgICAgaXMgYWx3YXlzIHJldHVybmVkIGFzIGEgd2hv
bGUuCiAgKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUgYSByZXNvdXJjZQogICogQHJldHVybiBudW1i
ZXIgb2YgcmVzb3VyY2VzIGluIGEgZ2l2ZW4gcmVzb3VyY2UuCiAgKiBAc3RhYmxlIElDVSAyLjAK
ICAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIgCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQ
T1JUMgogdXJlc19nZXRTaXplKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUp
OwogCiAvKioKQEAgLTUyOSwyMSArNTM1LDIxIEBAIHVyZXNfZ2V0U2l6ZShjb25zdCBVUmVzb3Vy
Y2VCdW5kbGUgKnJlc291cmNlQnVuZGxlKTsKICAqIEBzZWUgVVJlc1R5cGUKICAqIEBzdGFibGUg
SUNVIDIuMAogICovCi1VX1NUQUJMRSBVUmVzVHlwZSBVX0VYUE9SVDIgCitVX1NUQUJMRSBVUmVz
VHlwZSBVX0VYUE9SVDIKIHVyZXNfZ2V0VHlwZShjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc291
cmNlQnVuZGxlKTsKIAogLyoqCi0gKiBSZXR1cm5zIHRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIGEg
Z2l2ZW4gcmVzb3VyY2UuIE5vdCBhbGwgdGhlIHJlc291cmNlcyBoYXZlIGEga2V5IC0gb25seSAK
KyAqIFJldHVybnMgdGhlIGtleSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiByZXNvdXJjZS4gTm90
IGFsbCB0aGUgcmVzb3VyY2VzIGhhdmUgYSBrZXkgLSBvbmx5CiAgKiB0aG9zZSB0aGF0IGFyZSBt
ZW1iZXJzIG9mIGEgdGFibGUuCiAgKgogICogQHBhcmFtIHJlc291cmNlQnVuZGxlIGEgcmVzb3Vy
Y2UKICAqIEByZXR1cm4gYSBrZXkgYXNzb2NpYXRlZCB0byB0aGlzIHJlc291cmNlLCBvciBOVUxM
IGlmIGl0IGRvZXNuJ3QgaGF2ZSBhIGtleQogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLVVfU1RB
QkxFIGNvbnN0IGNoYXIgKiBVX0VYUE9SVDIgCitVX1NUQUJMRSBjb25zdCBjaGFyICogVV9FWFBP
UlQyCiB1cmVzX2dldEtleShjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxlKTsK
IAotLyogSVRFUkFUSU9OIEFQSSAKKy8qIElURVJBVElPTiBBUEkKICAgICBUaGlzIEFQSSBwcm92
aWRlcyBtZWFucyBmb3IgaXRlcmF0aW5nIHRocm91Z2ggYSByZXNvdXJjZQogKi8KIApAQCAtNTUz
LDcgKzU1OSw3IEBAIHVyZXNfZ2V0S2V5KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VC
dW5kbGUpOwogICogQHBhcmFtIHJlc291cmNlQnVuZGxlIGEgcmVzb3VyY2UKICAqIEBzdGFibGUg
SUNVIDIuMAogICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMiAKK1VfU1RBQkxFIHZvaWQgVV9F
WFBPUlQyCiB1cmVzX3Jlc2V0SXRlcmF0b3IoVVJlc291cmNlQnVuZGxlICpyZXNvdXJjZUJ1bmRs
ZSk7CiAKIC8qKgpAQCAtNTYzLDEyICs1NjksMTIgQEAgdXJlc19yZXNldEl0ZXJhdG9yKFVSZXNv
dXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUpOwogICogQHJldHVybiBUUlVFIGlmIHRoZXJlIGFy
ZSBtb3JlIGVsZW1lbnRzLCBGQUxTRSBpZiB0aGVyZSBpcyBubyBtb3JlIGVsZW1lbnRzCiAgKiBA
c3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyIAorVV9TVEFCTEUg
VUJvb2wgVV9FWFBPUlQyCiB1cmVzX2hhc05leHQoY29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNv
dXJjZUJ1bmRsZSk7CiAKIC8qKgotICogUmV0dXJucyB0aGUgbmV4dCByZXNvdXJjZSBpbiBhIGdp
dmVuIHJlc291cmNlIG9yIE5VTEwgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcmVzb3VyY2VzIAotICog
dG8gaXRlcmF0ZSBvdmVyLiBGZWF0dXJlcyBhIGZpbGwtaW4gcGFyYW1ldGVyLiAKKyAqIFJldHVy
bnMgdGhlIG5leHQgcmVzb3VyY2UgaW4gYSBnaXZlbiByZXNvdXJjZSBvciBOVUxMIGlmIHRoZXJl
IGFyZSBubyBtb3JlIHJlc291cmNlcworICogdG8gaXRlcmF0ZSBvdmVyLiBGZWF0dXJlcyBhIGZp
bGwtaW4gcGFyYW1ldGVyLgogICoKICAqIEBwYXJhbSByZXNvdXJjZUJ1bmRsZSAgICBhIHJlc291
cmNlCiAgKiBAcGFyYW0gZmlsbEluICAgICAgICAgICAgaWYgTlVMTCBhIG5ldyBVUmVzb3VyY2VC
dW5kbGUgc3RydWN0IGlzIGFsbG9jYXRlZCBhbmQgbXVzdCBiZSBjbG9zZWQgYnkgdGhlIGNhbGxl
ci4KQEAgLTU3OCwxNCArNTg0LDE0IEBAIHVyZXNfaGFzTmV4dChjb25zdCBVUmVzb3VyY2VCdW5k
bGUgKnJlc291cmNlQnVuZGxlKTsKICAqIEByZXR1cm4gICAgICAgICAgICAgICAgICBhIHBvaW50
ZXIgdG8gYSBVUmVzb3VyY2VCdW5kbGUgc3RydWN0LiBJZiBmaWxsIGluIHBhcmFtIHdhcyBOVUxM
LCBjYWxsZXIgbXVzdCBjbG9zZSBpdAogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLVVfU1RBQkxF
IFVSZXNvdXJjZUJ1bmRsZSogVV9FWFBPUlQyIAotdXJlc19nZXROZXh0UmVzb3VyY2UoVVJlc291
cmNlQnVuZGxlICpyZXNvdXJjZUJ1bmRsZSwgCi0gICAgICAgICAgICAgICAgICAgICBVUmVzb3Vy
Y2VCdW5kbGUgKmZpbGxJbiwgCitVX1NUQUJMRSBVUmVzb3VyY2VCdW5kbGUqIFVfRVhQT1JUMgor
dXJlc19nZXROZXh0UmVzb3VyY2UoVVJlc291cmNlQnVuZGxlICpyZXNvdXJjZUJ1bmRsZSwKKyAg
ICAgICAgICAgICAgICAgICAgIFVSZXNvdXJjZUJ1bmRsZSAqZmlsbEluLAogICAgICAgICAgICAg
ICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKIAogLyoqCi0gKiBSZXR1cm5zIHRoZSBuZXh0
IHN0cmluZyBpbiBhIGdpdmVuIHJlc291cmNlIG9yIE5VTEwgaWYgdGhlcmUgYXJlIG5vIG1vcmUg
cmVzb3VyY2VzIAotICogdG8gaXRlcmF0ZSBvdmVyLiAKKyAqIFJldHVybnMgdGhlIG5leHQgc3Ry
aW5nIGluIGEgZ2l2ZW4gcmVzb3VyY2Ugb3IgTlVMTCBpZiB0aGVyZSBhcmUgbm8gbW9yZSByZXNv
dXJjZXMKKyAqIHRvIGl0ZXJhdGUgb3Zlci4KICAqCiAgKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUg
ICAgYSByZXNvdXJjZQogICogQHBhcmFtIGxlbiAgICAgICAgICAgICAgIGZpbGwgaW4gbGVuZ3Ro
IG9mIHRoZSBzdHJpbmcKQEAgLTU5NSwxNCArNjAxLDE0IEBAIHVyZXNfZ2V0TmV4dFJlc291cmNl
KFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUsCiAgKiBAcmV0dXJuIGEgcG9pbnRlciB0
byBhIHplcm8tdGVybWluYXRlZCBVQ2hhciBhcnJheSB3aGljaCBsaXZlcyBpbiBhIG1lbW9yeSBt
YXBwZWQvRExMIGZpbGUuCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgY29uc3Qg
VUNoYXIqIFVfRVhQT1JUMiAKLXVyZXNfZ2V0TmV4dFN0cmluZyhVUmVzb3VyY2VCdW5kbGUgKnJl
c291cmNlQnVuZGxlLCAKLSAgICAgICAgICAgICAgICAgICBpbnQzMl90KiBsZW4sIAotICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKioga2V5LCAKK1VfU1RBQkxFIGNvbnN0IFVDaGFyKiBV
X0VYUE9SVDIKK3VyZXNfZ2V0TmV4dFN0cmluZyhVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVu
ZGxlLAorICAgICAgICAgICAgICAgICAgIGludDMyX3QqIGxlbiwKKyAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICoqIGtleSwKICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0
dXMpOwogCiAvKioKLSAqIFJldHVybnMgdGhlIHJlc291cmNlIGluIGEgZ2l2ZW4gcmVzb3VyY2Ug
YXQgdGhlIHNwZWNpZmllZCBpbmRleC4gRmVhdHVyZXMgYSBmaWxsLWluIHBhcmFtZXRlci4gCisg
KiBSZXR1cm5zIHRoZSByZXNvdXJjZSBpbiBhIGdpdmVuIHJlc291cmNlIGF0IHRoZSBzcGVjaWZp
ZWQgaW5kZXguIEZlYXR1cmVzIGEgZmlsbC1pbiBwYXJhbWV0ZXIuCiAgKgogICogQHBhcmFtIHJl
c291cmNlQnVuZGxlICAgIHRoZSByZXNvdXJjZSBidW5kbGUgZnJvbSB3aGljaCB0byBnZXQgYSBz
dWItcmVzb3VyY2UKICAqIEBwYXJhbSBpbmRleFIgICAgICAgICAgICBhbiBpbmRleCB0byB0aGUg
d2FudGVkIHJlc291cmNlLgpAQCAtNjEzLDEwICs2MTksMTAgQEAgdXJlc19nZXROZXh0U3RyaW5n
KFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUsCiAgKiBAcmV0dXJuICAgICAgICAgICAg
ICAgICAgYSBwb2ludGVyIHRvIGEgVVJlc291cmNlQnVuZGxlIHN0cnVjdC4gSWYgZmlsbCBpbiBw
YXJhbSB3YXMgTlVMTCwgY2FsbGVyIG11c3QgY2xvc2UgaXQKICAqIEBzdGFibGUgSUNVIDIuMAog
ICovCi1VX1NUQUJMRSBVUmVzb3VyY2VCdW5kbGUqIFVfRVhQT1JUMiAKLXVyZXNfZ2V0QnlJbmRl
eChjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxlLCAKLSAgICAgICAgICAgICAg
ICBpbnQzMl90IGluZGV4UiwgCi0gICAgICAgICAgICAgICAgVVJlc291cmNlQnVuZGxlICpmaWxs
SW4sIAorVV9TVEFCTEUgVVJlc291cmNlQnVuZGxlKiBVX0VYUE9SVDIKK3VyZXNfZ2V0QnlJbmRl
eChjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxlLAorICAgICAgICAgICAgICAg
IGludDMyX3QgaW5kZXhSLAorICAgICAgICAgICAgICAgIFVSZXNvdXJjZUJ1bmRsZSAqZmlsbElu
LAogICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKIC8qKgpAQCAtNjMwLDEw
ICs2MzYsMTAgQEAgdXJlc19nZXRCeUluZGV4KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3Vy
Y2VCdW5kbGUsCiAgKiBAcmV0dXJuICAgICAgICAgICAgICAgICAgYSBwb2ludGVyIHRvIGEgemVy
by10ZXJtaW5hdGVkIFVDaGFyIGFycmF5IHdoaWNoIGxpdmVzIGluIGEgbWVtb3J5IG1hcHBlZC9E
TEwgZmlsZS4KICAqIEBzdGFibGUgSUNVIDIuMAogICovCi1VX1NUQUJMRSBjb25zdCBVQ2hhciog
VV9FWFBPUlQyIAotdXJlc19nZXRTdHJpbmdCeUluZGV4KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAq
cmVzb3VyY2VCdW5kbGUsIAotICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaW5kZXhTLCAK
LSAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiBsZW4sIAorVV9TVEFCTEUgY29uc3QgVUNo
YXIqIFVfRVhQT1JUMgordXJlc19nZXRTdHJpbmdCeUluZGV4KGNvbnN0IFVSZXNvdXJjZUJ1bmRs
ZSAqcmVzb3VyY2VCdW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleFMs
CisgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCogbGVuLAogICAgICAgICAgICAgICAgICAg
ICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKIC8qKgpAQCAtNjkzLDcgKzY5OSw3IEBAIHVyZXNf
Z2V0VVRGOFN0cmluZ0J5SW5kZXgoY29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNCLAogCiAvKioK
ICAqIFJldHVybnMgYSByZXNvdXJjZSBpbiBhIGdpdmVuIHJlc291cmNlIHRoYXQgaGFzIGEgZ2l2
ZW4ga2V5LiBUaGlzIHByb2NlZHVyZSB3b3JrcyBvbmx5IHdpdGggdGFibGUKLSAqIHJlc291cmNl
cy4gRmVhdHVyZXMgYSBmaWxsLWluIHBhcmFtZXRlci4gCisgKiByZXNvdXJjZXMuIEZlYXR1cmVz
IGEgZmlsbC1pbiBwYXJhbWV0ZXIuCiAgKgogICogQHBhcmFtIHJlc291cmNlQnVuZGxlICAgIGEg
cmVzb3VyY2UKICAqIEBwYXJhbSBrZXkgICAgICAgICAgICAgICBhIGtleSBhc3NvY2lhdGVkIHdp
dGggdGhlIHdhbnRlZCByZXNvdXJjZQpAQCAtNzAzLDE1ICs3MDksMTUgQEAgdXJlc19nZXRVVEY4
U3RyaW5nQnlJbmRleChjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc0IsCiAgKiBAcmV0dXJuICAg
ICAgICAgICAgICAgICAgYSBwb2ludGVyIHRvIGEgVVJlc291cmNlQnVuZGxlIHN0cnVjdC4gSWYg
ZmlsbCBpbiBwYXJhbSB3YXMgTlVMTCwgY2FsbGVyIG11c3QgY2xvc2UgaXQKICAqIEBzdGFibGUg
SUNVIDIuMAogICovCi1VX1NUQUJMRSBVUmVzb3VyY2VCdW5kbGUqIFVfRVhQT1JUMiAKLXVyZXNf
Z2V0QnlLZXkoY29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNvdXJjZUJ1bmRsZSwgCi0gICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGtleSwgCi0gICAgICAgICAgICAgIFVSZXNvdXJjZUJ1bmRsZSAq
ZmlsbEluLCAKK1VfU1RBQkxFIFVSZXNvdXJjZUJ1bmRsZSogVV9FWFBPUlQyCit1cmVzX2dldEJ5
S2V5KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUsCisgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGtleSwKKyAgICAgICAgICAgICAgVVJlc291cmNlQnVuZGxlICpmaWxsSW4s
CiAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKIC8qKgogICogUmV0dXJucyBh
IHN0cmluZyBpbiBhIGdpdmVuIHJlc291cmNlIHRoYXQgaGFzIGEgZ2l2ZW4ga2V5LiBUaGlzIHBy
b2NlZHVyZSB3b3JrcyBvbmx5IHdpdGggdGFibGUKLSAqIHJlc291cmNlcy4gCisgKiByZXNvdXJj
ZXMuCiAgKgogICogQHBhcmFtIHJlc0IgICAgICAgICAgICAgIGEgcmVzb3VyY2UKICAqIEBwYXJh
bSBrZXkgICAgICAgICAgICAgICBhIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHdhbnRlZCBzdHJp
bmcKQEAgLTcyMSwxMCArNzI3LDEwIEBAIHVyZXNfZ2V0QnlLZXkoY29uc3QgVVJlc291cmNlQnVu
ZGxlICpyZXNvdXJjZUJ1bmRsZSwKICAqIEByZXR1cm4gICAgICAgICAgICAgICAgICBhIHBvaW50
ZXIgdG8gYSB6ZXJvLXRlcm1pbmF0ZWQgVUNoYXIgYXJyYXkgd2hpY2ggbGl2ZXMgaW4gYSBtZW1v
cnkgbWFwcGVkL0RMTCBmaWxlLgogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLVVfU1RBQkxFIGNv
bnN0IFVDaGFyKiBVX0VYUE9SVDIgCi11cmVzX2dldFN0cmluZ0J5S2V5KGNvbnN0IFVSZXNvdXJj
ZUJ1bmRsZSAqcmVzQiwgCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGtleSwgCi0g
ICAgICAgICAgICAgICAgICAgIGludDMyX3QqIGxlbiwgCitVX1NUQUJMRSBjb25zdCBVQ2hhciog
VV9FWFBPUlQyCit1cmVzX2dldFN0cmluZ0J5S2V5KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVz
QiwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcioga2V5LAorICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90KiBsZW4sCiAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1
cyk7CiAKIC8qKgpAQCAtNzg5LDgyICs3OTUsOTcgQEAgdXJlc19nZXRVVEY4U3RyaW5nQnlLZXko
Y29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNCLAogCiBVX05BTUVTUEFDRV9CRUdJTgogLyoqCi0g
KiByZXR1cm5zIGEgc3RyaW5nIGZyb20gYSBzdHJpbmcgcmVzb3VyY2UgdHlwZQorICogUmV0dXJu
cyB0aGUgc3RyaW5nIHZhbHVlIGZyb20gYSBzdHJpbmcgcmVzb3VyY2UgYnVuZGxlLgogICoKLSAq
IEBwYXJhbSByZXNCICAgIGEgcmVzb3VyY2UKKyAqIEBwYXJhbSByZXNCICAgIGEgcmVzb3VyY2Us
IHNob3VsZCBoYXZlIHR5cGUgVVJFU19TVFJJTkcKICAqIEBwYXJhbSBzdGF0dXM6IGZpbGxzIGlu
IHRoZSBvdXRnb2luZyBlcnJvciBjb2RlCiAgKiAgICAgICAgICAgICAgICBjb3VsZCBiZSA8VFQ+
VV9NSVNTSU5HX1JFU09VUkNFX0VSUk9SPC9UVD4gaWYgdGhlIGtleSBpcyBub3QgZm91bmQKLSAq
ICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgbm9uLWZhaWxpbmcgZXJyb3IgCisgKiAgICAgICAg
ICAgICAgICBjb3VsZCBiZSBhIG5vbi1mYWlsaW5nIGVycm9yCiAgKiAgICAgICAgICAgICAgICBl
LmcuOiA8VFQ+VV9VU0lOR19GQUxMQkFDS19XQVJOSU5HPC9UVD4sPFRUPlVfVVNJTkdfREVGQVVM
VF9XQVJOSU5HIDwvVFQ+Ci0gKiBAcmV0dXJuICAgICAgICBhIFVuaWNvZGVTdHJpbmcgb2JqZWN0
LiBJZiB0aGVyZSBpcyBhbiBlcnJvciwgc3RyaW5nIGlzIGJvZ3VzCisgKiBAcmV0dXJuIFRoZSBz
dHJpbmcgdmFsdWUsIG9yIGEgYm9ndXMgc3RyaW5nIGlmIHRoZXJlIGlzIGEgZmFpbHVyZSBVRXJy
b3JDb2RlLgogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLWlubGluZSBVbmljb2RlU3RyaW5nIAot
dXJlc19nZXRVbmljb2RlU3RyaW5nKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzQiwgCi0gICAg
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKSAKLXsKK2lubGluZSBVbmljb2Rl
U3RyaW5nCit1cmVzX2dldFVuaWNvZGVTdHJpbmcoY29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNC
LCBVRXJyb3JDb2RlKiBzdGF0dXMpIHsKKyAgICBVbmljb2RlU3RyaW5nIHJlc3VsdDsKICAgICBp
bnQzMl90IGxlbiA9IDA7CiAgICAgY29uc3QgVUNoYXIgKnIgPSB1cmVzX2dldFN0cmluZyhyZXNC
LCAmbGVuLCBzdGF0dXMpOwotICAgIHJldHVybiBVbmljb2RlU3RyaW5nKFRSVUUsIHIsIGxlbik7
CisgICAgaWYoVV9TVUNDRVNTKCpzdGF0dXMpKSB7CisgICAgICAgIHJlc3VsdC5zZXRUbyhUUlVF
LCByLCBsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdC5zZXRUb0JvZ3VzKCk7Cisg
ICAgfQorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qKgotICogUmV0dXJucyB0aGUgbmV4dCBz
dHJpbmcgaW4gYSByZXNvdXJjZSBvciBOVUxMIGlmIHRoZXJlIGFyZSBubyBtb3JlIHJlc291cmNl
cyAKLSAqIHRvIGl0ZXJhdGUgb3Zlci4gCisgKiBSZXR1cm5zIHRoZSBuZXh0IHN0cmluZyBpbiBh
IHJlc291cmNlLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcmVzb3Vy
Y2VzCisgKiB0byBpdGVyYXRlIG92ZXIuCisgKiBVc2UgdXJlc19nZXROZXh0U3RyaW5nKCkgaW5z
dGVhZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgKiB0aGUgZW5kIG9mIHRoZSBpdGVyYXRpb24g
YW5kIGEgcmVhbCBlbXB0eSBzdHJpbmcgdmFsdWUuCiAgKgogICogQHBhcmFtIHJlc0IgICAgICAg
ICAgICAgIGEgcmVzb3VyY2UKICAqIEBwYXJhbSBrZXkgICAgICAgICAgICAgICBmaWxsIGluIGZv
ciBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3RyaW5nCiAgKiBAcGFyYW0gc3RhdHVzICAgICAg
ICAgICAgZmlsbHMgaW4gdGhlIG91dGdvaW5nIGVycm9yIGNvZGUKLSAqIEByZXR1cm4gYW4gVW5p
Y29kZVN0cmluZyBvYmplY3QuCisgKiBAcmV0dXJuIFRoZSBzdHJpbmcgdmFsdWUsIG9yIGEgYm9n
dXMgc3RyaW5nIGlmIHRoZXJlIGlzIGEgZmFpbHVyZSBVRXJyb3JDb2RlLgogICogQHN0YWJsZSBJ
Q1UgMi4wCiAgKi8KLWlubGluZSBVbmljb2RlU3RyaW5nIAotdXJlc19nZXROZXh0VW5pY29kZVN0
cmluZyhVUmVzb3VyY2VCdW5kbGUgKnJlc0IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICoqIGtleSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUq
IHN0YXR1cykgCi17CitpbmxpbmUgVW5pY29kZVN0cmluZwordXJlc19nZXROZXh0VW5pY29kZVN0
cmluZyhVUmVzb3VyY2VCdW5kbGUgKnJlc0IsIGNvbnN0IGNoYXIgKioga2V5LCBVRXJyb3JDb2Rl
KiBzdGF0dXMpIHsKKyAgICBVbmljb2RlU3RyaW5nIHJlc3VsdDsKICAgICBpbnQzMl90IGxlbiA9
IDA7CiAgICAgY29uc3QgVUNoYXIqIHIgPSB1cmVzX2dldE5leHRTdHJpbmcocmVzQiwgJmxlbiwg
a2V5LCBzdGF0dXMpOwotICAgIHJldHVybiBVbmljb2RlU3RyaW5nKFRSVUUsIHIsIGxlbik7Cisg
ICAgaWYoVV9TVUNDRVNTKCpzdGF0dXMpKSB7CisgICAgICAgIHJlc3VsdC5zZXRUbyhUUlVFLCBy
LCBsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdC5zZXRUb0JvZ3VzKCk7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qKgotICogUmV0dXJucyB0aGUgc3RyaW5nIGlu
IGEgZ2l2ZW4gcmVzb3VyY2UgYXQgdGhlIHNwZWNpZmllZCBpbmRleC4KKyAqIFJldHVybnMgdGhl
IHN0cmluZyBpbiBhIGdpdmVuIHJlc291cmNlIGFycmF5IG9yIHRhYmxlIGF0IHRoZSBzcGVjaWZp
ZWQgaW5kZXguCiAgKgogICogQHBhcmFtIHJlc0IgICAgICAgICAgICAgIGEgcmVzb3VyY2UKICAq
IEBwYXJhbSBpbmRleFMgICAgICAgICAgICBhbiBpbmRleCB0byB0aGUgd2FudGVkIHN0cmluZy4K
ICAqIEBwYXJhbSBzdGF0dXMgICAgICAgICAgICBmaWxscyBpbiB0aGUgb3V0Z29pbmcgZXJyb3Ig
Y29kZQotICogQHJldHVybiAgICAgICAgICAgICAgICAgIGFuIFVuaWNvZGVTdHJpbmcgb2JqZWN0
LiBJZiB0aGVyZSBpcyBhbiBlcnJvciwgc3RyaW5nIGlzIGJvZ3VzCisgKiBAcmV0dXJuIFRoZSBz
dHJpbmcgdmFsdWUsIG9yIGEgYm9ndXMgc3RyaW5nIGlmIHRoZXJlIGlzIGEgZmFpbHVyZSBVRXJy
b3JDb2RlLgogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLWlubGluZSBVbmljb2RlU3RyaW5nIAot
dXJlc19nZXRVbmljb2RlU3RyaW5nQnlJbmRleChjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc0Is
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGluZGV4UywgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cykgCi17CitpbmxpbmUgVW5p
Y29kZVN0cmluZwordXJlc19nZXRVbmljb2RlU3RyaW5nQnlJbmRleChjb25zdCBVUmVzb3VyY2VC
dW5kbGUgKnJlc0IsIGludDMyX3QgaW5kZXhTLCBVRXJyb3JDb2RlKiBzdGF0dXMpIHsKKyAgICBV
bmljb2RlU3RyaW5nIHJlc3VsdDsKICAgICBpbnQzMl90IGxlbiA9IDA7CiAgICAgY29uc3QgVUNo
YXIqIHIgPSB1cmVzX2dldFN0cmluZ0J5SW5kZXgocmVzQiwgaW5kZXhTLCAmbGVuLCBzdGF0dXMp
OwotICAgIHJldHVybiBVbmljb2RlU3RyaW5nKFRSVUUsIHIsIGxlbik7CisgICAgaWYoVV9TVUND
RVNTKCpzdGF0dXMpKSB7CisgICAgICAgIHJlc3VsdC5zZXRUbyhUUlVFLCByLCBsZW4pOworICAg
IH0gZWxzZSB7CisgICAgICAgIHJlc3VsdC5zZXRUb0JvZ3VzKCk7CisgICAgfQorICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIC8qKgotICogUmV0dXJucyBhIHN0cmluZyBpbiBhIHJlc291cmNlIHRo
YXQgaGFzIGEgZ2l2ZW4ga2V5LiBUaGlzIHByb2NlZHVyZSB3b3JrcyBvbmx5IHdpdGggdGFibGUK
LSAqIHJlc291cmNlcy4gCisgKiBSZXR1cm5zIGEgc3RyaW5nIGluIGEgcmVzb3VyY2UgdGhhdCBo
YXMgYSBnaXZlbiBrZXkuCisgKiBUaGlzIHByb2NlZHVyZSB3b3JrcyBvbmx5IHdpdGggdGFibGUg
cmVzb3VyY2VzLgogICoKICAqIEBwYXJhbSByZXNCICAgICAgICAgICAgICBhIHJlc291cmNlCiAg
KiBAcGFyYW0ga2V5ICAgICAgICAgICAgICAgYSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSB3YW50
ZWQgc3RyaW5nCiAgKiBAcGFyYW0gc3RhdHVzICAgICAgICAgICAgZmlsbHMgaW4gdGhlIG91dGdv
aW5nIGVycm9yIGNvZGUKLSAqIEByZXR1cm4gICAgICAgICAgICAgICAgICBhbiBVbmljb2RlU3Ry
aW5nIG9iamVjdC4gSWYgdGhlcmUgaXMgYW4gZXJyb3IsIHN0cmluZyBpcyBib2d1cworICogQHJl
dHVybiBUaGUgc3RyaW5nIHZhbHVlLCBvciBhIGJvZ3VzIHN0cmluZyBpZiB0aGVyZSBpcyBhIGZh
aWx1cmUgVUVycm9yQ29kZS4KICAqIEBzdGFibGUgSUNVIDIuMAogICovCi1pbmxpbmUgVW5pY29k
ZVN0cmluZyAKLXVyZXNfZ2V0VW5pY29kZVN0cmluZ0J5S2V5KGNvbnN0IFVSZXNvdXJjZUJ1bmRs
ZSAqcmVzQiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBrZXksIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKSAKLXsKK2lubGlu
ZSBVbmljb2RlU3RyaW5nCit1cmVzX2dldFVuaWNvZGVTdHJpbmdCeUtleShjb25zdCBVUmVzb3Vy
Y2VCdW5kbGUgKnJlc0IsIGNvbnN0IGNoYXIqIGtleSwgVUVycm9yQ29kZSogc3RhdHVzKSB7Cisg
ICAgVW5pY29kZVN0cmluZyByZXN1bHQ7CiAgICAgaW50MzJfdCBsZW4gPSAwOwogICAgIGNvbnN0
IFVDaGFyKiByID0gdXJlc19nZXRTdHJpbmdCeUtleShyZXNCLCBrZXksICZsZW4sIHN0YXR1cyk7
Ci0gICAgcmV0dXJuIFVuaWNvZGVTdHJpbmcoVFJVRSwgciwgbGVuKTsKKyAgICBpZihVX1NVQ0NF
U1MoKnN0YXR1cykpIHsKKyAgICAgICAgcmVzdWx0LnNldFRvKFRSVUUsIHIsIGxlbik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgcmVzdWx0LnNldFRvQm9ndXMoKTsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogVV9OQU1FU1BBQ0VfRU5ECkBAIC04NzIsNyArODkzLDcgQEAgVV9OQU1F
U1BBQ0VfRU5ECiAjZW5kaWYKIAogLyoqCi0gKiBDcmVhdGUgYSBzdHJpbmcgZW51bWVyYXRvciwg
b3duZWQgYnkgdGhlIGNhbGxlciwgb2YgYWxsIGxvY2FsZXMgbG9jYXRlZCB3aXRoaW4gCisgKiBD
cmVhdGUgYSBzdHJpbmcgZW51bWVyYXRvciwgb3duZWQgYnkgdGhlIGNhbGxlciwgb2YgYWxsIGxv
Y2FsZXMgbG9jYXRlZCB3aXRoaW4KICAqIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UgdHJlZS4KICAq
IEBwYXJhbSBwYWNrYWdlTmFtZSBuYW1lIG9mIHRoZSB0cmVlLCBzdWNoIGFzIChOVUxMKSBvciBV
X0lDVURBVEFfQUxJQVMgb3IgIG9yICJJQ1VEQVRBLWNvbGwiCiAgKiBUaGlzIGNhbGwgaXMgc2lt
aWxhciB0byB1bG9jX2dldEF2YWlsYWJsZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91c2NyaXB0LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzY3JpcHQuaAppbmRl
eCBiMjE3YzgxNDcyOGFjMTExZDBhNGNmYTc1NTBkMzkyNjhhODdhMzFkLi4zZWMyMzVkNTBjZTJj
Mjg4YTYwMzg0MGVjMzBiYWI5YTU4ODgyOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3VzY3JpcHQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzY3JpcHQuaApA
QCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBv
dGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L2NvcHlyaWdodC5odG1sCiAvKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICAgQ29weXJpZ2h0IChDKSAx
OTk3LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyAqICAgQ29weXJpZ2h0
IChDKSAxOTk3LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICAqICAgQ29y
cG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgogICoKQEAgLTMyLDEzICszNCwxMyBAQAogICogU2VlIFVBWCAjMjQgVW5pY29kZSBTY3JpcHQg
UHJvcGVydHkgKGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjI0LykKICAqIGFuZCBo
dHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9VQ0QvbGF0ZXN0L3VjZC9Qcm9wZXJ0eVZhbHVl
QWxpYXNlcy50eHQgLgogICoKLSAqIFN0YXJ0aW5nIHdpdGggSUNVIDMuNiwgY29uc3RhbnRzIGZv
ciBtb3N0IElTTyAxNTkyNCBzY3JpcHQgY29kZXMKKyAqIEluIGFkZGl0aW9uLCBjb25zdGFudHMg
Zm9yIG1hbnkgSVNPIDE1OTI0IHNjcmlwdCBjb2RlcwogICogYXJlIGluY2x1ZGVkLCBmb3IgdXNl
IHdpdGggbGFuZ3VhZ2UgdGFncywgQ0xEUiBkYXRhLCBhbmQgc2ltaWxhci4KICAqIFNvbWUgb2Yg
dGhvc2UgY29kZXMgYXJlIG5vdCB1c2VkIGluIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFz
ZSAoVUNEKS4KICAqIEZvciBleGFtcGxlLCB0aGVyZSBhcmUgbm8gY2hhcmFjdGVycyB0aGF0IGhh
dmUgYSBVQ0Qgc2NyaXB0IHByb3BlcnR5IHZhbHVlIG9mCiAgKiBIYW5zIG9yIEhhbnQuIEFsbCBI
YW4gaWRlb2dyYXBocyBoYXZlIHRoZSBIYW5pIHNjcmlwdCBwcm9wZXJ0eSB2YWx1ZSBpbiBVbmlj
b2RlLgogICoKLSAqIFByaXZhdGUtdXNlIGNvZGVzIFFhYWEuLlFhYnggYXJlIG5vdCBpbmNsdWRl
ZC4KKyAqIFByaXZhdGUtdXNlIGNvZGVzIFFhYWEuLlFhYnggYXJlIG5vdCBpbmNsdWRlZCwgZXhj
ZXB0IGFzIHVzZWQgaW4gdGhlIFVDRCBvciBpbiBDTERSLgogICoKICAqIFN0YXJ0aW5nIHdpdGgg
SUNVIDU1LCBzY3JpcHQgY29kZXMgYXJlIG9ubHkgYWRkZWQgd2hlbiB0aGVpciBzY3JpcHRzCiAg
KiBoYXZlIGJlZW4gb3Igd2lsbCBjZXJ0YWlubHkgYmUgZW5jb2RlZCBpbiBVbmljb2RlLApAQCAt
MzAwLDcgKzMwMiw3IEBAIHR5cGVkZWYgZW51bSBVU2NyaXB0Q29kZSB7CiAgICAgICBVU0NSSVBU
X1JFSkFORyAgICAgICAgICAgICAgICAgICAgICAgID0gMTEwLC8qIFJqbmcgKi8KICAgICAgIC8q
KiBAc3RhYmxlIElDVSAzLjggKi8KICAgICAgIFVTQ1JJUFRfU0FVUkFTSFRSQSAgICAgICAgICAg
ICAgICAgICAgPSAxMTEsLyogU2F1ciAqLwotICAgICAgLyoqIEBzdGFibGUgSUNVIDMuOCAqLwor
ICAgICAgLyoqIFN1dHRvbiBTaWduV3JpdGluZyBAc3RhYmxlIElDVSAzLjggKi8KICAgICAgIFVT
Q1JJUFRfU0lHTl9XUklUSU5HICAgICAgICAgICAgICAgICAgPSAxMTIsLyogU2dudyAqLwogICAg
ICAgLyoqIEBzdGFibGUgSUNVIDMuOCAqLwogICAgICAgVVNDUklQVF9TVU5EQU5FU0UgICAgICAg
ICAgICAgICAgICAgICA9IDExMywvKiBTdW5kICovCkBAIC00MjQsMjQgKzQyNiw0NiBAQCB0eXBl
ZGVmIGVudW0gVVNjcmlwdENvZGUgewogICAgICAgLyoqIEBzdGFibGUgSUNVIDU0ICovCiAgICAg
ICBVU0NSSVBUX1NJRERIQU0gICAgICAgICAgICAgICAgICAgICAgID0gMTY2LC8qIFNpZGQgKi8K
IAotICAgICAgLyoqCi0gICAgICAgKiBPbmUgaGlnaGVyIHRoYW4gdGhlIGxhc3Qgc2NyaXB0IGNv
ZGUgY29uc3RhbnQuCi0gICAgICAgKiBUaGlzIHZhbHVlIGluY3JlYXNlcyBhcyBjb25zdGFudHMg
Zm9yIHNjcmlwdCBjb2RlcyBhcmUgYWRkZWQuCi0gICAgICAgKgotICAgICAgICogVGhlcmUgYXJl
IGNvbnN0YW50cyBmb3IgVW5pY29kZSA3IHNjcmlwdCBwcm9wZXJ0eSB2YWx1ZXMuCi0gICAgICAg
KiBUaGVyZSBhcmUgY29uc3RhbnRzIGZvciBJU08gMTU5MjQgc2NyaXB0IGNvZGVzIGFzc2lnbmVk
IG9uIG9yIGJlZm9yZSAyMDEzLTEwLTEyLgotICAgICAgICogVGhlcmUgYXJlIG5vIGNvbnN0YW50
cyBmb3IgcHJpdmF0ZSB1c2UgY29kZXMgZnJvbSBRYWFhIC0gUWFieAotICAgICAgICogZXhjZXB0
IGFzIHVzZWQgaW4gdGhlIFVDRC4KLSAgICAgICAqCi0gICAgICAgKiBAc3RhYmxlIElDVSAyLjIK
LSAgICAgICAqLwotICAgICAgVVNDUklQVF9DT0RFX0xJTUlUICAgID0gMTY3CisgICAgICAvKiog
QHN0YWJsZSBJQ1UgNTggKi8KKyAgICAgIFVTQ1JJUFRfQURMQU0gICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxNjcsLyogQWRsbSAqLworICAgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAg
ICBVU0NSSVBUX0JIQUlLU1VLSSAgICAgICAgICAgICAgICAgICAgID0gMTY4LC8qIEJoa3MgKi8K
KyAgICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAgICAgVVNDUklQVF9NQVJDSEVOICAgICAg
ICAgICAgICAgICAgICAgICA9IDE2OSwvKiBNYXJjICovCisgICAgICAvKiogQHN0YWJsZSBJQ1Ug
NTggKi8KKyAgICAgIFVTQ1JJUFRfTkVXQSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxNzAs
LyogTmV3YSAqLworICAgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgICBVU0NSSVBUX09T
QUdFICAgICAgICAgICAgICAgICAgICAgICAgID0gMTcxLC8qIE9zZ2UgKi8KKworICAgICAgLyoq
IEBzdGFibGUgSUNVIDU4ICovCisgICAgICBVU0NSSVBUX0hBTl9XSVRIX0JPUE9NT0ZPICAgICAg
ICAgICAgID0gMTcyLC8qIEhhbmIgKi8KKyAgICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAg
ICAgVVNDUklQVF9KQU1PICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE3MywvKiBKYW1vICov
CisgICAgICAvKiogQHN0YWJsZSBJQ1UgNTggKi8KKyAgICAgIFVTQ1JJUFRfU1lNQk9MU19FTU9K
SSAgICAgICAgICAgICAgICAgPSAxNzQsLyogWnN5ZSAqLworCisgICAgICAvKiogQHN0YWJsZSBJ
Q1UgNjAgKi8KKyAgICAgIFVTQ1JJUFRfTUFTQVJBTV9HT05ESSAgICAgICAgICAgICAgICAgPSAx
NzUsLyogR29ubSAqLworICAgICAgLyoqIEBzdGFibGUgSUNVIDYwICovCisgICAgICBVU0NSSVBU
X1NPWU9NQk8gICAgICAgICAgICAgICAgICAgICAgID0gMTc2LC8qIFNveW8gKi8KKyAgICAgIC8q
KiBAc3RhYmxlIElDVSA2MCAqLworICAgICAgVVNDUklQVF9aQU5BQkFaQVJfU1FVQVJFICAgICAg
ICAgICAgICA9IDE3NywvKiBaYW5iICovCisKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJ
CisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVVNjcmlw
dENvZGUgdmFsdWUuCisgICAgICogVGhlIGhpZ2hlc3QgdmFsdWUgaXMgYXZhaWxhYmxlIHZpYSB1
X2dldEludFByb3BlcnR5TWF4VmFsdWUoVUNIQVJfU0NSSVBUKS4KKyAgICAgKgorICAgICAqIEBk
ZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwg
c2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLworICAgIFVTQ1JJUFRfQ09ERV9MSU1JVCAg
ICA9IDE3OAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVVNjcmlwdENvZGU7
CiAKIC8qKgotICogR2V0cyB0aGUgc2NyaXB0IGNvZGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2
ZW4gbG9jYWxlIG9yIElTTyAxNTkyNCBhYmJyZXZpYXRpb24gb3IgbmFtZS4gCisgKiBHZXRzIHRo
ZSBzY3JpcHQgY29kZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBsb2NhbGUgb3IgSVNPIDE1
OTI0IGFiYnJldmlhdGlvbiBvciBuYW1lLgogICogRmlsbHMgaW4gVVNDUklQVF9NQUxBWUFMQU0g
Z2l2ZW4gIk1hbGF5YW0iIE9SICJNbHltIi4KLSAqIEZpbGxzIGluIFVTQ1JJUFRfTEFUSU4gZ2l2
ZW4gImVuIiBPUiAiZW5fVVMiIAorICogRmlsbHMgaW4gVVNDUklQVF9MQVRJTiBnaXZlbiAiZW4i
IE9SICJlbl9VUyIKICAqIElmIHRoZSByZXF1aXJlZCBjYXBhY2l0eSBpcyBncmVhdGVyIHRoYW4g
dGhlIGNhcGFjaXR5IG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsCiAgKiB0aGVuIHRoZSBlcnJv
ciBjb2RlIGlzIHNldCB0byBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUiBhbmQgdGhlIHJlcXVpcmVk
IGNhcGFjaXR5IGlzIHJldHVybmVkLgogICoKQEAgLTQ1NCwxMCArNDc4LDEwIEBAIHR5cGVkZWYg
ZW51bSBVU2NyaXB0Q29kZSB7CiAgKiBAcGFyYW0gZmlsbEluIHRoZSBVU2NyaXB0Q29kZSBidWZm
ZXIgdG8gZmlsbCBpbiB0aGUgc2NyaXB0IGNvZGUKICAqIEBwYXJhbSBjYXBhY2l0eSB0aGUgY2Fw
YWNpdHkgKHNpemUpIGZvIFVTY3JpcHRDb2RlIGJ1ZmZlciBwYXNzZWQgaW4uCiAgKiBAcGFyYW0g
ZXJyIHRoZSBlcnJvciBzdGF0dXMgY29kZS4KLSAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBzY3Jp
cHQgY29kZXMgZmlsbGVkIGluIHRoZSBidWZmZXIgcGFzc2VkIGluIAorICogQHJldHVybiBUaGUg
bnVtYmVyIG9mIHNjcmlwdCBjb2RlcyBmaWxsZWQgaW4gdGhlIGJ1ZmZlciBwYXNzZWQgaW4KICAq
IEBzdGFibGUgSUNVIDIuNAogICovCi1VX1NUQUJMRSBpbnQzMl90ICBVX0VYUE9SVDIgCitVX1NU
QUJMRSBpbnQzMl90ICBVX0VYUE9SVDIKIHVzY3JpcHRfZ2V0Q29kZShjb25zdCBjaGFyKiBuYW1l
T3JBYmJyT3JMb2NhbGUsVVNjcmlwdENvZGUqIGZpbGxJbixpbnQzMl90IGNhcGFjaXR5LFVFcnJv
ckNvZGUgKmVycik7CiAKIC8qKgpAQCAtNDcwLDcgKzQ5NCw3IEBAIHVzY3JpcHRfZ2V0Q29kZShj
b25zdCBjaGFyKiBuYW1lT3JBYmJyT3JMb2NhbGUsVVNjcmlwdENvZGUqIGZpbGxJbixpbnQzMl90
IGNhcGFjCiAgKiBvciBOVUxMIGlmIHNjcmlwdENvZGUgaXMgaW52YWxpZAogICogQHN0YWJsZSBJ
Q1UgMi40CiAgKi8KLVVfU1RBQkxFIGNvbnN0IGNoYXIqICBVX0VYUE9SVDIgCitVX1NUQUJMRSBj
b25zdCBjaGFyKiAgVV9FWFBPUlQyCiB1c2NyaXB0X2dldE5hbWUoVVNjcmlwdENvZGUgc2NyaXB0
Q29kZSk7CiAKIC8qKgpAQCAtNDgyLDE4ICs1MDYsMTggQEAgdXNjcmlwdF9nZXROYW1lKFVTY3Jp
cHRDb2RlIHNjcmlwdENvZGUpOwogICogQHJldHVybiBzaG9ydCBzY3JpcHQgbmFtZSAoNC1sZXR0
ZXIgY29kZSksIG9yIE5VTEwgaWYgc2NyaXB0Q29kZSBpcyBpbnZhbGlkCiAgKiBAc3RhYmxlIElD
VSAyLjQKICAqLwotVV9TVEFCTEUgY29uc3QgY2hhciogIFVfRVhQT1JUMiAKK1VfU1RBQkxFIGNv
bnN0IGNoYXIqICBVX0VYUE9SVDIKIHVzY3JpcHRfZ2V0U2hvcnROYW1lKFVTY3JpcHRDb2RlIHNj
cmlwdENvZGUpOwogCiAvKioKICAqIEdldHMgdGhlIHNjcmlwdCBjb2RlIGFzc29jaWF0ZWQgd2l0
aCB0aGUgZ2l2ZW4gY29kZXBvaW50LgotICogUmV0dXJucyBVU0NSSVBUX01BTEFZQUxBTSBnaXZl
biAweDBEMDIgCisgKiBSZXR1cm5zIFVTQ1JJUFRfTUFMQVlBTEFNIGdpdmVuIDB4MEQwMgogICog
QHBhcmFtIGNvZGVwb2ludCBVQ2hhcjMyIGNvZGVwb2ludAogICogQHBhcmFtIGVyciB0aGUgZXJy
b3Igc3RhdHVzIGNvZGUuCi0gKiBAcmV0dXJuIFRoZSBVU2NyaXB0Q29kZSwgb3IgMCBpZiBjb2Rl
cG9pbnQgaXMgaW52YWxpZCAKKyAqIEByZXR1cm4gVGhlIFVTY3JpcHRDb2RlLCBvciAwIGlmIGNv
ZGVwb2ludCBpcyBpbnZhbGlkCiAgKiBAc3RhYmxlIElDVSAyLjQKICAqLwotVV9TVEFCTEUgVVNj
cmlwdENvZGUgIFVfRVhQT1JUMiAKK1VfU1RBQkxFIFVTY3JpcHRDb2RlICBVX0VYUE9SVDIKIHVz
Y3JpcHRfZ2V0U2NyaXB0KFVDaGFyMzIgY29kZXBvaW50LCBVRXJyb3JDb2RlICplcnIpOwogCiAv
KioKQEAgLTUwMyw5ICs1MjcsNiBAQCB1c2NyaXB0X2dldFNjcmlwdChVQ2hhcjMyIGNvZGVwb2lu
dCwgVUVycm9yQ29kZSAqZXJyKTsKICAqCiAgKiBTb21lIGNoYXJhY3RlcnMgYXJlIGNvbW1vbmx5
IHVzZWQgaW4gbXVsdGlwbGUgc2NyaXB0cy4KICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUg
VUFYICMyNDogaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMjQvLgotICoKLSAqIFRo
ZSBTY3JpcHRfRXh0ZW5zaW9ucyBwcm9wZXJ0eSBpcyBwcm92aXNpb25hbC4gSXQgbWF5IGJlIG1v
ZGlmaWVkIG9yIHJlbW92ZWQKLSAqIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgVW5pY29kZSBT
dGFuZGFyZCwgYW5kIHRodXMgaW4gSUNVLgogICogQHBhcmFtIGMgY29kZSBwb2ludAogICogQHBh
cmFtIHNjIHNjcmlwdCBjb2RlCiAgKiBAcmV0dXJuIFRSVUUgaWYgc2MgaXMgaW4gU2NyaXB0X0V4
dGVuc2lvbnMoYykKQEAgLTUzMiw4ICs1NTMsNiBAQCB1c2NyaXB0X2hhc1NjcmlwdChVQ2hhcjMy
IGMsIFVTY3JpcHRDb2RlIHNjKTsKICAqIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SIGlzIHNldCBh
bmQgdGhlIG51bWJlciBvZiBTY3JpcHRfRXh0ZW5zaW9ucyBpcyByZXR1cm5lZC4KICAqIChVc3Vh
bCBJQ1UgYnVmZmVyIGhhbmRsaW5nIGJlaGF2aW9yLikKICAqCi0gKiBUaGUgU2NyaXB0X0V4dGVu
c2lvbnMgcHJvcGVydHkgaXMgcHJvdmlzaW9uYWwuIEl0IG1heSBiZSBtb2RpZmllZCBvciByZW1v
dmVkCi0gKiBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlIFVuaWNvZGUgU3RhbmRhcmQsIGFuZCB0
aHVzIGluIElDVS4KICAqIEBwYXJhbSBjIGNvZGUgcG9pbnQKICAqIEBwYXJhbSBzY3JpcHRzIG91
dHB1dCBzY3JpcHQgY29kZSBhcnJheQogICogQHBhcmFtIGNhcGFjaXR5IGNhcGFjaXR5IG9mIHRo
ZSBzY3JpcHRzIGFycmF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzZWFy
Y2guaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNlYXJjaC5oCmluZGV4IDc1NTIxZjUyOGE0
MTBmYWUxOTIzNThiMDcwZjM4NTkwZDY2MjZhM2QuLmViZmNkZjdlYzZhNDk0ZTM0MmMyYjM1MWVh
ZDI3Y2E3MjFiNWEwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNlYXJj
aC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNlYXJjaC5oCkBAIC0xLDMgKzEsNSBA
QAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExp
Y2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0
bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCiAqICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTEsMjAxNCBJ
Qk0gYW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTE4OCwxMSArMTkwLDEzIEBA
IHR5cGVkZWYgZW51bSB7CiAgICAgICovCiAgICAgVVNFQVJDSF9FTEVNRU5UX0NPTVBBUklTT04g
PSAyLAogCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAgIC8qKgotICAgICAqIENv
dW50IG9mIGF0dHJpYnV0ZSB0eXBlcwotICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqIE9u
ZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVTZWFyY2hBdHRyaWJ1dGUgdmFsdWUuCisg
ICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3Zl
ciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCiAgICAgICovCiAgICAgVVNFQVJDSF9BVFRS
SUJVVEVfQ09VTlQgPSAzCisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogfSBV
U2VhcmNoQXR0cmlidXRlOwogCiAvKioKQEAgLTI2MiwxMSArMjY2LDEzIEBAIHR5cGVkZWYgZW51
bSB7CiAgICAgICovCiAgICAgVVNFQVJDSF9BTllfQkFTRV9XRUlHSFRfSVNfV0lMRENBUkQsCiAK
KyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCiAgICAgLyoqCi0gICAgICogQ291bnQgb2Yg
YXR0cmlidXRlIHZhbHVlcwotICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqIE9uZSBtb3Jl
IHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVTZWFyY2hBdHRyaWJ1dGVWYWx1ZSB2YWx1ZS4KKyAg
ICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVy
IHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KICAgICAgKi8KICAgICBVU0VBUkNIX0FUVFJJ
QlVURV9WQUxVRV9DT1VOVAorI2VuZGlmICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KIH0g
VVNlYXJjaEF0dHJpYnV0ZVZhbHVlOwogCiAvKiBvcGVuIGFuZCBjbG9zZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNldC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91
c2V0LmgKaW5kZXggZWIzYzllNmEwNmE2ZjlmZjk0OTM1ZWU4MTBlOWNhODkxZGY2MDEwNS4uNTlm
NDY1MDdkNTQ4YWE0ODY1OGY4NDc4YWY3OWQ1ZmQ0M2E5ZjJjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS91c2V0LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91c2V0
LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBh
bmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2Rl
Lm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTYs
NyArOCw3IEBACiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgdXNl
dC5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAg
IHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTE5Niwx
MSArMTk4LDEzIEBAIHR5cGVkZWYgZW51bSBVU2V0U3BhbkNvbmRpdGlvbiB7CiAgICAgICogQHN0
YWJsZSBJQ1UgMy44CiAgICAgICovCiAgICAgVVNFVF9TUEFOX1NJTVBMRSA9IDIsCisjaWZuZGVm
IFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAgIC8qKgogICAgICAqIE9uZSBtb3JlIHRoYW4gdGhl
IGxhc3Qgc3BhbiBjb25kaXRpb24uCi0gICAgICogQHN0YWJsZSBJQ1UgMy44CisgICAgICogQGRl
cHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBz
ZWUgSUNVIHRpY2tldCAjMTI0MjAuCiAgICAgICovCiAgICAgVVNFVF9TUEFOX0NPTkRJVElPTl9D
T1VOVAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVVNldFNwYW5Db25kaXRp
b247CiAKIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91c2V0aXRl
ci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91c2V0aXRlci5oCmluZGV4IGJmOTI3YjA4Y2Vl
ODZkMGMxYzhmOTliODhlOGE4YjgxZGQyZjAwNmQuLmQwZDk5MTg1YjdjZGI3MjU1ZTQ2Y2I1OTc5
ZDZiMGRmZTNjYTNjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNldGl0
ZXIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzZXRpdGVyLmgKQEAgLTEsMyArMSw1
IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8g
TGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQu
aHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIEludGVy
bmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdXNoYXBlLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzaGFwZS5oCmluZGV4IDlm
YjVhYjRlNTQ3ZjRjYWRjNjQzMWIzZTM5YWZjNTIyMmVhMjczN2IuLmM2NGZlMjI3YzFmNGEzOGY3
Zjg2ZGZlZGFhMmU5NmI4ZWU3NDM4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvdXNoYXBlLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91c2hhcGUuaApAQCAtMSwz
ICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMu
CisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHly
aWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC02LDcgKzgsNyBAQAog
KgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgdXNoYXBlLmgKLSogICBl
bmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6
ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS91c3Bvb2YuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNwb29m
LmgKaW5kZXggOGQ2NjVlMWIzZWQ3YWNhOTExMDEzMDk1OThlZWMxZjE3MDU4YzZkMi4uOWZjZmNk
M2VkZTgzNmM1ZDgwZTUxOGI5ZTU4Y2YyNzg4OTFmMGNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91c3Bvb2YuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzcG9v
Zi5oCkBAIC0xLDEwICsxLDEyIEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5j
LiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3Jh
dGlvbgorKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcyBDb3Jwb3JhdGlvbgogKiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgdXNwb29mLmgKLSogICBlbmNvZGlu
ZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAo
bm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpAQCAtMzUsMTIzICszNywzNDkgQEAKICAq
IFxmaWxlCiAgKiBcYnJpZWYgVW5pY29kZSBTZWN1cml0eSBhbmQgU3Bvb2ZpbmcgRGV0ZWN0aW9u
LCBDIEFQSS4KICAqCi0gKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGludGVuZGVkIHRvIGNoZWNrIHN0
cmluZ3MsIHR5cGljYWxseQotICogaWRlbnRpZmllcnMgb2Ygc29tZSB0eXBlLCBzdWNoIGFzIFVS
THMsIGZvciB0aGUgcHJlc2VuY2Ugb2YKLSAqIGNoYXJhY3RlcnMgdGhhdCBhcmUgbGlrZWx5IHRv
IGJlIHZpc3VhbGx5IGNvbmZ1c2luZyAtIAotICogZm9yIGNhc2VzIHdoZXJlIHRoZSBkaXNwbGF5
ZWQgZm9ybSBvZiBhbiBpZGVudGlmaWVyIG1heQotICogbm90IGJlIHdoYXQgaXQgYXBwZWFycyB0
byBiZS4KLSAqCi0gKiBVbmljb2RlIFRlY2huaWNhbCBSZXBvcnQgIzM2LCBodHRwOi8vdW5pY29k
ZS5vcmcvcmVwb3J0cy90cjM2LCBhbmQKLSAqIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMz
OSwgaHR0cDovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIzOQotICogIlVuaWNvZGUgc2VjdXJpdHkg
Y29uc2lkZXJhdGlvbnMiLCBnaXZlIG1vcmUgYmFja2dyb3VuZCBvbiAKLSAqIHNlY3VyaXR5IGFu
IHNwb29maW5nIGlzc3VlcyB3aXRoIFVuaWNvZGUgaWRlbnRpZmllcnMuCi0gKiBUaGUgdGVzdHMg
YW5kIGNoZWNrcyBwcm92aWRlZCBieSB0aGlzIG1vZHVsZSBpbXBsZW1lbnQgdGhlIHJlY29tbWVu
ZGF0aW9ucwotICogZnJvbSB0aG9zZSBVbmljb2RlIGRvY3VtZW50cy4KLSAqCi0gKiBUaGUgdGVz
dHMgYXZhaWxhYmxlIG9uIGlkZW50aWZpZXJzIGZhbGwgaW50byB0d28gZ2VuZXJhbCBjYXRlZ29y
aWVzOgotICogICAtIyAgU2luZ2xlIGlkZW50aWZpZXIgdGVzdHMuICBDaGVjayB3aGV0aGVyIGFu
IGlkZW50aWZpZXIgaXMKLSAqICAgICAgIHBvdGVudGlhbGx5IGNvbmZ1c2FibGUgd2l0aCBhbnkg
b3RoZXIgc3RyaW5nLCBvciBpcyBzdXNwaWNpb3VzCi0gKiAgICAgICBmb3Igb3RoZXIgcmVhc29u
cy4KLSAqICAgLSMgIFR3byBpZGVudGlmaWVyIHRlc3RzLiAgQ2hlY2sgd2hldGhlciB0d28gc3Bl
Y2lmaWMgaWRlbnRpZmllcnMgYXJlIGNvbmZ1c2FibGUuCi0gKiAgICAgICBUaGlzIGRvZXMgbm90
IGNvbnNpZGVyIHdoZXRoZXIgZWl0aGVyIG9mIHN0cmluZ3MgaXMgcG90ZW50aWFsbHkKLSAqICAg
ICAgIGNvbmZ1c2FibGUgd2l0aCBhbnkgc3RyaW5nIG90aGVyIHRoYW4gdGhlIGV4YWN0IG9uZSBz
cGVjaWZpZWQuCi0gKgotICogVGhlIHN0ZXBzIHRvIHBlcmZvcm0gY29uZnVzYWJpbGl0eSB0ZXN0
aW5nIGFyZQotICogICAtIyAgT3BlbiBhIFVTcG9vZkNoZWNrZXIuCi0gKiAgIC0jICBDb25maWd1
cmUgdGhlIFVTUG9vZkNoZWNrZXIgZm9yIHRoZSBkZXNpcmVkIHNldCBvZiB0ZXN0cy4gIFRoZSB0
ZXN0cyB0aGF0IHdpbGwKLSAqICAgICAgIGJlIHBlcmZvcm1lZCBhcmUgc3BlY2lmaWVkIGJ5IGEg
c2V0IG9mIFVTcG9vZkNoZWNrcyBmbGFncy4KLSAqICAgLSMgIFBlcmZvcm0gdGhlIGNoZWNrcyB1
c2luZyB0aGUgcHJlLWNvbmZpZ3VyZWQgVVNwb29mQ2hlY2tlci4gIFRoZSByZXN1bHRzIGluZGlj
YXRlCi0gKiAgICAgICB3aGljaCAoaWYgYW55KSBvZiB0aGUgc2VsZWN0ZWQgdGVzdHMgaGF2ZSBp
ZGVudGlmaWVkIHBvc3NpYmxlIHByb2JsZW1zIHdpdGggdGhlIGlkZW50aWZpZXIuCi0gKiAgICAg
ICBSZXN1bHRzIGFyZSByZXBvcnRlZCBhcyBhIHNldCBvZiBVU3Bvb2ZDaGVja3MgZmxhZ3M7ICB0
aGlzIG1pcnJvcnMgdGhlIGZvcm0gaW4gd2hpY2gKLSAqICAgICAgIHRoZSBzZXQgb2YgdGVzdHMg
dG8gcGVyZm9ybSB3YXMgb3JpZ2luYWxseSBzcGVjaWZpZWQgdG8gdGhlIFVTcG9vZkNoZWNrZXIu
Ci0gKgotICogQSBVU3Bvb2ZDaGVja2VyIG1heSBiZSB1c2VkIHJlcGVhdGVkbHkgdG8gcGVyZm9y
bSBjaGVja3Mgb24gYW55IG51bWJlciBvZiBpZGVudGlmaWVycy4KLSAqCi0gKiBUaHJlYWQgU2Fm
ZXR5OiBUaGUgdGVzdCBmdW5jdGlvbnMgZm9yIGNoZWNraW5nIGEgc2luZ2xlIGlkZW50aWZpZXIs
IG9yIGZvciB0ZXN0aW5nIAotICogd2hldGhlciB0d28gaWRlbnRpZmllcnMgYXJlIHBvc3NpYmxl
IGNvbmZ1c2FibGUsIGFyZSB0aHJlYWQgc2FmZS4gIAotICogVGhleSBtYXkgY2FsbGVkIGNvbmN1
cnJlbnRseSwgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLCB1c2luZyB0aGUgc2FtZSBVU3Bvb2ZDaGVj
a2VyIGluc3RhbmNlLgotICoKLSAqIE1vcmUgZ2VuZXJhbGx5LCB0aGUgc3RhbmRhcmQgSUNVIHRo
cmVhZCBzYWZldHkgcnVsZXMgYXBwbHk6ICBmdW5jdGlvbnMgdGhhdCB0YWtlIGEKLSAqIGNvbnN0
IFVTcG9vZkNoZWNrZXIgcGFyYW1ldGVyIGFyZSB0aHJlYWQgc2FmZS4gIFRob3NlIHRoYXQgdGFr
ZSBhIG5vbi1jb25zdCAKLSAqIFVTcG9vZkNoZWNpZXIgYXJlIG5vdCB0aHJlYWQgc2FmZS4KLSAq
Ci0gKgotICogRGVzY3JpcHRpb25zIG9mIHRoZSBhdmFpbGFibGUgY2hlY2tzLgotICoKLSAqIFdo
ZW4gdGVzdGluZyB3aGV0aGVyIHBhaXJzIG9mIGlkZW50aWZpZXJzIGFyZSBjb25mdXNhYmxlLCB3
aXRoIHRoZSB1c3Bvb2ZfYXJlQ29uZnVzYWJsZSgpCi0gKiBmYW1pbHkgb2YgZnVuY3Rpb25zLCB0
aGUgcmVsZXZhbnQgdGVzdHMgYXJlCi0gKgotICogICAtIyBVU1BPT0ZfU0lOR0xFX1NDUklQVF9D
T05GVVNBQkxFOiAgQWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGZyb20gdGhlIHR3byBpZGVudGlmaWVy
cyBhcmUKLSAqICAgICAgZnJvbSBhIHNpbmdsZSBzY3JpcHQsIGFuZCB0aGUgdHdvIGlkZW50aWZp
ZXJzIGFyZSB2aXN1YWxseSBjb25mdXNhYmxlLgotICogICAtIyBVU1BPT0ZfTUlYRURfU0NSSVBU
X0NPTkZVU0FCTEU6ICBBdCBsZWFzdCBvbmUgb2YgdGhlIGlkZW50aWZpZXJzIGNvbnRhaW5zIGNo
YXJhY3RlcnMKLSAqICAgICAgZnJvbSBtb3JlIHRoYW4gb25lIHNjcmlwdCwgYW5kIHRoZSB0d28g
aWRlbnRpZmllcnMgYXJlIHZpc3VhbGx5IGNvbmZ1c2FibGUuCi0gKiAgIC0jIFVTUE9PRl9XSE9M
RV9TQ1JJUFRfQ09ORlVTQUJMRTogRWFjaCBvZiB0aGUgdHdvIGlkZW50aWZpZXJzIGlzIG9mIGEg
c2luZ2xlIHNjcmlwdCwgYnV0Ci0gKiAgICAgIHRoZSB0d28gaWRlbnRpZmllcnMgYXJlIGZyb20g
ZGlmZmVyZW50IHNjcmlwdHMsIGFuZCB0aGV5IGFyZSB2aXN1YWxseSBjb25mdXNhYmxlLgotICoK
LSAqIFRoZSBzYWZlc3QgYXBwcm9hY2ggaXMgdG8gZW5hYmxlIGFsbCB0aHJlZSBvZiB0aGVzZSBj
aGVja3MgYXMgYSBncm91cC4KLSAqCi0gKiBVU1BPT0ZfQU5ZX0NBU0UgaXMgYSBtb2RpZmllciBm
b3IgdGhlIGFib3ZlIHRlc3RzLiAgSWYgdGhlIGlkZW50aWZpZXJzIGJlaW5nIGNoZWNrZWQgY2Fu
Ci0gKiBiZSBvZiBtaXhlZCBjYXNlIGFuZCBhcmUgdXNlZCBpbiBhIGNhc2Utc2Vuc2l0aXZlIG1h
bm5lciwgdGhpcyBvcHRpb24gc2hvdWxkIGJlIHNwZWNpZmllZC4KLSAqCi0gKiBJZiB0aGUgaWRl
bnRpZmllcnMgYmVpbmcgY2hlY2tlZCBhcmUgdXNlZCBpbiBhIGNhc2UtaW5zZW5zaXRpdmUgbWFu
bmVyLCBhbmQgaWYgdGhleSBhcmUKLSAqIGRpc3BsYXllZCB0byB1c2VycyBpbiBsb3dlci1jYXNl
IGZvcm0gb25seSwgdGhlIFVTUE9PRl9BTllfQ0FTRSBvcHRpb24gc2hvdWxkIG5vdCBiZQotICog
c3BlY2lmaWVkLiAgQ29uZnVzYWJhbGl0eSBpc3N1ZXMgaW52b2x2aW5nIHVwcGVyIGNhc2UgbGV0
dGVycyB3aWxsIG5vdCBiZSByZXBvcnRlZC4KLSAqCi0gKiBXaGVuIHBlcmZvcm1pbmcgdGVzdHMg
b24gYSBzaW5nbGUgaWRlbnRpZmllciwgd2l0aCB0aGUgdXNwb29mX2NoZWNrKCkgZmFtaWx5IG9m
IGZ1bmN0aW9ucywKLSAqIHRoZSByZWxldmFudCB0ZXN0cyBhcmU6Ci0gKgotICogICAgLSMgVVNQ
T09GX01JWEVEX1NDUklQVF9DT05GVVNBQkxFOiB0aGUgaWRlbnRpZmllciBjb250YWlucyBjaGFy
YWN0ZXJzIGZyb20gbXVsdGlwbGUKLSAqICAgICAgIHNjcmlwdHMsIGFuZCB0aGVyZSBleGlzdHMg
YW4gaWRlbnRpZmllciBvZiBhIHNpbmdsZSBzY3JpcHQgdGhhdCBpcyB2aXN1YWxseSBjb25mdXNh
YmxlLgotICogICAgLSMgVVNQT09GX1dIT0xFX1NDUklQVF9DT05GVVNBQkxFOiB0aGUgaWRlbnRp
ZmllciBjb25zaXN0cyBvZiBjaGFyYWN0ZXJzIGZyb20gYSBzaW5nbGUKLSAqICAgICAgIHNjcmlw
dCwgYW5kIHRoZXJlIGV4aXN0cyBhIHZpc3VhbGx5IGNvbmZ1c2FibGUgaWRlbnRpZmllci4KLSAq
ICAgICAgIFRoZSB2aXN1YWxseSBjb25mdXNhYmxlIGlkZW50aWZpZXIgYWxzbyBjb25zaXN0cyBv
ZiBjaGFyYWN0ZXJzIGZyb20gYSBzaW5nbGUgc2NyaXB0LgotICogICAgICAgYnV0IG5vdCB0aGUg
c2FtZSBzY3JpcHQgYXMgdGhlIGlkZW50aWZpZXIgYmVpbmcgY2hlY2tlZC4KLSAqICAgIC0jIFVT
UE9PRl9BTllfQ0FTRTogbW9kaWZpZXMgdGhlIG1peGVkIHNjcmlwdCBhbmQgd2hvbGUgc2NyaXB0
IGNvbmZ1c2FibGVzIHRlc3RzLiAgSWYKLSAqICAgICAgIHNwZWNpZmllZCwgdGhlIGNoZWNrcyB3
aWxsIGNvbnNpZGVyIGNvbmZ1c2FibGUgY2hhcmFjdGVycyBvZiBhbnkgY2FzZS4gIElmIHRoaXMg
ZmxhZyBpcyBub3QKLSAqICAgICAgIHNldCwgdGhlIHRlc3QgaXMgcGVyZm9ybWVkIGFzc3VtaW5n
IGNhc2UgZm9sZGVkIGlkZW50aWZpZXJzLgotICogICAgLSMgVVNQT09GX1NJTkdMRV9TQ1JJUFQ6
IGNoZWNrIHRoYXQgdGhlIGlkZW50aWZpZXIgY29udGFpbnMgb25seSBjaGFyYWN0ZXJzIGZyb20g
YQotICogICAgICAgc2luZ2xlIHNjcmlwdC4gIChDaGFyYWN0ZXJzIGZyb20gdGhlICdjb21tb24n
IGFuZCAnaW5oZXJpdGVkJyBzY3JpcHRzIGFyZSBpZ25vcmVkLikKLSAqICAgICAgIFRoaXMgaXMg
bm90IGEgdGVzdCBmb3IgY29uZnVzYWJsZSBpZGVudGlmaWVycwotICogICAgLSMgVVNQT09GX0lO
VklTSUJMRTogY2hlY2sgYW4gaWRlbnRpZmllciBmb3IgdGhlIHByZXNlbmNlIG9mIGludmlzaWJs
ZSBjaGFyYWN0ZXJzLAotICogICAgICAgc3VjaCBhcyB6ZXJvLXdpZHRoIHNwYWNlcywgb3IgY2hh
cmFjdGVyIHNlcXVlbmNlcyB0aGF0IGFyZQotICogICAgICAgbGlrZWx5IG5vdCB0byBkaXNwbGF5
LCBzdWNoIGFzIG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIHRoZSBzYW1lCi0gKiAgICAgICBub24t
c3BhY2luZyBtYXJrLiAgVGhpcyBjaGVjayBkb2VzIG5vdCB0ZXN0IHRoZSBpbnB1dCBzdHJpbmcg
YXMgYSB3aG9sZQotICogICAgICAgZm9yIGNvbmZvcm1hbmNlIHRvIGFueSBwYXJ0aWN1bGFyIHN5
bnRheCBmb3IgaWRlbnRpZmllcnMuCi0gKiAgICAtIyBVU1BPT0ZfQ0hBUl9MSU1JVDogY2hlY2sg
dGhhdCBhbiBpZGVudGlmaWVyIGNvbnRhaW5zIG9ubHkgY2hhcmFjdGVycyBmcm9tIGEgc3BlY2lm
aWVkIHNldAotICogICAgICAgb2YgYWNjZXB0YWJsZSBjaGFyYWN0ZXJzLiAgU2VlIHVzcG9vZl9z
ZXRBbGxvd2VkQ2hhcnMoKSBhbmQKLSAqICAgICAgIHVzcG9vZl9zZXRBbGxvd2VkTG9jYWxlcygp
LgotICoKLSAqICBOb3RlIG9uIFNjcmlwdHM6Ci0gKiAgICAgQ2hhcmFjdGVycyBmcm9tIHRoZSBV
bmljb2RlIFNjcmlwdHMgIkNvbW1vbiIgYW5kICJJbmhlcml0ZWQiIGFyZSBpZ25vcmVkIHdoZW4g
Y29uc2lkZXJpbmcKLSAqICAgICB0aGUgc2NyaXB0IG9mIGFuIGlkZW50aWZpZXIuIENvbW1vbiBj
aGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXRzIGFuZCBzeW1ib2xzIHRoYXQKLSAqICAgICBhcmUgbm9y
bWFsbHkgdXNlZCB3aXRoIHRleHQgZnJvbSBtb3JlIHRoYW4gb25lIHNjcmlwdC4KLSAqCi0gKiAg
SWRlbnRpZmllciBTa2VsZXRvbnM6ICBBIHNrZWxldG9uIGlzIGEgdHJhbnNmb3JtYXRpb24gb2Yg
YW4gaWRlbnRpZmllciwgc3VjaCB0aGF0Ci0gKiAgYWxsIGlkZW50aWZpZXJzIHRoYXQgYXJlIGNv
bmZ1c2FibGUgd2l0aCBlYWNoIG90aGVyIGhhdmUgdGhlIHNhbWUgc2tlbGV0b24uCi0gKiAgVXNp
bmcgc2tlbGV0b25zLCBpdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIGRpY3Rpb25hcnkgZGF0YSBz
dHJ1Y3R1cmUgZm9yCi0gKiAgYSBzZXQgb2YgaWRlbnRpZmllcnMsIGFuZCB0aGVuIHF1aWNrbHkg
dGVzdCB3aGV0aGVyIGEgbmV3IGlkZW50aWZpZXIgaXMKLSAqICBjb25mdXNhYmxlIHdpdGggYW4g
aWRlbnRpZmllciBhbHJlYWR5IGluIHRoZSBzZXQuICBUaGUgdXNwb29mX2dldFNrZWxldG9uKCkK
LSAqICBmYW1pbHkgb2YgZnVuY3Rpb25zIHdpbGwgcHJvZHVjZSB0aGUgc2tlbGV0b24gZnJvbSBh
biBpZGVudGlmaWVyLgotICoKLSAqICBOb3RlIHRoYXQgc2tlbGV0b25zIGFyZSBub3QgZ3VhcmFu
dGVlZCB0byBiZSBzdGFibGUgYmV0d2VlbiB2ZXJzaW9ucyAKLSAqICBvZiBVbmljb2RlIG9yIElD
VSwgc28gYW4gYXBwbGljYXRpb25zIHNob3VsZCBub3QgcmVseSBvbiBjcmVhdGluZyBhIHBlcm1h
bmVudCwKLSAqICBvciBkaWZmaWN1bHQgdG8gdXBkYXRlLCBkYXRhYmFzZSBvZiBza2VsZXRvbnMu
ICBJbnN0YWJpbGl0aWVzIHJlc3VsdCBmcm9tCi0gKiAgaWRlbnRpZnlpbmcgbmV3IHBhaXJzIG9y
IHNlcXVlbmNlcyBvZiBjaGFyYWN0ZXJzIHRoYXQgYXJlIHZpc3VhbGx5Ci0gKiAgY29uZnVzYWJs
ZSwgYW5kIHRodXMgbXVzdCBiZSBtYXBwZWQgdG8gdGhlIHNhbWUgc2tlbGV0b24gY2hhcmFjdGVy
KHMpLgotICoKLSAqICBTa2VsZXRvbnMgYXJlIGNvbXB1dGVkIHVzaW5nIHRoZSBhbGdvcml0aG0g
YW5kIGRhdGEgZGVzY3JpYmUgaW4gVW5pY29kZSBVQVggMzkuCi0gKiAgVGhlIGxhdGVzdCBwcm9w
b3NlZCB1cGRhdGUsIFVBWCAzOSBWZXJzaW9uIDggZHJhZnQgMSwgc2F5cyAidGhlIHRhYmxlcyBT
TCwgU0EsIGFuZCBNTAotICogIHdlcmUgc3RpbGwgcHJvYmxlbWF0aWMsIGFuZCBkaXNjb3VyYWdl
ZCBmcm9tIHVzZSBpbiBbVW5pb2NkZV0gNy4wLgotICogIFRoZXkgd2VyZSB0aHVzIHJlbW92ZWQg
ZnJvbSB2ZXJzaW9uIDguMCIKLSAqCi0gKiAgSW4gbGlnaHQgb2YgdGhpcywgdGhlIGRlZmF1bHQg
bWFwcGluZyBkYXRhIGluY2x1ZGVkIHdpdGggSUNVIDU1IHVzZXMgdGhlCi0gKiAgVW5pY29kZSA3
IE1BIChNdWx0aSBzY3JpcHQgQW55IGNhc2UpIHRhYmxlIGRhdGEgZm9yIHRoZSBvdGhlciB0eXBl
IG9wdGlvbnMKLSAqICAoU2luZ2xlIFNjcmlwdCwgQW55IENhc2UpLCAoU2luZ2xlIFNjcmlwdCwg
TG93ZXIgQ2FzZSkgYW5kIChNdWx0aSBTY3JpcHQsIExvd2VyIENhc2UpLgorICogPHA+CisgKiBU
aGlzIGNsYXNzLCBiYXNlZCBvbiA8YSBocmVmPSJodHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90
cjM2Ij5Vbmljb2RlIFRlY2huaWNhbCBSZXBvcnQgIzM2PC9hPiBhbmQKKyAqIDxhIGhyZWY9Imh0
dHA6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMzkiPlVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJk
ICMzOTwvYT4sIGhhcyB0d28gbWFpbiBmdW5jdGlvbnM6CisgKgorICogPG9sPgorICogPGxpPkNo
ZWNraW5nIHdoZXRoZXIgdHdvIHN0cmluZ3MgYXJlIHZpc3VhbGx5IDxlbT5jb25mdXNhYmxlPC9l
bT4gd2l0aCBlYWNoIG90aGVyLCBzdWNoIGFzICJIYXJ2ZXN0IiBhbmQKKyAqICZxdW90OyZFdGE7
YXJ2ZXN0JnF1b3Q7LCB3aGVyZSB0aGUgc2Vjb25kIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgR3Jl
ZWsgY2FwaXRhbCBsZXR0ZXIgRXRhLjwvbGk+CisgKiA8bGk+Q2hlY2tpbmcgd2hldGhlciBhbiBp
bmRpdmlkdWFsIHN0cmluZyBpcyBsaWtlbHkgdG8gYmUgYW4gYXR0ZW1wdCBhdCBjb25mdXNpbmcg
dGhlIHJlYWRlciAoPGVtPnNwb29mCisgKiBkZXRlY3Rpb248L2VtPiksIHN1Y2ggYXMgInBheXBh
bCIgd2l0aCBzb21lIExhdGluIGNoYXJhY3RlcnMgc3Vic3RpdHV0ZWQgd2l0aCBDeXJpbGxpYyBs
b29rLWFsaWtlcy48L2xpPgorICogPC9vbD4KKyAqCisgKiA8cD4KKyAqIEFsdGhvdWdoIG9yaWdp
bmFsbHkgZGVzaWduZWQgYXMgYSBtZXRob2QgZm9yIGZsYWdnaW5nIHN1c3BpY2lvdXMgaWRlbnRp
ZmllciBzdHJpbmdzIHN1Y2ggYXMgVVJMcywKKyAqIDxjb2RlPlVTcG9vZkNoZWNrZXI8L2NvZGU+
IGhhcyBhIG51bWJlciBvZiBvdGhlciBwcmFjdGljYWwgdXNlIGNhc2VzLCBzdWNoIGFzIHByZXZl
bnRpbmcgYXR0ZW1wdHMgdG8gZXZhZGUgYmFkLXdvcmQKKyAqIGNvbnRlbnQgZmlsdGVycy4KKyAq
CisgKiA8cD4KKyAqIFRoZSBmdW5jdGlvbnMgb2YgdGhpcyBjbGFzcyBhcmUgZXhwb3NlZCBhcyBD
IEFQSSwgd2l0aCBhIGhhbmRmdWwgb2Ygc3ludGFjdGljYWwgY29udmVuaWVuY2VzIGZvciBDKysu
CisgKgorICogPGgyPkNvbmZ1c2FibGVzPC9oMj4KKyAqCisgKiA8cD4KKyAqIFRoZSBmb2xsb3dp
bmcgZXhhbXBsZSBzaG93cyBob3cgdG8gdXNlIDxjb2RlPlVTcG9vZkNoZWNrZXI8L2NvZGU+IHRv
IGNoZWNrIGZvciBjb25mdXNhYmlsaXR5IGJldHdlZW4gdHdvIHN0cmluZ3M6CisgKgorICogXGNv
ZGV7LmN9CisgKiBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAqIFVDaGFyKiBz
dHIxID0gKFVDaGFyKikgdSJIYXJ2ZXN0IjsKKyAqIFVDaGFyKiBzdHIyID0gKFVDaGFyKikgdSJc
dTAzOTdhcnZlc3QiOyAgLy8gd2l0aCBVKzAzOTcgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBCisg
KgorICogVVNwb29mQ2hlY2tlciogc2MgPSB1c3Bvb2Zfb3Blbigmc3RhdHVzKTsKKyAqIHVzcG9v
Zl9zZXRDaGVja3Moc2MsIFVTUE9PRl9DT05GVVNBQkxFLCAmc3RhdHVzKTsKKyAqCisgKiBpbnQz
Ml90IGJpdG1hc2sgPSB1c3Bvb2ZfYXJlQ29uZnVzYWJsZShzYywgc3RyMSwgLTEsIHN0cjIsIC0x
LCAmc3RhdHVzKTsKKyAqIFVCb29sIHJlc3VsdCA9IGJpdG1hc2sgIT0gMDsKKyAqIC8vIGFyZUNv
bmZ1c2FibGU6IDEgKHN0YXR1czogVV9aRVJPX0VSUk9SKQorICogcHJpbnRmKCJhcmVDb25mdXNh
YmxlOiAlZCAoc3RhdHVzOiAlcylcbiIsIHJlc3VsdCwgdV9lcnJvck5hbWUoc3RhdHVzKSk7Cisg
KiB1c3Bvb2ZfY2xvc2Uoc2MpOworICogXGVuZGNvZGUKKyAqCisgKiA8cD4KKyAqIFRoZSBjYWxs
IHRvIHtAbGluayB1c3Bvb2Zfb3Blbn0gY3JlYXRlcyBhIDxjb2RlPlVTcG9vZkNoZWNrZXI8L2Nv
ZGU+IG9iamVjdDsgdGhlIGNhbGwgdG8ge0BsaW5rIHVzcG9vZl9zZXRDaGVja3N9CisgKiBlbmFi
bGVzIGNvbmZ1c2FibGUgY2hlY2tpbmcgYW5kIGRpc2FibGVzIGFsbCBvdGhlciBjaGVja3M7IHRo
ZSBjYWxsIHRvIHtAbGluayB1c3Bvb2ZfYXJlQ29uZnVzYWJsZX0gcGVyZm9ybXMgdGhlCisgKiBj
b25mdXNhYmlsaXR5IHRlc3Q7IGFuZCB0aGUgZm9sbG93aW5nIGxpbmUgZXh0cmFjdHMgdGhlIHJl
c3VsdCBvdXQgb2YgdGhlIHJldHVybiB2YWx1ZS4gRm9yIGJlc3QgcGVyZm9ybWFuY2UsCisgKiB0
aGUgaW5zdGFuY2Ugc2hvdWxkIGJlIGNyZWF0ZWQgb25jZSAoZS5nLiwgdXBvbiBhcHBsaWNhdGlv
biBzdGFydHVwKSwgYW5kIHRoZSBlZmZpY2llbnQKKyAqIHtAbGluayB1c3Bvb2ZfYXJlQ29uZnVz
YWJsZX0gbWV0aG9kIGNhbiBiZSB1c2VkIGF0IHJ1bnRpbWUuCisgKgorICogPHA+CisgKiBUaGUg
dHlwZSB7QGxpbmsgTG9jYWxVU3Bvb2ZDaGVja2VyUG9pbnRlcn0gaXMgZXhwb3NlZCBmb3IgQysr
IHByb2dyYW1tZXJzLiAgSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGNhbGwKKyAqIHtAbGluayB1c3Bv
b2ZfY2xvc2V9IHdoZW4gdGhlIG9iamVjdCBnb2VzIG91dCBvZiBzY29wZToKKyAqCisgKiBcY29k
ZXsuY3BwfQorICogVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgKiBMb2NhbFVT
cG9vZkNoZWNrZXJQb2ludGVyIHNjKHVzcG9vZl9vcGVuKCZzdGF0dXMpKTsKKyAqIHVzcG9vZl9z
ZXRDaGVja3Moc2MuZ2V0QWxpYXMoKSwgVVNQT09GX0NPTkZVU0FCTEUsICZzdGF0dXMpOworICog
Ly8gLi4uCisgKiBcZW5kY29kZQorICoKKyAqIDxwPgorICogVVRTIDM5IGRlZmluZXMgdHdvIHN0
cmluZ3MgdG8gYmUgPGVtPmNvbmZ1c2FibGU8L2VtPiBpZiB0aGV5IG1hcCB0byB0aGUgc2FtZSA8
ZW0+c2tlbGV0b24gc3RyaW5nPC9lbT4uIEEgc2tlbGV0b24gY2FuCisgKiBiZSB0aG91Z2h0IG9m
IGFzIGEgImhhc2ggY29kZSIuIHtAbGluayB1c3Bvb2ZfZ2V0U2tlbGV0b259IGNvbXB1dGVzIHRo
ZSBza2VsZXRvbiBmb3IgYSBwYXJ0aWN1bGFyIHN0cmluZywgc28KKyAqIHRoZSBmb2xsb3dpbmcg
c25pcHBldCBpcyBlcXVpdmFsZW50IHRvIHRoZSBleGFtcGxlIGFib3ZlOgorICoKKyAqIFxjb2Rl
ey5jfQorICogVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgKiBVQ2hhciogc3Ry
MSA9IChVQ2hhciopIHUiSGFydmVzdCI7CisgKiBVQ2hhciogc3RyMiA9IChVQ2hhciopIHUiXHUw
Mzk3YXJ2ZXN0IjsgIC8vIHdpdGggVSswMzk3IEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQQorICoK
KyAqIFVTcG9vZkNoZWNrZXIqIHNjID0gdXNwb29mX29wZW4oJnN0YXR1cyk7CisgKiB1c3Bvb2Zf
c2V0Q2hlY2tzKHNjLCBVU1BPT0ZfQ09ORlVTQUJMRSwgJnN0YXR1cyk7CisgKgorICogLy8gR2V0
IHNrZWxldG9uIDEKKyAqIGludDMyX3Qgc2tlbDFMZW4gPSB1c3Bvb2ZfZ2V0U2tlbGV0b24oc2Ms
IDAsIHN0cjEsIC0xLCBOVUxMLCAwLCAmc3RhdHVzKTsKKyAqIFVDaGFyKiBza2VsMSA9IChVQ2hh
ciopIG1hbGxvYygrK3NrZWwxTGVuICogc2l6ZW9mKFVDaGFyKSk7CisgKiBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisgKiB1c3Bvb2ZfZ2V0U2tlbGV0b24oc2MsIDAsIHN0cjEsIC0xLCBza2VsMSwg
c2tlbDFMZW4sICZzdGF0dXMpOworICoKKyAqIC8vIEdldCBza2VsZXRvbiAyCisgKiBpbnQzMl90
IHNrZWwyTGVuID0gdXNwb29mX2dldFNrZWxldG9uKHNjLCAwLCBzdHIyLCAtMSwgTlVMTCwgMCwg
JnN0YXR1cyk7CisgKiBVQ2hhciogc2tlbDIgPSAoVUNoYXIqKSBtYWxsb2MoKytza2VsMkxlbiAq
IHNpemVvZihVQ2hhcikpOworICogc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICogdXNwb29mX2dl
dFNrZWxldG9uKHNjLCAwLCBzdHIyLCAtMSwgc2tlbDIsIHNrZWwyTGVuLCAmc3RhdHVzKTsKKyAq
CisgKiAvLyBBcmUgdGhlIHNrZWxldG9ucyB0aGUgc2FtZT8KKyAqIFVCb29sIHJlc3VsdCA9IHVf
c3RyY21wKHNrZWwxLCBza2VsMikgPT0gMDsKKyAqIC8vIGFyZUNvbmZ1c2FibGU6IDEgKHN0YXR1
czogVV9aRVJPX0VSUk9SKQorICogcHJpbnRmKCJhcmVDb25mdXNhYmxlOiAlZCAoc3RhdHVzOiAl
cylcbiIsIHJlc3VsdCwgdV9lcnJvck5hbWUoc3RhdHVzKSk7CisgKiB1c3Bvb2ZfY2xvc2Uoc2Mp
OworICogZnJlZShza2VsMSk7CisgKiBmcmVlKHNrZWwyKTsKKyAqIFxlbmRjb2RlCisgKgorICog
PHA+CisgKiBJZiB5b3UgbmVlZCB0byBjaGVjayBpZiBhIHN0cmluZyBpcyBjb25mdXNhYmxlIHdp
dGggYW55IHN0cmluZyBpbiBhIGRpY3Rpb25hcnkgb2YgbWFueSBzdHJpbmdzLCByYXRoZXIgdGhh
biBjYWxsaW5nCisgKiB7QGxpbmsgdXNwb29mX2FyZUNvbmZ1c2FibGV9IG1hbnkgdGltZXMgaW4g
YSBsb29wLCB7QGxpbmsgdXNwb29mX2dldFNrZWxldG9ufSBjYW4gYmUgdXNlZCBpbnN0ZWFkLCBh
cyBzaG93biBiZWxvdzoKKyAqCisgKiBcY29kZXsuY30KKyAqIFVFcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICogI2RlZmluZSBESUNUSU9OQVJZX0xFTkdUSCAyCisgKiBVQ2hhciog
ZGljdGlvbmFyeVtESUNUSU9OQVJZX0xFTkdUSF0gPSB7IChVQ2hhciopIHUibG9yZW0iLCAoVUNo
YXIqKSB1Imlwc3VtIiB9OworICogVUNoYXIqIHNrZWxldG9uc1tESUNUSU9OQVJZX0xFTkdUSF07
CisgKiBVQ2hhciogc3RyID0gKFVDaGFyKikgdSIxb3Jlcm4iOworICoKKyAqIC8vIFNldHVwOgor
ICogVVNwb29mQ2hlY2tlciogc2MgPSB1c3Bvb2Zfb3Blbigmc3RhdHVzKTsKKyAqIHVzcG9vZl9z
ZXRDaGVja3Moc2MsIFVTUE9PRl9DT05GVVNBQkxFLCAmc3RhdHVzKTsKKyAqIGZvciAoc2l6ZV90
IGk9MDsgaTxESUNUSU9OQVJZX0xFTkdUSDsgaSsrKSB7CisgKiAgICAgVUNoYXIqIHdvcmQgPSBk
aWN0aW9uYXJ5W2ldOworICogICAgIGludDMyX3QgbGVuID0gdXNwb29mX2dldFNrZWxldG9uKHNj
LCAwLCB3b3JkLCAtMSwgTlVMTCwgMCwgJnN0YXR1cyk7CisgKiAgICAgc2tlbGV0b25zW2ldID0g
KFVDaGFyKikgbWFsbG9jKCsrbGVuICogc2l6ZW9mKFVDaGFyKSk7CisgKiAgICAgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICogICAgIHVzcG9vZl9nZXRTa2VsZXRvbihzYywgMCwgd29yZCwgLTEs
IHNrZWxldG9uc1tpXSwgbGVuLCAmc3RhdHVzKTsKKyAqIH0KKyAqCisgKiAvLyBMaXZlIENoZWNr
OgorICogeworICogICAgIGludDMyX3QgbGVuID0gdXNwb29mX2dldFNrZWxldG9uKHNjLCAwLCBz
dHIsIC0xLCBOVUxMLCAwLCAmc3RhdHVzKTsKKyAqICAgICBVQ2hhciogc2tlbCA9IChVQ2hhciop
IG1hbGxvYygrK2xlbiAqIHNpemVvZihVQ2hhcikpOworICogICAgIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKKyAqICAgICB1c3Bvb2ZfZ2V0U2tlbGV0b24oc2MsIDAsIHN0ciwgLTEsIHNrZWwsIGxl
biwgJnN0YXR1cyk7CisgKiAgICAgVUJvb2wgcmVzdWx0ID0gRkFMU0U7CisgKiAgICAgZm9yIChz
aXplX3QgaT0wOyBpPERJQ1RJT05BUllfTEVOR1RIOyBpKyspIHsKKyAqICAgICAgICAgcmVzdWx0
ID0gdV9zdHJjbXAoc2tlbCwgc2tlbGV0b25zW2ldKSA9PSAwOworICogICAgICAgICBpZiAocmVz
dWx0ID09IFRSVUUpIHsgYnJlYWs7IH0KKyAqICAgICB9CisgKiAgICAgLy8gSGFzIGNvbmZ1c2Fi
bGUgaW4gZGljdGlvbmFyeTogMSAoc3RhdHVzOiBVX1pFUk9fRVJST1IpCisgKiAgICAgcHJpbnRm
KCJIYXMgY29uZnVzYWJsZSBpbiBkaWN0aW9uYXJ5OiAlZCAoc3RhdHVzOiAlcylcbiIsIHJlc3Vs
dCwgdV9lcnJvck5hbWUoc3RhdHVzKSk7CisgKiAgICAgZnJlZShza2VsKTsKKyAqIH0KKyAqCisg
KiBmb3IgKHNpemVfdCBpPTA7IGk8RElDVElPTkFSWV9MRU5HVEg7IGkrKykgeworICogICAgIGZy
ZWUoc2tlbGV0b25zW2ldKTsKKyAqIH0KKyAqIHVzcG9vZl9jbG9zZShzYyk7CisgKiBcZW5kY29k
ZQorICoKKyAqIDxwPgorICogPGI+Tm90ZTo8L2I+IFNpbmNlIHRoZSBVbmljb2RlIGNvbmZ1c2Fi
bGVzIG1hcHBpbmcgdGFibGUgaXMgZnJlcXVlbnRseSB1cGRhdGVkLCBjb25mdXNhYmxlIHNrZWxl
dG9ucyBhcmUgPGVtPm5vdDwvZW0+CisgKiBndWFyYW50ZWVkIHRvIGJlIHRoZSBzYW1lIGJldHdl
ZW4gSUNVIHJlbGVhc2VzLiBXZSB0aGVyZWZvcmUgcmVjb21tZW5kIHRoYXQgeW91IGFsd2F5cyBj
b21wdXRlIGNvbmZ1c2FibGUgc2tlbGV0b25zCisgKiBhdCBydW50aW1lIGFuZCBkbyBub3QgcmVs
eSBvbiBjcmVhdGluZyBhIHBlcm1hbmVudCwgb3IgZGlmZmljdWx0IHRvIHVwZGF0ZSwgZGF0YWJh
c2Ugb2Ygc2tlbGV0b25zLgorICoKKyAqIDxoMj5TcG9vZiBEZXRlY3Rpb248L2gyPgorICoKKyAq
IDxwPgorICogVGhlIGZvbGxvd2luZyBzbmlwcGV0IHNob3dzIGEgbWluaW1hbCBleGFtcGxlIG9m
IHVzaW5nIDxjb2RlPlVTcG9vZkNoZWNrZXI8L2NvZGU+IHRvIHBlcmZvcm0gc3Bvb2YgZGV0ZWN0
aW9uIG9uIGEKKyAqIHN0cmluZzoKKyAqCisgKiBcY29kZXsuY30KKyAqIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICogVUNoYXIqIHN0ciA9IChVQ2hhciopIHUicFx1MDQzMHlw
YWwiOyAgLy8gd2l0aCBVKzA0MzAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAqCisgKiAvLyBH
ZXQgdGhlIGRlZmF1bHQgc2V0IG9mIGFsbG93YWJsZSBjaGFyYWN0ZXJzOgorICogVVNldCogYWxs
b3dlZCA9IHVzZXRfb3BlbkVtcHR5KCk7CisgKiB1c2V0X2FkZEFsbChhbGxvd2VkLCB1c3Bvb2Zf
Z2V0UmVjb21tZW5kZWRTZXQoJnN0YXR1cykpOworICogdXNldF9hZGRBbGwoYWxsb3dlZCwgdXNw
b29mX2dldEluY2x1c2lvblNldCgmc3RhdHVzKSk7CisgKgorICogVVNwb29mQ2hlY2tlciogc2Mg
PSB1c3Bvb2Zfb3Blbigmc3RhdHVzKTsKKyAqIHVzcG9vZl9zZXRBbGxvd2VkQ2hhcnMoc2MsIGFs
bG93ZWQsICZzdGF0dXMpOworICogdXNwb29mX3NldFJlc3RyaWN0aW9uTGV2ZWwoc2MsIFVTUE9P
Rl9NT0RFUkFURUxZX1JFU1RSSUNUSVZFKTsKKyAqCisgKiBpbnQzMl90IGJpdG1hc2sgPSB1c3Bv
b2ZfY2hlY2soc2MsIHN0ciwgLTEsIE5VTEwsICZzdGF0dXMpOworICogVUJvb2wgcmVzdWx0ID0g
Yml0bWFzayAhPSAwOworICogLy8gZmFpbHMgY2hlY2tzOiAxIChzdGF0dXM6IFVfWkVST19FUlJP
UikKKyAqIHByaW50ZigiZmFpbHMgY2hlY2tzOiAlZCAoc3RhdHVzOiAlcylcbiIsIHJlc3VsdCwg
dV9lcnJvck5hbWUoc3RhdHVzKSk7CisgKiB1c3Bvb2ZfY2xvc2Uoc2MpOworICogdXNldF9jbG9z
ZShhbGxvd2VkKTsKKyAqIFxlbmRjb2RlCisgKgorICogPHA+CisgKiBBcyBpbiB0aGUgY2FzZSBm
b3IgY29uZnVzYWJpbGl0eSBjaGVja2luZywgaXQgaXMgZ29vZCBwcmFjdGljZSB0byBjcmVhdGUg
b25lIDxjb2RlPlVTcG9vZkNoZWNrZXI8L2NvZGU+IGluc3RhbmNlIGF0CisgKiBzdGFydHVwLCBh
bmQgY2FsbCB0aGUgY2hlYXBlciB7QGxpbmsgdXNwb29mX2NoZWNrfSBvbmxpbmUuIFdlIHNwZWNp
ZnkgdGhlIHNldCBvZgorICogYWxsb3dlZCBjaGFyYWN0ZXJzIHRvIGJlIHRob3NlIHdpdGggdHlw
ZSBSRUNPTU1FTkRFRCBvciBJTkNMVVNJT04sIGFjY29yZGluZyB0byB0aGUgcmVjb21tZW5kYXRp
b24gaW4gVVRTIDM5LgorICoKKyAqIDxwPgorICogSW4gYWRkaXRpb24gdG8ge0BsaW5rIHVzcG9v
Zl9jaGVja30sIHRoZSBmdW5jdGlvbiB7QGxpbmsgdXNwb29mX2NoZWNrVVRGOH0gaXMgZXhwb3Nl
ZCBmb3IgVVRGOC1lbmNvZGVkIGNoYXIqIHN0cmluZ3MsCisgKiBhbmQge0BsaW5rIHVzcG9vZl9j
aGVja1VuaWNvZGVTdHJpbmd9IGlzIGV4cG9zZWQgZm9yIEMrKyBwcm9ncmFtbWVycy4KKyAqCisg
KiA8cD4KKyAqIElmIHRoZSB7QGxpbmsgVVNQT09GX0FVWF9JTkZPfSBjaGVjayBpcyBlbmFibGVk
LCBhIGxpbWl0ZWQgYW1vdW50IG9mIGluZm9ybWF0aW9uIG9uIHdoeSBhIHN0cmluZyBmYWlsZWQg
dGhlIGNoZWNrcworICogaXMgYXZhaWxhYmxlIGluIHRoZSByZXR1cm5lZCBiaXRtYXNrLiAgRm9y
IGNvbXBsZXRlIGluZm9ybWF0aW9uLCB1c2UgdGhlIHtAbGluayB1c3Bvb2ZfY2hlY2syfSBjbGFz
cyBvZiBmdW5jdGlvbnMKKyAqIHdpdGggYSB7QGxpbmsgVVNwb29mQ2hlY2tSZXN1bHR9IHBhcmFt
ZXRlcjoKKyAqCisgKiBcY29kZXsuY30KKyAqIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICogVUNoYXIqIHN0ciA9IChVQ2hhciopIHUicFx1MDQzMHlwYWwiOyAgLy8gd2l0aCBV
KzA0MzAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAqCisgKiAvLyBHZXQgdGhlIGRlZmF1bHQg
c2V0IG9mIGFsbG93YWJsZSBjaGFyYWN0ZXJzOgorICogVVNldCogYWxsb3dlZCA9IHVzZXRfb3Bl
bkVtcHR5KCk7CisgKiB1c2V0X2FkZEFsbChhbGxvd2VkLCB1c3Bvb2ZfZ2V0UmVjb21tZW5kZWRT
ZXQoJnN0YXR1cykpOworICogdXNldF9hZGRBbGwoYWxsb3dlZCwgdXNwb29mX2dldEluY2x1c2lv
blNldCgmc3RhdHVzKSk7CisgKgorICogVVNwb29mQ2hlY2tlciogc2MgPSB1c3Bvb2Zfb3Blbigm
c3RhdHVzKTsKKyAqIHVzcG9vZl9zZXRBbGxvd2VkQ2hhcnMoc2MsIGFsbG93ZWQsICZzdGF0dXMp
OworICogdXNwb29mX3NldFJlc3RyaWN0aW9uTGV2ZWwoc2MsIFVTUE9PRl9NT0RFUkFURUxZX1JF
U1RSSUNUSVZFKTsKKyAqCisgKiBVU3Bvb2ZDaGVja1Jlc3VsdCogY2hlY2tSZXN1bHQgPSB1c3Bv
b2Zfb3BlbkNoZWNrUmVzdWx0KCZzdGF0dXMpOworICogaW50MzJfdCBiaXRtYXNrID0gdXNwb29m
X2NoZWNrMihzYywgc3RyLCAtMSwgY2hlY2tSZXN1bHQsICZzdGF0dXMpOworICoKKyAqIGludDMy
X3QgZmFpbHVyZXMxID0gYml0bWFzazsKKyAqIGludDMyX3QgZmFpbHVyZXMyID0gdXNwb29mX2dl
dENoZWNrUmVzdWx0Q2hlY2tzKGNoZWNrUmVzdWx0LCAmc3RhdHVzKTsKKyAqIGFzc2VydChmYWls
dXJlczEgPT0gZmFpbHVyZXMyKTsKKyAqIC8vIGNoZWNrcyB0aGF0IGZhaWxlZDogMHgwMDAwMDAx
MCAoc3RhdHVzOiBVX1pFUk9fRVJST1IpCisgKiBwcmludGYoImNoZWNrcyB0aGF0IGZhaWxlZDog
JSMwMTB4IChzdGF0dXM6ICVzKVxuIiwgZmFpbHVyZXMxLCB1X2Vycm9yTmFtZShzdGF0dXMpKTsK
KyAqCisgKiAvLyBDbGVhbnVwOgorICogdXNwb29mX2Nsb3NlKHNjKTsKKyAqIHVzZXRfY2xvc2Uo
YWxsb3dlZCk7CisgKiB1c3Bvb2ZfY2xvc2VDaGVja1Jlc3VsdChjaGVja1Jlc3VsdCk7CisgKiBc
ZW5kY29kZQorICoKKyAqIEMrKyB1c2VycyBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgYSBmZXcgc3lu
dGFjdGljYWwgY29udmVuaWVuY2VzLiAgVGhlIGZvbGxvd2luZyBzbmlwcGV0IGlzIGZ1bmN0aW9u
YWxseQorICogZXF1aXZhbGVudCB0byB0aGUgb25lIGFib3ZlOgorICoKKyAqIFxjb2Rley5jcHB9
CisgKiBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAqIFVuaWNvZGVTdHJpbmcg
c3RyKChVQ2hhciopIHUicFx1MDQzMHlwYWwiKTsgIC8vIHdpdGggVSswNDMwIENZUklMTElDIFNN
QUxMIExFVFRFUiBBCisgKgorICogLy8gR2V0IHRoZSBkZWZhdWx0IHNldCBvZiBhbGxvd2FibGUg
Y2hhcmFjdGVyczoKKyAqIFVuaWNvZGVTZXQgYWxsb3dlZDsKKyAqIGFsbG93ZWQuYWRkQWxsKCp1
c3Bvb2ZfZ2V0UmVjb21tZW5kZWRVbmljb2RlU2V0KCZzdGF0dXMpKTsKKyAqIGFsbG93ZWQuYWRk
QWxsKCp1c3Bvb2ZfZ2V0SW5jbHVzaW9uVW5pY29kZVNldCgmc3RhdHVzKSk7CisgKgorICogTG9j
YWxVU3Bvb2ZDaGVja2VyUG9pbnRlciBzYyh1c3Bvb2Zfb3Blbigmc3RhdHVzKSk7CisgKiB1c3Bv
b2Zfc2V0QWxsb3dlZENoYXJzKHNjLmdldEFsaWFzKCksIGFsbG93ZWQudG9VU2V0KCksICZzdGF0
dXMpOworICogdXNwb29mX3NldFJlc3RyaWN0aW9uTGV2ZWwoc2MuZ2V0QWxpYXMoKSwgVVNQT09G
X01PREVSQVRFTFlfUkVTVFJJQ1RJVkUpOworICoKKyAqIExvY2FsVVNwb29mQ2hlY2tSZXN1bHRQ
b2ludGVyIGNoZWNrUmVzdWx0KHVzcG9vZl9vcGVuQ2hlY2tSZXN1bHQoJnN0YXR1cykpOworICog
aW50MzJfdCBiaXRtYXNrID0gdXNwb29mX2NoZWNrMlVuaWNvZGVTdHJpbmcoc2MuZ2V0QWxpYXMo
KSwgc3RyLCBjaGVja1Jlc3VsdC5nZXRBbGlhcygpLCAmc3RhdHVzKTsKKyAqCisgKiBpbnQzMl90
IGZhaWx1cmVzMSA9IGJpdG1hc2s7CisgKiBpbnQzMl90IGZhaWx1cmVzMiA9IHVzcG9vZl9nZXRD
aGVja1Jlc3VsdENoZWNrcyhjaGVja1Jlc3VsdC5nZXRBbGlhcygpLCAmc3RhdHVzKTsKKyAqIGFz
c2VydChmYWlsdXJlczEgPT0gZmFpbHVyZXMyKTsKKyAqIC8vIGNoZWNrcyB0aGF0IGZhaWxlZDog
MHgwMDAwMDAxMCAoc3RhdHVzOiBVX1pFUk9fRVJST1IpCisgKiBwcmludGYoImNoZWNrcyB0aGF0
IGZhaWxlZDogJSMwMTB4IChzdGF0dXM6ICVzKVxuIiwgZmFpbHVyZXMxLCB1X2Vycm9yTmFtZShz
dGF0dXMpKTsKKyAqCisgKiAvLyBFeHBsaWNpdCBjbGVhbnVwIG5vdCBuZWNlc3NhcnkuCisgKiBc
ZW5kY29kZQorICoKKyAqIDxwPgorICogVGhlIHJldHVybiB2YWx1ZSBpcyBhIGJpdG1hc2sgb2Yg
dGhlIGNoZWNrcyB0aGF0IGZhaWxlZC4gSW4gdGhpcyBjYXNlLCB0aGVyZSB3YXMgb25lIGNoZWNr
IHRoYXQgZmFpbGVkOgorICoge0BsaW5rIFVTUE9PRl9SRVNUUklDVElPTl9MRVZFTH0sIGNvcnJl
c3BvbmRpbmcgdG8gdGhlIGZpZnRoIGJpdCAoMTYpLiBUaGUgcG9zc2libGUgY2hlY2tzIGFyZToK
KyAqCisgKiA8dWw+CisgKiA8bGk+PGNvZGU+UkVTVFJJQ1RJT05fTEVWRUw8L2NvZGU+OiBmbGFn
cyBzdHJpbmdzIHRoYXQgdmlvbGF0ZSB0aGUKKyAqIDxhIGhyZWY9Imh0dHA6Ly91bmljb2RlLm9y
Zy9yZXBvcnRzL3RyMzkvI1Jlc3RyaWN0aW9uX0xldmVsX0RldGVjdGlvbiI+UmVzdHJpY3Rpb24g
TGV2ZWw8L2E+IHRlc3QgYXMgc3BlY2lmaWVkIGluIFVUUworICogMzk7IGluIG1vc3QgY2FzZXMs
IHRoaXMgbWVhbnMgZmxhZ2dpbmcgc3RyaW5ncyB0aGF0IGNvbnRhaW4gY2hhcmFjdGVycyBmcm9t
IG11bHRpcGxlIGRpZmZlcmVudCBzY3JpcHRzLjwvbGk+CisgKiA8bGk+PGNvZGU+SU5WSVNJQkxF
PC9jb2RlPjogZmxhZ3Mgc3RyaW5ncyB0aGF0IGNvbnRhaW4gaW52aXNpYmxlIGNoYXJhY3RlcnMs
IHN1Y2ggYXMgemVyby13aWR0aCBzcGFjZXMsIG9yIGNoYXJhY3RlcgorICogc2VxdWVuY2VzIHRo
YXQgYXJlIGxpa2VseSBub3QgdG8gZGlzcGxheSwgc3VjaCBhcyBtdWx0aXBsZSBvY2N1cnJlbmNl
cyBvZiB0aGUgc2FtZSBub24tc3BhY2luZyBtYXJrLjwvbGk+CisgKiA8bGk+PGNvZGU+Q0hBUl9M
SU1JVDwvY29kZT46IGZsYWdzIHN0cmluZ3MgdGhhdCBjb250YWluIGNoYXJhY3RlcnMgb3V0c2lk
ZSBvZiBhIHNwZWNpZmllZCBzZXQgb2YgYWNjZXB0YWJsZQorICogY2hhcmFjdGVycy4gU2VlIHtA
bGluayB1c3Bvb2Zfc2V0QWxsb3dlZENoYXJzfSBhbmQge0BsaW5rIHVzcG9vZl9zZXRBbGxvd2Vk
TG9jYWxlc30uPC9saT4KKyAqIDxsaT48Y29kZT5NSVhFRF9OVU1CRVJTPC9jb2RlPjogZmxhZ3Mg
c3RyaW5ncyB0aGF0IGNvbnRhaW4gZGlnaXRzIGZyb20gbXVsdGlwbGUgZGlmZmVyZW50IG51bWJl
cmluZyBzeXN0ZW1zLjwvbGk+CisgKiA8L3VsPgorICoKKyAqIDxwPgorICogVGhlc2UgY2hlY2tz
IGNhbiBiZSBlbmFibGVkIGluZGVwZW5kZW50bHkgb2YgZWFjaCBvdGhlci4gRm9yIGV4YW1wbGUs
IGlmIHlvdSB3ZXJlIGludGVyZXN0ZWQgaW4gY2hlY2tpbmcgZm9yIG9ubHkgdGhlCisgKiBJTlZJ
U0lCTEUgYW5kIE1JWEVEX05VTUJFUlMgY29uZGl0aW9ucywgeW91IGNvdWxkIGRvOgorICoKKyAq
IFxjb2Rley5jfQorICogVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgKiBVQ2hh
ciogc3RyID0gKFVDaGFyKikgdSI4XHUwOUVBIjsgIC8vIDggbWl4ZWQgd2l0aCBVKzA5RUEgQkVO
R0FMSSBESUdJVCBGT1VSCisgKgorICogVVNwb29mQ2hlY2tlciogc2MgPSB1c3Bvb2Zfb3Blbigm
c3RhdHVzKTsKKyAqIHVzcG9vZl9zZXRDaGVja3Moc2MsIFVTUE9PRl9JTlZJU0lCTEUgfCBVU1BP
T0ZfTUlYRURfTlVNQkVSUywgJnN0YXR1cyk7CisgKgorICogaW50MzJfdCBiaXRtYXNrID0gdXNw
b29mX2NoZWNrMihzYywgc3RyLCAtMSwgTlVMTCwgJnN0YXR1cyk7CisgKiBVQm9vbCByZXN1bHQg
PSBiaXRtYXNrICE9IDA7CisgKiAvLyBmYWlscyBjaGVja3M6IDEgKHN0YXR1czogVV9aRVJPX0VS
Uk9SKQorICogcHJpbnRmKCJmYWlscyBjaGVja3M6ICVkIChzdGF0dXM6ICVzKVxuIiwgcmVzdWx0
LCB1X2Vycm9yTmFtZShzdGF0dXMpKTsKKyAqIHVzcG9vZl9jbG9zZShzYyk7CisgKiBcZW5kY29k
ZQorICoKKyAqIDxwPgorICogSGVyZSBpcyBhbiBleGFtcGxlIGluIEMrKyBzaG93aW5nIGhvdyB0
byBjb21wdXRlIHRoZSByZXN0cmljdGlvbiBsZXZlbCBvZiBhIHN0cmluZzoKKyAqCisgKiBcY29k
ZXsuY3BwfQorICogVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgKiBVbmljb2Rl
U3RyaW5nIHN0cigoVUNoYXIqKSB1InBcdTA0MzB5cGFsIik7ICAvLyB3aXRoIFUrMDQzMCBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgQQorICoKKyAqIC8vIEdldCB0aGUgZGVmYXVsdCBzZXQgb2YgYWxs
b3dhYmxlIGNoYXJhY3RlcnM6CisgKiBVbmljb2RlU2V0IGFsbG93ZWQ7CisgKiBhbGxvd2VkLmFk
ZEFsbCgqdXNwb29mX2dldFJlY29tbWVuZGVkVW5pY29kZVNldCgmc3RhdHVzKSk7CisgKiBhbGxv
d2VkLmFkZEFsbCgqdXNwb29mX2dldEluY2x1c2lvblVuaWNvZGVTZXQoJnN0YXR1cykpOworICoK
KyAqIExvY2FsVVNwb29mQ2hlY2tlclBvaW50ZXIgc2ModXNwb29mX29wZW4oJnN0YXR1cykpOwor
ICogdXNwb29mX3NldEFsbG93ZWRDaGFycyhzYy5nZXRBbGlhcygpLCBhbGxvd2VkLnRvVVNldCgp
LCAmc3RhdHVzKTsKKyAqIHVzcG9vZl9zZXRSZXN0cmljdGlvbkxldmVsKHNjLmdldEFsaWFzKCks
IFVTUE9PRl9NT0RFUkFURUxZX1JFU1RSSUNUSVZFKTsKKyAqIHVzcG9vZl9zZXRDaGVja3Moc2Mu
Z2V0QWxpYXMoKSwgVVNQT09GX1JFU1RSSUNUSU9OX0xFVkVMIHwgVVNQT09GX0FVWF9JTkZPLCAm
c3RhdHVzKTsKKyAqCisgKiBMb2NhbFVTcG9vZkNoZWNrUmVzdWx0UG9pbnRlciBjaGVja1Jlc3Vs
dCh1c3Bvb2Zfb3BlbkNoZWNrUmVzdWx0KCZzdGF0dXMpKTsKKyAqIGludDMyX3QgYml0bWFzayA9
IHVzcG9vZl9jaGVjazJVbmljb2RlU3RyaW5nKHNjLmdldEFsaWFzKCksIHN0ciwgY2hlY2tSZXN1
bHQuZ2V0QWxpYXMoKSwgJnN0YXR1cyk7CisgKgorICogVVJlc3RyaWN0aW9uTGV2ZWwgcmVzdHJp
Y3Rpb25MZXZlbCA9IHVzcG9vZl9nZXRDaGVja1Jlc3VsdFJlc3RyaWN0aW9uTGV2ZWwoY2hlY2tS
ZXN1bHQuZ2V0QWxpYXMoKSwgJnN0YXR1cyk7CisgKiAvLyBTaW5jZSBVU1BPT0ZfQVVYX0lORk8g
d2FzIGVuYWJsZWQsIHRoZSByZXN0cmljdGlvbiBsZXZlbCBpcyBhbHNvIGF2YWlsYWJsZSBpbiB0
aGUgdXBwZXIgYml0cyBvZiB0aGUgYml0bWFzazoKKyAqIGFzc2VydCgocmVzdHJpY3Rpb25MZXZl
bCAmIGJpdG1hc2spID09IHJlc3RyaWN0aW9uTGV2ZWwpOworICogLy8gUmVzdHJpY3Rpb24gbGV2
ZWw6IDB4NTAwMDAwMDAgKHN0YXR1czogVV9aRVJPX0VSUk9SKQorICogcHJpbnRmKCJSZXN0cmlj
dGlvbiBsZXZlbDogJSMwMTB4IChzdGF0dXM6ICVzKVxuIiwgcmVzdHJpY3Rpb25MZXZlbCwgdV9l
cnJvck5hbWUoc3RhdHVzKSk7CisgKiBcZW5kY29kZQorICoKKyAqIDxwPgorICogVGhlIGNvZGUg
JzB4NTAwMDAwMDAnIGNvcnJlc3BvbmRzIHRvIHRoZSByZXN0cmljdGlvbiBsZXZlbCBVU1BPT0Zf
TUlOSU1BTExZX1JFU1RSSUNUSVZFLiAgU2luY2UKKyAqIFVTUE9PRl9NSU5JTUFMTFlfUkVTVFJJ
Q1RJVkUgaXMgd2Vha2VyIHRoYW4gVVNQT09GX01PREVSQVRFTFlfUkVTVFJJQ1RJVkUsIHRoZSBz
dHJpbmcgZmFpbHMgdGhlIGNoZWNrLgorICoKKyAqIDxwPgorICogPGI+Tm90ZTo8L2I+IFRoZSBS
ZXN0cmljdGlvbiBMZXZlbCBpcyB0aGUgbW9zdCBwb3dlcmZ1bCBvZiB0aGUgY2hlY2tzLiBUaGUg
ZnVsbCBsb2dpYyBpcyBkb2N1bWVudGVkIGluCisgKiA8YSBocmVmPSJodHRwOi8vdW5pY29kZS5v
cmcvcmVwb3J0cy90cjM5LyNSZXN0cmljdGlvbl9MZXZlbF9EZXRlY3Rpb24iPlVUUyAzOTwvYT4s
IGJ1dCB0aGUgYmFzaWMgaWRlYSBpcyB0aGF0IHN0cmluZ3MKKyAqIGFyZSByZXN0cmljdGVkIHRv
IGNvbnRhaW4gY2hhcmFjdGVycyBmcm9tIG9ubHkgYSBzaW5nbGUgc2NyaXB0LCA8ZW0+ZXhjZXB0
PC9lbT4gdGhhdCBtb3N0IHNjcmlwdHMgYXJlIGFsbG93ZWQgdG8gaGF2ZQorICogTGF0aW4gY2hh
cmFjdGVycyBpbnRlcnNwZXJzZWQuIEFsdGhvdWdoIHRoZSBkZWZhdWx0IHJlc3RyaWN0aW9uIGxl
dmVsIGlzIDxjb2RlPkhJR0hMWV9SRVNUUklDVElWRTwvY29kZT4sIGl0IGlzCisgKiByZWNvbW1l
bmRlZCB0aGF0IHVzZXJzIHNldCB0aGVpciByZXN0cmljdGlvbiBsZXZlbCB0byA8Y29kZT5NT0RF
UkFURUxZX1JFU1RSSUNUSVZFPC9jb2RlPiwgd2hpY2ggYWxsb3dzIExhdGluIG1peGVkCisgKiB3
aXRoIGFsbCBvdGhlciBzY3JpcHRzIGV4Y2VwdCBDeXJpbGxpYywgR3JlZWssIGFuZCBDaGVyb2tl
ZSwgd2l0aCB3aGljaCBpdCBpcyBvZnRlbiBjb25mdXNhYmxlLiBGb3IgbW9yZSBkZXRhaWxzIG9u
CisgKiB0aGUgbGV2ZWxzLCBzZWUgVVRTIDM5IG9yIHtAbGluayBVUmVzdHJpY3Rpb25MZXZlbH0u
IFRoZSBSZXN0cmljdGlvbiBMZXZlbCB0ZXN0IGlzIGF3YXJlIG9mIHRoZSBzZXQgb2YKKyAqIGFs
bG93ZWQgY2hhcmFjdGVycyBzZXQgaW4ge0BsaW5rIHVzcG9vZl9zZXRBbGxvd2VkQ2hhcnN9LiBO
b3RlIHRoYXQgY2hhcmFjdGVycyB3aGljaCBoYXZlIHNjcmlwdCBjb2RlCisgKiBDT01NT04gb3Ig
SU5IRVJJVEVELCBzdWNoIGFzIG51bWJlcnMgYW5kIHB1bmN0dWF0aW9uLCBhcmUgaWdub3JlZCB3
aGVuIGNvbXB1dGluZyB3aGV0aGVyIGEgc3RyaW5nIGhhcyBtdWx0aXBsZQorICogc2NyaXB0cy4K
KyAqCisgKiA8aDI+QWRkaXRpb25hbCBJbmZvcm1hdGlvbjwvaDI+CisgKgorICogPHA+CisgKiBB
IDxjb2RlPlVTcG9vZkNoZWNrZXI8L2NvZGU+IGluc3RhbmNlIG1heSBiZSB1c2VkIHJlcGVhdGVk
bHkgdG8gcGVyZm9ybSBjaGVja3Mgb24gYW55IG51bWJlciBvZiBpZGVudGlmaWVycy4KKyAqCisg
KiA8cD4KKyAqIDxiPlRocmVhZCBTYWZldHk6PC9iPiBUaGUgdGVzdCBmdW5jdGlvbnMgZm9yIGNo
ZWNraW5nIGEgc2luZ2xlIGlkZW50aWZpZXIsIG9yIGZvciB0ZXN0aW5nIHdoZXRoZXIKKyAqIHR3
byBpZGVudGlmaWVycyBhcmUgcG9zc2libGUgY29uZnVzYWJsZSwgYXJlIHRocmVhZCBzYWZlLiBU
aGV5IG1heSBjYWxsZWQgY29uY3VycmVudGx5LCBmcm9tIG11bHRpcGxlIHRocmVhZHMsCisgKiB1
c2luZyB0aGUgc2FtZSBVU3Bvb2ZDaGVja2VyIGluc3RhbmNlLgorICoKKyAqIDxwPgorICogTW9y
ZSBnZW5lcmFsbHksIHRoZSBzdGFuZGFyZCBJQ1UgdGhyZWFkIHNhZmV0eSBydWxlcyBhcHBseTog
ZnVuY3Rpb25zIHRoYXQgdGFrZSBhIGNvbnN0IFVTcG9vZkNoZWNrZXIgcGFyYW1ldGVyIGFyZQor
ICogdGhyZWFkIHNhZmUuIFRob3NlIHRoYXQgdGFrZSBhIG5vbi1jb25zdCBVU3Bvb2ZDaGVja2Vy
IGFyZSBub3QgdGhyZWFkIHNhZmUuLgorICoKKyAqIEBzdGFibGUgSUNVIDQuNgogICovCiAKIHN0
cnVjdCBVU3Bvb2ZDaGVja2VyOworLyoqCisgKiBAc3RhYmxlIElDVSA0LjIKKyAqLwogdHlwZWRl
ZiBzdHJ1Y3QgVVNwb29mQ2hlY2tlciBVU3Bvb2ZDaGVja2VyOyAvKio8IHR5cGVkZWYgZm9yIEMg
b2YgVVNwb29mQ2hlY2tlciAqLwogCitzdHJ1Y3QgVVNwb29mQ2hlY2tSZXN1bHQ7CisvKioKKyAq
IEBzZWUgdXNwb29mX29wZW5DaGVja1Jlc3VsdAorICogQHN0YWJsZSBJQ1UgNTgKKyAqLwordHlw
ZWRlZiBzdHJ1Y3QgVVNwb29mQ2hlY2tSZXN1bHQgVVNwb29mQ2hlY2tSZXN1bHQ7CisKIC8qKgog
ICogRW51bSBmb3IgdGhlIGtpbmRzIG9mIGNoZWNrcyB0aGF0IFVTcG9vZkNoZWNrZXIgY2FuIHBl
cmZvcm0uCiAgKiBUaGVzZSBlbnVtIHZhbHVlcyBhcmUgdXNlZCBib3RoIHRvIHNlbGVjdCB0aGUg
c2V0IG9mIGNoZWNrcyB0aGF0CkBAIC0xNjAsNDUgKzM4OCw1OSBAQCB0eXBlZGVmIHN0cnVjdCBV
U3Bvb2ZDaGVja2VyIFVTcG9vZkNoZWNrZXI7IC8qKjwgdHlwZWRlZiBmb3IgQyBvZiBVU3Bvb2ZD
aGVja2VyCiAgKiBAc3RhYmxlIElDVSA0LjIKICAqLwogdHlwZWRlZiBlbnVtIFVTcG9vZkNoZWNr
cyB7Ci0gICAgLyoqICAgU2luZ2xlIHNjcmlwdCBjb25mdXNhYmxlIHRlc3QuCi0gICAgICAqICAg
V2hlbiB0ZXN0aW5nIHdoZXRoZXIgdHdvIGlkZW50aWZpZXJzIGFyZSBjb25mdXNhYmxlLCByZXBv
cnQgdGhhdCB0aGV5IGFyZSBpZgotICAgICAgKiAgIGJvdGggYXJlIGZyb20gdGhlIHNhbWUgc2Ny
aXB0IGFuZCB0aGV5IGFyZSB2aXN1YWxseSBjb25mdXNhYmxlLgotICAgICAgKiAgIE5vdGU6IHRo
aXMgdGVzdCBpcyBub3QgYXBwbGljYWJsZSB0byBhIGNoZWNrIG9mIGEgc2luZ2xlIGlkZW50aWZp
ZXIuCi0gICAgICAqLworICAgIC8qKgorICAgICAqIFdoZW4gcGVyZm9ybWluZyB0aGUgdHdvLXN0
cmluZyB7QGxpbmsgdXNwb29mX2FyZUNvbmZ1c2FibGV9IHRlc3QsIHRoaXMgZmxhZyBpbiB0aGUg
cmV0dXJuIHZhbHVlIGluZGljYXRlcworICAgICAqIHRoYXQgdGhlIHR3byBzdHJpbmdzIGFyZSB2
aXN1YWxseSBjb25mdXNhYmxlIGFuZCB0aGF0IHRoZXkgYXJlIGZyb20gdGhlIHNhbWUgc2NyaXB0
LCBhY2NvcmRpbmcgdG8gVVRTIDM5IHNlY3Rpb24KKyAgICAgKiA0LgorICAgICAqCisgICAgICog
QHNlZSB1c3Bvb2ZfYXJlQ29uZnVzYWJsZQorICAgICAqIEBzdGFibGUgSUNVIDQuMgorICAgICAq
LwogICAgIFVTUE9PRl9TSU5HTEVfU0NSSVBUX0NPTkZVU0FCTEUgPSAgIDEsCiAKLSAgICAvKiog
TWl4ZWQgc2NyaXB0IGNvbmZ1c2FibGUgdGVzdC4KLSAgICAgKiAgV2hlbiBjaGVja2luZyBhIHNp
bmdsZSBpZGVudGlmaWVyLCByZXBvcnQgYSBwcm9ibGVtIGlmCi0gICAgICogICAgdGhlIGlkZW50
aWZpZXIgY29udGFpbnMgbXVsdGlwbGUgc2NyaXB0cywgYW5kCi0gICAgICogICAgaXMgY29uZnVz
YWJsZSB3aXRoIHNvbWUgb3RoZXIgaWRlbnRpZmllciBpbiBhIHNpbmdsZSBzY3JpcHQKLSAgICAg
KiAgV2hlbiB0ZXN0aW5nIHdoZXRoZXIgdHdvIGlkZW50aWZpZXJzIGFyZSBjb25mdXNhYmxlLCBy
ZXBvcnQgdGhhdCB0aGV5IGFyZSBpZgotICAgICAqICAgIHRoZSB0d28gSURzIGFyZSB2aXN1YWxs
eSBjb25mdXNhYmxlLCAKLSAgICAgKiAgICBhbmQgYXQgbGVhc3Qgb25lIGNvbnRhaW5zIGNoYXJh
Y3RlcnMgZnJvbSBtb3JlIHRoYW4gb25lIHNjcmlwdC4KKyAgICAvKioKKyAgICAgKiBXaGVuIHBl
cmZvcm1pbmcgdGhlIHR3by1zdHJpbmcge0BsaW5rIHVzcG9vZl9hcmVDb25mdXNhYmxlfSB0ZXN0
LCB0aGlzIGZsYWcgaW4gdGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMKKyAgICAgKiB0aGF0IHRo
ZSB0d28gc3RyaW5ncyBhcmUgdmlzdWFsbHkgY29uZnVzYWJsZSBhbmQgdGhhdCB0aGV5IGFyZSA8
Yj5ub3Q8L2I+IGZyb20gdGhlIHNhbWUgc2NyaXB0LCBhY2NvcmRpbmcgdG8gVVRTCisgICAgICog
Mzkgc2VjdGlvbiA0LgorICAgICAqCisgICAgICogQHNlZSB1c3Bvb2ZfYXJlQ29uZnVzYWJsZQor
ICAgICAqIEBzdGFibGUgSUNVIDQuMgogICAgICAqLwogICAgIFVTUE9PRl9NSVhFRF9TQ1JJUFRf
Q09ORlVTQUJMRSAgPSAgIDIsCiAKLSAgICAvKiogV2hvbGUgc2NyaXB0IGNvbmZ1c2FibGUgdGVz
dC4KLSAgICAgKiAgV2hlbiBjaGVja2luZyBhIHNpbmdsZSBpZGVudGlmaWVyLCByZXBvcnQgYSBw
cm9ibGVtIGlmCi0gICAgICogICAgVGhlIGlkZW50aWZpZXIgaXMgb2YgYSBzaW5nbGUgc2NyaXB0
LCBhbmQKLSAgICAgKiAgICB0aGVyZSBleGlzdHMgYSBjb25mdXNhYmxlIGlkZW50aWZpZXIgaW4g
YW5vdGhlciBzY3JpcHQuCi0gICAgICogIFdoZW4gdGVzdGluZyB3aGV0aGVyIHR3byBpZGVudGlm
aWVycyBhcmUgY29uZnVzYWJsZSwgcmVwb3J0IHRoYXQgdGhleSBhcmUgaWYKLSAgICAgKiAgICBl
YWNoIGlzIG9mIGEgc2luZ2xlIHNjcmlwdCwgCi0gICAgICogICAgdGhlIHNjcmlwdHMgb2YgdGhl
IHR3byBpZGVudGlmaWVycyBhcmUgZGlmZmVyZW50LCBhbmQKLSAgICAgKiAgICB0aGUgaWRlbnRp
ZmllcnMgYXJlIHZpc3VhbGx5IGNvbmZ1c2FibGUuCisgICAgLyoqCisgICAgICogV2hlbiBwZXJm
b3JtaW5nIHRoZSB0d28tc3RyaW5nIHtAbGluayB1c3Bvb2ZfYXJlQ29uZnVzYWJsZX0gdGVzdCwg
dGhpcyBmbGFnIGluIHRoZSByZXR1cm4gdmFsdWUgaW5kaWNhdGVzCisgICAgICogdGhhdCB0aGUg
dHdvIHN0cmluZ3MgYXJlIHZpc3VhbGx5IGNvbmZ1c2FibGUgYW5kIHRoYXQgdGhleSBhcmUgbm90
IGZyb20gdGhlIHNhbWUgc2NyaXB0IGJ1dCBib3RoIG9mIHRoZW0gYXJlCisgICAgICogc2luZ2xl
LXNjcmlwdCBzdHJpbmdzLCBhY2NvcmRpbmcgdG8gVVRTIDM5IHNlY3Rpb24gNC4KKyAgICAgKgor
ICAgICAqIEBzZWUgdXNwb29mX2FyZUNvbmZ1c2FibGUKKyAgICAgKiBAc3RhYmxlIElDVSA0LjIK
ICAgICAgKi8KICAgICBVU1BPT0ZfV0hPTEVfU0NSSVBUX0NPTkZVU0FCTEUgID0gICA0LAotICAg
IAotICAgIC8qKiBBbnkgQ2FzZSBNb2RpZmllciBmb3IgY29uZnVzYWJsZSBpZGVudGlmaWVyIHRl
c3RzLgotICAgICAgICBJZiBzcGVjaWZpZWQsIGNvbnNpZGVyIGFsbCBjaGFyYWN0ZXJzLCBvZiBh
bnkgY2FzZSwgd2hlbiBsb29raW5nIGZvciBjb25mdXNhYmxlcy4KLSAgICAgICAgSWYgVVNQT09G
X0FOWV9DQVNFIGlzIG5vdCBzcGVjaWZpZWQsIGlkZW50aWZpZXJzIGJlaW5nIGNoZWNrZWQgYXJl
IGFzc3VtZWQgdG8gaGF2ZSBiZWVuCi0gICAgICAgIGNhc2UgZm9sZGVkLiAgVXBwZXIgY2FzZSBj
b25mdXNhYmxlIGNoYXJhY3RlcnMgd2lsbCBub3QgYmUgY2hlY2tlZC4KLSAgICAgICAgU2VsZWN0
cyBiZXR3ZWVuIExvd2VyIENhc2UgQ29uZnVzYWJsZSBhbmQKLSAgICAgICAgQW55IENhc2UgQ29u
ZnVzYWJsZS4gICAqLworCisgICAgLyoqCisgICAgICogRW5hYmxlIHRoaXMgZmxhZyBpbiB7QGxp
bmsgdXNwb29mX3NldENoZWNrc30gdG8gdHVybiBvbiBhbGwgdHlwZXMgb2YgY29uZnVzYWJsZXMu
ICBZb3UgbWF5IHNldAorICAgICAqIHRoZSBjaGVja3MgdG8gc29tZSBzdWJzZXQgb2YgU0lOR0xF
X1NDUklQVF9DT05GVVNBQkxFLCBNSVhFRF9TQ1JJUFRfQ09ORlVTQUJMRSwgb3IgV0hPTEVfU0NS
SVBUX0NPTkZVU0FCTEUgdG8KKyAgICAgKiBtYWtlIHtAbGluayB1c3Bvb2ZfYXJlQ29uZnVzYWJs
ZX0gcmV0dXJuIG9ubHkgdGhvc2UgdHlwZXMgb2YgY29uZnVzYWJsZXMuCisgICAgICoKKyAgICAg
KiBAc2VlIHVzcG9vZl9hcmVDb25mdXNhYmxlCisgICAgICogQHNlZSB1c3Bvb2ZfZ2V0U2tlbGV0
b24KKyAgICAgKiBAc3RhYmxlIElDVSA1OAorICAgICAqLworICAgIFVTUE9PRl9DT05GVVNBQkxF
ICAgICAgICAgICAgICAgPSAgIFVTUE9PRl9TSU5HTEVfU0NSSVBUX0NPTkZVU0FCTEUgfCBVU1BP
T0ZfTUlYRURfU0NSSVBUX0NPTkZVU0FCTEUgfCBVU1BPT0ZfV0hPTEVfU0NSSVBUX0NPTkZVU0FC
TEUsCisKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICAqIFRo
aXMgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgYWZmZWN0cyB0aGUgYmVoYXZpb3Ig
b2YgU3Bvb2ZDaGVja2VyLgorICAgICAgKgorICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggIEFu
eSBjYXNlIGNvbmZ1c2FibGUgbWFwcGluZ3Mgd2VyZSByZW1vdmVkIGZyb20gVVRTIDM5OyB0aGUg
Y29ycmVzcG9uZGluZyBJQ1UgQVBJIHdhcyBkZXByZWNhdGVkLgorICAgICAgKi8KICAgICBVU1BP
T0ZfQU5ZX0NBU0UgICAgICAgICAgICAgICAgID0gICA4LAorI2VuZGlmICAvKiBVX0hJREVfREVQ
UkVDQVRFRF9BUEkgKi8KIAogICAgIC8qKgogICAgICAgKiBDaGVjayB0aGF0IGFuIGlkZW50aWZp
ZXIgaXMgbm8gbG9vc2VyIHRoYW4gdGhlIHNwZWNpZmllZCBSZXN0cmljdGlvbkxldmVsLgotICAg
ICAgKiBUaGUgZGVmYXVsdCBpZiB1c3Bvb2Zfc2V0UmVzdHJjdGlvbkxldmVsKCkgaXMgbm90IGNh
bGxlZCBpcyBISUdITFlfUkVTVFJJQ1RJVkUuCisgICAgICAqIFRoZSBkZWZhdWx0IGlmIHtAbGlu
ayB1c3Bvb2Zfc2V0UmVzdHJpY3Rpb25MZXZlbH0gaXMgbm90IGNhbGxlZCBpcyBISUdITFlfUkVT
VFJJQ1RJVkUuCiAgICAgICAqCiAgICAgICAqIElmIFVTUE9PRl9BVVhfSU5GTyBpcyBlbmFibGVk
IHRoZSBhY3R1YWwgcmVzdHJpY3Rpb24gbGV2ZWwgb2YgdGhlCiAgICAgICAqIGlkZW50aWZpZXIg
YmVpbmcgdGVzdGVkIHdpbGwgYWxzbyBiZSByZXR1cm5lZCBieSB1c3Bvb2ZfY2hlY2soKS4KQEAg
LTIxMSw3ICs0NTMsNyBAQCB0eXBlZGVmIGVudW0gVVNwb29mQ2hlY2tzIHsKICAgICAgICovCiAg
ICAgVVNQT09GX1JFU1RSSUNUSU9OX0xFVkVMICAgICAgICA9IDE2LAogCi0jaWZuZGVmIFVfSElE
RV9ERVBSRUNBVEVEX0FQSSAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCiAgICAgLyoq
IENoZWNrIHRoYXQgYW4gaWRlbnRpZmllciBjb250YWlucyBvbmx5IGNoYXJhY3RlcnMgZnJvbSBh
CiAgICAgICAqIHNpbmdsZSBzY3JpcHQgKHBsdXMgY2hhcnMgZnJvbSB0aGUgY29tbW9uIGFuZCBp
bmhlcml0ZWQgc2NyaXB0cy4pCiAgICAgICAqIEFwcGxpZXMgdG8gY2hlY2tzIG9mIGEgc2luZ2xl
IGlkZW50aWZpZXIgY2hlY2sgb25seS4KQEAgLTIxOSw3ICs0NjEsNyBAQCB0eXBlZGVmIGVudW0g
VVNwb29mQ2hlY2tzIHsKICAgICAgICovCiAgICAgVVNQT09GX1NJTkdMRV9TQ1JJUFQgICAgICAg
ICAgICA9ICBVU1BPT0ZfUkVTVFJJQ1RJT05fTEVWRUwsCiAjZW5kaWYgIC8qIFVfSElERV9ERVBS
RUNBVEVEX0FQSSAqLwotICAgCisKICAgICAvKiogQ2hlY2sgYW4gaWRlbnRpZmllciBmb3IgdGhl
IHByZXNlbmNlIG9mIGludmlzaWJsZSBjaGFyYWN0ZXJzLAogICAgICAgKiBzdWNoIGFzIHplcm8t
d2lkdGggc3BhY2VzLCBvciBjaGFyYWN0ZXIgc2VxdWVuY2VzIHRoYXQgYXJlCiAgICAgICAqIGxp
a2VseSBub3QgdG8gZGlzcGxheSwgc3VjaCBhcyBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGUg
c2FtZQpAQCAtMjI5LDk3ICs0NzEsMTE5IEBAIHR5cGVkZWYgZW51bSBVU3Bvb2ZDaGVja3Mgewog
ICAgIFVTUE9PRl9JTlZJU0lCTEUgICAgICAgICAgICAgICAgPSAgMzIsCiAKICAgICAvKiogQ2hl
Y2sgdGhhdCBhbiBpZGVudGlmaWVyIGNvbnRhaW5zIG9ubHkgY2hhcmFjdGVycyBmcm9tIGEgc3Bl
Y2lmaWVkIHNldAotICAgICAgKiBvZiBhY2NlcHRhYmxlIGNoYXJhY3RlcnMuICBTZWUgdXNwb29m
X3NldEFsbG93ZWRDaGFycygpIGFuZAotICAgICAgKiB1c3Bvb2Zfc2V0QWxsb3dlZExvY2FsZXMo
KS4KKyAgICAgICogb2YgYWNjZXB0YWJsZSBjaGFyYWN0ZXJzLiAgU2VlIHtAbGluayB1c3Bvb2Zf
c2V0QWxsb3dlZENoYXJzfSBhbmQKKyAgICAgICoge0BsaW5rIHVzcG9vZl9zZXRBbGxvd2VkTG9j
YWxlc30uICBOb3RlIHRoYXQgYSBzdHJpbmcgdGhhdCBmYWlscyB0aGlzIGNoZWNrCisgICAgICAq
IHdpbGwgYWxzbyBmYWlsIHRoZSB7QGxpbmsgVVNQT09GX1JFU1RSSUNUSU9OX0xFVkVMfSBjaGVj
ay4KICAgICAgICovCiAgICAgVVNQT09GX0NIQVJfTElNSVQgICAgICAgICAgICAgICA9ICA2NCwK
IAogICAgLyoqCi0gICAgICogQ2hlY2sgdGhhdCBhbiBpZGVudGlmaWVyIGRvZXMgbm90IGluY2x1
ZGUgZGVjaW1hbCBkaWdpdHMgZnJvbQotICAgICAqIG1vcmUgdGhhbiBvbmUgbnVtYmVyaW5nIHN5
c3RlbS4KLSAgICAgKiAKKyAgICAgKiBDaGVjayB0aGF0IGFuIGlkZW50aWZpZXIgZG9lcyBub3Qg
bWl4IG51bWJlcnMgZnJvbSBkaWZmZXJlbnQgbnVtYmVyaW5nIHN5c3RlbXMuCisgICAgICogRm9y
IG1vcmUgaW5mb3JtYXRpb24sIHNlZSBVVFMgMzkgc2VjdGlvbiA1LjMuCisgICAgICoKICAgICAg
KiBAc3RhYmxlIElDVSA1MQogICAgICAqLwogICAgIFVTUE9PRl9NSVhFRF9OVU1CRVJTICAgICAg
ICAgICAgPSAxMjgsCiAKICAgIC8qKgogICAgICAqIEVuYWJsZSBhbGwgc3Bvb2YgY2hlY2tzLgot
ICAgICAqIAorICAgICAqCiAgICAgICogQHN0YWJsZSBJQ1UgNC42CiAgICAgICovCiAgICAgVVNQ
T09GX0FMTF9DSEVDS1MgICAgICAgICAgICAgICA9IDB4RkZGRiwKIAogICAgIC8qKgogICAgICAg
KiBFbmFibGUgdGhlIHJldHVybiBvZiBhdXhpbGxhcnkgKG5vbi1lcnJvcikgaW5mb3JtYXRpb24g
aW4gdGhlCi0gICAgICAqIHVwcGVyIGJpdHMgb2YgdGhlIGNoZWNrIHJlc3VsdHMgdmFsdWUuIAor
ICAgICAgKiB1cHBlciBiaXRzIG9mIHRoZSBjaGVjayByZXN1bHRzIHZhbHVlLgogICAgICAgKgot
ICAgICAgKiBJZiB0aGlzICJjaGVjayIgaXMgbm90IGVuYWJsZWQsIHRoZSByZXN1bHRzIG9mIHVz
cG9vZl9jaGVjaygpIHdpbGwgYmUgemVybyB3aGVuIGFuCi0gICAgICAqIGlkZW50aWZpZXIgcGFz
c2VzIGFsbCBvZiB0aGUgZW5hYmxlZCBjaGVja3MuCisgICAgICAqIElmIHRoaXMgImNoZWNrIiBp
cyBub3QgZW5hYmxlZCwgdGhlIHJlc3VsdHMgb2Yge0BsaW5rIHVzcG9vZl9jaGVja30gd2lsbCBi
ZQorICAgICAgKiB6ZXJvIHdoZW4gYW4gaWRlbnRpZmllciBwYXNzZXMgYWxsIG9mIHRoZSBlbmFi
bGVkIGNoZWNrcy4KICAgICAgICoKLSAgICAgICogSWYgdGhpcyAiY2hlY2siIGlzIGVuYWJsZWQs
ICh1c3Bvb2ZfY2hlY2soKSAmIFVTUE9PRl9BTExfQ0hFQ0tTKSB3aWxsIGJlIHplcm8KLSAgICAg
ICogd2hlbiBhbiBpZGVudGlmaWVyIHBhc3NlcyBhbGwgY2hlY2tzLgorICAgICAgKiBJZiB0aGlz
ICJjaGVjayIgaXMgZW5hYmxlZCwgKHVzcG9vZl9jaGVjaygpICYge0BsaW5rIFVTUE9PRl9BTExf
Q0hFQ0tTfSkgd2lsbAorICAgICAgKiBiZSB6ZXJvIHdoZW4gYW4gaWRlbnRpZmllciBwYXNzZXMg
YWxsIGNoZWNrcy4KICAgICAgICoKICAgICAgICogQHN0YWJsZSBJQ1UgNTEKICAgICAgICovCiAg
ICAgVVNQT09GX0FVWF9JTkZPICAgICAgICAgICAgICAgICAgPSAweDQwMDAwMDAwCiAKICAgICB9
IFVTcG9vZkNoZWNrczsKLSAgICAKLSAgICAKKworCiAgICAgLyoqCi0gICAgICogQ29uc3RhbnRz
IGZyb20gVUFYICMzOSBmb3IgdXNlIGluIHNldFJlc3RyaWN0aW9uTGV2ZWwoKSwgYW5kCisgICAg
ICogQ29uc3RhbnRzIGZyb20gVUFYICMzOSBmb3IgdXNlIGluIHtAbGluayB1c3Bvb2Zfc2V0UmVz
dHJpY3Rpb25MZXZlbH0sIGFuZAogICAgICAqIGZvciByZXR1cm5lZCBpZGVudGlmaWVyIHJlc3Ry
aWN0aW9uIGxldmVscyBpbiBjaGVjayByZXN1bHRzLgorICAgICAqCiAgICAgICogQHN0YWJsZSBJ
Q1UgNTEKKyAgICAgKgorICAgICAqIEBzZWUgdXNwb29mX3NldFJlc3RyaWN0aW9uTGV2ZWwKKyAg
ICAgKiBAc2VlIHVzcG9vZl9jaGVjawogICAgICAqLwogICAgIHR5cGVkZWYgZW51bSBVUmVzdHJp
Y3Rpb25MZXZlbCB7CiAgICAgICAgIC8qKgotICAgICAgICAgKiBPbmx5IEFTQ0lJIGNoYXJhY3Rl
cnM6IFUrMDAwMC4uVSswMDdGCi0gICAgICAgICAqIAorICAgICAgICAgKiBBbGwgY2hhcmFjdGVy
cyBpbiB0aGUgc3RyaW5nIGFyZSBpbiB0aGUgaWRlbnRpZmllciBwcm9maWxlIGFuZCBhbGwgY2hh
cmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBpbiB0aGUKKyAgICAgICAgICogQVNDSUkgcmFuZ2Uu
CisgICAgICAgICAqCiAgICAgICAgICAqIEBzdGFibGUgSUNVIDUxCiAgICAgICAgICAqLwogICAg
ICAgICBVU1BPT0ZfQVNDSUkgPSAweDEwMDAwMDAwLAogICAgICAgICAvKioKLSAgICAgICAgICAq
IEFsbCBjaGFyYWN0ZXJzIGluIGVhY2ggaWRlbnRpZmllciBtdXN0IGJlIGZyb20gYSBzaW5nbGUg
c2NyaXB0LgotICAgICAgICAgICoKLSAgICAgICAgICAqIEBzdGFibGUgSUNVIDUzCi0gICAgICAg
ICAgKi8KKyAgICAgICAgICogVGhlIHN0cmluZyBjbGFzc2lmaWVzIGFzIEFTQ0lJLU9ubHksIG9y
IGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGluIHRoZSBpZGVudGlmaWVyIHByb2Zp
bGUgYW5kCisgICAgICAgICAqIHRoZSBzdHJpbmcgaXMgc2luZ2xlLXNjcmlwdCwgYWNjb3JkaW5n
IHRvIHRoZSBkZWZpbml0aW9uIGluIFVUUyAzOSBzZWN0aW9uIDUuMS4KKyAgICAgICAgICoKKyAg
ICAgICAgICogQHN0YWJsZSBJQ1UgNTMKKyAgICAgICAgICovCiAgICAgICAgIFVTUE9PRl9TSU5H
TEVfU0NSSVBUX1JFU1RSSUNUSVZFID0gMHgyMDAwMDAwMCwKICAgICAgICAgLyoqCi0gICAgICAg
ICAqIEFsbCBjaGFyYWN0ZXJzIGluIGVhY2ggaWRlbnRpZmllciBtdXN0IGJlIGZyb20gYSBzaW5n
bGUgc2NyaXB0LCBvciBmcm9tIHRoZSBjb21iaW5hdGlvbnM6IExhdGluICsgSGFuICsKLSAgICAg
ICAgICogSGlyYWdhbmEgKyBLYXRha2FuYTsgTGF0aW4gKyBIYW4gKyBCb3BvbW9mbzsgb3IgTGF0
aW4gKyBIYW4gKyBIYW5ndWwuIE5vdGUgdGhhdCB0aGlzIGxldmVsIHdpbGwgc2F0aXNmeSB0aGUK
LSAgICAgICAgICogdmFzdCBtYWpvcml0eSBvZiBMYXRpbi1zY3JpcHQgdXNlcnM7IGFsc28gdGhh
dCBUUjM2IGhhcyBBU0NJSSBpbnN0ZWFkIG9mIExhdGluLgotICAgICAgICAgKiAKKyAgICAgICAg
ICogVGhlIHN0cmluZyBjbGFzc2lmaWVzIGFzIFNpbmdsZSBTY3JpcHQsIG9yIGFsbCBjaGFyYWN0
ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGluIHRoZSBpZGVudGlmaWVyIHByb2ZpbGUgYW5kCisgICAg
ICAgICAqIHRoZSBzdHJpbmcgaXMgY292ZXJlZCBieSBhbnkgb2YgdGhlIGZvbGxvd2luZyBzZXRz
IG9mIHNjcmlwdHMsIGFjY29yZGluZyB0byB0aGUgZGVmaW5pdGlvbiBpbiBVVFMgMzkKKyAgICAg
ICAgICogc2VjdGlvbiA1LjE6CisgICAgICAgICAqIDx1bD4KKyAgICAgICAgICogICA8bGk+TGF0
aW4gKyBIYW4gKyBCb3BvbW9mbyAob3IgZXF1aXZhbGVudGx5OiBMYXRuICsgSGFuYik8L2xpPgor
ICAgICAgICAgKiAgIDxsaT5MYXRpbiArIEhhbiArIEhpcmFnYW5hICsgS2F0YWthbmEgKG9yIGVx
dWl2YWxlbnRseTogTGF0biArIEpwYW4pPC9saT4KKyAgICAgICAgICogICA8bGk+TGF0aW4gKyBI
YW4gKyBIYW5ndWwgKG9yIGVxdWl2YWxlbnRseTogTGF0biArS29yZSk8L2xpPgorICAgICAgICAg
KiA8L3VsPgorICAgICAgICAgKiBUaGlzIGlzIHRoZSBkZWZhdWx0IHJlc3RyaWN0aW9uIGluIElD
VS4KKyAgICAgICAgICoKICAgICAgICAgICogQHN0YWJsZSBJQ1UgNTEKICAgICAgICAgICovCiAg
ICAgICAgIFVTUE9PRl9ISUdITFlfUkVTVFJJQ1RJVkUgPSAweDMwMDAwMDAwLAogICAgICAgICAv
KioKLSAgICAgICAgICogQWxsb3cgTGF0aW4gd2l0aCBvdGhlciBzY3JpcHRzIGV4Y2VwdCBDeXJp
bGxpYywgR3JlZWssIENoZXJva2VlIE90aGVyd2lzZSwgdGhlIHNhbWUgYXMgSGlnaGx5IFJlc3Ry
aWN0aXZlCi0gICAgICAgICAqIAorICAgICAgICAgKiBUaGUgc3RyaW5nIGNsYXNzaWZpZXMgYXMg
SGlnaGx5IFJlc3RyaWN0aXZlLCBvciBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBp
biB0aGUgaWRlbnRpZmllciBwcm9maWxlCisgICAgICAgICAqIGFuZCB0aGUgc3RyaW5nIGlzIGNv
dmVyZWQgYnkgTGF0aW4gYW5kIGFueSBvbmUgb3RoZXIgUmVjb21tZW5kZWQgb3IgQXNwaXJhdGlv
bmFsIHNjcmlwdCwgZXhjZXB0IEN5cmlsbGljLAorICAgICAgICAgKiBHcmVlaywgYW5kIENoZXJv
a2VlLgorICAgICAgICAgKgogICAgICAgICAgKiBAc3RhYmxlIElDVSA1MQogICAgICAgICAgKi8K
ICAgICAgICAgVVNQT09GX01PREVSQVRFTFlfUkVTVFJJQ1RJVkUgPSAweDQwMDAwMDAwLAogICAg
ICAgICAvKioKLSAgICAgICAgICogQWxsb3cgYXJiaXRyYXJ5IG1peHR1cmVzIG9mIHNjcmlwdHMu
IE90aGVyd2lzZSwgdGhlIHNhbWUgYXMgTW9kZXJhdGVseSBSZXN0cmljdGl2ZS4KLSAgICAgICAg
ICogCisgICAgICAgICAqIEFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGluIHRoZSBp
ZGVudGlmaWVyIHByb2ZpbGUuICBBbGxvdyBhcmJpdHJhcnkgbWl4dHVyZXMgb2Ygc2NyaXB0cy4K
KyAgICAgICAgICoKICAgICAgICAgICogQHN0YWJsZSBJQ1UgNTEKICAgICAgICAgICovCiAgICAg
ICAgIFVTUE9PRl9NSU5JTUFMTFlfUkVTVFJJQ1RJVkUgPSAweDUwMDAwMDAwLAogICAgICAgICAv
KioKICAgICAgICAgICogQW55IHZhbGlkIGlkZW50aWZpZXJzLCBpbmNsdWRpbmcgY2hhcmFjdGVy
cyBvdXRzaWRlIG9mIHRoZSBJZGVudGlmaWVyIFByb2ZpbGUuCi0gICAgICAgICAqIAorICAgICAg
ICAgKgogICAgICAgICAgKiBAc3RhYmxlIElDVSA1MQogICAgICAgICAgKi8KICAgICAgICAgVVNQ
T09GX1VOUkVTVFJJQ1RJVkUgPSAweDYwMDAwMDAwLAogICAgICAgICAvKioKLSAgICAgICAgICAq
IE1hc2sgZm9yIHNlbGVjdGluZyB0aGUgUmVzdHJpY3Rpb24gTGV2ZWwgYml0cyBmcm9tIHRoZSBy
ZXR1cm4gdmFsdWUgb2YgdXNwb29mX2NoZWNrKCkuCi0gICAgICAgICAgKiAKLSAgICAgICAgICAq
IEBzdGFibGUgSUNVIDUzCi0gICAgICAgICAgKi8KLSAgICAgICAgIFVTUE9PRl9SRVNUUklDVElP
Tl9MRVZFTF9NQVNLID0gMHg3RjAwMDAwMCAKKyAgICAgICAgICogTWFzayBmb3Igc2VsZWN0aW5n
IHRoZSBSZXN0cmljdGlvbiBMZXZlbCBiaXRzIGZyb20gdGhlIHJldHVybiB2YWx1ZSBvZiB7QGxp
bmsgdXNwb29mX2NoZWNrfS4KKyAgICAgICAgICoKKyAgICAgICAgICogQHN0YWJsZSBJQ1UgNTMK
KyAgICAgICAgICovCisgICAgICAgIFVTUE9PRl9SRVNUUklDVElPTl9MRVZFTF9NQVNLID0gMHg3
RjAwMDAwMCwKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQorICAgICAgICAvKioKKyAgICAg
ICAgICogQW4gdW5kZWZpbmVkIHJlc3RyaWN0aW9uIGxldmVsLgorICAgICAgICAgKiBAaW50ZXJu
YWwKKyAgICAgICAgICovCisgICAgICAgIFVTUE9PRl9VTkRFRklORURfUkVTVFJJQ1RJVkUgPSAt
MQorI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCiAgICAgfSBVUmVzdHJpY3Rpb25M
ZXZlbDsKIAogLyoqCi0gKiAgQ3JlYXRlIGEgVW5pY29kZSBTcG9vZiBDaGVja2VyLCBjb25maWd1
cmVkIHRvIHBlcmZvcm0gYWxsIAorICogIENyZWF0ZSBhIFVuaWNvZGUgU3Bvb2YgQ2hlY2tlciwg
Y29uZmlndXJlZCB0byBwZXJmb3JtIGFsbAogICogIGNoZWNrcyBleGNlcHQgZm9yIFVTUE9PRl9M
T0NBTEVfTElNSVQgYW5kIFVTUE9PRl9DSEFSX0xJTUlULgogICogIE5vdGUgdGhhdCBhZGRpdGlv
bmFsIGNoZWNrcyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZSwKICAqICByZXN1bHRpbmcgaW4g
dGhlIGNoYW5nZXMgdG8gdGhlIGRlZmF1bHQgY2hlY2tpbmcgYmVoYXZpb3IuCkBAIC0zNTksMTAg
KzYyMywxMCBAQCB1c3Bvb2Zfb3BlbkZyb21TZXJpYWxpemVkKGNvbnN0IHZvaWQgKmRhdGEsIGlu
dDMyX3QgbGVuZ3RoLCBpbnQzMl90ICpwQWN0dWFsTGVuZwogCiAvKioKICAgKiBPcGVuIGEgU3Bv
b2YgQ2hlY2tlciBmcm9tIHRoZSBzb3VyY2UgZm9ybSBvZiB0aGUgc3Bvb2YgZGF0YS4KLSAgKiBU
aGUgdHdvIGlucHV0cyBjb3JyZXNwb25kIHRvIHRoZSBVbmljb2RlIGRhdGEgZmlsZXMgY29uZnVz
YWJsZXMudHh0Ci0gICogYW5kIGNvbmZ1c2FibGVzV2hvbGVTY3JpcHQudHh0IGFzIGRlc2NyaWJl
ZCBpbiBVbmljb2RlIFVBWCAjMzkuCi0gICogVGhlIHN5bnRheCBvZiB0aGUgc291cmNlIGRhdGEg
aXMgYXMgZGVzY3JpYmVkIGluIFVBWCAjMzkgZm9yCi0gICogdGhlc2UgZmlsZXMsIGFuZCB0aGUg
Y29udGVudCBvZiB0aGVzZSBmaWxlcyBpcyBhY2NlcHRhYmxlIGlucHV0LgorICAqIFRoZSBpbnB1
dCBjb3JyZXNwb25kcyB0byB0aGUgVW5pY29kZSBkYXRhIGZpbGUgY29uZnVzYWJsZXMudHh0Cisg
ICogYXMgZGVzY3JpYmVkIGluIFVuaWNvZGUgVUFYICMzOS4gIFRoZSBzeW50YXggb2YgdGhlIHNv
dXJjZSBkYXRhCisgICogaXMgYXMgZGVzY3JpYmVkIGluIFVBWCAjMzkgZm9yIHRoaXMgZmlsZSwg
YW5kIHRoZSBjb250ZW50IG9mCisgICogdGhpcyBmaWxlIGlzIGFjY2VwdGFibGUgaW5wdXQuCiAg
ICoKICAgKiBUaGUgY2hhcmFjdGVyIGVuY29kaW5nIG9mIHRoZSAoY2hhciAqKSBpbnB1dCB0ZXh0
IGlzIFVURi04LgogICAqCkBAIC0zNzEsMTAgKzYzNSw5IEBAIHVzcG9vZl9vcGVuRnJvbVNlcmlh
bGl6ZWQoY29uc3Qgdm9pZCAqZGF0YSwgaW50MzJfdCBsZW5ndGgsIGludDMyX3QgKnBBY3R1YWxM
ZW5nCiAgICogQHBhcmFtIGNvbmZ1c2FibGVzTGVuIFRoZSBsZW5ndGggb2YgdGhlIGNvbmZ1c2Fi
bGVzIHRleHQsIG9yIC0xIGlmIHRoZQogICAqICAgICAgICAgICAgICAgICAgICBpbnB1dCBzdHJp
bmcgaXMgemVybyB0ZXJtaW5hdGVkLgogICAqIEBwYXJhbSBjb25mdXNhYmxlc1dob2xlU2NyaXB0
Ci0gICogICAgICAgICAgICAgICAgICAgIGEgcG9pbnRlciB0byB0aGUgd2hvbGUgc2NyaXB0IGNv
bmZ1c2FibGVzIGRlZmluaXRpb25zLAotICAqICAgICAgICAgICAgICAgICAgICBhcyBmb3VuZCBp
biB0aGUgZmlsZSBjb25mdXNhYmxlc1dob2xlU2NyaXB0LnR4dCBmcm9tIHVuaWNvZGUub3JnLgot
ICAqIEBwYXJhbSBjb25mdXNhYmxlc1dob2xlU2NyaXB0TGVuIFRoZSBsZW5ndGggb2YgdGhlIHdo
b2xlIHNjcmlwdCBjb25mdXNhYmxlcyB0ZXh0LCBvcgotICAqICAgICAgICAgICAgICAgICAgICAt
MSBpZiB0aGUgaW5wdXQgc3RyaW5nIGlzIHplcm8gdGVybWluYXRlZC4KKyAgKiAgICAgICAgICAg
ICAgICAgICAgRGVwcmVjYXRlZCBpbiBJQ1UgNTguICBObyBsb25nZXIgdXNlZC4KKyAgKiBAcGFy
YW0gY29uZnVzYWJsZXNXaG9sZVNjcmlwdExlbgorICAqICAgICAgICAgICAgICAgICAgICBEZXBy
ZWNhdGVkIGluIElDVSA1OC4gIE5vIGxvbmdlciB1c2VkLgogICAqIEBwYXJhbSBlcnJUeXBlICAg
ICBJbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IgaW4gdGhlIGlucHV0LCBpbmRpY2F0ZXMKICAgKiAg
ICAgICAgICAgICAgICAgICAgd2hpY2ggb2YgdGhlIGlucHV0IGZpbGVzIGNvbnRhaW5zIHRoZSBl
cnJvci4KICAgKiAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGlzIG9uZSBvZiBVU1BPT0Zf
U0lOR0xFX1NDUklQVF9DT05GVVNBQkxFIG9yCkBAIC00MzUsOCArNjk4LDMzIEBAIHVzcG9vZl9j
bG9uZShjb25zdCBVU3Bvb2ZDaGVja2VyICpzYywgVUVycm9yQ29kZSAqc3RhdHVzKTsKIAogCiAv
KioKLSAqIFNwZWNpZnkgdGhlIHNldCBvZiBjaGVja3MgdGhhdCB3aWxsIGJlIHBlcmZvcm1lZCBi
eSB0aGUgY2hlY2sKLSAqIGZ1bmN0aW9ucyBvZiB0aGlzIFNwb29mIENoZWNrZXIuCisgKiBTcGVj
aWZ5IHRoZSBiaXRtYXNrIG9mIGNoZWNrcyB0aGF0IHdpbGwgYmUgcGVyZm9ybWVkIGJ5IHtAbGlu
ayB1c3Bvb2ZfY2hlY2t9LiBDYWxsaW5nIHRoaXMgbWV0aG9kCisgKiBvdmVyd3JpdGVzIGFueSBj
aGVja3MgdGhhdCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gZW5hYmxlZC4gQnkgZGVmYXVsdCwgYWxs
IGNoZWNrcyBhcmUgZW5hYmxlZC4KKyAqCisgKiBUbyBlbmFibGUgc3BlY2lmaWMgY2hlY2tzIGFu
ZCBkaXNhYmxlIGFsbCBvdGhlcnMsIHRoZSAid2hpdGVsaXN0ZWQiIGNoZWNrcyBzaG91bGQgYmUg
T1JlZCB0b2dldGhlci4gRm9yCisgKiBleGFtcGxlLCB0byBmYWlsIHN0cmluZ3MgY29udGFpbmlu
ZyBjaGFyYWN0ZXJzIG91dHNpZGUgb2YgdGhlIHNldCBzcGVjaWZpZWQgYnkge0BsaW5rIHVzcG9v
Zl9zZXRBbGxvd2VkQ2hhcnN9IGFuZAorICogYWxzbyBzdHJpbmdzIHRoYXQgY29udGFpbiBkaWdp
dHMgZnJvbSBtaXhlZCBudW1iZXJpbmcgc3lzdGVtczoKKyAqCisgKiA8cHJlPgorICoge0Bjb2Rl
CisgKiB1c3Bvb2Zfc2V0Q2hlY2tzKFVTUE9PRl9DSEFSX0xJTUlUIHwgVVNQT09GX01JWEVEX05V
TUJFUlMpOworICogfQorICogPC9wcmU+CisgKgorICogVG8gZGlzYWJsZSBzcGVjaWZpYyBjaGVj
a3MgYW5kIGVuYWJsZSBhbGwgb3RoZXJzLCB0aGUgImJsYWNrbGlzdGVkIiBjaGVja3Mgc2hvdWxk
IGJlIEFORGVkIGF3YXkgZnJvbQorICogQUxMX0NIRUNLUy4gRm9yIGV4YW1wbGUsIGlmIHlvdSBh
cmUgbm90IHBsYW5uaW5nIHRvIHVzZSB0aGUge0BsaW5rIHVzcG9vZl9hcmVDb25mdXNhYmxlfSBm
dW5jdGlvbmFsaXR5LAorICogaXQgaXMgZ29vZCBwcmFjdGljZSB0byBkaXNhYmxlIHRoZSBDT05G
VVNBQkxFIGNoZWNrOgorICoKKyAqIDxwcmU+CisgKiB7QGNvZGUKKyAqIHVzcG9vZl9zZXRDaGVj
a3MoVVNQT09GX0FMTF9DSEVDS1MgJiB+VVNQT09GX0NPTkZVU0FCTEUpOworICogfQorICogPC9w
cmU+CisgKgorICogTm90ZSB0aGF0IG1ldGhvZHMgc3VjaCBhcyB7QGxpbmsgdXNwb29mX3NldEFs
bG93ZWRDaGFyc30sIHtAbGluayB1c3Bvb2Zfc2V0QWxsb3dlZExvY2FsZXN9LCBhbmQKKyAqIHtA
bGluayB1c3Bvb2Zfc2V0UmVzdHJpY3Rpb25MZXZlbH0gd2lsbCBlbmFibGUgY2VydGFpbiBjaGVj
a3Mgd2hlbiBjYWxsZWQuIFRob3NlIG1ldGhvZHMgd2lsbCBPUiB0aGUgY2hlY2sgdGhleQorICog
ZW5hYmxlIG9udG8gdGhlIGV4aXN0aW5nIGJpdG1hc2sgc3BlY2lmaWVkIGJ5IHRoaXMgbWV0aG9k
LiBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhvc2UKKyAqIG1l
dGhvZHMuCiAgKgogICogQHBhcmFtIHNjICAgICAgIFRoZSBVU3Bvb2ZDaGVja2VyCiAgKiBAcGFy
YW0gY2hlY2tzICAgICAgICAgVGhlIHNldCBvZiBjaGVja3MgdGhhdCB0aGlzIHNwb29mIGNoZWNr
ZXIgd2lsbCBwZXJmb3JtLgpAQCAtNDUxLDcgKzczOSw3IEBAIHVzcG9vZl9zZXRDaGVja3MoVVNw
b29mQ2hlY2tlciAqc2MsIGludDMyX3QgY2hlY2tzLCBVRXJyb3JDb2RlICpzdGF0dXMpOwogCiAv
KioKICAqIEdldCB0aGUgc2V0IG9mIGNoZWNrcyB0aGF0IHRoaXMgU3Bvb2YgQ2hlY2tlciBoYXMg
YmVlbiBjb25maWd1cmVkIHRvIHBlcmZvcm0uCi0gKiAKKyAqCiAgKiBAcGFyYW0gc2MgICAgICAg
VGhlIFVTcG9vZkNoZWNrZXIKICAqIEBwYXJhbSBzdGF0dXMgICBUaGUgZXJyb3IgY29kZSwgc2V0
IGlmIHRoaXMgZnVuY3Rpb24gZW5jb3VudGVycyBhIHByb2JsZW0uCiAgKiBAcmV0dXJuICAgICAg
ICAgVGhlIHNldCBvZiBjaGVja3MgdGhhdCB0aGlzIHNwb29mIGNoZWNrZXIgd2lsbCBwZXJmb3Jt
LgpAQCAtNDY0LDE5ICs3NTIsMjIgQEAgVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKIHVzcG9v
Zl9nZXRDaGVja3MoY29uc3QgVVNwb29mQ2hlY2tlciAqc2MsIFVFcnJvckNvZGUgKnN0YXR1cyk7
CiAKIC8qKgotICAqIFNldCB0aGUgbG9vc2VzdCByZXN0cmljdGlvbiBsZXZlbCBhbGxvd2VkLiBU
aGUgZGVmYXVsdCBpZiB0aGlzIGZ1bmN0aW9uIAotICAqIGlzIG5vdCBjYWxsZWQgaXMgSElHSExZ
X1JFU1RSSUNUSVZFLgotICAqIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBhbHNvIGVuYWJsZXMgdGhl
IFJFU1RSSUNUSU9OX0xFVkVMIGNoZWNrLgotICAqIEBwYXJhbSByZXN0cmljdGlvbkxldmVsIFRo
ZSBsb29zZXN0IHJlc3RyaWN0aW9uIGxldmVsIGFsbG93ZWQuCi0gICogQHNlZSBVUmVzdHJpY3Rp
b25MZXZlbAotICAqIEBzdGFibGUgSUNVIDUxCi0gICovCisgKiBTZXQgdGhlIGxvb3Nlc3QgcmVz
dHJpY3Rpb24gbGV2ZWwgYWxsb3dlZCBmb3Igc3RyaW5ncy4gVGhlIGRlZmF1bHQgaWYgdGhpcyBp
cyBub3QgY2FsbGVkIGlzCisgKiB7QGxpbmsgVVNQT09GX0hJR0hMWV9SRVNUUklDVElWRX0uIENh
bGxpbmcgdGhpcyBtZXRob2QgZW5hYmxlcyB0aGUge0BsaW5rIFVTUE9PRl9SRVNUUklDVElPTl9M
RVZFTH0gYW5kCisgKiB7QGxpbmsgVVNQT09GX01JWEVEX05VTUJFUlN9IGNoZWNrcywgY29ycmVz
cG9uZGluZyB0byBTZWN0aW9ucyA1LjEgYW5kIDUuMiBvZiBVVFMgMzkuIFRvIGN1c3RvbWl6ZSB3
aGljaCBjaGVja3MgYXJlCisgKiB0byBiZSBwZXJmb3JtZWQgYnkge0BsaW5rIHVzcG9vZl9jaGVj
a30sIHNlZSB7QGxpbmsgdXNwb29mX3NldENoZWNrc30uCisgKgorICogQHBhcmFtIHNjICAgICAg
IFRoZSBVU3Bvb2ZDaGVja2VyCisgKiBAcGFyYW0gcmVzdHJpY3Rpb25MZXZlbCBUaGUgbG9vc2Vz
dCByZXN0cmljdGlvbiBsZXZlbCBhbGxvd2VkLgorICogQHNlZSBVUmVzdHJpY3Rpb25MZXZlbAor
ICogQHN0YWJsZSBJQ1UgNTEKKyAqLwogVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKIHVzcG9vZl9z
ZXRSZXN0cmljdGlvbkxldmVsKFVTcG9vZkNoZWNrZXIgKnNjLCBVUmVzdHJpY3Rpb25MZXZlbCBy
ZXN0cmljdGlvbkxldmVsKTsKIAogCiAvKioKLSAgKiBHZXQgdGhlIFJlc3RyaWN0aW9uIExldmVs
IHRoYXQgd2lsbCBiZSB0ZXN0ZWQgaWYgdGhlIGNoZWNrcyBpbmNsdWRlIFJFU1RSSUNUSU9OX0xF
VkVMLgorICAqIEdldCB0aGUgUmVzdHJpY3Rpb24gTGV2ZWwgdGhhdCB3aWxsIGJlIHRlc3RlZCBp
ZiB0aGUgY2hlY2tzIGluY2x1ZGUge0BsaW5rIFVTUE9PRl9SRVNUUklDVElPTl9MRVZFTH0uCiAg
ICoKICAgKiBAcmV0dXJuIFRoZSByZXN0cmljdGlvbiBsZXZlbAogICAqIEBzZWUgVVJlc3RyaWN0
aW9uTGV2ZWwKQEAgLTQ4Niw3ICs3NzcsNyBAQCBVX1NUQUJMRSBVUmVzdHJpY3Rpb25MZXZlbCBV
X0VYUE9SVDIKIHVzcG9vZl9nZXRSZXN0cmljdGlvbkxldmVsKGNvbnN0IFVTcG9vZkNoZWNrZXIg
KnNjKTsKIAogLyoqCi0gKiBMaW1pdCBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFjY2VwdGFibGUgaW4g
aWRlbnRpZmllcnMgYmVpbmcgY2hlY2tlZCB0byB0aG9zZSAKKyAqIExpbWl0IGNoYXJhY3RlcnMg
dGhhdCBhcmUgYWNjZXB0YWJsZSBpbiBpZGVudGlmaWVycyBiZWluZyBjaGVja2VkIHRvIHRob3Nl
CiAgKiBub3JtYWxseSB1c2VkIHdpdGggdGhlIGxhbmd1YWdlcyBhc3NvY2lhdGVkIHdpdGggdGhl
IHNwZWNpZmllZCBsb2NhbGVzLgogICogQW55IHByZXZpb3VzbHkgc3BlY2lmaWVkIGxpc3Qgb2Yg
bG9jYWxlcyBpcyByZXBsYWNlZCBieSB0aGUgbmV3IHNldHRpbmdzLgogICoKQEAgLTQ5OSw3ICs3
OTAsNyBAQCB1c3Bvb2ZfZ2V0UmVzdHJpY3Rpb25MZXZlbChjb25zdCBVU3Bvb2ZDaGVja2VyICpz
Yyk7CiAgKiBTdXBwbHlpbmcgYW4gZW1wdHkgc3RyaW5nIHJlbW92ZXMgYWxsIHJlc3RyaWN0aW9u
czsKICAqIGNoYXJhY3RlcnMgZnJvbSBhbnkgc2NyaXB0IHdpbGwgYmUgYWxsb3dlZC4KICAqCi0g
KiBUaGUgVVNQT09GX0NIQVJfTElNSVQgdGVzdCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgZm9y
IHRoaXMKKyAqIFRoZSB7QGxpbmsgVVNQT09GX0NIQVJfTElNSVR9IHRlc3QgaXMgYXV0b21hdGlj
YWxseSBlbmFibGVkIGZvciB0aGlzCiAgKiBVU3Bvb2ZDaGVja2VyIHdoZW4gY2FsbGluZyB0aGlz
IGZ1bmN0aW9uIHdpdGggYSBub24tZW1wdHkgbGlzdAogICogb2YgbG9jYWxlcy4KICAqCkBAIC01
MTEsOSArODAyLDkgQEAgdXNwb29mX2dldFJlc3RyaWN0aW9uTGV2ZWwoY29uc3QgVVNwb29mQ2hl
Y2tlciAqc2MpOwogICogY2FuIGJlIG1hZGUgdG8gdGhlIHJlc3VsdCBvZiB1c3Bvb2Zfc2V0QWxs
b3dlZExvY2FsZXMoKSBieQogICogZmV0Y2hpbmcgdGhlIHJlc3VsdGluZyBzZXQgd2l0aCB1c3Bv
b2ZfZ2V0QWxsb3dlZENoYXJzKCksCiAgKiBtYW5pcHVsYXRpbmcgaXQgd2l0aCB0aGUgVW5pY29k
ZSBTZXQgQVBJLCB0aGVuIHJlc2V0dGluZyB0aGUKLSAqIHNwb29mIGRldGVjdG9ycyBsaW1pdHMg
d2l0aCB1c3Bvb2Zfc2V0QWxsb3dlZENoYXJzKCkKKyAqIHNwb29mIGRldGVjdG9ycyBsaW1pdHMg
d2l0aCB1c3Bvb2Zfc2V0QWxsb3dlZENoYXJzKCkuCiAgKgotICogQHBhcmFtIHNjICAgICAgICAg
ICBUaGUgVVNwb29mQ2hlY2tlciAKKyAqIEBwYXJhbSBzYyAgICAgICAgICAgVGhlIFVTcG9vZkNo
ZWNrZXIKICAqIEBwYXJhbSBsb2NhbGVzTGlzdCAgQSBsaXN0IGxpc3Qgb2YgbG9jYWxlcywgZnJv
bSB3aGljaCB0aGUgbGFuZ3VhZ2UKICAqICAgICAgICAgICAgICAgICAgICAgYW5kIGFzc29jaWF0
ZWQgc2NyaXB0IGFyZSBleHRyYWN0ZWQuICBUaGUgbG9jYWxlcwogICogICAgICAgICAgICAgICAg
ICAgICBhcmUgY29tbWEtc2VwYXJhdGVkIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUuCkBAIC01
MzcsMTggKzgyOCwxOCBAQCB1c3Bvb2Zfc2V0QWxsb3dlZExvY2FsZXMoVVNwb29mQ2hlY2tlciAq
c2MsIGNvbnN0IGNoYXIgKmxvY2FsZXNMaXN0LCBVRXJyb3JDb2RlCiAgKgogICogIHVzcG9vZl9z
ZXRBbGxvd2VkQ2hhcnMoKSB3aWxsIHJlc2V0IHRoZSBsaXN0IG9mIGFsbG93ZWQgdG8gYmUgZW1w
dHkuCiAgKgotICogIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGxpc3QgaXMgdGhlIHNhbWUg
YXMgdGhhdCBzdXBwbGllZCB0byAKLSAqICB1c3Bvb2Zfc2V0QWxsb3dlZExvY2FsZXMoKSwgYnV0
IHJldHVybmVkIGxpc3QgbWF5IG5vdCBiZSBpZGVudGljYWwgCi0gKiAgdG8gdGhlIG9yaWdpbmFs
bHkgc3BlY2lmaWVkIHN0cmluZzsgdGhlIHN0cmluZyBtYXkgYmUgcmVmb3JtYXR0ZWQsIAorICog
IFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGxpc3QgaXMgdGhlIHNhbWUgYXMgdGhhdCBzdXBw
bGllZCB0bworICogIHVzcG9vZl9zZXRBbGxvd2VkTG9jYWxlcygpLCBidXQgcmV0dXJuZWQgbGlz
dCBtYXkgbm90IGJlIGlkZW50aWNhbAorICogIHRvIHRoZSBvcmlnaW5hbGx5IHNwZWNpZmllZCBz
dHJpbmc7IHRoZSBzdHJpbmcgbWF5IGJlIHJlZm9ybWF0dGVkLAogICogIGFuZCBpbmZvcm1hdGlv
biBvdGhlciB0aGFuIGxhbmd1YWdlcyBmcm9tCiAgKiAgdGhlIG9yaWdpbmFsbHkgc3BlY2lmaWVk
IGxvY2FsZXMgbWF5IGJlIG9taXR0ZWQuCiAgKgotICogQHBhcmFtIHNjICAgICAgICAgICBUaGUg
VVNwb29mQ2hlY2tlciAKKyAqIEBwYXJhbSBzYyAgICAgICAgICAgVGhlIFVTcG9vZkNoZWNrZXIK
ICAqIEBwYXJhbSBzdGF0dXMgICAgICAgVGhlIGVycm9yIGNvZGUsIHNldCBpZiB0aGlzIGZ1bmN0
aW9uIGVuY291bnRlcnMgYSBwcm9ibGVtLgogICogQHJldHVybiAgICAgICAgICAgICBBIHN0cmlu
ZyBjb250YWluaW5nIGEgbGlzdCBvZiAgbG9jYWxlcyBjb3JyZXNwb25kaW5nCiAgKiAgICAgICAg
ICAgICAgICAgICAgIHRvIHRoZSBhY2NlcHRhYmxlIHNjcmlwdHMsIGZvcm1hdHRlZCBsaWtlIGFu
CiAgKiAgICAgICAgICAgICAgICAgICAgIEhUVFAgQWNjZXB0IExhbmd1YWdlIHZhbHVlLgotICog
IAorICoKICAqIEBzdGFibGUgSUNVIDQuMgogICovCiBVX1NUQUJMRSBjb25zdCBjaGFyICogVV9F
WFBPUlQyCkBAIC01NjQsNyArODU1LDcgQEAgdXNwb29mX2dldEFsbG93ZWRMb2NhbGVzKFVTcG9v
ZkNoZWNrZXIgKnNjLCBVRXJyb3JDb2RlICpzdGF0dXMpOwogICogVGhlIFVTUE9PRl9DSEFSX0xJ
TUlUIHRlc3QgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIGZvciB0aGlzCiAgKiBVU3Bvb2ZDaGVj
a2VyIGJ5IHRoaXMgZnVuY3Rpb24uCiAgKgotICogQHBhcmFtIHNjICAgICAgIFRoZSBVU3Bvb2ZD
aGVja2VyIAorICogQHBhcmFtIHNjICAgICAgIFRoZSBVU3Bvb2ZDaGVja2VyCiAgKiBAcGFyYW0g
Y2hhcnMgICAgQSBVbmljb2RlIFNldCBjb250YWluaW5nIHRoZSBsaXN0IG9mCiAgKiAgICAgICAg
ICAgICAgICAgY2hhcmFjdGVycyB0aGF0IGFyZSBwZXJtaXR0ZWQuICBPd25lcnNoaXAgb2YgdGhl
IHNldAogICogICAgICAgICAgICAgICAgIHJlbWFpbnMgd2l0aCB0aGUgY2FsbGVyLiAgVGhlIGlu
Y29taW5nIHNldCBpcyBjbG9uZWQgYnkKQEAgLTU5MSw3ICs4ODIsNyBAQCB1c3Bvb2Zfc2V0QWxs
b3dlZENoYXJzKFVTcG9vZkNoZWNrZXIgKnNjLCBjb25zdCBVU2V0ICpjaGFycywgVUVycm9yQ29k
ZSAqc3RhdHVzKQogICogb3IgaWYgYSBuZXcgc2V0IG9mIGFsbG93ZWQgY2hhcmFjdGVycyBpcyBz
cGVjaWZpZWQuCiAgKgogICoKLSAqIEBwYXJhbSBzYyAgICAgICBUaGUgVVNwb29mQ2hlY2tlciAK
KyAqIEBwYXJhbSBzYyAgICAgICBUaGUgVVNwb29mQ2hlY2tlcgogICogQHBhcmFtIHN0YXR1cyAg
IFRoZSBlcnJvciBjb2RlLCBzZXQgaWYgdGhpcyBmdW5jdGlvbiBlbmNvdW50ZXJzIGEgcHJvYmxl
bS4KICAqIEByZXR1cm4gICAgICAgICBBIFVTZXQgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyB0
aGF0IGFyZSBwZXJtaXR0ZWQgYnkKICAqICAgICAgICAgICAgICAgICB0aGUgVVNQT09GX0NIQVJf
TElNSVQgdGVzdC4KQEAgLTYxMSw3ICs5MDIsNyBAQCB1c3Bvb2ZfZ2V0QWxsb3dlZENoYXJzKGNv
bnN0IFVTcG9vZkNoZWNrZXIgKnNjLCBVRXJyb3JDb2RlICpzdGF0dXMpOwogICogVGhlIFVTUE9P
Rl9DSEFSX0xJTUlUIHRlc3QgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIGZvciB0aGlzCiAgKiBV
U29vZkNoZWNrZXIgYnkgdGhpcyBmdW5jdGlvbi4KICAqCi0gKiBAcGFyYW0gc2MgICAgICAgVGhl
IFVTcG9vZkNoZWNrZXIgCisgKiBAcGFyYW0gc2MgICAgICAgVGhlIFVTcG9vZkNoZWNrZXIKICAq
IEBwYXJhbSBjaGFycyAgICBBIFVuaWNvZGUgU2V0IGNvbnRhaW5pbmcgdGhlIGxpc3Qgb2YKICAq
ICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIHRoYXQgYXJlIHBlcm1pdHRlZC4gIE93bmVyc2hp
cCBvZiB0aGUgc2V0CiAgKiAgICAgICAgICAgICAgICAgcmVtYWlucyB3aXRoIHRoZSBjYWxsZXIu
ICBUaGUgaW5jb21pbmcgc2V0IGlzIGNsb25lZCBieQpAQCAtNjI2LDcgKzkxNyw3IEBAIHVzcG9v
Zl9zZXRBbGxvd2VkVW5pY29kZVNldChVU3Bvb2ZDaGVja2VyICpzYywgY29uc3QgaWN1OjpVbmlj
b2RlU2V0ICpjaGFycywgVUVyCiAKIC8qKgogICogR2V0IGEgVW5pY29kZVNldCBmb3IgdGhlIGNo
YXJhY3RlcnMgcGVybWl0dGVkIGluIGFuIGlkZW50aWZpZXIuCi0gKiBUaGlzIGNvcnJlc3BvbmRz
IHRvIHRoZSBsaW1pdHMgaW1wb3NlZCBieSB0aGUgU2V0IEFsbG93ZWQgQ2hhcmFjdGVycyAvIAor
ICogVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgbGltaXRzIGltcG9zZWQgYnkgdGhlIFNldCBBbGxv
d2VkIENoYXJhY3RlcnMgLwogICogVW5pY29kZVNldCBmdW5jdGlvbnMuIExpbWl0YXRpb25zIGlt
cG9zZWQgYnkgb3RoZXIgY2hlY2tzIHdpbGwgbm90IGJlCiAgKiByZWZsZWN0ZWQgaW4gdGhlIHNl
dCByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uLgogICoKQEAgLTYzOCw3ICs5MjksNyBAQCB1c3Bv
b2Zfc2V0QWxsb3dlZFVuaWNvZGVTZXQoVVNwb29mQ2hlY2tlciAqc2MsIGNvbnN0IGljdTo6VW5p
Y29kZVNldCAqY2hhcnMsIFVFcgogICogb3IgaWYgYSBuZXcgc2V0IG9mIGFsbG93ZWQgY2hhcmFj
dGVycyBpcyBzcGVjaWZpZWQuCiAgKgogICoKLSAqIEBwYXJhbSBzYyAgICAgICBUaGUgVVNwb29m
Q2hlY2tlciAKKyAqIEBwYXJhbSBzYyAgICAgICBUaGUgVVNwb29mQ2hlY2tlcgogICogQHBhcmFt
IHN0YXR1cyAgIFRoZSBlcnJvciBjb2RlLCBzZXQgaWYgdGhpcyBmdW5jdGlvbiBlbmNvdW50ZXJz
IGEgcHJvYmxlbS4KICAqIEByZXR1cm4gICAgICAgICBBIFVuaWNvZGVTZXQgY29udGFpbmluZyB0
aGUgY2hhcmFjdGVycyB0aGF0IGFyZSBwZXJtaXR0ZWQgYnkKICAqICAgICAgICAgICAgICAgICB0
aGUgVVNQT09GX0NIQVJfTElNSVQgdGVzdC4KQEAgLTY1MywxNyArOTQ0LDIyIEBAIHVzcG9vZl9n
ZXRBbGxvd2VkVW5pY29kZVNldChjb25zdCBVU3Bvb2ZDaGVja2VyICpzYywgVUVycm9yQ29kZSAq
c3RhdHVzKTsKICAqIENoZWNrIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciBwb3NzaWJsZSBzZWN1
cml0eSBpc3N1ZXMuCiAgKiBUaGUgdGV4dCB0byBiZSBjaGVja2VkIHdpbGwgdHlwaWNhbGx5IGJl
IGFuIGlkZW50aWZpZXIgb2Ygc29tZSBzb3J0LgogICogVGhlIHNldCBvZiBjaGVja3MgdG8gYmUg
cGVyZm9ybWVkIGlzIHNwZWNpZmllZCB3aXRoIHVzcG9vZl9zZXRDaGVja3MoKS4KLSAqIAotICog
QHBhcmFtIHNjICAgICAgVGhlIFVTcG9vZkNoZWNrZXIgCisgKgorICogXG5vdGUKKyAqICAgQ29u
c2lkZXIgdXNpbmcgdGhlIG5ld2VyIEFQSSwge0BsaW5rIHVzcG9vZl9jaGVjazJ9LCBpbnN0ZWFk
LgorICogICBUaGUgbmV3ZXIgQVBJIGV4cG9zZXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmcm9t
IHRoZSBjaGVjayBwcm9jZWR1cmUKKyAqICAgYW5kIGlzIG90aGVyd2lzZSBpZGVudGljYWwgdG8g
dGhpcyBtZXRob2QuCisgKgorICogQHBhcmFtIHNjICAgICAgVGhlIFVTcG9vZkNoZWNrZXIKICAq
IEBwYXJhbSBpZCAgICAgIFRoZSBpZGVudGlmaWVyIHRvIGJlIGNoZWNrZWQgZm9yIHBvc3NpYmxl
IHNlY3VyaXR5IGlzc3VlcywKICAqICAgICAgICAgICAgICAgIGluIFVURi0xNiBmb3JtYXQuCiAg
KiBAcGFyYW0gbGVuZ3RoICB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgdG8gYmUgY2hlY2tlZCwg
ZXhwcmVzc2VkIGluCi0gKiAgICAgICAgICAgICAgICAxNiBiaXQgVVRGLTE2IGNvZGUgdW5pdHMs
IG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMgCisgKiAgICAgICAgICAgICAgICAxNiBiaXQgVVRGLTE2
IGNvZGUgdW5pdHMsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMKICAqICAgICAgICAgICAgICAgIHpl
cm8gdGVybWluYXRlZC4KLSAqIEBwYXJhbSBwb3NpdGlvbiAgICAgIEFuIG91dCBwYXJhbWV0ZXIu
Ci0gKiAgICAgICAgICAgICAgICBPcmlnaW5hbGx5LCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHN0
cmluZyBwb3NpdGlvbiB0aGF0IGZhaWxlZCBhIGNoZWNrLgotICogICAgICAgICAgICAgICAgTm93
LCBhbHdheXMgcmV0dXJucyB6ZXJvLgotICogICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIg
bWF5IGJlIG51bGwuCisgKiBAcGFyYW0gcG9zaXRpb24gIERlcHJlY2F0ZWQgaW4gSUNVIDUxLiAg
QWx3YXlzIHJldHVybnMgemVyby4KKyAqICAgICAgICAgICAgICAgIE9yaWdpbmFsbHksIGFuIG91
dCBwYXJhbWV0ZXIgZm9yIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QKKyAqICAgICAgICAgICAgICAg
IHN0cmluZyBwb3NpdGlvbiB0aGF0IGZhaWxlZCBhIGNoZWNrLgorICogICAgICAgICAgICAgICAg
VGhpcyBwYXJhbWV0ZXIgbWF5IGJlIE5VTEwuCiAgKiBAcGFyYW0gc3RhdHVzICBUaGUgZXJyb3Ig
Y29kZSwgc2V0IGlmIGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8KICAqICAg
ICAgICAgICAgICAgIHBlcmZvcm0gdGhlIGNoZWNrLgogICogICAgICAgICAgICAgICAgU3Bvb2Zp
bmcgb3Igc2VjdXJpdHkgaXNzdWVzIGRldGVjdGVkIHdpdGggdGhlIGlucHV0IHN0cmluZyBhcmUK
QEAgLTY3MywxMSArOTY5LDEyIEBAIHVzcG9vZl9nZXRBbGxvd2VkVW5pY29kZVNldChjb25zdCBV
U3Bvb2ZDaGVja2VyICpzYywgVUVycm9yQ29kZSAqc3RhdHVzKTsKICAqICAgICAgICAgICAgICAg
IGVudW0gVVNwb29mQ2hlY2tzLiAgKHJldHVybmVkX3ZhbHVlICYgVVNQT09GX0FMTF9DSEVDS1Mp
CiAgKiAgICAgICAgICAgICAgICB3aWxsIGJlIHplcm8gaWYgdGhlIGlucHV0IHN0cmluZyBwYXNz
ZXMgYWxsIG9mIHRoZQogICogICAgICAgICAgICAgICAgZW5hYmxlZCBjaGVja3MuCisgKiBAc2Vl
IHVzcG9vZl9jaGVjazIKICAqIEBzdGFibGUgSUNVIDQuMgogICovCiBVX1NUQUJMRSBpbnQzMl90
IFVfRVhQT1JUMgogdXNwb29mX2NoZWNrKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICppZCwgaW50MzJfdCBsZW5ndGgsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICppZCwgaW50MzJfdCBsZW5ndGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAqcG9zaXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKIApAQCAtNjg2LDE2ICs5ODMsMjAgQEAg
dXNwb29mX2NoZWNrKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAogICogQ2hlY2sgdGhlIHNwZWNp
ZmllZCBzdHJpbmcgZm9yIHBvc3NpYmxlIHNlY3VyaXR5IGlzc3Vlcy4KICAqIFRoZSB0ZXh0IHRv
IGJlIGNoZWNrZWQgd2lsbCB0eXBpY2FsbHkgYmUgYW4gaWRlbnRpZmllciBvZiBzb21lIHNvcnQu
CiAgKiBUaGUgc2V0IG9mIGNoZWNrcyB0byBiZSBwZXJmb3JtZWQgaXMgc3BlY2lmaWVkIHdpdGgg
dXNwb29mX3NldENoZWNrcygpLgotICogCi0gKiBAcGFyYW0gc2MgICAgICBUaGUgVVNwb29mQ2hl
Y2tlciAKKyAqCisgKiBcbm90ZQorICogICBDb25zaWRlciB1c2luZyB0aGUgbmV3ZXIgQVBJLCB7
QGxpbmsgdXNwb29mX2NoZWNrMlVURjh9LCBpbnN0ZWFkLgorICogICBUaGUgbmV3ZXIgQVBJIGV4
cG9zZXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjaGVjayBwcm9jZWR1cmUKKyAq
ICAgYW5kIGlzIG90aGVyd2lzZSBpZGVudGljYWwgdG8gdGhpcyBtZXRob2QuCisgKgorICogQHBh
cmFtIHNjICAgICAgVGhlIFVTcG9vZkNoZWNrZXIKICAqIEBwYXJhbSBpZCAgICAgIEEgaWRlbnRp
ZmllciB0byBiZSBjaGVja2VkIGZvciBwb3NzaWJsZSBzZWN1cml0eSBpc3N1ZXMsIGluIFVURjgg
Zm9ybWF0LgotICogQHBhcmFtIGxlbmd0aCAgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHRvIGJl
IGNoZWNrZWQsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMgCisgKiBAcGFyYW0gbGVuZ3RoICB0aGUg
bGVuZ3RoIG9mIHRoZSBzdHJpbmcgdG8gYmUgY2hlY2tlZCwgb3IgLTEgaWYgdGhlIHN0cmluZyBp
cwogICogICAgICAgICAgICAgICAgemVybyB0ZXJtaW5hdGVkLgotICogQHBhcmFtIHBvc2l0aW9u
ICAgICAgQW4gb3V0IHBhcmFtZXRlci4KLSAqICAgICAgICAgICAgICAgIE9yaWdpbmFsbHksIHRo
ZSBpbmRleCBvZiB0aGUgZmlyc3Qgc3RyaW5nIHBvc2l0aW9uIHRoYXQgZmFpbGVkIGEgY2hlY2su
Ci0gKiAgICAgICAgICAgICAgICBOb3csIGFsd2F5cyByZXR1cm5zIHplcm8uCi0gKiAgICAgICAg
ICAgICAgICBUaGlzIHBhcmFtZXRlciBtYXkgYmUgbnVsbC4KLSAqICAgICAgICAgICAgICAgIEBk
ZXByZWNhdGVkIElDVSA1MQorICogQHBhcmFtIHBvc2l0aW9uICBEZXByZWNhdGVkIGluIElDVSA1
MS4gIEFsd2F5cyByZXR1cm5zIHplcm8uCisgKiAgICAgICAgICAgICAgICBPcmlnaW5hbGx5LCBh
biBvdXQgcGFyYW1ldGVyIGZvciB0aGUgaW5kZXggb2YgdGhlIGZpcnN0CisgKiAgICAgICAgICAg
ICAgICBzdHJpbmcgcG9zaXRpb24gdGhhdCBmYWlsZWQgYSBjaGVjay4KKyAqICAgICAgICAgICAg
ICAgIFRoaXMgcGFyYW1ldGVyIG1heSBiZSBOVUxMLgogICogQHBhcmFtIHN0YXR1cyAgVGhlIGVy
cm9yIGNvZGUsIHNldCBpZiBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvCiAg
KiAgICAgICAgICAgICAgICBwZXJmb3JtIHRoZSBjaGVjay4KICAqICAgICAgICAgICAgICAgIFNw
b29maW5nIG9yIHNlY3VyaXR5IGlzc3VlcyBkZXRlY3RlZCB3aXRoIHRoZSBpbnB1dCBzdHJpbmcg
YXJlCkBAIC03MDcsNiArMTAwOCw3IEBAIHVzcG9vZl9jaGVjayhjb25zdCBVU3Bvb2ZDaGVja2Vy
ICpzYywKICAqICAgICAgICAgICAgICAgIGVudW0gVVNwb29mQ2hlY2tzLiAgKHJldHVybmVkX3Zh
bHVlICYgVVNQT09GX0FMTF9DSEVDS1MpCiAgKiAgICAgICAgICAgICAgICB3aWxsIGJlIHplcm8g
aWYgdGhlIGlucHV0IHN0cmluZyBwYXNzZXMgYWxsIG9mIHRoZQogICogICAgICAgICAgICAgICAg
ZW5hYmxlZCBjaGVja3MuCisgKiBAc2VlIHVzcG9vZl9jaGVjazJVVEY4CiAgKiBAc3RhYmxlIElD
VSA0LjIKICAqLwogVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKQEAgLTcyMSwxNCArMTAyMywx
OCBAQCB1c3Bvb2ZfY2hlY2tVVEY4KGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAogICogQ2hlY2sg
dGhlIHNwZWNpZmllZCBzdHJpbmcgZm9yIHBvc3NpYmxlIHNlY3VyaXR5IGlzc3Vlcy4KICAqIFRo
ZSB0ZXh0IHRvIGJlIGNoZWNrZWQgd2lsbCB0eXBpY2FsbHkgYmUgYW4gaWRlbnRpZmllciBvZiBz
b21lIHNvcnQuCiAgKiBUaGUgc2V0IG9mIGNoZWNrcyB0byBiZSBwZXJmb3JtZWQgaXMgc3BlY2lm
aWVkIHdpdGggdXNwb29mX3NldENoZWNrcygpLgotICogCi0gKiBAcGFyYW0gc2MgICAgICBUaGUg
VVNwb29mQ2hlY2tlciAKKyAqCisgKiBcbm90ZQorICogICBDb25zaWRlciB1c2luZyB0aGUgbmV3
ZXIgQVBJLCB7QGxpbmsgdXNwb29mX2NoZWNrMlVuaWNvZGVTdHJpbmd9LCBpbnN0ZWFkLgorICog
ICBUaGUgbmV3ZXIgQVBJIGV4cG9zZXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBj
aGVjayBwcm9jZWR1cmUKKyAqICAgYW5kIGlzIG90aGVyd2lzZSBpZGVudGljYWwgdG8gdGhpcyBt
ZXRob2QuCisgKgorICogQHBhcmFtIHNjICAgICAgVGhlIFVTcG9vZkNoZWNrZXIKICAqIEBwYXJh
bSBpZCAgICAgIEEgaWRlbnRpZmllciB0byBiZSBjaGVja2VkIGZvciBwb3NzaWJsZSBzZWN1cml0
eSBpc3N1ZXMuCi0gKiBAcGFyYW0gcG9zaXRpb24gICAgICBBbiBvdXQgcGFyYW1ldGVyLgotICog
ICAgICAgICAgICAgICAgT3JpZ2luYWxseSwgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdHJpbmcg
cG9zaXRpb24gdGhhdCBmYWlsZWQgYSBjaGVjay4KLSAqICAgICAgICAgICAgICAgIE5vdywgYWx3
YXlzIHJldHVybnMgemVyby4KLSAqICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG1heSBi
ZSBudWxsLgotICogICAgICAgICAgICAgICAgQGRlcHJlY2F0ZWQgSUNVIDUxCisgKiBAcGFyYW0g
cG9zaXRpb24gIERlcHJlY2F0ZWQgaW4gSUNVIDUxLiAgQWx3YXlzIHJldHVybnMgemVyby4KKyAq
ICAgICAgICAgICAgICAgIE9yaWdpbmFsbHksIGFuIG91dCBwYXJhbWV0ZXIgZm9yIHRoZSBpbmRl
eCBvZiB0aGUgZmlyc3QKKyAqICAgICAgICAgICAgICAgIHN0cmluZyBwb3NpdGlvbiB0aGF0IGZh
aWxlZCBhIGNoZWNrLgorICogICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbWF5IGJlIE5V
TEwuCiAgKiBAcGFyYW0gc3RhdHVzICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIGFuIGVycm9yIG9j
Y3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8KICAqICAgICAgICAgICAgICAgIHBlcmZvcm0gdGhl
IGNoZWNrLgogICogICAgICAgICAgICAgICAgU3Bvb2Zpbmcgb3Igc2VjdXJpdHkgaXNzdWVzIGRl
dGVjdGVkIHdpdGggdGhlIGlucHV0IHN0cmluZyBhcmUKQEAgLTczOCw0NSArMTA0NCwyNDcgQEAg
dXNwb29mX2NoZWNrVVRGOChjb25zdCBVU3Bvb2ZDaGVja2VyICpzYywKICAqICAgICAgICAgICAg
ICAgIGVudW0gVVNwb29mQ2hlY2tzLiAgKHJldHVybmVkX3ZhbHVlICYgVVNQT09GX0FMTF9DSEVD
S1MpCiAgKiAgICAgICAgICAgICAgICB3aWxsIGJlIHplcm8gaWYgdGhlIGlucHV0IHN0cmluZyBw
YXNzZXMgYWxsIG9mIHRoZQogICogICAgICAgICAgICAgICAgZW5hYmxlZCBjaGVja3MuCisgKiBA
c2VlIHVzcG9vZl9jaGVjazJVbmljb2RlU3RyaW5nCiAgKiBAc3RhYmxlIElDVSA0LjIKICAqLwog
VV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKIHVzcG9vZl9jaGVja1VuaWNvZGVTdHJpbmcoY29u
c3QgVVNwb29mQ2hlY2tlciAqc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlj
dTo6VW5pY29kZVN0cmluZyAmaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
Y3U6OlVuaWNvZGVTdHJpbmcgJmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
ICpwb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVz
KTsKKyNlbmRpZgorCisKKy8qKgorICogQ2hlY2sgdGhlIHNwZWNpZmllZCBzdHJpbmcgZm9yIHBv
c3NpYmxlIHNlY3VyaXR5IGlzc3Vlcy4KKyAqIFRoZSB0ZXh0IHRvIGJlIGNoZWNrZWQgd2lsbCB0
eXBpY2FsbHkgYmUgYW4gaWRlbnRpZmllciBvZiBzb21lIHNvcnQuCisgKiBUaGUgc2V0IG9mIGNo
ZWNrcyB0byBiZSBwZXJmb3JtZWQgaXMgc3BlY2lmaWVkIHdpdGggdXNwb29mX3NldENoZWNrcygp
LgorICoKKyAqIEBwYXJhbSBzYyAgICAgIFRoZSBVU3Bvb2ZDaGVja2VyCisgKiBAcGFyYW0gaWQg
ICAgICBUaGUgaWRlbnRpZmllciB0byBiZSBjaGVja2VkIGZvciBwb3NzaWJsZSBzZWN1cml0eSBp
c3N1ZXMsCisgKiAgICAgICAgICAgICAgICBpbiBVVEYtMTYgZm9ybWF0LgorICogQHBhcmFtIGxl
bmd0aCAgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHRvIGJlIGNoZWNrZWQsIG9yIC0xIGlmIHRo
ZSBzdHJpbmcgaXMKKyAqICAgICAgICAgICAgICAgIHplcm8gdGVybWluYXRlZC4KKyAqIEBwYXJh
bSBjaGVja1Jlc3VsdCAgQW4gaW5zdGFuY2Ugb2YgVVNwb29mQ2hlY2tSZXN1bHQgdG8gYmUgZmls
bGVkIHdpdGgKKyAqICAgICAgICAgICAgICAgIGRldGFpbHMgYWJvdXQgdGhlIGlkZW50aWZpZXIu
ICBDYW4gYmUgTlVMTC4KKyAqIEBwYXJhbSBzdGF0dXMgIFRoZSBlcnJvciBjb2RlLCBzZXQgaWYg
YW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0bworICogICAgICAgICAgICAgICAg
cGVyZm9ybSB0aGUgY2hlY2suCisgKiAgICAgICAgICAgICAgICBTcG9vZmluZyBvciBzZWN1cml0
eSBpc3N1ZXMgZGV0ZWN0ZWQgd2l0aCB0aGUgaW5wdXQgc3RyaW5nIGFyZQorICogICAgICAgICAg
ICAgICAgbm90IHJlcG9ydGVkIGhlcmUsIGJ1dCB0aHJvdWdoIHRoZSBmdW5jdGlvbidzIHJldHVy
biB2YWx1ZS4KKyAqIEByZXR1cm4gICAgICAgIEFuIGludGVnZXIgdmFsdWUgd2l0aCBiaXRzIHNl
dCBmb3IgYW55IHBvdGVudGlhbCBzZWN1cml0eQorICogICAgICAgICAgICAgICAgb3Igc3Bvb2Zp
bmcgaXNzdWVzIGRldGVjdGVkLiAgVGhlIGJpdHMgYXJlIGRlZmluZWQgYnkKKyAqICAgICAgICAg
ICAgICAgIGVudW0gVVNwb29mQ2hlY2tzLiAgKHJldHVybmVkX3ZhbHVlICYgVVNQT09GX0FMTF9D
SEVDS1MpCisgKiAgICAgICAgICAgICAgICB3aWxsIGJlIHplcm8gaWYgdGhlIGlucHV0IHN0cmlu
ZyBwYXNzZXMgYWxsIG9mIHRoZQorICogICAgICAgICAgICAgICAgZW5hYmxlZCBjaGVja3MuICBB
bnkgaW5mb3JtYXRpb24gaW4gdGhpcyBiaXRtYXNrIHdpbGwgYmUKKyAqICAgICAgICAgICAgICAg
IGNvbnNpc3RlbnQgd2l0aCB0aGUgaW5mb3JtYXRpb24gc2F2ZWQgaW4gdGhlIG9wdGlvbmFsCisg
KiAgICAgICAgICAgICAgICBjaGVja1Jlc3VsdCBwYXJhbWV0ZXIuCisgKiBAc2VlIHVzcG9vZl9v
cGVuQ2hlY2tSZXN1bHQKKyAqIEBzZWUgdXNwb29mX2NoZWNrMlVURjgKKyAqIEBzZWUgdXNwb29m
X2NoZWNrMlVuaWNvZGVTdHJpbmcKKyAqIEBzdGFibGUgSUNVIDU4CisgKi8KK1VfU1RBQkxFIGlu
dDMyX3QgVV9FWFBPUlQyCit1c3Bvb2ZfY2hlY2syKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAor
ICAgIGNvbnN0IFVDaGFyKiBpZCwgaW50MzJfdCBsZW5ndGgsCisgICAgVVNwb29mQ2hlY2tSZXN1
bHQqIGNoZWNrUmVzdWx0LAorICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogQ2hl
Y2sgdGhlIHNwZWNpZmllZCBzdHJpbmcgZm9yIHBvc3NpYmxlIHNlY3VyaXR5IGlzc3Vlcy4KKyAq
IFRoZSB0ZXh0IHRvIGJlIGNoZWNrZWQgd2lsbCB0eXBpY2FsbHkgYmUgYW4gaWRlbnRpZmllciBv
ZiBzb21lIHNvcnQuCisgKiBUaGUgc2V0IG9mIGNoZWNrcyB0byBiZSBwZXJmb3JtZWQgaXMgc3Bl
Y2lmaWVkIHdpdGggdXNwb29mX3NldENoZWNrcygpLgorICoKKyAqIFRoaXMgdmVyc2lvbiBvZiB7
QGxpbmsgdXNwb29mX2NoZWNrfSBhY2NlcHRzIGEgVVNwb29mQ2hlY2tSZXN1bHQsIHdoaWNoCisg
KiByZXR1cm5zIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGlkZW50aWZpZXIuICBG
b3IgbW9yZQorICogaW5mb3JtYXRpb24sIHNlZSB7QGxpbmsgdXNwb29mX29wZW5DaGVja1Jlc3Vs
dH0uCisgKgorICogQHBhcmFtIHNjICAgICAgVGhlIFVTcG9vZkNoZWNrZXIKKyAqIEBwYXJhbSBp
ZCAgICAgIEEgaWRlbnRpZmllciB0byBiZSBjaGVja2VkIGZvciBwb3NzaWJsZSBzZWN1cml0eSBp
c3N1ZXMsIGluIFVURjggZm9ybWF0LgorICogQHBhcmFtIGxlbmd0aCAgdGhlIGxlbmd0aCBvZiB0
aGUgc3RyaW5nIHRvIGJlIGNoZWNrZWQsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMKKyAqICAgICAg
ICAgICAgICAgIHplcm8gdGVybWluYXRlZC4KKyAqIEBwYXJhbSBjaGVja1Jlc3VsdCAgQW4gaW5z
dGFuY2Ugb2YgVVNwb29mQ2hlY2tSZXN1bHQgdG8gYmUgZmlsbGVkIHdpdGgKKyAqICAgICAgICAg
ICAgICAgIGRldGFpbHMgYWJvdXQgdGhlIGlkZW50aWZpZXIuICBDYW4gYmUgTlVMTC4KKyAqIEBw
YXJhbSBzdGF0dXMgIFRoZSBlcnJvciBjb2RlLCBzZXQgaWYgYW4gZXJyb3Igb2NjdXJyZWQgd2hp
bGUgYXR0ZW1wdGluZyB0bworICogICAgICAgICAgICAgICAgcGVyZm9ybSB0aGUgY2hlY2suCisg
KiAgICAgICAgICAgICAgICBTcG9vZmluZyBvciBzZWN1cml0eSBpc3N1ZXMgZGV0ZWN0ZWQgd2l0
aCB0aGUgaW5wdXQgc3RyaW5nIGFyZQorICogICAgICAgICAgICAgICAgbm90IHJlcG9ydGVkIGhl
cmUsIGJ1dCB0aHJvdWdoIHRoZSBmdW5jdGlvbidzIHJldHVybiB2YWx1ZS4KKyAqIEByZXR1cm4g
ICAgICAgIEFuIGludGVnZXIgdmFsdWUgd2l0aCBiaXRzIHNldCBmb3IgYW55IHBvdGVudGlhbCBz
ZWN1cml0eQorICogICAgICAgICAgICAgICAgb3Igc3Bvb2ZpbmcgaXNzdWVzIGRldGVjdGVkLiAg
VGhlIGJpdHMgYXJlIGRlZmluZWQgYnkKKyAqICAgICAgICAgICAgICAgIGVudW0gVVNwb29mQ2hl
Y2tzLiAgKHJldHVybmVkX3ZhbHVlICYgVVNQT09GX0FMTF9DSEVDS1MpCisgKiAgICAgICAgICAg
ICAgICB3aWxsIGJlIHplcm8gaWYgdGhlIGlucHV0IHN0cmluZyBwYXNzZXMgYWxsIG9mIHRoZQor
ICogICAgICAgICAgICAgICAgZW5hYmxlZCBjaGVja3MuICBBbnkgaW5mb3JtYXRpb24gaW4gdGhp
cyBiaXRtYXNrIHdpbGwgYmUKKyAqICAgICAgICAgICAgICAgIGNvbnNpc3RlbnQgd2l0aCB0aGUg
aW5mb3JtYXRpb24gc2F2ZWQgaW4gdGhlIG9wdGlvbmFsCisgKiAgICAgICAgICAgICAgICBjaGVj
a1Jlc3VsdCBwYXJhbWV0ZXIuCisgKiBAc2VlIHVzcG9vZl9vcGVuQ2hlY2tSZXN1bHQKKyAqIEBz
ZWUgdXNwb29mX2NoZWNrMgorICogQHNlZSB1c3Bvb2ZfY2hlY2syVW5pY29kZVN0cmluZworICog
QHN0YWJsZSBJQ1UgNTgKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VzcG9vZl9j
aGVjazJVVEY4KGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAorICAgIGNvbnN0IGNoYXIgKmlkLCBp
bnQzMl90IGxlbmd0aCwKKyAgICBVU3Bvb2ZDaGVja1Jlc3VsdCogY2hlY2tSZXN1bHQsCisgICAg
VUVycm9yQ29kZSAqc3RhdHVzKTsKKworI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCisvKioKKyAq
IENoZWNrIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciBwb3NzaWJsZSBzZWN1cml0eSBpc3N1ZXMu
CisgKiBUaGUgdGV4dCB0byBiZSBjaGVja2VkIHdpbGwgdHlwaWNhbGx5IGJlIGFuIGlkZW50aWZp
ZXIgb2Ygc29tZSBzb3J0LgorICogVGhlIHNldCBvZiBjaGVja3MgdG8gYmUgcGVyZm9ybWVkIGlz
IHNwZWNpZmllZCB3aXRoIHVzcG9vZl9zZXRDaGVja3MoKS4KKyAqCisgKiBAcGFyYW0gc2MgICAg
ICBUaGUgVVNwb29mQ2hlY2tlcgorICogQHBhcmFtIGlkICAgICAgQSBpZGVudGlmaWVyIHRvIGJl
IGNoZWNrZWQgZm9yIHBvc3NpYmxlIHNlY3VyaXR5IGlzc3Vlcy4KKyAqIEBwYXJhbSBjaGVja1Jl
c3VsdCAgQW4gaW5zdGFuY2Ugb2YgVVNwb29mQ2hlY2tSZXN1bHQgdG8gYmUgZmlsbGVkIHdpdGgK
KyAqICAgICAgICAgICAgICAgIGRldGFpbHMgYWJvdXQgdGhlIGlkZW50aWZpZXIuICBDYW4gYmUg
TlVMTC4KKyAqIEBwYXJhbSBzdGF0dXMgIFRoZSBlcnJvciBjb2RlLCBzZXQgaWYgYW4gZXJyb3Ig
b2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0bworICogICAgICAgICAgICAgICAgcGVyZm9ybSB0
aGUgY2hlY2suCisgKiAgICAgICAgICAgICAgICBTcG9vZmluZyBvciBzZWN1cml0eSBpc3N1ZXMg
ZGV0ZWN0ZWQgd2l0aCB0aGUgaW5wdXQgc3RyaW5nIGFyZQorICogICAgICAgICAgICAgICAgbm90
IHJlcG9ydGVkIGhlcmUsIGJ1dCB0aHJvdWdoIHRoZSBmdW5jdGlvbidzIHJldHVybiB2YWx1ZS4K
KyAqIEByZXR1cm4gICAgICAgIEFuIGludGVnZXIgdmFsdWUgd2l0aCBiaXRzIHNldCBmb3IgYW55
IHBvdGVudGlhbCBzZWN1cml0eQorICogICAgICAgICAgICAgICAgb3Igc3Bvb2ZpbmcgaXNzdWVz
IGRldGVjdGVkLiAgVGhlIGJpdHMgYXJlIGRlZmluZWQgYnkKKyAqICAgICAgICAgICAgICAgIGVu
dW0gVVNwb29mQ2hlY2tzLiAgKHJldHVybmVkX3ZhbHVlICYgVVNQT09GX0FMTF9DSEVDS1MpCisg
KiAgICAgICAgICAgICAgICB3aWxsIGJlIHplcm8gaWYgdGhlIGlucHV0IHN0cmluZyBwYXNzZXMg
YWxsIG9mIHRoZQorICogICAgICAgICAgICAgICAgZW5hYmxlZCBjaGVja3MuICBBbnkgaW5mb3Jt
YXRpb24gaW4gdGhpcyBiaXRtYXNrIHdpbGwgYmUKKyAqICAgICAgICAgICAgICAgIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgaW5mb3JtYXRpb24gc2F2ZWQgaW4gdGhlIG9wdGlvbmFsCisgKiAgICAgICAg
ICAgICAgICBjaGVja1Jlc3VsdCBwYXJhbWV0ZXIuCisgKiBAc2VlIHVzcG9vZl9vcGVuQ2hlY2tS
ZXN1bHQKKyAqIEBzZWUgdXNwb29mX2NoZWNrMgorICogQHNlZSB1c3Bvb2ZfY2hlY2syVVRGOAor
ICogQHN0YWJsZSBJQ1UgNTgKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VzcG9v
Zl9jaGVjazJVbmljb2RlU3RyaW5nKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAorICAgIGNvbnN0
IGljdTo6VW5pY29kZVN0cmluZyAmaWQsCisgICAgVVNwb29mQ2hlY2tSZXN1bHQqIGNoZWNrUmVz
dWx0LAorICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisjZW5kaWYKKworLyoqCisgKiBDcmVhdGUg
YSBVU3Bvb2ZDaGVja1Jlc3VsdCwgdXNlZCBieSB0aGUge0BsaW5rIHVzcG9vZl9jaGVjazJ9IGNs
YXNzIG9mIGZ1bmN0aW9ucyB0byByZXR1cm4KKyAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpZGVu
dGlmaWVyLiAgSW5mb3JtYXRpb24gaW5jbHVkZXM6CisgKiA8dWw+CisgKiAgIDxsaT5BIGJpdG1h
c2sgb2YgdGhlIGNoZWNrcyB0aGF0IGZhaWxlZDwvbGk+CisgKiAgIDxsaT5UaGUgaWRlbnRpZmll
cidzIHJlc3RyaWN0aW9uIGxldmVsIChVVFMgMzkgc2VjdGlvbiA1LjIpPC9saT4KKyAqICAgPGxp
PlRoZSBzZXQgb2YgbnVtZXJpY3MgaW4gdGhlIHN0cmluZyAoVVRTIDM5IHNlY3Rpb24gNS4zKTwv
bGk+CisgKiA8L3VsPgorICogVGhlIGRhdGEgaGVsZCBpbiBhIFVTcG9vZkNoZWNrUmVzdWx0IGlz
IGNsZWFyZWQgd2hlbmV2ZXIgaXQgaXMgcGFzc2VkIGludG8gYSBuZXcgY2FsbAorICogb2Yge0Bs
aW5rIHVzcG9vZl9jaGVjazJ9LgorICoKKyAqIEBwYXJhbSBzdGF0dXMgIFRoZSBlcnJvciBjb2Rl
LCBzZXQgaWYgdGhpcyBmdW5jdGlvbiBlbmNvdW50ZXJzIGEgcHJvYmxlbS4KKyAqIEByZXR1cm4g
ICAgICAgIHRoZSBuZXdseSBjcmVhdGVkIFVTcG9vZkNoZWNrUmVzdWx0CisgKiBAc2VlIHVzcG9v
Zl9jaGVjazIKKyAqIEBzZWUgdXNwb29mX2NoZWNrMlVURjgKKyAqIEBzZWUgdXNwb29mX2NoZWNr
MlVuaWNvZGVTdHJpbmcKKyAqIEBzdGFibGUgSUNVIDU4CisgKi8KK1VfU1RBQkxFIFVTcG9vZkNo
ZWNrUmVzdWx0KiBVX0VYUE9SVDIKK3VzcG9vZl9vcGVuQ2hlY2tSZXN1bHQoVUVycm9yQ29kZSAq
c3RhdHVzKTsKKworLyoqCisgKiBDbG9zZSBhIFVTcG9vZkNoZWNrUmVzdWx0LCBmcmVlaW5nIGFu
eSBtZW1vcnkgdGhhdCB3YXMgYmVpbmcgaGVsZCBieQorICogICBpdHMgaW1wbGVtZW50YXRpb24u
CisgKgorICogQHBhcmFtIGNoZWNrUmVzdWx0ICBUaGUgaW5zdGFuY2Ugb2YgVVNwb29mQ2hlY2tS
ZXN1bHQgdG8gY2xvc2UKKyAqIEBzdGFibGUgSUNVIDU4CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9F
WFBPUlQyCit1c3Bvb2ZfY2xvc2VDaGVja1Jlc3VsdChVU3Bvb2ZDaGVja1Jlc3VsdCAqY2hlY2tS
ZXN1bHQpOworCisjaWYgVV9TSE9XX0NQTFVTUExVU19BUEkKKworVV9OQU1FU1BBQ0VfQkVHSU4K
KworLyoqCisgKiBcY2xhc3MgTG9jYWxVU3Bvb2ZDaGVja1Jlc3VsdFBvaW50ZXIKKyAqICJTbWFy
dCBwb2ludGVyIiBjbGFzcywgY2xvc2VzIGEgVVNwb29mQ2hlY2tSZXN1bHQgdmlhIHtAbGluayB1
c3Bvb2ZfY2xvc2VDaGVja1Jlc3VsdH0uCisgKiBGb3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9j
YWxQb2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoKKyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQor
ICogQHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFibGUgSUNVIDU4CisgKi8KK1VfREVGSU5FX0xP
Q0FMX09QRU5fUE9JTlRFUihMb2NhbFVTcG9vZkNoZWNrUmVzdWx0UG9pbnRlciwgVVNwb29mQ2hl
Y2tSZXN1bHQsIHVzcG9vZl9jbG9zZUNoZWNrUmVzdWx0KTsKKworVV9OQU1FU1BBQ0VfRU5ECiAK
ICNlbmRpZgogCisvKioKKyAqIEluZGljYXRlcyB3aGljaCBvZiB0aGUgc3Bvb2YgY2hlY2socykg
aGF2ZSBmYWlsZWQuIFRoZSB2YWx1ZSBpcyBhIGJpdHdpc2UgT1Igb2YgdGhlIGNvbnN0YW50cyBm
b3IgdGhlIHRlc3RzCisgKiBpbiBxdWVzdGlvbjogVVNQT09GX1JFU1RSSUNUSU9OX0xFVkVMLCBV
U1BPT0ZfQ0hBUl9MSU1JVCwgYW5kIHNvIG9uLgorICoKKyAqIEBwYXJhbSBjaGVja1Jlc3VsdCAg
VGhlIGluc3RhbmNlIG9mIFVTcG9vZkNoZWNrUmVzdWx0IGNyZWF0ZWQgYnkge0BsaW5rIHVzcG9v
Zl9vcGVuQ2hlY2tSZXN1bHR9CisgKiBAcGFyYW0gc3RhdHVzICAgICAgIFRoZSBlcnJvciBjb2Rl
LCBzZXQgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisgKiBAcmV0dXJuICAgICAgICBBbiBpbnRlZ2Vy
IHZhbHVlIHdpdGggYml0cyBzZXQgZm9yIGFueSBwb3RlbnRpYWwgc2VjdXJpdHkKKyAqICAgICAg
ICAgICAgICAgIG9yIHNwb29maW5nIGlzc3VlcyBkZXRlY3RlZC4gIFRoZSBiaXRzIGFyZSBkZWZp
bmVkIGJ5CisgKiAgICAgICAgICAgICAgICBlbnVtIFVTcG9vZkNoZWNrcy4gIChyZXR1cm5lZF92
YWx1ZSAmIFVTUE9PRl9BTExfQ0hFQ0tTKQorICogICAgICAgICAgICAgICAgd2lsbCBiZSB6ZXJv
IGlmIHRoZSBpbnB1dCBzdHJpbmcgcGFzc2VzIGFsbCBvZiB0aGUKKyAqICAgICAgICAgICAgICAg
IGVuYWJsZWQgY2hlY2tzLgorICogQHNlZSB1c3Bvb2Zfc2V0Q2hlY2tzCisgKiBAc3RhYmxlIElD
VSA1OAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordXNwb29mX2dldENoZWNrUmVz
dWx0Q2hlY2tzKGNvbnN0IFVTcG9vZkNoZWNrUmVzdWx0ICpjaGVja1Jlc3VsdCwgVUVycm9yQ29k
ZSAqc3RhdHVzKTsKKworLyoqCisgKiBHZXRzIHRoZSByZXN0cmljdGlvbiBsZXZlbCB0aGF0IHRo
ZSB0ZXh0IG1lZXRzLCBpZiB0aGUgVVNQT09GX1JFU1RSSUNUSU9OX0xFVkVMIGNoZWNrCisgKiB3
YXMgZW5hYmxlZDsgb3RoZXJ3aXNlLCB1bmRlZmluZWQuCisgKgorICogQHBhcmFtIGNoZWNrUmVz
dWx0ICBUaGUgaW5zdGFuY2Ugb2YgVVNwb29mQ2hlY2tSZXN1bHQgY3JlYXRlZCBieSB7QGxpbmsg
dXNwb29mX29wZW5DaGVja1Jlc3VsdH0KKyAqIEBwYXJhbSBzdGF0dXMgICAgICAgVGhlIGVycm9y
IGNvZGUsIHNldCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KKyAqIEByZXR1cm4gICAgICAgICAgICAg
VGhlIHJlc3RyaWN0aW9uIGxldmVsIGNvbnRhaW5lZCBpbiB0aGUgVVNwb29mQ2hlY2tSZXN1bHQK
KyAqIEBzZWUgdXNwb29mX3NldFJlc3RyaWN0aW9uTGV2ZWwKKyAqIEBzdGFibGUgSUNVIDU4Cisg
Ki8KK1VfU1RBQkxFIFVSZXN0cmljdGlvbkxldmVsIFVfRVhQT1JUMgordXNwb29mX2dldENoZWNr
UmVzdWx0UmVzdHJpY3Rpb25MZXZlbChjb25zdCBVU3Bvb2ZDaGVja1Jlc3VsdCAqY2hlY2tSZXN1
bHQsIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogR2V0cyB0aGUgc2V0IG9mIG51bWVy
aWNzIGZvdW5kIGluIHRoZSBzdHJpbmcsIGlmIHRoZSBVU1BPT0ZfTUlYRURfTlVNQkVSUyBjaGVj
ayB3YXMgZW5hYmxlZDsKKyAqIG90aGVyd2lzZSwgdW5kZWZpbmVkLiAgVGhlIHNldCB3aWxsIGNv
bnRhaW4gdGhlIHplcm8gZGlnaXQgZnJvbSBlYWNoIGRlY2ltYWwgbnVtYmVyIHN5c3RlbSBmb3Vu
ZAorICogaW4gdGhlIGlucHV0IHN0cmluZy4gIE93bmVyc2hpcCBvZiB0aGUgcmV0dXJuZWQgVVNl
dCByZW1haW5zIHdpdGggdGhlIFVTcG9vZkNoZWNrUmVzdWx0LgorICogVGhlIFVTZXQgd2lsbCBi
ZSBmcmVlJ2Qgd2hlbiB7QGxpbmsgdXNwb29mX2Nsb3NlQ2hlY2tSZXN1bHR9IGlzIGNhbGxlZC4K
KyAqCisgKiBAcGFyYW0gY2hlY2tSZXN1bHQgIFRoZSBpbnN0YW5jZSBvZiBVU3Bvb2ZDaGVja1Jl
c3VsdCBjcmVhdGVkIGJ5IHtAbGluayB1c3Bvb2Zfb3BlbkNoZWNrUmVzdWx0fQorICogQHJldHVy
biAgICAgICAgICAgICBUaGUgc2V0IG9mIG51bWVyaWNzIGNvbnRhaW5lZCBpbiB0aGUgVVNwb29m
Q2hlY2tSZXN1bHQKKyAqIEBwYXJhbSBzdGF0dXMgICAgICAgVGhlIGVycm9yIGNvZGUsIHNldCBp
ZiBhbiBlcnJvciBvY2N1cnJlZC4KKyAqIEBzdGFibGUgSUNVIDU4CisgKi8KK1VfU1RBQkxFIGNv
bnN0IFVTZXQqIFVfRVhQT1JUMgordXNwb29mX2dldENoZWNrUmVzdWx0TnVtZXJpY3MoY29uc3Qg
VVNwb29mQ2hlY2tSZXN1bHQgKmNoZWNrUmVzdWx0LCBVRXJyb3JDb2RlICpzdGF0dXMpOworCiAK
IC8qKgogICogQ2hlY2sgdGhlIHdoZXRoZXIgdHdvIHNwZWNpZmllZCBzdHJpbmdzIGFyZSB2aXN1
YWxseSBjb25mdXNhYmxlLgotICogVGhlIHR5cGVzIG9mIGNvbmZ1c2FiaWxpdHkgdG8gYmUgdGVz
dGVkIC0gc2luZ2xlIHNjcmlwdCwgbWl4ZWQgc2NyaXB0LAotICogb3Igd2hvbGUgc2NyaXB0IC0g
YXJlIGRldGVybWluZWQgYnkgdGhlIGNoZWNrIG9wdGlvbnMgc2V0IGZvciB0aGUKLSAqIFVTcG9v
ZkNoZWNrZXIuCi0gKgotICogVGhlIHRlc3RzIHRvIGJlIHBlcmZvcm1lZCBhcmUgY29udHJvbGxl
ZCBieSB0aGUgZmxhZ3MKLSAqICAgVVNQT09GX1NJTkdMRV9TQ1JJUFRfQ09ORlVTQUJMRSAKLSAq
ICAgVVNQT09GX01JWEVEX1NDUklQVF9DT05GVVNBQkxFICAKLSAqICAgVVNQT09GX1dIT0xFX1ND
UklQVF9DT05GVVNBQkxFCi0gKiBBdCBsZWFzdCBvbmUgb2YgdGhlc2UgdGVzdHMgbXVzdCBiZSBz
ZWxlY3RlZC4KLSAqIAotICogVVNQT09GX0FOWV9DQVNFIGlzIGEgbW9kaWZpZXIgZm9yIHRoZSB0
ZXN0cy4gIFNlbGVjdCBpdCBpZiB0aGUgaWRlbnRpZmllcnMKLSAqICAgbWF5IGJlIG9mIG1peGVk
IGNhc2UuCi0gKiBJZiBpZGVudGlmaWVycyBhcmUgY2FzZSBmb2xkZWQgZm9yIGNvbXBhcmlzb24g
YW5kCi0gKiBkaXNwbGF5IHRvIHRoZSB1c2VyLCBkbyBub3Qgc2VsZWN0IHRoZSBVU1BPT0ZfQU5Z
X0NBU0Ugb3B0aW9uLgorICoKKyAqIElmIHRoZSBzdHJpbmdzIGFyZSBjb25mdXNhYmxlLCB0aGUg
cmV0dXJuIHZhbHVlIHdpbGwgYmUgbm9uemVybywgYXMgbG9uZyBhcworICoge0BsaW5rIFVTUE9P
Rl9DT05GVVNBQkxFfSB3YXMgZW5hYmxlZCBpbiB1c3Bvb2Zfc2V0Q2hlY2tzKCkuCisgKgorICog
VGhlIGJpdHMgaW4gdGhlIHJldHVybiB2YWx1ZSBjb3JyZXNwb25kIHRvIGZsYWdzIGZvciBlYWNo
IG9mIHRoZSBjbGFzc2VzIG9mCisgKiBjb25mdXNhYmxlcyBhcHBsaWNhYmxlIHRvIHRoZSB0d28g
aW5wdXQgc3RyaW5ncy4gIEFjY29yZGluZyB0byBVVFMgMzkKKyAqIHNlY3Rpb24gNCwgdGhlIHBv
c3NpYmxlIGZsYWdzIGFyZToKKyAqCisgKiA8dWw+CisgKiAgIDxsaT57QGxpbmsgVVNQT09GX1NJ
TkdMRV9TQ1JJUFRfQ09ORlVTQUJMRX08L2xpPgorICogICA8bGk+e0BsaW5rIFVTUE9PRl9NSVhF
RF9TQ1JJUFRfQ09ORlVTQUJMRX08L2xpPgorICogICA8bGk+e0BsaW5rIFVTUE9PRl9XSE9MRV9T
Q1JJUFRfQ09ORlVTQUJMRX08L2xpPgorICogPC91bD4KKyAqCisgKiBJZiBvbmUgb3IgbW9yZSBv
ZiB0aGUgYWJvdmUgZmxhZ3Mgd2VyZSBub3QgbGlzdGVkIGluIHVzcG9vZl9zZXRDaGVja3MoKSwg
dGhpcworICogZnVuY3Rpb24gd2lsbCBuZXZlciByZXBvcnQgdGhhdCBjbGFzcyBvZiBjb25mdXNh
YmxlLiAgVGhlIGNoZWNrCisgKiB7QGxpbmsgVVNQT09GX0NPTkZVU0FCTEV9IGVuYWJsZXMgYWxs
IHRocmVlIGZsYWdzLgogICoKICAqCiAgKiBAcGFyYW0gc2MgICAgICBUaGUgVVNwb29mQ2hlY2tl
cgotICogQHBhcmFtIGlkMSAgICAgVGhlIGZpcnN0IG9mIHRoZSB0d28gaWRlbnRpZmllcnMgdG8g
YmUgY29tcGFyZWQgZm9yIAorICogQHBhcmFtIGlkMSAgICAgVGhlIGZpcnN0IG9mIHRoZSB0d28g
aWRlbnRpZmllcnMgdG8gYmUgY29tcGFyZWQgZm9yCiAgKiAgICAgICAgICAgICAgICBjb25mdXNh
YmlsaXR5LiAgVGhlIHN0cmluZ3MgYXJlIGluIFVURi0xNiBmb3JtYXQuCiAgKiBAcGFyYW0gbGVu
Z3RoMSB0aGUgbGVuZ3RoIG9mIHRoZSBmaXJzdCBpZGVudGlmZXIsIGV4cHJlc3NlZCBpbgotICog
ICAgICAgICAgICAgICAgMTYgYml0IFVURi0xNiBjb2RlIHVuaXRzLCBvciAtMSBpZiB0aGUgc3Ry
aW5nIGlzIAorICogICAgICAgICAgICAgICAgMTYgYml0IFVURi0xNiBjb2RlIHVuaXRzLCBvciAt
MSBpZiB0aGUgc3RyaW5nIGlzCiAgKiAgICAgICAgICAgICAgICBudWwgdGVybWluYXRlZC4KLSAq
IEBwYXJhbSBpZDIgICAgIFRoZSBzZWNvbmQgb2YgdGhlIHR3byBpZGVudGlmaWVycyB0byBiZSBj
b21wYXJlZCBmb3IgCisgKiBAcGFyYW0gaWQyICAgICBUaGUgc2Vjb25kIG9mIHRoZSB0d28gaWRl
bnRpZmllcnMgdG8gYmUgY29tcGFyZWQgZm9yCiAgKiAgICAgICAgICAgICAgICBjb25mdXNhYmls
aXR5LiAgVGhlIGlkZW50aWZpZXJzIGFyZSBpbiBVVEYtMTYgZm9ybWF0LgogICogQHBhcmFtIGxl
bmd0aDIgVGhlIGxlbmd0aCBvZiB0aGUgc2Vjb25kIGlkZW50aWZpZXJzLCBleHByZXNzZWQgaW4K
LSAqICAgICAgICAgICAgICAgIDE2IGJpdCBVVEYtMTYgY29kZSB1bml0cywgb3IgLTEgaWYgdGhl
IHN0cmluZyBpcyAKKyAqICAgICAgICAgICAgICAgIDE2IGJpdCBVVEYtMTYgY29kZSB1bml0cywg
b3IgLTEgaWYgdGhlIHN0cmluZyBpcwogICogICAgICAgICAgICAgICAgbnVsIHRlcm1pbmF0ZWQu
CiAgKiBAcGFyYW0gc3RhdHVzICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIGFuIGVycm9yIG9jY3Vy
cmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8KICAqICAgICAgICAgICAgICAgIHBlcmZvcm0gdGhlIGNo
ZWNrLgpAQCAtNzg2LDYgKzEyOTQsNyBAQCB1c3Bvb2ZfY2hlY2tVbmljb2RlU3RyaW5nKGNvbnN0
IFVTcG9vZkNoZWNrZXIgKnNjLAogICogICAgICAgICAgICAgICAgdGhlIHR5cGUgb2YgY29uZnVz
YWJpbGl0eSBmb3VuZCwgYXMgZGVmaW5lZCBieQogICogICAgICAgICAgICAgICAgZW51bSBVU3Bv
b2ZDaGVja3MuICBaZXJvIGlzIHJldHVybmVkIGlmIHRoZSBpZGVudGlmaWVycwogICogICAgICAg
ICAgICAgICAgYXJlIG5vdCBjb25mdXNhYmxlLgorICoKICAqIEBzdGFibGUgSUNVIDQuMgogICov
CiBVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgpAQCAtNzk3LDE5ICsxMzA2LDE2IEBAIHVzcG9v
Zl9hcmVDb25mdXNhYmxlKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAogCiAKIC8qKgotICogQ2hl
Y2sgdGhlIHdoZXRoZXIgdHdvIHNwZWNpZmllZCBzdHJpbmdzIGFyZSB2aXN1YWxseSBjb25mdXNh
YmxlLgotICogVGhlIHR5cGVzIG9mIGNvbmZ1c2FiaWxpdHkgdG8gYmUgdGVzdGVkIC0gc2luZ2xl
IHNjcmlwdCwgbWl4ZWQgc2NyaXB0LAotICogb3Igd2hvbGUgc2NyaXB0IC0gYXJlIGRldGVybWlu
ZWQgYnkgdGhlIGNoZWNrIG9wdGlvbnMgc2V0IGZvciB0aGUKLSAqIFVTcG9vZkNoZWNrZXIuCisg
KiBBIHZlcnNpb24gb2Yge0BsaW5rIHVzcG9vZl9hcmVDb25mdXNhYmxlfSBhY2NlcHRpbmcgc3Ry
aW5ncyBpbiBVVEYtOCBmb3JtYXQuCiAgKgogICogQHBhcmFtIHNjICAgICAgVGhlIFVTcG9vZkNo
ZWNrZXIKLSAqIEBwYXJhbSBpZDEgICAgIFRoZSBmaXJzdCBvZiB0aGUgdHdvIGlkZW50aWZpZXJz
IHRvIGJlIGNvbXBhcmVkIGZvciAKKyAqIEBwYXJhbSBpZDEgICAgIFRoZSBmaXJzdCBvZiB0aGUg
dHdvIGlkZW50aWZpZXJzIHRvIGJlIGNvbXBhcmVkIGZvcgogICogICAgICAgICAgICAgICAgY29u
ZnVzYWJpbGl0eS4gIFRoZSBzdHJpbmdzIGFyZSBpbiBVVEYtOCBmb3JtYXQuCi0gKiBAcGFyYW0g
bGVuZ3RoMSB0aGUgbGVuZ3RoIG9mIHRoZSBmaXJzdCBpZGVudGlmaWVycywgaW4gYnl0ZXMsIG9y
IC0xIAorICogQHBhcmFtIGxlbmd0aDEgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3QgaWRlbnRpZmll
cnMsIGluIGJ5dGVzLCBvciAtMQogICogICAgICAgICAgICAgICAgaWYgdGhlIHN0cmluZyBpcyBu
dWwgdGVybWluYXRlZC4KLSAqIEBwYXJhbSBpZDIgICAgIFRoZSBzZWNvbmQgb2YgdGhlIHR3byBp
ZGVudGlmaWVycyB0byBiZSBjb21wYXJlZCBmb3IgCisgKiBAcGFyYW0gaWQyICAgICBUaGUgc2Vj
b25kIG9mIHRoZSB0d28gaWRlbnRpZmllcnMgdG8gYmUgY29tcGFyZWQgZm9yCiAgKiAgICAgICAg
ICAgICAgICBjb25mdXNhYmlsaXR5LiAgVGhlIHN0cmluZ3MgYXJlIGluIFVURi04IGZvcm1hdC4K
LSAqIEBwYXJhbSBsZW5ndGgyIFRoZSBsZW5ndGggb2YgdGhlIHNlY29uZCBzdHJpbmcgaW4gYnl0
ZXMsIG9yIC0xIAorICogQHBhcmFtIGxlbmd0aDIgVGhlIGxlbmd0aCBvZiB0aGUgc2Vjb25kIHN0
cmluZyBpbiBieXRlcywgb3IgLTEKICAqICAgICAgICAgICAgICAgIGlmIHRoZSBzdHJpbmcgaXMg
bnVsIHRlcm1pbmF0ZWQuCiAgKiBAcGFyYW0gc3RhdHVzICBUaGUgZXJyb3IgY29kZSwgc2V0IGlm
IGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8KICAqICAgICAgICAgICAgICAg
IHBlcmZvcm0gdGhlIGNoZWNrLgpAQCAtODE5LDcgKzEzMjUsMTAgQEAgdXNwb29mX2FyZUNvbmZ1
c2FibGUoY29uc3QgVVNwb29mQ2hlY2tlciAqc2MsCiAgKiAgICAgICAgICAgICAgICB0aGUgdHlw
ZSBvZiBjb25mdXNhYmlsaXR5IGZvdW5kLCBhcyBkZWZpbmVkIGJ5CiAgKiAgICAgICAgICAgICAg
ICBlbnVtIFVTcG9vZkNoZWNrcy4gIFplcm8gaXMgcmV0dXJuZWQgaWYgdGhlIHN0cmluZ3MKICAq
ICAgICAgICAgICAgICAgIGFyZSBub3QgY29uZnVzYWJsZS4KKyAqCiAgKiBAc3RhYmxlIElDVSA0
LjIKKyAqCisgKiBAc2VlIHVzcG9vZl9hcmVDb25mdXNhYmxlCiAgKi8KIFVfU1RBQkxFIGludDMy
X3QgVV9FWFBPUlQyCiB1c3Bvb2ZfYXJlQ29uZnVzYWJsZVVURjgoY29uc3QgVVNwb29mQ2hlY2tl
ciAqc2MsCkBAIC04MzIsMTUgKzEzNDEsMTIgQEAgdXNwb29mX2FyZUNvbmZ1c2FibGVVVEY4KGNv
bnN0IFVTcG9vZkNoZWNrZXIgKnNjLAogCiAjaWYgVV9TSE9XX0NQTFVTUExVU19BUEkKIC8qKgot
ICogQ2hlY2sgdGhlIHdoZXRoZXIgdHdvIHNwZWNpZmllZCBzdHJpbmdzIGFyZSB2aXN1YWxseSBj
b25mdXNhYmxlLgotICogVGhlIHR5cGVzIG9mIGNvbmZ1c2FiaWxpdHkgdG8gYmUgdGVzdGVkIC0g
c2luZ2xlIHNjcmlwdCwgbWl4ZWQgc2NyaXB0LAotICogb3Igd2hvbGUgc2NyaXB0IC0gYXJlIGRl
dGVybWluZWQgYnkgdGhlIGNoZWNrIG9wdGlvbnMgc2V0IGZvciB0aGUKLSAqIFVTcG9vZkNoZWNr
ZXIuCisgKiBBIHZlcnNpb24gb2Yge0BsaW5rIHVzcG9vZl9hcmVDb25mdXNhYmxlfSBhY2NlcHRp
bmcgVW5pY29kZVN0cmluZ3MuCiAgKgogICogQHBhcmFtIHNjICAgICAgVGhlIFVTcG9vZkNoZWNr
ZXIKLSAqIEBwYXJhbSBzMSAgICAgVGhlIGZpcnN0IG9mIHRoZSB0d28gaWRlbnRpZmllcnMgdG8g
YmUgY29tcGFyZWQgZm9yIAorICogQHBhcmFtIHMxICAgICBUaGUgZmlyc3Qgb2YgdGhlIHR3byBp
ZGVudGlmaWVycyB0byBiZSBjb21wYXJlZCBmb3IKICAqICAgICAgICAgICAgICAgIGNvbmZ1c2Fi
aWxpdHkuICBUaGUgc3RyaW5ncyBhcmUgaW4gVVRGLTggZm9ybWF0LgotICogQHBhcmFtIHMyICAg
ICBUaGUgc2Vjb25kIG9mIHRoZSB0d28gaWRlbnRpZmllcnMgdG8gYmUgY29tcGFyZWQgZm9yIAor
ICogQHBhcmFtIHMyICAgICBUaGUgc2Vjb25kIG9mIHRoZSB0d28gaWRlbnRpZmllcnMgdG8gYmUg
Y29tcGFyZWQgZm9yCiAgKiAgICAgICAgICAgICAgICBjb25mdXNhYmlsaXR5LiAgVGhlIHN0cmlu
Z3MgYXJlIGluIFVURi04IGZvcm1hdC4KICAqIEBwYXJhbSBzdGF0dXMgIFRoZSBlcnJvciBjb2Rl
LCBzZXQgaWYgYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0bwogICogICAgICAg
ICAgICAgICAgcGVyZm9ybSB0aGUgY2hlY2suCkBAIC04NTAsNyArMTM1NiwxMCBAQCB1c3Bvb2Zf
YXJlQ29uZnVzYWJsZVVURjgoY29uc3QgVVNwb29mQ2hlY2tlciAqc2MsCiAgKiAgICAgICAgICAg
ICAgICB0aGUgdHlwZSBvZiBjb25mdXNhYmlsaXR5IGZvdW5kLCBhcyBkZWZpbmVkIGJ5CiAgKiAg
ICAgICAgICAgICAgICBlbnVtIFVTcG9vZkNoZWNrcy4gIFplcm8gaXMgcmV0dXJuZWQgaWYgdGhl
IGlkZW50aWZpZXJzCiAgKiAgICAgICAgICAgICAgICBhcmUgbm90IGNvbmZ1c2FibGUuCisgKgog
ICogQHN0YWJsZSBJQ1UgNC4yCisgKgorICogQHNlZSB1c3Bvb2ZfYXJlQ29uZnVzYWJsZQogICov
CiBVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgogdXNwb29mX2FyZUNvbmZ1c2FibGVVbmljb2Rl
U3RyaW5nKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLApAQCAtODYxLDExMiArMTM3MCwxMDcgQEAg
dXNwb29mX2FyZUNvbmZ1c2FibGVVbmljb2RlU3RyaW5nKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNj
LAogCiAKIC8qKgotICAqICBHZXQgdGhlICJza2VsZXRvbiIgZm9yIGFuIGlkZW50aWZpZXIuCi0g
ICogIFNrZWxldG9ucyBhcmUgYSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgaW5wdXQgaWRlbnRpZmll
cjsKLSAgKiAgVHdvIGlkZW50aWZpZXJzIGFyZSBjb25mdXNhYmxlIGlmIHRoZWlyIHNrZWxldG9u
cyBhcmUgaWRlbnRpY2FsLgotICAqICBTZWUgVW5pY29kZSBVQVggIzM5IGZvciBhZGRpdGlvbmFs
IGluZm9ybWF0aW9uLgotICAqCi0gICogIFVzaW5nIHNrZWxldG9ucyBkaXJlY3RseSBtYWtlcyBp
dCBwb3NzaWJsZSB0byBxdWlja2x5IGNoZWNrCi0gICogIHdoZXRoZXIgYW4gaWRlbnRpZmllciBp
cyBjb25mdXNhYmxlIHdpdGggYW55IG9mIHNvbWUgbGFyZ2UKLSAgKiAgc2V0IG9mIGV4aXN0aW5n
IGlkZW50aWZpZXJzLCBieSBjcmVhdGluZyBhbiBlZmZpY2llbnRseQotICAqICBzZWFyY2hhYmxl
IGNvbGxlY3Rpb24gb2YgdGhlIHNrZWxldG9ucy4KLSAgKgotICAqIEBwYXJhbSBzYyAgICAgIFRo
ZSBVU3Bvb2ZDaGVja2VyCi0gICogQHBhcmFtIHR5cGUgICAgVGhlIHR5cGUgb2Ygc2tlbGV0b24s
IGNvcnJlc3BvbmRpbmcgdG8gd2hpY2gKLSAgKiAgICAgICAgICAgICAgICBvZiB0aGUgVW5pY29k
ZSBjb25mdXNhYmxlIGRhdGEgdGFibGVzIHRvIHVzZS4KLSAgKiAgICAgICAgICAgICAgICBUaGUg
ZGVmYXVsdCBpcyBNaXhlZC1TY3JpcHQsIExvd2VyY2FzZS4KLSAgKiAgICAgICAgICAgICAgICBB
bGxvd2VkIG9wdGlvbnMgYXJlIFVTUE9PRl9TSU5HTEVfU0NSSVBUX0NPTkZVU0FCTEUgYW5kCi0g
ICogICAgICAgICAgICAgICAgVVNQT09GX0FOWV9DQVNFLiAgVGhlIHR3byBmbGFncyBtYXkgYmUg
T1JlZC4KLSAgKiBAcGFyYW0gaWQgICAgICBUaGUgaW5wdXQgaWRlbnRpZmllciB3aG9zZSBza2Vs
ZXRvbiB3aWxsIGJlIGNvbXB1dGVkLgotICAqIEBwYXJhbSBsZW5ndGggIFRoZSBsZW5ndGggb2Yg
dGhlIGlucHV0IGlkZW50aWZpZXIsIGV4cHJlc3NlZCBpbiAxNiBiaXQKLSAgKiAgICAgICAgICAg
ICAgICBVVEYtMTYgY29kZSB1bml0cywgb3IgLTEgaWYgdGhlIHN0cmluZyBpcyB6ZXJvIHRlcm1p
bmF0ZWQuCi0gICogQHBhcmFtIGRlc3QgICAgVGhlIG91dHB1dCBidWZmZXIsIHRvIHJlY2VpdmUg
dGhlIHNrZWxldG9uIHN0cmluZy4KLSAgKiBAcGFyYW0gZGVzdENhcGFjaXR5ICBUaGUgbGVuZ3Ro
IG9mIHRoZSBvdXRwdXQgYnVmZmVyLCBpbiAxNiBiaXQgdW5pdHMuCi0gICogICAgICAgICAgICAg
ICAgVGhlIGRlc3RDYXBhY2l0eSBtYXkgYmUgemVybywgaW4gd2hpY2ggY2FzZSB0aGUgZnVuY3Rp
b24gd2lsbAotICAqICAgICAgICAgICAgICAgIHJldHVybiB0aGUgYWN0dWFsIGxlbmd0aCBvZiB0
aGUgc2tlbGV0b24uCi0gICogQHBhcmFtIHN0YXR1cyAgVGhlIGVycm9yIGNvZGUsIHNldCBpZiBh
biBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvCi0gICogICAgICAgICAgICAgICAg
cGVyZm9ybSB0aGUgY2hlY2suCi0gICogQHJldHVybiAgICAgICAgVGhlIGxlbmd0aCBvZiB0aGUg
c2tlbGV0b24gc3RyaW5nLiAgVGhlIHJldHVybmVkIGxlbmd0aAotICAqICAgICAgICAgICAgICAg
IGlzIGFsd2F5cyB0aGF0IG9mIHRoZSBjb21wbGV0ZSBza2VsZXRvbiwgZXZlbiB3aGVuIHRoZQot
ICAqICAgICAgICAgICAgICAgIHN1cHBsaWVkIGJ1ZmZlciBpcyB0b28gc21hbGwgKG9yIG9mIHpl
cm8gbGVuZ3RoKQotICAqICAgICAgICAgICAgICAgIAotICAqIEBzdGFibGUgSUNVIDQuMgotICAq
LworICogIEdldCB0aGUgInNrZWxldG9uIiBmb3IgYW4gaWRlbnRpZmllci4KKyAqICBTa2VsZXRv
bnMgYXJlIGEgdHJhbnNmb3JtYXRpb24gb2YgdGhlIGlucHV0IGlkZW50aWZpZXI7CisgKiBUd28g
aWRlbnRpZmllcnMgYXJlIGNvbmZ1c2FibGUgaWYgdGhlaXIgc2tlbGV0b25zIGFyZSBpZGVudGlj
YWwuCisgKiAgU2VlIFVuaWNvZGUgVUFYICMzOSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4K
KyAqCisgKiAgVXNpbmcgc2tlbGV0b25zIGRpcmVjdGx5IG1ha2VzIGl0IHBvc3NpYmxlIHRvIHF1
aWNrbHkgY2hlY2sKKyAqICB3aGV0aGVyIGFuIGlkZW50aWZpZXIgaXMgY29uZnVzYWJsZSB3aXRo
IGFueSBvZiBzb21lIGxhcmdlCisgKiAgc2V0IG9mIGV4aXN0aW5nIGlkZW50aWZpZXJzLCBieSBj
cmVhdGluZyBhbiBlZmZpY2llbnRseQorICogIHNlYXJjaGFibGUgY29sbGVjdGlvbiBvZiB0aGUg
c2tlbGV0b25zLgorICoKKyAqIEBwYXJhbSBzYyAgICAgIFRoZSBVU3Bvb2ZDaGVja2VyCisgKiBA
cGFyYW0gdHlwZSAgICBEZXByZWNhdGVkIGluIElDVSA1OC4gIFlvdSBtYXkgcGFzcyBhbnkgbnVt
YmVyLgorICogICAgICAgICAgICAgICAgT3JpZ2luYWxseSwgY29udHJvbGxlZCB3aGljaCBvZiB0
aGUgVW5pY29kZSBjb25mdXNhYmxlIGRhdGEKKyAqICAgICAgICAgICAgICAgIHRhYmxlcyB0byB1
c2UuCisgKiBAcGFyYW0gaWQgICAgICBUaGUgaW5wdXQgaWRlbnRpZmllciB3aG9zZSBza2VsZXRv
biB3aWxsIGJlIGNvbXB1dGVkLgorICogQHBhcmFtIGxlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUg
aW5wdXQgaWRlbnRpZmllciwgZXhwcmVzc2VkIGluIDE2IGJpdAorICogICAgICAgICAgICAgICAg
VVRGLTE2IGNvZGUgdW5pdHMsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMgemVybyB0ZXJtaW5hdGVk
LgorICogQHBhcmFtIGRlc3QgICAgVGhlIG91dHB1dCBidWZmZXIsIHRvIHJlY2VpdmUgdGhlIHNr
ZWxldG9uIHN0cmluZy4KKyAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgIFRoZSBsZW5ndGggb2YgdGhl
IG91dHB1dCBidWZmZXIsIGluIDE2IGJpdCB1bml0cy4KKyAqICAgICAgICAgICAgICAgIFRoZSBk
ZXN0Q2FwYWNpdHkgbWF5IGJlIHplcm8sIGluIHdoaWNoIGNhc2UgdGhlIGZ1bmN0aW9uIHdpbGwK
KyAqICAgICAgICAgICAgICAgIHJldHVybiB0aGUgYWN0dWFsIGxlbmd0aCBvZiB0aGUgc2tlbGV0
b24uCisgKiBAcGFyYW0gc3RhdHVzICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIGFuIGVycm9yIG9j
Y3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8KKyAqICAgICAgICAgICAgICAgIHBlcmZvcm0gdGhl
IGNoZWNrLgorICogQHJldHVybiAgICAgICAgVGhlIGxlbmd0aCBvZiB0aGUgc2tlbGV0b24gc3Ry
aW5nLiAgVGhlIHJldHVybmVkIGxlbmd0aAorICogICAgICAgICAgICAgICAgaXMgYWx3YXlzIHRo
YXQgb2YgdGhlIGNvbXBsZXRlIHNrZWxldG9uLCBldmVuIHdoZW4gdGhlCisgKiAgICAgICAgICAg
ICAgICBzdXBwbGllZCBidWZmZXIgaXMgdG9vIHNtYWxsIChvciBvZiB6ZXJvIGxlbmd0aCkKKyAq
CisgKiBAc3RhYmxlIElDVSA0LjIKKyAqIEBzZWUgdXNwb29mX2FyZUNvbmZ1c2FibGUKKyAqLwog
VV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKIHVzcG9vZl9nZXRTa2VsZXRvbihjb25zdCBVU3Bv
b2ZDaGVja2VyICpzYywKICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLAogICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFVDaGFyICppZCwgIGludDMyX3QgbGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgIFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKICAgICAgICAgICAg
ICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwotICAgIAorCiAvKioKLSAgKiAgR2V0IHRoZSAi
c2tlbGV0b24iIGZvciBhbiBpZGVudGlmaWVyLgotICAqICBTa2VsZXRvbnMgYXJlIGEgdHJhbnNm
b3JtYXRpb24gb2YgdGhlIGlucHV0IGlkZW50aWZpZXI7Ci0gICogIFR3byBpZGVudGlmaWVycyBh
cmUgY29uZnVzYWJsZSBpZiB0aGVpciBza2VsZXRvbnMgYXJlIGlkZW50aWNhbC4KLSAgKiAgU2Vl
IFVuaWNvZGUgVUFYICMzOSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KLSAgKgotICAqICBV
c2luZyBza2VsZXRvbnMgZGlyZWN0bHkgbWFrZXMgaXQgcG9zc2libGUgdG8gcXVpY2tseSBjaGVj
awotICAqICB3aGV0aGVyIGFuIGlkZW50aWZpZXIgaXMgY29uZnVzYWJsZSB3aXRoIGFueSBvZiBz
b21lIGxhcmdlCi0gICogIHNldCBvZiBleGlzdGluZyBpZGVudGlmaWVycywgYnkgY3JlYXRpbmcg
YW4gZWZmaWNpZW50bHkKLSAgKiAgc2VhcmNoYWJsZSBjb2xsZWN0aW9uIG9mIHRoZSBza2VsZXRv
bnMuCi0gICoKLSAgKiBAcGFyYW0gc2MgICAgICBUaGUgVVNwb29mQ2hlY2tlciAKLSAgKiBAcGFy
YW0gdHlwZSAgICBUaGUgdHlwZSBvZiBza2VsZXRvbiwgY29ycmVzcG9uZGluZyB0byB3aGljaAot
ICAqICAgICAgICAgICAgICAgIG9mIHRoZSBVbmljb2RlIGNvbmZ1c2FibGUgZGF0YSB0YWJsZXMg
dG8gdXNlLgotICAqICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIE1peGVkLVNjcmlwdCwg
TG93ZXJjYXNlLgotICAqICAgICAgICAgICAgICAgIEFsbG93ZWQgb3B0aW9ucyBhcmUgVVNQT09G
X1NJTkdMRV9TQ1JJUFRfQ09ORlVTQUJMRSBhbmQKLSAgKiAgICAgICAgICAgICAgICBVU1BPT0Zf
QU5ZX0NBU0UuICBUaGUgdHdvIGZsYWdzIG1heSBiZSBPUmVkLgotICAqIEBwYXJhbSBpZCAgICAg
IFRoZSBVVEYtOCBmb3JtYXQgaWRlbnRpZmllciB3aG9zZSBza2VsZXRvbiB3aWxsIGJlIGNvbXB1
dGVkLgotICAqIEBwYXJhbSBsZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIGlucHV0IHN0cmluZywg
aW4gYnl0ZXMsCi0gICogICAgICAgICAgICAgICAgb3IgLTEgaWYgdGhlIHN0cmluZyBpcyB6ZXJv
IHRlcm1pbmF0ZWQuCi0gICogQHBhcmFtIGRlc3QgICAgVGhlIG91dHB1dCBidWZmZXIsIHRvIHJl
Y2VpdmUgdGhlIHNrZWxldG9uIHN0cmluZy4KLSAgKiBAcGFyYW0gZGVzdENhcGFjaXR5ICBUaGUg
bGVuZ3RoIG9mIHRoZSBvdXRwdXQgYnVmZmVyLCBpbiBieXRlcy4KLSAgKiAgICAgICAgICAgICAg
ICBUaGUgZGVzdENhcGFjaXR5IG1heSBiZSB6ZXJvLCBpbiB3aGljaCBjYXNlIHRoZSBmdW5jdGlv
biB3aWxsCi0gICogICAgICAgICAgICAgICAgcmV0dXJuIHRoZSBhY3R1YWwgbGVuZ3RoIG9mIHRo
ZSBza2VsZXRvbi4KLSAgKiBAcGFyYW0gc3RhdHVzICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIGFu
IGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8KLSAgKiAgICAgICAgICAgICAgICBw
ZXJmb3JtIHRoZSBjaGVjay4gIFBvc3NpYmxlIEVycm9ycyBpbmNsdWRlIFVfSU5WQUxJRF9DSEFS
X0ZPVU5ECi0gICogICAgICAgICAgICAgICAgICAgZm9yIGludmFsaWQgVVRGLTggc2VxdWVuY2Vz
LCBhbmQKLSAgKiAgICAgICAgICAgICAgICAgICBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUiBpZiB0
aGUgZGVzdGluYXRpb24gYnVmZmVyIGlzIHRvbyBzbWFsbAotICAqICAgICAgICAgICAgICAgICAg
IHRvIGhvbGQgdGhlIGNvbXBsZXRlIHNrZWxldG9uLgotICAqIEByZXR1cm4gICAgICAgIFRoZSBs
ZW5ndGggb2YgdGhlIHNrZWxldG9uIHN0cmluZywgaW4gYnl0ZXMuICBUaGUgcmV0dXJuZWQgbGVu
Z3RoCi0gICogICAgICAgICAgICAgICAgaXMgYWx3YXlzIHRoYXQgb2YgdGhlIGNvbXBsZXRlIHNr
ZWxldG9uLCBldmVuIHdoZW4gdGhlCi0gICogICAgICAgICAgICAgICAgc3VwcGxpZWQgYnVmZmVy
IGlzIHRvbyBzbWFsbCAob3Igb2YgemVybyBsZW5ndGgpCi0gICogICAgICAgICAgICAgICAgCi0g
ICogQHN0YWJsZSBJQ1UgNC4yCi0gICovICAgCisgKiAgR2V0IHRoZSAic2tlbGV0b24iIGZvciBh
biBpZGVudGlmaWVyLgorICogIFNrZWxldG9ucyBhcmUgYSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUg
aW5wdXQgaWRlbnRpZmllcjsKKyAqICBUd28gaWRlbnRpZmllcnMgYXJlIGNvbmZ1c2FibGUgaWYg
dGhlaXIgc2tlbGV0b25zIGFyZSBpZGVudGljYWwuCisgKiAgU2VlIFVuaWNvZGUgVUFYICMzOSBm
b3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAqCisgKiAgVXNpbmcgc2tlbGV0b25zIGRpcmVj
dGx5IG1ha2VzIGl0IHBvc3NpYmxlIHRvIHF1aWNrbHkgY2hlY2sKKyAqICB3aGV0aGVyIGFuIGlk
ZW50aWZpZXIgaXMgY29uZnVzYWJsZSB3aXRoIGFueSBvZiBzb21lIGxhcmdlCisgKiAgc2V0IG9m
IGV4aXN0aW5nIGlkZW50aWZpZXJzLCBieSBjcmVhdGluZyBhbiBlZmZpY2llbnRseQorICogIHNl
YXJjaGFibGUgY29sbGVjdGlvbiBvZiB0aGUgc2tlbGV0b25zLgorICoKKyAqIEBwYXJhbSBzYyAg
ICAgIFRoZSBVU3Bvb2ZDaGVja2VyCisgKiBAcGFyYW0gdHlwZSAgICBEZXByZWNhdGVkIGluIElD
VSA1OC4gIFlvdSBtYXkgcGFzcyBhbnkgbnVtYmVyLgorICogICAgICAgICAgICAgICAgT3JpZ2lu
YWxseSwgY29udHJvbGxlZCB3aGljaCBvZiB0aGUgVW5pY29kZSBjb25mdXNhYmxlIGRhdGEKKyAq
ICAgICAgICAgICAgICAgIHRhYmxlcyB0byB1c2UuCisgKiBAcGFyYW0gaWQgICAgICBUaGUgVVRG
LTggZm9ybWF0IGlkZW50aWZpZXIgd2hvc2Ugc2tlbGV0b24gd2lsbCBiZSBjb21wdXRlZC4KKyAq
IEBwYXJhbSBsZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIGlucHV0IHN0cmluZywgaW4gYnl0ZXMs
CisgKiAgICAgICAgICAgICAgICBvciAtMSBpZiB0aGUgc3RyaW5nIGlzIHplcm8gdGVybWluYXRl
ZC4KKyAqIEBwYXJhbSBkZXN0ICAgIFRoZSBvdXRwdXQgYnVmZmVyLCB0byByZWNlaXZlIHRoZSBz
a2VsZXRvbiBzdHJpbmcuCisgKiBAcGFyYW0gZGVzdENhcGFjaXR5ICBUaGUgbGVuZ3RoIG9mIHRo
ZSBvdXRwdXQgYnVmZmVyLCBpbiBieXRlcy4KKyAqICAgICAgICAgICAgICAgIFRoZSBkZXN0Q2Fw
YWNpdHkgbWF5IGJlIHplcm8sIGluIHdoaWNoIGNhc2UgdGhlIGZ1bmN0aW9uIHdpbGwKKyAqICAg
ICAgICAgICAgICAgIHJldHVybiB0aGUgYWN0dWFsIGxlbmd0aCBvZiB0aGUgc2tlbGV0b24uCisg
KiBAcGFyYW0gc3RhdHVzICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIGFuIGVycm9yIG9jY3VycmVk
IHdoaWxlIGF0dGVtcHRpbmcgdG8KKyAqICAgICAgICAgICAgICAgIHBlcmZvcm0gdGhlIGNoZWNr
LiAgUG9zc2libGUgRXJyb3JzIGluY2x1ZGUgVV9JTlZBTElEX0NIQVJfRk9VTkQKKyAqICAgICAg
ICAgICAgICAgICAgIGZvciBpbnZhbGlkIFVURi04IHNlcXVlbmNlcywgYW5kCisgKiAgICAgICAg
ICAgICAgICAgICBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUiBpZiB0aGUgZGVzdGluYXRpb24gYnVm
ZmVyIGlzIHRvbyBzbWFsbAorICogICAgICAgICAgICAgICAgICAgdG8gaG9sZCB0aGUgY29tcGxl
dGUgc2tlbGV0b24uCisgKiBAcmV0dXJuICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBza2VsZXRv
biBzdHJpbmcsIGluIGJ5dGVzLiAgVGhlIHJldHVybmVkIGxlbmd0aAorICogICAgICAgICAgICAg
ICAgaXMgYWx3YXlzIHRoYXQgb2YgdGhlIGNvbXBsZXRlIHNrZWxldG9uLCBldmVuIHdoZW4gdGhl
CisgKiAgICAgICAgICAgICAgICBzdXBwbGllZCBidWZmZXIgaXMgdG9vIHNtYWxsIChvciBvZiB6
ZXJvIGxlbmd0aCkKKyAqCisgKiBAc3RhYmxlIElDVSA0LjIKKyAqLwogVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKIHVzcG9vZl9nZXRTa2VsZXRvblVURjgoY29uc3QgVVNwb29mQ2hlY2tlciAq
c2MsCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKmlkLCAgaW50MzJfdCBsZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LAogICAgICAgICAgICAg
ICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwotICAgIAorCiAjaWYgVV9TSE9XX0NQTFVT
UExVU19BUEkKIC8qKgotICAqICBHZXQgdGhlICJza2VsZXRvbiIgZm9yIGFuIGlkZW50aWZpZXIu
Ci0gICogIFNrZWxldG9ucyBhcmUgYSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgaW5wdXQgaWRlbnRp
ZmllcjsKLSAgKiAgVHdvIGlkZW50aWZpZXJzIGFyZSBjb25mdXNhYmxlIGlmIHRoZWlyIHNrZWxl
dG9ucyBhcmUgaWRlbnRpY2FsLgotICAqICBTZWUgVW5pY29kZSBVQVggIzM5IGZvciBhZGRpdGlv
bmFsIGluZm9ybWF0aW9uLgotICAqCi0gICogIFVzaW5nIHNrZWxldG9ucyBkaXJlY3RseSBtYWtl
cyBpdCBwb3NzaWJsZSB0byBxdWlja2x5IGNoZWNrCi0gICogIHdoZXRoZXIgYW4gaWRlbnRpZmll
ciBpcyBjb25mdXNhYmxlIHdpdGggYW55IG9mIHNvbWUgbGFyZ2UKLSAgKiAgc2V0IG9mIGV4aXN0
aW5nIGlkZW50aWZpZXJzLCBieSBjcmVhdGluZyBhbiBlZmZpY2llbnRseQotICAqICBzZWFyY2hh
YmxlIGNvbGxlY3Rpb24gb2YgdGhlIHNrZWxldG9ucy4KLSAgKgotICAqIEBwYXJhbSBzYyAgICAg
IFRoZSBVU3Bvb2ZDaGVja2VyLgotICAqIEBwYXJhbSB0eXBlICAgIFRoZSB0eXBlIG9mIHNrZWxl
dG9uLCBjb3JyZXNwb25kaW5nIHRvIHdoaWNoCi0gICogICAgICAgICAgICAgICAgb2YgdGhlIFVu
aWNvZGUgY29uZnVzYWJsZSBkYXRhIHRhYmxlcyB0byB1c2UuCi0gICogICAgICAgICAgICAgICAg
VGhlIGRlZmF1bHQgaXMgTWl4ZWQtU2NyaXB0LCBMb3dlcmNhc2UuCi0gICogICAgICAgICAgICAg
ICAgQWxsb3dlZCBvcHRpb25zIGFyZSBVU1BPT0ZfU0lOR0xFX1NDUklQVF9DT05GVVNBQkxFIGFu
ZAotICAqICAgICAgICAgICAgICAgIFVTUE9PRl9BTllfQ0FTRS4gIFRoZSB0d28gZmxhZ3MgbWF5
IGJlIE9SZWQuCi0gICogQHBhcmFtIGlkICAgICAgVGhlIGlucHV0IGlkZW50aWZpZXIgd2hvc2Ug
c2tlbGV0b24gd2lsbCBiZSBjb21wdXRlZC4KLSAgKiBAcGFyYW0gZGVzdCAgICBUaGUgb3V0cHV0
IGlkZW50aWZpZXIsIHRvIHJlY2VpdmUgdGhlIHNrZWxldG9uIHN0cmluZy4KLSAgKiBAcGFyYW0g
c3RhdHVzICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0
dGVtcHRpbmcgdG8KLSAgKiAgICAgICAgICAgICAgICBwZXJmb3JtIHRoZSBjaGVjay4KLSAgKiBA
cmV0dXJuICAgICAgICBBIHJlZmVyZW5jZSB0byB0aGUgZGVzdGluYXRpb24gKHNrZWxldG9uKSBz
dHJpbmcuCi0gICogICAgICAgICAgICAgICAgCi0gICogQHN0YWJsZSBJQ1UgNC4yCi0gICovICAg
CisgKiAgR2V0IHRoZSAic2tlbGV0b24iIGZvciBhbiBpZGVudGlmaWVyLgorICogIFNrZWxldG9u
cyBhcmUgYSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgaW5wdXQgaWRlbnRpZmllcjsKKyAqICBUd28g
aWRlbnRpZmllcnMgYXJlIGNvbmZ1c2FibGUgaWYgdGhlaXIgc2tlbGV0b25zIGFyZSBpZGVudGlj
YWwuCisgKiAgU2VlIFVuaWNvZGUgVUFYICMzOSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4K
KyAqCisgKiAgVXNpbmcgc2tlbGV0b25zIGRpcmVjdGx5IG1ha2VzIGl0IHBvc3NpYmxlIHRvIHF1
aWNrbHkgY2hlY2sKKyAqICB3aGV0aGVyIGFuIGlkZW50aWZpZXIgaXMgY29uZnVzYWJsZSB3aXRo
IGFueSBvZiBzb21lIGxhcmdlCisgKiAgc2V0IG9mIGV4aXN0aW5nIGlkZW50aWZpZXJzLCBieSBj
cmVhdGluZyBhbiBlZmZpY2llbnRseQorICogIHNlYXJjaGFibGUgY29sbGVjdGlvbiBvZiB0aGUg
c2tlbGV0b25zLgorICoKKyAqIEBwYXJhbSBzYyAgICAgIFRoZSBVU3Bvb2ZDaGVja2VyLgorICog
QHBhcmFtIHR5cGUgICAgRGVwcmVjYXRlZCBpbiBJQ1UgNTguICBZb3UgbWF5IHBhc3MgYW55IG51
bWJlci4KKyAqICAgICAgICAgICAgICAgIE9yaWdpbmFsbHksIGNvbnRyb2xsZWQgd2hpY2ggb2Yg
dGhlIFVuaWNvZGUgY29uZnVzYWJsZSBkYXRhCisgKiAgICAgICAgICAgICAgICB0YWJsZXMgdG8g
dXNlLgorICogQHBhcmFtIGlkICAgICAgVGhlIGlucHV0IGlkZW50aWZpZXIgd2hvc2Ugc2tlbGV0
b24gd2lsbCBiZSBjb21wdXRlZC4KKyAqIEBwYXJhbSBkZXN0ICAgIFRoZSBvdXRwdXQgaWRlbnRp
ZmllciwgdG8gcmVjZWl2ZSB0aGUgc2tlbGV0b24gc3RyaW5nLgorICogQHBhcmFtIHN0YXR1cyAg
VGhlIGVycm9yIGNvZGUsIHNldCBpZiBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5n
IHRvCisgKiAgICAgICAgICAgICAgICBwZXJmb3JtIHRoZSBjaGVjay4KKyAqIEByZXR1cm4gICAg
ICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBkZXN0aW5hdGlvbiAoc2tlbGV0b24pIHN0cmluZy4KKyAq
CisgKiBAc3RhYmxlIElDVSA0LjIKKyAqLwogVV9JMThOX0FQSSBpY3U6OlVuaWNvZGVTdHJpbmcg
JiBVX0VYUE9SVDIKIHVzcG9vZl9nZXRTa2VsZXRvblVuaWNvZGVTdHJpbmcoY29uc3QgVVNwb29m
Q2hlY2tlciAqc2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5
cGUsCkBAIC05NzcsNyArMTQ4MSw4IEBAIHVzcG9vZl9nZXRTa2VsZXRvblVuaWNvZGVTdHJpbmco
Y29uc3QgVVNwb29mQ2hlY2tlciAqc2MsCiAKIC8qKgogICAqIEdldCB0aGUgc2V0IG9mIENhbmRp
ZGF0ZSBDaGFyYWN0ZXJzIGZvciBJbmNsdXNpb24gaW4gSWRlbnRpZmllcnMsIGFzIGRlZmluZWQK
LSAgKiBpbiBVbmljb2RlIFVBWCAjMzEsIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90
cjMxLyNUYWJsZV9DYW5kaWRhdGVfQ2hhcmFjdGVyc19mb3JfSW5jbHVzaW9uX2luX0lkZW50aWZp
ZXJzCisgICogaW4gaHR0cDovL3VuaWNvZGUub3JnL1B1YmxpYy9zZWN1cml0eS9sYXRlc3QveGlk
bW9kaWZpY2F0aW9ucy50eHQKKyAgKiBhbmQgZG9jdW1lbnRlZCBpbiBodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL3JlcG9ydHMvdHIzOS8sIFVuaWNvZGUgU2VjdXJpdHkgTWVjaGFuaXNtcy4KICAgKgog
ICAqIFRoZSByZXR1cm5lZCBzZXQgaXMgZnJvemVuLiBPd25lcnNoaXAgb2YgdGhlIHNldCByZW1h
aW5zIHdpdGggdGhlIElDVSBsaWJyYXJ5OyBpdCBtdXN0IG5vdAogICAqIGJlIGRlbGV0ZWQgYnkg
dGhlIGNhbGxlci4KQEAgLTk5MSw3ICsxNDk2LDggQEAgdXNwb29mX2dldEluY2x1c2lvblNldChV
RXJyb3JDb2RlICpzdGF0dXMpOwogCiAvKioKICAgKiBHZXQgdGhlIHNldCBvZiBjaGFyYWN0ZXJz
IGZyb20gUmVjb21tZW5kZWQgU2NyaXB0cyBmb3IgSW5jbHVzaW9uIGluIElkZW50aWZpZXJzLCBh
cyBkZWZpbmVkCi0gICogaW4gVW5pY29kZSBVQVggIzMxLCBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L3JlcG9ydHMvdHIzMS8jVGFibGVfUmVjb21tZW5kZWRfU2NyaXB0cworICAqIGluIGh0dHA6Ly91
bmljb2RlLm9yZy9QdWJsaWMvc2VjdXJpdHkvbGF0ZXN0L3hpZG1vZGlmaWNhdGlvbnMudHh0Cisg
ICogYW5kIGRvY3VtZW50ZWQgaW4gaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzkv
LCBVbmljb2RlIFNlY3VyaXR5IE1lY2hhbmlzbXMuCiAgICoKICAgKiBUaGUgcmV0dXJuZWQgc2V0
IGlzIGZyb3plbi4gT3duZXJzaGlwIG9mIHRoZSBzZXQgcmVtYWlucyB3aXRoIHRoZSBJQ1UgbGli
cmFyeTsgaXQgbXVzdCBub3QKICAgKiBiZSBkZWxldGVkIGJ5IHRoZSBjYWxsZXIuCkBAIC0xMDA3
LDcgKzE1MTMsOCBAQCB1c3Bvb2ZfZ2V0UmVjb21tZW5kZWRTZXQoVUVycm9yQ29kZSAqc3RhdHVz
KTsKIAogLyoqCiAgICogR2V0IHRoZSBzZXQgb2YgQ2FuZGlkYXRlIENoYXJhY3RlcnMgZm9yIElu
Y2x1c2lvbiBpbiBJZGVudGlmaWVycywgYXMgZGVmaW5lZAotICAqIGluIFVuaWNvZGUgVUFYICMz
MSwgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzEvI1RhYmxlX0NhbmRpZGF0ZV9D
aGFyYWN0ZXJzX2Zvcl9JbmNsdXNpb25faW5fSWRlbnRpZmllcnMKKyAgKiBpbiBodHRwOi8vdW5p
Y29kZS5vcmcvUHVibGljL3NlY3VyaXR5L2xhdGVzdC94aWRtb2RpZmljYXRpb25zLnR4dAorICAq
IGFuZCBkb2N1bWVudGVkIGluIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM5Lywg
VW5pY29kZSBTZWN1cml0eSBNZWNoYW5pc21zLgogICAqCiAgICogVGhlIHJldHVybmVkIHNldCBp
cyBmcm96ZW4uIE93bmVyc2hpcCBvZiB0aGUgc2V0IHJlbWFpbnMgd2l0aCB0aGUgSUNVIGxpYnJh
cnk7IGl0IG11c3Qgbm90CiAgICogYmUgZGVsZXRlZCBieSB0aGUgY2FsbGVyLgpAQCAtMTAyMSw3
ICsxNTI4LDggQEAgdXNwb29mX2dldEluY2x1c2lvblVuaWNvZGVTZXQoVUVycm9yQ29kZSAqc3Rh
dHVzKTsKIAogLyoqCiAgICogR2V0IHRoZSBzZXQgb2YgY2hhcmFjdGVycyBmcm9tIFJlY29tbWVu
ZGVkIFNjcmlwdHMgZm9yIEluY2x1c2lvbiBpbiBJZGVudGlmaWVycywgYXMgZGVmaW5lZAotICAq
IGluIFVuaWNvZGUgVUFYICMzMSwgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzEv
I1RhYmxlX1JlY29tbWVuZGVkX1NjcmlwdHMKKyAgKiBpbiBodHRwOi8vdW5pY29kZS5vcmcvUHVi
bGljL3NlY3VyaXR5L2xhdGVzdC94aWRtb2RpZmljYXRpb25zLnR4dAorICAqIGFuZCBkb2N1bWVu
dGVkIGluIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM5LywgVW5pY29kZSBTZWN1
cml0eSBNZWNoYW5pc21zLgogICAqCiAgICogVGhlIHJldHVybmVkIHNldCBpcyBmcm96ZW4uIE93
bmVyc2hpcCBvZiB0aGUgc2V0IHJlbWFpbnMgd2l0aCB0aGUgSUNVIGxpYnJhcnk7IGl0IG11c3Qg
bm90CiAgICogYmUgZGVsZXRlZCBieSB0aGUgY2FsbGVyLgpAQCAtMTA0MSw3ICsxNTQ5LDcgQEAg
dXNwb29mX2dldFJlY29tbWVuZGVkVW5pY29kZVNldChVRXJyb3JDb2RlICpzdGF0dXMpOwogICog
aW5zdGFudGlhdGUgYSBuZXcgU3Bvb2YgRGV0ZWN0b3IuCiAgKgogICogVGhlIHNlcmlhbGl6ZWQg
c3Bvb2YgY2hlY2tlciBpbmNsdWRlcyBvbmx5IHRoZSBkYXRhIGNvbXBpbGVkIGZyb20gdGhlCi0g
KiBVbmljb2RlIGRhdGEgdGFibGVzIGJ5IHVzcG9vZl9vcGVuRnJvbVNvdXJjZSgpOyBpdCBkb2Vz
IG5vdCBpbmNsdWRlIAorICogVW5pY29kZSBkYXRhIHRhYmxlcyBieSB1c3Bvb2Zfb3BlbkZyb21T
b3VyY2UoKTsgaXQgZG9lcyBub3QgaW5jbHVkZQogICogaW5jbHVkZSBhbnkgb3RoZXIgc3RhdGUg
b3IgY29uZmlndXJhdGlvbiB0aGF0IG1heSBoYXZlIGJlZW4gc2V0LgogICoKICAqIEBwYXJhbSBz
YyAgIHRoZSBTcG9vZiBEZXRlY3RvciB3aG9zZSBkYXRhIGlzIHRvIGJlIHNlcmlhbGl6ZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzcHJlcC5oIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91c3ByZXAuaAppbmRleCA2MzhjMzJlZTE2ZTJiMDQxZGJmZTIxODk1ZDcxZjk3
OWFmNmIyNmRjLi5kYTA4NDhkYWMxYmI0NmMzODRjZjBiMmU0MTZiOTlmY2JjNTI2NDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzcHJlcC5oCisrKyBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdXNwcmVwLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRl
cjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTog
aHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAgKgpAQCAtNiw3ICs4LDcgQEAKICAqCiAgKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgogICogICBmaWxlIG5hbWU6ICB1c3ByZXAuaAotICogICBlbmNvZGluZzogICBVUy1BU0NJSQor
ICogICBlbmNvZGluZzogICBVVEYtOAogICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICAq
ICAgaW5kZW50YXRpb246NAogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dXN0cmluZy5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91c3RyaW5nLmgKaW5kZXggNmQxNDFl
OGRmNjMzOGRjOGU0ZWQwYzlmNDRiNzZiYjNhYzUxYTA1Ny4uM2RhYTI4ZTU1NWU1ZGIyNzc0ZjNk
MmM1MWY3NDY2MjY5OTkxNjMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91
c3RyaW5nLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91c3RyaW5nLmgKQEAgLTEsMyAr
MSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgor
Ly8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmln
aHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAxNCwg
SW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpAQCAtNDk1LDE2ICs0OTcsNiBAQCB1X3N0
ckNvbXBhcmUoY29uc3QgVUNoYXIgKnMxLCBpbnQzMl90IGxlbmd0aDEsCiBVX1NUQUJMRSBpbnQz
Ml90IFVfRVhQT1JUMgogdV9zdHJDb21wYXJlSXRlcihVQ2hhckl0ZXJhdG9yICppdGVyMSwgVUNo
YXJJdGVyYXRvciAqaXRlcjIsIFVCb29sIGNvZGVQb2ludE9yZGVyKTsKIAotI2lmbmRlZiBVX0NP
TVBBUkVfQ09ERV9QT0lOVF9PUkRFUgotLyogc2VlIGFsc28gdW5pc3RyLmggYW5kIHVub3JtLmgg
Ki8KLS8qKgotICogT3B0aW9uIGJpdCBmb3IgdV9zdHJDYXNlQ29tcGFyZSwgdV9zdHJjYXNlY21w
LCB1bm9ybV9jb21wYXJlLCBldGM6Ci0gKiBDb21wYXJlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBv
cmRlciBpbnN0ZWFkIG9mIGNvZGUgdW5pdCBvcmRlci4KLSAqIEBzdGFibGUgSUNVIDIuMgotICov
Ci0jZGVmaW5lIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSICAweDgwMDAKLSNlbmRpZgotCiAv
KioKICAqIENvbXBhcmUgdHdvIHN0cmluZ3MgY2FzZS1pbnNlbnNpdGl2ZWx5IHVzaW5nIGZ1bGwg
Y2FzZSBmb2xkaW5nLgogICogVGhpcyBpcyBlcXVpdmFsZW50IHRvCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3VzdHJpbmd0cmllLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3VzdHJpbmd0cmllLmgKaW5kZXggODcxZDBmODg3YTM3NjU1NTAyMGU3YjkwMjAyOTUxZWEzNGMy
NDE4ZS4uZmQ4NTY0ODIyNTQwOGM4MDRjYjMzODRiZjg3MWM0NGFmN2I4MzA2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91c3RyaW5ndHJpZS5oCisrKyBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdXN0cmluZ3RyaWUuaApAQCAtMSwxMCArMSwxMiBAQAorLy8gwqkgMjAxNiBh
bmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBv
ZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiAqICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIsIEludGVybmF0aW9u
YWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1
ZGljdHRyaWUuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRG
LTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0ZXh0LmggYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3V0ZXh0LmgKaW5kZXggZDQzMTkxM2QzNWIzMWU4NzcxOWMyNjQ3OWFiMjIxNWU2
NGZmMzM5ZS4uMzNmMmY0Y2YyN2I0YmE2YjRlZjg2NWFmMThmNzMzY2VjODdiNmRhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGV4dC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdXRleHQuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBV
bmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRw
Oi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgogKgpAQCAtNiw3ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBm
aWxlIG5hbWU6ICB1dGV4dC5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGlu
ZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9u
OjQKICoKQEAgLTM4Nyw3ICszODksNyBAQCB1dGV4dF9lcXVhbHMoY29uc3QgVVRleHQgKmEsIGNv
bnN0IFVUZXh0ICpiKTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgotICogICBGdW5jdGlv
bnMgdG8gd29yayB3aXRoIHRoZSB0ZXh0IHJlcHJlc2V0ZWQgYnkgYSBVVGV4dCB3cmFwcGVyCisg
KiAgIEZ1bmN0aW9ucyB0byB3b3JrIHdpdGggdGhlIHRleHQgcmVwcmVzZW50ZWQgYnkgYSBVVGV4
dCB3cmFwcGVyCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC00MzEsNyArNDMzLDcg
QEAgdXRleHRfaXNMZW5ndGhFeHBlbnNpdmUoY29uc3QgVVRleHQgKnV0KTsKICAqCiAgKiBUaGUg
aXRlcmF0aW9uIHBvc2l0aW9uIHdpbGwgYmUgc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgcmV0dXJu
ZWQgY29kZSBwb2ludC4KICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIHJvdWdobHkgZXF1aXZhbGVu
dCB0byB0aGUgdGhlIHNlcXVlbmNlCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJvdWdobHkgZXF1aXZh
bGVudCB0byB0aGUgc2VxdWVuY2UKICAqICAgIHV0ZXh0X3NldE5hdGl2ZUluZGV4KGluZGV4KTsK
ICAqICAgIHV0ZXh0X2N1cnJlbnQzMigpOwogICogKFRoZXJlIGlzIGEgc3VidGxlIGRpZmZlcmVu
Y2UgaWYgdGhlIGluZGV4IGlzIG91dCBvZiBib3VuZHMgYnkgYmVpbmcgbGVzcyB0aGFuIHplcm8g
LSAKQEAgLTU5MCw3ICs1OTIsNyBAQCBVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgogdXRleHRfc2V0
TmF0aXZlSW5kZXgoVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4KTsKIAogLyoqCi0gKiBN
b3ZlIHRoZSBpdGVyYXRvciBwb3N0aW9uIGJ5IGRlbHRhIGNvZGUgcG9pbnRzLiAgVGhlIG51bWJl
ciBvZiBjb2RlIHBvaW50cworICogTW92ZSB0aGUgaXRlcmF0b3IgcG9zaXRpb24gYnkgZGVsdGEg
Y29kZSBwb2ludHMuICBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzCiAgKiBpcyBhIHNpZ25lZCBu
dW1iZXI7IGEgbmVnYXRpdmUgZGVsdGEgd2lsbCBtb3ZlIHRoZSBpdGVyYXRvciBiYWNrd2FyZHMs
CiAgKiB0b3dhcmRzIHRoZSBzdGFydCBvZiB0aGUgdGV4dC4KICAqIDxwPgpAQCAtNjA5LDcgKzYx
MSw3IEBAIFVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgogdXRleHRfbW92ZUluZGV4MzIoVVRleHQg
KnV0LCBpbnQzMl90IGRlbHRhKTsKIAogLyoqCi0gKiBHZXQgdGhlIG5hdGl2ZSBpbmRleCBvZiB0
aGUgY2hhcmFjdGVyIHByZWNlZWRpbmcgdGhlIGN1cnJlbnQgcG9zaXRpb24uCisgKiBHZXQgdGhl
IG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHByZWNlZGluZyB0aGUgY3VycmVudCBwb3Np
dGlvbi4KICAqIElmIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgYWxyZWFkeSBhdCB0aGUgc3Rh
cnQgb2YgdGhlIHRleHQsIHplcm8KICAqIGlzIHJldHVybmVkLgogICogVGhlIHZhbHVlIHJldHVy
bmVkIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNlcXVl
bmNlLApAQCAtNjI2LDcgKzYyOCw3IEBAIHV0ZXh0X21vdmVJbmRleDMyKFVUZXh0ICp1dCwgaW50
MzJfdCBkZWx0YSk7CiAgKiAgIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIG1vc3QgcmVj
ZW50bHkgcmV0dXJuZWQgZnJvbSB1dGV4dF9uZXh0KCkuCiAgKgogICogQHBhcmFtIHV0IHRoZSB0
ZXh0IHRvIGJlIGFjY2Vzc2VkCi0gKiBAcmV0dXJuIHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNo
YXJhY3RlciBwcmVjZWVkaW5nIHRoZSBjdXJyZW50IGluZGV4IHBvc2l0aW9uLAorICogQHJldHVy
biB0aGUgbmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgcHJlY2VkaW5nIHRoZSBjdXJyZW50
IGluZGV4IHBvc2l0aW9uLAogICogICAgICAgICBvciB6ZXJvIGlmIHRoZSBjdXJyZW50IHBvc2l0
aW9uIGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgdGV4dC4KICAqIEBzdGFibGUgSUNVIDMuNgogICov
CkBAIC03NjYsNyArNzY4LDcgQEAgdXRleHRfZXh0cmFjdChVVGV4dCAqdXQsCiAgICovCiAjZGVm
aW5lIFVURVhUX1NFVE5BVElWRUlOREVYKHV0LCBpeCkgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICB7IGludDY0X3QgX19vZmZzZXQgPSAoaXgpIC0gKHV0KS0+Y2h1bmtOYXRpdmVTdGFydDsg
XAotICAgICAgaWYgKF9fb2Zmc2V0Pj0wICYmIF9fb2Zmc2V0PD0oaW50NjRfdCkodXQpLT5uYXRp
dmVJbmRleGluZ0xpbWl0KSB7IFwKKyAgICAgIGlmIChfX29mZnNldD49MCAmJiBfX29mZnNldDwo
aW50NjRfdCkodXQpLT5uYXRpdmVJbmRleGluZ0xpbWl0ICYmICh1dCktPmNodW5rQ29udGVudHNb
X19vZmZzZXRdPDB4ZGMwMCkgeyBcCiAgICAgICAgICAgKHV0KS0+Y2h1bmtPZmZzZXQ9KGludDMy
X3QpX19vZmZzZXQ7IFwKICAgICAgIH0gZWxzZSB7IFwKICAgICAgICAgICB1dGV4dF9zZXROYXRp
dmVJbmRleCgodXQpLCAoaXgpKTsgfSB9CkBAIC0xMDUyLDcgKzEwNTQsNyBAQCBVVGV4dEFjY2Vz
cyhVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpOwogICogYmUg
TlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUgZGVzdGlu
YXRpb24gYnVmZmVyLgogICoKICAqIEBwYXJhbSAgdXQgICAgICAgICAgICB0aGUgVVRleHQgZnJv
bSB3aGljaCB0byBleHRyYWN0IGRhdGEuCi0gKiBAcGFyYW0gIG5hdGl2ZVN0YXJ0ICAgdGhlIG5h
dGl2ZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjZXIgdG8gZXh0cmFjdC4KKyAqIEBwYXJhbSAg
bmF0aXZlU3RhcnQgICB0aGUgbmF0aXZlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8g
ZXh0cmFjdC4KICAqIEBwYXJhbSAgbmF0aXZlTGltaXQgICB0aGUgbmF0aXZlIHN0cmluZyBpbmRl
eCBvZiB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZSBsYXN0CiAgKiAgICAgICAgICAgICAgICAg
ICAgICAgY2hhcmFjdGVyIHRvIGV4dHJhY3QuCiAgKiBAcGFyYW0gIGRlc3QgICAgICAgICAgdGhl
IFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRvIHdoaWNoIHRoZSBleHRyYWN0ZWQgdGV4dCBpcyBw
bGFjZWQKQEAgLTEyMDksNyArMTIxMSw3IEBAIFVUZXh0Q2xvc2UoVVRleHQgKnV0KTsKIHN0cnVj
dCBVVGV4dEZ1bmNzIHsKICAgICAvKioKICAgICAgKiAgIChwdWJsaWMpICBGdW5jdGlvbiB0YWJs
ZSBzaXplLCBzaXplb2YoVVRleHRGdW5jcykKLSAgICAgKiAgICAgICAgICAgICBJbnRlbmRlZCBm
b3IgdXNlIHNob3VsZCB0aGUgdGFibGUgZ3JvdyB0byBhY2NvbW9kYXRlIGFkZGVkCisgICAgICog
ICAgICAgICAgICAgSW50ZW5kZWQgZm9yIHVzZSBzaG91bGQgdGhlIHRhYmxlIGdyb3cgdG8gYWNj
b21tb2RhdGUgYWRkZWQKICAgICAgKiAgICAgICAgICAgICBmdW5jdGlvbnMgaW4gdGhlIGZ1dHVy
ZSwgdG8gYWxsb3cgdGVzdHMgZm9yIG9sZGVyIGZvcm1hdAogICAgICAqICAgICAgICAgICAgIGZ1
bmN0aW9uIHRhYmxlcyB0aGF0IGRvIG5vdCBjb250YWluIHRoZSBleHRlbnNpb25zLgogICAgICAq
CkBAIC0xMzQzLDcgKzEzNDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBVVGV4dEZ1bmNzIFVUZXh0RnVu
Y3M7CiBzdHJ1Y3QgVVRleHQgewogICAgIC8qKgogICAgICAqICAgICAocHJpdmF0ZSkgIE1hZ2lj
LiAgVXNlZCB0byBoZWxwIGRldGVjdCB3aGVuIFVUZXh0IGZ1bmN0aW9ucyBhcmUgaGFuZGVkCi0g
ICAgICogICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkIG9yIHVuaXRpYWxpemVkIFVUZXh0
IHN0cnVjdHMuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkIG9yIHVuaW5p
dGlhbGl6ZWQgVVRleHQgc3RydWN0cy4KICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHV0
ZXh0X29wZW5YWVooKSBmdW5jdGlvbnMgdGFrZSBhbiBpbml0aWFsaXplZCwKICAgICAgKiAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1dCBub3QgbmVjZXNzYXJpbHkgb3BlbiwgVVRleHQgc3RydWN0
IGFzIGFuCiAgICAgICogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBmaWxsLWluIHBh
cmFtZXRlci4gIFRoaXMgbWFnaWMgZmllbGQKQEAgLTEzNjUsNyArMTM2Nyw3IEBAIHN0cnVjdCBV
VGV4dCB7CiAKIAogICAgIC8qKgotICAgICAgKiAgVGV4dCBwcm92aWRlciBwcm9wZXJ0aWVzLiAg
VGhpcyBzZXQgb2YgZmxhZ3MgaXMgbWFpbnRhaW50ZWQgYnkgdGhlCisgICAgICAqICBUZXh0IHBy
b3ZpZGVyIHByb3BlcnRpZXMuICBUaGlzIHNldCBvZiBmbGFncyBpcyBtYWludGFpbmVkIGJ5IHRo
ZQogICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCBwcm92aWRlciBpbXBs
ZW1lbnRhdGlvbi4KICAgICAgICogIEBzdGFibGUgSUNVIDMuNAogICAgICAgKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRmLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3V0Zi5oCmluZGV4IGY1OTU0ZmU5ZmU2OTk4OTNiZDMxOGUyNDc3MjkyNmMxNzVhMjBjNzQuLmVm
NTEyOTk3ZjA1YTE1YWNhMWI2YTRhYzM2NzU1ZGUxZDJiNzEwODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdXRmLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGYu
aApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtNiw3
ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1dGYu
aAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICogICB0
YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC0yMSw5ICsy
Myw2IEBACiAgKiBUaGlzIGZpbGUgZGVmaW5lcyBtYWNyb3MgZm9yIGNoZWNraW5nIHdoZXRoZXIg
YSBjb2RlIHBvaW50IGlzCiAgKiBhIHN1cnJvZ2F0ZSBvciBhIG5vbi1jaGFyYWN0ZXIgZXRjLgog
ICoKLSAqIFRoZSBVQ2hhciBhbmQgVUNoYXIzMiBkYXRhIHR5cGVzIGZvciBVbmljb2RlIGNvZGUg
dW5pdHMgYW5kIGNvZGUgcG9pbnRzCi0gKiBhcmUgZGVmaW5lZCBpbiB1bWFjaGluZS5oIGJlY2F1
c2UgdGhleSBjYW4gYmUgbWFjaGluZS1kZXBlbmRlbnQuCi0gKgogICogSWYgVV9OT19ERUZBVUxU
X0lOQ0xVREVfVVRGX0hFQURFUlMgaXMgMCB0aGVuIHV0Zi5oIGlzIGluY2x1ZGVkIGJ5IHV0eXBl
cy5oCiAgKiBhbmQgaXRzZWxmIGluY2x1ZGVzIHV0ZjguaCBhbmQgdXRmMTYuaCBhZnRlciBzb21l
CiAgKiBjb21tb24gZGVmaW5pdGlvbnMuCkBAIC00OCwxMSArNDcsMTEgQEAKICAqIGJ1dCBhcmUg
b3B0aW1pemVkIGZvciB0aGUgbXVjaCBtb3JlIGZyZXF1ZW50bHkgb2NjdXJyaW5nIEJNUCBjb2Rl
IHBvaW50cy4KICAqCiAgKiB1bWFjaGluZS5oIGRlZmluZXMgVUNoYXIgdG8gYmUgYW4gdW5zaWdu
ZWQgMTYtYml0IGludGVnZXIuCi0gKiBXaGVyZSBhdmFpbGFibGUsIFVDaGFyIGlzIGRlZmluZWQg
dG8gYmUgYSBjaGFyMTZfdAotICogb3IgYSB3Y2hhcl90IChpZiB0aGF0IGlzIGFuIHVuc2lnbmVk
IDE2LWJpdCB0eXBlKSwgb3RoZXJ3aXNlIHVpbnQxNl90LgorICogU2luY2UgSUNVIDU5LCBJQ1Ug
dXNlcyBjaGFyMTZfdCBpbiBDKyssIFVDaGFyIG9ubHkgaW4gQywKKyAqIGFuZCBkZWZpbmVzIFVD
aGFyPWNoYXIxNl90IGJ5IGRlZmF1bHQuIFNlZSB0aGUgVUNoYXIgQVBJIGRvY3MgZm9yIGRldGFp
bHMuCiAgKgogICogVUNoYXIzMiBpcyBkZWZpbmVkIHRvIGJlIGEgc2lnbmVkIDMyLWJpdCBpbnRl
Z2VyIChpbnQzMl90KSwgbGFyZ2UgZW5vdWdoIGZvciBhIDIxLWJpdAotICogVW5pY29kZSBjb2Rl
IHBvaW50IChVbmljb2RlIHNjYWxhciB2YWx1ZSwgMC4uMHgxMGZmZmYpLgorICogVW5pY29kZSBj
b2RlIHBvaW50IChVbmljb2RlIHNjYWxhciB2YWx1ZSwgMC4uMHgxMGZmZmYpIGFuZCBVX1NFTlRJ
TkVMICgtMSkuCiAgKiBCZWZvcmUgSUNVIDIuNCwgdGhlIGRlZmluaXRpb24gb2YgVUNoYXIzMiB3
YXMgc2ltaWxhcmx5IHBsYXRmb3JtLWRlcGVuZGVudCBhcwogICogdGhlIGRlZmluaXRpb24gb2Yg
VUNoYXIuIEZvciBkZXRhaWxzIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgVUNoYXIzMiBpdHNl
bGYuCiAgKgpAQCAtNjEsMTEgKzYwLDIwIEBACiAgKiBGb3IgYWN0dWFsIFVuaWNvZGUgY2hhcmFj
dGVyIHByb3BlcnRpZXMgc2VlIHVjaGFyLmguCiAgKgogICogQnkgZGVmYXVsdCwgc3RyaW5nIG9w
ZXJhdGlvbnMgbXVzdCBiZSBkb25lIHdpdGggZXJyb3IgY2hlY2tpbmcgaW4gY2FzZQotICogYSBz
dHJpbmcgaXMgbm90IHdlbGwtZm9ybWVkIFVURi0xNi4KLSAqIFRoZSBtYWNyb3Mgd2lsbCBkZXRl
Y3QgaWYgYSBzdXJyb2dhdGUgY29kZSB1bml0IGlzIHVucGFpcmVkCisgKiBhIHN0cmluZyBpcyBu
b3Qgd2VsbC1mb3JtZWQgVVRGLTE2IG9yIFVURi04LgorICoKKyAqIFRoZSBVMTZfIG1hY3JvcyBk
ZXRlY3QgaWYgYSBzdXJyb2dhdGUgY29kZSB1bml0IGlzIHVucGFpcmVkCiAgKiAobGVhZCB1bml0
IHdpdGhvdXQgdHJhaWwgdW5pdCBvciB2aWNlIHZlcnNhKSBhbmQganVzdCByZXR1cm4gdGhlIHVu
aXQgaXRzZWxmCiAgKiBhcyB0aGUgY29kZSBwb2ludC4KICAqCisgKiBUaGUgVThfIG1hY3JvcyBk
ZXRlY3QgaWxsZWdhbCBieXRlIHNlcXVlbmNlcyBhbmQgcmV0dXJuIGEgbmVnYXRpdmUgdmFsdWUu
CisgKiBTdGFydGluZyB3aXRoIElDVSA2MCwgdGhlIG9ic2VydmFibGUgbGVuZ3RoIG9mIGEgc2lu
Z2xlIGlsbGVnYWwgYnl0ZSBzZXF1ZW5jZQorICogc2tpcHBlZCBieSBvbmUgb2YgdGhlc2UgbWFj
cm9zIGZvbGxvd3MgdGhlIFVuaWNvZGUgNisgcmVjb21tZW5kYXRpb24KKyAqIHdoaWNoIGlzIGNv
bnNpc3RlbnQgd2l0aCB0aGUgVzNDIEVuY29kaW5nIFN0YW5kYXJkLgorICoKKyAqIFRoZXJlIGFy
ZSAuLi5fT1JfRkZGRCB2ZXJzaW9ucyBvZiBib3RoIFUxNl8gYW5kIFU4XyBtYWNyb3MKKyAqIHRo
YXQgcmV0dXJuIFUrRkZGRCBmb3IgaWxsZWdhbCBjb2RlIHVuaXQgc2VxdWVuY2VzLgorICoKICAq
IFRoZSByZWd1bGFyICJzYWZlIiBtYWNyb3MgcmVxdWlyZSB0aGF0IHRoZSBpbml0aWFsLCBwYXNz
ZWQtaW4gc3RyaW5nIGluZGV4CiAgKiBpcyB3aXRoaW4gYm91bmRzLiBUaGV5IG9ubHkgY2hlY2sg
dGhlIGluZGV4IHdoZW4gdGhleSByZWFkIG1vcmUgdGhhbiBvbmUKICAqIGNvZGUgdW5pdC4gVGhp
cyBpcyB1c3VhbGx5IGRvbmUgd2l0aCBjb2RlIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZyBsb29w
OgpAQCAtODksMTAgKzk3LDcgQEAKICAqIFRoZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlcyBhcmUg
bXVjaCBsYXJnZXIgaGVyZSBiZWNhdXNlIFVURi04IHByb3ZpZGVzIHNvCiAgKiBtYW55IG9wcG9y
dHVuaXRpZXMgZm9yIG1hbGZvcm1lZCBzZXF1ZW5jZXMuCiAgKiBUaGUgdW5zYWZlIFVURi04IG1h
Y3JvcyBhcmUgZW50aXJlbHkgaW1wbGVtZW50ZWQgaW5zaWRlIHRoZSBtYWNybyBkZWZpbml0aW9u
cwotICogYW5kIGFyZSBmYXN0LCB3aGlsZSB0aGUgc2FmZSBVVEYtOCBtYWNyb3MgY2FsbCBmdW5j
dGlvbnMgZm9yIGFsbCBidXQgdGhlCi0gKiB0cml2aWFsIChBU0NJSSkgY2FzZXMuCi0gKiAoSUNV
IDMuNiBvcHRpbWl6ZXMgVThfTkVYVCgpIGFuZCBVOF9BUFBFTkQoKSB0byBoYW5kbGUgbW9zdCBv
dGhlciBjb21tb24KLSAqIGNoYXJhY3RlcnMgaW5saW5lIGFzIHdlbGwuKQorICogYW5kIGFyZSBm
YXN0LCB3aGlsZSB0aGUgc2FmZSBVVEYtOCBtYWNyb3MgY2FsbCBmdW5jdGlvbnMgZm9yIHNvbWUg
Y29tcGxpY2F0ZWQgY2FzZXMuCiAgKgogICogVW5saWtlIHdpdGggVVRGLTE2LCBtYWxmb3JtZWQg
c2VxdWVuY2VzIGNhbm5vdCBiZSBleHByZXNzZWQgd2l0aCBkaXN0aW5jdAogICogY29kZSBwb2lu
dCB2YWx1ZXMgKDAuLlUrMTBmZmZmKS4gVGhleSBhcmUgaW5kaWNhdGVkIHdpdGggbmVnYXRpdmUg
dmFsdWVzIGluc3RlYWQuCkBAIC0xMjQsOCArMTI5LDcgQEAKICAqLwogI2RlZmluZSBVX0lTX1VO
SUNPREVfTk9OQ0hBUihjKSBcCiAgICAgKChjKT49MHhmZGQwICYmIFwKLSAgICAgKCh1aW50MzJf
dCkoYyk8PTB4ZmRlZiB8fCAoKGMpJjB4ZmZmZSk9PTB4ZmZmZSkgJiYgXAotICAgICAodWludDMy
X3QpKGMpPD0weDEwZmZmZikKKyAgICAgKChjKTw9MHhmZGVmIHx8ICgoYykmMHhmZmZlKT09MHhm
ZmZlKSAmJiAoYyk8PTB4MTBmZmZmKQogCiAvKioKICAqIElzIGMgYSBVbmljb2RlIGNvZGUgcG9p
bnQgdmFsdWUgKDAuLlUrMTBmZmZmKQpAQCAtMTQ2LDkgKzE1MCw3IEBACiAgKi8KICNkZWZpbmUg
VV9JU19VTklDT0RFX0NIQVIoYykgXAogICAgICgodWludDMyX3QpKGMpPDB4ZDgwMCB8fCBcCi0g
ICAgICAgICgodWludDMyX3QpKGMpPjB4ZGZmZiAmJiBcCi0gICAgICAgICAodWludDMyX3QpKGMp
PD0weDEwZmZmZiAmJiBcCi0gICAgICAgICAhVV9JU19VTklDT0RFX05PTkNIQVIoYykpKQorICAg
ICAgICAoMHhkZmZmPChjKSAmJiAoYyk8PTB4MTBmZmZmICYmICFVX0lTX1VOSUNPREVfTk9OQ0hB
UihjKSkpCiAKIC8qKgogICogSXMgdGhpcyBjb2RlIHBvaW50IGEgQk1QIGNvZGUgcG9pbnQgKFUr
MDAwMC4uVStmZmZmKT8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRmMTYu
aCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRmMTYuaAppbmRleCBiZGQ4OGE4YjljNGYwMGVh
MGRmMjcyYWMwMmY2OTY3ZWY2MTA4OWI2Li4zNWZkMDk4NjExNDNjZGZiMWZiMDAwMmFkZTY0ZTFh
NzM0OTI3NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0ZjE2LmgKKysr
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGYxNi5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkg
MjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0
ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC02LDcgKzgsNyBAQAogKgogKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIHV0ZjE2LmgKLSogICBlbmNvZGluZzogICBVUy1B
U0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQp
CiAqICAgaW5kZW50YXRpb246NAogKgpAQCAtMTgzLDggKzE4NSw4IEBACiAgKgogICogVGhlIGxl
bmd0aCBjYW4gYmUgbmVnYXRpdmUgZm9yIGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLgogICoKLSAq
IElmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIGEgc2luZ2xlLCB1bnBhaXJlZCBzdXJyb2dhdGUsIHRo
ZW4gdGhhdCBpdHNlbGYKLSAqIHdpbGwgYmUgcmV0dXJuZWQgYXMgdGhlIGNvZGUgcG9pbnQuCisg
KiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIHNpbmdsZSwgdW5wYWlyZWQgc3Vycm9nYXRlLCB0
aGVuCisgKiBjIGlzIHNldCB0byB0aGF0IHVucGFpcmVkIHN1cnJvZ2F0ZS4KICAqIEl0ZXJhdGlv
biB0aHJvdWdoIGEgc3RyaW5nIGlzIG1vcmUgZWZmaWNpZW50IHdpdGggVTE2X05FWFRfVU5TQUZF
IG9yIFUxNl9ORVhULgogICoKICAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCkBAIC0y
MTEsNiArMjEzLDUzIEBACiAgICAgfSBcCiB9CiAKKyNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQor
CisvKioKKyAqIEdldCBhIGNvZGUgcG9pbnQgZnJvbSBhIHN0cmluZyBhdCBhIHJhbmRvbS1hY2Nl
c3Mgb2Zmc2V0LAorICogd2l0aG91dCBjaGFuZ2luZyB0aGUgb2Zmc2V0LgorICogIlNhZmUiIG1h
Y3JvLCBoYW5kbGVzIHVucGFpcmVkIHN1cnJvZ2F0ZXMgYW5kIGNoZWNrcyBmb3Igc3RyaW5nIGJv
dW5kYXJpZXMuCisgKgorICogVGhlIG9mZnNldCBtYXkgcG9pbnQgdG8gZWl0aGVyIHRoZSBsZWFk
IG9yIHRyYWlsIHN1cnJvZ2F0ZSB1bml0CisgKiBmb3IgYSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9p
bnQsIGluIHdoaWNoIGNhc2UgdGhlIG1hY3JvIHdpbGwgcmVhZAorICogdGhlIGFkamFjZW50IG1h
dGNoaW5nIHN1cnJvZ2F0ZSBhcyB3ZWxsLgorICoKKyAqIFRoZSBsZW5ndGggY2FuIGJlIG5lZ2F0
aXZlIGZvciBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZy4KKyAqCisgKiBJZiB0aGUgb2Zmc2V0IHBv
aW50cyB0byBhIHNpbmdsZSwgdW5wYWlyZWQgc3Vycm9nYXRlLCB0aGVuCisgKiBjIGlzIHNldCB0
byBVK0ZGRkQuCisgKiBJdGVyYXRpb24gdGhyb3VnaCBhIHN0cmluZyBpcyBtb3JlIGVmZmljaWVu
dCB3aXRoIFUxNl9ORVhUX1VOU0FGRSBvciBVMTZfTkVYVF9PUl9GRkZELgorICoKKyAqIEBwYXJh
bSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCisgKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5n
IG9mZnNldCAodXN1YWxseSAwKQorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgbXVzdCBiZSBz
dGFydDw9aTxsZW5ndGgKKyAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAorICogQHBhcmFt
IGMgb3V0cHV0IFVDaGFyMzIgdmFyaWFibGUKKyAqIEBzZWUgVTE2X0dFVF9VTlNBRkUKKyAqIEBk
cmFmdCBJQ1UgNjAKKyAqLworI2RlZmluZSBVMTZfR0VUX09SX0ZGRkQocywgc3RhcnQsIGksIGxl
bmd0aCwgYykgeyBcCisgICAgKGMpPShzKVtpXTsgXAorICAgIGlmKFUxNl9JU19TVVJST0dBVEUo
YykpIHsgXAorICAgICAgICB1aW50MTZfdCBfX2MyOyBcCisgICAgICAgIGlmKFUxNl9JU19TVVJS
T0dBVEVfTEVBRChjKSkgeyBcCisgICAgICAgICAgICBpZigoaSkrMSE9KGxlbmd0aCkgJiYgVTE2
X0lTX1RSQUlMKF9fYzI9KHMpWyhpKSsxXSkpIHsgXAorICAgICAgICAgICAgICAgIChjKT1VMTZf
R0VUX1NVUFBMRU1FTlRBUlkoKGMpLCBfX2MyKTsgXAorICAgICAgICAgICAgfSBlbHNlIHsgXAor
ICAgICAgICAgICAgICAgIChjKT0weGZmZmQ7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9
IGVsc2UgeyBcCisgICAgICAgICAgICBpZigoaSk+KHN0YXJ0KSAmJiBVMTZfSVNfTEVBRChfX2My
PShzKVsoaSktMV0pKSB7IFwKKyAgICAgICAgICAgICAgICAoYyk9VTE2X0dFVF9TVVBQTEVNRU5U
QVJZKF9fYzIsIChjKSk7IFwKKyAgICAgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgICAg
ICAoYyk9MHhmZmZkOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9
CisKKyNlbmRpZiAgLy8gVV9ISURFX0RSQUZUX0FQSQorCiAvKiBkZWZpbml0aW9ucyB3aXRoIGZv
cndhcmQgaXRlcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq
LwogCiAvKioKQEAgLTI1MSw4ICszMDAsNyBAQAogICogZm9yIGEgc3VwcGxlbWVudGFyeSBjb2Rl
IHBvaW50LCBpbiB3aGljaCBjYXNlIHRoZSBtYWNybyB3aWxsIHJlYWQKICAqIHRoZSBmb2xsb3dp
bmcgdHJhaWwgc3Vycm9nYXRlIGFzIHdlbGwuCiAgKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBh
IHRyYWlsIHN1cnJvZ2F0ZSBvcgotICogdG8gYSBzaW5nbGUsIHVucGFpcmVkIGxlYWQgc3Vycm9n
YXRlLCB0aGVuIHRoYXQgaXRzZWxmCi0gKiB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSBjb2RlIHBv
aW50LgorICogdG8gYSBzaW5nbGUsIHVucGFpcmVkIGxlYWQgc3Vycm9nYXRlLCB0aGVuIGMgaXMg
c2V0IHRvIHRoYXQgdW5wYWlyZWQgc3Vycm9nYXRlLgogICoKICAqIEBwYXJhbSBzIGNvbnN0IFVD
aGFyICogc3RyaW5nCiAgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBtdXN0IGJlIGk8bGVuZ3Ro
CkBAIC0yNzIsNiArMzIwLDQ0IEBACiAgICAgfSBcCiB9CiAKKyNpZm5kZWYgVV9ISURFX0RSQUZU
X0FQSQorCisvKioKKyAqIEdldCBhIGNvZGUgcG9pbnQgZnJvbSBhIHN0cmluZyBhdCBhIGNvZGUg
cG9pbnQgYm91bmRhcnkgb2Zmc2V0LAorICogYW5kIGFkdmFuY2UgdGhlIG9mZnNldCB0byB0aGUg
bmV4dCBjb2RlIHBvaW50IGJvdW5kYXJ5LgorICogKFBvc3QtaW5jcmVtZW50aW5nIGZvcndhcmQg
aXRlcmF0aW9uLikKKyAqICJTYWZlIiBtYWNybywgaGFuZGxlcyB1bnBhaXJlZCBzdXJyb2dhdGVz
IGFuZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoKKyAqIFRoZSBsZW5ndGggY2Fu
IGJlIG5lZ2F0aXZlIGZvciBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZy4KKyAqCisgKiBUaGUgb2Zm
c2V0IG1heSBwb2ludCB0byB0aGUgbGVhZCBzdXJyb2dhdGUgdW5pdAorICogZm9yIGEgc3VwcGxl
bWVudGFyeSBjb2RlIHBvaW50LCBpbiB3aGljaCBjYXNlIHRoZSBtYWNybyB3aWxsIHJlYWQKKyAq
IHRoZSBmb2xsb3dpbmcgdHJhaWwgc3Vycm9nYXRlIGFzIHdlbGwuCisgKiBJZiB0aGUgb2Zmc2V0
IHBvaW50cyB0byBhIHRyYWlsIHN1cnJvZ2F0ZSBvcgorICogdG8gYSBzaW5nbGUsIHVucGFpcmVk
IGxlYWQgc3Vycm9nYXRlLCB0aGVuIGMgaXMgc2V0IHRvIFUrRkZGRC4KKyAqCisgKiBAcGFyYW0g
cyBjb25zdCBVQ2hhciAqIHN0cmluZworICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgbXVzdCBi
ZSBpPGxlbmd0aAorICogQHBhcmFtIGxlbmd0aCBzdHJpbmcgbGVuZ3RoCisgKiBAcGFyYW0gYyBv
dXRwdXQgVUNoYXIzMiB2YXJpYWJsZQorICogQHNlZSBVMTZfTkVYVF9VTlNBRkUKKyAqIEBkcmFm
dCBJQ1UgNjAKKyAqLworI2RlZmluZSBVMTZfTkVYVF9PUl9GRkZEKHMsIGksIGxlbmd0aCwgYykg
eyBcCisgICAgKGMpPShzKVsoaSkrK107IFwKKyAgICBpZihVMTZfSVNfU1VSUk9HQVRFKGMpKSB7
IFwKKyAgICAgICAgdWludDE2X3QgX19jMjsgXAorICAgICAgICBpZihVMTZfSVNfU1VSUk9HQVRF
X0xFQUQoYykgJiYgKGkpIT0obGVuZ3RoKSAmJiBVMTZfSVNfVFJBSUwoX19jMj0ocylbKGkpXSkp
IHsgXAorICAgICAgICAgICAgKysoaSk7IFwKKyAgICAgICAgICAgIChjKT1VMTZfR0VUX1NVUFBM
RU1FTlRBUlkoKGMpLCBfX2MyKTsgXAorICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICAo
Yyk9MHhmZmZkOyBcCisgICAgICAgIH0gXAorICAgIH0gXAorfQorCisjZW5kaWYgIC8vIFVfSElE
RV9EUkFGVF9BUEkKKwogLyoqCiAgKiBBcHBlbmQgYSBjb2RlIHBvaW50IHRvIGEgc3RyaW5nLCBv
dmVyd3JpdGluZyAxIG9yIDIgY29kZSB1bml0cy4KICAqIFRoZSBvZmZzZXQgcG9pbnRzIHRvIHRo
ZSBjdXJyZW50IGVuZCBvZiB0aGUgc3RyaW5nIGNvbnRlbnRzCkBAIC00NzksOCArNTY1LDcgQEAK
ICAqIGZvciBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgdGhlbiB0aGUgbWFjcm8gd2lsbCBy
ZWFkCiAgKiB0aGUgcHJlY2VkaW5nIGxlYWQgc3Vycm9nYXRlIGFzIHdlbGwuCiAgKiBJZiB0aGUg
b2Zmc2V0IGlzIGJlaGluZCBhIGxlYWQgc3Vycm9nYXRlIG9yIGJlaGluZCBhIHNpbmdsZSwgdW5w
YWlyZWQKLSAqIHRyYWlsIHN1cnJvZ2F0ZSwgdGhlbiB0aGF0IGl0c2VsZgotICogd2lsbCBiZSBy
ZXR1cm5lZCBhcyB0aGUgY29kZSBwb2ludC4KKyAqIHRyYWlsIHN1cnJvZ2F0ZSwgdGhlbiBjIGlz
IHNldCB0byB0aGF0IHVucGFpcmVkIHN1cnJvZ2F0ZS4KICAqCiAgKiBAcGFyYW0gcyBjb25zdCBV
Q2hhciAqIHN0cmluZwogICogQHBhcmFtIHN0YXJ0IHN0YXJ0aW5nIHN0cmluZyBvZmZzZXQgKHVz
dWFsbHkgMCkKQEAgLTUwMCw2ICs1ODUsNDMgQEAKICAgICB9IFwKIH0KIAorI2lmbmRlZiBVX0hJ
REVfRFJBRlRfQVBJCisKKy8qKgorICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBj
b2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUKKyAqIGFuZCBnZXQgdGhlIGNv
ZGUgcG9pbnQgYmV0d2VlbiB0aGVtLgorICogKFByZS1kZWNyZW1lbnRpbmcgYmFja3dhcmQgaXRl
cmF0aW9uLikKKyAqICJTYWZlIiBtYWNybywgaGFuZGxlcyB1bnBhaXJlZCBzdXJyb2dhdGVzIGFu
ZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoKKyAqIFRoZSBpbnB1dCBvZmZzZXQg
bWF5IGJlIHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgbGVuZ3RoLgorICogSWYgdGhlIG9mZnNldCBp
cyBiZWhpbmQgYSB0cmFpbCBzdXJyb2dhdGUgdW5pdAorICogZm9yIGEgc3VwcGxlbWVudGFyeSBj
b2RlIHBvaW50LCB0aGVuIHRoZSBtYWNybyB3aWxsIHJlYWQKKyAqIHRoZSBwcmVjZWRpbmcgbGVh
ZCBzdXJyb2dhdGUgYXMgd2VsbC4KKyAqIElmIHRoZSBvZmZzZXQgaXMgYmVoaW5kIGEgbGVhZCBz
dXJyb2dhdGUgb3IgYmVoaW5kIGEgc2luZ2xlLCB1bnBhaXJlZAorICogdHJhaWwgc3Vycm9nYXRl
LCB0aGVuIGMgaXMgc2V0IHRvIFUrRkZGRC4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAq
IHN0cmluZworICogQHBhcmFtIHN0YXJ0IHN0YXJ0aW5nIHN0cmluZyBvZmZzZXQgKHVzdWFsbHkg
MCkKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQsIG11c3QgYmUgc3RhcnQ8aQorICogQHBhcmFt
IGMgb3V0cHV0IFVDaGFyMzIgdmFyaWFibGUKKyAqIEBzZWUgVTE2X1BSRVZfVU5TQUZFCisgKiBA
ZHJhZnQgSUNVIDYwCisgKi8KKyNkZWZpbmUgVTE2X1BSRVZfT1JfRkZGRChzLCBzdGFydCwgaSwg
YykgeyBcCisgICAgKGMpPShzKVstLShpKV07IFwKKyAgICBpZihVMTZfSVNfU1VSUk9HQVRFKGMp
KSB7IFwKKyAgICAgICAgdWludDE2X3QgX19jMjsgXAorICAgICAgICBpZihVMTZfSVNfU1VSUk9H
QVRFX1RSQUlMKGMpICYmIChpKT4oc3RhcnQpICYmIFUxNl9JU19MRUFEKF9fYzI9KHMpWyhpKS0x
XSkpIHsgXAorICAgICAgICAgICAgLS0oaSk7IFwKKyAgICAgICAgICAgIChjKT1VMTZfR0VUX1NV
UFBMRU1FTlRBUlkoX19jMiwgKGMpKTsgXAorICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAg
ICAoYyk9MHhmZmZkOyBcCisgICAgICAgIH0gXAorICAgIH0gXAorfQorCisjZW5kaWYgIC8vIFVf
SElERV9EUkFGVF9BUEkKKwogLyoqCiAgKiBNb3ZlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25l
IGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIHByZXZpb3VzIG9uZS4KICAqIChQcmUtZGVjcmVt
ZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3V0ZjMyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0ZjMyLmgKaW5kZXggYmY2
M2U2OWRiYTAwYzc5ZTc0MDQ4ZjU2NTVkYzgxYzY2OThjZWMxYS4uODgyMmM0ZGQwOTYyYzhlZThm
NjJiYTBmOGFiZjQ0OGYwNGQ1YWIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS91dGYzMi5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRmMzIuaApAQCAtMSwzICsx
LDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisv
LyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdo
dC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtNiw3ICs4LDcgQEAKICoK
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1dGYzMi5oCi0qICAgZW5j
b2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAg
IDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdXRmOC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGY4LmgKaW5k
ZXggN2JkMGIwZTg1MjYwZjAyMGE4ODVkNTlhYmMyNGJmMzA1MDk3ZDI1Yi4uZGYwOGQzNDFhYjg2
OGFmYmI2NzgyZjkzYjdkNjUwZGYyYjcyZTBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91dGY4LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGY4LmgKQEAgLTEs
MTIgKzEsMTQgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgotKiAgIENvcHlyaWdo
dCAoQykgMTk5OS0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICog
ICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoKICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1dGY4LmgKLSogICBlbmNvZGluZzog
ICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90
IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpAQCAtMzksNTIgKzQxLDI0IEBACiAKIC8qIGlu
dGVybmFsIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICovCiAKLS8qKgotICogXHZhciB1dGY4X2NvdW50VHJhaWxCeXRlcwot
ICogSW50ZXJuYWwgYXJyYXkgd2l0aCBudW1iZXJzIG9mIHRyYWlsIGJ5dGVzIGZvciBhbnkgZ2l2
ZW4gYnl0ZSB1c2VkIGluCi0gKiBsZWFkIGJ5dGUgcG9zaXRpb24uCi0gKgotICogVGhpcyBpcyBp
bnRlcm5hbCBzaW5jZSBpdCBpcyBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IGV4
dGVybmFsIGNsaWVudHM7Ci0gKiBob3dldmVyIGl0IGlzIGNhbGxlZCBieSBwdWJsaWMgbWFjcm9z
IGluIHRoaXMgZmlsZSBhbmQgdGh1cyBtdXN0IHJlbWFpbiBzdGFibGUsCi0gKiBhbmQgc2hvdWxk
IG5vdCBiZSBoaWRkZW4gd2hlbiBvdGhlciBpbnRlcm5hbCBmdW5jdGlvbnMgYXJlIGhpZGRlbiAo
b3RoZXJ3aXNlCi0gKiBwdWJsaWMgbWFjcm9zIHdvdWxkIGZhaWwgdG8gY29tcGlsZSkuCi0gKiBA
aW50ZXJuYWwKLSAqLwotI2lmZGVmIFVfVVRGOF9JTVBMCi1VX0VYUE9SVCBjb25zdCB1aW50OF90
IAotI2VsaWYgZGVmaW5lZChVX1NUQVRJQ19JTVBMRU1FTlRBVElPTikgfHwgZGVmaW5lZChVX0NP
TU1PTl9JTVBMRU1FTlRBVElPTikKLVVfQ0ZVTkMgY29uc3QgdWludDhfdAotI2Vsc2UKLVVfQ0ZV
TkMgVV9JTVBPUlQgY29uc3QgdWludDhfdCAvKiBVX0lNUE9SVDI/ICovIC8qVV9JTVBPUlQqLyAK
LSNlbmRpZgotdXRmOF9jb3VudFRyYWlsQnl0ZXNbMjU2XTsKLQogLyoqCiAgKiBDb3VudHMgdGhl
IHRyYWlsIGJ5dGVzIGZvciBhIFVURi04IGxlYWQgYnl0ZS4KLSAqIFJldHVybnMgMCBmb3IgMC4u
MHhiZiBhcyB3ZWxsIGFzIGZvciAweGZlIGFuZCAweGZmLgorICogUmV0dXJucyAwIGZvciAwLi4w
eGMxIGFzIHdlbGwgYXMgZm9yIDB4ZjUuLjB4ZmYuCisgKiBsZWFkQnl0ZSBtaWdodCBiZSBldmFs
dWF0ZWQgbXVsdGlwbGUgdGltZXMuCiAgKgogICogVGhpcyBpcyBpbnRlcm5hbCBzaW5jZSBpdCBp
cyBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IGV4dGVybmFsIGNsaWVudHM7CiAg
KiBob3dldmVyIGl0IGlzIGNhbGxlZCBieSBwdWJsaWMgbWFjcm9zIGluIHRoaXMgZmlsZSBhbmQg
dGh1cyBtdXN0IHJlbWFpbiBzdGFibGUuCiAgKgotICogTm90ZTogQmVnaW5uaW5nIHdpdGggSUNV
IDUwLCB0aGUgaW1wbGVtZW50YXRpb24gdXNlcyBhIG11bHRpLWNvbmRpdGlvbiBleHByZXNzaW9u
Ci0gKiB3aGljaCB3YXMgc2hvd24gaW4gMjAxMiAob24geDg2LTY0KSB0byBjb21waWxlIHRvIGZh
c3QsIGJyYW5jaC1mcmVlIGNvZGUuCi0gKiBsZWFkQnl0ZSBpcyBldmFsdWF0ZWQgbXVsdGlwbGUg
dGltZXMuCi0gKgotICogVGhlIHByZS1JQ1UgNTAgaW1wbGVtZW50YXRpb24gdXNlZCB0aGUgZXhw
b3J0ZWQgYXJyYXkgdXRmOF9jb3VudFRyYWlsQnl0ZXM6Ci0gKiAjZGVmaW5lIFU4X0NPVU5UX1RS
QUlMX0JZVEVTKGxlYWRCeXRlKSAodXRmOF9jb3VudFRyYWlsQnl0ZXNbbGVhZEJ5dGVdKQotICog
bGVhZEJ5dGUgd2FzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCi0gKgogICogQHBhcmFtIGxlYWRC
eXRlIFRoZSBmaXJzdCBieXRlIG9mIGEgVVRGLTggc2VxdWVuY2UuIE11c3QgYmUgMC4uMHhmZi4K
ICAqIEBpbnRlcm5hbAogICovCiAjZGVmaW5lIFU4X0NPVU5UX1RSQUlMX0JZVEVTKGxlYWRCeXRl
KSBcCi0gICAgKCh1aW50OF90KShsZWFkQnl0ZSk8MHhmMCA/IFwKLSAgICAgICAgKCh1aW50OF90
KShsZWFkQnl0ZSk+PTB4YzApKygodWludDhfdCkobGVhZEJ5dGUpPj0weGUwKSA6IFwKLSAgICAg
ICAgKHVpbnQ4X3QpKGxlYWRCeXRlKTwweGZlID8gMysoKHVpbnQ4X3QpKGxlYWRCeXRlKT49MHhm
OCkrKCh1aW50OF90KShsZWFkQnl0ZSk+PTB4ZmMpIDogMCkKKyAgICAoVThfSVNfTEVBRChsZWFk
Qnl0ZSkgPyBcCisgICAgICAgICgodWludDhfdCkobGVhZEJ5dGUpPj0weGUwKSsoKHVpbnQ4X3Qp
KGxlYWRCeXRlKT49MHhmMCkrMSA6IDApCiAKIC8qKgogICogQ291bnRzIHRoZSB0cmFpbCBieXRl
cyBmb3IgYSBVVEYtOCBsZWFkIGJ5dGUgb2YgYSB2YWxpZCBVVEYtOCBzZXF1ZW5jZS4KLSAqIFRo
ZSBtYXhpbXVtIHN1cHBvcnRlZCBsZWFkIGJ5dGUgaXMgMHhmNCBjb3JyZXNwb25kaW5nIHRvIFUr
MTBGRkZGLgorICogUmV0dXJucyAwIGZvciAwLi4weGMxLiBVbmRlZmluZWQgZm9yIDB4ZjUuLjB4
ZmYuCiAgKiBsZWFkQnl0ZSBtaWdodCBiZSBldmFsdWF0ZWQgbXVsdGlwbGUgdGltZXMuCiAgKgog
ICogVGhpcyBpcyBpbnRlcm5hbCBzaW5jZSBpdCBpcyBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGRp
cmVjdGx5IGJ5IGV4dGVybmFsIGNsaWVudHM7CkBAIC05NCw3ICs2OCw3IEBAIHV0ZjhfY291bnRU
cmFpbEJ5dGVzWzI1Nl07CiAgKiBAaW50ZXJuYWwKICAqLwogI2RlZmluZSBVOF9DT1VOVF9UUkFJ
TF9CWVRFU19VTlNBRkUobGVhZEJ5dGUpIFwKLSAgICAoKChsZWFkQnl0ZSk+PTB4YzApKygobGVh
ZEJ5dGUpPj0weGUwKSsoKGxlYWRCeXRlKT49MHhmMCkpCisgICAgKCgodWludDhfdCkobGVhZEJ5
dGUpPj0weGMyKSsoKHVpbnQ4X3QpKGxlYWRCeXRlKT49MHhlMCkrKCh1aW50OF90KShsZWFkQnl0
ZSk+PTB4ZjApKQogCiAvKioKICAqIE1hc2sgYSBVVEYtOCBsZWFkIGJ5dGUsIGxlYXZlIG9ubHkg
dGhlIGxvd2VyIGJpdHMgdGhhdCBmb3JtIHBhcnQgb2YgdGhlIGNvZGUgcG9pbnQgdmFsdWUuCkBA
IC0xMDUsNiArNzksNDAgQEAgdXRmOF9jb3VudFRyYWlsQnl0ZXNbMjU2XTsKICAqLwogI2RlZmlu
ZSBVOF9NQVNLX0xFQURfQllURShsZWFkQnl0ZSwgY291bnRUcmFpbEJ5dGVzKSAoKGxlYWRCeXRl
KSY9KDE8PCg2LShjb3VudFRyYWlsQnl0ZXMpKSktMSkKIAorLyoqCisgKiBJbnRlcm5hbCBiaXQg
dmVjdG9yIGZvciAzLWJ5dGUgVVRGLTggdmFsaWRpdHkgY2hlY2ssIGZvciB1c2UgaW4gVThfSVNf
VkFMSURfTEVBRDNfQU5EX1QxLgorICogRWFjaCBiaXQgaW5kaWNhdGVzIHdoZXRoZXIgb25lIGxl
YWQgYnl0ZSArIGZpcnN0IHRyYWlsIGJ5dGUgcGFpciBzdGFydHMgYSB2YWxpZCBzZXF1ZW5jZS4K
KyAqIExlYWQgYnl0ZSBFMC4uRUYgYml0cyAzLi4wIGFyZSB1c2VkIGFzIGJ5dGUgaW5kZXgsCisg
KiBmaXJzdCB0cmFpbCBieXRlIGJpdHMgNy4uNSBhcmUgdXNlZCBhcyBiaXQgaW5kZXggaW50byB0
aGF0IGJ5dGUuCisgKiBAc2VlIFU4X0lTX1ZBTElEX0xFQUQzX0FORF9UMQorICogQGludGVybmFs
CisgKi8KKyNkZWZpbmUgVThfTEVBRDNfVDFfQklUUyAiXHgyMFx4MzBceDMwXHgzMFx4MzBceDMw
XHgzMFx4MzBceDMwXHgzMFx4MzBceDMwXHgzMFx4MTBceDMwXHgzMCIKKworLyoqCisgKiBJbnRl
cm5hbCAzLWJ5dGUgVVRGLTggdmFsaWRpdHkgY2hlY2suCisgKiBOb24temVybyBpZiBsZWFkIGJ5
dGUgRTAuLkVGIGFuZCBmaXJzdCB0cmFpbCBieXRlIDAwLi5GRiBzdGFydCBhIHZhbGlkIHNlcXVl
bmNlLgorICogQGludGVybmFsCisgKi8KKyNkZWZpbmUgVThfSVNfVkFMSURfTEVBRDNfQU5EX1Qx
KGxlYWQsIHQxKSAoVThfTEVBRDNfVDFfQklUU1sobGVhZCkmMHhmXSYoMTw8KCh1aW50OF90KSh0
MSk+PjUpKSkKKworLyoqCisgKiBJbnRlcm5hbCBiaXQgdmVjdG9yIGZvciA0LWJ5dGUgVVRGLTgg
dmFsaWRpdHkgY2hlY2ssIGZvciB1c2UgaW4gVThfSVNfVkFMSURfTEVBRDRfQU5EX1QxLgorICog
RWFjaCBiaXQgaW5kaWNhdGVzIHdoZXRoZXIgb25lIGxlYWQgYnl0ZSArIGZpcnN0IHRyYWlsIGJ5
dGUgcGFpciBzdGFydHMgYSB2YWxpZCBzZXF1ZW5jZS4KKyAqIEZpcnN0IHRyYWlsIGJ5dGUgYml0
cyA3Li40IGFyZSB1c2VkIGFzIGJ5dGUgaW5kZXgsCisgKiBsZWFkIGJ5dGUgRjAuLkY0IGJpdHMg
Mi4uMCBhcmUgdXNlZCBhcyBiaXQgaW5kZXggaW50byB0aGF0IGJ5dGUuCisgKiBAc2VlIFU4X0lT
X1ZBTElEX0xFQUQ0X0FORF9UMQorICogQGludGVybmFsCisgKi8KKyNkZWZpbmUgVThfTEVBRDRf
VDFfQklUUyAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDFFXHgwRlx4MEZceDBG
XHgwMFx4MDBceDAwXHgwMCIKKworLyoqCisgKiBJbnRlcm5hbCA0LWJ5dGUgVVRGLTggdmFsaWRp
dHkgY2hlY2suCisgKiBOb24temVybyBpZiBsZWFkIGJ5dGUgRjAuLkY0IGFuZCBmaXJzdCB0cmFp
bCBieXRlIDAwLi5GRiBzdGFydCBhIHZhbGlkIHNlcXVlbmNlLgorICogQGludGVybmFsCisgKi8K
KyNkZWZpbmUgVThfSVNfVkFMSURfTEVBRDRfQU5EX1QxKGxlYWQsIHQxKSAoVThfTEVBRDRfVDFf
QklUU1sodWludDhfdCkodDEpPj40XSYoMTw8KChsZWFkKSY3KSkpCisKIC8qKgogICogRnVuY3Rp
b24gZm9yIGhhbmRsaW5nICJuZXh0IGNvZGUgcG9pbnQiIHdpdGggZXJyb3ItY2hlY2tpbmcuCiAg
KgpAQCAtMTY0LDIwICsxNzIsMjEgQEAgdXRmOF9iYWNrMVNhZmVCb2R5KGNvbnN0IHVpbnQ4X3Qg
KnMsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgaSk7CiAjZGVmaW5lIFU4X0lTX1NJTkdMRShjKSAo
KChjKSYweDgwKT09MCkKIAogLyoqCi0gKiBJcyB0aGlzIGNvZGUgdW5pdCAoYnl0ZSkgYSBVVEYt
OCBsZWFkIGJ5dGU/CisgKiBJcyB0aGlzIGNvZGUgdW5pdCAoYnl0ZSkgYSBVVEYtOCBsZWFkIGJ5
dGU/ICgweEMyLi4weEY0KQogICogQHBhcmFtIGMgOC1iaXQgY29kZSB1bml0IChieXRlKQogICog
QHJldHVybiBUUlVFIG9yIEZBTFNFCiAgKiBAc3RhYmxlIElDVSAyLjQKICAqLwotI2RlZmluZSBV
OF9JU19MRUFEKGMpICgodWludDhfdCkoKGMpLTB4YzApPDB4M2UpCisjZGVmaW5lIFU4X0lTX0xF
QUQoYykgKCh1aW50OF90KSgoYyktMHhjMik8PTB4MzIpCisvLyAweDMyPTB4ZjQtMHhjMgogCiAv
KioKLSAqIElzIHRoaXMgY29kZSB1bml0IChieXRlKSBhIFVURi04IHRyYWlsIGJ5dGU/CisgKiBJ
cyB0aGlzIGNvZGUgdW5pdCAoYnl0ZSkgYSBVVEYtOCB0cmFpbCBieXRlPyAoMHg4MC4uMHhCRikK
ICAqIEBwYXJhbSBjIDgtYml0IGNvZGUgdW5pdCAoYnl0ZSkKICAqIEByZXR1cm4gVFJVRSBvciBG
QUxTRQogICogQHN0YWJsZSBJQ1UgMi40CiAgKi8KLSNkZWZpbmUgVThfSVNfVFJBSUwoYykgKCgo
YykmMHhjMCk9PTB4ODApCisjZGVmaW5lIFU4X0lTX1RSQUlMKGMpICgoaW50OF90KShjKTwtMHg0
MCkKIAogLyoqCiAgKiBIb3cgbWFueSBjb2RlIHVuaXRzIChieXRlcykgYXJlIHVzZWQgZm9yIHRo
ZSBVVEYtOCBlbmNvZGluZwpAQCAtMzA1LDcgKzMxNCw3IEBAIHV0ZjhfYmFjazFTYWZlQm9keShj
b25zdCB1aW50OF90ICpzLCBpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGkpOwogICovCiAjZGVmaW5l
IFU4X05FWFRfVU5TQUZFKHMsIGksIGMpIHsgXAogICAgIChjKT0odWludDhfdCkocylbKGkpKytd
OyBcCi0gICAgaWYoKGMpPj0weDgwKSB7IFwKKyAgICBpZighVThfSVNfU0lOR0xFKGMpKSB7IFwK
ICAgICAgICAgaWYoKGMpPDB4ZTApIHsgXAogICAgICAgICAgICAgKGMpPSgoKGMpJjB4MWYpPDw2
KXwoKHMpWyhpKSsrXSYweDNmKTsgXAogICAgICAgICB9IGVsc2UgaWYoKGMpPDB4ZjApIHsgXApA
QCAtMzQxLDIyICszNTAsMTkgQEAgdXRmOF9iYWNrMVNhZmVCb2R5KGNvbnN0IHVpbnQ4X3QgKnMs
IGludDMyX3Qgc3RhcnQsIGludDMyX3QgaSk7CiAgKi8KICNkZWZpbmUgVThfTkVYVChzLCBpLCBs
ZW5ndGgsIGMpIHsgXAogICAgIChjKT0odWludDhfdCkocylbKGkpKytdOyBcCi0gICAgaWYoKGMp
Pj0weDgwKSB7IFwKKyAgICBpZighVThfSVNfU0lOR0xFKGMpKSB7IFwKICAgICAgICAgdWludDhf
dCBfX3QxLCBfX3QyOyBcCi0gICAgICAgIGlmKCAvKiBoYW5kbGUgVSsxMDAwLi5VK0NGRkYgaW5s
aW5lICovIFwKLSAgICAgICAgICAgICgweGUwPChjKSAmJiAoYyk8PTB4ZWMpICYmIFwKLSAgICAg
ICAgICAgICgoKGkpKzEpPChsZW5ndGgpIHx8IChsZW5ndGgpPDApICYmIFwKLSAgICAgICAgICAg
IChfX3QxPSh1aW50OF90KSgocylbaV0tMHg4MCkpPD0weDNmICYmIFwKLSAgICAgICAgICAgIChf
X3QyPSh1aW50OF90KSgocylbKGkpKzFdLTB4ODApKTw9IDB4M2YgXAotICAgICAgICApIHsgXAot
ICAgICAgICAgICAgLyogbm8gbmVlZCBmb3IgKGMmMHhmKSBiZWNhdXNlIHRoZSB1cHBlciBiaXRz
IGFyZSB0cnVuY2F0ZWQgYWZ0ZXIgPDwxMiBpbiB0aGUgY2FzdCB0byAoVUNoYXIpICovIFwKLSAg
ICAgICAgICAgIChjKT0oVUNoYXIpKCgoYyk8PDEyKXwoX190MTw8Nil8X190Mik7IFwKKyAgICAg
ICAgaWYoIC8qIGhhbmRsZSBVKzA4MDAuLlUrRkZGRiBpbmxpbmUgKi8gXAorICAgICAgICAgICAg
ICAgICgweGUwPD0oYykgJiYgKGMpPDB4ZjApICYmIFwKKyAgICAgICAgICAgICAgICAoKChpKSsx
KTwobGVuZ3RoKSB8fCAobGVuZ3RoKTwwKSAmJiBcCisgICAgICAgICAgICAgICAgVThfSVNfVkFM
SURfTEVBRDNfQU5EX1QxKChjKSwgX190MT0ocylbaV0pICYmIFwKKyAgICAgICAgICAgICAgICAo
X190Mj0ocylbKGkpKzFdLTB4ODApPD0weDNmKSB7IFwKKyAgICAgICAgICAgIChjKT0oKChjKSYw
eGYpPDwxMil8KChfX3QxJjB4M2YpPDw2KXxfX3QyOyBcCiAgICAgICAgICAgICAoaSkrPTI7IFwK
ICAgICAgICAgfSBlbHNlIGlmKCAvKiBoYW5kbGUgVSswMDgwLi5VKzA3RkYgaW5saW5lICovIFwK
LSAgICAgICAgICAgICgoYyk8MHhlMCAmJiAoYyk+PTB4YzIpICYmIFwKLSAgICAgICAgICAgICgo
aSkhPShsZW5ndGgpKSAmJiBcCi0gICAgICAgICAgICAoX190MT0odWludDhfdCkoKHMpW2ldLTB4
ODApKTw9MHgzZiBcCi0gICAgICAgICkgeyBcCisgICAgICAgICAgICAgICAgKChjKTwweGUwICYm
IChjKT49MHhjMikgJiYgXAorICAgICAgICAgICAgICAgICgoaSkhPShsZW5ndGgpKSAmJiBcCisg
ICAgICAgICAgICAgICAgKF9fdDE9KHMpW2ldLTB4ODApPD0weDNmKSB7IFwKICAgICAgICAgICAg
IChjKT0oKChjKSYweDFmKTw8Nil8X190MTsgXAogICAgICAgICAgICAgKysoaSk7IFwKICAgICAg
ICAgfSBlbHNlIHsgXApAQCAtMzkyLDIyICszOTgsMTkgQEAgdXRmOF9iYWNrMVNhZmVCb2R5KGNv
bnN0IHVpbnQ4X3QgKnMsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgaSk7CiAgKi8KICNkZWZpbmUg
VThfTkVYVF9PUl9GRkZEKHMsIGksIGxlbmd0aCwgYykgeyBcCiAgICAgKGMpPSh1aW50OF90KShz
KVsoaSkrK107IFwKLSAgICBpZigoYyk+PTB4ODApIHsgXAorICAgIGlmKCFVOF9JU19TSU5HTEUo
YykpIHsgXAogICAgICAgICB1aW50OF90IF9fdDEsIF9fdDI7IFwKLSAgICAgICAgaWYoIC8qIGhh
bmRsZSBVKzEwMDAuLlUrQ0ZGRiBpbmxpbmUgKi8gXAotICAgICAgICAgICAgKDB4ZTA8KGMpICYm
IChjKTw9MHhlYykgJiYgXAotICAgICAgICAgICAgKCgoaSkrMSk8KGxlbmd0aCkgfHwgKGxlbmd0
aCk8MCkgJiYgXAotICAgICAgICAgICAgKF9fdDE9KHVpbnQ4X3QpKChzKVtpXS0weDgwKSk8PTB4
M2YgJiYgXAotICAgICAgICAgICAgKF9fdDI9KHVpbnQ4X3QpKChzKVsoaSkrMV0tMHg4MCkpPD0g
MHgzZiBcCi0gICAgICAgICkgeyBcCi0gICAgICAgICAgICAvKiBubyBuZWVkIGZvciAoYyYweGYp
IGJlY2F1c2UgdGhlIHVwcGVyIGJpdHMgYXJlIHRydW5jYXRlZCBhZnRlciA8PDEyIGluIHRoZSBj
YXN0IHRvIChVQ2hhcikgKi8gXAotICAgICAgICAgICAgKGMpPShVQ2hhcikoKChjKTw8MTIpfChf
X3QxPDw2KXxfX3QyKTsgXAorICAgICAgICBpZiggLyogaGFuZGxlIFUrMDgwMC4uVStGRkZGIGlu
bGluZSAqLyBcCisgICAgICAgICAgICAgICAgKDB4ZTA8PShjKSAmJiAoYyk8MHhmMCkgJiYgXAor
ICAgICAgICAgICAgICAgICgoKGkpKzEpPChsZW5ndGgpIHx8IChsZW5ndGgpPDApICYmIFwKKyAg
ICAgICAgICAgICAgICBVOF9JU19WQUxJRF9MRUFEM19BTkRfVDEoKGMpLCBfX3QxPShzKVtpXSkg
JiYgXAorICAgICAgICAgICAgICAgIChfX3QyPShzKVsoaSkrMV0tMHg4MCk8PTB4M2YpIHsgXAor
ICAgICAgICAgICAgKGMpPSgoKGMpJjB4Zik8PDEyKXwoKF9fdDEmMHgzZik8PDYpfF9fdDI7IFwK
ICAgICAgICAgICAgIChpKSs9MjsgXAogICAgICAgICB9IGVsc2UgaWYoIC8qIGhhbmRsZSBVKzAw
ODAuLlUrMDdGRiBpbmxpbmUgKi8gXAotICAgICAgICAgICAgKChjKTwweGUwICYmIChjKT49MHhj
MikgJiYgXAotICAgICAgICAgICAgKChpKSE9KGxlbmd0aCkpICYmIFwKLSAgICAgICAgICAgIChf
X3QxPSh1aW50OF90KSgocylbaV0tMHg4MCkpPD0weDNmIFwKLSAgICAgICAgKSB7IFwKKyAgICAg
ICAgICAgICAgICAoKGMpPDB4ZTAgJiYgKGMpPj0weGMyKSAmJiBcCisgICAgICAgICAgICAgICAg
KChpKSE9KGxlbmd0aCkpICYmIFwKKyAgICAgICAgICAgICAgICAoX190MT0ocylbaV0tMHg4MCk8
PTB4M2YpIHsgXAogICAgICAgICAgICAgKGMpPSgoKGMpJjB4MWYpPDw2KXxfX3QxOyBcCiAgICAg
ICAgICAgICArKyhpKTsgXAogICAgICAgICB9IGVsc2UgeyBcCkBAIC00OTIsNyArNDk1LDcgQEAg
dXRmOF9iYWNrMVNhZmVCb2R5KGNvbnN0IHVpbnQ4X3QgKnMsIGludDMyX3Qgc3RhcnQsIGludDMy
X3QgaSk7CiAgKiBAc3RhYmxlIElDVSAyLjQKICAqLwogI2RlZmluZSBVOF9GV0RfMV9VTlNBRkUo
cywgaSkgeyBcCi0gICAgKGkpKz0xK1U4X0NPVU5UX1RSQUlMX0JZVEVTX1VOU0FGRSgodWludDhf
dCkocylbaV0pOyBcCisgICAgKGkpKz0xK1U4X0NPVU5UX1RSQUlMX0JZVEVTX1VOU0FGRSgocylb
aV0pOyBcCiB9CiAKIC8qKgpAQCAtNTA5LDE1ICs1MTIsMjQgQEAgdXRmOF9iYWNrMVNhZmVCb2R5
KGNvbnN0IHVpbnQ4X3QgKnMsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgaSk7CiAgKiBAc3RhYmxl
IElDVSAyLjQKICAqLwogI2RlZmluZSBVOF9GV0RfMShzLCBpLCBsZW5ndGgpIHsgXAotICAgIHVp
bnQ4X3QgX19iPSh1aW50OF90KShzKVsoaSkrK107IFwKLSAgICBpZihVOF9JU19MRUFEKF9fYikp
IHsgXAotICAgICAgICB1aW50OF90IF9fY291bnQ9VThfQ09VTlRfVFJBSUxfQllURVMoX19iKTsg
XAotICAgICAgICBpZigoaSkrX19jb3VudD4obGVuZ3RoKSAmJiAobGVuZ3RoKT49MCkgeyBcCi0g
ICAgICAgICAgICBfX2NvdW50PSh1aW50OF90KSgobGVuZ3RoKS0oaSkpOyBcCi0gICAgICAgIH0g
XAotICAgICAgICB3aGlsZShfX2NvdW50PjAgJiYgVThfSVNfVFJBSUwoKHMpW2ldKSkgeyBcCi0g
ICAgICAgICAgICArKyhpKTsgXAotICAgICAgICAgICAgLS1fX2NvdW50OyBcCisgICAgdWludDhf
dCBfX2I9KHMpWyhpKSsrXTsgXAorICAgIGlmKFU4X0lTX0xFQUQoX19iKSAmJiAoaSkhPShsZW5n
dGgpKSB7IFwKKyAgICAgICAgdWludDhfdCBfX3QxPShzKVtpXTsgXAorICAgICAgICBpZigoMHhl
MDw9X19iICYmIF9fYjwweGYwKSkgeyBcCisgICAgICAgICAgICBpZihVOF9JU19WQUxJRF9MRUFE
M19BTkRfVDEoX19iLCBfX3QxKSAmJiBcCisgICAgICAgICAgICAgICAgICAgICsrKGkpIT0obGVu
Z3RoKSAmJiBVOF9JU19UUkFJTCgocylbaV0pKSB7IFwKKyAgICAgICAgICAgICAgICArKyhpKTsg
XAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gZWxzZSBpZihfX2I8MHhlMCkgeyBcCisgICAg
ICAgICAgICBpZihVOF9JU19UUkFJTChfX3QxKSkgeyBcCisgICAgICAgICAgICAgICAgKysoaSk7
IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IGVsc2UgLyogYz49MHhmMCAqLyB7IFwKKyAg
ICAgICAgICAgIGlmKFU4X0lTX1ZBTElEX0xFQUQ0X0FORF9UMShfX2IsIF9fdDEpICYmIFwKKyAg
ICAgICAgICAgICAgICAgICAgKysoaSkhPShsZW5ndGgpICYmIFU4X0lTX1RSQUlMKChzKVtpXSkg
JiYgXAorICAgICAgICAgICAgICAgICAgICArKyhpKSE9KGxlbmd0aCkgJiYgVThfSVNfVFJBSUwo
KHMpW2ldKSkgeyBcCisgICAgICAgICAgICAgICAgKysoaSk7IFwKKyAgICAgICAgICAgIH0gXAog
ICAgICAgICB9IFwKICAgICB9IFwKIH0KQEAgLTYzMSw3ICs2NDMsNyBAQCB1dGY4X2JhY2sxU2Fm
ZUJvZHkoY29uc3QgdWludDhfdCAqcywgaW50MzJfdCBzdGFydCwgaW50MzJfdCBpKTsKICAgICAg
ICAgLyogYyBpcyBhIHRyYWlsIGJ5dGUgKi8gXAogICAgICAgICAoYykmPTB4M2Y7IFwKICAgICAg
ICAgZm9yKDs7KSB7IFwKLSAgICAgICAgICAgIF9fYj0odWludDhfdCkocylbLS0oaSldOyBcCisg
ICAgICAgICAgICBfX2I9KHMpWy0tKGkpXTsgXAogICAgICAgICAgICAgaWYoX19iPj0weGMwKSB7
IFwKICAgICAgICAgICAgICAgICBVOF9NQVNLX0xFQURfQllURShfX2IsIF9fY291bnQpOyBcCiAg
ICAgICAgICAgICAgICAgKGMpfD0oVUNoYXIzMilfX2I8PF9fc2hpZnQ7IFwKQEAgLTY2Nyw3ICs2
NzksNyBAQCB1dGY4X2JhY2sxU2FmZUJvZHkoY29uc3QgdWludDhfdCAqcywgaW50MzJfdCBzdGFy
dCwgaW50MzJfdCBpKTsKICAqLwogI2RlZmluZSBVOF9QUkVWKHMsIHN0YXJ0LCBpLCBjKSB7IFwK
ICAgICAoYyk9KHVpbnQ4X3QpKHMpWy0tKGkpXTsgXAotICAgIGlmKChjKT49MHg4MCkgeyBcCisg
ICAgaWYoIVU4X0lTX1NJTkdMRShjKSkgeyBcCiAgICAgICAgIChjKT11dGY4X3ByZXZDaGFyU2Fm
ZUJvZHkoKGNvbnN0IHVpbnQ4X3QgKilzLCBzdGFydCwgJihpKSwgYywgLTEpOyBcCiAgICAgfSBc
CiB9CkBAIC02OTgsNyArNzEwLDcgQEAgdXRmOF9iYWNrMVNhZmVCb2R5KGNvbnN0IHVpbnQ4X3Qg
KnMsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgaSk7CiAgKi8KICNkZWZpbmUgVThfUFJFVl9PUl9G
RkZEKHMsIHN0YXJ0LCBpLCBjKSB7IFwKICAgICAoYyk9KHVpbnQ4X3QpKHMpWy0tKGkpXTsgXAot
ICAgIGlmKChjKT49MHg4MCkgeyBcCisgICAgaWYoIVU4X0lTX1NJTkdMRShjKSkgeyBcCiAgICAg
ICAgIChjKT11dGY4X3ByZXZDaGFyU2FmZUJvZHkoKGNvbnN0IHVpbnQ4X3QgKilzLCBzdGFydCwg
JihpKSwgYywgLTMpOyBcCiAgICAgfSBcCiB9CkBAIC04MTUsNyArODI3LDcgQEAgdXRmOF9iYWNr
MVNhZmVCb2R5KGNvbnN0IHVpbnQ4X3QgKnMsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgaSk7CiAg
KiBAc3RhYmxlIElDVSAyLjQKICAqLwogI2RlZmluZSBVOF9TRVRfQ1BfTElNSVQocywgc3RhcnQs
IGksIGxlbmd0aCkgeyBcCi0gICAgaWYoKHN0YXJ0KTwoaSkgJiYgKChpKTwobGVuZ3RoKSB8fCAo
KGxlbmd0aCk8MCAmJiAocylbaV0hPTApKSkgeyBcCisgICAgaWYoKHN0YXJ0KTwoaSkgJiYgKChp
KTwobGVuZ3RoKSB8fCAobGVuZ3RoKTwwKSkgeyBcCiAgICAgICAgIFU4X0JBQ0tfMShzLCBzdGFy
dCwgaSk7IFwKICAgICAgICAgVThfRldEXzEocywgaSwgbGVuZ3RoKTsgXAogICAgIH0gXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGZfb2xkLmggYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3V0Zl9vbGQuaAppbmRleCBmOTEyNWIxZGQyZWQ3ZTFjNjg0ZGExNjU0ZjVlNDdk
ZDdjZDVmYjE0Li41NWMxN2MwMWRmNmRiMzRmMWE1MDQxMjYzZjRkYzU2MjdmNzUzN2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0Zl9vbGQuaAorKysgYi9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3V0Zl9vbGQuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxh
dGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNl
OiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgogKgpAQCAtNiw3ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
ICogICBmaWxlIG5hbWU6ICB1dGZfb2xkLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAg
IGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5k
ZW50YXRpb246NAogKgpAQCAtMTUsMTIgKzE3LDEyIEBACiAqLwogCiAvKioKLSAqIFxmaWxlIAor
ICogXGZpbGUKICAqIFxicmllZiBDIEFQSTogRGVwcmVjYXRlZCBtYWNyb3MgZm9yIFVuaWNvZGUg
c3RyaW5nIGhhbmRsaW5nCiAgKi8KIAogLyoqCi0gKiAKKyAqCiAgKiBUaGUgbWFjcm9zIGluIHV0
Zl9vbGQuaCBhcmUgYWxsIGRlcHJlY2F0ZWQgYW5kIHRoZWlyIHVzZSBkaXNjb3VyYWdlZC4KICAq
IFNvbWUgb2YgdGhlIGRlc2lnbiBwcmluY2lwbGVzIGJlaGluZCB0aGUgc2V0IG9mIFVURiBtYWNy
b3MKICAqIGhhdmUgY2hhbmdlZCBvciBwcm92ZWQgaW1wcmFjdGljYWwuCkBAIC0xNDMsNyArMTQ1
LDIyIEBACiAjaWZuZGVmIF9fVVRGX09MRF9IX18KICNkZWZpbmUgX19VVEZfT0xEX0hfXwogCi0j
aWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorLyoqCisgKiBcZGVmIFVfSElERV9PQlNPTEVU
RV9VVEZfT0xEX0gKKyAqCisgKiBIaWRlcyB0aGUgb2Jzb2xldGUgZGVmaW5pdGlvbnMgaW4gdW5p
Y29kZS91dGZfb2xkLmguCisgKiBSZWNvbW1lbmRlZCB0byBiZSBzZXQgdG8gMSBhdCBjb21waWxl
IHRpbWUgdG8gbWFrZSBzdXJlCisgKiB0aGUgbG9uZy1kZXByZWNhdGVkIG1hY3JvcyBhcmUgbm8g
bG9uZ2VyIHVzZWQuCisgKgorICogRm9yIHJlYXNvbnMgZm9yIHRoZSBkZXByZWNhdGlvbiBzZWUg
dGhlIHV0Zl9vbGQuaCBmaWxlIGNvbW1lbnRzLgorICoKKyAqIEBpbnRlcm5hbAorICovCisjaWZu
ZGVmIFVfSElERV9PQlNPTEVURV9VVEZfT0xEX0gKKyMgICBkZWZpbmUgVV9ISURFX09CU09MRVRF
X1VURl9PTERfSCAwCisjZW5kaWYKKworI2lmICFkZWZpbmVkKFVfSElERV9ERVBSRUNBVEVEX0FQ
SSkgJiYgIVVfSElERV9PQlNPTEVURV9VVEZfT0xEX0gKIAogI2luY2x1ZGUgInVuaWNvZGUvdXRm
LmgiCiAjaW5jbHVkZSAidW5pY29kZS91dGY4LmgiCkBAIC0yNjUsNiArMjgyLDI1IEBAIHR5cGVk
ZWYgaW50MzJfdCBVVGV4dE9mZnNldDsKIAogLyogRm9ybWVybHkgdXRmOC5oIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorLyoq
CisqIFx2YXIgdXRmOF9jb3VudFRyYWlsQnl0ZXMKKyogSW50ZXJuYWwgYXJyYXkgd2l0aCBudW1i
ZXJzIG9mIHRyYWlsIGJ5dGVzIGZvciBhbnkgZ2l2ZW4gYnl0ZSB1c2VkIGluCisqIGxlYWQgYnl0
ZSBwb3NpdGlvbi4KKyoKKyogVGhpcyBpcyBpbnRlcm5hbCBzaW5jZSBpdCBpcyBub3QgbWVhbnQg
dG8gYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IGV4dGVybmFsIGNsaWVudHM7CisqIGhvd2V2ZXIgaXQg
aXMgY2FsbGVkIGJ5IHB1YmxpYyBtYWNyb3MgaW4gdGhpcyBmaWxlIGFuZCB0aHVzIG11c3QgcmVt
YWluIHN0YWJsZSwKKyogYW5kIHNob3VsZCBub3QgYmUgaGlkZGVuIHdoZW4gb3RoZXIgaW50ZXJu
YWwgZnVuY3Rpb25zIGFyZSBoaWRkZW4gKG90aGVyd2lzZQorKiBwdWJsaWMgbWFjcm9zIHdvdWxk
IGZhaWwgdG8gY29tcGlsZSkuCisqIEBpbnRlcm5hbAorKi8KKyNpZmRlZiBVX1VURjhfSU1QTAor
Ly8gTm8gZm9yd2FyZCBkZWNsYXJhdGlvbiBpZiBjb21waWxpbmcgdXRmX2ltcGwuY3BwLCB3aGlj
aCBkZWZpbmVzIHV0ZjhfY291bnRUcmFpbEJ5dGVzLgorI2VsaWYgZGVmaW5lZChVX1NUQVRJQ19J
TVBMRU1FTlRBVElPTikgfHwgZGVmaW5lZChVX0NPTU1PTl9JTVBMRU1FTlRBVElPTikKK1VfQ0ZV
TkMgY29uc3QgdWludDhfdCB1dGY4X2NvdW50VHJhaWxCeXRlc1tdOworI2Vsc2UKK1VfQ0ZVTkMg
VV9JTVBPUlQgY29uc3QgdWludDhfdCB1dGY4X2NvdW50VHJhaWxCeXRlc1tdOyAgICAvKiBVX0lN
UE9SVDI/ICovIC8qVV9JTVBPUlQqLworI2VuZGlmCisKIC8qKgogICogQ291bnQgdGhlIHRyYWls
IGJ5dGVzIGZvciBhIFVURi04IGxlYWQgYnl0ZS4KICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFJl
bmFtZWQgdG8gVThfQ09VTlRfVFJBSUxfQllURVMsIHNlZSB1dGZfb2xkLmguCkBAIC0xMTYzLDcg
KzExOTksNiBAQCB0eXBlZGVmIGludDMyX3QgVVRleHRPZmZzZXQ7CiAgKi8KICNkZWZpbmUgVVRG
X1NFVF9DSEFSX0xJTUlUKHMsIHN0YXJ0LCBpLCBsZW5ndGgpIFUxNl9TRVRfQ1BfTElNSVQocywg
c3RhcnQsIGksIGxlbmd0aCkKIAotI2VuZGlmIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwor
I2VuZGlmICAvLyAhVV9ISURFX0RFUFJFQ0FURURfQVBJICYmICFVX0hJREVfT0JTT0xFVEVfVVRG
X09MRF9ICiAKICNlbmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0
bXNjYWxlLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0bXNjYWxlLmgKaW5kZXggNDcyZDc3
NmE2MmQxMGMzYmIyZWE5MDAzZTQyYWFhYmQ1MjRmZTllYy4uZDhiOGEyZTY2OGFmMWRhMGIzY2Y5
M2FkODA2Mzk5YWZlMDdhNzgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91
dG1zY2FsZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRtc2NhbGUuaApAQCAtMSwz
ICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMu
CisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHly
aWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIw
MDQgLSAyMDA4LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFu
ZApAQCAtMjgxLDEwICsyODMsMTQgQEAgdHlwZWRlZiBlbnVtIFVEYXRlVGltZVNjYWxlIHsKICAg
ICAgKi8KICAgICBVRFRTX1VOSVhfTUlDUk9TRUNPTkRTX1RJTUUsCiAKKyNpZm5kZWYgVV9ISURF
X0RFUFJFQ0FURURfQVBJCiAgICAgLyoqCiAgICAgICogVGhlIGZpcnN0IHVudXNlZCB0aW1lIHNj
YWxlIHZhbHVlLiBUaGUgbGltaXQgb2YgdGhpcyBlbnVtCisgICAgICogQGRlcHJlY2F0ZWQgSUNV
IDU5IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tl
dCAjMTI0MjAuCiAgICAgICovCiAgICAgVURUU19NQVhfU0NBTEUKKyNlbmRpZiAgLyogVV9ISURF
X0RFUFJFQ0FURURfQVBJICovCisKIH0gVURhdGVUaW1lU2NhbGU7CiAKIC8qKgpAQCAtNDIxLDEy
ICs0MjcsMTUgQEAgdHlwZWRlZiBlbnVtIFVUaW1lU2NhbGVWYWx1ZSB7CiAKICNlbmRpZiAvKiBV
X0hJREVfSU5URVJOQUxfQVBJICovCiAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCiAg
ICAgLyoqCiAgICAgICogVGhlIG51bWJlciBvZiB0aW1lIHNjYWxlIHZhbHVlcywgaW4gb3RoZXIg
d29yZHMgbGltaXQgb2YgdGhpcyBlbnVtLgogICAgICAqIAogICAgICAqIEBzZWUgdXRtc2NhbGVf
Z2V0VGltZVNjYWxlVmFsdWUKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTkgVGhlIG51bWVyaWMg
dmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KICAgICAg
Ki8KICAgICBVVFNWX01BWF9TQ0FMRV9WQUxVRT0xMQorI2VuZGlmICAvKiBVX0hJREVfREVQUkVD
QVRFRF9BUEkgKi8KIAogfSBVVGltZVNjYWxlVmFsdWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdXRyYWNlLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0cmFjZS5o
CmluZGV4IDI2MjFjZjljODU0MjA3MDgyMWUyYTllMzI5ZDI3NDU2OGViNmMwYTkuLjZiNGM0ZGY5
NDAyNmE3ZmQzY2QxYWViMGI2OTU1ODEwNjAwZTYyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdXRyYWNlLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dHJhY2Uu
aApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtNiw3
ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1dHJh
Y2UuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICog
ICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC02NCw3
ICs2NiwxMyBAQCB0eXBlZGVmIGVudW0gVVRyYWNlRnVuY3Rpb25OdW1iZXIgewogICAgIFVUUkFD
RV9GVU5DVElPTl9TVEFSVD0wLAogICAgIFVUUkFDRV9VX0lOSVQ9VVRSQUNFX0ZVTkNUSU9OX1NU
QVJULAogICAgIFVUUkFDRV9VX0NMRUFOVVAsCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQ
SQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIGNvbGxh
dGlvbiB0cmFjZSBsb2NhdGlvbi4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVy
aWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAg
ICAgKi8KICAgICBVVFJBQ0VfRlVOQ1RJT05fTElNSVQsCisjZW5kaWYgIC8vIFVfSElERV9ERVBS
RUNBVEVEX0FQSQogCiAgICAgVVRSQUNFX0NPTlZFUlNJT05fU1RBUlQ9MHgxMDAwLAogICAgIFVU
UkFDRV9VQ05WX09QRU49VVRSQUNFX0NPTlZFUlNJT05fU1RBUlQsCkBAIC03NSw3ICs4MywxMyBA
QCB0eXBlZGVmIGVudW0gVVRyYWNlRnVuY3Rpb25OdW1iZXIgewogICAgIFVUUkFDRV9VQ05WX0ZM
VVNIX0NBQ0hFLAogICAgIFVUUkFDRV9VQ05WX0xPQUQsCiAgICAgVVRSQUNFX1VDTlZfVU5MT0FE
LAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9y
ZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBjb2xsYXRpb24gdHJhY2UgbG9jYXRpb24uCisgICAg
ICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0
aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVVRSQUNFX0NPTlZFUlNJ
T05fTElNSVQsCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogCiAgICAgVVRSQUNF
X0NPTExBVElPTl9TVEFSVD0weDIwMDAsCiAgICAgVVRSQUNFX1VDT0xfT1BFTj1VVFJBQ0VfQ09M
TEFUSU9OX1NUQVJULApAQCAtODcsNyArMTAxLDEzIEBAIHR5cGVkZWYgZW51bSBVVHJhY2VGdW5j
dGlvbk51bWJlciB7CiAgICAgVVRSQUNFX1VDT0xfU1RSQ09MTElURVIsCiAgICAgVVRSQUNFX1VD
T0xfT1BFTl9GUk9NX1NIT1JUX1NUUklORywKICAgICBVVFJBQ0VfVUNPTF9TVFJDT0xMVVRGOCwg
LyoqPCBAc3RhYmxlIElDVSA1MCAqLworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAg
ICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBjb2xsYXRpb24g
dHJhY2UgbG9jYXRpb24uCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZh
bHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICov
CiAgICAgVVRSQUNFX0NPTExBVElPTl9MSU1JVAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRF
RF9BUEkKIH0gVVRyYWNlRnVuY3Rpb25OdW1iZXI7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS91dHJhbnMuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRyYW5z
LmgKaW5kZXggZTNmZTE2MjljOGNiNTI2MWYyNzcwZTcyYWNmN2FmNTc3OWMyMTJiMS4uZDBmMDVj
ZjJiNjBjMzJlNjIzOWVmMDc4Nzc2YTRkNjhmNmRiN2FkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91dHJhbnMuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0cmFu
cy5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4g
YW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29k
ZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgQ29w
eXJpZ2h0IChDKSAxOTk3LTIwMTEsMjAxNC0yMDE1IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFj
aGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXR5cGVzLmggYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3V0eXBlcy5oCmluZGV4IDA5MDM3YTgxZDUyODVjMTc1NDM0N2Qz
NWFkYjA1ZjNmYzlkMmQzNWQuLjAzM2NiZGM1ODYyNDlmYTQxY2RiMTE0YzE5NjMxMGNlZGY3NTAz
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXR5cGVzLmgKKysrIGIvU291
cmNlL1dURi9pY3UvdW5pY29kZS91dHlwZXMuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgotKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTYsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTU5LDcgKzYxLDcgQEAKICAqLwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiAjICAgaWZuZGVmIFVfU0hPV19DUExVU1BMVVNfQVBJCi0jICAgICAg
IGRlZmluZSBVX1NIT1dfQ1BMVVNQTFVTX0FQSSAxCisjICAgICAgIGRlZmluZSBVX1NIT1dfQ1BM
VVNQTFVTX0FQSSAwCiAjICAgZW5kaWYKICNlbHNlCiAjICAgdW5kZWYgVV9TSE9XX0NQTFVTUExV
U19BUEkKQEAgLTEzNyw3ICsxMzksNyBAQAogI2RlZmluZSBVX0lDVURBVEFfTkFNRSAgICAiaWN1
ZHQiIFVfSUNVX1ZFUlNJT05fU0hPUlQgVV9JQ1VEQVRBX1RZUEVfTEVUVEVSCiAjaWZuZGVmIFVf
SElERV9JTlRFUk5BTF9BUEkKICNkZWZpbmUgVV9VU1JEQVRBX05BTUUgICAgInVzcmR0IiBVX0lD
VV9WRVJTSU9OX1NIT1JUIFVfSUNVREFUQV9UWVBFX0xFVFRFUiAgLyoqPCBAaW50ZXJuYWwgKi8K
LSNkZWZpbmUgVV9VU0VfVVNSREFUQSAgICAgMSAgLyoqPCBAaW50ZXJuYWwgKi8KKyNkZWZpbmUg
VV9VU0VfVVNSREFUQSAgICAgMCAgLyoqPCBAaW50ZXJuYWwgKi8KICNlbmRpZiAgLyogVV9ISURF
X0lOVEVSTkFMX0FQSSAqLwogCiAvKioKQEAgLTE3NiwxMiArMTc4LDEyIEBACiAKIC8qKgogICog
XGRlZiBOVUxMCi0gKiBEZWZpbmUgTlVMTCBpZiBuZWNlc3NhcnksIHRvIDAgZm9yIEMrKyBhbmQg
dG8gKCh2b2lkICopMCkgZm9yIEMuCisgKiBEZWZpbmUgTlVMTCBpZiBuZWNlc3NhcnksIHRvIG51
bGxwdHIgZm9yIEMrKyBhbmQgdG8gKCh2b2lkICopMCkgZm9yIEMuCiAgKiBAc3RhYmxlIElDVSAy
LjAKICAqLwogI2lmbmRlZiBOVUxMCiAjaWZkZWYgX19jcGx1c3BsdXMKLSNkZWZpbmUgTlVMTCAg
ICAwCisjZGVmaW5lIE5VTEwgICAgbnVsbHB0cgogI2Vsc2UKICNkZWZpbmUgTlVMTCAgICAoKHZv
aWQgKikwKQogI2VuZGlmCkBAIC0zNzMsODggKzM3NSw2IEBAIHR5cGVkZWYgZG91YmxlIFVEYXRl
OwogI2RlZmluZSBVX1NUQU5EQVJEX0NQUF9OQU1FU1BBQ0UKICNlbmRpZgogCi0KLS8qPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ki8KLS8qIEdsb2JhbCBkZWxldGUgb3BlcmF0b3IgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ki8KLQotLyoKLSAqIFRoZSBJQ1U0QyBsaWJyYXJ5IG11c3Qgbm90IHVzZSB0aGUgZ2xvYmFs
IG5ldyBhbmQgZGVsZXRlIG9wZXJhdG9ycy4KLSAqIFRoZXNlIG9wZXJhdG9ycyBoZXJlIGFyZSBk
ZWZpbmVkIHRvIGVuYWJsZSB0ZXN0aW5nIGZvciB0aGlzLgotICogU2VlIEppdHRlcmJ1ZyAyNTgx
IGZvciBkZXRhaWxzIG9mIHdoeSB0aGlzIGlzIG5lY2Vzc2FyeS4KLSAqCi0gKiBWZXJpZmljYXRp
b24gdGhhdCBJQ1U0QydzIG1lbW9yeSB1c2FnZSBpcyBjb3JyZWN0LCBpLmUuLAotICogdGhhdCBn
bG9iYWwgbmV3L2RlbGV0ZSBhcmUgbm90IHVzZWQ6Ci0gKgotICogYSkgQ2hlY2sgZm9yIGltcG9y
dHMgb2YgZ2xvYmFsIG5ldy9kZWxldGUgKHNlZSB1b2JqZWN0LmNwcCBmb3IgZGV0YWlscykKLSAq
IGIpIFZlcmlmeSB0aGF0IG5ldyBpcyBuZXZlciBpbXBvcnRlZC4KLSAqIGMpIFZlcmlmeSB0aGF0
IGRlbGV0ZSBpcyBvbmx5IGltcG9ydGVkIGZyb20gb2JqZWN0IGNvZGUgZm9yIGludGVyZmFjZS9t
aXhpbiBjbGFzc2VzLgotICogZCkgQWRkIGdsb2JhbCBkZWxldGUgYW5kIGRlbGV0ZVtdIG9ubHkg
Zm9yIHRoZSBJQ1U0QyBsaWJyYXJ5IGl0c2VsZgotICogICAgYW5kIGRlZmluZSB0aGVtIGluIGEg
d2F5IHRoYXQgY3Jhc2hlcyBvciBvdGhlcndpc2UgZWFzaWx5IHNob3dzIGEgcHJvYmxlbS4KLSAq
Ci0gKiBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgZCkuCi0gKiBUaGUgb3BlcmF0b3IgaW1wbGVt
ZW50YXRpb25zIGNyYXNoOyB0aGlzIGlzIGludGVudGlvbmFsIGFuZCB1c2VkIGZvciBsaWJyYXJ5
IGRlYnVnZ2luZy4KLSAqCi0gKiBOb3RlOiBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IGRvbmUgb24g
V2luZG93cyBiZWNhdXNlCi0gKiBzb21lIExpbnV4L1VuaXggY29tcGlsZXJzIGhhdmUgcHJvYmxl
bXMgd2l0aCBkZWZpbmluZyBnbG9iYWwgbmV3L2RlbGV0ZS4KLSAqIE9uIFdpbmRvd3MsIGl0IGlz
IF9NU0NfVkVSPj0xMjAwIGZvciBNU1ZDIDYuMCBhbmQgaGlnaGVyLgotICovCi0jaWYgZGVmaW5l
ZChfX2NwbHVzcGx1cykgJiYgVV9ERUJVRyAmJiBVX09WRVJSSURFX0NYWF9BTExPQ0FUSU9OICYm
IChfTVNDX1ZFUj49MTIwMCkgJiYgIWRlZmluZWQoVV9TVEFUSUNfSU1QTEVNRU5UQVRJT04pICYm
IChkZWZpbmVkKFVfQ09NTU9OX0lNUExFTUVOVEFUSU9OKSB8fCBkZWZpbmVkKFVfSTE4Tl9JTVBM
RU1FTlRBVElPTikgfHwgZGVmaW5lZChVX0lPX0lNUExFTUVOVEFUSU9OKSB8fCBkZWZpbmVkKFVf
TEFZT1VUX0lNUExFTUVOVEFUSU9OKSB8fCBkZWZpbmVkKFVfTEFZT1VURVhfSU1QTEVNRU5UQVRJ
T04pKQotCi0jaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKLS8qKgotICogR2xvYmFsIG9wZXJh
dG9yIG5ldywgZGVmaW5lZCBvbmx5IGluc2lkZSBJQ1U0QywgbXVzdCBub3QgYmUgdXNlZC4KLSAq
IENyYXNoZXMgaW50ZW50aW9uYWxseS4KLSAqIEBpbnRlcm5hbAotICovCi1pbmxpbmUgdm9pZCAq
Ci1vcGVyYXRvciBuZXcoc2l6ZV90IC8qc2l6ZSovKSB7Ci0gICAgY2hhciAqcT1OVUxMOwotICAg
ICpxPTU7IC8qIGJyZWFrIGl0ICovCi0gICAgcmV0dXJuIHE7Ci19Ci0KLSNpZmRlZiBfUmV0X2J5
dGVjYXBfCi0vKiBUaGlzIGlzIG9ubHkgbmVlZGVkIHRvIHN1cHByZXNzIGEgVmlzdWFsIEMrKyAy
MDA4IHdhcm5pbmcgZm9yIG9wZXJhdG9yIG5ld1tdLiAqLwotX1JldF9ieXRlY2FwXyhfU2l6ZSkK
LSNlbmRpZgotLyoqCi0gKiBHbG9iYWwgb3BlcmF0b3IgbmV3W10sIGRlZmluZWQgb25seSBpbnNp
ZGUgSUNVNEMsIG11c3Qgbm90IGJlIHVzZWQuCi0gKiBDcmFzaGVzIGludGVudGlvbmFsbHkuCi0g
KiBAaW50ZXJuYWwKLSAqLwotaW5saW5lIHZvaWQgKgotb3BlcmF0b3IgbmV3W10oc2l6ZV90IC8q
c2l6ZSovKSB7Ci0gICAgY2hhciAqcT1OVUxMOwotICAgICpxPTU7IC8qIGJyZWFrIGl0ICovCi0g
ICAgcmV0dXJuIHE7Ci19Ci0KLS8qKgotICogR2xvYmFsIG9wZXJhdG9yIGRlbGV0ZSwgZGVmaW5l
ZCBvbmx5IGluc2lkZSBJQ1U0QywgbXVzdCBub3QgYmUgdXNlZC4KLSAqIENyYXNoZXMgaW50ZW50
aW9uYWxseS4KLSAqIEBpbnRlcm5hbAotICovCi1pbmxpbmUgdm9pZAotb3BlcmF0b3IgZGVsZXRl
KHZvaWQgKiAvKnAqLykgewotICAgIGNoYXIgKnE9TlVMTDsKLSAgICAqcT01OyAvKiBicmVhayBp
dCAqLwotfQotCi0vKioKLSAqIEdsb2JhbCBvcGVyYXRvciBkZWxldGVbXSwgZGVmaW5lZCBvbmx5
IGluc2lkZSBJQ1U0QywgbXVzdCBub3QgYmUgdXNlZC4KLSAqIENyYXNoZXMgaW50ZW50aW9uYWxs
eS4KLSAqIEBpbnRlcm5hbAotICovCi1pbmxpbmUgdm9pZAotb3BlcmF0b3IgZGVsZXRlW10odm9p
ZCAqIC8qcCovKSB7Ci0gICAgY2hhciAqcT1OVUxMOwotICAgICpxPTU7IC8qIGJyZWFrIGl0ICov
Ci19Ci0KLSNlbmRpZiAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCi0jZW5kaWYKLQogLyo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0qLwogLyogVUVycm9yQ29kZSAqLwogLyo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0q
LwpAQCAtNDk5LDggKzQxOSwxMyBAQCB0eXBlZGVmIGVudW0gVUVycm9yQ29kZSB7CiAgICAgCiAg
ICAgVV9QTFVHSU5fQ0hBTkdFRF9MRVZFTF9XQVJOSU5HID0gLTEyMCwgLyoqPCBBIHBsdWdpbiBj
YXVzZWQgYSBsZXZlbCBjaGFuZ2UuIE1heSBub3QgYmUgYW4gZXJyb3IsIGJ1dCBsYXRlciBwbHVn
aW5zIG1heSBub3QgbG9hZC4gKi8KIAotICAgIFVfRVJST1JfV0FSTklOR19MSU1JVCwgICAgICAg
ICAgICAgIC8qKjwgVGhpcyBtdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCB3YXJuaW5nIHZhbHVlIHRv
IGluZGljYXRlIHRoZSBsaW1pdCBmb3IgVUVycm9yQ29kZSB3YXJuaW5ncyAobGFzdCB3YXJuaW5n
IGNvZGUgKzEpICovCi0KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisg
ICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVUVycm9yQ29kZSB3YXJuaW5n
IHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkg
Y2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLworICAgIFVf
RVJST1JfV0FSTklOR19MSU1JVCwKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiAK
ICAgICBVX1pFUk9fRVJST1IgICAgICAgICAgICAgID0gIDAsICAgICAvKio8IE5vIGVycm9yLCBu
byB3YXJuaW5nLiAqLwogCkBAIC01MzYsOSArNDYxLDE2IEBAIHR5cGVkZWYgZW51bSBVRXJyb3JD
b2RlIHsKICAgICBVX1VTRUxFU1NfQ09MTEFUT1JfRVJST1IgID0gMjksICAgICAvKio8IENvbGxh
dG9yIGlzIG9wdGlvbnMgb25seSBhbmQgbm8gYmFzZSBpcyBzcGVjaWZpZWQgKi8KICAgICBVX05P
X1dSSVRFX1BFUk1JU1NJT04gICAgID0gMzAsICAgICAvKio8IEF0dGVtcHQgdG8gbW9kaWZ5IHJl
YWQtb25seSBvciBjb25zdGFudCBkYXRhLiAqLwogCi0gICAgVV9TVEFOREFSRF9FUlJPUl9MSU1J
VCwgICAgICAgICAgICAgLyoqPCBUaGlzIG11c3QgYWx3YXlzIGJlIHRoZSBsYXN0IHZhbHVlIHRv
IGluZGljYXRlIHRoZSBsaW1pdCBmb3Igc3RhbmRhcmQgZXJyb3JzICovCisjaWZuZGVmIFVfSElE
RV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hl
c3Qgc3RhbmRhcmQgZXJyb3IgY29kZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51
bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4K
KyAgICAgKi8KKyAgICBVX1NUQU5EQVJEX0VSUk9SX0xJTUlULAorI2VuZGlmICAvLyBVX0hJREVf
REVQUkVDQVRFRF9BUEkKKwogICAgIC8qCi0gICAgICogdGhlIGVycm9yIGNvZGUgcmFuZ2UgMHgx
MDAwMCAweDEwMTAwIGFyZSByZXNlcnZlZCBmb3IgVHJhbnNsaXRlcmF0b3IKKyAgICAgKiBFcnJv
ciBjb2RlcyBpbiB0aGUgcmFuZ2UgMHgxMDAwMCAweDEwMTAwIGFyZSByZXNlcnZlZCBmb3IgVHJh
bnNsaXRlcmF0b3IuCiAgICAgICovCiAgICAgVV9CQURfVkFSSUFCTEVfREVGSU5JVElPTj0weDEw
MDAwLC8qKjwgTWlzc2luZyAnJCcgb3IgZHVwbGljYXRlIHZhcmlhYmxlIG5hbWUgKi8KICAgICBV
X1BBUlNFX0VSUk9SX1NUQVJUID0gMHgxMDAwMCwgICAgLyoqPCBTdGFydCBvZiBUcmFuc2xpdGVy
YXRvciBlcnJvcnMgKi8KQEAgLTU3NiwxMCArNTA4LDE2IEBAIHR5cGVkZWYgZW51bSBVRXJyb3JD
b2RlIHsKICAgICBVX0lOVEVSTkFMX1RSQU5TTElURVJBVE9SX0VSUk9SLCAgLyoqPCBJbnRlcm5h
bCB0cmFuc2xpdGVyYXRvciBzeXN0ZW0gZXJyb3IgKi8KICAgICBVX0lOVkFMSURfSUQsICAgICAg
ICAgICAgICAgICAgICAgLyoqPCBBICI6OmlkIiBydWxlIHNwZWNpZmllcyBhbiB1bmtub3duIHRy
YW5zbGl0ZXJhdG9yICovCiAgICAgVV9JTlZBTElEX0ZVTkNUSU9OLCAgICAgICAgICAgICAgIC8q
KjwgQSAiJmZuKCkiIHJ1bGUgc3BlY2lmaWVzIGFuIHVua25vd24gdHJhbnNsaXRlcmF0b3IgKi8K
LSAgICBVX1BBUlNFX0VSUk9SX0xJTUlULCAgICAgICAgICAgICAgLyoqPCBUaGUgbGltaXQgZm9y
IFRyYW5zbGl0ZXJhdG9yIGVycm9ycyAqLworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkK
KyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBUcmFuc2xp
dGVyYXRvciBlcnJvciBjb2RlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJp
YyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAg
ICAqLworICAgIFVfUEFSU0VfRVJST1JfTElNSVQsCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNB
VEVEX0FQSQogCiAgICAgLyoKLSAgICAgKiB0aGUgZXJyb3IgY29kZSByYW5nZSAweDEwMTAwIDB4
MTAyMDAgYXJlIHJlc2VydmVkIGZvciBmb3JtYXR0aW5nIEFQSSBwYXJzaW5nIGVycm9yCisgICAg
ICogRXJyb3IgY29kZXMgaW4gdGhlIHJhbmdlIDB4MTAxMDAgMHgxMDIwMCBhcmUgcmVzZXJ2ZWQg
Zm9yIHRoZSBmb3JtYXR0aW5nIEFQSS4KICAgICAgKi8KICAgICBVX1VORVhQRUNURURfVE9LRU49
MHgxMDEwMCwgICAgICAgLyoqPCBTeW50YXggZXJyb3IgaW4gZm9ybWF0IHBhdHRlcm4gKi8KICAg
ICBVX0ZNVF9QQVJTRV9FUlJPUl9TVEFSVD0weDEwMTAwLCAgLyoqPCBTdGFydCBvZiBmb3JtYXQg
bGlicmFyeSBlcnJvcnMgKi8KQEAgLTYwMSwxMCArNTM5LDE2IEBAIHR5cGVkZWYgZW51bSBVRXJy
b3JDb2RlIHsKICAgICBVX0RFRkFVTFRfS0VZV09SRF9NSVNTSU5HLCAgICAgICAgLyoqPCBNaXNz
aW5nIERFRkFVTFQgcnVsZSBpbiBwbHVyYWwgcnVsZXMgKi8KICAgICBVX0RFQ0lNQUxfTlVNQkVS
X1NZTlRBWF9FUlJPUiwgICAgLyoqPCBEZWNpbWFsIG51bWJlciBzeW50YXggZXJyb3IgKi8KICAg
ICBVX0ZPUk1BVF9JTkVYQUNUX0VSUk9SLCAgICAgICAgICAgLyoqPCBDYW5ub3QgZm9ybWF0IGEg
bnVtYmVyIGV4YWN0bHkgYW5kIHJvdW5kaW5nIG1vZGUgaXMgUk9VTkRfVU5ORUNFU1NBUlkgQHN0
YWJsZSBJQ1UgNC44ICovCi0gICAgVV9GTVRfUEFSU0VfRVJST1JfTElNSVQsICAgICAgICAgIC8q
KjwgVGhlIGxpbWl0IGZvciBmb3JtYXQgbGlicmFyeSBlcnJvcnMgKi8KKyNpZm5kZWYgVV9ISURF
X0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVz
dCBub3JtYWwgZm9ybWF0dGluZyBBUEkgZXJyb3IgY29kZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJ
Q1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlj
a2V0ICMxMjQyMC4KKyAgICAgKi8KKyAgICBVX0ZNVF9QQVJTRV9FUlJPUl9MSU1JVCwKKyNlbmRp
ZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiAKICAgICAvKgotICAgICAqIHRoZSBlcnJvciBj
b2RlIHJhbmdlIDB4MTAyMDAgMHgxMDJmZiBhcmUgcmVzZXJ2ZWQgZm9yIEJyZWFrIEl0ZXJhdG9y
IHJlbGF0ZWQgZXJyb3IKKyAgICAgKiBFcnJvciBjb2RlcyBpbiB0aGUgcmFuZ2UgMHgxMDIwMCAw
eDEwMmZmIGFyZSByZXNlcnZlZCBmb3IgQnJlYWtJdGVyYXRvci4KICAgICAgKi8KICAgICBVX0JS
S19JTlRFUk5BTF9FUlJPUj0weDEwMjAwLCAgICAgICAgICAvKio8IEFuIGludGVybmFsIGVycm9y
IChidWcpIHdhcyBkZXRlY3RlZC4gICAgICAgICAgICAgKi8KICAgICBVX0JSS19FUlJPUl9TVEFS
VD0weDEwMjAwLCAgICAgICAgICAgICAvKio8IFN0YXJ0IG9mIGNvZGVzIGluZGljYXRpbmcgQnJl
YWsgSXRlcmF0b3IgZmFpbHVyZXMgKi8KQEAgLTYyMSwxMCArNTY1LDE2IEBAIHR5cGVkZWYgZW51
bSBVRXJyb3JDb2RlIHsKICAgICBVX0JSS19SVUxFX0VNUFRZX1NFVCwgICAgICAgICAgICAgICAg
ICAvKio8IFJ1bGUgY29udGFpbnMgYW4gZW1wdHkgVW5pY29kZSBTZXQuICAgICAgICAgICAgICAg
Ki8KICAgICBVX0JSS19VTlJFQ09HTklaRURfT1BUSU9OLCAgICAgICAgICAgICAvKio8ICEhb3B0
aW9uIGluIFJCQkkgcnVsZXMgbm90IHJlY29nbml6ZWQuICAgICAgICAgICAgKi8KICAgICBVX0JS
S19NQUxGT1JNRURfUlVMRV9UQUcsICAgICAgICAgICAgICAvKio8IFRoZSB7bm5ufSB0YWcgb24g
YSBydWxlIGlzIG1hbCBmb3JtZWQgICAgICAgICAgICAgKi8KLSAgICBVX0JSS19FUlJPUl9MSU1J
VCwgICAgICAgICAgICAgICAgICAgICAvKio8IFRoaXMgbXVzdCBhbHdheXMgYmUgdGhlIGxhc3Qg
dmFsdWUgdG8gaW5kaWNhdGUgdGhlIGxpbWl0IGZvciBCcmVhayBJdGVyYXRvciBmYWlsdXJlcyAq
LworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9y
ZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBCcmVha0l0ZXJhdG9yIGVycm9yIGNvZGUuCisgICAg
ICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0
aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCisgICAgVV9CUktfRVJST1JfTElN
SVQsCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogCiAgICAgLyoKLSAgICAgKiBU
aGUgZXJyb3IgY29kZXMgaW4gdGhlIHJhbmdlIDB4MTAzMDAtMHgxMDNmZiBhcmUgcmVzZXJ2ZWQg
Zm9yIHJlZ3VsYXIgZXhwcmVzc2lvbiByZWxhdGVkIGVycnJzCisgICAgICogRXJyb3IgY29kZXMg
aW4gdGhlIHJhbmdlIDB4MTAzMDAtMHgxMDNmZiBhcmUgcmVzZXJ2ZWQgZm9yIHJlZ3VsYXIgZXhw
cmVzc2lvbiByZWxhdGVkIGVycm9ycy4KICAgICAgKi8KICAgICBVX1JFR0VYX0lOVEVSTkFMX0VS
Uk9SPTB4MTAzMDAsICAgICAgIC8qKjwgQW4gaW50ZXJuYWwgZXJyb3IgKGJ1Zykgd2FzIGRldGVj
dGVkLiAgICAgICAgICAgICAgKi8KICAgICBVX1JFR0VYX0VSUk9SX1NUQVJUPTB4MTAzMDAsICAg
ICAgICAgIC8qKjwgU3RhcnQgb2YgY29kZXMgaW5kaWNhdGluZyBSZWdleHAgZmFpbHVyZXMgICAg
ICAgICAgKi8KQEAgLTY0OSwxNCArNTk5LDE4IEBAIHR5cGVkZWYgZW51bSBVRXJyb3JDb2RlIHsK
ICAgICBVX1JFR0VYX1NUQUNLX09WRVJGTE9XLCAgICAgICAgICAgICAgIC8qKjwgUmVndWxhciBl
eHByZXNzaW9uIGJhY2t0cmFjayBzdGFjayBvdmVyZmxvdy4gICAgICAgKi8KICAgICBVX1JFR0VY
X1RJTUVfT1VULCAgICAgICAgICAgICAgICAgICAgIC8qKjwgTWF4aW11bSBhbGxvd2VkIG1hdGNo
IHRpbWUgZXhjZWVkZWQgICAgICAgICAgICAgICAgKi8KICAgICBVX1JFR0VYX1NUT1BQRURfQllf
Q0FMTEVSLCAgICAgICAgICAgIC8qKjwgTWF0Y2hpbmcgb3BlcmF0aW9uIGFib3J0ZWQgYnkgdXNl
ciBjYWxsYmFjayBmbi4gICAgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQotICAgIFVfUkVH
RVhfUEFUVEVSTl9UT09fQklHLCAgICAgICAgICAgICAgLyoqPCBQYXR0ZXJuIGV4Y2VlZHMgbGlt
aXRzIG9uIHNpemUgb3IgY29tcGxleGl0eS4gQGRyYWZ0IElDVSA1NSAqLwotICAgIFVfUkVHRVhf
SU5WQUxJRF9DQVBUVVJFX0dST1VQX05BTUUsICAgLyoqPCBJbnZhbGlkIGNhcHR1cmUgZ3JvdXAg
bmFtZS4gQGRyYWZ0IElDVSA1NSAqLwotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0g
ICAgVV9SRUdFWF9FUlJPUl9MSU1JVD1VX1JFR0VYX1NUT1BQRURfQllfQ0FMTEVSKzMsIC8qKjwg
VGhpcyBtdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCB2YWx1ZSB0byBpbmRpY2F0ZSB0aGUgbGltaXQg
Zm9yIHJlZ2V4cCBlcnJvcnMgKi8KKyAgICBVX1JFR0VYX1BBVFRFUk5fVE9PX0JJRywgICAgICAg
ICAgICAgIC8qKjwgUGF0dGVybiBleGNlZWRzIGxpbWl0cyBvbiBzaXplIG9yIGNvbXBsZXhpdHku
IEBzdGFibGUgSUNVIDU1ICovCisgICAgVV9SRUdFWF9JTlZBTElEX0NBUFRVUkVfR1JPVVBfTkFN
RSwgICAvKio8IEludmFsaWQgY2FwdHVyZSBncm91cCBuYW1lLiBAc3RhYmxlIElDVSA1NSAqLwor
I2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0
aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCByZWd1bGFyIGV4cHJlc3Npb24gZXJyb3IgY29kZS4KKyAg
ICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVy
IHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KKyAgICBVX1JFR0VYX0VSUk9S
X0xJTUlUPVVfUkVHRVhfU1RPUFBFRF9CWV9DQUxMRVIrMywKKyNlbmRpZiAgLy8gVV9ISURFX0RF
UFJFQ0FURURfQVBJCiAKICAgICAvKgotICAgICAqIFRoZSBlcnJvciBjb2RlIGluIHRoZSByYW5n
ZSAweDEwNDAwLTB4MTA0ZmYgYXJlIHJlc2VydmVkIGZvciBJRE5BIHJlbGF0ZWQgZXJyb3IgY29k
ZXMKKyAgICAgKiBFcnJvciBjb2RlcyBpbiB0aGUgcmFuZ2UgMHgxMDQwMC0weDEwNGZmIGFyZSBy
ZXNlcnZlZCBmb3IgSUROQSByZWxhdGVkIGVycm9yIGNvZGVzLgogICAgICAqLwogICAgIFVfSURO
QV9QUk9ISUJJVEVEX0VSUk9SPTB4MTA0MDAsCiAgICAgVV9JRE5BX0VSUk9SX1NUQVJUPTB4MTA0
MDAsCkBAIC02NjgsNyArNjIyLDEzIEBAIHR5cGVkZWYgZW51bSBVRXJyb3JDb2RlIHsKICAgICBV
X0lETkFfTEFCRUxfVE9PX0xPTkdfRVJST1IsCiAgICAgVV9JRE5BX1pFUk9fTEVOR1RIX0xBQkVM
X0VSUk9SLAogICAgIFVfSUROQV9ET01BSU5fTkFNRV9UT09fTE9OR19FUlJPUiwKKyNpZm5kZWYg
VV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUg
aGlnaGVzdCBub3JtYWwgSUROQSBlcnJvciBjb2RlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1
OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQg
IzEyNDIwLgorICAgICAqLwogICAgIFVfSUROQV9FUlJPUl9MSU1JVCwKKyNlbmRpZiAgLy8gVV9I
SURFX0RFUFJFQ0FURURfQVBJCiAgICAgLyoKICAgICAgKiBBbGlhc2VzIGZvciBTdHJpbmdQcmVw
CiAgICAgICovCkBAIC02NzcsMTQgKzYzNywyNiBAQCB0eXBlZGVmIGVudW0gVUVycm9yQ29kZSB7
CiAgICAgVV9TVFJJTkdQUkVQX0NIRUNLX0JJRElfRVJST1IgPSBVX0lETkFfQ0hFQ0tfQklESV9F
UlJPUiwKICAgICAKICAgICAvKgotICAgICAqIFRoZSBlcnJvciBjb2RlIGluIHRoZSByYW5nZSAw
eDEwNTAwLTB4MTA1ZmYgYXJlIHJlc2VydmVkIGZvciBQbHVnaW4gcmVsYXRlZCBlcnJvciBjb2Rl
cworICAgICAqIEVycm9yIGNvZGVzIGluIHRoZSByYW5nZSAweDEwNTAwLTB4MTA1ZmYgYXJlIHJl
c2VydmVkIGZvciBQbHVnaW4gcmVsYXRlZCBlcnJvciBjb2Rlcy4KICAgICAgKi8KICAgICBVX1BM
VUdJTl9FUlJPUl9TVEFSVD0weDEwNTAwLCAgICAgICAgIC8qKjwgU3RhcnQgb2YgY29kZXMgaW5k
aWNhdGluZyBwbHVnaW4gZmFpbHVyZXMgKi8KICAgICBVX1BMVUdJTl9UT09fSElHSD0weDEwNTAw
LCAgICAgICAgICAgIC8qKjwgVGhlIHBsdWdpbidzIGxldmVsIGlzIHRvbyBoaWdoIHRvIGJlIGxv
YWRlZCByaWdodCBub3cuICovCiAgICAgVV9QTFVHSU5fRElETlRfU0VUX0xFVkVMLCAgICAgICAg
ICAgICAvKio8IFRoZSBwbHVnaW4gZGlkbid0IGNhbGwgdXBsdWdfc2V0UGx1Z0xldmVsIGluIHJl
c3BvbnNlIHRvIGEgUVVFUlkgKi8KLSAgICBVX1BMVUdJTl9FUlJPUl9MSU1JVCwgICAgICAgICAg
ICAgICAgIC8qKjwgVGhpcyBtdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCB2YWx1ZSB0byBpbmRpY2F0
ZSB0aGUgbGltaXQgZm9yIHBsdWdpbiBlcnJvcnMgKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FU
RURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwg
cGx1Zy1pbiBlcnJvciBjb2RlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJp
YyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAg
ICAqLworICAgIFVfUExVR0lOX0VSUk9SX0xJTUlULAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVD
QVRFRF9BUEkKIAotICAgIFVfRVJST1JfTElNSVQ9VV9QTFVHSU5fRVJST1JfTElNSVQgICAgICAv
Kio8IFRoaXMgbXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgdmFsdWUgdG8gaW5kaWNhdGUgdGhlIGxp
bWl0IGZvciBVRXJyb3JDb2RlIChsYXN0IGVycm9yIGNvZGUgKzEpICovCisjaWZuZGVmIFVfSElE
RV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hl
c3Qgbm9ybWFsIGVycm9yIGNvZGUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1l
cmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisg
ICAgICovCisgICAgVV9FUlJPUl9MSU1JVD1VX1BMVUdJTl9FUlJPUl9MSU1JVAorI2VuZGlmICAv
LyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVUVycm9yQ29kZTsKIAogLyogVXNlIHRoZSBmb2xs
b3dpbmcgdG8gZGV0ZXJtaW5lIGlmIGFuIFVFcnJvckNvZGUgcmVwcmVzZW50cyAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91dmVybnVtLmggYi9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3V2ZXJudW0uaAppbmRleCAzZTJlZmY2MzFjMTA1ODU5NDAwYzJkNzAyYzUzODc2ODk0
YmNiMDQ3Li5kOTA1YTBmNTBkMWQyOTJhNjBjMzNkYjBhNjI1OThhNDcyNmU1MGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V2ZXJudW0uaAorKysgYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3V2ZXJudW0uaApAQCAtMSwxMSArMSwxMyBAQAorLy8gwqkgMjAxNiBhbmQgbGF0
ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6
IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMTUsIEludGVybmF0aW9uYWwgQnVz
aW5lc3MgTWFjaGluZXMKKyogICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAxNiwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmln
aHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiAgIGZpbGUgbmFtZTog
IHV2ZXJudW0uaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRG
LTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBA
IC0zMiwxMyArMzQsMTIgQEAKICAgKiAgYnkgcnVubmluZyB0aGUgVU5JWCBtYWtlZmlsZSB0YXJn
ZXQgJ3VwZGF0ZS13aW5kb3dzLW1ha2VmaWxlcycgaW4gaWN1L3NvdXJjZS4KICAgKgogICAqCi0g
ICogc291cmNlL2NvbW1vbi9jb21tb24udmNwcm9qIC0gdXBkYXRlICdPdXRwdXQgZmlsZSBuYW1l
JyBvbiB0aGUgbGluayB0YWIgc28KKyAgKiBzb3VyY2UvY29tbW9uL2NvbW1vbi52Y3hwcm9qIC0g
dXBkYXRlICdPdXRwdXQgZmlsZSBuYW1lJyBvbiB0aGUgbGluayB0YWIgc28KICAgKiAgICAgICAg
ICAgICAgICAgICB0aGF0IGl0IGNvbnRhaW5zIHRoZSBuZXcgbWFqb3IvbWlub3IgY29tYmluYXRp
b24KLSAgKiBzb3VyY2UvaTE4bi9pMThuLnZjcHJvaiAtIHNhbWUgYXMgZm9yIHRoZSBjb21tb24u
dmNwcm9qCi0gICogc291cmNlL2xheW91dC9sYXlvdXQudmNwcm9qIC0gc2FtZSBhcyBmb3IgdGhl
IGNvbW1vbi52Y3Byb2oKKyAgKiBzb3VyY2UvaTE4bi9pMThuLnZjeHByb2ogLSBzYW1lIGFzIGZv
ciB0aGUgY29tbW9uLnZjeHByb2oKICAgKiBzb3VyY2UvbGF5b3V0ZXgvbGF5b3V0ZXgudmNwcm9q
IC0gc2FtZQotICAqIHNvdXJjZS9zdHViZGF0YS9zdHViZGF0YS52Y3Byb2ogLSBzYW1lIGFzIGZv
ciB0aGUgY29tbW9uLnZjcHJvagotICAqIHNvdXJjZS9pby9pby52Y3Byb2ogLSBzYW1lIGFzIGZv
ciB0aGUgY29tbW9uLnZjcHJvagorICAqIHNvdXJjZS9zdHViZGF0YS9zdHViZGF0YS52Y3Byb2og
LSBzYW1lIGFzIGZvciB0aGUgY29tbW9uLnZjeHByb2oKKyAgKiBzb3VyY2UvaW8vaW8udmNwcm9q
IC0gc2FtZSBhcyBmb3IgdGhlIGNvbW1vbi52Y3hwcm9qCiAgICogc291cmNlL2RhdGEvbWFrZWRh
dGEubWFrIC0gY2hhbmdlIFVfSUNVREFUQV9OQU1FIHNvIHRoYXQgaXQgY29udGFpbnMKICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IG1ham9yL21pbm9yIGNvbWJpbmF0aW9u
IGFuZCB0aGUgVW5pY29kZSB2ZXJzaW9uLgogICAqLwpAQCAtNTEsMTkgKzUyLDE5IEBACiAgKiAg
QHN0YWJsZSBJQ1UgMi40CiAgKi8KICNkZWZpbmUgVV9DT1BZUklHSFRfU1RSSU5HIFwKLSAgIiBD
b3B5cmlnaHQgKEMpIDIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9y
YXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gIgorICAiIENvcHlyaWdodCAo
QykgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4gTGljZW5zZSAmIHRl
cm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbCAiCiAKIC8q
KiBUaGUgY3VycmVudCBJQ1UgbWFqb3IgdmVyc2lvbiBhcyBhbiBpbnRlZ2VyLgogICogIFRoaXMg
dmFsdWUgd2lsbCBjaGFuZ2UgaW4gdGhlIHN1YnNlcXVlbnQgcmVsZWFzZXMgb2YgSUNVCiAgKiAg
QHN0YWJsZSBJQ1UgMi40CiAgKi8KLSNkZWZpbmUgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gNTUK
KyNkZWZpbmUgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gNjAKIAogLyoqIFRoZSBjdXJyZW50IElD
VSBtaW5vciB2ZXJzaW9uIGFzIGFuIGludGVnZXIuCiAgKiAgVGhpcyB2YWx1ZSB3aWxsIGNoYW5n
ZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKICAqICBAc3RhYmxlIElDVSAyLjYK
ICAqLwotI2RlZmluZSBVX0lDVV9WRVJTSU9OX01JTk9SX05VTSAxCisjZGVmaW5lIFVfSUNVX1ZF
UlNJT05fTUlOT1JfTlVNIDIKIAogLyoqIFRoZSBjdXJyZW50IElDVSBwYXRjaGxldmVsIHZlcnNp
b24gYXMgYW4gaW50ZWdlci4KICAqICBUaGlzIHZhbHVlIHdpbGwgY2hhbmdlIGluIHRoZSBzdWJz
ZXF1ZW50IHJlbGVhc2VzIG9mIElDVQpAQCAtODMsNyArODQsNyBAQAogICogIFRoaXMgdmFsdWUg
d2lsbCBjaGFuZ2UgaW4gdGhlIHN1YnNlcXVlbnQgcmVsZWFzZXMgb2YgSUNVCiAgKiAgQHN0YWJs
ZSBJQ1UgMi42CiAgKi8KLSNkZWZpbmUgVV9JQ1VfVkVSU0lPTl9TVUZGSVggXzU1CisjZGVmaW5l
IFVfSUNVX1ZFUlNJT05fU1VGRklYIF82MAogCiAvKioKICAqIFxkZWYgVV9ERUYyX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUKQEAgLTExOCwxOSArMTE5LDE5IEBACiAgKiAgVGhpcyB2YWx1ZSB3aWxs
IGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKICAqICBAc3RhYmxlIElD
VSAyLjQKICAqLwotI2RlZmluZSBVX0lDVV9WRVJTSU9OICI1NS4xIgorI2RlZmluZSBVX0lDVV9W
RVJTSU9OICI2MC4yIgogCiAvKiogVGhlIGN1cnJlbnQgSUNVIGxpYnJhcnkgbWFqb3IvbWlub3Ig
dmVyc2lvbiBhcyBhIHN0cmluZyB3aXRob3V0IGRvdHMsIGZvciBsaWJyYXJ5IG5hbWUgc3VmZml4
ZXMuCiAgKiAgVGhpcyB2YWx1ZSB3aWxsIGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNl
cyBvZiBJQ1UKICAqICBAc3RhYmxlIElDVSAyLjYKICAqLwotI2RlZmluZSBVX0lDVV9WRVJTSU9O
X1NIT1JUICI1NSIKKyNkZWZpbmUgVV9JQ1VfVkVSU0lPTl9TSE9SVCAiNjAiCiAKICNpZm5kZWYg
VV9ISURFX0lOVEVSTkFMX0FQSQogLyoqIERhdGEgdmVyc2lvbiBpbiBJQ1U0Qy4KICAqIEBpbnRl
cm5hbCBJQ1UgNC40IEludGVybmFsIFVzZSBPbmx5CiAgKiovCi0jZGVmaW5lIFVfSUNVX0RBVEFf
VkVSU0lPTiAiNTUuMSIKKyNkZWZpbmUgVV9JQ1VfREFUQV9WRVJTSU9OICI2MC4yIgogI2VuZGlm
ICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCiAKIC8qPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V2ZXJzaW9uLmggYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3V2ZXJzaW9uLmgKaW5kZXggNzRlMzA5MTA1NTE0YWRmMzgyMzdhM2I3YTQwOTgw
MWE4MTVhNWQ1Ni4uZTI0MDY4ZDBmOTUzYWM5NGVkNDQ4NDM5YWU3MDZhNjBlYjhhNjRjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91dmVyc2lvbi5oCisrKyBiL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdXZlcnNpb24uaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5k
IGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2Yg
dXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAwMC0yMDExLCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzCkBAIC01LDcgKzcsNyBAQAogKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgogKgogKiAgIGZpbGUgbmFtZTogIHV2ZXJzaW9uLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJ
SQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAq
ICAgaW5kZW50YXRpb246NAogKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS92
dHpvbmUuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdnR6b25lLmgKaW5kZXggOTI4MTdiYTE2
YmFlZGFkYWI4OWUxYmQ1ZDljY2ZjNzM4N2Y2Zjk1OC4uMTgyNjVkMzQxNTA1Y2IwYTYzYTI5MjIy
NDAwM2IzYWU3MDhmNDcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS92dHpv
bmUuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Z0em9uZS5oCkBAIC0xLDMgKzEsNSBA
QAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExp
Y2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0
bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAwNy0yMDEz
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340062</attachid>
            <date>2018-05-09 19:10:28 -0700</date>
            <delta_ts>2018-05-10 09:56:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185502-20180509201015.patch</filename>
            <type>text/plain</type>
            <size>903687</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA5MTE3ZTA5ZmZmMzlmOThkMjc3NThi
N2Y0OTUyODcyYzE1ZWY0YzQuLjg5MTkxNjVkM2Y2M2JjZTY4MGU2NGI0NTMwMjdlY2Y0MzJjMDRk
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIwIEBACisyMDE4LTA1LTA5ICBBbmR5IFZhbldhZ29uZXIgIDxh
bmR5QHZhbndhZ29uZXIuZmFtaWx5PgorCisgICAgICAgIFVwZGF0ZSBJQ1UgaGVhZGVycyBmb3Ig
bWFjT1MgdG8gdjYwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODU1MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGljdS9SRUFETUU6CisgICAgICAgICogaWN1L3VuaWNvZGUvYWxwaGFpbmRleC5oOgor
ICAgICAgICAqIGljdS91bmljb2RlL2FwcGVuZGFibGUuaDoKKyAgICAgICAgKiBpY3UvdW5pY29k
ZS9iYXNpY3R6Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvYnJraXRlci5oOgorICAgICAgICAq
IGljdS91bmljb2RlL2J5dGVzdHJlYW0uaDoKKyAgICAgICAgKFN0cmluZ0J5dGVTaW5rOjpTdHJp
bmdCeXRlU2luayk6CisgICAgICAgICogaWN1L3VuaWNvZGUvYnl0ZXN0cmllLmg6CisgICAgICAg
ICogaWN1L3VuaWNvZGUvYnl0ZXN0cmllYnVpbGRlci5oOgorICAgICAgICAqIGljdS91bmljb2Rl
L2NhbGVuZGFyLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvY2FuaXRlci5oOgorICAgICAgICAq
IGljdS91bmljb2RlL2NoYXJpdGVyLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvY2hvaWNmbXQu
aDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9jb2xlaXRyLmg6CisgICAgICAgICogaWN1L3VuaWNv
ZGUvY29sbC5oOgorICAgICAgICAqIGljdS91bmljb2RlL2NvbXBhY3RkZWNpbWFsZm9ybWF0Lmg6
CisgICAgICAgICogaWN1L3VuaWNvZGUvY3VycmFtdC5oOgorICAgICAgICAoQ3VycmVuY3lBbW91
bnQ6OmdldElTT0N1cnJlbmN5IGNvbnN0KToKKyAgICAgICAgKiBpY3UvdW5pY29kZS9jdXJycGlu
Zi5oOgorICAgICAgICAqIGljdS91bmljb2RlL2N1cnJ1bml0Lmg6CisgICAgICAgIChDdXJyZW5j
eVVuaXQ6OmdldElTT0N1cnJlbmN5IGNvbnN0KToKKyAgICAgICAgKiBpY3UvdW5pY29kZS9kYXRl
Zm10Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvZGJiaS5oOgorICAgICAgICAqIGljdS91bmlj
b2RlL2RjZm10c3ltLmg6CisgICAgICAgIChEZWNpbWFsRm9ybWF0U3ltYm9sczo6c2V0U3ltYm9s
KToKKyAgICAgICAgKiBpY3UvdW5pY29kZS9kZWNpbWZtdC5oOgorICAgICAgICAoRGVjaW1hbEZv
cm1hdDo6Z2V0Q29uc3RTeW1ib2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGljdS91bmlj
b2RlL2RvY21haW4uaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9kdGZtdHN5bS5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL2R0aW50cnYuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9kdGl0dmZt
dC5oOgorICAgICAgICAqIGljdS91bmljb2RlL2R0aXR2aW5mLmg6CisgICAgICAgICogaWN1L3Vu
aWNvZGUvZHRwdG5nZW4uaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9kdHJ1bGUuaDoKKyAgICAg
ICAgKiBpY3UvdW5pY29kZS9lbnVtc2V0Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvZXJyb3Jj
b2RlLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvZmllbGRwb3MuaDoKKyAgICAgICAgKiBpY3Uv
dW5pY29kZS9maWx0ZXJlZGJyay5oOgorICAgICAgICAqIGljdS91bmljb2RlL2ZtdGFibGUuaDoK
KyAgICAgICAgKiBpY3UvdW5pY29kZS9mb3JtYXQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9m
cG9zaXRlci5oOgorICAgICAgICAqIGljdS91bmljb2RlL2dlbmRlci5oOgorICAgICAgICAqIGlj
dS91bmljb2RlL2dyZWdvY2FsLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvaWN1ZGF0YXZlci5o
OgorICAgICAgICAqIGljdS91bmljb2RlL2ljdXBsdWcuaDoKKyAgICAgICAgKiBpY3UvdW5pY29k
ZS9pZG5hLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvbGlzdGZvcm1hdHRlci5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL2xvY2FscG9pbnRlci5oOgorICAgICAgICAoTG9jYWxQb2ludGVyOjpM
b2NhbFBvaW50ZXIpOgorICAgICAgICAoTG9jYWxQb2ludGVyOjphZG9wdEluc3RlYWQpOgorICAg
ICAgICAoTG9jYWxQb2ludGVyOjphZG9wdEluc3RlYWRBbmRDaGVja0Vycm9yQ29kZSk6CisgICAg
ICAgIChMb2NhbEFycmF5OjpMb2NhbEFycmF5KToKKyAgICAgICAgKExvY2FsQXJyYXk6OmFkb3B0
SW5zdGVhZEFuZENoZWNrRXJyb3JDb2RlKToKKyAgICAgICAgKiBpY3UvdW5pY29kZS9sb2Nkc3Bu
bS5oOgorICAgICAgICAqIGljdS91bmljb2RlL2xvY2lkLmg6CisgICAgICAgICogaWN1L3VuaWNv
ZGUvbWVhc2ZtdC5oOgorICAgICAgICAqIGljdS91bmljb2RlL21lYXN1bml0Lmg6CisgICAgICAg
ICogaWN1L3VuaWNvZGUvbWVhc3VyZS5oOgorICAgICAgICAqIGljdS91bmljb2RlL21lc3NhZ2Vw
YXR0ZXJuLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvbXNnZm10Lmg6CisgICAgICAgICogaWN1
L3VuaWNvZGUvbm9ybWFsaXplcjIuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9ub3JtbHpyLmg6
CisgICAgICAgIChOb3JtYWxpemVyOjpjb21wYXJlKToKKyAgICAgICAgKiBpY3UvdW5pY29kZS9u
dW1mbXQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9udW1zeXMuaDoKKyAgICAgICAgKiBpY3Uv
dW5pY29kZS9wYXJzZWVyci5oOgorICAgICAgICAqIGljdS91bmljb2RlL3BhcnNlcG9zLmg6Cisg
ICAgICAgICogaWN1L3VuaWNvZGUvcGxhdGZvcm0uaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9w
bHVyZm10Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvcGx1cnJ1bGUuaDoKKyAgICAgICAgKiBp
Y3UvdW5pY29kZS9wdHlwZXMuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9wdXRpbC5oOgorICAg
ICAgICAqIGljdS91bmljb2RlL3JiYmkuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9yYm5mLmg6
CisgICAgICAgICogaWN1L3VuaWNvZGUvcmJ0ei5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Jl
Z2V4Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvcmVnaW9uLmg6CisgICAgICAgICogaWN1L3Vu
aWNvZGUvcmVsZGF0ZWZtdC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3JlcC5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL3Jlc2J1bmQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9zY2hyaXRl
ci5oOgorICAgICAgICAqIGljdS91bmljb2RlL3NjaWVudGlmaWNudW1iZXJmb3JtYXR0ZXIuaDoK
KyAgICAgICAgKiBpY3UvdW5pY29kZS9zZWFyY2guaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9z
ZWxmbXQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9zaW1wbGV0ei5oOgorICAgICAgICAqIGlj
dS91bmljb2RlL3NtcGR0Zm10Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvc29ydGtleS5oOgor
ICAgICAgICAqIGljdS91bmljb2RlL3N0ZF9zdHJpbmcuaDoKKyAgICAgICAgKiBpY3UvdW5pY29k
ZS9zdHJlbnVtLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvc3RyaW5nb3B0aW9ucy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBpY3UvdW5pY29kZS9zdHJpbmdwaWVjZS5oOgorICAgICAgICAqIGljdS91
bmljb2RlL3N0cmluZ3RyaWVidWlsZGVyLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvc3RzZWFy
Y2guaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS9zeW10YWJsZS5oOgorICAgICAgICAqIGljdS91
bmljb2RlL3RibGNvbGwuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS90aW1lem9uZS5oOgorICAg
ICAgICAqIGljdS91bmljb2RlL3RtdW5pdC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3RtdXRh
bXQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS90bXV0Zm10Lmg6CisgICAgICAgICogaWN1L3Vu
aWNvZGUvdHJhbnNsaXQuaDoKKyAgICAgICAgKFRyYW5zbGl0ZXJhdG9yOjpzZXRJRCk6CisgICAg
ICAgICogaWN1L3VuaWNvZGUvdHpmbXQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS90em5hbWVz
Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdHpydWxlLmg6CisgICAgICAgICogaWN1L3VuaWNv
ZGUvdHp0cmFucy5oOgorICAgICAgICAqIGljdS91bmljb2RlL3ViaWRpLmg6CisgICAgICAgICog
aWN1L3VuaWNvZGUvdWJpZGl0cmFuc2Zvcm0uaDogQWRkZWQuCisgICAgICAgICogaWN1L3VuaWNv
ZGUvdWJyay5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VjYWwuaDoKKyAgICAgICAgKiBpY3Uv
dW5pY29kZS91Y2FzZW1hcC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VjYXQuaDoKKyAgICAg
ICAgKiBpY3UvdW5pY29kZS91Y2hhci5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VjaGFyc3Ry
aWUuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91Y2hhcnN0cmllYnVpbGRlci5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL3VjaHJpdGVyLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWNsZWFu
Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWNudi5oOgorICAgICAgICAqIGljdS91bmljb2Rl
L3VjbnZfY2IuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91Y252X2Vyci5oOgorICAgICAgICAq
IGljdS91bmljb2RlL3VjbnZzZWwuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91Y29sLmg6Cisg
ICAgICAgICogaWN1L3VuaWNvZGUvdWNvbGVpdHIuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91
Y29uZmlnLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWNzZGV0Lmg6CisgICAgICAgICogaWN1
L3VuaWNvZGUvdWN1cnIuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91ZGF0Lmg6CisgICAgICAg
ICogaWN1L3VuaWNvZGUvdWRhdGEuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91ZGF0ZWludGVy
dmFsZm9ybWF0Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWRhdHBnLmg6CisgICAgICAgICog
aWN1L3VuaWNvZGUvdWRpc3BsYXljb250ZXh0Lmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWVu
dW0uaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91ZmllbGRwb3NpdGVyLmg6CisgICAgICAgICog
aWN1L3VuaWNvZGUvdWZvcm1hdHRhYmxlLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWdlbmRl
ci5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VpZG5hLmg6CisgICAgICAgICogaWN1L3VuaWNv
ZGUvdWl0ZXIuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91bGRuYW1lcy5oOgorICAgICAgICAq
IGljdS91bmljb2RlL3VsaXN0Zm9ybWF0dGVyLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdWxv
Yy5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Vsb2NkYXRhLmg6CisgICAgICAgICogaWN1L3Vu
aWNvZGUvdW1hY2hpbmUuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91bWlzYy5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL3Vtc2cuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91bmlmaWx0Lmg6
CisgICAgICAgICogaWN1L3VuaWNvZGUvdW5pZnVuY3QuaDoKKyAgICAgICAgKiBpY3UvdW5pY29k
ZS91bmltYXRjaC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VuaXJlcGwuaDoKKyAgICAgICAg
KiBpY3UvdW5pY29kZS91bmlzZXQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91bmlzdHIuaDoK
KyAgICAgICAgKFVuaWNvZGVTdHJpbmc6OlVuaWNvZGVTdHJpbmcpOgorICAgICAgICAoVW5pY29k
ZVN0cmluZzo6Z2V0QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFVuaWNvZGVTdHJpbmc6OmNvbXBh
cmUgY29uc3QpOgorICAgICAgICAoVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9yZGVy
IGNvbnN0KToKKyAgICAgICAgKFVuaWNvZGVTdHJpbmc6OmNhc2VDb21wYXJlIGNvbnN0KToKKyAg
ICAgICAgKFVuaWNvZGVTdHJpbmc6OmluZGV4T2YgY29uc3QpOgorICAgICAgICAoVW5pY29kZVN0
cmluZzo6bGFzdEluZGV4T2YgY29uc3QpOgorICAgICAgICAoVW5pY29kZVN0cmluZzo6c3RhcnRz
V2l0aCBjb25zdCk6CisgICAgICAgIChVbmljb2RlU3RyaW5nOjplbmRzV2l0aCBjb25zdCk6Cisg
ICAgICAgIChVbmljb2RlU3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAgKFVuaWNvZGVTdHJpbmc6
OmV4dHJhY3QgY29uc3QpOgorICAgICAgICAoVW5pY29kZVN0cmluZzo6ZXh0cmFjdEJldHdlZW4g
Y29uc3QpOgorICAgICAgICAoVW5pY29kZVN0cmluZzo6c2V0QXJyYXkpOgorICAgICAgICAoVW5p
Y29kZVN0cmluZzo6b3BlcmF0b3I9ICk6CisgICAgICAgIChVbmljb2RlU3RyaW5nOjpzZXRUbyk6
CisgICAgICAgIChVbmljb2RlU3RyaW5nOjphcHBlbmQpOgorICAgICAgICAoVW5pY29kZVN0cmlu
Zzo6b3BlcmF0b3IrPSApOgorICAgICAgICAoVW5pY29kZVN0cmluZzo6aW5zZXJ0KToKKyAgICAg
ICAgKiBpY3UvdW5pY29kZS91bm9ybS5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Vub3JtMi5o
OgorICAgICAgICAqIGljdS91bmljb2RlL3VudW0uaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91
bnVtc3lzLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdW9iamVjdC5oOgorICAgICAgICAqIGlj
dS91bmljb2RlL3VwbHVyYWxydWxlcy5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VyZWdleC5o
OgorICAgICAgICAqIGljdS91bmljb2RlL3VyZWdpb24uaDoKKyAgICAgICAgKiBpY3UvdW5pY29k
ZS91cmVsZGF0ZWZtdC5oOiBBZGRlZC4KKyAgICAgICAgKiBpY3UvdW5pY29kZS91cmVuYW1lLmg6
CisgICAgICAgICogaWN1L3VuaWNvZGUvdXJlcC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3Vy
ZXMuaDoKKyAgICAgICAgKHVyZXNfZ2V0VW5pY29kZVN0cmluZyk6CisgICAgICAgICh1cmVzX2dl
dE5leHRVbmljb2RlU3RyaW5nKToKKyAgICAgICAgKHVyZXNfZ2V0VW5pY29kZVN0cmluZ0J5SW5k
ZXgpOgorICAgICAgICAodXJlc19nZXRVbmljb2RlU3RyaW5nQnlLZXkpOgorICAgICAgICAqIGlj
dS91bmljb2RlL3VzY3JpcHQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91c2VhcmNoLmg6Cisg
ICAgICAgICogaWN1L3VuaWNvZGUvdXNldC5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VzZXRp
dGVyLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdXNoYXBlLmg6CisgICAgICAgICogaWN1L3Vu
aWNvZGUvdXNwb29mLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdXNwcmVwLmg6CisgICAgICAg
ICogaWN1L3VuaWNvZGUvdXN0cmluZy5oOgorICAgICAgICAqIGljdS91bmljb2RlL3VzdHJpbmd0
cmllLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdXRleHQuaDoKKyAgICAgICAgKiBpY3UvdW5p
Y29kZS91dGYuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91dGYxNi5oOgorICAgICAgICAqIGlj
dS91bmljb2RlL3V0ZjMyLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUvdXRmOC5oOgorICAgICAg
ICAqIGljdS91bmljb2RlL3V0Zl9vbGQuaDoKKyAgICAgICAgKiBpY3UvdW5pY29kZS91dG1zY2Fs
ZS5oOgorICAgICAgICAqIGljdS91bmljb2RlL3V0cmFjZS5oOgorICAgICAgICAqIGljdS91bmlj
b2RlL3V0cmFucy5oOgorICAgICAgICAqIGljdS91bmljb2RlL3V0eXBlcy5oOgorICAgICAgICAo
b3BlcmF0b3IgbmV3KTogRGVsZXRlZC4KKyAgICAgICAgKG9wZXJhdG9yIG5ld1tdKTogRGVsZXRl
ZC4KKyAgICAgICAgKG9wZXJhdG9yIGRlbGV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChvcGVyYXRv
ciBkZWxldGVbXSk6IERlbGV0ZWQuCisgICAgICAgICogaWN1L3VuaWNvZGUvdXZlcm51bS5oOgor
ICAgICAgICAqIGljdS91bmljb2RlL3V2ZXJzaW9uLmg6CisgICAgICAgICogaWN1L3VuaWNvZGUv
dnR6b25lLmg6CisKIDIwMTgtMDUtMDkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEJ1aWxkIGNsZWFubHkgd2l0aCBHQ0MgOCBhbmQg
SUNVIDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS9SRUFETUUgYi9Tb3VyY2UvV1RGL2lj
dS9SRUFETUUKaW5kZXggMzI2ZWZlMTc5ODY0NTA5NWU5YTZjNGVjM2EyOWNkMmQ0OTE0YjEyZi4u
ZjlhYjUwMTIzOThjZTVhYmE4YjRmNGQ4ZGU5MGQxMTU5MTEzYzNiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9pY3UvUkVBRE1FCisrKyBiL1NvdXJjZS9XVEYvaWN1L1JFQURNRQpAQCAtNCw5ICs0
LDI2IEBAIFRoZSBNYWMgT1MgWCAxMC40IGFuZCBzdWJzZXF1ZW50IHJlbGVhc2VzIGluY2x1ZGUg
dGhlIElDVSBiaW5hcnksIGJ1dCBub3QgSUNVIGhlCiBGb3Igb3RoZXIgcGxhdGZvcm1zLCBpbnN0
YWxsZWQgSUNVIGhlYWRlcnMgc2hvdWxkIGJlIHVzZWQgcmF0aGVyIHRoYW4gdGhlc2UuCiBUaGV5
IGFyZSBzcGVjaWZpYyB0byB0aGUgTWFjIE9TIFggcGxhdGZvcm0uCiAKLVRoZSBoZWFkZXJzIGhl
cmUgYXJlIGZyb20gSUNVIHZlcnNpb24gNTUuMSBkb3dubG9hZGVkIGZyb20gdGhlIElDVSBwcm9q
ZWN0LgotaHR0cDovL3NpdGUuaWN1LXByb2plY3Qub3JnL2Rvd25sb2FkLzU1I1RPQy1JQ1U0Qy1E
b3dubG9hZAorVGhlIGhlYWRlcnMgaGVyZSBhcmUgZnJvbSBJQ1UgdmVyc2lvbiA2MC4yIGRvd25s
b2FkZWQgZnJvbSB0aGUgSUNVIHByb2plY3QuCitodHRwOi8vc2l0ZS5pY3UtcHJvamVjdC5vcmcv
ZG93bmxvYWQvNjAjVE9DLUlDVTRDLURvd25sb2FkCiAKIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBh
cmUgbmVlZGVkIGFnYWluIGlmIHlvdSB1cGRhdGUgdGhlIGZpbGVzOgotdXR5cGVzLmg6NjIgVV9T
SE9XX0NQTFVTUExVU19BUEkgMAotdWNvbmZpZy5oOjkwIFVfRElTQUJMRV9SRU5BTUlORyAxCisK
K0ZvciBiaW5hcnkgY29tcGF0aWJpbGl0eSB3aXRoIHN5c3RlbSBsaWJyYXJ5LCBkaXNhYmxlIHJl
bmFtaW5nICYgQysrIGFwaXMuCitodHRwOi8vdXNlcmd1aWRlLmljdS1wcm9qZWN0Lm9yZy9kZXNp
Z24jVE9DLUlDVS1CaW5hcnktQ29tcGF0aWJpbGl0eTotVXNpbmctSUNVLWFzLWFuLU9wZXJhdGlu
Zy1TeXN0ZW0tTGV2ZWwtTGlicmFyeQorCit1Y29uZmlnLmg6OTIgVV9ESVNBQkxFX1JFTkFNSU5H
IDEKK3V0eXBlcy5oOjY0IFVfU0hPV19DUExVU1BMVVNfQVBJIDAKKworU2ltaWxhciB0byBkaXNh
YmxpbmcgQysrIGFwaXMsIHdlIHdhbnQgVUNoYXIgdG8gYmUgZGVmaW5lZCBhcyBpZiBjb21waWxp
bmcgZm9yIEMuCisKK3VtYWNoaW5lOjM0NiAjZWxpZiAwCisKK0Rvbid0IGluY2x1ZGUgdGhlc2Ug
QysrIG9ubHkgZmlsZXM6CisKK2Nhc2VtYXAuaAorY2hhcjE2cHRyLmgKK2VkaXRzLmgKK25vdW5p
dC5oCitudW1iZXJmb3JtYXR0ZXIuaAorc2ltcGxlZm9ybWF0dGVyLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvYWxwaGFpbmRleC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29k
ZS9hbHBoYWluZGV4LmgKaW5kZXggNzk2OTk2MmU1NWRlMTFhNzk4MDZmMWMwYTMwNzI2M2I1OTU4
ZmNjZC4uMTQ0MmY3NTRlNDZkNzU5ZjFmMTA4NTZmM2I5ZTk1ZDNkOWQxY2FiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9hbHBoYWluZGV4LmgKKysrIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9hbHBoYWluZGV4LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBs
YXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVz
ZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKICoKQEAgLTEzLDYgKzE1LDcgQEAKICNpbmNsdWRlICJ1bmljb2RlL3V0eXBl
cy5oIgogI2luY2x1ZGUgInVuaWNvZGUvdW9iamVjdC5oIgogI2luY2x1ZGUgInVuaWNvZGUvbG9j
aWQuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgogCiAjaWYgIVVDT05GSUdfTk9fQ09M
TEFUSU9OCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYXBwZW5kYWJsZS5o
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9hcHBlbmRhYmxlLmgKaW5kZXggYTZhODNiMTVjZjk3
MTkzYjJkYzY5MWY5MGNiY2FhOTE5MjhkZGI3Zi4uODUxMmMyZjMwMzExYjhkMWJjMWI4YThlNDY3
ZGRhZGMzODI4ZDQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9hcHBlbmRh
YmxlLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9hcHBlbmRhYmxlLmgKQEAgLTEsMTAg
KzEsMTIgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMu
CisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHly
aWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykg
MjAxMS0yMDEyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRp
b24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCiAqICAgZmlsZSBuYW1lOiAgYXBwZW5kYWJsZS5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVND
SUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQog
KiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTE3LDcgKzE5LDcgQEAKIAogLyoqCiAgKiBcZmlsZQot
ICogXGJyaWVmIEMrKyBBUEk6IEFwcGVuZGFibGUgY2xhc3M6IFNpbmsgZm9yIFVuaWNvZGUgY29k
ZSBwb2ludHMgYW5kIDE2LWJpdCBjb2RlIHVuaXRzIChVQ2hhcnMpLgorICogXGJyaWVmIEMrKyBB
UEk6IEFwcGVuZGFibGUgY2xhc3M6IFNpbmsgZm9yIFVuaWNvZGUgY29kZSBwb2ludHMgYW5kIDE2
LWJpdCBjb2RlIHVuaXRzIChjaGFyMTZfdHMpLgogICovCiAKICNpbmNsdWRlICJ1bmljb2RlL3V0
eXBlcy5oIgpAQCAtMzIsMTAgKzM0LDEwIEBAIGNsYXNzIFVuaWNvZGVTdHJpbmc7CiAgKiBDb21i
aW5lcyBlbGVtZW50cyBvZiBKYXZhIEFwcGVuZGFibGUgYW5kIElDVTRDIEJ5dGVTaW5rLgogICoK
ICAqIFRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgaW4gQVBJcyB3aGVyZSBpdCBkb2VzIG5vdCBtYXR0
ZXIgd2hldGhlciB0aGUgYWN0dWFsIGRlc3RpbmF0aW9uIGlzCi0gKiBhIFVuaWNvZGVTdHJpbmcs
IGEgVUNoYXJbXSBhcnJheSwgYSBVbmljb2RlU2V0LCBvciBhbnkgb3RoZXIgb2JqZWN0CisgKiBh
IFVuaWNvZGVTdHJpbmcsIGEgY2hhcjE2X3RbXSBhcnJheSwgYSBVbmljb2RlU2V0LCBvciBhbnkg
b3RoZXIgb2JqZWN0CiAgKiB0aGF0IHJlY2VpdmVzIGFuZCBwcm9jZXNzZXMgY2hhcmFjdGVycyBh
bmQvb3Igc3RyaW5ncy4KICAqCi0gKiBJbXBsZW1lbnRhdGlvbiBjbGFzc2VzIG11c3QgaW1wbGVt
ZW50IGF0IGxlYXN0IGFwcGVuZENvZGVVbml0KFVDaGFyKS4KKyAqIEltcGxlbWVudGF0aW9uIGNs
YXNzZXMgbXVzdCBpbXBsZW1lbnQgYXQgbGVhc3QgYXBwZW5kQ29kZVVuaXQoY2hhcjE2X3QpLgog
ICogVGhlIGJhc2UgY2xhc3MgcHJvdmlkZXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgZm9yIHRo
ZSBvdGhlciBtZXRob2RzLgogICoKICAqIFRoZSBtZXRob2RzIGRvIG5vdCB0YWtlIFVFcnJvckNv
ZGUgcGFyYW1ldGVycy4KQEAgLTYwLDExICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgICogQHJldHVy
biBUUlVFIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZGVkCiAgICAgICogQHN0YWJsZSBJQ1UgNC44
CiAgICAgICovCi0gICAgdmlydHVhbCBVQm9vbCBhcHBlbmRDb2RlVW5pdChVQ2hhciBjKSA9IDA7
CisgICAgdmlydHVhbCBVQm9vbCBhcHBlbmRDb2RlVW5pdChjaGFyMTZfdCBjKSA9IDA7CiAKICAg
ICAvKioKICAgICAgKiBBcHBlbmRzIGEgY29kZSBwb2ludC4KLSAgICAgKiBUaGUgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbiBjYWxscyBhcHBlbmRDb2RlVW5pdChVQ2hhcikgb25jZSBvciB0d2ljZS4K
KyAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyBhcHBlbmRDb2RlVW5pdChj
aGFyMTZfdCkgb25jZSBvciB0d2ljZS4KICAgICAgKiBAcGFyYW0gYyBjb2RlIHBvaW50IDAuLjB4
MTBmZmZmCiAgICAgICogQHJldHVybiBUUlVFIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZGVkCiAg
ICAgICogQHN0YWJsZSBJQ1UgNC44CkBAIC03MywyMCArNzUsMjAgQEAgcHVibGljOgogCiAgICAg
LyoqCiAgICAgICogQXBwZW5kcyBhIHN0cmluZy4KLSAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbiBjYWxscyBhcHBlbmRDb2RlVW5pdChVQ2hhcikgZm9yIGVhY2ggY29kZSB1bml0Lgor
ICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIGFwcGVuZENvZGVVbml0KGNo
YXIxNl90KSBmb3IgZWFjaCBjb2RlIHVuaXQuCiAgICAgICogQHBhcmFtIHMgc3RyaW5nLCBtdXN0
IG5vdCBiZSBOVUxMIGlmIGxlbmd0aCE9MAogICAgICAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxl
bmd0aCwgb3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQKICAgICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhl
IG9wZXJhdGlvbiBzdWNjZWVkZWQKICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KLSAg
ICB2aXJ0dWFsIFVCb29sIGFwcGVuZFN0cmluZyhjb25zdCBVQ2hhciAqcywgaW50MzJfdCBsZW5n
dGgpOworICAgIHZpcnR1YWwgVUJvb2wgYXBwZW5kU3RyaW5nKGNvbnN0IGNoYXIxNl90ICpzLCBp
bnQzMl90IGxlbmd0aCk7CiAKICAgICAvKioKICAgICAgKiBUZWxscyB0aGUgb2JqZWN0IHRoYXQg
dGhlIGNhbGxlciBpcyBnb2luZyB0byBhcHBlbmQgcm91Z2hseQotICAgICAqIGFwcGVuZENhcGFj
aXR5IFVDaGFycy4gQSBzdWJjbGFzcyBtaWdodCB1c2UgdGhpcyB0byBwcmUtYWxsb2NhdGUKKyAg
ICAgKiBhcHBlbmRDYXBhY2l0eSBjaGFyMTZfdHMuIEEgc3ViY2xhc3MgbWlnaHQgdXNlIHRoaXMg
dG8gcHJlLWFsbG9jYXRlCiAgICAgICogYSBsYXJnZXIgYnVmZmVyIGlmIG5lY2Vzc2FyeS4KICAg
ICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdGhpbmcuIChJdCBhbHdheXMg
cmV0dXJucyBUUlVFLikKLSAgICAgKiBAcGFyYW0gYXBwZW5kQ2FwYWNpdHkgZXN0aW1hdGVkIG51
bWJlciBvZiBVQ2hhcnMgdGhhdCB3aWxsIGJlIGFwcGVuZGVkCisgICAgICogQHBhcmFtIGFwcGVu
ZENhcGFjaXR5IGVzdGltYXRlZCBudW1iZXIgb2YgY2hhcjE2X3RzIHRoYXQgd2lsbCBiZSBhcHBl
bmRlZAogICAgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZAogICAg
ICAqIEBzdGFibGUgSUNVIDQuOAogICAgICAqLwpAQCAtMTAwLDE5ICsxMDIsMTkgQEAgcHVibGlj
OgogICAgICAqIFRoZSByZXR1cm5lZCBidWZmZXIgaXMgb25seSB2YWxpZCB1bnRpbCB0aGUgbmV4
dCBvcGVyYXRpb24KICAgICAgKiBvbiB0aGlzIEFwcGVuZGFibGUuCiAgICAgICoKLSAgICAgKiBB
ZnRlciB3cml0aW5nIGF0IG1vc3QgKnJlc3VsdENhcGFjaXR5IFVDaGFycywgY2FsbCBhcHBlbmRT
dHJpbmcoKSB3aXRoIHRoZQotICAgICAqIHBvaW50ZXIgcmV0dXJuZWQgZnJvbSB0aGlzIGZ1bmN0
aW9uIGFuZCB0aGUgbnVtYmVyIG9mIFVDaGFycyB3cml0dGVuLgotICAgICAqIE1hbnkgYXBwZW5k
U3RyaW5nKCkgaW1wbGVtZW50YXRpb25zIHdpbGwgYXZvaWQgY29weWluZyBVQ2hhcnMgaWYgdGhp
cyBmdW5jdGlvbgorICAgICAqIEFmdGVyIHdyaXRpbmcgYXQgbW9zdCAqcmVzdWx0Q2FwYWNpdHkg
Y2hhcjE2X3RzLCBjYWxsIGFwcGVuZFN0cmluZygpIHdpdGggdGhlCisgICAgICogcG9pbnRlciBy
ZXR1cm5lZCBmcm9tIHRoaXMgZnVuY3Rpb24gYW5kIHRoZSBudW1iZXIgb2YgY2hhcjE2X3RzIHdy
aXR0ZW4uCisgICAgICogTWFueSBhcHBlbmRTdHJpbmcoKSBpbXBsZW1lbnRhdGlvbnMgd2lsbCBh
dm9pZCBjb3B5aW5nIGNoYXIxNl90cyBpZiB0aGlzIGZ1bmN0aW9uCiAgICAgICogcmV0dXJuZWQg
YW4gaW50ZXJuYWwgYnVmZmVyLgogICAgICAqCiAgICAgICogUGFydGlhbCB1c2FnZSBleGFtcGxl
OgogICAgICAqIFxjb2RlCiAgICAgICogIGludDMyX3QgY2FwYWNpdHk7Ci0gICAgICogIFVDaGFy
KiBidWZmZXIgPSBhcHAuZ2V0QXBwZW5kQnVmZmVyKC4uLiwgJmNhcGFjaXR5KTsKLSAgICAgKiAg
Li4uIFdyaXRlIG4gVUNoYXJzIGludG8gYnVmZmVyLCB3aXRoIG4gPD0gY2FwYWNpdHkuCisgICAg
ICogIGNoYXIxNl90KiBidWZmZXIgPSBhcHAuZ2V0QXBwZW5kQnVmZmVyKC4uLiwgJmNhcGFjaXR5
KTsKKyAgICAgKiAgLi4uIFdyaXRlIG4gY2hhcjE2X3RzIGludG8gYnVmZmVyLCB3aXRoIG4gPD0g
Y2FwYWNpdHkuCiAgICAgICogIGFwcC5hcHBlbmRTdHJpbmcoYnVmZmVyLCBuKTsKICAgICAgKiBc
ZW5kY29kZQotICAgICAqIEluIG1hbnkgaW1wbGVtZW50YXRpb25zLCB0aGF0IGNhbGwgdG8gYXBw
ZW5kIHdpbGwgYXZvaWQgY29weWluZyBVQ2hhcnMuCisgICAgICogSW4gbWFueSBpbXBsZW1lbnRh
dGlvbnMsIHRoYXQgY2FsbCB0byBhcHBlbmQgd2lsbCBhdm9pZCBjb3B5aW5nIGNoYXIxNl90cy4K
ICAgICAgKgogICAgICAqIElmIHRoZSBBcHBlbmRhYmxlIGFsbG9jYXRlcyBvciByZWFsbG9jYXRl
cyBhbiBpbnRlcm5hbCBidWZmZXIsIGl0IHNob3VsZCB1c2UKICAgICAgKiB0aGUgZGVzaXJlZENh
cGFjaXR5SGludCBpZiBhcHByb3ByaWF0ZS4KQEAgLTEzNiw5ICsxMzgsOSBAQCBwdWJsaWM6CiAg
ICAgICogQHJldHVybiBhIGJ1ZmZlciB3aXRoICpyZXN1bHRDYXBhY2l0eT49bWluQ2FwYWNpdHkK
ICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVDaGFyICpnZXRB
cHBlbmRCdWZmZXIoaW50MzJfdCBtaW5DYXBhY2l0eSwKKyAgICB2aXJ0dWFsIGNoYXIxNl90ICpn
ZXRBcHBlbmRCdWZmZXIoaW50MzJfdCBtaW5DYXBhY2l0eSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCBkZXNpcmVkQ2FwYWNpdHlIaW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVQ2hhciAqc2NyYXRjaCwgaW50MzJfdCBzY3JhdGNoQ2Fw
YWNpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIxNl90ICpzY3Jh
dGNoLCBpbnQzMl90IHNjcmF0Y2hDYXBhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCAqcmVzdWx0Q2FwYWNpdHkpOwogfTsKIApAQCAtMTY5LDcgKzE3MSw3
IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVk
ZWQKICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVCb29sIGFw
cGVuZENvZGVVbml0KFVDaGFyIGMpOworICAgIHZpcnR1YWwgVUJvb2wgYXBwZW5kQ29kZVVuaXQo
Y2hhcjE2X3QgYyk7CiAKICAgICAvKioKICAgICAgKiBBcHBlbmRzIGEgY29kZSBwb2ludCB0byB0
aGUgc3RyaW5nLgpAQCAtMTg2LDEyICsxODgsMTIgQEAgcHVibGljOgogICAgICAqIEByZXR1cm4g
VFJVRSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZAogICAgICAqIEBzdGFibGUgSUNVIDQuOAog
ICAgICAqLwotICAgIHZpcnR1YWwgVUJvb2wgYXBwZW5kU3RyaW5nKGNvbnN0IFVDaGFyICpzLCBp
bnQzMl90IGxlbmd0aCk7CisgICAgdmlydHVhbCBVQm9vbCBhcHBlbmRTdHJpbmcoY29uc3QgY2hh
cjE2X3QgKnMsIGludDMyX3QgbGVuZ3RoKTsKIAogICAgIC8qKgogICAgICAqIFRlbGxzIHRoZSBV
bmljb2RlU3RyaW5nIHRoYXQgdGhlIGNhbGxlciBpcyBnb2luZyB0byBhcHBlbmQgcm91Z2hseQot
ICAgICAqIGFwcGVuZENhcGFjaXR5IFVDaGFycy4KLSAgICAgKiBAcGFyYW0gYXBwZW5kQ2FwYWNp
dHkgZXN0aW1hdGVkIG51bWJlciBvZiBVQ2hhcnMgdGhhdCB3aWxsIGJlIGFwcGVuZGVkCisgICAg
ICogYXBwZW5kQ2FwYWNpdHkgY2hhcjE2X3RzLgorICAgICAqIEBwYXJhbSBhcHBlbmRDYXBhY2l0
eSBlc3RpbWF0ZWQgbnVtYmVyIG9mIGNoYXIxNl90cyB0aGF0IHdpbGwgYmUgYXBwZW5kZWQKICAg
ICAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkZWQKICAgICAgKiBAc3Rh
YmxlIElDVSA0LjgKICAgICAgKi8KQEAgLTIxOCw5ICsyMjAsOSBAQCBwdWJsaWM6CiAgICAgICog
QHJldHVybiBhIGJ1ZmZlciB3aXRoICpyZXN1bHRDYXBhY2l0eT49bWluQ2FwYWNpdHkKICAgICAg
KiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVDaGFyICpnZXRBcHBlbmRC
dWZmZXIoaW50MzJfdCBtaW5DYXBhY2l0eSwKKyAgICB2aXJ0dWFsIGNoYXIxNl90ICpnZXRBcHBl
bmRCdWZmZXIoaW50MzJfdCBtaW5DYXBhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCBkZXNpcmVkQ2FwYWNpdHlIaW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVQ2hhciAqc2NyYXRjaCwgaW50MzJfdCBzY3JhdGNoQ2FwYWNpdHks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIxNl90ICpzY3JhdGNoLCBp
bnQzMl90IHNjcmF0Y2hDYXBhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCAqcmVzdWx0Q2FwYWNpdHkpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9pY3UvdW5pY29kZS9iYXNpY3R6LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2Jh
c2ljdHouaAppbmRleCBmMWU0NzdmNDc0Mzg5NDM4NmY0ZGJiODU1MjViNzM4MjhmYjAyMmZmLi4z
NTQxMjA3MjY4ZGRmYjBkOGE2YWFkYmI0YjZjNTUwZjA4N2VmMGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL2Jhc2ljdHouaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L2Jhc2ljdHouaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2Rl
LCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3
LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMywgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5l
cyBDb3Jwb3JhdGlvbiBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYnJr
aXRlci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9icmtpdGVyLmgKaW5kZXggNGFhNWU1NTI3
OTYwOTBlYWViY2Q3Y2U3YjdkMjc1YWE4YjM3NzViNC4uYzY0YmI3MTIyMjJjNjM0NmU4ZGEzMmYx
NDRjNDQxOTE5MWYyZTExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9icmtp
dGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9icmtpdGVyLmgKQEAgLTEsNiArMSw4
IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8g
TGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQu
aHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAxOTk3
LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3B5cmlnaHQgKEMp
IDE5OTctMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0
aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKICoKQEAgLTE2OCw2ICsxNzAsMTEgQEAgcHVibGljOgogICAgIC8qKgogICAgICAqIENo
YW5nZSB0aGUgdGV4dCBvdmVyIHdoaWNoIHRoaXMgb3BlcmF0ZXMuIFRoZSB0ZXh0IGJvdW5kYXJ5
IGlzCiAgICAgICogcmVzZXQgdG8gdGhlIHN0YXJ0LgorICAgICAqCisgICAgICogVGhlIEJyZWFr
SXRlcmF0b3Igd2lsbCByZXRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIHN1cHBsaWVkIHN0cmluZy4K
KyAgICAgKiBUaGUgY2FsbGVyIG11c3Qgbm90IG1vZGlmeSBvciBkZWxldGUgdGhlIHRleHQgd2hp
bGUgdGhlIEJyZWFrSXRlcmF0b3IKKyAgICAgKiByZXRhaW5zIHRoZSByZWZlcmVuY2UuCisgICAg
ICoKICAgICAgKiBAcGFyYW0gdGV4dCBUaGUgVW5pY29kZVN0cmluZyB1c2VkIHRvIGNoYW5nZSB0
aGUgdGV4dC4KICAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAgKi8KQEAgLTI0Myw3ICsyNTAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQzMl90IG5leHQodm9pZCkgPSAwOwogCiAgICAg
LyoqCi0gICAgICogUmV0dXJuIGNoYXJhY3RlciBpbmRleCBvZiB0aGUgY3VycmVudCBpbnRlcmF0
b3IgcG9zaXRpb24gd2l0aGluIHRoZSB0ZXh0LgorICAgICAqIFJldHVybiBjaGFyYWN0ZXIgaW5k
ZXggb2YgdGhlIGN1cnJlbnQgaXRlcmF0b3IgcG9zaXRpb24gd2l0aGluIHRoZSB0ZXh0LgogICAg
ICAqIEByZXR1cm4gVGhlIGJvdW5kYXJ5IG1vc3QgcmVjZW50bHkgcmV0dXJuZWQuCiAgICAgICog
QHN0YWJsZSBJQ1UgMi4wCiAgICAgICovCkBAIC0yNzAsNyArMjc3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgaW50MzJfdCBwcmVjZWRpbmcoaW50MzJfdCBvZmZzZXQpID0gMDsKIAogICAgIC8q
KgotICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBzcGVjZmllZCBwb3NpdGlvbiBpcyBhIGJvdW5k
YXJ5IHBvc2l0aW9uLgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgcG9zaXRp
b24gaXMgYSBib3VuZGFyeSBwb3NpdGlvbi4KICAgICAgKiBBcyBhIHNpZGUgZWZmZWN0LCB0aGUg
Y3VycmVudCBwb3NpdGlvbiBvZiB0aGUgaXRlcmF0b3IgaXMgc2V0CiAgICAgICogdG8gdGhlIGZp
cnN0IGJvdW5kYXJ5IHBvc2l0aW9uIGF0IG9yIGZvbGxvd2luZyB0aGUgc3BlY2lmaWVkIG9mZnNl
dC4KICAgICAgKiBAcGFyYW0gb2Zmc2V0IHRoZSBvZmZzZXQgdG8gY2hlY2suCkBAIC0yODUsMTMg
KzI5MiwxMyBAQCBwdWJsaWM6CiAgICAgICogZG9lcyBub3RoaW5nLiAgTmVnYXRpdmUgdmFsdWVz
IG1vdmUgdG8gcHJldmlvdXMgYm91bmRhcmllcwogICAgICAqIGFuZCBwb3NpdGl2ZSB2YWx1ZXMg
bW92ZSB0byBsYXRlciBib3VuZGFyaWVzLgogICAgICAqIEByZXR1cm4gVGhlIG5ldyBpdGVyYXRv
ciBwb3NpdGlvbiwgb3IKLSAgICAgKiBET05FIGlmIHRoZXJlIGFyZSBmZXdlciB0aGFuIHxufCBi
b3VuZGFyaWVzIGluIHRoZSBzcGVjZmllZCBkaXJlY3Rpb24uCisgICAgICogRE9ORSBpZiB0aGVy
ZSBhcmUgZmV3ZXIgdGhhbiB8bnwgYm91bmRhcmllcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdGlv
bi4KICAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAgKi8KICAgICB2aXJ0dWFsIGludDMyX3Qg
bmV4dChpbnQzMl90IG4pID0gMDsKIAogICAgLyoqCi0gICAgICogRm9yIFJ1bGVCYXNlZEJyZWFr
SXRlcmF0b3JzLCByZXR1cm4gdGhlIHN0YXR1cyB0YWcgZnJvbSB0aGUgCisgICAgICogRm9yIFJ1
bGVCYXNlZEJyZWFrSXRlcmF0b3JzLCByZXR1cm4gdGhlIHN0YXR1cyB0YWcgZnJvbSB0aGUKICAg
ICAgKiBicmVhayBydWxlIHRoYXQgZGV0ZXJtaW5lZCB0aGUgbW9zdCByZWNlbnRseQogICAgICAq
IHJldHVybmVkIGJyZWFrIHBvc2l0aW9uLgogICAgICAqIDxwPgpAQCAtMzA3LDcgKzMxNCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGludDMyX3QgZ2V0UnVsZVN0YXR1cygpIGNvbnN0OwogCiAg
ICAvKioKLSAgICAqIEZvciBSdWxlQmFzZWRCcmVha0l0ZXJhdG9ycywgZ2V0IHRoZSBzdGF0dXMg
KHRhZykgdmFsdWVzIGZyb20gdGhlIGJyZWFrIHJ1bGUocykgCisgICAgKiBGb3IgUnVsZUJhc2Vk
QnJlYWtJdGVyYXRvcnMsIGdldCB0aGUgc3RhdHVzICh0YWcpIHZhbHVlcyBmcm9tIHRoZSBicmVh
ayBydWxlKHMpCiAgICAgKiB0aGF0IGRldGVybWluZWQgdGhlIG1vc3QgcmVjZW50bHkgcmV0dXJu
ZWQgYnJlYWsgcG9zaXRpb24uCiAgICAgKiA8cD4KICAgICAqIEZvciBicmVhayBpdGVyYXRvciB0
eXBlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHJ1bGUgc3RhdHVzLApAQCAtMzI0LDcgKzMzMSw3IEBA
IHB1YmxpYzoKICAgICAqIEBwYXJhbSBmaWxsSW5WZWMgYW4gYXJyYXkgdG8gYmUgZmlsbGVkIGlu
IHdpdGggdGhlIHN0YXR1cyB2YWx1ZXMuCiAgICAgKiBAcGFyYW0gY2FwYWNpdHkgIHRoZSBsZW5n
dGggb2YgdGhlIHN1cHBsaWVkIHZlY3Rvci4gIEEgbGVuZ3RoIG9mIHplcm8gY2F1c2VzCiAgICAg
KiAgICAgICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIG51bWJlciBvZiBz
dGF0dXMgdmFsdWVzLCBpbiB0aGUKLSAgICAqICAgICAgICAgICAgICAgICAgbm9ybWFsIHdheSwg
d2l0aG91dCBhdHRlbXRwaW5nIHRvIHN0b3JlIGFueSB2YWx1ZXMuCisgICAgKiAgICAgICAgICAg
ICAgICAgIG5vcm1hbCB3YXksIHdpdGhvdXQgYXR0ZW1wdGluZyB0byBzdG9yZSBhbnkgdmFsdWVz
LgogICAgICogQHBhcmFtIHN0YXR1cyAgICByZWNlaXZlcyBlcnJvciBjb2Rlcy4KICAgICAqIEBy
ZXR1cm4gICAgICAgICAgVGhlIG51bWJlciBvZiBydWxlIHN0YXR1cyB2YWx1ZXMgZnJvbSBydWxl
cyB0aGF0IGRldGVybWluZWQKICAgICAqICAgICAgICAgICAgICAgICAgdGhlIG1vc3QgcmVjZW50
IGJvdW5kYXJ5IHJldHVybmVkIGJ5IHRoZSBicmVhayBpdGVyYXRvci4KQEAgLTQ2Miw3ICs0Njks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IExvY2FsZSogVV9FWFBPUlQyIGdldEF2YWls
YWJsZUxvY2FsZXMoaW50MzJfdCYgY291bnQpOwogCiAgICAgLyoqCi0gICAgICogR2V0IG5hbWUg
b2YgdGhlIG9iamVjdCBmb3IgdGhlIGRlc2lyZWQgTG9jYWxlLCBpbiB0aGUgZGVzaXJlZCBsYW5n
YXVnZS4KKyAgICAgKiBHZXQgbmFtZSBvZiB0aGUgb2JqZWN0IGZvciB0aGUgZGVzaXJlZCBMb2Nh
bGUsIGluIHRoZSBkZXNpcmVkIGxhbmd1YWdlLgogICAgICAqIEBwYXJhbSBvYmplY3RMb2NhbGUg
bXVzdCBiZSBmcm9tIGdldEF2YWlsYWJsZUxvY2FsZXMuCiAgICAgICogQHBhcmFtIGRpc3BsYXlM
b2NhbGUgc3BlY2lmaWVzIHRoZSBkZXNpcmVkIGxvY2FsZSBmb3Igb3V0cHV0LgogICAgICAqIEBw
YXJhbSBuYW1lIHRoZSBmaWxsLWluIHBhcmFtZXRlciBvZiB0aGUgcmV0dXJuIHZhbHVlCkBAIC00
NzUsNyArNDgyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmljb2RlU3RyaW5nJiBuYW1lKTsKIAogICAgIC8qKgotICAgICAqIEdldCBuYW1l
IG9mIHRoZSBvYmplY3QgZm9yIHRoZSBkZXNpcmVkIExvY2FsZSwgaW4gdGhlIGxhbmdhdWdlIG9m
IHRoZQorICAgICAqIEdldCBuYW1lIG9mIHRoZSBvYmplY3QgZm9yIHRoZSBkZXNpcmVkIExvY2Fs
ZSwgaW4gdGhlIGxhbmd1YWdlIG9mIHRoZQogICAgICAqIGRlZmF1bHQgbG9jYWxlLgogICAgICAq
IEBwYXJhbSBvYmplY3RMb2NhbGUgbXVzdCBiZSBmcm9tIGdldE1hdGNoaW5nTG9jYWxlcwogICAg
ICAqIEBwYXJhbSBuYW1lIHRoZSBmaWxsLWluIHBhcmFtZXRlciBvZiB0aGUgcmV0dXJuIHZhbHVl
CkBAIC02MjIsMjAgKzYyOSwxOSBAQCBwcm90ZWN0ZWQ6CiAgICAgLyoqIEBpbnRlcm5hbCAqLwog
ICAgIEJyZWFrSXRlcmF0b3IoKTsKICAgICAvKiogQGludGVybmFsICovCi0gICAgQnJlYWtJdGVy
YXRvciAoY29uc3QgQnJlYWtJdGVyYXRvciAmb3RoZXIpIDogVU9iamVjdChvdGhlcikge30KKyAg
ICBCcmVha0l0ZXJhdG9yIChjb25zdCBCcmVha0l0ZXJhdG9yICZvdGhlcik7CisjaWZuZGVmIFVf
SElERV9JTlRFUk5BTF9BUEkKICAgICAvKiogQGludGVybmFsICovCi0gICAgQnJlYWtJdGVyYXRv
ciAoY29uc3QgTG9jYWxlJiB2YWxpZCwgY29uc3QgTG9jYWxlJiBhY3R1YWwpOworICAgIEJyZWFr
SXRlcmF0b3IgKGNvbnN0IExvY2FsZSYgdmFsaWQsIGNvbnN0IExvY2FsZSAmYWN0dWFsKTsKKyAg
ICAvKiogQGludGVybmFsLiBBc3NpZ25tZW50IE9wZXJhdG9yLCB1c2VkIGJ5IFJ1bGVCYXNlZEJy
ZWFrSXRlcmF0b3IuICovCisgICAgQnJlYWtJdGVyYXRvciAmb3BlcmF0b3IgPSAoY29uc3QgQnJl
YWtJdGVyYXRvciAmb3RoZXIpOworI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCisK
IHByaXZhdGU6CiAKICAgICAvKiogQGludGVybmFsICovCiAgICAgY2hhciBhY3R1YWxMb2NhbGVb
VUxPQ19GVUxMTkFNRV9DQVBBQ0lUWV07CiAgICAgY2hhciB2YWxpZExvY2FsZVtVTE9DX0ZVTExO
QU1FX0NBUEFDSVRZXTsKLQotICAgIC8qKgotICAgICAqIFRoZSBhc3NpZ25tZW50IG9wZXJhdG9y
IGhhcyBubyByZWFsIGltcGxlbWVudGF0aW9uLgotICAgICAqIEl0J3MgcHJvdmlkZWQgdG8gbWFr
ZSB0aGUgY29tcGlsZXIgaGFwcHkuIERvIG5vdCBjYWxsLgotICAgICAqLwotICAgIEJyZWFrSXRl
cmF0b3ImIG9wZXJhdG9yPShjb25zdCBCcmVha0l0ZXJhdG9yJik7CiB9OwogCiAjaWZuZGVmIFVf
SElERV9ERVBSRUNBVEVEX0FQSQpAQCAtNjUxLDUgKzY1Nyw1IEBAIFVfTkFNRVNQQUNFX0VORAog
CiAjZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0JSRUFLX0lURVJBVElPTiAqLwogCi0jZW5kaWYg
Ly8gX0JSS0lURVIKKyNlbmRpZiAvLyBCUktJVEVSX0gKIC8vZW9mCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL2J5dGVzdHJlYW0uaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
Ynl0ZXN0cmVhbS5oCmluZGV4IDE3NGFhMzhhZmNlMDcwMjAxNGFiYTg4ZTUyOTM3ZWZlNGFiZWMx
MjUuLjZmNjFjMzg0Zjc5NTg2NmIxNjVjZTk1ZTliNWEyNjM4MWYwNDNhMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYnl0ZXN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvYnl0ZXN0cmVhbS5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0
ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6
IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8vIENvcHlyaWdodCAoQykg
MjAwOS0yMDEyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAvLyBDb3Jwb3JhdGlv
biBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogLy8KQEAgLTEyNCw4ICsxMjYsOCBA
QCBwdWJsaWM6CiAgIHZpcnR1YWwgdm9pZCBGbHVzaCgpOwogCiBwcml2YXRlOgotICBCeXRlU2lu
ayhjb25zdCBCeXRlU2luayAmKTsgLy8gY29weSBjb25zdHJ1Y3RvciBub3QgaW1wbGVtZW50ZWQK
LSAgQnl0ZVNpbmsgJm9wZXJhdG9yPShjb25zdCBCeXRlU2luayAmKTsgLy8gYXNzaWdubWVudCBv
cGVyYXRvciBub3QgaW1wbGVtZW50ZWQKKyAgQnl0ZVNpbmsoY29uc3QgQnl0ZVNpbmsgJikgPSBk
ZWxldGU7CisgIEJ5dGVTaW5rICZvcGVyYXRvcj0oY29uc3QgQnl0ZVNpbmsgJikgPSBkZWxldGU7
CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCkBAIC0yMTUsMTIgKzIxNywxMSBAQCBwcml2YXRlOgogICBpbnQzMl90
IHNpemVfOwogICBpbnQzMl90IGFwcGVuZGVkXzsKICAgVUJvb2wgb3ZlcmZsb3dlZF87Ci0gIENo
ZWNrZWRBcnJheUJ5dGVTaW5rKCk7IC8vLzwgZGVmYXVsdCBjb25zdHJ1Y3RvciBub3QgaW1wbGVt
ZW50ZWQgCi0gIENoZWNrZWRBcnJheUJ5dGVTaW5rKGNvbnN0IENoZWNrZWRBcnJheUJ5dGVTaW5r
ICYpOyAvLy88IGNvcHkgY29uc3RydWN0b3Igbm90IGltcGxlbWVudGVkCi0gIENoZWNrZWRBcnJh
eUJ5dGVTaW5rICZvcGVyYXRvcj0oY29uc3QgQ2hlY2tlZEFycmF5Qnl0ZVNpbmsgJik7IC8vLzwg
YXNzaWdubWVudCBvcGVyYXRvciBub3QgaW1wbGVtZW50ZWQKLX07CiAKLSNpZiBVX0hBVkVfU1RE
X1NUUklORworICBDaGVja2VkQXJyYXlCeXRlU2luaygpID0gZGVsZXRlOworICBDaGVja2VkQXJy
YXlCeXRlU2luayhjb25zdCBDaGVja2VkQXJyYXlCeXRlU2luayAmKSA9IGRlbGV0ZTsKKyAgQ2hl
Y2tlZEFycmF5Qnl0ZVNpbmsgJm9wZXJhdG9yPShjb25zdCBDaGVja2VkQXJyYXlCeXRlU2luayAm
KSA9IGRlbGV0ZTsKK307CiAKIC8qKiAKICAqIEltcGxlbWVudGF0aW9uIG9mIEJ5dGVTaW5rIHRo
YXQgd3JpdGVzIHRvIGEgInN0cmluZyIuCkBAIC0yMzYsNiArMjM3LDIxIEBAIGNsYXNzIFN0cmlu
Z0J5dGVTaW5rIDogcHVibGljIEJ5dGVTaW5rIHsKICAgICogQHN0YWJsZSBJQ1UgNC4yCiAgICAq
LwogICBTdHJpbmdCeXRlU2luayhTdHJpbmdDbGFzcyogZGVzdCkgOiBkZXN0XyhkZXN0KSB7IH0K
KyNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQorICAvKioKKyAgICogQ29uc3RydWN0cyBhIEJ5dGVT
aW5rIHRoYXQgcmVzZXJ2ZXMgYXBwZW5kIGNhcGFjaXR5IGFuZCB3aWxsIGFwcGVuZCBieXRlcyB0
byB0aGUgZGVzdCBzdHJpbmcuCisgICAqIAorICAgKiBAcGFyYW0gZGVzdCBwb2ludGVyIHRvIHN0
cmluZyBvYmplY3QgdG8gYXBwZW5kIHRvCisgICAqIEBwYXJhbSBpbml0aWFsQXBwZW5kQ2FwYWNp
dHkgY2FwYWNpdHkgYmV5b25kIGRlc3QtPmxlbmd0aCgpIHRvIGJlIHJlc2VydmUoKWQKKyAgICog
QGRyYWZ0IElDVSA2MAorICAgKi8KKyAgU3RyaW5nQnl0ZVNpbmsoU3RyaW5nQ2xhc3MqIGRlc3Qs
IGludDMyX3QgaW5pdGlhbEFwcGVuZENhcGFjaXR5KSA6IGRlc3RfKGRlc3QpIHsKKyAgICBpZiAo
aW5pdGlhbEFwcGVuZENhcGFjaXR5ID4gMCAmJgorICAgICAgICAodWludDMyX3QpaW5pdGlhbEFw
cGVuZENhcGFjaXR5ID4gKGRlc3QtPmNhcGFjaXR5KCkgLSBkZXN0LT5sZW5ndGgoKSkpIHsKKyAg
ICAgIGRlc3QtPnJlc2VydmUoZGVzdC0+bGVuZ3RoKCkgKyBpbml0aWFsQXBwZW5kQ2FwYWNpdHkp
OworICAgIH0KKyAgfQorI2VuZGlmICAvLyBVX0hJREVfRFJBRlRfQVBJCiAgIC8qKgogICAgKiBB
cHBlbmQgImJ5dGVzWzAsbi0xXSIgdG8gdGhpcy4KICAgICogQHBhcmFtIGRhdGEgdGhlIHBvaW50
ZXIgdG8gdGhlIGJ5dGVzCkBAIC0yNDUsMTIgKzI2MSwxMSBAQCBjbGFzcyBTdHJpbmdCeXRlU2lu
ayA6IHB1YmxpYyBCeXRlU2luayB7CiAgIHZpcnR1YWwgdm9pZCBBcHBlbmQoY29uc3QgY2hhciog
ZGF0YSwgaW50MzJfdCBuKSB7IGRlc3RfLT5hcHBlbmQoZGF0YSwgbik7IH0KICBwcml2YXRlOgog
ICBTdHJpbmdDbGFzcyogZGVzdF87Ci0gIFN0cmluZ0J5dGVTaW5rKCk7IC8vLzwgZGVmYXVsdCBj
b25zdHJ1Y3RvciBub3QgaW1wbGVtZW50ZWQgCi0gIFN0cmluZ0J5dGVTaW5rKGNvbnN0IFN0cmlu
Z0J5dGVTaW5rICYpOyAvLy88IGNvcHkgY29uc3RydWN0b3Igbm90IGltcGxlbWVudGVkCi0gIFN0
cmluZ0J5dGVTaW5rICZvcGVyYXRvcj0oY29uc3QgU3RyaW5nQnl0ZVNpbmsgJik7IC8vLzwgYXNz
aWdubWVudCBvcGVyYXRvciBub3QgaW1wbGVtZW50ZWQKLX07CiAKLSNlbmRpZgorICBTdHJpbmdC
eXRlU2luaygpID0gZGVsZXRlOworICBTdHJpbmdCeXRlU2luayhjb25zdCBTdHJpbmdCeXRlU2lu
ayAmKSA9IGRlbGV0ZTsKKyAgU3RyaW5nQnl0ZVNpbmsgJm9wZXJhdG9yPShjb25zdCBTdHJpbmdC
eXRlU2luayAmKSA9IGRlbGV0ZTsKK307CiAKIFVfTkFNRVNQQUNFX0VORAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2J5dGVzdHJpZS5oIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9ieXRlc3RyaWUuaAppbmRleCA5Yzc3ODI3NDBkYmEyNzUyYjFmMDEyNjRkMzk3N2VlNjE1
NDAyMDA3Li5jNTdiOGNjZmViNTk2MDBkOWU4ZmU4YWU2OTBiZGRmZjljYWZiN2E4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2J5dGVzdHJpZS5oCisrKyBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvYnl0ZXN0cmllLmgKQEAgLTEsMTAgKzEsMTIgQEAKKy8vIMKpIDIwMTYgYW5k
IGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2Yg
dXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAxMC0yMDEyLCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgYnl0
ZXN0cmllLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04
CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpAQCAt
MzA2LDcgKzMwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgICogQHJldHVybiBUaGUgTlVMLXRlcm1p
bmF0ZWQgYnl0ZSBzZXF1ZW5jZSBmb3IgdGhlIGxhc3Qgc3VjY2Vzc2Z1bCBuZXh0KCkuCiAgICAg
ICAgICAqIEBzdGFibGUgSUNVIDQuOAogICAgICAgICAgKi8KLSAgICAgICAgY29uc3QgU3RyaW5n
UGllY2UgJmdldFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHNwXzsgfQorICAgICAgICBTdHJpbmdQ
aWVjZSBnZXRTdHJpbmcoKSBjb25zdDsKICAgICAgICAgLyoqCiAgICAgICAgICAqIEByZXR1cm4g
VGhlIHZhbHVlIGZvciB0aGUgbGFzdCBzdWNjZXNzZnVsIG5leHQoKS4KICAgICAgICAgICogQHN0
YWJsZSBJQ1UgNC44CkBAIC0zMjUsNyArMzI3LDYgQEAgcHVibGljOgogICAgICAgICBpbnQzMl90
IGluaXRpYWxSZW1haW5pbmdNYXRjaExlbmd0aF87CiAKICAgICAgICAgQ2hhclN0cmluZyAqc3Ry
XzsKLSAgICAgICAgU3RyaW5nUGllY2Ugc3BfOwogICAgICAgICBpbnQzMl90IG1heExlbmd0aF87
CiAgICAgICAgIGludDMyX3QgdmFsdWVfOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL2J5dGVzdHJpZWJ1aWxkZXIuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYnl0ZXN0
cmllYnVpbGRlci5oCmluZGV4IGQwMGFiOWIzYjA5NDdkMGQwNWM4OTM1Zjk4ZWZlMTUwNzNkYTYy
MTguLmE4NDEyZDNkNmU4MzNkMzFhOWFjZjk0YWQ5YzdjMTI3NGNlN2UwMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvYnl0ZXN0cmllYnVpbGRlci5oCisrKyBiL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvYnl0ZXN0cmllYnVpbGRlci5oCkBAIC0xLDEwICsxLDEyIEBACisvLyDC
qSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAm
IHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoK
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCwgSW50
ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMjAxMC0yMDE2
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90
aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAg
ZmlsZSBuYW1lOiAgYnl0ZXN0cmllYnVpbGRlci5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkK
KyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAg
IGluZGVudGF0aW9uOjQKICoKQEAgLTI5LDcgKzMxLDYgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KIAog
Y2xhc3MgQnl0ZXNUcmllRWxlbWVudDsKIGNsYXNzIENoYXJTdHJpbmc7Ci0KIC8qKgogICogQnVp
bGRlciBjbGFzcyBmb3IgQnl0ZXNUcmllLgogICoKQEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgICAqIEByZXR1cm4gKnRoaXMKICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KLSAg
ICBCeXRlc1RyaWVCdWlsZGVyICZhZGQoY29uc3QgU3RyaW5nUGllY2UgJnMsIGludDMyX3QgdmFs
dWUsIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CisgICAgQnl0ZXNUcmllQnVpbGRlciAmYWRkKFN0
cmluZ1BpZWNlIHMsIGludDMyX3QgdmFsdWUsIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CiAKICAg
ICAvKioKICAgICAgKiBCdWlsZHMgYSBCeXRlc1RyaWUgZm9yIHRoZSBhZGQoKWVkIGRhdGEuCkBA
IC0xMjYsMTQgKzEyNywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgYnVpbGRCeXRlcyhVU3RyaW5n
VHJpZUJ1aWxkT3B0aW9uIGJ1aWxkT3B0aW9uLCBVRXJyb3JDb2RlICZlcnJvckNvZGUpOwogCiAg
ICAgdmlydHVhbCBpbnQzMl90IGdldEVsZW1lbnRTdHJpbmdMZW5ndGgoaW50MzJfdCBpKSBjb25z
dDsKLSAgICB2aXJ0dWFsIFVDaGFyIGdldEVsZW1lbnRVbml0KGludDMyX3QgaSwgaW50MzJfdCBi
eXRlSW5kZXgpIGNvbnN0OworICAgIHZpcnR1YWwgY2hhcjE2X3QgZ2V0RWxlbWVudFVuaXQoaW50
MzJfdCBpLCBpbnQzMl90IGJ5dGVJbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQzMl90IGdl
dEVsZW1lbnRWYWx1ZShpbnQzMl90IGkpIGNvbnN0OwogCiAgICAgdmlydHVhbCBpbnQzMl90IGdl
dExpbWl0T2ZMaW5lYXJNYXRjaChpbnQzMl90IGZpcnN0LCBpbnQzMl90IGxhc3QsIGludDMyX3Qg
Ynl0ZUluZGV4KSBjb25zdDsKIAogICAgIHZpcnR1YWwgaW50MzJfdCBjb3VudEVsZW1lbnRVbml0
cyhpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGxpbWl0LCBpbnQzMl90IGJ5dGVJbmRleCkgY29uc3Q7
CiAgICAgdmlydHVhbCBpbnQzMl90IHNraXBFbGVtZW50c0J5U29tZVVuaXRzKGludDMyX3QgaSwg
aW50MzJfdCBieXRlSW5kZXgsIGludDMyX3QgY291bnQpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50
MzJfdCBpbmRleE9mRWxlbWVudFdpdGhOZXh0VW5pdChpbnQzMl90IGksIGludDMyX3QgYnl0ZUlu
ZGV4LCBVQ2hhciBieXRlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludDMyX3QgaW5kZXhPZkVsZW1l
bnRXaXRoTmV4dFVuaXQoaW50MzJfdCBpLCBpbnQzMl90IGJ5dGVJbmRleCwgY2hhcjE2X3QgYnl0
ZSkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFVCb29sIG1hdGNoTm9kZXNDYW5IYXZlVmFsdWVzKCkg
Y29uc3QgeyByZXR1cm4gRkFMU0U7IH0KIApAQCAtMTUyLDcgKzE1Myw4IEBAIHByaXZhdGU6CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgY2hhciAqczsKICAgICB9OwotCisgICAgCisgICAg
Ly8gZG9uJ3QgdXNlICNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSSB3aXRoIHByaXZhdGUgY2xh
c3MgbWVtYmVycyBvciB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdmlydHVhbCBOb2RlICpjcmVhdGVM
aW5lYXJNYXRjaE5vZGUoaW50MzJfdCBpLCBpbnQzMl90IGJ5dGVJbmRleCwgaW50MzJfdCBsZW5n
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSAqbmV4dE5v
ZGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NhbGVuZGFy
LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NhbGVuZGFyLmgKaW5kZXggYmM3ZjA1NDkyZGVm
ZGRhYmQ0YTQ3MTE3OTYyMjY1MjY3YWU2NjRkOC4uNDgwMjE1MzRiNDIyZjY4NWZkMGMyMmQwMDIy
NjEwM2E2ZGQzMTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9jYWxlbmRh
ci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY2FsZW5kYXIuaApAQCAtMSwzICsxLDUg
QEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBM
aWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5o
dG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDE5OTct
MjAxNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpAQCAtMjgsNyArMzAsNyBAQAog
I2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCiAKIC8qKgotICogXGZpbGUgCisgKiBcZmlsZQog
ICogXGJyaWVmIEMrKyBBUEk6IENhbGVuZGFyIG9iamVjdAogICovCiAjaWYgIVVDT05GSUdfTk9f
Rk9STUFUVElORwpAQCAtMTM1LDcgKzEzNyw3IEBAIGNsYXNzIEJhc2ljVGltZVpvbmU7CiAgKiBD
YWxlbmRhciByZXNvbHZlcyB0aGUgdGltZSB1c2luZyB0aGUgVVRDIG9mZnNldCBiZWZvcmUgdGhl
IHRyYW5zaXRpb24gYnkgZGVmYXVsdC4KICAqIEluIHRoaXMgZXhhbXBsZSwgMTozMCBBTSBpcyBp
bnRlcnByZXRlZCBhcyAxOjMwIEFNIHN0YW5kYXJkIHRpbWUgKG5vbi1leGlzdCksCiAgKiBzbyB0
aGUgZmluYWwgcmVzdWx0IHdpbGwgYmUgMjozMCBBTSBkYXlsaWdodCB0aW1lLgotICogCisgKgog
ICogPHA+T24gdGhlIGRhdGUgc3dpdGNoaW5nIGJhY2sgdG8gc3RhbmRhcmQgdGltZSwgd2FsbCBj
bG9jayB0aW1lIGlzIG1vdmVkIGJhY2sgb25lCiAgKiBob3VyIGF0IDI6MDAgQU0uIFNvIHdhbGwg
Y2xvY2sgdGltZSBmcm9tIDE6MDAgQU0gdG8gMTo1OSBBTSBvY2N1ciB0d2ljZS4gSW4gdGhpcwog
ICogY2FzZSwgdGhlIElDVSBDYWxlbmRhciByZXNvbHZlcyB0aGUgdGltZSB1c2luZyB0aGUgVVRD
IG9mZnNldCBhZnRlciB0aGUgdHJhbnNpdGlvbgpAQCAtMjMzLDcgKzIzNSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgRFNUX09GRlNFVCwgICAgICAgICAgIC8vIEV4YW1wbGU6IDAgb3IgVV9NSUxMSVNf
UEVSX0hPVVIKICAgICAgICAgWUVBUl9XT1ksICAgICAgICAgICAgIC8vICdZJyBFeGFtcGxlOiAx
Li5iaWcgbnVtYmVyIC0gWWVhciBvZiBXZWVrIG9mIFllYXIKICAgICAgICAgRE9XX0xPQ0FMLCAg
ICAgICAgICAgIC8vICdlJyBFeGFtcGxlOiAxLi43IC0gRGF5IG9mIFdlZWsgLyBMb2NhbGl6ZWQK
LSAgICAgICAgCisKICAgICAgICAgRVhURU5ERURfWUVBUiwKICAgICAgICAgSlVMSUFOX0RBWSwK
ICAgICAgICAgTUlMTElTRUNPTkRTX0lOX0RBWSwKQEAgLTkxMiw3ICs5MTQsNyBAQCBwdWJsaWM6
CiAgICAgICogb3B0aW9uIGZvciB0aGlzLiBXaGVuIHRoZSBhcmd1bWVudCBpcyBuZWl0aGVyIDxj
b2RlPlVDQUxfV0FMTFRJTUVfRklSU1Q8L2NvZGU+CiAgICAgICogbm9yIDxjb2RlPlVDQUxfV0FM
TFRJTUVfTEFTVDwvY29kZT4sIHRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgYW5kIHdpbGwga2Vl
cAogICAgICAqIHRoZSBjdXJyZW50IHNldHRpbmcuCi0gICAgICogCisgICAgICoKICAgICAgKiBA
cGFyYW0gb3B0aW9uIHRoZSBiZWhhdmlvciBmb3IgaGFuZGxpbmcgcmVwZWF0aW5nIHdhbGwgdGlt
ZSwgZWl0aGVyCiAgICAgICogPGNvZGU+VUNBTF9XQUxMVElNRV9GSVJTVDwvY29kZT4gb3IgPGNv
ZGU+VUNBTF9XQUxMVElNRV9MQVNUPC9jb2RlPi4KICAgICAgKiBAc2VlICNnZXRSZXBlYXRlZFdh
bGxUaW1lT3B0aW9uCkBAIC05MjMsNyArOTI1LDcgQEAgcHVibGljOgogICAgIC8qKgogICAgICAq
IEdldHMgdGhlIGJlaGF2aW9yIGZvciBoYW5kbGluZyB3YWxsIHRpbWUgcmVwZWF0aW5nIG11bHRp
cGxlIHRpbWVzCiAgICAgICogYXQgbmVnYXRpdmUgdGltZSB6b25lIG9mZnNldCB0cmFuc2l0aW9u
cy4KLSAgICAgKiAKKyAgICAgKgogICAgICAqIEByZXR1cm4gdGhlIGJlaGF2aW9yIGZvciBoYW5k
bGluZyByZXBlYXRpbmcgd2FsbCB0aW1lLCBlaXRoZXIKICAgICAgKiA8Y29kZT5VQ0FMX1dBTExU
SU1FX0ZJUlNUPC9jb2RlPiBvciA8Y29kZT5VQ0FMX1dBTExUSU1FX0xBU1Q8L2NvZGU+LgogICAg
ICAqIEBzZWUgI3NldFJlcGVhdGVkV2FsbFRpbWVPcHRpb24KQEAgLTk0NCwxMiArOTQ2LDEyIEBA
IHB1YmxpYzoKICAgICAgKiA8cD4KICAgICAgKiA8Yj5Ob3RlOjwvYj5UaGlzIG9wdGlvbiBpcyBl
ZmZlY3RpdmUgb25seSB3aGVuIHRoaXMgY2FsZW5kYXIgaXMgbGVuaWVudC4KICAgICAgKiBXaGVu
IHRoZSBjYWxlbmRhciBpcyBzdHJpY3QsIHN1Y2ggbm9uLWV4aXN0aW5nIHdhbGwgdGltZSB3aWxs
IGNhdXNlIGFuIGVycm9yLgotICAgICAqIAorICAgICAqCiAgICAgICogQHBhcmFtIG9wdGlvbiB0
aGUgYmVoYXZpb3IgZm9yIGhhbmRsaW5nIHNraXBwZWQgd2FsbCB0aW1lIGF0IHBvc2l0aXZlIHRp
bWUgem9uZQogICAgICAqIG9mZnNldCB0cmFuc2l0aW9ucywgb25lIG9mIDxjb2RlPlVDQUxfV0FM
TFRJTUVfRklSU1Q8L2NvZGU+LCA8Y29kZT5VQ0FMX1dBTExUSU1FX0xBU1Q8L2NvZGU+IGFuZAog
ICAgICAqIDxjb2RlPlVDQUxfV0FMTFRJTUVfTkVYVF9WQUxJRDwvY29kZT4uCiAgICAgICogQHNl
ZSAjZ2V0U2tpcHBlZFdhbGxUaW1lT3B0aW9uCi0gICAgICogCisgICAgICoKICAgICAgKiBAc3Rh
YmxlIElDVSA0OQogICAgICAqLwogICAgIHZvaWQgc2V0U2tpcHBlZFdhbGxUaW1lT3B0aW9uKFVD
YWxlbmRhcldhbGxUaW1lT3B0aW9uIG9wdGlvbik7CkBAIC05NTcsNyArOTU5LDcgQEAgcHVibGlj
OgogICAgIC8qKgogICAgICAqIEdldHMgdGhlIGJlaGF2aW9yIGZvciBoYW5kbGluZyBza2lwcGVk
IHdhbGwgdGltZSBhdCBwb3NpdGl2ZSB0aW1lIHpvbmUgb2Zmc2V0CiAgICAgICogdHJhbnNpdGlv
bnMuCi0gICAgICogCisgICAgICoKICAgICAgKiBAcmV0dXJuIHRoZSBiZWhhdmlvciBmb3IgaGFu
ZGxpbmcgc2tpcHBlZCB3YWxsIHRpbWUsIG9uZSBvZgogICAgICAqIDxjb2RlPlVDQUxfV0FMTFRJ
TUVfRklSU1Q8L2NvZGU+LCA8Y29kZT5VQ0FMX1dBTExUSU1FX0xBU1Q8L2NvZGU+CiAgICAgICog
YW5kIDxjb2RlPlVDQUxfV0FMTFRJTUVfTkVYVF9WQUxJRDwvY29kZT4uCkBAIC0xNzM5LDcgKzE3
NDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICogcmVmbGVjdHMgbG9jYWwgem9uZSB3YWxsIHRpbWUu
CiAgICAgICogQGludGVybmFsCiAgICAgICovCi0gICAgaW50MzJfdCBjb21wdXRlTWlsbGlzSW5E
YXkoKTsKKyAgICBkb3VibGUgY29tcHV0ZU1pbGxpc0luRGF5KCk7CiAKICAgICAvKioKICAgICAg
KiBUaGlzIG1ldGhvZCBjYW4gYXNzdW1lIEVYVEVOREVEX1lFQVIgaGFzIGJlZW4gc2V0LgpAQCAt
MTc1MCw3ICsxNzUyLDcgQEAgcHJvdGVjdGVkOgogICAgICAqICAgICAgICAgIHdoZW4gdGhpcyBm
dW5jdGlvbiBmYWlscy4KICAgICAgKiBAaW50ZXJuYWwKICAgICAgKi8KLSAgICBpbnQzMl90IGNv
bXB1dGVab25lT2Zmc2V0KGRvdWJsZSBtaWxsaXMsIGludDMyX3QgbWlsbGlzSW5EYXksIFVFcnJv
ckNvZGUgJmVjKTsKKyAgICBpbnQzMl90IGNvbXB1dGVab25lT2Zmc2V0KGRvdWJsZSBtaWxsaXMs
IGRvdWJsZSBtaWxsaXNJbkRheSwgVUVycm9yQ29kZSAmZWMpOwogCiAKICAgICAvKioKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY2FuaXRlci5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9jYW5pdGVyLmgKaW5kZXggM2JkNzlmNzY4ZTBiMDU3N2IwZjIzYmQ5ZDQwYmIzYTRh
MzE1MDIyMi4uNWE4ODJmYjNmYjhiY2Q2MjFhNzI1MGY2MGEyMTM3MjQxY2U0M2M3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9jYW5pdGVyLmgKKysrIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9jYW5pdGVyLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRl
cjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTog
aHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxNCwgSW50ZXJuYXRpb25hbCBCdXNp
bmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKQEAgLTE4NSw3ICsxODcsNyBAQCBwcml2YXRl
OgogICAgIFVuaWNvZGVTdHJpbmcgKmdldEVxdWl2YWxlbnRzKGNvbnN0IFVuaWNvZGVTdHJpbmcg
JnNlZ21lbnQsIGludDMyX3QgJnJlc3VsdF9sZW4sIFVFcnJvckNvZGUgJnN0YXR1cyk7IC8vcHJp
dmF0ZSBTdHJpbmdbXSBnZXRFcXVpdmFsZW50cyhTdHJpbmcgc2VnbWVudCkKIAogICAgIC8vU2V0
IGdldEVxdWl2YWxlbnRzMihTdHJpbmcgc2VnbWVudCk7Ci0gICAgSGFzaHRhYmxlICpnZXRFcXVp
dmFsZW50czIoSGFzaHRhYmxlICpmaWxsaW5SZXN1bHQsIGNvbnN0IFVDaGFyICpzZWdtZW50LCBp
bnQzMl90IHNlZ0xlbiwgVUVycm9yQ29kZSAmc3RhdHVzKTsKKyAgICBIYXNodGFibGUgKmdldEVx
dWl2YWxlbnRzMihIYXNodGFibGUgKmZpbGxpblJlc3VsdCwgY29uc3QgY2hhcjE2X3QgKnNlZ21l
bnQsIGludDMyX3Qgc2VnTGVuLCBVRXJyb3JDb2RlICZzdGF0dXMpOwogICAgIC8vSGFzaHRhYmxl
ICpnZXRFcXVpdmFsZW50czIoY29uc3QgVW5pY29kZVN0cmluZyAmc2VnbWVudCwgaW50MzJfdCBz
ZWdMZW4sIFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKICAgICAvKioKQEAgLTE5NCw3ICsxOTYsNyBA
QCBwcml2YXRlOgogICAgICAqIElmIHNvLCB0YWtlIHRoZSByZW1haW5kZXIsIGFuZCByZXR1cm4g
dGhlIGVxdWl2YWxlbnRzCiAgICAgICovCiAgICAgLy9TZXQgZXh0cmFjdChpbnQgY29tcCwgU3Ry
aW5nIHNlZ21lbnQsIGludCBzZWdtZW50UG9zLCBTdHJpbmdCdWZmZXIgYnVmZmVyKTsKLSAgICBI
YXNodGFibGUgKmV4dHJhY3QoSGFzaHRhYmxlICpmaWxsaW5SZXN1bHQsIFVDaGFyMzIgY29tcCwg
Y29uc3QgVUNoYXIgKnNlZ21lbnQsIGludDMyX3Qgc2VnTGVuLCBpbnQzMl90IHNlZ21lbnRQb3Ms
IFVFcnJvckNvZGUgJnN0YXR1cyk7CisgICAgSGFzaHRhYmxlICpleHRyYWN0KEhhc2h0YWJsZSAq
ZmlsbGluUmVzdWx0LCBVQ2hhcjMyIGNvbXAsIGNvbnN0IGNoYXIxNl90ICpzZWdtZW50LCBpbnQz
Ml90IHNlZ0xlbiwgaW50MzJfdCBzZWdtZW50UG9zLCBVRXJyb3JDb2RlICZzdGF0dXMpOwogICAg
IC8vSGFzaHRhYmxlICpleHRyYWN0KFVDaGFyMzIgY29tcCwgY29uc3QgVW5pY29kZVN0cmluZyAm
c2VnbWVudCwgaW50MzJfdCBzZWdMZW4sIGludDMyX3Qgc2VnbWVudFBvcywgVUVycm9yQ29kZSAm
c3RhdHVzKTsKIAogICAgIHZvaWQgY2xlYW5QaWVjZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvY2hhcml0ZXIuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY2hhcml0
ZXIuaAppbmRleCBlOGQ2NTA5MGE0MGE2MDg1OTUxYzczMzA3Zjc0YWNmODNiYTFiYmM4Li43YTRl
MWEyZjQ4NzYwZDcyMjhjYjA2N2RkM2Y1YjlmODFmNDg3ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL2NoYXJpdGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9j
aGFyaXRlci5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUs
IEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cu
dW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtNzYsNyAr
NzgsNyBAQCBVX05BTUVTUEFDRV9CRUdJTgogICogfQogICoKICAqIHZvaWQgZnVuY3Rpb24xKEZv
cndhcmRDaGFyYWN0ZXJJdGVyYXRvciAmaXQpIHsKLSAqICAgICBVQ2hhciBjOworICogICAgIGNo
YXIxNl90IGM7CiAgKiAgICAgd2hpbGUoKGM9aXQubmV4dFBvc3RJbmMoKSkhPUZvcndhcmRDaGFy
YWN0ZXJJdGVyYXRvcjo6RE9ORSkgewogICogICAgICAgICAvLyB1c2UgYwogICogICAgICB9CkBA
IC0xNDcsNyArMTQ5LDcgQEAgcHVibGljOgogICAgICAqIEByZXR1cm4gdGhlIGN1cnJlbnQgY29k
ZSB1bml0LgogICAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgICAqLwotICAgIHZpcnR1YWwgVUNo
YXIgICAgICAgICBuZXh0UG9zdEluYyh2b2lkKSA9IDA7CisgICAgdmlydHVhbCBjaGFyMTZfdCAg
ICAgICAgIG5leHRQb3N0SW5jKHZvaWQpID0gMDsKICAgICAKICAgICAvKioKICAgICAgKiBHZXRz
IHRoZSBjdXJyZW50IGNvZGUgcG9pbnQgZm9yIHJldHVybmluZyBhbmQgYWR2YW5jZXMgdG8gdGhl
IG5leHQgY29kZSBwb2ludApAQCAtMjI4LDcgKzIzMCw3IEBAIHByb3RlY3RlZDoKICAqIHNob3dp
bmcgYSB3YXkgdG8gY29udmVydCBzaW1wbGUgZm9yKCkgbG9vcHM6CiAgKiBcY29kZQogICogdm9p
ZCBmb3J3YXJkMihDaGFyYWN0ZXJJdGVyYXRvciAmaXQpIHsKLSAqICAgICBVQ2hhciBjOworICog
ICAgIGNoYXIxNl90IGM7CiAgKiAgICAgZm9yKGM9aXQuZmlyc3RQb3N0SW5jKCk7IGMhPUNoYXJh
Y3Rlckl0ZXJhdG9yOjpET05FOyBjPWl0Lm5leHRQb3N0SW5jKCkpIHsKICAqICAgICAgICAgIC8v
IHVzZSBjCiAgKiAgICAgIH0KQEAgLTI0Nyw3ICsyNDksNyBAQCBwcm90ZWN0ZWQ6CiAgKiBCYWNr
d2FyZCBpdGVyYXRpb24gd2l0aCBhIG1vcmUgdHJhZGl0aW9uYWwgZm9yKCkgbG9vcDoKICAqIFxj
b2RlCiAgKiB2b2lkIGJhY2t3YXJkMihDaGFyYWN0ZXJJdGVyYXRvciAmaXQpIHsKLSAqICAgICBV
Q2hhciBjOworICogICAgIGNoYXIxNl90IGM7CiAgKiAgICAgZm9yKGM9aXQubGFzdCgpOyBjIT1D
aGFyYWN0ZXJJdGVyYXRvcjo6RE9ORTsgYz1pdC5wcmV2aW91cygpKSB7CiAgKiAgICAgICAgIC8v
IHVzZSBjCiAgKiAgICAgIH0KQEAgLTI2NCw3ICsyNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgKiAgICAg
IC8vIGdldCB0aGUgcG9zaXRpb24KICAqICAgICAgaW50MzJfdCBwb3M9aXQuZ2V0SW5kZXgoKTsK
ICAqICAgICAgLy8gZ2V0IHRoZSBwcmV2aW91cyBjb2RlIHVuaXQKLSAqICAgICAgVUNoYXIgdT1p
dC5wcmV2aW91cygpOworICogICAgICBjaGFyMTZfdCB1PWl0LnByZXZpb3VzKCk7CiAgKiAgICAg
IC8vIG1vdmUgYmFjayBvbmUgbW9yZSBjb2RlIHVuaXQKICAqICAgICAgaXQubW92ZSgtMSwgQ2hh
cmFjdGVySXRlcmF0b3I6OmtDdXJyZW50KTsKICAqICAgICAgLy8gc2V0IHRoZSBwb3NpdGlvbiBi
YWNrIHRvIHdoZXJlIGl0IHdhcwpAQCAtMjgxLDcgKzI4Myw3IEBAIHByb3RlY3RlZDoKICAqIEZ1
bmN0aW9uIHByb2Nlc3NpbmcgY2hhcmFjdGVycywgaW4gdGhpcyBleGFtcGxlIHNpbXBsZSBvdXRw
dXQKICAqIDxwcmU+CiAgKiBcY29kZQotICogIHZvaWQgcHJvY2Vzc0NoYXIoIFVDaGFyIGMgKQor
ICogIHZvaWQgcHJvY2Vzc0NoYXIoIGNoYXIxNl90IGMgKQogICogIHsKICAqICAgICAgY291dCA8
PCAiICIgPDwgYzsKICAqICB9CkBAIC0yOTIsNyArMjk0LDcgQEAgcHJvdGVjdGVkOgogICogXGNv
ZGUKICAqICB2b2lkIHRyYXZlcnNlRm9yd2FyZChDaGFyYWN0ZXJJdGVyYXRvciYgaXRlcikKICAq
ICB7Ci0gKiAgICAgIGZvcihVQ2hhciBjID0gaXRlci5maXJzdCgpOyBjICE9IENoYXJhY3Rlckl0
ZXJhdG9yLkRPTkU7IGMgPSBpdGVyLm5leHQoKSkgeworICogICAgICBmb3IoY2hhcjE2X3QgYyA9
IGl0ZXIuZmlyc3QoKTsgYyAhPSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FOyBjID0gaXRlci5uZXh0
KCkpIHsKICAqICAgICAgICAgIHByb2Nlc3NDaGFyKGMpOwogICogICAgICB9CiAgKiAgfQpAQCAt
MzAzLDcgKzMwNSw3IEBAIHByb3RlY3RlZDoKICAqIFxjb2RlCiAgKiAgdm9pZCB0cmF2ZXJzZUJh
Y2t3YXJkKENoYXJhY3Rlckl0ZXJhdG9yJiBpdGVyKQogICogIHsKLSAqICAgICAgZm9yKFVDaGFy
IGMgPSBpdGVyLmxhc3QoKTsgYyAhPSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FOyBjID0gaXRlci5w
cmV2aW91cygpKSB7CisgKiAgICAgIGZvcihjaGFyMTZfdCBjID0gaXRlci5sYXN0KCk7IGMgIT0g
Q2hhcmFjdGVySXRlcmF0b3IuRE9ORTsgYyA9IGl0ZXIucHJldmlvdXMoKSkgewogICogICAgICAg
ICAgcHJvY2Vzc0NoYXIoYyk7CiAgKiAgICAgIH0KICAqICB9CkBAIC0zMTUsNyArMzE3LDcgQEAg
cHJvdGVjdGVkOgogICogXGNvZGUKICAqIHZvaWQgdHJhdmVyc2VPdXQoQ2hhcmFjdGVySXRlcmF0
b3ImIGl0ZXIsIGludDMyX3QgcG9zKQogICogewotICogICAgICBVQ2hhciBjOworICogICAgICBj
aGFyMTZfdCBjOwogICogICAgICBmb3IgKGMgPSBpdGVyLnNldEluZGV4KHBvcyk7CiAgKiAgICAg
IGMgIT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSAmJiAoVW5pY29kZTo6aXNMZXR0ZXIoYykgfHwg
VW5pY29kZTo6aXNEaWdpdChjKSk7CiAgKiAgICAgICAgICBjID0gaXRlci5uZXh0KCkpIHt9CkBA
IC0zODQsNyArMzg2LDcgQEAgcHVibGljOgogICAgICAqIEByZXR1cm4gdGhlIGZpcnN0IGNvZGUg
dW5pdCBpbiBpdHMgaXRlcmF0aW9uIHJhbmdlLgogICAgICAqIEBzdGFibGUgSUNVIDIuMAogICAg
ICAqLwotICAgIHZpcnR1YWwgVUNoYXIgICAgICAgICBmaXJzdCh2b2lkKSA9IDA7CisgICAgdmly
dHVhbCBjaGFyMTZfdCAgICAgICAgIGZpcnN0KHZvaWQpID0gMDsKIAogICAgIC8qKgogICAgICAq
IFNldHMgdGhlIGl0ZXJhdG9yIHRvIHJlZmVyIHRvIHRoZSBmaXJzdCBjb2RlIHVuaXQgaW4gaXRz
CkBAIC0zOTQsNyArMzk2LDcgQEAgcHVibGljOgogICAgICAqIEByZXR1cm4gdGhlIGZpcnN0IGNv
ZGUgdW5pdCBpbiBpdHMgaXRlcmF0aW9uIHJhbmdlLgogICAgICAqIEBzdGFibGUgSUNVIDIuMAog
ICAgICAqLwotICAgIHZpcnR1YWwgVUNoYXIgICAgICAgICBmaXJzdFBvc3RJbmModm9pZCk7Cisg
ICAgdmlydHVhbCBjaGFyMTZfdCAgICAgICAgIGZpcnN0UG9zdEluYyh2b2lkKTsKIAogICAgIC8q
KgogICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yIHRvIHJlZmVyIHRvIHRoZSBmaXJzdCBjb2RlIHBv
aW50IGluIGl0cwpAQCAtNDMzLDcgKzQzNSw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuIHRo
ZSBsYXN0IGNvZGUgdW5pdC4KICAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAgKi8KLSAgICB2
aXJ0dWFsIFVDaGFyICAgICAgICAgbGFzdCh2b2lkKSA9IDA7CisgICAgdmlydHVhbCBjaGFyMTZf
dCAgICAgICAgIGxhc3Qodm9pZCkgPSAwOwogICAgICAgICAKICAgICAvKioKICAgICAgKiBTZXRz
IHRoZSBpdGVyYXRvciB0byByZWZlciB0byB0aGUgbGFzdCBjb2RlIHBvaW50IGluIGl0cwpAQCAt
NDYxLDcgKzQ2Myw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuIHRoZSAicG9zaXRpb24iLXRo
IGNvZGUgdW5pdC4KICAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAgKi8KLSAgICB2aXJ0dWFs
IFVDaGFyICAgICAgICAgc2V0SW5kZXgoaW50MzJfdCBwb3NpdGlvbikgPSAwOworICAgIHZpcnR1
YWwgY2hhcjE2X3QgICAgICAgICBzZXRJbmRleChpbnQzMl90IHBvc2l0aW9uKSA9IDA7CiAKICAg
ICAvKioKICAgICAgKiBTZXRzIHRoZSBpdGVyYXRvciB0byByZWZlciB0byB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBjb2RlIHBvaW50CkBAIC00ODEsNyArNDgzLDcgQEAgcHVibGljOgogICAgICAqIEBy
ZXR1cm4gdGhlIGN1cnJlbnQgY29kZSB1bml0LiAKICAgICAgKiBAc3RhYmxlIElDVSAyLjAKICAg
ICAgKi8KLSAgICB2aXJ0dWFsIFVDaGFyICAgICAgICAgY3VycmVudCh2b2lkKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBjaGFyMTZfdCAgICAgICAgIGN1cnJlbnQodm9pZCkgY29uc3QgPSAwOwog
ICAgICAgICAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHRoZSBjb2RlIHBvaW50IHRoZSBpdGVy
YXRvciBjdXJyZW50bHkgcmVmZXJzIHRvLiAgCkBAIC00OTcsNyArNDk5LDcgQEAgcHVibGljOgog
ICAgICAqIEByZXR1cm4gdGhlIG5leHQgY29kZSB1bml0LgogICAgICAqIEBzdGFibGUgSUNVIDIu
MAogICAgICAqLwotICAgIHZpcnR1YWwgVUNoYXIgICAgICAgICBuZXh0KHZvaWQpID0gMDsKKyAg
ICB2aXJ0dWFsIGNoYXIxNl90ICAgICAgICAgbmV4dCh2b2lkKSA9IDA7CiAgICAgICAgIAogICAg
IC8qKgogICAgICAqIEFkdmFuY2VzIHRvIHRoZSBuZXh0IGNvZGUgcG9pbnQgaW4gdGhlIGl0ZXJh
dGlvbiByYW5nZQpAQCAtNTE4LDcgKzUyMCw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuIHRo
ZSBwcmV2aW91cyBjb2RlIHVuaXQuCiAgICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAgICovCi0g
ICAgdmlydHVhbCBVQ2hhciAgICAgICAgIHByZXZpb3VzKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFs
IGNoYXIxNl90ICAgICAgICAgcHJldmlvdXModm9pZCkgPSAwOwogCiAgICAgLyoqCiAgICAgICog
QWR2YW5jZXMgdG8gdGhlIHByZXZpb3VzIGNvZGUgcG9pbnQgaW4gdGhlIGl0ZXJhdGlvbiByYW5n
ZQpAQCAtNjA1LDYgKzYwNywxMCBAQCBwdWJsaWM6CiAgICAgICogQHJldHVybiB0aGUgbmV3IHBv
c2l0aW9uCiAgICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAgICovCisjaWZkZWYgbW92ZTMyCisg
ICAgIC8vIE9uZSBvZiB0aGUgc3lzdGVtIGhlYWRlcnMgcmlnaHQgbm93IGlzIHNvbWV0aW1lcyBk
ZWZpbmluZyBhIGNvbmZsaWN0aW5nIG1hY3JvIHdlIGRvbid0IHVzZQorI3VuZGVmIG1vdmUzMgor
I2VuZGlmCiAgICAgdmlydHVhbCBpbnQzMl90ICAgICAgbW92ZTMyKGludDMyX3QgZGVsdGEsIEVP
cmlnaW4gb3JpZ2luKSA9IDA7CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvY2hvaWNmbXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY2hvaWNmbXQuaApp
bmRleCBjZmQ1MjA2MjRkYzUzYWVjM2FiOGMxYWQyZmUxNDdkMDAzZjA3ZmM0Li5jOWYwZjExMTRm
ODllZGM0MTQxNWQ2OGNhZWVmODM0MDI3ZDRhMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL2Nob2ljZm10LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9jaG9pY2Zt
dC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4g
YW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29k
ZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENv
cHlyaWdodCAoQykgMTk5Ny0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NvbGVpdHIuaCBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvY29sZWl0ci5oCmluZGV4IDhjNWQwZTk0ZjU4ZDQzMjhmMjFkZDMzMTAxNWE2
OWMzMGRjZjk0MDYuLmYyYmQyZWNjNjIxYWM4NWRiZDY4MTNjYzYxNDMwNmMxZjZkNTUzNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvY29sZWl0ci5oCisrKyBiL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvY29sZWl0ci5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQg
bGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1
c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCiAgKiAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDE0LCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzCkBAIC00NSw2ICs0Nyw3IEBAIFVfTkFNRVNQQUNFX0JFR0lOCiAK
IHN0cnVjdCBDb2xsYXRpb25EYXRhOwogCitjbGFzcyBDaGFyYWN0ZXJJdGVyYXRvcjsKIGNsYXNz
IENvbGxhdGlvbkl0ZXJhdG9yOwogY2xhc3MgUnVsZUJhc2VkQ29sbGF0b3I7CiBjbGFzcyBVQ29s
bGF0aW9uUENFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9jb2xsLmggYi9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL2NvbGwuaAppbmRleCBhZGQ2YjViYTM2OGY3YjlkOTlkZGQ0
YTAzZjM2MTk3NjBjMjE1ODMxLi5kMDM1NzA1MDllY2ViYmRmYmViMWNhMjE1YmQzMzcwMzc4NWU3
ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NvbGwuaAorKysgYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL2NvbGwuaApAQCAtMSwxNSArMSwxNyBAQAorLy8gwqkgMjAxNiBh
bmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBv
ZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxNSwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDE2LCBJbnRlcm5h
dGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCiAKIC8qKgotICog
XGZpbGUgCisgKiBcZmlsZQogICogXGJyaWVmIEMrKyBBUEk6IENvbGxhdGlvbiBTZXJ2aWNlLgog
ICovCi0gCisKIC8qKgogKiBGaWxlIGNvbGwuaAogKgpAQCAtNTYsNyArNTgsNyBAQAogCiAjaW5j
bHVkZSAidW5pY29kZS91b2JqZWN0LmgiCiAjaW5jbHVkZSAidW5pY29kZS91Y29sLmgiCi0jaW5j
bHVkZSAidW5pY29kZS9ub3JtbHpyLmgiCisjaW5jbHVkZSAidW5pY29kZS91bm9ybS5oIgogI2lu
Y2x1ZGUgInVuaWNvZGUvbG9jaWQuaCIKICNpbmNsdWRlICJ1bmljb2RlL3VuaXNldC5oIgogI2lu
Y2x1ZGUgInVuaWNvZGUvdW1pc2MuaCIKQEAgLTE1Niw3ICsxNTgsNyBAQCBjbGFzcyBDb2xsYXRp
b25LZXk7CiAqIEBzZWUgICAgICAgICBDb2xsYXRpb25LZXkKICogQHNlZSAgICAgICAgIENvbGxh
dGlvbkVsZW1lbnRJdGVyYXRvcgogKiBAc2VlICAgICAgICAgTG9jYWxlCi0qIEBzZWUgICAgICAg
ICBOb3JtYWxpemVyCisqIEBzZWUgICAgICAgICBOb3JtYWxpemVyMgogKiBAdmVyc2lvbiAgICAg
Mi4wIDExLzE1LzAxCiAqLwogCkBAIC0xOTksNiArMjAxLDkgQEAgcHVibGljOgogICAgICAgICBJ
REVOVElDQUwgID0gVUNPTF9JREVOVElDQUwgIC8vIDE1CiAgICAgfTsKIAorCisgICAgLy8gQ2Fu
bm90IHVzZSAjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSSBmb3IgdGhlIGZvbGxvd2luZywg
aXQgaXMKKyAgICAvLyB1c2VkIGJ5IHZpcnR1YWwgbWV0aG9kcyB0aGF0IGNhbm5vdCBoYXZlIHRo
YXQgY29uZGl0aW9uYWwuCiAgICAgLyoqCiAgICAgICogTEVTUyBpcyByZXR1cm5lZCBpZiBzb3Vy
Y2Ugc3RyaW5nIGlzIGNvbXBhcmVkIHRvIGJlIGxlc3MgdGhhbiB0YXJnZXQKICAgICAgKiBzdHJp
bmcgaW4gdGhlIGNvbXBhcmUoKSBtZXRob2QuCkBAIC0zODgsOCArMzkzLDggQEAgcHVibGljOgog
ICAgICAqIGlzIGxlc3MgdGhhbiwgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGFub3RoZXIgc3Ry
aW5nIGFycmF5LgogICAgICAqIDxwPkV4YW1wbGUgb2YgdXNlOgogICAgICAqIDxwcmU+Ci0gICAg
ICogLiAgICAgICBVQ2hhciBBQkNbXSA9IHsweDQxLCAweDQyLCAweDQzLCAwfTsgIC8vID0gIkFC
QyIKLSAgICAgKiAuICAgICAgIFVDaGFyIGFiY1tdID0gezB4NjEsIDB4NjIsIDB4NjMsIDB9OyAg
Ly8gPSAiYWJjIgorICAgICAqIC4gICAgICAgY2hhcjE2X3QgQUJDW10gPSB7MHg0MSwgMHg0Miwg
MHg0MywgMH07ICAvLyA9ICJBQkMiCisgICAgICogLiAgICAgICBjaGFyMTZfdCBhYmNbXSA9IHsw
eDYxLCAweDYyLCAweDYzLCAwfTsgIC8vID0gImFiYyIKICAgICAgKiAuICAgICAgIFVFcnJvckNv
ZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAqIC4gICAgICAgQ29sbGF0b3IgKm15Q29s
bGF0aW9uID0KICAgICAgKiAuICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yOjpjcmVh
dGVJbnN0YW5jZShMb2NhbGU6OmdldFVTKCksIHN0YXR1cyk7CkBAIC00MTUsOCArNDIwLDggQEAg
cHVibGljOgogICAgICAqICAgICAgICAgdGFyZ2V0CiAgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIu
NiB1c2UgdGhlIG92ZXJsb2FkIHdpdGggVUVycm9yQ29kZSAmCiAgICAgICovCi0gICAgdmlydHVh
bCBFQ29tcGFyaXNvblJlc3VsdCBjb21wYXJlKGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludDMyX3Qg
c291cmNlTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBVQ2hhciogdGFyZ2V0LCBpbnQzMl90IHRhcmdldExlbmd0aCkKKyAgICB2aXJ0dWFsIEVDb21w
YXJpc29uUmVzdWx0IGNvbXBhcmUoY29uc3QgY2hhcjE2X3QqIHNvdXJjZSwgaW50MzJfdCBzb3Vy
Y2VMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIxNl90KiB0YXJnZXQsIGludDMyX3QgdGFyZ2V0TGVuZ3RoKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdDsKIAogICAgIC8qKgpAQCAtNDM1LDggKzQ0MCw4IEBA
IHB1YmxpYzoKICAgICAgKiB0aGFuIHRhcmdldAogICAgICAqIEBzdGFibGUgSUNVIDIuNgogICAg
ICAqLwotICAgIHZpcnR1YWwgVUNvbGxhdGlvblJlc3VsdCBjb21wYXJlKGNvbnN0IFVDaGFyKiBz
b3VyY2UsIGludDMyX3Qgc291cmNlTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBVQ2hhciogdGFyZ2V0LCBpbnQzMl90IHRhcmdldExlbmd0aCwKKyAg
ICB2aXJ0dWFsIFVDb2xsYXRpb25SZXN1bHQgY29tcGFyZShjb25zdCBjaGFyMTZfdCogc291cmNl
LCBpbnQzMl90IHNvdXJjZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhcjE2X3QqIHRhcmdldCwgaW50MzJfdCB0YXJnZXRMZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cykgY29u
c3QgPSAwOwogCiAgICAgLyoqCkBAIC00NzksNyArNDg0LDcgQEAgcHVibGljOgogICAgICAqIGdl
bmVyYXRlZCBzb3J0IGtleXMuCiAgICAgICogSWYgdGhlIHNvdXJjZSBzdHJpbmcgaXMgbnVsbCwg
YSBudWxsIGNvbGxhdGlvbiBrZXkgd2lsbCBiZSByZXR1cm5lZC4KICAgICAgKgotICAgICAqIE5v
dGUgdGhhdCBzb3J0IGtleXMgYXJlIG9mdGVuIGxlc3MgZWZmaWNpZW50IHRoYW4gc2ltcGx5IGRv
aW5nIGNvbXBhcmlzb24uICAKKyAgICAgKiBOb3RlIHRoYXQgc29ydCBrZXlzIGFyZSBvZnRlbiBs
ZXNzIGVmZmljaWVudCB0aGFuIHNpbXBseSBkb2luZyBjb21wYXJpc29uLgogICAgICAqIEZvciBt
b3JlIGRldGFpbHMsIHNlZSB0aGUgSUNVIFVzZXIgR3VpZGUuCiAgICAgICoKICAgICAgKiBAcGFy
YW0gc291cmNlIHRoZSBzb3VyY2Ugc3RyaW5nIHRvIGJlIHRyYW5zZm9ybWVkIGludG8gYSBzb3J0
IGtleS4KQEAgLTUwMSw3ICs1MDYsNyBAQCBwdWJsaWM6CiAgICAgICogZ2VuZXJhdGVkIHNvcnQg
a2V5cy4KICAgICAgKiA8cD5JZiB0aGUgc291cmNlIHN0cmluZyBpcyBudWxsLCBhIG51bGwgY29s
bGF0aW9uIGtleSB3aWxsIGJlIHJldHVybmVkLgogICAgICAqCi0gICAgICogTm90ZSB0aGF0IHNv
cnQga2V5cyBhcmUgb2Z0ZW4gbGVzcyBlZmZpY2llbnQgdGhhbiBzaW1wbHkgZG9pbmcgY29tcGFy
aXNvbi4gIAorICAgICAqIE5vdGUgdGhhdCBzb3J0IGtleXMgYXJlIG9mdGVuIGxlc3MgZWZmaWNp
ZW50IHRoYW4gc2ltcGx5IGRvaW5nIGNvbXBhcmlzb24uCiAgICAgICogRm9yIG1vcmUgZGV0YWls
cywgc2VlIHRoZSBJQ1UgVXNlciBHdWlkZS4KICAgICAgKgogICAgICAqIEBwYXJhbSBzb3VyY2Ug
dGhlIHNvdXJjZSBzdHJpbmcgdG8gYmUgdHJhbnNmb3JtZWQgaW50byBhIHNvcnQga2V5LgpAQCAt
NTEyLDcgKzUxNyw3IEBAIHB1YmxpYzoKICAgICAgKiBAc2VlIENvbGxhdGlvbktleSNjb21wYXJl
CiAgICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAgICovCi0gICAgdmlydHVhbCBDb2xsYXRpb25L
ZXkmIGdldENvbGxhdGlvbktleShjb25zdCBVQ2hhcipzb3VyY2UsCisgICAgdmlydHVhbCBDb2xs
YXRpb25LZXkmIGdldENvbGxhdGlvbktleShjb25zdCBjaGFyMTZfdCpzb3VyY2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNvdXJjZUxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdGlvbktleSYg
a2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29k
ZSYgc3RhdHVzKSBjb25zdCA9IDA7CkBAIC02MTYsNyArNjIxLDcgQEAgcHVibGljOgogICAgICAq
IEBzZWUgQ29sbGF0b3Ijc2V0UmVvcmRlckNvZGVzCiAgICAgICogQHNlZSBVU2NyaXB0Q29kZQog
ICAgICAqIEBzZWUgVUNvbFJlb3JkZXJDb2RlCi0gICAgICogQHN0YWJsZSBJQ1UgNC44IAorICAg
ICAqIEBzdGFibGUgSUNVIDQuOAogICAgICAqLwogICAgICB2aXJ0dWFsIGludDMyX3QgZ2V0UmVv
cmRlckNvZGVzKGludDMyX3QgKmRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCBkZXN0Q2FwYWNpdHksCkBAIC02MjYsNyArNjMxLDcgQEAgcHVibGljOgog
ICAgICAqIFNldHMgdGhlIG9yZGVyaW5nIG9mIHNjcmlwdHMgZm9yIHRoaXMgY29sbGF0b3IuCiAg
ICAgICoKICAgICAgKiA8cD5UaGUgcmVvcmRlcmluZyBjb2RlcyBhcmUgYSBjb21iaW5hdGlvbiBv
ZiBzY3JpcHQgY29kZXMgYW5kIHJlb3JkZXIgY29kZXMuCi0gICAgICogQHBhcmFtIHJlb3JkZXJD
b2RlcyBBbiBhcnJheSBvZiBzY3JpcHQgY29kZXMgaW4gdGhlIG5ldyBvcmRlci4gVGhpcyBjYW4g
YmUgTlVMTCBpZiB0aGUgCisgICAgICogQHBhcmFtIHJlb3JkZXJDb2RlcyBBbiBhcnJheSBvZiBz
Y3JpcHQgY29kZXMgaW4gdGhlIG5ldyBvcmRlci4gVGhpcyBjYW4gYmUgTlVMTCBpZiB0aGUKICAg
ICAgKiBsZW5ndGggaXMgYWxzbyBzZXQgdG8gMC4gQW4gZW1wdHkgYXJyYXkgd2lsbCBjbGVhciBh
bnkgcmVvcmRlcmluZyBjb2RlcyBvbiB0aGUgY29sbGF0b3IuCiAgICAgICogQHBhcmFtIHJlb3Jk
ZXJDb2Rlc0xlbmd0aCBUaGUgbGVuZ3RoIG9mIHJlb3JkZXJDb2Rlcy4KICAgICAgKiBAcGFyYW0g
c3RhdHVzIGVycm9yIGNvZGUKQEAgLTYzNSw3ICs2NDAsNyBAQCBwdWJsaWM6CiAgICAgICogQHNl
ZSBDb2xsYXRvciNnZXRFcXVpdmFsZW50UmVvcmRlckNvZGVzCiAgICAgICogQHNlZSBVU2NyaXB0
Q29kZQogICAgICAqIEBzZWUgVUNvbFJlb3JkZXJDb2RlCi0gICAgICogQHN0YWJsZSBJQ1UgNC44
IAorICAgICAqIEBzdGFibGUgSUNVIDQuOAogICAgICAqLwogICAgICB2aXJ0dWFsIHZvaWQgc2V0
UmVvcmRlckNvZGVzKGNvbnN0IGludDMyX3QqIHJlb3JkZXJDb2RlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHJlb3JkZXJDb2Rlc0xlbmd0aCwKQEAgLTY0Nywx
MSArNjUyLDExIEBAIHB1YmxpYzoKICAgICAgKiBCZWdpbm5pbmcgd2l0aCBJQ1UgNTUsIHNjcmlw
dHMgb25seSByZW9yZGVyIHRvZ2V0aGVyIGlmIHRoZXkgYXJlIHByaW1hcnktZXF1YWwsCiAgICAg
ICogZm9yIGV4YW1wbGUgSGlyYWdhbmEgYW5kIEthdGFrYW5hLgogICAgICAqCi0gICAgICogQHBh
cmFtIHJlb3JkZXJDb2RlIFRoZSByZW9yZGVyIGNvZGUgdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbmNl
IGZvci4gCisgICAgICogQHBhcmFtIHJlb3JkZXJDb2RlIFRoZSByZW9yZGVyIGNvZGUgdG8gZGV0
ZXJtaW5lIGVxdWl2YWxlbmNlIGZvci4KICAgICAgKiBAcGFyYW0gZGVzdCBUaGUgYXJyYXkgdG8g
ZmlsbCB3aXRoIHRoZSBzY3JpcHQgZXF1aXZhbGVuY2UgcmVvcmRlcmluZyBjb2Rlcy4KLSAgICAg
KiBAcGFyYW0gZGVzdENhcGFjaXR5IFRoZSBsZW5ndGggb2YgZGVzdC4gSWYgaXQgaXMgMCwgdGhl
biBkZXN0IG1heSBiZSBOVUxMIGFuZCB0aGUgCisgICAgICogQHBhcmFtIGRlc3RDYXBhY2l0eSBU
aGUgbGVuZ3RoIG9mIGRlc3QuIElmIGl0IGlzIDAsIHRoZW4gZGVzdCBtYXkgYmUgTlVMTCBhbmQg
dGhlCiAgICAgICogZnVuY3Rpb24gd2lsbCBvbmx5IHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBy
ZXN1bHQgd2l0aG91dCB3cml0aW5nIGFueSBjb2RlcyAocHJlLWZsaWdodGluZykuCi0gICAgICog
QHBhcmFtIHN0YXR1cyBBIHJlZmVyZW5jZSB0byBhbiBlcnJvciBjb2RlIHZhbHVlLCB3aGljaCBt
dXN0IG5vdCBpbmRpY2F0ZSAKKyAgICAgKiBAcGFyYW0gc3RhdHVzIEEgcmVmZXJlbmNlIHRvIGFu
IGVycm9yIGNvZGUgdmFsdWUsIHdoaWNoIG11c3Qgbm90IGluZGljYXRlCiAgICAgICogYSBmYWls
dXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KICAgICAgKiBAcmV0dXJuIFRoZSBsZW5ndGgg
b2YgdGhlIG9mIHRoZSByZW9yZGVyaW5nIGNvZGUgZXF1aXZhbGVuY2UgYXJyYXkuCiAgICAgICog
QHNlZSB1Y29sX3NldFJlb3JkZXJDb2RlcwpAQCAtNjU5LDcgKzY2NCw3IEBAIHB1YmxpYzoKICAg
ICAgKiBAc2VlIENvbGxhdG9yI3NldFJlb3JkZXJDb2RlcwogICAgICAqIEBzZWUgVVNjcmlwdENv
ZGUKICAgICAgKiBAc2VlIFVDb2xSZW9yZGVyQ29kZQotICAgICAqIEBzdGFibGUgSUNVIDQuOCAK
KyAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KICAgICBzdGF0aWMgaW50MzJfdCBVX0VY
UE9SVDIgZ2V0RXF1aXZhbGVudFJlb3JkZXJDb2RlcyhpbnQzMl90IHJlb3JkZXJDb2RlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiBkZXN0LApAQCAtNjY3LDcgKzY3
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29k
ZSYgc3RhdHVzKTsKIAogICAgIC8qKgotICAgICAqIEdldCBuYW1lIG9mIHRoZSBvYmplY3QgZm9y
IHRoZSBkZXNpcmVkIExvY2FsZSwgaW4gdGhlIGRlc2lyZWQgbGFuZ2F1Z2UKKyAgICAgKiBHZXQg
bmFtZSBvZiB0aGUgb2JqZWN0IGZvciB0aGUgZGVzaXJlZCBMb2NhbGUsIGluIHRoZSBkZXNpcmVk
IGxhbmd1YWdlCiAgICAgICogQHBhcmFtIG9iamVjdExvY2FsZSBtdXN0IGJlIGZyb20gZ2V0QXZh
aWxhYmxlTG9jYWxlcwogICAgICAqIEBwYXJhbSBkaXNwbGF5TG9jYWxlIHNwZWNpZmllcyB0aGUg
ZGVzaXJlZCBsb2NhbGUgZm9yIG91dHB1dAogICAgICAqIEBwYXJhbSBuYW1lIHRoZSBmaWxsLWlu
IHBhcmFtZXRlciBvZiB0aGUgcmV0dXJuIHZhbHVlCkBAIC02ODAsNyArNjg1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5n
JiBuYW1lKTsKIAogICAgIC8qKgotICAgICogR2V0IG5hbWUgb2YgdGhlIG9iamVjdCBmb3IgdGhl
IGRlc2lyZWQgTG9jYWxlLCBpbiB0aGUgbGFuZ2F1Z2Ugb2YgdGhlCisgICAgKiBHZXQgbmFtZSBv
ZiB0aGUgb2JqZWN0IGZvciB0aGUgZGVzaXJlZCBMb2NhbGUsIGluIHRoZSBsYW5ndWFnZSBvZiB0
aGUKICAgICAqIGRlZmF1bHQgbG9jYWxlLgogICAgICogQHBhcmFtIG9iamVjdExvY2FsZSBtdXN0
IGJlIGZyb20gZ2V0QXZhaWxhYmxlTG9jYWxlcwogICAgICogQHBhcmFtIG5hbWUgdGhlIGZpbGwt
aW4gcGFyYW1ldGVyIG9mIHRoZSByZXR1cm4gdmFsdWUKQEAgLTkwNiw3ICs5MTEsNyBAQCBwdWJs
aWM6CiAgICAgICogdGhlIHRvcCBvZiBvbmUgb2YgdGhlIHN1cHBvcnRlZCByZW9yZGVyaW5nIGdy
b3VwcywKICAgICAgKiBhbmQgaXQgbXVzdCBub3QgYmUgYmV5b25kIHRoZSBsYXN0IG9mIHRob3Nl
IGdyb3Vwcy4KICAgICAgKiBTZWUgc2V0TWF4VmFyaWFibGUoKS4KLSAgICAgKiBAcGFyYW0gdmFy
VG9wIG9uZSBvciBtb3JlIChpZiBjb250cmFjdGlvbikgVUNoYXJzIHRvIHdoaWNoIHRoZSB2YXJp
YWJsZSB0b3Agc2hvdWxkIGJlIHNldAorICAgICAqIEBwYXJhbSB2YXJUb3Agb25lIG9yIG1vcmUg
KGlmIGNvbnRyYWN0aW9uKSBjaGFyMTZfdHMgdG8gd2hpY2ggdGhlIHZhcmlhYmxlIHRvcCBzaG91
bGQgYmUgc2V0CiAgICAgICogQHBhcmFtIGxlbiBsZW5ndGggb2YgdmFyaWFibGUgdG9wIHN0cmlu
Zy4gSWYgLTEgaXQgaXMgY29uc2lkZXJlZCB0byBiZSB6ZXJvIHRlcm1pbmF0ZWQuCiAgICAgICog
QHBhcmFtIHN0YXR1cyBlcnJvciBjb2RlLiBJZiBlcnJvciBjb2RlIGlzIHNldCwgdGhlIHJldHVy
biB2YWx1ZSBpcyB1bmRlZmluZWQuIEVycm9ycyBzZXQgYnkgdGhpcyBmdW5jdGlvbiBhcmU6IDxi
cj4KICAgICAgKiAgICBVX0NFX05PVF9GT1VORF9FUlJPUiBpZiBtb3JlIHRoYW4gb25lIGNoYXJh
Y3RlciB3YXMgcGFzc2VkIGFuZCB0aGVyZSBpcyBubyBzdWNoIGNvbnRyYWN0aW9uPGJyPgpAQCAt
OTE1LDcgKzkyMCw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuIHZhcmlhYmxlIHRvcCBwcmlt
YXJ5IHdlaWdodAogICAgICAqIEBkZXByZWNhdGVkIElDVSA1MyBDYWxsIHNldE1heFZhcmlhYmxl
KCkgaW5zdGVhZC4KICAgICAgKi8KLSAgICB2aXJ0dWFsIHVpbnQzMl90IHNldFZhcmlhYmxlVG9w
KGNvbnN0IFVDaGFyICp2YXJUb3AsIGludDMyX3QgbGVuLCBVRXJyb3JDb2RlICZzdGF0dXMpID0g
MDsKKyAgICB2aXJ0dWFsIHVpbnQzMl90IHNldFZhcmlhYmxlVG9wKGNvbnN0IGNoYXIxNl90ICp2
YXJUb3AsIGludDMyX3QgbGVuLCBVRXJyb3JDb2RlICZzdGF0dXMpID0gMDsKIAogICAgIC8qKgog
ICAgICAqIFNldHMgdGhlIHZhcmlhYmxlIHRvcCB0byB0aGUgcHJpbWFyeSB3ZWlnaHQgb2YgdGhl
IHNwZWNpZmllZCBzdHJpbmcuCkBAIC05MjQsNyArOTI5LDcgQEAgcHVibGljOgogICAgICAqIHRo
ZSB0b3Agb2Ygb25lIG9mIHRoZSBzdXBwb3J0ZWQgcmVvcmRlcmluZyBncm91cHMsCiAgICAgICog
YW5kIGl0IG11c3Qgbm90IGJlIGJleW9uZCB0aGUgbGFzdCBvZiB0aG9zZSBncm91cHMuCiAgICAg
ICogU2VlIHNldE1heFZhcmlhYmxlKCkuCi0gICAgICogQHBhcmFtIHZhclRvcCBhIFVuaWNvZGVT
dHJpbmcgc2l6ZSAxIG9yIG1vcmUgKGlmIGNvbnRyYWN0aW9uKSBvZiBVQ2hhcnMgdG8gd2hpY2gg
dGhlIHZhcmlhYmxlIHRvcCBzaG91bGQgYmUgc2V0CisgICAgICogQHBhcmFtIHZhclRvcCBhIFVu
aWNvZGVTdHJpbmcgc2l6ZSAxIG9yIG1vcmUgKGlmIGNvbnRyYWN0aW9uKSBvZiBjaGFyMTZfdHMg
dG8gd2hpY2ggdGhlIHZhcmlhYmxlIHRvcCBzaG91bGQgYmUgc2V0CiAgICAgICogQHBhcmFtIHN0
YXR1cyBlcnJvciBjb2RlLiBJZiBlcnJvciBjb2RlIGlzIHNldCwgdGhlIHJldHVybiB2YWx1ZSBp
cyB1bmRlZmluZWQuIEVycm9ycyBzZXQgYnkgdGhpcyBmdW5jdGlvbiBhcmU6IDxicj4KICAgICAg
KiAgICBVX0NFX05PVF9GT1VORF9FUlJPUiBpZiBtb3JlIHRoYW4gb25lIGNoYXJhY3RlciB3YXMg
cGFzc2VkIGFuZCB0aGVyZSBpcyBubyBzdWNoIGNvbnRyYWN0aW9uPGJyPgogICAgICAqICAgIFVf
SUxMRUdBTF9BUkdVTUVOVF9FUlJPUiBpZiB0aGUgdmFyaWFibGUgdG9wIGlzIGJleW9uZApAQCAt
OTgxLDcgKzk4Niw3IEBAIHB1YmxpYzoKICAgICAgKiBTb3J0IGtleSBieXRlIGFycmF5cyBhcmUg
emVyby10ZXJtaW5hdGVkIGFuZCBjYW4gYmUgY29tcGFyZWQgdXNpbmcKICAgICAgKiBzdHJjbXAo
KS4KICAgICAgKgotICAgICAqIE5vdGUgdGhhdCBzb3J0IGtleXMgYXJlIG9mdGVuIGxlc3MgZWZm
aWNpZW50IHRoYW4gc2ltcGx5IGRvaW5nIGNvbXBhcmlzb24uICAKKyAgICAgKiBOb3RlIHRoYXQg
c29ydCBrZXlzIGFyZSBvZnRlbiBsZXNzIGVmZmljaWVudCB0aGFuIHNpbXBseSBkb2luZyBjb21w
YXJpc29uLgogICAgICAqIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgSUNVIFVzZXIgR3VpZGUu
CiAgICAgICoKICAgICAgKiBAcGFyYW0gc291cmNlIHN0cmluZyB0byBiZSBwcm9jZXNzZWQuCkBA
IC05OTcsMTEgKzEwMDIsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCByZXN1bHRMZW5ndGgpIGNvbnN0ID0gMDsKIAogICAgIC8qKgotICAgICAqIEdl
dCB0aGUgc29ydCBrZXkgYXMgYW4gYXJyYXkgb2YgYnl0ZXMgZnJvbSBhIFVDaGFyIGJ1ZmZlci4K
KyAgICAgKiBHZXQgdGhlIHNvcnQga2V5IGFzIGFuIGFycmF5IG9mIGJ5dGVzIGZyb20gYSBjaGFy
MTZfdCBidWZmZXIuCiAgICAgICogU29ydCBrZXkgYnl0ZSBhcnJheXMgYXJlIHplcm8tdGVybWlu
YXRlZCBhbmQgY2FuIGJlIGNvbXBhcmVkIHVzaW5nCiAgICAgICogc3RyY21wKCkuCiAgICAgICoK
LSAgICAgKiBOb3RlIHRoYXQgc29ydCBrZXlzIGFyZSBvZnRlbiBsZXNzIGVmZmljaWVudCB0aGFu
IHNpbXBseSBkb2luZyBjb21wYXJpc29uLiAgCisgICAgICogTm90ZSB0aGF0IHNvcnQga2V5cyBh
cmUgb2Z0ZW4gbGVzcyBlZmZpY2llbnQgdGhhbiBzaW1wbHkgZG9pbmcgY29tcGFyaXNvbi4KICAg
ICAgKiBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIElDVSBVc2VyIEd1aWRlLgogICAgICAqCiAg
ICAgICogQHBhcmFtIHNvdXJjZSBzdHJpbmcgdG8gYmUgcHJvY2Vzc2VkLgpAQCAtMTAxNSw3ICsx
MDIwLDcgQEAgcHVibGljOgogICAgICAqIEByZXR1cm4gTnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCBm
b3Igc3RvcmluZyB0aGUgc29ydCBrZXkKICAgICAgKiBAc3RhYmxlIElDVSAyLjIKICAgICAgKi8K
LSAgICB2aXJ0dWFsIGludDMyX3QgZ2V0U29ydEtleShjb25zdCBVQ2hhcipzb3VyY2UsIGludDMy
X3Qgc291cmNlTGVuZ3RoLAorICAgIHZpcnR1YWwgaW50MzJfdCBnZXRTb3J0S2V5KGNvbnN0IGNo
YXIxNl90KnNvdXJjZSwgaW50MzJfdCBzb3VyY2VMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCpyZXN1bHQsIGludDMyX3QgcmVzdWx0TGVuZ3RoKSBjb25zdCA9
IDA7CiAKICAgICAvKioKQEAgLTExMTEsMTggKzExMTYsMTggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRMb2NhbGVzKGNvbnN0IExvY2FsZSYgcmVxdWVzdGVkTG9jYWxlLCBjb25zdCBM
b2NhbGUmIHZhbGlkTG9jYWxlLCBjb25zdCBMb2NhbGUmIGFjdHVhbExvY2FsZSk7CiAKICAgICAv
KiogR2V0IHRoZSBzaG9ydCBkZWZpbml0aW9uIHN0cmluZyBmb3IgYSBjb2xsYXRvci4gVGhpcyBp
bnRlcm5hbCBBUEkgaGFydmVzdHMgdGhlIGNvbGxhdG9yJ3MKLSAgICAgKiAgbG9jYWxlIGFuZCB0
aGUgYXR0cmlidXRlIHNldCBhbmQgcHJvZHVjZXMgYSBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBm
b3Igb3BlbmluZyAKKyAgICAgKiAgbG9jYWxlIGFuZCB0aGUgYXR0cmlidXRlIHNldCBhbmQgcHJv
ZHVjZXMgYSBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBmb3Igb3BlbmluZwogICAgICAqICBhIGNv
bGxhdG9yIHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcyB1c2luZyB0aGUgdWNvbF9vcGVuRnJvbVNo
b3J0U3RyaW5nIEFQSS4KICAgICAgKiAgVGhpcyBzdHJpbmcgd2lsbCBiZSBub3JtYWxpemVkLgog
ICAgICAqICBUaGUgc3RydWN0dXJlIGFuZCB0aGUgc3ludGF4IG9mIHRoZSBzdHJpbmcgaXMgZGVm
aW5lZCBpbiB0aGUgIk5hbWluZyBjb2xsYXRvcnMiCi0gICAgICogIHNlY3Rpb24gb2YgdGhlIHVz
ZXJzIGd1aWRlOiAKKyAgICAgKiAgc2VjdGlvbiBvZiB0aGUgdXNlcnMgZ3VpZGU6CiAgICAgICog
IGh0dHA6Ly91c2VyZ3VpZGUuaWN1LXByb2plY3Qub3JnL2NvbGxhdGlvbi9jb25jZXB0cyNUT0Mt
Q29sbGF0b3ItbmFtaW5nLXNjaGVtZQogICAgICAqICBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHBy
ZWZsaWdodGluZy4KLSAgICAgKiAKKyAgICAgKgogICAgICAqICBUaGlzIGlzIGludGVybmFsLCBh
bmQgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoIGRlbGVnYXRlIGNvbnZlcnRlcnMuCiAgICAgICoK
ICAgICAgKiAgQHBhcmFtIGxvY2FsZSBhIGxvY2FsZSB0aGF0IHdpbGwgYXBwZWFyIGFzIGEgY29s
bGF0b3JzIGxvY2FsZSBpbiB0aGUgcmVzdWx0aW5nCi0gICAgICogICAgICAgICAgICAgICAgc2hv
cnQgc3RyaW5nIGRlZmluaXRpb24uIElmIE5VTEwsIHRoZSBsb2NhbGUgd2lsbCBiZSBoYXJ2ZXN0
ZWQgCisgICAgICogICAgICAgICAgICAgICAgc2hvcnQgc3RyaW5nIGRlZmluaXRpb24uIElmIE5V
TEwsIHRoZSBsb2NhbGUgd2lsbCBiZSBoYXJ2ZXN0ZWQKICAgICAgKiAgICAgICAgICAgICAgICBm
cm9tIHRoZSBjb2xsYXRvci4KICAgICAgKiAgQHBhcmFtIGJ1ZmZlciBzcGFjZSB0byBob2xkIHRo
ZSByZXN1bHRpbmcgc3RyaW5nCiAgICAgICogIEBwYXJhbSBjYXBhY2l0eSBjYXBhY2l0eSBvZiB0
aGUgYnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NvbXBhY3RkZWNp
bWFsZm9ybWF0LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2NvbXBhY3RkZWNpbWFsZm9ybWF0
LmgKaW5kZXggYmQ4ZmRiYThlOGYyM2NiYzllN2FhOTFhYjJmNzViOWNlYmNmZWI0MC4uM2ZiZTVk
YTljZWU0YjIzYzQ0YWUyNTVmYmI0MWFmZTAxZDM2YTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9jb21wYWN0ZGVjaW1hbGZvcm1hdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvY29tcGFjdGRlY2ltYWxmb3JtYXQuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIw
MTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVy
bXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgSW50ZXJu
YXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMjAxMi0yMDE2LCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVy
cy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAt
MTIxLDYgKzEyMywyMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmllbGRQb3NpdGlvbiYgcG9zKSBjb25zdDsKIAorICAgIC8qKgorICAgICAqIEZvcm1h
dCBhIGRvdWJsZSBvciBsb25nIG51bWJlciB1c2luZyBiYXNlLTEwIHJlcHJlc2VudGF0aW9uLgor
ICAgICAqCisgICAgICogQHBhcmFtIG51bWJlciAgICBUaGUgdmFsdWUgdG8gYmUgZm9ybWF0dGVk
LgorICAgICAqIEBwYXJhbSBhcHBlbmRUbyAgT3V0cHV0IHBhcmFtZXRlciB0byByZWNlaXZlIHJl
c3VsdC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0byBleGlz
dGluZyBjb250ZW50cy4KKyAgICAgKiBAcGFyYW0gcG9zICAgICAgIE9uIGlucHV0OiBhbiBhbGln
bm1lbnQgZmllbGQsIGlmIGRlc2lyZWQuCisgICAgICogICAgICAgICAgICAgICAgICBPbiBvdXRw
dXQ6IHRoZSBvZmZzZXRzIG9mIHRoZSBhbGlnbm1lbnQgZmllbGQuCisgICAgICogQHBhcmFtIHN0
YXR1cworICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFy
YW1ldGVyLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHZpcnR1YWwgVW5pY29kZVN0
cmluZyYgZm9ybWF0KGRvdWJsZSBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmllbGRQb3NpdGlvbiYgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CisKICAgICAvKioKICAgICAgKiBGb3Jt
YXQgYSBkb3VibGUgb3IgbG9uZyBudW1iZXIgdXNpbmcgYmFzZS0xMCByZXByZXNlbnRhdGlvbi4K
ICAgICAgKiBDdXJyZW50bHkgc2V0cyBzdGF0dXMgdG8gVV9VTlNVUFBPUlRFRF9FUlJPUi4KQEAg
LTE0MCw2ICsxNTksNTYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZpZWxkUG9zaXRpb25JdGVyYXRvciogcG9zSXRlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OwogCisgICAgLyoqCisgICAg
ICogRm9ybWF0IGEgbG9uZyBudW1iZXIgdXNpbmcgYmFzZS0xMCByZXByZXNlbnRhdGlvbi4KKyAg
ICAgKgorICAgICAqIEBwYXJhbSBudW1iZXIgICAgVGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZC4K
KyAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1dCBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSByZXN1
bHQuCisgICAgICogICAgICAgICAgICAgICAgICBSZXN1bHQgaXMgYXBwZW5kZWQgdG8gZXhpc3Rp
bmcgY29udGVudHMuCisgICAgICogQHBhcmFtIHBvcyAgICAgICBPbiBpbnB1dDogYW4gYWxpZ25t
ZW50IGZpZWxkLCBpZiBkZXNpcmVkLgorICAgICAqICAgICAgICAgICAgICAgICAgT24gb3V0cHV0
OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLgorICAgICAqIEByZXR1cm4gICAg
ICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgorICAgICAqIEBzdGFibGUg
SUNVIDU2CisgICAgICovCisgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoaW50MzJf
dCBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmlu
ZyYgYXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3Np
dGlvbiYgcG9zKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIEZvcm1hdCBhIGxvbmcgbnVtYmVy
IHVzaW5nIGJhc2UtMTAgcmVwcmVzZW50YXRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gbnVt
YmVyICAgIFRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQuCisgICAgICogQHBhcmFtIGFwcGVuZFRv
ICBPdXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0LgorICAgICAqICAgICAgICAgICAg
ICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgorICAgICAqIEBw
YXJhbSBwb3MgICAgICAgT24gaW5wdXQ6IGFuIGFsaWdubWVudCBmaWVsZCwgaWYgZGVzaXJlZC4K
KyAgICAgKiAgICAgICAgICAgICAgICAgIE9uIG91dHB1dDogdGhlIG9mZnNldHMgb2YgdGhlIGFs
aWdubWVudCBmaWVsZC4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBw
ZW5kVG8nIHBhcmFtZXRlci4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB2aXJ0dWFs
IFVuaWNvZGVTdHJpbmcmIGZvcm1hdChpbnQzMl90IG51bWJlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uJiBwb3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVzKSBjb25zdDsKKworICAgIC8qKgor
ICAgICAqIEZvcm1hdCBhIGxvbmcgbnVtYmVyIHVzaW5nIGJhc2UtMTAgcmVwcmVzZW50YXRpb24u
CisgICAgICogQ3VycmVudGx5IHNldHMgc3RhdHVzIHRvIFVfVU5TVVBQT1JURURfRVJST1IKKyAg
ICAgKgorICAgICAqIEBwYXJhbSBudW1iZXIgICAgVGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZC4K
KyAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1dCBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSByZXN1
bHQuCisgICAgICogICAgICAgICAgICAgICAgICBSZXN1bHQgaXMgYXBwZW5kZWQgdG8gZXhpc3Rp
bmcgY29udGVudHMuCisgICAgICogQHBhcmFtIHBvc0l0ZXIgICBPbiByZXR1cm4sIGNhbiBiZSB1
c2VkIHRvIGl0ZXJhdGUgb3ZlciBwb3NpdGlvbnMKKyAgICAgKiAgICAgICAgICAgICAgICAgIG9m
IGZpZWxkcyBnZW5lcmF0ZWQgYnkgdGhpcyBmb3JtYXQgY2FsbC4KKyAgICAgKiAgICAgICAgICAg
ICAgICAgIENhbiBiZSBOVUxMLgorICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBhcmFt
IGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCisgICAgICogQHJldHVybiAgICAg
ICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCisgICAgICogQGludGVybmFs
CisgICAgICovCisgICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoaW50MzJfdCBudW1i
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBw
ZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbkl0
ZXJhdG9yKiBwb3NJdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUmIHN0YXR1cykgY29uc3Q7CisKICAgICAvKioKICAgICAgKiBGb3JtYXQgYW4gaW50NjQg
bnVtYmVyIHVzaW5nIGJhc2UtMTAgcmVwcmVzZW50YXRpb24uCiAgICAgICoKQEAgLTE1NSw2ICsy
MjQsMjIgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNv
ZGVTdHJpbmcmIGFwcGVuZFRvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZp
ZWxkUG9zaXRpb24mIHBvcykgY29uc3Q7CiAKKyAgICAvKioKKyAgICAgKiBGb3JtYXQgYW4gaW50
NjQgbnVtYmVyIHVzaW5nIGJhc2UtMTAgcmVwcmVzZW50YXRpb24uCisgICAgICoKKyAgICAgKiBA
cGFyYW0gbnVtYmVyICAgIFRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQuCisgICAgICogQHBhcmFt
IGFwcGVuZFRvICBPdXRwdXQgcGFyYW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0LgorICAgICAqICAg
ICAgICAgICAgICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgor
ICAgICAqIEBwYXJhbSBwb3MgICAgICAgT24gaW5wdXQ6IGFuIGFsaWdubWVudCBmaWVsZCwgaWYg
ZGVzaXJlZC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIE9uIG91dHB1dDogdGhlIG9mZnNldHMg
b2YgdGhlIGFsaWdubWVudCBmaWVsZC4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5j
ZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAg
ICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZvcm1hdChpbnQ2NF90IG51bWJlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uJiBwb3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVzKSBjb25zdDsKKwog
ICAgIC8qKgogICAgICAqIEZvcm1hdCBhbiBpbnQ2NCBudW1iZXIgdXNpbmcgYmFzZS0xMCByZXBy
ZXNlbnRhdGlvbi4KICAgICAgKiBDdXJyZW50bHkgc2V0cyBzdGF0dXMgdG8gVV9VTlNVUFBPUlRF
RF9FUlJPUgpAQCAtMTkwLDcgKzI3NSw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuICAgICAg
ICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4KICAgICAgKiBAaW50ZXJuYWwK
ICAgICAgKi8KLSAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZvcm1hdChjb25zdCBTdHJpbmdQ
aWVjZSAmbnVtYmVyLAorICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyYgZm9ybWF0KFN0cmluZ1Bp
ZWNlIG51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3Ry
aW5nJiBhcHBlbmRUbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBv
c2l0aW9uSXRlcmF0b3IqIHBvc0l0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKQEAgLTIxOSw3ICszMDQsNyBAQCBwdWJsaWM6
CiAgICAgICogRm9ybWF0IGEgZGVjaW1hbCBudW1iZXIuIEN1cnJlbnRseSBzZXRzIHN0YXR1cyB0
byBVX1VOU1VQUE9SVEVEX0VSUk9SLgogICAgICAqIFRoZSBudW1iZXIgaXMgYSBEaWdpdExpc3Qg
d3JhcHBlciBvbnRvIGEgZmxvYXRpbmcgcG9pbnQgZGVjaW1hbCBudW1iZXIuCiAgICAgICogVGhl
IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaW4gTnVtYmVyRm9ybWF0IGNvbnZlcnRzIHRoZSBkZWNp
bWFsIG51bWJlcgotICAgICAqIHRvIGEgZG91YmxlIGFuZCBmb3JtYXRzIHRoYXQuICAKKyAgICAg
KiB0byBhIGRvdWJsZSBhbmQgZm9ybWF0cyB0aGF0LgogICAgICAqCiAgICAgICogQHBhcmFtIG51
bWJlciAgICBUaGUgbnVtYmVyLCBhIERpZ2l0TGlzdCBmb3JtYXQgRGVjaW1hbCBGbG9hdGluZyBQ
b2ludC4KICAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1dCBwYXJhbWV0ZXIgdG8gcmVjZWl2
ZSByZXN1bHQuCkBAIC0yNTIsNyArMzM3LDcgQEAgcHVibGljOgogICAgICAqIENvbXBhY3REZWNp
bWFsRm9ybWF0IGRvZXMgbm90IHN1cHBvcnQgcGFyc2luZy4gVGhpcyBpbXBsZW1lbnRhdGlvbgog
ICAgICAqIHNldHMgc3RhdHVzIHRvIFVfVU5TVVBQT1JURURfRVJST1IKICAgICAgKgotICAgICAq
IEBwYXJhbSB0ZXh0ICAgICAgVW51c2VkLiAKKyAgICAgKiBAcGFyYW0gdGV4dCAgICAgIFVudXNl
ZC4KICAgICAgKiBAcGFyYW0gcmVzdWx0ICAgIERvZXMgbm90IGNoYW5nZS4KICAgICAgKiBAcGFy
YW0gc3RhdHVzICAgIEFsd2F5cyBzZXQgdG8gVV9VTlNVUFBPUlRFRF9FUlJPUi4KICAgICAgKiBA
c3RhYmxlIElDVSA1MQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9jdXJyYW10
LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2N1cnJhbXQuaAppbmRleCBjMzNlNmYxZjgzMzhi
ZGRiNzQ3ZDQ2NGVmN2Y1OGU1MzQ5Y2ExNWFmLi5lMzIxZGY4NjFkMjUxZmQ1MjE3NjIyOWZhYTQ0
OWFlOGJmYjUyZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2N1cnJhbXQu
aAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2N1cnJhbXQuaApAQCAtMSwzICsxLDUgQEAK
Ky8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNl
bnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1s
CiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNiwgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcwpAQCAtNDQsNyArNDYsNyBAQCBjbGFzcyBVX0kxOE5fQVBJ
IEN1cnJlbmN5QW1vdW50OiBwdWJsaWMgTWVhc3VyZSB7CiAgICAgICogaXMgaW52YWxpZCwgdGhl
biB0aGlzIHdpbGwgYmUgc2V0IHRvIGEgZmFpbGluZyB2YWx1ZS4KICAgICAgKiBAc3RhYmxlIElD
VSAzLjAKICAgICAgKi8KLSAgICBDdXJyZW5jeUFtb3VudChjb25zdCBGb3JtYXR0YWJsZSYgYW1v
dW50LCBjb25zdCBVQ2hhciogaXNvQ29kZSwKKyAgICBDdXJyZW5jeUFtb3VudChjb25zdCBGb3Jt
YXR0YWJsZSYgYW1vdW50LCBDb25zdENoYXIxNlB0ciBpc29Db2RlLAogICAgICAgICAgICAgICAg
ICAgIFVFcnJvckNvZGUgJmVjKTsKIAogICAgIC8qKgpAQCAtNTcsNyArNTksNyBAQCBjbGFzcyBV
X0kxOE5fQVBJIEN1cnJlbmN5QW1vdW50OiBwdWJsaWMgTWVhc3VyZSB7CiAgICAgICogdGhlbiB0
aGlzIHdpbGwgYmUgc2V0IHRvIGEgZmFpbGluZyB2YWx1ZS4KICAgICAgKiBAc3RhYmxlIElDVSAz
LjAKICAgICAgKi8KLSAgICBDdXJyZW5jeUFtb3VudChkb3VibGUgYW1vdW50LCBjb25zdCBVQ2hh
ciogaXNvQ29kZSwKKyAgICBDdXJyZW5jeUFtb3VudChkb3VibGUgYW1vdW50LCBDb25zdENoYXIx
NlB0ciBpc29Db2RlLAogICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJmVjKTsKIAogICAg
IC8qKgpAQCAtMTEzLDE0ICsxMTUsMTQgQEAgY2xhc3MgVV9JMThOX0FQSSBDdXJyZW5jeUFtb3Vu
dDogcHVibGljIE1lYXN1cmUgewogICAgICAqIFJldHVybiB0aGUgSVNPIGN1cnJlbmN5IGNvZGUg
b2YgdGhpcyBvYmplY3QuCiAgICAgICogQHN0YWJsZSBJQ1UgMy4wCiAgICAgICovCi0gICAgaW5s
aW5lIGNvbnN0IFVDaGFyKiBnZXRJU09DdXJyZW5jeSgpIGNvbnN0OworICAgIGlubGluZSBjb25z
dCBjaGFyMTZfdCogZ2V0SVNPQ3VycmVuY3koKSBjb25zdDsKIH07CiAKIGlubGluZSBjb25zdCBD
dXJyZW5jeVVuaXQmIEN1cnJlbmN5QW1vdW50OjpnZXRDdXJyZW5jeSgpIGNvbnN0IHsKICAgICBy
ZXR1cm4gKGNvbnN0IEN1cnJlbmN5VW5pdCYpIGdldFVuaXQoKTsKIH0KIAotaW5saW5lIGNvbnN0
IFVDaGFyKiBDdXJyZW5jeUFtb3VudDo6Z2V0SVNPQ3VycmVuY3koKSBjb25zdCB7CitpbmxpbmUg
Y29uc3QgY2hhcjE2X3QqIEN1cnJlbmN5QW1vdW50OjpnZXRJU09DdXJyZW5jeSgpIGNvbnN0IHsK
ICAgICByZXR1cm4gZ2V0Q3VycmVuY3koKS5nZXRJU09DdXJyZW5jeSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2N1cnJwaW5mLmggYi9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL2N1cnJwaW5mLmgKaW5kZXggOWFkZTk5YTA5ZTU5YWRhM2NjYjZhY2E4MTFhNGNiYzNk
OTU1OTczZi4uMzNjMThiMDhmMjRjNjYzOWMyMzdlZDZjMDczMDI5ZThlNDI3MjJmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9jdXJycGluZi5oCisrKyBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvY3VycnBpbmYuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxh
dGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNl
OiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDExLCBJbnRlcm5hdGlvbmFsIEJ1
c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9u
IGFuZCAgICAgICAgICoKICAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgogICovCkBAIC0xOTEsNiArMTkzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBEZWNpbWFsRm9ybWF0OworICAgIGZyaWVuZCBjbGFzcyBEZWNpbWFsRm9y
bWF0SW1wbDsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBMb2NhbGUmIGxvYywgVUVycm9y
Q29kZSYgc3RhdHVzKTsKICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9j
dXJydW5pdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9jdXJydW5pdC5oCmluZGV4IGQ3OTgz
NmJiNzQ5NTI2NGViYWIxOTIxOWM2NTZjYmM1MjRhZGJjYjcuLjVhZDIzYjFmNThhM2E4NWM1MjA4
YTljYmFiMmZiMjZjNDNjZjI3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
Y3VycnVuaXQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2N1cnJ1bml0LmgKQEAgLTEs
MyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJz
LgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5
cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMTQs
IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKQEAgLTI2LDcgKzI4LDcgQEAgVV9OQU1F
U1BBQ0VfQkVHSU4KIAogLyoqCiAgKiBBIHVuaXQgb2YgY3VycmVuY3ksIHN1Y2ggYXMgVVNEIChV
LlMuIGRvbGxhcnMpIG9yIEpQWSAoSmFwYW5lc2UKLSAqIHllbikuICBUaGlzIGNsYXNzIGlzIGEg
dGhpbiB3cmFwcGVyIG92ZXIgYSBVQ2hhciBzdHJpbmcgdGhhdAorICogeWVuKS4gIFRoaXMgY2xh
c3MgaXMgYSB0aGluIHdyYXBwZXIgb3ZlciBhIGNoYXIxNl90IHN0cmluZyB0aGF0CiAgKiBzdWJj
bGFzc2VzIE1lYXN1cmVVbml0LCBmb3IgdXNlIHdpdGggTWVhc3VyZSBhbmQgTWVhc3VyZUZvcm1h
dC4KICAqCiAgKiBAYXV0aG9yIEFsYW4gTGl1CkBAIC0zNCw2ICszNiwxMiBAQCBVX05BTUVTUEFD
RV9CRUdJTgogICovCiBjbGFzcyBVX0kxOE5fQVBJIEN1cnJlbmN5VW5pdDogcHVibGljIE1lYXN1
cmVVbml0IHsKICBwdWJsaWM6CisgICAgLyoqCisgICAgICogRGVmYXVsdCBjb25zdHJ1Y3Rvci4g
IEluaXRpYWxpemVzIGN1cnJlbmN5IGNvZGUgdG8gIlhYWCIgKG5vIGN1cnJlbmN5KS4KKyAgICAg
KiBAZHJhZnQgSUNVIDYwCisgICAgICovCisgICAgQ3VycmVuY3lVbml0KCk7CisKICAgICAvKioK
ICAgICAgKiBDb25zdHJ1Y3QgYW4gb2JqZWN0IHdpdGggdGhlIGdpdmVuIElTTyBjdXJyZW5jeSBj
b2RlLgogICAgICAqIEBwYXJhbSBpc29Db2RlIHRoZSAzLWxldHRlciBJU08gNDIxNyBjdXJyZW5j
eSBjb2RlOyBtdXN0IG5vdCBiZQpAQCAtNDIsNyArNTAsNyBAQCBjbGFzcyBVX0kxOE5fQVBJIEN1
cnJlbmN5VW5pdDogcHVibGljIE1lYXN1cmVVbml0IHsKICAgICAgKiB0aGVuIHRoaXMgd2lsbCBi
ZSBzZXQgdG8gYSBmYWlsaW5nIHZhbHVlLgogICAgICAqIEBzdGFibGUgSUNVIDMuMAogICAgICAq
LwotICAgIEN1cnJlbmN5VW5pdChjb25zdCBVQ2hhciogaXNvQ29kZSwgVUVycm9yQ29kZSAmZWMp
OworICAgIEN1cnJlbmN5VW5pdChDb25zdENoYXIxNlB0ciBpc29Db2RlLCBVRXJyb3JDb2RlICZl
Yyk7CiAKICAgICAvKioKICAgICAgKiBDb3B5IGNvbnN0cnVjdG9yCkBAIC01MCw2ICs1OCwxOCBA
QCBjbGFzcyBVX0kxOE5fQVBJIEN1cnJlbmN5VW5pdDogcHVibGljIE1lYXN1cmVVbml0IHsKICAg
ICAgKi8KICAgICBDdXJyZW5jeVVuaXQoY29uc3QgQ3VycmVuY3lVbml0JiBvdGhlcik7CiAKKyNp
Zm5kZWYgVV9ISURFX0RSQUZUX0FQSQorICAgIC8qKgorICAgICAqIENvcHkgY29uc3RydWN0b3Ig
ZnJvbSBNZWFzdXJlVW5pdC4gVGhpcyBjb25zdHJ1Y3RvciBhbGxvd3MgeW91IHRvCisgICAgICog
cmVzdG9yZSBhIEN1cnJlbmN5VW5pdCB0aGF0IHdhcyBzbGljZWQgdG8gTWVhc3VyZVVuaXQuCisg
ICAgICoKKyAgICAgKiBAcGFyYW0gbWVhc3VyZVVuaXQgVGhlIE1lYXN1cmVVbml0IHRvIGNvcHkg
ZnJvbS4KKyAgICAgKiBAcGFyYW0gZWMgU2V0IHRvIGEgZmFpbGluZyB2YWx1ZSBpZiB0aGUgTWVh
c3VyZVVuaXQgaXMgbm90IGEgY3VycmVuY3kuCisgICAgICogQGRyYWZ0IElDVSA2MAorICAgICAq
LworICAgIEN1cnJlbmN5VW5pdChjb25zdCBNZWFzdXJlVW5pdCYgbWVhc3VyZVVuaXQsIFVFcnJv
ckNvZGUgJmVjKTsKKyNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLworCiAgICAgLyoqCiAg
ICAgICogQXNzaWdubWVudCBvcGVyYXRvcgogICAgICAqIEBzdGFibGUgSUNVIDMuMApAQCAtOTEs
MTYgKzExMSwxNiBAQCBjbGFzcyBVX0kxOE5fQVBJIEN1cnJlbmN5VW5pdDogcHVibGljIE1lYXN1
cmVVbml0IHsKICAgICAgKiBSZXR1cm4gdGhlIElTTyBjdXJyZW5jeSBjb2RlIG9mIHRoaXMgb2Jq
ZWN0LgogICAgICAqIEBzdGFibGUgSUNVIDMuMAogICAgICAqLwotICAgIGlubGluZSBjb25zdCBV
Q2hhciogZ2V0SVNPQ3VycmVuY3koKSBjb25zdDsKKyAgICBpbmxpbmUgY29uc3QgY2hhcjE2X3Qq
IGdldElTT0N1cnJlbmN5KCkgY29uc3Q7CiAKICBwcml2YXRlOgogICAgIC8qKgogICAgICAqIFRo
ZSBJU08gNDIxNyBjb2RlIG9mIHRoaXMgb2JqZWN0LgogICAgICAqLwotICAgIFVDaGFyIGlzb0Nv
ZGVbNF07CisgICAgY2hhcjE2X3QgaXNvQ29kZVs0XTsKIH07CiAKLWlubGluZSBjb25zdCBVQ2hh
ciogQ3VycmVuY3lVbml0OjpnZXRJU09DdXJyZW5jeSgpIGNvbnN0IHsKK2lubGluZSBjb25zdCBj
aGFyMTZfdCogQ3VycmVuY3lVbml0OjpnZXRJU09DdXJyZW5jeSgpIGNvbnN0IHsKICAgICByZXR1
cm4gaXNvQ29kZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9kYXRl
Zm10LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RhdGVmbXQuaAppbmRleCA5ODNmMTM2MzVj
NWFjNDdiN2YyNmQ4ZmE3N2M2NTYyZDk2OTVlMDdmLi4zZGEwNzk3YTA5YmRkYjg2NTMxNjFjYjg2
YTBkZWExOWY5YzdmNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RhdGVm
bXQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RhdGVmbXQuaApAQCAtMSw2ICsxLDgg
QEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBM
aWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5o
dG1sCiAvKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgIENvcHlyaWdodCAoQykgMTk5
Ny0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisgKiAgIENvcHlyaWdodCAo
QykgMTk5Ny0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAgKiAgIENvcnBv
cmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAgKgpAQCAtNTcxLDcgKzU3MywyMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVN0eWxlIHRpbWVTdHlsZSA9IGtEZWZh
dWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IExvY2FsZSYgYUxvY2FsZSA9IExvY2FsZTo6Z2V0RGVmYXVsdCgpKTsKIAotI2lmbmRlZiBVX0hJ
REVfRFJBRlRfQVBJCisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKKyAgICAvKioKKyAgICAg
KiBSZXR1cm5zIHRoZSBiZXN0IHBhdHRlcm4gZ2l2ZW4gYSBza2VsZXRvbiBhbmQgbG9jYWxlLgor
ICAgICAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZQorICAgICAqIEBwYXJhbSBza2VsZXRvbiB0
aGUgc2tlbGV0b24KKyAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciByZXR1cm5lZCBoZXJl
CisgICAgICogQHJldHVybiB0aGUgYmVzdCBwYXR0ZXJuLgorICAgICAqIEBpbnRlcm5hbCBGb3Ig
SUNVIHVzZSBvbmx5LgorICAgICAqLworICAgIHN0YXRpYyBVbmljb2RlU3RyaW5nIGdldEJlc3RQ
YXR0ZXJuKAorICAgICAgICAgICAgY29uc3QgTG9jYWxlICZsb2NhbGUsCisgICAgICAgICAgICBj
b25zdCBVbmljb2RlU3RyaW5nICZza2VsZXRvbiwKKyAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0
YXR1cyk7CisjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KIAogICAgIC8qKgogICAg
ICAqIENyZWF0ZXMgYSBkYXRlL3RpbWUgZm9ybWF0dGVyIGZvciB0aGUgZ2l2ZW4gc2tlbGV0b24g
YW5kIApAQCAtNTg0LDcgKzU5OSw3IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgICAg
b3JkZXIgZm9yIHRoYXQgbG9jYWxlLgogICAgICAqIEBwYXJhbSBzdGF0dXMgICBBbnkgZXJyb3Ig
cmV0dXJuZWQgaGVyZS4KICAgICAgKiBAcmV0dXJuICAgICAgICAgQSBkYXRlL3RpbWUgZm9ybWF0
dGVyIHdoaWNoIHRoZSBjYWxsZXIgb3ducy4KLSAgICAgKiBAZHJhZnQgSUNVIDU1CisgICAgICog
QHN0YWJsZSBJQ1UgNTUKICAgICAgKi8KICAgICBzdGF0aWMgRGF0ZUZvcm1hdCogVV9FWFBPUlQy
IGNyZWF0ZUluc3RhbmNlRm9yU2tlbGV0b24oCiAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3Ry
aW5nJiBza2VsZXRvbiwKQEAgLTYwMSw3ICs2MTYsNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFt
IGxvY2FsZSAgVGhlIGdpdmVuIGxvY2FsZS4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgQW55IGVy
cm9yIHJldHVybmVkIGhlcmUuCiAgICAgICogQHJldHVybiAgICAgICAgIEEgZGF0ZS90aW1lIGZv
cm1hdHRlciB3aGljaCB0aGUgY2FsbGVyIG93bnMuCi0gICAgICogQGRyYWZ0IElDVSA1NQorICAg
ICAqIEBzdGFibGUgSUNVIDU1CiAgICAgICovCiAgICAgc3RhdGljIERhdGVGb3JtYXQqIFVfRVhQ
T1JUMiBjcmVhdGVJbnN0YW5jZUZvclNrZWxldG9uKAogICAgICAgICAgICAgY29uc3QgVW5pY29k
ZVN0cmluZyYgc2tlbGV0b24sCkBAIC02MjAsNyArNjM1LDcgQEAgcHVibGljOgogICAgICAqIEBw
YXJhbSBsb2NhbGUgIFRoZSBnaXZlbiBsb2NhbGUuCiAgICAgICogQHBhcmFtIHN0YXR1cyAgIEFu
eSBlcnJvciByZXR1cm5lZCBoZXJlLgogICAgICAqIEByZXR1cm4gICAgICAgICBBIGRhdGUvdGlt
ZSBmb3JtYXR0ZXIgd2hpY2ggdGhlIGNhbGxlciBvd25zLgotICAgICAqIEBkcmFmdCBJQ1UgNTUK
KyAgICAgKiBAc3RhYmxlIElDVSA1NQogICAgICAqLwogICAgIHN0YXRpYyBEYXRlRm9ybWF0KiBV
X0VYUE9SVDIgY3JlYXRlSW5zdGFuY2VGb3JTa2VsZXRvbigKICAgICAgICAgICAgIENhbGVuZGFy
ICpjYWxlbmRhclRvQWRvcHQsCkBAIC02MjgsNDIgKzY0Myw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGNvbnN0IExvY2FsZSAmbG9jYWxlLAogICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVz
KTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLQotI2lmbmRlZiBVX0hJREVfSU5U
RVJOQUxfQVBJIAotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlcyBhIGRhdGUvdGltZSBmb3JtYXR0
ZXIgZm9yIHRoZSBnaXZlbiBza2VsZXRvbiBhbmQgbG9jYWxlIGFuZAotICAgICAqIHVzZXMgdGhl
IGdpdmVuIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvciB0byBjb252ZXJ0IHRoZSBza2VsZXRvbiB0
bwotICAgICAqIGEgZm9ybWF0IHBhdHRlcm4uIEFzIGNyZWF0aW5nIGEgRGF0ZVRpbWVQYXR0ZXJu
R2VuZXJhdG9yIGlzCi0gICAgICogZXhwZW5zaXZlLCBjYWxsZXJzIGNhbiBzdXBwbHkgaXQgaGVy
ZSAoaWYgdGhleSBhbHJlYWR5IGhhdmUgaXQpIHRvIHNhdmUKLSAgICAgKiB0aGlzIG1ldGhvZCBm
cm9tIGNyZWF0aW5nIGl0cyBvd24uCi0gICAgICoKLSAgICAgKiBAcGFyYW0gc2tlbGV0b24gVGhl
IHNrZWxldG9uIGUuZyAieU1NTU1kLiIgRmllbGRzIGluIHRoZSBza2VsZXRvbiBjYW4KLSAgICAg
KiAgICAgICAgICAgICAgICAgYmUgaW4gYW55IG9yZGVyLCBhbmQgdGhpcyBtZXRob2QgdXNlcyB0
aGUgcHJvdmlkZWQKLSAgICAgKiAgICAgICAgICAgICAgICAgRGF0ZVRpbWVQYXR0ZXJuR2VuZXJh
dG9yIHRvIG1hcCB0aGUgc2tlbGV0b24gdG8gYQotICAgICAqICAgICAgICAgICAgICAgICBwYXR0
ZXJuIHRoYXQgaW5jbHVkZXMgYXBwcm9wcmlhdGUgc2VwYXJhdG9ycyB3aXRoCi0gICAgICogICAg
ICAgICAgICAgICAgIHRoZSBmaWVsZHMgaW4gdGhlIGFwcHJvcHJpYXRlIG9yZGVyLgotICAgICAq
IEBwYXJhbSBsb2NhbGUgIFRoZSBnaXZlbiBsb2NhbGUuCi0gICAgICogQHBhcmFtIGRwbmcgICAg
IFRoZSB1c2VyIHN1cHBsaWVkIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvci4gZHBuZwotICAgICAq
ICAgICAgICAgICAgICAgICBtdXN0IGJlIGNyZWF0ZWQgZm9yIHRoZSBzYW1lIGxvY2FsZSBhcyBs
b2NhbGUuCi0gICAgICogICAgICAgICAgICAgICAgIE1vcmVvdmVyLCB0aGUgY2FsbGVyIG11c3Qg
bm90IG1vZGlmeSBkcG5nIGJldHdlZW4KLSAgICAgKiAgICAgICAgICAgICAgICAgY3JlYXRpbmcg
aXQgYnkgbG9jYWxlIGFuZCBjYWxsaW5nIHRoaXMgbWV0aG9kLgotICAgICAqICAgICAgICAgICAg
ICAgICBBbHRob3VnaCBkcG5nIGlzIGEgbm9uLWNvbnN0IHJlZmVyZW5jZSwgdGhlIGNhbGxlcgot
ICAgICAqICAgICAgICAgICAgICAgICBtdXN0IG5vdCByZWdhcmQgaXQgYXMgYW4gb3V0IG9yIGlu
LW91dCBwYXJhbWV0ZXIuCi0gICAgICogICAgICAgICAgICAgICAgIFRoZSBvbmx5IHJlYXNvbiBk
cG5nIGlzIGEgbm9uLWNvbnN0IHJlZmVyZW5jZSBpcwotICAgICAqICAgICAgICAgICAgICAgICBi
ZWNhdXNlIGl0cyBtZXRob2QsIGdldEJlc3RQYXR0ZXJuLCB3aGljaCBjb252ZXJ0cwotICAgICAq
ICAgICAgICAgICAgICAgICBhIHNrZWxldG9uIHRvIGEgZGF0ZSBmb3JtYXQgcGF0dGVybiBpcyBu
b24tY29uc3QuCi0gICAgICogQHJldHVybiAgICAgICAgIEEgZGF0ZS90aW1lIGZvcm1hdHRlciB3
aGljaCB0aGUgY2FsbGVyIG93bnMuCi0gICAgICogQGludGVybmFsIEZvciBJQ1UgdXNlIG9ubHkK
LSAgICAgKi8KLSAgICBzdGF0aWMgRGF0ZUZvcm1hdCogVV9FWFBPUlQyIGludGVybmFsQ3JlYXRl
SW5zdGFuY2VGb3JTa2VsZXRvbigKLSAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNr
ZWxldG9uLAotICAgICAgICAgICAgY29uc3QgTG9jYWxlICZsb2NhbGUsCi0gICAgICAgICAgICBE
YXRlVGltZVBhdHRlcm5HZW5lcmF0b3IgJmRwbmcsCi0gICAgICAgICAgICBVRXJyb3JDb2RlICZz
dGF0dXMpOwotCi0jZW5kaWYgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogCiAgICAgLyoqCiAg
ICAgICogR2V0cyB0aGUgc2V0IG9mIGxvY2FsZXMgZm9yIHdoaWNoIERhdGVGb3JtYXRzIGFyZSBp
bnN0YWxsZWQuCkBAIC04ODcsNiArODY2LDcgQEAgcHJvdGVjdGVkOgogCiAKIHByaXZhdGU6CisK
ICAgICAvKioKICAgICAgKiBHZXRzIHRoZSBkYXRlL3RpbWUgZm9ybWF0dGVyIHdpdGggdGhlIGdp
dmVuIGZvcm1hdHRpbmcgc3R5bGVzIGZvciB0aGUKICAgICAgKiBnaXZlbiBsb2NhbGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RiYmkuaCBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvZGJiaS5oCmluZGV4IDcxODdjM2MyMGY5ODIzNjQ4ZTVmMzNmMjg5ZTQxNTcwMjVjZjQx
MTQuLmEyYzNkN2Q3NTIzMmU0OGQ2M2I4ZTgyMDMxNzc5ZDgyMjA4ZTUzZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZGJiaS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvZGJiaS5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUs
IEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cu
dW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDYsMjAxMyBJQk0gQ29ycC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZGNmbXRzeW0uaCBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvZGNmbXRzeW0uaAppbmRleCA0NmVmMjIyNDFiMzFjNTg3ODk0NjVlZTk0MWI0
NDAzNmY1MWJjZDlhLi40ZGM2Zjk1MGYyOTRjYTQyNGE5M2UyMjE3MjA3NjcyODBmYTQzOWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RjZm10c3ltLmgKKysrIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS9kY2ZtdHN5bS5oCkBAIC0xLDYgKzEsOCBAQAorLy8gwqkgMjAxNiBh
bmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBv
ZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgotKiAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDE1LCBJbnRlcm5hdGlv
bmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTYsIEludGVy
bmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAg
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC0zMiw3
ICszNCw5IEBACiAKICNpbmNsdWRlICJ1bmljb2RlL3VvYmplY3QuaCIKICNpbmNsdWRlICJ1bmlj
b2RlL2xvY2lkLmgiCisjaW5jbHVkZSAidW5pY29kZS9udW1zeXMuaCIKICNpbmNsdWRlICJ1bmlj
b2RlL3VudW0uaCIKKyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgogCiAvKioKICAqIFxmaWxl
CkBAIC0xNjMsMTIgKzE2NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAqIEBzdGFibGUgSUNVIDQu
NgogICAgICAgICAgKi8KICAgICAgICAga05pbmVEaWdpdFN5bWJvbCwKLSNpZm5kZWYgVV9ISURF
X0RSQUZUX0FQSQogICAgICAgICAvKiogTXVsdGlwbGljYXRpb24gc2lnbi4KLSAgICAgICAgICog
QGRyYWZ0IElDVSA1NAorICAgICAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAgICAgKi8KICAg
ICAgICAga0V4cG9uZW50TXVsdGlwbGljYXRpb25TeW1ib2wsCi0jZW5kaWYgIC8qIFVfSElERV9E
UkFGVF9BUEkgKi8KICAgICAgICAgLyoqIGNvdW50IHN5bWJvbCBjb25zdGFudHMgKi8KICAgICAg
ICAga0Zvcm1hdFN5bWJvbENvdW50ID0ga05pbmVEaWdpdFN5bWJvbCArIDIKICAgICB9OwpAQCAt
MTgzLDYgKzE4NSwyNiBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgRGVjaW1hbEZvcm1hdFN5bWJv
bHMoY29uc3QgTG9jYWxlJiBsb2NhbGUsIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKKyNpZm5kZWYg
VV9ISURFX0RSQUZUX0FQSQorICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBEZWNpbWFsRm9ybWF0
U3ltYm9scyBpbnN0YW5jZSBmb3IgdGhlIGdpdmVuIGxvY2FsZSB3aXRoIGRpZ2l0cyBhbmQgc3lt
Ym9scworICAgICAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIE51bWJlcmluZ1N5c3RlbS4K
KyAgICAgKgorICAgICAqIFRoaXMgY29uc3RydWN0b3IgYmVoYXZlcyBlcXVpdmFsZW50bHkgdG8g
dGhlIG5vcm1hbCBjb25zdHJ1Y3RvciBjYWxsZWQgd2l0aCBhIGxvY2FsZSBoYXZpbmcgYQorICAg
ICAqICJudW1iZXJzPXh4eHgiIGtleXdvcmQgc3BlY2lmeWluZyB0aGUgbnVtYmVyaW5nIHN5c3Rl
bSBieSBuYW1lLgorICAgICAqCisgICAgICogSW4gdGhpcyBjb25zdHJ1Y3RvciwgdGhlIE51bWJl
cmluZ1N5c3RlbSBhcmd1bWVudCB3aWxsIGJlIHVzZWQgZXZlbiBpZiB0aGUgbG9jYWxlIGhhcyBp
dHMgb3duCisgICAgICogIm51bWJlcnM9eHh4eCIga2V5d29yZC4KKyAgICAgKgorICAgICAqIEBw
YXJhbSBsb2NhbGUgICAgVGhlIGxvY2FsZSB0byBnZXQgc3ltYm9scyBmb3IuCisgICAgICogQHBh
cmFtIG5zICAgICAgICBUaGUgbnVtYmVyaW5nIHN5c3RlbS4KKyAgICAgKiBAcGFyYW0gc3RhdHVz
ICAgIElucHV0L291dHB1dCBwYXJhbWV0ZXIsIHNldCB0byBzdWNjZXNzIG9yCisgICAgICogICAg
ICAgICAgICAgICAgICBmYWlsdXJlIGNvZGUgdXBvbiByZXR1cm4uCisgICAgICogQGRyYWZ0IElD
VSA2MAorICAgICAqLworICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzKGNvbnN0IExvY2FsZSYgbG9j
YWxlLCBjb25zdCBOdW1iZXJpbmdTeXN0ZW0mIG5zLCBVRXJyb3JDb2RlJiBzdGF0dXMpOworI2Vu
ZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCisKICAgICAvKioKICAgICAgKiBDcmVhdGUgYSBE
ZWNpbWFsRm9ybWF0U3ltYm9scyBvYmplY3QgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KICAgICAg
KiBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgbm90IGZhaWwuICBJZiB0aGUgcmVzb3VyY2UgZmlsZSBk
YXRhIGlzCkBAIC0zNDUsOCArMzY3LDExIEBAIHByaXZhdGU6CiAgICAgICogQHBhcmFtIHN1Y2Nl
c3MgICAgICAgICAgICAgIElucHV0L291dHB1dCBwYXJhbWV0ZXIsIHNldCB0byBzdWNjZXNzIG9y
CiAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgY29kZSB1cG9uIHJl
dHVybi4KICAgICAgKiBAcGFyYW0gdXNlTGFzdFJlc29ydERhdGEgICAgZGV0ZXJtaW5lIGlmIHVz
ZSBsYXN0IHJlc29ydCBkYXRhCisgICAgICogQHBhcmFtIG5zICAgICAgICAgICAgICAgICAgIFRo
ZSBOdW1iZXJpbmdTeXN0ZW0gdG8gdXNlOyBvdGhlcndpc2UsIGZhbGwKKyAgICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFjayB0byB0aGUgbG9jYWxlLgogICAgICAqLwotICAgIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCBMb2NhbGUmIGxvY2FsZSwgVUVycm9yQ29kZSYgc3VjY2Vzcywg
VUJvb2wgdXNlTGFzdFJlc29ydERhdGEgPSBGQUxTRSk7CisgICAgdm9pZCBpbml0aWFsaXplKGNv
bnN0IExvY2FsZSYgbG9jYWxlLCBVRXJyb3JDb2RlJiBzdWNjZXNzLAorICAgICAgICBVQm9vbCB1
c2VMYXN0UmVzb3J0RGF0YSA9IEZBTFNFLCBjb25zdCBOdW1iZXJpbmdTeXN0ZW0qIG5zID0gbnVs
bHB0cik7CiAKICAgICAvKioKICAgICAgKiBJbml0aWFsaXplIHRoZSBzeW1ib2xzIHdpdGggZGVm
YXVsdCB2YWx1ZXMuCkBAIC0zNTYsNiArMzgxLDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRD
dXJyZW5jeUZvclN5bWJvbHMoKTsKIAogcHVibGljOgorCisjaWZuZGVmIFVfSElERV9JTlRFUk5B
TF9BUEkKKyAgICAvKioKKyAgICAgKiBAaW50ZXJuYWwgRm9yIElDVSB1c2Ugb25seQorICAgICAq
LworICAgIGlubGluZSBVQm9vbCBpc0N1c3RvbUN1cnJlbmN5U3ltYm9sKCkgY29uc3QgeworICAg
ICAgICByZXR1cm4gZklzQ3VzdG9tQ3VycmVuY3lTeW1ib2w7CisgICAgfQorCisgICAgLyoqCisg
ICAgICogQGludGVybmFsIEZvciBJQ1UgdXNlIG9ubHkKKyAgICAgKi8KKyAgICBpbmxpbmUgVUJv
b2wgaXNDdXN0b21JbnRsQ3VycmVuY3lTeW1ib2woKSBjb25zdCB7CisgICAgICAgIHJldHVybiBm
SXNDdXN0b21JbnRsQ3VycmVuY3lTeW1ib2w7CisgICAgfQorI2VuZGlmICAvKiBVX0hJREVfSU5U
RVJOQUxfQVBJICovCisKICAgICAvKioKICAgICAgKiBfSW50ZXJuYWxfIGZ1bmN0aW9uIC0gbW9y
ZSBlZmZpY2llbnQgdmVyc2lvbiBvZiBnZXRTeW1ib2wsCiAgICAgICogcmV0dXJuaW5nIGEgY29u
c3QgcmVmZXJlbmNlIHRvIG9uZSBvZiB0aGUgc3ltYm9sIHN0cmluZ3MuCkBAIC0zNzUsNyArNDE3
LDcgQEAgcHVibGljOgogICAgICAqIFJldHVybnMgdGhhdCBwYXR0ZXJuIHN0b3JlZCBpbiBjdXJy
ZWN5IGluZm8uIEludGVybmFsIEFQSSBmb3IgdXNlIGJ5IE51bWJlckZvcm1hdCBBUEkuCiAgICAg
ICogQGludGVybmFsCiAgICAgICovCi0gICAgaW5saW5lIGNvbnN0IFVDaGFyKiBnZXRDdXJyZW5j
eVBhdHRlcm4odm9pZCkgY29uc3Q7CisgICAgaW5saW5lIGNvbnN0IGNoYXIxNl90KiBnZXRDdXJy
ZW5jeVBhdHRlcm4odm9pZCkgY29uc3Q7CiAjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkg
Ki8KIAogcHJpdmF0ZToKQEAgLTQwNiwxMCArNDQ4LDEyIEBAIHByaXZhdGU6CiAKICAgICBjaGFy
IGFjdHVhbExvY2FsZVtVTE9DX0ZVTExOQU1FX0NBUEFDSVRZXTsKICAgICBjaGFyIHZhbGlkTG9j
YWxlW1VMT0NfRlVMTE5BTUVfQ0FQQUNJVFldOwotICAgIGNvbnN0IFVDaGFyKiBjdXJyUGF0dGVy
bjsKKyAgICBjb25zdCBjaGFyMTZfdCogY3VyclBhdHRlcm47CiAKICAgICBVbmljb2RlU3RyaW5n
IGN1cnJlbmN5U3BjQmVmb3JlU3ltW1VOVU1fQ1VSUkVOQ1lfU1BBQ0lOR19DT1VOVF07CiAgICAg
VW5pY29kZVN0cmluZyBjdXJyZW5jeVNwY0FmdGVyU3ltW1VOVU1fQ1VSUkVOQ1lfU1BBQ0lOR19D
T1VOVF07CisgICAgVUJvb2wgZklzQ3VzdG9tQ3VycmVuY3lTeW1ib2w7CisgICAgVUJvb2wgZklz
Q3VzdG9tSW50bEN1cnJlbmN5U3ltYm9sOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNDI1LDggKzQ2OSw3IEBAIERlY2ltYWxGb3JtYXRTeW1ib2xz
OjpnZXRTeW1ib2woRU51bWJlckZvcm1hdFN5bWJvbCBzeW1ib2wpIGNvbnN0IHsKICAgICByZXR1
cm4gKnN0clB0cjsKIH0KIAotLy8jaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKLS8vIFNlZSBj
b21tZW50cyBhYm92ZSBmb3IgdGhpcyBmdW5jdGlvbi4gTm90IGhpZGRlbi4KKy8vIFNlZSBjb21t
ZW50cyBhYm92ZSBmb3IgdGhpcyBmdW5jdGlvbi4gTm90IGhpZGRlbiB3aXRoICNpZm5kZWYgVV9I
SURFX0lOVEVSTkFMX0FQSQogaW5saW5lIGNvbnN0IFVuaWNvZGVTdHJpbmcgJgogRGVjaW1hbEZv
cm1hdFN5bWJvbHM6OmdldENvbnN0U3ltYm9sKEVOdW1iZXJGb3JtYXRTeW1ib2wgc3ltYm9sKSBj
b25zdCB7CiAgICAgY29uc3QgVW5pY29kZVN0cmluZyAqc3RyUHRyOwpAQCAtNDM4LDEzICs0ODEs
MTYgQEAgRGVjaW1hbEZvcm1hdFN5bWJvbHM6OmdldENvbnN0U3ltYm9sKEVOdW1iZXJGb3JtYXRT
eW1ib2wgc3ltYm9sKSBjb25zdCB7CiAgICAgcmV0dXJuICpzdHJQdHI7CiB9CiAKLS8vI2VuZGlm
ICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCi0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgdm9pZAogRGVjaW1hbEZvcm1hdFN5bWJvbHM6OnNl
dFN5bWJvbChFTnVtYmVyRm9ybWF0U3ltYm9sIHN5bWJvbCwgY29uc3QgVW5pY29kZVN0cmluZyAm
dmFsdWUsIGNvbnN0IFVCb29sIHByb3BvZ2F0ZURpZ2l0cyA9IFRSVUUpIHsKKyAgICBpZiAoc3lt
Ym9sID09IGtDdXJyZW5jeVN5bWJvbCkgeworICAgICAgICBmSXNDdXN0b21DdXJyZW5jeVN5bWJv
bCA9IFRSVUU7CisgICAgfQorICAgIGVsc2UgaWYgKHN5bWJvbCA9PSBrSW50bEN1cnJlbmN5U3lt
Ym9sKSB7CisgICAgICAgIGZJc0N1c3RvbUludGxDdXJyZW5jeVN5bWJvbCA9IFRSVUU7CisgICAg
fQogICAgIGlmKHN5bWJvbDxrRm9ybWF0U3ltYm9sQ291bnQpIHsKICAgICAgICAgZlN5bWJvbHNb
c3ltYm9sXT12YWx1ZTsKICAgICB9CkBAIC00NzAsNyArNTE2LDcgQEAgRGVjaW1hbEZvcm1hdFN5
bWJvbHM6OmdldExvY2FsZSgpIGNvbnN0IHsKIH0KIAogI2lmbmRlZiBVX0hJREVfSU5URVJOQUxf
QVBJCi1pbmxpbmUgY29uc3QgVUNoYXIqCitpbmxpbmUgY29uc3QgY2hhcjE2X3QqCiBEZWNpbWFs
Rm9ybWF0U3ltYm9sczo6Z2V0Q3VycmVuY3lQYXR0ZXJuKCkgY29uc3QgewogICAgIHJldHVybiBj
dXJyUGF0dGVybjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZGVjaW1m
bXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZGVjaW1mbXQuaAppbmRleCAxMzg4NTViZjA4
NTNlZWVmZjU2ODQ3NzZiYWNmMTkwMzBhNGY2NjA0Li43OTAwNTM2MzZkNTk1NzNmZjhjNDdmNTNl
ZjcwNmFiMDUwOTQ4NTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RlY2lt
Zm10LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9kZWNpbWZtdC5oCkBAIC0xLDYgKzEs
OCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8v
IExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0
Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIENvcHlyaWdodCAoQykgMTk5
Ny0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChD
KSAxOTk3LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3Jh
dGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqCkBAIC00MSw2ICs0Myw3IEBACiAjaW5jbHVkZSAidW5pY29kZS9jdXJyYW10Lmgi
CiAjaW5jbHVkZSAidW5pY29kZS9lbnVtc2V0LmgiCiAKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFM
X0FQSQogLyoqCiAgKiBcZGVmIFVOVU1fREVDSU1BTEZPUk1BVF9JTlRFUk5BTF9TSVpFCiAgKiBA
aW50ZXJuYWwKQEAgLTQ4LDE3ICs1MSwyMCBAQAogI2lmIFVDT05GSUdfRk9STUFUX0ZBU1RQQVRI
U180OQogI2RlZmluZSBVTlVNX0RFQ0lNQUxGT1JNQVRfSU5URVJOQUxfU0laRSAxNgogI2VuZGlm
CisjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KIAogVV9OQU1FU1BBQ0VfQkVHSU4K
IAogY2xhc3MgRGlnaXRMaXN0OwotY2xhc3MgQ2hvaWNlRm9ybWF0OwogY2xhc3MgQ3VycmVuY3lQ
bHVyYWxJbmZvOwogY2xhc3MgSGFzaHRhYmxlOwogY2xhc3MgVW5pY29kZVNldDsKIGNsYXNzIEZp
ZWxkUG9zaXRpb25IYW5kbGVyOwogY2xhc3MgRGVjaW1hbEZvcm1hdFN0YXRpY1NldHM7CiBjbGFz
cyBGaXhlZERlY2ltYWw7CitjbGFzcyBEZWNpbWFsRm9ybWF0SW1wbDsKK2NsYXNzIFBsdXJhbFJ1
bGVzOworY2xhc3MgVmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudDsKIAogLy8gZXhwbGljaXQgdGVt
cGxhdGUgaW5zdGFudGlhdGlvbi4gc2VlIGRpZ2l0bHN0LmgKICNpZiBkZWZpbmVkIChfTVNDX1ZF
UikKQEAgLTU5OCw3ICs2MDQsNyBAQCB0ZW1wbGF0ZSBjbGFzcyBVX0kxOE5fQVBJICAgIEVudW1T
ZXQ8VU51bWJlckZvcm1hdEF0dHJpYnV0ZSwKICAqIGluY2x1ZGluZyBwcmVmaXggYW5kIHN1ZmZp
eCwgZGV0ZXJtaW5lcyB0aGUgZm9ybWF0IHdpZHRoLiAgRm9yIGV4YW1wbGUsIGluCiAgKiB0aGUg
cGF0dGVybiA8Y29kZT4iKiAjMCBvJydjbG9jayI8L2NvZGU+LCB0aGUgZm9ybWF0IHdpZHRoIGlz
IDEwLgogICoKLSAqIDxsaT5UaGUgd2lkdGggaXMgY291bnRlZCBpbiAxNi1iaXQgY29kZSB1bml0
cyAoVUNoYXJzKS4KKyAqIDxsaT5UaGUgd2lkdGggaXMgY291bnRlZCBpbiAxNi1iaXQgY29kZSB1
bml0cyAoY2hhcjE2X3RzKS4KICAqCiAgKiA8bGk+U29tZSBwYXJhbWV0ZXJzIHdoaWNoIHVzdWFs
bHkgZG8gbm90IG1hdHRlciBoYXZlIG1lYW5pbmcgd2hlbiBwYWRkaW5nIGlzCiAgKiB1c2VkLCBi
ZWNhdXNlIHRoZSBwYXR0ZXJuIHdpZHRoIGlzIHNpZ25pZmljYW50IHdpdGggcGFkZGluZy4gIElu
IHRoZSBwYXR0ZXJuCkBAIC02NjIsMjggKzY2OCw2IEBAIHRlbXBsYXRlIGNsYXNzIFVfSTE4Tl9B
UEkgICAgRW51bVNldDxVTnVtYmVyRm9ybWF0QXR0cmlidXRlLAogICovCiBjbGFzcyBVX0kxOE5f
QVBJIERlY2ltYWxGb3JtYXQ6IHB1YmxpYyBOdW1iZXJGb3JtYXQgewogcHVibGljOgotICAgIC8q
KgotICAgICAqIFJvdW5kaW5nIG1vZGUuCi0gICAgICogQHN0YWJsZSBJQ1UgMi40Ci0gICAgICov
Ci0gICAgZW51bSBFUm91bmRpbmdNb2RlIHsKLSAgICAgICAga1JvdW5kQ2VpbGluZywgIC8qKjwg
Um91bmQgdG93YXJkcyBwb3NpdGl2ZSBpbmZpbml0eSAqLwotICAgICAgICBrUm91bmRGbG9vciwg
ICAgLyoqPCBSb3VuZCB0b3dhcmRzIG5lZ2F0aXZlIGluZmluaXR5ICovCi0gICAgICAgIGtSb3Vu
ZERvd24sICAgICAvKio8IFJvdW5kIHRvd2FyZHMgemVybyAqLwotICAgICAgICBrUm91bmRVcCwg
ICAgICAgLyoqPCBSb3VuZCBhd2F5IGZyb20gemVybyAqLwotICAgICAgICBrUm91bmRIYWxmRXZl
biwgLyoqPCBSb3VuZCB0b3dhcmRzIHRoZSBuZWFyZXN0IGludGVnZXIsIG9yCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvd2FyZHMgdGhlIG5lYXJlc3QgZXZlbiBpbnRlZ2VyIGlmIGVx
dWlkaXN0YW50ICovCi0gICAgICAgIGtSb3VuZEhhbGZEb3duLCAvKio8IFJvdW5kIHRvd2FyZHMg
dGhlIG5lYXJlc3QgaW50ZWdlciwgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG93
YXJkcyB6ZXJvIGlmIGVxdWlkaXN0YW50ICovCi0gICAgICAgIGtSb3VuZEhhbGZVcCwgICAvKio8
IFJvdW5kIHRvd2FyZHMgdGhlIG5lYXJlc3QgaW50ZWdlciwgb3IKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXdheSBmcm9tIHplcm8gaWYgZXF1aWRpc3RhbnQgKi8KLSAgICAgICAgLyoq
Ci0gICAgICAgICAgKiAgUmV0dXJuIFVfRk9STUFUX0lORVhBQ1RfRVJST1IgaWYgbnVtYmVyIGRv
ZXMgbm90IGZvcm1hdCBleGFjdGx5LgotICAgICAgICAgICogIEBzdGFibGUgSUNVIDQuOAotICAg
ICAgICAgICovCi0gICAgICAgIGtSb3VuZFVubmVjZXNzYXJ5Ci0gICAgfTsKLQogICAgIC8qKgog
ICAgICAqIFBhZCBwb3NpdGlvbi4KICAgICAgKiBAc3RhYmxlIElDVSAyLjQKQEAgLTgwMyw3ICs3
ODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQzMl90IGdldEF0dHJpYnV0ZSggVU51bWJl
ckZvcm1hdEF0dHJpYnV0ZSBhdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CiAKLSAgICAKKwogICAgIC8qKgogICAgICAqIFNl
dCB3aGV0aGVyIG9yIG5vdCBncm91cGluZyB3aWxsIGJlIHVzZWQgaW4gdGhpcyBmb3JtYXQuCiAg
ICAgICogQHBhcmFtIG5ld1ZhbHVlICAgIFRydWUsIGdyb3VwaW5nIHdpbGwgYmUgdXNlZCBpbiB0
aGlzIGZvcm1hdC4KQEAgLTgyNyw3ICs4MTEsNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHZh
bHVlIFRoZSBVRGlzcGxheUNvbnRleHQgdmFsdWUgdG8gc2V0LgogICAgICAqIEBwYXJhbSBzdGF0
dXMgSW5wdXQvb3V0cHV0IHN0YXR1cy4gSWYgYXQgZW50cnkgdGhpcyBpbmRpY2F0ZXMgYSBmYWls
dXJlCiAgICAgICogICAgICAgICAgICAgICBzdGF0dXMsIHRoZSBmdW5jdGlvbiB3aWxsIGRvIG5v
dGhpbmc7IG90aGVyd2lzZSB0aGlzIHdpbGwgYmUKLSAgICAgKiAgICAgICAgICAgICAgIHVwZGF0
ZWQgd2l0aCBhbnkgbmV3IHN0YXR1cyBmcm9tIHRoZSBmdW5jdGlvbi4gCisgICAgICogICAgICAg
ICAgICAgICB1cGRhdGVkIHdpdGggYW55IG5ldyBzdGF0dXMgZnJvbSB0aGUgZnVuY3Rpb24uCiAg
ICAgICogQHN0YWJsZSBJQ1UgNTMKICAgICAgKi8KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGV4
dChVRGlzcGxheUNvbnRleHQgdmFsdWUsIFVFcnJvckNvZGUmIHN0YXR1cyk7CkBAIC05NjQsNyAr
OTQ4LDcgQEAgcHVibGljOgogICAgICAqICAgICAgICAgICAgICAgICAgQ2FuIGJlIE5VTEwuCiAg
ICAgICogQHBhcmFtIHN0YXR1cyAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9m
YWlsdXJlIHN0YXR1cy4KICAgICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBw
ZW5kVG8nIHBhcmFtZXRlci4KLSAgICAgKiBAc3RhYmxlIDQuNAorICAgICAqIEBzdGFibGUgSUNV
IDQuNAogICAgICAqLwogICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyYgZm9ybWF0KGRvdWJsZSBu
dW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYg
YXBwZW5kVG8sCkBAIC0xMDEzLDcgKzk5Nyw3IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgICAg
ICAgICAgIENhbiBiZSBOVUxMLgogICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBhcmFt
IGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCiAgICAgICogQHJldHVybiAgICAg
ICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCi0gICAgICogQHN0YWJsZSA0
LjQKKyAgICAgKiBAc3RhYmxlIElDVSA0LjQKICAgICAgKi8KICAgICB2aXJ0dWFsIFVuaWNvZGVT
dHJpbmcmIGZvcm1hdChpbnQzMl90IG51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywKQEAgLTEwNjIsNyArMTA0Niw3IEBAIHB1
YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgICAgIENhbiBiZSBOVUxMLgogICAgICAqIEBwYXJh
bSBzdGF0dXMgICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0
dXMuCiAgICAgICogQHJldHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJh
bWV0ZXIuCi0gICAgICogQHN0YWJsZSA0LjQKKyAgICAgKiBAc3RhYmxlIElDVSA0LjQKICAgICAg
Ki8KICAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZvcm1hdChpbnQ2NF90IG51bWJlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywK
QEAgLTEwODMsOSArMTA2Nyw5IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgICAgIENh
biBiZSBOVUxMLgogICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3
aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCiAgICAgICogQHJldHVybiAgICAgICAgICBSZWZl
cmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCi0gICAgICogQHN0YWJsZSA0LjQKKyAgICAg
KiBAc3RhYmxlIElDVSA0LjQKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZv
cm1hdChjb25zdCBTdHJpbmdQaWVjZSAmbnVtYmVyLAorICAgIHZpcnR1YWwgVW5pY29kZVN0cmlu
ZyYgZm9ybWF0KFN0cmluZ1BpZWNlIG51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIHBvc0l0ZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKQEAgLTExMTEs
NiArMTA5NSw0MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBwb3NJdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7CiAKKyAgICAvKioKKyAgICAgKiBG
b3JtYXQgYSBkZWNpbWFsIG51bWJlci4KKyAgICAgKiBAcGFyYW0gbnVtYmVyICAgIFRoZSBudW1i
ZXIKKyAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1dCBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSBy
ZXN1bHQuCisgICAgICogICAgICAgICAgICAgICAgICBSZXN1bHQgaXMgYXBwZW5kZWQgdG8gZXhp
c3RpbmcgY29udGVudHMuCisgICAgICogQHBhcmFtIHBvcyAgICAgICBPbiBpbnB1dDogYW4gYWxp
Z25tZW50IGZpZWxkLCBpZiBkZXNpcmVkLgorICAgICAqICAgICAgICAgICAgICAgICAgT24gb3V0
cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLgorICAgICAqIEBwYXJhbSBz
dGF0dXMgICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMu
CisgICAgICogQHJldHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0
ZXIuCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgdmlydHVhbCBVbmljb2RlU3RyaW5n
JiBmb3JtYXQoCisgICAgICAgICAgICBjb25zdCBWaXNpYmxlRGlnaXRzV2l0aEV4cG9uZW50ICZu
dW1iZXIsCisgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywKKyAgICAgICAgICAg
IEZpZWxkUG9zaXRpb24mIHBvcywKKyAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cykgY29u
c3Q7CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXQgYSBkZWNpbWFsIG51bWJlci4KKyAgICAgKiBA
cGFyYW0gbnVtYmVyICAgIFRoZSBudW1iZXIKKyAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIE91dHB1
dCBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSByZXN1bHQuCisgICAgICogICAgICAgICAgICAgICAgICBS
ZXN1bHQgaXMgYXBwZW5kZWQgdG8gZXhpc3RpbmcgY29udGVudHMuCisgICAgICogQHBhcmFtIHBv
c0l0ZXIgICBPbiByZXR1cm4sIGNhbiBiZSB1c2VkIHRvIGl0ZXJhdGUgb3ZlciBwb3NpdGlvbnMK
KyAgICAgKiAgICAgICAgICAgICAgICAgIG9mIGZpZWxkcyBnZW5lcmF0ZWQgYnkgdGhpcyBmb3Jt
YXQgY2FsbC4KKyAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBmaWxsZWQgd2l0
aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzLgorICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJl
bmNlIHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLwor
ICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyYgZm9ybWF0KAorICAgICAgICAgICAgY29uc3QgVmlz
aWJsZURpZ2l0c1dpdGhFeHBvbmVudCAmbnVtYmVyLAorICAgICAgICAgICAgVW5pY29kZVN0cmlu
ZyYgYXBwZW5kVG8sCisgICAgICAgICAgICBGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIHBvc0l0ZXIs
CisgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OworCiAgICAgLyoqCiAgICAg
ICogRm9ybWF0IGEgZGVjaW1hbCBudW1iZXIuCiAgICAgICogVGhlIG51bWJlciBpcyBhIERpZ2l0
TGlzdCB3cmFwcGVyIG9udG8gYSBmbG9hdGluZyBwb2ludCBkZWNpbWFsIG51bWJlci4KQEAgLTE2
MTAsNiArMTYyOCw0NSBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgdmlydHVhbCB2b2lkIHNldFNl
Y29uZGFyeUdyb3VwaW5nU2l6ZShpbnQzMl90IG5ld1ZhbHVlKTsKIAorI2lmbmRlZiBVX0hJREVf
SU5URVJOQUxfQVBJCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBtaW5pbXVtIG51bWJl
ciBvZiBncm91cGluZyBkaWdpdHMuCisgICAgICogR3JvdXBpbmcgc2VwYXJhdG9ycyBhcmUgb3V0
cHV0IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCB0aGlzIG1hbnkKKyAgICAgKiBkaWdpdHMgdG8gdGhl
IGxlZnQgb2YgdGhlIGZpcnN0IChyaWdodG1vc3QpIGdyb3VwaW5nIHNlcGFyYXRvciwKKyAgICAg
KiB0aGF0IGlzLCB0aGVyZSBhcmUgYXQgbGVhc3QgKG1pbmltdW0gZ3JvdXBpbmcgKyBncm91cGlu
ZyBzaXplKSBpbnRlZ2VyIGRpZ2l0cy4KKyAgICAgKiAoU3ViamVjdCB0byBpc0dyb3VwaW5nVXNl
ZCgpLikKKyAgICAgKgorICAgICAqIEZvciBleGFtcGxlLCBpZiB0aGlzIHZhbHVlIGlzIDIsIGFu
ZCB0aGUgZ3JvdXBpbmcgc2l6ZSBpcyAzLCB0aGVuCisgICAgICogOTk5OSAtPiAiOTk5OSIgYW5k
IDEwMDAwIC0+ICIxMCwwMDAiCisgICAgICoKKyAgICAgKiBUaGlzIGlzIGEgdGVjaG5vbG9neSBw
cmV2aWV3LiBUaGlzIEFQSSBtYXkgY2hhbmdlIGJlaGF2aW9yIG9yIG1heSBiZSByZW1vdmVkLgor
ICAgICAqCisgICAgICogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgYXR0cmlidXRlIGlzIDAu
CisgICAgICogQSB2YWx1ZSBvZiAxLCAwLCBvciBsb3dlciwgbWVhbnMgdGhhdCB0aGUgdXNlIG9m
IGdyb3VwaW5nIHNlcGFyYXRvcnMKKyAgICAgKiBvbmx5IGRlcGVuZHMgb24gdGhlIGdyb3VwaW5n
IHNpemUgKGFuZCBvbiBpc0dyb3VwaW5nVXNlZCgpKS4KKyAgICAgKiBDdXJyZW50bHksIHRoZSBj
b3JyZXNwb25kaW5nIENMRFIgZGF0YSBpcyBub3QgdXNlZDsgdGhpcyBpcyBsaWtlbHkgdG8gY2hh
bmdlLgorICAgICAqCisgICAgICogQHNlZSBzZXRNaW5pbXVtR3JvdXBpbmdEaWdpdHMKKyAgICAg
KiBAc2VlIGdldEdyb3VwaW5nU2l6ZQorICAgICAqIEBpbnRlcm5hbCB0ZWNobm9sb2d5IHByZXZp
ZXcKKyAgICAgKi8KKyAgICBpbnQzMl90IGdldE1pbmltdW1Hcm91cGluZ0RpZ2l0cygpIGNvbnN0
OworCisjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KKworCS8qIENhbm5vdCB1c2Ug
I2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJIGZvciB0aGUgZm9sbG93aW5nIGRyYWZ0IG1ldGhv
ZCBzaW5jZSBpdCBpcyB2aXJ0dWFsLiAqLworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1pbmlt
dW0gZ3JvdXBpbmcgZGlnaXRzLiBTZXR0aW5nIHRvIGEgdmFsdWUgbGVzcyB0aGFuIG9yCisgICAg
ICogZXF1YWwgdG8gMSB0dXJucyBvZmYgbWluaW11bSBncm91cGluZyBkaWdpdHMuCisgICAgICoK
KyAgICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiBtaW5pbXVtIGdyb3VwaW5n
IGRpZ2l0cy4KKyAgICAgKiBAc2VlIGdldE1pbmltdW1Hcm91cGluZ0RpZ2l0cworICAgICAqIEBp
bnRlcm5hbCB0ZWNobm9sb2d5IHByZXZpZXcKKyAgICAgKi8KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TWluaW11bUdyb3VwaW5nRGlnaXRzKGludDMyX3QgbmV3VmFsdWUpOworCisKICAgICAvKioKICAg
ICAgKiBBbGxvd3MgeW91IHRvIGdldCB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlY2ltYWwgc2VwYXJh
dG9yIHdpdGggaW50ZWdlcnMuCiAgICAgICogKFRoZSBkZWNpbWFsIHNlcGFyYXRvciB3aWxsIGFs
d2F5cyBhcHBlYXIgd2l0aCBkZWNpbWFscy4pCkBAIC0xNjMwLDI0ICsxNjg3LDIyIEBAIHB1Ymxp
YzoKICAgICAgKi8KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVjaW1hbFNlcGFyYXRvckFsd2F5c1No
b3duKFVCb29sIG5ld1ZhbHVlKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoq
CiAgICAgICogQWxsb3dzIHlvdSB0byBnZXQgdGhlIHBhcnNlIGJlaGF2aW9yIG9mIHRoZSBwYXR0
ZXJuIGRlY2ltYWwgbWFyay4KICAgICAgKgogICAgICAqIEByZXR1cm4gICAgVFJVRSBpZiBpbnB1
dCBtdXN0IGNvbnRhaW4gYSBtYXRjaCB0byBkZWNpbWFsIG1hcmsgaW4gcGF0dGVybgotICAgICAq
IEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIFVCb29s
IGlzRGVjaW1hbFBhdHRlcm5NYXRjaFJlcXVpcmVkKHZvaWQpIGNvbnN0OwotI2VuZGlmICAvKiBV
X0hJREVfRFJBRlRfQVBJICovCiAKICAgICAvKioKICAgICAgKiBBbGxvd3MgeW91IHRvIHNldCB0
aGUgYmVoYXZpb3Igb2YgdGhlIHBhdHRlcm4gZGVjaW1hbCBtYXJrLgotICAgICAqIAorICAgICAq
CiAgICAgICogaWYgVFJVRSwgdGhlIGlucHV0IG11c3QgaGF2ZSBhIGRlY2ltYWwgbWFyayBpZiBv
bmUgd2FzIHNwZWNpZmllZCBpbiB0aGUgcGF0dGVybi4gV2hlbgogICAgICAqIEZBTFNFIHRoZSBk
ZWNpbWFsIG1hcmsgbWF5IGJlIG9taXR0ZWQgZnJvbSB0aGUgaW5wdXQuCiAgICAgICoKICAgICAg
KiBAcGFyYW0gbmV3VmFsdWUgICAgc2V0IFRSVUUgaWYgaW5wdXQgbXVzdCBjb250YWluIGEgbWF0
Y2ggdG8gZGVjaW1hbCBtYXJrIGluIHBhdHRlcm4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAg
ICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVjaW1hbFBh
dHRlcm5NYXRjaFJlcXVpcmVkKFVCb29sIG5ld1ZhbHVlKTsKIApAQCAtMTg4NCw0MSArMTkzOSwz
NyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIGVjIGlucHV0LW91dHB1dCBlcnJvciBjb2RlCiAg
ICAgICogQHN0YWJsZSBJQ1UgMy4wCiAgICAgICovCi0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJl
bmN5KGNvbnN0IFVDaGFyKiB0aGVDdXJyZW5jeSwgVUVycm9yQ29kZSYgZWMpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRDdXJyZW5jeShjb25zdCBjaGFyMTZfdCogdGhlQ3VycmVuY3ksIFVFcnJvckNv
ZGUmIGVjKTsKIAogICAgIC8qKgogICAgICAqIFNldHMgdGhlIGN1cnJlbmN5IHVzZWQgdG8gZGlz
cGxheSBjdXJyZW5jeSBhbW91bnRzLiAgU2VlCi0gICAgICogc2V0Q3VycmVuY3koY29uc3QgVUNo
YXIqLCBVRXJyb3JDb2RlJikuCi0gICAgICogQGRlcHJlY2F0ZWQgSUNVIDMuMC4gVXNlIHNldEN1
cnJlbmN5KGNvbnN0IFVDaGFyKiwgVUVycm9yQ29kZSYpLgorICAgICAqIHNldEN1cnJlbmN5KGNv
bnN0IGNoYXIxNl90KiwgVUVycm9yQ29kZSYpLgorICAgICAqIEBkZXByZWNhdGVkIElDVSAzLjAu
IFVzZSBzZXRDdXJyZW5jeShjb25zdCBjaGFyMTZfdCosIFVFcnJvckNvZGUmKS4KICAgICAgKi8K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVuY3koY29uc3QgVUNoYXIqIHRoZUN1cnJlbmN5KTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVuY3koY29uc3QgY2hhcjE2X3QqIHRoZUN1cnJlbmN5
KTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogU2V0cyB0aGUg
PHR0PkN1cnJlbmN5IENvbnRleHQ8L3R0PiBvYmplY3QgdXNlZCB0byBkaXNwbGF5IGN1cnJlbmN5
LgogICAgICAqIFRoaXMgdGFrZXMgZWZmZWN0IGltbWVkaWF0ZWx5LCBpZiB0aGlzIGZvcm1hdCBp
cyBhCi0gICAgICogY3VycmVuY3kgZm9ybWF0LiAgCi0gICAgICogQHBhcmFtIGN1cnJlbmN5Q29u
dGV4dCBuZXcgY3VycmVuY3kgY29udGV4dCBvYmplY3QgdG8gdXNlLiAgCi0gICAgICogQGRyYWZ0
IElDVSA1NAorICAgICAqIGN1cnJlbmN5IGZvcm1hdC4KKyAgICAgKiBAcGFyYW0gY3VycmVuY3lD
b250ZXh0IG5ldyBjdXJyZW5jeSBjb250ZXh0IG9iamVjdCB0byB1c2UuCisgICAgICogQHN0YWJs
ZSBJQ1UgNTQKICAgICAgKi8KICAgICB2b2lkIHNldEN1cnJlbmN5VXNhZ2UoVUN1cnJlbmN5VXNh
Z2UgbmV3VXNhZ2UsIFVFcnJvckNvZGUqIGVjKTsKIAogICAgIC8qKgogICAgICAqIFJldHVybnMg
dGhlIDx0dD5DdXJyZW5jeSBDb250ZXh0PC90dD4gb2JqZWN0IHVzZWQgdG8gZGlzcGxheSBjdXJy
ZW5jeQotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAq
LwogICAgIFVDdXJyZW5jeVVzYWdlIGdldEN1cnJlbmN5VXNhZ2UoKSBjb25zdDsKLSNlbmRpZiAg
LyogVV9ISURFX0RSQUZUX0FQSSAqLwogCiAKLSNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJ
CiAgICAgLyoqCiAgICAgICogVGhlIHJlc291cmNlIHRhZ3Mgd2UgdXNlIHRvIHJldHJpZXZlIGRl
Y2ltYWwgZm9ybWF0IGRhdGEgZnJvbQogICAgICAqIGxvY2FsZSByZXNvdXJjZSBidW5kbGVzLgog
ICAgICAqIEBkZXByZWNhdGVkIElDVSAzLjQuIFRoaXMgc3RyaW5nIGhhcyBubyBwdWJsaWMgcHVy
cG9zZS4gUGxlYXNlIGRvbid0IHVzZSBpdC4KICAgICAgKi8KICAgICBzdGF0aWMgY29uc3QgY2hh
ciBmZ051bWJlclBhdHRlcm5zW107Ci0jZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAq
LwogCiAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAgICAvKioKQEAgLTE5NDQsNiArMTk5
NSw0MSBAQCBwdWJsaWM6CiAgICAgICogIEBpbnRlcm5hbAogICAgICAqLwogICAgICBGaXhlZERl
Y2ltYWwgZ2V0Rml4ZWREZWNpbWFsKERpZ2l0TGlzdCAmbnVtYmVyLCBVRXJyb3JDb2RlICZzdGF0
dXMpIGNvbnN0OworCisgICAgLyoqCisgICAgICogIEdldCBhIFZpc2libGVEaWdpdHNXaXRoRXhw
b25lbnQgY29ycmVzcG9uZGluZyB0byBhIGRvdWJsZQorICAgICAqICBhcyBpdCB3b3VsZCBiZSBm
b3JtYXR0ZWQgYnkgdGhpcyBEZWNpbWFsRm9ybWF0LgorICAgICAqICBJbnRlcm5hbCwgbm90IGlu
dGVuZGVkIGZvciBwdWJsaWMgdXNlLgorICAgICAqICBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICAg
VmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCAmaW5pdFZpc2libGVEaWdpdHNXaXRoRXhwb25lbnQo
CisgICAgICAgICAgICAgZG91YmxlIG51bWJlciwKKyAgICAgICAgICAgICBWaXNpYmxlRGlnaXRz
V2l0aEV4cG9uZW50ICZkaWdpdHMsCisgICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVzKSBj
b25zdDsKKworICAgIC8qKgorICAgICAqICBHZXQgYSBWaXNpYmxlRGlnaXRzV2l0aEV4cG9uZW50
IGNvcnJlc3BvbmRpbmcgdG8gYSBmb3JtYXR0YWJsZQorICAgICAqICBhcyBpdCB3b3VsZCBiZSBm
b3JtYXR0ZWQgYnkgdGhpcyBEZWNpbWFsRm9ybWF0LgorICAgICAqICBJbnRlcm5hbCwgbm90IGlu
dGVuZGVkIGZvciBwdWJsaWMgdXNlLgorICAgICAqICBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICAg
VmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCAmaW5pdFZpc2libGVEaWdpdHNXaXRoRXhwb25lbnQo
CisgICAgICAgICAgICAgY29uc3QgRm9ybWF0dGFibGUgJm51bWJlciwKKyAgICAgICAgICAgICBW
aXNpYmxlRGlnaXRzV2l0aEV4cG9uZW50ICZkaWdpdHMsCisgICAgICAgICAgICAgVUVycm9yQ29k
ZSAmc3RhdHVzKSBjb25zdDsKKworICAgIC8qKgorICAgICAqICBHZXQgYSBWaXNpYmxlRGlnaXRz
V2l0aEV4cG9uZW50IGNvcnJlc3BvbmRpbmcgdG8gYSBEaWdpdExpc3QKKyAgICAgKiAgYXMgaXQg
d291bGQgYmUgZm9ybWF0dGVkIGJ5IHRoaXMgRGVjaW1hbEZvcm1hdC4KKyAgICAgKiAgTm90ZTog
dGhlIERpZ2l0TGlzdCBtYXkgYmUgbW9kaWZpZWQuCisgICAgICogIEludGVybmFsLCBub3QgaW50
ZW5kZWQgZm9yIHB1YmxpYyB1c2UuCisgICAgICogIEBpbnRlcm5hbAorICAgICAqLworICAgICBW
aXNpYmxlRGlnaXRzV2l0aEV4cG9uZW50ICZpbml0VmlzaWJsZURpZ2l0c1dpdGhFeHBvbmVudCgK
KyAgICAgICAgICAgICBEaWdpdExpc3QgJm51bWJlciwKKyAgICAgICAgICAgICBWaXNpYmxlRGln
aXRzV2l0aEV4cG9uZW50ICZkaWdpdHMsCisgICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVz
KSBjb25zdDsKKwogI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCiAKIHB1YmxpYzoK
QEAgLTE5NzgsOCArMjA2NCw2IEBAIHByaXZhdGU6CiAKICAgICBEZWNpbWFsRm9ybWF0KCk7IC8v
IGRlZmF1bHQgY29uc3RydWN0b3Igbm90IGltcGxlbWVudGVkCiAKLSAgICBpbnQzMl90IHByZWNp
c2lvbigpIGNvbnN0OwotCiAgICAgLyoqCiAgICAgICogICBJbml0aWFsaXplIGFsbCBmaWVsZHMg
b2YgYSBuZXcgRGVjaW1hbEZvcm1hdHRlciB0byBhIHNhZmUgZGVmYXVsdCB2YWx1ZS4KICAgICAg
KiAgICAgIENvbW1vbiBjb2RlIGZvciB1c2UgYnkgY29uc3RydWN0b3JzLgpAQCAtMTk5NSw3NiAr
MjA3OSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgIERlY2ltYWxGb3JtYXRTeW1i
b2xzKiAgICBzeW1ib2xzVG9BZG9wdCA9IDAKICAgICAgICAgICAgICAgICAgICApOwogCi0gICAg
LyoqCi0gICAgICogRG9lcyB0aGUgcmVhbCB3b3JrIG9mIGdlbmVyYXRpbmcgYSBwYXR0ZXJuLgot
ICAgICAqCi0gICAgICogQHBhcmFtIHJlc3VsdCAgICAgT3V0cHV0IHBhcmFtIHdoaWNoIHdpbGwg
cmVjZWl2ZSB0aGUgcGF0dGVybi4KLSAgICAgKiAgICAgICAgICAgICAgICAgICBQcmV2aW91cyBj
b250ZW50cyBhcmUgZGVsZXRlZC4KLSAgICAgKiBAcGFyYW0gbG9jYWxpemVkICBUUlVFIHJldHVy
biBsb2NhbGl6ZWQgcGF0dGVybi4KLSAgICAgKiBAcmV0dXJuICAgICAgICAgICBBIHJlZmVyZW5j
ZSB0byAncmVzdWx0Jy4KLSAgICAgKi8KLSAgICBVbmljb2RlU3RyaW5nJiB0b1BhdHRlcm4oVW5p
Y29kZVN0cmluZyYgcmVzdWx0LCBVQm9vbCBsb2NhbGl6ZWQpIGNvbnN0OwotCi0gICAgLyoqCi0g
ICAgICogRG9lcyB0aGUgcmVhbCB3b3JrIG9mIGFwcGx5aW5nIGEgcGF0dGVybi4KLSAgICAgKiBA
cGFyYW0gcGF0dGVybiAgICBUaGUgcGF0dGVybiB0byBiZSBhcHBsaWVkLgotICAgICAqIEBwYXJh
bSBsb2NhbGl6ZWQgIElmIHRydWUsIHRoZSBwYXR0ZXJuIGlzIGxvY2FsaXplZDsgZWxzZSBmYWxz
ZS4KLSAgICAgKiBAcGFyYW0gcGFyc2VFcnJvciBTdHJ1Y3QgdG8gcmVjaWV2ZSBpbmZvcm1hdGlv
biBvbiBwb3NpdGlvbgotICAgICAqICAgICAgICAgICAgICAgICAgIG9mIGVycm9yIGlmIGFuIGVy
cm9yIGlzIGVuY291bnRlcmVkCi0gICAgICogQHBhcmFtIHN0YXR1cyAgICAgT3V0cHV0IHBhcmFt
IHNldCB0byBzdWNjZXNzL2ZhaWx1cmUgY29kZSBvbgotICAgICAqICAgICAgICAgICAgICAgICAg
IGV4aXQuIElmIHRoZSBwYXR0ZXJuIGlzIGludmFsaWQsIHRoaXMgd2lsbCBiZQotICAgICAqICAg
ICAgICAgICAgICAgICAgIHNldCB0byBhIGZhaWx1cmUgcmVzdWx0LgotICAgICAqLwotICAgIHZv
aWQgYXBwbHlQYXR0ZXJuKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBhdHRlcm4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVUJvb2wgbG9jYWxpemVkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVQYXJzZUVycm9yJiBwYXJzZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7Ci0KLSAgICAvKgotICAgICAqIHNpbWlsYXIgdG8gYXBw
bHlQYXR0ZXJuLCBidXQgd2l0aG91dCByZS1nZW4gYWZmaXggZm9yIGN1cnJlbmN5Ci0gICAgICov
Ci0gICAgdm9pZCBhcHBseVBhdHRlcm5JbnRlcm5hbGx5KGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBs
dXJhbENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2Rl
U3RyaW5nJiBwYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBs
b2NhbGl6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVQYXJzZUVycm9yJiBw
YXJzZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBz
dGF0dXMpOwotCi0gICAgLyoKLSAgICAgKiBvbmx5IGFwcGx5IHBhdHRlcm4gd2l0aG91dCBleHBh
bmQgYWZmaXhlcwotICAgICAqLwotICAgIHZvaWQgYXBwbHlQYXR0ZXJuV2l0aG91dEV4cGFuZEFm
Zml4KGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBhdHRlcm4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVUJvb2wgbG9jYWxpemVkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVQYXJzZUVycm9yJiBwYXJzZUVycm9yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7Ci0KLQotICAg
IC8qCi0gICAgICogZXhwYW5kIGFmZml4ZXMgKGFmdGVyIGFwcGx5IHBhdHRlcikgYW5kIHJlLWNv
bXB1dGUgZkZvcm1hdFdpZHRoCi0gICAgICovCi0gICAgdm9pZCBleHBhbmRBZmZpeEFkanVzdFdp
ZHRoKGNvbnN0IFVuaWNvZGVTdHJpbmcqIHBsdXJhbENvdW50KTsKLQotCi0gICAgLyoqCi0gICAg
ICogRG8gdGhlIHdvcmsgb2YgZm9ybWF0dGluZyBhIG51bWJlciwgZWl0aGVyIGEgZG91YmxlIG9y
IGEgbG9uZy4KLSAgICAgKgotICAgICAqIEBwYXJhbSBhcHBlbmRUbyAgICAgICBPdXRwdXQgcGFy
YW1ldGVyIHRvIHJlY2VpdmUgcmVzdWx0LgotICAgICAqICAgICAgICAgICAgICAgICAgICAgICBS
ZXN1bHQgaXMgYXBwZW5kZWQgdG8gZXhpc3RpbmcgY29udGVudHMuCi0gICAgICogQHBhcmFtIGhh
bmRsZXIgICAgICAgIFJlY29yZHMgaW5mb3JtYXRpb24gYWJvdXQgZmllbGQgcG9zaXRpb25zLgot
ICAgICAqIEBwYXJhbSBkaWdpdHMgICAgICAgICB0aGUgZGlnaXRzIHRvIGJlIGZvcm1hdHRlZC4K
LSAgICAgKiBAcGFyYW0gaXNJbnRlZ2VyICAgICAgaWYgVFJVRSBmb3JtYXQgdGhlIGRpZ2l0cyBh
cyBJbnRlZ2VyLgotICAgICAqIEByZXR1cm4gICAgICAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2Fw
cGVuZFRvJyBwYXJhbWV0ZXIuCi0gICAgICovCi0gICAgVW5pY29kZVN0cmluZyYgc3ViZm9ybWF0
KFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
aWVsZFBvc2l0aW9uSGFuZGxlciYgaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGlnaXRMaXN0JiAgICAgZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
Qm9vbCAgICAgICAgICBpc0ludGVnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVF
cnJvckNvZGUgJnN0YXR1cykgY29uc3Q7Ci0KKyAgICB2b2lkIGhhbmRsZUN1cnJlbmN5U2lnbklu
UGF0dGVybihVRXJyb3JDb2RlJiBzdGF0dXMpOwogCiAgICAgdm9pZCBwYXJzZShjb25zdCBVbmlj
b2RlU3RyaW5nJiB0ZXh0LAogICAgICAgICAgICAgICAgRm9ybWF0dGFibGUmIHJlc3VsdCwKICAg
ICAgICAgICAgICAgIFBhcnNlUG9zaXRpb24mIHBvcywKLSAgICAgICAgICAgICAgIFVDaGFyKiBj
dXJyZW5jeSkgY29uc3Q7CisgICAgICAgICAgICAgICBjaGFyMTZfdCogY3VycmVuY3kpIGNvbnN0
OwogCiAgICAgZW51bSB7CiAgICAgICAgIGZnU3RhdHVzSW5maW5pdGUsCkBAIC0yMDgwLDcgKzIx
MDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgIGludDhfdCB0eXBlLAogICAgICAg
ICAgICAgICAgICAgIFBhcnNlUG9zaXRpb24mIHBhcnNlUG9zaXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgRGlnaXRMaXN0JiBkaWdpdHMsIFVCb29sKiBzdGF0dXMsCi0gICAgICAgICAgICAgICAg
ICAgVUNoYXIqIGN1cnJlbmN5KSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICBjaGFyMTZfdCog
Y3VycmVuY3kpIGNvbnN0OwogCiAgICAgLy8gTWl4ZWQgc3R5bGUgcGFyc2luZyBmb3IgY3VycmVu
Y3kuCiAgICAgLy8gSXQgcGFyc2VzIGFnYWluc3QgdGhlIGN1cnJlbnQgY3VycmVuY3kgcGF0dGVy
bgpAQCAtMjA5MSw3ICsyMTExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhcnNlUG9zaXRpb24mIHBhcnNlUG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEaWdpdExpc3QmIGRpZ2l0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29s
KiBzdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhciogY3VycmVuY3kpIGNv
bnN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcjE2X3QqIGN1cnJlbmN5KSBjb25z
dDsKIAogICAgIGludDMyX3Qgc2tpcFBhZGRpbmcoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwg
aW50MzJfdCBwb3NpdGlvbikgY29uc3Q7CiAKQEAgLTIxMDIsNyArMjEyMiw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyogYWZmaXhQYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgY29tcGxleEN1cnJlbmN5UGFyc2luZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ4X3QgdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBVQ2hhciogY3VycmVuY3kpIGNvbnN0OworICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIxNl90KiBjdXJyZW5jeSkgY29uc3Q7CiAKICAgICBzdGF0aWMgVW5pY29kZVN0cmluZyYg
dHJpbU1hcmtzRnJvbUFmZml4KGNvbnN0IFVuaWNvZGVTdHJpbmcmIGFmZml4LCBVbmljb2RlU3Ry
aW5nJiB0cmltbWVkQWZmaXgpOwogCkBAIC0yMTI1LDcgKzIxNDUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBpbnB1dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBwb3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDhfdCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVQ2hhciogY3VycmVuY3kpIGNvbnN0OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyMTZfdCogY3VycmVuY3kpIGNvbnN0OwogCiAgICAgc3RhdGljIGludDMy
X3QgbWF0Y2goY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwgaW50MzJfdCBwb3MsIFVDaGFyMzIg
Y2gpOwogCkBAIC0yMTQ0LDIzMSArMjE2NCw0NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVQ2hhcjMyIGRlY2ltYWxDaGFyLCBjb25zdCBVbmljb2RlU2V0ICpkZWNp
bWFsU2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcjMyIHNjaGFyKTsKIAot
ICAgIC8qKgotICAgICAqIEdldCBhIGRlY2ltYWwgZm9ybWF0IHN5bWJvbC4KLSAgICAgKiBSZXR1
cm5zIGEgY29uc3QgcmVmZXJlbmNlIHRvIHRoZSBzeW1ib2wgc3RyaW5nLgotICAgICAqIEBpbnRl
cm5hbAotICAgICAqLwotICAgIGlubGluZSBjb25zdCBVbmljb2RlU3RyaW5nICZnZXRDb25zdFN5
bWJvbChEZWNpbWFsRm9ybWF0U3ltYm9sczo6RU51bWJlckZvcm1hdFN5bWJvbCBzeW1ib2wpIGNv
bnN0OwotCi0gICAgaW50MzJfdCBhcHBlbmRBZmZpeChVbmljb2RlU3RyaW5nJiBidWYsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGUgbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgRmllbGRQb3NpdGlvbkhhbmRsZXImIGhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBVQm9vbCBpc05lZ2F0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgaXNQcmVm
aXgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogQXBwZW5kIGFuIGFmZml4IHRvIHRoZSBnaXZl
biBVbmljb2RlU3RyaW5nLCB1c2luZyBxdW90ZXMgaWYKLSAgICAgKiB0aGVyZSBhcmUgc3BlY2lh
bCBjaGFyYWN0ZXJzLiAgU2luZ2xlIHF1b3RlcyB0aGVtc2VsdmVzIG11c3QgYmUKLSAgICAgKiBl
c2NhcGVkIGluIGVpdGhlciBjYXNlLgotICAgICAqLwotICAgIHZvaWQgYXBwZW5kQWZmaXhQYXR0
ZXJuKFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLCBjb25zdCBVbmljb2RlU3RyaW5nJiBhZmZpeCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBsb2NhbGl6ZWQpIGNvbnN0OwotCi0g
ICAgdm9pZCBhcHBlbmRBZmZpeFBhdHRlcm4oVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyogYWZmaXhQYXR0ZXJu
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIGV4cEFm
Zml4LCBVQm9vbCBsb2NhbGl6ZWQpIGNvbnN0OwotCi0gICAgdm9pZCBleHBhbmRBZmZpeChjb25z
dCBVbmljb2RlU3RyaW5nJiBwYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0
cmluZyYgYWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICBkb3VibGUgbnVtYmVyLAotICAgICAg
ICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbkhhbmRsZXImIGhhbmRsZXIsCi0gICAgICAgICAg
ICAgICAgICAgICBVQm9vbCBkb0Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVu
aWNvZGVTdHJpbmcqIHBsdXJhbENvdW50KSBjb25zdDsKLQotICAgIHZvaWQgZXhwYW5kQWZmaXhl
cyhjb25zdCBVbmljb2RlU3RyaW5nKiBwbHVyYWxDb3VudCk7Ci0KLSAgICB2b2lkIGFkZFBhZGRp
bmcoVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCi0gICAgICAgICAgICAgICAgICAgIEZpZWxkUG9z
aXRpb25IYW5kbGVyJiBoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHByZWZp
eExlbiwgaW50MzJfdCBzdWZmaXhMZW4pIGNvbnN0OwotCi0gICAgVUJvb2wgaXNHcm91cGluZ1Bv
c2l0aW9uKGludDMyX3QgcG9zKSBjb25zdDsKLQotICAgIHZvaWQgc2V0Q3VycmVuY3lGb3JTeW1i
b2xzKCk7Ci0KLSAgICAvLyBzaW1pbGFyIHRvIHNldEN1cnJlbmN5IHdpdGhvdXQgcmUtY29tcHV0
ZSB0aGUgYWZmaXhlcyBmb3IgY3VycmVuY3kuCi0gICAgLy8gSWYgY3VycmVuY3kgY2hhbmdlcywg
dGhlIGFmZml4IHBhdHRlcm4gZm9yIGN1cnJlbmN5IGlzIG5vdCBjaGFuZ2VkLAotICAgIC8vIGJ1
dCB0aGUgYWZmaXggd2lsbCBiZSBjaGFuZ2VkLiBTbywgYWZmaXhlcyBuZWVkIHRvIGJlCi0gICAg
Ly8gcmUtY29tcHV0ZWQgaW4gc2V0Q3VycmVuY3koKSwgYnV0IG5vdCBpbiBzZXRDdXJyZW5jeUlu
dGVybmFsbHkoKS4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVuY3lJbnRlcm5hbGx5KGNvbnN0
IFVDaGFyKiB0aGVDdXJyZW5jeSwgVUVycm9yQ29kZSYgZWMpOwotCiAgICAgLy8gc2V0IHVwIGN1
cnJlbmN5IGFmZml4IHBhdHRlcm5zIGZvciBtaXggcGFyc2luZy4KICAgICAvLyBUaGUgcGF0dGVy
bnMgc2F2ZWQgaGVyZSBhcmUgdGhlIGFmZml4IHBhdHRlcm5zIG9mIGRlZmF1bHQgY3VycmVuY3kK
ICAgICAvLyBwYXR0ZXJuIGFuZCB0aGUgdW5pcXVlIGFmZml4IHBhdHRlcm5zIG9mIHRoZSBwbHVy
YWwgY3VycmVuY3kgcGF0dGVybnMuCiAgICAgLy8gVGhvc2UgcGF0dGVybnMgYXJlIHVzZWQgYnkg
cGFyc2VGb3JDdXJyZW5jeSgpLgogICAgIHZvaWQgc2V0dXBDdXJyZW5jeUFmZml4UGF0dGVybnMo
VUVycm9yQ29kZSYgc3RhdHVzKTsKIAotICAgIC8vIHNldCB1cCB0aGUgY3VycmVuY3kgYWZmaXhl
cyB1c2VkIGluIGN1cnJlbmN5IHBsdXJhbCBmb3JtYXR0aW5nLgotICAgIC8vIEl0IHNldHMgdXAg
Ym90aCBmQWZmaXhlc0ZvckN1cnJlbmN5IGZvciBjdXJyZW5jeSBwYXR0ZXJuIGlmIHRoZSBjdXJy
ZW50Ci0gICAgLy8gcGF0dGVybiBjb250YWlucyAzIGN1cnJlbmN5IHNpZ25zLAotICAgIC8vIGFu
ZCBpdCBzZXRzIHVwIGZQbHVyYWxBZmZpeGVzRm9yQ3VycmVuY3kgZm9yIGN1cnJlbmN5IHBsdXJh
bCBwYXR0ZXJucy4KLSAgICB2b2lkIHNldHVwQ3VycmVuY3lBZmZpeGVzKGNvbnN0IFVuaWNvZGVT
dHJpbmcmIHBhdHRlcm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBzZXR1
cEZvckN1cnJlbnRQYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wg
c2V0dXBGb3JQbHVyYWxQYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSYgc3RhdHVzKTsKLQkKICAgICAvLyBnZXQgdGhlIGN1cnJlbmN5IHJvdW5kaW5nIHdp
dGggcmVzcGVjdCB0byBjdXJyZW5jeSB1c2FnZQotICAgIGRvdWJsZSBnZXRDdXJyZW5jeVJvdW5k
aW5nKGNvbnN0IFVDaGFyKiBjdXJyZW5jeSwKKyAgICBkb3VibGUgZ2V0Q3VycmVuY3lSb3VuZGlu
Zyhjb25zdCBjaGFyMTZfdCogY3VycmVuY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVUVycm9yQ29kZSogZWMpIGNvbnN0OwotCQorCiAgICAgLy8gZ2V0IHRoZSBjdXJyZW5jeSBm
cmFjdGlvbiB3aXRoIHJlc3BlY3QgdG8gY3VycmVuY3kgdXNhZ2UKLSAgICBpbnQgZ2V0Q3VycmVu
Y3lGcmFjdGlvbkRpZ2l0cyhjb25zdCBVQ2hhciogY3VycmVuY3ksCisgICAgaW50IGdldEN1cnJl
bmN5RnJhY3Rpb25EaWdpdHMoY29uc3QgY2hhcjE2X3QqIGN1cnJlbmN5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVjKSBjb25zdDsKIAogICAgIC8vIGhh
c2h0YWJsZSBvcGVyYXRpb25zCiAgICAgSGFzaHRhYmxlKiBpbml0SGFzaEZvckFmZml4UGF0dGVy
bihVRXJyb3JDb2RlJiBzdGF0dXMpOwotICAgIEhhc2h0YWJsZSogaW5pdEhhc2hGb3JBZmZpeChV
RXJyb3JDb2RlJiBzdGF0dXMpOwogCiAgICAgdm9pZCBkZWxldGVIYXNoRm9yQWZmaXhQYXR0ZXJu
KCk7Ci0gICAgdm9pZCBkZWxldGVIYXNoRm9yQWZmaXgoSGFzaHRhYmxlKiYgdGFibGUpOwogCiAg
ICAgdm9pZCBjb3B5SGFzaEZvckFmZml4UGF0dGVybihjb25zdCBIYXNodGFibGUqIHNvdXJjZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2h0YWJsZSogdGFyZ2V0LCBVRXJy
b3JDb2RlJiBzdGF0dXMpOwotICAgIHZvaWQgY29weUhhc2hGb3JBZmZpeChjb25zdCBIYXNodGFi
bGUqIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaHRhYmxlKiB0YXJnZXQs
IFVFcnJvckNvZGUmIHN0YXR1cyk7Ci0KLSAgICBVbmljb2RlU3RyaW5nJiBfZm9ybWF0KGludDY0
X3QgbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBw
ZW5kVG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uSGFuZGxlciYg
aGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cykg
Y29uc3Q7Ci0gICAgVW5pY29kZVN0cmluZyYgX2Zvcm1hdChkb3VibGUgbnVtYmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uSGFuZGxlciYgaGFuZGxlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7Ci0gICAgVW5pY29k
ZVN0cmluZyYgX2Zvcm1hdChjb25zdCBEaWdpdExpc3QgJm51bWJlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmllbGRQb3NpdGlvbkhhbmRsZXImIGhhbmRsZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpIGNvbnN0OwogCi0gICAgLyoqCi0gICAgICog
Q29uc3RhbnRzLgotICAgICAqLwotCi0gICAgVW5pY29kZVN0cmluZyAgICAgICAgICAgZlBvc2l0
aXZlUHJlZml4OwotICAgIFVuaWNvZGVTdHJpbmcgICAgICAgICAgIGZQb3NpdGl2ZVN1ZmZpeDsK
LSAgICBVbmljb2RlU3RyaW5nICAgICAgICAgICBmTmVnYXRpdmVQcmVmaXg7Ci0gICAgVW5pY29k
ZVN0cmluZyAgICAgICAgICAgZk5lZ2F0aXZlU3VmZml4OwotICAgIFVuaWNvZGVTdHJpbmcqICAg
ICAgICAgIGZQb3NQcmVmaXhQYXR0ZXJuOwotICAgIFVuaWNvZGVTdHJpbmcqICAgICAgICAgIGZQ
b3NTdWZmaXhQYXR0ZXJuOwotICAgIFVuaWNvZGVTdHJpbmcqICAgICAgICAgIGZOZWdQcmVmaXhQ
YXR0ZXJuOwotICAgIFVuaWNvZGVTdHJpbmcqICAgICAgICAgIGZOZWdTdWZmaXhQYXR0ZXJuOwor
ICAgIERlY2ltYWxGb3JtYXRJbXBsICpmSW1wbDsKIAogICAgIC8qKgotICAgICAqIEZvcm1hdHRl
ciBmb3IgQ2hvaWNlRm9ybWF0LWJhc2VkIGN1cnJlbmN5IG5hbWVzLiAgSWYgdGhpcyBmaWVsZAot
ICAgICAqIGlzIG5vdCBudWxsLCB0aGVuIGRlbGVnYXRlIHRvIGl0IHRvIGZvcm1hdCBjdXJyZW5j
eSBzeW1ib2xzLgotICAgICAqIEBzaW5jZSBJQ1UgMi42CisgICAgICogQ29uc3RhbnRzLgogICAg
ICAqLwotICAgIENob2ljZUZvcm1hdCogICAgICAgICAgIGZDdXJyZW5jeUNob2ljZTsKLQotICAg
IERpZ2l0TGlzdCAqICAgICAgICAgICAgIGZNdWx0aXBsaWVyOyAgIC8vIE5VTEwgZm9yIG11bHRp
cGxpZXIgb2Ygb25lCi0gICAgaW50MzJfdCAgICAgICAgICAgICAgICAgZlNjYWxlOwotICAgIGlu
dDMyX3QgICAgICAgICAgICAgICAgIGZHcm91cGluZ1NpemU7Ci0gICAgaW50MzJfdCAgICAgICAg
ICAgICAgICAgZkdyb3VwaW5nU2l6ZTI7Ci0gICAgVUJvb2wgICAgICAgICAgICAgICAgICAgZkRl
Y2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bjsKLSAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyogICBm
U3ltYm9sczsKIAotICAgIFVCb29sICAgICAgICAgICAgICAgICAgIGZVc2VTaWduaWZpY2FudERp
Z2l0czsKLSAgICBpbnQzMl90ICAgICAgICAgICAgICAgICBmTWluU2lnbmlmaWNhbnREaWdpdHM7
Ci0gICAgaW50MzJfdCAgICAgICAgICAgICAgICAgZk1heFNpZ25pZmljYW50RGlnaXRzOwotCi0g
ICAgVUJvb2wgICAgICAgICAgICAgICAgICAgZlVzZUV4cG9uZW50aWFsTm90YXRpb247Ci0gICAg
aW50OF90ICAgICAgICAgICAgICAgICAgZk1pbkV4cG9uZW50RGlnaXRzOwotICAgIFVCb29sICAg
ICAgICAgICAgICAgICAgIGZFeHBvbmVudFNpZ25BbHdheXNTaG93bjsKIAogICAgIEVudW1TZXQ8
VU51bWJlckZvcm1hdEF0dHJpYnV0ZSwKICAgICAgICAgICAgIFVOVU1fTUFYX05PTkJPT0xFQU5f
QVRUUklCVVRFKzEsCiAgICAgICAgICAgICBVTlVNX0xJTUlUX0JPT0xFQU5fQVRUUklCVVRFPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZCb29sRmxhZ3M7CiAKLSAgICBEaWdpdExpc3Qq
ICAgICAgICAgICAgICBmUm91bmRpbmdJbmNyZW1lbnQ7ICAvLyBOVUxMIGlmIG5vIHJvdW5kaW5n
IGluY3JlbWVudCBzcGVjaWZpZWQuCi0gICAgRVJvdW5kaW5nTW9kZSAgICAgICAgICAgZlJvdW5k
aW5nTW9kZTsKLQotICAgIFVDaGFyMzIgICAgICAgICAgICAgICAgIGZQYWQ7Ci0gICAgaW50MzJf
dCAgICAgICAgICAgICAgICAgZkZvcm1hdFdpZHRoOwotICAgIEVQYWRQb3NpdGlvbiAgICAgICAg
ICAgIGZQYWRQb3NpdGlvbjsKIAotICAgIC8qCi0gICAgICogRm9sbG93aW5nIGFyZSB1c2VkIGZv
ciBjdXJyZW5jeSBmb3JtYXQKLSAgICAgKi8KLSAgICAvLyBwYXR0ZXJuIHVzZWQgaW4gdGhpcyBm
b3JtYXR0ZXIKLSAgICBVbmljb2RlU3RyaW5nIGZGb3JtYXRQYXR0ZXJuOwogICAgIC8vIHN0eWxl
IGlzIG9ubHkgdmFsaWQgd2hlbiBkZWNpbWFsIGZvcm1hdHRlciBpcyBjb25zdHJ1Y3RlZCBieQog
ICAgIC8vIERlY2ltYWxGb3JtYXQocGF0dGVybiwgZGVjaW1hbEZvcm1hdFN5bWJvbCwgc3R5bGUp
CiAgICAgaW50IGZTdHlsZTsKLSAgICAvKgotICAgICAqIFJlcHJlc2VudHMgd2hldGhlciB0aGlz
IGlzIGEgY3VycmVuY3kgZm9ybWF0LCBhbmQgd2hpY2gKLSAgICAgKiBjdXJyZW5jeSBmb3JtYXQg
c3R5bGUuCi0gICAgICogMDogbm90IGN1cnJlbmN5IGZvcm1hdCB0eXBlOwotICAgICAqIDE6IGN1
cnJlbmN5IHN0eWxlIC0tIHN5bWJvbCBuYW1lLCBzdWNoIGFzICIkIiBmb3IgVVMgZG9sbGFyLgot
ICAgICAqIDI6IGN1cnJlbmN5IHN0eWxlIC0tIElTTyBuYW1lLCBzdWNoIGFzIFVTRCBmb3IgVVMg
ZG9sbGFyLgotICAgICAqIDM6IGN1cnJlbmN5IHN0eWxlIC0tIHBsdXJhbCBsb25nIG5hbWUsIHN1
Y2ggYXMgIlVTIERvbGxhciIgZm9yCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgIjEuMDAg
VVMgRG9sbGFyIiwgb3IgIlVTIERvbGxhcnMiIGZvcgotICAgICAqICAgICAgICAgICAgICAgICAg
ICAgICIzLjAwIFVTIERvbGxhcnMiLgotICAgICAqLwotICAgIGludCBmQ3VycmVuY3lTaWduQ291
bnQ7Ci0KLQotICAgIC8qIEZvciBjdXJyZW5jeSBwYXJzaW5nIHB1cm9zZSwKLSAgICAgKiBOZWVk
IHRvIHJlbWVtYmVyIGFsbCBwcmVmaXggcGF0dGVybnMgYW5kIHN1ZmZpeCBwYXR0ZXJucyBvZgot
ICAgICAqIGV2ZXJ5IGN1cnJlbmN5IGZvcm1hdCBwYXR0ZXJuLAotICAgICAqIGluY2x1ZGluZyB0
aGUgcGF0dGVybiBvZiBkZWZhdWx0IGN1cnJlY255IHN0eWxlCi0gICAgICogYW5kIHBsdXJhbCBj
dXJyZW5jeSBzdHlsZS4gQW5kIHRoZSBwYXR0ZXJucyBhcmUgc2V0IHRocm91Z2ggYXBwbHlQYXR0
ZXJuLgotICAgICAqLwotICAgIC8vIFRPRE86IGlubmVyY2xhc3M/Ci0gICAgLyogVGhpcyBpcyBu
b3QgbmVlZGVkIGluIHRoZSBjbGFzcyBkZWNsYXJhdGlvbiwgc28gaXQgaXMgbW92ZWQgaW50byBk
ZWNpbWZtcC5jcHAKLSAgICBzdHJ1Y3QgQWZmaXhQYXR0ZXJuc0ZvckN1cnJlbmN5IDogcHVibGlj
IFVNZW1vcnkgewotICAgICAgICAvLyBuZWdhdGl2ZSBwcmVmaXggcGF0dGVybgotICAgICAgICBV
bmljb2RlU3RyaW5nIG5lZ1ByZWZpeFBhdHRlcm5Gb3JDdXJyZW5jeTsKLSAgICAgICAgLy8gbmVn
YXRpdmUgc3VmZml4IHBhdHRlcm4KLSAgICAgICAgVW5pY29kZVN0cmluZyBuZWdTdWZmaXhQYXR0
ZXJuRm9yQ3VycmVuY3k7Ci0gICAgICAgIC8vIHBvc2l0aXZlIHByZWZpeCBwYXR0ZXJuCi0gICAg
ICAgIFVuaWNvZGVTdHJpbmcgcG9zUHJlZml4UGF0dGVybkZvckN1cnJlbmN5OwotICAgICAgICAv
LyBwb3NpdGl2ZSBzdWZmaXggcGF0dGVybgotICAgICAgICBVbmljb2RlU3RyaW5nIHBvc1N1ZmZp
eFBhdHRlcm5Gb3JDdXJyZW5jeTsKLSAgICAgICAgaW50OF90IHBhdHRlcm5UeXBlOwotCi0gICAg
ICAgIEFmZml4UGF0dGVybnNGb3JDdXJyZW5jeShjb25zdCBVbmljb2RlU3RyaW5nJiBuZWdQcmVm
aXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5n
JiBuZWdTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmlj
b2RlU3RyaW5nJiBwb3NQcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBVbmljb2RlU3RyaW5nJiBwb3NTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ4X3QgdHlwZSkgewotICAgICAgICAgICAgbmVnUHJlZml4UGF0dGVybkZvckN1
cnJlbmN5ID0gbmVnUHJlZml4OwotICAgICAgICAgICAgbmVnU3VmZml4UGF0dGVybkZvckN1cnJl
bmN5ID0gbmVnU3VmZml4OwotICAgICAgICAgICAgcG9zUHJlZml4UGF0dGVybkZvckN1cnJlbmN5
ID0gcG9zUHJlZml4OwotICAgICAgICAgICAgcG9zU3VmZml4UGF0dGVybkZvckN1cnJlbmN5ID0g
cG9zU3VmZml4OwotICAgICAgICAgICAgcGF0dGVyblR5cGUgPSB0eXBlOwotICAgICAgICB9Ci0g
ICAgfTsKLSAgICAqLwogCi0gICAgLyogYWZmaXggZm9yIGN1cnJlbmN5IGZvcm1hdHRpbmcgd2hl
biB0aGUgY3VycmVuY3kgc2lnbiBpbiB0aGUgcGF0dGVybgotICAgICAqIGVxdWFscyB0byAzLCBz
dWNoIGFzIHRoZSBwYXR0ZXJuIGNvbnRhaW5zIDMgY3VycmVuY3kgc2lnbiBvcgotICAgICAqIHRo
ZSBmb3JtYXR0ZXIgc3R5bGUgaXMgY3VycmVuY3kgcGx1cmFsIGZvcm1hdCBzdHlsZS4KLSAgICAg
Ki8KLSAgICAvKiBUaGlzIGlzIG5vdCBuZWVkZWQgaW4gdGhlIGNsYXNzIGRlY2xhcmF0aW9uLCBz
byBpdCBpcyBtb3ZlZCBpbnRvIGRlY2ltZm1wLmNwcAotICAgIHN0cnVjdCBBZmZpeGVzRm9yQ3Vy
cmVuY3kgOiBwdWJsaWMgVU1lbW9yeSB7Ci0gICAgICAgIC8vIG5lZ2F0aXZlIHByZWZpeAotICAg
ICAgICBVbmljb2RlU3RyaW5nIG5lZ1ByZWZpeEZvckN1cnJlbmN5OwotICAgICAgICAvLyBuZWdh
dGl2ZSBzdWZmaXgKLSAgICAgICAgVW5pY29kZVN0cmluZyBuZWdTdWZmaXhGb3JDdXJyZW5jeTsK
LSAgICAgICAgLy8gcG9zaXRpdmUgcHJlZml4Ci0gICAgICAgIFVuaWNvZGVTdHJpbmcgcG9zUHJl
Zml4Rm9yQ3VycmVuY3k7Ci0gICAgICAgIC8vIHBvc2l0aXZlIHN1ZmZpeAotICAgICAgICBVbmlj
b2RlU3RyaW5nIHBvc1N1ZmZpeEZvckN1cnJlbmN5OwotCi0gICAgICAgIGludDMyX3QgZm9ybWF0
V2lkdGg7Ci0KLSAgICAgICAgQWZmaXhlc0ZvckN1cnJlbmN5KGNvbnN0IFVuaWNvZGVTdHJpbmcm
IG5lZ1ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJp
bmcmIG5lZ1N1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVT
dHJpbmcmIHBvc1ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIHBvc1N1ZmZpeCkgewotICAgICAgICAgICAgbmVnUHJlZml4Rm9yQ3VycmVuY3kg
PSBuZWdQcmVmaXg7Ci0gICAgICAgICAgICBuZWdTdWZmaXhGb3JDdXJyZW5jeSA9IG5lZ1N1ZmZp
eDsKLSAgICAgICAgICAgIHBvc1ByZWZpeEZvckN1cnJlbmN5ID0gcG9zUHJlZml4OwotICAgICAg
ICAgICAgcG9zU3VmZml4Rm9yQ3VycmVuY3kgPSBwb3NTdWZmaXg7Ci0gICAgICAgIH0KLSAgICB9
OwotICAgICovCiAKICAgICAvLyBBZmZpeCBwYXR0ZXJuIHNldCBmb3IgY3VycmVuY3kuCiAgICAg
Ly8gSXQgaXMgYSBzZXQgb2YgQWZmaXhQYXR0ZXJuc0ZvckN1cnJlbmN5LApAQCAtMjM4NSwxNiAr
MjIxOSw2IEBAIHByaXZhdGU6CiAgICAgLy8gY291bnQgbWF0Y2ggb3Igbm90LgogICAgIEhhc2h0
YWJsZSogZkFmZml4UGF0dGVybnNGb3JDdXJyZW5jeTsKIAotICAgIC8vIEZvbGxvd2luZyAyIGFy
ZSBhZmZpeGVzIGZvciBjdXJyZW5jeS4KLSAgICAvLyBJdCBpcyBhIGhhc2ggbWFwIGZyb20gcGx1
cmFsIGNvdW50IHRvIEFmZml4ZXNGb3JDdXJyZW5jeS4KLSAgICAvLyBBZmZpeGVzRm9yQ3VycmVu
Y3kgc2F2ZXMgdGhlIG5lZ2F0aXZlIHByZWZpeCwKLSAgICAvLyBuZWdhdGl2ZSBzdWZmaXgsIHBv
c2l0aXZlIHByZWZpeCwgYW5kIHBvc2l0aXZlIHN1ZmZpeCBvZiBhIHBhdHRlcm4uCi0gICAgLy8g
SXQgaXMgdXNlZCBkdXJpbmcgY3VycmVuY3kgZm9ybWF0dGluZyBvbmx5IHdoZW4gdGhlIGN1cnJl
bmN5IHNpZ24gY291bnQKLSAgICAvLyBpcyAzLiBJbiB3aGljaCBjYXNlLCB0aGUgYWZmaXhlcyBh
cmUgZ2V0dGluZyBmcm9tIGhlcmUsIG5vdAotICAgIC8vIGZyb20gdGhlIGZOZWdhdGl2ZVByZWZp
eCBldGMuCi0gICAgSGFzaHRhYmxlKiBmQWZmaXhlc0ZvckN1cnJlbmN5OyAgLy8gZm9yIGN1cnJl
bnQgcGF0dGVybgotICAgIEhhc2h0YWJsZSogZlBsdXJhbEFmZml4ZXNGb3JDdXJyZW5jeTsgIC8v
IGZvciBwbHVyYWwgcGF0dGVybgotCiAgICAgLy8gSW5mb3JtYXRpb24gbmVlZGVkIGZvciBEZWNp
bWFsRm9ybWF0IHRvIGZvcm1hdC9wYXJzZSBjdXJyZW5jeSBwbHVyYWwuCiAgICAgQ3VycmVuY3lQ
bHVyYWxJbmZvKiBmQ3VycmVuY3lQbHVyYWxJbmZvOwogCkBAIC0yNDA0LDkgKzIyMjgsNiBAQCBw
cml2YXRlOgogCiAgICAgLy8gRGVjaW1hbCBGb3JtYXQgU3RhdGljIFNldHMgc2luZ2xldG9uLgog
ICAgIGNvbnN0IERlY2ltYWxGb3JtYXRTdGF0aWNTZXRzICpmU3RhdGljU2V0czsKLQkKLSAgICAv
LyBDdXJyZW5jeSBVc2FnZShTVEFOREFSRCB2cyBDQVNIKQotICAgIFVDdXJyZW5jeVVzYWdlIGZD
dXJyZW5jeVVzYWdlOwogCiBwcm90ZWN0ZWQ6CiAKQEAgLTI0MjYsNyArMjI0Nyw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgKiBoYXZlIGEgY2FwYWNpdHkgb2YgYXQgbGVhc3QgNAogICAgICAqIEBpbnRl
cm5hbAogICAgICAqLwotICAgIHZpcnR1YWwgdm9pZCBnZXRFZmZlY3RpdmVDdXJyZW5jeShVQ2hh
ciogcmVzdWx0LCBVRXJyb3JDb2RlJiBlYykgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGdldEVm
ZmVjdGl2ZUN1cnJlbmN5KGNoYXIxNl90KiByZXN1bHQsIFVFcnJvckNvZGUmIGVjKSBjb25zdDsK
IAogICAvKiogbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzCiAgICAqIEBzdGFibGUgSUNVIDIuNApA
QCAtMjQ0OSwyNyArMjI3MCw4IEBAIHByb3RlY3RlZDoKICAgICAgKi8KICAgICBzdGF0aWMgY29u
c3QgaW50MzJfdCAga01heFNjaWVudGlmaWNJbnRlZ2VyRGlnaXRzOwogCi0jaWYgVUNPTkZJR19G
T1JNQVRfRkFTVFBBVEhTXzQ5Ci0gcHJpdmF0ZToKLSAgICAvKioKLSAgICAgKiBJbnRlcm5hbCBz
dGF0ZS4KLSAgICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAgICB1aW50OF90IGZSZXNlcnZlZFtV
TlVNX0RFQ0lNQUxGT1JNQVRfSU5URVJOQUxfU0laRV07Ci0KLQotICAgIC8qKgotICAgICAqIENh
bGxlZCB3aGVuZXZlciBhbnkgc3RhdGUgY2hhbmdlcy4gUmVjb21wdXRlcyB3aGV0aGVyIGZhc3Rw
YXRoIGlzIE9LIHRvIHVzZS4KLSAgICAgKi8KLSAgICB2b2lkIGhhbmRsZUNoYW5nZWQoKTsKLSNl
bmRpZgogfTsKIAotaW5saW5lIGNvbnN0IFVuaWNvZGVTdHJpbmcgJgotRGVjaW1hbEZvcm1hdDo6
Z2V0Q29uc3RTeW1ib2woRGVjaW1hbEZvcm1hdFN5bWJvbHM6OkVOdW1iZXJGb3JtYXRTeW1ib2wg
c3ltYm9sKSBjb25zdCB7Ci0gICAgcmV0dXJuIGZTeW1ib2xzLT5nZXRDb25zdFN5bWJvbChzeW1i
b2wpOwotfQotCiBVX05BTUVTUEFDRV9FTkQKIAogI2VuZGlmIC8qICNpZiAhVUNPTkZJR19OT19G
T1JNQVRUSU5HICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2RvY21haW4u
aCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZG9jbWFpbi5oCmluZGV4IGRmM2ZlODQyYWFjZjFk
ZGVlYjFlYzc3ZTFiMmQ0MGUzYWU1Zjc1NzYuLjYzNjkzMWNmMjU4MjFiZmFlNWM4Y2RiZjM1NjVi
YjU0OGQ2YTMwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZG9jbWFpbi5o
CisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZG9jbWFpbi5oCkBAIC0xLDMgKzEsNSBAQAor
Ly8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vu
c2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwK
IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgogICogQ09QWVJJR0hUOiAKICAqIENvcHlyaWdodCAoYykgMTk5Ny0yMDEy
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZApAQCAtOTYs
NiArOTgsMTEgQEAKICAqICAgICA8dGQ+QyBBUEk8L3RkPgogICogICA8L3RyPgogICogICA8dHI+
CisgKiAgICAgPHRkPkNvZGVwYWdlIERldGVjdGlvbjwvdGQ+CisgKiAgICAgPHRkPnVjc2RldC5o
PC90ZD4KKyAqICAgICA8dGQ+QyBBUEk8L3RkPgorICogICA8L3RyPgorICogICA8dHI+CiAgKiAg
ICAgPHRkPlVuaWNvZGUgVGV4dCBDb21wcmVzc2lvbjwvdGQ+CiAgKiAgICAgPHRkPnVjbnYuaDxi
ci8+KGVuY29kaW5nIG5hbWUgIlNDU1UiIG9yICJCT0NVLTEiKTwvdGQ+CiAgKiAgICAgPHRkPkMg
QVBJPC90ZD4KQEAgLTEzMyw3ICsxNDAsNyBAQAogICogICA8dHI+CiAgKiAgICAgPHRkPk51bWJl
ciBGb3JtYXR0aW5nPC90ZD4KICAqICAgICA8dGQ+dW51bS5oPC90ZD4KLSAqICAgICA8dGQ+aWN1
OjpOdW1iZXJGb3JtYXQ8L3RkPgorICogICAgIDx0ZD5pY3U6Om51bWJlcjo6TnVtYmVyRm9ybWF0
dGVyIChJQ1UgNjArKSBvciBpY3U6Ok51bWJlckZvcm1hdCAob2xkZXIgdmVyc2lvbnMpPC90ZD4K
ICAqICAgPC90cj4KICAqICAgPHRyPgogICogICAgIDx0ZD5OdW1iZXIgU3BlbGxvdXQ8YnIvPihS
dWxlIEJhc2VkIE51bWJlciBGb3JtYXR0aW5nKTwvdGQ+CkBAIC0xNDcsNyArMTU0LDcgQEAKICAq
ICAgPC90cj4KICAqICAgPHRyPgogICogICAgIDx0ZD5CaWRpcmVjdGlvbmFsIEFsZ29yaXRobTwv
dGQ+Ci0gKiAgICAgPHRkPnViaWRpLmg8L3RkPgorICogICAgIDx0ZD51YmlkaS5oLCB1YmlkaXRy
YW5zZm9ybS5oPC90ZD4KICAqICAgICA8dGQ+QyBBUEk8L3RkPgogICogICA8L3RyPgogICogICA8
dHI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2R0Zm10c3ltLmggYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL2R0Zm10c3ltLmgKaW5kZXggNzhkMGNlYjVhOTA5ODYzY2Y3YjE5
ZGM1NWJkOGFiZTJjMmNhYWMwMi4uZmU5MTRiNDYxZTYyNDlmNjAyZTdlZTUxMTM4ODgzNmE4MDRh
MmNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9kdGZtdHN5bS5oCisrKyBi
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRmbXRzeW0uaApAQCAtMSw2ICsxLDggQEAKLS8qICAK
Ky8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNl
bnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1s
CisvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAx
NSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMTk5
Ny0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24g
YW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgogKgpAQCAtMTQsMjIgKzE2LDIzIEBACiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIENo
YW5nZWQgdG8gbWF0Y2ggQysrIGNvbnZlbnRpb25zCiAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog
Ki8KLSAgICAgCisKICNpZm5kZWYgRFRGTVRTWU1fSAogI2RlZmluZSBEVEZNVFNZTV9ICi0gCisK
ICNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgogCiAjaWYgIVVDT05GSUdfTk9fRk9STUFUVElO
RwogCiAjaW5jbHVkZSAidW5pY29kZS9jYWxlbmRhci5oIgorI2luY2x1ZGUgInVuaWNvZGUvc3Ry
ZW51bS5oIgogI2luY2x1ZGUgInVuaWNvZGUvdW9iamVjdC5oIgogI2luY2x1ZGUgInVuaWNvZGUv
bG9jaWQuaCIKICNpbmNsdWRlICJ1bmljb2RlL3VkYXQuaCIKICNpbmNsdWRlICJ1bmljb2RlL3Vy
ZXMuaCIKIAogLyoqCi0gKiBcZmlsZSAKKyAqIFxmaWxlCiAgKiBcYnJpZWYgQysrIEFQSTogU3lt
Ym9scyBmb3IgZm9ybWF0dGluZyBkYXRlcy4KICAqLwogCkBAIC0xMTUsNyArMTE4LDcgQEAgcHVi
bGljOgogICAgICAqIGRhdGEgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZSwgaXQgd2lsbCByZXR1cm4g
YSBsYXN0LXJlc29ydCBvYmplY3QKICAgICAgKiBiYXNlZCBvbiBoYXJkLWNvZGVkIHN0cmluZ3Mu
CiAgICAgICoKLSAgICAgKiBAcGFyYW0gdHlwZSAgICAgIFR5cGUgb2YgY2FsZW5kYXIgKGFzIHJl
dHVybmVkIGJ5IENhbGVuZGFyOjpnZXRUeXBlKS4gCisgICAgICogQHBhcmFtIHR5cGUgICAgICBU
eXBlIG9mIGNhbGVuZGFyIChhcyByZXR1cm5lZCBieSBDYWxlbmRhcjo6Z2V0VHlwZSkuCiAgICAg
ICogICAgICAgICAgICAgICAgICBXaWxsIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBjb3JyZWN0IHNl
dCBvZiBzdHJpbmdzLgogICAgICAqICAgICAgICAgICAgICAgICAgKE5VTEwgb3IgZW1wdHkgc3Ry
aW5nIGRlZmF1bHRzIHRvICJncmVnb3JpYW4iLikKICAgICAgKiBAcGFyYW0gc3RhdHVzICAgIFN0
YXR1cyBjb2RlLiAgRmFpbHVyZQpAQCAtMTMwLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICAgKiBy
ZXNvdXJjZXMgZm9yIHRoZSBnaXZlbiBsb2NhbGUsIGluIHRoZSBkZWZhdWx0IGNhbGVuZGFyIChH
cmVnb3JpYW4pLgogICAgICAqCiAgICAgICogQHBhcmFtIGxvY2FsZSAgICBMb2NhbGUgdG8gbG9h
ZCBmb3JtYXQgZGF0YSBmcm9tLgotICAgICAqIEBwYXJhbSB0eXBlICAgICAgVHlwZSBvZiBjYWxl
bmRhciAoYXMgcmV0dXJuZWQgYnkgQ2FsZW5kYXI6OmdldFR5cGUpLiAKKyAgICAgKiBAcGFyYW0g
dHlwZSAgICAgIFR5cGUgb2YgY2FsZW5kYXIgKGFzIHJldHVybmVkIGJ5IENhbGVuZGFyOjpnZXRU
eXBlKS4KICAgICAgKiAgICAgICAgICAgICAgICAgIFdpbGwgYmUgdXNlZCB0byBhY2Nlc3MgdGhl
IGNvcnJlY3Qgc2V0IG9mIHN0cmluZ3MuCiAgICAgICogICAgICAgICAgICAgICAgICAoTlVMTCBv
ciBlbXB0eSBzdHJpbmcgZGVmYXVsdHMgdG8gImdyZWdvcmlhbiIuKQogICAgICAqIEBwYXJhbSBz
dGF0dXMgICAgU3RhdHVzIGNvZGUuICBGYWlsdXJlCkBAIC0yNzAsOSArMjczLDE1IEBAIHB1Ymxp
YzoKICAgICAgKiBAc3RhYmxlIElDVSAzLjYKICAgICAgKi8KICAgICBlbnVtIER0Q29udGV4dFR5
cGUgewotICAgICAgICAgRk9STUFULAotICAgICAgICAgU1RBTkRBTE9ORSwKLSAgICAgICAgIERU
X0NPTlRFWFRfQ09VTlQKKyAgICAgICAgRk9STUFULAorICAgICAgICBTVEFOREFMT05FLAorI2lm
bmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAgICAgLyoqCisgICAgICAgICAqIE9uZSBt
b3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIER0Q29udGV4dFR5cGUgdmFsdWUuCisgICAgICAg
ICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIg
dGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAgICAgKi8KKyAgICAgICAgRFRfQ09O
VEVYVF9DT1VOVAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgICB9OwogCiAg
ICAgLyoqCkBAIC0yODAsMTcgKzI4OSwyMSBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1Ug
My42CiAgICAgICovCiAgICAgZW51bSBEdFdpZHRoVHlwZSB7Ci0gICAgICAgICBBQkJSRVZJQVRF
RCwKLSAgICAgICAgIFdJREUsCi0gICAgICAgICBOQVJST1csCi0gICAgICAgICAvKioKLSAgICAg
ICAgICAqIFNob3J0IHdpZHRoIGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCBmb3Igd2Vla2Rh
eSBuYW1lcy4KLSAgICAgICAgICAqIEBzdGFibGUgSUNVIDUxCi0gICAgICAgICAgKi8KLSAgICAg
ICAgIFNIT1JULAotICAgICAgICAgLyoqCi0gICAgICAgICAgKi8KLSAgICAgICAgIERUX1dJRFRI
X0NPVU5UID0gNAorICAgICAgICBBQkJSRVZJQVRFRCwKKyAgICAgICAgV0lERSwKKyAgICAgICAg
TkFSUk9XLAorICAgICAgICAvKioKKyAgICAgICAgICogU2hvcnQgd2lkdGggaXMgY3VycmVudGx5
IG9ubHkgc3VwcG9ydGVkIGZvciB3ZWVrZGF5IG5hbWVzLgorICAgICAgICAgKiBAc3RhYmxlIElD
VSA1MQorICAgICAgICAgKi8KKyAgICAgICAgU0hPUlQsCisjaWZuZGVmIFVfSElERV9ERVBSRUNB
VEVEX0FQSQorICAgICAgICAvKioKKyAgICAgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVz
dCBub3JtYWwgRHRXaWR0aFR5cGUgdmFsdWUuCisgICAgICAgICAqIEBkZXByZWNhdGVkIElDVSA1
OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQg
IzEyNDIwLgorICAgICAgICAgKi8KKyAgICAgICAgRFRfV0lEVEhfQ09VTlQgPSA0CisjZW5kaWYg
IC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAgIH07CiAKICAgICAvKioKQEAgLTQxNCwzMyAr
NDI3LDMwIEBAIHB1YmxpYzoKICAgICAgKiBkb2Vzbid0IHNwZWNpZnkgYW55IHRpbWUgc2VwYXJh
dG9yLCBhbmQgYWx3YXlzIHJlY29nbml6ZWQgd2hlbiBwYXJzaW5nLgogICAgICAqIEBpbnRlcm5h
bAogICAgICAqLwotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBERUZBVUxUX1RJTUVfU0VQQVJBVE9S
ID0gMHgwMDNhOyAgLy8gJzonCisgICAgc3RhdGljIGNvbnN0IGNoYXIxNl90IERFRkFVTFRfVElN
RV9TRVBBUkFUT1IgPSAweDAwM2E7ICAvLyAnOicKIAogICAgIC8qKgogICAgICAqIFRoaXMgYWx0
ZXJuYXRlIHRpbWUgc2VwYXJhdG9yIGlzIGFsd2F5cyByZWNvZ25pemVkIHdoZW4gcGFyc2luZy4K
ICAgICAgKiBAaW50ZXJuYWwKICAgICAgKi8KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgQUxURVJO
QVRFX1RJTUVfU0VQQVJBVE9SID0gMHgwMDJlOyAgLy8gJy4nCi0jZW5kaWYgIC8qIFVfSElERV9J
TlRFUk5BTF9BUEkgKi8KKyAgICBzdGF0aWMgY29uc3QgY2hhcjE2X3QgQUxURVJOQVRFX1RJTUVf
U0VQQVJBVE9SID0gMHgwMDJlOyAgLy8gJy4nCiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQog
ICAgIC8qKgogICAgICAqIEdldHMgdGhlIHRpbWUgc2VwYXJhdG9yIHN0cmluZy4gRm9yIGV4YW1w
bGU6ICI6Ii4KICAgICAgKiBAcGFyYW0gcmVzdWx0IE91dHB1dCBwYXJhbSB3aGljaCB3aWxsIHJl
Y2VpdmUgdGhlIHRpbWUgc2VwYXJhdG9yIHN0cmluZy4KICAgICAgKiBAcmV0dXJuICAgICAgIEEg
cmVmZXJlbmNlIHRvICdyZXN1bHQnLgotICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBAaW50
ZXJuYWwKICAgICAgKi8KICAgICBVbmljb2RlU3RyaW5nJiBnZXRUaW1lU2VwYXJhdG9yU3RyaW5n
KFVuaWNvZGVTdHJpbmcmIHJlc3VsdCkgY29uc3Q7CiAKICAgICAvKioKICAgICAgKiBTZXRzIHRo
ZSB0aW1lIHNlcGFyYXRvciBzdHJpbmcuIEZvciBleGFtcGxlOiAiOiIuCiAgICAgICogQHBhcmFt
IG5ld1RpbWVTZXBhcmF0b3IgdGhlIG5ldyB0aW1lIHNlcGFyYXRvciBzdHJpbmcuCi0gICAgICog
QGRyYWZ0IElDVSA1NQorICAgICAqIEBpbnRlcm5hbAogICAgICAqLwogICAgIHZvaWQgc2V0VGlt
ZVNlcGFyYXRvclN0cmluZyhjb25zdCBVbmljb2RlU3RyaW5nJiBuZXdUaW1lU2VwYXJhdG9yKTsK
LSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLworI2VuZGlmICAvKiBVX0hJREVfSU5URVJO
QUxfQVBJICovCiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIEdl
dHMgY3ljbGljIHllYXIgbmFtZSBzdHJpbmdzIGlmIHRoZSBjYWxlbmRhciBoYXMgdGhlbSwgYnkg
d2lkdGggYW5kIGNvbnRleHQuCiAgICAgICogRm9yIGV4YW1wbGU6ICJqaWEtemkiLCAieWktY2hv
dSIsIGV0Yy4KQEAgLTQ0OSw3ICs0NTksNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHdpZHRo
ICAgICBUaGUgcmVxdWVzdGVkIG5hbWUgd2lkdGg6IFdJREUsIEFCQlJFVklBVEVELCBOQVJST1cu
CiAgICAgICogQHJldHVybiAgICAgICAgICBUaGUgeWVhciBuYW1lIHN0cmluZ3MgKERhdGVGb3Jt
YXRTeW1ib2xzIHJldGFpbnMgb3duZXJzaGlwKSwKICAgICAgKiAgICAgICAgICAgICAgICAgIG9y
IG51bGwgaWYgdGhleSBhcmUgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBjYWxlbmRhci4KLSAgICAg
KiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBjb25z
dCBVbmljb2RlU3RyaW5nKiBnZXRZZWFyTmFtZXMoaW50MzJfdCYgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRHRDb250ZXh0VHlwZSBjb250ZXh0LCBEdFdpZHRoVHlwZSB3aWR0
aCkgY29uc3Q7CkBAIC00NjEsNyArNDcxLDcgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSBjb3Vu
dCAgICAgVGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkuCiAgICAgICogQHBhcmFtIGNvbnRleHQgICBU
aGUgdXNhZ2UgY29udGV4dDogRk9STUFULCBTVEFOREFMT05FIChjdXJyZW50bHkgb25seSBGT1JN
QVQgaXMgc3VwcG9ydGVkKS4KICAgICAgKiBAcGFyYW0gd2lkdGggICAgIFRoZSBuYW1lIHdpZHRo
OiBXSURFLCBBQkJSRVZJQVRFRCwgTkFSUk9XIChjdXJyZW50bHkgb25seSBBQkJSRVZJQVRFRCBp
cyBzdXBwb3J0ZWQpLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1
NAogICAgICAqLwogICAgIHZvaWQgc2V0WWVhck5hbWVzKGNvbnN0IFVuaWNvZGVTdHJpbmcqIHll
YXJOYW1lcywgaW50MzJfdCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdENv
bnRleHRUeXBlIGNvbnRleHQsIER0V2lkdGhUeXBlIHdpZHRoKTsKQEAgLTQ3NCw3ICs0ODQsNyBA
QCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHdpZHRoICAgICBUaGUgcmVxdWVzdGVkIG5hbWUgd2lk
dGg6IFdJREUsIEFCQlJFVklBVEVELCBOQVJST1cuCiAgICAgICogQHJldHVybiAgICAgICAgICBU
aGUgem9kaWFjIG5hbWUgc3RyaW5ncyAoRGF0ZUZvcm1hdFN5bWJvbHMgcmV0YWlucyBvd25lcnNo
aXApLAogICAgICAqICAgICAgICAgICAgICAgICAgb3IgbnVsbCBpZiB0aGV5IGFyZSBub3QgYXZh
aWxhYmxlIGZvciB0aGlzIGNhbGVuZGFyLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBA
c3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcqIGdldFpvZGlh
Y05hbWVzKGludDMyX3QmIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIER0Q29u
dGV4dFR5cGUgY29udGV4dCwgRHRXaWR0aFR5cGUgd2lkdGgpIGNvbnN0OwpAQCAtNDg2LDEzICs0
OTYsMTEgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSBjb3VudCAgICAgVGhlIGxlbmd0aCBvZiB0
aGUgYXJyYXkuCiAgICAgICogQHBhcmFtIGNvbnRleHQgICBUaGUgdXNhZ2UgY29udGV4dDogRk9S
TUFULCBTVEFOREFMT05FIChjdXJyZW50bHkgb25seSBGT1JNQVQgaXMgc3VwcG9ydGVkKS4KICAg
ICAgKiBAcGFyYW0gd2lkdGggICAgIFRoZSBuYW1lIHdpZHRoOiBXSURFLCBBQkJSRVZJQVRFRCwg
TkFSUk9XIChjdXJyZW50bHkgb25seSBBQkJSRVZJQVRFRCBpcyBzdXBwb3J0ZWQpLgotICAgICAq
IEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHZvaWQg
c2V0Wm9kaWFjTmFtZXMoY29uc3QgVW5pY29kZVN0cmluZyogem9kaWFjTmFtZXMsIGludDMyX3Qg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHRDb250ZXh0VHlwZSBjb250ZXh0
LCBEdFdpZHRoVHlwZSB3aWR0aCk7CiAKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLwot
CiAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAgICAvKioKICAgICAgKiBTb21ld2hhdCB0
ZW1wb3JhcnkgY29uc3RhbnRzIGZvciBsZWFwIG1vbnRoIHBhdHRlcm4gdHlwZXMsIGFkZXF1YXRl
IGZvciBzdXBwb3J0aW5nCkBAIC01NTksNyArNTY3LDcgQEAgcHVibGljOgogICAgICAqIEByZXR1
cm4gICAgdGhlIG5vbi1sb2NhbGl6ZWQgZGF0ZS10aW1lIHBhdHRlcm4gY2hhcmFjdGVycwogICAg
ICAqIEBzdGFibGUgSUNVIDIuMAogICAgICAqLwotICAgIHN0YXRpYyBjb25zdCBVQ2hhciAqIFVf
RVhQT1JUMiBnZXRQYXR0ZXJuVUNoYXJzKHZvaWQpOworICAgIHN0YXRpYyBjb25zdCBjaGFyMTZf
dCAqIFVfRVhQT1JUMiBnZXRQYXR0ZXJuVUNoYXJzKHZvaWQpOwogCiAgICAgLyoqCiAgICAgICog
R2V0cyBsb2NhbGl6ZWQgZGF0ZS10aW1lIHBhdHRlcm4gY2hhcmFjdGVycy4gRm9yIGV4YW1wbGU6
ICd1JywgJ3QnLCBldGMuCkBAIC04NTUsNiArODYzLDQyIEBAIHByaXZhdGU6CiAgICAgICovCiAg
ICAgIFVCb29sIGZDYXBpdGFsaXphdGlvbltrQ2FwQ29udGV4dFVzYWdlVHlwZUNvdW50XVsyXTsK
IAorICAgIC8qKgorICAgICAqIEFiYnJldmlhdGVkICg9PSBzaG9ydCkgZGF5IHBlcmlvZCBzdHJp
bmdzLgorICAgICAqLworICAgIFVuaWNvZGVTdHJpbmcgICpmQWJicmV2aWF0ZWREYXlQZXJpb2Rz
OworICAgIGludDMyX3QgICAgICAgICBmQWJicmV2aWF0ZWREYXlQZXJpb2RzQ291bnQ7CisKKyAg
ICAvKioKKyAgICAgKiBXaWRlIGRheSBwZXJpb2Qgc3RyaW5ncy4KKyAgICAgKi8KKyAgICBVbmlj
b2RlU3RyaW5nICAqZldpZGVEYXlQZXJpb2RzOworICAgIGludDMyX3QgICAgICAgICBmV2lkZURh
eVBlcmlvZHNDb3VudDsKKworICAgIC8qKgorICAgICAqIE5hcnJvdyBkYXkgcGVyaW9kIHN0cmlu
Z3MuCisgICAgICovCisgICAgVW5pY29kZVN0cmluZyAgKmZOYXJyb3dEYXlQZXJpb2RzOworICAg
IGludDMyX3QgICAgICAgICBmTmFycm93RGF5UGVyaW9kc0NvdW50OworCisgICAgLyoqCisgICAg
ICogU3RhbmQtYWxvbmUgYWJicmV2aWF0ZWQgKD09IHNob3J0KSBkYXkgcGVyaW9kIHN0cmluZ3Mu
CisgICAgICovCisgICAgVW5pY29kZVN0cmluZyAgKmZTdGFuZGFsb25lQWJicmV2aWF0ZWREYXlQ
ZXJpb2RzOworICAgIGludDMyX3QgICAgICAgICBmU3RhbmRhbG9uZUFiYnJldmlhdGVkRGF5UGVy
aW9kc0NvdW50OworCisgICAgLyoqCisgICAgICogU3RhbmQtYWxvbmUgd2lkZSBkYXkgcGVyaW9k
IHN0cmluZ3MuCisgICAgICovCisgICAgVW5pY29kZVN0cmluZyAgKmZTdGFuZGFsb25lV2lkZURh
eVBlcmlvZHM7CisgICAgaW50MzJfdCAgICAgICAgIGZTdGFuZGFsb25lV2lkZURheVBlcmlvZHND
b3VudDsKKworICAgIC8qKgorICAgICAqIFN0YW5kLWFsb25lIG5hcnJvdyBkYXkgcGVyaW9kIHN0
cmluZ3MuCisgICAgICovCisgICAgVW5pY29kZVN0cmluZyAgKmZTdGFuZGFsb25lTmFycm93RGF5
UGVyaW9kczsKKyAgICBpbnQzMl90ICAgICAgICAgZlN0YW5kYWxvbmVOYXJyb3dEYXlQZXJpb2Rz
Q291bnQ7CisKIHByaXZhdGU6CiAgICAgLyoqIHZhbGlkL2FjdHVhbCBsb2NhbGUgaW5mb3JtYXRp
b24gCiAgICAgICogIHRoZXNlIGFyZSBhbHdheXMgSUNVIGxvY2FsZXMsIHNvIHRoZSBsZW5ndGgg
c2hvdWxkIG5vdCBiZSBhIHByb2JsZW0KQEAgLTkzNCw3ICs5NzgsNyBAQCBwcml2YXRlOgogICAg
ICAqIFJldHVybnMgdGhlIGRhdGUgZm9ybWF0IGZpZWxkIGluZGV4IG9mIHRoZSBwYXR0ZXJuIGNo
YXJhY3RlciBjLAogICAgICAqIG9yIFVEQVRfRklFTERfQ09VTlQgaWYgYyBpcyBub3QgYSBwYXR0
ZXJuIGNoYXJhY3Rlci4KICAgICAgKi8KLSAgICBzdGF0aWMgVURhdGVGb3JtYXRGaWVsZCBVX0VY
UE9SVDIgZ2V0UGF0dGVybkNoYXJJbmRleChVQ2hhciBjKTsKKyAgICBzdGF0aWMgVURhdGVGb3Jt
YXRGaWVsZCBVX0VYUE9SVDIgZ2V0UGF0dGVybkNoYXJJbmRleChjaGFyMTZfdCBjKTsKIAogICAg
IC8qKgogICAgICAqIFJldHVybnMgVFJVRSBpZiBmICh3aXRoIGl0cyBwYXR0ZXJuIGNoYXJhY3Rl
ciByZXBlYXRlZCBjb3VudCB0aW1lcykgaXMgYSBudW1lcmljIGZpZWxkLgpAQCAtOTQ0LDcgKzk4
OCw3IEBAIHByaXZhdGU6CiAgICAgLyoqCiAgICAgICogUmV0dXJucyBUUlVFIGlmIGMgKHJlcGVh
dGVkIGNvdW50IHRpbWVzKSBpcyB0aGUgcGF0dGVybiBjaGFyYWN0ZXIgZm9yIGEgbnVtZXJpYyBm
aWVsZC4KICAgICAgKi8KLSAgICBzdGF0aWMgVUJvb2wgVV9FWFBPUlQyIGlzTnVtZXJpY1BhdHRl
cm5DaGFyKFVDaGFyIGMsIGludDMyX3QgY291bnQpOworICAgIHN0YXRpYyBVQm9vbCBVX0VYUE9S
VDIgaXNOdW1lcmljUGF0dGVybkNoYXIoY2hhcjE2X3QgYywgaW50MzJfdCBjb3VudCk7CiBwdWJs
aWM6CiAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAgICAvKioKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRpbnRydi5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9k
dGludHJ2LmgKaW5kZXggNWJhY2NlODg0NDY3NDhlMDNlM2I5NDlkOWJmNTI4MWVhODVhNTk0My4u
MTBiNTY2YTM5YThiZTNiMDBlYmZkOWJkNDJmNmRkOGM4ZmQ2ZWQ0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9pY3UvdW5pY29kZS9kdGludHJ2LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29k
ZS9kdGludHJ2LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29k
ZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3
dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGlu
ZXMgQ29ycG9yYXRpb24gYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2R0
aXR2Zm10LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2R0aXR2Zm10LmgKaW5kZXggZmIyN2Vl
YzQ4MTU4ZDJlOGJiZjFiNzU4NGYyNGM5NWQ4MmJkZDg1Zi4uNWVhYTU1OWQwZWFmNDhhNDE2ZWNi
MDM0MDZhZjc1OGYyNzkwMTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9k
dGl0dmZtdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRpdHZmbXQuaApAQCAtMSw1
ICsxLDcgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMu
CisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHly
aWdodC5odG1sCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMTMsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisq
IENvcHlyaWdodCAoQykgMjAwOC0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVz
IENvcnBvcmF0aW9uIGFuZAogKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiAqCkBAIC05Myw5ICs5NSwxMSBAQCBVX05BTUVTUEFDRV9CRUdJTgog
ICoKICAqIDxQPgogICogVGhlIGNhbGVuZGFyIGZpZWxkcyB3ZSBzdXBwb3J0IGZvciBpbnRlcnZh
bCBmb3JtYXR0aW5nIGFyZToKLSAqIHllYXIsIG1vbnRoLCBkYXRlLCBkYXktb2Ytd2VlaywgYW0t
cG0sIGhvdXIsIGhvdXItb2YtZGF5LCBhbmQgbWludXRlLgorICogeWVhciwgbW9udGgsIGRhdGUs
IGRheS1vZi13ZWVrLCBhbS1wbSwgaG91ciwgaG91ci1vZi1kYXksIG1pbnV0ZSwgYW5kIHNlY29u
ZAorICogKHRob3VnaCB3ZSBkbyBub3QgY3VycmVudGx5IGhhdmUgc3BlY2lmaWMgaW50ZXJ2YWxG
b3JtYXQgZGF0ZSBmb3Igc2tlbGV0b25zCisgKiB3aXRoIHNlY29uZHMpLgogICogVGhvc2UgY2Fs
ZW5kYXIgZmllbGRzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6Ci0gKiB5
ZWFyID4gIG1vbnRoID4gZGF0ZSA+IGhvdXIgKGluIGRheSkgPiAgbWludXRlCisgKiB5ZWFyID4g
IG1vbnRoID4gZGF0ZSA+IGhvdXIgKGluIGRheSkgPiAgbWludXRlID4gc2Vjb25kCiAgKgogICog
VGhlIGxhcmdlc3QgZGlmZmVyZW50IGNhbGVuZGFyIGZpZWxkcyBiZXR3ZWVuIDIgY2FsZW5kYXJz
IGlzIHRoZQogICogZmlyc3QgZGlmZmVyZW50IGNhbGVuZGFyIGZpZWxkIGluIGFib3ZlIG9yZGVy
LgpAQCAtMzg3LDYgKzM5MSw5IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgogICAgICAqIEBw
YXJhbSBmaWVsZFBvc2l0aW9uICAgICBPbiBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLCBpZiBk
ZXNpcmVkLgogICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQ6IHRoZSBv
ZmZzZXRzIG9mIHRoZSBhbGlnbm1lbnQgZmllbGQuCisgICAgICogICAgICAgICAgICAgICAgICAg
ICAgICAgIFRoZXJlIG1heSBiZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgYSBnaXZlbiBmaWVsZCB0
eXBlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGluIGFuIGludGVydmFsIGZvcm1h
dDsgaW4gdGhpcyBjYXNlIHRoZSBmaWVsZFBvc2l0aW9uCisgICAgICogICAgICAgICAgICAgICAg
ICAgICAgICAgIG9mZnNldHMgcmVmZXIgdG8gdGhlIGZpcnN0IGluc3RhbmNlLgogICAgICAqIEBw
YXJhbSBzdGF0dXMgICAgICAgICAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9m
YWlsdXJlIHN0YXR1cy4KICAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICAgICAgUmVmZXJlbmNl
IHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgogICAgICAqIEBzdGFibGUgSUNVIDQuMApAQCAtNDA2
LDYgKzQxMyw5IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVz
dWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgogICAgICAqIEBwYXJhbSBmaWVs
ZFBvc2l0aW9uICAgICBPbiBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLCBpZiBkZXNpcmVkLgog
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQ6IHRoZSBvZmZzZXRzIG9m
IHRoZSBhbGlnbm1lbnQgZmllbGQuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIFRo
ZXJlIG1heSBiZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgYSBnaXZlbiBmaWVsZCB0eXBlCisgICAg
ICogICAgICAgICAgICAgICAgICAgICAgICAgIGluIGFuIGludGVydmFsIGZvcm1hdDsgaW4gdGhp
cyBjYXNlIHRoZSBmaWVsZFBvc2l0aW9uCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAg
IG9mZnNldHMgcmVmZXIgdG8gdGhlIGZpcnN0IGluc3RhbmNlLgogICAgICAqIEBwYXJhbSBzdGF0
dXMgICAgICAgICAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9mYWlsdXJlIHN0
YXR1cy4KICAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBl
bmRUbycgcGFyYW1ldGVyLgogICAgICAqIEBzdGFibGUgSUNVIDQuMApAQCAtNDMwLDYgKzQ0MCw5
IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0IGlzIGFw
cGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgogICAgICAqIEBwYXJhbSBmaWVsZFBvc2l0aW9u
ICAgICBPbiBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLCBpZiBkZXNpcmVkLgogICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQ6IHRoZSBvZmZzZXRzIG9mIHRoZSBhbGln
bm1lbnQgZmllbGQuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXJlIG1heSBi
ZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgYSBnaXZlbiBmaWVsZCB0eXBlCisgICAgICogICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIGFuIGludGVydmFsIGZvcm1hdDsgaW4gdGhpcyBjYXNlIHRo
ZSBmaWVsZFBvc2l0aW9uCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldHMg
cmVmZXIgdG8gdGhlIGZpcnN0IGluc3RhbmNlLgogICAgICAqIEBwYXJhbSBzdGF0dXMgICAgICAg
ICAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9mYWlsdXJlIHN0YXR1cy4KICAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBp
dCBpcyBTVUNDRVNTCiAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBmdW5j
dGlvbiBlbnRyYW5jZQpAQCAtNDkzLDcgKzUwNiwxMyBAQCBwdWJsaWM6CiAKIAogICAgIC8qKgot
ICAgICAqIEdldHMgdGhlIGRhdGUgZm9ybWF0dGVyCisgICAgICogR2V0cyB0aGUgZGF0ZSBmb3Jt
YXR0ZXIuIFRoZSBEYXRlSW50ZXJ2YWxGb3JtYXQgaW5zdGFuY2UgY29udGludWVzIHRvIG93bgor
ICAgICAqIHRoZSByZXR1cm5lZCBEYXRlRm9ybWF0dGVyIG9iamVjdCwgYW5kIHdpbGwgdXNlIGFu
ZCBwb3NzaWJseSBtb2RpZnkgaXQKKyAgICAgKiBkdXJpbmcgZm9ybWF0IG9wZXJhdGlvbnMuIElu
IGEgbXVsdGktdGhyZWFkZWQgZW52aXJvbm1lbnQsIHRoZSByZXR1cm5lZAorICAgICAqIERhdGVG
b3JtYXQgY2FuIG9ubHkgYmUgdXNlZCBpZiBpdCBpcyBjZXJ0YWluIHRoYXQgbm8gb3RoZXIgdGhy
ZWFkcyBhcmUKKyAgICAgKiBjb25jdXJyZW50bHkgdXNpbmcgdGhpcyBEYXRlSW50ZXJ2YWxGb3Jt
YXR0ZXIsIGV2ZW4gZm9yIG5vbWluYWxseSBjb25zdAorICAgICAqIGZ1bmN0aW9ucy4KKyAgICAg
KgogICAgICAqIEByZXR1cm4gdGhlIGRhdGUgZm9ybWF0dGVyIGFzc29jaWF0ZWQgd2l0aCB0aGlz
IGRhdGUgaW50ZXJ2YWwgZm9ybWF0dGVyLgogICAgICAqIEBzdGFibGUgSUNVIDQuMAogICAgICAq
LwpAQCAtNTk4LDcgKzYxNyw3IEBAIHByaXZhdGU6CiAKICAgICAvKioKICAgICAgKiBkZWZhdWx0
IGNvbnN0cnVjdG9yCi0gICAgICogQGludGVybmFsIElDVSA0LjAKKyAgICAgKiBAaW50ZXJuYWwg
KHByaXZhdGUpCiAgICAgICovCiAgICAgRGF0ZUludGVydmFsRm9ybWF0KCk7CiAKQEAgLTY0Miwy
NyArNjYxLDMwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpOwogCiAgICAgLyoqCi0gICAgICogQ3Jl
YXRlIGEgc2ltcGxlIGRhdGUvdGltZSBmb3JtYXR0ZXIgZnJvbSBza2VsZXRvbiwgZ2l2ZW4gbG9j
YWxlLAotICAgICAqIGFuZCBkYXRlIHRpbWUgcGF0dGVybiBnZW5lcmF0b3IuCi0gICAgICoKLSAg
ICAgKiBAcGFyYW0gc2tlbGV0b24gIHRoZSBza2VsZXRvbiBvbiB3aGljaCBkYXRlIGZvcm1hdCBi
YXNlZC4KLSAgICAgKiBAcGFyYW0gbG9jYWxlICAgIHRoZSBnaXZlbiBsb2NhbGUuCi0gICAgICog
QHBhcmFtIGR0cG5nICAgICB0aGUgZGF0ZSB0aW1lIHBhdHRlcm4gZ2VuZXJhdG9yLgotICAgICAq
IEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBhcmFtIHRvIGJlIHNldCB0byBzdWNjZXNzL2ZhaWx1
cmUgY29kZS4KLSAgICAgKiAgICAgICAgICAgICAgICAgIElmIGl0IGlzIGZhaWx1cmUsIHRoZSBy
ZXR1cm5lZCBkYXRlIGZvcm1hdHRlciB3aWxsCi0gICAgICogICAgICAgICAgICAgICAgICBiZSBO
VUxMLgotICAgICAqIEByZXR1cm4gICAgICAgICAgYSBzaW1wbGUgZGF0ZSBmb3JtYXR0ZXIgd2hp
Y2ggdGhlIGNhbGxlciBvd25zLgorICAgICAqICBCZWxvdyBhcmUgZm9yIGdlbmVyYXRpbmcgaW50
ZXJ2YWwgcGF0dGVybnMgbG9jYWwgdG8gdGhlIGZvcm1hdHRlcgogICAgICAqLwotICAgIHN0YXRp
YyBTaW1wbGVEYXRlRm9ybWF0KiBVX0VYUE9SVDIgY3JlYXRlU0RGUGF0dGVybkluc3RhbmNlKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJp
bmcmIHNrZWxldG9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IExvY2FsZSYgbG9jYWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvciogZHRwbmcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKTsKLQogCiAgICAgLyoqCi0g
ICAgICogIEJlbG93IGFyZSBmb3IgZ2VuZXJhdGluZyBpbnRlcnZhbCBwYXR0ZXJucyBsb2NhbCB0
byB0aGUgZm9ybWF0dGVyCisgICAgICogUHJvdmlkZSBhbiB1cGRhdGVkIEZpZWxkUG9zaXRpb24g
cG9zUmVzdWx0IGJhc2VkIG9uIHR3byBmb3JtYXRzLAorICAgICAqIHRoZSBGaWVsZFBvc2l0aW9u
IHZhbHVlcyBmb3IgZWFjaCBvZiB0aGVtLCBhbmQgdGhlIHBhdHRlcm4gdXNlZAorICAgICAqIHRv
IGNvbWJpbmUgdGhlbS4gVGhlIGlkZWEgaXMgZm9yIHBvc1Jlc3VsdCB0byBpbmRpY2F0ZSB0aGUg
Zmlyc3QKKyAgICAgKiBpbnN0YW5jZSAoaWYgYW55KSBvZiB0aGUgc3BlY2lmaWVkIGZpZWxkIGlu
IHRoZSBjb21iaW5lZCByZXN1bHQsCisgICAgICogd2l0aCBjb3JyZWN0IG9mZnNldHMuCisgICAg
ICoKKyAgICAgKiBAcGFyYW0gY29tYmluaW5nUGF0dGVybiAgUGF0dGVybiB1c2VkIHRvIGNvbWJp
bmUgcGF0MCBhbmQgcGF0MQorICAgICAqIEBwYXJhbSBwYXQwICAgICAgICAgICAgICBGb3JtYXR0
ZWQgZGF0ZS90aW1lIHZhbHVlIHRvIHJlcGxhY2UgezB9CisgICAgICogQHBhcmFtIHBvczAgICAg
ICAgICAgICAgIEZpZWxkUG9zaXRpb24gd2l0aGluIHBhdDAKKyAgICAgKiBAcGFyYW0gcGF0MSAg
ICAgICAgICAgICAgRm9ybWF0dGVkIGRhdGUvdGltZSB2YWx1ZSB0byByZXBsYWNlIHsxfQorICAg
ICAqIEBwYXJhbSBwb3MxICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHdpdGhpbiBwYXQxCisg
ICAgICogQHBhcmFtIHBvc1Jlc3VsdCAgICAgICAgIEZpZWxkUG9zaXRpb24gdG8gYmUgc2V0IHRv
IHRoZSBjb3JyZWN0CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uIG9m
IHRoZSBmaXJzdCBmaWVsZCBpbnN0YW5jZSB3aGVuCisgICAgICogICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdDAgYW5kIHBhdDEgYXJlIGNvbWJpbmVkIHVzaW5nIGNvbWJpbmluZ1BhdHRlcm4K
ICAgICAgKi8KKyAgICBzdGF0aWMgdm9pZAorICAgIGFkanVzdFBvc2l0aW9uKFVuaWNvZGVTdHJp
bmcmIGNvbWJpbmluZ1BhdHRlcm4sIC8vIGhhcyB7MH0gYW5kIHsxfSBpbiBpdAorICAgICAgICAg
ICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIHBhdDAsIEZpZWxkUG9zaXRpb24mIHBvczAsIC8vIHBh
dHRlcm4gYW5kIHBvcyBjb3JyZXNwb25kaW5nIHRvIHswfQorICAgICAgICAgICAgICAgICAgIFVu
aWNvZGVTdHJpbmcmIHBhdDEsIEZpZWxkUG9zaXRpb24mIHBvczEsIC8vIHBhdHRlcm4gYW5kIHBv
cyBjb3JyZXNwb25kaW5nIHRvIHsxfQorICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24m
IHBvc1Jlc3VsdCk7CiAKIAogICAgIC8qKgpAQCAtNjcxLDE5ICs2OTMsMjUgQEAgcHJpdmF0ZToK
ICAgICAgKiBUaGUgZnVsbCBwYXR0ZXJuIHVzZWQgaW4gdGhpcyBmYWxsLWJhY2sgZm9ybWF0IGlz
IHRoZQogICAgICAqIGZ1bGwgcGF0dGVybiBvZiB0aGUgZGF0ZSBmb3JtYXR0ZXIuCiAgICAgICoK
KyAgICAgKiBnRm9ybWF0dGVyTXV0ZXggbXVzdCBhbHJlYWR5IGJlIGxvY2tlZCB3aGVuIGNhbGxp
bmcgdGhpcyBmdW5jdGlvbi4KKyAgICAgKgogICAgICAqIEBwYXJhbSBmcm9tQ2FsZW5kYXIgICAg
ICBjYWxlbmRhciBzZXQgdG8gdGhlIGZyb20gZGF0ZSBpbiBkYXRlIGludGVydmFsCiAgICAgICog
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvcm1hdHRlZCBpbnRvIGRhdGUgaW50ZXJ2
YWwgc3RyaW5nCiAgICAgICogQHBhcmFtIHRvQ2FsZW5kYXIgICAgICAgIGNhbGVuZGFyIHNldCB0
byB0aGUgdG8gZGF0ZSBpbiBkYXRlIGludGVydmFsCiAgICAgICogICAgICAgICAgICAgICAgICAg
ICAgICAgIHRvIGJlIGZvcm1hdHRlZCBpbnRvIGRhdGUgaW50ZXJ2YWwgc3RyaW5nCisgICAgICog
QHBhcmFtIGZyb21Ub09uU2FtZURheSAgIFRSVUUgaWZmIGZyb20gYW5kIHRvIGRhdGVzIGFyZSBv
biB0aGUgc2FtZSBkYXkKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFueSBkaWZm
ZXJlbmNlIGlzIGluIGFtcG0vaG91cnMgb3IgYmVsb3cpCiAgICAgICogQHBhcmFtIGFwcGVuZFRv
ICAgICAgICAgIE91dHB1dCBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSByZXN1bHQuCiAgICAgICogICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdCBpcyBhcHBlbmRlZCB0byBleGlzdGluZyBjb250
ZW50cy4KICAgICAgKiBAcGFyYW0gcG9zICAgICAgICAgICAgICAgT24gaW5wdXQ6IGFuIGFsaWdu
bWVudCBmaWVsZCwgaWYgZGVzaXJlZC4KICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
T24gb3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLgogICAgICAqIEBw
YXJhbSBzdGF0dXMgICAgICAgICAgICBvdXRwdXQgcGFyYW0gc2V0IHRvIHN1Y2Nlc3MvZmFpbHVy
ZSBjb2RlIG9uIGV4aXQKICAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICAgICAgUmVmZXJlbmNl
IHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgorICAgICAqIEBpbnRlcm5hbCAocHJpdmF0ZSkKICAg
ICAgKi8KICAgICBVbmljb2RlU3RyaW5nJiBmYWxsYmFja0Zvcm1hdChDYWxlbmRhciYgZnJvbUNh
bGVuZGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyJiB0b0Nh
bGVuZGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29sIGZyb21Ub09u
U2FtZURheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5n
JiBhcHBlbmRUbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0
aW9uJiBwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYg
c3RhdHVzKSBjb25zdDsKQEAgLTg3NCwxMyArOTAyLDExIEBAIHByaXZhdGU6CiAgICAgICogYm90
aCB0aW1lIGFuZCBkYXRlLiBQcmVzZW50IHRoZSBkYXRlIGZvbGxvd2VkIGJ5CiAgICAgICogdGhl
IHJhbmdlIGV4cHJlc3Npb24gZm9yIHRoZSB0aW1lLgogICAgICAqIEBwYXJhbSBmb3JtYXQgICAg
ICAgICBkYXRlIGFuZCB0aW1lIGZvcm1hdAotICAgICAqIEBwYXJhbSBmb3JtYXRMZW4gICAgICBm
b3JtYXQgc3RyaW5nIGxlbmd0aAogICAgICAqIEBwYXJhbSBkYXRlUGF0dGVybiAgICBkYXRlIHBh
dHRlcm4KICAgICAgKiBAcGFyYW0gZmllbGQgICAgICAgICAgdGltZSBjYWxlbmRhciBmaWVsZDog
QU1fUE0sIEhPVVIsIE1JTlVURQogICAgICAqIEBwYXJhbSBzdGF0dXMgICAgICAgICBvdXRwdXQg
cGFyYW0gc2V0IHRvIHN1Y2Nlc3MvZmFpbHVyZSBjb2RlIG9uIGV4aXQKICAgICAgKi8KLSAgICB2
b2lkIGNvbmNhdFNpbmdsZURhdGUyVGltZUludGVydmFsKGNvbnN0IFVDaGFyKiBmb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGZvcm1hdExlbiwK
KyAgICB2b2lkIGNvbmNhdFNpbmdsZURhdGUyVGltZUludGVydmFsKFVuaWNvZGVTdHJpbmcmIGZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIGRhdGVQYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVUNhbGVuZGFyRGF0ZUZpZWxkcyBmaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7CkBAIC05MzcsOSArOTYzLDQwIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nKiBz
ZWNvbmRQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgbGF0ZXJEYXRlRmlyc3Qp
OwogCisgICAgLyoqCisgICAgICogRm9ybWF0IDIgQ2FsZW5kYXJzIHRvIHByb2R1Y2UgYSBzdHJp
bmcuCisgICAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNpbWlsYXIgcHVibGljIGZvcm1hdCBm
dW5jdGlvbi4KKyAgICAgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGdGb3JtYXR0ZXJNdXRleCBhbHJl
YWR5IGxvY2tlZC4KKyAgICAgKgorICAgICAqIE5vdGU6ICJmcm9tQ2FsZW5kYXIiIGFuZCAidG9D
YWxlbmRhciIgYXJlIG5vdCBjb25zdCwKKyAgICAgKiBzaW5jZSBjYWxlbmRhciBpcyBub3QgY29u
c3QgaW4gIFNpbXBsZURhdGVGb3JtYXQ6OmZvcm1hdChDYWxlbmRhciYpLAorICAgICAqCisgICAg
ICogQHBhcmFtIGZyb21DYWxlbmRhciAgICAgIGNhbGVuZGFyIHNldCB0byB0aGUgZnJvbSBkYXRl
IGluIGRhdGUgaW50ZXJ2YWwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUg
Zm9ybWF0dGVkIGludG8gZGF0ZSBpbnRlcnZhbCBzdHJpbmcKKyAgICAgKiBAcGFyYW0gdG9DYWxl
bmRhciAgICAgICAgY2FsZW5kYXIgc2V0IHRvIHRoZSB0byBkYXRlIGluIGRhdGUgaW50ZXJ2YWwK
KyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgZm9ybWF0dGVkIGludG8gZGF0
ZSBpbnRlcnZhbCBzdHJpbmcKKyAgICAgKiBAcGFyYW0gYXBwZW5kVG8gICAgICAgICAgT3V0cHV0
IHBhcmFtZXRlciB0byByZWNlaXZlIHJlc3VsdC4KKyAgICAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVzdWx0IGlzIGFwcGVuZGVkIHRvIGV4aXN0aW5nIGNvbnRlbnRzLgorICAgICAqIEBw
YXJhbSBmaWVsZFBvc2l0aW9uICAgICBPbiBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLCBpZiBk
ZXNpcmVkLgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQ6IHRoZSBv
ZmZzZXRzIG9mIHRoZSBhbGlnbm1lbnQgZmllbGQuCisgICAgICogICAgICAgICAgICAgICAgICAg
ICAgICAgIFRoZXJlIG1heSBiZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgYSBnaXZlbiBmaWVsZCB0
eXBlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGluIGFuIGludGVydmFsIGZvcm1h
dDsgaW4gdGhpcyBjYXNlIHRoZSBmaWVsZFBvc2l0aW9uCisgICAgICogICAgICAgICAgICAgICAg
ICAgICAgICAgIG9mZnNldHMgcmVmZXIgdG8gdGhlIGZpcnN0IGluc3RhbmNlLgorICAgICAqIEBw
YXJhbSBzdGF0dXMgICAgICAgICAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9m
YWlsdXJlIHN0YXR1cy4KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGVyIG5l
ZWRzIHRvIG1ha2Ugc3VyZSBpdCBpcyBTVUNDRVNTCisgICAgICogICAgICAgICAgICAgICAgICAg
ICAgICAgIGF0IHRoZSBmdW5jdGlvbiBlbnRyYW5jZQorICAgICAqIEByZXR1cm4gICAgICAgICAg
ICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCisgICAgICogQGludGVy
bmFsIChwcml2YXRlKQorICAgICAqLworICAgIFVuaWNvZGVTdHJpbmcmIGZvcm1hdEltcGwoQ2Fs
ZW5kYXImIGZyb21DYWxlbmRhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVu
ZGFyJiB0b0NhbGVuZGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0
cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0
aW9uJiBmaWVsZFBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9y
Q29kZSYgc3RhdHVzKSBjb25zdCA7CisKIAogICAgIC8vIGZyb20gY2FsZW5kYXIgZmllbGQgdG8g
cGF0dGVybiBsZXR0ZXIKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgZmdDYWxlbmRhckZpZWxkVG9Q
YXR0ZXJuTGV0dGVyW107CisgICAgc3RhdGljIGNvbnN0IGNoYXIxNl90IGZnQ2FsZW5kYXJGaWVs
ZFRvUGF0dGVybkxldHRlcltdOwogCiAKICAgICAvKioKQEAgLTk2MCwxNiArMTAxNywyMCBAQCBw
cml2YXRlOgogICAgIENhbGVuZGFyKiBmRnJvbUNhbGVuZGFyOwogICAgIENhbGVuZGFyKiBmVG9D
YWxlbmRhcjsKIAotICAgIC8qKgotICAgICAqIERhdGUgdGltZSBwYXR0ZXJuIGdlbmVyYXRvcgot
ICAgICAqLwotICAgIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvciogZkR0cG5nOworICAgIExvY2Fs
ZSBmTG9jYWxlOwogCiAgICAgLyoqCi0gICAgICogRm9sbG93aW5nIGFyZSBpbnRlcnZhbCBpbmZv
cm1hdGlvbiByZWxhdmVudCAobG9jYWxlKSB0byB0aGlzIGZvcm1hdHRlci4KKyAgICAgKiBGb2xs
b3dpbmcgYXJlIGludGVydmFsIGluZm9ybWF0aW9uIHJlbGV2YW50IChsb2NhbGUpIHRvIHRoaXMg
Zm9ybWF0dGVyLgogICAgICAqLwogICAgIFVuaWNvZGVTdHJpbmcgZlNrZWxldG9uOwogICAgIFBh
dHRlcm5JbmZvIGZJbnRlcnZhbFBhdHRlcm5zW0RhdGVJbnRlcnZhbEluZm86OmtJUElfTUFYX0lO
REVYXTsKKworICAgIC8qKgorICAgICAqIFBhdHRlcm5zIGZvciBmYWxsYmFjayBmb3JtYXR0aW5n
LgorICAgICAqLworICAgIFVuaWNvZGVTdHJpbmcqIGZEYXRlUGF0dGVybjsKKyAgICBVbmljb2Rl
U3RyaW5nKiBmVGltZVBhdHRlcm47CisgICAgVW5pY29kZVN0cmluZyogZkRhdGVUaW1lRm9ybWF0
OwogfTsKIAogaW5saW5lIFVCb29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L2R0aXR2aW5mLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2R0aXR2aW5mLmgKaW5kZXggOWY2
Njc0ZTcwZDE5MmEzYWNkZTRhNjA1YjliMDE5YjY3MWRmZTdlYi4uNzI2ZTM0YTc0NWEyZWMzMGJh
NTY3YjU5ZWZiMzcxMzlmNmYxM2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS9kdGl0dmluZi5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRpdHZpbmYuaApAQCAt
MSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAo
QykgMjAwOC0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9u
IGFuZAorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3Mg
TWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCiAgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTQ5LDIyICs1MSwyMiBAQCBVX05BTUVT
UEFDRV9CRUdJTgogICogdG8gKGRhdGVfaW50ZXJ2YWxfcGF0dGVybikuCiAgKgogICogPFA+Ci0g
KiBBIHNrZWxldG9uIAorICogQSBza2VsZXRvbgogICogPG9sPgogICogPGxpPgotICogb25seSBr
ZWVwcyB0aGUgZmllbGQgcGF0dGVybiBsZXR0ZXIgYW5kIGlnbm9yZXMgYWxsIG90aGVyIHBhcnRz
IAorICogb25seSBrZWVwcyB0aGUgZmllbGQgcGF0dGVybiBsZXR0ZXIgYW5kIGlnbm9yZXMgYWxs
IG90aGVyIHBhcnRzCiAgKiBpbiBhIHBhdHRlcm4sIHN1Y2ggYXMgc3BhY2UsIHB1bmN0dWF0aW9u
cywgYW5kIHN0cmluZyBsaXRlcmFscy4KICAqIDxsaT4KLSAqIGhpZGVzIHRoZSBvcmRlciBvZiBm
aWVsZHMuIAorICogaGlkZXMgdGhlIG9yZGVyIG9mIGZpZWxkcy4KICAqIDxsaT4KICAqIG1pZ2h0
IGhpZGUgYSBmaWVsZCdzIHBhdHRlcm4gbGV0dGVyIGxlbmd0aC4KICAqCi0gKiBGb3IgdGhvc2Ug
bm9uLWRpZ2l0IGNhbGVuZGFyIGZpZWxkcywgdGhlIHBhdHRlcm4gbGV0dGVyIGxlbmd0aCBpcyAK
LSAqIGltcG9ydGFudCwgc3VjaCBhcyBNTU0sIE1NTU0sIGFuZCBNTU1NTTsgRUVFIGFuZCBFRUVF
LCAKKyAqIEZvciB0aG9zZSBub24tZGlnaXQgY2FsZW5kYXIgZmllbGRzLCB0aGUgcGF0dGVybiBs
ZXR0ZXIgbGVuZ3RoIGlzCisgKiBpbXBvcnRhbnQsIHN1Y2ggYXMgTU1NLCBNTU1NLCBhbmQgTU1N
TU07IEVFRSBhbmQgRUVFRSwKICAqIGFuZCB0aGUgZmllbGQncyBwYXR0ZXJuIGxldHRlciBsZW5n
dGggaXMgaG9ub3JlZC4KLSAqICAgIAotICogRm9yIHRoZSBkaWdpdCBjYWxlbmRhciBmaWVsZHMs
ICBzdWNoIGFzIE0gb3IgTU0sIGQgb3IgZGQsIHl5IG9yIHl5eXksIAotICogdGhlIGZpZWxkIHBh
dHRlcm4gbGVuZ3RoIGlzIGlnbm9yZWQgYW5kIHRoZSBiZXN0IG1hdGNoLCB3aGljaCBpcyBkZWZp
bmVkIAorICoKKyAqIEZvciB0aGUgZGlnaXQgY2FsZW5kYXIgZmllbGRzLCAgc3VjaCBhcyBNIG9y
IE1NLCBkIG9yIGRkLCB5eSBvciB5eXl5LAorICogdGhlIGZpZWxkIHBhdHRlcm4gbGVuZ3RoIGlz
IGlnbm9yZWQgYW5kIHRoZSBiZXN0IG1hdGNoLCB3aGljaCBpcyBkZWZpbmVkCiAgKiBpbiBkYXRl
IHRpbWUgcGF0dGVybnMsIHdpbGwgYmUgcmV0dXJuZWQgd2l0aG91dCBob25vciB0aGUgZmllbGQg
cGF0dGVybgogICogbGV0dGVyIGxlbmd0aCBpbiBza2VsZXRvbi4KICAqIDwvb2w+CkBAIC03Mywy
MSArNzUsMjEgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAqIFRoZSBjYWxlbmRhciBmaWVsZHMgd2Ug
c3VwcG9ydCBmb3IgaW50ZXJ2YWwgZm9ybWF0dGluZyBhcmU6CiAgKiB5ZWFyLCBtb250aCwgZGF0
ZSwgZGF5LW9mLXdlZWssIGFtLXBtLCBob3VyLCBob3VyLW9mLWRheSwgYW5kIG1pbnV0ZS4KICAq
IFRob3NlIGNhbGVuZGFyIGZpZWxkcyBjYW4gYmUgZGVmaW5lZCBpbiB0aGUgZm9sbG93aW5nIG9y
ZGVyOgotICogeWVhciA+ICBtb250aCA+IGRhdGUgPiBhbS1wbSA+IGhvdXIgPiAgbWludXRlIAot
ICogIAorICogeWVhciA+ICBtb250aCA+IGRhdGUgPiBhbS1wbSA+IGhvdXIgPiAgbWludXRlCisg
KgogICogVGhlIGxhcmdlc3QgZGlmZmVyZW50IGNhbGVuZGFyIGZpZWxkcyBiZXR3ZWVuIDIgY2Fs
ZW5kYXJzIGlzIHRoZQogICogZmlyc3QgZGlmZmVyZW50IGNhbGVuZGFyIGZpZWxkIGluIGFib3Zl
IG9yZGVyLgogICoKLSAqIEZvciBleGFtcGxlOiB0aGUgbGFyZ2VzdCBkaWZmZXJlbnQgY2FsZW5k
YXIgZmllbGRzIGJldHdlZW4gJnF1b3Q7SmFuIDEwLCAyMDA3JnF1b3Q7IAorICogRm9yIGV4YW1w
bGU6IHRoZSBsYXJnZXN0IGRpZmZlcmVudCBjYWxlbmRhciBmaWVsZHMgYmV0d2VlbiAmcXVvdDtK
YW4gMTAsIDIwMDcmcXVvdDsKICAqIGFuZCAmcXVvdDtGZWIgMjAsIDIwMDgmcXVvdDsgaXMgeWVh
ci4KLSAqICAgCisgKgogICogPFA+CiAgKiBUaGVyZSBpcyBhIHNldCBvZiBwcmUtZGVmaW5lZCBz
dGF0aWMgc2tlbGV0b24gc3RyaW5ncy4KICAqIFRoZXJlIGFyZSBwcmUtZGVmaW5lZCBpbnRlcnZh
bCBwYXR0ZXJucyBmb3IgdGhvc2UgcHJlLWRlZmluZWQgc2tlbGV0b25zCiAgKiBpbiBsb2NhbGVz
JyByZXNvdXJjZSBmaWxlcy4KICAqIEZvciBleGFtcGxlLCBmb3IgYSBza2VsZXRvbiBVREFUX1lF
QVJfQUJCUl9NT05USF9EQVksIHdoaWNoIGlzICAmcXVvdDt5TU1NZCZxdW90OywKLSAqIGluICBl
bl9VUywgaWYgdGhlIGxhcmdlc3QgZGlmZmVyZW50IGNhbGVuZGFyIGZpZWxkIGJldHdlZW4gZGF0
ZTEgYW5kIGRhdGUyIAotICogaXMgJnF1b3Q7eWVhciZxdW90OywgdGhlIGRhdGUgaW50ZXJ2YWwg
cGF0dGVybiAgaXMgJnF1b3Q7TU1NIGQsIHl5eXkgLSBNTU0gZCwgeXl5eSZxdW90OywgCisgKiBp
biAgZW5fVVMsIGlmIHRoZSBsYXJnZXN0IGRpZmZlcmVudCBjYWxlbmRhciBmaWVsZCBiZXR3ZWVu
IGRhdGUxIGFuZCBkYXRlMgorICogaXMgJnF1b3Q7eWVhciZxdW90OywgdGhlIGRhdGUgaW50ZXJ2
YWwgcGF0dGVybiAgaXMgJnF1b3Q7TU1NIGQsIHl5eXkgLSBNTU0gZCwgeXl5eSZxdW90OywKICAq
IHN1Y2ggYXMgJnF1b3Q7SmFuIDEwLCAyMDA3IC0gSmFuIDEwLCAyMDA4JnF1b3Q7LgogICogSWYg
dGhlIGxhcmdlc3QgZGlmZmVyZW50IGNhbGVuZGFyIGZpZWxkIGJldHdlZW4gZGF0ZTEgYW5kIGRh
dGUyIGlzICZxdW90O21vbnRoJnF1b3Q7LAogICogdGhlIGRhdGUgaW50ZXJ2YWwgcGF0dGVybiBp
cyAmcXVvdDtNTU0gZCAtIE1NTSBkLCB5eXl5JnF1b3Q7LApAQCAtOTUsNyArOTcsNyBAQCBVX05B
TUVTUEFDRV9CRUdJTgogICogSWYgdGhlIGxhcmdlc3QgZGlmZmVyZW50IGNhbGVuZGFyIGZpZWxk
IGJldHdlZW4gZGF0ZTEgYW5kIGRhdGUyIGlzICZxdW90O2RheSZxdW90OywKICAqIHRoZSBkYXRl
IGludGVydmFsIHBhdHRlcm4gaXMgJnF1b3Q7TU1NIGQtZCwgeXl5eSZxdW90Oywgc3VjaCBhcyAm
cXVvdDtKYW4gMTAtMjAsIDIwMDcmcXVvdDsuCiAgKgotICogRm9yIGRhdGUgc2tlbGV0b24sIHRo
ZSBpbnRlcnZhbCBwYXR0ZXJucyB3aGVuIHllYXIsIG9yIG1vbnRoLCBvciBkYXRlIGlzIAorICog
Rm9yIGRhdGUgc2tlbGV0b24sIHRoZSBpbnRlcnZhbCBwYXR0ZXJucyB3aGVuIHllYXIsIG9yIG1v
bnRoLCBvciBkYXRlIGlzCiAgKiBkaWZmZXJlbnQgYXJlIGRlZmluZWQgaW4gcmVzb3VyY2UgZmls
ZXMuCiAgKiBGb3IgdGltZSBza2VsZXRvbiwgdGhlIGludGVydmFsIHBhdHRlcm5zIHdoZW4gYW0v
cG0sIG9yIGhvdXIsIG9yIG1pbnV0ZSBpcwogICogZGlmZmVyZW50IGFyZSBkZWZpbmVkIGluIHJl
c291cmNlIGZpbGVzLgpAQCAtMTA4LDU2ICsxMTAsNTUgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAq
IFdlIHVzZSBmYWxsYmFjayBmb3JtYXQgZm9yIHRoZSBkZWZhdWx0IG9yZGVyIGZvciB0aGUgbG9j
YWxlLgogICogRm9yIGV4YW1wbGUsIGlmIHRoZSBmYWxsYmFjayBmb3JtYXQgaXMgJnF1b3Q7ezB9
IC0gezF9JnF1b3Q7LCBpdCBtZWFucwogICogdGhlIGZpcnN0IGRhdGUgaW4gdGhlIGludGVydmFs
IHBhdHRlcm4gZm9yIHRoaXMgbG9jYWxlIGlzIGVhcmxpZXIgZGF0ZS4KLSAqIElmIHRoZSBmYWxs
YmFjayBmb3JtYXQgaXMgJnF1b3Q7ezF9IC0gezB9JnF1b3Q7LCBpdCBtZWFucyB0aGUgZmlyc3Qg
ZGF0ZSBpcyB0aGUgCisgKiBJZiB0aGUgZmFsbGJhY2sgZm9ybWF0IGlzICZxdW90O3sxfSAtIHsw
fSZxdW90OywgaXQgbWVhbnMgdGhlIGZpcnN0IGRhdGUgaXMgdGhlCiAgKiBsYXRlciBkYXRlLgog
ICogRm9yIGEgcGFydGljdWxhciBpbnRlcnZhbCBwYXR0ZXJuLCB0aGUgZGVmYXVsdCBvcmRlciBj
YW4gYmUgb3ZlcnJpZGVuCiAgKiBieSBwcmVmaXhpbmcgJnF1b3Q7bGF0ZXN0Rmlyc3Q6JnF1b3Q7
IG9yICZxdW90O2VhcmxpZXN0Rmlyc3Q6JnF1b3Q7IHRvIHRoZSBpbnRlcnZhbCBwYXR0ZXJuLgog
ICogRm9yIGV4YW1wbGUsIGlmIHRoZSBmYWxsYmFjayBmb3JtYXQgaXMgJnF1b3Q7ezB9LXsxfSZx
dW90OywKLSAqIGJ1dCBmb3Igc2tlbGV0b24gJnF1b3Q7eU1NTWQmcXVvdDssIHRoZSBpbnRlcnZh
bCBwYXR0ZXJuIHdoZW4gZGF5IGlzIGRpZmZlcmVudCBpcyAKKyAqIGJ1dCBmb3Igc2tlbGV0b24g
JnF1b3Q7eU1NTWQmcXVvdDssIHRoZSBpbnRlcnZhbCBwYXR0ZXJuIHdoZW4gZGF5IGlzIGRpZmZl
cmVudCBpcwogICogJnF1b3Q7bGF0ZXN0Rmlyc3Q6ZC1kIE1NTSB5eSZxdW90OywgaXQgbWVhbnMg
YnkgZGVmYXVsdCwgdGhlIGZpcnN0IGRhdGUgaW4gaW50ZXJ2YWwKICAqIHBhdHRlcm4gaXMgdGhl
IGVhcmxpZXIgZGF0ZS4gQnV0IGZvciBza2VsZXRvbiAmcXVvdDt5TU1NZCZxdW90Oywgd2hlbiBk
YXkgaXMgZGlmZmVyZW50LAogICogdGhlIGZpcnN0IGRhdGUgaW4gJnF1b3Q7ZC1kIE1NTSB5eSZx
dW90OyBpcyB0aGUgbGF0ZXIgZGF0ZS4KLSAqIAorICoKICAqIDxQPgotICogVGhlIHJlY29tbWVu
ZGVkIHdheSB0byBjcmVhdGUgYSBEYXRlSW50ZXJ2YWxGb3JtYXQgb2JqZWN0IGlzIHRvIHBhc3Mg
aW4gCi0gKiB0aGUgbG9jYWxlLiAKLSAqIEJ5IHVzaW5nIGEgTG9jYWxlIHBhcmFtZXRlciwgdGhl
IERhdGVJbnRlcnZhbEZvcm1hdCBvYmplY3QgaXMgCi0gKiBpbml0aWFsaXplZCB3aXRoIHRoZSBw
cmUtZGVmaW5lZCBpbnRlcnZhbCBwYXR0ZXJucyBmb3IgYSBnaXZlbiBvciAKKyAqIFRoZSByZWNv
bW1lbmRlZCB3YXkgdG8gY3JlYXRlIGEgRGF0ZUludGVydmFsRm9ybWF0IG9iamVjdCBpcyB0byBw
YXNzIGluCisgKiB0aGUgbG9jYWxlLgorICogQnkgdXNpbmcgYSBMb2NhbGUgcGFyYW1ldGVyLCB0
aGUgRGF0ZUludGVydmFsRm9ybWF0IG9iamVjdCBpcworICogaW5pdGlhbGl6ZWQgd2l0aCB0aGUg
cHJlLWRlZmluZWQgaW50ZXJ2YWwgcGF0dGVybnMgZm9yIGEgZ2l2ZW4gb3IKICAqIGRlZmF1bHQg
bG9jYWxlLgogICogPFA+Ci0gKiBVc2VycyBjYW4gYWxzbyBjcmVhdGUgRGF0ZUludGVydmFsRm9y
bWF0IG9iamVjdCAKKyAqIFVzZXJzIGNhbiBhbHNvIGNyZWF0ZSBEYXRlSW50ZXJ2YWxGb3JtYXQg
b2JqZWN0CiAgKiBieSBzdXBwbHlpbmcgdGhlaXIgb3duIGludGVydmFsIHBhdHRlcm5zLgogICog
SXQgcHJvdmlkZXMgZmxleGliaWxpdHkgZm9yIHBvd2VyIHVzZXJzLgogICoKICAqIDxQPgogICog
QWZ0ZXIgYSBEYXRlSW50ZXJ2YWxJbmZvIG9iamVjdCBpcyBjcmVhdGVkLCBjbGllbnRzIG1heSBt
b2RpZnkKICAqIHRoZSBpbnRlcnZhbCBwYXR0ZXJucyB1c2luZyBzZXRJbnRlcnZhbFBhdHRlcm4g
ZnVuY3Rpb24gYXMgc28gZGVzaXJlZC4KLSAqIEN1cnJlbnRseSwgdXNlcnMgY2FuIG9ubHkgc2V0
IGludGVydmFsIHBhdHRlcm5zIHdoZW4gdGhlIGZvbGxvd2luZyAKLSAqIGNhbGVuZGFyIGZpZWxk
cyBhcmUgZGlmZmVyZW50OiBFUkEsIFlFQVIsIE1PTlRILCBEQVRFLCAgREFZX09GX01PTlRILCAK
KyAqIEN1cnJlbnRseSwgdXNlcnMgY2FuIG9ubHkgc2V0IGludGVydmFsIHBhdHRlcm5zIHdoZW4g
dGhlIGZvbGxvd2luZworICogY2FsZW5kYXIgZmllbGRzIGFyZSBkaWZmZXJlbnQ6IEVSQSwgWUVB
UiwgTU9OVEgsIERBVEUsICBEQVlfT0ZfTU9OVEgsCiAgKiBEQVlfT0ZfV0VFSywgQU1fUE0sICBI
T1VSLCBIT1VSX09GX0RBWSwgYW5kIE1JTlVURS4KICAqIEludGVydmFsIHBhdHRlcm5zIHdoZW4g
b3RoZXIgY2FsZW5kYXIgZmllbGRzIGFyZSBkaWZmZXJlbnQgaXMgbm90IHN1cHBvcnRlZC4KICAq
IDxQPgotICogRGF0ZUludGVydmFsSW5mbyBvYmplY3RzIGFyZSBjbG9uZWFibGUuIAotICogV2hl
biBjbGllbnRzIG9idGFpbiBhIERhdGVJbnRlcnZhbEluZm8gb2JqZWN0LCAKKyAqIERhdGVJbnRl
cnZhbEluZm8gb2JqZWN0cyBhcmUgY2xvbmVhYmxlLgorICogV2hlbiBjbGllbnRzIG9idGFpbiBh
IERhdGVJbnRlcnZhbEluZm8gb2JqZWN0LAogICogdGhleSBjYW4gZmVlbCBmcmVlIHRvIG1vZGlm
eSBpdCBhcyBuZWNlc3NhcnkuCiAgKiA8UD4KLSAqIERhdGVJbnRlcnZhbEluZm8gYXJlIG5vdCBl
eHBlY3RlZCB0byBiZSBzdWJjbGFzc2VkLiAKLSAqIERhdGEgZm9yIGEgY2FsZW5kYXIgaXMgbG9h
ZGVkIG91dCBvZiByZXNvdXJjZSBidW5kbGVzLiAKKyAqIERhdGVJbnRlcnZhbEluZm8gYXJlIG5v
dCBleHBlY3RlZCB0byBiZSBzdWJjbGFzc2VkLgorICogRGF0YSBmb3IgYSBjYWxlbmRhciBpcyBs
b2FkZWQgb3V0IG9mIHJlc291cmNlIGJ1bmRsZXMuCiAgKiBUaHJvdWdoIElDVSA0LjQsIGRhdGUg
aW50ZXJ2YWwgcGF0dGVybnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHRoZSBHcmVnb3JpYW4KLSAq
IGNhbGVuZGFyOyBub24tR3JlZ29yaWFuIGNhbGVuZGFycyBhcmUgc3VwcG9ydGVkIGZyb20gSUNV
IDQuNC4xLiAKKyAqIGNhbGVuZGFyOyBub24tR3JlZ29yaWFuIGNhbGVuZGFycyBhcmUgc3VwcG9y
dGVkIGZyb20gSUNVIDQuNC4xLgogICogQHN0YWJsZSBJQ1UgNC4wCiAqKi8KIAogY2xhc3MgVV9J
MThOX0FQSSBEYXRlSW50ZXJ2YWxJbmZvIFVfRklOQUwgOiBwdWJsaWMgVU9iamVjdCB7CiBwdWJs
aWM6Ci0jaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAgICAvKioKICAgICAgKiBEZWZhdWx0
IGNvbnN0cnVjdG9yLgogICAgICAqIEl0IGRvZXMgbm90IGluaXRpYWxpemUgYW55IGludGVydmFs
IHBhdHRlcm5zIGV4Y2VwdAogICAgICAqIHRoYXQgaXQgaW5pdGlhbGl6ZSBkZWZhdWx0IGZhbGwt
YmFjayBwYXR0ZXJuIGFzICJ7MH0gLSB7MX0iLAogICAgICAqIHdoaWNoIGNhbiBiZSByZXNldCBi
eSBzZXRGYWxsYmFja0ludGVydmFsUGF0dGVybigpLgotICAgICAqIEl0IHNob3VsZCBiZSBmb2xs
b3dlZCBieSBzZXRGYWxsYmFja0ludGVydmFsUGF0dGVybigpIGFuZCAKLSAgICAgKiBzZXRJbnRl
cnZhbFBhdHRlcm4oKSwgCisgICAgICogSXQgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IHNldEZhbGxi
YWNrSW50ZXJ2YWxQYXR0ZXJuKCkgYW5kCisgICAgICogc2V0SW50ZXJ2YWxQYXR0ZXJuKCksCiAg
ICAgICogYW5kIGlzIHJlY29tbWVuZGVkIHRvIGJlIHVzZWQgb25seSBmb3IgcG93ZXIgdXNlcnMg
d2hvCiAgICAgICogd2FudHMgdG8gY3JlYXRlIHRoZWlyIG93biBpbnRlcnZhbCBwYXR0ZXJucyBh
bmQgdXNlIHRoZW0gdG8gY3JlYXRlCiAgICAgICogZGF0ZSBpbnRlcnZhbCBmb3JtYXR0ZXIuCkBA
IC0xNjUsMTAgKzE2Niw5IEBAIHB1YmxpYzoKICAgICAgKiBAaW50ZXJuYWwgSUNVIDQuMAogICAg
ICAqLwogICAgIERhdGVJbnRlcnZhbEluZm8oVUVycm9yQ29kZSYgc3RhdHVzKTsKLSNlbmRpZiAg
LyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogCiAKLSAgICAvKiogCisgICAgLyoqCiAgICAgICog
Q29uc3RydWN0IERhdGVJbnRlcnZhbEluZm8gZm9yIHRoZSBnaXZlbiBsb2NhbGUsCiAgICAgICog
QHBhcmFtIGxvY2FsZSAgdGhlIGludGVydmFsIHBhdHRlcm5zIGFyZSBsb2FkZWQgZnJvbSB0aGUg
YXBwcm9wcmlhdGUgY2FsZW5kYXIKICAgICAgKiAgICAgICAgICAgICAgICBkYXRhIChzcGVjaWZp
ZWQgY2FsZW5kYXIgb3IgZGVmYXVsdCBjYWxlbmRhcikgaW4gdGhpcyBsb2NhbGUuCkBAIC0yMjYs
NyArMjI2LDcgQEAgcHVibGljOgogCiAKIAotICAgIC8qKiAKKyAgICAvKioKICAgICAgKiBQcm92
aWRlcyBhIHdheSBmb3IgY2xpZW50IHRvIGJ1aWxkIGludGVydmFsIHBhdHRlcm5zLgogICAgICAq
IFVzZXIgY291bGQgY29uc3RydWN0IERhdGVJbnRlcnZhbEluZm8gYnkgcHJvdmlkaW5nIGEgbGlz
dCBvZiBza2VsZXRvbnMKICAgICAgKiBhbmQgdGhlaXIgcGF0dGVybnMuCkBAIC0yMzYsNTMgKzIz
Niw1MyBAQCBwdWJsaWM6CiAgICAgICogVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CiAgICAgICogRGF0ZUludGVydmFsSW5mbyBkSW50ZXJ2YWxJbmZvID0gbmV3IERhdGVJbnRlcnZh
bEluZm8oKTsKICAgICAgKiBkSW50ZXJ2YWxJbmZvLT5zZXRGYWxsYmFja0ludGVydmFsUGF0dGVy
bigiezB9IH4gezF9Iik7Ci0gICAgICogZEludGVydmFsSW5mby0+c2V0SW50ZXJ2YWxQYXR0ZXJu
KCJ5TWQiLCBVQ0FMX1lFQVIsICInZnJvbScgeXl5eS1NLWQgJ3RvJyB5eXl5LU0tZCIsIHN0YXR1
cyk7IAorICAgICAqIGRJbnRlcnZhbEluZm8tPnNldEludGVydmFsUGF0dGVybigieU1kIiwgVUNB
TF9ZRUFSLCAiJ2Zyb20nIHl5eXktTS1kICd0bycgeXl5eS1NLWQiLCBzdGF0dXMpOwogICAgICAq
IGRJbnRlcnZhbEluZm8tPnNldEludGVydmFsUGF0dGVybigieU1NTWQiLCBVQ0FMX01PTlRILCAi
J2Zyb20nIHl5eXkgTU1NIGQgJ3RvJyBNTU0gZCIsIHN0YXR1cyk7CiAgICAgICogZEludGVydmFs
SW5mby0+c2V0SW50ZXJ2YWxQYXR0ZXJuKCJ5TU1NZCIsIFVDQUxfREFZLCAieXl5eSBNTU0gZC1k
Iiwgc3RhdHVzLCBzdGF0dXMpOwogICAgICAqIDwvcHJlPgogICAgICAqCi0gICAgICogUmVzdHJp
Y3Rpb246IAotICAgICAqIEN1cnJlbnRseSwgdXNlcnMgY2FuIG9ubHkgc2V0IGludGVydmFsIHBh
dHRlcm5zIHdoZW4gdGhlIGZvbGxvd2luZyAKLSAgICAgKiBjYWxlbmRhciBmaWVsZHMgYXJlIGRp
ZmZlcmVudDogRVJBLCBZRUFSLCBNT05USCwgREFURSwgIERBWV9PRl9NT05USCwgCisgICAgICog
UmVzdHJpY3Rpb246CisgICAgICogQ3VycmVudGx5LCB1c2VycyBjYW4gb25seSBzZXQgaW50ZXJ2
YWwgcGF0dGVybnMgd2hlbiB0aGUgZm9sbG93aW5nCisgICAgICogY2FsZW5kYXIgZmllbGRzIGFy
ZSBkaWZmZXJlbnQ6IEVSQSwgWUVBUiwgTU9OVEgsIERBVEUsICBEQVlfT0ZfTU9OVEgsCiAgICAg
ICogREFZX09GX1dFRUssIEFNX1BNLCAgSE9VUiwgSE9VUl9PRl9EQVksIGFuZCBNSU5VVEUuCi0g
ICAgICogSW50ZXJ2YWwgcGF0dGVybnMgd2hlbiBvdGhlciBjYWxlbmRhciBmaWVsZHMgYXJlIGRp
ZmZlcmVudCBhcmUgCisgICAgICogSW50ZXJ2YWwgcGF0dGVybnMgd2hlbiBvdGhlciBjYWxlbmRh
ciBmaWVsZHMgYXJlIGRpZmZlcmVudCBhcmUKICAgICAgKiBub3Qgc3VwcG9ydGVkLgogICAgICAq
CiAgICAgICogQHBhcmFtIHNrZWxldG9uICAgICAgICAgdGhlIHNrZWxldG9uIG9uIHdoaWNoIGlu
dGVydmFsIHBhdHRlcm4gYmFzZWQKICAgICAgKiBAcGFyYW0gbHJnRGlmZkNhbFVuaXQgICB0aGUg
bGFyZ2VzdCBkaWZmZXJlbnQgY2FsZW5kYXIgdW5pdC4KICAgICAgKiBAcGFyYW0gaW50ZXJ2YWxQ
YXR0ZXJuICB0aGUgaW50ZXJ2YWwgcGF0dGVybiBvbiB0aGUgbGFyZ2VzdCBkaWZmZXJlbnQKICAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhciB1bml0LgotICAgICAqICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiBscmdEaWZmQ2FsVW5pdCBpcyAKKyAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgbHJnRGlmZkNhbFVu
aXQgaXMKICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAieWVhciIsIHRoZSBpbnRlcnZh
bCBwYXR0ZXJuIGZvciBlbl9VUyB3aGVuIHllYXIKICAgICAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICBpcyBkaWZmZXJlbnQgY291bGQgYmUgIidmcm9tJyB5eXl5ICd0bycgeXl5eSIuCiAgICAg
ICogQHBhcmFtIHN0YXR1cyAgICAgICAgICAgb3V0cHV0IHBhcmFtIHNldCB0byBzdWNjZXNzL2Zh
aWx1cmUgY29kZSBvbiBleGl0CiAgICAgICogQHN0YWJsZSBJQ1UgNC4wCiAgICAgICovCi0gICAg
dm9pZCBzZXRJbnRlcnZhbFBhdHRlcm4oY29uc3QgVW5pY29kZVN0cmluZyYgc2tlbGV0b24sIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDYWxlbmRhckRhdGVGaWVsZHMgbHJnRGlmZkNh
bFVuaXQsIAorICAgIHZvaWQgc2V0SW50ZXJ2YWxQYXR0ZXJuKGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHNrZWxldG9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDYWxlbmRhckRhdGVGaWVs
ZHMgbHJnRGlmZkNhbFVuaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5p
Y29kZVN0cmluZyYgaW50ZXJ2YWxQYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKICAgICAvKioKLSAgICAgKiBHZXQgdGhlIGludGVydmFs
IHBhdHRlcm4gZ2l2ZW4gc2tlbGV0b24gYW5kIAorICAgICAqIEdldCB0aGUgaW50ZXJ2YWwgcGF0
dGVybiBnaXZlbiBza2VsZXRvbiBhbmQKICAgICAgKiB0aGUgbGFyZ2VzdCBkaWZmZXJlbnQgY2Fs
ZW5kYXIgZmllbGQuCiAgICAgICogQHBhcmFtIHNrZWxldG9uICAgdGhlIHNrZWxldG9uCiAgICAg
ICogQHBhcmFtIGZpZWxkICAgICAgdGhlIGxhcmdlc3QgZGlmZmVyZW50IGNhbGVuZGFyIGZpZWxk
CiAgICAgICogQHBhcmFtIHJlc3VsdCAgICAgb3V0cHV0IHBhcmFtIHRvIHJlY2VpdmUgdGhlIHBh
dHRlcm4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgICBvdXRwdXQgcGFyYW0gc2V0IHRvIHN1Y2Nl
c3MvZmFpbHVyZSBjb2RlIG9uIGV4aXQKICAgICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvICdy
ZXN1bHQnCi0gICAgICogQHN0YWJsZSBJQ1UgNC4wIAorICAgICAqIEBzdGFibGUgSUNVIDQuMAog
ICAgICAqLwogICAgIFVuaWNvZGVTdHJpbmcmIGdldEludGVydmFsUGF0dGVybihjb25zdCBVbmlj
b2RlU3RyaW5nJiBza2VsZXRvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVUNhbGVuZGFyRGF0ZUZpZWxkcyBmaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OyAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKIAog
ICAgIC8qKgogICAgICAqIEdldCB0aGUgZmFsbGJhY2sgaW50ZXJ2YWwgcGF0dGVybi4KICAgICAg
KiBAcGFyYW0gIHJlc3VsdCAgIG91dHB1dCBwYXJhbSB0byByZWNlaXZlIHRoZSBwYXR0ZXJuCiAg
ICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byAncmVzdWx0JwotICAgICAqIEBzdGFibGUgSUNV
IDQuMCAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjAKICAgICAgKi8KICAgICBVbmljb2RlU3RyaW5n
JiBnZXRGYWxsYmFja0ludGVydmFsUGF0dGVybihVbmljb2RlU3RyaW5nJiByZXN1bHQpIGNvbnN0
OwogCkBAIC0yOTgsNyArMjk4LDcgQEAgcHVibGljOgogICAgICAqCiAgICAgICogQHBhcmFtIGZh
bGxiYWNrUGF0dGVybiAgZmFsbC1iYWNrIGludGVydmFsIHBhdHRlcm4uCiAgICAgICogQHBhcmFt
IHN0YXR1cyAgICAgICAgICAgb3V0cHV0IHBhcmFtIHNldCB0byBzdWNjZXNzL2ZhaWx1cmUgY29k
ZSBvbiBleGl0Ci0gICAgICogQHN0YWJsZSBJQ1UgNC4wIAorICAgICAqIEBzdGFibGUgSUNVIDQu
MAogICAgICAqLwogICAgIHZvaWQgc2V0RmFsbGJhY2tJbnRlcnZhbFBhdHRlcm4oY29uc3QgVW5p
Y29kZVN0cmluZyYgZmFsbGJhY2tQYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKTsKQEAgLTMwOCw3ICszMDgsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIG5vdC4KICAgICAgKiByZXR1cm4gZGVm
YXVsdCBkYXRlIG9yZGVyaW5nIGluIGludGVydmFsIHBhdHRlcm4uIFRSVUUgaWYgdGhlIGZpcnN0
IGRhdGUKICAgICAgKiAgICAgICAgaW4gcGF0dGVybiBpcyBsYXRlciBkYXRlLCBGQUxTRSBvdGhl
cndpc2UuCi0gICAgICogQHN0YWJsZSBJQ1UgNC4wIAorICAgICAqIEBzdGFibGUgSUNVIDQuMAog
ICAgICAqLwogICAgIFVCb29sIGdldERlZmF1bHRPcmRlcigpIGNvbnN0OwogCkBAIC0zMzksNiAr
MzM5LDExIEBAIHByaXZhdGU6CiAgICAgICovCiAgICAgZnJpZW5kIGNsYXNzIERhdGVJbnRlcnZh
bEZvcm1hdDsKIAorICAgIC8qKgorICAgICAqIEludGVybmFsIHN0cnVjdCB1c2VkIHRvIGxvYWQg
cmVzb3VyY2UgYnVuZGxlIGRhdGEuCisgICAgICovCisgICAgc3RydWN0IERhdGVJbnRlcnZhbFNp
bms7CisKICAgICAvKioKICAgICAgKiBGb2xsb3dpbmcgaXMgZm9yIHNhdmluZyB0aGUgaW50ZXJ2
YWwgcGF0dGVybnMuCiAgICAgICogV2Ugb25seSBzdXBwb3J0IGludGVydmFsIHBhdHRlcm5zIG9u
CkBAIC0zNTMsMTMgKzM1OCwxNCBAQCBwcml2YXRlOgogICAgICAgICBrSVBJX0FNX1BNLAogICAg
ICAgICBrSVBJX0hPVVIsCiAgICAgICAgIGtJUElfTUlOVVRFLAorICAgICAgICBrSVBJX1NFQ09O
RCwKICAgICAgICAga0lQSV9NQVhfSU5ERVgKICAgICB9OwogcHVibGljOgogI2lmbmRlZiBVX0hJ
REVfSU5URVJOQUxfQVBJCiAgICAgLyoqCiAgICAgICogTWF4IGluZGV4IGZvciBzdG9yZWQgaW50
ZXJ2YWwgcGF0dGVybnMKLSAgICAgKiBAaW50ZXJuYWwgSUNVIDQuNCAKKyAgICAgKiBAaW50ZXJu
YWwgSUNVIDQuNAogICAgICAqLwogICAgICBlbnVtIHsKICAgICAgICAgIGtNYXhJbnRlcnZhbFBh
dHRlcm5JbmRleCA9IGtJUElfTUFYX0lOREVYCkBAIC0zNjgsNyArMzc0LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKIAogCi0gICAgLyoqIAorICAgIC8qKgogICAgICAqIEluaXRpYWxpemUgdGhlIERh
dGVJbnRlcnZhbEluZm8gZnJvbSBsb2NhbGUKICAgICAgKiBAcGFyYW0gbG9jYWxlICAgdGhlIGdp
dmVuIGxvY2FsZS4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgb3V0cHV0IHBhcmFtIHNldCB0byBz
dWNjZXNzL2ZhaWx1cmUgY29kZSBvbiBleGl0CkBAIC0zODksMTAgKzM5NSwxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0SW50ZXJ2YWxQYXR0ZXJuSW50ZXJuYWxseShjb25zdCBVbmljb2RlU3Ry
aW5nJiBza2VsZXRvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNh
bGVuZGFyRGF0ZUZpZWxkcyBscmdEaWZmQ2FsVW5pdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgaW50ZXJ2YWxQYXR0ZXJuLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlJiBzdGF0dXMpOyAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVz
KTsKIAogCi0gICAgLyoqZ2l2ZW4gYW4gaW5wdXQgc2tlbGV0b24sIGdldCB0aGUgYmVzdCBtYXRj
aCBza2VsZXRvbiAKKyAgICAvKipnaXZlbiBhbiBpbnB1dCBza2VsZXRvbiwgZ2V0IHRoZSBiZXN0
IG1hdGNoIHNrZWxldG9uCiAgICAgICogd2hpY2ggaGFzIHByZS1kZWZpbmVkIGludGVydmFsIHBh
dHRlcm4gaW4gcmVzb3VyY2UgZmlsZS4KICAgICAgKiBBbHNvIHJldHVybiB0aGUgZGlmZmVyZW5j
ZSBiZXR3ZWVuIHRoZSBpbnB1dCBza2VsZXRvbgogICAgICAqIGFuZCB0aGUgYmVzdCBtYXRjaCBz
a2VsZXRvbi4KQEAgLTQwMyw3ICs0MDksNyBAQCBwcml2YXRlOgogICAgICAqIEBwYXJhbSAgYmVz
dE1hdGNoRGlzdGFuY2VJbmZvICB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGlucHV0IHNrZWxldG9u
CiAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBiZXN0IG1hdGNoIHNr
ZWxldG9uLgogICAgICAqICAgICAgICAgMCwgaWYgdGhlcmUgaXMgZXhhY3QgbWF0Y2ggZm9yIGlu
cHV0IHNrZWxldG9uCi0gICAgICogICAgICAgICAxLCBpZiB0aGVyZSBpcyBvbmx5IGZpZWxkIHdp
ZHRoIGRpZmZlcmVuY2UgYmV0d2VlbiAKKyAgICAgKiAgICAgICAgIDEsIGlmIHRoZXJlIGlzIG9u
bHkgZmllbGQgd2lkdGggZGlmZmVyZW5jZSBiZXR3ZWVuCiAgICAgICogICAgICAgICAgICB0aGUg
YmVzdCBtYXRjaCBhbmQgdGhlIGlucHV0IHNrZWxldG9uCiAgICAgICogICAgICAgICAyLCB0aGUg
b25seSBmaWVsZCBkaWZmZXJlbmNlIGlzICd2JyBhbmQgJ3onCiAgICAgICogICAgICAgIC0xLCBp
ZiB0aGVyZSBpcyBjYWxlbmRhciBmaWVsZCBkaWZmZXJlbmNlIGJldHdlZW4KQEAgLTQyMSw3ICs0
MjcsNyBAQCBwcml2YXRlOgogICAgICAqIEBwYXJhbSBza2VsZXRvbiAgICAgICAgICAgIHNrZWxl
dG9uIHRvIGJlIHBhcnNlZAogICAgICAqIEBwYXJhbSBza2VsZXRvbkZpZWxkV2lkdGggIHBhcnNl
ZCBza2VsZXRvbiBmaWVsZCB3aWR0aAogICAgICAqLwotICAgIHN0YXRpYyB2b2lkIFVfRVhQT1JU
MiBwYXJzZVNrZWxldG9uKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNrZWxldG9uLCAKKyAgICBzdGF0
aWMgdm9pZCBVX0VYUE9SVDIgcGFyc2VTa2VsZXRvbihjb25zdCBVbmljb2RlU3RyaW5nJiBza2Vs
ZXRvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiBz
a2VsZXRvbkZpZWxkV2lkdGgpOwogCiAKQEAgLTQ0MSwxMiArNDQ3LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgcGF0dGVybkxldHRl
cik7CiAKIAotICAgIC8qKiAKLSAgICAgKiBDb252ZXJ0IGNhbGVuZGFyIGZpZWxkIHRvIHRoZSBp
bnRlcnZhbCBwYXR0ZXJuIGluZGV4IGluIAorICAgIC8qKgorICAgICAqIENvbnZlcnQgY2FsZW5k
YXIgZmllbGQgdG8gdGhlIGludGVydmFsIHBhdHRlcm4gaW5kZXggaW4KICAgICAgKiBoYXNoIHRh
YmxlLgogICAgICAqCi0gICAgICogU2luY2Ugd2Ugb25seSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcg
Y2FsZW5kYXIgZmllbGRzOiAKLSAgICAgKiBFUkEsIFlFQVIsIE1PTlRILCBEQVRFLCAgREFZX09G
X01PTlRILCBEQVlfT0ZfV0VFSywgCisgICAgICogU2luY2Ugd2Ugb25seSBzdXBwb3J0IHRoZSBm
b2xsb3dpbmcgY2FsZW5kYXIgZmllbGRzOgorICAgICAqIEVSQSwgWUVBUiwgTU9OVEgsIERBVEUs
ICBEQVlfT0ZfTU9OVEgsIERBWV9PRl9XRUVLLAogICAgICAqIEFNX1BNLCAgSE9VUiwgSE9VUl9P
Rl9EQVksIGFuZCBNSU5VVEUsCiAgICAgICogV2UgcmVzZXJ2ZSBvbmx5IDQgaW50ZXJ2YWwgcGF0
dGVybnMgZm9yIGEgc2tlbGV0b24uCiAgICAgICoKQEAgLTQ4OCw3ICs0OTQsNyBAQCBwcml2YXRl
OgogCiAKICAgICAvLyBkYXRhIG1lbWJlcnMKLSAgICAvLyBmYWxsYmFjayBpbnRlcnZhbCBwYXR0
ZXJuIAorICAgIC8vIGZhbGxiYWNrIGludGVydmFsIHBhdHRlcm4KICAgICBVbmljb2RlU3RyaW5n
IGZGYWxsYmFja0ludGVydmFsUGF0dGVybjsKICAgICAvLyBkZWZhdWx0IG9yZGVyCiAgICAgVUJv
b2wgZkZpcnN0RGF0ZUluUHRuSXNMYXRlckRhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL2R0cHRuZ2VuLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2R0cHRuZ2VuLmgK
aW5kZXggMTkwNzkzNWIzMzdlMzIwMzg0N2M2MzBmYWY1NjBkMjIwMTU1NWZiNi4uNTcxMmVkYmI5
ZmY2MDcyMWEyOThjMzVmNDVhYzUyMWI0OTM5OTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9kdHB0bmdlbi5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRwdG5n
ZW4uaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMu
IGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jw
b3JhdGlvbiBhbmQKKyogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTYsIEludGVybmF0aW9uYWwgQnVz
aW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCiAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTE2LDYgKzE4LDcgQEAKICNpbmNs
dWRlICJ1bmljb2RlL2xvY2lkLmgiCiAjaW5jbHVkZSAidW5pY29kZS91ZGF0LmgiCiAjaW5jbHVk
ZSAidW5pY29kZS91ZGF0cGcuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgogCiBVX05B
TUVTUEFDRV9CRUdJTgogCkBAIC0yNSw2ICsyOCw3IEBAIFVfTkFNRVNQQUNFX0JFR0lOCiAgKi8K
IAogCitjbGFzcyBDaGFyU3RyaW5nOwogY2xhc3MgSGFzaHRhYmxlOwogY2xhc3MgRm9ybWF0UGFy
c2VyOwogY2xhc3MgRGF0ZVRpbWVNYXRjaGVyOwpAQCAtMzQsMTUgKzM4LDE1IEBAIGNsYXNzIFB0
blNrZWxldG9uOwogY2xhc3MgU2hhcmVkRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yOwogCiAvKioK
LSAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgZmxleGlibGUgZ2VuZXJhdGlvbiBvZiBkYXRlIGZvcm1h
dCBwYXR0ZXJucywgbGlrZSAieXktTU0tZGQiLiAKLSAqIFRoZSB1c2VyIGNhbiBidWlsZCB1cCB0
aGUgZ2VuZXJhdG9yIGJ5IGFkZGluZyBzdWNjZXNzaXZlIHBhdHRlcm5zLiBPbmNlIHRoYXQgCisg
KiBUaGlzIGNsYXNzIHByb3ZpZGVzIGZsZXhpYmxlIGdlbmVyYXRpb24gb2YgZGF0ZSBmb3JtYXQg
cGF0dGVybnMsIGxpa2UgInl5LU1NLWRkIi4KKyAqIFRoZSB1c2VyIGNhbiBidWlsZCB1cCB0aGUg
Z2VuZXJhdG9yIGJ5IGFkZGluZyBzdWNjZXNzaXZlIHBhdHRlcm5zLiBPbmNlIHRoYXQKICAqIGlz
IGRvbmUsIGEgcXVlcnkgY2FuIGJlIG1hZGUgdXNpbmcgYSAic2tlbGV0b24iLCB3aGljaCBpcyBh
IHBhdHRlcm4gd2hpY2gganVzdAotICogaW5jbHVkZXMgdGhlIGRlc2lyZWQgZmllbGRzIGFuZCBs
ZW5ndGhzLiBUaGUgZ2VuZXJhdG9yIHdpbGwgcmV0dXJuIHRoZSAiYmVzdCBmaXQiIAorICogaW5j
bHVkZXMgdGhlIGRlc2lyZWQgZmllbGRzIGFuZCBsZW5ndGhzLiBUaGUgZ2VuZXJhdG9yIHdpbGwg
cmV0dXJuIHRoZSAiYmVzdCBmaXQiCiAgKiBwYXR0ZXJuIGNvcnJlc3BvbmRpbmcgdG8gdGhhdCBz
a2VsZXRvbi4KICAqIDxwPlRoZSBtYWluIG1ldGhvZCBwZW9wbGUgd2lsbCB1c2UgaXMgZ2V0QmVz
dFBhdHRlcm4oU3RyaW5nIHNrZWxldG9uKSwKLSAqIHNpbmNlIG5vcm1hbGx5IHRoaXMgY2xhc3Mg
aXMgcHJlLWJ1aWx0IHdpdGggZGF0YSBmcm9tIGEgcGFydGljdWxhciBsb2NhbGUuIAorICogc2lu
Y2Ugbm9ybWFsbHkgdGhpcyBjbGFzcyBpcyBwcmUtYnVpbHQgd2l0aCBkYXRhIGZyb20gYSBwYXJ0
aWN1bGFyIGxvY2FsZS4KICAqIEhvd2V2ZXIsIGdlbmVyYXRvcnMgY2FuIGJlIGJ1aWx0IGRpcmVj
dGx5IGZyb20gb3RoZXIgZGF0YSBhcyB3ZWxsLgotICogPHA+PGk+SXNzdWU6IG1heSBiZSB1c2Vm
dWwgdG8gYWxzbyBoYXZlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBsaXN0IG9mIAorICog
PHA+PGk+SXNzdWU6IG1heSBiZSB1c2VmdWwgdG8gYWxzbyBoYXZlIGEgZnVuY3Rpb24gdGhhdCBy
ZXR1cm5zIHRoZSBsaXN0IG9mCiAgKiBmaWVsZHMgaW4gYSBwYXR0ZXJuLCBpbiBvcmRlciwgc2lu
Y2Ugd2UgaGF2ZSB0aGF0IGludGVybmFsbHkuCiAgKiBUaGF0IHdvdWxkIGJlIHVzZWZ1bCBmb3Ig
Z2V0dGluZyB0aGUgVUkgb3JkZXIgb2YgZmllbGQgZWxlbWVudHMuPC9pPgogICogQHN0YWJsZSBJ
Q1UgMy44CkBAIC04NCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAgKiBAc3RhYmxlIElDVSAzLjgK
ICAgICAgKi8KICAgICAgc3RhdGljIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvciogVV9FWFBPUlQy
IGNyZWF0ZUVtcHR5SW5zdGFuY2UoVUVycm9yQ29kZSYgc3RhdHVzKTsKLSAgICAgCisKICAgICAv
KioKICAgICAgKiBEZXN0cnVjdG9yLgogICAgICAqIEBzdGFibGUgSUNVIDMuOApAQCAtOTIsNyAr
OTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yKCk7
CiAKICAgICAvKioKLSAgICAgKiBDbG9uZSBEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3Igb2JqZWN0
LiBDbGllbnRzIGFyZSByZXNwb25zaWJsZSBmb3IgCisgICAgICogQ2xvbmUgRGF0ZVRpbWVQYXR0
ZXJuR2VuZXJhdG9yIG9iamVjdC4gQ2xpZW50cyBhcmUgcmVzcG9uc2libGUgZm9yCiAgICAgICog
ZGVsZXRpbmcgdGhlIERhdGVUaW1lUGF0dGVybkdlbmVyYXRvciBvYmplY3QgY2xvbmVkLgogICAg
ICAqIEBzdGFibGUgSUNVIDMuOAogICAgICAqLwpAQCAtMTA2LDcgKzExMCw3IEBAIHB1YmxpYzoK
ICAgICAgICogQHN0YWJsZSBJQ1UgMy44CiAgICAgICAqLwogICAgIFVCb29sIG9wZXJhdG9yPT0o
Y29uc3QgRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgCisKICAg
ICAvKioKICAgICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbm90aGVyIG9iamVjdCBpcyBzZW1hbnRpY2Fs
bHkgdW5lcXVhbCB0byB0aGlzIG9uZS4KICAgICAgKgpAQCAtMTI0LDkgKzEyOCwyOCBAQCBwdWJs
aWM6CiAgICAgICogQHBhcmFtIHN0YXR1cyAgT3V0cHV0IHBhcmFtIHNldCB0byBzdWNjZXNzL2Zh
aWx1cmUgY29kZSBvbiBleGl0LAogICAgICAqICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBu
b3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KICAgICAgKiBA
cmV0dXJuIHNrZWxldG9uIHN1Y2ggYXMgIk1NTWRkIgorICAgICAqIEBzdGFibGUgSUNVIDU2Cisg
ICAgICovCisgICAgc3RhdGljIFVuaWNvZGVTdHJpbmcgc3RhdGljR2V0U2tlbGV0b24oY29uc3Qg
VW5pY29kZVN0cmluZyYgcGF0dGVybiwgVUVycm9yQ29kZSYgc3RhdHVzKTsKKworICAgIC8qKgor
ICAgICAqIFV0aWxpdHkgdG8gcmV0dXJuIGEgdW5pcXVlIHNrZWxldG9uIGZyb20gYSBnaXZlbiBw
YXR0ZXJuLiBGb3IgZXhhbXBsZSwKKyAgICAgKiBib3RoICJNTU0tZGQiIGFuZCAiZGQvTU1NIiBw
cm9kdWNlIHRoZSBza2VsZXRvbiAiTU1NZGQiLgorICAgICAqIGdldFNrZWxldG9uKCkgd29ya3Mg
ZXhhY3RseSBsaWtlIHN0YXRpY0dldFNrZWxldG9uKCkuCisgICAgICogVXNlIHN0YXRpY0dldFNr
ZWxldG9uKCkgaW5zdGVhZCBvZiBnZXRTa2VsZXRvbigpLgorICAgICAqCisgICAgICogQHBhcmFt
IHBhdHRlcm4gICBJbnB1dCBwYXR0ZXJuLCBzdWNoIGFzICJkZC9NTU0iCisgICAgICogQHBhcmFt
IHN0YXR1cyAgT3V0cHV0IHBhcmFtIHNldCB0byBzdWNjZXNzL2ZhaWx1cmUgY29kZSBvbiBleGl0
LAorICAgICAqICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWls
dXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KKyAgICAgKiBAcmV0dXJuIHNrZWxldG9uIHN1
Y2ggYXMgIk1NTWRkIgogICAgICAqIEBzdGFibGUgSUNVIDMuOAogICAgICAqLwotICAgIFVuaWNv
ZGVTdHJpbmcgZ2V0U2tlbGV0b24oY29uc3QgVW5pY29kZVN0cmluZyYgcGF0dGVybiwgVUVycm9y
Q29kZSYgc3RhdHVzKTsKKyAgICBVbmljb2RlU3RyaW5nIGdldFNrZWxldG9uKGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIHBhdHRlcm4sIFVFcnJvckNvZGUmIHN0YXR1cyk7IC8qIHsKKyAgICAgICAgVGhl
IGZ1bmN0aW9uIGlzIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSBpdCBpcyBhIHN0YWJsZSBBUEkgY2Fs
bGluZyBhIGRyYWZ0IEFQSS4KKyAgICAgICAgQWZ0ZXIgc3RhdGljR2V0U2tlbGV0b24gYmVjb21l
cyBzdGFibGUsIHN0YXRpY0dldFNrZWxldG9uIGNhbiBiZSB1c2VkIGFuZAorICAgICAgICB0aGVz
ZSBjb21tZW50cyBhbmQgdGhlIGRlZmluaXRpb24gb2YgZ2V0U2tlbGV0b24gaW4gZHRwdG5nZW4u
Y3BwIHNob3VsZCBiZSByZW1vdmVkLgorICAgICAgICByZXR1cm4gc3RhdGljR2V0U2tlbGV0b24o
cGF0dGVybiwgc3RhdHVzKTsKKyAgICB9Ki8KIAogICAgIC8qKgogICAgICAqIFV0aWxpdHkgdG8g
cmV0dXJuIGEgdW5pcXVlIGJhc2Ugc2tlbGV0b24gZnJvbSBhIGdpdmVuIHBhdHRlcm4uIFRoaXMg
aXMKQEAgLTEzOCwzOCArMTYxLDYwIEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gcGF0dGVybiAg
SW5wdXQgcGF0dGVybiwgc3VjaCBhcyAiZGQvTU1NIgogICAgICAqIEBwYXJhbSBzdGF0dXMgIE91
dHB1dCBwYXJhbSBzZXQgdG8gc3VjY2Vzcy9mYWlsdXJlIGNvZGUgb24gZXhpdCwKICAgICAgKiAg
ICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhl
IGZ1bmN0aW9uIGNhbGwuCi0gICAgICogQHJldHVybiBiYXNlIHNrZWxldG9uLCBzdWNoIGFzICJN
ZCIKKyAgICAgKiBAcmV0dXJuIGJhc2Ugc2tlbGV0b24sIHN1Y2ggYXMgIk1NTWQiCisgICAgICog
QHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8KKyAgICBzdGF0aWMgVW5pY29kZVN0cmluZyBzdGF0aWNH
ZXRCYXNlU2tlbGV0b24oY29uc3QgVW5pY29kZVN0cmluZyYgcGF0dGVybiwgVUVycm9yQ29kZSYg
c3RhdHVzKTsKKworICAgIC8qKgorICAgICAqIFV0aWxpdHkgdG8gcmV0dXJuIGEgdW5pcXVlIGJh
c2Ugc2tlbGV0b24gZnJvbSBhIGdpdmVuIHBhdHRlcm4uIFRoaXMgaXMKKyAgICAgKiB0aGUgc2Ft
ZSBhcyB0aGUgc2tlbGV0b24sIGV4Y2VwdCB0aGF0IGRpZmZlcmVuY2VzIGluIGxlbmd0aCBhcmUg
bWluaW1pemVkCisgICAgICogc28gYXMgdG8gb25seSBwcmVzZXJ2ZSB0aGUgZGlmZmVyZW5jZSBi
ZXR3ZWVuIHN0cmluZyBhbmQgbnVtZXJpYyBmb3JtLiBTbworICAgICAqIGZvciBleGFtcGxlLCBi
b3RoICJNTU0tZGQiIGFuZCAiZC9NTU0iIHByb2R1Y2UgdGhlIHNrZWxldG9uICJNTU1kIgorICAg
ICAqIChub3RpY2UgdGhlIHNpbmdsZSBkKS4KKyAgICAgKiBnZXRCYXNlU2tlbGV0b24oKSB3b3Jr
cyBleGFjdGx5IGxpa2Ugc3RhdGljR2V0QmFzZVNrZWxldG9uKCkuCisgICAgICogVXNlIHN0YXRp
Y0dldEJhc2VTa2VsZXRvbigpIGluc3RlYWQgb2YgZ2V0QmFzZVNrZWxldG9uKCkuCisgICAgICoK
KyAgICAgKiBAcGFyYW0gcGF0dGVybiAgSW5wdXQgcGF0dGVybiwgc3VjaCBhcyAiZGQvTU1NIgor
ICAgICAqIEBwYXJhbSBzdGF0dXMgIE91dHB1dCBwYXJhbSBzZXQgdG8gc3VjY2Vzcy9mYWlsdXJl
IGNvZGUgb24gZXhpdCwKKyAgICAgKiAgICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGlj
YXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwuCisgICAgICogQHJldHVybiBi
YXNlIHNrZWxldG9uLCBzdWNoIGFzICJNTU1kIgogICAgICAqIEBzdGFibGUgSUNVIDMuOAogICAg
ICAqLwotICAgIFVuaWNvZGVTdHJpbmcgZ2V0QmFzZVNrZWxldG9uKGNvbnN0IFVuaWNvZGVTdHJp
bmcmIHBhdHRlcm4sIFVFcnJvckNvZGUmIHN0YXR1cyk7CisgICAgVW5pY29kZVN0cmluZyBnZXRC
YXNlU2tlbGV0b24oY29uc3QgVW5pY29kZVN0cmluZyYgcGF0dGVybiwgVUVycm9yQ29kZSYgc3Rh
dHVzKTsgLyogeworICAgICAgICBUaGUgZnVuY3Rpb24gaXMgY29tbWVudGVkIG91dCBiZWNhdXNl
IGl0IGlzIGEgc3RhYmxlIEFQSSBjYWxsaW5nIGEgZHJhZnQgQVBJLgorICAgICAgICBBZnRlciBz
dGF0aWNHZXRCYXNlU2tlbGV0b24gYmVjb21lcyBzdGFibGUsIHN0YXRpY0dldEJhc2VTa2VsZXRv
biBjYW4gYmUgdXNlZCBhbmQKKyAgICAgICAgdGhlc2UgY29tbWVudHMgYW5kIHRoZSBkZWZpbml0
aW9uIG9mIGdldEJhc2VTa2VsZXRvbiBpbiBkdHB0bmdlbi5jcHAgc2hvdWxkIGJlIHJlbW92ZWQu
CisgICAgICAgIHJldHVybiBzdGF0aWNHZXRCYXNlU2tlbGV0b24ocGF0dGVybiwgc3RhdHVzKTsK
KyAgICB9Ki8KIAogICAgIC8qKgogICAgICAqIEFkZHMgYSBwYXR0ZXJuIHRvIHRoZSBnZW5lcmF0
b3IuIElmIHRoZSBwYXR0ZXJuIGhhcyB0aGUgc2FtZSBza2VsZXRvbiBhcwogICAgICAqIGFuIGV4
aXN0aW5nIHBhdHRlcm4sIGFuZCB0aGUgb3ZlcnJpZGUgcGFyYW1ldGVyIGlzIHNldCwgdGhlbiB0
aGUgcHJldmlvdXMKICAgICAgKiB2YWx1ZSBpcyBvdmVycmlkZW4uIE90aGVyd2lzZSwgdGhlIHBy
ZXZpb3VzIHZhbHVlIGlzIHJldGFpbmVkLiBJbiBlaXRoZXIKLSAgICAgKiBjYXNlLCB0aGUgY29u
ZmxpY3Rpbmcgc3RhdHVzIGlzIHNldCBhbmQgcHJldmlvdXMgdmFsZSBpcyBzdG9yZWQgaW4gCisg
ICAgICogY2FzZSwgdGhlIGNvbmZsaWN0aW5nIHN0YXR1cyBpcyBzZXQgYW5kIHByZXZpb3VzIHZh
bGUgaXMgc3RvcmVkIGluCiAgICAgICogY29uZmxpY3RpbmcgcGF0dGVybi4KICAgICAgKiA8cD4K
ICAgICAgKiBOb3RlIHRoYXQgc2luZ2xlLWZpZWxkIHBhdHRlcm5zIChsaWtlICJNTU0iKSBhcmUg
YXV0b21hdGljYWxseSBhZGRlZCwgYW5kCiAgICAgICogZG9uJ3QgbmVlZCB0byBiZSBhZGRlZCBl
eHBsaWNpdGx5IQogICAgICAqCiAgICAgICogQHBhcmFtIHBhdHRlcm4gICBJbnB1dCBwYXR0ZXJu
LCBzdWNoIGFzICJkZC9NTU0iCi0gICAgICogQHBhcmFtIG92ZXJyaWRlICBXaGVuIGV4aXN0aW5n
IHZhbHVlcyBhcmUgdG8gYmUgb3ZlcnJpZGRlbiB1c2UgdHJ1ZSwgCisgICAgICogQHBhcmFtIG92
ZXJyaWRlICBXaGVuIGV4aXN0aW5nIHZhbHVlcyBhcmUgdG8gYmUgb3ZlcnJpZGRlbiB1c2UgdHJ1
ZSwKICAgICAgKiAgICAgICAgICAgICAgICAgICBvdGhlcndpc2UgdXNlIGZhbHNlLgogICAgICAq
IEBwYXJhbSBjb25mbGljdGluZ1BhdHRlcm4gIFByZXZpb3VzIHBhdHRlcm4gd2l0aCB0aGUgc2Ft
ZSBza2VsZXRvbi4KICAgICAgKiBAcGFyYW0gc3RhdHVzICBPdXRwdXQgcGFyYW0gc2V0IHRvIHN1
Y2Nlc3MvZmFpbHVyZSBjb2RlIG9uIGV4aXQsCiAgICAgICogICAgICAgICAgICAgICB3aGljaCBt
dXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgotICAg
ICAqIEByZXR1cm4gY29uZmxpY3Rpbmcgc3RhdHVzLiAgVGhlIHZhbHVlIGNvdWxkIGJlIFVEQVRQ
R19OT19DT05GTElDVCwgCisgICAgICogQHJldHVybiBjb25mbGljdGluZyBzdGF0dXMuICBUaGUg
dmFsdWUgY291bGQgYmUgVURBVFBHX05PX0NPTkZMSUNULAogICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVREFUUEdfQkFTRV9DT05GTElDVCBvciBVREFUUEdfQ09ORkxJQ1QuCiAg
ICAgICogQHN0YWJsZSBJQ1UgMy44Ci0JICogPHA+Ci0JICogPGg0PlNhbXBsZSBjb2RlPC9oND4K
LQkgKiBcc25pcHBldCBzYW1wbGVzL2R0cHRuZ3NhbXBsZS9kdHB0bmdzYW1wbGUuY3BwIGdldEJl
c3RQYXR0ZXJuRXhhbXBsZTEKLQkgKiBcc25pcHBldCBzYW1wbGVzL2R0cHRuZ3NhbXBsZS9kdHB0
bmdzYW1wbGUuY3BwIGFkZFBhdHRlcm5FeGFtcGxlCi0JICogPHA+Ci0gICAgICovCi0gICAgVURh
dGVUaW1lUGF0dGVybkNvbmZsaWN0IGFkZFBhdHRlcm4oY29uc3QgVW5pY29kZVN0cmluZyYgcGF0
dGVybiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgb3Zl
cnJpZGUsIAorICAgICAqIDxwPgorICAgICAqIDxoND5TYW1wbGUgY29kZTwvaDQ+CisgICAgICog
XHNuaXBwZXQgc2FtcGxlcy9kdHB0bmdzYW1wbGUvZHRwdG5nc2FtcGxlLmNwcCBnZXRCZXN0UGF0
dGVybkV4YW1wbGUxCisgICAgICogXHNuaXBwZXQgc2FtcGxlcy9kdHB0bmdzYW1wbGUvZHRwdG5n
c2FtcGxlLmNwcCBhZGRQYXR0ZXJuRXhhbXBsZQorICAgICAqIDxwPgorICAgICAqLworICAgIFVE
YXRlVGltZVBhdHRlcm5Db25mbGljdCBhZGRQYXR0ZXJuKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHBh
dHRlcm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgb3Zl
cnJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0
cmluZyYgY29uZmxpY3RpbmdQYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKQEAgLTI2OCwxMSArMzEzLDExIEBAIHB1
YmxpYzoKICAgICAgKiBAcmV0dXJuIGJlc3RQYXR0ZXJuCiAgICAgICogICAgICAgICAgICBUaGUg
YmVzdCBwYXR0ZXJuIGZvdW5kIGZyb20gdGhlIGdpdmVuIHNrZWxldG9uLgogICAgICAqIEBzdGFi
bGUgSUNVIDMuOAotCSAqIDxwPgotCSAqIDxoND5TYW1wbGUgY29kZTwvaDQ+Ci0JICogXHNuaXBw
ZXQgc2FtcGxlcy9kdHB0bmdzYW1wbGUvZHRwdG5nc2FtcGxlLmNwcCBnZXRCZXN0UGF0dGVybkV4
YW1wbGUxCi0JICogXHNuaXBwZXQgc2FtcGxlcy9kdHB0bmdzYW1wbGUvZHRwdG5nc2FtcGxlLmNw
cCBnZXRCZXN0UGF0dGVybkV4YW1wbGUKLQkgKiA8cD4KKyAgICAgKiA8cD4KKyAgICAgKiA8aDQ+
U2FtcGxlIGNvZGU8L2g0PgorICAgICAqIFxzbmlwcGV0IHNhbXBsZXMvZHRwdG5nc2FtcGxlL2R0
cHRuZ3NhbXBsZS5jcHAgZ2V0QmVzdFBhdHRlcm5FeGFtcGxlMQorICAgICAqIFxzbmlwcGV0IHNh
bXBsZXMvZHRwdG5nc2FtcGxlL2R0cHRuZ3NhbXBsZS5jcHAgZ2V0QmVzdFBhdHRlcm5FeGFtcGxl
CisgICAgICogPHA+CiAgICAgICovCiAgICAgIFVuaWNvZGVTdHJpbmcgZ2V0QmVzdFBhdHRlcm4o
Y29uc3QgVW5pY29kZVN0cmluZyYgc2tlbGV0b24sIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAKQEAg
LTMxNiwxNCArMzYxLDE0IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgIHdoaWNoIG11
c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAg
ICogQHJldHVybiBwYXR0ZXJuIGFkanVzdGVkIHRvIG1hdGNoIHRoZSBza2VsZXRvbiBmaWVsZHMg
d2lkdGhzIGFuZCBzdWJ0eXBlcy4KICAgICAgKiBAc3RhYmxlIElDVSAzLjgKLQkgKiA8cD4KLQkg
KiA8aDQ+U2FtcGxlIGNvZGU8L2g0PgotCSAqIFxzbmlwcGV0IHNhbXBsZXMvZHRwdG5nc2FtcGxl
L2R0cHRuZ3NhbXBsZS5jcHAgZ2V0QmVzdFBhdHRlcm5FeGFtcGxlMQotCSAqIFxzbmlwcGV0IHNh
bXBsZXMvZHRwdG5nc2FtcGxlL2R0cHRuZ3NhbXBsZS5jcHAgcmVwbGFjZUZpZWxkVHlwZXNFeGFt
cGxlCi0JICogPHA+Ci0gICAgICovCi0gICAgIFVuaWNvZGVTdHJpbmcgcmVwbGFjZUZpZWxkVHlw
ZXMoY29uc3QgVW5pY29kZVN0cmluZyYgcGF0dGVybiwgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyYgc2tlbGV0b24sIAorICAgICAqIDxw
PgorICAgICAqIDxoND5TYW1wbGUgY29kZTwvaDQ+CisgICAgICogXHNuaXBwZXQgc2FtcGxlcy9k
dHB0bmdzYW1wbGUvZHRwdG5nc2FtcGxlLmNwcCBnZXRCZXN0UGF0dGVybkV4YW1wbGUxCisgICAg
ICogXHNuaXBwZXQgc2FtcGxlcy9kdHB0bmdzYW1wbGUvZHRwdG5nc2FtcGxlLmNwcCByZXBsYWNl
RmllbGRUeXBlc0V4YW1wbGUKKyAgICAgKiA8cD4KKyAgICAgKi8KKyAgICAgVW5pY29kZVN0cmlu
ZyByZXBsYWNlRmllbGRUeXBlcyhjb25zdCBVbmljb2RlU3RyaW5nJiBwYXR0ZXJuLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNrZWxl
dG9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUmIHN0
YXR1cyk7CiAKICAgICAvKioKQEAgLTM0OCw4ICszOTMsOCBAQCBwdWJsaWM6CiAgICAgICogQHJl
dHVybiBwYXR0ZXJuIGFkanVzdGVkIHRvIG1hdGNoIHRoZSBza2VsZXRvbiBmaWVsZHMgd2lkdGhz
IGFuZCBzdWJ0eXBlcy4KICAgICAgKiBAc3RhYmxlIElDVSA0LjQKICAgICAgKi8KLSAgICAgVW5p
Y29kZVN0cmluZyByZXBsYWNlRmllbGRUeXBlcyhjb25zdCBVbmljb2RlU3RyaW5nJiBwYXR0ZXJu
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3Ry
aW5nJiBza2VsZXRvbiwgCisgICAgIFVuaWNvZGVTdHJpbmcgcmVwbGFjZUZpZWxkVHlwZXMoY29u
c3QgVW5pY29kZVN0cmluZyYgcGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nJiBza2VsZXRvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVRGF0ZVRpbWVQYXR0ZXJuTWF0Y2hPcHRpb25zIG9wdGlvbnMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVz
KTsKIApAQCAtMzY4LDEyICs0MTMsMTIgQEAgcHVibGljOgogCiAgICAgIC8qKgogICAgICAgKiBH
ZXQgdGhlIHBhdHRlcm4gY29ycmVzcG9uZGluZyB0byBhIGdpdmVuIHNrZWxldG9uLgotICAgICAg
KiBAcGFyYW0gc2tlbGV0b24gCisgICAgICAqIEBwYXJhbSBza2VsZXRvbgogICAgICAgKiBAcmV0
dXJuIHBhdHRlcm4gY29ycmVzcG9uZGluZyB0byBhIGdpdmVuIHNrZWxldG9uLgogICAgICAgKiBA
c3RhYmxlIElDVSAzLjgKICAgICAgICovCiAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcmIGdldFBh
dHRlcm5Gb3JTa2VsZXRvbihjb25zdCBVbmljb2RlU3RyaW5nJiBza2VsZXRvbikgY29uc3Q7Ci0g
ICAgIAorCiAgICAgLyoqCiAgICAgICogUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIGJhc2Ugc2tl
bGV0b25zIChpbiBjYW5vbmljYWwgZm9ybSkgZnJvbSB0aGlzIGNsYXNzLgogICAgICAqCkBAIC0z
ODcsMTEgKzQzMiwxMSBAQCBwdWJsaWM6CiAKICNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQog
ICAgICAvKioKLSAgICAgICogUmV0dXJuIGEgbGlzdCBvZiByZWR1bmRhbnQgcGF0dGVybnMgYXJl
IHRob3NlIHdoaWNoIGlmIHJlbW92ZWQsIG1ha2Ugbm8gCi0gICAgICAqIGRpZmZlcmVuY2UgaW4g
dGhlIHJlc3VsdGluZyBnZXRCZXN0UGF0dGVybiB2YWx1ZXMuIFRoaXMgbWV0aG9kIHJldHVybnMg
YSAKLSAgICAgICogbGlzdCBvZiB0aGVtLCB0byBoZWxwIGNoZWNrIHRoZSBjb25zaXN0ZW5jeSBv
ZiB0aGUgcGF0dGVybnMgdXNlZCB0byBidWlsZCAKKyAgICAgICogUmV0dXJuIGEgbGlzdCBvZiBy
ZWR1bmRhbnQgcGF0dGVybnMgYXJlIHRob3NlIHdoaWNoIGlmIHJlbW92ZWQsIG1ha2Ugbm8KKyAg
ICAgICogZGlmZmVyZW5jZSBpbiB0aGUgcmVzdWx0aW5nIGdldEJlc3RQYXR0ZXJuIHZhbHVlcy4g
VGhpcyBtZXRob2QgcmV0dXJucyBhCisgICAgICAqIGxpc3Qgb2YgdGhlbSwgdG8gaGVscCBjaGVj
ayB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIHBhdHRlcm5zIHVzZWQgdG8gYnVpbGQKICAgICAgICog
dGhpcyBnZW5lcmF0b3IuCi0gICAgICAqIAorICAgICAgKgogICAgICAgKiBAcGFyYW0gc3RhdHVz
ICBPdXRwdXQgcGFyYW0gc2V0IHRvIHN1Y2Nlc3MvZmFpbHVyZSBjb2RlIG9uIGV4aXQsCiAgICAg
ICAqICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9y
ZSB0aGUgZnVuY3Rpb24gY2FsbC4KICAgICAgICogQHJldHVybiBhIFN0cmluZ0VudW1lcmF0aW9u
IHdpdGggdGhlIHJlZHVuZGFudCBwYXR0ZXJuLgpAQCAtNDA5LDcgKzQ1NCw3IEBAIHB1YmxpYzoK
ICAgICAgKiB0aGUgZGVjaW1hbCBzdHJpbmcgaXMgIiwiLiBUaGVuIHRoZSByZXN1bHRpbmcgcGF0
dGVybiBpcyBtb2RpZmllZCB0byBiZQogICAgICAqICJIOm1tOnNzLFNTU1MiCiAgICAgICoKLSAg
ICAgKiBAcGFyYW0gZGVjaW1hbCAKKyAgICAgKiBAcGFyYW0gZGVjaW1hbAogICAgICAqIEBzdGFi
bGUgSUNVIDMuOAogICAgICAqLwogICAgIHZvaWQgc2V0RGVjaW1hbChjb25zdCBVbmljb2RlU3Ry
aW5nJiBkZWNpbWFsKTsKQEAgLTQ3MywyMSArNTE4LDI1IEBAIHByaXZhdGU6CiAgICAgVW5pY29k
ZVN0cmluZyBkZWNpbWFsOwogICAgIERhdGVUaW1lTWF0Y2hlciAqc2tpcE1hdGNoZXI7CiAgICAg
SGFzaHRhYmxlICpmQXZhaWxhYmxlRm9ybWF0S2V5SGFzaDsKLSAgICBVbmljb2RlU3RyaW5nIGhh
Y2tQYXR0ZXJuOwogICAgIFVuaWNvZGVTdHJpbmcgZW1wdHlTdHJpbmc7Ci0gICAgVUNoYXIgZkRl
ZmF1bHRIb3VyRm9ybWF0Q2hhcjsKLSAgICAKKyAgICBjaGFyMTZfdCBmRGVmYXVsdEhvdXJGb3Jt
YXRDaGFyOworCisgICAgaW50MzJfdCBmQWxsb3dlZEhvdXJGb3JtYXRzWzddOyAgLy8gQWN0dWFs
bHkgYW4gYXJyYXkgb2YgQWxsb3dlZEhvdXJGb3JtYXQgZW51bSB0eXBlLCBlbmRpbmcgd2l0aCBV
TktOT1dOLgorCiAgICAgLyogaW50ZXJuYWwgZmxhZ3MgbWFza3MgZm9yIGFkanVzdEZpZWxkVHlw
ZXMgZXRjLiAqLwogICAgIGVudW0gewogICAgICAgICBrRFRQR05vRmxhZ3MgPSAwLAogICAgICAg
ICBrRFRQR0ZpeEZyYWN0aW9uYWxTZWNvbmRzID0gMSwKICAgICAgICAga0RUUEdTa2VsZXRvblVz
ZXNDYXBKID0gMgorICAgICAgICAvLyB3aXRoICMxMzE4Mywgbm8gbG9uZ2VyIG5lZWQgZmxhZ3Mg
Zm9yIGIsIEIKICAgICB9OwogCiAgICAgdm9pZCBpbml0RGF0YShjb25zdCBMb2NhbGUgJmxvY2Fs
ZSwgVUVycm9yQ29kZSAmc3RhdHVzKTsKLSAgICB2b2lkIGFkZENhbm9uaWNhbEl0ZW1zKCk7Cisg
ICAgdm9pZCBhZGRDYW5vbmljYWxJdGVtcyhVRXJyb3JDb2RlICZzdGF0dXMpOwogICAgIHZvaWQg
YWRkSUNVUGF0dGVybnMoY29uc3QgTG9jYWxlJiBsb2NhbGUsIFVFcnJvckNvZGUmIHN0YXR1cyk7
CiAgICAgdm9pZCBoYWNrVGltZXMoY29uc3QgVW5pY29kZVN0cmluZyYgaGFja1BhdHRlcm4sIFVF
cnJvckNvZGUmIHN0YXR1cyk7CisgICAgdm9pZCBnZXRDYWxlbmRhclR5cGVUb1VzZShjb25zdCBM
b2NhbGUmIGxvY2FsZSwgQ2hhclN0cmluZyYgZGVzdGluYXRpb24sIFVFcnJvckNvZGUmIGVycik7
CisgICAgdm9pZCBjb25zdW1lU2hvcnRUaW1lUGF0dGVybihjb25zdCBVbmljb2RlU3RyaW5nJiBz
aG9ydFRpbWVQYXR0ZXJuLCBVRXJyb3JDb2RlJiBzdGF0dXMpOwogICAgIHZvaWQgYWRkQ0xEUkRh
dGEoY29uc3QgTG9jYWxlJiBsb2NhbGUsIFVFcnJvckNvZGUmIHN0YXR1cyk7CiAgICAgVURhdGVU
aW1lUGF0dGVybkNvbmZsaWN0IGFkZFBhdHRlcm5XaXRoU2tlbGV0b24oY29uc3QgVW5pY29kZVN0
cmluZyYgcGF0dGVybiwgY29uc3QgVW5pY29kZVN0cmluZyAqIHNrZWxldG9uVG9Vc2UsIFVCb29s
IG92ZXJyaWRlLCBVbmljb2RlU3RyaW5nJiBjb25mbGljdGluZ1BhdHRlcm4sIFVFcnJvckNvZGUm
IHN0YXR1cyk7CiAgICAgdm9pZCBpbml0SGFzaHRhYmxlKFVFcnJvckNvZGUmIHN0YXR1cyk7CkBA
IC00OTUsNyArNTQ0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERlY2ltYWxTeW1ib2xzKGNv
bnN0IExvY2FsZSYgbG9jYWxlLCBVRXJyb3JDb2RlJiBzdGF0dXMpOwogICAgIFVEYXRlVGltZVBh
dHRlcm5GaWVsZCBnZXRBcHBlbmRGb3JtYXROdW1iZXIoY29uc3QgY2hhciogZmllbGQpIGNvbnN0
OwogICAgIFVEYXRlVGltZVBhdHRlcm5GaWVsZCBnZXRBcHBlbmROYW1lTnVtYmVyKGNvbnN0IGNo
YXIqIGZpZWxkKSBjb25zdDsKKyAgICBVbmljb2RlU3RyaW5nJiBnZXRNdXRhYmxlQXBwZW5kSXRl
bU5hbWUoVURhdGVUaW1lUGF0dGVybkZpZWxkIGZpZWxkKTsKICAgICB2b2lkIGdldEFwcGVuZE5h
bWUoVURhdGVUaW1lUGF0dGVybkZpZWxkIGZpZWxkLCBVbmljb2RlU3RyaW5nJiB2YWx1ZSk7Cisg
ICAgVW5pY29kZVN0cmluZyBtYXBTa2VsZXRvbk1ldGFjaGFyYWN0ZXJzKGNvbnN0IFVuaWNvZGVT
dHJpbmcmIHBhdHRlcm5Gb3JtLCBpbnQzMl90KiBmbGFncywgVUVycm9yQ29kZSYgc3RhdHVzKTsK
ICAgICBpbnQzMl90IGdldENhbm9uaWNhbEluZGV4KGNvbnN0IFVuaWNvZGVTdHJpbmcmIGZpZWxk
KTsKICAgICBjb25zdCBVbmljb2RlU3RyaW5nKiBnZXRCZXN0UmF3KERhdGVUaW1lTWF0Y2hlciYg
c291cmNlLCBpbnQzMl90IGluY2x1ZGVNYXNrLCBEaXN0YW5jZUluZm8qIG1pc3NpbmdGaWVsZHMs
IGNvbnN0IFB0blNrZWxldG9uKiogc3BlY2lmaWVkU2tlbGV0b25QdHIgPSAwKTsKICAgICBVbmlj
b2RlU3RyaW5nIGFkanVzdEZpZWxkVHlwZXMoY29uc3QgVW5pY29kZVN0cmluZyYgcGF0dGVybiwg
Y29uc3QgUHRuU2tlbGV0b24qIHNwZWNpZmllZFNrZWxldG9uLCBpbnQzMl90IGZsYWdzLCBVRGF0
ZVRpbWVQYXR0ZXJuTWF0Y2hPcHRpb25zIG9wdGlvbnMgPSBVREFUUEdfTUFUQ0hfTk9fT1BUSU9O
Uyk7CkBAIC01MDUsNiArNTU2LDEyIEBAIHByaXZhdGU6CiAgICAgVUJvb2wgaXNBdmFpbGFibGVG
b3JtYXRTZXQoY29uc3QgVW5pY29kZVN0cmluZyAma2V5KSBjb25zdDsKICAgICB2b2lkIGNvcHlI
YXNodGFibGUoSGFzaHRhYmxlICpvdGhlciwgVUVycm9yQ29kZSAmc3RhdHVzKTsKICAgICBVQm9v
bCBpc0Nhbm9uaWNhbEl0ZW0oY29uc3QgVW5pY29kZVN0cmluZyYgaXRlbSkgY29uc3Q7CisgICAg
c3RhdGljIHZvaWQgVV9DQUxMQ09OViBsb2FkQWxsb3dlZEhvdXJGb3JtYXRzRGF0YShVRXJyb3JD
b2RlICZzdGF0dXMpOworICAgIHZvaWQgZ2V0QWxsb3dlZEhvdXJGb3JtYXRzKGNvbnN0IExvY2Fs
ZSAmbG9jYWxlLCBVRXJyb3JDb2RlICZzdGF0dXMpOworCisgICAgc3RydWN0IEFwcGVuZEl0ZW1G
b3JtYXRzU2luazsKKyAgICBzdHJ1Y3QgQXBwZW5kSXRlbU5hbWVzU2luazsKKyAgICBzdHJ1Y3Qg
QXZhaWxhYmxlRm9ybWF0c1Npbms7CiB9IDsvLyBlbmQgY2xhc3MgRGF0ZVRpbWVQYXR0ZXJuR2Vu
ZXJhdG9yCiAKIFVfTkFNRVNQQUNFX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9kdHJ1bGUuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZHRydWxlLmgKaW5kZXggY2I1
MjZhMTUyY2UzMGZjZmIzOWNiYjM0ZjI3N2FlZmEyOWU2MjMwZC4uMDc2NzI0OTFhNjczNDJjYjM3
MGVlYmQxNjNkNGY4Mzc0NzE3OTM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS9kdHJ1bGUuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2R0cnVsZS5oCkBAIC0xLDMg
KzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4K
Ky8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJp
Z2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDA4LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAg
ICAgICAgICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZW51bXNldC5oIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS9lbnVtc2V0LmgKaW5kZXggNTEwNmMzNzE3NzExMTk0M2I5
MjdjMzc5NDhiZGZjZTUyYzc2YzIwOS4uZjYzZGQxNjIyZTIwYzRhNTc3ODA4MGM1MWJlOWJjYTUz
M2UwNWY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9lbnVtc2V0LmgKKysr
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9lbnVtc2V0LmgKQEAgLTEsMyArMSw1IEBACisvLyDC
qSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAm
IHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoK
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgogKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9lcnJvcmNvZGUuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZXJyb3Jjb2RlLmgKaW5k
ZXggM2I2MDE4MTBkN2IxMmZjNTg5NWViZjc2ODkyMzI5ODUyMzZiNmQ5Mi4uODFjYWQyMDc0NTIz
YzIxYmRiYzE4ZTcyZDVlN2Q1NDlhM2JmOWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9lcnJvcmNvZGUuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2Vycm9yY29k
ZS5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4g
YW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29k
ZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC02
LDcgKzgsNyBAQAogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIGVy
cm9yY29kZS5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYt
OAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZmllbGRwb3MuaCBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvZmllbGRwb3MuaAppbmRleCAzOGE5NTc2ZTc4MmE5M2VjNjQyMzMzYmZiYjk4
NzBkYTc3OTRkYjkxLi4wYmNjOGRhYTBmNzNlMTE3MzQ3Y2U0ZGI4NjE1YWJlYzNhOGY4YmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2ZpZWxkcG9zLmgKKysrIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS9maWVsZHBvcy5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBh
bmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBv
ZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKICAqICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDYsIEludGVybmF0
aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKQEAgLTU2LDcgKzU4LDcgQEAgVV9OQU1FU1BBQ0VfQkVH
SU4KICAqIHRvIHBlcmZvcm0gcGFydGlhbCBmb3JtYXR0aW5nIG9yIHRvIGdldCBpbmZvcm1hdGlv
biBhYm91dCB0aGUKICAqIGZvcm1hdHRlZCBvdXRwdXQgKHN1Y2ggYXMgdGhlIHBvc2l0aW9uIG9m
IGEgZmllbGQpLgogICoKLSAqIFRoZSBGaWVsZFBvc2l0aW9uIGNsYXNzIGlzIG5vdCBzdWl0YWJs
ZSBmb3Igc3ViY2xhc3NpbmcuCisgKiBUaGUgRmllbGRQb3NpdGlvbiBjbGFzcyBpcyBub3QgaW50
ZW5kZWQgZm9yIHB1YmxpYyBzdWJjbGFzc2luZy4KICAqCiAgKiA8cD4KICAqIEJlbG93IGlzIGFu
IGV4YW1wbGUgb2YgdXNpbmcgPGNvZGU+RmllbGRQb3NpdGlvbjwvY29kZT4gdG8gYWlkCkBAIC0x
MDcsNyArMTA5LDggQEAgY2xhc3MgVV9JMThOX0FQSSBGaWVsZFBvc2l0aW9uIDogcHVibGljIFVP
YmplY3QgewogcHVibGljOgogICAgIC8qKgogICAgICAqIERPTlRfQ0FSRSBtYXkgYmUgc3BlY2lm
aWVkIGFzIHRoZSBmaWVsZCB0byBpbmRpY2F0ZSB0aGF0IHRoZQotICAgICAqIGNhbGxlciBkb2Vz
bid0IG5lZWQgdG8gc3BlY2lmeSBhIGZpZWxkLiAgRG8gbm90IHN1YmNsYXNzLgorICAgICAqIGNh
bGxlciBkb2Vzbid0IG5lZWQgdG8gc3BlY2lmeSBhIGZpZWxkLgorICAgICAqIEBzdGFibGUgSUNV
IDIuMAogICAgICAqLwogICAgIGVudW0geyBET05UX0NBUkUgPSAtMSB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2ZpbHRlcmVkYnJrLmggYi9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL2ZpbHRlcmVkYnJrLmgKaW5kZXggMTQxMjQxOGJlNTBiYmFhNGM1YTY0MmY3OGY1ZmQw
N2IxYjRkNmRmZS4uYTAzMTliZjBhNzZhZjUyM2ZmNGVjNTU2ZDg1NWZmNzA2MzY5ZjJhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9maWx0ZXJlZGJyay5oCisrKyBiL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvZmlsdGVyZWRicmsuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIw
MTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVy
bXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNCwgSW50ZXJu
YXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDE1LCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVy
cy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KQEAg
LTEyLDcgKzE0LDYgQEAKICNpbmNsdWRlICJ1bmljb2RlL2Jya2l0ZXIuaCIKIAogI2lmICFVQ09O
RklHX05PX0JSRUFLX0lURVJBVElPTiAmJiAhVUNPTkZJR19OT19GSUxURVJFRF9CUkVBS19JVEVS
QVRJT04KLSNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQogCiBVX05BTUVTUEFDRV9CRUdJTgog
CkBAIC0zMCwyNSArMzEsMTMgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAqICBidXQgd2l0aCAiTXIu
IiBhcyBhbiBleGNlcHRpb24sIGEgZmlsdGVyZWQgYnJlYWsgaXRlcmF0b3IKICAqICB3b3VsZCBj
b25zaWRlciB0aGUgc3RyaW5nICJNci4gU21pdGgiIHRvIGJlIGEgc2luZ2xlIHNlZ21lbnQuCiAg
KgotICogPHA+PGI+Tm90ZTo8L2I+IEFuIGluc3RhbmNlIG9mIHtAbGluayBCcmVha0l0ZXJhdG9y
fSByZXR1cm5lZCBieSB0aGlzIGJ1aWxkZXIKLSAqIGNsYXNzIGN1cnJlbnRseSBkb2VzIG5vdCBz
dXBwb3J0IGZvbGxvd2luZyBvcGVyYXRpb25zIGluIHRoaXMgdGVjaG5vbG9neSBwcmV2aWV3Ci0g
KiB2ZXJzaW9uOgotICogPHVsPgotICogICA8bGk+e0BsaW5rIEJyZWFrSXRlcmF0b3IjbmV4dChp
bnQzMl90KSBuZXh0KGludDMyX3Qgbil9PC9saT4KLSAqICAgPGxpPntAbGluayBCcmVha0l0ZXJh
dG9yI3ByZXZpb3VzKHZvaWQpIHByZXZpb3VzKHZvaWQpfTwvbGk+Ci0gKiAgIDxsaT57QGxpbmsg
QnJlYWtJdGVyYXRvciNmb2xsb3dpbmcoaW50MzJfdCkgZm9sbG93aW5nKGludDMyX3Qgb2Zmc2V0
KX08L2xpPgotICogICA8bGk+e0BsaW5rIEJyZWFrSXRlcmF0b3IjcHJlY2VkaW5nKGludDMyX3Qp
IHByZWNlZGluZyhpbnQzMl90IG9mZnNldCl9PC9saT4KLSAqIDwvdWw+Ci0gKiBXaGVuIG9uZSBv
ZiBhYm92ZSBtZXRob2RzIGlzIGNhbGxlZCwgQnJlYWtJdGVyYXRvci5ET05FIHdpbGwgYmUgcmV0
dXJuZWQgaW1tZWRpYXRlbHkKLSAqIHdpdGhvdXQgdXBkYXRpbmcgdGhlIGludGVybmFsIHN0YXRl
LgotICoKLSAqIEBpbnRlcm5hbCB0ZWNobm9sb2d5IHByZXZpZXcKKyAqIEBzdGFibGUgSUNVIDU2
CiAgKi8KLWNsYXNzIFVfSTE4Tl9BUEkgRmlsdGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlciA6IHB1
YmxpYyBVT2JqZWN0IHsKK2NsYXNzIFVfQ09NTU9OX0FQSSBGaWx0ZXJlZEJyZWFrSXRlcmF0b3JC
dWlsZGVyIDogcHVibGljIFVPYmplY3QgewogIHB1YmxpYzoKICAgLyoqCiAgICAqICBkZXN0cnVj
dG9yLgotICAgKiBAaW50ZXJuYWwgdGVjaG5vbG9neSBwcmV2aWV3CisgICAqIEBzdGFibGUgSUNV
IDU2CiAgICAqLwogICB2aXJ0dWFsIH5GaWx0ZXJlZEJyZWFrSXRlcmF0b3JCdWlsZGVyKCk7CiAK
QEAgLTYyLDE4ICs1MSwzNCBAQCBjbGFzcyBVX0kxOE5fQVBJIEZpbHRlcmVkQnJlYWtJdGVyYXRv
ckJ1aWxkZXIgOiBwdWJsaWMgVU9iamVjdCB7CiAgICAqIEBwYXJhbSB3aGVyZSB0aGUgbG9jYWxl
LgogICAgKiBAcGFyYW0gc3RhdHVzIFRoZSBlcnJvciBjb2RlLgogICAgKiBAcmV0dXJuIHRoZSBu
ZXcgYnVpbGRlcgotICAgKiBAaW50ZXJuYWwgdGVjaG5vbG9neSBwcmV2aWV3CisgICAqIEBzdGFi
bGUgSUNVIDU2CiAgICAqLwogICBzdGF0aWMgRmlsdGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlciAq
Y3JlYXRlSW5zdGFuY2UoY29uc3QgTG9jYWxlJiB3aGVyZSwgVUVycm9yQ29kZSYgc3RhdHVzKTsK
IAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgLyoqCisgICAqIFRoaXMgZnVuY3Rp
b24gaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjcmVhdGVFbXB0eUluc3RhbmNlLCB3
aGljaCBoYXMKKyAgICogaWRlbnRpY2FsIGJlaGF2aW9yLgorICAgKiBAcGFyYW0gc3RhdHVzIFRo
ZSBlcnJvciBjb2RlLgorICAgKiBAcmV0dXJuIHRoZSBuZXcgYnVpbGRlcgorICAgKiBAZGVwcmVj
YXRlZCBJQ1UgNjAgdXNlIGNyZWF0ZUVtcHR5SW5zdGFuY2UgaW5zdGVhZAorICAgKiBAc2VlIGNy
ZWF0ZUVtcHR5SW5zdGFuY2UoKQorICAgKi8KKyAgc3RhdGljIGlubGluZSBGaWx0ZXJlZEJyZWFr
SXRlcmF0b3JCdWlsZGVyICpjcmVhdGVJbnN0YW5jZShVRXJyb3JDb2RlICZzdGF0dXMpIHsKKyAg
ICByZXR1cm4gY3JlYXRlRW1wdHlJbnN0YW5jZShzdGF0dXMpOworICB9CisjZW5kaWYgIC8qIFVf
SElERV9ERVBSRUNBVEVEX0FQSSAqLworCisjaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgLyoq
CiAgICAqIENvbnN0cnVjdCBhbiBlbXB0eSBGaWx0ZXJlZEJyZWFrSXRlcmF0b3JCdWlsZGVyLgog
ICAgKiBJbiB0aGlzIHN0YXRlLCBpdCB3aWxsIG5vdCBzdXBwcmVzcyBhbnkgc2VnbWVudCBib3Vu
ZGFyaWVzLgogICAgKiBAcGFyYW0gc3RhdHVzIFRoZSBlcnJvciBjb2RlLgogICAgKiBAcmV0dXJu
IHRoZSBuZXcgYnVpbGRlcgotICAgKiBAaW50ZXJuYWwgdGVjaG5vbG9neSBwcmV2aWV3CisgICAq
IEBkcmFmdCBJQ1UgNjAKICAgICovCi0gIHN0YXRpYyBGaWx0ZXJlZEJyZWFrSXRlcmF0b3JCdWls
ZGVyICpjcmVhdGVJbnN0YW5jZShVRXJyb3JDb2RlICZzdGF0dXMpOworICBzdGF0aWMgRmlsdGVy
ZWRCcmVha0l0ZXJhdG9yQnVpbGRlciAqY3JlYXRlRW1wdHlJbnN0YW5jZShVRXJyb3JDb2RlICZz
dGF0dXMpOworI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAKICAgLyoqCiAgICAqIFN1
cHByZXNzIGEgY2VydGFpbiBzdHJpbmcgZnJvbSBiZWluZyB0aGUgZW5kIG9mIGEgc2VnbWVudC4K
QEAgLTgzLDcgKzg4LDcgQEAgY2xhc3MgVV9JMThOX0FQSSBGaWx0ZXJlZEJyZWFrSXRlcmF0b3JC
dWlsZGVyIDogcHVibGljIFVPYmplY3QgewogICAgKiBAcGFyYW0gc3RhdHVzIGVycm9yIGNvZGUK
ICAgICogQHJldHVybiByZXR1cm5zIFRSVUUgaWYgdGhlIHN0cmluZyB3YXMgbm90IHByZXNlbnQg
YW5kIG5vdyBhZGRlZCwKICAgICogRkFMU0UgaWYgdGhlIGNhbGwgd2FzIGEgbm8tb3AgYmVjYXVz
ZSB0aGUgc3RyaW5nIHdhcyBhbHJlYWR5IGJlaW5nIHN1cHByZXNzZWQuCi0gICAqIEBpbnRlcm5h
bCB0ZWNobm9sb2d5IHByZXZpZXcKKyAgICogQHN0YWJsZSBJQ1UgNTYKICAgICovCiAgIHZpcnR1
YWwgVUJvb2wgc3VwcHJlc3NCcmVha0FmdGVyKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHN0cmluZywg
VUVycm9yQ29kZSYgc3RhdHVzKSA9IDA7CiAKQEAgLTk2LDEwICsxMDEsMjQgQEAgY2xhc3MgVV9J
MThOX0FQSSBGaWx0ZXJlZEJyZWFrSXRlcmF0b3JCdWlsZGVyIDogcHVibGljIFVPYmplY3Qgewog
ICAgKiBAcGFyYW0gc3RhdHVzIGVycm9yIGNvZGUKICAgICogQHJldHVybiByZXR1cm5zIFRSVUUg
aWYgdGhlIHN0cmluZyB3YXMgcHJlc2VudCBhbmQgbm93IHJlbW92ZWQsCiAgICAqIEZBTFNFIGlm
IHRoZSBjYWxsIHdhcyBhIG5vLW9wIGJlY2F1c2UgdGhlIHN0cmluZyB3YXMgbm90IGJlaW5nIHN1
cHByZXNzZWQuCi0gICAqIEBpbnRlcm5hbCB0ZWNobm9sb2d5IHByZXZpZXcKKyAgICogQHN0YWJs
ZSBJQ1UgNTYKICAgICovCiAgIHZpcnR1YWwgVUJvb2wgdW5zdXBwcmVzc0JyZWFrQWZ0ZXIoY29u
c3QgVW5pY29kZVN0cmluZyYgc3RyaW5nLCBVRXJyb3JDb2RlJiBzdGF0dXMpID0gMDsKIAorI2lm
bmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgLyoqCisgICAqIFRoaXMgZnVuY3Rpb24gaGFz
IGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB3cmFwSXRlcmF0b3JXaXRoRmlsdGVyKCkKKyAg
ICogVGhlIGJlaGF2aW9yIGlzIGlkZW50aWNhbC4KKyAgICogQHBhcmFtIGFkb3B0QnJlYWtJdGVy
YXRvciB0aGUgYnJlYWsgaXRlcmF0b3IgdG8gYWRvcHQKKyAgICogQHBhcmFtIHN0YXR1cyBlcnJv
ciBjb2RlCisgICAqIEByZXR1cm4gdGhlIG5ldyBCcmVha0l0ZXJhdG9yLCBvd25lZCBieSB0aGUg
Y2FsbGVyLgorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNjAgdXNlIHdyYXBJdGVyYXRvcldpdGhGaWx0
ZXIoKSBpbnN0ZWFkCisgICAqIEBzZWUgd3JhcEJyZWFrSXRlcmF0b3JXaXRoRmlsdGVyKCkKKyAg
ICovCisgIHZpcnR1YWwgQnJlYWtJdGVyYXRvciAqYnVpbGQoQnJlYWtJdGVyYXRvciogYWRvcHRC
cmVha0l0ZXJhdG9yLCBVRXJyb3JDb2RlJiBzdGF0dXMpID0gMDsKKyNlbmRpZiAgLyogVV9ISURF
X0RFUFJFQ0FURURfQVBJICovCisKKyNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAvKioKICAg
ICogV3JhcCAoYWRvcHQpIGFuIGV4aXN0aW5nIGJyZWFrIGl0ZXJhdG9yIGluIGEgbmV3IGZpbHRl
cmVkIGluc3RhbmNlLgogICAgKiBUaGUgcmVzdWx0aW5nIEJyZWFrSXRlcmF0b3IgaXMgb3duZWQg
YnkgdGhlIGNhbGxlci4KQEAgLTEwNywxNyArMTI2LDIxIEBAIGNsYXNzIFVfSTE4Tl9BUEkgRmls
dGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlciA6IHB1YmxpYyBVT2JqZWN0IHsKICAgICogTm90ZSB0
aGF0IHRoZSBhZG9wdEJyZWFrSXRlcmF0b3IgaXMgYWRvcHRlZCBieSB0aGUgbmV3IEJyZWFrSXRl
cmF0b3IKICAgICogYW5kIHNob3VsZCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLgog
ICAgKiBUaGUgRmlsdGVyZWRCcmVha0l0ZXJhdG9yQnVpbGRlciBtYXkgYmUgcmV1c2VkLgorICAg
KiBUaGlzIGZ1bmN0aW9uIGlzIGFuIGFsaWFzIGZvciBidWlsZCgpCiAgICAqIEBwYXJhbSBhZG9w
dEJyZWFrSXRlcmF0b3IgdGhlIGJyZWFrIGl0ZXJhdG9yIHRvIGFkb3B0CiAgICAqIEBwYXJhbSBz
dGF0dXMgZXJyb3IgY29kZQogICAgKiBAcmV0dXJuIHRoZSBuZXcgQnJlYWtJdGVyYXRvciwgb3du
ZWQgYnkgdGhlIGNhbGxlci4KLSAgICogQGludGVybmFsIHRlY2hub2xvZ3kgcHJldmlldworICAg
KiBAZHJhZnQgSUNVIDYwCiAgICAqLwotICB2aXJ0dWFsIEJyZWFrSXRlcmF0b3IgKmJ1aWxkKEJy
ZWFrSXRlcmF0b3IqIGFkb3B0QnJlYWtJdGVyYXRvciwgVUVycm9yQ29kZSYgc3RhdHVzKSA9IDA7
CisgIGlubGluZSBCcmVha0l0ZXJhdG9yICp3cmFwSXRlcmF0b3JXaXRoRmlsdGVyKEJyZWFrSXRl
cmF0b3IqIGFkb3B0QnJlYWtJdGVyYXRvciwgVUVycm9yQ29kZSYgc3RhdHVzKSB7CisgICAgcmV0
dXJuIGJ1aWxkKGFkb3B0QnJlYWtJdGVyYXRvciwgc3RhdHVzKTsKKyAgfQorI2VuZGlmICAvKiBV
X0hJREVfRFJBRlRfQVBJICovCiAKICBwcm90ZWN0ZWQ6CiAgIC8qKgogICAgKiBGb3Igc3ViY2xh
c3MgdXNlCi0gICAqIEBpbnRlcm5hbCB0ZWNobm9sb2d5IHByZXZpZXcKKyAgICogQHN0YWJsZSBJ
Q1UgNTYKICAgICovCiAgIEZpbHRlcmVkQnJlYWtJdGVyYXRvckJ1aWxkZXIoKTsKIH07CkBAIC0x
MjUsNyArMTQ4LDYgQEAgY2xhc3MgVV9JMThOX0FQSSBGaWx0ZXJlZEJyZWFrSXRlcmF0b3JCdWls
ZGVyIDogcHVibGljIFVPYmplY3QgewogCiBVX05BTUVTUEFDRV9FTkQKIAotI2VuZGlmICAvKiBV
X0hJREVfSU5URVJOQUxfQVBJICovCiAjZW5kaWYgLy8gI2lmICFVQ09ORklHX05PX0JSRUFLX0lU
RVJBVElPTiAmJiAhVUNPTkZJR19OT19GSUxURVJFRF9CUkVBS19JVEVSQVRJT04KIAogI2VuZGlm
IC8vICNpZm5kZWYgRklMVEVSRURCUktfSApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9mbXRhYmxlLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2ZtdGFibGUuaAppbmRleCA2
Y2FkMjc2ZjQyMzY2Y2RhYjI1OTYwYjhmMDc0YTAzNGQ3ZjRkMWJiLi43NjZhNzE5NjlkZWFkYzgx
NDY0MzFhNGU5MDRjNzA1OWVhZDJmY2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL2ZtdGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2ZtdGFibGUuaApAQCAt
MSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQg
KEMpIDE5OTctMjAxNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpAQCAtMTM0LDcg
KzEzNiw3IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgICBkZWNpbWFsIG51bWJlci4K
ICAgICAgKiBAc3RhYmxlIElDVSA0LjQKICAgICAgKi8KLSAgICBGb3JtYXR0YWJsZShjb25zdCBT
dHJpbmdQaWVjZSAmbnVtYmVyLCBVRXJyb3JDb2RlICZzdGF0dXMpOworICAgIEZvcm1hdHRhYmxl
KFN0cmluZ1BpZWNlIG51bWJlciwgVUVycm9yQ29kZSAmc3RhdHVzKTsKIAogICAgIC8qKgogICAg
ICAqIENyZWF0ZXMgYSBGb3JtYXR0YWJsZSBvYmplY3Qgd2l0aCBhIFVuaWNvZGVTdHJpbmcgb2Jq
ZWN0IHRvIGNvcHkgZnJvbS4KQEAgLTU4MSw3ICs1ODMsNyBAQCBwdWJsaWM6CiAgICAgICogICAg
ICAgICAgICAgICAgICAgICAgaW5jb21pbmcgc3RyaW5nIGlzIG5vdCBhIHZhbGlkIGRlY2ltYWwg
bnVtYmVyLgogICAgICAqIEBzdGFibGUgSUNVIDQuNAogICAgICAqLwotICAgIHZvaWQgICAgICAg
ICAgICAgc2V0RGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmdQaWVjZSAmbnVtYmVyU3RyaW5nLAor
ICAgIHZvaWQgICAgICAgICAgICAgc2V0RGVjaW1hbE51bWJlcihTdHJpbmdQaWVjZSBudW1iZXJT
dHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUg
JnN0YXR1cyk7CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
Zm9ybWF0LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2Zvcm1hdC5oCmluZGV4IGNiOGVhNjFm
NzZlNmMyMzZiYTVjNGExMDM0MjNkNTEyNWZhNGE3OTguLmIwNTMxOGRhZTdiYTdmYWU3MGFlYWE2
YWNhYzI2MmVjZGMxZDMyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZm9y
bWF0LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9mb3JtYXQuaApAQCAtMSwzICsxLDUg
QEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBM
aWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5o
dG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAxOTk3LTIw
MTEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVy
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvZnBvc2l0ZXIuaCBiL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvZnBvc2l0ZXIuaAppbmRleCBiODQyMTYxYTY5Yjc5NGNjYzZiZjk3
ODk4YTM4NGMzZWU4MjVkZWNiLi4zOGNjZDhmZWIzMDY3NmJkNTk2NDM2ZTA0YTgxZDRkODI4OGM0
NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2Zwb3NpdGVyLmgKKysrIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS9mcG9zaXRlci5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkg
MjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0
ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAxMC0yMDEyLCBJbnRl
cm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCkBAIC00NSw2ICs0NywxMyBAQCBVX05BTUVTUEFD
RV9CRUdJTgogCiBjbGFzcyBVVmVjdG9yMzI7CiAKKy8vIEZvcndhcmQgZGVjbGFyYXRpb24gZm9y
IG51bWJlciBmb3JtYXR0aW5nOgorbmFtZXNwYWNlIG51bWJlciB7CituYW1lc3BhY2UgaW1wbCB7
CitjbGFzcyBOdW1iZXJTdHJpbmdCdWlsZGVyOworfQorfQorCiAvKioKICAqIEZpZWxkUG9zaXRp
b25JdGVyYXRvciByZXR1cm5zIHRoZSBmaWVsZCBpZHMgYW5kIHRoZWlyIHN0YXJ0L2xpbWl0IHBv
c2l0aW9ucyBnZW5lcmF0ZWQKICAqIGJ5IGEgY2FsbCB0byBGb3JtYXQ6OmZvcm1hdC4gIFNlZSBG
b3JtYXQsIE51bWJlckZvcm1hdCwgRGVjaW1hbEZvcm1hdC4KQEAgLTk3LDggKzEwNiw2IEBAIHB1
YmxpYzoKICAgICBVQm9vbCBuZXh0KEZpZWxkUG9zaXRpb24mIGZwKTsKIAogcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgRmllbGRQb3NpdGlvbkl0ZXJhdG9ySGFuZGxlcjsKLQogICAgIC8qKgog
ICAgICAqIFNldHMgdGhlIGRhdGEgdXNlZCBieSB0aGUgaXRlcmF0b3IsIGFuZCByZXNldHMgdGhl
IHBvc2l0aW9uLgogICAgICAqIFJldHVybnMgVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SIGluIHN0
YXR1cyBpZiB0aGUgZGF0YSBpcyBub3QgdmFsaWQgCkBAIC0xMDYsNiArMTEzLDkgQEAgcHJpdmF0
ZToKICAgICAgKi8KICAgICB2b2lkIHNldERhdGEoVVZlY3RvcjMyICphZG9wdCwgVUVycm9yQ29k
ZSYgc3RhdHVzKTsKIAorICAgIGZyaWVuZCBjbGFzcyBGaWVsZFBvc2l0aW9uSXRlcmF0b3JIYW5k
bGVyOworICAgIGZyaWVuZCBjbGFzcyBudW1iZXI6OmltcGw6Ok51bWJlclN0cmluZ0J1aWxkZXI7
CisKICAgICBVVmVjdG9yMzIgKmRhdGE7CiAgICAgaW50MzJfdCBwb3M7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9nZW5kZXIuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvZ2VuZGVyLmgKaW5kZXggMWE2YWU4ZmU2YzhkNDg1NGYyOGQ5ZTBhMDI4OWQ3NWUxYWIzYzU3
YS4uZTNjMjdkMDI0ZTA5NDMxMzIxZTQyNmVlMjU3YWZhODE4ODNlYTJlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS9nZW5kZXIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL2dlbmRlci5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNv
ZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93
d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CiAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hp
bmVzIENvcnBvcmF0aW9uIGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9n
cmVnb2NhbC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9ncmVnb2NhbC5oCmluZGV4IGU2YWU0
ZDZhMWRmNzBiMGNlZmZlNTk2ZDQ1ZmI1MmQxNTgzZGVhMTQuLjJiNGZlMWQ4NzljYWRmMzZkOGEx
NTBkMDEzNjY5MDU1OGRhM2NiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
Z3JlZ29jYWwuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2dyZWdvY2FsLmgKQEAgLTEs
MyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJz
LgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5
cmlnaHQuaHRtbAogLyoKICogQ29weXJpZ2h0IChDKSAxOTk3LTIwMTMsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4KICogQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvaWN1ZGF0YXZlci5o
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9pY3VkYXRhdmVyLmgKaW5kZXggNjA5ZjU4MGYwNmEz
NWZmZTdkNjc5NjI5NGNkMTgzMTJlODQ2YWMwMi4uMWNiMjAyZTNkNDVjNjJhZjU5NzE3ZGMwNTJm
YTNhODgxOTJjNDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9pY3VkYXRh
dmVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9pY3VkYXRhdmVyLmgKQEAgLTEsMyAr
MSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgor
Ly8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmln
aHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS9pY3VwbHVnLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2ljdXBs
dWcuaAppbmRleCA2MWRjMmEzZWIwYWZhMWQxNmI1OWZjMTNkZGMwYTFkY2QwNTNhNjkxLi4xYTg5
NGE3MWM0YWU4ODk5Y2M1Zjc1ZTM5YzUxMTJhZjk2ZjNmZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL2ljdXBsdWcuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2lj
dXBsdWcuaApAQCAtMSw3ICsxLDkgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJ
bmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVu
aWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCi0q
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGlu
ZXMKKyogICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVk
LgogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xMDgsNiArMTEwLDEwIEBACiAjaW5jbHVk
ZSAidW5pY29kZS91dHlwZXMuaCIKIAogCisjaWYgVUNPTkZJR19FTkFCTEVfUExVR0lOUworCisK
KwogLyogPT09IEJhc2ljIHR5cGVzID09PSAqLwogCiAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9B
UEkKQEAgLTE1Myw3ICsxNTksMTEgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBVUExVR19SRUFTT05f
UVVFUlkgPSAwLCAgICAgLyoqPCBUaGUgcGx1Z2luIGlzIGJlaW5nIHF1ZXJpZWQgZm9yIGluZm8u
ICoqLwogICAgIFVQTFVHX1JFQVNPTl9MT0FEID0gMSwgICAgIC8qKjwgVGhlIHBsdWdpbiBpcyBi
ZWluZyBsb2FkZWQuICoqLwogICAgIFVQTFVHX1JFQVNPTl9VTkxPQUQgPSAyLCAgIC8qKjwgVGhl
IHBsdWdpbiBpcyBiZWluZyB1bmxvYWRlZC4gKiovCi0gICAgVVBMVUdfUkVBU09OX0NPVU5UICAg
ICAgICAgLyoqPCBjb3VudCBvZiBrbm93biByZWFzb25zICoqLworICAgIC8qKgorICAgICAqIE51
bWJlciBvZiBrbm93biByZWFzb25zLgorICAgICAqIEBpbnRlcm5hbCBUaGUgbnVtZXJpYyB2YWx1
ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwor
ICAgIFVQTFVHX1JFQVNPTl9DT1VOVAogfSBVUGx1Z1JlYXNvbjsKIAogCkBAIC0xNjksNyArMTc5
LDExIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgVVBMVUdfTEVWRUxfVU5LTk9XTiA9IDEsICAgICAv
Kio8IFRoZSBwbHVnaW4gaXMgd2FpdGluZyB0byBiZSBpbnN0YWxsZWQuICoqLwogICAgIFVQTFVH
X0xFVkVMX0xPVyAgICAgPSAyLCAgICAgLyoqPCBUaGUgcGx1Z2luIG11c3QgYmUgY2FsbGVkIGJl
Zm9yZSB1X2luaXQgY29tcGxldGVzICoqLwogICAgIFVQTFVHX0xFVkVMX0hJR0ggICAgPSAzLCAg
ICAgLyoqPCBUaGUgcGx1Z2luIGNhbiBydW4gYXQgYW55IHRpbWUuICoqLwotICAgIFVQTFVHX0xF
VkVMX0NPVU5UICAgICAgICAgLyoqPCBjb3VudCBvZiBrbm93biByZWFzb25zICoqLworICAgIC8q
KgorICAgICAqIE51bWJlciBvZiBrbm93biBsZXZlbHMuCisgICAgICogQGludGVybmFsIFRoZSBu
dW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAu
CisgICAgICovCisgICAgVVBMVUdfTEVWRUxfQ09VTlQKIH0gVVBsdWdMZXZlbDsKIAogLyoqCkBA
IC0zNjgsNCArMzgyLDcgQEAgVV9JTlRFUk5BTCB2b2lkIFVfRVhQT1JUMgogdXBsdWdfcmVtb3Zl
UGx1ZyhVUGx1Z0RhdGEgKnBsdWcsIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAjZW5kaWYgIC8qIFVf
SElERV9JTlRFUk5BTF9BUEkgKi8KIAotI2VuZGlmCisjZW5kaWYgLyogVUNPTkZJR19FTkFCTEVf
UExVR0lOUyAqLworCisjZW5kaWYgLyogX0lDVVBMVUcgKi8KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS9pZG5hLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2lkbmEuaApp
bmRleCA5MDE5NGEzNzhmMzgyNTViODE5ODA4MzhiOGZjMzg0MjIwYjU4M2I2Li5mMDg2NThlNTAy
ZTIwMDgzOGRjYWUyMzZhMzMwYmM1YjA5MmZmN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL2lkbmEuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2lkbmEuaApAQCAt
MSwxMCArMSwxMiBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jw
b3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKICogICBmaWxlIG5hbWU6ICBpZG5hLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJ
SQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAq
ICAgaW5kZW50YXRpb246NAogKgpAQCAtMTk4LDcgKzIwMCw3IEBAIHB1YmxpYzoKICAgICAgKiBA
c3RhYmxlIElDVSA0LjYKICAgICAgKi8KICAgICB2aXJ0dWFsIHZvaWQKLSAgICBsYWJlbFRvQVND
SUlfVVRGOChjb25zdCBTdHJpbmdQaWVjZSAmbGFiZWwsIEJ5dGVTaW5rICZkZXN0LAorICAgIGxh
YmVsVG9BU0NJSV9VVEY4KFN0cmluZ1BpZWNlIGxhYmVsLCBCeXRlU2luayAmZGVzdCwKICAgICAg
ICAgICAgICAgICAgICAgICBJRE5BSW5mbyAmaW5mbywgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBj
b25zdDsKIAogICAgIC8qKgpAQCAtMjE2LDcgKzIxOCw3IEBAIHB1YmxpYzoKICAgICAgKiBAc3Rh
YmxlIElDVSA0LjYKICAgICAgKi8KICAgICB2aXJ0dWFsIHZvaWQKLSAgICBsYWJlbFRvVW5pY29k
ZVVURjgoY29uc3QgU3RyaW5nUGllY2UgJmxhYmVsLCBCeXRlU2luayAmZGVzdCwKKyAgICBsYWJl
bFRvVW5pY29kZVVURjgoU3RyaW5nUGllY2UgbGFiZWwsIEJ5dGVTaW5rICZkZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICBJRE5BSW5mbyAmaW5mbywgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBj
b25zdDsKIAogICAgIC8qKgpAQCAtMjM0LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICAgKiBAc3Rh
YmxlIElDVSA0LjYKICAgICAgKi8KICAgICB2aXJ0dWFsIHZvaWQKLSAgICBuYW1lVG9BU0NJSV9V
VEY4KGNvbnN0IFN0cmluZ1BpZWNlICZuYW1lLCBCeXRlU2luayAmZGVzdCwKKyAgICBuYW1lVG9B
U0NJSV9VVEY4KFN0cmluZ1BpZWNlIG5hbWUsIEJ5dGVTaW5rICZkZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgSUROQUluZm8gJmluZm8sIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3Q7CiAK
ICAgICAvKioKQEAgLTI1Miw3ICsyNTQsNyBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1Ug
NC42CiAgICAgICovCiAgICAgdmlydHVhbCB2b2lkCi0gICAgbmFtZVRvVW5pY29kZVVURjgoY29u
c3QgU3RyaW5nUGllY2UgJm5hbWUsIEJ5dGVTaW5rICZkZXN0LAorICAgIG5hbWVUb1VuaWNvZGVV
VEY4KFN0cmluZ1BpZWNlIG5hbWUsIEJ5dGVTaW5rICZkZXN0LAogICAgICAgICAgICAgICAgICAg
ICAgIElETkFJbmZvICZpbmZvLCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9saXN0Zm9ybWF0dGVyLmggYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL2xpc3Rmb3JtYXR0ZXIuaAppbmRleCBlNDhmYWFhMTI3NmM3MGI4
YmMzOGE3ZmU2Y2RhMjM3YTZmNWYyNGFmLi4xODBmYmNiNWNkZTViNzQzYTlmYWY4Yzg0ZGNkZmQ4
Y2EyMDc0N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2xpc3Rmb3JtYXR0
ZXIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2xpc3Rmb3JtYXR0ZXIuaApAQCAtMSwx
MiArMSwxNCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVy
cy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29w
eXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCi0qICAgQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAg
IENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIGxpc3Rmb3JtYXR0ZXIuaAotKiAgIGVu
Y29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICogICB0YWIgc2l6ZTog
ICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC0xNDUsNyArMTQ3LDcgQEAg
Y2xhc3MgVV9DT01NT05fQVBJIExpc3RGb3JtYXR0ZXIgOiBwdWJsaWMgVU9iamVjdHsKICAgICAv
KioKICAgICAgKiBAaW50ZXJuYWwgY29uc3RydWN0b3IgbWFkZSBwdWJsaWMgZm9yIHRlc3Rpbmcu
CiAgICAgICovCi0gICAgTGlzdEZvcm1hdHRlcihjb25zdCBMaXN0Rm9ybWF0RGF0YSAmZGF0YSk7
CisgICAgTGlzdEZvcm1hdHRlcihjb25zdCBMaXN0Rm9ybWF0RGF0YSAmZGF0YSwgVUVycm9yQ29k
ZSAmZXJyb3JDb2RlKTsKICAgICAvKioKICAgICAgKiBAaW50ZXJuYWwgY29uc3RydWN0b3IgbWFk
ZSBwdWJsaWMgZm9yIHRlc3RpbmcuCiAgICAgICovCkBAIC0xNTUsNiArMTU3LDggQEAgY2xhc3Mg
VV9DT01NT05fQVBJIExpc3RGb3JtYXR0ZXIgOiBwdWJsaWMgVU9iamVjdHsKICAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplSGFzaChVRXJyb3JDb2RlJiBlcnJvckNvZGUpOwog
ICAgIHN0YXRpYyBjb25zdCBMaXN0Rm9ybWF0SW50ZXJuYWwqIGdldExpc3RGb3JtYXRJbnRlcm5h
bChjb25zdCBMb2NhbGUmIGxvY2FsZSwgY29uc3QgY2hhciAqc3R5bGUsIFVFcnJvckNvZGUmIGVy
cm9yQ29kZSk7CisgICAgc3RydWN0IExpc3RQYXR0ZXJuc1Npbms7CisgICAgc3RhdGljIExpc3RG
b3JtYXRJbnRlcm5hbCogbG9hZExpc3RGb3JtYXRJbnRlcm5hbChjb25zdCBMb2NhbGUmIGxvY2Fs
ZSwgY29uc3QgY2hhciogc3R5bGUsIFVFcnJvckNvZGUmIGVycm9yQ29kZSk7CiAKICAgICBMaXN0
Rm9ybWF0dGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbG9jYWxw
b2ludGVyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2xvY2FscG9pbnRlci5oCmluZGV4IGUz
YWFiZjY1YzM4MDcwNmZhMDg4NTM2OTc0ODdjNzI3YWI5YWJhZWMuLmUxN2VlM2Q4ODZlZjM0ZGYw
NGY4OTFjZWI4ZTBiN2NmYjg4YzA1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvbG9jYWxwb2ludGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9sb2NhbHBvaW50
ZXIuaApAQCAtMSwxMiArMSwxNCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIElu
Yy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5p
Y29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCi0q
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGlu
ZXMKKyogICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVk
LgogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIGxvY2FscG9pbnRl
ci5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAg
IHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTE4LDcg
KzIwLDcgQEAKICNkZWZpbmUgX19MT0NBTFBPSU5URVJfSF9fCiAKIC8qKgotICogXGZpbGUgCisg
KiBcZmlsZQogICogXGJyaWVmIEMrKyBBUEk6ICJTbWFydCBwb2ludGVycyIgZm9yIHVzZSB3aXRo
IGFuZCBpbiBJQ1U0QyBDKysgY29kZS4KICAqCiAgKiBUaGVzZSBjbGFzc2VzIGFyZSBpbnNwaXJl
ZCBieQpAQCAtNTIsNyArNTQsNyBAQCBVX05BTUVTUEFDRV9CRUdJTgogICogRGVzdHJ1Y3RvciBh
bmQgYWRvcHRJbnN0ZWFkKCkuCiAgKgogICogVGhlcmUgaXMgbm8gb3BlcmF0b3IgVCAqKCkgcHJv
dmlkZWQgYmVjYXVzZSB0aGUgcHJvZ3JhbW1lciBtdXN0IGRlY2lkZQotICogd2hldGhlciB0byB1
c2UgZ2V0QWxpYXMoKSAod2l0aG91dCB0cmFuc2ZlciBvZiBvd25lcnNoaXApIG9yIG9ycGFuKCkK
KyAqIHdoZXRoZXIgdG8gdXNlIGdldEFsaWFzKCkgKHdpdGhvdXQgdHJhbnNmZXIgb2Ygb3duZXJz
aGlwKSBvciBvcnBoYW4oKQogICogKHdpdGggdHJhbnNmZXIgb2Ygb3duZXJzaGlwIGFuZCBOVUxM
aW5nIG9mIHRoZSBwb2ludGVyKS4KICAqCiAgKiBAc2VlIExvY2FsUG9pbnRlcgpAQCAtMTUxLDEx
ICsxNTMsMTEgQEAgcHJvdGVjdGVkOgogICAgIFQgKnB0cjsKIHByaXZhdGU6CiAgICAgLy8gTm8g
Y29tcGFyaXNvbiBvcGVyYXRvcnMgd2l0aCBvdGhlciBMb2NhbFBvaW50ZXJCYXNlcy4KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTG9jYWxQb2ludGVyQmFzZSAmb3RoZXIpOwotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBMb2NhbFBvaW50ZXJCYXNlICZvdGhlcik7Ci0gICAgLy8gTm8gb3du
ZXJzaGlwIHRyYW5zZmVyOiBObyBjb3B5IGNvbnN0cnVjdG9yLCBubyBhc3NpZ25tZW50IG9wZXJh
dG9yLgotICAgIExvY2FsUG9pbnRlckJhc2UoY29uc3QgTG9jYWxQb2ludGVyQmFzZSAmb3RoZXIp
OwotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IExvY2FsUG9pbnRlckJhc2UgJm90aGVyKTsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTG9jYWxQb2ludGVyQmFzZTxUPiAmb3RoZXIpOworICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBMb2NhbFBvaW50ZXJCYXNlPFQ+ICZvdGhlcik7CisgICAg
Ly8gTm8gb3duZXJzaGlwIHNoYXJpbmc6IE5vIGNvcHkgY29uc3RydWN0b3IsIG5vIGFzc2lnbm1l
bnQgb3BlcmF0b3IuCisgICAgTG9jYWxQb2ludGVyQmFzZShjb25zdCBMb2NhbFBvaW50ZXJCYXNl
PFQ+ICZvdGhlcik7CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgTG9jYWxQb2ludGVyQmFzZTxU
PiAmb3RoZXIpOwogICAgIC8vIE5vIGhlYXAgYWxsb2NhdGlvbi4gVXNlIG9ubHkgb24gdGhlIHN0
YWNrLgogICAgIHN0YXRpYyB2b2lkICogVV9FWFBPUlQyIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6
ZSk7CiAgICAgc3RhdGljIHZvaWQgKiBVX0VYUE9SVDIgb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNp
emUpOwpAQCAtMTcyLDkgKzE3NCw5IEBAIHByaXZhdGU6CiAgKiBcY29kZQogICogTG9jYWxQb2lu
dGVyPFVuaWNvZGVTdHJpbmc+IHMobmV3IFVuaWNvZGVTdHJpbmcoKFVDaGFyMzIpMHg1MDAwNSkp
OwogICogaW50MzJfdCBsZW5ndGg9cy0+bGVuZ3RoKCk7ICAvLyAyCi0gKiBVQ2hhciBsZWFkPXMt
PmNoYXJBdCgwKTsgIC8vIDB4ZDkwMAorICogY2hhcjE2X3QgbGVhZD1zLT5jaGFyQXQoMCk7ICAv
LyAweGQ5MDAKICAqIGlmKHNvbWUgY29uZGl0aW9uKSB7IHJldHVybjsgfSAgLy8gbm8gbmVlZCB0
byBleHBsaWNpdGx5IGRlbGV0ZSB0aGUgcG9pbnRlcgotICogcy5hZG9wdEluc3RlYWQobmV3IFVu
aWNvZGVTdHJpbmcoKFVDaGFyKTB4ZmZmYykpOworICogcy5hZG9wdEluc3RlYWQobmV3IFVuaWNv
ZGVTdHJpbmcoKGNoYXIxNl90KTB4ZmZmYykpOwogICogbGVuZ3RoPXMtPmxlbmd0aCgpOyAgLy8g
MQogICogLy8gbm8gbmVlZCB0byBleHBsaWNpdGx5IGRlbGV0ZSB0aGUgcG9pbnRlcgogICogXGVu
ZGNvZGUKQEAgLTE4NSwxMyArMTg3LDE0IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogY2xhc3MgTG9jYWxQb2ludGVyIDogcHVibGljIExvY2FsUG9pbnRlckJhc2U8VD4gewogcHVi
bGljOgorICAgIHVzaW5nIExvY2FsUG9pbnRlckJhc2U8VD46Om9wZXJhdG9yKjsKKyAgICB1c2lu
ZyBMb2NhbFBvaW50ZXJCYXNlPFQ+OjpvcGVyYXRvci0+OwogICAgIC8qKgogICAgICAqIENvbnN0
cnVjdG9yIHRha2VzIG93bmVyc2hpcC4KICAgICAgKiBAcGFyYW0gcCBzaW1wbGUgcG9pbnRlciB0
byBhbiBvYmplY3QgdGhhdCBpcyBhZG9wdGVkCiAgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAg
ICovCiAgICAgZXhwbGljaXQgTG9jYWxQb2ludGVyKFQgKnA9TlVMTCkgOiBMb2NhbFBvaW50ZXJC
YXNlPFQ+KHApIHt9Ci0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBD
b25zdHJ1Y3RvciB0YWtlcyBvd25lcnNoaXAgYW5kIHJlcG9ydHMgYW4gZXJyb3IgaWYgTlVMTC4K
ICAgICAgKgpAQCAtMjAzLDE0ICsyMDYsMjEgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSBwIHNp
bXBsZSBwb2ludGVyIHRvIGFuIG9iamVjdCB0aGF0IGlzIGFkb3B0ZWQKICAgICAgKiBAcGFyYW0g
ZXJyb3JDb2RlIGluL291dCBVRXJyb3JDb2RlLCBzZXQgdG8gVV9NRU1PUllfQUxMT0NBVElPTl9F
UlJPUgogICAgICAqICAgICBpZiBwPT1OVUxMIGFuZCBubyBvdGhlciBmYWlsdXJlIGNvZGUgaGFk
IGJlZW4gc2V0Ci0gICAgICogQGRyYWZ0IElDVSA1NQorICAgICAqIEBzdGFibGUgSUNVIDU1CiAg
ICAgICovCiAgICAgTG9jYWxQb2ludGVyKFQgKnAsIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgOiBM
b2NhbFBvaW50ZXJCYXNlPFQ+KHApIHsKICAgICAgICAgaWYocD09TlVMTCAmJiBVX1NVQ0NFU1Mo
ZXJyb3JDb2RlKSkgewogICAgICAgICAgICAgZXJyb3JDb2RlPVVfTUVNT1JZX0FMTE9DQVRJT05f
RVJST1I7CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8K
KyAgICAvKioKKyAgICAgKiBNb3ZlIGNvbnN0cnVjdG9yLCBsZWF2ZXMgc3JjIHdpdGggaXNOdWxs
KCkuCisgICAgICogQHBhcmFtIHNyYyBzb3VyY2Ugc21hcnQgcG9pbnRlcgorICAgICAqIEBzdGFi
bGUgSUNVIDU2CisgICAgICovCisgICAgTG9jYWxQb2ludGVyKExvY2FsUG9pbnRlcjxUPiAmJnNy
YykgVV9OT0VYQ0VQVCA6IExvY2FsUG9pbnRlckJhc2U8VD4oc3JjLnB0cikgeworICAgICAgICBz
cmMucHRyPU5VTEw7CisgICAgfQogICAgIC8qKgogICAgICAqIERlc3RydWN0b3IgZGVsZXRlcyB0
aGUgb2JqZWN0IGl0IG93bnMuCiAgICAgICogQHN0YWJsZSBJQ1UgNC40CkBAIC0yMTgsNiArMjI4
LDUxIEBAIHB1YmxpYzoKICAgICB+TG9jYWxQb2ludGVyKCkgewogICAgICAgICBkZWxldGUgTG9j
YWxQb2ludGVyQmFzZTxUPjo6cHRyOwogICAgIH0KKyAgICAvKioKKyAgICAgKiBNb3ZlIGFzc2ln
bm1lbnQgb3BlcmF0b3IsIGxlYXZlcyBzcmMgd2l0aCBpc051bGwoKS4KKyAgICAgKiBUaGUgYmVo
YXZpb3IgaXMgdW5kZWZpbmVkIGlmICp0aGlzIGFuZCBzcmMgYXJlIHRoZSBzYW1lIG9iamVjdC4K
KyAgICAgKiBAcGFyYW0gc3JjIHNvdXJjZSBzbWFydCBwb2ludGVyCisgICAgICogQHJldHVybiAq
dGhpcworICAgICAqIEBzdGFibGUgSUNVIDU2CisgICAgICovCisgICAgTG9jYWxQb2ludGVyPFQ+
ICZvcGVyYXRvcj0oTG9jYWxQb2ludGVyPFQ+ICYmc3JjKSBVX05PRVhDRVBUIHsKKyAgICAgICAg
cmV0dXJuIG1vdmVGcm9tKHNyYyk7CisgICAgfQorICAgIC8vIGRvIG5vdCB1c2UgI2lmbmRlZiBV
X0hJREVfRFJBRlRfQVBJIGZvciBtb3ZlRnJvbSwgbmVlZGVkIGJ5IG5vbi1kcmFmdCBBUEkKKyAg
ICAvKioKKyAgICAgKiBNb3ZlIGFzc2lnbm1lbnQsIGxlYXZlcyBzcmMgd2l0aCBpc051bGwoKS4K
KyAgICAgKiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmICp0aGlzIGFuZCBzcmMgYXJlIHRo
ZSBzYW1lIG9iamVjdC4KKyAgICAgKgorICAgICAqIENhbiBiZSBjYWxsZWQgZXhwbGljaXRseSwg
ZG9lcyBub3QgbmVlZCBDKysxMSBzdXBwb3J0LgorICAgICAqIEBwYXJhbSBzcmMgc291cmNlIHNt
YXJ0IHBvaW50ZXIKKyAgICAgKiBAcmV0dXJuICp0aGlzCisgICAgICogQGRyYWZ0IElDVSA1Ngor
ICAgICAqLworICAgIExvY2FsUG9pbnRlcjxUPiAmbW92ZUZyb20oTG9jYWxQb2ludGVyPFQ+ICZz
cmMpIFVfTk9FWENFUFQgeworICAgICAgICBkZWxldGUgTG9jYWxQb2ludGVyQmFzZTxUPjo6cHRy
OworICAgICAgICBMb2NhbFBvaW50ZXJCYXNlPFQ+OjpwdHI9c3JjLnB0cjsKKyAgICAgICAgc3Jj
LnB0cj1OVUxMOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIC8qKgorICAgICAq
IFN3YXAgcG9pbnRlcnMuCisgICAgICogQHBhcmFtIG90aGVyIG90aGVyIHNtYXJ0IHBvaW50ZXIK
KyAgICAgKiBAc3RhYmxlIElDVSA1NgorICAgICAqLworICAgIHZvaWQgc3dhcChMb2NhbFBvaW50
ZXI8VD4gJm90aGVyKSBVX05PRVhDRVBUIHsKKyAgICAgICAgVCAqdGVtcD1Mb2NhbFBvaW50ZXJC
YXNlPFQ+OjpwdHI7CisgICAgICAgIExvY2FsUG9pbnRlckJhc2U8VD46OnB0cj1vdGhlci5wdHI7
CisgICAgICAgIG90aGVyLnB0cj10ZW1wOworICAgIH0KKyAgICAvKioKKyAgICAgKiBOb24tbWVt
YmVyIExvY2FsUG9pbnRlciBzd2FwIGZ1bmN0aW9uLgorICAgICAqIEBwYXJhbSBwMSB3aWxsIGdl
dCBwMidzIHBvaW50ZXIKKyAgICAgKiBAcGFyYW0gcDIgd2lsbCBnZXQgcDEncyBwb2ludGVyCisg
ICAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8KKyAgICBmcmllbmQgaW5saW5lIHZvaWQgc3dh
cChMb2NhbFBvaW50ZXI8VD4gJnAxLCBMb2NhbFBvaW50ZXI8VD4gJnAyKSBVX05PRVhDRVBUIHsK
KyAgICAgICAgcDEuc3dhcChwMik7CisgICAgfQogICAgIC8qKgogICAgICAqIERlbGV0ZXMgdGhl
IG9iamVjdCBpdCBvd25zLAogICAgICAqIGFuZCBhZG9wdHMgKHRha2VzIG93bmVyc2hpcCBvZikg
dGhlIG9uZSBwYXNzZWQgaW4uCkBAIC0yMjgsNyArMjgzLDYgQEAgcHVibGljOgogICAgICAgICBk
ZWxldGUgTG9jYWxQb2ludGVyQmFzZTxUPjo6cHRyOwogICAgICAgICBMb2NhbFBvaW50ZXJCYXNl
PFQ+OjpwdHI9cDsKICAgICB9Ci0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAg
ICAgKiBEZWxldGVzIHRoZSBvYmplY3QgaXQgb3ducywKICAgICAgKiBhbmQgYWRvcHRzICh0YWtl
cyBvd25lcnNoaXAgb2YpIHRoZSBvbmUgcGFzc2VkIGluLgpAQCAtMjQyLDcgKzI5Niw3IEBAIHB1
YmxpYzoKICAgICAgKiBAcGFyYW0gcCBzaW1wbGUgcG9pbnRlciB0byBhbiBvYmplY3QgdGhhdCBp
cyBhZG9wdGVkCiAgICAgICogQHBhcmFtIGVycm9yQ29kZSBpbi9vdXQgVUVycm9yQ29kZSwgc2V0
IHRvIFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1IKICAgICAgKiAgICAgaWYgcD09TlVMTCBhbmQg
bm8gb3RoZXIgZmFpbHVyZSBjb2RlIGhhZCBiZWVuIHNldAotICAgICAqIEBkcmFmdCBJQ1UgNTUK
KyAgICAgKiBAc3RhYmxlIElDVSA1NQogICAgICAqLwogICAgIHZvaWQgYWRvcHRJbnN0ZWFkQW5k
Q2hlY2tFcnJvckNvZGUoVCAqcCwgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSB7CiAgICAgICAgIGlm
KFVfU1VDQ0VTUyhlcnJvckNvZGUpKSB7CkBAIC0yNTUsNyArMzA5LDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgZGVsZXRlIHA7CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYgIC8qIFVfSElERV9E
UkFGVF9BUEkgKi8KIH07CiAKIC8qKgpAQCAtMjY2LDEwICszMTksMTAgQEAgcHVibGljOgogICog
VXNhZ2UgZXhhbXBsZToKICAqIFxjb2RlCiAgKiBMb2NhbEFycmF5PFVuaWNvZGVTdHJpbmc+IGEo
bmV3IFVuaWNvZGVTdHJpbmdbMl0pOwotICogYVswXS5hcHBlbmQoKFVDaGFyKTB4NjEpOworICog
YVswXS5hcHBlbmQoKGNoYXIxNl90KTB4NjEpOwogICogaWYoc29tZSBjb25kaXRpb24pIHsgcmV0
dXJuOyB9ICAvLyBubyBuZWVkIHRvIGV4cGxpY2l0bHkgZGVsZXRlIHRoZSBhcnJheQogICogYS5h
ZG9wdEluc3RlYWQobmV3IFVuaWNvZGVTdHJpbmdbNF0pOwotICogYVszXS5hcHBlbmQoKFVDaGFy
KTB4NjIpLmFwcGVuZCgoVUNoYXIpMHg2MykucmV2ZXJzZSgpOworICogYVszXS5hcHBlbmQoKGNo
YXIxNl90KTB4NjIpLmFwcGVuZCgoY2hhcjE2X3QpMHg2MykucmV2ZXJzZSgpOwogICogLy8gbm8g
bmVlZCB0byBleHBsaWNpdGx5IGRlbGV0ZSB0aGUgYXJyYXkKICAqIFxlbmRjb2RlCiAgKgpAQCAt
Mjc5LDEyICszMzIsNDAgQEAgcHVibGljOgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIExv
Y2FsQXJyYXkgOiBwdWJsaWMgTG9jYWxQb2ludGVyQmFzZTxUPiB7CiBwdWJsaWM6CisgICAgdXNp
bmcgTG9jYWxQb2ludGVyQmFzZTxUPjo6b3BlcmF0b3IqOworICAgIHVzaW5nIExvY2FsUG9pbnRl
ckJhc2U8VD46Om9wZXJhdG9yLT47CiAgICAgLyoqCiAgICAgICogQ29uc3RydWN0b3IgdGFrZXMg
b3duZXJzaGlwLgogICAgICAqIEBwYXJhbSBwIHNpbXBsZSBwb2ludGVyIHRvIGFuIGFycmF5IG9m
IFQgb2JqZWN0cyB0aGF0IGlzIGFkb3B0ZWQKICAgICAgKiBAc3RhYmxlIElDVSA0LjQKICAgICAg
Ki8KICAgICBleHBsaWNpdCBMb2NhbEFycmF5KFQgKnA9TlVMTCkgOiBMb2NhbFBvaW50ZXJCYXNl
PFQ+KHApIHt9CisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgdGFrZXMgb3duZXJzaGlwIGFu
ZCByZXBvcnRzIGFuIGVycm9yIGlmIE5VTEwuCisgICAgICoKKyAgICAgKiBUaGlzIGNvbnN0cnVj
dG9yIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aCBvdGhlci1jbGFzcyBjb25zdHJ1Y3RvcnMK
KyAgICAgKiB0aGF0IG1heSByZXBvcnQgYSBmYWlsdXJlIFVFcnJvckNvZGUsCisgICAgICogc28g
dGhhdCBjYWxsZXJzIG5lZWQgdG8gY2hlY2sgb25seSBmb3IgVV9GQUlMVVJFKGVycm9yQ29kZSkK
KyAgICAgKiBhbmQgbm90IGFsc28gc2VwYXJhdGVseSBmb3IgaXNOdWxsKCkuCisgICAgICoKKyAg
ICAgKiBAcGFyYW0gcCBzaW1wbGUgcG9pbnRlciB0byBhbiBhcnJheSBvZiBUIG9iamVjdHMgdGhh
dCBpcyBhZG9wdGVkCisgICAgICogQHBhcmFtIGVycm9yQ29kZSBpbi9vdXQgVUVycm9yQ29kZSwg
c2V0IHRvIFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1IKKyAgICAgKiAgICAgaWYgcD09TlVMTCBh
bmQgbm8gb3RoZXIgZmFpbHVyZSBjb2RlIGhhZCBiZWVuIHNldAorICAgICAqIEBzdGFibGUgSUNV
IDU2CisgICAgICovCisgICAgTG9jYWxBcnJheShUICpwLCBVRXJyb3JDb2RlICZlcnJvckNvZGUp
IDogTG9jYWxQb2ludGVyQmFzZTxUPihwKSB7CisgICAgICAgIGlmKHA9PU5VTEwgJiYgVV9TVUND
RVNTKGVycm9yQ29kZSkpIHsKKyAgICAgICAgICAgIGVycm9yQ29kZT1VX01FTU9SWV9BTExPQ0FU
SU9OX0VSUk9SOworICAgICAgICB9CisgICAgfQorICAgIC8qKgorICAgICAqIE1vdmUgY29uc3Ry
dWN0b3IsIGxlYXZlcyBzcmMgd2l0aCBpc051bGwoKS4KKyAgICAgKiBAcGFyYW0gc3JjIHNvdXJj
ZSBzbWFydCBwb2ludGVyCisgICAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8KKyAgICBMb2Nh
bEFycmF5KExvY2FsQXJyYXk8VD4gJiZzcmMpIFVfTk9FWENFUFQgOiBMb2NhbFBvaW50ZXJCYXNl
PFQ+KHNyYy5wdHIpIHsKKyAgICAgICAgc3JjLnB0cj1OVUxMOworICAgIH0KICAgICAvKioKICAg
ICAgKiBEZXN0cnVjdG9yIGRlbGV0ZXMgdGhlIGFycmF5IGl0IG93bnMuCiAgICAgICogQHN0YWJs
ZSBJQ1UgNC40CkBAIC0yOTIsNiArMzczLDUxIEBAIHB1YmxpYzoKICAgICB+TG9jYWxBcnJheSgp
IHsKICAgICAgICAgZGVsZXRlW10gTG9jYWxQb2ludGVyQmFzZTxUPjo6cHRyOwogICAgIH0KKyAg
ICAvKioKKyAgICAgKiBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIGxlYXZlcyBzcmMgd2l0aCBp
c051bGwoKS4KKyAgICAgKiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmICp0aGlzIGFuZCBz
cmMgYXJlIHRoZSBzYW1lIG9iamVjdC4KKyAgICAgKiBAcGFyYW0gc3JjIHNvdXJjZSBzbWFydCBw
b2ludGVyCisgICAgICogQHJldHVybiAqdGhpcworICAgICAqIEBzdGFibGUgSUNVIDU2CisgICAg
ICovCisgICAgTG9jYWxBcnJheTxUPiAmb3BlcmF0b3I9KExvY2FsQXJyYXk8VD4gJiZzcmMpIFVf
Tk9FWENFUFQgeworICAgICAgICByZXR1cm4gbW92ZUZyb20oc3JjKTsKKyAgICB9CisgICAgLy8g
ZG8gbm90IHVzZSAjaWZuZGVmIFVfSElERV9EUkFGVF9BUEkgZm9yIG1vdmVGcm9tLCBuZWVkZWQg
Ynkgbm9uLWRyYWZ0IEFQSQorICAgIC8qKgorICAgICAqIE1vdmUgYXNzaWdubWVudCwgbGVhdmVz
IHNyYyB3aXRoIGlzTnVsbCgpLgorICAgICAqIFRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQgaWYg
KnRoaXMgYW5kIHNyYyBhcmUgdGhlIHNhbWUgb2JqZWN0LgorICAgICAqCisgICAgICogQ2FuIGJl
IGNhbGxlZCBleHBsaWNpdGx5LCBkb2VzIG5vdCBuZWVkIEMrKzExIHN1cHBvcnQuCisgICAgICog
QHBhcmFtIHNyYyBzb3VyY2Ugc21hcnQgcG9pbnRlcgorICAgICAqIEByZXR1cm4gKnRoaXMKKyAg
ICAgKiBAZHJhZnQgSUNVIDU2CisgICAgICovCisgICAgTG9jYWxBcnJheTxUPiAmbW92ZUZyb20o
TG9jYWxBcnJheTxUPiAmc3JjKSBVX05PRVhDRVBUIHsKKyAgICAgICAgZGVsZXRlW10gTG9jYWxQ
b2ludGVyQmFzZTxUPjo6cHRyOworICAgICAgICBMb2NhbFBvaW50ZXJCYXNlPFQ+OjpwdHI9c3Jj
LnB0cjsKKyAgICAgICAgc3JjLnB0cj1OVUxMOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorICAgIC8qKgorICAgICAqIFN3YXAgcG9pbnRlcnMuCisgICAgICogQHBhcmFtIG90aGVyIG90
aGVyIHNtYXJ0IHBvaW50ZXIKKyAgICAgKiBAc3RhYmxlIElDVSA1NgorICAgICAqLworICAgIHZv
aWQgc3dhcChMb2NhbEFycmF5PFQ+ICZvdGhlcikgVV9OT0VYQ0VQVCB7CisgICAgICAgIFQgKnRl
bXA9TG9jYWxQb2ludGVyQmFzZTxUPjo6cHRyOworICAgICAgICBMb2NhbFBvaW50ZXJCYXNlPFQ+
OjpwdHI9b3RoZXIucHRyOworICAgICAgICBvdGhlci5wdHI9dGVtcDsKKyAgICB9CisgICAgLyoq
CisgICAgICogTm9uLW1lbWJlciBMb2NhbEFycmF5IHN3YXAgZnVuY3Rpb24uCisgICAgICogQHBh
cmFtIHAxIHdpbGwgZ2V0IHAyJ3MgcG9pbnRlcgorICAgICAqIEBwYXJhbSBwMiB3aWxsIGdldCBw
MSdzIHBvaW50ZXIKKyAgICAgKiBAc3RhYmxlIElDVSA1NgorICAgICAqLworICAgIGZyaWVuZCBp
bmxpbmUgdm9pZCBzd2FwKExvY2FsQXJyYXk8VD4gJnAxLCBMb2NhbEFycmF5PFQ+ICZwMikgVV9O
T0VYQ0VQVCB7CisgICAgICAgIHAxLnN3YXAocDIpOworICAgIH0KICAgICAvKioKICAgICAgKiBE
ZWxldGVzIHRoZSBhcnJheSBpdCBvd25zLAogICAgICAqIGFuZCBhZG9wdHMgKHRha2VzIG93bmVy
c2hpcCBvZikgdGhlIG9uZSBwYXNzZWQgaW4uCkBAIC0zMDIsNiArNDI4LDMyIEBAIHB1YmxpYzoK
ICAgICAgICAgZGVsZXRlW10gTG9jYWxQb2ludGVyQmFzZTxUPjo6cHRyOwogICAgICAgICBMb2Nh
bFBvaW50ZXJCYXNlPFQ+OjpwdHI9cDsKICAgICB9CisgICAgLyoqCisgICAgICogRGVsZXRlcyB0
aGUgYXJyYXkgaXQgb3ducywKKyAgICAgKiBhbmQgYWRvcHRzICh0YWtlcyBvd25lcnNoaXAgb2Yp
IHRoZSBvbmUgcGFzc2VkIGluLgorICAgICAqCisgICAgICogSWYgVV9GQUlMVVJFKGVycm9yQ29k
ZSksIHRoZW4gdGhlIGN1cnJlbnQgYXJyYXkgaXMgcmV0YWluZWQgYW5kIHRoZSBuZXcgb25lIGRl
bGV0ZWQuCisgICAgICoKKyAgICAgKiBJZiBVX1NVQ0NFU1MoZXJyb3JDb2RlKSBidXQgdGhlIGlu
cHV0IHBvaW50ZXIgaXMgTlVMTCwKKyAgICAgKiB0aGVuIFVfTUVNT1JZX0FMTE9DQVRJT05fRVJS
T1IgaXMgc2V0LAorICAgICAqIHRoZSBjdXJyZW50IGFycmF5IGlzIGRlbGV0ZWQsIGFuZCBOVUxM
IGlzIHNldC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwIHNpbXBsZSBwb2ludGVyIHRvIGFuIGFy
cmF5IG9mIFQgb2JqZWN0cyB0aGF0IGlzIGFkb3B0ZWQKKyAgICAgKiBAcGFyYW0gZXJyb3JDb2Rl
IGluL291dCBVRXJyb3JDb2RlLCBzZXQgdG8gVV9NRU1PUllfQUxMT0NBVElPTl9FUlJPUgorICAg
ICAqICAgICBpZiBwPT1OVUxMIGFuZCBubyBvdGhlciBmYWlsdXJlIGNvZGUgaGFkIGJlZW4gc2V0
CisgICAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8KKyAgICB2b2lkIGFkb3B0SW5zdGVhZEFu
ZENoZWNrRXJyb3JDb2RlKFQgKnAsIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgeworICAgICAgICBp
ZihVX1NVQ0NFU1MoZXJyb3JDb2RlKSkgeworICAgICAgICAgICAgZGVsZXRlW10gTG9jYWxQb2lu
dGVyQmFzZTxUPjo6cHRyOworICAgICAgICAgICAgTG9jYWxQb2ludGVyQmFzZTxUPjo6cHRyPXA7
CisgICAgICAgICAgICBpZihwPT1OVUxMKSB7CisgICAgICAgICAgICAgICAgZXJyb3JDb2RlPVVf
TUVNT1JZX0FMTE9DQVRJT05fRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBkZWxldGVbXSBwOworICAgICAgICB9CisgICAgfQogICAgIC8qKgogICAg
ICAqIEFycmF5IGl0ZW0gYWNjZXNzICh3cml0YWJsZSkuCiAgICAgICogTm8gaW5kZXggYm91bmRz
IGNoZWNrLgpAQCAtMzE5LDkgKzQ3MSw2IEBAIHB1YmxpYzoKICAqIGxpa2UgTG9jYWxQb2ludGVy
PFR5cGU+IGV4Y2VwdCB0aGF0IHRoaXMgc3ViY2xhc3Mgd2lsbCB1c2UgdGhlIGNsb3NlRnVuY3Rp
b24KICAqIHJhdGhlciB0aGFuIHRoZSBDKysgZGVsZXRlIG9wZXJhdG9yLgogICoKLSAqIFJlcXVp
cmVtZW50OiBUaGUgY2xvc2VGdW5jdGlvbiBtdXN0IHRvbGVyYXRlIGEgTlVMTCBwb2ludGVyLgot
ICogKFdlIGNvdWxkIGFkZCBhIE5VTEwgY2hlY2sgaGVyZSBidXQgaXQgaXMgbm9ybWFsbHkgcmVk
dW5kYW50LikKLSAqCiAgKiBVc2FnZSBleGFtcGxlOgogICogXGNvZGUKICAqIExvY2FsVUNhc2VN
YXBQb2ludGVyIGNzbSh1Y2FzZW1hcF9vcGVuKGxvY2FsZUlELCBvcHRpb25zLCAmZXJyb3JDb2Rl
KSk7CkBAIC0zMzgsMTAgKzQ4NywzMyBAQCBwdWJsaWM6CiAjZGVmaW5lIFVfREVGSU5FX0xPQ0FM
X09QRU5fUE9JTlRFUihMb2NhbFBvaW50ZXJDbGFzc05hbWUsIFR5cGUsIGNsb3NlRnVuY3Rpb24p
IFwKICAgICBjbGFzcyBMb2NhbFBvaW50ZXJDbGFzc05hbWUgOiBwdWJsaWMgTG9jYWxQb2ludGVy
QmFzZTxUeXBlPiB7IFwKICAgICBwdWJsaWM6IFwKKyAgICAgICAgdXNpbmcgTG9jYWxQb2ludGVy
QmFzZTxUeXBlPjo6b3BlcmF0b3IqOyBcCisgICAgICAgIHVzaW5nIExvY2FsUG9pbnRlckJhc2U8
VHlwZT46Om9wZXJhdG9yLT47IFwKICAgICAgICAgZXhwbGljaXQgTG9jYWxQb2ludGVyQ2xhc3NO
YW1lKFR5cGUgKnA9TlVMTCkgOiBMb2NhbFBvaW50ZXJCYXNlPFR5cGU+KHApIHt9IFwKLSAgICAg
ICAgfkxvY2FsUG9pbnRlckNsYXNzTmFtZSgpIHsgY2xvc2VGdW5jdGlvbihwdHIpOyB9IFwKKyAg
ICAgICAgTG9jYWxQb2ludGVyQ2xhc3NOYW1lKExvY2FsUG9pbnRlckNsYXNzTmFtZSAmJnNyYykg
VV9OT0VYQ0VQVCBcCisgICAgICAgICAgICAgICAgOiBMb2NhbFBvaW50ZXJCYXNlPFR5cGU+KHNy
Yy5wdHIpIHsgXAorICAgICAgICAgICAgc3JjLnB0cj1OVUxMOyBcCisgICAgICAgIH0gXAorICAg
ICAgICB+TG9jYWxQb2ludGVyQ2xhc3NOYW1lKCkgeyBpZiAocHRyICE9IE5VTEwpIHsgY2xvc2VG
dW5jdGlvbihwdHIpOyB9IH0gXAorICAgICAgICBMb2NhbFBvaW50ZXJDbGFzc05hbWUgJm9wZXJh
dG9yPShMb2NhbFBvaW50ZXJDbGFzc05hbWUgJiZzcmMpIFVfTk9FWENFUFQgeyBcCisgICAgICAg
ICAgICByZXR1cm4gbW92ZUZyb20oc3JjKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgTG9jYWxQ
b2ludGVyQ2xhc3NOYW1lICZtb3ZlRnJvbShMb2NhbFBvaW50ZXJDbGFzc05hbWUgJnNyYykgVV9O
T0VYQ0VQVCB7IFwKKyAgICAgICAgICAgIGlmIChwdHIgIT0gTlVMTCkgeyBjbG9zZUZ1bmN0aW9u
KHB0cik7IH0gXAorICAgICAgICAgICAgTG9jYWxQb2ludGVyQmFzZTxUeXBlPjo6cHRyPXNyYy5w
dHI7IFwKKyAgICAgICAgICAgIHNyYy5wdHI9TlVMTDsgXAorICAgICAgICAgICAgcmV0dXJuICp0
aGlzOyBcCisgICAgICAgIH0gXAorICAgICAgICB2b2lkIHN3YXAoTG9jYWxQb2ludGVyQ2xhc3NO
YW1lICZvdGhlcikgVV9OT0VYQ0VQVCB7IFwKKyAgICAgICAgICAgIFR5cGUgKnRlbXA9TG9jYWxQ
b2ludGVyQmFzZTxUeXBlPjo6cHRyOyBcCisgICAgICAgICAgICBMb2NhbFBvaW50ZXJCYXNlPFR5
cGU+OjpwdHI9b3RoZXIucHRyOyBcCisgICAgICAgICAgICBvdGhlci5wdHI9dGVtcDsgXAorICAg
ICAgICB9IFwKKyAgICAgICAgZnJpZW5kIGlubGluZSB2b2lkIHN3YXAoTG9jYWxQb2ludGVyQ2xh
c3NOYW1lICZwMSwgTG9jYWxQb2ludGVyQ2xhc3NOYW1lICZwMikgVV9OT0VYQ0VQVCB7IFwKKyAg
ICAgICAgICAgIHAxLnN3YXAocDIpOyBcCisgICAgICAgIH0gXAogICAgICAgICB2b2lkIGFkb3B0
SW5zdGVhZChUeXBlICpwKSB7IFwKLSAgICAgICAgICAgIGNsb3NlRnVuY3Rpb24ocHRyKTsgXAor
ICAgICAgICAgICAgaWYgKHB0ciAhPSBOVUxMKSB7IGNsb3NlRnVuY3Rpb24ocHRyKTsgfSBcCiAg
ICAgICAgICAgICBwdHI9cDsgXAogICAgICAgICB9IFwKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL2xvY2RzcG5tLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL2xv
Y2RzcG5tLmgKaW5kZXggNzQ4NjJiNmQ4YTViMjAzYTQ4M2Y3MmI5YzJmYTNmM2JiYWFhODU1Yi4u
N2YyMjc4MjliNGNjMDBkNGU3YzU1NjNjZDkxYzg1MzU3MzQ0ZTM2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9pY3UvdW5pY29kZS9sb2Nkc3BubS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvbG9jZHNwbm0uaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmlj
b2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8v
d3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ci0qIENvcHlyaWdodCAoQykgMjAxMC0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hp
bmVzIENvcnBvcmF0aW9uIGFuZAorKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiwgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKICogb3RoZXJzLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwpAQCAtMTgsNiArMjAsNyBA
QAogI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKIAogI2luY2x1ZGUgInVuaWNvZGUvbG9jaWQu
aCIKKyNpbmNsdWRlICJ1bmljb2RlL3N0cmVudW0uaCIKICNpbmNsdWRlICJ1bmljb2RlL3VzY3Jp
cHQuaCIKICNpbmNsdWRlICJ1bmljb2RlL3VsZG5hbWVzLmgiCiAjaW5jbHVkZSAidW5pY29kZS91
ZGlzcGxheWNvbnRleHQuaCIKQEAgLTMwLDcgKzMzLDcgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAq
IHZhbHVlcywgc2VlIExvY2FsZS4KICAqIEBzdGFibGUgSUNVIDQuNAogICovCi1jbGFzcyBVX0kx
OE5fQVBJIExvY2FsZURpc3BsYXlOYW1lcyA6IHB1YmxpYyBVT2JqZWN0IHsKK2NsYXNzIFVfQ09N
TU9OX0FQSSBMb2NhbGVEaXNwbGF5TmFtZXMgOiBwdWJsaWMgVU9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgLyoqCiAgICAgICogRGVzdHJ1Y3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvbG9jaWQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbG9jaWQuaAppbmRleCAxYWQ1
Y2I1NDZlYmUzOTdlZjQzNmRmMzY1MDNlYjQzNzFjMzg2Njk2Li5kZDdkMDY4YTRlNTQwMDQyM2Rl
NmIzY2FiNjBjMzYyNzZlZjFmZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L2xvY2lkLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9sb2NpZC5oCkBAIC0xLDMgKzEs
NSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8v
IExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0
Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTMxLDEwICszMyw4IEBACiAK
ICNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgogI2luY2x1ZGUgInVuaWNvZGUvdW9iamVjdC5o
IgotI2luY2x1ZGUgInVuaWNvZGUvdW5pc3RyLmgiCiAjaW5jbHVkZSAidW5pY29kZS9wdXRpbC5o
IgogI2luY2x1ZGUgInVuaWNvZGUvdWxvYy5oIgotI2luY2x1ZGUgInVuaWNvZGUvc3RyZW51bS5o
IgogCiAvKioKICAqIFxmaWxlCkBAIC00Niw2ICs0Niw5IEBAIFVfTkFNRVNQQUNFX0JFR0lOCiAv
LyBGb3J3YXJkIERlY2xhcmF0aW9ucwogdm9pZCBVX0NBTExDT05WIGxvY2FsZV9hdmFpbGFibGVf
aW5pdCgpOyAvKio8IEBpbnRlcm5hbCAqLwogCitjbGFzcyBTdHJpbmdFbnVtZXJhdGlvbjsKK2Ns
YXNzIFVuaWNvZGVTdHJpbmc7CisKIC8qKgogICogQSA8Y29kZT5Mb2NhbGU8L2NvZGU+IG9iamVj
dCByZXByZXNlbnRzIGEgc3BlY2lmaWMgZ2VvZ3JhcGhpY2FsLCBwb2xpdGljYWwsCiAgKiBvciBj
dWx0dXJhbCByZWdpb24uIEFuIG9wZXJhdGlvbiB0aGF0IHJlcXVpcmVzIGEgPGNvZGU+TG9jYWxl
PC9jb2RlPiB0byBwZXJmb3JtCkBAIC04NSw3ICs4OCw3IEBAIHZvaWQgVV9DQUxMQ09OViBsb2Nh
bGVfYXZhaWxhYmxlX2luaXQoKTsgLyoqPCBAaW50ZXJuYWwgKi8KICAqIDxQPgogICogVGhlIHRo
aXJkIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGEgdGhpcmQgYXJndW1lbnQtLXRoZSA8U1RST05HPlZh
cmlhbnQuPC9TVFJPTkc+CiAgKiBUaGUgVmFyaWFudCBjb2RlcyBhcmUgdmVuZG9yIGFuZCBicm93
c2VyLXNwZWNpZmljLgotICogRm9yIGV4YW1wbGUsIHVzZSBSRVZJU0VEIGZvciBhIGxhbmdhdWdl
J3MgcmV2aXNlZCBzY3JpcHQgb3J0aG9ncmFwaHksIGFuZCBQT1NJWCBmb3IgUE9TSVguCisgKiBG
b3IgZXhhbXBsZSwgdXNlIFJFVklTRUQgZm9yIGEgbGFuZ3VhZ2UncyByZXZpc2VkIHNjcmlwdCBv
cnRob2dyYXBoeSwgYW5kIFBPU0lYIGZvciBQT1NJWC4KICAqIFdoZXJlIHRoZXJlIGFyZSB0d28g
dmFyaWFudHMsIHNlcGFyYXRlIHRoZW0gd2l0aCBhbiB1bmRlcnNjb3JlLCBhbmQKICAqIHB1dCB0
aGUgbW9zdCBpbXBvcnRhbnQgb25lIGZpcnN0LiBGb3IKICAqIGV4YW1wbGUsIGEgVHJhZGl0aW9u
YWwgU3BhbmlzaCBjb2xsYXRpb24gbWlnaHQgYmUgcmVmZXJlbmNlZCwgd2l0aApAQCAtNDkzLDcg
KzQ5Niw2IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICB1aW50MzJfdCAgICAgICAgZ2V0TENJRCh2
b2lkKSBjb25zdDsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICog
UmV0dXJucyB3aGV0aGVyIHRoaXMgbG9jYWxlJ3Mgc2NyaXB0IGlzIHdyaXR0ZW4gcmlnaHQtdG8t
bGVmdC4KICAgICAgKiBJZiB0aGVyZSBpcyBubyBzY3JpcHQgc3VidGFnLCB0aGVuIHRoZSBsaWtl
bHkgc2NyaXB0IGlzIHVzZWQsIHNlZSB1bG9jX2FkZExpa2VseVN1YnRhZ3MoKS4KQEAgLTUwNSwx
MCArNTA3LDkgQEAgcHVibGljOgogICAgICAqIFJldHVybnMgVFJVRSBmb3IgImFyIiBhbmQgImVu
LUhlYnIiLCBGQUxTRSBmb3IgInpoIiBhbmQgImZhLUN5cmwiLgogICAgICAqCiAgICAgICogQHJl
dHVybiBUUlVFIGlmIHRoZSBsb2NhbGUncyBzY3JpcHQgaXMgd3JpdHRlbiByaWdodC10by1sZWZ0
Ci0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAg
ICAgVUJvb2wgaXNSaWdodFRvTGVmdCgpIGNvbnN0OwotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRf
QVBJICovCiAKICAgICAvKioKICAgICAgKiBGaWxscyBpbiAiZGlzcExhbmciIHdpdGggdGhlIG5h
bWUgb2YgdGhpcyBsb2NhbGUncyBsYW5ndWFnZSBpbiBhIGZvcm1hdCBzdWl0YWJsZSBmb3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbWVhc2ZtdC5oIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9tZWFzZm10LmgKaW5kZXggNjFhMWU4NmQ5YzQzMWU3YzE4YTQ4Y2NiOTc2ZTM3
YzE2ZWQ4MmMxYi4uMTU2YmI4MWI1NDRkZWVlZWQ5YzU5YzBjMmQ4Y2RhZjk2YTJlMjg1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9tZWFzZm10LmgKKysrIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9tZWFzZm10LmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBs
YXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVz
ZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKLSogQ29weXJpZ2h0IChjKSAyMDA0LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFj
aGluZXMKKyogQ29weXJpZ2h0IChjKSAyMDA0LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3Mg
TWFjaGluZXMKICogQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiAqIEF1dGhvcjogQWxhbiBMaXUKQEAgLTU5LDExICs2MSwxMyBAQCBl
bnVtIFVNZWFzdXJlRm9ybWF0V2lkdGggewogICAgICAqLwogICAgIFVNRUFTRk1UX1dJRFRIX05V
TUVSSUMsCiAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCiAgICAgLyoqCi0gICAgICog
Q291bnQgb2YgdmFsdWVzIGluIHRoaXMgZW51bS4KLSAgICAgKiBAc3RhYmxlIElDVSA1MworICAg
ICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVNZWFzdXJlRm9ybWF0V2lkdGgg
dmFsdWUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBj
aGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCiAgICAgICovCiAgICAgVU1F
QVNGTVRfV0lEVEhfQ09VTlQgPSA0CisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQog
fTsKIC8qKiBAc3RhYmxlIElDVSA1MyAqLwogdHlwZWRlZiBlbnVtIFVNZWFzdXJlRm9ybWF0V2lk
dGggVU1lYXN1cmVGb3JtYXRXaWR0aDsgCkBAIC03OCw3ICs4Miw3IEBAIGNsYXNzIE1lYXN1cmVG
b3JtYXRDYWNoZURhdGE7CiBjbGFzcyBTaGFyZWROdW1iZXJGb3JtYXQ7CiBjbGFzcyBTaGFyZWRQ
bHVyYWxSdWxlczsKIGNsYXNzIFF1YW50aXR5Rm9ybWF0dGVyOwotY2xhc3MgU2ltcGxlUGF0dGVy
bkZvcm1hdHRlcjsKK2NsYXNzIFNpbXBsZUZvcm1hdHRlcjsKIGNsYXNzIExpc3RGb3JtYXR0ZXI7
CiBjbGFzcyBEYXRlRm9ybWF0OwogCkBAIC0xODYsNyArMTkwLDYgQEAgY2xhc3MgVV9JMThOX0FQ
SSBNZWFzdXJlRm9ybWF0IDogcHVibGljIEZvcm1hdCB7CiAgICAgICAgICAgICBGaWVsZFBvc2l0
aW9uICZwb3MsCiAgICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpIGNvbnN0OwogCi0jaWZu
ZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBGb3JtYXRzIGEgc2luZ2xlIG1l
YXN1cmUgcGVyIHVuaXQuIEFuIGV4YW1wbGUgb2Ygc3VjaCBhCiAgICAgICogZm9ybWF0dGVkIHN0
cmluZyBpcyAzLjUgbWV0ZXJzIHBlciBzZWNvbmQuCkBAIC0xOTgsNyArMjAxLDcgQEAgY2xhc3Mg
VV9JMThOX0FQSSBNZWFzdXJlRm9ybWF0IDogcHVibGljIEZvcm1hdCB7CiAgICAgICogQHBhcmFt
IHN0YXR1cyB0aGUgZXJyb3IuCiAgICAgICogQHJldHVybiBhcHBlbmRUbyByZWZlcmVuY2UKICAg
ICAgKgotICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBAc3RhYmxlIElDVSA1NQogICAgICAq
LwogICAgIFVuaWNvZGVTdHJpbmcgJmZvcm1hdE1lYXN1cmVQZXJVbml0KAogICAgICAgICAgICAg
Y29uc3QgTWVhc3VyZSAmbWVhc3VyZSwKQEAgLTIwNyw3ICsyMTAsMTkgQEAgY2xhc3MgVV9JMThO
X0FQSSBNZWFzdXJlRm9ybWF0IDogcHVibGljIEZvcm1hdCB7CiAgICAgICAgICAgICBGaWVsZFBv
c2l0aW9uICZwb3MsCiAgICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMpIGNvbnN0OwogCi0j
ZW5kaWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBk
aXNwbGF5IG5hbWUgb2YgdGhlIHNwZWNpZmllZCB7QGxpbmsgTWVhc3VyZVVuaXR9IGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIGN1cnJlbnQKKyAgICAgKiBsb2NhbGUgYW5kIGZvcm1hdCB3aWR0aC4KKyAg
ICAgKiBAcGFyYW0gdW5pdCAgVGhlIHVuaXQgZm9yIHdoaWNoIHRvIGdldCBhIGRpc3BsYXkgbmFt
ZS4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIHRoZSBlcnJvci4KKyAgICAgKiBAcmV0dXJuICBUaGUg
ZGlzcGxheSBuYW1lIGluIHRoZSBsb2NhbGUgYW5kIHdpZHRoIHNwZWNpZmllZCBpbgorICAgICAq
ICAgICAgICAgIHtAbGluayBNZWFzdXJlRm9ybWF0I2dldEluc3RhbmNlfSwgb3IgbnVsbCBpZiB0
aGVyZSBpcyBubyBkaXNwbGF5IG5hbWUgYXZhaWxhYmxlCisgICAgICogICAgICAgICAgZm9yIHRo
ZSBzcGVjaWZpZWQgdW5pdC4KKyAgICAgKgorICAgICAqIEBzdGFibGUgSUNVIDU4CisgICAgICov
CisgICAgVW5pY29kZVN0cmluZyBnZXRVbml0RGlzcGxheU5hbWUoY29uc3QgTWVhc3VyZVVuaXQm
IHVuaXQsIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CisKIAogICAgIC8qKgogICAgICAqIFJl
dHVybiBhIGZvcm1hdHRlciBmb3IgQ3VycmVuY3lBbW91bnQgb2JqZWN0cyBpbiB0aGUgZ2l2ZW4K
QEAgLTMyNywxNyArMzQyLDE5IEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZUZvcm1hdCA6IHB1
YmxpYyBGb3JtYXQgewogICAgIC8vIHNoYXJlZCBhY3Jvc3MgaW5zdGFuY2VzLgogICAgIExpc3RG
b3JtYXR0ZXIgKmxpc3RGb3JtYXR0ZXI7CiAKLSAgICBjb25zdCBRdWFudGl0eUZvcm1hdHRlciAq
Z2V0UXVhbnRpdHlGb3JtYXR0ZXIoCi0gICAgICAgICAgICBpbnQzMl90IGluZGV4LAotICAgICAg
ICAgICAgaW50MzJfdCB3aWR0aEluZGV4LAotICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVz
KSBjb25zdDsKKyAgICBjb25zdCBTaW1wbGVGb3JtYXR0ZXIgKmdldEZvcm1hdHRlck9yTnVsbCgK
KyAgICAgICAgICAgIGNvbnN0IE1lYXN1cmVVbml0ICZ1bml0LCBVTWVhc3VyZUZvcm1hdFdpZHRo
IHdpZHRoLCBpbnQzMl90IGluZGV4KSBjb25zdDsKIAotICAgIGNvbnN0IFNpbXBsZVBhdHRlcm5G
b3JtYXR0ZXIgKmdldFBlclVuaXRGb3JtYXR0ZXIoCi0gICAgICAgICAgICBpbnQzMl90IGluZGV4
LAotICAgICAgICAgICAgaW50MzJfdCB3aWR0aEluZGV4KSBjb25zdDsKKyAgICBjb25zdCBTaW1w
bGVGb3JtYXR0ZXIgKmdldEZvcm1hdHRlcigKKyAgICAgICAgICAgIGNvbnN0IE1lYXN1cmVVbml0
ICZ1bml0LCBVTWVhc3VyZUZvcm1hdFdpZHRoIHdpZHRoLCBpbnQzMl90IGluZGV4LAorICAgICAg
ICAgICAgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKIAotICAgIGNvbnN0IFNpbXBsZVBh
dHRlcm5Gb3JtYXR0ZXIgKmdldFBlckZvcm1hdHRlcigKLSAgICAgICAgICAgIGludDMyX3Qgd2lk
dGhJbmRleCwKKyAgICBjb25zdCBTaW1wbGVGb3JtYXR0ZXIgKmdldFBsdXJhbEZvcm1hdHRlcigK
KyAgICAgICAgICAgIGNvbnN0IE1lYXN1cmVVbml0ICZ1bml0LCBVTWVhc3VyZUZvcm1hdFdpZHRo
IHdpZHRoLCBpbnQzMl90IGluZGV4LAorICAgICAgICAgICAgVUVycm9yQ29kZSAmZXJyb3JDb2Rl
KSBjb25zdDsKKworICAgIGNvbnN0IFNpbXBsZUZvcm1hdHRlciAqZ2V0UGVyRm9ybWF0dGVyKAor
ICAgICAgICAgICAgVU1lYXN1cmVGb3JtYXRXaWR0aCB3aWR0aCwKICAgICAgICAgICAgIFVFcnJv
ckNvZGUgJnN0YXR1cykgY29uc3Q7CiAKICAgICBpbnQzMl90IHdpdGhQZXJVbml0QW5kQXBwZW5k
KApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9tZWFzdW5pdC5oIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS9tZWFzdW5pdC5oCmluZGV4IGM3MzcwNjY3ZDMxNWNlMjBlZTEwZWQy
NzAxODhjNzhhODUzOWFmNmIuLjQxNDBhZTM2NzlmOTRlOWZmN2EyOWVlZDQxZDI1OWUwNDY4NDdm
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbWVhc3VuaXQuaAorKysgYi9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL21lYXN1bml0LmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAy
MDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRl
cm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKLSogQ29weXJpZ2h0IChjKSAyMDA0LTIwMTUsIEludGVybmF0aW9uYWwgQnVz
aW5lc3MgTWFjaGluZXMKKyogQ29weXJpZ2h0IChjKSAyMDA0LTIwMTYsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMKICogQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAqIEF1dGhvcjogQWxhbiBMaXUKQEAgLTM4LDExICs0
MCwxMCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAK
ICAgICAvKioKICAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgICAqIFBvcHVsYXRlcyB0
aGUgaW5zdGFuY2Ugd2l0aCB0aGUgYmFzZSBkaW1lbnNpb25sZXNzIHVuaXQuCiAgICAgICogQHN0
YWJsZSBJQ1UgMy4wCiAgICAgICovCi0gICAgTWVhc3VyZVVuaXQoKSA6IGZUeXBlSWQoMCksIGZT
dWJUeXBlSWQoMCkgeyAKLSAgICAgICAgZkN1cnJlbmN5WzBdID0gMDsKLSAgICB9CisgICAgTWVh
c3VyZVVuaXQoKTsKICAgICAKICAgICAvKioKICAgICAgKiBDb3B5IGNvbnN0cnVjdG9yLgpAQCAt
MTQ3LDcgKzE0OCw3IEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1YmxpYyBVT2Jq
ZWN0IHsKICAgICAgKiA8cHJlPgogICAgICAqIC4gICBCYXNlKiBwb2x5bW9ycGhpY19wb2ludGVy
ID0gY3JlYXRlUG9seW1vcnBoaWNPYmplY3QoKTsKICAgICAgKiAuICAgaWYgKHBvbHltb3JwaGlj
X3BvaW50ZXItPmdldER5bmFtaWNDbGFzc0lEKCkgPT0KLSAgICAgKiAuICAgICAgIGVyaXZlZDo6
Z2V0U3RhdGljQ2xhc3NJRCgpKSAuLi4KKyAgICAgKiAuICAgICAgIERlcml2ZWQ6OmdldFN0YXRp
Y0NsYXNzSUQoKSkgLi4uCiAgICAgICogPC9wcmU+CiAgICAgICogQHJldHVybiAgICAgICAgICBU
aGUgY2xhc3MgSUQgZm9yIGFsbCBvYmplY3RzIG9mIHRoaXMgY2xhc3MuCiAgICAgICogQHN0YWJs
ZSBJQ1UgNTMKQEAgLTE4Myw2ICsxODQsMTQgQEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5p
dDogcHVibGljIFVPYmplY3QgewogICAgICAqLwogICAgIHN0YXRpYyBpbnQzMl90IGdldEluZGV4
Q291bnQoKTsKIAorICAgIC8qKgorICAgICAqIElDVSB1c2Ugb25seS4KKyAgICAgKiBAcmV0dXJu
IHRoZSB1bml0LmdldEluZGV4KCkgb2YgdGhlIHVuaXQgd2hpY2ggaGFzIHRoaXMgdW5pdC5nZXRU
eXBlKCkgYW5kIHVuaXQuZ2V0U3VidHlwZSgpLAorICAgICAqICAgICAgICAgb3IgYSBuZWdhdGl2
ZSB2YWx1ZSBpZiB0aGVyZSBpcyBubyBzdWNoIHVuaXQKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAg
Ki8KKyAgICBzdGF0aWMgaW50MzJfdCBpbnRlcm5hbEdldEluZGV4Rm9yVHlwZUFuZFN1YnR5cGUo
Y29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqc3VidHlwZSk7CisKICAgICAvKioKICAgICAg
KiBJQ1UgdXNlIG9ubHkuCiAgICAgICogQGludGVybmFsCkBAIC0yMDcsMTYgKzIxNiwxNCBAQCBj
bGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAg
ICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVHRm9yY2UoVUVycm9yQ29kZSAmc3RhdHVzKTsK
IAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0
IG9mIGFjY2VsZXJhdGlvbjogbWV0ZXItcGVyLXNlY29uZC1zcXVhcmVkLgogICAgICAqIENhbGxl
ciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0
YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJs
ZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1ldGVyUGVy
U2Vjb25kU3F1YXJlZChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RS
QUZUX0FQSSAqLwogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBhbmdsZTogYXJjLW1p
bnV0ZS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0
LgpAQCAtMjQxLDE2ICsyNDgsMjIgQEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5pdDogcHVi
bGljIFVPYmplY3QgewogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlRGVn
cmVlKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAg
IC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBhbmdsZTogcmFkaWFuLgogICAgICAqIENhbGxl
ciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0
YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJs
ZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZVJhZGlhbihV
RXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLworICAg
IC8qKgorICAgICAqIFJldHVybnMgdW5pdCBvZiBhbmdsZTogcmV2b2x1dGlvbi4KKyAgICAgKiBD
YWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgorICAgICAqIEBwYXJh
bSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8K
KyAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZVJldm9sdXRpb25BbmdsZShVRXJyb3JDb2Rl
ICZzdGF0dXMpOworCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGFyZWE6IGFjcmUu
CiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAg
LTI2NywxNiArMjgwLDE0IEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1YmxpYyBV
T2JqZWN0IHsKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUhlY3RhcmUo
VUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoq
CiAgICAgICogUmV0dXJucyB1bml0IG9mIGFyZWE6IHNxdWFyZS1jZW50aW1ldGVyLgogICAgICAq
IENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBh
cmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICog
QHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZVNx
dWFyZUNlbnRpbWV0ZXIoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9E
UkFGVF9BUEkgKi8KICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgYXJlYTogc3F1YXJl
LWZvb3QuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBp
dC4KQEAgLTI4NSwxNiArMjk2LDE0IEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1
YmxpYyBVT2JqZWN0IHsKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZVNx
dWFyZUZvb3QoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJ
CiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGFyZWE6IHNxdWFyZS1pbmNoLgogICAg
ICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICog
QHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAg
ICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0
ZVNxdWFyZUluY2goVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFG
VF9BUEkgKi8KICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgYXJlYTogc3F1YXJlLWtp
bG9tZXRlci4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVl
IGl0LgpAQCAtMzE5LDEzNiArMzI4LDE3NCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0
OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVh
dGVTcXVhcmVNaWxlKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZU
X0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBhcmVhOiBzcXVhcmUteWFyZC4K
ICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAor
ICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpj
cmVhdGVTcXVhcmVZYXJkKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVf
RFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKKyAgICAvKioKKyAgICAgKiBS
ZXR1cm5zIHVuaXQgb2YgY29uY2VudHI6IGthcmF0LgorICAgICAqIENhbGxlciBvd25zIHJldHVy
bmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCisgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJy
b3IgY29kZS4KKyAgICAgKiBAc3RhYmxlIElDVSA1NAorICAgICAqLworICAgIHN0YXRpYyBNZWFz
dXJlVW5pdCAqY3JlYXRlS2FyYXQoVUVycm9yQ29kZSAmc3RhdHVzKTsKKworICAgIC8qKgorICAg
ICAqIFJldHVybnMgdW5pdCBvZiBjb25jZW50cjogbWlsbGlncmFtLXBlci1kZWNpbGl0ZXIuCisg
ICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KKyAgICAg
KiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgorICAgICAqIEBzdGFibGUgSUNVIDU3Cisg
ICAgICovCisgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVNaWxsaWdyYW1QZXJEZWNpbGl0
ZXIoVUVycm9yQ29kZSAmc3RhdHVzKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdW5pdCBv
ZiBjb25jZW50cjogbWlsbGltb2xlLXBlci1saXRlci4KKyAgICAgKiBDYWxsZXIgb3ducyByZXR1
cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgorICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVy
cm9yIGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1UgNTcKKyAgICAgKi8KKyAgICBzdGF0aWMgTWVh
c3VyZVVuaXQgKmNyZWF0ZU1pbGxpbW9sZVBlckxpdGVyKFVFcnJvckNvZGUgJnN0YXR1cyk7CisK
KyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHVuaXQgb2YgY29uY2VudHI6IHBhcnQtcGVyLW1pbGxp
b24uCisgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4K
KyAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgorICAgICAqIEBzdGFibGUgSUNV
IDU3CisgICAgICovCisgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVQYXJ0UGVyTWlsbGlv
bihVRXJyb3JDb2RlICZzdGF0dXMpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB1bml0IG9m
IGNvbnN1bXB0aW9uOiBsaXRlci1wZXItMTAwa2lsb21ldGVycy4KKyAgICAgKiBDYWxsZXIgb3du
cyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgorICAgICAqIEBwYXJhbSBzdGF0dXMg
SUNVIGVycm9yIGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8KKyAgICBzdGF0
aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUxpdGVyUGVyMTAwS2lsb21ldGVycyhVRXJyb3JDb2RlICZz
dGF0dXMpOworCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGNvbnN1bXB0aW9uOiBs
aXRlci1wZXIta2lsb21ldGVyLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFu
ZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAg
ICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBz
dGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUxpdGVyUGVyS2lsb21ldGVyKFVFcnJvckNvZGUgJnN0
YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9E
UkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgY29uc3VtcHRpb246IG1p
bGUtcGVyLWdhbGxvbi4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVz
dCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICog
QGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGlj
IE1lYXN1cmVVbml0ICpjcmVhdGVNaWxlUGVyR2FsbG9uKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAK
LSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkK
KyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHVuaXQgb2YgY29uc3VtcHRpb246IG1pbGUtcGVyLWdh
bGxvbi1pbXBlcmlhbC4KKyAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVz
dCBmcmVlIGl0LgorICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCisgICAgICog
QHN0YWJsZSBJQ1UgNTcKKyAgICAgKi8KKyAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1p
bGVQZXJHYWxsb25JbXBlcmlhbChVRXJyb3JDb2RlICZzdGF0dXMpOworCisgICAgLyoKKyAgICAg
KiBUaGUgZm9sbG93aW5nIHdlcmUgZHJhZnQgSUNVIDU4LCBidXQgaGF2ZSBiZWVuIHdpdGhkcmF3
bjoKKyAgICAgKiBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUVhc3QoVUVycm9yQ29kZSAmc3Rh
dHVzKTsKKyAgICAgKiBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU5vcnRoKFVFcnJvckNvZGUg
JnN0YXR1cyk7CisgICAgICogc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVTb3V0aChVRXJyb3JD
b2RlICZzdGF0dXMpOworICAgICAqIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlV2VzdChVRXJy
b3JDb2RlICZzdGF0dXMpOworICAgICAqLworCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0
IG9mIGRpZ2l0YWw6IGJpdC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQg
bXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAg
ICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3Rh
dGljIE1lYXN1cmVVbml0ICpjcmVhdGVCaXQoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlm
IC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8q
KgogICAgICAqIFJldHVybnMgdW5pdCBvZiBkaWdpdGFsOiBieXRlLgogICAgICAqIENhbGxlciBv
d25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1
cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJ
Q1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUJ5dGUoVUVycm9y
Q29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYg
VV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBkaWdpdGFs
OiBnaWdhYml0LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZy
ZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJh
ZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVh
c3VyZVVuaXQgKmNyZWF0ZUdpZ2FiaXQoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8q
IFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgog
ICAgICAqIFJldHVybnMgdW5pdCBvZiBkaWdpdGFsOiBnaWdhYnl0ZS4KICAgICAgKiBDYWxsZXIg
b3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0
dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUg
SUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVHaWdhYnl0ZShV
RXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lm
bmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGRp
Z2l0YWw6IGtpbG9iaXQuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11
c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAq
IEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRp
YyBNZWFzdXJlVW5pdCAqY3JlYXRlS2lsb2JpdChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5k
aWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAg
LyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGRpZ2l0YWw6IGtpbG9ieXRlLgogICAgICAqIENh
bGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFt
IHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0
YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUtpbG9i
eXRlKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICov
Ci0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQg
b2YgZGlnaXRhbDogbWVnYWJpdC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBh
bmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0g
ICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAg
c3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVNZWdhYml0KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAK
LSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkK
ICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZGlnaXRhbDogbWVnYWJ5dGUuCiAgICAg
ICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBA
cGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAg
KiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRl
TWVnYWJ5dGUoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9B
UEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMg
dW5pdCBvZiBkaWdpdGFsOiB0ZXJhYml0LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZh
bHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29k
ZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8K
ICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZVRlcmFiaXQoVUVycm9yQ29kZSAmc3RhdHVz
KTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZU
X0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBkaWdpdGFsOiB0ZXJhYnl0ZS4K
ICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAor
ICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpj
cmVhdGVUZXJhYnl0ZShVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RS
QUZUX0FQSSAqLworICAgIC8qKgorICAgICAqIFJldHVybnMgdW5pdCBvZiBkdXJhdGlvbjogY2Vu
dHVyeS4KKyAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0
LgorICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCisgICAgICogQHN0YWJsZSBJ
Q1UgNTYKKyAgICAgKi8KKyAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUNlbnR1cnkoVUVy
cm9yQ29kZSAmc3RhdHVzKTsKKwogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBkdXJh
dGlvbjogZGF5LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZy
ZWUgaXQuCkBAIC00NjUsMTYgKzUxMiwxNCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0
OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVh
dGVIb3VyKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQog
ICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBkdXJhdGlvbjogbWljcm9zZWNvbmQuCiAg
ICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAg
KiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAg
ICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3Jl
YXRlTWljcm9zZWNvbmQoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9E
UkFGVF9BUEkgKi8KICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZHVyYXRpb246IG1p
bGxpc2Vjb25kLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZy
ZWUgaXQuCkBAIC00OTksMTYgKzU0NCwxNCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0
OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVh
dGVNb250aChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkK
ICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZHVyYXRpb246IG5hbm9zZWNvbmQuCiAg
ICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAg
KiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAg
ICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3Jl
YXRlTmFub3NlY29uZChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RS
QUZUX0FQSSAqLwogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBkdXJhdGlvbjogc2Vj
b25kLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQu
CkBAIC01MzMsMTU2ICs1NzYsMTI2IEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1
YmxpYyBVT2JqZWN0IHsKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZVll
YXIoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAg
LyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGVsZWN0cmljOiBhbXBlcmUuCiAgICAgICogQ2Fs
bGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0g
c3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3Rh
YmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlQW1wZXJl
KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0j
aWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Yg
ZWxlY3RyaWM6IG1pbGxpYW1wZXJlLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVl
IGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4K
LSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAg
ICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1pbGxpYW1wZXJlKFVFcnJvckNvZGUgJnN0YXR1
cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFG
VF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZWxlY3RyaWM6IG9obS4KICAg
ICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAq
IEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAg
ICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVh
dGVPaG0oVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkg
Ki8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5p
dCBvZiBlbGVjdHJpYzogdm9sdC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBh
bmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0g
ICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAg
c3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVWb2x0KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNl
bmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAg
ICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZW5lcmd5OiBjYWxvcmllLgogICAgICAqIENh
bGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFt
IHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0
YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUNhbG9y
aWUoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8K
LSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBv
ZiBlbmVyZ3k6IGZvb2RjYWxvcmllLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVl
IGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4K
LSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAg
ICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUZvb2RjYWxvcmllKFVFcnJvckNvZGUgJnN0YXR1
cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFG
VF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZW5lcmd5OiBqb3VsZS4KICAg
ICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAq
IEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAg
ICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVh
dGVKb3VsZShVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQ
SSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1
bml0IG9mIGVuZXJneToga2lsb2NhbG9yaWUuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQg
dmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBj
b2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAq
LwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlS2lsb2NhbG9yaWUoVUVycm9yQ29kZSAm
c3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURF
X0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBlbmVyZ3k6IGtpbG9q
b3VsZS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0
LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElD
VSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVV
bml0ICpjcmVhdGVLaWxvam91bGUoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVf
SElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAg
ICAqIFJldHVybnMgdW5pdCBvZiBlbmVyZ3k6IGtpbG93YXR0LWhvdXIuCiAgICAgICogQ2FsbGVy
IG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3Rh
dHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxl
IElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlS2lsb3dhdHRI
b3VyKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICov
Ci0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQg
b2YgZnJlcXVlbmN5OiBnaWdhaGVydHouCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFs
dWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2Rl
LgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwog
ICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlR2lnYWhlcnR6KFVFcnJvckNvZGUgJnN0YXR1
cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFG
VF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgZnJlcXVlbmN5OiBoZXJ0ei4K
ICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAor
ICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpj
cmVhdGVIZXJ0eihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZU
X0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJu
cyB1bml0IG9mIGZyZXF1ZW5jeToga2lsb2hlcnR6LgogICAgICAqIENhbGxlciBvd25zIHJldHVy
bmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJy
b3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAg
ICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUtpbG9oZXJ0eihVRXJyb3JDb2Rl
ICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJ
REVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGZyZXF1ZW5jeTog
bWVnYWhlcnR6LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZy
ZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJh
ZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVh
c3VyZVVuaXQgKmNyZWF0ZU1lZ2FoZXJ0eihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYg
LyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoq
CiAgICAgICogUmV0dXJucyB1bml0IG9mIGxlbmd0aDogYXN0cm9ub21pY2FsLXVuaXQuCiAgICAg
ICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBA
cGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAg
KiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRl
QXN0cm9ub21pY2FsVW5pdChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURF
X0RSQUZUX0FQSSAqLwogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBsZW5ndGg6IGNl
bnRpbWV0ZXIuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJl
ZSBpdC4KQEAgLTY5MSwyNiArNzA0LDIyIEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6
IHB1YmxpYyBVT2JqZWN0IHsKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0
ZUNlbnRpbWV0ZXIoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRf
QVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGxlbmd0aDogZGVjaW1ldGVyLgog
ICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAg
ICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0Cisg
ICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNy
ZWF0ZURlY2ltZXRlcihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RS
QUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0
dXJucyB1bml0IG9mIGxlbmd0aDogZmF0aG9tLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVk
IHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3Ig
Y29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAg
Ki8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUZhdGhvbShVRXJyb3JDb2RlICZzdGF0
dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogICAgIC8qKgogICAgICAqIFJl
dHVybnMgdW5pdCBvZiBsZW5ndGg6IGZvb3QuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQg
dmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTcxOSwxNiArNzI4LDE0IEBAIGNsYXNzIFVfSTE4
Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1YmxpYyBVT2JqZWN0IHsKICAgICAgKi8KICAgICBzdGF0aWMg
TWVhc3VyZVVuaXQgKmNyZWF0ZUZvb3QoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBV
X0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGxlbmd0aDog
ZnVybG9uZy4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVl
IGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0
IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1
cmVVbml0ICpjcmVhdGVGdXJsb25nKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBV
X0hJREVfRFJBRlRfQVBJICovCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGxlbmd0
aDogaW5jaC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVl
IGl0LgpAQCAtNzYxLDE2ICs3NjgsMTQgQEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5pdDog
cHVibGljIFVPYmplY3QgewogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRl
TWV0ZXIoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAg
ICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGxlbmd0aDogbWljcm9tZXRlci4KICAgICAg
KiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBw
YXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAq
IEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVN
aWNyb21ldGVyKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRf
QVBJICovCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGxlbmd0aDogbWlsZS4KICAg
ICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgpAQCAtNzc5
LDYgKzc4NCwxNCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVj
dCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVNaWxlKFVFcnJvckNv
ZGUgJnN0YXR1cyk7CiAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHVuaXQgb2YgbGVuZ3RoOiBt
aWxlLXNjYW5kaW5hdmlhbi4KKyAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQg
bXVzdCBmcmVlIGl0LgorICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCisgICAg
ICogQHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8KKyAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0
ZU1pbGVTY2FuZGluYXZpYW4oVUVycm9yQ29kZSAmc3RhdHVzKTsKKwogICAgIC8qKgogICAgICAq
IFJldHVybnMgdW5pdCBvZiBsZW5ndGg6IG1pbGxpbWV0ZXIuCiAgICAgICogQ2FsbGVyIG93bnMg
cmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTc4NywzNiArODAwLDMwIEBAIGNs
YXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1YmxpYyBVT2JqZWN0IHsKICAgICAgKi8KICAg
ICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1pbGxpbWV0ZXIoVUVycm9yQ29kZSAmc3RhdHVz
KTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1
bml0IG9mIGxlbmd0aDogbmFub21ldGVyLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZh
bHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29k
ZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8K
ICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU5hbm9tZXRlcihVRXJyb3JDb2RlICZzdGF0
dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJB
RlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIGxlbmd0aDogbmF1dGljYWwt
bWlsZS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0
LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElD
VSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVV
bml0ICpjcmVhdGVOYXV0aWNhbE1pbGUoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8q
IFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgog
ICAgICAqIFJldHVybnMgdW5pdCBvZiBsZW5ndGg6IHBhcnNlYy4KICAgICAgKiBDYWxsZXIgb3du
cyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMg
SUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNV
IDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVQYXJzZWMoVUVycm9y
Q29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KICAgICAvKioK
ICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgbGVuZ3RoOiBwaWNvbWV0ZXIuCiAgICAgICogQ2FsbGVy
IG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTgyNSw2ICs4MzIsMTYg
QEAgY2xhc3MgVV9JMThOX0FQSSBNZWFzdXJlVW5pdDogcHVibGljIFVPYmplY3QgewogICAgICAq
LwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlUGljb21ldGVyKFVFcnJvckNvZGUgJnN0
YXR1cyk7CiAKKyNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQorICAgIC8qKgorICAgICAqIFJldHVy
bnMgdW5pdCBvZiBsZW5ndGg6IHBvaW50LgorICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZh
bHVlIGFuZCBtdXN0IGZyZWUgaXQuCisgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29k
ZS4KKyAgICAgKiBAZHJhZnQgSUNVIDU5CisgICAgICovCisgICAgc3RhdGljIE1lYXN1cmVVbml0
ICpjcmVhdGVQb2ludChVRXJyb3JDb2RlICZzdGF0dXMpOworI2VuZGlmICAvKiBVX0hJREVfRFJB
RlRfQVBJICovCisKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgbGVuZ3RoOiB5YXJk
LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCkBA
IC04MzMsMjYgKzg1MCwyMiBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMg
VU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVZYXJkKFVF
cnJvckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgog
ICAgICAqIFJldHVybnMgdW5pdCBvZiBsaWdodDogbHV4LgogICAgICAqIENhbGxlciBvd25zIHJl
dHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1Ug
ZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQK
ICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUx1eChVRXJyb3JDb2RlICZz
dGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVf
RFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIG1hc3M6IGNhcmF0Lgog
ICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAg
ICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0Cisg
ICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNy
ZWF0ZUNhcmF0KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRf
QVBJICovCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIG1hc3M6IGdyYW0uCiAgICAg
ICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTg2OSwz
NiArODgyLDMwIEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1YmxpYyBVT2JqZWN0
IHsKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUtpbG9ncmFtKFVFcnJv
ckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAg
ICAqIFJldHVybnMgdW5pdCBvZiBtYXNzOiBtZXRyaWMtdG9uLgogICAgICAqIENhbGxlciBvd25z
IHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJ
Q1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1Ug
NTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1ldHJpY1RvbihVRXJy
b3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotI2lmbmRl
ZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIG1hc3M6
IG1pY3JvZ3JhbS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBm
cmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRy
YWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1l
YXN1cmVVbml0ICpjcmVhdGVNaWNyb2dyYW0oVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlm
IC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8q
KgogICAgICAqIFJldHVybnMgdW5pdCBvZiBtYXNzOiBtaWxsaWdyYW0uCiAgICAgICogQ2FsbGVy
IG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3Rh
dHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxl
IElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlTWlsbGlncmFt
KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAg
ICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIG1hc3M6IG91bmNlLgogICAgICAqIENhbGxl
ciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCkBAIC05MDcsMTYgKzkxNCwx
NCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAg
ICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVPdW5jZShVRXJyb3JDb2RlICZzdGF0
dXMpOwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5z
IHVuaXQgb2YgbWFzczogb3VuY2UtdHJveS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2
YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNv
ZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICov
CiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVPdW5jZVRyb3koVUVycm9yQ29kZSAmc3Rh
dHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KICAgICAvKioKICAgICAgKiBS
ZXR1cm5zIHVuaXQgb2YgbWFzczogcG91bmQuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQg
dmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAgLTkyNSwzNiArOTMwLDMwIEBAIGNsYXNzIFVfSTE4
Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1YmxpYyBVT2JqZWN0IHsKICAgICAgKi8KICAgICBzdGF0aWMg
TWVhc3VyZVVuaXQgKmNyZWF0ZVBvdW5kKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYg
VV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBtYXNzOiBz
dG9uZS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0
LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElD
VSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVV
bml0ICpjcmVhdGVTdG9uZShVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURF
X0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICog
UmV0dXJucyB1bml0IG9mIG1hc3M6IHRvbi4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2
YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNv
ZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICov
CiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVUb24oVUVycm9yQ29kZSAmc3RhdHVzKTsK
IAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQ
SQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBwb3dlcjogZ2lnYXdhdHQuCiAgICAg
ICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBA
cGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAg
KiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRl
R2lnYXdhdHQoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9B
UEkgKi8KICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgcG93ZXI6IGhvcnNlcG93ZXIu
CiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KQEAg
LTk3MSwyNiArOTcwLDIyIEBAIGNsYXNzIFVfSTE4Tl9BUEkgTWVhc3VyZVVuaXQ6IHB1YmxpYyBV
T2JqZWN0IHsKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUtpbG93YXR0
KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8q
KgogICAgICAqIFJldHVybnMgdW5pdCBvZiBwb3dlcjogbWVnYXdhdHQuCiAgICAgICogQ2FsbGVy
IG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3Rh
dHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxl
IElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlTWVnYXdhdHQo
VUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNp
Zm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiBw
b3dlcjogbWlsbGl3YXR0LgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBt
dXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAg
KiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0
aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1pbGxpd2F0dChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0j
ZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5p
dCBvZiBwb3dlcjogd2F0dC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQg
bXVzdCBmcmVlIGl0LgpAQCAtMTAyMyw0MyArMTAxOCwzNyBAQCBjbGFzcyBVX0kxOE5fQVBJIE1l
YXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVV
bml0ICpjcmVhdGVNaWxsaWJhcihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jaWZuZGVmIFVfSElE
RV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgcHJlc3N1cmU6IG1p
bGxpbWV0ZXItb2YtbWVyY3VyeS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBh
bmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0g
ICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAg
c3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVNaWxsaW1ldGVyT2ZNZXJjdXJ5KFVFcnJvckNvZGUg
JnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElE
RV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2YgcHJlc3N1cmU6IHBv
dW5kLXBlci1zcXVhcmUtaW5jaC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBh
bmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0g
ICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAg
c3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVQb3VuZFBlclNxdWFyZUluY2goVUVycm9yQ29kZSAm
c3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURF
X0RSQUZUX0FQSQogICAgIC8qKgotICAgICAqIFJldHVybnMgdW5pdCBvZiBwcm9wb3J0aW9uOiBr
YXJhdC4KKyAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygc3BlZWQ6IGtpbG9tZXRlci1wZXItaG91ci4K
ICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAor
ICAgICAqIEBzdGFibGUgSUNVIDUzCiAgICAgICovCi0gICAgc3RhdGljIE1lYXN1cmVVbml0ICpj
cmVhdGVLYXJhdChVRXJyb3JDb2RlICZzdGF0dXMpOworICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAq
Y3JlYXRlS2lsb21ldGVyUGVySG91cihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyog
VV9ISURFX0RSQUZUX0FQSSAqLwogICAgIC8qKgotICAgICAqIFJldHVybnMgdW5pdCBvZiBzcGVl
ZDoga2lsb21ldGVyLXBlci1ob3VyLgorICAgICAqIFJldHVybnMgdW5pdCBvZiBzcGVlZDoga25v
dC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0Lgog
ICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQHN0YWJsZSBJQ1Ug
NTMKKyAgICAgKiBAc3RhYmxlIElDVSA1NgogICAgICAqLwotICAgIHN0YXRpYyBNZWFzdXJlVW5p
dCAqY3JlYXRlS2lsb21ldGVyUGVySG91cihVRXJyb3JDb2RlICZzdGF0dXMpOworICAgIHN0YXRp
YyBNZWFzdXJlVW5pdCAqY3JlYXRlS25vdChVRXJyb3JDb2RlICZzdGF0dXMpOwogCiAgICAgLyoq
CiAgICAgICogUmV0dXJucyB1bml0IG9mIHNwZWVkOiBtZXRlci1wZXItc2Vjb25kLgpAQCAtMTA5
Myw3NiArMTA4Miw3MCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9i
amVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVGYWhyZW5oZWl0
KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQorICAgIC8q
KgorICAgICAqIFJldHVybnMgdW5pdCBvZiB0ZW1wZXJhdHVyZTogZ2VuZXJpYy4KKyAgICAgKiBD
YWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgorICAgICAqIEBwYXJh
bSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8K
KyAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUdlbmVyaWNUZW1wZXJhdHVyZShVRXJyb3JD
b2RlICZzdGF0dXMpOworCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIHRlbXBlcmF0
dXJlOiBrZWx2aW4uCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3Qg
ZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBk
cmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBN
ZWFzdXJlVW5pdCAqY3JlYXRlS2VsdmluKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAv
KiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioK
ICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBhY3JlLWZvb3QuCiAgICAgICogQ2FsbGVy
IG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3Rh
dHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxl
IElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlQWNyZUZvb3Qo
VUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNp
Zm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiB2
b2x1bWU6IGJ1c2hlbC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVz
dCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICog
QGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGlj
IE1lYXN1cmVVbml0ICpjcmVhdGVCdXNoZWwoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlm
IC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8q
KgogICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6IGNlbnRpbGl0ZXIuCiAgICAgICogQ2Fs
bGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KICAgICAgKiBAcGFyYW0g
c3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3Rh
YmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5pdCAqY3JlYXRlQ2VudGls
aXRlcihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAq
LwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0
IG9mIHZvbHVtZTogY3ViaWMtY2VudGltZXRlci4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5l
ZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9y
IGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAg
ICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVDdWJpY0NlbnRpbWV0ZXIoVUVycm9y
Q29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYg
VV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6
IGN1YmljLWZvb3QuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3Qg
ZnJlZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBk
cmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBN
ZWFzdXJlVW5pdCAqY3JlYXRlQ3ViaWNGb290KFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRp
ZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAv
KioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBjdWJpYy1pbmNoLgogICAgICAqIENh
bGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFt
IHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0
YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUN1Ymlj
SW5jaChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAq
LwogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6IGN1YmljLWtpbG9tZXRl
ci4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgpA
QCAtMTE3MSwxNiArMTE1NCwxNCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJs
aWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVDdWJp
Y0tpbG9tZXRlcihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9B
UEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBjdWJpYy1tZXRlci4K
ICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAor
ICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpj
cmVhdGVDdWJpY01ldGVyKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJREVf
RFJBRlRfQVBJICovCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIHZvbHVtZTogY3Vi
aWMtbWlsZS4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVl
IGl0LgpAQCAtMTE4OSw2NiArMTE3MCw3MCBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0
OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVh
dGVDdWJpY01pbGUoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRf
QVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9mIHZvbHVtZTogY3ViaWMteWFyZC4K
ICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAg
ICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAor
ICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpj
cmVhdGVDdWJpY1lhcmQoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9E
UkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJl
dHVybnMgdW5pdCBvZiB2b2x1bWU6IGN1cC4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2
YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNv
ZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICov
CiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVDdXAoVUVycm9yQ29kZSAmc3RhdHVzKTsK
IAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQ
SQorICAgIC8qKgorICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6IGN1cC1tZXRyaWMuCisg
ICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KKyAgICAg
KiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgorICAgICAqIEBzdGFibGUgSUNVIDU2Cisg
ICAgICovCisgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVDdXBNZXRyaWMoVUVycm9yQ29k
ZSAmc3RhdHVzKTsKKwogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6IGRl
Y2lsaXRlci4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVl
IGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0
IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1
cmVVbml0ICpjcmVhdGVEZWNpbGl0ZXIoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8q
IFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgog
ICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6IGZsdWlkLW91bmNlLgogICAgICAqIENhbGxl
ciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0
YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJs
ZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUZsdWlkT3Vu
Y2UoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8K
LSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBv
ZiB2b2x1bWU6IGdhbGxvbi4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQg
bXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAg
ICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3Rh
dGljIE1lYXN1cmVVbml0ICpjcmVhdGVHYWxsb24oVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2Vu
ZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQorICAg
IC8qKgorICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1bWU6IGdhbGxvbi1pbXBlcmlhbC4KKyAg
ICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgorICAgICAq
IEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1UgNTcKKyAg
ICAgKi8KKyAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZUdhbGxvbkltcGVyaWFsKFVFcnJv
ckNvZGUgJnN0YXR1cyk7CisKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1l
OiBoZWN0b2xpdGVyLgogICAgICAqIENhbGxlciBvd25zIHJldHVybmVkIHZhbHVlIGFuZCBtdXN0
IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJQ1UgZXJyb3IgY29kZS4KLSAgICAgKiBA
ZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBzdGF0aWMg
TWVhc3VyZVVuaXQgKmNyZWF0ZUhlY3RvbGl0ZXIoVUVycm9yQ29kZSAmc3RhdHVzKTsKIAotI2Vu
ZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQg
b2Ygdm9sdW1lOiBsaXRlci4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQg
bXVzdCBmcmVlIGl0LgpAQCAtMTI1Nyw2NiArMTI0Miw2MiBAQCBjbGFzcyBVX0kxOE5fQVBJIE1l
YXN1cmVVbml0OiBwdWJsaWMgVU9iamVjdCB7CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVV
bml0ICpjcmVhdGVMaXRlcihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jaWZuZGVmIFVfSElERV9E
UkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBtZWdhbGl0
ZXIuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4K
ICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFmdCBJQ1Ug
NTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFzdXJlVW5p
dCAqY3JlYXRlTWVnYWxpdGVyKFVFcnJvckNvZGUgJnN0YXR1cyk7CiAKLSNlbmRpZiAvKiBVX0hJ
REVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAg
KiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBtaWxsaWxpdGVyLgogICAgICAqIENhbGxlciBvd25z
IHJldHVybmVkIHZhbHVlIGFuZCBtdXN0IGZyZWUgaXQuCiAgICAgICogQHBhcmFtIHN0YXR1cyBJ
Q1UgZXJyb3IgY29kZS4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1Ug
NTQKICAgICAgKi8KICAgICBzdGF0aWMgTWVhc3VyZVVuaXQgKmNyZWF0ZU1pbGxpbGl0ZXIoVUVy
cm9yQ29kZSAmc3RhdHVzKTsKIAotI2VuZGlmIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLSNpZm5k
ZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIFJldHVybnMgdW5pdCBvZiB2b2x1
bWU6IHBpbnQuCiAgICAgICogQ2FsbGVyIG93bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJl
ZSBpdC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElDVSBlcnJvciBjb2RlLgotICAgICAqIEBkcmFm
dCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIHN0YXRpYyBNZWFz
dXJlVW5pdCAqY3JlYXRlUGludChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9I
SURFX0RSQUZUX0FQSSAqLwotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCisgICAgLyoqCisgICAg
ICogUmV0dXJucyB1bml0IG9mIHZvbHVtZTogcGludC1tZXRyaWMuCisgICAgICogQ2FsbGVyIG93
bnMgcmV0dXJuZWQgdmFsdWUgYW5kIG11c3QgZnJlZSBpdC4KKyAgICAgKiBAcGFyYW0gc3RhdHVz
IElDVSBlcnJvciBjb2RlLgorICAgICAqIEBzdGFibGUgSUNVIDU2CisgICAgICovCisgICAgc3Rh
dGljIE1lYXN1cmVVbml0ICpjcmVhdGVQaW50TWV0cmljKFVFcnJvckNvZGUgJnN0YXR1cyk7CisK
ICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiBxdWFydC4KICAgICAgKiBD
YWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJh
bSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBz
dGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVRdWFy
dChVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwot
I2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB1bml0IG9m
IHZvbHVtZTogdGFibGVzcG9vbi4KICAgICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBh
bmQgbXVzdCBmcmVlIGl0LgogICAgICAqIEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0g
ICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAg
c3RhdGljIE1lYXN1cmVVbml0ICpjcmVhdGVUYWJsZXNwb29uKFVFcnJvckNvZGUgJnN0YXR1cyk7
CiAKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0jaWZuZGVmIFVfSElERV9EUkFGVF9B
UEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHVuaXQgb2Ygdm9sdW1lOiB0ZWFzcG9vbi4KICAg
ICAgKiBDYWxsZXIgb3ducyByZXR1cm5lZCB2YWx1ZSBhbmQgbXVzdCBmcmVlIGl0LgogICAgICAq
IEBwYXJhbSBzdGF0dXMgSUNVIGVycm9yIGNvZGUuCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAg
ICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgc3RhdGljIE1lYXN1cmVVbml0ICpjcmVh
dGVUZWFzcG9vbihVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jZW5kaWYgLyogVV9ISURFX0RSQUZU
X0FQSSAqLwogCiAvLyBFbmQgZ2VuZXJhdGVkIGNyZWF0ZVhYWCBtZXRob2RzCiAKQEAgLTEzMzUs
NiArMTMxNiwxMiBAQCBjbGFzcyBVX0kxOE5fQVBJIE1lYXN1cmVVbml0OiBwdWJsaWMgVU9iamVj
dCB7CiAgICAgICovCiAgICAgdm9pZCBpbml0Q3VycmVuY3koY29uc3QgY2hhciAqaXNvQ3VycmVu
Y3kpOwogCisgICAgLyoqCisgICAgICogRm9yIElDVSB1c2Ugb25seS4KKyAgICAgKiBAaW50ZXJu
YWwKKyAgICAgKi8KKyAgICB2b2lkIGluaXROb1VuaXQoY29uc3QgY2hhciAqc3VidHlwZSk7CisK
ICNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9tZWFzdXJlLmggYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL21lYXN1cmUuaAppbmRleCBjMGY4OGJiZGFhMTM0ZDhjM2I5YzdjNmFkZmYzMjgzMzFkNTE4
ZTcwLi45OWI3ZDdhMTQzOTk0MWFmNTAyODFkOWVhZjJlOWU5Y2Q5MDE4OTcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL21lYXN1cmUuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL21lYXN1cmUuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBV
bmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRw
Oi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBD
b3B5cmlnaHQgKGMpIDIwMDQtMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9tZXNzYWdlcGF0dGVybi5oIGIvU291
cmNlL1dURi9pY3UvdW5pY29kZS9tZXNzYWdlcGF0dGVybi5oCmluZGV4IGY4YjhkZmI0M2YzMTQ5
Mjk2Y2UxYzgwNjUxMWFmODA4N2FlMjI5MWUuLmYyOGFkYWZlZTBkMmFjZDQ4MWZmNDBiYjY4NDg1
NWI2OGY3YjJjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbWVzc2FnZXBh
dHRlcm4uaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL21lc3NhZ2VwYXR0ZXJuLmgKQEAg
LTEsMTAgKzEsMTIgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBv
dGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdo
dCAoQykgMjAxMS0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29y
cG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgbWVzc2FnZXBhdHRlcm4uaAotKiAgIGVuY29kaW5n
OiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChu
b3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL21zZ2ZtdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9tc2dmbXQuaAppbmRl
eCA1ZGU5MWU0MWZmNzBjMzFlNWIxZmVmMzNjNGJhMjIxZWJhMmY2YjQyLi5mZWY4MDEwNzc0N2Jm
ODQ3M2YzZGJjY2FjMzMxYjIxY2ZmMjk4ZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL21zZ2ZtdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbXNnZm10LmgKQEAg
LTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3Ro
ZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9j
b3B5cmlnaHQuaHRtbAogLyoKICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTMsIEludGVybmF0aW9u
YWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCiAqIG90aGVycy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KQEAgLTkzNyw3ICs5MzksNyBAQCBwcml2YXRlOgogICAgICAqIEByZXR1cm4g
dGhlIGluZGV4IG9mIHRoZSBsaXN0IHdoaWNoIG1hdGNoZXMgdGhlIGtleXdvcmQgcy4KICAgICAg
Ki8KICAgICBzdGF0aWMgaW50MzJfdCBmaW5kS2V5d29yZCggY29uc3QgVW5pY29kZVN0cmluZyYg
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKiBjb25zdCAq
bGlzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90ICog
Y29uc3QgKmxpc3QpOwogCiAgICAgLyoqCiAgICAgICogVGhpbiB3cmFwcGVyIGFyb3VuZCB0aGUg
Zm9ybWF0KC4uLiBBcHBlbmRhYmxlV3JhcHBlciAuLi4pIHZhcmlhbnQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL25vcm1hbGl6ZXIyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL25vcm1hbGl6ZXIyLmgKaW5kZXggYzAzY2JhMzllOTg3YTY2NjkyOTliNWIyNTY3MzBlN2Zl
YTRjMmU3YS4uOGE2ZDcxMzgwMjFiNTY2YzhhOTNkODI3YTkzOTg4YmQyNWRjODQ5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9ub3JtYWxpemVyMi5oCisrKyBiL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvbm9ybWFsaXplcjIuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgogKgpAQCAtNiw3ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKICogICBmaWxlIG5hbWU6ICBub3JtYWxpemVyMi5oCi0qICAgZW5jb2Rpbmc6ICAgVVMt
QVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2Vk
KQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTI2LDEyICsyOCwxNSBAQAogCiAjaWYgIVVDT05G
SUdfTk9fTk9STUFMSVpBVElPTgogCisjaW5jbHVkZSAidW5pY29kZS9zdHJpbmdwaWVjZS5oIgog
I2luY2x1ZGUgInVuaWNvZGUvdW5pc2V0LmgiCiAjaW5jbHVkZSAidW5pY29kZS91bmlzdHIuaCIK
ICNpbmNsdWRlICJ1bmljb2RlL3Vub3JtMi5oIgogCiBVX05BTUVTUEFDRV9CRUdJTgogCitjbGFz
cyBCeXRlU2luazsKKwogLyoqCiAgKiBVbmljb2RlIG5vcm1hbGl6YXRpb24gZnVuY3Rpb25hbGl0
eSBmb3Igc3RhbmRhcmQgVW5pY29kZSBub3JtYWxpemF0aW9uIG9yCiAgKiBmb3IgdXNpbmcgY3Vz
dG9tIG1hcHBpbmcgdGFibGVzLgpAQCAtMjEzLDYgKzIxOCwzNSBAQCBwdWJsaWM6CiAgICAgbm9y
bWFsaXplKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNyYywKICAgICAgICAgICAgICAgVW5pY29kZVN0
cmluZyAmZGVzdCwKICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdCA9
IDA7CisKKyAgICAvKioKKyAgICAgKiBOb3JtYWxpemVzIGEgVVRGLTggc3RyaW5nIGFuZCBvcHRp
b25hbGx5IHJlY29yZHMgaG93IHNvdXJjZSBzdWJzdHJpbmdzCisgICAgICogcmVsYXRlIHRvIGNo
YW5nZWQgYW5kIHVuY2hhbmdlZCByZXN1bHQgc3Vic3RyaW5ncy4KKyAgICAgKgorICAgICAqIEN1
cnJlbnRseSBpbXBsZW1lbnRlZCBjb21wbGV0ZWx5IG9ubHkgZm9yICJjb21wb3NlIiBtb2RlcywK
KyAgICAgKiBzdWNoIGFzIGZvciBORkMsIE5GS0MsIGFuZCBORktDX0Nhc2Vmb2xkCisgICAgICog
KFVOT1JNMl9DT01QT1NFIGFuZCBVTk9STTJfQ09NUE9TRV9DT05USUdVT1VTKS4KKyAgICAgKiBP
dGhlcndpc2UgY3VycmVudGx5IGNvbnZlcnRzIHRvICYgZnJvbSBVVEYtMTYgYW5kIGRvZXMgbm90
IHN1cHBvcnQgZWRpdHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3B0aW9ucyAgIE9wdGlvbnMg
Yml0IHNldCwgdXN1YWxseSAwLiBTZWUgVV9PTUlUX1VOQ0hBTkdFRF9URVhUIGFuZCBVX0VESVRT
X05PX1JFU0VULgorICAgICAqIEBwYXJhbSBzcmMgICAgICAgU291cmNlIFVURi04IHN0cmluZy4K
KyAgICAgKiBAcGFyYW0gc2luayAgICAgIEEgQnl0ZVNpbmsgdG8gd2hpY2ggdGhlIG5vcm1hbGl6
ZWQgVVRGLTggcmVzdWx0IHN0cmluZyBpcyB3cml0dGVuLgorICAgICAqICAgICAgICAgICAgICAg
ICAgc2luay5GbHVzaCgpIGlzIGNhbGxlZCBhdCB0aGUgZW5kLgorICAgICAqIEBwYXJhbSBlZGl0
cyAgICAgUmVjb3JkcyBlZGl0cyBmb3IgaW5kZXggbWFwcGluZywgd29ya2luZyB3aXRoIHN0eWxl
ZCB0ZXh0LAorICAgICAqICAgICAgICAgICAgICAgICAgYW5kIGdldHRpbmcgb25seSBjaGFuZ2Vz
IChpZiBhbnkpLgorICAgICAqICAgICAgICAgICAgICAgICAgVGhlIEVkaXRzIGNvbnRlbnRzIGlz
IHVuZGVmaW5lZCBpZiBhbnkgZXJyb3Igb2NjdXJzLgorICAgICAqICAgICAgICAgICAgICAgICAg
VGhpcyBmdW5jdGlvbiBjYWxscyBlZGl0cy0+cmVzZXQoKSBmaXJzdCB1bmxlc3MKKyAgICAgKiAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMgaW5jbHVkZXMgVV9FRElUU19OT19SRVNFVC4gZWRpdHMg
Y2FuIGJlIG51bGxwdHIuCisgICAgICogQHBhcmFtIGVycm9yQ29kZSBTdGFuZGFyZCBJQ1UgZXJy
b3IgY29kZS4gSXRzIGlucHV0IHZhbHVlIG11c3QKKyAgICAgKiAgICAgICAgICAgICAgICAgIHBh
c3MgdGhlIFVfU1VDQ0VTUygpIHRlc3QsIG9yIGVsc2UgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAg
ICAgKiAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZWx5LiBDaGVjayBmb3IgVV9GQUlMVVJFKCkg
b24gb3V0cHV0IG9yIHVzZSB3aXRoCisgICAgICogICAgICAgICAgICAgICAgICBmdW5jdGlvbiBj
aGFpbmluZy4gKFNlZSBVc2VyIEd1aWRlIGZvciBkZXRhaWxzLikKKyAgICAgKiBAZHJhZnQgSUNV
IDYwCisgICAgICovCisgICAgdmlydHVhbCB2b2lkCisgICAgbm9ybWFsaXplVVRGOCh1aW50MzJf
dCBvcHRpb25zLCBTdHJpbmdQaWVjZSBzcmMsIEJ5dGVTaW5rICZzaW5rLAorICAgICAgICAgICAg
ICAgICAgRWRpdHMgKmVkaXRzLCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OworCiAgICAg
LyoqCiAgICAgICogQXBwZW5kcyB0aGUgbm9ybWFsaXplZCBmb3JtIG9mIHRoZSBzZWNvbmQgc3Ry
aW5nIHRvIHRoZSBmaXJzdCBzdHJpbmcKICAgICAgKiAobWVyZ2luZyB0aGVtIGF0IHRoZSBib3Vu
ZGFyeSkgYW5kIHJldHVybnMgdGhlIGZpcnN0IHN0cmluZy4KQEAgLTI4MCw3ICszMTQsNyBAQCBw
dWJsaWM6CiAgICAgICoKICAgICAgKiBXaGVuIHVzZWQgb24gYSBzdGFuZGFyZCBORkMgTm9ybWFs
aXplcjIgaW5zdGFuY2UsCiAgICAgICogaXQgcmV0dXJucyB0aGUgRGVjb21wb3NpdGlvbl9NYXBw
aW5nIG9ubHkgaWYgdGhlIERlY29tcG9zaXRpb25fVHlwZSAoZHQpIGlzIENhbm9uaWNhbCAoQ2Fu
KTsKLSAgICAgKiBpbiB0aGlzIGNhc2UsIHRoZSByZXN1bHQgY29udGFpbnMgZWl0aGVyIG9uZSBv
ciB0d28gY29kZSBwb2ludHMgKD0xLi40IFVDaGFycykuCisgICAgICogaW4gdGhpcyBjYXNlLCB0
aGUgcmVzdWx0IGNvbnRhaW5zIGVpdGhlciBvbmUgb3IgdHdvIGNvZGUgcG9pbnRzICg9MS4uNCBj
aGFyMTZfdHMpLgogICAgICAqCiAgICAgICogVGhpcyBmdW5jdGlvbiBpcyBpbmRlcGVuZGVudCBv
ZiB0aGUgbW9kZSBvZiB0aGUgTm9ybWFsaXplcjIuCiAgICAgICogVGhlIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24gcmV0dXJucyBGQUxTRS4KQEAgLTMzOCw2ICszNzIsMzAgQEAgcHVibGljOgogICAg
ICAqLwogICAgIHZpcnR1YWwgVUJvb2wKICAgICBpc05vcm1hbGl6ZWQoY29uc3QgVW5pY29kZVN0
cmluZyAmcywgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdCA9IDA7CisgICAgLyoqCisgICAg
ICogVGVzdHMgaWYgdGhlIFVURi04IHN0cmluZyBpcyBub3JtYWxpemVkLgorICAgICAqIEludGVy
bmFsbHksIGluIGNhc2VzIHdoZXJlIHRoZSBxdWlja0NoZWNrKCkgbWV0aG9kIHdvdWxkIHJldHVy
biAibWF5YmUiCisgICAgICogKHdoaWNoIGlzIG9ubHkgcG9zc2libGUgZm9yIHRoZSB0d28gQ09N
UE9TRSBtb2RlcykgdGhpcyBtZXRob2QKKyAgICAgKiByZXNvbHZlcyB0byAieWVzIiBvciAibm8i
IHRvIHByb3ZpZGUgYSBkZWZpbml0aXZlIHJlc3VsdCwKKyAgICAgKiBhdCB0aGUgY29zdCBvZiBk
b2luZyBtb3JlIHdvcmsgaW4gdGhvc2UgY2FzZXMuCisgICAgICoKKyAgICAgKiBUaGlzIHdvcmtz
IGZvciBhbGwgbm9ybWFsaXphdGlvbiBtb2RlcywKKyAgICAgKiBidXQgaXQgaXMgY3VycmVudGx5
IG9wdGltaXplZCBmb3IgVVRGLTggb25seSBmb3IgImNvbXBvc2UiIG1vZGVzLAorICAgICAqIHN1
Y2ggYXMgZm9yIE5GQywgTkZLQywgYW5kIE5GS0NfQ2FzZWZvbGQKKyAgICAgKiAoVU5PUk0yX0NP
TVBPU0UgYW5kIFVOT1JNMl9DT01QT1NFX0NPTlRJR1VPVVMpLgorICAgICAqIEZvciBvdGhlciBt
b2RlcyBpdCBjdXJyZW50bHkgY29udmVydHMgdG8gVVRGLTE2IGFuZCBjYWxscyBpc05vcm1hbGl6
ZWQoKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzIFVURi04IGlucHV0IHN0cmluZworICAgICAq
IEBwYXJhbSBlcnJvckNvZGUgU3RhbmRhcmQgSUNVIGVycm9yIGNvZGUuIEl0cyBpbnB1dCB2YWx1
ZSBtdXN0CisgICAgICogICAgICAgICAgICAgICAgICBwYXNzIHRoZSBVX1NVQ0NFU1MoKSB0ZXN0
LCBvciBlbHNlIHRoZSBmdW5jdGlvbiByZXR1cm5zCisgICAgICogICAgICAgICAgICAgICAgICBp
bW1lZGlhdGVseS4gQ2hlY2sgZm9yIFVfRkFJTFVSRSgpIG9uIG91dHB1dCBvciB1c2Ugd2l0aAor
ICAgICAqICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hhaW5pbmcuIChTZWUgVXNlciBHdWlk
ZSBmb3IgZGV0YWlscy4pCisgICAgICogQHJldHVybiBUUlVFIGlmIHMgaXMgbm9ybWFsaXplZAor
ICAgICAqIEBkcmFmdCBJQ1UgNjAKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVCb29sCisgICAgaXNO
b3JtYWxpemVkVVRGOChTdHJpbmdQaWVjZSBzLCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0
OworCiAKICAgICAvKioKICAgICAgKiBUZXN0cyBpZiB0aGUgc3RyaW5nIGlzIG5vcm1hbGl6ZWQu
CkBAIC00NzcsNyArNTM1LDM2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcg
JgogICAgIG5vcm1hbGl6ZShjb25zdCBVbmljb2RlU3RyaW5nICZzcmMsCiAgICAgICAgICAgICAg
IFVuaWNvZGVTdHJpbmcgJmRlc3QsCi0gICAgICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29k
ZSkgY29uc3Q7CisgICAgICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3QgVV9P
VkVSUklERTsKKworICAgIC8qKgorICAgICAqIE5vcm1hbGl6ZXMgYSBVVEYtOCBzdHJpbmcgYW5k
IG9wdGlvbmFsbHkgcmVjb3JkcyBob3cgc291cmNlIHN1YnN0cmluZ3MKKyAgICAgKiByZWxhdGUg
dG8gY2hhbmdlZCBhbmQgdW5jaGFuZ2VkIHJlc3VsdCBzdWJzdHJpbmdzLgorICAgICAqCisgICAg
ICogQ3VycmVudGx5IGltcGxlbWVudGVkIGNvbXBsZXRlbHkgb25seSBmb3IgImNvbXBvc2UiIG1v
ZGVzLAorICAgICAqIHN1Y2ggYXMgZm9yIE5GQywgTkZLQywgYW5kIE5GS0NfQ2FzZWZvbGQKKyAg
ICAgKiAoVU5PUk0yX0NPTVBPU0UgYW5kIFVOT1JNMl9DT01QT1NFX0NPTlRJR1VPVVMpLgorICAg
ICAqIE90aGVyd2lzZSBjdXJyZW50bHkgY29udmVydHMgdG8gJiBmcm9tIFVURi0xNiBhbmQgZG9l
cyBub3Qgc3VwcG9ydCBlZGl0cy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvcHRpb25zICAgT3B0
aW9ucyBiaXQgc2V0LCB1c3VhbGx5IDAuIFNlZSBVX09NSVRfVU5DSEFOR0VEX1RFWFQgYW5kIFVf
RURJVFNfTk9fUkVTRVQuCisgICAgICogQHBhcmFtIHNyYyAgICAgICBTb3VyY2UgVVRGLTggc3Ry
aW5nLgorICAgICAqIEBwYXJhbSBzaW5rICAgICAgQSBCeXRlU2luayB0byB3aGljaCB0aGUgbm9y
bWFsaXplZCBVVEYtOCByZXN1bHQgc3RyaW5nIGlzIHdyaXR0ZW4uCisgICAgICogICAgICAgICAg
ICAgICAgICBzaW5rLkZsdXNoKCkgaXMgY2FsbGVkIGF0IHRoZSBlbmQuCisgICAgICogQHBhcmFt
IGVkaXRzICAgICBSZWNvcmRzIGVkaXRzIGZvciBpbmRleCBtYXBwaW5nLCB3b3JraW5nIHdpdGgg
c3R5bGVkIHRleHQsCisgICAgICogICAgICAgICAgICAgICAgICBhbmQgZ2V0dGluZyBvbmx5IGNo
YW5nZXMgKGlmIGFueSkuCisgICAgICogICAgICAgICAgICAgICAgICBUaGUgRWRpdHMgY29udGVu
dHMgaXMgdW5kZWZpbmVkIGlmIGFueSBlcnJvciBvY2N1cnMuCisgICAgICogICAgICAgICAgICAg
ICAgICBUaGlzIGZ1bmN0aW9uIGNhbGxzIGVkaXRzLT5yZXNldCgpIGZpcnN0IHVubGVzcworICAg
ICAqICAgICAgICAgICAgICAgICAgb3B0aW9ucyBpbmNsdWRlcyBVX0VESVRTX05PX1JFU0VULiBl
ZGl0cyBjYW4gYmUgbnVsbHB0ci4KKyAgICAgKiBAcGFyYW0gZXJyb3JDb2RlIFN0YW5kYXJkIElD
VSBlcnJvciBjb2RlLiBJdHMgaW5wdXQgdmFsdWUgbXVzdAorICAgICAqICAgICAgICAgICAgICAg
ICAgcGFzcyB0aGUgVV9TVUNDRVNTKCkgdGVzdCwgb3IgZWxzZSB0aGUgZnVuY3Rpb24gcmV0dXJu
cworICAgICAqICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlbHkuIENoZWNrIGZvciBVX0ZBSUxV
UkUoKSBvbiBvdXRwdXQgb3IgdXNlIHdpdGgKKyAgICAgKiAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIGNoYWluaW5nLiAoU2VlIFVzZXIgR3VpZGUgZm9yIGRldGFpbHMuKQorICAgICAqIEBkcmFm
dCBJQ1UgNjAKKyAgICAgKi8KKyAgICB2aXJ0dWFsIHZvaWQKKyAgICBub3JtYWxpemVVVEY4KHVp
bnQzMl90IG9wdGlvbnMsIFN0cmluZ1BpZWNlIHNyYywgQnl0ZVNpbmsgJnNpbmssCisgICAgICAg
ICAgICAgICAgICBFZGl0cyAqZWRpdHMsIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3QgVV9P
VkVSUklERTsKKwogICAgIC8qKgogICAgICAqIEFwcGVuZHMgdGhlIG5vcm1hbGl6ZWQgZm9ybSBv
ZiB0aGUgc2Vjb25kIHN0cmluZyB0byB0aGUgZmlyc3Qgc3RyaW5nCiAgICAgICogKG1lcmdpbmcg
dGhlbSBhdCB0aGUgYm91bmRhcnkpIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBzdHJpbmcuCkBAIC00
OTUsNyArNTgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVW5pY29kZVN0cmluZyAmCiAgICAg
bm9ybWFsaXplU2Vjb25kQW5kQXBwZW5kKFVuaWNvZGVTdHJpbmcgJmZpcnN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmljb2RlU3RyaW5nICZzZWNvbmQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3Q7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3QgVV9P
VkVSUklERTsKICAgICAvKioKICAgICAgKiBBcHBlbmRzIHRoZSBzZWNvbmQgc3RyaW5nIHRvIHRo
ZSBmaXJzdCBzdHJpbmcKICAgICAgKiAobWVyZ2luZyB0aGVtIGF0IHRoZSBib3VuZGFyeSkgYW5k
IHJldHVybnMgdGhlIGZpcnN0IHN0cmluZy4KQEAgLTUxMyw3ICs2MDAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBVbmljb2RlU3RyaW5nICYKICAgICBhcHBlbmQoVW5pY29kZVN0cmluZyAmZmly
c3QsCiAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNlY29uZCwKLSAgICAgICAgICAg
VUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKKyAgICAgICAgICAgVUVycm9yQ29kZSAmZXJy
b3JDb2RlKSBjb25zdCBVX09WRVJSSURFOwogCiAgICAgLyoqCiAgICAgICogR2V0cyB0aGUgZGVj
b21wb3NpdGlvbiBtYXBwaW5nIG9mIGMuCkBAIC01MjcsNyArNjE0LDcgQEAgcHVibGljOgogICAg
ICAqIEBzdGFibGUgSUNVIDQuNgogICAgICAqLwogICAgIHZpcnR1YWwgVUJvb2wKLSAgICBnZXRE
ZWNvbXBvc2l0aW9uKFVDaGFyMzIgYywgVW5pY29kZVN0cmluZyAmZGVjb21wb3NpdGlvbikgY29u
c3Q7CisgICAgZ2V0RGVjb21wb3NpdGlvbihVQ2hhcjMyIGMsIFVuaWNvZGVTdHJpbmcgJmRlY29t
cG9zaXRpb24pIGNvbnN0IFVfT1ZFUlJJREU7CiAKICAgICAvKioKICAgICAgKiBHZXRzIHRoZSBy
YXcgZGVjb21wb3NpdGlvbiBtYXBwaW5nIG9mIGMuCkBAIC01NDEsNyArNjI4LDcgQEAgcHVibGlj
OgogICAgICAqIEBzdGFibGUgSUNVIDQ5CiAgICAgICovCiAgICAgdmlydHVhbCBVQm9vbAotICAg
IGdldFJhd0RlY29tcG9zaXRpb24oVUNoYXIzMiBjLCBVbmljb2RlU3RyaW5nICZkZWNvbXBvc2l0
aW9uKSBjb25zdDsKKyAgICBnZXRSYXdEZWNvbXBvc2l0aW9uKFVDaGFyMzIgYywgVW5pY29kZVN0
cmluZyAmZGVjb21wb3NpdGlvbikgY29uc3QgVV9PVkVSUklERTsKIAogICAgIC8qKgogICAgICAq
IFBlcmZvcm1zIHBhaXJ3aXNlIGNvbXBvc2l0aW9uIG9mIGEgJiBiIGFuZCByZXR1cm5zIHRoZSBj
b21wb3NpdGUgaWYgdGhlcmUgaXMgb25lLgpAQCAtNTU0LDcgKzY0MSw3IEBAIHB1YmxpYzoKICAg
ICAgKiBAc3RhYmxlIElDVSA0OQogICAgICAqLwogICAgIHZpcnR1YWwgVUNoYXIzMgotICAgIGNv
bXBvc2VQYWlyKFVDaGFyMzIgYSwgVUNoYXIzMiBiKSBjb25zdDsKKyAgICBjb21wb3NlUGFpcihV
Q2hhcjMyIGEsIFVDaGFyMzIgYikgY29uc3QgVV9PVkVSUklERTsKIAogICAgIC8qKgogICAgICAq
IEdldHMgdGhlIGNvbWJpbmluZyBjbGFzcyBvZiBjLgpAQCAtNTY1LDcgKzY1Miw3IEBAIHB1Ymxp
YzoKICAgICAgKiBAc3RhYmxlIElDVSA0OQogICAgICAqLwogICAgIHZpcnR1YWwgdWludDhfdAot
ICAgIGdldENvbWJpbmluZ0NsYXNzKFVDaGFyMzIgYykgY29uc3Q7CisgICAgZ2V0Q29tYmluaW5n
Q2xhc3MoVUNoYXIzMiBjKSBjb25zdCBVX09WRVJSSURFOwogCiAgICAgLyoqCiAgICAgICogVGVz
dHMgaWYgdGhlIHN0cmluZyBpcyBub3JtYWxpemVkLgpAQCAtNTc5LDcgKzY2NiwzMCBAQCBwdWJs
aWM6CiAgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAgICovCiAgICAgdmlydHVhbCBVQm9vbAot
ICAgIGlzTm9ybWFsaXplZChjb25zdCBVbmljb2RlU3RyaW5nICZzLCBVRXJyb3JDb2RlICZlcnJv
ckNvZGUpIGNvbnN0OworICAgIGlzTm9ybWFsaXplZChjb25zdCBVbmljb2RlU3RyaW5nICZzLCBV
RXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0IFVfT1ZFUlJJREU7CisgICAgLyoqCisgICAgICog
VGVzdHMgaWYgdGhlIFVURi04IHN0cmluZyBpcyBub3JtYWxpemVkLgorICAgICAqIEludGVybmFs
bHksIGluIGNhc2VzIHdoZXJlIHRoZSBxdWlja0NoZWNrKCkgbWV0aG9kIHdvdWxkIHJldHVybiAi
bWF5YmUiCisgICAgICogKHdoaWNoIGlzIG9ubHkgcG9zc2libGUgZm9yIHRoZSB0d28gQ09NUE9T
RSBtb2RlcykgdGhpcyBtZXRob2QKKyAgICAgKiByZXNvbHZlcyB0byAieWVzIiBvciAibm8iIHRv
IHByb3ZpZGUgYSBkZWZpbml0aXZlIHJlc3VsdCwKKyAgICAgKiBhdCB0aGUgY29zdCBvZiBkb2lu
ZyBtb3JlIHdvcmsgaW4gdGhvc2UgY2FzZXMuCisgICAgICoKKyAgICAgKiBUaGlzIHdvcmtzIGZv
ciBhbGwgbm9ybWFsaXphdGlvbiBtb2RlcywKKyAgICAgKiBidXQgaXQgaXMgY3VycmVudGx5IG9w
dGltaXplZCBmb3IgVVRGLTggb25seSBmb3IgImNvbXBvc2UiIG1vZGVzLAorICAgICAqIHN1Y2gg
YXMgZm9yIE5GQywgTkZLQywgYW5kIE5GS0NfQ2FzZWZvbGQKKyAgICAgKiAoVU5PUk0yX0NPTVBP
U0UgYW5kIFVOT1JNMl9DT01QT1NFX0NPTlRJR1VPVVMpLgorICAgICAqIEZvciBvdGhlciBtb2Rl
cyBpdCBjdXJyZW50bHkgY29udmVydHMgdG8gVVRGLTE2IGFuZCBjYWxscyBpc05vcm1hbGl6ZWQo
KS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzIFVURi04IGlucHV0IHN0cmluZworICAgICAqIEBw
YXJhbSBlcnJvckNvZGUgU3RhbmRhcmQgSUNVIGVycm9yIGNvZGUuIEl0cyBpbnB1dCB2YWx1ZSBt
dXN0CisgICAgICogICAgICAgICAgICAgICAgICBwYXNzIHRoZSBVX1NVQ0NFU1MoKSB0ZXN0LCBv
ciBlbHNlIHRoZSBmdW5jdGlvbiByZXR1cm5zCisgICAgICogICAgICAgICAgICAgICAgICBpbW1l
ZGlhdGVseS4gQ2hlY2sgZm9yIFVfRkFJTFVSRSgpIG9uIG91dHB1dCBvciB1c2Ugd2l0aAorICAg
ICAqICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hhaW5pbmcuIChTZWUgVXNlciBHdWlkZSBm
b3IgZGV0YWlscy4pCisgICAgICogQHJldHVybiBUUlVFIGlmIHMgaXMgbm9ybWFsaXplZAorICAg
ICAqIEBkcmFmdCBJQ1UgNjAKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVCb29sCisgICAgaXNOb3Jt
YWxpemVkVVRGOChTdHJpbmdQaWVjZSBzLCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0IFVf
T1ZFUlJJREU7CiAgICAgLyoqCiAgICAgICogVGVzdHMgaWYgdGhlIHN0cmluZyBpcyBub3JtYWxp
emVkLgogICAgICAqIEZvciBkZXRhaWxzIHNlZSB0aGUgTm9ybWFsaXplcjIgYmFzZSBjbGFzcyBk
b2N1bWVudGF0aW9uLgpAQCAtNTkyLDcgKzcwMiw3IEBAIHB1YmxpYzoKICAgICAgKiBAc3RhYmxl
IElDVSA0LjQKICAgICAgKi8KICAgICB2aXJ0dWFsIFVOb3JtYWxpemF0aW9uQ2hlY2tSZXN1bHQK
LSAgICBxdWlja0NoZWNrKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnMsIFVFcnJvckNvZGUgJmVycm9y
Q29kZSkgY29uc3Q7CisgICAgcXVpY2tDaGVjayhjb25zdCBVbmljb2RlU3RyaW5nICZzLCBVRXJy
b3JDb2RlICZlcnJvckNvZGUpIGNvbnN0IFVfT1ZFUlJJREU7CiAgICAgLyoqCiAgICAgICogUmV0
dXJucyB0aGUgZW5kIG9mIHRoZSBub3JtYWxpemVkIHN1YnN0cmluZyBvZiB0aGUgaW5wdXQgc3Ry
aW5nLgogICAgICAqIEZvciBkZXRhaWxzIHNlZSB0aGUgTm9ybWFsaXplcjIgYmFzZSBjbGFzcyBk
b2N1bWVudGF0aW9uLgpAQCAtNjA1LDcgKzcxNSw3IEBAIHB1YmxpYzoKICAgICAgKiBAc3RhYmxl
IElDVSA0LjQKICAgICAgKi8KICAgICB2aXJ0dWFsIGludDMyX3QKLSAgICBzcGFuUXVpY2tDaGVj
a1llcyhjb25zdCBVbmljb2RlU3RyaW5nICZzLCBVRXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0
OworICAgIHNwYW5RdWlja0NoZWNrWWVzKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnMsIFVFcnJvckNv
ZGUgJmVycm9yQ29kZSkgY29uc3QgVV9PVkVSUklERTsKIAogICAgIC8qKgogICAgICAqIFRlc3Rz
IGlmIHRoZSBjaGFyYWN0ZXIgYWx3YXlzIGhhcyBhIG5vcm1hbGl6YXRpb24gYm91bmRhcnkgYmVm
b3JlIGl0LApAQCAtNjE1LDcgKzcyNSw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0dXJuIFRSVUUg
aWYgYyBoYXMgYSBub3JtYWxpemF0aW9uIGJvdW5kYXJ5IGJlZm9yZSBpdAogICAgICAqIEBzdGFi
bGUgSUNVIDQuNAogICAgICAqLwotICAgIHZpcnR1YWwgVUJvb2wgaGFzQm91bmRhcnlCZWZvcmUo
VUNoYXIzMiBjKSBjb25zdDsKKyAgICB2aXJ0dWFsIFVCb29sIGhhc0JvdW5kYXJ5QmVmb3JlKFVD
aGFyMzIgYykgY29uc3QgVV9PVkVSUklERTsKIAogICAgIC8qKgogICAgICAqIFRlc3RzIGlmIHRo
ZSBjaGFyYWN0ZXIgYWx3YXlzIGhhcyBhIG5vcm1hbGl6YXRpb24gYm91bmRhcnkgYWZ0ZXIgaXQs
CkBAIC02MjUsNyArNzM1LDcgQEAgcHVibGljOgogICAgICAqIEByZXR1cm4gVFJVRSBpZiBjIGhh
cyBhIG5vcm1hbGl6YXRpb24gYm91bmRhcnkgYWZ0ZXIgaXQKICAgICAgKiBAc3RhYmxlIElDVSA0
LjQKICAgICAgKi8KLSAgICB2aXJ0dWFsIFVCb29sIGhhc0JvdW5kYXJ5QWZ0ZXIoVUNoYXIzMiBj
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFVCb29sIGhhc0JvdW5kYXJ5QWZ0ZXIoVUNoYXIzMiBjKSBj
b25zdCBVX09WRVJSSURFOwogCiAgICAgLyoqCiAgICAgICogVGVzdHMgaWYgdGhlIGNoYXJhY3Rl
ciBpcyBub3JtYWxpemF0aW9uLWluZXJ0LgpAQCAtNjM0LDcgKzc0NCw3IEBAIHB1YmxpYzoKICAg
ICAgKiBAcmV0dXJuIFRSVUUgaWYgYyBpcyBub3JtYWxpemF0aW9uLWluZXJ0CiAgICAgICogQHN0
YWJsZSBJQ1UgNC40CiAgICAgICovCi0gICAgdmlydHVhbCBVQm9vbCBpc0luZXJ0KFVDaGFyMzIg
YykgY29uc3Q7CisgICAgdmlydHVhbCBVQm9vbCBpc0luZXJ0KFVDaGFyMzIgYykgY29uc3QgVV9P
VkVSUklERTsKIHByaXZhdGU6CiAgICAgVW5pY29kZVN0cmluZyAmCiAgICAgbm9ybWFsaXplKGNv
bnN0IFVuaWNvZGVTdHJpbmcgJnNyYywKQEAgLTY0Miw2ICs3NTIsMTIgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgVVNldFNwYW5Db25kaXRpb24gc3BhbkNvbmRpdGlvbiwKICAgICAgICAgICAg
ICAgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKIAorICAgIHZvaWQKKyAgICBub3JtYWxp
emVVVEY4KHVpbnQzMl90IG9wdGlvbnMsIGNvbnN0IGNoYXIgKnNyYywgaW50MzJfdCBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICBCeXRlU2luayAmc2luaywgRWRpdHMgKmVkaXRzLAorICAgICAg
ICAgICAgICAgICAgVVNldFNwYW5Db25kaXRpb24gc3BhbkNvbmRpdGlvbiwKKyAgICAgICAgICAg
ICAgICAgIFVFcnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3Q7CisKICAgICBVbmljb2RlU3RyaW5n
ICYKICAgICBub3JtYWxpemVTZWNvbmRBbmRBcHBlbmQoVW5pY29kZVN0cmluZyAmZmlyc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNlY29uZCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbm9ybWx6ci5oIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS9ub3JtbHpyLmgKaW5kZXggMDZjYmZkNDc3ZTY3MzUxNDhkYjFlNjE4YjBh
MmUwNDU1YzFkNmQyMy4uMDE0MTA1OGZiMDAxNGExOTI4YWMyYjA5NDU0OGU5YzQ1NmYxZWI2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9ub3JtbHpyLmgKKysrIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS9ub3JtbHpyLmgKQEAgLTEsNyArMSw5IEBACisvLyDCqSAyMDE2IGFu
ZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9m
IHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgogICogQ09QWVJJR0hUOgotICogQ29weXJpZ2h0IChjKSAxOTk2LTIwMTEsIEludGVybmF0
aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgKiBDb3B5cmlnaHQgKGMp
IDE5OTYtMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBh
bmQKICAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICovCkBA
IC0yNiwxNCArMjgsMTYgQEAKIAogVV9OQU1FU1BBQ0VfQkVHSU4KIC8qKgotICogVGhlIE5vcm1h
bGl6ZXIgY2xhc3Mgc3VwcG9ydHMgdGhlIHN0YW5kYXJkIG5vcm1hbGl6YXRpb24gZm9ybXMgZGVz
Y3JpYmVkIGluCi0gKiA8YSBocmVmPSJodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVw
b3J0cy90cjE1LyIgdGFyZ2V0PSJ1bmljb2RlIj4KLSAqIFVuaWNvZGUgU3RhbmRhcmQgQW5uZXgg
IzE1OiBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybXM8L2E+LgorICogT2xkIFVuaWNvZGUgbm9y
bWFsaXphdGlvbiBBUEkuCiAgKgotICogTm90ZTogVGhpcyBBUEkgaGFzIGJlZW4gcmVwbGFjZWQg
YnkgdGhlIE5vcm1hbGl6ZXIyIGNsYXNzIGFuZCBpcyBvbmx5IGF2YWlsYWJsZQorICogVGhpcyBB
UEkgaGFzIGJlZW4gcmVwbGFjZWQgYnkgdGhlIE5vcm1hbGl6ZXIyIGNsYXNzIGFuZCBpcyBvbmx5
IGF2YWlsYWJsZQogICogZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFRoaXMgY2xhc3Mgc2lt
cGx5IGRlbGVnYXRlcyB0byB0aGUgTm9ybWFsaXplcjIgY2xhc3MuCiAgKiBUaGVyZSBpcyBvbmUg
ZXhjZXB0aW9uOiBUaGUgbmV3IEFQSSBkb2VzIG5vdCBwcm92aWRlIGEgcmVwbGFjZW1lbnQgZm9y
IE5vcm1hbGl6ZXI6OmNvbXBhcmUoKS4KICAqCisgKiBUaGUgTm9ybWFsaXplciBjbGFzcyBzdXBw
b3J0cyB0aGUgc3RhbmRhcmQgbm9ybWFsaXphdGlvbiBmb3JtcyBkZXNjcmliZWQgaW4KKyAqIDxh
IGhyZWY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTUvIiB0YXJn
ZXQ9InVuaWNvZGUiPgorICogVW5pY29kZSBTdGFuZGFyZCBBbm5leCAjMTU6IFVuaWNvZGUgTm9y
bWFsaXphdGlvbiBGb3JtczwvYT4uCisgKgogICogVGhlIE5vcm1hbGl6ZXIgY2xhc3MgY29uc2lz
dHMgb2YgdHdvIHBhcnRzOgogICogLSBzdGF0aWMgZnVuY3Rpb25zIHRoYXQgbm9ybWFsaXplIHN0
cmluZ3Mgb3IgdGVzdCBpZiBzdHJpbmdzIGFyZSBub3JtYWxpemVkCiAgKiAtIGEgTm9ybWFsaXpl
ciBvYmplY3QgaXMgYW4gaXRlcmF0b3IgdGhhdCB0YWtlcyBhbnkga2luZCBvZiB0ZXh0IGFuZApA
QCAtMTI5LDEwICsxMzMsMTEgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAqLwogY2xhc3MgVV9DT01N
T05fQVBJIE5vcm1hbGl6ZXIgOiBwdWJsaWMgVU9iamVjdCB7CiBwdWJsaWM6CisjaWZuZGVmIFVf
SElERV9ERVBSRUNBVEVEX0FQSQogICAvKioKICAgICogSWYgRE9ORSBpcyByZXR1cm5lZCBmcm9t
IGFuIGl0ZXJhdGlvbiBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBjb2RlIHBvaW50LAogICAgKiB0
aGVuIHRoZXJlIGFyZSBubyBtb3JlIG5vcm1hbGl6YXRpb24gcmVzdWx0cyBhdmFpbGFibGUuCi0g
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6
ZXIyIGluc3RlYWQuCiAgICAqLwogICBlbnVtIHsKICAgICAgIERPTkU9MHhmZmZmCkBAIC0xNDgs
NyArMTUzLDcgQEAgcHVibGljOgogICAgKiAgICAgICAgICAgICAgd2lsbCBzdGFydCBhdCB0aGUg
YmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCiAgICAqCiAgICAqIEBwYXJhbSBtb2RlICBUaGUgbm9y
bWFsaXphdGlvbiBtb2RlLgotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQg
SUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgTm9ybWFsaXplcihjb25z
dCBVbmljb2RlU3RyaW5nJiBzdHIsIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlKTsKIApAQCAtMTYx
LDkgKzE2Niw5IEBAIHB1YmxpYzoKICAgICoKICAgICogQHBhcmFtIGxlbmd0aCBMZW5ndGggb2Yg
dGhlIHN0cmluZywgb3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQuCiAgICAqIEBwYXJhbSBtb2RlICBU
aGUgbm9ybWFsaXphdGlvbiBtb2RlLgotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJl
Y2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KLSAgTm9ybWFsaXpl
cihjb25zdCBVQ2hhciogc3RyLCBpbnQzMl90IGxlbmd0aCwgVU5vcm1hbGl6YXRpb25Nb2RlIG1v
ZGUpOworICBOb3JtYWxpemVyKENvbnN0Q2hhcjE2UHRyIHN0ciwgaW50MzJfdCBsZW5ndGgsIFVO
b3JtYWxpemF0aW9uTW9kZSBtb2RlKTsKIAogICAvKioKICAgICogQ3JlYXRlcyBhIG5ldyA8Y29k
ZT5Ob3JtYWxpemVyPC9jb2RlPiBvYmplY3QgZm9yIGl0ZXJhdGluZyBvdmVyIHRoZQpAQCAtMTcz
LDIwICsxNzgsMjEgQEAgcHVibGljOgogICAgKiAgICAgICAgICAgICAgd2lsbCBzdGFydCBhdCB0
aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCiAgICAqCiAgICAqIEBwYXJhbSBtb2RlICBUaGUg
bm9ybWFsaXphdGlvbiBtb2RlLgotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0
ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgTm9ybWFsaXplcihj
b25zdCBDaGFyYWN0ZXJJdGVyYXRvciYgaXRlciwgVU5vcm1hbGl6YXRpb25Nb2RlIG1vZGUpOwor
I2VuZGlmICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KIAogICAvKioKICAgICogQ29weSBj
b25zdHJ1Y3Rvci4KICAgICogQHBhcmFtIGNvcHkgVGhlIG9iamVjdCB0byBiZSBjb3BpZWQuCi0g
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6
ZXIyIGluc3RlYWQuCiAgICAqLwogICBOb3JtYWxpemVyKGNvbnN0IE5vcm1hbGl6ZXImIGNvcHkp
OwogCiAgIC8qKgogICAgKiBEZXN0cnVjdG9yCi0gICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBA
ZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICB2aXJ0
dWFsIH5Ob3JtYWxpemVyKCk7CiAKQEAgLTE5NSw2ICsyMDEsNyBAQCBwdWJsaWM6CiAgIC8vIFN0
YXRpYyB1dGlsaXR5IG1ldGhvZHMKICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKyNpZm5kZWYgVV9I
SURFX0RFUFJFQ0FURURfQVBJCiAgIC8qKgogICAgKiBOb3JtYWxpemVzIGEgPGNvZGU+VW5pY29k
ZVN0cmluZzwvY29kZT4gYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgbm9ybWFsaXphdGlvbiBt
b2RlLgogICAgKiBUaGlzIGlzIGEgd3JhcHBlciBmb3IgdW5vcm1fbm9ybWFsaXplKCksIHVzaW5n
IFVuaWNvZGVTdHJpbmcncy4KQEAgLTIwNyw3ICsyMTQsNyBAQCBwdWJsaWM6CiAgICAqIEBwYXJh
bSBvcHRpb25zICAgdGhlIG9wdGlvbmFsIGZlYXR1cmVzIHRvIGJlIGVuYWJsZWQgKDAgZm9yIG5v
IG9wdGlvbnMpCiAgICAqIEBwYXJhbSByZXN1bHQgICAgVGhlIG5vcm1hbGl6ZWQgc3RyaW5nIChv
biBvdXRwdXQpLgogICAgKiBAcGFyYW0gc3RhdHVzICAgIFRoZSBlcnJvciBjb2RlLgotICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBp
bnN0ZWFkLgogICAgKi8KICAgc3RhdGljIHZvaWQgVV9FWFBPUlQyIG5vcm1hbGl6ZShjb25zdCBV
bmljb2RlU3RyaW5nJiBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBVTm9ybWFsaXph
dGlvbk1vZGUgbW9kZSwgaW50MzJfdCBvcHRpb25zLApAQCAtMjI5LDcgKzIzNiw3IEBAIHB1Ymxp
YzoKICAgICogQHBhcmFtIG9wdGlvbnMgICB0aGUgb3B0aW9uYWwgZmVhdHVyZXMgdG8gYmUgZW5h
YmxlZCAoMCBmb3Igbm8gb3B0aW9ucykKICAgICogQHBhcmFtIHJlc3VsdCAgICBUaGUgY29tcG9z
ZWQgc3RyaW5nIChvbiBvdXRwdXQpLgogICAgKiBAcGFyYW0gc3RhdHVzICAgIFRoZSBlcnJvciBj
b2RlLgotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBO
b3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgc3RhdGljIHZvaWQgVV9FWFBPUlQyIGNvbXBv
c2UoY29uc3QgVW5pY29kZVN0cmluZyYgc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgIFVC
b29sIGNvbXBhdCwgaW50MzJfdCBvcHRpb25zLApAQCAtMjUxLDcgKzI1OCw3IEBAIHB1YmxpYzoK
ICAgICogQHBhcmFtIG9wdGlvbnMgICB0aGUgb3B0aW9uYWwgZmVhdHVyZXMgdG8gYmUgZW5hYmxl
ZCAoMCBmb3Igbm8gb3B0aW9ucykKICAgICogQHBhcmFtIHJlc3VsdCAgICBUaGUgZGVjb21wb3Nl
ZCBzdHJpbmcgKG9uIG91dHB1dCkuCiAgICAqIEBwYXJhbSBzdGF0dXMgICAgVGhlIGVycm9yIGNv
ZGUuCi0gICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5v
cm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICBzdGF0aWMgdm9pZCBVX0VYUE9SVDIgZGVjb21w
b3NlKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAg
IFVCb29sIGNvbXBhdCwgaW50MzJfdCBvcHRpb25zLApAQCAtMjc2LDcgKzI4Myw3IEBAIHB1Ymxp
YzoKICAgICogQHJldHVybiBVTk9STV9ZRVMsIFVOT1JNX05PIG9yIFVOT1JNX01BWUJFCiAgICAq
CiAgICAqIEBzZWUgaXNOb3JtYWxpemVkCi0gICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBAZGVw
cmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICBzdGF0aWMg
aW5saW5lIFVOb3JtYWxpemF0aW9uQ2hlY2tSZXN1bHQKICAgcXVpY2tDaGVjayhjb25zdCBVbmlj
b2RlU3RyaW5nICZzb3VyY2UsIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBVRXJyb3JDb2RlICZz
dGF0dXMpOwpAQCAtMjkyLDcgKzI5OSw3IEBAIHB1YmxpYzoKICAgICogQHJldHVybiBVTk9STV9Z
RVMsIFVOT1JNX05PIG9yIFVOT1JNX01BWUJFCiAgICAqCiAgICAqIEBzZWUgaXNOb3JtYWxpemVk
Ci0gICAqIEBzdGFibGUgSUNVIDIuNgorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1h
bGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICBzdGF0aWMgVU5vcm1hbGl6YXRpb25DaGVja1Jlc3Vs
dAogICBxdWlja0NoZWNrKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNvdXJjZSwgVU5vcm1hbGl6YXRp
b25Nb2RlIG1vZGUsIGludDMyX3Qgb3B0aW9ucywgVUVycm9yQ29kZSAmc3RhdHVzKTsKQEAgLTMx
NSw3ICszMjIsNyBAQCBwdWJsaWM6CiAgICAqICAgICAgICAgIm1vZGUiIG5vcm1hbGl6YXRpb24g
Zm9ybS4KICAgICoKICAgICogQHNlZSBxdWlja0NoZWNrCi0gICAqIEBzdGFibGUgSUNVIDIuMgor
ICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwog
ICBzdGF0aWMgaW5saW5lIFVCb29sCiAgIGlzTm9ybWFsaXplZChjb25zdCBVbmljb2RlU3RyaW5n
ICZzcmMsIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBVRXJyb3JDb2RlICZlcnJvckNvZGUpOwpA
QCAtMzMzLDcgKzM0MCw3IEBAIHB1YmxpYzoKICAgICogICAgICAgICAibW9kZSIgbm9ybWFsaXph
dGlvbiBmb3JtLgogICAgKgogICAgKiBAc2VlIHF1aWNrQ2hlY2sKLSAgICogQHN0YWJsZSBJQ1Ug
Mi42CisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAg
ICovCiAgIHN0YXRpYyBVQm9vbAogICBpc05vcm1hbGl6ZWQoY29uc3QgVW5pY29kZVN0cmluZyAm
c3JjLCBVTm9ybWFsaXphdGlvbk1vZGUgbW9kZSwgaW50MzJfdCBvcHRpb25zLCBVRXJyb3JDb2Rl
ICZlcnJvckNvZGUpOwpAQCAtMzY1LDEzICszNzIsMTQgQEAgcHVibGljOgogICAgKiBAc2VlIHVu
b3JtX25leHQKICAgICogQHNlZSB1bm9ybV9wcmV2aW91cwogICAgKgotICAgKiBAc3RhYmxlIElD
VSAyLjEKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgog
ICAgKi8KICAgc3RhdGljIFVuaWNvZGVTdHJpbmcgJgogICBVX0VYUE9SVDIgY29uY2F0ZW5hdGUo
Y29uc3QgVW5pY29kZVN0cmluZyAmbGVmdCwgY29uc3QgVW5pY29kZVN0cmluZyAmcmlnaHQsCiAg
ICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcgJnJlc3VsdCwKICAgICAgICAgICAgICAgVU5vcm1h
bGl6YXRpb25Nb2RlIG1vZGUsIGludDMyX3Qgb3B0aW9ucywKICAgICAgICAgICAgICAgVUVycm9y
Q29kZSAmZXJyb3JDb2RlKTsKKyNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCiAK
ICAgLyoqCiAgICAqIENvbXBhcmUgdHdvIHN0cmluZ3MgZm9yIGNhbm9uaWNhbCBlcXVpdmFsZW5j
ZS4KQEAgLTQ0Miw2ICs0NTAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgdWludDMyX3Qgb3B0aW9u
cywKICAgICAgICAgICBVRXJyb3JDb2RlICZlcnJvckNvZGUpOwogCisjaWZuZGVmIFVfSElERV9E
RVBSRUNBVEVEX0FQSQogICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLy8gSXRlcmF0aW9uIEFQSQog
ICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ1Miw3ICs0NjEsNyBAQCBwdWJsaWM6CiAgICAqIFRo
ZSBnZXRJbmRleCgpIGlzIG5vdCBjaGFuZ2VkLgogICAgKgogICAgKiBAcmV0dXJuIHRoZSBjdXJy
ZW50IG5vcm1hbGl6ZWQgY29kZSBwb2ludAotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRl
cHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgVUNoYXIz
MiAgICAgICAgICAgICAgY3VycmVudCh2b2lkKTsKIApAQCAtNDYyLDcgKzQ3MSw3IEBAIHB1Ymxp
YzoKICAgICogKFBvc3QtaW5jcmVtZW50IHNlbWFudGljcy4pCiAgICAqCiAgICAqIEByZXR1cm4g
dGhlIGZpcnN0IG5vcm1hbGl6ZWQgY29kZSBwb2ludAotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAg
VUNoYXIzMiAgICAgICAgICAgICAgZmlyc3Qodm9pZCk7CiAKQEAgLTQ3Miw3ICs0ODEsNyBAQCBw
dWJsaWM6CiAgICAqIChQcmUtZGVjcmVtZW50IHNlbWFudGljcy4pCiAgICAqCiAgICAqIEByZXR1
cm4gdGhlIGxhc3Qgbm9ybWFsaXplZCBjb2RlIHBvaW50Ci0gICAqIEBzdGFibGUgSUNVIDIuMAor
ICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwog
ICBVQ2hhcjMyICAgICAgICAgICAgICBsYXN0KHZvaWQpOwogCkBAIC00ODgsNyArNDk3LDcgQEAg
cHVibGljOgogICAgKiBUaGUgQyBBUEkgdW5vcm1fbmV4dCgpIGlzIG1vcmUgZWZmaWNpZW50IGFu
ZCBkb2VzIG5vdCBoYXZlIHRoaXMgYW1iaWd1aXR5LgogICAgKgogICAgKiBAcmV0dXJuIHRoZSBu
ZXh0IG5vcm1hbGl6ZWQgY29kZSBwb2ludAotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRl
cHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgVUNoYXIz
MiAgICAgICAgICAgICAgbmV4dCh2b2lkKTsKIApAQCAtNTA0LDcgKzUxMyw3IEBAIHB1YmxpYzoK
ICAgICogVGhlIEMgQVBJIHVub3JtX3ByZXZpb3VzKCkgaXMgbW9yZSBlZmZpY2llbnQgYW5kIGRv
ZXMgbm90IGhhdmUgdGhpcyBhbWJpZ3VpdHkuCiAgICAqCiAgICAqIEByZXR1cm4gdGhlIHByZXZp
b3VzIG5vcm1hbGl6ZWQgY29kZSBwb2ludAotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRl
cHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgVUNoYXIz
MiAgICAgICAgICAgICAgcHJldmlvdXModm9pZCk7CiAKQEAgLTUxNSwxNCArNTI0LDE0IEBAIHB1
YmxpYzoKICAgICogc3BlY2lmaWVkIGhlcmUuCiAgICAqCiAgICAqIEBwYXJhbSBpbmRleCB0aGUg
ZGVzaXJlZCBpbmRleCBpbiB0aGUgaW5wdXQgdGV4dC4KLSAgICogQHN0YWJsZSBJQ1UgMi4wCisg
ICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAg
IHZvaWQgICAgICAgICAgICAgICAgIHNldEluZGV4T25seShpbnQzMl90IGluZGV4KTsKIAogICAv
KioKICAgICogUmVzZXQgdGhlIGluZGV4IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuCiAg
ICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byBzZXRJbmRleE9ubHkoc3RhcnRJbmRleCkpLgotICAg
KiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVy
MiBpbnN0ZWFkLgogICAgKi8KICAgdm9pZCAgICAgICAgICAgICAgICByZXNldCh2b2lkKTsKIApA
QCAtNTM4LDcgKzU0Nyw3IEBAIHB1YmxpYzoKICAgICogd2FzIHJldHVybmVkIGZyb20gd2l0aCBw
cmV2aW91cygpLgogICAgKgogICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IGluZGV4IGluIHRoZSBp
bnB1dCB0ZXh0Ci0gICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTYg
VXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICBpbnQzMl90ICAgICAgICAgICAgZ2V0
SW5kZXgodm9pZCkgY29uc3Q7CiAKQEAgLTU0OCw3ICs1NTcsNyBAQCBwdWJsaWM6CiAgICAqIG92
ZXIgd2hpY2ggdGhpcyA8Y29kZT5Ob3JtYWxpemVyPC9jb2RlPiBpcyBpdGVyYXRpbmcuCiAgICAq
CiAgICAqIEByZXR1cm4gdGhlIHNtYWxsZXN0IGluZGV4IGluIHRoZSBpbnB1dCB0ZXh0IHdoZXJl
IHRoZSBOb3JtYWxpemVyIG9wZXJhdGVzCi0gICAqIEBzdGFibGUgSUNVIDIuMAorICAgKiBAZGVw
cmVjYXRlZCBJQ1UgNTYgVXNlIE5vcm1hbGl6ZXIyIGluc3RlYWQuCiAgICAqLwogICBpbnQzMl90
ICAgICAgICAgICAgc3RhcnRJbmRleCh2b2lkKSBjb25zdDsKIApAQCAtNTYwLDcgKzU2OSw3IEBA
IHB1YmxpYzoKICAgICogYmVmb3JlIHRoaXMgaW5kZXguCiAgICAqCiAgICAqIEByZXR1cm4gdGhl
IGZpcnN0IGluZGV4IGluIHRoZSBpbnB1dCB0ZXh0IHdoZXJlIHRoZSBOb3JtYWxpemVyIGRvZXMg
bm90IG9wZXJhdGUKLSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1
NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIGludDMyX3QgICAgICAgICAgICBl
bmRJbmRleCh2b2lkKSBjb25zdDsKIApAQCAtNTcwLDcgKzU3OSw3IEBAIHB1YmxpYzoKICAgICoK
ICAgICogQHBhcmFtIHRoYXQgYSBOb3JtYWxpemVyIG9iamVjdCB0byBjb21wYXJlIHRoaXMgb25l
IHRvCiAgICAqIEByZXR1cm4gY29tcGFyaXNvbiByZXN1bHQKLSAgICogQHN0YWJsZSBJQ1UgMi4w
CisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICov
CiAgIFVCb29sICAgICAgICBvcGVyYXRvcj09KGNvbnN0IE5vcm1hbGl6ZXImIHRoYXQpIGNvbnN0
OwogCkBAIC01ODAsNyArNTg5LDcgQEAgcHVibGljOgogICAgKgogICAgKiBAcGFyYW0gdGhhdCBh
IE5vcm1hbGl6ZXIgb2JqZWN0IHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8KICAgICogQHJldHVybiBj
b21wYXJpc29uIHJlc3VsdAotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQg
SUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgaW5saW5lIFVCb29sICAg
ICAgICBvcGVyYXRvciE9KGNvbnN0IE5vcm1hbGl6ZXImIHRoYXQpIGNvbnN0OwogCkBAIC01ODgs
NyArNTk3LDcgQEAgcHVibGljOgogICAgKiBSZXR1cm5zIGEgcG9pbnRlciB0byBhIG5ldyBOb3Jt
YWxpemVyIHRoYXQgaXMgYSBjbG9uZSBvZiB0aGlzIG9uZS4KICAgICogVGhlIGNhbGxlciBpcyBy
ZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIG5ldyBjbG9uZS4KICAgICogQHJldHVybiBhIHBv
aW50ZXIgdG8gYSBuZXcgTm9ybWFsaXplcgotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRl
cHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgTm9ybWFs
aXplciogICAgICAgIGNsb25lKHZvaWQpIGNvbnN0OwogCkBAIC01OTYsNyArNjA1LDcgQEAgcHVi
bGljOgogICAgKiBHZW5lcmF0ZXMgYSBoYXNoIGNvZGUgZm9yIHRoaXMgaXRlcmF0b3IuCiAgICAq
CiAgICAqIEByZXR1cm4gdGhlIGhhc2ggY29kZQotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICog
QGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgaW50
MzJfdCAgICAgICAgICAgICAgICBoYXNoQ29kZSh2b2lkKSBjb25zdDsKIApAQCAtNjE3LDcgKzYy
Niw3IEBAIHB1YmxpYzoKICAgICogPHA+CiAgICAqIEBwYXJhbSBuZXdNb2RlIHRoZSBuZXcgbW9k
ZSBmb3IgdGhpcyA8Y29kZT5Ob3JtYWxpemVyPC9jb2RlPi4KICAgICogQHNlZSAjZ2V0VU1vZGUK
LSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFs
aXplcjIgaW5zdGVhZC4KICAgICovCiAgIHZvaWQgc2V0TW9kZShVTm9ybWFsaXphdGlvbk1vZGUg
bmV3TW9kZSk7CiAKQEAgLTYyOSw3ICs2MzgsNyBAQCBwdWJsaWM6CiAgICAqCiAgICAqIEByZXR1
cm4gdGhlIG1vZGUgZm9yIHRoaXMgPGNvZGU+Tm9ybWFsaXplcjwvY29kZT4KICAgICogQHNlZSAj
c2V0TW9kZQotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVz
ZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAgVU5vcm1hbGl6YXRpb25Nb2RlIGdldFVN
b2RlKHZvaWQpIGNvbnN0OwogCkBAIC02NDcsNyArNjU2LDcgQEAgcHVibGljOgogICAgKiAgICAg
ICAgICAgICAgICAgIHR1cm4gdGhlIG9wdGlvbihzKSBvbiBhbmQgPGNvZGU+RkFMU0U8L2NvZGU+
IHRvIHR1cm4gaXQvdGhlbSBvZmYuCiAgICAqCiAgICAqIEBzZWUgI2dldE9wdGlvbgotICAgKiBA
c3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBp
bnN0ZWFkLgogICAgKi8KICAgdm9pZCBzZXRPcHRpb24oaW50MzJfdCBvcHRpb24sCiAgICAgICAg
ICBVQm9vbCB2YWx1ZSk7CkBAIC02NjAsNyArNjY5LDcgQEAgcHVibGljOgogICAgKiBAcGFyYW0g
b3B0aW9uIHRoZSBvcHRpb24ocykgdGhhdCBhcmUgdG8gYmUgY2hlY2tlZAogICAgKiBAcmV0dXJu
IFRSVUUgaWYgYW55IG9mIHRoZSBvcHRpb24ocykgYXJlIHNldAogICAgKiBAc2VlICNzZXRPcHRp
b24KLSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9y
bWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIFVCb29sIGdldE9wdGlvbihpbnQzMl90IG9wdGlv
bikgY29uc3Q7CiAKQEAgLTY3MCw3ICs2NzksNyBAQCBwdWJsaWM6CiAgICAqCiAgICAqIEBwYXJh
bSBuZXdUZXh0IGEgc3RyaW5nIHRoYXQgcmVwbGFjZXMgdGhlIGN1cnJlbnQgaW5wdXQgdGV4dAog
ICAgKiBAcGFyYW0gc3RhdHVzIGEgVUVycm9yQ29kZQotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAg
ICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KICAg
dm9pZCBzZXRUZXh0KGNvbnN0IFVuaWNvZGVTdHJpbmcmIG5ld1RleHQsCiAgICAgICAgICAgIFVF
cnJvckNvZGUgJnN0YXR1cyk7CkBAIC02ODEsNyArNjkwLDcgQEAgcHVibGljOgogICAgKgogICAg
KiBAcGFyYW0gbmV3VGV4dCBhIENoYXJhY3Rlckl0ZXJhdG9yIG9iamVjdCB0aGF0IHJlcGxhY2Vz
IHRoZSBjdXJyZW50IGlucHV0IHRleHQKICAgICogQHBhcmFtIHN0YXR1cyBhIFVFcnJvckNvZGUK
LSAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFs
aXplcjIgaW5zdGVhZC4KICAgICovCiAgIHZvaWQgc2V0VGV4dChjb25zdCBDaGFyYWN0ZXJJdGVy
YXRvciYgbmV3VGV4dCwKICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVzKTsKQEAgLTY5Mywz
MCArNzAyLDMxIEBAIHB1YmxpYzoKICAgICogQHBhcmFtIG5ld1RleHQgYSBzdHJpbmcgdGhhdCBy
ZXBsYWNlcyB0aGUgY3VycmVudCBpbnB1dCB0ZXh0CiAgICAqIEBwYXJhbSBsZW5ndGggdGhlIGxl
bmd0aCBvZiB0aGUgc3RyaW5nLCBvciAtMSBpZiBOVUwtdGVybWluYXRlZAogICAgKiBAcGFyYW0g
c3RhdHVzIGEgVUVycm9yQ29kZQotICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICogQGRlcHJlY2F0
ZWQgSUNVIDU2IFVzZSBOb3JtYWxpemVyMiBpbnN0ZWFkLgogICAgKi8KLSAgdm9pZCBzZXRUZXh0
KGNvbnN0IFVDaGFyKiBuZXdUZXh0LAorICB2b2lkIHNldFRleHQoQ29uc3RDaGFyMTZQdHIgbmV3
VGV4dCwKICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCiAgICAgICAgICAgICBV
RXJyb3JDb2RlICZzdGF0dXMpOwogICAvKioKICAgICogQ29waWVzIHRoZSBpbnB1dCB0ZXh0IGlu
dG8gdGhlIFVuaWNvZGVTdHJpbmcgYXJndW1lbnQuCiAgICAqCiAgICAqIEBwYXJhbSByZXN1bHQg
UmVjZWl2ZXMgYSBjb3B5IG9mIHRoZSB0ZXh0IHVuZGVyIGl0ZXJhdGlvbi4KLSAgICogQHN0YWJs
ZSBJQ1UgMi4wCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVh
ZC4KICAgICovCiAgIHZvaWQgICAgICAgICAgICBnZXRUZXh0KFVuaWNvZGVTdHJpbmcmICByZXN1
bHQpOwogCiAgIC8qKgogICAgKiBJQ1UgInBvb3IgbWFuJ3MgUlRUSSIsIHJldHVybnMgYSBVQ2xh
c3NJRCBmb3IgdGhpcyBjbGFzcy4KICAgICogQHJldHVybnMgYSBVQ2xhc3NJRCBmb3IgdGhpcyBj
bGFzcy4KLSAgICogQHN0YWJsZSBJQ1UgMi4yCisgICAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2Ug
Tm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIHN0YXRpYyBVQ2xhc3NJRCBVX0VYUE9SVDIg
Z2V0U3RhdGljQ2xhc3NJRCgpOworI2VuZGlmICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8K
IAogICAvKioKICAgICogSUNVICJwb29yIG1hbidzIFJUVEkiLCByZXR1cm5zIGEgVUNsYXNzSUQg
Zm9yIHRoZSBhY3R1YWwgY2xhc3MuCiAgICAqIEByZXR1cm4gYSBVQ2xhc3NJRCBmb3IgdGhlIGFj
dHVhbCBjbGFzcy4KLSAgICogQHN0YWJsZSBJQ1UgMi4yCisgICAqIEBkZXByZWNhdGVkIElDVSA1
NiBVc2UgTm9ybWFsaXplcjIgaW5zdGVhZC4KICAgICovCiAgIHZpcnR1YWwgVUNsYXNzSUQgZ2V0
RHluYW1pY0NsYXNzSUQoKSBjb25zdDsKIApAQCAtNzQyLDcgKzc1Miw3IEBAIHByaXZhdGU6CiAK
ICAgRmlsdGVyZWROb3JtYWxpemVyMipmRmlsdGVyZWROb3JtMjsgIC8vIG93bmVkIGlmIG5vdCBO
VUxMCiAgIGNvbnN0IE5vcm1hbGl6ZXIyICAqZk5vcm0yOyAgLy8gbm90IG93bmVkOyBtYXkgYmUg
ZXF1YWwgdG8gZkZpbHRlcmVkTm9ybTIKLSAgVU5vcm1hbGl6YXRpb25Nb2RlICBmVU1vZGU7Cisg
IFVOb3JtYWxpemF0aW9uTW9kZSAgZlVNb2RlOyAgLy8gZGVwcmVjYXRlZAogICBpbnQzMl90ICAg
ICAgICAgICAgIGZPcHRpb25zOwogCiAgIC8vIFRoZSBpbnB1dCB0ZXh0IGFuZCBvdXIgcG9zaXRp
b24gaW4gaXQKQEAgLTc2MSw2ICs3NzEsNyBAQCBwcml2YXRlOgogLy8gSW5saW5lIGltcGxlbWVu
dGF0aW9ucwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURf
QVBJCiBpbmxpbmUgVUJvb2wKIE5vcm1hbGl6ZXI6Om9wZXJhdG9yIT0gKGNvbnN0IE5vcm1hbGl6
ZXImIG90aGVyKSBjb25zdAogeyByZXR1cm4gISBvcGVyYXRvcj09KG90aGVyKTsgfQpAQCAtNzc4
LDE0ICs3ODksMTUgQEAgTm9ybWFsaXplcjo6aXNOb3JtYWxpemVkKGNvbnN0IFVuaWNvZGVTdHJp
bmcmIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICZzdGF0dXMp
IHsKICAgICByZXR1cm4gaXNOb3JtYWxpemVkKHNvdXJjZSwgbW9kZSwgMCwgc3RhdHVzKTsKIH0K
KyNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCiAKIGlubGluZSBpbnQzMl90CiBO
b3JtYWxpemVyOjpjb21wYXJlKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnMxLCBjb25zdCBVbmljb2Rl
U3RyaW5nICZzMiwKICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucywKICAgICAg
ICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSB7CiAgIC8vIGFsbCBhcmd1bWVu
dCBjaGVja2luZyBpcyBkb25lIGluIHVub3JtX2NvbXBhcmUKLSAgcmV0dXJuIHVub3JtX2NvbXBh
cmUoczEuZ2V0QnVmZmVyKCksIHMxLmxlbmd0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICBz
Mi5nZXRCdWZmZXIoKSwgczIubGVuZ3RoKCksCisgIHJldHVybiB1bm9ybV9jb21wYXJlKHRvVUNo
YXJQdHIoczEuZ2V0QnVmZmVyKCkpLCBzMS5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgdG9VQ2hhclB0cihzMi5nZXRCdWZmZXIoKSksIHMyLmxlbmd0aCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3JDb2RlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbnVtZm10LmggYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL251bWZtdC5oCmluZGV4IDE2NGM2NTc2OWZlOGEzZjBhN2EzODBkMzIy
ZjFiYTIzZTVhMGU4NGMuLjY4YmUwMjEwNTViYWZiNzgwZGY1MGFlNjUwYzkyY2ZhYjg5MTVhMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbnVtZm10LmgKKysrIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS9udW1mbXQuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5k
IGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2Yg
dXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKLSogQ29weXJpZ2h0IChDKSAxOTk3LTIwMTUsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4KKyogQ29weXJpZ2h0IChD
KSAxOTk3LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24g
YW5kIG90aGVycy4KICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCiAqCkBAIC01Niw2ICs1OCwxMiBAQCBjbGFzcyBTdHJpbmdFbnVtZXJhdGlvbjsKICAqIGZv
cm1hdHRpbmcgYW5kIHBhcnNpbmcgYSBudW1iZXIuICBBbHNvIHByb3ZpZGVzIG1ldGhvZHMgZm9y
CiAgKiBkZXRlcm1pbmluZyB3aGljaCBsb2NhbGVzIGhhdmUgbnVtYmVyIGZvcm1hdHMsIGFuZCB3
aGF0IHRoZWlyIG5hbWVzCiAgKiBhcmUuCisgKgorICogPHA+PHN0cm9uZz5OT1RFOjwvc3Ryb25n
PiBTdGFydGluZyBpbiBJQ1UgNjAsIHRoZXJlIGlzIGEgbmV3IHNldCBvZiBBUElzIGZvciBsb2Nh
bGl6ZWQgbnVtYmVyCisgKiBmb3JtYXR0aW5nIHRoYXQgYXJlIGRlc2lnbmVkIHRvIGJlIGFuIGlt
cHJvdmVtZW50IG92ZXIgRGVjaW1hbEZvcm1hdC4gIE5ldyB1c2VycyBhcmUgZGlzY291cmFnZWQK
KyAqIGZyb20gdXNpbmcgRGVjaW1hbEZvcm1hdC4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUg
bnVtYmVyZm9ybWF0dGVyLmguCisgKgorICogXGhlYWRlcmZpbGUgdW5pY29kZS9udW1mbXQuaCAi
dW5pY29kZS9udW1mbXQuaCIKICAqIDxQPgogICogTnVtYmVyRm9ybWF0IGhlbHBzIHlvdSB0byBm
b3JtYXQgYW5kIHBhcnNlIG51bWJlcnMgZm9yIGFueSBsb2NhbGUuCiAgKiBZb3VyIGNvZGUgY2Fu
IGJlIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnQgb2YgdGhlIGxvY2FsZSBjb252ZW50aW9ucwpAQCAt
NjQsMTYgKzcyLDIyIEBAIGNsYXNzIFN0cmluZ0VudW1lcmF0aW9uOwogICogPFA+CiAgKiBUbyBm
b3JtYXQgYSBudW1iZXIgZm9yIHRoZSBjdXJyZW50IExvY2FsZSwgdXNlIG9uZSBvZiB0aGUgc3Rh
dGljCiAgKiBmYWN0b3J5IG1ldGhvZHM6Ci0gKiA8cHJlPgogICogXGNvZGUKLSAqICAgIGRvdWJs
ZSBteU51bWJlciA9IDcuMDsKLSAqICAgIFVuaWNvZGVTdHJpbmcgbXlTdHJpbmc7Ci0gKiAgICBV
RXJyb3JDb2RlIHN1Y2Nlc3MgPSBVX1pFUk9fRVJST1I7Ci0gKiAgICBOdW1iZXJGb3JtYXQqIG5m
ID0gTnVtYmVyRm9ybWF0OjpjcmVhdGVJbnN0YW5jZShzdWNjZXNzKQotICogICAgbmYtPmZvcm1h
dChteU51bWJlciwgbXlTdHJpbmcpOwotICogICAgY291dCA8PCAiIEV4YW1wbGUgMTogIiA8PCBt
eVN0cmluZyA8PCBlbmRsOworICogICAgI2luY2x1ZGUgPGlvc3RyZWFtPgorICogICAgI2luY2x1
ZGUgInVuaWNvZGUvbnVtZm10LmgiCisgKiAgICAjaW5jbHVkZSAidW5pY29kZS91bmlzdHIuaCIK
KyAqICAgICNpbmNsdWRlICJ1bmljb2RlL3VzdHJlYW0uaCIKKyAqICAgIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CisgKiAgICAKKyAqICAgIGludCBtYWluKCkgeworICogICAgICAgIGRvdWJsZSBteU51
bWJlciA9IDcuMDsKKyAqICAgICAgICBVbmljb2RlU3RyaW5nIG15U3RyaW5nOworICogICAgICAg
IFVFcnJvckNvZGUgc3VjY2VzcyA9IFVfWkVST19FUlJPUjsKKyAqICAgICAgICBOdW1iZXJGb3Jt
YXQqIG5mID0gTnVtYmVyRm9ybWF0OjpjcmVhdGVJbnN0YW5jZShzdWNjZXNzKTsKKyAqICAgICAg
ICBuZi0+Zm9ybWF0KG15TnVtYmVyLCBteVN0cmluZyk7CisgKiAgICAgICAgY291dCA8PCAiIEV4
YW1wbGUgMTogIiA8PCBteVN0cmluZyA8PCBlbmRsOworICogICAgfQogICogXGVuZGNvZGUKLSAq
IDwvcHJlPgogICogTm90ZSB0aGF0IHRoZXJlIGFyZSBhZGRpdGlvbmFsIGZhY3RvcnkgbWV0aG9k
cyB3aXRoaW4gc3ViY2xhc3NlcyBvZgogICogTnVtYmVyRm9ybWF0LgogICogPFA+CkBAIC04MSw2
OCArOTUsNTYgQEAgY2xhc3MgU3RyaW5nRW51bWVyYXRpb247CiAgKiB0aGUgZm9ybWF0IGFuZCB1
c2UgaXQgbXVsdGlwbGUgdGltZXMgc28gdGhhdCB0aGUgc3lzdGVtIGRvZXNuJ3QKICAqIGhhdmUg
dG8gZmV0Y2ggdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NhbCBsYW5ndWFnZSBhbmQgY291
bnRyeQogICogY29udmVudGlvbnMgbXVsdGlwbGUgdGltZXMuCi0gKiA8cHJlPgogICogXGNvZGUK
ICAqICAgICBVbmljb2RlU3RyaW5nIG15U3RyaW5nOwogICogICAgIFVFcnJvckNvZGUgc3VjY2Vz
cyA9IFVfWkVST19FUlJPUjsKLSAqICAgICBuZiA9IE51bWJlckZvcm1hdDo6Y3JlYXRlSW5zdGFu
Y2UoIHN1Y2Nlc3MgKTsKLSAqICAgICBpbnQzMl90IGFbXSA9IHsgMTIzLCAzMzMzLCAtMTIzNDU2
NyB9OwotICogICAgIGNvbnN0IGludDMyX3QgYV9sZW4gPSBzaXplb2YoYSkgLyBzaXplb2YoYVsw
XSk7Ci0gKiAgICAgbXlTdHJpbmcucmVtb3ZlKCk7Ci0gKiAgICAgZm9yIChpbnQzMl90IGkgPSAw
OyBpIDwgYV9sZW47IGkrKykgewotICogICAgICAgICBuZi0+Zm9ybWF0KGFbaV0sIG15U3RyaW5n
KTsKLSAqICAgICAgICAgbXlTdHJpbmcgKz0gIiA7ICI7CisgKiAgICAgTnVtYmVyRm9ybWF0ICpu
ZiA9IE51bWJlckZvcm1hdDo6Y3JlYXRlSW5zdGFuY2UoIHN1Y2Nlc3MgKTsKKyAqICAgICBmb3Ig
KGludDMyX3QgbnVtYmVyOiB7MTIzLCAzMzMzLCAtMTIzNDU2N30pIHsKKyAqICAgICAgICAgbmYt
PmZvcm1hdChudW1iZXIsIG15U3RyaW5nKTsKKyAqICAgICAgICAgbXlTdHJpbmcgKz0gIjsgIjsK
ICAqICAgICB9CiAgKiAgICAgY291dCA8PCAiIEV4YW1wbGUgMjogIiA8PCBteVN0cmluZyA8PCBl
bmRsOwogICogXGVuZGNvZGUKLSAqIDwvcHJlPgogICogVG8gZm9ybWF0IGEgbnVtYmVyIGZvciBh
IGRpZmZlcmVudCBMb2NhbGUsIHNwZWNpZnkgaXQgaW4gdGhlCi0gKiBjYWxsIHRvIGNyZWF0ZUlu
c3RhbmNlKCkuCi0gKiA8cHJlPgorICogY2FsbCB0byBcYyBjcmVhdGVJbnN0YW5jZSgpLgogICog
XGNvZGUKLSAqICAgICBuZiA9IE51bWJlckZvcm1hdDo6Y3JlYXRlSW5zdGFuY2UoIExvY2FsZTo6
RlJFTkNILCBzdWNjZXNzICk7CisgKiAgICAgbmYgPSBOdW1iZXJGb3JtYXQ6OmNyZWF0ZUluc3Rh
bmNlKExvY2FsZTo6Z2V0RnJlbmNoKCksIHN1Y2Nlc3MpOwogICogXGVuZGNvZGUKLSAqIDwvcHJl
PgotICogWW91IGNhbiB1c2UgYSBOdW1iZXJGb3JtYXQgdG8gcGFyc2UgYWxzby4KLSAqIDxwcmU+
CisgKiBZb3UgY2FuIHVzZSBhIFxjIE51bWJlckZvcm1hdCB0byBwYXJzZSBhbHNvLgogICogXGNv
ZGUKICAqICAgIFVFcnJvckNvZGUgc3VjY2VzczsKICAqICAgIEZvcm1hdHRhYmxlIHJlc3VsdCgt
OTk5KTsgIC8vIGluaXRpYWxpemVkIHdpdGggZXJyb3IgY29kZQogICogICAgbmYtPnBhcnNlKG15
U3RyaW5nLCByZXN1bHQsIHN1Y2Nlc3MpOwogICogXGVuZGNvZGUKLSAqIDwvcHJlPgotICogVXNl
IGNyZWF0ZUluc3RhbmNlIHRvIGdldCB0aGUgbm9ybWFsIG51bWJlciBmb3JtYXQgZm9yIHRoYXQg
Y291bnRyeS4KLSAqIFRoZXJlIGFyZSBvdGhlciBzdGF0aWMgZmFjdG9yeSBtZXRob2RzIGF2YWls
YWJsZS4gIFVzZSBnZXRDdXJyZW5jeQotICogdG8gZ2V0IHRoZSBjdXJyZW5jeSBudW1iZXIgZm9y
bWF0IGZvciB0aGF0IGNvdW50cnkuICBVc2UgZ2V0UGVyY2VudAorICogVXNlIFxjIGNyZWF0ZUlu
c3RhbmNlKCkgdG8gZ2V0IHRoZSBub3JtYWwgbnVtYmVyIGZvcm1hdCBmb3IgYSBcYyBMb2NhbGUu
CisgKiBUaGVyZSBhcmUgb3RoZXIgc3RhdGljIGZhY3RvcnkgbWV0aG9kcyBhdmFpbGFibGUuICBV
c2UgXGMgY3JlYXRlQ3VycmVuY3lJbnN0YW5jZSgpCisgKiB0byBnZXQgdGhlIGN1cnJlbmN5IG51
bWJlciBmb3JtYXQgZm9yIHRoYXQgY291bnRyeS4gIFVzZSBcYyBjcmVhdGVQZXJjZW50SW5zdGFu
Y2UoKQogICogdG8gZ2V0IGEgZm9ybWF0IGZvciBkaXNwbGF5aW5nIHBlcmNlbnRhZ2VzLiBXaXRo
IHRoaXMgZm9ybWF0LCBhCiAgKiBmcmFjdGlvbiBmcm9tIDAuNTMgaXMgZGlzcGxheWVkIGFzIDUz
JS4KICAqIDxQPgotICogU3RhcnRpbmcgZnJvbSBJQ1UgNC4yLCB5b3UgY2FuIHVzZSBjcmVhdGVJ
bnN0YW5jZSgpIGJ5IHBhc3NpbmcgaW4gYSAnc3R5bGUnCi0gKiBhcyBwYXJhbWV0ZXIgdG8gZ2V0
IHRoZSBjb3JyZWN0IGluc3RhbmNlLgotICogRm9yIGV4YW1wbGUsCi0gKiB1c2UgY3JlYXRlSW5z
dGFuY2UoLi4ua051bWJlclN0eWxlLi4uKSB0byBnZXQgdGhlIG5vcm1hbCBudW1iZXIgZm9ybWF0
LAotICogY3JlYXRlSW5zdGFuY2UoLi4ua1BlcmNlbnRTdHlsZS4uLikgdG8gZ2V0IGEgZm9ybWF0
IGZvciBkaXNwbGF5aW5nCi0gKiBwZXJjZW50YWdlLAotICogY3JlYXRlSW5zdGFuY2UoLi4ua1Nj
aWVudGlmaWNTdHlsZS4uLikgdG8gZ2V0IGEgZm9ybWF0IGZvciBkaXNwbGF5aW5nCi0gKiBzY2ll
bnRpZmljIG51bWJlciwKLSAqIGNyZWF0ZUluc3RhbmNlKC4uLmtDdXJyZW5jeVN0eWxlLi4uKSB0
byBnZXQgdGhlIGN1cnJlbmN5IG51bWJlciBmb3JtYXQsCi0gKiBpbiB3aGljaCB0aGUgY3VycmVu
Y3kgaXMgcmVwcmVzZW50ZWQgYnkgaXRzIHN5bWJvbCwgZm9yIGV4YW1wbGUsICIkMy4wMCIuCi0g
KiBjcmVhdGVJbnN0YW5jZSguLi5rSXNvQ3VycmVuY3lTdHlsZS4uLikgIHRvIGdldCB0aGUgY3Vy
cmVuY3kgbnVtYmVyIGZvcm1hdCwKLSAqIGluIHdoaWNoIHRoZSBjdXJyZW5jeSBpcyByZXByZXNl
bnRlZCBieSBpdHMgSVNPIGNvZGUsIGZvciBleGFtcGxlICJVU0QzLjAwIi4KLSAqIGNyZWF0ZUlu
c3RhbmNlKC4uLmtQbHVyYWxDdXJyZW5jeVN0eWxlLi4uKSB0byBnZXQgdGhlIGN1cnJlbmN5IG51
bWJlciBmb3JtYXQsCisgKiBUaGUgdHlwZSBvZiBudW1iZXIgZm9ybWF0dGluZyBjYW4gYmUgc3Bl
Y2lmaWVkIGJ5IHBhc3NpbmcgYSAnc3R5bGUnIHBhcmFtZXRlciB0byBcYyBjcmVhdGVJbnN0YW5j
ZSgpLgorICogRm9yIGV4YW1wbGUsIHVzZVxuCisgKiBcYyBjcmVhdGVJbnN0YW5jZShsb2NhbGUs
IFVOVU1fREVDSU1BTCwgZXJyb3JDb2RlKSB0byBnZXQgdGhlIG5vcm1hbCBudW1iZXIgZm9ybWF0
LFxuCisgKiBcYyBjcmVhdGVJbnN0YW5jZShsb2NhbGUsIFVOVU1fUEVSQ0VOVCwgZXJyb3JDb2Rl
KSB0byBnZXQgYSBmb3JtYXQgZm9yIGRpc3BsYXlpbmcgcGVyY2VudGFnZSxcbgorICogXGMgY3Jl
YXRlSW5zdGFuY2UobG9jYWxlLCBVTlVNX1NDSUVOVElGSUMsIGVycm9yQ29kZSkgdG8gZ2V0IGEg
Zm9ybWF0IGZvciBkaXNwbGF5aW5nIHNjaWVudGlmaWMgbnVtYmVyLFxuCisgKiBcYyBjcmVhdGVJ
bnN0YW5jZShsb2NhbGUsIFVOVU1fQ1VSUkVOQ1ksIGVycm9yQ29kZSkgdG8gZ2V0IHRoZSBjdXJy
ZW5jeSBudW1iZXIgZm9ybWF0LAorICogaW4gd2hpY2ggdGhlIGN1cnJlbmN5IGlzIHJlcHJlc2Vu
dGVkIGJ5IGl0cyBzeW1ib2wsIGZvciBleGFtcGxlLCAiJDMuMDAiLlxuCisgKiBcYyBjcmVhdGVJ
bnN0YW5jZShsb2NhbGUsIFVOVU1fQ1VSUkVOQ1lfSVNPLCBlcnJvckNvZGUpICB0byBnZXQgdGhl
IGN1cnJlbmN5IG51bWJlciBmb3JtYXQsCisgKiBpbiB3aGljaCB0aGUgY3VycmVuY3kgaXMgcmVw
cmVzZW50ZWQgYnkgaXRzIElTTyBjb2RlLCBmb3IgZXhhbXBsZSAiVVNEMy4wMCIuXG4KKyAqIFxj
IGNyZWF0ZUluc3RhbmNlKGxvY2FsZSwgVU5VTV9DVVJSRU5DWV9QTFVSQUwsIGVycm9yQ29kZSkg
dG8gZ2V0IHRoZSBjdXJyZW5jeSBudW1iZXIgZm9ybWF0LAogICogaW4gd2hpY2ggdGhlIGN1cnJl
bmN5IGlzIHJlcHJlc2VudGVkIGJ5IGl0cyBmdWxsIG5hbWUgaW4gcGx1cmFsIGZvcm1hdCwKICAq
IGZvciBleGFtcGxlLCAiMy4wMCBVUyBkb2xsYXJzIiBvciAiMS4wMCBVUyBkb2xsYXIiLgogICog
PFA+CiAgKiBZb3UgY2FuIGFsc28gY29udHJvbCB0aGUgZGlzcGxheSBvZiBudW1iZXJzIHdpdGgg
c3VjaCBtZXRob2RzIGFzCi0gKiBnZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMuICBJZiB5b3Ugd2Fu
dCBldmVuIG1vcmUgY29udHJvbCBvdmVyIHRoZQorICogXGMgZ2V0TWluaW11bUZyYWN0aW9uRGln
aXRzKCkuICBJZiB5b3Ugd2FudCBldmVuIG1vcmUgY29udHJvbCBvdmVyIHRoZQogICogZm9ybWF0
IG9yIHBhcnNpbmcsIG9yIHdhbnQgdG8gZ2l2ZSB5b3VyIHVzZXJzIG1vcmUgY29udHJvbCwgeW91
IGNhbgotICogdHJ5IGNhc3RpbmcgdGhlIE51bWJlckZvcm1hdCB5b3UgZ2V0IGZyb20gdGhlIGZh
Y3RvcnkgbWV0aG9kcyB0byBhCi0gKiBEZWNpbWFsTnVtYmVyRm9ybWF0LiBUaGlzIHdpbGwgd29y
ayBmb3IgdGhlIHZhc3QgbWFqb3JpdHkgb2YKLSAqIGNvdW50cmllczsganVzdCByZW1lbWJlciB0
byBwdXQgaXQgaW4gYSB0cnkgYmxvY2sgaW4gY2FzZSB5b3UKKyAqIHRyeSBkeW5hbWljX2Nhc3Rp
bmcgdGhlIFxjIE51bWJlckZvcm1hdCB5b3UgZ2V0IGZyb20gdGhlIGZhY3RvcnkgbWV0aG9kcyB0
byBhCisgKiBcYyBEZWNpbWFsRm9ybWF0LiBUaGlzIHdpbGwgd29yayBmb3IgdGhlIHZhc3QgbWFq
b3JpdHkgb2YKKyAqIGNvdW50cmllczsganVzdCByZW1lbWJlciB0byB0ZXN0IGZvciBOVUxMIGlu
IGNhc2UgeW91CiAgKiBlbmNvdW50ZXIgYW4gdW51c3VhbCBvbmUuCiAgKiA8UD4KICAqIFlvdSBj
YW4gYWxzbyB1c2UgZm9ybXMgb2YgdGhlIHBhcnNlIGFuZCBmb3JtYXQgbWV0aG9kcyB3aXRoCi0g
KiBQYXJzZVBvc2l0aW9uIGFuZCBGaWVsZFBvc2l0aW9uIHRvIGFsbG93IHlvdSB0bzoKKyAqIFxj
IFBhcnNlUG9zaXRpb24gYW5kIFxjIEZpZWxkUG9zaXRpb24gdG8gYWxsb3cgeW91IHRvOgogICog
PHVsIHR5cGU9cm91bmQ+CiAgKiAgIDxsaT4oYSkgcHJvZ3Jlc3NpdmVseSBwYXJzZSB0aHJvdWdo
IHBpZWNlcyBvZiBhIHN0cmluZy4KICAqICAgPGxpPihiKSBhbGlnbiB0aGUgZGVjaW1hbCBwb2lu
dCBhbmQgb3RoZXIgYXJlYXMuCkBAIC0xNTAsOCArMTUyLDggQEAgY2xhc3MgU3RyaW5nRW51bWVy
YXRpb247CiAgKiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhbGlnbiBudW1iZXJzIGluIHR3byB3YXlz
LgogICogPFA+CiAgKiBJZiB5b3UgYXJlIHVzaW5nIGEgbW9ub3NwYWNlZCBmb250IHdpdGggc3Bh
Y2luZyBmb3IgYWxpZ25tZW50LCB5b3UKLSAqIGNhbiBwYXNzIHRoZSBGaWVsZFBvc2l0aW9uIGlu
IHlvdXIgZm9ybWF0IGNhbGwsIHdpdGggZmllbGQgPQotICogSU5URUdFUl9GSUVMRC4gT24gb3V0
cHV0LCBnZXRFbmRJbmRleCB3aWxsIGJlIHNldCB0byB0aGUgb2Zmc2V0CisgKiBjYW4gcGFzcyB0
aGUgXGMgRmllbGRQb3NpdGlvbiBpbiB5b3VyIGZvcm1hdCBjYWxsLCB3aXRoIGZpZWxkID0KKyAq
IFxjIFVOVU1fSU5URUdFUl9GSUVMRC4gT24gb3V0cHV0LCBcYyBnZXRFbmRJbmRleCB3aWxsIGJl
IHNldCB0byB0aGUgb2Zmc2V0CiAgKiBiZXR3ZWVuIHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUg
aW50ZWdlciBhbmQgdGhlIGRlY2ltYWwuIEFkZAogICogKGRlc2lyZWRTcGFjZUNvdW50IC0gZ2V0
RW5kSW5kZXgpIHNwYWNlcyBhdCB0aGUgZnJvbnQgb2YgdGhlCiAgKiBzdHJpbmcuCkBAIC0xNzEs
NiArMTczLDMzIEBAIGNsYXNzIFN0cmluZ0VudW1lcmF0aW9uOwogICovCiBjbGFzcyBVX0kxOE5f
QVBJIE51bWJlckZvcm1hdCA6IHB1YmxpYyBGb3JtYXQgewogcHVibGljOgorICAgIC8qKgorICAg
ICAqIFJvdW5kaW5nIG1vZGUuCisgICAgICoKKyAgICAgKiA8cD4KKyAgICAgKiBGb3IgbW9yZSBk
ZXRhaWwgb24gcm91bmRpbmcgbW9kZXMsIHNlZToKKyAgICAgKiBodHRwOi8vdXNlcmd1aWRlLmlj
dS1wcm9qZWN0Lm9yZy9mb3JtYXRwYXJzZS9udW1iZXJzL3JvdW5kaW5nLW1vZGVzCisgICAgICoK
KyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBlbnVtIEVSb3VuZGluZ01vZGUg
eworICAgICAgICBrUm91bmRDZWlsaW5nLCAgLyoqPCBSb3VuZCB0b3dhcmRzIHBvc2l0aXZlIGlu
ZmluaXR5ICovCisgICAgICAgIGtSb3VuZEZsb29yLCAgICAvKio8IFJvdW5kIHRvd2FyZHMgbmVn
YXRpdmUgaW5maW5pdHkgKi8KKyAgICAgICAga1JvdW5kRG93biwgICAgIC8qKjwgUm91bmQgdG93
YXJkcyB6ZXJvICovCisgICAgICAgIGtSb3VuZFVwLCAgICAgICAvKio8IFJvdW5kIGF3YXkgZnJv
bSB6ZXJvICovCisgICAgICAgIGtSb3VuZEhhbGZFdmVuLCAvKio8IFJvdW5kIHRvd2FyZHMgdGhl
IG5lYXJlc3QgaW50ZWdlciwgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG93YXJk
cyB0aGUgbmVhcmVzdCBldmVuIGludGVnZXIgaWYgZXF1aWRpc3RhbnQgKi8KKyAgICAgICAga1Jv
dW5kSGFsZkRvd24sIC8qKjwgUm91bmQgdG93YXJkcyB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBvcgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3dhcmRzIHplcm8gaWYgZXF1aWRpc3RhbnQg
Ki8KKyAgICAgICAga1JvdW5kSGFsZlVwLCAgIC8qKjwgUm91bmQgdG93YXJkcyB0aGUgbmVhcmVz
dCBpbnRlZ2VyLCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2F5IGZyb20gemVy
byBpZiBlcXVpZGlzdGFudCAqLworICAgICAgICAvKioKKyAgICAgICAgICAqICBSZXR1cm4gVV9G
T1JNQVRfSU5FWEFDVF9FUlJPUiBpZiBudW1iZXIgZG9lcyBub3QgZm9ybWF0IGV4YWN0bHkuCisg
ICAgICAgICAgKiAgQHN0YWJsZSBJQ1UgNC44CisgICAgICAgICAgKi8KKyAgICAgICAga1JvdW5k
VW5uZWNlc3NhcnkKKyAgICB9OworCiAgICAgLyoqCiAgICAgICogQWxpZ25tZW50IEZpZWxkIGNv
bnN0YW50cyB1c2VkIHRvIGNvbnN0cnVjdCBhIEZpZWxkUG9zaXRpb24gb2JqZWN0LgogICAgICAq
IFNpZ25pZmllcyB0aGF0IHRoZSBwb3NpdGlvbiBvZiB0aGUgaW50ZWdlciBwYXJ0IG9yIGZyYWN0
aW9uIHBhcnQgb2YKQEAgLTI3MSw3ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgICogICAgICAgICAg
ICAgICAgICBOVUxMLgogICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBhcmFtIGZpbGxl
ZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCiAgICAgICogQHJldHVybiAgICAgICAgICBS
ZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCi0gICAgICogQHN0YWJsZSA0LjQKKyAg
ICAgKiBAc3RhYmxlIElDVSA0LjQKICAgICAgKi8KICAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcm
IGZvcm1hdChjb25zdCBGb3JtYXR0YWJsZSYgb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLApAQCAtMzk0LDcgKzQyMyw3IEBAIHB1
YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgICAgIENhbiBiZSBOVUxMLgogICAgICAqIEBwYXJh
bSBzdGF0dXMgICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0
dXMuCiAgICAgICogQHJldHVybiAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJh
bWV0ZXIuCi0gICAgICogQHN0YWJsZSA0LjQKKyAgICAgKiBAc3RhYmxlIElDVSA0LjQKICAgICAg
Ki8KICAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZvcm1hdChkb3VibGUgbnVtYmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLApA
QCAtNDQ2LDcgKzQ3NSw3IEBAIHB1YmxpYzoKICAgICAgKiAgICAgICAgICAgICAgICAgIENhbiBi
ZSBOVUxMLgogICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0IHBhcmFtIGZpbGxlZCB3aXRo
IHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCiAgICAgICogQHJldHVybiAgICAgICAgICBSZWZlcmVu
Y2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCi0gICAgICogQHN0YWJsZSA0LjQKKyAgICAgKiBA
c3RhYmxlIElDVSA0LjQKICAgICAgKi8KICAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZvcm1h
dChpbnQzMl90IG51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlj
b2RlU3RyaW5nJiBhcHBlbmRUbywKQEAgLTQ3OSw2ICs1MDgsNyBAQCBwdWJsaWM6CiAgICAgICog
ICAgICAgICAgICAgICAgICBSZXN1bHQgaXMgYXBwZW5kZWQgdG8gZXhpc3RpbmcgY29udGVudHMu
CiAgICAgICogQHBhcmFtIHBvcyAgICAgICBPbiBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLCBp
ZiBkZXNpcmVkLgogICAgICAqICAgICAgICAgICAgICAgICAgT24gb3V0cHV0OiB0aGUgb2Zmc2V0
cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLgorICAgICAqIEBwYXJhbSBzdGF0dXMgICAgT3V0cHV0
IHBhcmFtIGZpbGxlZCB3aXRoIHN1Y2Nlc3MvZmFpbHVyZSBzdGF0dXMuCiAgICAgICogQHJldHVy
biAgICAgICAgICBSZWZlcmVuY2UgdG8gJ2FwcGVuZFRvJyBwYXJhbWV0ZXIuCiAgICAgICogQGlu
dGVybmFsCiAgICAgKi8KQEAgLTQ5OCw3ICs1MjgsNyBAQCBwdWJsaWM6CiAgICAgICogICAgICAg
ICAgICAgICAgICBDYW4gYmUgTlVMTC4KICAgICAgKiBAcGFyYW0gc3RhdHVzICAgIE91dHB1dCBw
YXJhbSBmaWxsZWQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzLgogICAgICAqIEByZXR1cm4g
ICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycgcGFyYW1ldGVyLgotICAgICAqIEBzdGFi
bGUgNC40CisgICAgICogQHN0YWJsZSBJQ1UgNC40CiAgICAgICovCiAgICAgdmlydHVhbCBVbmlj
b2RlU3RyaW5nJiBmb3JtYXQoaW50NjRfdCBudW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCkBAIC01MTksMTUgKzU0OSwxNSBA
QCBwdWJsaWM6CiAgICAgICogICAgICAgICAgICAgICAgICBDYW4gYmUgTlVMTC4KICAgICAgKiBA
cGFyYW0gc3RhdHVzICAgIE91dHB1dCBwYXJhbSBmaWxsZWQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUg
c3RhdHVzLgogICAgICAqIEByZXR1cm4gICAgICAgICAgUmVmZXJlbmNlIHRvICdhcHBlbmRUbycg
cGFyYW1ldGVyLgotICAgICAqIEBzdGFibGUgNC40CisgICAgICogQHN0YWJsZSBJQ1UgNC40CiAg
ICAgICovCi0gICAgdmlydHVhbCBVbmljb2RlU3RyaW5nJiBmb3JtYXQoY29uc3QgU3RyaW5nUGll
Y2UgJm51bWJlciwKKyAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZvcm1hdChTdHJpbmdQaWVj
ZSBudW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVN0cmlu
ZyYgYXBwZW5kVG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3Np
dGlvbkl0ZXJhdG9yKiBwb3NJdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVFcnJvckNvZGUmIHN0YXR1cykgY29uc3Q7CiBwdWJsaWM6CiAgICAgLyoqCi0gICAgICogRm9y
bWF0IGEgZGVjaW1hbCBudW1iZXIuIAorICAgICAqIEZvcm1hdCBhIGRlY2ltYWwgbnVtYmVyLgog
ICAgICAqIFRoZSBudW1iZXIgaXMgYSBEaWdpdExpc3Qgd3JhcHBlciBvbnRvIGEgZmxvYXRpbmcg
cG9pbnQgZGVjaW1hbCBudW1iZXIuCiAgICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24g
aW4gTnVtYmVyRm9ybWF0IGNvbnZlcnRzIHRoZSBkZWNpbWFsIG51bWJlcgogICAgICAqIHRvIGEg
ZG91YmxlIGFuZCBmb3JtYXRzIHRoYXQuICBTdWJjbGFzc2VzIG9mIE51bWJlckZvcm1hdCB0aGF0
IHdhbnQKQEAgLTU0OSw3ICs1NzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKIAogICAgIC8qKgotICAgICAq
IEZvcm1hdCBhIGRlY2ltYWwgbnVtYmVyLiAKKyAgICAgKiBGb3JtYXQgYSBkZWNpbWFsIG51bWJl
ci4KICAgICAgKiBUaGUgbnVtYmVyIGlzIGEgRGlnaXRMaXN0IHdyYXBwZXIgb250byBhIGZsb2F0
aW5nIHBvaW50IGRlY2ltYWwgbnVtYmVyLgogICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0
aW9uIGluIE51bWJlckZvcm1hdCBjb252ZXJ0cyB0aGUgZGVjaW1hbCBudW1iZXIKICAgICAgKiB0
byBhIGRvdWJsZSBhbmQgZm9ybWF0cyB0aGF0LiAgU3ViY2xhc3NlcyBvZiBOdW1iZXJGb3JtYXQg
dGhhdCB3YW50CkBAIC02NTksOCArNjg5LDggQEAgcHVibGljOgogICAgIC8qKgogICAgICAqIFNl
dHMgd2hldGhlciBsZW5pZW50IHBhcnNpbmcgc2hvdWxkIGJlIGVuYWJsZWQgKGl0IGlzIG9mZiBi
eSBkZWZhdWx0KS4KICAgICAgKgotICAgICAqIEBwYXJhbSBlbmFibGUgPGNvZGU+VFJVRTwvY29k
ZT4gaWYgbGVuaWVudCBwYXJzaW5nIHNob3VsZCBiZSB1c2VkLAotICAgICAqICAgICAgICAgICAg
ICAgPGNvZGU+RkFMU0U8L2NvZGU+IG90aGVyd2lzZS4KKyAgICAgKiBAcGFyYW0gZW5hYmxlIFxj
IFRSVUUgaWYgbGVuaWVudCBwYXJzaW5nIHNob3VsZCBiZSB1c2VkLAorICAgICAqICAgICAgICAg
ICAgICAgXGMgRkFMU0Ugb3RoZXJ3aXNlLgogICAgICAqIEBzdGFibGUgSUNVIDQuOAogICAgICAq
LwogICAgIHZpcnR1YWwgdm9pZCBzZXRMZW5pZW50KFVCb29sIGVuYWJsZSk7CkBAIC02NjgsMjgg
KzY5OCwyMyBAQCBwdWJsaWM6CiAgICAgLyoqCiAgICAgICogUmV0dXJucyB3aGV0aGVyIGxlbmll
bnQgcGFyc2luZyBpcyBlbmFibGVkIChpdCBpcyBvZmYgYnkgZGVmYXVsdCkuCiAgICAgICoKLSAg
ICAgKiBAcmV0dXJuIDxjb2RlPlRSVUU8L2NvZGU+IGlmIGxlbmllbnQgcGFyc2luZyBpcyBlbmFi
bGVkLAotICAgICAqICAgICAgICAgPGNvZGU+RkFMU0U8L2NvZGU+IG90aGVyd2lzZS4KKyAgICAg
KiBAcmV0dXJuIFxjIFRSVUUgaWYgbGVuaWVudCBwYXJzaW5nIGlzIGVuYWJsZWQsCisgICAgICog
ICAgICAgICBcYyBGQUxTRSBvdGhlcndpc2UuCiAgICAgICogQHNlZSAjc2V0TGVuaWVudAogICAg
ICAqIEBzdGFibGUgSUNVIDQuOAogICAgICAqLwogICAgIHZpcnR1YWwgVUJvb2wgaXNMZW5pZW50
KHZvaWQpIGNvbnN0OwogCiAgICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgZGVmYXVsdCBudW1i
ZXIgZm9ybWF0IGZvciB0aGUgY3VycmVudCBkZWZhdWx0Ci0gICAgICogbG9jYWxlLiAgVGhlIGRl
ZmF1bHQgZm9ybWF0IGlzIG9uZSBvZiB0aGUgc3R5bGVzIHByb3ZpZGVkIGJ5Ci0gICAgICogdGhl
IG90aGVyIGZhY3RvcnkgbWV0aG9kczogZ2V0TnVtYmVySW5zdGFuY2UsCi0gICAgICogZ2V0Q3Vy
cmVuY3lJbnN0YW5jZSBvciBnZXRQZXJjZW50SW5zdGFuY2UuICBFeGFjdGx5IHdoaWNoIG9uZQot
ICAgICAqIGlzIGxvY2FsZSBkZXBlbmRhbnQuCisgICAgICogQ3JlYXRlIGEgZGVmYXVsdCBzdHls
ZSBOdW1iZXJGb3JtYXQgZm9yIHRoZSBjdXJyZW50IGRlZmF1bHQgbG9jYWxlLgorICAgICAqIFRo
ZSBkZWZhdWx0IGZvcm1hdHRpbmcgc3R5bGUgaXMgbG9jYWxlIGRlcGVuZGVudC4KICAgICAgKiBA
c3RhYmxlIElDVSAyLjAKICAgICAgKi8KICAgICBzdGF0aWMgTnVtYmVyRm9ybWF0KiBVX0VYUE9S
VDIgY3JlYXRlSW5zdGFuY2UoVUVycm9yQ29kZSYpOwogCiAgICAgLyoqCi0gICAgICogUmV0dXJu
cyB0aGUgZGVmYXVsdCBudW1iZXIgZm9ybWF0IGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KLSAg
ICAgKiBUaGUgZGVmYXVsdCBmb3JtYXQgaXMgb25lIG9mIHRoZSBzdHlsZXMgcHJvdmlkZWQgYnkg
dGhlIG90aGVyCi0gICAgICogZmFjdG9yeSBtZXRob2RzOiBnZXROdW1iZXJJbnN0YW5jZSwgZ2V0
Q3VycmVuY3lJbnN0YW5jZSBvcgotICAgICAqIGdldFBlcmNlbnRJbnN0YW5jZS4gIEV4YWN0bHkg
d2hpY2ggb25lIGlzIGxvY2FsZSBkZXBlbmRhbnQuCisgICAgICogQ3JlYXRlIGEgZGVmYXVsdCBz
dHlsZSBOdW1iZXJGb3JtYXQgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlLgorICAgICAqIFRoZSBk
ZWZhdWx0IGZvcm1hdHRpbmcgc3R5bGUgaXMgbG9jYWxlIGRlcGVuZGVudC4KICAgICAgKiBAcGFy
YW0gaW5Mb2NhbGUgICAgdGhlIGdpdmVuIGxvY2FsZS4KICAgICAgKiBAc3RhYmxlIElDVSAyLjAK
ICAgICAgKi8KQEAgLTY5Nyw3ICs3MjIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYpOwogCiAgICAgLyoqCi0gICAgICogQ3Jl
YXRlcyB0aGUgc3BlY2lmaWVkIGRlY2ltYWwgZm9ybWF0IHN0eWxlIG9mIHRoZSBkZXNpcmVkIGxv
Y2FsZS4KKyAgICAgKiBDcmVhdGUgYSBzcGVjaWZpYyBzdHlsZSBOdW1iZXJGb3JtYXQgZm9yIHRo
ZSBzcGVjaWZpZWQgbG9jYWxlLgogICAgICAqIEBwYXJhbSBkZXNpcmVkTG9jYWxlICAgIHRoZSBn
aXZlbiBsb2NhbGUuCiAgICAgICogQHBhcmFtIHN0eWxlICAgICAgICAgICAgdGhlIGdpdmVuIHN0
eWxlLgogICAgICAqIEBwYXJhbSBlcnJvckNvZGUgICAgICAgIE91dHB1dCBwYXJhbSBmaWxsZWQg
d2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzLgpAQCAtODIxLDcgKzg0Niw3IEBAIHB1YmxpYzoK
ICAgICAgKiBSZXR1cm5zIHRydWUgaWYgZ3JvdXBpbmcgaXMgdXNlZCBpbiB0aGlzIGZvcm1hdC4g
Rm9yIGV4YW1wbGUsCiAgICAgICogaW4gdGhlIEVuZ2xpc2ggbG9jYWxlLCB3aXRoIGdyb3VwaW5n
IG9uLCB0aGUgbnVtYmVyIDEyMzQ1NjcKICAgICAgKiBtaWdodCBiZSBmb3JtYXR0ZWQgYXMgIjEs
MjM0LDU2NyIuIFRoZSBncm91cGluZyBzZXBhcmF0b3IgYXMKLSAgICAgKiB3ZWxsIGFzIHRoZSBz
aXplIG9mIGVhY2ggZ3JvdXAgaXMgbG9jYWxlIGRlcGVuZGFudCBhbmQgaXMKKyAgICAgKiB3ZWxs
IGFzIHRoZSBzaXplIG9mIGVhY2ggZ3JvdXAgaXMgbG9jYWxlIGRlcGVuZGVudCBhbmQgaXMKICAg
ICAgKiBkZXRlcm1pbmVkIGJ5IHN1Yi1jbGFzc2VzIG9mIE51bWJlckZvcm1hdC4KICAgICAgKiBA
c2VlIHNldEdyb3VwaW5nVXNlZAogICAgICAqIEBzdGFibGUgSUNVIDIuMApAQCAtOTM4LDcgKzk2
Myw3IEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gZWMgaW5wdXQtb3V0cHV0IGVycm9yIGNvZGUK
ICAgICAgKiBAc3RhYmxlIElDVSAzLjAKICAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vy
cmVuY3koY29uc3QgVUNoYXIqIHRoZUN1cnJlbmN5LCBVRXJyb3JDb2RlJiBlYyk7CisgICAgdmly
dHVhbCB2b2lkIHNldEN1cnJlbmN5KGNvbnN0IGNoYXIxNl90KiB0aGVDdXJyZW5jeSwgVUVycm9y
Q29kZSYgZWMpOwogCiAgICAgLyoqCiAgICAgICogR2V0cyB0aGUgY3VycmVuY3kgdXNlZCB0byBk
aXNwbGF5IGN1cnJlbmN5CkBAIC05NDcsNyArOTcyLDcgQEAgcHVibGljOgogICAgICAqIHRoZSBj
dXJyZW5jeSBpbiB1c2UsIG9yIGEgcG9pbnRlciB0byB0aGUgZW1wdHkgc3RyaW5nLgogICAgICAq
IEBzdGFibGUgSUNVIDIuNgogICAgICAqLwotICAgIGNvbnN0IFVDaGFyKiBnZXRDdXJyZW5jeSgp
IGNvbnN0OworICAgIGNvbnN0IGNoYXIxNl90KiBnZXRDdXJyZW5jeSgpIGNvbnN0OwogCQogICAg
IC8qKgogICAgICAqIFNldCBhIHBhcnRpY3VsYXIgVURpc3BsYXlDb250ZXh0IHZhbHVlIGluIHRo
ZSBmb3JtYXR0ZXIsIHN1Y2ggYXMKQEAgLTk1NSw3ICs5ODAsNyBAQCBwdWJsaWM6CiAgICAgICog
QHBhcmFtIHZhbHVlIFRoZSBVRGlzcGxheUNvbnRleHQgdmFsdWUgdG8gc2V0LgogICAgICAqIEBw
YXJhbSBzdGF0dXMgSW5wdXQvb3V0cHV0IHN0YXR1cy4gSWYgYXQgZW50cnkgdGhpcyBpbmRpY2F0
ZXMgYSBmYWlsdXJlCiAgICAgICogICAgICAgICAgICAgICBzdGF0dXMsIHRoZSBmdW5jdGlvbiB3
aWxsIGRvIG5vdGhpbmc7IG90aGVyd2lzZSB0aGlzIHdpbGwgYmUKLSAgICAgKiAgICAgICAgICAg
ICAgIHVwZGF0ZWQgd2l0aCBhbnkgbmV3IHN0YXR1cyBmcm9tIHRoZSBmdW5jdGlvbi4gCisgICAg
ICogICAgICAgICAgICAgICB1cGRhdGVkIHdpdGggYW55IG5ldyBzdGF0dXMgZnJvbSB0aGUgZnVu
Y3Rpb24uCiAgICAgICogQHN0YWJsZSBJQ1UgNTMKICAgICAgKi8KICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGV4dChVRGlzcGxheUNvbnRleHQgdmFsdWUsIFVFcnJvckNvZGUmIHN0YXR1cyk7CkBA
IC05NjYsMTIgKzk5MSwyNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHR5cGUgVGhlIFVEaXNw
bGF5Q29udGV4dFR5cGUgd2hvc2UgdmFsdWUgdG8gcmV0dXJuCiAgICAgICogQHBhcmFtIHN0YXR1
cyBJbnB1dC9vdXRwdXQgc3RhdHVzLiBJZiBhdCBlbnRyeSB0aGlzIGluZGljYXRlcyBhIGZhaWx1
cmUKICAgICAgKiAgICAgICAgICAgICAgIHN0YXR1cywgdGhlIGZ1bmN0aW9uIHdpbGwgZG8gbm90
aGluZzsgb3RoZXJ3aXNlIHRoaXMgd2lsbCBiZQotICAgICAqICAgICAgICAgICAgICAgdXBkYXRl
ZCB3aXRoIGFueSBuZXcgc3RhdHVzIGZyb20gdGhlIGZ1bmN0aW9uLiAKKyAgICAgKiAgICAgICAg
ICAgICAgIHVwZGF0ZWQgd2l0aCBhbnkgbmV3IHN0YXR1cyBmcm9tIHRoZSBmdW5jdGlvbi4KICAg
ICAgKiBAcmV0dXJuIFRoZSBVRGlzcGxheUNvbnRleHRWYWx1ZSBmb3IgdGhlIHNwZWNpZmllZCB0
eXBlLgogICAgICAqIEBzdGFibGUgSUNVIDUzCiAgICAgICovCiAgICAgdmlydHVhbCBVRGlzcGxh
eUNvbnRleHQgZ2V0Q29udGV4dChVRGlzcGxheUNvbnRleHRUeXBlIHR5cGUsIFVFcnJvckNvZGUm
IHN0YXR1cykgY29uc3Q7CiAKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIHJvdW5kaW5nIG1vZGUu
IFRoaXMgd2lsbCBhbHdheXMgcmV0dXJuIE51bWJlckZvcm1hdDo6RVJvdW5kaW5nTW9kZTo6a1Jv
dW5kVW5uZWNlc3NhcnkKKyAgICAgKiBpZiB0aGUgc3ViY2xhc3MgZG9lcyBub3Qgc3VwcG9ydCBy
b3VuZGluZy4gCisgICAgICogQHJldHVybiBBIHJvdW5kaW5nIG1vZGUKKyAgICAgKiBAZHJhZnQg
SUNVIDYwCisgICAgICovCisgICAgdmlydHVhbCBFUm91bmRpbmdNb2RlIGdldFJvdW5kaW5nTW9k
ZSh2b2lkKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIFNldCB0aGUgcm91bmRpbmcgbW9kZS4g
SWYgYSBzdWJjbGFzcyBkb2VzIG5vdCBzdXBwb3J0IHJvdW5kaW5nLCB0aGlzIHdpbGwgZG8gbm90
aGluZy4KKyAgICAgKiBAcGFyYW0gcm91bmRpbmdNb2RlIEEgcm91bmRpbmcgbW9kZQorICAgICAq
IEBkcmFmdCBJQ1UgNjAKKyAgICAgKi8KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Um91bmRpbmdNb2Rl
KEVSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKTsKKwogcHVibGljOgogCiAgICAgLyoqCkBAIC0x
MDI1LDcgKzEwNjUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICogaGF2ZSBhIGNhcGFjaXR5IG9mIGF0
IGxlYXN0IDQKICAgICAgKiBAaW50ZXJuYWwKICAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
RWZmZWN0aXZlQ3VycmVuY3koVUNoYXIqIHJlc3VsdCwgVUVycm9yQ29kZSYgZWMpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBnZXRFZmZlY3RpdmVDdXJyZW5jeShjaGFyMTZfdCogcmVzdWx0LCBV
RXJyb3JDb2RlJiBlYykgY29uc3Q7CiAKICNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQogICAg
IC8qKgpAQCAtMTA2MiwxNSArMTEwMiwxNyBAQCBwcml2YXRlOgogICAgIGludDMyX3QgICAgIGZN
aW5GcmFjdGlvbkRpZ2l0czsKIAogICBwcm90ZWN0ZWQ6CisgICAgLyoqIFxpbnRlcm5hbCAqLwog
ICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IGdEZWZhdWx0TWF4SW50ZWdlckRpZ2l0czsKKyAgICAv
KiogXGludGVybmFsICovCiAgICAgc3RhdGljIGNvbnN0IGludDMyX3QgZ0RlZmF1bHRNaW5JbnRl
Z2VyRGlnaXRzOwotIAorCiAgIHByaXZhdGU6CiAgICAgVUJvb2wgICAgICBmUGFyc2VJbnRlZ2Vy
T25seTsKICAgICBVQm9vbCAgICAgIGZMZW5pZW50OyAvLyBUUlVFID0+IGxlbmllbnQgcGFyc2Ug
aXMgZW5hYmxlZAogCiAgICAgLy8gSVNPIGN1cnJlbmN5IGNvZGUKLSAgICBVQ2hhciAgICAgIGZD
dXJyZW5jeVs0XTsKKyAgICBjaGFyMTZfdCAgICAgIGZDdXJyZW5jeVs0XTsKIAogICAgIFVEaXNw
bGF5Q29udGV4dCBmQ2FwaXRhbGl6YXRpb25Db250ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL251bXN5cy5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9udW1zeXMu
aAppbmRleCBkZWVkYTJjYWJjZGUzNGRkMzMwNDJhZDcxYmQ4ZDc4OGNlODJlMDY5Li45ZWMzZjEz
ZmQxMGIzZTE1ZGJhODJiNmVlZTM5YWMzNGMwMzQyNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL251bXN5cy5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvbnVtc3lz
LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBh
bmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2Rl
Lm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9y
YXRpb24gYW5kCkBAIC0xOTEsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0QWxn
b3JpdGhtaWMoVUJvb2wgYWxnb3JpdGhtaWMpOwogCi0gICAgdm9pZCBzZXREZXNjKFVuaWNvZGVT
dHJpbmcgZGVzYyk7CisgICAgdm9pZCBzZXREZXNjKGNvbnN0IFVuaWNvZGVTdHJpbmcgJmRlc2Mp
OwogCiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IGNoYXIqIG5hbWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3BhcnNlZXJyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3BhcnNlZXJyLmgKaW5kZXggNDRmZjAwODExZGU3YmM1OWIzMmVkNDY3NzA1MGZiN2UxYjRmMTEz
Yi4uZmMxZTNmNGM4ZTYwYTFmZWJhMTJhNGI3MjE5NGIxZGY3NTcwYWQ0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS9wYXJzZWVyci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvcGFyc2VlcnIuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBV
bmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRw
Oi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAg
IENvcHlyaWdodCAoQykgMTk5OS0yMDA1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3BhcnNlcG9zLmggYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL3BhcnNlcG9zLmgKaW5kZXggY2RmNDllMDRlYzI3YzI2NjZlN2Q0MTNk
MGFkZWJlZTRkNTNkYzdjZC4uYmJlYmNhN2I1NzEzYTJhYTEyZDJmYTFmZDQzMzFjMWUzMjFhNDQ5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9wYXJzZXBvcy5oCisrKyBiL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvcGFyc2Vwb3MuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIw
MTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVy
bXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKiBD
b3B5cmlnaHQgKEMpIDE5OTctMjAwNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBD
b3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9wbGF0Zm9ybS5o
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9wbGF0Zm9ybS5oCmluZGV4IDQ4MjkwMDA2OWQxMGNh
ODcyNjkzZWE4MTljNWU0MzRlZjRjZWVkMmMuLmYyMjBiMWZjMzRkOGUyYTkwNzcxYjQ5YWVlZTRi
MjI5MGJmOGJmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcGxhdGZvcm0u
aAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3BsYXRmb3JtLmgKQEAgLTEsNyArMSw5IEBA
CisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGlj
ZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRt
bAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgotKiAgIENvcHlyaWdodCAoQykgMTk5Ny0y
MDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAx
OTk3LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlv
biBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoKICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgpAQCAtMTMwLDYgKzEzMiw4IEBACiAjZGVmaW5lIFVfUEZfQlJPV1NFUl9OQVRJVkVfQ0xJ
RU5UIDQwMjAKIC8qKiBBbmRyb2lkIGlzIGJhc2VkIG9uIExpbnV4LiBAaW50ZXJuYWwgKi8KICNk
ZWZpbmUgVV9QRl9BTkRST0lEIDQwNTAKKy8qKiBGdWNoc2lhIGlzIGEgUE9TSVgtaXNoIHBsYXRm
b3JtLiBAaW50ZXJuYWwgKi8KKyNkZWZpbmUgVV9QRl9GVUNIU0lBIDQxMDAKIC8qIE1heGltdW0g
dmFsdWUgZm9yIExpbnV4LWJhc2VkIHBsYXRmb3JtIGlzIDQ0OTkgKi8KIC8qKiB6L09TIGlzIHRo
ZSBzdWNjZXNzb3IgdG8gT1MvMzkwIHdoaWNoIHdhcyB0aGUgc3VjY2Vzc29yIHRvIE1WUy4gQGlu
dGVybmFsICovCiAjZGVmaW5lIFVfUEZfT1MzOTAgOTAwMApAQCAtMTQ4LDggKzE1MiwxMCBAQAog
IyAgIGRlZmluZSBVX1BMQVRGT1JNIFVfUEZfQU5EUk9JRAogICAgIC8qIEFuZHJvaWQgd2NoYXJf
dCBzdXBwb3J0IGRlcGVuZHMgb24gdGhlIEFQSSBsZXZlbC4gKi8KICMgICBpbmNsdWRlIDxhbmRy
b2lkL2FwaS1sZXZlbC5oPgotI2VsaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKKyNlbGlm
IGRlZmluZWQoX19wbmFjbF9fKSB8fCBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQogIyAgIGRl
ZmluZSBVX1BMQVRGT1JNIFVfUEZfQlJPV1NFUl9OQVRJVkVfQ0xJRU5UCisjZWxpZiBkZWZpbmVk
KF9fRnVjaHNpYV9fKQorIyAgIGRlZmluZSBVX1BMQVRGT1JNIFVfUEZfRlVDSFNJQQogI2VsaWYg
ZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19saW51eCkK
ICMgICBkZWZpbmUgVV9QTEFURk9STSBVX1BGX0xJTlVYCiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgZGVmaW5lZChfX01BQ0hfXykKQEAgLTE2MCw2ICsxNjYsOSBAQAogIyAgICAgICBkZWZp
bmUgVV9QTEFURk9STSBVX1BGX0RBUldJTgogIyAgIGVuZGlmCiAjZWxpZiBkZWZpbmVkKEJTRCkg
fHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pIHx8
IGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChf
X01pckJTRF9fKQorIyAgIGlmIGRlZmluZWQoX19GcmVlQlNEX18pCisjICAgICAgIGluY2x1ZGUg
PHN5cy9lbmRpYW4uaD4KKyMgICBlbmRpZgogIyAgIGRlZmluZSBVX1BMQVRGT1JNIFVfUEZfQlNE
CiAjZWxpZiBkZWZpbmVkKHN1bikgfHwgZGVmaW5lZChfX3N1bikKICAgICAvKiBDaGVjayBkZWZp
bmVkKF9fU1ZSNCkgfHwgZGVmaW5lZChfX3N2cjRfXykgdG8gZGlzdGluZ3Vpc2ggU29sYXJpcyBm
cm9tIFN1bk9TPyAqLwpAQCAtMTg3LDYgKzE5NiwyMCBAQAogIyAgIGRlZmluZSBVX1BMQVRGT1JN
IFVfUEZfVU5LTk9XTgogI2VuZGlmCiAKKy8qKgorICogXGRlZiBVUFJWX0lOQ09NUExFVEVfQ1BQ
MTFfU1VQUE9SVAorICogVGhpcyBzd2l0Y2ggdHVybnMgb2ZmIElDVSA2MCBOdW1iZXJGb3JtYXR0
ZXIgY29kZS4KKyAqIEJ5IGRlZmF1bHQsIHRoaXMgc3dpdGNoIGlzIGVuYWJsZWQgb24gQUlYIGFu
ZCB6L09TLAorICogd2hpY2ggaGF2ZSBwb29yIEMrKzExIHN1cHBvcnQuCisgKgorICogTk9URTog
VGhpcyBzd2l0Y2ggaXMgaW50ZW5kZWQgdG8gYmUgdGVtcG9yYXJ5OyBzZWUgIzEzMzkzLgorICoK
KyAqIEBpbnRlcm5hbAorICovCisjaWZuZGVmIFVQUlZfSU5DT01QTEVURV9DUFAxMV9TVVBQT1JU
CisjICAgZGVmaW5lIFVQUlZfSU5DT01QTEVURV9DUFAxMV9TVVBQT1JUIChVX1BMQVRGT1JNID09
IFVfUEZfQUlYIHx8IFVfUExBVEZPUk0gPT0gVV9QRl9PUzM5MCB8fCBVX1BMQVRGT1JNID09IFVf
UEZfU09MQVJJUyApCisjZW5kaWYKKwogLyoqCiAgKiBcZGVmIENZR1dJTk1TVkMKICAqIERlZmlu
ZWQgaWYgdGhpcyBpcyBXaW5kb3dzIHdpdGggQ3lnd2luLCBidXQgdXNpbmcgTVNWQyByYXRoZXIg
dGhhbiBnY2MuCkBAIC0yMjgsNiArMjUxLDE4IEBACiAjICAgZGVmaW5lIFVfUExBVEZPUk1fSEFT
X1dJTjMyX0FQSSAwCiAjZW5kaWYKIAorLyoqCisgKiBcZGVmIFVfUExBVEZPUk1fSEFTX1dJTlVX
UF9BUEkKKyAqIERlZmluZXMgd2hldGhlciB0YXJnZXQgaXMgaW50ZW5kZWQgZm9yIFVuaXZlcnNh
bCBXaW5kb3dzIFBsYXRmb3JtIEFQSQorICogU2V0IHRvIDEgZm9yIFdpbmRvd3MxMCBSZWxlYXNl
IFNvbHV0aW9uIENvbmZpZ3VyYXRpb24KKyAqIEBpbnRlcm5hbAorICovCisjaWZkZWYgVV9QTEFU
Rk9STV9IQVNfV0lOVVdQX0FQSQorICAgIC8qIFVzZSB0aGUgcHJlZGVmaW5lZCB2YWx1ZS4gKi8K
KyNlbHNlCisjICAgZGVmaW5lIFVfUExBVEZPUk1fSEFTX1dJTlVXUF9BUEkgMAorI2VuZGlmCisK
IC8qKgogICogXGRlZiBVX1BMQVRGT1JNX0lNUExFTUVOVFNfUE9TSVgKICAqIERlZmluZXMgd2hl
dGhlciB0aGUgcGxhdGZvcm0gaW1wbGVtZW50cyAobW9zdCBvZikgdGhlIFBPU0lYIEFQSS4KQEAg
LTMxMyw0MiArMzQ4LDYgQEAKICMgICBkZWZpbmUgVV9IQVZFX0lOVFRZUEVTX0ggVV9IQVZFX1NU
RElOVF9ICiAjZW5kaWYKIAotLyoqCi0gKiBcZGVmIFVfSU9TVFJFQU1fU09VUkNFCi0gKiBEZWZp
bmVzIHdoYXQgc3VwcG9ydCBmb3IgQysrIHN0cmVhbXMgaXMgYXZhaWxhYmxlLgotICoKLSAqIElm
IFVfSU9TVFJFQU1fU09VUkNFIGlzIHNldCB0byAxOTk3MTEsIHRoZW4gJmx0O2lvc3RyZWFtJmd0
OyBpcyBhdmFpbGFibGUKLSAqICh0aGUgSVNPL0lFQyBDKysgRkRJUyB3YXMgcHVibGlzaGVkIGlu
IE5vdmVtYmVyIDE5OTcpLCBhbmQgdGhlbgotICogb25lIHNob3VsZCBxdWFsaWZ5IHN0cmVhbXMg
dXNpbmcgdGhlIHN0ZCBuYW1lc3BhY2UgaW4gSUNVIGhlYWRlcgotICogZmlsZXMuCi0gKiBTdGFy
dGluZyB3aXRoIElDVSA0OSwgdGhpcyBpcyB0aGUgb25seSBzdXBwb3J0ZWQgdmVyc2lvbi4KLSAq
Ci0gKiBJZiBVX0lPU1RSRUFNX1NPVVJDRSBpcyBzZXQgdG8gMTk4NTA2LCB0aGVuICZsdDtpb3N0
cmVhbS5oJmd0OyBpcwotICogYXZhaWxhYmxlIGluc3RlYWQgKGluIEp1bmUgMTk4NSBTdHJvdXN0
cnVwIHB1Ymxpc2hlZAotICogIkFuIEV4dGVuc2libGUgSS9PIEZhY2lsaXR5IGZvciBDKysiIGF0
IHRoZSBzdW1tZXIgVVNFTklYIGNvbmZlcmVuY2UpLgotICogU3RhcnRpbmcgd2l0aCBJQ1UgNDks
IHRoaXMgdmVyc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGFueSBtb3JlLgotICoKLSAqIElmIFVfSU9T
VFJFQU1fU09VUkNFIGlzIDAgKG9yIGFueSB2YWx1ZSBsZXNzIHRoYW4gMTk5NzExKSwKLSAqIHRo
ZW4gQysrIHN0cmVhbXMgYXJlIG5vdCBhdmFpbGFibGUgYW5kCi0gKiBzdXBwb3J0IGZvciB0aGVt
IHdpbGwgYmUgc2lsZW50bHkgc3VwcHJlc3NlZCBpbiBJQ1UuCi0gKgotICogQGludGVybmFsCi0g
Ki8KLSNpZm5kZWYgVV9JT1NUUkVBTV9TT1VSQ0UKLSNkZWZpbmUgVV9JT1NUUkVBTV9TT1VSQ0Ug
MTk5NzExCi0jZW5kaWYKLQotLyoqCi0gKiBcZGVmIFVfSEFWRV9TVERfU1RSSU5HCi0gKiBEZWZp
bmVzIHdoZXRoZXIgdGhlIHN0YW5kYXJkIEMrKyAoU1RMKSAmbHQ7c3RyaW5nJmd0OyBoZWFkZXIg
aXMgYXZhaWxhYmxlLgotICogQGludGVybmFsCi0gKi8KLSNpZmRlZiBVX0hBVkVfU1REX1NUUklO
RwotICAgIC8qIFVzZSB0aGUgcHJlZGVmaW5lZCB2YWx1ZS4gKi8KLSNlbHNlCi0jICAgZGVmaW5l
IFVfSEFWRV9TVERfU1RSSU5HIDEKLSNlbmRpZgotCiAvKj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAv
KiogQHsgQ29tcGlsZXIgYW5kIGVudmlyb25tZW50IGZlYXR1cmVzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCkBAIC00MjUsMTAg
KzQyNCwyNSBAQAogIyAgIGRlZmluZSBVX0hBVkVfREVCVUdfTE9DQVRJT05fTkVXIDAKICNlbmRp
ZgogCi0vKiBDb21wYXRpYmlsaXR5IHdpdGggbm9uIGNsYW5nIGNvbXBpbGVycyAqLworLyogQ29t
cGF0aWJpbGl0eSB3aXRoIGNvbXBpbGVycyBvdGhlciB0aGFuIGNsYW5nOiBodHRwOi8vY2xhbmcu
bGx2bS5vcmcvZG9jcy9MYW5ndWFnZUV4dGVuc2lvbnMuaHRtbCAqLwogI2lmbmRlZiBfX2hhc19h
dHRyaWJ1dGUKICMgICAgZGVmaW5lIF9faGFzX2F0dHJpYnV0ZSh4KSAwCiAjZW5kaWYKKyNpZm5k
ZWYgX19oYXNfY3BwX2F0dHJpYnV0ZQorIyAgICBkZWZpbmUgX19oYXNfY3BwX2F0dHJpYnV0ZSh4
KSAwCisjZW5kaWYKKyNpZm5kZWYgX19oYXNfYnVpbHRpbgorIyAgICBkZWZpbmUgX19oYXNfYnVp
bHRpbih4KSAwCisjZW5kaWYKKyNpZm5kZWYgX19oYXNfZmVhdHVyZQorIyAgICBkZWZpbmUgX19o
YXNfZmVhdHVyZSh4KSAwCisjZW5kaWYKKyNpZm5kZWYgX19oYXNfZXh0ZW5zaW9uCisjICAgIGRl
ZmluZSBfX2hhc19leHRlbnNpb24oeCkgMAorI2VuZGlmCisjaWZuZGVmIF9faGFzX3dhcm5pbmcK
KyMgICAgZGVmaW5lIF9faGFzX3dhcm5pbmcoeCkgMAorI2VuZGlmCiAKIC8qKgogICogXGRlZiBV
X01BTExPQ19BVFRSCkBAIC00NTQsNiArNDY4LDc3IEBACiAjICAgZGVmaW5lIFVfQUxMT0NfU0la
RV9BVFRSMihYLFkpCiAjZW5kaWYKIAorLyoqCisgKiBcZGVmIFVfQ1BMVVNQTFVTX1ZFUlNJT04K
KyAqIDAgaWYgbm8gQysrOyAxLCAxMSwgMTQsIC4uLiBpZiBDKysuCisgKiBTdXBwb3J0IGZvciBz
cGVjaWZpYyBmZWF0dXJlcyBjYW5ub3QgYWx3YXlzIGJlIGRldGVybWluZWQgYnkgdGhlIEMrKyB2
ZXJzaW9uIGFsb25lLgorICogQGludGVybmFsCisgKi8KKyNpZmRlZiBVX0NQTFVTUExVU19WRVJT
SU9OCisjICAgaWYgVV9DUExVU1BMVVNfVkVSU0lPTiAhPSAwICYmICFkZWZpbmVkKF9fY3BsdXNw
bHVzKQorIyAgICAgICB1bmRlZiBVX0NQTFVTUExVU19WRVJTSU9OCisjICAgICAgIGRlZmluZSBV
X0NQTFVTUExVU19WRVJTSU9OIDAKKyMgICBlbmRpZgorICAgIC8qIE90aGVyd2lzZSB1c2UgdGhl
IHByZWRlZmluZWQgdmFsdWUuICovCisjZWxpZiAhZGVmaW5lZChfX2NwbHVzcGx1cykKKyMgICBk
ZWZpbmUgVV9DUExVU1BMVVNfVkVSU0lPTiAwCisjZWxpZiBfX2NwbHVzcGx1cyA+PSAyMDE0MDJM
CisjICAgZGVmaW5lIFVfQ1BMVVNQTFVTX1ZFUlNJT04gMTQKKyNlbGlmIF9fY3BsdXNwbHVzID49
IDIwMTEwM0wKKyMgICBkZWZpbmUgVV9DUExVU1BMVVNfVkVSU0lPTiAxMQorI2Vsc2UKKyAgICAv
LyBDKys5OCBvciBDKyswMworIyAgIGRlZmluZSBVX0NQTFVTUExVU19WRVJTSU9OIDEKKyNlbmRp
ZgorCisjaWYgKFVfUExBVEZPUk0gPT0gVV9QRl9BSVggfHwgVV9QTEFURk9STSA9PSBVX1BGX09T
MzkwKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJihVX0NQTFVTUExVU19WRVJTSU9OIDwgMTEp
CisvLyBhZGQgaW4gc3RkOjpudWxscHRyX3QKK25hbWVzcGFjZSBzdGQgeworICB0eXBlZGVmIGRl
Y2x0eXBlKG51bGxwdHIpIG51bGxwdHJfdDsKK307CisjZW5kaWYKKworLyoqCisgKiBcZGVmIFVf
Tk9FWENFUFQKKyAqICJub2V4Y2VwdCIgaWYgc3VwcG9ydGVkLCBvdGhlcndpc2UgZW1wdHkuCisg
KiBTb21lIGNvZGUsIGVzcGVjaWFsbHkgU1RMIGNvbnRhaW5lcnMsIHVzZXMgbW92ZSBzZW1hbnRp
Y3Mgb2Ygb2JqZWN0cyBvbmx5CisgKiBpZiB0aGUgbW92ZSBjb25zdHJ1Y3RvciBhbmQgdGhlIG1v
dmUgb3BlcmF0b3IgYXJlIGRlY2xhcmVkIGFzIG5vdCB0aHJvd2luZyBleGNlcHRpb25zLgorICog
QGludGVybmFsCisgKi8KKyNpZmRlZiBVX05PRVhDRVBUCisgICAgLyogVXNlIHRoZSBwcmVkZWZp
bmVkIHZhbHVlLiAqLworI2VsaWYgZGVmaW5lZChfSEFTX0VYQ0VQVElPTlMpICYmICFfSEFTX0VY
Q0VQVElPTlMgIC8qIFZpc3VhbCBTdHVkaW8gKi8KKyMgICBkZWZpbmUgVV9OT0VYQ0VQVAorI2Vs
aWYgVV9DUExVU1BMVVNfVkVSU0lPTiA+PSAxMSB8fCBfX2hhc19mZWF0dXJlKGN4eF9ub2V4Y2Vw
dCkgfHwgX19oYXNfZXh0ZW5zaW9uKGN4eF9ub2V4Y2VwdCkgXAorICAgICAgICB8fCAoZGVmaW5l
ZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTkwMCkgIC8qIFZpc3VhbCBTdHVkaW8gMjAxNSAq
LworIyAgIGRlZmluZSBVX05PRVhDRVBUIG5vZXhjZXB0CisjZWxzZQorIyAgIGRlZmluZSBVX05P
RVhDRVBUCisjZW5kaWYKKworLyoqCisgKiBcZGVmIFVfRkFMTFRIUk9VR0gKKyAqIEFubm90YXRl
IGludGVudGlvbmFsIGZhbGwtdGhyb3VnaCBiZXR3ZWVuIHN3aXRjaCBsYWJlbHMuCisgKiBodHRw
Oi8vY2xhbmcubGx2bS5vcmcvZG9jcy9BdHRyaWJ1dGVSZWZlcmVuY2UuaHRtbCNmYWxsdGhyb3Vn
aC1jbGFuZy1mYWxsdGhyb3VnaAorICogQGludGVybmFsCisgKi8KKyNpZm5kZWYgX19jcGx1c3Bs
dXMKKyAgICAvLyBOb3QgZm9yIEMuCisjZWxpZiBkZWZpbmVkKFVfRkFMTFRIUk9VR0gpCisgICAg
Ly8gVXNlIHRoZSBwcmVkZWZpbmVkIHZhbHVlLgorI2VsaWYgZGVmaW5lZChfX2NsYW5nX18pCisg
ICAgLy8gVGVzdCBmb3IgY29tcGlsZXIgdnMuIGZlYXR1cmUgc2VwYXJhdGVseS4KKyAgICAvLyBP
dGhlciBjb21waWxlcnMgbWlnaHQgY2hva2Ugb24gdGhlIGZlYXR1cmUgdGVzdC4KKyMgICBpZiBf
X2hhc19jcHBfYXR0cmlidXRlKGNsYW5nOjpmYWxsdGhyb3VnaCkgfHwgXAorICAgICAgICAgICAg
KF9faGFzX2ZlYXR1cmUoY3h4X2F0dHJpYnV0ZXMpICYmIF9faGFzX3dhcm5pbmcoIi1XaW1wbGlj
aXQtZmFsbHRocm91Z2giKSkKKyMgICAgICAgZGVmaW5lIFVfRkFMTFRIUk9VR0ggW1tjbGFuZzo6
ZmFsbHRocm91Z2hdXQorIyAgIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBVX0ZBTExUSFJPVUdI
CisjICAgZGVmaW5lIFVfRkFMTFRIUk9VR0gKKyNlbmRpZgorCiAvKiogQH0gKi8KIAogLyo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0qLwpAQCAtNjY5LDggKzc1NCw5IEBACiAgICAgICogZ2NjIDQuNCBkZWZp
bmVzIHRoZSBfX0NIQVIxNl9UWVBFX18gbWFjcm8gdG8gYSB1c2FibGUgdHlwZSBidXQKICAgICAg
KiBkb2VzIG5vdCBzdXBwb3J0IHUiYWJjIiBzdHJpbmcgbGl0ZXJhbHMuCiAgICAgICogQysrMTEg
YW5kIEMxMSByZXF1aXJlIHN1cHBvcnQgZm9yIFVURi0xNiBsaXRlcmFscworICAgICAqIFRPRE86
IEZpeCBmb3IgcGxhaW4gQy4gRG9lc24ndCB3b3JrIG9uIE1hYy4KICAgICAgKi8KLSMgICBpZiAo
ZGVmaW5lZChfX2NwbHVzcGx1cykgJiYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTCkgfHwgKGRlZmlu
ZWQoX19TVERDX1ZFUlNJT05fXykgJiYgX19TVERDX1ZFUlNJT05fXyA+PSAyMDExMTJMKQorIyAg
IGlmIFVfQ1BMVVNQTFVTX1ZFUlNJT04gPj0gMTEgfHwgKGRlZmluZWQoX19TVERDX1ZFUlNJT05f
XykgJiYgX19TVERDX1ZFUlNJT05fXyA+PSAyMDExMTJMKQogIyAgICAgICBkZWZpbmUgVV9IQVZF
X0NIQVIxNl9UIDEKICMgICBlbHNlCiAjICAgICAgIGRlZmluZSBVX0hBVkVfQ0hBUjE2X1QgMApA
QCAtNzQ4LDYgKzgzNCwxMiBAQAogICogVGhpcyBpcyBvbmx5IHVzZWQgZm9yIG5vbi1JQ1UtQVBJ
IGZ1bmN0aW9ucy4KICAqIFdoZW4gYSBmdW5jdGlvbiBpcyBhIHB1YmxpYyBJQ1UgQVBJLAogICog
eW91IG11c3QgdXNlIHRoZSBVX0NBUEkgYW5kIFVfRVhQT1JUMiBxdWFsaWZpZXJzLgorICoKKyAq
IFBsZWFzZSBub3RlLCB5b3UgbmVlZCB0byB1c2UgVV9DQUxMQ09OViBhZnRlciB0aGUgKi4KKyAq
CisgKiBOTyA6ICJzdGF0aWMgY29uc3QgY2hhciBVX0NBTExDT05WICpmdW5jKCAuIC4gLiApIgor
ICogWUVTOiAic3RhdGljIGNvbnN0IGNoYXIqIFVfQ0FMTENPTlYgZnVuYyggLiAuIC4gKSIKKyAq
CiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwogI2lmIFVfUExBVEZPUk0gPT0gVV9QRl9PUzM5MCAm
JiBkZWZpbmVkKF9fY3BsdXNwbHVzKQpAQCAtNzU2LDYgKzg0OCwxNiBAQAogIyAgICBkZWZpbmUg
VV9DQUxMQ09OViBVX0VYUE9SVDIKICNlbmRpZgogCisvKioKKyAqIFxkZWYgVV9DQUxMQ09OVl9G
UFRSCisgKiBTaW1pbGFyIHRvIFVfQ0FMTENPTlYsIGJ1dCBvbmx5IHVzZWQgb24gZnVuY3Rpb24g
cG9pbnRlcnMuCisgKiBAaW50ZXJuYWwKKyAqLworI2lmIFVfUExBVEZPUk0gPT0gVV9QRl9PUzM5
MCAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorIyAgICBkZWZpbmUgVV9DQUxMQ09OVl9GUFRSIFVf
Q0FMTENPTlYKKyNlbHNlCisjICAgIGRlZmluZSBVX0NBTExDT05WX0ZQVFIKKyNlbmRpZgogLyog
QH0gKi8KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3BsdXJm
bXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcGx1cmZtdC5oCmluZGV4IGY3MDk5ZDgxZTIz
MTRmMjIwMzhmMWQxOTI3NzcxYzQ5N2NkY2JmNDcuLmZkNTM3YzI0YzIxYjVkYTVjMWFjYTEyNjMx
MDFmMzI5MWQ4MzJiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcGx1cmZt
dC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcGx1cmZtdC5oCkBAIC0xLDMgKzEsNSBA
QAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExp
Y2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0
bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE0
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9wbHVycnVsZS5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9wbHVycnVsZS5oCmluZGV4IDZkMjE5ZmIyZjczNWE1OThhMTAyNjliNTM0NTFhZmRi
NTI0MDA3NDUuLmQzNzJkNzljODQ1MTc5MWY3ZWEzYTEyMDA4M2EwZWE0ZjUzODNkNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcGx1cnJ1bGUuaAorKysgYi9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3BsdXJydWxlLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBs
YXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVz
ZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTUsIEludGVybmF0aW9uYWwgQnVz
aW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCkBAIC0yNyw2ICsyOSw5IEBACiAKICNpbmNs
dWRlICJ1bmljb2RlL2Zvcm1hdC5oIgogI2luY2x1ZGUgInVuaWNvZGUvdXBsdXJhbHJ1bGVzLmgi
CisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKKyNpbmNsdWRlICJ1bmljb2RlL251bWZtdC5o
IgorI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCiAKIC8qKgogICogVmFsdWUgcmV0
dXJuZWQgYnkgUGx1cmFsUnVsZXM6OmdldFVuaXF1ZUtleXdvcmRWYWx1ZSgpIHdoZW4gdGhlcmUg
aXMgbm8KQEAgLTM4LDcgKzQzLDggQEAKIFVfTkFNRVNQQUNFX0JFR0lOCiAKIGNsYXNzIEhhc2h0
YWJsZTsKLWNsYXNzIEZpeGVkRGVjaW1hbDsKK2NsYXNzIElGaXhlZERlY2ltYWw7CitjbGFzcyBW
aXNpYmxlRGlnaXRzV2l0aEV4cG9uZW50OwogY2xhc3MgUnVsZUNoYWluOwogY2xhc3MgUGx1cmFs
UnVsZVBhcnNlcjsKIGNsYXNzIFBsdXJhbEtleXdvcmRFbnVtZXJhdGlvbjsKQEAgLTM0MiwxMCAr
MzQ4LDMwIEBAIHB1YmxpYzoKICAgICBVbmljb2RlU3RyaW5nIHNlbGVjdChkb3VibGUgbnVtYmVy
KSBjb25zdDsKIAogI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCisgICAgLyoqCisgICAgICog
R2l2ZW4gYSBudW1iZXIgYW5kIGEgZm9ybWF0LCByZXR1cm5zIHRoZSBrZXl3b3JkIG9mIHRoZSBm
aXJzdCBhcHBsaWNhYmxlCisgICAgICogcnVsZSBmb3IgdGhpcyBQbHVyYWxSdWxlcyBvYmplY3Qu
CisgICAgICogTm90ZTogVGhpcyBpbnRlcm5hbCBwcmV2aWV3IGludGVyZmFjZSBtYXkgYmUgcmVt
b3ZlZCBpbiB0aGUgZnV0dXJlIGlmCisgICAgICogYW4gYXJjaGl0ZWN0dXJhbGx5IGNsZWFuZXIg
c29sdXRpb24gcmVhY2hlcyBzdGFibGUgc3RhdHVzLgorICAgICAqIEBwYXJhbSBvYmogVGhlIG51
bWVyaWMgb2JqZWN0IGZvciB3aGljaCB0aGUgcnVsZSBzaG91bGQgYmUgZGV0ZXJtaW5lZC4KKyAg
ICAgKiBAcGFyYW0gZm10IFRoZSBOdW1iZXJGb3JtYXQgc3BlY2lmeWluZyBob3cgdGhlIG51bWJl
ciB3aWxsIGJlIGZvcm1hdHRlZAorICAgICAqICAgICAgICAodGhpcyBjYW4gYWZmZWN0IHRoZSBw
bHVyYWwgZm9ybSwgZS5nLiAiMSBkb2xsYXIiIHZzICIxLjAgZG9sbGFycyIpLgorICAgICAqIEBw
YXJhbSBzdGF0dXMgIElucHV0L291dHB1dCBwYXJhbWV0ZXIuIElmIGF0IGVudHJ5IHRoaXMgaW5k
aWNhdGVzIGEKKyAgICAgKiAgICAgICAgICAgICAgICBmYWlsdXJlIHN0YXR1cywgdGhlIG1ldGhv
ZCByZXR1cm5zIGltbWVkaWF0ZWx5OyBvdGhlcndpc2UKKyAgICAgKiAgICAgICAgICAgICAgICB0
aGlzIGlzIHNldCB0byBpbmRpY2F0ZSB0aGUgb3V0Y29tZSBvZiB0aGUgY2FsbC4KKyAgICAgKiBA
cmV0dXJuIFRoZSBrZXl3b3JkIG9mIHRoZSBzZWxlY3RlZCBydWxlLiBVbmRlZmluZWQgaW4gdGhl
IGNhc2Ugb2YgYW4gZXJyb3IuCisgICAgICogQGludGVybmFsIElDVSA1OSB0ZWNobm9sb2d5IHBy
ZXZpZXcsIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUKKyAgICAgKi8KKyAgICBVbmljb2Rl
U3RyaW5nIHNlbGVjdChjb25zdCBGb3JtYXR0YWJsZSYgb2JqLCBjb25zdCBOdW1iZXJGb3JtYXQm
IGZtdCwgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKKworICAgIC8qKgorICAgICAgKiBAaW50
ZXJuYWwKKyAgICAgICovCisgICAgVW5pY29kZVN0cmluZyBzZWxlY3QoY29uc3QgSUZpeGVkRGVj
aW1hbCAmbnVtYmVyKSBjb25zdDsKICAgICAvKioKICAgICAgICogQGludGVybmFsCiAgICAgICAq
LwotICAgIFVuaWNvZGVTdHJpbmcgc2VsZWN0KGNvbnN0IEZpeGVkRGVjaW1hbCAmbnVtYmVyKSBj
b25zdDsKKyAgICBVbmljb2RlU3RyaW5nIHNlbGVjdChjb25zdCBWaXNpYmxlRGlnaXRzV2l0aEV4
cG9uZW50ICZudW1iZXIpIGNvbnN0OwogI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICov
CiAKICAgICAvKioKQEAgLTM3Niw3ICs0MDIsNyBAQCBwdWJsaWM6CiAgICAgLyoqCiAgICAgICog
RGVwcmVjYXRlZCBGdW5jdGlvbiwgZG9lcyBub3QgcHJvZHVjZSB1c2VmdWwgcmVzdWx0cy4KICAg
ICAgKgotICAgICAqIE9yZ2luYWxseSBpbnRlbmRlZCB0byByZXR1cm4gYWxsIHRoZSB2YWx1ZXMg
Zm9yIHdoaWNoIHNlbGVjdCgpIHdvdWxkIHJldHVybiB0aGUga2V5d29yZC4KKyAgICAgKiBPcmln
aW5hbGx5IGludGVuZGVkIHRvIHJldHVybiBhbGwgdGhlIHZhbHVlcyBmb3Igd2hpY2ggc2VsZWN0
KCkgd291bGQgcmV0dXJuIHRoZSBrZXl3b3JkLgogICAgICAqIElmIHRoZSBrZXl3b3JkIGlzIHVu
a25vd24sIHJldHVybnMgbm8gdmFsdWVzLCBidXQgdGhpcyBpcyBub3QgYW4gZXJyb3IuICBJZgog
ICAgICAqIHRoZSBudW1iZXIgb2YgdmFsdWVzIGlzIHVubGltaXRlZCwgcmV0dXJucyBubyB2YWx1
ZXMgYW5kIC0xIGFzIHRoZQogICAgICAqIGNvdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9wdHlwZXMuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcHR5cGVzLmgKaW5k
ZXggYjdmNzExNjAzMjgyYzM2YzczMjIyMGU3YTk2YzkxMzNkZDAyNTBmZS4uNmVhZjJkYmYwMzU3
MjU2ODEwMjI4M2M1Nzk1N2RlOGJmOTVhNmY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9wdHlwZXMuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3B0eXBlcy5oCkBA
IC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcHV0aWwuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
cHV0aWwuaAppbmRleCBkZjFiMTdiYWQwZjY1MzUxMGZkZjE4ZGQ0Yzc4ZWFkOTRhOGEyMjgzLi40
MDY1NTFhOGQ4NmJkMGZmNjM0NDliOGYxNDA5MDlkNGRmYjIwODdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3B1dGlsLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9w
dXRpbC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIElu
Yy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5p
Y29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmJiaS5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9yYmJpLmgKaW5kZXggZDQ3NTk4YTUwZTZmYTNiYWIyYWQ0OWUwMjJhYWYzOTZjYWMz
MjllNS4uNTIxZTUwMmYxMTkwY2M4YWVhMzFmYmYxMTEzNGFlZmQ4M2Q0YzVkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9yYmJpLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9yYmJpLmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29k
ZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3
dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAg
IENvcHlyaWdodCAoQykgMTk5OS0yMDE0IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMg
Q29ycG9yYXRpb24gICAqCisqICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMTYgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiAgICoKICogICBhbmQgb3RoZXJzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCiAKQEAgLTI5LDIzICszMSwxNCBAQAogI2luY2x1ZGUgInVuaWNv
ZGUvc2Nocml0ZXIuaCIKICNpbmNsdWRlICJ1bmljb2RlL3VjaHJpdGVyLmgiCiAKLQotc3RydWN0
IFVUcmllOwotCiBVX05BTUVTUEFDRV9CRUdJTgogCiAvKiogQGludGVybmFsICovCitjbGFzcyAg
TGFuZ3VhZ2VCcmVha0VuZ2luZTsKIHN0cnVjdCBSQkJJRGF0YUhlYWRlcjsKLWNsYXNzICBSdWxl
QmFzZWRCcmVha0l0ZXJhdG9yVGFibGVzOwotY2xhc3MgIEJyZWFrSXRlcmF0b3I7CiBjbGFzcyAg
UkJCSURhdGFXcmFwcGVyOwotY2xhc3MgIFVTdGFjazsKLWNsYXNzICBMYW5ndWFnZUJyZWFrRW5n
aW5lOwogY2xhc3MgIFVuaGFuZGxlZEVuZ2luZTsKLXN0cnVjdCBSQkJJU3RhdGVUYWJsZTsKLQot
Ci0KK2NsYXNzICBVU3RhY2s7CiAKIC8qKgogICoKQEAgLTU2LDE1ICs0OSwxMSBAQCBzdHJ1Y3Qg
UkJCSVN0YXRlVGFibGU7CiAgKgogICogPHA+U2VlIHRoZSBJQ1UgVXNlciBHdWlkZSBmb3IgaW5m
b3JtYXRpb24gb24gQnJlYWsgSXRlcmF0b3IgUnVsZXMuPC9wPgogICoKLSAqIDxwPlRoaXMgY2xh
c3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHN1YmNsYXNzZWQuICAoQ2xhc3MgRGljdGlvbmFyeUJh
c2VkQnJlYWtJdGVyYXRvcgotICogICAgaXMgYSBzdWJjbGFzcywgYnV0IHRoYXQgcmVsYXRpb25z
aGlwIGlzIGVmZmVjdGl2ZWx5IGludGVybmFsIHRvIHRoZSBJQ1UKLSAqICAgIGltcGxlbWVudGF0
aW9uLiAgVGhlIHN1YmNsYXNzaW5nIGludGVyZmFjZSB0byBSdWxlc0Jhc2VkQnJlYWtJdGVyYXRv
ciBpcwotICogICAgbm90IHBhcnQgb2YgdGhlIElDVSBBUEksIGFuZCBtYXkgbm90IHJlbWFpbiBz
dGFibGUuPC9wPgotICoKKyAqIDxwPlRoaXMgY2xhc3MgaXMgbm90IGludGVuZGVkIHRvIGJlIHN1
YmNsYXNzZWQuPC9wPgogICovCiBjbGFzcyBVX0NPTU1PTl9BUEkgUnVsZUJhc2VkQnJlYWtJdGVy
YXRvciAvKlVfRklOQUwqLyA6IHB1YmxpYyBCcmVha0l0ZXJhdG9yIHsKIAotcHJvdGVjdGVkOgor
cHJpdmF0ZToKICAgICAvKioKICAgICAgKiBUaGUgVVRleHQgdGhyb3VnaCB3aGljaCB0aGlzIEJy
ZWFrSXRlcmF0b3IgYWNjZXNzZXMgdGhlIHRleHQKICAgICAgKiBAaW50ZXJuYWwKQEAgLTk4LDQ4
ICs4Nyw1MCBAQCBwcm90ZWN0ZWQ6CiAgICAgICovCiAgICAgUkJCSURhdGFXcmFwcGVyICAgICpm
RGF0YTsKIAotICAgIC8qKiBJbmRleCBvZiB0aGUgUnVsZSB7dGFnfSB2YWx1ZXMgZm9yIHRoZSBt
b3N0IHJlY2VudCBtYXRjaC4KKyAgICAvKiogCisgICAgICogIFRoZSBpdGVyYXRpb24gc3RhdGUg
LSBjdXJyZW50IHBvc2l0aW9uLCBydWxlIHN0YXR1cyBmb3IgdGhlIGN1cnJlbnQgcG9zaXRpb24s
CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBhbmQgd2hldGhlciB0aGUgaXRlcmF0b3Ig
cmFuIG9mZiB0aGUgZW5kLCB5aWVsZGluZyBVQlJLX0RPTkUuCisgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICBDdXJyZW50IHBvc2l0aW9uIGlzIHBpbm5lZCB0byBiZSAwIDwgcG9zaXRpb24g
PD0gdGV4dC5sZW5ndGguCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50IHBv
c2l0aW9uIGlzIGFsd2F5cyBzZXQgdG8gYSBib3VuZGFyeS4KICAgICAgKiAgQGludGVybmFsCiAg
ICAgKi8KLSAgICBpbnQzMl90ICAgICAgICAgICAgIGZMYXN0UnVsZVN0YXR1c0luZGV4OworICAg
IC8qKgorICAgICAgKiBUaGUgY3VycmVudCAgcG9zaXRpb24gb2YgdGhlIGl0ZXJhdG9yLiBQaW5u
ZWQsIDAgPCBmUG9zaXRpb24gPD0gdGV4dC5sZW5ndGguCisgICAgICAqIE5ldmVyIGhhcyB0aGUg
dmFsdWUgVUJSS19ET05FICgtMSkuCisgICAgICAqLworICAgIGludDMyX3QgICAgICAgICBmUG9z
aXRpb247CiAKICAgICAvKioKLSAgICAgKiBSdWxlIHRhZyB2YWx1ZSB2YWxpZCBmbGFnLgotICAg
ICAqIFNvbWUgaXRlcmF0b3Igb3BlcmF0aW9ucyBkb24ndCBpbnRyaW5zaWNhbGx5IHNldCB0aGUg
Y29ycmVjdCB0YWcgdmFsdWUuCi0gICAgICogVGhpcyBmbGFnIGxldHMgdXMgbGF6aWx5IGNvbXB1
dGUgdGhlIHZhbHVlIGlmIHdlIGFyZSBldmVyIGFza2VkIGZvciBpdC4KLSAgICAgKiBAaW50ZXJu
YWwKLSAgICAgKi8KLSAgICBVQm9vbCAgICAgICAgICAgICAgIGZMYXN0U3RhdHVzSW5kZXhWYWxp
ZDsKKyAgICAgICogVE9ETzoKKyAgICAgICovCisgICAgaW50MzJfdCAgICAgICAgIGZSdWxlU3Rh
dHVzSW5kZXg7CiAKICAgICAvKioKLSAgICAgKiBDb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIGNo
YXJhY3RlcnMgZW5jb3VudGVyZWQgd2l0aCB0aGUgImRpY3Rpb25hcnkiCi0gICAgICogICBmbGFn
IHNldC4KLSAgICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAgICB1aW50MzJfdCAgICAgICAgICAg
IGZEaWN0aW9uYXJ5Q2hhckNvdW50OworICAgICAgKiBUcnVlIHdoZW4gaXRlcmF0aW9uIGhhcyBy
dW4gb2ZmIHRoZSBlbmQsIGFuZCBpdGVyYXRvciBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBVQlJL
X0RPTkUuCisgICAgICAqLworICAgIFVCb29sICAgICAgICAgICBmRG9uZTsKIAogICAgIC8qKgot
ICAgICAqIFdoZW4gYSByYW5nZSBvZiBjaGFyYWN0ZXJzIGlzIGRpdmlkZWQgdXAgdXNpbmcgdGhl
IGRpY3Rpb25hcnksIHRoZSBicmVhawotICAgICAqIHBvc2l0aW9ucyB0aGF0IGFyZSBkaXNjb3Zl
cmVkIGFyZSBzdG9yZWQgaGVyZSwgcHJldmVudGluZyB1cyBmcm9tIGhhdmluZwotICAgICAqIHRv
IHVzZSBlaXRoZXIgdGhlIGRpY3Rpb25hcnkgb3IgdGhlIHN0YXRlIHRhYmxlIGFnYWluIHVudGls
IHRoZSBpdGVyYXRvcgotICAgICAqIGxlYXZlcyB0aGlzIHJhbmdlIG9mIHRleHQuIEhhcyB0aGUg
bW9zdCBpbXBhY3QgZm9yIGxpbmUgYnJlYWtpbmcuCi0gICAgICogQGludGVybmFsCisgICAgICog
ICBDYWNoZSBvZiBwcmV2aW91c2x5IGRldGVybWluZWQgYm91bmRhcnkgcG9zaXRpb25zLgogICAg
ICAqLwotICAgIGludDMyX3QqICAgICAgICAgICAgZkNhY2hlZEJyZWFrUG9zaXRpb25zOwotCisg
IHB1YmxpYzogICAgLy8gVE9ETzogZGVidWcsIHJldHVybiB0byBwcml2YXRlLgorICAgIGNsYXNz
IEJyZWFrQ2FjaGU7CisgICAgQnJlYWtDYWNoZSAgICAgICAgICpmQnJlYWtDYWNoZTsKKyAgcHJp
dmF0ZToKICAgICAvKioKLSAgICAgKiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGZDYWNoZWRC
cmVha1Bvc2l0aW9ucworICAgICAqIENvdW50ZXIgZm9yIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVy
cyBlbmNvdW50ZXJlZCB3aXRoIHRoZSAiZGljdGlvbmFyeSIKKyAgICAgKiAgIGZsYWcgc2V0Lgog
ICAgICAqIEBpbnRlcm5hbAogICAgICAqLwotICAgIGludDMyX3QgICAgICAgICAgICAgZk51bUNh
Y2hlZEJyZWFrUG9zaXRpb25zOworICAgIHVpbnQzMl90ICAgICAgICAgICAgZkRpY3Rpb25hcnlD
aGFyQ291bnQ7CiAKICAgICAvKioKLSAgICAgKiBpZiBmQ2FjaGVkQnJlYWtQb3NpdGlvbnMgaXMg
bm90IG51bGwsIHRoaXMgaW5kaWNhdGVzIHdoaWNoIGl0ZW0gaW4gdGhlCi0gICAgICogY2FjaGUg
dGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHJlZmVycyB0bwotICAgICAqIEBpbnRlcm5h
bAorICAgICAqICBDYWNoZSBvZiBib3VuZGFyeSBwb3NpdGlvbnMgd2l0aGluIGEgcmVnaW9uIG9m
IHRleHQgdGhhdCBoYXMgYmVlbgorICAgICAqICBzdWItZGl2aWRlZCBieSBkaWN0aW9uYXJ5IGJh
c2VkIGJyZWFraW5nLgogICAgICAqLwotICAgIGludDMyX3QgICAgICAgICAgICAgZlBvc2l0aW9u
SW5DYWNoZTsKLSAgICAKKyAgICBjbGFzcyBEaWN0aW9uYXJ5Q2FjaGU7CisgICAgRGljdGlvbmFy
eUNhY2hlICpmRGljdGlvbmFyeUNhY2hlOworCiAgICAgLyoqCiAgICAgICoKICAgICAgKiBJZiBw
cmVzZW50LCBVU3RhY2sgb2YgTGFuZ3VhZ2VCcmVha0VuZ2luZSBvYmplY3RzIHRoYXQgbWlnaHQg
aGFuZGxlCkBAIC0xNDgsNyArMTM5LDcgQEAgcHJvdGVjdGVkOgogICAgICAqIEBpbnRlcm5hbAog
ICAgICAqLwogICAgIFVTdGFjayAgICAgICAgICAgICAgKmZMYW5ndWFnZUJyZWFrRW5naW5lczsK
LSAgICAKKwogICAgIC8qKgogICAgICAqCiAgICAgICogSWYgcHJlc2VudCwgdGhlIHNwZWNpYWwg
TGFuZ3VhZ2VCcmVha0VuZ2luZSB1c2VkIGZvciBoYW5kbGluZwpAQCAtMTU3LDMyICsxNDgsMTgg
QEAgcHJvdGVjdGVkOgogICAgICAqIEBpbnRlcm5hbAogICAgICAqLwogICAgIFVuaGFuZGxlZEVu
Z2luZSAgICAgKmZVbmhhbmRsZWRCcmVha0VuZ2luZTsKLSAgICAKKwogICAgIC8qKgogICAgICAq
CiAgICAgICogVGhlIHR5cGUgb2YgdGhlIGJyZWFrIGl0ZXJhdG9yLCBvciAtMSBpZiBpdCBoYXMg
bm90IGJlZW4gc2V0LgogICAgICAqIEBpbnRlcm5hbAogICAgICAqLwogICAgIGludDMyX3QgICAg
ICAgICAgICAgZkJyZWFrVHlwZTsKLSAgICAKLXByb3RlY3RlZDoKKwogICAgIC8vPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KICAgICAvLyBjb25zdHJ1Y3RvcnMKICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLSNpZm5k
ZWYgVV9ISURFX0lOVEVSTkFMX0FQSQotICAgIC8qKgotICAgICAqIENvbnN0YW50IHRvIGJlIHVz
ZWQgaW4gdGhlIGNvbnN0cnVjdG9yCi0gICAgICogUnVsZUJhc2VkQnJlYWtJdGVyYXRvcihSQkJJ
RGF0YUhlYWRlciosIEVEb250QWRvcHQsIFVFcnJvckNvZGUgJik7Ci0gICAgICogd2hpY2ggZG9l
cyBub3QgYWRvcHQgdGhlIG1lbW9yeSBpbmRpY2F0ZWQgYnkgdGhlIFJCQklEYXRhSGVhZGVyKgot
ICAgICAqIHBhcmFtZXRlci4KLSAgICAgKgotICAgICAqIEBpbnRlcm5hbAotICAgICAqLwotICAg
IGVudW0gRURvbnRBZG9wdCB7Ci0gICAgICAgIGtEb250QWRvcHQKLSAgICB9OwotCiAgICAgLyoq
CiAgICAgICogQ29uc3RydWN0b3IgZnJvbSBhIGZsYXR0ZW5lZCBzZXQgb2YgUkJCSSBkYXRhIGlu
IG1hbGxvY2VkIG1lbW9yeS4KICAgICAgKiAgICAgICAgICAgICBSdWxlc0Jhc2VkQnJlYWtJdGVy
YXRvcnMgYnVpbHQgZnJvbSBhIGN1c3RvbSBzZXQgb2YgcnVsZXMKQEAgLTE5NSwyNCArMTcyLDEx
IEBAIHByb3RlY3RlZDoKICAgICAgKi8KICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKFJCQklE
YXRhSGVhZGVyKiBkYXRhLCBVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0gICAgLyoqCi0gICAgICog
Q29uc3RydWN0b3IgZnJvbSBhIGZsYXR0ZW5lZCBzZXQgb2YgUkJCSSBkYXRhIGluIG1lbW9yeSB3
aGljaCBuZWVkIG5vdAotICAgICAqICAgICAgICAgICAgIGJlIG1hbGxvY2VkIChlLmcuIGl0IG1h
eSBiZSBhIG1lbW9yeS1tYXBwZWQgZmlsZSwgZXRjLikuCi0gICAgICoKLSAgICAgKiAgICAgICAg
ICAgICBUaGlzIHZlcnNpb24gZG9lcyBub3QgYWRvcHQgdGhlIG1lbW9yeSwgYW5kIGRvZXMgbm90
Ci0gICAgICogICAgICAgICAgICAgZnJlZSBpdCB3aGVuIGRvbmUuCi0gICAgICogQGludGVybmFs
Ci0gICAgICovCi0gICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcihjb25zdCBSQkJJRGF0YUhlYWRl
ciogZGF0YSwgZW51bSBFRG9udEFkb3B0IGRvbnRBZG9wdCwgVUVycm9yQ29kZSAmc3RhdHVzKTsK
LSNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwotCi0KKyAgICAvKiogQGludGVybmFs
ICovCiAgICAgZnJpZW5kIGNsYXNzIFJCQklSdWxlQnVpbGRlcjsKICAgICAvKiogQGludGVybmFs
ICovCiAgICAgZnJpZW5kIGNsYXNzIEJyZWFrSXRlcmF0b3I7CiAKLQotCiBwdWJsaWM6CiAKICAg
ICAvKiogRGVmYXVsdCBjb25zdHJ1Y3Rvci4gIENyZWF0ZXMgYW4gZW1wdHkgc2hlbGwgb2YgYW4g
aXRlcmF0b3IsIHdpdGggbm8KQEAgLTI0OCw3ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgICogY29u
c3R1Y3Rpb24gZnJvbSBzb3VyY2UgcnVsZXMuCiAgICAgICoKICAgICAgKiBPd25lcnNoaXAgb2Yg
dGhlIHN0b3JhZ2UgY29udGFpbmluZyB0aGUgY29tcGlsZWQgcnVsZXMgcmVtYWlucyB3aXRoIHRo
ZQotICAgICAqIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uLiAgVGhlIGNvbXBpbGVkIHJ1bGVzIG11
c3Qgbm90IGJlICBtb2RpZmllZCBvciAKKyAgICAgKiBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbi4g
IFRoZSBjb21waWxlZCBydWxlcyBtdXN0IG5vdCBiZSAgbW9kaWZpZWQgb3IKICAgICAgKiBkZWxl
dGVkIGR1cmluZyB0aGUgbGlmZSBvZiB0aGUgYnJlYWsgaXRlcmF0b3IuCiAgICAgICoKICAgICAg
KiBUaGUgY29tcGlsZWQgcnVsZXMgYXJlIG5vdCBjb21wYXRpYmxlIGFjcm9zcyBkaWZmZXJlbnQg
bWFqb3IgdmVyc2lvbnMgb2YgSUNVLgpAQCAtNDAyLDYgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAg
LyoqCiAgICAgICogU2V0IHRoZSBpdGVyYXRvciB0byBhbmFseXplIGEgbmV3IHBpZWNlIG9mIHRl
eHQuICBUaGlzIGZ1bmN0aW9uIHJlc2V0cwogICAgICAqIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBw
b3NpdGlvbiB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0LgorICAgICAqCisgICAgICogVGhl
IEJyZWFrSXRlcmF0b3Igd2lsbCByZXRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIHN1cHBsaWVkIHN0
cmluZy4KKyAgICAgKiBUaGUgY2FsbGVyIG11c3Qgbm90IG1vZGlmeSBvciBkZWxldGUgdGhlIHRl
eHQgd2hpbGUgdGhlIEJyZWFrSXRlcmF0b3IKKyAgICAgKiByZXRhaW5zIHRoZSByZWZlcmVuY2Uu
CisgICAgICoKICAgICAgKiBAcGFyYW0gbmV3VGV4dCBUaGUgdGV4dCB0byBhbmFseXplLgogICAg
ICAqICBAc3RhYmxlIElDVSAyLjAKICAgICAgKi8KQEAgLTQ5MSw3ICs0NjAsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgVUJvb2wgaXNCb3VuZGFyeShpbnQzMl90IG9mZnNldCk7CiAKICAgICAv
KioKLSAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbi4KKyAgICAg
KiBSZXR1cm5zIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbi4gTm90ZSB0aGF0IFVCUktf
RE9ORSBpcyBuZXZlcgorICAgICAqIHJldHVybmVkIGZyb20gdGhpcyBmdW5jdGlvbjsgaWYgaXRl
cmF0aW9uIGhhcyBydW4gdG8gdGhlIGVuZCBvZiBhCisgICAgICogc3RyaW5nLCBjdXJyZW50KCkg
d2lsbCByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHdoaWxlCisgICAgICogbmV4dCgp
IHdpbGwgcmV0dXJuIFVCUktfRE9ORSkuCiAgICAgICogQHJldHVybiBUaGUgY3VycmVudCBpdGVy
YXRpb24gcG9zaXRpb24uCiAgICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAgICovCkBAIC01MjMs
NiArNDk1LDcgQEAgcHVibGljOgogICAgICAqIE5vdGU6IHRoaXMgZnVuY3Rpb24gaXMgbm90IHRo
cmVhZCBzYWZlLiAgSXQgc2hvdWxkIG5vdCBoYXZlIGJlZW4KICAgICAgKiAgICAgICBkZWNsYXJl
ZCBjb25zdCwgYW5kIHRoZSBjb25zdCByZW1haW5zIG9ubHkgZm9yIGNvbXBhdGliaWxpdHkKICAg
ICAgKiAgICAgICByZWFzb25zLiAgKFRoZSBmdW5jdGlvbiBpcyBsb2dpY2FsbHkgY29uc3QsIGJ1
dCBub3QgYml0LXdpc2UgY29uc3QpLgorICAgICAqICAgVE9ETzogY2hlY2sgdGhpcy4gUHJvYmFi
bHkgdGhyZWFkIHNhZmUgbm93LgogICAgICAqIDxwPgogICAgICAqIEByZXR1cm4gdGhlIHN0YXR1
cyBmcm9tIHRoZSBicmVhayBydWxlIHRoYXQgZGV0ZXJtaW5lZCB0aGUgbW9zdCByZWNlbnRseQog
ICAgICAqIHJldHVybmVkIGJyZWFrIHBvc2l0aW9uLgpAQCAtNjYxLDcgKzYzNCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgJnJlZnJlc2hJbnB1dFRleHQo
VVRleHQgKmlucHV0LCBVRXJyb3JDb2RlICZzdGF0dXMpOwogCiAKLXByb3RlY3RlZDoKK3ByaXZh
dGU6CiAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIC8vIGltcGxlbWVudGF0aW9uCiAgICAgLy89
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpAQCAtNjcwLDg1ICs2NDMsNDQgQEAgcHJvdGVjdGVkOgogICAgICAqIGlu
IHRleHQgb3IgaXRlcmF0aW9uIHBvc2l0aW9uLgogICAgICAqIEBpbnRlcm5hbAogICAgICAqLwot
ICAgIHZpcnR1YWwgdm9pZCByZXNldCh2b2lkKTsKLQotI2lmIDAKLSAgICAvKioKLSAgICAgICog
UmV0dXJuIHRydWUgaWYgdGhlIGNhdGVnb3J5IGxvb2t1cCBmb3IgdGhpcyBjaGFyCi0gICAgICAq
IGluZGljYXRlcyB0aGF0IGl0IGlzIGluIHRoZSBzZXQgb2YgZGljdGlvbmFyeSBsb29rdXAgY2hh
cnMuCi0gICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSBieSBkaWN0aW9u
YXJ5IGJhc2VkIGJyZWFrIGl0ZXJhdG9ycy4KLSAgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBj
YXRlZ29yeSBsb29rdXAgZm9yIHRoaXMgY2hhcgotICAgICAgKiBpbmRpY2F0ZXMgdGhhdCBpdCBp
cyBpbiB0aGUgc2V0IG9mIGRpY3Rpb25hcnkgbG9va3VwIGNoYXJzLgotICAgICAgKiBAaW50ZXJu
YWwKLSAgICAgICovCi0gICAgdmlydHVhbCBVQm9vbCBpc0RpY3Rpb25hcnlDaGFyKFVDaGFyMzIp
OwotCi0gICAgLyoqCi0gICAgICAqIEdldCB0aGUgdHlwZSBvZiB0aGUgYnJlYWsgaXRlcmF0b3Iu
Ci0gICAgICAqIEBpbnRlcm5hbAotICAgICAgKi8KLSAgICB2aXJ0dWFsIGludDMyX3QgZ2V0QnJl
YWtUeXBlKCkgY29uc3Q7Ci0jZW5kaWYKKyAgICB2b2lkIHJlc2V0KHZvaWQpOwogCiAgICAgLyoq
CiAgICAgICAqIFNldCB0aGUgdHlwZSBvZiB0aGUgYnJlYWsgaXRlcmF0b3IuCiAgICAgICAqIEBp
bnRlcm5hbAogICAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtUeXBlKGludDMyX3Qg
dHlwZSk7CisgICAgdm9pZCBzZXRCcmVha1R5cGUoaW50MzJfdCB0eXBlKTsKIAotI2lmbmRlZiBV
X0hJREVfSU5URVJOQUxfQVBJCiAgICAgLyoqCiAgICAgICAqIENvbW1vbiBpbml0aWFsaXphdGlv
biBmdW5jdGlvbiwgdXNlZCBieSBjb25zdHJ1Y3RvcnMgYW5kIGJ1ZmZlckNsb25lLgogICAgICAg
KiBAaW50ZXJuYWwKICAgICAgICovCi0gICAgdm9pZCBpbml0KCk7Ci0jZW5kaWYgIC8qIFVfSElE
RV9JTlRFUk5BTF9BUEkgKi8KLQotcHJpdmF0ZToKKyAgICB2b2lkIGluaXQoVUVycm9yQ29kZSAm
c3RhdHVzKTsKIAogICAgIC8qKgotICAgICAqIFRoaXMgbWV0aG9kIGJhY2tzIHRoZSBpdGVyYXRv
ciBiYWNrIHVwIHRvIGEgInNhZmUgcG9zaXRpb24iIGluIHRoZSB0ZXh0LgotICAgICAqIFRoaXMg
aXMgYSBwb3NpdGlvbiB0aGF0IHdlIGtub3csIHdpdGhvdXQgYW55IGNvbnRleHQsIG11c3QgYmUg
YSBicmVhayBwb3NpdGlvbi4KLSAgICAgKiBUaGUgdmFyaW91cyBjYWxsaW5nIG1ldGhvZHMgdGhl
biBpdGVyYXRlIGZvcndhcmQgZnJvbSB0aGlzIHNhZmUgcG9zaXRpb24gdG8KLSAgICAgKiB0aGUg
YXBwcm9wcmlhdGUgcG9zaXRpb24gdG8gcmV0dXJuLiAgKEZvciBtb3JlIGluZm9ybWF0aW9uLCBz
ZWUgdGhlIGRlc2NyaXB0aW9uCi0gICAgICogb2YgYnVpbGRCYWNrd2FyZHNTdGF0ZVRhYmxlKCkg
aW4gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5CdWlsZGVyLikKLSAgICAgKiBAcGFyYW0gc3RhdGV0
YWJsZSBzdGF0ZSB0YWJsZSB1c2VkIG9mIG1vdmluZyBiYWNrd2FyZHMKKyAgICAgKiBJdGVyYXRl
IGJhY2t3YXJkcyBmcm9tIGFuIGFyYml0cmFyeSBwb3NpdGlvbiBpbiB0aGUgaW5wdXQgdGV4dCB1
c2luZyB0aGUgU2FmZSBSZXZlcnNlIHJ1bGVzLgorICAgICAqIFRoaXMgbG9jYXRlcyBhICJTYWZl
IFBvc2l0aW9uIiBmcm9tIHdoaWNoIHRoZSBmb3J3YXJkIGJyZWFrIHJ1bGVzCisgICAgICogd2ls
bCBvcGVyYXRlIGNvcnJlY3RseS4gQSBTYWZlIFBvc2l0aW9uIGlzIG5vdCBuZWNlc3NhcmlseSBh
IGJvdW5kYXJ5IGl0c2VsZi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBmcm9tUG9zaXRpb24gdGhl
IHBvc2l0aW9uIGluIHRoZSBpbnB1dCB0ZXh0IHRvIGJlZ2luIHRoZSBpdGVyYXRpb24uCiAgICAg
ICogQGludGVybmFsCiAgICAgICovCi0gICAgaW50MzJfdCBoYW5kbGVQcmV2aW91cyhjb25zdCBS
QkJJU3RhdGVUYWJsZSAqc3RhdGV0YWJsZSk7CisgICAgaW50MzJfdCBoYW5kbGVQcmV2aW91cyhp
bnQzMl90IGZyb21Qb3NpdGlvbik7CiAKICAgICAvKioKLSAgICAgKiBUaGlzIG1ldGhvZCBpcyB0
aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXh0KCkgbWV0aG9kLiAgQWxsIGl0ZXJh
dGlvbgotICAgICAqIHZlY3RvcnMgdGhyb3VnaCBoZXJlLiAgVGhpcyBtZXRob2QgaW5pdGlhbGl6
ZXMgdGhlIHN0YXRlIG1hY2hpbmUgdG8gc3RhdGUgMQotICAgICAqIGFuZCBhZHZhbmNlcyB0aHJv
dWdoIHRoZSB0ZXh0IGNoYXJhY3RlciBieSBjaGFyYWN0ZXIgdW50aWwgd2UgcmVhY2ggdGhlIGVu
ZAotICAgICAqIG9mIHRoZSB0ZXh0IG9yIHRoZSBzdGF0ZSBtYWNoaW5lIHRyYW5zaXRpb25zIHRv
IHN0YXRlIDAuICBXZSB1cGRhdGUgb3VyIHJldHVybgotICAgICAqIHZhbHVlIGV2ZXJ5IHRpbWUg
dGhlIHN0YXRlIG1hY2hpbmUgcGFzc2VzIHRocm91Z2ggYSBwb3NzaWJsZSBlbmQgc3RhdGUuCi0g
ICAgICogQHBhcmFtIHN0YXRldGFibGUgc3RhdGUgdGFibGUgdXNlZCBvZiBtb3ZpbmcgZm9yd2Fy
ZHMKLSAgICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAgICBpbnQzMl90IGhhbmRsZU5leHQoY29u
c3QgUkJCSVN0YXRlVGFibGUgKnN0YXRldGFibGUpOwotCi1wcm90ZWN0ZWQ6Ci0KLSNpZm5kZWYg
VV9ISURFX0lOVEVSTkFMX0FQSQotICAgIC8qKgotICAgICAqIFRoaXMgaXMgdGhlIGZ1bmN0aW9u
IHRoYXQgYWN0dWFsbHkgaW1wbGVtZW50cyBkaWN0aW9uYXJ5LWJhc2VkCi0gICAgICogYnJlYWtp
bmcuICBDb3ZlcmluZyBhdCBsZWFzdCB0aGUgcmFuZ2UgZnJvbSBzdGFydFBvcyB0byBlbmRQb3Ms
Ci0gICAgICogaXQgY2hlY2tzIGZvciBkaWN0aW9uYXJ5IGNoYXJhY3RlcnMsIGFuZCBpZiBpdCBm
aW5kcyB0aGVtIGRldGVybWluZXMKLSAgICAgKiB0aGUgYXBwcm9wcmlhdGUgb2JqZWN0IHRvIGRl
YWwgd2l0aCB0aGVtLiBJdCBtYXkgY2FjaGUgZm91bmQgYnJlYWtzIGluCi0gICAgICogZkNhY2hl
ZEJyZWFrUG9zaXRpb25zIGFzIGl0IGdvZXMuIEl0IG1heSB3ZWxsIGFsc28gbG9vayBhdCB0ZXh0
IG91dHNpZGUKLSAgICAgKiB0aGUgcmFuZ2Ugc3RhcnRQb3MgdG8gZW5kUG9zLgotICAgICAqIElm
IGdvaW5nIGZvcndhcmQsIGVuZFBvcyBpcyB0aGUgbm9ybWFsIFVuaWNvZGUgYnJlYWsgcmVzdWx0
LCBhbmQKLSAgICAgKiBpZiBnb2luZCBpbiByZXZlcnNlLCBzdGFydFBvcyBpcyB0aGUgbm9ybWFs
IFVuaWNvZGUgYnJlYWsgcmVzdWx0Ci0gICAgICogQHBhcmFtIHN0YXJ0UG9zICBUaGUgc3RhcnQg
cG9zaXRpb24gb2YgYSByYW5nZSBvZiB0ZXh0Ci0gICAgICogQHBhcmFtIGVuZFBvcyAgICBUaGUg
ZW5kIHBvc2l0aW9uIG9mIGEgcmFuZ2Ugb2YgdGV4dAotICAgICAqIEBwYXJhbSByZXZlcnNlICAg
VGhlIGNhbGwgaXMgZm9yIHRoZSByZXZlcnNlIGRpcmVjdGlvbgorICAgICAqIEZpbmQgYSBydWxl
LWJhc2VkIGJvdW5kYXJ5IGJ5IHJ1bm5pbmcgdGhlIHN0YXRlIG1hY2hpbmUuCisgICAgICogSW5w
dXQKKyAgICAgKiAgICBmUG9zaXRpb24sIHRoZSBwb3NpdGlvbiBpbiB0aGUgdGV4dCB0byBiZWdp
biBmcm9tLgorICAgICAqIE91dHB1dAorICAgICAqICAgIGZQb3NpdGlvbjogICAgICAgICAgIHRo
ZSBib3VuZGFyeSBmb2xsb3dpbmcgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uLgorICAgICAqICAgIGZE
aWN0aW9uYXJ5Q2hhckNvdW50IHRoZSBudW1iZXIgb2YgZGljdGlvbmFyeSBjaGFyYWN0ZXJzIGVu
Y291bnRlcmVkLgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIElmID4gMCwgdGhlIHNl
Z21lbnQgd2lsbCBiZSBmdXJ0aGVyIHN1YmRpdmlkZWQKKyAgICAgKiAgICBmUnVsZVN0YXR1c0lu
ZGV4ICAgICBJbmZvIGZyb20gdGhlIHN0YXRlIHRhYmxlIGluZGljYXRpbmcgd2hpY2ggcnVsZXMg
Y2F1c2VkIHRoZSBib3VuZGFyeS4KKyAgICAgKgogICAgICAqIEBpbnRlcm5hbAogICAgICAqLwot
ICAgIGludDMyX3QgY2hlY2tEaWN0aW9uYXJ5KGludDMyX3Qgc3RhcnRQb3MsIGludDMyX3QgZW5k
UG9zLCBVQm9vbCByZXZlcnNlKTsKLSNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwor
ICAgIGludDMyX3QgaGFuZGxlTmV4dCgpOwogCi1wcml2YXRlOgogCiAgICAgLyoqCiAgICAgICog
VGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBMYW5ndWFnZUJyZWFrRW5naW5l
IGZvciBhCkBAIC03NTgsMTEgKzY5MCwxNCBAQCBwcml2YXRlOgogICAgICAqLwogICAgIGNvbnN0
IExhbmd1YWdlQnJlYWtFbmdpbmUgKmdldExhbmd1YWdlQnJlYWtFbmdpbmUoVUNoYXIzMiBjKTsK
IAorICBwdWJsaWM6CisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAgICAvKioKLSAgICAg
KiAgQGludGVybmFsCisgICAgICogICBEZWJ1Z2dpbmcgZnVuY3Rpb24gb25seS4KKyAgICAgKiAg
IEBpbnRlcm5hbAogICAgICAqLwotICAgIHZvaWQgbWFrZVJ1bGVTdGF0dXNWYWxpZCgpOwotCisg
ICAgIHZvaWQgZHVtcENhY2hlKCk7CisjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8K
IH07CiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3JibmYuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmJuZi5oCmluZGV4IDcw
NThjOTY3MWNiMTE3YzRlMzBlOWRjNmVhNTkwMGM1OTgxM2FkYzEuLjEyOTI1NDQzYjJkOGZhNjM3
MmU2ZTZlZmM2MTBkNmQzNWIwMjBjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvcmJuZi5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmJuZi5oCkBAIC0xLDMgKzEs
NSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8v
IExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0
Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMTk5Ny0y
MDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhl
cnMuCkBAIC0zOCw2ICs0MCw3IEBACiAKIFVfTkFNRVNQQUNFX0JFR0lOCiAKK2NsYXNzIE5GUnVs
ZTsKIGNsYXNzIE5GUnVsZVNldDsKIGNsYXNzIExvY2FsaXphdGlvbkluZm87CiBjbGFzcyBQbHVy
YWxGb3JtYXQ7CkBAIC01Myw3ICs1NiwxMyBAQCBlbnVtIFVSQk5GUnVsZVNldFRhZyB7CiAgICAg
VVJCTkZfT1JESU5BTCwKICAgICBVUkJORl9EVVJBVElPTiwKICAgICBVUkJORl9OVU1CRVJJTkdf
U1lTVEVNLAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBP
bmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVUkJORlJ1bGVTZXRUYWcgdmFsdWUuCisg
ICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3Zl
ciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVVJCTkZfQ09VTlQK
KyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9OwogCiAvKioKQEAgLTI2NCwxNyAr
MjczLDQ3IEBAIGVudW0gVVJCTkZSdWxlU2V0VGFnIHsKICAqICAgPC90cj4KICAqICAgPHRyPgog
ICogICAgIDx0ZD54Lng6PC90ZD4KLSAqICAgICA8dGQ+VGhlIHJ1bGUgaXMgYW4gPGVtPmltcHJv
cGVyIGZyYWN0aW9uIHJ1bGUuPC9lbT48L3RkPgorICogICAgIDx0ZD5UaGUgcnVsZSBpcyBhbiA8
ZW0+aW1wcm9wZXIgZnJhY3Rpb24gcnVsZTwvZW0+LiBJZiB0aGUgZnVsbCBzdG9wIGluCisgKiAg
ICAgdGhlIG1pZGRsZSBvZiB0aGUgcnVsZSBuYW1lIGlzIHJlcGxhY2VkIHdpdGggdGhlIGRlY2lt
YWwgcG9pbnQKKyAqICAgICB0aGF0IGlzIHVzZWQgaW4gdGhlIGxhbmd1YWdlIG9yIERlY2ltYWxG
b3JtYXRTeW1ib2xzLCB0aGVuIHRoYXQgcnVsZSB3aWxsCisgKiAgICAgaGF2ZSBwcmVjZWRlbmNl
IHdoZW4gZm9ybWF0dGluZyBhbmQgcGFyc2luZyB0aGlzIHJ1bGUuIEZvciBleGFtcGxlLCBzb21l
CisgKiAgICAgbGFuZ3VhZ2VzIHVzZSB0aGUgY29tbWEsIGFuZCBjYW4gdGh1cyBiZSB3cml0dGVu
IGFzIHgseCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwKKyAqICAgICB5b3UgY2FuIHVzZSAieC54OiAm
bHQ7Jmx0OyBwb2ludCAmZ3Q7Jmd0Ozt4LHg6ICZsdDsmbHQ7IGNvbW1hICZndDsmZ3Q7OyIgdG8K
KyAqICAgICBoYW5kbGUgdGhlIGRlY2ltYWwgcG9pbnQgdGhhdCBtYXRjaGVzIHRoZSBsYW5ndWFn
ZSdzIG5hdHVyYWwgc3BlbGxpbmcgb2YKKyAqICAgICB0aGUgcHVuY3R1YXRpb24gb2YgZWl0aGVy
IHRoZSBmdWxsIHN0b3Agb3IgY29tbWEuPC90ZD4KICAqICAgPC90cj4KICAqICAgPHRyPgogICog
ICAgIDx0ZD4wLng6PC90ZD4KLSAqICAgICA8dGQ+VGhlIHJ1bGUgaXMgYSA8ZW0+cHJvcGVyIGZy
YWN0aW9uIHJ1bGUuPC9lbT48L3RkPgorICogICAgIDx0ZD5UaGUgcnVsZSBpcyBhIDxlbT5wcm9w
ZXIgZnJhY3Rpb24gcnVsZTwvZW0+LiBJZiB0aGUgZnVsbCBzdG9wIGluCisgKiAgICAgdGhlIG1p
ZGRsZSBvZiB0aGUgcnVsZSBuYW1lIGlzIHJlcGxhY2VkIHdpdGggdGhlIGRlY2ltYWwgcG9pbnQK
KyAqICAgICB0aGF0IGlzIHVzZWQgaW4gdGhlIGxhbmd1YWdlIG9yIERlY2ltYWxGb3JtYXRTeW1i
b2xzLCB0aGVuIHRoYXQgcnVsZSB3aWxsCisgKiAgICAgaGF2ZSBwcmVjZWRlbmNlIHdoZW4gZm9y
bWF0dGluZyBhbmQgcGFyc2luZyB0aGlzIHJ1bGUuIEZvciBleGFtcGxlLCBzb21lCisgKiAgICAg
bGFuZ3VhZ2VzIHVzZSB0aGUgY29tbWEsIGFuZCBjYW4gdGh1cyBiZSB3cml0dGVuIGFzIDAseCBp
bnN0ZWFkLiBGb3IgZXhhbXBsZSwKKyAqICAgICB5b3UgY2FuIHVzZSAiMC54OiBwb2ludCAmZ3Q7
Jmd0OzswLHg6IGNvbW1hICZndDsmZ3Q7OyIgdG8KKyAqICAgICBoYW5kbGUgdGhlIGRlY2ltYWwg
cG9pbnQgdGhhdCBtYXRjaGVzIHRoZSBsYW5ndWFnZSdzIG5hdHVyYWwgc3BlbGxpbmcgb2YKKyAq
ICAgICB0aGUgcHVuY3R1YXRpb24gb2YgZWl0aGVyIHRoZSBmdWxsIHN0b3Agb3IgY29tbWEuPC90
ZD4KICAqICAgPC90cj4KICAqICAgPHRyPgogICogICAgIDx0ZD54LjA6PC90ZD4KLSAqICAgICA8
dGQ+VGhlIHJ1bGUgaXMgYSA8ZW0+bWFzdGVyIHJ1bGUuPC9lbT48L3RkPgorICogICAgIDx0ZD5U
aGUgcnVsZSBpcyBhIDxlbT5tYXN0ZXIgcnVsZTwvZW0+LiBJZiB0aGUgZnVsbCBzdG9wIGluCisg
KiAgICAgdGhlIG1pZGRsZSBvZiB0aGUgcnVsZSBuYW1lIGlzIHJlcGxhY2VkIHdpdGggdGhlIGRl
Y2ltYWwgcG9pbnQKKyAqICAgICB0aGF0IGlzIHVzZWQgaW4gdGhlIGxhbmd1YWdlIG9yIERlY2lt
YWxGb3JtYXRTeW1ib2xzLCB0aGVuIHRoYXQgcnVsZSB3aWxsCisgKiAgICAgaGF2ZSBwcmVjZWRl
bmNlIHdoZW4gZm9ybWF0dGluZyBhbmQgcGFyc2luZyB0aGlzIHJ1bGUuIEZvciBleGFtcGxlLCBz
b21lCisgKiAgICAgbGFuZ3VhZ2VzIHVzZSB0aGUgY29tbWEsIGFuZCBjYW4gdGh1cyBiZSB3cml0
dGVuIGFzIHgsMCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwKKyAqICAgICB5b3UgY2FuIHVzZSAieC4w
OiAmbHQ7Jmx0OyBwb2ludDt4LDA6ICZsdDsmbHQ7IGNvbW1hOyIgdG8KKyAqICAgICBoYW5kbGUg
dGhlIGRlY2ltYWwgcG9pbnQgdGhhdCBtYXRjaGVzIHRoZSBsYW5ndWFnZSdzIG5hdHVyYWwgc3Bl
bGxpbmcgb2YKKyAqICAgICB0aGUgcHVuY3R1YXRpb24gb2YgZWl0aGVyIHRoZSBmdWxsIHN0b3Ag
b3IgY29tbWEuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZD5JbmY6PC90
ZD4KKyAqICAgICA8dGQ+VGhlIHJ1bGUgZm9yIGluZmluaXR5LjwvdGQ+CisgKiAgIDwvdHI+Cisg
KiAgIDx0cj4KKyAqICAgICA8dGQ+TmFOOjwvdGQ+CisgKiAgICAgPHRkPlRoZSBydWxlIGZvciBh
biBJRUVFIDc1NCBOYU4gKG5vdCBhIG51bWJlcikuPC90ZD4KICAqICAgPC90cj4KICAqICAgPHRy
PgorICogICA8dHI+CiAgKiAgICAgPHRkPjxlbT5ub3RoaW5nPC9lbT48L3RkPgogICogICAgIDx0
ZD5JZiB0aGUgcnVsZSdzIHJ1bGUgZGVzY3JpcHRvciBpcyBsZWZ0IG91dCwgdGhlIGJhc2UgdmFs
dWUgaXMgb25lIHBsdXMgdGhlCiAgKiAgICAgcHJlY2VkaW5nIHJ1bGUncyBiYXNlIHZhbHVlIChv
ciB6ZXJvIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHJ1bGUgaW4gdGhlIGxpc3QpIGluIGEgbm9ybWFs
CkBAIC04MjcsNiArODY2LDUyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmllbGRQb3NpdGlvbiYgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OwogCitwcm90ZWN0ZWQ6CisgICAgLyoqCisgICAg
ICogRm9ybWF0IGEgZGVjaW1hbCBudW1iZXIuCisgICAgICogVGhlIG51bWJlciBpcyBhIERpZ2l0
TGlzdCB3cmFwcGVyIG9udG8gYSBmbG9hdGluZyBwb2ludCBkZWNpbWFsIG51bWJlci4KKyAgICAg
KiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpbiBOdW1iZXJGb3JtYXQgY29udmVydHMgdGhl
IGRlY2ltYWwgbnVtYmVyCisgICAgICogdG8gYSBkb3VibGUgYW5kIGZvcm1hdHMgdGhhdC4gIFN1
YmNsYXNzZXMgb2YgTnVtYmVyRm9ybWF0IHRoYXQgd2FudAorICAgICAqIHRvIHNwZWNpZmljYWxs
eSBoYW5kbGUgYmlnIGRlY2ltYWwgbnVtYmVycyBtdXN0IG92ZXJyaWRlIHRoaXMgbWV0aG9kLgor
ICAgICAqIGNsYXNzIERlY2ltYWxGb3JtYXQgZG9lcyBzby4KKyAgICAgKgorICAgICAqIEBwYXJh
bSBudW1iZXIgICAgVGhlIG51bWJlciwgYSBEaWdpdExpc3QgZm9ybWF0IERlY2ltYWwgRmxvYXRp
bmcgUG9pbnQuCisgICAgICogQHBhcmFtIGFwcGVuZFRvICBPdXRwdXQgcGFyYW1ldGVyIHRvIHJl
Y2VpdmUgcmVzdWx0LgorICAgICAqICAgICAgICAgICAgICAgICAgUmVzdWx0IGlzIGFwcGVuZGVk
IHRvIGV4aXN0aW5nIGNvbnRlbnRzLgorICAgICAqIEBwYXJhbSBwb3NJdGVyICAgT24gcmV0dXJu
LCBjYW4gYmUgdXNlZCB0byBpdGVyYXRlIG92ZXIgcG9zaXRpb25zCisgICAgICogICAgICAgICAg
ICAgICAgICBvZiBmaWVsZHMgZ2VuZXJhdGVkIGJ5IHRoaXMgZm9ybWF0IGNhbGwuCisgICAgICog
QHBhcmFtIHN0YXR1cyAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdpdGggc3VjY2Vzcy9mYWlsdXJl
IHN0YXR1cy4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVyZW5jZSB0byAnYXBwZW5kVG8n
IHBhcmFtZXRlci4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB2aXJ0dWFsIFVuaWNv
ZGVTdHJpbmcmIGZvcm1hdChjb25zdCBEaWdpdExpc3QgJm51bWJlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBlbmRUbywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIHBvc0l0ZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25z
dDsKKworICAgIC8qKgorICAgICAqIEZvcm1hdCBhIGRlY2ltYWwgbnVtYmVyLgorICAgICAqIFRo
ZSBudW1iZXIgaXMgYSBEaWdpdExpc3Qgd3JhcHBlciBvbnRvIGEgZmxvYXRpbmcgcG9pbnQgZGVj
aW1hbCBudW1iZXIuCisgICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaW4gTnVtYmVy
Rm9ybWF0IGNvbnZlcnRzIHRoZSBkZWNpbWFsIG51bWJlcgorICAgICAqIHRvIGEgZG91YmxlIGFu
ZCBmb3JtYXRzIHRoYXQuICBTdWJjbGFzc2VzIG9mIE51bWJlckZvcm1hdCB0aGF0IHdhbnQKKyAg
ICAgKiB0byBzcGVjaWZpY2FsbHkgaGFuZGxlIGJpZyBkZWNpbWFsIG51bWJlcnMgbXVzdCBvdmVy
cmlkZSB0aGlzIG1ldGhvZC4KKyAgICAgKiBjbGFzcyBEZWNpbWFsRm9ybWF0IGRvZXMgc28uCisg
ICAgICoKKyAgICAgKiBAcGFyYW0gbnVtYmVyICAgIFRoZSBudW1iZXIsIGEgRGlnaXRMaXN0IGZv
cm1hdCBEZWNpbWFsIEZsb2F0aW5nIFBvaW50LgorICAgICAqIEBwYXJhbSBhcHBlbmRUbyAgT3V0
cHV0IHBhcmFtZXRlciB0byByZWNlaXZlIHJlc3VsdC4KKyAgICAgKiAgICAgICAgICAgICAgICAg
IFJlc3VsdCBpcyBhcHBlbmRlZCB0byBleGlzdGluZyBjb250ZW50cy4KKyAgICAgKiBAcGFyYW0g
cG9zICAgICAgIE9uIGlucHV0OiBhbiBhbGlnbm1lbnQgZmllbGQsIGlmIGRlc2lyZWQuCisgICAg
ICogICAgICAgICAgICAgICAgICBPbiBvdXRwdXQ6IHRoZSBvZmZzZXRzIG9mIHRoZSBhbGlnbm1l
bnQgZmllbGQuCisgICAgICogQHBhcmFtIHN0YXR1cyAgICBPdXRwdXQgcGFyYW0gZmlsbGVkIHdp
dGggc3VjY2Vzcy9mYWlsdXJlIHN0YXR1cy4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgIFJlZmVy
ZW5jZSB0byAnYXBwZW5kVG8nIHBhcmFtZXRlci4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8K
KyAgICB2aXJ0dWFsIFVuaWNvZGVTdHJpbmcmIGZvcm1hdChjb25zdCBEaWdpdExpc3QgJm51bWJl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiBhcHBl
bmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uJiBw
b3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3RhdHVz
KSBjb25zdDsKK3B1YmxpYzoKKwogICB1c2luZyBOdW1iZXJGb3JtYXQ6OnBhcnNlOwogCiAgIC8q
KgpAQCAtOTI1LDYgKzEwMTAsMjAgQEAgcHVibGljOgogICAgKi8KICAgdmlydHVhbCB2b2lkIHNl
dENvbnRleHQoVURpc3BsYXlDb250ZXh0IHZhbHVlLCBVRXJyb3JDb2RlJiBzdGF0dXMpOwogCisg
ICAgLyoqCisgICAgICogR2V0IHRoZSByb3VuZGluZyBtb2RlLgorICAgICAqIEByZXR1cm4gQSBy
b3VuZGluZyBtb2RlCisgICAgICogQGRyYWZ0IElDVSA2MAorICAgICAqLworICAgIHZpcnR1YWwg
RVJvdW5kaW5nTW9kZSBnZXRSb3VuZGluZ01vZGUodm9pZCkgY29uc3Q7CisKKyAgICAvKioKKyAg
ICAgKiBTZXQgdGhlIHJvdW5kaW5nIG1vZGUuCisgICAgICogQHBhcmFtIHJvdW5kaW5nTW9kZSBB
IHJvdW5kaW5nIG1vZGUKKyAgICAgKiBAZHJhZnQgSUNVIDYwCisgICAgICovCisgICAgdmlydHVh
bCB2b2lkIHNldFJvdW5kaW5nTW9kZShFUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSk7CisKIHB1
YmxpYzoKICAgICAvKioKICAgICAgKiBJQ1UgInBvb3IgbWFuJ3MgUlRUSSIsIHJldHVybnMgYSBV
Q2xhc3NJRCBmb3IgdGhpcyBjbGFzcy4KQEAgLTk3NCwxOSArMTA3MywyNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlzcG9zZSgpOwogICAgIHZvaWQgc3RyaXBXaGl0ZXNwYWNlKFVuaWNvZGVTdHJp
bmcmIHNyYyk7CiAgICAgdm9pZCBpbml0RGVmYXVsdFJ1bGVTZXQoKTsKLSAgICB2b2lkIGZvcm1h
dChkb3VibGUgbnVtYmVyLCBORlJ1bGVTZXQmIHJ1bGVTZXQpOwogICAgIE5GUnVsZVNldCogZmlu
ZFJ1bGVTZXQoY29uc3QgVW5pY29kZVN0cmluZyYgbmFtZSwgVUVycm9yQ29kZSYgc3RhdHVzKSBj
b25zdDsKIAogICAgIC8qIGZyaWVuZCBhY2Nlc3MgKi8KICAgICBmcmllbmQgY2xhc3MgTkZTdWJz
dGl0dXRpb247CiAgICAgZnJpZW5kIGNsYXNzIE5GUnVsZTsKKyAgICBmcmllbmQgY2xhc3MgTkZS
dWxlU2V0OwogICAgIGZyaWVuZCBjbGFzcyBGcmFjdGlvbmFsUGFydFN1YnN0aXR1dGlvbjsKIAog
ICAgIGlubGluZSBORlJ1bGVTZXQgKiBnZXREZWZhdWx0UnVsZVNldCgpIGNvbnN0OwogICAgIGNv
bnN0IFJ1bGVCYXNlZENvbGxhdG9yICogZ2V0Q29sbGF0b3IoKSBjb25zdDsKLSAgICBEZWNpbWFs
Rm9ybWF0U3ltYm9scyAqIGdldERlY2ltYWxGb3JtYXRTeW1ib2xzKCkgY29uc3Q7CisgICAgRGVj
aW1hbEZvcm1hdFN5bWJvbHMgKiBpbml0aWFsaXplRGVjaW1hbEZvcm1hdFN5bWJvbHMoVUVycm9y
Q29kZSAmc3RhdHVzKTsKKyAgICBjb25zdCBEZWNpbWFsRm9ybWF0U3ltYm9scyAqIGdldERlY2lt
YWxGb3JtYXRTeW1ib2xzKCkgY29uc3Q7CisgICAgTkZSdWxlICogaW5pdGlhbGl6ZURlZmF1bHRJ
bmZpbml0eVJ1bGUoVUVycm9yQ29kZSAmc3RhdHVzKTsKKyAgICBjb25zdCBORlJ1bGUgKiBnZXRE
ZWZhdWx0SW5maW5pdHlSdWxlKCkgY29uc3Q7CisgICAgTkZSdWxlICogaW5pdGlhbGl6ZURlZmF1
bHROYU5SdWxlKFVFcnJvckNvZGUgJnN0YXR1cyk7CisgICAgY29uc3QgTkZSdWxlICogZ2V0RGVm
YXVsdE5hTlJ1bGUoKSBjb25zdDsKICAgICBQbHVyYWxGb3JtYXQgKmNyZWF0ZVBsdXJhbEZvcm1h
dChVUGx1cmFsVHlwZSBwbHVyYWxUeXBlLCBjb25zdCBVbmljb2RlU3RyaW5nICZwYXR0ZXJuLCBV
RXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OwotICAgIFVuaWNvZGVTdHJpbmcmIGFkanVzdEZvckNh
cGl0YWxpemF0aW9uQ29udGV4dChpbnQzMl90IHN0YXJ0UG9zLCBVbmljb2RlU3RyaW5nJiBjdXJy
ZW50UmVzdWx0KSBjb25zdDsKKyAgICBVbmljb2RlU3RyaW5nJiBhZGp1c3RGb3JDYXBpdGFsaXph
dGlvbkNvbnRleHQoaW50MzJfdCBzdGFydFBvcywgVW5pY29kZVN0cmluZyYgY3VycmVudFJlc3Vs
dCwgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKKyAgICBVbmljb2RlU3RyaW5nJiBmb3JtYXQo
aW50NjRfdCBudW1iZXIsIE5GUnVsZVNldCAqcnVsZVNldCwgVW5pY29kZVN0cmluZyYgdG9BcHBl
bmRUbywgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKKyAgICB2b2lkIGZvcm1hdChkb3VibGUg
bnVtYmVyLCBORlJ1bGVTZXQmIHJzLCBVbmljb2RlU3RyaW5nJiB0b0FwcGVuZFRvLCBVRXJyb3JD
b2RlJiBzdGF0dXMpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIE5GUnVsZVNldCAqKnJ1bGVTZXRz
OwpAQCAtOTk2LDYgKzExMDIsOSBAQCBwcml2YXRlOgogICAgIExvY2FsZSBsb2NhbGU7CiAgICAg
UnVsZUJhc2VkQ29sbGF0b3IqIGNvbGxhdG9yOwogICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzKiBk
ZWNpbWFsRm9ybWF0U3ltYm9sczsKKyAgICBORlJ1bGUgKmRlZmF1bHRJbmZpbml0eVJ1bGU7Cisg
ICAgTkZSdWxlICpkZWZhdWx0TmFOUnVsZTsKKyAgICBFUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9k
ZTsKICAgICBVQm9vbCBsZW5pZW50OwogICAgIFVuaWNvZGVTdHJpbmcqIGxlbmllbnRQYXJzZVJ1
bGVzOwogICAgIExvY2FsaXphdGlvbkluZm8qIGxvY2FsaXphdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3JidHouaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmJ0
ei5oCmluZGV4IGYyMGZjODFhNGU1YzJjOGY3MjM1NmNjNTk4MGJlODQ5NjkxZDQ1ZGQuLjZkNjUy
ZjY5MmIyMjFlYWY2MTAyMTYxYzZjOGZkMjAzNGYwODM3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvcmJ0ei5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmJ0ei5o
CkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5k
IG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0
aW9uIGFuZCAgICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JlZ2V4Lmgg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JlZ2V4LmgKaW5kZXggYzNjNjQ0MWI2ZjhjYjRmZjYz
MmE4NzhhNzMwODhkNDhhNDNmZTU3NC4uNjgyOWY3YmE0NzI1NWZmNjVkZWRlODYyODY3MTc2ZDI1
ZDQxZGFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9yZWdleC5oCisrKyBi
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmVnZXguaApAQCAtMSwxMCArMSwxMiBAQAorLy8gwqkg
MjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0
ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTUsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3B5cmlnaHQgKEMpIDIwMDItMjAxNiwgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwg
UmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIHJlZ2V4LmgK
LSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgaW5k
ZW50YXRpb246NAogKgogKiAgIGNyZWF0ZWQgb246IDIwMDJvY3QyMgpAQCAtMzQ4LDE3ICszNTAs
MTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvKioKICAgICAgKiBDYXVzZSBhIGNvbXBpbGF0
aW9uIGVycm9yIGlmIGFuIGFwcGxpY2F0aW9uIGFjY2lkZW50YWxseSBhdHRlbXB0cyB0bwotICAg
ICAqICAgY3JlYXRlIGEgbWF0Y2hlciB3aXRoIGEgKFVDaGFyICopIHN0cmluZyBhcyBpbnB1dCBy
YXRoZXIgdGhhbgorICAgICAqICAgY3JlYXRlIGEgbWF0Y2hlciB3aXRoIGEgKGNoYXIxNl90ICop
IHN0cmluZyBhcyBpbnB1dCByYXRoZXIgdGhhbgogICAgICAqICAgYSBVbmljb2RlU3RyaW5nLiAg
QXZvaWRzIGEgZGFuZ2xpbmcgcmVmZXJlbmNlIHRvIGEgdGVtcG9yYXJ5IHN0cmluZy4KICAgICAg
KiA8cD4KLSAgICAgKiBUbyBlZmZpY2llbnRseSB3b3JrIHdpdGggVUNoYXIgKnN0cmluZ3MsIHdy
YXAgdGhlIGRhdGEgaW4gYSBVbmljb2RlU3RyaW5nCisgICAgICogVG8gZWZmaWNpZW50bHkgd29y
ayB3aXRoIGNoYXIxNl90ICpzdHJpbmdzLCB3cmFwIHRoZSBkYXRhIGluIGEgVW5pY29kZVN0cmlu
ZwogICAgICAqIHVzaW5nIG9uZSBvZiB0aGUgYWxpYXNpbmcgY29uc3RydWN0b3JzLCBzdWNoIGFz
Ci0gICAgICogPGNvZGU+VW5pY29kZVN0cmluZyhVQm9vbCBpc1Rlcm1pbmF0ZWQsIGNvbnN0IFVD
aGFyICp0ZXh0LCBpbnQzMl90IHRleHRMZW5ndGgpOzwvY29kZT4KKyAgICAgKiA8Y29kZT5Vbmlj
b2RlU3RyaW5nKFVCb29sIGlzVGVybWluYXRlZCwgY29uc3QgY2hhcjE2X3QgKnRleHQsIGludDMy
X3QgdGV4dExlbmd0aCk7PC9jb2RlPgogICAgICAqIG9yIGluIGEgVVRleHQsIHVzaW5nCi0gICAg
ICogPGNvZGU+dXRleHRfb3BlblVDaGFycyhVVGV4dCAqdXQsIGNvbnN0IFVDaGFyICp0ZXh0LCBp
bnQ2NF90IHRleHRMZW5ndGgsIFVFcnJvckNvZGUgKnN0YXR1cyk7PC9jb2RlPgorICAgICAqIDxj
b2RlPnV0ZXh0X29wZW5VQ2hhcnMoVVRleHQgKnV0LCBjb25zdCBjaGFyMTZfdCAqdGV4dCwgaW50
NjRfdCB0ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlICpzdGF0dXMpOzwvY29kZT4KICAgICAgKgogICAg
ICAqLwotICAgIFJlZ2V4TWF0Y2hlciAqbWF0Y2hlcihjb25zdCBVQ2hhciAqaW5wdXQsCisgICAg
UmVnZXhNYXRjaGVyICptYXRjaGVyKGNvbnN0IGNoYXIxNl90ICppbnB1dCwKICAgICAgICAgVUVy
cm9yQ29kZSAgICAgICAgICAmc3RhdHVzKSBjb25zdDsKIHB1YmxpYzoKIApAQCAtNDUwLDcgKzQ1
Miw3IEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gIGdyb3VwTmFtZSAgIFRoZSBjYXB0dXJlIGdy
b3VwIG5hbWUuCiAgICAgICogQHBhcmFtICBzdGF0dXMgICAgICBBIFVFcnJvckNvZGUgdG8gcmVj
ZWl2ZSBhbnkgZXJyb3JzLgogICAgICAqCi0gICAgICogQGRyYWZ0IElDVSA1NQorICAgICAqIEBz
dGFibGUgSUNVIDU1CiAgICAgICovCiAgICAgdmlydHVhbCBpbnQzMl90IGdyb3VwTnVtYmVyRnJv
bU5hbWUoY29uc3QgVW5pY29kZVN0cmluZyAmZ3JvdXBOYW1lLCBVRXJyb3JDb2RlICZzdGF0dXMp
IGNvbnN0OwogCkBAIC00NjksNyArNDcxLDcgQEAgcHVibGljOgogICAgICAqICAgICAgICAgICAg
ICAgICAgICAgbnVsLXRlcm1pbmF0ZWQuCiAgICAgICogQHBhcmFtICBzdGF0dXMgICAgICBBIFVF
cnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLgogICAgICAqCi0gICAgICogQGRyYWZ0IElD
VSA1NQorICAgICAqIEBzdGFibGUgSUNVIDU1CiAgICAgICovCiAgICAgdmlydHVhbCBpbnQzMl90
IGdyb3VwTnVtYmVyRnJvbU5hbWUoY29uc3QgY2hhciAqZ3JvdXBOYW1lLCBpbnQzMl90IG5hbWVM
ZW5ndGgsIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CiAKQEAgLTc0NiwxNyArNzQ4LDE3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLyoqCiAgICAgICogQ2F1c2UgYSBjb21waWxhdGlvbiBl
cnJvciBpZiBhbiBhcHBsaWNhdGlvbiBhY2NpZGVudGFsbHkgYXR0ZW1wdHMgdG8KLSAgICAgKiAg
IGNyZWF0ZSBhIG1hdGNoZXIgd2l0aCBhIChVQ2hhciAqKSBzdHJpbmcgYXMgaW5wdXQgcmF0aGVy
IHRoYW4KKyAgICAgKiAgIGNyZWF0ZSBhIG1hdGNoZXIgd2l0aCBhIChjaGFyMTZfdCAqKSBzdHJp
bmcgYXMgaW5wdXQgcmF0aGVyIHRoYW4KICAgICAgKiAgIGEgVW5pY29kZVN0cmluZy4gICAgQXZv
aWRzIGEgZGFuZ2xpbmcgcmVmZXJlbmNlIHRvIGEgdGVtcG9yYXJ5IHN0cmluZy4KICAgICAgKiA8
cD4KLSAgICAgKiBUbyBlZmZpY2llbnRseSB3b3JrIHdpdGggVUNoYXIgKnN0cmluZ3MsIHdyYXAg
dGhlIGRhdGEgaW4gYSBVbmljb2RlU3RyaW5nCisgICAgICogVG8gZWZmaWNpZW50bHkgd29yayB3
aXRoIGNoYXIxNl90ICpzdHJpbmdzLCB3cmFwIHRoZSBkYXRhIGluIGEgVW5pY29kZVN0cmluZwog
ICAgICAqIHVzaW5nIG9uZSBvZiB0aGUgYWxpYXNpbmcgY29uc3RydWN0b3JzLCBzdWNoIGFzCi0g
ICAgICogPGNvZGU+VW5pY29kZVN0cmluZyhVQm9vbCBpc1Rlcm1pbmF0ZWQsIGNvbnN0IFVDaGFy
ICp0ZXh0LCBpbnQzMl90IHRleHRMZW5ndGgpOzwvY29kZT4KKyAgICAgKiA8Y29kZT5Vbmljb2Rl
U3RyaW5nKFVCb29sIGlzVGVybWluYXRlZCwgY29uc3QgY2hhcjE2X3QgKnRleHQsIGludDMyX3Qg
dGV4dExlbmd0aCk7PC9jb2RlPgogICAgICAqIG9yIGluIGEgVVRleHQsIHVzaW5nCi0gICAgICog
PGNvZGU+dXRleHRfb3BlblVDaGFycyhVVGV4dCAqdXQsIGNvbnN0IFVDaGFyICp0ZXh0LCBpbnQ2
NF90IHRleHRMZW5ndGgsIFVFcnJvckNvZGUgKnN0YXR1cyk7PC9jb2RlPgorICAgICAqIDxjb2Rl
PnV0ZXh0X29wZW5VQ2hhcnMoVVRleHQgKnV0LCBjb25zdCBjaGFyMTZfdCAqdGV4dCwgaW50NjRf
dCB0ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlICpzdGF0dXMpOzwvY29kZT4KICAgICAgKgogICAgICAq
LwotICAgIFJlZ2V4TWF0Y2hlcihjb25zdCBVbmljb2RlU3RyaW5nICZyZWdleHAsIGNvbnN0IFVD
aGFyICppbnB1dCwKKyAgICBSZWdleE1hdGNoZXIoY29uc3QgVW5pY29kZVN0cmluZyAmcmVnZXhw
LCBjb25zdCBjaGFyMTZfdCAqaW5wdXQsCiAgICAgICAgIHVpbnQzMl90IGZsYWdzLCBVRXJyb3JD
b2RlICZzdGF0dXMpOwogcHVibGljOgogCkBAIC04NDksNyArODUxLDcgQEAgcHVibGljOgogICAg
ICogICAgIHBvc2l0aW9uIG1heSBub3QgYmUgdmFsaWQgd2l0aCB0aGUgYWx0ZXJlZCBpbnB1dCBz
dHJpbmcuPC9wPgogICAgICogIEBwYXJhbSAgIHN0YXR1cyAgQSByZWZlcmVuY2UgdG8gYSBVRXJy
b3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycy4KICAgICAqICBAcmV0dXJuICBUUlVFIGlmIGEg
bWF0Y2ggaXMgZm91bmQuCi0gICAgKiAgQGRyYWZ0IElDVSA1NQorICAgICogQHN0YWJsZSBJQ1Ug
NTUKICAgICAqLwogICAgIHZpcnR1YWwgVUJvb2wgZmluZChVRXJyb3JDb2RlICZzdGF0dXMpOwog
CkBAIC04ODEsNiArODgzLDExIEBAIHB1YmxpYzoKICAgICAqICAgIFJldHVybnMgYSBzdHJpbmcg
Y29udGFpbmluZyB0aGUgdGV4dCBjYXB0dXJlZCBieSB0aGUgZ2l2ZW4gZ3JvdXAKICAgICAqICAg
IGR1cmluZyB0aGUgcHJldmlvdXMgbWF0Y2ggb3BlcmF0aW9uLiAgR3JvdXAoMCkgaXMgdGhlIGVu
dGlyZSBtYXRjaC4KICAgICAqCisgICAgKiAgICBBIHplcm8gbGVuZ3RoIHN0cmluZyBpcyByZXR1
cm5lZCBib3RoIGZvciBjYXB0dXJlIGdyb3VwcyB0aGF0IGRpZCBub3QKKyAgICAqICAgIHBhcnRp
Y2lwYXRlIGluIHRoZSBtYXRjaCBhbmQgZm9yIGFjdHVhbCB6ZXJvIGxlbmd0aCBtYXRjaGVzLgor
ICAgICogICAgVG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVzZSB0d28gY2FzZXMgdXNlIHRoZSBm
dW5jdGlvbiBzdGFydCgpLAorICAgICogICAgd2hpY2ggcmV0dXJucyAtMSBmb3Igbm9uLXBhcnRp
Y2lwYXRpbmcgZ3JvdXBzLgorICAgICoKICAgICAqICAgIEBwYXJhbSBncm91cE51bSB0aGUgY2Fw
dHVyZSBncm91cCBudW1iZXIKICAgICAqICAgIEBwYXJhbSAgIHN0YXR1cyAgICAgQSByZWZlcmVu
Y2UgdG8gYSBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycy4KICAgICAqICAgICAgICAg
ICAgICAgICAgICAgICAgUG9zc2libGUgZXJyb3JzIGFyZSAgVV9SRUdFWF9JTlZBTElEX1NUQVRF
IGlmIG5vIG1hdGNoCkBAIC05MTksNiArOTI2LDExIEBAIHB1YmxpYzoKICAgICAqICAgUmV0dXJu
cyBhIHNoYWxsb3cgY2xvbmUgb2YgdGhlIGVudGlyZSBsaXZlIGlucHV0IHN0cmluZyB3aXRoIHRo
ZSBVVGV4dCBjdXJyZW50IG5hdGl2ZSBpbmRleAogICAgICogICBzZXQgdG8gdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgcmVxdWVzdGVkIGdyb3VwLgogICAgICoKKyAgICAqICAgQSBncm91cCBsZW5ndGgg
b2YgemVybyBpcyByZXR1cm5lZCBib3RoIGZvciBjYXB0dXJlIGdyb3VwcyB0aGF0IGRpZCBub3QK
KyAgICAqICAgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoIGFuZCBmb3IgYWN0dWFsIHplcm8gbGVu
Z3RoIG1hdGNoZXMuCisgICAgKiAgIFRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlc2UgdHdvIGNh
c2VzIHVzZSB0aGUgZnVuY3Rpb24gc3RhcnQoKSwKKyAgICAqICAgd2hpY2ggcmV0dXJucyAtMSBm
b3Igbm9uLXBhcnRpY2lwYXRpbmcgZ3JvdXBzLgorICAgICoKICAgICAqICAgQHBhcmFtICAgZ3Jv
dXBOdW0gICBUaGUgY2FwdHVyZSBncm91cCBudW1iZXIuCiAgICAgKiAgIEBwYXJhbSAgIGRlc3Qg
ICAgICAgIFRoZSBVVGV4dCBpbnRvIHdoaWNoIHRoZSBpbnB1dCBzaG91bGQgYmUgY2xvbmVkLCBv
ciBOVUxMIHRvIGNyZWF0ZSBhIG5ldyBVVGV4dC4KICAgICAqICAgQHBhcmFtICAgZ3JvdXBfbGVu
ICAgQSByZWZlcmVuY2UgdG8gcmVjZWl2ZSB0aGUgbGVuZ3RoIG9mIHRoZSBkZXNpcmVkIGNhcHR1
cmUgZ3JvdXAKQEAgLTExNDQsMTcgKzExNTYsMTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAv
KioKICAgICAgKiBDYXVzZSBhIGNvbXBpbGF0aW9uIGVycm9yIGlmIGFuIGFwcGxpY2F0aW9uIGFj
Y2lkZW50YWxseSBhdHRlbXB0cyB0bwotICAgICAqICAgcmVzZXQgYSBtYXRjaGVyIHdpdGggYSAo
VUNoYXIgKikgc3RyaW5nIGFzIGlucHV0IHJhdGhlciB0aGFuCisgICAgICogICByZXNldCBhIG1h
dGNoZXIgd2l0aCBhIChjaGFyMTZfdCAqKSBzdHJpbmcgYXMgaW5wdXQgcmF0aGVyIHRoYW4KICAg
ICAgKiAgIGEgVW5pY29kZVN0cmluZy4gICAgQXZvaWRzIGEgZGFuZ2xpbmcgcmVmZXJlbmNlIHRv
IGEgdGVtcG9yYXJ5IHN0cmluZy4KICAgICAgKiA8cD4KLSAgICAgKiBUbyBlZmZpY2llbnRseSB3
b3JrIHdpdGggVUNoYXIgKnN0cmluZ3MsIHdyYXAgdGhlIGRhdGEgaW4gYSBVbmljb2RlU3RyaW5n
CisgICAgICogVG8gZWZmaWNpZW50bHkgd29yayB3aXRoIGNoYXIxNl90ICpzdHJpbmdzLCB3cmFw
IHRoZSBkYXRhIGluIGEgVW5pY29kZVN0cmluZwogICAgICAqIHVzaW5nIG9uZSBvZiB0aGUgYWxp
YXNpbmcgY29uc3RydWN0b3JzLCBzdWNoIGFzCi0gICAgICogPGNvZGU+VW5pY29kZVN0cmluZyhV
Qm9vbCBpc1Rlcm1pbmF0ZWQsIGNvbnN0IFVDaGFyICp0ZXh0LCBpbnQzMl90IHRleHRMZW5ndGgp
OzwvY29kZT4KKyAgICAgKiA8Y29kZT5Vbmljb2RlU3RyaW5nKFVCb29sIGlzVGVybWluYXRlZCwg
Y29uc3QgY2hhcjE2X3QgKnRleHQsIGludDMyX3QgdGV4dExlbmd0aCk7PC9jb2RlPgogICAgICAq
IG9yIGluIGEgVVRleHQsIHVzaW5nCi0gICAgICogPGNvZGU+dXRleHRfb3BlblVDaGFycyhVVGV4
dCAqdXQsIGNvbnN0IFVDaGFyICp0ZXh0LCBpbnQ2NF90IHRleHRMZW5ndGgsIFVFcnJvckNvZGUg
KnN0YXR1cyk7PC9jb2RlPgorICAgICAqIDxjb2RlPnV0ZXh0X29wZW5VQ2hhcnMoVVRleHQgKnV0
LCBjb25zdCBjaGFyMTZfdCAqdGV4dCwgaW50NjRfdCB0ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlICpz
dGF0dXMpOzwvY29kZT4KICAgICAgKgogICAgICAqLwotICAgIFJlZ2V4TWF0Y2hlciAmcmVzZXQo
Y29uc3QgVUNoYXIgKmlucHV0KTsKKyAgICBSZWdleE1hdGNoZXIgJnJlc2V0KGNvbnN0IGNoYXIx
Nl90ICppbnB1dCk7CiBwdWJsaWM6CiAKICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9yZWdpb24uaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmVnaW9uLmgKaW5k
ZXggY2I3NTIzNGJmOWI2MTk2YWEwOTE1MDgwNDI3MDM1ODhlMzc2YTRlOC4uODBiMjkyOWU5ZjAw
YzNjNjNiMWRlNjMyMzU4YTFlMTA0ZDQxOTA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9yZWdpb24uaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3JlZ2lvbi5oCkBA
IC0xLDYgKzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRp
b24gYW5kIG90aGVycy4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2LCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCiAgKiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqLwpAQCAtMTAxLDEzICsxMDMs
MTEgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRpYyBjb25zdCBSZWdpb24qIFVfRVhQT1JU
MiBnZXRJbnN0YW5jZSAoaW50MzJfdCBjb2RlLCBVRXJyb3JDb2RlICZzdGF0dXMpOwogCi0jaWZu
ZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIGFuIGVudW1lcmF0
aW9uIG92ZXIgdGhlIElEcyBvZiBhbGwga25vd24gcmVnaW9ucyB0aGF0IG1hdGNoIHRoZSBnaXZl
biB0eXBlLgotICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBAc3RhYmxlIElDVSA1NQogICAg
ICAqLwogICAgIHN0YXRpYyBTdHJpbmdFbnVtZXJhdGlvbiogVV9FWFBPUlQyIGdldEF2YWlsYWJs
ZShVUmVnaW9uVHlwZSB0eXBlLCBVRXJyb3JDb2RlICZzdGF0dXMpOwotI2VuZGlmIC8qIFVfSElE
RV9EUkFGVF9BUEkgKi8KICAgIAogICAgIC8qKgogICAgICAqIFJldHVybnMgYSBwb2ludGVyIHRv
IHRoZSByZWdpb24gdGhhdCBjb250YWlucyB0aGlzIHJlZ2lvbi4gIFJldHVybnMgTlVMTCBpZiB0
aGlzIHJlZ2lvbiBpcyBjb2RlICIwMDEiIChXb3JsZCkKQEAgLTEyNyw3ICsxMjcsNiBAQCBwdWJs
aWM6CiAgICAgICovCiAgICAgY29uc3QgUmVnaW9uKiBnZXRDb250YWluaW5nUmVnaW9uKFVSZWdp
b25UeXBlIHR5cGUpIGNvbnN0OwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioK
ICAgICAgKiBSZXR1cm4gYW4gZW51bWVyYXRpb24gb3ZlciB0aGUgSURzIG9mIGFsbCB0aGUgcmVn
aW9ucyB0aGF0IGFyZSBpbW1lZGlhdGUgY2hpbGRyZW4gb2YgdGhpcyByZWdpb24gaW4gdGhlCiAg
ICAgICogcmVnaW9uIGhpZXJhcmNoeS4gVGhlc2UgcmV0dXJuZWQgcmVnaW9ucyBjb3VsZCBiZSBl
aXRoZXIgbWFjcm8gcmVnaW9ucywgdGVycml0b3JpZXMsIG9yIGEgbWl4dHVyZSBvZiB0aGUgdHdv
LApAQCAtMTM1LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICAgKiBhbnkgc3ViLXJlZ2lvbnMuIEZv
ciBleGFtcGxlLCBjYWxsaW5nIHRoaXMgbWV0aG9kIHdpdGggcmVnaW9uICIxNTAiIChFdXJvcGUp
IHJldHVybnMgYW4gZW51bWVyYXRpb24gY29udGFpbmluZwogICAgICAqIHRoZSB2YXJpb3VzIHN1
YiByZWdpb25zIG9mIEV1cm9wZSAtICIwMzkiIChTb3V0aGVybiBFdXJvcGUpIC0gIjE1MSIgKEVh
c3Rlcm4gRXVyb3BlKSAtICIxNTQiIChOb3J0aGVybiBFdXJvcGUpCiAgICAgICogYW5kICIxNTUi
IChXZXN0ZXJuIEV1cm9wZSkuCi0gICAgICogQGRyYWZ0IElDVSA1NSAKKyAgICAgKiBAc3RhYmxl
IElDVSA1NQogICAgICAqLwogICAgIFN0cmluZ0VudW1lcmF0aW9uKiBnZXRDb250YWluZWRSZWdp
b25zKFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CiAKQEAgLTE0NCwxMCArMTQzLDkgQEAgcHVi
bGljOgogICAgICAqIGhpZXJhcmNoeSBhbmQgbWF0Y2ggdGhlIGdpdmVuIHR5cGUuICBUaGlzIEFQ
SSBtYXkgcmV0dXJuIGFuIGVtcHR5IGVudW1lcmF0aW9uIGlmIHRoaXMgcmVnaW9uIGRvZXNuJ3Qg
aGF2ZSBhbnkKICAgICAgKiBzdWItcmVnaW9ucyB0aGF0IG1hdGNoIHRoZSBnaXZlbiB0eXBlLiBG
b3IgZXhhbXBsZSwgY2FsbGluZyB0aGlzIG1ldGhvZCB3aXRoIHJlZ2lvbiAiMTUwIiAoRXVyb3Bl
KSBhbmQgdHlwZQogICAgICAqICJVUkdOX1RFUlJJVE9SWSIgcmV0dXJucyBhIHNldCBjb250YWlu
aW5nIGFsbCB0aGUgdGVycml0b3JpZXMgaW4gRXVyb3BlICggIkZSIiAoRnJhbmNlKSAtICJJVCIg
KEl0YWx5KSAtICJERSIgKEdlcm1hbnkpIGV0Yy4gKQotICAgICAqIEBkcmFmdCBJQ1UgNTUgCisg
ICAgICogQHN0YWJsZSBJQ1UgNTUKICAgICAgKi8KICAgICBTdHJpbmdFbnVtZXJhdGlvbiogZ2V0
Q29udGFpbmVkUmVnaW9ucyggVVJlZ2lvblR5cGUgdHlwZSwgVUVycm9yQ29kZSAmc3RhdHVzICkg
Y29uc3Q7Ci0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogIAogICAgIC8qKgogICAgICAq
IFJldHVybnMgdHJ1ZSBpZiB0aGlzIHJlZ2lvbiBjb250YWlucyB0aGUgc3VwcGxpZWQgb3RoZXIg
cmVnaW9uIGFueXdoZXJlIGluIHRoZSByZWdpb24gaGllcmFyY2h5LgpAQCAtMTU1LDE1ICsxNTMs
MTMgQEAgcHVibGljOgogICAgICAqLwogICAgIFVCb29sIGNvbnRhaW5zKGNvbnN0IFJlZ2lvbiAm
b3RoZXIpIGNvbnN0OwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAg
KiBGb3IgZGVwcmVjYXRlZCByZWdpb25zLCByZXR1cm4gYW4gZW51bWVyYXRpb24gb3ZlciB0aGUg
SURzIG9mIHRoZSByZWdpb25zIHRoYXQgYXJlIHRoZSBwcmVmZXJyZWQgcmVwbGFjZW1lbnQKICAg
ICAgKiByZWdpb25zIGZvciB0aGlzIHJlZ2lvbi4gIFJldHVybnMgbnVsbCBmb3IgYSBub24tZGVw
cmVjYXRlZCByZWdpb24uICBGb3IgZXhhbXBsZSwgY2FsbGluZyB0aGlzIG1ldGhvZCB3aXRoIHJl
Z2lvbgogICAgICAqICJTVSIgKFNvdmlldCBVbmlvbikgd291bGQgcmV0dXJuIGEgbGlzdCBvZiB0
aGUgcmVnaW9ucyBjb250YWluaW5nICJSVSIgKFJ1c3NpYSksICJBTSIgKEFybWVuaWEpLCAiQVoi
IChBemVyYmFpamFuKSwgZXRjLi4uCi0gICAgICogQGRyYWZ0IElDVSA1NSAKKyAgICAgKiBAc3Rh
YmxlIElDVSA1NSAKICAgICAgKi8KICAgICBTdHJpbmdFbnVtZXJhdGlvbiogZ2V0UHJlZmVycmVk
VmFsdWVzKFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7Ci0jZW5kaWYgLyogVV9ISURFX0RSQUZU
X0FQSSAqLwogCiAgICAgLyoqCiAgICAgICogUmV0dXJuIHRoaXMgcmVnaW9uJ3MgY2Fub25pY2Fs
IHJlZ2lvbiBjb2RlLgpAQCAtMjE2LDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgICogYW55dGhp
bmcgbWVhbmluZ2Z1bC4KICAgICAgKi8KIAotICAgIHN0YXRpYyB2b2lkIGxvYWRSZWdpb25EYXRh
KFVFcnJvckNvZGUgJnN0YXR1cyk7CisgICAgc3RhdGljIHZvaWQgVV9DQUxMQ09OViBsb2FkUmVn
aW9uRGF0YShVRXJyb3JDb2RlICZzdGF0dXMpOwogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL3JlbGRhdGVmbXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvcmVs
ZGF0ZWZtdC5oCmluZGV4IDdiNDE2Y2ZjZjZmNzE1ZTk3Y2Q1OWIzNDNiNmJkNGM3MjMxNWIwOGMu
LjA5ZDk2MjBiZTViMDYzMWRmODdiMGU0NGNhM2QxZDMzMzdkMTIwM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvcmVsZGF0ZWZtdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvcmVsZGF0ZWZtdC5oCkBAIC0xLDYgKzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6
IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0
dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgotKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYsIEludGVy
bmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCiAqIG90aGVycy4KICog
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xNSw2ICsxNyw3
IEBACiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKICNpbmNsdWRlICJ1bmljb2RlL3VvYmpl
Y3QuaCIKICNpbmNsdWRlICJ1bmljb2RlL3VkaXNwbGF5Y29udGV4dC5oIgorI2luY2x1ZGUgInVu
aWNvZGUvdXJlbGRhdGVmbXQuaCIKICNpbmNsdWRlICJ1bmljb2RlL2xvY2lkLmgiCiAKIC8qKgpA
QCAtMjIsNDIgKzI1LDcgQEAKICAqIFxicmllZiBDKysgQVBJOiBGb3JtYXRzIHJlbGF0aXZlIGRh
dGVzIHN1Y2ggYXMgIjEgZGF5IGFnbyIgb3IgInRvbW9ycm93IgogICovCiAKLSNpZiAhVUNPTkZJ
R19OT19GT1JNQVRUSU5HICYmICFVQ09ORklHX05PX0JSRUFLX0lURVJBVElPTgotCi0jaWZuZGVm
IFVfSElERV9EUkFGVF9BUEkKLQotLyoqCi0gKiBUaGUgZm9ybWF0dGluZyBzdHlsZQotICogQGRy
YWZ0IElDVSA1NAotICovCi10eXBlZGVmIGVudW0gVURhdGVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0
dGVyU3R5bGUgewotCi0gIC8qKgotICAgKiBFdmVyeXRoaW5nIHNwZWxsZWQgb3V0LgotICAgKiBA
ZHJhZnQgSUNVIDU0Ci0gICAqLwotICBVREFUX1NUWUxFX0xPTkcsCi0KLSAgLyoqCi0gICAqIEFi
YnJldmlhdGlvbnMgdXNlZCB3aGVuIHBvc3NpYmxlLgotICAgKiBAZHJhZnQgSUNVIDU0Ci0gICAq
LwotICBVREFUX1NUWUxFX1NIT1JULAotCi0gIC8qKgotICAgKiBVc2UgdGhlIHNob3J0ZXN0IHBv
c3NpYmxlIGZvcm0uCi0gICAqIEBkcmFmdCBJQ1UgNTQKLSAgICovCi0gIFVEQVRfU1RZTEVfTkFS
Uk9XLAotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIHN0eWxlcy4KLSAgICogQGRyYWZ0IElD
VSA1NAotICAgKi8KLSAgVURBVF9TVFlMRV9DT1VOVAotfSBVRGF0ZVJlbGF0aXZlRGF0ZVRpbWVG
b3JtYXR0ZXJTdHlsZTsgCi0KLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCisjaWYgIVVD
T05GSUdfTk9fRk9STUFUVElORwogCiAvKioKICAqIFJlcHJlc2VudHMgdGhlIHVuaXQgZm9yIGZv
cm1hdHRpbmcgYSByZWxhdGl2ZSBkYXRlLiBlLmcgImluIDUgZGF5cyIKQEAgLTEwOCwxMSArNzYs
MTMgQEAgdHlwZWRlZiBlbnVtIFVEYXRlUmVsYXRpdmVVbml0IHsKICAgICAgKi8KICAgICBVREFU
X1JFTEFUSVZFX1lFQVJTLAogCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAgIC8q
KgotICAgICAqIENvdW50IG9mIGl0ZW1zIGluIHRoaXMgZW51bS4KLSAgICAgKiBAc3RhYmxlIElD
VSA1MworICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVEYXRlUmVsYXRp
dmVVbml0IHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1
ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgogICAgICAqLwog
ICAgIFVEQVRfUkVMQVRJVkVfVU5JVF9DT1VOVAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRF
RF9BUEkKIH0gVURhdGVSZWxhdGl2ZVVuaXQ7CiAKIC8qKgpAQCAtMTk1LDExICsxNjUsMTMgQEAg
dHlwZWRlZiBlbnVtIFVEYXRlQWJzb2x1dGVVbml0IHsKICAgICAgKi8KICAgICBVREFUX0FCU09M
VVRFX05PVywKIAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgICAvKioKLSAgICAg
KiBDb3VudCBvZiBpdGVtcyBpbiB0aGlzIGVudW0uCi0gICAgICogQHN0YWJsZSBJQ1UgNTMKKyAg
ICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVRGF0ZUFic29sdXRlVW5pdCB2
YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNo
YW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KICAgICAgKi8KICAgICBVREFU
X0FCU09MVVRFX1VOSVRfQ09VTlQKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9
IFVEYXRlQWJzb2x1dGVVbml0OwogCiAvKioKQEAgLTI0NSwxNiArMjE3LDIwIEBAIHR5cGVkZWYg
ZW51bSBVRGF0ZURpcmVjdGlvbiB7CiAgICAgICovCiAgICAgVURBVF9ESVJFQ1RJT05fUExBSU4s
CiAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCiAgICAgLyoqCi0gICAgICogQ291bnQg
b2YgaXRlbXMgaW4gdGhpcyBlbnVtLgotICAgICAqIEBzdGFibGUgSUNVIDUzCisgICAgICogT25l
IG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVURhdGVEaXJlY3Rpb24gdmFsdWUuCisgICAg
ICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0
aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCiAgICAgICovCiAgICAgVURBVF9ESVJFQ1RJT05f
Q09VTlQKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9IFVEYXRlRGlyZWN0aW9u
OwogCisjaWYgIVVDT05GSUdfTk9fQlJFQUtfSVRFUkFUSU9OCiAKIFVfTkFNRVNQQUNFX0JFR0lO
CiAKK2NsYXNzIEJyZWFrSXRlcmF0b3I7CiBjbGFzcyBSZWxhdGl2ZURhdGVUaW1lQ2FjaGVEYXRh
OwogY2xhc3MgU2hhcmVkTnVtYmVyRm9ybWF0OwogY2xhc3MgU2hhcmVkUGx1cmFsUnVsZXM7CkBA
IC0zNTgsNyArMzM0LDYgQEAgcHVibGljOgogICAgIFJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIo
CiAgICAgICAgIGNvbnN0IExvY2FsZSYgbG9jYWxlLCBOdW1iZXJGb3JtYXQgKm5mVG9BZG9wdCwg
VUVycm9yQ29kZSYgc3RhdHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoq
CiAgICAgICogQ3JlYXRlIFJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIgd2l0aCBnaXZlbiBsb2Nh
bGUsIE51bWJlckZvcm1hdCwKICAgICAgKiBhbmQgY2FwaXRhbGl6YXRpb24gY29udGV4dC4KQEAg
LTM3Miw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIGNhcGl0YWxpemF0aW9uQ29u
dGV4dCBBIHZhbHVlIGZyb20gVURpc3BsYXlDb250ZXh0IHRoYXQgcGVydGFpbnMgdG8KICAgICAg
KiBjYXBpdGFsaXphdGlvbi4KICAgICAgKiBAc3RhdHVzIEFueSBlcnJvciBpcyByZXR1cm5lZCBo
ZXJlLiAKLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAg
Ki8KICAgICBSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKAogICAgICAgICAgICAgY29uc3QgTG9j
YWxlJiBsb2NhbGUsCkBAIC0zODAsNyArMzU1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgVURh
dGVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyU3R5bGUgc3R5bGUsCiAgICAgICAgICAgICBVRGlz
cGxheUNvbnRleHQgY2FwaXRhbGl6YXRpb25Db250ZXh0LAogICAgICAgICAgICAgVUVycm9yQ29k
ZSYgc3RhdHVzKTsKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogCiAgICAgLyoqCiAg
ICAgICogQ29weSBjb25zdHJ1Y3Rvci4KQEAgLTQ0MSw2ICs0MTUsNTIgQEAgcHVibGljOgogICAg
ICAgICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCiAgICAgICAgICAgICBVRXJyb3JDb2Rl
JiBzdGF0dXMpIGNvbnN0OwogCisgICAgLyoqCisgICAgICogRm9ybWF0IGEgY29tYmluYXRpb24g
b2YgVVJlbGF0aXZlRGF0ZVRpbWVVbml0IGFuZCBudW1lcmljIG9mZnNldAorICAgICAqIHVzaW5n
IGEgbnVtZXJpYyBzdHlsZSwgZS5nLiAiMSB3ZWVrIGFnbyIsICJpbiAxIHdlZWsiLAorICAgICAq
ICI1IHdlZWtzIGFnbyIsICJpbiA1IHdlZWtzIi4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gb2Zm
c2V0ICAgIFRoZSBzaWduZWQgb2Zmc2V0IGZvciB0aGUgc3BlY2lmaWVkIHVuaXQuIFRoaXMKKyAg
ICAgKiAgICAgICAgICAgICAgICAgIHdpbGwgYmUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGlz
IG9iamVjdCdzCisgICAgICogICAgICAgICAgICAgICAgICBOdW1iZXJGb3JtYXQgb2JqZWN0Lgor
ICAgICAqIEBwYXJhbSB1bml0ICAgICAgVGhlIHVuaXQgdG8gdXNlIHdoZW4gZm9ybWF0dGluZyB0
aGUgcmVsYXRpdmUKKyAgICAgKiAgICAgICAgICAgICAgICAgIGRhdGUsIGUuZy4gVURBVF9SRUxf
VU5JVF9XRUVLLAorICAgICAqICAgICAgICAgICAgICAgICAgVURBVF9SRUxfVU5JVF9GUklEQVku
CisgICAgICogQHBhcmFtIGFwcGVuZFRvICBUaGUgc3RyaW5nIHRvIHdoaWNoIHRoZSBmb3JtYXR0
ZWQgcmVzdWx0IHdpbGwgYmUKKyAgICAgKiAgICAgICAgICAgICAgICAgIGFwcGVuZGVkLgorICAg
ICAqIEBwYXJhbSBzdGF0dXMgICAgSUNVIGVycm9yIGNvZGUgcmV0dXJuZWQgaGVyZS4KKyAgICAg
KiBAcmV0dXJuICAgICAgICAgIGFwcGVuZFRvCisgICAgICogQHN0YWJsZSBJQ1UgNTcKKyAgICAg
Ki8KKyAgICBVbmljb2RlU3RyaW5nJiBmb3JtYXROdW1lcmljKAorICAgICAgICAgICAgZG91Ymxl
IG9mZnNldCwKKyAgICAgICAgICAgIFVSZWxhdGl2ZURhdGVUaW1lVW5pdCB1bml0LAorICAgICAg
ICAgICAgVW5pY29kZVN0cmluZyYgYXBwZW5kVG8sCisgICAgICAgICAgICBVRXJyb3JDb2RlJiBz
dGF0dXMpIGNvbnN0OworCisgICAgLyoqCisgICAgICogRm9ybWF0IGEgY29tYmluYXRpb24gb2Yg
VVJlbGF0aXZlRGF0ZVRpbWVVbml0IGFuZCBudW1lcmljIG9mZnNldAorICAgICAqIHVzaW5nIGEg
dGV4dCBzdHlsZSBpZiBwb3NzaWJsZSwgZS5nLiAibGFzdCB3ZWVrIiwgInRoaXMgd2VlayIsCisg
ICAgICogIm5leHQgd2VlayIsICJ5ZXN0ZXJkYXkiLCAidG9tb3Jyb3ciLiBGYWxscyBiYWNrIHRv
IG51bWVyaWMKKyAgICAgKiBzdHlsZSBpZiBubyBhcHByb3ByaWF0ZSB0ZXh0IHRlcm0gaXMgYXZh
aWxhYmxlIGZvciB0aGUgc3BlY2lmaWVkCisgICAgICogb2Zmc2V0IGluIHRoZSBvYmplY3QncyBs
b2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb2Zmc2V0ICAgIFRoZSBzaWduZWQgb2Zmc2V0
IGZvciB0aGUgc3BlY2lmaWVkIHVuaXQuCisgICAgICogQHBhcmFtIHVuaXQgICAgICBUaGUgdW5p
dCB0byB1c2Ugd2hlbiBmb3JtYXR0aW5nIHRoZSByZWxhdGl2ZQorICAgICAqICAgICAgICAgICAg
ICAgICAgZGF0ZSwgZS5nLiBVREFUX1JFTF9VTklUX1dFRUssCisgICAgICogICAgICAgICAgICAg
ICAgICBVREFUX1JFTF9VTklUX0ZSSURBWS4KKyAgICAgKiBAcGFyYW0gYXBwZW5kVG8gIFRoZSBz
dHJpbmcgdG8gd2hpY2ggdGhlIGZvcm1hdHRlZCByZXN1bHQgd2lsbCBiZQorICAgICAqICAgICAg
ICAgICAgICAgICAgYXBwZW5kZWQuCisgICAgICogQHBhcmFtIHN0YXR1cyAgICBJQ1UgZXJyb3Ig
Y29kZSByZXR1cm5lZCBoZXJlLgorICAgICAqIEByZXR1cm4gICAgICAgICAgYXBwZW5kVG8KKyAg
ICAgKiBAc3RhYmxlIElDVSA1NworICAgICAqLworICAgIFVuaWNvZGVTdHJpbmcmIGZvcm1hdCgK
KyAgICAgICAgICAgIGRvdWJsZSBvZmZzZXQsCisgICAgICAgICAgICBVUmVsYXRpdmVEYXRlVGlt
ZVVuaXQgdW5pdCwKKyAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcmIGFwcGVuZFRvLAorICAgICAg
ICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKKwogICAgIC8qKgogICAgICAqIENvbWJp
bmVzIGEgcmVsYXRpdmUgZGF0ZSBzdHJpbmcgYW5kIGEgdGltZSBzdHJpbmcgaW4gdGhpcyBvYmpl
Y3QncwogICAgICAqIGxvY2FsZS4gVGhpcyBpcyBkb25lIHdpdGggdGhlIHNhbWUgZGF0ZS10aW1l
IHNlcGFyYXRvciB1c2VkIGZvciB0aGUKQEAgLTQ2NiwyMSArNDg2LDE5IEBAIHB1YmxpYzoKICAg
ICAgKi8KICAgICBjb25zdCBOdW1iZXJGb3JtYXQmIGdldE51bWJlckZvcm1hdCgpIGNvbnN0Owog
Ci0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHRoZSBj
YXBpdGFsaXphdGlvbiBjb250ZXh0LgogICAgICAqCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAg
ICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgVURpc3BsYXlDb250ZXh0IGdldENhcGl0
YWxpemF0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUg
Zm9ybWF0IHN0eWxlLgogICAgICAqCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFi
bGUgSUNVIDU0CiAgICAgICovCiAgICAgVURhdGVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyU3R5
bGUgZ2V0Rm9ybWF0U3R5bGUoKSBjb25zdDsKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAq
LwogCiBwcml2YXRlOgogICAgIGNvbnN0IFJlbGF0aXZlRGF0ZVRpbWVDYWNoZURhdGEqIGZDYWNo
ZTsKQEAgLTQ5OSw1ICs1MTcsNiBAQCBwcml2YXRlOgogCiBVX05BTUVTUEFDRV9FTkQKIAotI2Vu
ZGlmIC8qICFVQ09ORklHX05PX0ZPUk1BVFRJTkcgJiYgIVVDT05GSUdfTk9fQlJFQUtfSVRFUkFU
SU9OKi8KLSNlbmRpZgorI2VuZGlmIC8qICFVQ09ORklHX05PX0JSRUFLX0lURVJBVElPTiAqLwor
I2VuZGlmIC8qICFVQ09ORklHX05PX0ZPUk1BVFRJTkcgKi8KKyNlbmRpZiAvKiBfX1JFTERBVEVG
TVRfSCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9yZXAuaCBiL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvcmVwLmgKaW5kZXggNGM3ZWFlMTQwMWRjZDZjOTU0MjE1N2RiZmEw
ZjJmZTNlYThkYzRlZC4uNDFmZGMwNDA0OTdiZjJjZGQ0MGMwMDNlOTEwNzZmNTk2NDUwNzNhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9yZXAuaAorKysgYi9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3JlcC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6
IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0
dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgogKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAxMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNo
aW5lcyBDb3Jwb3JhdGlvbiBhbmQKQEAgLTkxLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAqIEBy
ZXR1cm4gMTYtYml0IGNvZGUgdW5pdCBvZiB0ZXh0IGF0IGdpdmVuIG9mZnNldAogICAgICAqIEBz
dGFibGUgSUNVIDEuOAogICAgICAqLwotICAgIGlubGluZSBVQ2hhciBjaGFyQXQoaW50MzJfdCBv
ZmZzZXQpIGNvbnN0OworICAgIGlubGluZSBjaGFyMTZfdCBjaGFyQXQoaW50MzJfdCBvZmZzZXQp
IGNvbnN0OwogCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgMzItYml0IGNvZGUgcG9pbnQg
YXQgdGhlIGdpdmVuIDE2LWJpdCBvZmZzZXQgaW50bwpAQCAtMjI4LDcgKzIzMCw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgKiBWaXJ0dWFsIHZlcnNpb24gb2YgY2hhckF0KCkuCiAgICAgICogQHN0YWJs
ZSBJQ1UgMi40CiAgICAgICovCi0gICAgdmlydHVhbCBVQ2hhciBnZXRDaGFyQXQoaW50MzJfdCBv
ZmZzZXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNoYXIxNl90IGdldENoYXJBdChpbnQzMl90
IG9mZnNldCkgY29uc3QgPSAwOwogCiAgICAgLyoqCiAgICAgICogVmlydHVhbCB2ZXJzaW9uIG9m
IGNoYXIzMkF0KCkuCkBAIC0yNDQsNyArMjQ2LDcgQEAgUmVwbGFjZWFibGU6Omxlbmd0aCgpIGNv
bnN0IHsKICAgICByZXR1cm4gZ2V0TGVuZ3RoKCk7CiB9CiAKLWlubGluZSBVQ2hhcgoraW5saW5l
IGNoYXIxNl90CiBSZXBsYWNlYWJsZTo6Y2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdCB7CiAg
ICAgcmV0dXJuIGdldENoYXJBdChvZmZzZXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9yZXNidW5kLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Jlc2J1bmQuaApp
bmRleCA2ZTNjMWIyYWZjMDE3ZWQyMTBlZmIwMDI0ZDk0NjBiYjk2YWI1MWJiLi5iNTIyYTdhNjE1
NDIyY2RjNzg4NzA4YmNmZmZkNTQ5NWY3MzQ1MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3Jlc2J1bmQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Jlc2J1bmQu
aApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC0yMTQs
NyArMjE2LDcgQEAgcHVibGljOgogICAgICAqICAgICAgICAgICAgICAgIGNvdWxkIGJlIDxUVD5V
X01JU1NJTkdfUkVTT1VSQ0VfRVJST1I8L1RUPiBpZiB0aGUga2V5IGlzIG5vdCBmb3VuZAogICAg
ICAqICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgd2FybmluZwogICAgICAqICAgICAgICAgICAg
ICAgIGUuZy46IDxUVD5VX1VTSU5HX0ZBTExCQUNLX1dBUk5JTkc8L1RUPiw8VFQ+VV9VU0lOR19E
RUZBVUxUX1dBUk5JTkcgPC9UVD4KLSAgICAgKiBAcmV0dXJuIGEgcG9pbnRlciB0byBhIHplcm8t
dGVybWluYXRlZCBVQ2hhciBhcnJheSB3aGljaCBsaXZlcyBpbiBhIG1lbW9yeSBtYXBwZWQvRExM
IGZpbGUuCisgICAgICogQHJldHVybiBhIHBvaW50ZXIgdG8gYSB6ZXJvLXRlcm1pbmF0ZWQgY2hh
cjE2X3QgYXJyYXkgd2hpY2ggbGl2ZXMgaW4gYSBtZW1vcnkgbWFwcGVkL0RMTCBmaWxlLgogICAg
ICAqIEBzdGFibGUgSUNVIDIuMAogICAgICAqLwogICAgIFVuaWNvZGVTdHJpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc2Nocml0ZXIuaCBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvc2Nocml0ZXIuaAppbmRleCBkMGI1ZTIyNTAzY2ZmMjYxZDJjZDI0MGZmMTIwMDdmOTM3
Zjc4M2IyLi5iMWRjOTM5YmQ2NmY4NTU0NGY0ZmRlMmJjYjQ5NjY1MjcyNzI2Yjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NjaHJpdGVyLmgKKysrIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9zY2hyaXRlci5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0
ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6
IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKICoKQEAgLTE3Myw3ICsxNzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAqIEBwYXJhbSBu
ZXdUZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIFN0cmluZwogICAgKiBAc3RhYmxlIElDVSAy
LjAKICAgICovCi0gIHZvaWQgc2V0VGV4dChjb25zdCBVQ2hhciogbmV3VGV4dCwgaW50MzJfdCBu
ZXdUZXh0TGVuZ3RoKTsKKyAgdm9pZCBzZXRUZXh0KGNvbnN0IGNoYXIxNl90KiBuZXdUZXh0LCBp
bnQzMl90IG5ld1RleHRMZW5ndGgpOwogCiAgIC8qKgogICAgKiBDb3B5IG9mIHRoZSBpdGVyYXRl
ZCBzdHJpbmcgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9zY2ll
bnRpZmljbnVtYmVyZm9ybWF0dGVyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NjaWVudGlm
aWNudW1iZXJmb3JtYXR0ZXIuaAppbmRleCA3MDA2OTRjZDI0YmIwZmMxY2NlMTdkN2U4OTljZDVj
MGIzNDg1ZmQ2Li4xNTAyM2Q1MTQxYTQ3MGE2NTIyMjE1MzIwMjQ4MTZhMzU3Mjc1YmQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NjaWVudGlmaWNudW1iZXJmb3JtYXR0ZXIu
aAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NjaWVudGlmaWNudW1iZXJmb3JtYXR0ZXIu
aApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBDb3B5cmlnaHQgKGMpIDIw
MTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogQ29weXJpZ2h0IChjKSAyMDE0
LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogQ29ycG9yYXRpb24gYW5k
IG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwpAQCAtMTEs
NyArMTMsNiBAQAogCiAjaWYgIVVDT05GSUdfTk9fRk9STUFUVElORwogCi0jaWZuZGVmIFVfSElE
RV9EUkFGVF9BUEkKIAogI2luY2x1ZGUgInVuaWNvZGUvdW5pc3RyLmgiCiAKQEAgLTQ1LDcgKzQ2
LDcgQEAgY2xhc3MgRm9ybWF0dGFibGU7CiAgKiBmbXQtPmZvcm1hdCgxLjIzNDU2ZS03OCwgYXBw
ZW5kVG8sIHN0YXR1cyk7CiAgKiA8L3ByZT4KICAqCi0gKiBAZHJhZnQgSUNVIDU1CisgKiBAc3Rh
YmxlIElDVSA1NQogICovCiBjbGFzcyBVX0kxOE5fQVBJIFNjaWVudGlmaWNOdW1iZXJGb3JtYXR0
ZXIgOiBwdWJsaWMgVU9iamVjdCB7CiBwdWJsaWM6CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoK
ICAgICAgKiBAcGFyYW0gc3RhdHVzIGVycm9yIHJldHVybmVkIGhlcmUuCiAgICAgICogQHJldHVy
biBUaGUgbmV3IFNjaWVudGlmaWNOdW1iZXJGb3JtYXR0ZXIgaW5zdGFuY2UuCiAgICAgICoKLSAg
ICAgKiBAZHJhZnQgSUNVIDU1CisgICAgICogQHN0YWJsZSBJQ1UgNTUKICAgICAgKi8KICAgICBz
dGF0aWMgU2NpZW50aWZpY051bWJlckZvcm1hdHRlciAqY3JlYXRlU3VwZXJzY3JpcHRJbnN0YW5j
ZSgKICAgICAgICAgICAgIERlY2ltYWxGb3JtYXQgKmZtdFRvQWRvcHQsIFVFcnJvckNvZGUgJnN0
YXR1cyk7CkBAIC03MCw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gc3RhdHVzIGVy
cm9yIHJldHVybmVkIGhlcmUuCiAgICAgICogQHJldHVybiBUaGUgU2NpZW50aWZpY051bWJlckZv
cm1hdHRlciBpbnN0YW5jZS4KICAgICAgKgotICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBA
c3RhYmxlIElDVSA1NQogICAgICAqLwogICAgIHN0YXRpYyBTY2llbnRpZmljTnVtYmVyRm9ybWF0
dGVyICpjcmVhdGVTdXBlcnNjcmlwdEluc3RhbmNlKAogICAgICAgICAgICAgY29uc3QgTG9jYWxl
ICZsb2NhbGUsIFVFcnJvckNvZGUgJnN0YXR1cyk7CkBAIC04Niw3ICs4Nyw3IEBAIHB1YmxpYzoK
ICAgICAgKiBAcGFyYW0gc3RhdHVzIGVycm9yIHJldHVybmVkIGhlcmUuCiAgICAgICogQHJldHVy
biBUaGUgbmV3IFNjaWVudGlmaWNOdW1iZXJGb3JtYXR0ZXIgaW5zdGFuY2UuCiAgICAgICoKLSAg
ICAgKiBAZHJhZnQgSUNVIDU1CisgICAgICogQHN0YWJsZSBJQ1UgNTUKICAgICAgKi8KICAgICBz
dGF0aWMgU2NpZW50aWZpY051bWJlckZvcm1hdHRlciAqY3JlYXRlTWFya3VwSW5zdGFuY2UoCiAg
ICAgICAgICAgICBEZWNpbWFsRm9ybWF0ICpmbXRUb0Fkb3B0LApAQCAtMTAzLDcgKzEwNCw3IEBA
IHB1YmxpYzoKICAgICAgKiBAcGFyYW0gc3RhdHVzIGVycm9yIHJldHVybmVkIGhlcmUuCiAgICAg
ICogQHJldHVybiBUaGUgU2NpZW50aWZpY051bWJlckZvcm1hdHRlciBpbnN0YW5jZS4KICAgICAg
KgotICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBAc3RhYmxlIElDVSA1NQogICAgICAqLwog
ICAgIHN0YXRpYyBTY2llbnRpZmljTnVtYmVyRm9ybWF0dGVyICpjcmVhdGVNYXJrdXBJbnN0YW5j
ZSgKICAgICAgICAgICAgIGNvbnN0IExvY2FsZSAmbG9jYWxlLApAQCAtMTE0LDcgKzExNSw3IEBA
IHB1YmxpYzoKIAogICAgIC8qKgogICAgICAqIFJldHVybnMgYSBjb3B5IG9mIHRoaXMgb2JqZWN0
LiBDYWxsZXIgbXVzdCBmcmVlIHJldHVybmVkIGNvcHkuCi0gICAgICogQGRyYWZ0IElDVSA1NQor
ICAgICAqIEBzdGFibGUgSUNVIDU1CiAgICAgICovCiAgICAgU2NpZW50aWZpY051bWJlckZvcm1h
dHRlciAqY2xvbmUoKSBjb25zdCB7CiAgICAgICAgIHJldHVybiBuZXcgU2NpZW50aWZpY051bWJl
ckZvcm1hdHRlcigqdGhpcyk7CkBAIC0xMjIsNyArMTIzLDcgQEAgcHVibGljOgogCiAgICAgLyoq
CiAgICAgICogRGVzdHJ1Y3Rvci4KLSAgICAgKiBAZHJhZnQgSUNVIDU1CisgICAgICogQHN0YWJs
ZSBJQ1UgNTUKICAgICAgKi8KICAgICB2aXJ0dWFsIH5TY2llbnRpZmljTnVtYmVyRm9ybWF0dGVy
KCk7CiAKQEAgLTEzNCw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHN0YXR1cyBh
bnkgZXJyb3IgcmV0dXJuZWQgaGVyZS4KICAgICAgKiBAcmV0dXJuIGFwcGVuZFRvCiAgICAgICoK
LSAgICAgKiBAZHJhZnQgSUNVIDU1CisgICAgICogQHN0YWJsZSBJQ1UgNTUKICAgICAgKi8KICAg
ICBVbmljb2RlU3RyaW5nICZmb3JtYXQoCiAgICAgICAgICAgICBjb25zdCBGb3JtYXR0YWJsZSAm
bnVtYmVyLApAQCAtMjE2LDcgKzIxNyw2IEBAIHB1YmxpYzoKIAogVV9OQU1FU1BBQ0VfRU5ECiAK
LSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAKICNlbmRpZiAvKiAhVUNPTkZJR19OT19G
T1JNQVRUSU5HICovCiAjZW5kaWYgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3NlYXJjaC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zZWFyY2guaAppbmRleCA3MWJiZjJk
ZDUyOWRiNjAwMTViNWMwYWJlN2E1YjFkMDFhYTcyMjhiLi42NWY3ZjEwYmNjMWM1YzYwNjViZTdh
OGU5YTZlOTViMWIxMjhkNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Nl
YXJjaC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc2VhcmNoLmgKQEAgLTEsMyArMSw1
IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8g
TGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQu
aHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMSBJQk0g
YW5kIG90aGVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvc2VsZm10LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NlbGZtdC5oCm9s
ZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNjM1MTQ0YmI5YjM1ZDZiYWQzYTM5
N2NkMzUzYzhmZjBmZTgyNmZmNC4uMDhlOWQ0NDRlZTk3MTVhMmE0YjUyYzE2YTM3OTUyNzY4OTRh
Y2I1OQotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NlbGZtdC5oCisrKyBiL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvc2VsZm10LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBs
YXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVz
ZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAg
KiBDT1BZUklHSFQ6CiAgKiBDb3B5cmlnaHQgKGMpIDE5OTctMjAxMSwgSW50ZXJuYXRpb25hbCBC
dXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvc2ltcGxldHouaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc2ltcGxldHou
aAppbmRleCA0NzYyZjYzOTk1NjE3MWQ0MzZiOGFlM2JmZjg4MjMzMWZmNjU5NTQwLi41YjgwMjYz
MmIwZGU3ODUwNGNhZmMxNGVjODFjODc2MjIyYjQ4MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3NpbXBsZXR6LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zaW1w
bGV0ei5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIElu
Yy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5p
Y29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAq
IENvcHlyaWdodCAoQykgMTk5Ny0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVz
ICAgICAgICAgICAgICAgICAgICAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS9zbXBkdGZtdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zbXBkdGZtdC5oCmluZGV4IGNj
ZGFmZjQyYWJiODkxMWVhM2ViYzY1MzkwYjE5OWI1MWFlNDIzYTAuLjk4MDFiMjliZGI3NDliZGU4
YmY2ZjBmZGE5ZjAyZmRlYjQ0ZjA5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvc21wZHRmbXQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3NtcGR0Zm10LmgKQEAg
LTEsNSArMSw3IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3Ro
ZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9j
b3B5cmlnaHQuaHRtbAogLyoKLSogQ29weXJpZ2h0IChDKSAxOTk3LTIwMTUsIEludGVybmF0aW9u
YWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisqIENvcHlyaWdodCAoQykgMTk5
Ny0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAog
KiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAq
CkBAIC04OSw3ICs5MSw3IEBAIGNsYXNzIFNpbXBsZURhdGVGb3JtYXRNdXRhYmxlTkZzOwogICog
ICAgICAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciIgcm93c3Bhbj0iMyI+RzwvdGQ+
CiAgKiAgICAgICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4xLi4zPC90ZD4KICAq
ICAgICAgICAgPHRkPkFEPC90ZD4KLSAqICAgICAgICAgPHRkIHJvd3NwYW49IjMiPkVyYSAtIFJl
cGxhY2VkIHdpdGggdGhlIEVyYSBzdHJpbmcgZm9yIHRoZSBjdXJyZW50IGRhdGUuIE9uZSB0byB0
aHJlZSBsZXR0ZXJzIGZvciB0aGUgCisgKiAgICAgICAgIDx0ZCByb3dzcGFuPSIzIj5FcmEgLSBS
ZXBsYWNlZCB3aXRoIHRoZSBFcmEgc3RyaW5nIGZvciB0aGUgY3VycmVudCBkYXRlLiBPbmUgdG8g
dGhyZWUgbGV0dGVycyBmb3IgdGhlCiAgKiAgICAgICAgIGFiYnJldmlhdGVkIGZvcm0sIGZvdXIg
bGV0dGVycyBmb3IgdGhlIGxvbmcgKHdpZGUpIGZvcm0sIGZpdmUgZm9yIHRoZSBuYXJyb3cgZm9y
bS48L3RkPgogICogICAgIDwvdHI+CiAgKiAgICAgPHRyPgpAQCAtMjE4LDcgKzIyMCw3IEBAIGNs
YXNzIFNpbXBsZURhdGVGb3JtYXRNdXRhYmxlTkZzOwogICogICAgICAgICA8dGQgcm93c3Bhbj0i
MyIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+cTwvdGQ+CiAgKiAgICAgICAgIDx0ZCBzdHls
ZT0idGV4dC1hbGlnbjogY2VudGVyIj4xLi4yPC90ZD4KICAqICAgICAgICAgPHRkPjAyPC90ZD4K
LSAqICAgICAgICAgPHRkIHJvd3NwYW49IjMiPjxiPlN0YW5kLUFsb25lPC9iPiBRdWFydGVyIC0g
VXNlIG9uZSBvciB0d28gZm9yIHRoZSBudW1lcmljYWwgcXVhcnRlciwgdGhyZWUgZm9yIHRoZSBh
YmJyZXZpYXRpb24sIAorICogICAgICAgICA8dGQgcm93c3Bhbj0iMyI+PGI+U3RhbmQtQWxvbmU8
L2I+IFF1YXJ0ZXIgLSBVc2Ugb25lIG9yIHR3byBmb3IgdGhlIG51bWVyaWNhbCBxdWFydGVyLCB0
aHJlZSBmb3IgdGhlIGFiYnJldmlhdGlvbiwKICAqICAgICAgICAgb3IgZm91ciBmb3IgdGhlIGZ1
bGwgbmFtZSAoZml2ZSBmb3IgdGhlIG5hcnJvdyBuYW1lIGlzIG5vdCB5ZXQgc3VwcG9ydGVkKS48
L3RkPgogICogICAgIDwvdHI+CiAgKiAgICAgPHRyPgpAQCAtMjU0LDcgKzI1Niw3IEBAIGNsYXNz
IFNpbXBsZURhdGVGb3JtYXRNdXRhYmxlTkZzOwogICogICAgICAgICA8dGQgcm93c3Bhbj0iNCIg
c3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+TDwvdGQ+CiAgKiAgICAgICAgIDx0ZCBzdHlsZT0i
dGV4dC1hbGlnbjogY2VudGVyIj4xLi4yPC90ZD4KICAqICAgICAgICAgPHRkPjA5PC90ZD4KLSAq
ICAgICAgICAgPHRkIHJvd3NwYW49IjQiPjxiPlN0YW5kLUFsb25lPC9iPiBNb250aCAtIFVzZSBv
bmUgb3IgdHdvIGZvciB0aGUgbnVtZXJpY2FsIG1vbnRoLCB0aHJlZSBmb3IgdGhlIGFiYnJldmlh
dGlvbiwgCisgKiAgICAgICAgIDx0ZCByb3dzcGFuPSI0Ij48Yj5TdGFuZC1BbG9uZTwvYj4gTW9u
dGggLSBVc2Ugb25lIG9yIHR3byBmb3IgdGhlIG51bWVyaWNhbCBtb250aCwgdGhyZWUgZm9yIHRo
ZSBhYmJyZXZpYXRpb24sCiAgKiAgICAgICAgIGZvdXIgZm9yIHRoZSBmdWxsICh3aWRlKSBuYW1l
LCBvciA1IGZvciB0aGUgbmFycm93IG5hbWUuIFdpdGggdHdvICgiTEwiKSwgdGhlIG1vbnRoIG51
bWJlciBpcyB6ZXJvLXBhZGRlZCBpZgogICogICAgICAgICBuZWNlc3NhcnkgKGUuZy4gIjA4Iik8
L3RkPgogICogICAgIDwvdHI+CkBAIC0zMTAsNyArMzEyLDcgQEAgY2xhc3MgU2ltcGxlRGF0ZUZv
cm1hdE11dGFibGVORnM7CiAgKiAgICAgICAgIDx0ZD4yNDUxMzM0PC90ZD4KICAqICAgICAgICAg
PHRkPk1vZGlmaWVkIEp1bGlhbiBkYXkuIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbnZl
bnRpb25hbCBKdWxpYW4gZGF5IG51bWJlciBpbiB0d28gcmVnYXJkcy4KICAqICAgICAgICAgRmly
c3QsIGl0IGRlbWFyY2F0ZXMgZGF5cyBhdCBsb2NhbCB6b25lIG1pZG5pZ2h0LCByYXRoZXIgdGhh
biBub29uIEdNVC4gU2Vjb25kLCBpdCBpcyBhIGxvY2FsIG51bWJlcjsKLSAqICAgICAgICAgdGhh
dCBpcywgaXQgZGVwZW5kcyBvbiB0aGUgbG9jYWwgdGltZSB6b25lLiBJdCBjYW4gYmUgdGhvdWdo
dCBvZiBhcyBhIHNpbmdsZSBudW1iZXIgdGhhdCBlbmNvbXBhc3NlcyAKKyAqICAgICAgICAgdGhh
dCBpcywgaXQgZGVwZW5kcyBvbiB0aGUgbG9jYWwgdGltZSB6b25lLiBJdCBjYW4gYmUgdGhvdWdo
dCBvZiBhcyBhIHNpbmdsZSBudW1iZXIgdGhhdCBlbmNvbXBhc3NlcwogICogICAgICAgICBhbGwg
dGhlIGRhdGUtcmVsYXRlZCBmaWVsZHMuPC90ZD4KICAqICAgICA8L3RyPgogICogICAgIDx0cj4K
QEAgLTMxOSw3ICszMjEsNyBAQCBjbGFzcyBTaW1wbGVEYXRlRm9ybWF0TXV0YWJsZU5GczsKICAq
ICAgICAgICAgPHRkIHJvd3NwYW49IjQiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPkU8L3Rk
PgogICogICAgICAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+MS4uMzwvdGQ+CiAg
KiAgICAgICAgIDx0ZD5UdWU8L3RkPgotICogICAgICAgICA8dGQgcm93c3Bhbj0iNCI+RGF5IG9m
IHdlZWsgLSBVc2Ugb25lIHRocm91Z2ggdGhyZWUgbGV0dGVycyBmb3IgdGhlIHNob3J0IGRheSwg
Zm91ciBmb3IgdGhlIGZ1bGwgKHdpZGUpIG5hbWUsIAorICogICAgICAgICA8dGQgcm93c3Bhbj0i
NCI+RGF5IG9mIHdlZWsgLSBVc2Ugb25lIHRocm91Z2ggdGhyZWUgbGV0dGVycyBmb3IgdGhlIHNo
b3J0IGRheSwgZm91ciBmb3IgdGhlIGZ1bGwgKHdpZGUpIG5hbWUsCiAgKiAgICAgICAgIGZpdmUg
Zm9yIHRoZSBuYXJyb3cgbmFtZSwgb3Igc2l4IGZvciB0aGUgc2hvcnQgbmFtZS48L3RkPgogICog
ICAgIDwvdHI+CiAgKiAgICAgPHRyPgpAQCAtNTM5LDcgKzU0MSw3IEBAIGNsYXNzIFNpbXBsZURh
dGVGb3JtYXRNdXRhYmxlTkZzOwogICogICAgICAgICA8dGQ+VGhlIDxpPmdlbmVyaWMgbG9jYXRp
b24gZm9ybWF0PC9pPi4KICAqICAgICAgICAgV2hlcmUgdGhhdCBpcyB1bmF2YWlsYWJsZSwgZmFs
bHMgYmFjayB0byB0aGUgPGk+bG9uZyBsb2NhbGl6ZWQgR01UIGZvcm1hdDwvaT4gKCJPT09PIjsK
ICAqICAgICAgICAgTm90ZTogRmFsbGJhY2sgaXMgb25seSBuZWNlc3Nhcnkgd2l0aCBhIEdNVC1z
dHlsZSBUaW1lIFpvbmUgSUQsIGxpa2UgRXRjL0dNVC04MzAuKTxicj4KLSAqICAgICAgICAgVGhp
cyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHByZXNlbnRpbmcgcG9zc2libGUgdGltZXpvbmUg
Y2hvaWNlcyBmb3IgdXNlciBzZWxlY3Rpb24sIAorICogICAgICAgICBUaGlzIGlzIGVzcGVjaWFs
bHkgdXNlZnVsIHdoZW4gcHJlc2VudGluZyBwb3NzaWJsZSB0aW1lem9uZSBjaG9pY2VzIGZvciB1
c2VyIHNlbGVjdGlvbiwKICAqICAgICAgICAgc2luY2UgdGhlIG5hbWluZyBpcyBtb3JlIHVuaWZv
cm0gdGhhbiB0aGUgInYiIGZvcm1hdC48L3RkPgogICogICAgIDwvdHI+CiAgKiAgICAgPHRyPgpA
QCAtNjUxLDcgKzY1Myw3IEBAIGNsYXNzIFNpbXBsZURhdGVGb3JtYXRNdXRhYmxlTkZzOwogICog
ICAgICAgICA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0ICgieXl5eS5NTS5kZCBHICdhdCcgaGg6bW06
c3MgYSB6enoiLCBzdWNjZXNzICk7CiAgKiAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsKHN1Y2Nl
c3MpOwogICogICAgIFVEYXRlIGN1cnJlbnRUaW1lXzEgPSBjYWwuZ2V0VGltZShzdWNjZXNzKTsK
LSAqICAgICBGaWVsZFBvc2l0aW9uIGZwKDApOworICogICAgIEZpZWxkUG9zaXRpb24gZnAoRmll
bGRQb3NpdGlvbjo6RE9OVF9DQVJFKTsKICAqICAgICBVbmljb2RlU3RyaW5nIGRhdGVTdHJpbmc7
CiAgKiAgICAgZm9ybWF0dGVyLT5mb3JtYXQoIGN1cnJlbnRUaW1lXzEsIGRhdGVTdHJpbmcsIGZw
ICk7CiAgKiAgICAgY291dCA8PCAicmVzdWx0OiAiIDw8IGRhdGVTdHJpbmcgPDwgZW5kbDsKQEAg
LTk5OSw2ICsxMDAxLDEyIEBAIHB1YmxpYzoKICAgICAgKiAoUHJlc3VtYWJseSwgbGV0dGVycyB0
aGF0IHdvdWxkIGJlIG1vcmUgbW5lbW9uaWMgaW4gdGhhdCBsb2NhbGUncwogICAgICAqIGxhbmd1
YWdlLikgIFRoaXMgZnVuY3Rpb24gd291bGQgcHJvZHVjZSBhIHBhdHRlcm4gdXNpbmcgdGhvc2UK
ICAgICAgKiBsZXR0ZXJzLgorICAgICAqIDxwPgorICAgICAqIDxiPk5vdGU6PC9iPiBUaGlzIGlt
cGxlbWVudGF0aW9uIGRlcGVuZHMgb24gRGF0ZUZvcm1hdFN5bWJvbHM6OmdldExvY2FsUGF0dGVy
bkNoYXJzKCkKKyAgICAgKiB0byBnZXQgbG9jYWxpemVkIGZvcm1hdCBwYXR0ZXJuIGNoYXJhY3Rl
cnMuIElDVSBkb2VzIG5vdCBpbmNsdWRlCisgICAgICogbG9jYWxpemVkIHBhdHRlcm4gY2hhcmFj
dGVyIGRhdGEsIHRoZXJlZm9yZSwgdW5sZXNzIHVzZXIgc2V0cyBsb2NhbGl6ZWQKKyAgICAgKiBw
YXR0ZXJuIGNoYXJhY3RlcnMgbWFudWFsbHksIHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHNhbWUg
cmVzdWx0IGFzCisgICAgICogdG9QYXR0ZXJuKCkuCiAgICAgICoKICAgICAgKiBAcGFyYW0gcmVz
dWx0ICAgIFJlY2VpdmVzIHRoZSBsb2NhbGl6ZWQgcGF0dGVybi4KICAgICAgKiBAcGFyYW0gc3Rh
dHVzICAgIE91dHB1dCBwYXJhbSBzZXQgdG8gc3VjY2Vzcy9mYWlsdXJlIGNvZGUgb24KQEAgLTEx
MjYsMTggKzExMzQsMTcgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgVURpc3Bs
YXlDb250ZXh0IHZhbHVlIHRvIHNldC4KICAgICAgKiBAcGFyYW0gc3RhdHVzIElucHV0L291dHB1
dCBzdGF0dXMuIElmIGF0IGVudHJ5IHRoaXMgaW5kaWNhdGVzIGEgZmFpbHVyZQogICAgICAqICAg
ICAgICAgICAgICAgc3RhdHVzLCB0aGUgZnVuY3Rpb24gd2lsbCBkbyBub3RoaW5nOyBvdGhlcndp
c2UgdGhpcyB3aWxsIGJlCi0gICAgICogICAgICAgICAgICAgICB1cGRhdGVkIHdpdGggYW55IG5l
dyBzdGF0dXMgZnJvbSB0aGUgZnVuY3Rpb24uIAorICAgICAqICAgICAgICAgICAgICAgdXBkYXRl
ZCB3aXRoIGFueSBuZXcgc3RhdHVzIGZyb20gdGhlIGZ1bmN0aW9uLgogICAgICAqIEBzdGFibGUg
SUNVIDUzCiAgICAgICovCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRleHQoVURpc3BsYXlDb250
ZXh0IHZhbHVlLCBVRXJyb3JDb2RlJiBzdGF0dXMpOwotICAgIAotI2lmbmRlZiBVX0hJREVfRFJB
RlRfQVBJCisKICAgICAvKioKICAgICAgKiBPdmVycmlkZXMgYmFzZSBjbGFzcyBtZXRob2QgYW5k
Ci0gICAgICogVGhpcyBtZXRob2QgY2xlYXJzIHBlciBmaWVsZCBOdW1iZXJGb3JtYXQgaW5zdGFu
Y2VzIAotICAgICAqIHByZXZpb3VzbHkgc2V0IGJ5IHtAc2VlIGFkb3B0TnVtYmVyRm9ybWF0KGNv
bnN0IFVuaWNvZGVTdHJpbmcmLCBOdW1iZXJGb3JtYXQqLCBVRXJyb3JDb2RlKX0gCisgICAgICog
VGhpcyBtZXRob2QgY2xlYXJzIHBlciBmaWVsZCBOdW1iZXJGb3JtYXQgaW5zdGFuY2VzCisgICAg
ICogcHJldmlvdXNseSBzZXQgYnkge0BzZWUgYWRvcHROdW1iZXJGb3JtYXQoY29uc3QgVW5pY29k
ZVN0cmluZyYsIE51bWJlckZvcm1hdCosIFVFcnJvckNvZGUpfQogICAgICAqIEBwYXJhbSBhZG9w
dE5GIHRoZSBOdW1iZWZlckZvcm1hdCB1c2VkCi0gICAgICogQGRyYWZ0IElDVSA1NAorICAgICAq
IEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgdm9pZCBhZG9wdE51bWJlckZvcm1hdChOdW1i
ZXJGb3JtYXQgKmZvcm1hdFRvQWRvcHQpOwogCkBAIC0xMTQ1LDcgKzExNTIsNyBAQCBwdWJsaWM6
CiAgICAgICogQWxsb3cgdGhlIHVzZXIgdG8gc2V0IHRoZSBOdW1iZXJGb3JtYXQgZm9yIHNldmVy
YWwgZmllbGRzCiAgICAgICogSXQgY2FuIGJlIGEgc2luZ2xlIGZpZWxkIGxpa2U6ICJ5Iih5ZWFy
KSBvciAiTSIobW9udGgpCiAgICAgICogSXQgY2FuIGJlIHNldmVyYWwgZmllbGQgY29tYmluZWQg
dG9nZXRoZXI6ICJ5TSIoeWVhciBhbmQgbW9udGgpCi0gICAgICogTm90ZTogCisgICAgICogTm90
ZToKICAgICAgKiAxIHN5bWJvbCBmaWVsZCBpcyBlbm91Z2ggZm9yIG11bHRpcGxlIHN5bWJvbCBm
aWVsZCAoc28gInkiIHdpbGwgb3ZlcnJpZGUgInl5IiwgInl5eSIpCiAgICAgICogSWYgdGhlIGZp
ZWxkIGlzIG5vdCBudW1lcmljLCB0aGVuIG92ZXJyaWRlIGhhcyBubyBlZmZlY3QgKGxpa2UgIk1N
TSIgd2lsbCB1c2UgYWJicmV2aWF0aW9uLCBub3QgbnVtZXJpY2FsIGZpZWxkKQogICAgICAqIFBl
ciBmaWVsZCBOdW1iZXJGb3JtYXQgY2FuIGFsc28gYmUgY2xlYXJlZCBpbiB7QHNlZSBEYXRlRm9y
bWF0OjpzZXROdW1iZXJGb3JtYXQoY29uc3QgTnVtYmVyRm9ybWF0JiBuZXdOdW1iZXJGb3JtYXQp
fQpAQCAtMTE1NCwxNyArMTE2MSwxNiBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIGFkb3B0TkYg
dGhlIE51bWJlZmVyRm9ybWF0IHVzZWQKICAgICAgKiBAcGFyYW0gc3RhdHVzICBSZWNlaXZlcyBh
IHN0YXR1cyBjb2RlLCB3aGljaCB3aWxsIGJlIFVfWkVST19FUlJPUgogICAgICAqICAgICAgICAg
ICAgICAgIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMuCi0gICAgICogQGRyYWZ0IElDVSA1NAor
ICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgdm9pZCBhZG9wdE51bWJlckZvcm1h
dChjb25zdCBVbmljb2RlU3RyaW5nJiBmaWVsZHMsIE51bWJlckZvcm1hdCAqZm9ybWF0VG9BZG9w
dCwgVUVycm9yQ29kZSAmc3RhdHVzKTsKIAogICAgIC8qKgogICAgICAqIEdldCB0aGUgbnVtYmVy
aW5nIHN5c3RlbSB0byBiZSB1c2VkIGZvciBhIHBhcnRpY3VsYXIgZmllbGQuCiAgICAgICogQHBh
cmFtIGZpZWxkIFRoZSBVRGF0ZUZvcm1hdEZpZWxkIHRvIGdldAotICAgICAqIEBkcmFmdCBJQ1Ug
NTQKKyAgICAgKiBAc3RhYmxlIElDVSA1NAogICAgICAqLwotICAgIGNvbnN0IE51bWJlckZvcm1h
dCAqIGdldE51bWJlckZvcm1hdEZvckZpZWxkKFVDaGFyIGZpZWxkKSBjb25zdDsKLSNlbmRpZiAg
LyogVV9ISURFX0RSQUZUX0FQSSAqLworICAgIGNvbnN0IE51bWJlckZvcm1hdCAqIGdldE51bWJl
ckZvcm1hdEZvckZpZWxkKGNoYXIxNl90IGZpZWxkKSBjb25zdDsKIAogI2lmbmRlZiBVX0hJREVf
SU5URVJOQUxfQVBJCiAgICAgLyoqCkBAIC0xMjU2LDcgKzEyNjIsNyBAQCBwcml2YXRlOgogICAg
ICAqICAgICAgICAgICAgICAgICAgc3VjY2VlZHMuCiAgICAgICovCiAgICAgdm9pZCBzdWJGb3Jt
YXQoVW5pY29kZVN0cmluZyAmYXBwZW5kVG8sCi0gICAgICAgICAgICAgICAgICAgVUNoYXIgY2gs
CisgICAgICAgICAgICAgICAgICAgY2hhcjE2X3QgY2gsCiAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCBjb3VudCwKICAgICAgICAgICAgICAgICAgICBVRGlzcGxheUNvbnRleHQgY2FwaXRhbGl6
YXRpb25Db250ZXh0LAogICAgICAgICAgICAgICAgICAgIGludDMyX3QgZmllbGROdW0sCkBAIC0x
MjcxLDcgKzEyNzcsNyBAQCBwcml2YXRlOgogICAgICAqIGhhdmluZyBhIG51bWJlciBvZiBkaWdp
dHMgYmV0d2VlbiAibWluRGlnaXRzIiBhbmQKICAgICAgKiAibWF4RGlnaXRzIi4gIFVzZXMgdGhl
IERhdGVGb3JtYXQncyBOdW1iZXJGb3JtYXQuCiAgICAgICoKLSAgICAgKiBAcGFyYW0gY3VycmVu
dE51bWJlckZvcm1hdCAKKyAgICAgKiBAcGFyYW0gY3VycmVudE51bWJlckZvcm1hdAogICAgICAq
IEBwYXJhbSBhcHBlbmRUbyAgT3V0cHV0IHBhcmFtZXRlciB0byByZWNlaXZlIHJlc3VsdC4KICAg
ICAgKiAgICAgICAgICAgICAgICAgIEZvcm1hdHRlZCBudW1iZXIgaXMgYXBwZW5kZWQgdG8gZXhp
c3RpbmcgY29udGVudHMuCiAgICAgICogQHBhcmFtIHZhbHVlICAgICBWYWx1ZSB0byBmb3JtYXQu
CkBAIC0xMjg4LDcgKzEyOTQsNyBAQCBwcml2YXRlOgogICAgICAqIFJldHVybiB0cnVlIGlmIHRo
ZSBnaXZlbiBmb3JtYXQgY2hhcmFjdGVyLCBvY2N1cmluZyBjb3VudAogICAgICAqIHRpbWVzLCBy
ZXByZXNlbnRzIGEgbnVtZXJpYyBmaWVsZC4KICAgICAgKi8KLSAgICBzdGF0aWMgVUJvb2wgaXNO
dW1lcmljKFVDaGFyIGZvcm1hdENoYXIsIGludDMyX3QgY291bnQpOworICAgIHN0YXRpYyBVQm9v
bCBpc051bWVyaWMoY2hhcjE2X3QgZm9ybWF0Q2hhciwgaW50MzJfdCBjb3VudCk7CiAKICAgICAv
KioKICAgICAgKiBSZXR1cm5zIFRSVUUgaWYgdGhlIHBhdHRlcm5PZmZzZXQgaXMgYXQgdGhlIHN0
YXJ0IG9mIGEgbnVtZXJpYyBmaWVsZC4KQEAgLTEzNTksNyArMTM2NSwxNCBAQCBwcml2YXRlOgog
ICAgICAqLwogICAgIGludDMyX3QgbWF0Y2hRdWFydGVyU3RyaW5nKGNvbnN0IFVuaWNvZGVTdHJp
bmcmIHRleHQsIGludDMyX3Qgc3RhcnQsIFVDYWxlbmRhckRhdGVGaWVsZHMgZmllbGQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pY29kZVN0cmluZyogc3RyaW5nQXJy
YXksIGludDMyX3Qgc3RyaW5nQXJyYXlDb3VudCwgQ2FsZW5kYXImIGNhbCkgY29uc3Q7Ci0gICAg
CisKKyAgICAvKioKKyAgICAgKiBVc2VkIGJ5IHN1YlBhcnNlKCkgdG8gbWF0Y2ggbG9jYWxpemVk
IGRheSBwZXJpb2Qgc3RyaW5ncy4KKyAgICAgKi8KKyAgICBpbnQzMl90IG1hdGNoRGF5UGVyaW9k
U3RyaW5ncyhjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LCBpbnQzMl90IHN0YXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcqIHN0cmluZ0Fy
cmF5LCBpbnQzMl90IHN0cmluZ0FycmF5Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCAmZGF5UGVyaW9kKSBjb25zdDsKKwogICAgIC8qKgogICAgICAqIFBy
aXZhdGUgZnVuY3Rpb24gdXNlZCBieSBzdWJQYXJzZSB0byBtYXRjaCBsaXRlcmFsIHBhdHRlcm4g
dGV4dC4KICAgICAgKgpAQCAtMTM3Niw5ICsxMzg5LDkgQEAgcHJpdmF0ZToKICAgICAgKiBAcmV0
dXJuIDxjb2RlPlRSVUU8L2NvZGU+IGlmIHRoZSBsaXRlcmFsIHRleHQgY291bGQgYmUgbWF0Y2hl
ZCwgPGNvZGU+RkFMU0U8L2NvZGU+IG90aGVyd2lzZS4KICAgICAgKi8KICAgICBzdGF0aWMgVUJv
b2wgbWF0Y2hMaXRlcmFscyhjb25zdCBVbmljb2RlU3RyaW5nICZwYXR0ZXJuLCBpbnQzMl90ICZw
YXR0ZXJuT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaWNv
ZGVTdHJpbmcgJnRleHQsIGludDMyX3QgJnRleHRPZmZzZXQsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFVuaWNvZGVTdHJpbmcgJnRleHQsIGludDMyX3QgJnRleHRPZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgd2hpdGVzcGFjZUxlbmll
bnQsIFVCb29sIHBhcnRpYWxNYXRjaExlbmllbnQsIFVCb29sIG9sZExlbmllbmN5KTsKLSAgICAK
KwogICAgIC8qKgogICAgICAqIFByaXZhdGUgbWVtYmVyIGZ1bmN0aW9uIHRoYXQgY29udmVydHMg
dGhlIHBhcnNlZCBkYXRlIHN0cmluZ3MgaW50bwogICAgICAqIHRpbWVGaWVsZHMuIFJldHVybnMg
LXN0YXJ0IChmb3IgUGFyc2VQb3NpdGlvbikgaWYgZmFpbGVkLgpAQCAtMTM5OSw5ICsxNDEyLDEw
IEBAIHByaXZhdGU6CiAgICAgICogQHJldHVybiB0aGUgbmV3IHN0YXJ0IHBvc2l0aW9uIGlmIG1h
dGNoaW5nIHN1Y2NlZWRlZDsgYSBuZWdhdGl2ZSBudW1iZXIKICAgICAgKiBpbmRpY2F0aW5nIG1h
dGNoaW5nIGZhaWx1cmUsIG90aGVyd2lzZS4KICAgICAgKi8KLSAgICBpbnQzMl90IHN1YlBhcnNl
KGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsIGludDMyX3QmIHN0YXJ0LCBVQ2hhciBjaCwgaW50
MzJfdCBjb3VudCwKKyAgICBpbnQzMl90IHN1YlBhcnNlKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRl
eHQsIGludDMyX3QmIHN0YXJ0LCBjaGFyMTZfdCBjaCwgaW50MzJfdCBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgIFVCb29sIG9iZXlDb3VudCwgVUJvb2wgYWxsb3dOZWdhdGl2ZSwgVUJvb2wg
YW1iaWd1b3VzWWVhcltdLCBpbnQzMl90JiBzYXZlSGVicmV3TW9udGgsIENhbGVuZGFyJiBjYWws
Ci0gICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHBhdExvYywgTWVzc2FnZUZvcm1hdCAqIG51
bWVyaWNMZWFwTW9udGhGb3JtYXR0ZXIsIFVUaW1lWm9uZUZvcm1hdFRpbWVUeXBlICp0elRpbWVU
eXBlLCBTaW1wbGVEYXRlRm9ybWF0TXV0YWJsZU5GcyAmbXV0YWJsZU5GcykgY29uc3Q7CisgICAg
ICAgICAgICAgICAgICAgICBpbnQzMl90IHBhdExvYywgTWVzc2FnZUZvcm1hdCAqIG51bWVyaWNM
ZWFwTW9udGhGb3JtYXR0ZXIsIFVUaW1lWm9uZUZvcm1hdFRpbWVUeXBlICp0elRpbWVUeXBlLCBT
aW1wbGVEYXRlRm9ybWF0TXV0YWJsZU5GcyAmbXV0YWJsZU5GcywKKyAgICAgICAgICAgICAgICAg
ICAgIGludDMyX3QgKmRheVBlcmlvZD1OVUxMKSBjb25zdDsKIAogICAgIHZvaWQgcGFyc2VJbnQo
Y29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwKICAgICAgICAgICAgICAgICAgIEZvcm1hdHRhYmxl
JiBudW1iZXIsCkBAIC0xNDE5LDYgKzE0MzMsMTYgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IGNo
ZWNrSW50U3VmZml4KGNvbnN0IFVuaWNvZGVTdHJpbmcmIHRleHQsIGludDMyX3Qgc3RhcnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHBhdExvYywgVUJvb2wgaXNOZWdhdGl2
ZSkgY29uc3Q7CiAKKyAgICAvKioKKyAgICAgKiBDb3VudHMgbnVtYmVyIG9mIGRpZ2l0IGNvZGUg
cG9pbnRzIGluIHRoZSBzcGVjaWZpZWQgdGV4dC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0ZXh0
ICBpbnB1dCB0ZXh0CisgICAgICogQHBhcmFtIHN0YXJ0IHN0YXJ0IGluZGV4LCBpbmNsdXNpdmUK
KyAgICAgKiBAcGFyYW0gZW5kICAgZW5kIGluZGV4LCBleGNsdXNpdmUKKyAgICAgKiBAcmV0dXJu
ICBudW1iZXIgb2YgZGlnaXRzIGZvdW5kIGluIHRoZSB0ZXh0IGluIHRoZSBzcGVjaWZpZWQgcmFu
Z2UuCisgICAgKi8KKyAgICBpbnQzMl90IGNvdW50RGlnaXRzKGNvbnN0IFVuaWNvZGVTdHJpbmcm
IHRleHQsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgZW5kKSBjb25zdDsKKwogICAgIC8qKgogICAg
ICAqIFRyYW5zbGF0ZSBhIHBhdHRlcm4sIG1hcHBpbmcgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIGZy
b20gc3RyaW5nIHRvIHRoZQogICAgICAqIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluIHRoZSB0
byBzdHJpbmcuIFJldHVybiBhbiBlcnJvciBpZiB0aGUgb3JpZ2luYWwKQEAgLTE1MDksMTIgKzE1
MzMsMTIgQEAgcHJpdmF0ZToKICAgICAvKioKICAgICAgKiBNYXAgY2FsZW5kYXIgZmllbGQgbGV0
dGVyIGludG8gY2FsZW5kYXIgZmllbGQgbGV2ZWwuCiAgICAgICovCi0gICAgc3RhdGljIGludDMy
X3QgZ2V0TGV2ZWxGcm9tQ2hhcihVQ2hhciBjaCk7CisgICAgc3RhdGljIGludDMyX3QgZ2V0TGV2
ZWxGcm9tQ2hhcihjaGFyMTZfdCBjaCk7CiAKICAgICAvKioKICAgICAgKiBUZWxsIGlmIGEgY2hh
cmFjdGVyIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhIGZpZWxkIGluIGEgZm9ybWF0IHN0cmluZy4K
ICAgICAgKi8KLSAgICBzdGF0aWMgVUJvb2wgaXNTeW50YXhDaGFyKFVDaGFyIGNoKTsKKyAgICBz
dGF0aWMgVUJvb2wgaXNTeW50YXhDaGFyKGNoYXIxNl90IGNoKTsKIAogICAgIC8qKgogICAgICAq
IFRoZSBmb3JtYXR0aW5nIHBhdHRlcm4gZm9yIHRoaXMgZm9ybWF0dGVyLgpAQCAtMTU1OCw2ICsx
NTgyLDE0IEBAIHByaXZhdGU6CiAgICAgICovCiAgICAgVURhdGUgICAgICAgICAgICAgICAgZkRl
ZmF1bHRDZW50dXJ5U3RhcnQ7CiAKKyAgICBVQm9vbCAgICAgICAgICAgICAgICBmSGFzTWludXRl
OworICAgIFVCb29sICAgICAgICAgICAgICAgIGZIYXNTZWNvbmQ7CisKKyAgICAvKioKKyAgICAg
KiBTZXRzIGZIYXNNaW51dGVzIGFuZCBmSGFzU2Vjb25kcy4KKyAgICAgKi8KKyAgICB2b2lkICAg
ICAgICAgICAgICAgICBwYXJzZVBhdHRlcm4oKTsKKwogICAgIC8qKgogICAgICAqIFNlZSBkb2N1
bWVudGF0aW9uIGZvciBkZWZhdWx0Q2VudHVyeVN0YXJ0LgogICAgICAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS9zb3J0a2V5LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3NvcnRrZXkuaAppbmRleCBjMTI1ZWVlY2YwMDk4MGNmNDUyMTQ4ODc0YmQzZDc3NTIxZTBkNzZm
Li4xZjQyNDYwMThmMDBmMjE0NDFiOTAxODU1NmY0MTA1ZGJiNjQ5NGQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3NvcnRrZXkuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3NvcnRrZXkuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmlj
b2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8v
d3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CiAgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNo
aW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS9zdGRfc3RyaW5nLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N0ZF9zdHJpbmcu
aAppbmRleCAwNTk1NWM1ZDFlNzI3ZjhlMzViY2FlYjdkOTVmODVhNzBkNjMwY2ExLi43MjljNTYz
OTk1MDZlYjM4YjJjOWVkYzFjNjQyMGU1YWJiZTVkODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3N0ZF9zdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N0
ZF9zdHJpbmcuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2Rl
LCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3
LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog
KgpAQCAtNiw3ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5h
bWU6ICBzdGRfc3RyaW5nLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5n
OiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246
NAogKgpAQCAtMjUsMTMgKzI3LDExIEBACiAKICNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgog
Ci0jaWYgVV9IQVZFX1NURF9TVFJJTkcKLQotI2lmICFkZWZpbmVkKF9NU0NfVkVSKQotbmFtZXNw
YWNlIHN0ZCB7IGNsYXNzIHR5cGVfaW5mbzsgfSAvLyBXT1JLQVJPVU5EOiBodHRwOi8vbGx2bS5v
cmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNjQKKy8vIFdvcmthcm91bmQgZm9yIGEgbGlic3Rk
YysrIGJ1ZyBiZWZvcmUgbGlic3RkYysrNC42ICgyMDExKS4KKy8vIGh0dHBzOi8vYnVncy5sbHZt
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNjQKKyNpZiBkZWZpbmVkKF9fR0xJQkNYWF9fKQorbmFt
ZXNwYWNlIHN0ZCB7IGNsYXNzIHR5cGVfaW5mbzsgfQogI2VuZGlmCiAjaW5jbHVkZSA8c3RyaW5n
PgogCi0jZW5kaWYgIC8vIFVfSEFWRV9TVERfU1RSSU5HCi0KICNlbmRpZiAgLy8gX19TVERfU1RS
SU5HX0hfXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS9zdHJlbnVtLmggYi9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3N0cmVudW0uaAppbmRleCAzZGJlMjFjNmIyZGRkZmI4Njkz
ODdkNDhlZmQ2MjQzZGIzOTE1YjM5Li42MWQ1MTQ4MTNiOTJjMTQ2NzlhOTljZTRmN2MyYzlmODli
NmYxNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N0cmVudW0uaAorKysg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N0cmVudW0uaApAQCAtMSwzICsxLDUgQEAKKy8vIMKp
IDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYg
dGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtMzMsNyArMzUsNyBAQCBVX05BTUVTUEFDRV9C
RUdJTgogICogY2FsbCwgc28gdGhlIHJldHVybmVkIHN0cmluZyBzdGlsbCBtaWdodCBub3QgYmUg
J3ZhbGlkJyBvbgogICogc3Vic2VxdWVudCB1c2UuPC9wPgogICoKLSAqIDxwPlN0cmluZ3MgbWF5
IHRha2UgdGhlIGZvcm0gb2YgY29uc3QgY2hhciosIGNvbnN0IFVDaGFyKiwgb3IgY29uc3QKKyAq
IDxwPlN0cmluZ3MgbWF5IHRha2UgdGhlIGZvcm0gb2YgY29uc3QgY2hhciosIGNvbnN0IGNoYXIx
Nl90Kiwgb3IgY29uc3QKICAqIFVuaWNvZGVTdHJpbmcqLiAgVGhlIHR5cGUgeW91IGdldCBpcyBk
ZXRlcm1pbmUgYnkgdGhlIHZhcmlhbnQgb2YKICAqICduZXh0JyB0aGF0IHlvdSBjYWxsLiAgSW4g
Z2VuZXJhbCB0aGUgU3RyaW5nRW51bWVyYXRpb24gaXMKICAqIG9wdGltaXplZCBmb3Igb25lIG9m
IHRoZXNlIHR5cGVzLCBidXQgYWxsIFN0cmluZ0VudW1lcmF0aW9ucyBjYW4KQEAgLTExMCw3ICsx
MTIsNyBAQCBwdWJsaWM6CiAgICAgICogPHA+SWYgdGhlIGl0ZXJhdG9yIGlzIG91dCBvZiBzeW5j
IHdpdGggaXRzIHNlcnZpY2UsIHN0YXR1cyBpcyBzZXQKICAgICAgKiB0byBVX0VOVU1fT1VUX09G
X1NZTkNfRVJST1IgYW5kIE5VTEwgaXMgcmV0dXJuZWQuPC9wPgogICAgICAqCi0gICAgICogPHA+
SWYgdGhlIG5hdGl2ZSBzZXJ2aWNlIHN0cmluZyBpcyBhIFVDaGFyKiBzdHJpbmcsIGl0IGlzCisg
ICAgICogPHA+SWYgdGhlIG5hdGl2ZSBzZXJ2aWNlIHN0cmluZyBpcyBhIGNoYXIxNl90KiBzdHJp
bmcsIGl0IGlzCiAgICAgICogY29udmVydGVkIHRvIGNoYXIqIHdpdGggdGhlIGludmFyaWFudCBj
b252ZXJ0ZXIuICBJZiB0aGUKICAgICAgKiBjb252ZXJzaW9uIGZhaWxzIChiZWNhdXNlIGEgY2hh
cmFjdGVyIGNhbm5vdCBiZSBjb252ZXJ0ZWQpIHRoZW4KICAgICAgKiBzdGF0dXMgaXMgc2V0IHRv
IFVfSU5WQVJJQU5UX0NPTlZFUlNJT05fRVJST1IgYW5kIHRoZSByZXR1cm4KQEAgLTEyOSw3ICsx
MzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBuZXh0KGludDMyX3QgKnJl
c3VsdExlbmd0aCwgVUVycm9yQ29kZSYgc3RhdHVzKTsKIAogICAgIC8qKgotICAgICAqIDxwPlJl
dHVybnMgdGhlIG5leHQgZWxlbWVudCBhcyBhIE5VTC10ZXJtaW5hdGVkIFVDaGFyKi4gIElmIHRo
ZXJlCisgICAgICogPHA+UmV0dXJucyB0aGUgbmV4dCBlbGVtZW50IGFzIGEgTlVMLXRlcm1pbmF0
ZWQgY2hhcjE2X3QqLiAgSWYgdGhlcmUKICAgICAgKiBhcmUgbm8gbW9yZSBlbGVtZW50cywgcmV0
dXJucyBOVUxMLiAgSWYgdGhlIHJlc3VsdExlbmd0aCBwb2ludGVyCiAgICAgICogaXMgbm90IE5V
TEwsIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyAobm90IGNvdW50aW5nIHRoZQogICAgICAqIHRl
cm1pbmF0aW5nIE5VTCkgaXMgcmV0dXJuZWQgYXQgdGhhdCBhZGRyZXNzLiAgSWYgYW4gZXJyb3IK
QEAgLTE1MSw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgICoKICAgICAgKiBAc3RhYmxlIElDVSAy
LjQgCiAgICAgICovCi0gICAgdmlydHVhbCBjb25zdCBVQ2hhciogdW5leHQoaW50MzJfdCAqcmVz
dWx0TGVuZ3RoLCBVRXJyb3JDb2RlJiBzdGF0dXMpOworICAgIHZpcnR1YWwgY29uc3QgY2hhcjE2
X3QqIHVuZXh0KGludDMyX3QgKnJlc3VsdExlbmd0aCwgVUVycm9yQ29kZSYgc3RhdHVzKTsKIAog
ICAgIC8qKgogICAgICAqIDxwPlJldHVybnMgdGhlIG5leHQgZWxlbWVudCBhIFVuaWNvZGVTdHJp
bmcqLiAgSWYgdGhlcmUgYXJlIG5vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3N0cmluZ29wdGlvbnMuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc3RyaW5nb3B0aW9ucy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYyZGU5NmU5NjM0YTAyZTM1NWViMTNlYTc5ZjA4ZDc1OGEyZTNiZGQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N0cmluZ29wdGlvbnMuaApA
QCAtMCwwICsxLDE5OCBAQAorLy8gwqkgMjAxNyBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5k
IG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvY29weXJpZ2h0Lmh0bWwKKworLy8gc3RyaW5nb3B0aW9ucy5oCisvLyBjcmVhdGVkOiAyMDE3
anVuMDggTWFya3VzIFcuIFNjaGVyZXIKKworI2lmbmRlZiBfX1NUUklOR09QVElPTlNfSF9fCisj
ZGVmaW5lIF9fU1RSSU5HT1BUSU9OU19IX18KKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgi
CisKKy8qKgorICogXGZpbGUKKyAqIFxicmllZiBDIEFQSTogQml0IHNldCBvcHRpb24gYml0IGNv
bnN0YW50cyBmb3IgdmFyaW91cyBzdHJpbmcgYW5kIGNoYXJhY3RlciBwcm9jZXNzaW5nIGZ1bmN0
aW9ucy4KKyAqLworCisvKioKKyAqIE9wdGlvbiB2YWx1ZSBmb3IgY2FzZSBmb2xkaW5nOiBVc2Ug
ZGVmYXVsdCBtYXBwaW5ncyBkZWZpbmVkIGluIENhc2VGb2xkaW5nLnR4dC4KKyAqCisgKiBAc3Rh
YmxlIElDVSAyLjAKKyAqLworI2RlZmluZSBVX0ZPTERfQ0FTRV9ERUZBVUxUIDAKKworLyoqCisg
KiBPcHRpb24gdmFsdWUgZm9yIGNhc2UgZm9sZGluZzoKKyAqCisgKiBVc2UgdGhlIG1vZGlmaWVk
IHNldCBvZiBtYXBwaW5ncyBwcm92aWRlZCBpbiBDYXNlRm9sZGluZy50eHQgdG8gaGFuZGxlIGRv
dHRlZCBJCisgKiBhbmQgZG90bGVzcyBpIGFwcHJvcHJpYXRlbHkgZm9yIFR1cmtpYyBsYW5ndWFn
ZXMgKHRyLCBheikuCisgKgorICogQmVmb3JlIFVuaWNvZGUgMy4yLCBDYXNlRm9sZGluZy50eHQg
Y29udGFpbnMgbWFwcGluZ3MgbWFya2VkIHdpdGggJ0knIHRoYXQKKyAqIGFyZSB0byBiZSBpbmNs
dWRlZCBmb3IgZGVmYXVsdCBtYXBwaW5ncyBhbmQKKyAqIGV4Y2x1ZGVkIGZvciB0aGUgVHVya2lj
LXNwZWNpZmljIG1hcHBpbmdzLgorICoKKyAqIFVuaWNvZGUgMy4yIENhc2VGb2xkaW5nLnR4dCBp
bnN0ZWFkIGNvbnRhaW5zIG1hcHBpbmdzIG1hcmtlZCB3aXRoICdUJyB0aGF0CisgKiBhcmUgdG8g
YmUgZXhjbHVkZWQgZm9yIGRlZmF1bHQgbWFwcGluZ3MgYW5kCisgKiBpbmNsdWRlZCBmb3IgdGhl
IFR1cmtpYy1zcGVjaWZpYyBtYXBwaW5ncy4KKyAqCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLwor
I2RlZmluZSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSAxCisKKyNpZm5kZWYgVV9ISURF
X0RSQUZUX0FQSQorCisvKioKKyAqIFRpdGxlY2FzZSB0aGUgc3RyaW5nIGFzIGEgd2hvbGUgcmF0
aGVyIHRoYW4gZWFjaCB3b3JkLgorICogKFRpdGxlY2FzZSBvbmx5IHRoZSBjaGFyYWN0ZXIgYXQg
aW5kZXggMCwgcG9zc2libHkgYWRqdXN0ZWQuKQorICogT3B0aW9uIGJpdHMgdmFsdWUgZm9yIHRp
dGxlY2FzaW5nIEFQSXMgdGhhdCB0YWtlIGFuIG9wdGlvbnMgYml0IHNldC4KKyAqCisgKiBJdCBp
cyBhbiBlcnJvciB0byBzcGVjaWZ5IG11bHRpcGxlIHRpdGxlY2FzaW5nIGl0ZXJhdG9yIG9wdGlv
bnMgdG9nZXRoZXIsCisgKiBpbmNsdWRpbmcgYm90aCBhbiBvcHRpb25zIGJpdCBhbmQgYW4gZXhw
bGljaXQgQnJlYWtJdGVyYXRvci4KKyAqCisgKiBAc2VlIFVfVElUTEVDQVNFX0FESlVTVF9UT19D
QVNFRAorICogQGRyYWZ0IElDVSA2MAorICovCisjZGVmaW5lIFVfVElUTEVDQVNFX1dIT0xFX1NU
UklORyAweDIwCisKKy8qKgorICogVGl0bGVjYXNlIHNlbnRlbmNlcyByYXRoZXIgdGhhbiB3b3Jk
cy4KKyAqIChUaXRsZWNhc2Ugb25seSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGVhY2ggc2VudGVu
Y2UsIHBvc3NpYmx5IGFkanVzdGVkLikKKyAqIE9wdGlvbiBiaXRzIHZhbHVlIGZvciB0aXRsZWNh
c2luZyBBUElzIHRoYXQgdGFrZSBhbiBvcHRpb25zIGJpdCBzZXQuCisgKgorICogSXQgaXMgYW4g
ZXJyb3IgdG8gc3BlY2lmeSBtdWx0aXBsZSB0aXRsZWNhc2luZyBpdGVyYXRvciBvcHRpb25zIHRv
Z2V0aGVyLAorICogaW5jbHVkaW5nIGJvdGggYW4gb3B0aW9ucyBiaXQgYW5kIGFuIGV4cGxpY2l0
IEJyZWFrSXRlcmF0b3IuCisgKgorICogQHNlZSBVX1RJVExFQ0FTRV9BREpVU1RfVE9fQ0FTRUQK
KyAqIEBkcmFmdCBJQ1UgNjAKKyAqLworI2RlZmluZSBVX1RJVExFQ0FTRV9TRU5URU5DRVMgMHg0
MAorCisjZW5kaWYgIC8vIFVfSElERV9EUkFGVF9BUEkKKworLyoqCisgKiBEbyBub3QgbG93ZXJj
YXNlIG5vbi1pbml0aWFsIHBhcnRzIG9mIHdvcmRzIHdoZW4gdGl0bGVjYXNpbmcuCisgKiBPcHRp
b24gYml0IGZvciB0aXRsZWNhc2luZyBBUElzIHRoYXQgdGFrZSBhbiBvcHRpb25zIGJpdCBzZXQu
CisgKgorICogQnkgZGVmYXVsdCwgdGl0bGVjYXNpbmcgd2lsbCB0aXRsZWNhc2UgdGhlIGNoYXJh
Y3RlciBhdCBlYWNoCisgKiAocG9zc2libHkgYWRqdXN0ZWQpIEJyZWFrSXRlcmF0b3IgaW5kZXgg
YW5kCisgKiBsb3dlcmNhc2UgYWxsIG90aGVyIGNoYXJhY3RlcnMgdXAgdG8gdGhlIG5leHQgaXRl
cmF0b3IgaW5kZXguCisgKiBXaXRoIHRoaXMgb3B0aW9uLCB0aGUgb3RoZXIgY2hhcmFjdGVycyB3
aWxsIG5vdCBiZSBtb2RpZmllZC4KKyAqCisgKiBAc2VlIFVfVElUTEVDQVNFX0FESlVTVF9UT19D
QVNFRAorICogQHNlZSBVbmljb2RlU3RyaW5nOjp0b1RpdGxlCisgKiBAc2VlIENhc2VNYXA6OnRv
VGl0bGUKKyAqIEBzZWUgdWNhc2VtYXBfc2V0T3B0aW9ucworICogQHNlZSB1Y2FzZW1hcF90b1Rp
dGxlCisgKiBAc2VlIHVjYXNlbWFwX3V0ZjhUb1RpdGxlCisgKiBAc3RhYmxlIElDVSAzLjgKKyAq
LworI2RlZmluZSBVX1RJVExFQ0FTRV9OT19MT1dFUkNBU0UgMHgxMDAKKworLyoqCisgKiBEbyBu
b3QgYWRqdXN0IHRoZSB0aXRsZWNhc2luZyBCcmVha0l0ZXJhdG9yIGluZGV4ZXM7CisgKiB0aXRs
ZWNhc2UgZXhhY3RseSB0aGUgY2hhcmFjdGVycyBhdCBicmVha3MgZnJvbSB0aGUgaXRlcmF0b3Iu
CisgKiBPcHRpb24gYml0IGZvciB0aXRsZWNhc2luZyBBUElzIHRoYXQgdGFrZSBhbiBvcHRpb25z
IGJpdCBzZXQuCisgKgorICogQnkgZGVmYXVsdCwgdGl0bGVjYXNpbmcgd2lsbCB0YWtlIGVhY2gg
YnJlYWsgaXRlcmF0b3IgaW5kZXgsCisgKiBhZGp1c3QgaXQgdG8gdGhlIG5leHQgcmVsZXZhbnQg
Y2hhcmFjdGVyIChzZWUgVV9USVRMRUNBU0VfQURKVVNUX1RPX0NBU0VEKSwKKyAqIGFuZCB0aXRs
ZWNhc2UgdGhhdCBvbmUuCisgKgorICogT3RoZXIgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlZC4K
KyAqCisgKiBJdCBpcyBhbiBlcnJvciB0byBzcGVjaWZ5IG11bHRpcGxlIHRpdGxlY2FzaW5nIGFk
anVzdG1lbnQgb3B0aW9ucyB0b2dldGhlci4KKyAqCisgKiBAc2VlIFVfVElUTEVDQVNFX0FESlVT
VF9UT19DQVNFRAorICogQHNlZSBVX1RJVExFQ0FTRV9OT19MT1dFUkNBU0UKKyAqIEBzZWUgVW5p
Y29kZVN0cmluZzo6dG9UaXRsZQorICogQHNlZSBDYXNlTWFwOjp0b1RpdGxlCisgKiBAc2VlIHVj
YXNlbWFwX3NldE9wdGlvbnMKKyAqIEBzZWUgdWNhc2VtYXBfdG9UaXRsZQorICogQHNlZSB1Y2Fz
ZW1hcF91dGY4VG9UaXRsZQorICogQHN0YWJsZSBJQ1UgMy44CisgKi8KKyNkZWZpbmUgVV9USVRM
RUNBU0VfTk9fQlJFQUtfQURKVVNUTUVOVCAweDIwMAorCisjaWZuZGVmIFVfSElERV9EUkFGVF9B
UEkKKworLyoqCisgKiBBZGp1c3QgZWFjaCB0aXRsZWNhc2luZyBCcmVha0l0ZXJhdG9yIGluZGV4
IHRvIHRoZSBuZXh0IGNhc2VkIGNoYXJhY3Rlci4KKyAqIChTZWUgdGhlIFVuaWNvZGUgU3RhbmRh
cmQsIGNoYXB0ZXIgMywgRGVmYXVsdCBDYXNlIENvbnZlcnNpb24sIFIzIHRvVGl0bGVjYXNlKFgp
LikKKyAqIE9wdGlvbiBiaXQgZm9yIHRpdGxlY2FzaW5nIEFQSXMgdGhhdCB0YWtlIGFuIG9wdGlv
bnMgYml0IHNldC4KKyAqCisgKiBUaGlzIHVzZWQgdG8gYmUgdGhlIGRlZmF1bHQgaW5kZXggYWRq
dXN0bWVudCBpbiBJQ1UuCisgKiBTaW5jZSBJQ1UgNjAsIHRoZSBkZWZhdWx0IGluZGV4IGFkanVz
dG1lbnQgaXMgdG8gdGhlIG5leHQgY2hhcmFjdGVyIHRoYXQgaXMKKyAqIGEgbGV0dGVyLCBudW1i
ZXIsIHN5bWJvbCwgb3IgcHJpdmF0ZSB1c2UgY29kZSBwb2ludC4KKyAqIChVbmNhc2VkIG1vZGlm
aWVyIGxldHRlcnMgYXJlIHNraXBwZWQuKQorICogVGhlIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3Ig
aXMgc21hbGwgZm9yIHdvcmQgdGl0bGVjYXNpbmcsCisgKiBidXQgdGhlIG5ldyBhZGp1c3RtZW50
IGlzIG11Y2ggYmV0dGVyIGZvciB3aG9sZS1zdHJpbmcgYW5kIHNlbnRlbmNlIHRpdGxlY2FzaW5n
OgorICogSXQgeWllbGRzICI0OWVycyIgYW5kICLCq+S4sChhYmMpwrsiIGluc3RlYWQgb2YgIjQ5
RXJzIiBhbmQgIsKr5LiwKEFiYynCuyIuCisgKgorICogSXQgaXMgYW4gZXJyb3IgdG8gc3BlY2lm
eSBtdWx0aXBsZSB0aXRsZWNhc2luZyBhZGp1c3RtZW50IG9wdGlvbnMgdG9nZXRoZXIuCisgKgor
ICogQHNlZSBVX1RJVExFQ0FTRV9OT19CUkVBS19BREpVU1RNRU5UCisgKiBAZHJhZnQgSUNVIDYw
CisgKi8KKyNkZWZpbmUgVV9USVRMRUNBU0VfQURKVVNUX1RPX0NBU0VEIDB4NDAwCisKKy8qKgor
ICogT3B0aW9uIGZvciBzdHJpbmcgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb25zIHRvIG5vdCBmaXJz
dCByZXNldCB0aGUgRWRpdHMgb2JqZWN0LgorICogVXNlZCBmb3IgZXhhbXBsZSBpbiBzb21lIGNh
c2UtbWFwcGluZyBhbmQgbm9ybWFsaXphdGlvbiBmdW5jdGlvbnMuCisgKgorICogQHNlZSBDYXNl
TWFwCisgKiBAc2VlIEVkaXRzCisgKiBAc2VlIE5vcm1hbGl6ZXIyCisgKiBAZHJhZnQgSUNVIDYw
CisgKi8KKyNkZWZpbmUgVV9FRElUU19OT19SRVNFVCAweDIwMDAKKworLyoqCisgKiBPbWl0IHVu
Y2hhbmdlZCB0ZXh0IHdoZW4gcmVjb3JkaW5nIGhvdyBzb3VyY2Ugc3Vic3RyaW5ncworICogcmVs
YXRlIHRvIGNoYW5nZWQgYW5kIHVuY2hhbmdlZCByZXN1bHQgc3Vic3RyaW5ncy4KKyAqIFVzZWQg
Zm9yIGV4YW1wbGUgaW4gc29tZSBjYXNlLW1hcHBpbmcgYW5kIG5vcm1hbGl6YXRpb24gZnVuY3Rp
b25zLgorICoKKyAqIEBzZWUgQ2FzZU1hcAorICogQHNlZSBFZGl0cworICogQHNlZSBOb3JtYWxp
emVyMgorICogQGRyYWZ0IElDVSA2MAorICovCisjZGVmaW5lIFVfT01JVF9VTkNIQU5HRURfVEVY
VCAweDQwMDAKKworI2VuZGlmICAvLyBVX0hJREVfRFJBRlRfQVBJCisKKy8qKgorICogT3B0aW9u
IGJpdCBmb3IgdV9zdHJDYXNlQ29tcGFyZSwgdV9zdHJjYXNlY21wLCB1bm9ybV9jb21wYXJlLCBl
dGM6CisgKiBDb21wYXJlIHN0cmluZ3MgaW4gY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNv
ZGUgdW5pdCBvcmRlci4KKyAqIEBzdGFibGUgSUNVIDIuMgorICovCisjZGVmaW5lIFVfQ09NUEFS
RV9DT0RFX1BPSU5UX09SREVSICAweDgwMDAKKworLyoqCisgKiBPcHRpb24gYml0IGZvciB1bm9y
bV9jb21wYXJlOgorICogUGVyZm9ybSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24uCisgKiBA
c3RhYmxlIElDVSAyLjIKKyAqLworI2RlZmluZSBVX0NPTVBBUkVfSUdOT1JFX0NBU0UgICAgICAg
MHgxMDAwMAorCisvKioKKyAqIE9wdGlvbiBiaXQgZm9yIHVub3JtX2NvbXBhcmU6CisgKiBCb3Ro
IGlucHV0IHN0cmluZ3MgYXJlIGFzc3VtZWQgdG8gZnVsZmlsbCBGQ0QgY29uZGl0aW9ucy4KKyAq
IEBzdGFibGUgSUNVIDIuMgorICovCisjZGVmaW5lIFVOT1JNX0lOUFVUX0lTX0ZDRCAgICAgICAg
ICAweDIwMDAwCisKKy8vIFJlbGF0ZWQgZGVmaW5pdGlvbnMgZWxzZXdoZXJlLgorLy8gT3B0aW9u
cyB0aGF0IGFyZSBub3QgbWVhbmluZ2Z1bCBpbiB0aGUgc2FtZSBmdW5jdGlvbnMKKy8vIGNhbiBz
aGFyZSB0aGUgc2FtZSBiaXRzLgorLy8KKy8vIFB1YmxpYzoKKy8vIHVuaWNvZGUvdW5vcm0uaCAj
ZGVmaW5lIFVOT1JNX0NPTVBBUkVfTk9STV9PUFRJT05TX1NISUZUIDIwCisvLworLy8gSW50ZXJu
YWw6IChtYXkgY2hhbmdlIG9yIGJlIHJlbW92ZWQpCisvLyB1Y2FzZS5oICNkZWZpbmUgX1NUUkNB
U0VDTVBfT1BUSU9OU19NQVNLIDB4ZmZmZgorLy8gdWNhc2UuaCAjZGVmaW5lIF9GT0xEX0NBU0Vf
T1BUSU9OU19NQVNLIDcKKy8vIHVjYXNlbWFwX2ltcC5oICNkZWZpbmUgVV9USVRMRUNBU0VfSVRF
UkFUT1JfTUFTSyAweGUwCisvLyB1Y2FzZW1hcF9pbXAuaCAjZGVmaW5lIFVfVElUTEVDQVNFX0FE
SlVTVE1FTlRfTUFTSyAweDYwMAorLy8gdXN0cl9pbXAuaCAjZGVmaW5lIF9TVFJOQ01QX1NUWUxF
IDB4MTAwMAorLy8gdW5vcm1jbXAuY3BwICNkZWZpbmUgX0NPTVBBUkVfRVFVSVYgMHg4MDAwMAor
CisjZW5kaWYgIC8vIF9fU1RSSU5HT1BUSU9OU19IX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvc3RyaW5ncGllY2UuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc3RyaW5n
cGllY2UuaAppbmRleCBiMjk1NzFkNGFkYmJkZDlkNmQ4MzJhYWViMGY5NzY4YjI0MTYxYTU2Li5i
MDg4N2VmZmE1MjU4NTYwMTg5N2IyYTg0MjAxNzdhZDU4ODQzZTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3N0cmluZ3BpZWNlLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS9zdHJpbmdwaWVjZS5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6
IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0
dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8vIENvcHlyaWdodCAoQykgMjAw
OS0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAvLyBDb3Jwb3JhdGlvbiBh
bmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogLy8KQEAgLTQwLDkgKzQyLDkgQEAgVV9O
QU1FU1BBQ0VfQkVHSU4KICAqIGluIGEgImNvbnN0IGNoYXIqIiBvciBhICJzdHJpbmciIHdoZXJl
dmVyIGEgIlN0cmluZ1BpZWNlIiBpcwogICogZXhwZWN0ZWQuCiAgKgotICogRnVuY3Rpb25zIG9y
IG1ldGhvZHMgbWF5IHVzZSBjb25zdCBTdHJpbmdQaWVjZSYgcGFyYW1ldGVycyB0byBhY2NlcHQg
ZWl0aGVyCi0gKiBhICJjb25zdCBjaGFyKiIgb3IgYSAic3RyaW5nIiB2YWx1ZSB0aGF0IHdpbGwg
YmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KLSAqIGEgU3RyaW5nUGllY2UuCisgKiBGdW5jdGlv
bnMgb3IgbWV0aG9kcyBtYXkgdXNlIFN0cmluZ1BpZWNlIHBhcmFtZXRlcnMgdG8gYWNjZXB0IGVp
dGhlciBhCisgKiAiY29uc3QgY2hhcioiIG9yIGEgInN0cmluZyIgdmFsdWUgdGhhdCB3aWxsIGJl
IGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEKKyAqIFN0cmluZ1BpZWNlLgogICoKICAqIFN5c3Rl
bWF0aWMgdXNhZ2Ugb2YgU3RyaW5nUGllY2UgaXMgZW5jb3VyYWdlZCBhcyBpdCB3aWxsIHJlZHVj
ZSB1bm5lY2Vzc2FyeQogICogY29udmVyc2lvbnMgZnJvbSAiY29uc3QgY2hhcioiIHRvICJzdHJp
bmciIGFuZCBiYWNrIGFnYWluLgpAQCAtNjYsMTQgKzY4LDEyIEBAIGNsYXNzIFVfQ09NTU9OX0FQ
SSBTdHJpbmdQaWVjZSA6IHB1YmxpYyBVTWVtb3J5IHsKICAgICogQHN0YWJsZSBJQ1UgNC4yCiAg
ICAqLwogICBTdHJpbmdQaWVjZShjb25zdCBjaGFyKiBzdHIpOwotI2lmIFVfSEFWRV9TVERfU1RS
SU5HCiAgIC8qKgogICAgKiBDb25zdHJ1Y3RzIGZyb20gYSBzdGQ6OnN0cmluZy4KICAgICogQHN0
YWJsZSBJQ1UgNC4yCiAgICAqLwogICBTdHJpbmdQaWVjZShjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
KQogICAgIDogcHRyXyhzdHIuZGF0YSgpKSwgbGVuZ3RoXyhzdGF0aWNfY2FzdDxpbnQzMl90Pihz
dHIuc2l6ZSgpKSkgeyB9Ci0jZW5kaWYKICAgLyoqCiAgICAqIENvbnN0cnVjdHMgZnJvbSBhIGNv
bnN0IGNoYXIgKiBwb2ludGVyIGFuZCBhIHNwZWNpZmllZCBsZW5ndGguCiAgICAqIEBwYXJhbSBv
ZmZzZXQgYSBjb25zdCBjaGFyICogcG9pbnRlciAobmVlZCBub3QgYmUgdGVybWluYXRlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc3RyaW5ndHJpZWJ1aWxkZXIuaCBiL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvc3RyaW5ndHJpZWJ1aWxkZXIuaAppbmRleCAwNDQ0N2U1NDM3
MTNkMWFjOWI1YzkzNjU3ZmExNTA3M2NhNDM2Y2EyLi5jYWVhZTUxYTQ3MjIyMDg3MDMzOTMxYTE5
YTIyNDU2MDRhNWI5Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N0cmlu
Z3RyaWVidWlsZGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zdHJpbmd0cmllYnVp
bGRlci5oCkBAIC0xLDEwICsxLDEyIEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwg
SW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51
bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICog
ICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMiwyMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1h
Y2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgc3RyaW5ndHJpZWJ1aWxk
ZXIuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICog
ICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC0xMDMs
NyArMTA1LDcgQEAgcHJvdGVjdGVkOgogICAgIC8qKiBAaW50ZXJuYWwgKi8KICAgICB2aXJ0dWFs
IGludDMyX3QgZ2V0RWxlbWVudFN0cmluZ0xlbmd0aChpbnQzMl90IGkpIGNvbnN0ID0gMDsKICAg
ICAvKiogQGludGVybmFsICovCi0gICAgdmlydHVhbCBVQ2hhciBnZXRFbGVtZW50VW5pdChpbnQz
Ml90IGksIGludDMyX3QgdW5pdEluZGV4KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjaGFyMTZf
dCBnZXRFbGVtZW50VW5pdChpbnQzMl90IGksIGludDMyX3QgdW5pdEluZGV4KSBjb25zdCA9IDA7
CiAgICAgLyoqIEBpbnRlcm5hbCAqLwogICAgIHZpcnR1YWwgaW50MzJfdCBnZXRFbGVtZW50VmFs
dWUoaW50MzJfdCBpKSBjb25zdCA9IDA7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgLyoqIEBpbnRlcm5hbCAqLwogICAgIHZpcnR1YWwgaW50MzJfdCBza2lwRWxlbWVudHNC
eVNvbWVVbml0cyhpbnQzMl90IGksIGludDMyX3QgdW5pdEluZGV4LCBpbnQzMl90IGNvdW50KSBj
b25zdCA9IDA7CiAgICAgLyoqIEBpbnRlcm5hbCAqLwotICAgIHZpcnR1YWwgaW50MzJfdCBpbmRl
eE9mRWxlbWVudFdpdGhOZXh0VW5pdChpbnQzMl90IGksIGludDMyX3QgdW5pdEluZGV4LCBVQ2hh
ciB1bml0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQzMl90IGluZGV4T2ZFbGVtZW50V2l0
aE5leHRVbml0KGludDMyX3QgaSwgaW50MzJfdCB1bml0SW5kZXgsIGNoYXIxNl90IHVuaXQpIGNv
bnN0ID0gMDsKIAogICAgIC8qKiBAaW50ZXJuYWwgKi8KICAgICB2aXJ0dWFsIFVCb29sIG1hdGNo
Tm9kZXNDYW5IYXZlVmFsdWVzKCkgY29uc3QgPSAwOwpAQCAtMTM1LDcgKzEzNyw3IEBAIHByb3Rl
Y3RlZDoKICAgICAvKiogQGludGVybmFsICovCiAgICAgc3RhdGljIGNvbnN0IGludDMyX3Qga01h
eEJyYW5jaExpbmVhclN1Yk5vZGVMZW5ndGg9NTsKIAotICAgIC8vIE1heGltdW0gbnVtYmVyIG9m
IG5lc3RlZCBzcGxpdC1icmFuY2ggbGV2ZWxzIGZvciBhIGJyYW5jaCBvbiBhbGwgMl4xNiBwb3Nz
aWJsZSBVQ2hhciB1bml0cy4KKyAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBuZXN0ZWQgc3BsaXQt
YnJhbmNoIGxldmVscyBmb3IgYSBicmFuY2ggb24gYWxsIDJeMTYgcG9zc2libGUgY2hhcjE2X3Qg
dW5pdHMuCiAgICAgLy8gbG9nMigyXjE2L2tNYXhCcmFuY2hMaW5lYXJTdWJOb2RlTGVuZ3RoKSBy
b3VuZGVkIHVwLgogICAgIC8qKiBAaW50ZXJuYWwgKi8KICAgICBzdGF0aWMgY29uc3QgaW50MzJf
dCBrTWF4U3BsaXRCcmFuY2hMZXZlbHM9MTQ7CkBAIC0xODQsNyArMTg2LDggQEAgcHJvdGVjdGVk
OgogICAgIC8qKiBAaW50ZXJuYWwgKi8KICAgICBVSGFzaHRhYmxlICpub2RlczsKIAotI2lmbmRl
ZiBVX0hJREVfSU5URVJOQUxfQVBJCisgICAgLy8gRG8gbm90IGNvbmRpdGlvbmFsaXplIHRoZSBm
b2xsb3dpbmcgd2l0aCAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEksCisgICAgLy8gaXQgaXMg
bmVlZGVkIGZvciBsYXlvdXQgb2Ygb3RoZXIgb2JqZWN0cy4KICAgICAvKiogQGludGVybmFsICov
CiAgICAgY2xhc3MgTm9kZSA6IHB1YmxpYyBVT2JqZWN0IHsKICAgICBwdWJsaWM6CkBAIC0yNDMs
NiArMjQ2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBpbnQzMl90IG9mZnNldDsKICAgICB9Owog
CisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAgICAvLyBUaGlzIGNsYXNzIHNob3VsZCBu
b3QgYmUgb3ZlcnJpZGRlbiBiZWNhdXNlCiAgICAgLy8gcmVnaXN0ZXJGaW5hbFZhbHVlKCkgY29t
cGFyZXMgYSBzdGFjay1hbGxvY2F0ZWQgRmluYWxWYWx1ZU5vZGUKICAgICAvLyAoc3RhY2stYWxs
b2NhdGVkIHNvIHRoYXQgd2UgZG9uJ3QgdW5uZWNlc3NhcmlseSBjcmVhdGUgbG90cyBvZiBkdXBs
aWNhdGUgbm9kZXMpCkBAIC0yNTIsMTMgKzI1NiwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLyoqIEBp
bnRlcm5hbCAqLwogICAgIGNsYXNzIEZpbmFsVmFsdWVOb2RlIDogcHVibGljIE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRmluYWxWYWx1ZU5vZGUoaW50MzJfdCB2KSA6IE5vZGUoMHgxMTEx
MTEqMzcrdiksIHZhbHVlKHYpIHt9CisgICAgICAgIEZpbmFsVmFsdWVOb2RlKGludDMyX3Qgdikg
OiBOb2RlKDB4MTExMTExdSozN3UrdiksIHZhbHVlKHYpIHt9CiAgICAgICAgIHZpcnR1YWwgVUJv
b2wgb3BlcmF0b3I9PShjb25zdCBOb2RlICZvdGhlcikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCB3cml0ZShTdHJpbmdUcmllQnVpbGRlciAmYnVpbGRlcik7CiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBpbnQzMl90IHZhbHVlOwogICAgIH07CisjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5B
TF9BUEkgKi8KIAorICAgIC8vIERvIG5vdCBjb25kaXRpb25hbGl6ZSB0aGUgZm9sbG93aW5nIHdp
dGggI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJLAorICAgIC8vIGl0IGlzIG5lZWRlZCBmb3Ig
bGF5b3V0IG9mIG90aGVyIG9iamVjdHMuCiAgICAgLyoqCiAgICAgICogQGludGVybmFsIAogICAg
ICAqLwpAQCAtMjY5LDM0ICsyNzYsMzggQEAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldFZh
bHVlKGludDMyX3QgdikgewogICAgICAgICAgICAgaGFzVmFsdWU9VFJVRTsKICAgICAgICAgICAg
IHZhbHVlPXY7Ci0gICAgICAgICAgICBoYXNoPWhhc2gqMzcrdjsKKyAgICAgICAgICAgIGhhc2g9
aGFzaCozN3UrdjsKICAgICAgICAgfQogICAgIHByb3RlY3RlZDoKICAgICAgICAgVUJvb2wgaGFz
VmFsdWU7CiAgICAgICAgIGludDMyX3QgdmFsdWU7CiAgICAgfTsKIAorI2lmbmRlZiBVX0hJREVf
SU5URVJOQUxfQVBJCiAgICAgLyoqIAogICAgICAqIEBpbnRlcm5hbCAKICAgICAgKi8KICAgICBj
bGFzcyBJbnRlcm1lZGlhdGVWYWx1ZU5vZGUgOiBwdWJsaWMgVmFsdWVOb2RlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIEludGVybWVkaWF0ZVZhbHVlTm9kZShpbnQzMl90IHYsIE5vZGUgKm5leHRO
b2RlKQotICAgICAgICAgICAgICAgIDogVmFsdWVOb2RlKDB4MjIyMjIyKjM3K2hhc2hDb2RlKG5l
eHROb2RlKSksIG5leHQobmV4dE5vZGUpIHsgc2V0VmFsdWUodik7IH0KKyAgICAgICAgICAgICAg
ICA6IFZhbHVlTm9kZSgweDIyMjIyMnUqMzd1K2hhc2hDb2RlKG5leHROb2RlKSksIG5leHQobmV4
dE5vZGUpIHsgc2V0VmFsdWUodik7IH0KICAgICAgICAgdmlydHVhbCBVQm9vbCBvcGVyYXRvcj09
KGNvbnN0IE5vZGUgJm90aGVyKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBpbnQzMl90IG1hcmtS
aWdodEVkZ2VzRmlyc3QoaW50MzJfdCBlZGdlTnVtYmVyKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHdyaXRlKFN0cmluZ1RyaWVCdWlsZGVyICZidWlsZGVyKTsKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIE5vZGUgKm5leHQ7CiAgICAgfTsKKyNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAq
LwogCisgICAgLy8gRG8gbm90IGNvbmRpdGlvbmFsaXplIHRoZSBmb2xsb3dpbmcgd2l0aCAjaWZu
ZGVmIFVfSElERV9JTlRFUk5BTF9BUEksCisgICAgLy8gaXQgaXMgbmVlZGVkIGZvciBsYXlvdXQg
b2Ygb3RoZXIgb2JqZWN0cy4KICAgICAvKioKICAgICAgKiBAaW50ZXJuYWwgCiAgICAgICovCiAg
ICAgY2xhc3MgTGluZWFyTWF0Y2hOb2RlIDogcHVibGljIFZhbHVlTm9kZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBMaW5lYXJNYXRjaE5vZGUoaW50MzJfdCBsZW4sIE5vZGUgKm5leHROb2RlKQot
ICAgICAgICAgICAgICAgIDogVmFsdWVOb2RlKCgweDMzMzMzMyozNytsZW4pKjM3K2hhc2hDb2Rl
KG5leHROb2RlKSksCisgICAgICAgICAgICAgICAgOiBWYWx1ZU5vZGUoKDB4MzMzMzMzdSozN3Ur
bGVuKSozN3UraGFzaENvZGUobmV4dE5vZGUpKSwKICAgICAgICAgICAgICAgICAgIGxlbmd0aChs
ZW4pLCBuZXh0KG5leHROb2RlKSB7fQogICAgICAgICB2aXJ0dWFsIFVCb29sIG9wZXJhdG9yPT0o
Y29uc3QgTm9kZSAmb3RoZXIpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGludDMyX3QgbWFya1Jp
Z2h0RWRnZXNGaXJzdChpbnQzMl90IGVkZ2VOdW1iZXIpOwpAQCAtMzA1LDYgKzMxNiw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgTm9kZSAqbmV4dDsKICAgICB9OwogCisjaWZuZGVmIFVfSElERV9J
TlRFUk5BTF9BUEkKICAgICAvKioKICAgICAgKiBAaW50ZXJuYWwgCiAgICAgICovCkBAIC0zMjYs
MjUgKzMzOCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3cml0ZShTdHJp
bmdUcmllQnVpbGRlciAmYnVpbGRlcik7CiAgICAgICAgIC8vIEFkZHMgYSB1bml0IHdpdGggYSBm
aW5hbCB2YWx1ZS4KICAgICAgICAgdm9pZCBhZGQoaW50MzJfdCBjLCBpbnQzMl90IHZhbHVlKSB7
Ci0gICAgICAgICAgICB1bml0c1tsZW5ndGhdPShVQ2hhciljOworICAgICAgICAgICAgdW5pdHNb
bGVuZ3RoXT0oY2hhcjE2X3QpYzsKICAgICAgICAgICAgIGVxdWFsW2xlbmd0aF09TlVMTDsKICAg
ICAgICAgICAgIHZhbHVlc1tsZW5ndGhdPXZhbHVlOwogICAgICAgICAgICAgKytsZW5ndGg7Ci0g
ICAgICAgICAgICBoYXNoPShoYXNoKjM3K2MpKjM3K3ZhbHVlOworICAgICAgICAgICAgaGFzaD0o
aGFzaCozN3UrYykqMzd1K3ZhbHVlOwogICAgICAgICB9CiAgICAgICAgIC8vIEFkZHMgYSB1bml0
IHdoaWNoIGxlYWRzIHRvIGFub3RoZXIgbWF0Y2ggbm9kZS4KICAgICAgICAgdm9pZCBhZGQoaW50
MzJfdCBjLCBOb2RlICpub2RlKSB7Ci0gICAgICAgICAgICB1bml0c1tsZW5ndGhdPShVQ2hhcilj
OworICAgICAgICAgICAgdW5pdHNbbGVuZ3RoXT0oY2hhcjE2X3QpYzsKICAgICAgICAgICAgIGVx
dWFsW2xlbmd0aF09bm9kZTsKICAgICAgICAgICAgIHZhbHVlc1tsZW5ndGhdPTA7CiAgICAgICAg
ICAgICArK2xlbmd0aDsKLSAgICAgICAgICAgIGhhc2g9KGhhc2gqMzcrYykqMzcraGFzaENvZGUo
bm9kZSk7CisgICAgICAgICAgICBoYXNoPShoYXNoKjM3dStjKSozN3UraGFzaENvZGUobm9kZSk7
CiAgICAgICAgIH0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIE5vZGUgKmVxdWFsW2tNYXhCcmFu
Y2hMaW5lYXJTdWJOb2RlTGVuZ3RoXTsgIC8vIE5VTEwgbWVhbnMgImhhcyBmaW5hbCB2YWx1ZSIu
CiAgICAgICAgIGludDMyX3QgbGVuZ3RoOwogICAgICAgICBpbnQzMl90IHZhbHVlc1trTWF4QnJh
bmNoTGluZWFyU3ViTm9kZUxlbmd0aF07Ci0gICAgICAgIFVDaGFyIHVuaXRzW2tNYXhCcmFuY2hM
aW5lYXJTdWJOb2RlTGVuZ3RoXTsKKyAgICAgICAgY2hhcjE2X3QgdW5pdHNba01heEJyYW5jaExp
bmVhclN1Yk5vZGVMZW5ndGhdOwogICAgIH07CiAKICAgICAvKioKQEAgLTM1MiwxNSArMzY0LDE1
IEBAIHByb3RlY3RlZDoKICAgICAgKi8KICAgICBjbGFzcyBTcGxpdEJyYW5jaE5vZGUgOiBwdWJs
aWMgQnJhbmNoTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBTcGxpdEJyYW5jaE5vZGUoVUNo
YXIgbWlkZGxlVW5pdCwgTm9kZSAqbGVzc1RoYW5Ob2RlLCBOb2RlICpncmVhdGVyT3JFcXVhbE5v
ZGUpCi0gICAgICAgICAgICAgICAgOiBCcmFuY2hOb2RlKCgoMHg1NTU1NTUqMzcrbWlkZGxlVW5p
dCkqMzcrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoQ29kZShsZXNzVGhhbk5v
ZGUpKSozNytoYXNoQ29kZShncmVhdGVyT3JFcXVhbE5vZGUpKSwKKyAgICAgICAgU3BsaXRCcmFu
Y2hOb2RlKGNoYXIxNl90IG1pZGRsZVVuaXQsIE5vZGUgKmxlc3NUaGFuTm9kZSwgTm9kZSAqZ3Jl
YXRlck9yRXF1YWxOb2RlKQorICAgICAgICAgICAgICAgIDogQnJhbmNoTm9kZSgoKDB4NTU1NTU1
dSozN3UrbWlkZGxlVW5pdCkqMzd1KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFz
aENvZGUobGVzc1RoYW5Ob2RlKSkqMzd1K2hhc2hDb2RlKGdyZWF0ZXJPckVxdWFsTm9kZSkpLAog
ICAgICAgICAgICAgICAgICAgdW5pdChtaWRkbGVVbml0KSwgbGVzc1RoYW4obGVzc1RoYW5Ob2Rl
KSwgZ3JlYXRlck9yRXF1YWwoZ3JlYXRlck9yRXF1YWxOb2RlKSB7fQogICAgICAgICB2aXJ0dWFs
IFVCb29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZSAmb3RoZXIpIGNvbnN0OwogICAgICAgICB2aXJ0
dWFsIGludDMyX3QgbWFya1JpZ2h0RWRnZXNGaXJzdChpbnQzMl90IGVkZ2VOdW1iZXIpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgd3JpdGUoU3RyaW5nVHJpZUJ1aWxkZXIgJmJ1aWxkZXIpOwogICAg
IHByb3RlY3RlZDoKLSAgICAgICAgVUNoYXIgdW5pdDsKKyAgICAgICAgY2hhcjE2X3QgdW5pdDsK
ICAgICAgICAgTm9kZSAqbGVzc1RoYW47CiAgICAgICAgIE5vZGUgKmdyZWF0ZXJPckVxdWFsOwog
ICAgIH07CkBAIC0zNzAsNyArMzgyLDcgQEAgcHJvdGVjdGVkOgogICAgIGNsYXNzIEJyYW5jaEhl
YWROb2RlIDogcHVibGljIFZhbHVlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBCcmFuY2hI
ZWFkTm9kZShpbnQzMl90IGxlbiwgTm9kZSAqc3ViTm9kZSkKLSAgICAgICAgICAgICAgICA6IFZh
bHVlTm9kZSgoMHg2NjY2NjYqMzcrbGVuKSozNytoYXNoQ29kZShzdWJOb2RlKSksCisgICAgICAg
ICAgICAgICAgOiBWYWx1ZU5vZGUoKDB4NjY2NjY2dSozN3UrbGVuKSozN3UraGFzaENvZGUoc3Vi
Tm9kZSkpLAogICAgICAgICAgICAgICAgICAgbGVuZ3RoKGxlbiksIG5leHQoc3ViTm9kZSkge30K
ICAgICAgICAgdmlydHVhbCBVQm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUgJm90aGVyKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBpbnQzMl90IG1hcmtSaWdodEVkZ2VzRmlyc3QoaW50MzJfdCBl
ZGdlTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc3RzZWFyY2gu
aCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc3RzZWFyY2guaAppbmRleCBkMzhjYjIzZjIxNTdl
Njk0NWU2NmIxMGYyYjg0NDIwMGUzZTE2YzEzLi41N2I1YjMyMWU5MGQ5MWRiMzVmMzg5ODVmZjUz
NWNjNGRjYjNiNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N0c2VhcmNo
LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS9zdHNlYXJjaC5oCkBAIC0xLDMgKzEsNSBA
QAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExp
Y2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0
bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCiAqICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTQgSUJNIGFu
ZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3N5bXRhYmxlLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3N5bXRhYmxlLmgK
aW5kZXggNDI4ZjhiZmYyM2UxMmYxNzQ0NGJkYjM0ZjA0YzE1Y2I3ZDNhNTg2OS4uMzVlNWYyMzhh
NzA5NTQ1YmVhY2I4YzY1ZmQxM2JhZmVkMGE0ZmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS9zeW10YWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvc3ltdGFi
bGUuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMu
IGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAo
YykgMjAwMC0yMDA1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3RibGNvbGwuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvdGJsY29sbC5oCmluZGV4IGU1NmYxODlhZDJkMWY4MmVmZTc5Yzg3MzdjMDhkZTg4YTE5MDY2
YWYuLjI0YmEyMTNiNDFlYWNjMTE4MWYxOTI2ZjRkMTFkYTQ2N2E3N2YyNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdGJsY29sbC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdGJsY29sbC5oCkBAIC0xLDYgKzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVu
aWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6
Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKLSogQ29weXJpZ2h0IChDKSAxOTk2LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFj
aGluZXMgQ29ycG9yYXRpb24gYW5kCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDE2LCBJbnRlcm5h
dGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAogKiBvdGhlcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCkBAIC05NCwxMiArOTYs
MTIgQEAgY2xhc3MgVVZlY3RvcjY0OwogICogQ29sbGF0b3IsIHVzaW5nIGRhdGEtZHJpdmVuIHRh
Ymxlcy4gVGhlIHVzZXIgY2FuIGNyZWF0ZSBhIGN1c3RvbWl6ZWQKICAqIHRhYmxlLWJhc2VkIGNv
bGxhdGlvbi4KICAqIDxwPgotICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbGxh
dGlvbiBzZXJ2aWNlIHNlZSAKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2xs
YXRpb24gc2VydmljZSBzZWUKICAqIDxhIGhyZWY9Imh0dHA6Ly91c2VyZ3VpZGUuaWN1LXByb2pl
Y3Qub3JnL2NvbGxhdGlvbiI+dGhlIFVzZXIgR3VpZGU8L2E+LgogICogPHA+Ci0gKiBDb2xsYXRp
b24gc2VydmljZSBwcm92aWRlcyBjb3JyZWN0IHNvcnRpbmcgb3JkZXJzIGZvciBtb3N0IGxvY2Fs
ZXMgc3VwcG9ydGVkIGluIElDVS4gCisgKiBDb2xsYXRpb24gc2VydmljZSBwcm92aWRlcyBjb3Jy
ZWN0IHNvcnRpbmcgb3JkZXJzIGZvciBtb3N0IGxvY2FsZXMgc3VwcG9ydGVkIGluIElDVS4KICAq
IElmIHNwZWNpZmljIGRhdGEgZm9yIGEgbG9jYWxlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBvcmRl
cnMgZXZlbnR1YWxseSBmYWxscyBiYWNrCi0gKiB0byB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy51
bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1jb2xsYXRpb24uaHRtbCNSb290X0NvbGxhdGlv
biI+Q0xEUiByb290IHNvcnQgb3JkZXI8L2E+LiAKKyAqIHRvIHRoZSA8YSBocmVmPSJodHRwOi8v
d3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWNvbGxhdGlvbi5odG1sI1Jvb3RfQ29s
bGF0aW9uIj5DTERSIHJvb3Qgc29ydCBvcmRlcjwvYT4uCiAgKiA8cD4KICAqIFNvcnQgb3JkZXJp
bmcgbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcHJvdmlkaW5nIHlvdXIgb3duIHNldCBvZiBydWxlcy4g
Rm9yIG1vcmUgb24KICAqIHRoaXMgc3ViamVjdCBzZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly91c2Vy
Z3VpZGUuaWN1LXByb2plY3Qub3JnL2NvbGxhdGlvbi9jdXN0b21pemF0aW9uIj4KQEAgLTE2MSw3
ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIFVDb2xBdHRyaWJ1dGVWYWx1
ZSBkZWNvbXBvc2l0aW9uTW9kZSwKICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSYgc3Rh
dHVzKTsKIAotI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJIAorI2lmbmRlZiBVX0hJREVfSU5U
RVJOQUxfQVBJCiAgICAgLyoqCiAgICAgICogVE9ETzogZG9jdW1lbnQgJiBwcm9wb3NlIGFzIHB1
YmxpYyBBUEkKICAgICAgKiBAaW50ZXJuYWwKQEAgLTE4MCw4ICsxODIsOCBAQCBwdWJsaWM6CiAK
IAogICAgIC8qKiBPcGVucyBhIGNvbGxhdG9yIGZyb20gYSBjb2xsYXRvciBiaW5hcnkgaW1hZ2Ug
Y3JlYXRlZCB1c2luZwotICAgICogIGNsb25lQmluYXJ5LiBCaW5hcnkgaW1hZ2UgdXNlZCBpbiBp
bnN0YW50aWF0aW9uIG9mIHRoZSAKLSAgICAqICBjb2xsYXRvciByZW1haW5zIG93bmVkIGJ5IHRo
ZSB1c2VyIGFuZCBzaG91bGQgc3RheSBhcm91bmQgZm9yIAorICAgICogIGNsb25lQmluYXJ5LiBC
aW5hcnkgaW1hZ2UgdXNlZCBpbiBpbnN0YW50aWF0aW9uIG9mIHRoZQorICAgICogIGNvbGxhdG9y
IHJlbWFpbnMgb3duZWQgYnkgdGhlIHVzZXIgYW5kIHNob3VsZCBzdGF5IGFyb3VuZCBmb3IKICAg
ICAqICB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbGxhdG9yLiBUaGUgQVBJIGFsc28gdGFrZXMgYSBi
YXNlIGNvbGxhdG9yCiAgICAgKiAgd2hpY2ggbXVzdCBiZSB0aGUgcm9vdCBjb2xsYXRvci4KICAg
ICAqICBAcGFyYW0gYmluIGJpbmFyeSBpbWFnZSBvd25lZCBieSB0aGUgdXNlciBhbmQgcmVxdWly
ZWQgdGhyb3VnaCB0aGUKQEAgLTE5Niw4ICsxOTgsOCBAQCBwdWJsaWM6CiAgICAgKiAgQHNlZSBj
bG9uZUJpbmFyeQogICAgICogIEBzdGFibGUgSUNVIDMuNAogICAgICovCi0gICAgUnVsZUJhc2Vk
Q29sbGF0b3IoY29uc3QgdWludDhfdCAqYmluLCBpbnQzMl90IGxlbmd0aCwgCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFJ1bGVCYXNlZENvbGxhdG9yICpiYXNlLCAKKyAgICBSdWxlQmFzZWRD
b2xsYXRvcihjb25zdCB1aW50OF90ICpiaW4sIGludDMyX3QgbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSdWxlQmFzZWRDb2xsYXRvciAqYmFzZSwKICAgICAgICAgICAgICAgICAg
ICAgVUVycm9yQ29kZSAmc3RhdHVzKTsKIAogICAgIC8qKgpAQCAtMjU4LDcgKzI2MCw3IEBAIHB1
YmxpYzoKIAogICAgIC8qKgogICAgICogVGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gY29tcGFyZXMg
dGhlIGNoYXJhY3RlciBkYXRhIHN0b3JlZCBpbiB0d28KLSAgICAqIGRpZmZlcmVudCBzdHJpbmdz
LiBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgYSBzdHJpbmcgaXMgbGVzcyAKKyAg
ICAqIGRpZmZlcmVudCBzdHJpbmdzLiBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIg
YSBzdHJpbmcgaXMgbGVzcwogICAgICogdGhhbiwgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGFu
b3RoZXIgc3RyaW5nLgogICAgICogQHBhcmFtIHNvdXJjZSB0aGUgc291cmNlIHN0cmluZyB0byBi
ZSBjb21wYXJlZCB3aXRoLgogICAgICogQHBhcmFtIHRhcmdldCB0aGUgc3RyaW5nIHRoYXQgaXMg
dG8gYmUgY29tcGFyZWQgd2l0aCB0aGUgc291cmNlIHN0cmluZy4KQEAgLTI3MywxNSArMjc1LDE1
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JD
b2RlICZzdGF0dXMpIGNvbnN0OwogCiAgICAgLyoqCi0gICAgKiBEb2VzIHRoZSBzYW1lIHRoaW5n
IGFzIGNvbXBhcmUgYnV0IGxpbWl0cyB0aGUgY29tcGFyaXNvbiB0byBhIHNwZWNpZmllZCAKKyAg
ICAqIERvZXMgdGhlIHNhbWUgdGhpbmcgYXMgY29tcGFyZSBidXQgbGltaXRzIHRoZSBjb21wYXJp
c29uIHRvIGEgc3BlY2lmaWVkCiAgICAgKiBsZW5ndGgKICAgICAqIEBwYXJhbSBzb3VyY2UgdGhl
IHNvdXJjZSBzdHJpbmcgdG8gYmUgY29tcGFyZWQgd2l0aC4KICAgICAqIEBwYXJhbSB0YXJnZXQg
dGhlIHN0cmluZyB0aGF0IGlzIHRvIGJlIGNvbXBhcmVkIHdpdGggdGhlIHNvdXJjZSBzdHJpbmcu
CiAgICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggdGhlIGNvbXBhcmlzb24gaXMgbGltaXRl
ZCB0bwogICAgICogQHBhcmFtIHN0YXR1cyBwb3NzaWJsZSBlcnJvciBjb2RlCi0gICAgKiBAcmV0
dXJuIFJldHVybnMgYW4gZW51bSB2YWx1ZS4gVUNPTF9HUkVBVEVSIGlmIHNvdXJjZSAodXAgdG8g
dGhlIHNwZWNpZmllZCAKLSAgICAqICAgICAgICAgbGVuZ3RoKSBpcyBncmVhdGVyIHRoYW4gdGFy
Z2V0OyBVQ09MX0VRVUFMIGlmIHNvdXJjZSAodXAgdG8gc3BlY2lmaWVkIAotICAgICogICAgICAg
ICBsZW5ndGgpIGlzIGVxdWFsIHRvIHRhcmdldDsgVUNPTF9MRVNTIGlmIHNvdXJjZSAodXAgdG8g
dGhlIHNwZWNpZmllZCAKKyAgICAqIEByZXR1cm4gUmV0dXJucyBhbiBlbnVtIHZhbHVlLiBVQ09M
X0dSRUFURVIgaWYgc291cmNlICh1cCB0byB0aGUgc3BlY2lmaWVkCisgICAgKiAgICAgICAgIGxl
bmd0aCkgaXMgZ3JlYXRlciB0aGFuIHRhcmdldDsgVUNPTF9FUVVBTCBpZiBzb3VyY2UgKHVwIHRv
IHNwZWNpZmllZAorICAgICogICAgICAgICBsZW5ndGgpIGlzIGVxdWFsIHRvIHRhcmdldDsgVUNP
TF9MRVNTIGlmIHNvdXJjZSAodXAgdG8gdGhlIHNwZWNpZmllZAogICAgICogICAgICAgICBsZW5n
dGgpIGlzIGxlc3MgIHRoYW4gdGFyZ2V0LgogICAgICogQHN0YWJsZSBJQ1UgMi42CiAgICAgKi8K
QEAgLTI5Miw3ICsyOTQsNyBAQCBwdWJsaWM6CiAKICAgICAvKioKICAgICAqIFRoZSBjb21wYXJp
c29uIGZ1bmN0aW9uIGNvbXBhcmVzIHRoZSBjaGFyYWN0ZXIgZGF0YSBzdG9yZWQgaW4gdHdvCi0g
ICAgKiBkaWZmZXJlbnQgc3RyaW5nIGFycmF5cy4gUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB3
aGV0aGVyIGEgc3RyaW5nIGFycmF5IAorICAgICogZGlmZmVyZW50IHN0cmluZyBhcnJheXMuIFJl
dHVybnMgaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlciBhIHN0cmluZyBhcnJheQogICAgICogaXMg
bGVzcyB0aGFuLCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYW5vdGhlciBzdHJpbmcgYXJyYXku
CiAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBzb3VyY2Ugc3RyaW5nIGFycmF5IHRvIGJlIGNvbXBh
cmVkIHdpdGguCiAgICAgKiBAcGFyYW0gc291cmNlTGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIHNv
dXJjZSBzdHJpbmcgYXJyYXkuICBJZiB0aGlzIHZhbHVlCkBAIC0zMDYsOCArMzA4LDggQEAgcHVi
bGljOgogICAgICogdGhhbiB0YXJnZXQKICAgICAqIEBzdGFibGUgSUNVIDIuNgogICAgICovCi0g
ICAgdmlydHVhbCBVQ29sbGF0aW9uUmVzdWx0IGNvbXBhcmUoY29uc3QgVUNoYXIqIHNvdXJjZSwg
aW50MzJfdCBzb3VyY2VMZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVUNoYXIqIHRhcmdldCwgaW50MzJfdCB0YXJnZXRMZW5ndGgsCisgICAgdmlydHVh
bCBVQ29sbGF0aW9uUmVzdWx0IGNvbXBhcmUoY29uc3QgY2hhcjE2X3QqIHNvdXJjZSwgaW50MzJf
dCBzb3VyY2VMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhcjE2X3QqIHRhcmdldCwgaW50MzJfdCB0YXJnZXRMZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmc3RhdHVzKSBjb25zdDsKIAogICAg
IC8qKgpAQCAtMzQ2LDcgKzM0OCw3IEBAIHB1YmxpYzoKICAgICAgKiBUcmFuc2Zvcm1zIHRoZSBz
dHJpbmcgaW50byBhIHNlcmllcyBvZiBjaGFyYWN0ZXJzCiAgICAgICogdGhhdCBjYW4gYmUgY29t
cGFyZWQgd2l0aCBDb2xsYXRpb25LZXkuY29tcGFyZSgpLgogICAgICAqCi0gICAgICogTm90ZSB0
aGF0IHNvcnQga2V5cyBhcmUgb2Z0ZW4gbGVzcyBlZmZpY2llbnQgdGhhbiBzaW1wbHkgZG9pbmcg
Y29tcGFyaXNvbi4gIAorICAgICAqIE5vdGUgdGhhdCBzb3J0IGtleXMgYXJlIG9mdGVuIGxlc3Mg
ZWZmaWNpZW50IHRoYW4gc2ltcGx5IGRvaW5nIGNvbXBhcmlzb24uCiAgICAgICogRm9yIG1vcmUg
ZGV0YWlscywgc2VlIHRoZSBJQ1UgVXNlciBHdWlkZS4KICAgICAgKgogICAgICAqIEBwYXJhbSBz
b3VyY2UgdGhlIHNvdXJjZSBzdHJpbmcuCkBAIC0zNjQsNyArMzY2LDcgQEAgcHVibGljOgogICAg
ICAqIFRyYW5zZm9ybXMgYSBzcGVjaWZpZWQgcmVnaW9uIG9mIHRoZSBzdHJpbmcgaW50byBhIHNl
cmllcyBvZiBjaGFyYWN0ZXJzCiAgICAgICogdGhhdCBjYW4gYmUgY29tcGFyZWQgd2l0aCBDb2xs
YXRpb25LZXkuY29tcGFyZS4KICAgICAgKgotICAgICAqIE5vdGUgdGhhdCBzb3J0IGtleXMgYXJl
IG9mdGVuIGxlc3MgZWZmaWNpZW50IHRoYW4gc2ltcGx5IGRvaW5nIGNvbXBhcmlzb24uICAKKyAg
ICAgKiBOb3RlIHRoYXQgc29ydCBrZXlzIGFyZSBvZnRlbiBsZXNzIGVmZmljaWVudCB0aGFuIHNp
bXBseSBkb2luZyBjb21wYXJpc29uLgogICAgICAqIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUg
SUNVIFVzZXIgR3VpZGUuCiAgICAgICoKICAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBzb3VyY2Ug
c3RyaW5nLgpAQCAtMzc1LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICAgKiBAc2VlIENvbGxhdGlv
bktleQogICAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgICAqLwotICAgIHZpcnR1YWwgQ29sbGF0
aW9uS2V5JiBnZXRDb2xsYXRpb25LZXkoY29uc3QgVUNoYXIgKnNvdXJjZSwKKyAgICB2aXJ0dWFs
IENvbGxhdGlvbktleSYgZ2V0Q29sbGF0aW9uS2V5KGNvbnN0IGNoYXIxNl90ICpzb3VyY2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNvdXJjZUxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdGlv
bktleSYga2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSYgc3RhdHVzKSBjb25zdDsKQEAgLTQxMyw3ICs0MTUsNyBAQCBwdWJsaWM6CiAgICAg
ICovCiAgICAgdmlydHVhbCB2b2lkIGdldFZlcnNpb24oVVZlcnNpb25JbmZvIGluZm8pIGNvbnN0
OwogCi0jaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSSAKKyNpZm5kZWYgVV9ISURFX0RFUFJF
Q0FURURfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgbWF4aW11bSBsZW5ndGggb2Yg
YW55IGV4cGFuc2lvbiBzZXF1ZW5jZXMgdGhhdCBlbmQgd2l0aCB0aGUKICAgICAgKiBzcGVjaWZp
ZWQgY29tcGFyaXNvbiBvcmRlci4KQEAgLTQ1OCw3ICs0NjAsNyBAQCBwdWJsaWM6CiAgICAgICov
CiAgICAgc3RhdGljIFVDbGFzc0lEIFVfRVhQT1JUMiBnZXRTdGF0aWNDbGFzc0lEKHZvaWQpOwog
Ci0jaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSSAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FU
RURfQVBJCiAgICAgLyoqCiAgICAgICogRG8gbm90IHVzZSB0aGlzIG1ldGhvZDogVGhlIGNhbGxl
ciBhbmQgdGhlIElDVSBsaWJyYXJ5IG1pZ2h0IHVzZSBkaWZmZXJlbnQgaGVhcHMuCiAgICAgICog
VXNlIGNsb25lQmluYXJ5KCkgaW5zdGVhZCB3aGljaCB3cml0ZXMgdG8gY2FsbGVyLXByb3ZpZGVk
IG1lbW9yeS4KQEAgLTQ3Miw3ICs0NzQsNyBAQCBwdWJsaWM6CiAgICAgdWludDhfdCAqY2xvbmVS
dWxlRGF0YShpbnQzMl90ICZsZW5ndGgsIFVFcnJvckNvZGUgJnN0YXR1cykgY29uc3Q7CiAjZW5k
aWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogCi0gICAgLyoqIENyZWF0ZXMgYSBiaW5h
cnkgaW1hZ2Ugb2YgYSBjb2xsYXRvci4gVGhpcyBiaW5hcnkgaW1hZ2UgY2FuIGJlIHN0b3JlZCBh
bmQgCisgICAgLyoqIENyZWF0ZXMgYSBiaW5hcnkgaW1hZ2Ugb2YgYSBjb2xsYXRvci4gVGhpcyBi
aW5hcnkgaW1hZ2UgY2FuIGJlIHN0b3JlZCBhbmQKICAgICAqICBsYXRlciB1c2VkIHRvIGluc3Rh
bnRpYXRlIGEgY29sbGF0b3IgdXNpbmcgdWNvbF9vcGVuQmluYXJ5LgogICAgICogIFRoaXMgQVBJ
IHN1cHBvcnRzIHByZWZsaWdodGluZy4KICAgICAqICBAcGFyYW0gYnVmZmVyIGEgZmlsbC1pbiBi
dWZmZXIgdG8gcmVjZWl2ZSB0aGUgYmluYXJ5IGltYWdlCkBAIC01NTAsNyArNTUyLDcgQEAgcHVi
bGljOgogICAgICAqIHRoZSB0b3Agb2Ygb25lIG9mIHRoZSBzdXBwb3J0ZWQgcmVvcmRlcmluZyBn
cm91cHMsCiAgICAgICogYW5kIGl0IG11c3Qgbm90IGJlIGJleW9uZCB0aGUgbGFzdCBvZiB0aG9z
ZSBncm91cHMuCiAgICAgICogU2VlIHNldE1heFZhcmlhYmxlKCkuCi0gICAgICogQHBhcmFtIHZh
clRvcCBvbmUgb3IgbW9yZSAoaWYgY29udHJhY3Rpb24pIFVDaGFycyB0byB3aGljaCB0aGUgdmFy
aWFibGUgdG9wIHNob3VsZCBiZSBzZXQKKyAgICAgKiBAcGFyYW0gdmFyVG9wIG9uZSBvciBtb3Jl
IChpZiBjb250cmFjdGlvbikgY2hhcjE2X3RzIHRvIHdoaWNoIHRoZSB2YXJpYWJsZSB0b3Agc2hv
dWxkIGJlIHNldAogICAgICAqIEBwYXJhbSBsZW4gbGVuZ3RoIG9mIHZhcmlhYmxlIHRvcCBzdHJp
bmcuIElmIC0xIGl0IGlzIGNvbnNpZGVyZWQgdG8gYmUgemVybyB0ZXJtaW5hdGVkLgogICAgICAq
IEBwYXJhbSBzdGF0dXMgZXJyb3IgY29kZS4gSWYgZXJyb3IgY29kZSBpcyBzZXQsIHRoZSByZXR1
cm4gdmFsdWUgaXMgdW5kZWZpbmVkLiBFcnJvcnMgc2V0IGJ5IHRoaXMgZnVuY3Rpb24gYXJlOiA8
YnI+CiAgICAgICogICAgVV9DRV9OT1RfRk9VTkRfRVJST1IgaWYgbW9yZSB0aGFuIG9uZSBjaGFy
YWN0ZXIgd2FzIHBhc3NlZCBhbmQgdGhlcmUgaXMgbm8gc3VjaCBjb250cmFjdGlvbjxicj4KQEAg
LTU1OSw3ICs1NjEsNyBAQCBwdWJsaWM6CiAgICAgICogQHJldHVybiB2YXJpYWJsZSB0b3AgcHJp
bWFyeSB3ZWlnaHQKICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTMgQ2FsbCBzZXRNYXhWYXJpYWJs
ZSgpIGluc3RlYWQuCiAgICAgICovCi0gICAgdmlydHVhbCB1aW50MzJfdCBzZXRWYXJpYWJsZVRv
cChjb25zdCBVQ2hhciAqdmFyVG9wLCBpbnQzMl90IGxlbiwgVUVycm9yQ29kZSAmc3RhdHVzKTsK
KyAgICB2aXJ0dWFsIHVpbnQzMl90IHNldFZhcmlhYmxlVG9wKGNvbnN0IGNoYXIxNl90ICp2YXJU
b3AsIGludDMyX3QgbGVuLCBVRXJyb3JDb2RlICZzdGF0dXMpOwogCiAgICAgLyoqCiAgICAgICog
U2V0cyB0aGUgdmFyaWFibGUgdG9wIHRvIHRoZSBwcmltYXJ5IHdlaWdodCBvZiB0aGUgc3BlY2lm
aWVkIHN0cmluZy4KQEAgLTU2OCw3ICs1NzAsNyBAQCBwdWJsaWM6CiAgICAgICogdGhlIHRvcCBv
ZiBvbmUgb2YgdGhlIHN1cHBvcnRlZCByZW9yZGVyaW5nIGdyb3VwcywKICAgICAgKiBhbmQgaXQg
bXVzdCBub3QgYmUgYmV5b25kIHRoZSBsYXN0IG9mIHRob3NlIGdyb3Vwcy4KICAgICAgKiBTZWUg
c2V0TWF4VmFyaWFibGUoKS4KLSAgICAgKiBAcGFyYW0gdmFyVG9wIGEgVW5pY29kZVN0cmluZyBz
aXplIDEgb3IgbW9yZSAoaWYgY29udHJhY3Rpb24pIG9mIFVDaGFycyB0byB3aGljaCB0aGUgdmFy
aWFibGUgdG9wIHNob3VsZCBiZSBzZXQKKyAgICAgKiBAcGFyYW0gdmFyVG9wIGEgVW5pY29kZVN0
cmluZyBzaXplIDEgb3IgbW9yZSAoaWYgY29udHJhY3Rpb24pIG9mIGNoYXIxNl90cyB0byB3aGlj
aCB0aGUgdmFyaWFibGUgdG9wIHNob3VsZCBiZSBzZXQKICAgICAgKiBAcGFyYW0gc3RhdHVzIGVy
cm9yIGNvZGUuIElmIGVycm9yIGNvZGUgaXMgc2V0LCB0aGUgcmV0dXJuIHZhbHVlIGlzIHVuZGVm
aW5lZC4gRXJyb3JzIHNldCBieSB0aGlzIGZ1bmN0aW9uIGFyZTogPGJyPgogICAgICAqICAgIFVf
Q0VfTk9UX0ZPVU5EX0VSUk9SIGlmIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyIHdhcyBwYXNzZWQg
YW5kIHRoZXJlIGlzIG5vIHN1Y2ggY29udHJhY3Rpb248YnI+CiAgICAgICogICAgVV9JTExFR0FM
X0FSR1VNRU5UX0VSUk9SIGlmIHRoZSB2YXJpYWJsZSB0b3AgaXMgYmV5b25kCkBAIC02MDEsMTAg
KzYwMywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1aW50MzJfdCBnZXRWYXJpYWJsZVRvcChV
RXJyb3JDb2RlICZzdGF0dXMpIGNvbnN0OwogCiAgICAgLyoqCi0gICAgICogR2V0IGEgVW5pY29k
ZVNldCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgY2hhcmFjdGVycyBhbmQgc2VxdWVuY2VzIHRhaWxv
cmVkIGluIAorICAgICAqIEdldCBhIFVuaWNvZGVTZXQgdGhhdCBjb250YWlucyBhbGwgdGhlIGNo
YXJhY3RlcnMgYW5kIHNlcXVlbmNlcyB0YWlsb3JlZCBpbgogICAgICAqIHRoaXMgY29sbGF0b3Iu
CiAgICAgICogQHBhcmFtIHN0YXR1cyAgICAgIGVycm9yIGNvZGUgb2YgdGhlIG9wZXJhdGlvbgot
ICAgICAqIEByZXR1cm4gYSBwb2ludGVyIHRvIGEgVW5pY29kZVNldCBvYmplY3QgY29udGFpbmlu
ZyBhbGwgdGhlIAorICAgICAqIEByZXR1cm4gYSBwb2ludGVyIHRvIGEgVW5pY29kZVNldCBvYmpl
Y3QgY29udGFpbmluZyBhbGwgdGhlCiAgICAgICogICAgICAgICBjb2RlIHBvaW50cyBhbmQgc2Vx
dWVuY2VzIHRoYXQgbWF5IHNvcnQgZGlmZmVyZW50bHkgdGhhbgogICAgICAqICAgICAgICAgaW4g
dGhlIHJvb3QgY29sbGF0b3IuIFRoZSBvYmplY3QgbXVzdCBiZSBkaXNwb3NlZCBvZiBieSB1c2lu
ZyBkZWxldGUKICAgICAgKiBAc3RhYmxlIElDVSAyLjQKQEAgLTYxNCw3ICs2MTYsNyBAQCBwdWJs
aWM6CiAgICAgLyoqCiAgICAgICogR2V0IHRoZSBzb3J0IGtleSBhcyBhbiBhcnJheSBvZiBieXRl
cyBmcm9tIGEgVW5pY29kZVN0cmluZy4KICAgICAgKgotICAgICAqIE5vdGUgdGhhdCBzb3J0IGtl
eXMgYXJlIG9mdGVuIGxlc3MgZWZmaWNpZW50IHRoYW4gc2ltcGx5IGRvaW5nIGNvbXBhcmlzb24u
ICAKKyAgICAgKiBOb3RlIHRoYXQgc29ydCBrZXlzIGFyZSBvZnRlbiBsZXNzIGVmZmljaWVudCB0
aGFuIHNpbXBseSBkb2luZyBjb21wYXJpc29uLgogICAgICAqIEZvciBtb3JlIGRldGFpbHMsIHNl
ZSB0aGUgSUNVIFVzZXIgR3VpZGUuCiAgICAgICoKICAgICAgKiBAcGFyYW0gc291cmNlIHN0cmlu
ZyB0byBiZSBwcm9jZXNzZWQuCkBAIC02MjksOSArNjMxLDkgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0TGVuZ3RoKSBjb25zdDsKIAogICAg
IC8qKgotICAgICAqIEdldCB0aGUgc29ydCBrZXkgYXMgYW4gYXJyYXkgb2YgYnl0ZXMgZnJvbSBh
IFVDaGFyIGJ1ZmZlci4KKyAgICAgKiBHZXQgdGhlIHNvcnQga2V5IGFzIGFuIGFycmF5IG9mIGJ5
dGVzIGZyb20gYSBjaGFyMTZfdCBidWZmZXIuCiAgICAgICoKLSAgICAgKiBOb3RlIHRoYXQgc29y
dCBrZXlzIGFyZSBvZnRlbiBsZXNzIGVmZmljaWVudCB0aGFuIHNpbXBseSBkb2luZyBjb21wYXJp
c29uLiAgCisgICAgICogTm90ZSB0aGF0IHNvcnQga2V5cyBhcmUgb2Z0ZW4gbGVzcyBlZmZpY2ll
bnQgdGhhbiBzaW1wbHkgZG9pbmcgY29tcGFyaXNvbi4KICAgICAgKiBGb3IgbW9yZSBkZXRhaWxz
LCBzZWUgdGhlIElDVSBVc2VyIEd1aWRlLgogICAgICAqCiAgICAgICogQHBhcmFtIHNvdXJjZSBz
dHJpbmcgdG8gYmUgcHJvY2Vzc2VkLgpAQCAtNjQ0LDcgKzY0Niw3IEBAIHB1YmxpYzoKICAgICAg
KiBAcmV0dXJuIE51bWJlciBvZiBieXRlcyBuZWVkZWQgZm9yIHN0b3JpbmcgdGhlIHNvcnQga2V5
CiAgICAgICogQHN0YWJsZSBJQ1UgMi4yCiAgICAgICovCi0gICAgdmlydHVhbCBpbnQzMl90IGdl
dFNvcnRLZXkoY29uc3QgVUNoYXIgKnNvdXJjZSwgaW50MzJfdCBzb3VyY2VMZW5ndGgsCisgICAg
dmlydHVhbCBpbnQzMl90IGdldFNvcnRLZXkoY29uc3QgY2hhcjE2X3QgKnNvdXJjZSwgaW50MzJf
dCBzb3VyY2VMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
cmVzdWx0LCBpbnQzMl90IHJlc3VsdExlbmd0aCkgY29uc3Q7CiAKICAgICAvKioKQEAgLTY1OCw3
ICs2NjAsNyBAQCBwdWJsaWM6CiAgICAgICogQHNlZSB1Y29sX3NldFJlb3JkZXJDb2RlcwogICAg
ICAqIEBzZWUgQ29sbGF0b3IjZ2V0RXF1aXZhbGVudFJlb3JkZXJDb2RlcwogICAgICAqIEBzZWUg
Q29sbGF0b3Ijc2V0UmVvcmRlckNvZGVzCi0gICAgICogQHN0YWJsZSBJQ1UgNC44IAorICAgICAq
IEBzdGFibGUgSUNVIDQuOAogICAgICAqLwogICAgICB2aXJ0dWFsIGludDMyX3QgZ2V0UmVvcmRl
ckNvZGVzKGludDMyX3QgKmRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBkZXN0Q2FwYWNpdHksCkBAIC02NjYsMTQgKzY2OCwxNCBAQCBwdWJsaWM6CiAK
ICAgICAvKioKICAgICAgKiBTZXRzIHRoZSBvcmRlcmluZyBvZiBzY3JpcHRzIGZvciB0aGlzIGNv
bGxhdG9yLgotICAgICAqIEBwYXJhbSByZW9yZGVyQ29kZXMgQW4gYXJyYXkgb2Ygc2NyaXB0IGNv
ZGVzIGluIHRoZSBuZXcgb3JkZXIuIFRoaXMgY2FuIGJlIE5VTEwgaWYgdGhlIAorICAgICAqIEBw
YXJhbSByZW9yZGVyQ29kZXMgQW4gYXJyYXkgb2Ygc2NyaXB0IGNvZGVzIGluIHRoZSBuZXcgb3Jk
ZXIuIFRoaXMgY2FuIGJlIE5VTEwgaWYgdGhlCiAgICAgICogbGVuZ3RoIGlzIGFsc28gc2V0IHRv
IDAuIEFuIGVtcHR5IGFycmF5IHdpbGwgY2xlYXIgYW55IHJlb3JkZXJpbmcgY29kZXMgb24gdGhl
IGNvbGxhdG9yLgogICAgICAqIEBwYXJhbSByZW9yZGVyQ29kZXNMZW5ndGggVGhlIGxlbmd0aCBv
ZiByZW9yZGVyQ29kZXMuCiAgICAgICogQHBhcmFtIHN0YXR1cyBlcnJvciBjb2RlCiAgICAgICog
QHNlZSB1Y29sX3NldFJlb3JkZXJDb2RlcwogICAgICAqIEBzZWUgQ29sbGF0b3IjZ2V0UmVvcmRl
ckNvZGVzCiAgICAgICogQHNlZSBDb2xsYXRvciNnZXRFcXVpdmFsZW50UmVvcmRlckNvZGVzCi0g
ICAgICogQHN0YWJsZSBJQ1UgNC44IAorICAgICAqIEBzdGFibGUgSUNVIDQuOAogICAgICAqLwog
ICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVvcmRlckNvZGVzKGNvbnN0IGludDMyX3QqIHJlb3JkZXJD
b2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHJlb3JkZXJD
b2Rlc0xlbmd0aCwKQEAgLTY4OSwxOCArNjkxLDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFVF
cnJvckNvZGUgJmVycm9yQ29kZSkgY29uc3Q7CiAKICAgICAvKiogR2V0IHRoZSBzaG9ydCBkZWZp
bml0aW9uIHN0cmluZyBmb3IgYSBjb2xsYXRvci4gVGhpcyBpbnRlcm5hbCBBUEkgaGFydmVzdHMg
dGhlIGNvbGxhdG9yJ3MKLSAgICAgKiAgbG9jYWxlIGFuZCB0aGUgYXR0cmlidXRlIHNldCBhbmQg
cHJvZHVjZXMgYSBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBmb3Igb3BlbmluZyAKKyAgICAgKiAg
bG9jYWxlIGFuZCB0aGUgYXR0cmlidXRlIHNldCBhbmQgcHJvZHVjZXMgYSBzdHJpbmcgdGhhdCBj
YW4gYmUgdXNlZCBmb3Igb3BlbmluZwogICAgICAqICBhIGNvbGxhdG9yIHdpdGggdGhlIHNhbWUg
YXR0cmlidXRlcyB1c2luZyB0aGUgdWNvbF9vcGVuRnJvbVNob3J0U3RyaW5nIEFQSS4KICAgICAg
KiAgVGhpcyBzdHJpbmcgd2lsbCBiZSBub3JtYWxpemVkLgogICAgICAqICBUaGUgc3RydWN0dXJl
IGFuZCB0aGUgc3ludGF4IG9mIHRoZSBzdHJpbmcgaXMgZGVmaW5lZCBpbiB0aGUgIk5hbWluZyBj
b2xsYXRvcnMiCi0gICAgICogIHNlY3Rpb24gb2YgdGhlIHVzZXJzIGd1aWRlOiAKKyAgICAgKiAg
c2VjdGlvbiBvZiB0aGUgdXNlcnMgZ3VpZGU6CiAgICAgICogIGh0dHA6Ly91c2VyZ3VpZGUuaWN1
LXByb2plY3Qub3JnL2NvbGxhdGlvbi9jb25jZXB0cyNUT0MtQ29sbGF0b3ItbmFtaW5nLXNjaGVt
ZQogICAgICAqICBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHByZWZsaWdodGluZy4KLSAgICAgKiAK
KyAgICAgKgogICAgICAqICBUaGlzIGlzIGludGVybmFsLCBhbmQgaW50ZW5kZWQgdG8gYmUgdXNl
ZCB3aXRoIGRlbGVnYXRlIGNvbnZlcnRlcnMuCiAgICAgICoKICAgICAgKiAgQHBhcmFtIGxvY2Fs
ZSBhIGxvY2FsZSB0aGF0IHdpbGwgYXBwZWFyIGFzIGEgY29sbGF0b3JzIGxvY2FsZSBpbiB0aGUg
cmVzdWx0aW5nCi0gICAgICogICAgICAgICAgICAgICAgc2hvcnQgc3RyaW5nIGRlZmluaXRpb24u
IElmIE5VTEwsIHRoZSBsb2NhbGUgd2lsbCBiZSBoYXJ2ZXN0ZWQgCisgICAgICogICAgICAgICAg
ICAgICAgc2hvcnQgc3RyaW5nIGRlZmluaXRpb24uIElmIE5VTEwsIHRoZSBsb2NhbGUgd2lsbCBi
ZSBoYXJ2ZXN0ZWQKICAgICAgKiAgICAgICAgICAgICAgICBmcm9tIHRoZSBjb2xsYXRvci4KICAg
ICAgKiAgQHBhcmFtIGJ1ZmZlciBzcGFjZSB0byBob2xkIHRoZSByZXN1bHRpbmcgc3RyaW5nCiAg
ICAgICogIEBwYXJhbSBjYXBhY2l0eSBjYXBhY2l0eSBvZiB0aGUgYnVmZmVyCkBAIC03MjQsNiAr
NzI2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgVUNoYXJJdGVyYXRvciAqaXRlciwgdWludDMy
X3Qgc3RhdGVbMl0sCiAgICAgICAgICAgICB1aW50OF90ICpkZXN0LCBpbnQzMl90IGNvdW50LCBV
RXJyb3JDb2RlICZlcnJvckNvZGUpIGNvbnN0OwogCisgICAgLy8gRG8gbm90IGVuY2xvc2UgdGhl
IGRlZmF1bHQgY29uc3RydWN0b3Igd2l0aCAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKICAg
ICAvKioKICAgICAgKiBPbmx5IGZvciB1c2UgaW4gdWNvbF9vcGVuUnVsZXMoKS4KICAgICAgKiBA
aW50ZXJuYWwKQEAgLTgxOCwxNyArODIxLDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZG9wdFRh
aWxvcmluZyhDb2xsYXRpb25UYWlsb3JpbmcgKnQsIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CiAK
ICAgICAvLyBCb3RoIGxlbmd0aHMgbXVzdCBiZSA8MCBvciBlbHNlIGJvdGggbXVzdCBiZSA+PTAu
Ci0gICAgVUNvbGxhdGlvblJlc3VsdCBkb0NvbXBhcmUoY29uc3QgVUNoYXIgKmxlZnQsIGludDMy
X3QgbGVmdExlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hh
ciAqcmlnaHQsIGludDMyX3QgcmlnaHRMZW5ndGgsCisgICAgVUNvbGxhdGlvblJlc3VsdCBkb0Nv
bXBhcmUoY29uc3QgY2hhcjE2X3QgKmxlZnQsIGludDMyX3QgbGVmdExlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyMTZfdCAqcmlnaHQsIGludDMyX3Qgcmln
aHRMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmZXJy
b3JDb2RlKSBjb25zdDsKICAgICBVQ29sbGF0aW9uUmVzdWx0IGRvQ29tcGFyZShjb25zdCB1aW50
OF90ICpsZWZ0LCBpbnQzMl90IGxlZnRMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqcmlnaHQsIGludDMyX3QgcmlnaHRMZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25zdDsKIAot
ICAgIHZvaWQgd3JpdGVTb3J0S2V5KGNvbnN0IFVDaGFyICpzLCBpbnQzMl90IGxlbmd0aCwKKyAg
ICB2b2lkIHdyaXRlU29ydEtleShjb25zdCBjaGFyMTZfdCAqcywgaW50MzJfdCBsZW5ndGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgU29ydEtleUJ5dGVTaW5rICZzaW5rLCBVRXJyb3JDb2RlICZl
cnJvckNvZGUpIGNvbnN0OwogCi0gICAgdm9pZCB3cml0ZUlkZW50aWNhbExldmVsKGNvbnN0IFVD
aGFyICpzLCBjb25zdCBVQ2hhciAqbGltaXQsCisgICAgdm9pZCB3cml0ZUlkZW50aWNhbExldmVs
KGNvbnN0IGNoYXIxNl90ICpzLCBjb25zdCBjaGFyMTZfdCAqbGltaXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNvcnRLZXlCeXRlU2luayAmc2luaywgVUVycm9yQ29kZSAmZXJyb3JD
b2RlKSBjb25zdDsKIAogICAgIGNvbnN0IENvbGxhdGlvblNldHRpbmdzICZnZXREZWZhdWx0U2V0
dGluZ3MoKSBjb25zdDsKQEAgLTg1Myw3ICs4NTYsNyBAQCBwcml2YXRlOgogICAgICAqLwogICAg
IFVCb29sIGlzVW5zYWZlKFVDaGFyMzIgYykgY29uc3Q7CiAKLSAgICBzdGF0aWMgdm9pZCBjb21w
dXRlTWF4RXhwYW5zaW9ucyhjb25zdCBDb2xsYXRpb25UYWlsb3JpbmcgKnQsIFVFcnJvckNvZGUg
JmVycm9yQ29kZSk7CisgICAgc3RhdGljIHZvaWQgVV9DQUxMQ09OViBjb21wdXRlTWF4RXhwYW5z
aW9ucyhjb25zdCBDb2xsYXRpb25UYWlsb3JpbmcgKnQsIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7
CiAgICAgVUJvb2wgaW5pdE1heEV4cGFuc2lvbnMoVUVycm9yQ29kZSAmZXJyb3JDb2RlKSBjb25z
dDsKIAogICAgIHZvaWQgc2V0RmFzdExhdGluT3B0aW9ucyhDb2xsYXRpb25TZXR0aW5ncyAmb3du
ZWRTZXR0aW5ncykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Rp
bWV6b25lLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3RpbWV6b25lLmgKaW5kZXggYzMzNTZj
OTczOGEyNjMwMzUyNWViNGI0YjQ1Yzc2ZjkyNzQxNTI2Ni4uODNkZWUzMTc3ODRhODE5OTYyZDQx
MThmNmJmMzlmYWZkZWUyODA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS90
aW1lem9uZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdGltZXpvbmUuaApAQCAtMSw1
ICsxLDcgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMu
CisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHly
aWdodC5odG1sCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBDb3B5cmlnaHQgKGMpIDE5OTctMjAxNSwg
SW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbgorKiBDb3B5cmlnaHQg
KGMpIDE5OTctMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlv
bgogKiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
ICoKQEAgLTY2LDggKzY4LDggQEAgY2xhc3MgU3RyaW5nRW51bWVyYXRpb247CiAgKiBUaW1lWm9u
ZSAqdHogPSBUaW1lWm9uZTo6Y3JlYXRlVGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiKTsK
ICAqIDwvcHJlPgogICogXGh0bWxvbmx5PC9ibG9ja3F1b3RlPlxlbmRodG1sb25seQotICogWW91
IGNhbiB1c2UgPGNvZGU+Z2V0QXZhaWxhYmxlSURzPC9jb2RlPiBtZXRob2QgdG8gaXRlcmF0ZSB0
aHJvdWdoCi0gKiBhbGwgdGhlIHN1cHBvcnRlZCB0aW1lIHpvbmUgSURzLCBvciBnZXRDYW5vbmlj
YWxJRCBtZXRob2QgdG8gY2hlY2sKKyAqIFlvdSBjYW4gdXNlIHRoZSA8Y29kZT5jcmVhdGVFbnVt
ZXJhdGlvbjwvY29kZT4gbWV0aG9kIHRvIGl0ZXJhdGUgdGhyb3VnaAorICogYWxsIHRoZSBzdXBw
b3J0ZWQgdGltZSB6b25lIElEcywgb3IgdGhlIDxjb2RlPmdldENhbm9uaWNhbElEPC9jb2RlPiBt
ZXRob2QgdG8gY2hlY2sKICAqIGlmIGEgdGltZSB6b25lIElEIGlzIHN1cHBvcnRlZCBvciBub3Qu
ICBZb3UgY2FuIHRoZW4gY2hvb3NlIGEKICAqIHN1cHBvcnRlZCBJRCB0byBnZXQgYSA8Y29kZT5U
aW1lWm9uZTwvY29kZT4uCiAgKiBJZiB0aGUgdGltZSB6b25lIHlvdSB3YW50IGlzIG5vdCByZXBy
ZXNlbnRlZCBieSBvbmUgb2YgdGhlCkBAIC0yNzMsNyArMjc1LDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBVbmljb2RlU3RyaW5nIFVfRVhQT1JUMiBnZXRFcXVpdmFsZW50SUQoY29uc3Qg
VW5pY29kZVN0cmluZyYgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgaW5kZXgpOwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKICAg
ICAvKioKICAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFRpbWVab25lIGRldGVjdGVkIGZy
b20gdGhlIGN1cnJlbnQgaG9zdAogICAgICAqIHN5c3RlbSBjb25maWd1cmF0aW9uLiBOb3RlIHRo
YXQgSUNVNEMgZG9lcyBub3QgY2hhbmdlIHRoZSBkZWZhdWx0CkBAIC0yODUsMTAgKzI4Niw5IEBA
IHB1YmxpYzoKICAgICAgKgogICAgICAqIEByZXR1cm4gIEEgbmV3IGluc3RhbmNlIG9mIFRpbWVa
b25lIGRldGVjdGVkIGZyb20gdGhlIGN1cnJlbnQgaG9zdCBzeXN0ZW0KICAgICAgKiAgICAgICAg
ICBjb25maWd1cmF0aW9uLgotICAgICAqIEBkcmFmdCBJQ1UgNTUKKyAgICAgKiBAc3RhYmxlIElD
VSA1NQogICAgICAqLwogICAgIHN0YXRpYyBUaW1lWm9uZSogVV9FWFBPUlQyIGRldGVjdEhvc3RU
aW1lWm9uZSgpOwotI2VuZGlmCiAKICAgICAvKioKICAgICAgKiBDcmVhdGVzIGEgbmV3IGNvcHkg
b2YgdGhlIGRlZmF1bHQgVGltZVpvbmUgZm9yIHRoaXMgaG9zdC4gVW5sZXNzIHRoZSBkZWZhdWx0
IHRpbWUKQEAgLTg2Myw3ICs4NjMsNyBAQCBwcml2YXRlOgogICAgICAqIEBwYXJhbSBpZCB6b25l
IGlkIHN0cmluZwogICAgICAqIEByZXR1cm4gdGhlIHBvaW50ZXIgb2YgdGhlIElEIHJlc291cmNl
LCBvciBOVUxMLgogICAgICAqLwotICAgIHN0YXRpYyBjb25zdCBVQ2hhciogZmluZElEKGNvbnN0
IFVuaWNvZGVTdHJpbmcmIGlkKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhcjE2X3QqIGZpbmRJRChj
b25zdCBVbmljb2RlU3RyaW5nJiBpZCk7CiAKICAgICAvKioKICAgICAgKiBSZXNvbHZlIGEgbGlu
ayBpbiBPbHNvbiB0emRhdGEuICBXaGVuIHRoZSBnaXZlbiBpZCBpcyBrbm93biBhbmQgaXQncyBu
b3QgYSBsaW5rLApAQCAtODczLDcgKzg3Myw3IEBAIHByaXZhdGU6CiAgICAgICogQHBhcmFtIGlk
IHpvbmUgaWQgc3RyaW5nCiAgICAgICogQHJldHVybiB0aGUgZGVyZWZlcmVuY2VkIHpvbmUgb3Ig
TlVMTAogICAgICAqLwotICAgIHN0YXRpYyBjb25zdCBVQ2hhciogZGVyZWZlck9sc29uTGluayhj
b25zdCBVbmljb2RlU3RyaW5nJiBpZCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIxNl90KiBkZXJl
ZmVyT2xzb25MaW5rKGNvbnN0IFVuaWNvZGVTdHJpbmcmIGlkKTsKIAogICAgIC8qKgogICAgICAq
IFJldHVybnMgdGhlIHJlZ2lvbiBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gem9uZSwK
QEAgLTg4MSw3ICs4ODEsNyBAQCBwcml2YXRlOgogICAgICAqIEBwYXJhbSBpZCB6b25lIGlkIHN0
cmluZwogICAgICAqIEByZXR1cm4gdGhlIHJlZ2lvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVu
IHpvbmUKICAgICAgKi8KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIqIGdldFJlZ2lvbihjb25zdCBV
bmljb2RlU3RyaW5nJiBpZCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIxNl90KiBnZXRSZWdpb24o
Y29uc3QgVW5pY29kZVN0cmluZyYgaWQpOwogCiAgIHB1YmxpYzoKICNpZm5kZWYgVV9ISURFX0lO
VEVSTkFMX0FQSQpAQCAtODkzLDcgKzg5Myw3IEBAIHByaXZhdGU6CiAgICAgICogQHJldHVybiB0
aGUgcmVnaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gem9uZQogICAgICAqIEBpbnRlcm5h
bAogICAgICAqLwotICAgIHN0YXRpYyBjb25zdCBVQ2hhciogZ2V0UmVnaW9uKGNvbnN0IFVuaWNv
ZGVTdHJpbmcmIGlkLCBVRXJyb3JDb2RlJiBzdGF0dXMpOworICAgIHN0YXRpYyBjb25zdCBjaGFy
MTZfdCogZ2V0UmVnaW9uKGNvbnN0IFVuaWNvZGVTdHJpbmcmIGlkLCBVRXJyb3JDb2RlJiBzdGF0
dXMpOwogI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCiAKICAgcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdG11bml0LmggYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3RtdW5pdC5oCmluZGV4IGU0MTdmMzUyMmJjZWIzYzVjZWU2YWMzYTQxYzI0ZmU2
YjZhYWJjMDcuLmZhNTlmMTA0NzM0YmFhMzNmNjI5OWFhN2Y3NjJkM2Y5OTAzMjZiMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdG11bml0LmgKKysrIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS90bXVuaXQuaApAQCAtMSw3ICsxLDkgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVy
OiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBo
dHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE0LCBHb29nbGUsIEludGVybmF0aW9u
YWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICoKLSAqIG90aGVycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVz
cyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiwgICAgICAgKgorICogR29vZ2xlLCBhbmQgb3RoZXJzLiBB
bGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoK
ICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAgKi8KIApAQCAtNDEsMTggKzQzLDI0IEBAIHB1Ymxp
YzoKICAgICAgICAgVVRJTUVVTklUX0hPVVIsCiAgICAgICAgIFVUSU1FVU5JVF9NSU5VVEUsCiAg
ICAgICAgIFVUSU1FVU5JVF9TRUNPTkQsCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQor
ICAgICAgICAvKioKKyAgICAgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwg
VVRpbWVVbml0RmllbGRzIHZhbHVlLgorICAgICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhl
IG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQy
MC4KKyAgICAgICAgICovCiAgICAgICAgIFVUSU1FVU5JVF9GSUVMRF9DT1VOVAorI2VuZGlmICAv
LyBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgICB9OwogCiAgICAgLyoqCiAgICAgICogQ3JlYXRl
IEluc3RhbmNlLgotICAgICAqIEBwYXJhbSB0aW1lVW5pdEZpZWxkICB0aW1lIHVuaXQgZmllbGQg
YmFzZWQgb24gd2hpY2ggdGhlIGluc3RhbmNlIAorICAgICAqIEBwYXJhbSB0aW1lVW5pdEZpZWxk
ICB0aW1lIHVuaXQgZmllbGQgYmFzZWQgb24gd2hpY2ggdGhlIGluc3RhbmNlCiAgICAgICogICAg
ICAgICAgICAgICAgICAgICAgIGlzIGNyZWF0ZWQuCi0gICAgICogQHBhcmFtIHN0YXR1cyAgICAg
ICAgIGlucHV0LW91dHB1dCBlcnJvciBjb2RlLiAKKyAgICAgKiBAcGFyYW0gc3RhdHVzICAgICAg
ICAgaW5wdXQtb3V0cHV0IGVycm9yIGNvZGUuCiAgICAgICogICAgICAgICAgICAgICAgICAgICAg
IElmIHRoZSB0aW1lVW5pdEZpZWxkIGlzIGludmFsaWQsCiAgICAgICogICAgICAgICAgICAgICAg
ICAgICAgIHRoZW4gdGhpcyB3aWxsIGJlIHNldCB0byBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1Iu
CiAgICAgICogQHJldHVybiAgICAgICAgICAgICAgIGEgVGltZVVuaXQgaW5zdGFuY2UKLSAgICAg
KiBAc3RhYmxlIElDVSA0LjIgCisgICAgICogQHN0YWJsZSBJQ1UgNC4yCiAgICAgICovCiAgICAg
c3RhdGljIFRpbWVVbml0KiBVX0VYUE9SVDIgY3JlYXRlSW5zdGFuY2UoVVRpbWVVbml0RmllbGRz
IHRpbWVVbml0RmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVUVycm9yQ29kZSYgc3RhdHVzKTsKQEAgLTYwLDE5ICs2OCwxOSBAQCBwdWJsaWM6CiAK
ICAgICAvKioKICAgICAgKiBPdmVycmlkZSBjbG9uZS4KLSAgICAgKiBAc3RhYmxlIElDVSA0LjIg
CisgICAgICogQHN0YWJsZSBJQ1UgNC4yCiAgICAgICovCiAgICAgdmlydHVhbCBVT2JqZWN0KiBj
bG9uZSgpIGNvbnN0OwogCiAgICAgLyoqCiAgICAgICogQ29weSBvcGVyYXRvci4KLSAgICAgKiBA
c3RhYmxlIElDVSA0LjIgCisgICAgICogQHN0YWJsZSBJQ1UgNC4yCiAgICAgICovCiAgICAgVGlt
ZVVuaXQoY29uc3QgVGltZVVuaXQmIG90aGVyKTsKIAogICAgIC8qKgogICAgICAqIEFzc2lnbm1l
bnQgb3BlcmF0b3IuCi0gICAgICogQHN0YWJsZSBJQ1UgNC4yIAorICAgICAqIEBzdGFibGUgSUNV
IDQuMgogICAgICAqLwogICAgIFRpbWVVbml0JiBvcGVyYXRvcj0oY29uc3QgVGltZVVuaXQmIG90
aGVyKTsKIApAQCAtODIsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgICogQHJldHVybiBUaGUgY2xh
c3MgSUQgZm9yIHRoaXMgb2JqZWN0LiBBbGwgb2JqZWN0cyBvZiBhIGdpdmVuCiAgICAgICogY2xh
c3MgaGF2ZSB0aGUgc2FtZSBjbGFzcyBJRC4gIE9iamVjdHMgb2Ygb3RoZXIgY2xhc3NlcyBoYXZl
CiAgICAgICogZGlmZmVyZW50IGNsYXNzIElEcy4KLSAgICAgKiBAc3RhYmxlIElDVSA0LjIgCisg
ICAgICogQHN0YWJsZSBJQ1UgNC4yCiAgICAgICovCiAgICAgdmlydHVhbCBVQ2xhc3NJRCBnZXRE
eW5hbWljQ2xhc3NJRCgpIGNvbnN0OwogCkBAIC05MCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICAg
KiBSZXR1cm5zIHRoZSBjbGFzcyBJRCBmb3IgdGhpcyBjbGFzcy4gVGhpcyBpcyB1c2VkIHRvIGNv
bXBhcmUgdG8KICAgICAgKiB0aGUgcmV0dXJuIHZhbHVlIG9mIGdldER5bmFtaWNDbGFzc0lEKCku
CiAgICAgICogQHJldHVybiBUaGUgY2xhc3MgSUQgZm9yIGFsbCBvYmplY3RzIG9mIHRoaXMgY2xh
c3MuCi0gICAgICogQHN0YWJsZSBJQ1UgNC4yIAorICAgICAqIEBzdGFibGUgSUNVIDQuMgogICAg
ICAqLwogICAgIHN0YXRpYyBVQ2xhc3NJRCBVX0VYUE9SVDIgZ2V0U3RhdGljQ2xhc3NJRCgpOwog
CkBAIC05OCwxMyArMTA2LDEzIEBAIHB1YmxpYzoKICAgICAvKioKICAgICAgKiBHZXQgdGltZSB1
bml0IGZpZWxkLgogICAgICAqIEByZXR1cm4gdGltZSB1bml0IGZpZWxkLgotICAgICAqIEBzdGFi
bGUgSUNVIDQuMiAKKyAgICAgKiBAc3RhYmxlIElDVSA0LjIKICAgICAgKi8KICAgICBVVGltZVVu
aXRGaWVsZHMgZ2V0VGltZVVuaXRGaWVsZCgpIGNvbnN0OwogCiAgICAgLyoqCiAgICAgICogRGVz
dHJ1Y3Rvci4KLSAgICAgKiBAc3RhYmxlIElDVSA0LjIgCisgICAgICogQHN0YWJsZSBJQ1UgNC4y
CiAgICAgICovCiAgICAgdmlydHVhbCB+VGltZVVuaXQoKTsKIApAQCAtMTEzLDcgKzEyMSw3IEBA
IHByaXZhdGU6CiAKICAgICAvKioKICAgICAgKiBDb25zdHJ1Y3RvcgotICAgICAqIEBpbnRlcm5h
bCBJQ1UgNC4yIAorICAgICAqIEBpbnRlcm5hbCAocHJpdmF0ZSkKICAgICAgKi8KICAgICBUaW1l
VW5pdChVVGltZVVuaXRGaWVsZHMgdGltZVVuaXRGaWVsZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdG11dGFtdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS90bXV0
YW10LmgKaW5kZXggYmQyYjhhNGE5ZTIxMjg1YzE3YmI4ZWNiYjk2MjgwNjU4NzFlNmZlZS4uMjc0
YmZhNmYyM2ZiMGQ5OWNjMjE5NDM4MWRmMGEzZmQ2ZjdmNTMzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS90bXV0YW10LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS90
bXV0YW10LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwg
SW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51
bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCwgR29vZ2xlLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNz
IE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3RtdXRmbXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdG11dGZtdC5oCmluZGV4
IDcyOGZmMTMyMTlhMDEyZDFjODg2ZWU5OGJiOGQ4ZWExODNjYmQxOGIuLjhmMjQ1ODU5YTYyMmJh
ZmJmYzM0NWI1YzZiOWNlZWNhZTcwZjgxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdG11dGZtdC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdG11dGZtdC5oCkBA
IC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTQsIEdvb2dsZSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBD
b3Jwb3JhdGlvbgpAQCAtNTAsNiArNTIsOCBAQCBVX05BTUVTUEFDRV9CRUdJTgogY2xhc3MgSGFz
aHRhYmxlOwogY2xhc3MgVVZlY3RvcjsKIAorc3RydWN0IFRpbWVVbml0Rm9ybWF0UmVhZFNpbms7
CisKIC8qKgogICogRm9ybWF0IG9yIHBhcnNlIGEgVGltZVVuaXRBbW91bnQsIHVzaW5nIHBsdXJh
bCBydWxlcyBmb3IgdGhlIHVuaXRzIHdoZXJlIGF2YWlsYWJsZS4KICAqCkBAIC0yMjcsNiArMjMx
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBVVElNRVVOSVRfWUVBUi4KICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZ2V0VGltZVVuaXROYW1lKFRpbWVVbml0OjpVVGltZVVuaXRGaWVsZHMgZmllbGQsIFVF
cnJvckNvZGUmIHN0YXR1cyk7CiAKKyAgICBmcmllbmQgc3RydWN0IFRpbWVVbml0Rm9ybWF0UmVh
ZFNpbms7CiB9OwogCiBpbmxpbmUgVUJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdHJhbnNsaXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdHJhbnNsaXQuaAppbmRl
eCAyMmUxZTI0ZTUwMGQ5ZjIwOWNiYzU4YWNjYTk1MzQzMzBiNjBmZDQxLi5iY2NiYTU0ODAyNDI0
NjdlNjNhODJkYzcwNGQxYmM5MjQ3ZjA3NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3RyYW5zbGl0LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS90cmFuc2xpdC5o
CkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5k
IG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMTk5
OS0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCkBAIC0xMzE3LDcgKzEzMTks
NyBAQCBpbmxpbmUgaW50MzJfdCBUcmFuc2xpdGVyYXRvcjo6Z2V0TWF4aW11bUNvbnRleHRMZW5n
dGgodm9pZCkgY29uc3QgewogaW5saW5lIHZvaWQgVHJhbnNsaXRlcmF0b3I6OnNldElEKGNvbnN0
IFVuaWNvZGVTdHJpbmcmIGlkKSB7CiAgICAgSUQgPSBpZDsKICAgICAvLyBOVUwtdGVybWluYXRl
IHRoZSBJRCBzdHJpbmcsIHdoaWNoIGlzIGEgbm9uLWFsaWFzZWQgY29weS4KLSAgICBJRC5hcHBl
bmQoKFVDaGFyKTApOworICAgIElELmFwcGVuZCgoY2hhcjE2X3QpMCk7CiAgICAgSUQudHJ1bmNh
dGUoSUQubGVuZ3RoKCktMSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvdHpmbXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdHpmbXQuaAppbmRleCAyNGYwZTQ5
ZWI3OTI1MWU0ZGFhMzRjYzJlNGEzYTcyYjM0ZDA0ZjFjLi43MjRmZjRkODViYjI2NTc5NjYxMWVl
ZGE0ZDJjYTY4NTU4ZjJkNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3R6
Zm10LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS90emZtdC5oCkBAIC0xLDYgKzEsOCBA
QAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExp
Y2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0
bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qIENvcHlyaWdodCAoQykgMjAxMS0yMDE0
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jw
b3JhdGlvbiBhbmQKICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgogKi8KQEAgLTIzMywxOCArMjM1LDE1IEBAIHR5cGVkZWYgZW51bSBVVGltZVpv
bmVGb3JtYXRQYXJzZU9wdGlvbiB7CiAgICAgICogYnkgb3RoZXIgc3R5bGVzLgogICAgICAqIEBz
dGFibGUgSUNVIDUwCiAgICAgICovCi0gICAgVVRaRk1UX1BBUlNFX09QVElPTl9BTExfU1RZTEVT
ICA9IDB4MDEKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQotICAgICwKKyAgICBVVFpGTVRfUEFS
U0VfT1BUSU9OX0FMTF9TVFlMRVMgID0gMHgwMSwKICAgICAgLyoqCiAgICAgICAqIFdoZW4gcGFy
c2luZyBhIHRpbWUgem9uZSBkaXNwbGF5IG5hbWUgaW4gVVRaRk1UX1NUWUxFX1NQRUNJRklDX1NI
T1JULAogICAgICAgKiBsb29rIGZvciB0aGUgSUFOQSB0eiBkYXRhYmFzZSBjb21wYXRpYmxlIHpv
bmUgYWJicmV2aWF0aW9ucyBpbiBhZGRpdGlvbgogICAgICAgKiB0byB0aGUgbG9jYWxpemVkIG5h
bWVzIGNvbWluZyBmcm9tIHRoZSB7QGxpbmsgVGltZVpvbmVOYW1lc30gY3VycmVudGx5CiAgICAg
ICAqIHVzZWQgYnkgdGhlIHtAbGluayBUaW1lWm9uZUZvcm1hdH0uIAotICAgICAgKiBAZHJhZnQg
SUNVIDU0CisgICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICAqLwogICAgIFVUWkZNVF9QQVJT
RV9PUFRJT05fVFpfREFUQUJBU0VfQUJCUkVWSUFUSU9OUyA9IDB4MDIKLSNlbmRpZiAgLyogVV9I
SURFX0RSQUZUX0FQSSAqLwogfSBVVGltZVpvbmVGb3JtYXRQYXJzZU9wdGlvbjsKIAogVV9DREVD
TF9FTkQKQEAgLTk0Myw3ICs5NDIsNyBAQCBwcml2YXRlOgogICAgICAqIEBwYXJhbSBwYXJzZWRM
ZW4gdGhlIHBhcnNlZCBsZW5ndGgsIG9yIDAgb24gZmFpbHVyZS4KICAgICAgKiBAcmV0dXJuIHRo
ZSBwYXJzZWQgb2Zmc2V0IGluIG1pbGxpc2Vjb25kcy4KICAgICAgKi8KLSAgICBpbnQzMl90IHBh
cnNlRGVmYXVsdE9mZnNldEZpZWxkcyhjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LCBpbnQzMl90
IHN0YXJ0LCBVQ2hhciBzZXBhcmF0b3IsCisgICAgaW50MzJfdCBwYXJzZURlZmF1bHRPZmZzZXRG
aWVsZHMoY29uc3QgVW5pY29kZVN0cmluZyYgdGV4dCwgaW50MzJfdCBzdGFydCwgY2hhcjE2X3Qg
c2VwYXJhdG9yLAogICAgICAgICBpbnQzMl90JiBwYXJzZWRMZW4pIGNvbnN0OwogCiAgICAgLyoq
CkBAIC05ODMsNyArOTgyLDcgQEAgcHJpdmF0ZToKICAgICAgKiBAcGFyYW0gbWF4RmllbGRzIFRo
ZSBtYXhpbXVtIGZpZWxkcwogICAgICAqIEByZXR1cm4gVGhlIG9mZnNldCBzdHJpbmcKICAgICAg
Ki8KLSAgICBzdGF0aWMgVW5pY29kZVN0cmluZyYgZm9ybWF0T2Zmc2V0V2l0aEFzY2lpRGlnaXRz
KGludDMyX3Qgb2Zmc2V0LCBVQ2hhciBzZXAsCisgICAgc3RhdGljIFVuaWNvZGVTdHJpbmcmIGZv
cm1hdE9mZnNldFdpdGhBc2NpaURpZ2l0cyhpbnQzMl90IG9mZnNldCwgY2hhcjE2X3Qgc2VwLAog
ICAgICAgICBPZmZzZXRGaWVsZHMgbWluRmllbGRzLCBPZmZzZXRGaWVsZHMgbWF4RmllbGRzLCBV
bmljb2RlU3RyaW5nJiByZXN1bHQpOwogCiAgICAgLyoqCkBAIC0xMDEzLDcgKzEwMTIsNyBAQCBw
cml2YXRlOgogICAgICAqIEBwYXJhbSBtYXhGaWVsZHMgVGhlIG1heGltdW0gRmllbGRzIHRvIGJl
IHBhcnNlZAogICAgICAqIEByZXR1cm4gUGFyc2VkIG9mZnNldCwgMCBvciBwb3NpdGl2ZSBudW1i
ZXIuCiAgICAgICovCi0gICAgc3RhdGljIGludDMyX3QgcGFyc2VBc2NpaU9mZnNldEZpZWxkcyhj
b25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LCBQYXJzZVBvc2l0aW9uJiBwb3MsIFVDaGFyIHNlcCwK
KyAgICBzdGF0aWMgaW50MzJfdCBwYXJzZUFzY2lpT2Zmc2V0RmllbGRzKGNvbnN0IFVuaWNvZGVT
dHJpbmcmIHRleHQsIFBhcnNlUG9zaXRpb24mIHBvcywgY2hhcjE2X3Qgc2VwLAogICAgICAgICBP
ZmZzZXRGaWVsZHMgbWluRmllbGRzLCBPZmZzZXRGaWVsZHMgbWF4RmllbGRzKTsKIAogICAgIC8q
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS90em5hbWVzLmggYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL3R6bmFtZXMuaAppbmRleCA5NTgzZGVkMDIyZjJlYjJiODEwNGIxMjU1
YTAyZDE2NTdlN2U3ODEyLi4zOTkyNjVkODVhZTY2Y2I4Yjg0ODliNThjNWEzNTVlMDNmNDQ2NmMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3R6bmFtZXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3R6bmFtZXMuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgotKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCiAq
IG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICov
CkBAIC0xMzMsNyArMTM1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRpbWVab25lTmFtZXMo
KTsKIAogICAgIC8qKgotICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBUaW1lWm9uZU5h
bWVzIG9iamVjdHMgYXJlIGVtYW50aWNhbGx5IGVxdWFsLgorICAgICAqIFJldHVybiB0cnVlIGlm
IHRoZSBnaXZlbiBUaW1lWm9uZU5hbWVzIG9iamVjdHMgYXJlIHNlbWFudGljYWxseSBlcXVhbC4K
ICAgICAgKiBAcGFyYW0gb3RoZXIgdGhlIG9iamVjdCB0byBiZSBjb21wYXJlZCB3aXRoLgogICAg
ICAqIEByZXR1cm4gUmV0dXJuIFRSVUUgaWYgdGhlIGdpdmVuIEZvcm1hdCBvYmplY3RzIGFyZSBz
ZW1hbnRpY2FsbHkgZXF1YWwuCiAgICAgICogQHN0YWJsZSBJQ1UgNTAKQEAgLTE2Nyw3ICsxNjks
NiBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIFRpbWVab25lTmFtZXMqIFVfRVhQT1JU
MiBjcmVhdGVJbnN0YW5jZShjb25zdCBMb2NhbGUmIGxvY2FsZSwgVUVycm9yQ29kZSYgc3RhdHVz
KTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogUmV0dXJucyBh
biBpbnN0YW5jZSBvZiA8Y29kZT5UaW1lWm9uZU5hbWVzPC9jb2RlPiBjb250YWluaW5nIG9ubHkg
c2hvcnQgc3BlY2lmaWMKICAgICAgKiB6b25lIG5hbWVzIChTSE9SVF9TVEFOREFSRCBhbmQgU0hP
UlRfREFZTElHSFQpLApAQCAtMTc2LDEwICsxNzcsOSBAQCBwdWJsaWM6CiAgICAgICogTm90ZTog
VGhlIGlucHV0IGxvY2FsZSBpcyB1c2VkIGZvciByZXNvbHZpbmcgYW1iaWd1b3VzIG5hbWVzIChl
LmcuICJJU1QiIGlzIHBhcnNlZAogICAgICAqIGFzIElzcmFlbCBTdGFuZGFyZCBUaW1lIGZvciBJ
c3JhZWwsIHdoaWxlIGl0IGlzIHBhcnNlZCBhcyBJbmRpYSBTdGFuZGFyZCBUaW1lIGZvcgogICAg
ICAqIGFsbCBvdGhlciByZWdpb25zKS4gVGhlIHpvbmUgbmFtZXMgcmV0dXJuZWQgYnkgdGhpcyBp
bnN0YW5jZSBhcmUgbm90IGxvY2FsaXplZC4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICog
QHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICAgc3RhdGljIFRpbWVab25lTmFtZXMqIFVfRVhQ
T1JUMiBjcmVhdGVUWkRCSW5zdGFuY2UoY29uc3QgTG9jYWxlJiBsb2NhbGUsIFVFcnJvckNvZGUm
IHN0YXR1cyk7Ci0jZW5kaWYgLyogVV9ISURFX0RSQUZUX0FQSSAqLwogCiAgICAgLyoqCiAgICAg
ICogUmV0dXJucyBhbiBlbnVtZXJhdGlvbiBvZiBhbGwgYXZhaWxhYmxlIG1ldGEgem9uZSBJRHMu
CkBAIC0yOTAsNiArMjkwLDE2IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICB2aXJ0dWFsIFVuaWNv
ZGVTdHJpbmcmIGdldERpc3BsYXlOYW1lKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHR6SUQsIFVUaW1l
Wm9uZU5hbWVUeXBlIHR5cGUsIFVEYXRlIGRhdGUsIFVuaWNvZGVTdHJpbmcmIG5hbWUpIGNvbnN0
OwogCisgICAgLyoqCisgICAgICogQGludGVybmFsIElDVSBpbnRlcm5hbCBvbmx5LCBmb3Igc3Bl
Y2lmaWMgdXNlcnMgb25seSB1bnRpbCBwcm9wb3NlZCBwdWJsaWNseS4KKyAgICAgKi8KKyAgICB2
aXJ0dWFsIHZvaWQgbG9hZEFsbERpc3BsYXlOYW1lcyhVRXJyb3JDb2RlJiBzdGF0dXMpOworCisg
ICAgLyoqCisgICAgICogQGludGVybmFsIElDVSBpbnRlcm5hbCBvbmx5LCBmb3Igc3BlY2lmaWMg
dXNlcnMgb25seSB1bnRpbCBwcm9wb3NlZCBwdWJsaWNseS4KKyAgICAgKi8KKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0RGlzcGxheU5hbWVzKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHR6SUQsIGNvbnN0IFVU
aW1lWm9uZU5hbWVUeXBlIHR5cGVzW10sIGludDMyX3QgbnVtVHlwZXMsIFVEYXRlIGRhdGUsIFVu
aWNvZGVTdHJpbmcgZGVzdFtdLCBVRXJyb3JDb2RlJiBzdGF0dXMpIGNvbnN0OworCiAgICAgLyoq
CiAgICAgICogPGNvZGU+TWF0Y2hJbmZvQ29sbGVjdGlvbjwvY29kZT4gcmVwcmVzZW50cyBhIGNv
bGxlY3Rpb24gb2YgdGltZSB6b25lIG5hbWUgbWF0Y2hlcyB1c2VkIGJ5CiAgICAgICoge0BsaW5r
IFRpbWVab25lTmFtZXMjZmluZH0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3R6cnVsZS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS90enJ1bGUuaAppbmRleCBhZmE0MDE0
OGQ0MmQ4MmVhNDg0MTU5NzE2ZWMwYjQ5NDNlZTU3ZjcxLi4xNjQ3ZmRhNzAzZWU2ODdlNDMzZTA3
NzNlNjhmMDQ3ZjU0Y2UyMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3R6
cnVsZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdHpydWxlLmgKQEAgLTEsMyArMSw1
IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8g
TGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQu
aHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MDgsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdHp0cmFucy5oIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS90enRyYW5zLmgKaW5kZXggOTRiOGU5MTI2N2E1YzZhOWU5MWZlZGY5OWIx
N2M3MmE4NTVjZDNmYi4uYTQ3NmM2OGM4Zjc1MWZjNzRiNzQwM2NmMDQ2YzZkMmRlOTliNWJmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS90enRyYW5zLmgKKysrIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS90enRyYW5zLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFu
ZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9m
IHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIEludGVybmF0aW9uYWwg
QnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS91YmlkaS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91
YmlkaS5oCmluZGV4IDI3MDQyZWQ3ZjRiOTRlMjA3OGQxNzU0NzRiM2JlMmE5ZGFmM2Y5MTEuLmVm
MjFmMjQyMDY2NmNkNGRiNDdjZDFlYmM1MTYyZGY2ZWJhMTFkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdWJpZGkuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vi
aWRpLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5j
LiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAt
Niw3ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIHVi
aWRpLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAq
ICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpAQCAtNzE4
LDkgKzcyMCwxMyBAQCB0eXBlZGVmIGVudW0gVUJpRGlSZW9yZGVyaW5nTW9kZSB7CiAgICAgICAq
IDxjb2RlPlVCSURJX1JFT1JERVJfTlVNQkVSU19TUEVDSUFMPC9jb2RlPiBCaWRpIGFsZ29yaXRo
bS4KICAgICAgICogQHN0YWJsZSBJQ1UgMy42ICovCiAgICAgVUJJRElfUkVPUkRFUl9JTlZFUlNF
X0ZPUl9OVU1CRVJTX1NQRUNJQUwsCi0gICAgLyoqIE51bWJlciBvZiB2YWx1ZXMgZm9yIHJlb3Jk
ZXJpbmcgbW9kZS4KLSAgICAgICogQHN0YWJsZSBJQ1UgMy42ICovCisjaWZuZGVmIFVfSElERV9E
RVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE51bWJlciBvZiB2YWx1ZXMgZm9yIHJlb3Jk
ZXJpbmcgbW9kZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUg
bWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAg
ICBVQklESV9SRU9SREVSX0NPVU5UCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQog
fSBVQmlEaVJlb3JkZXJpbmdNb2RlOwogCiAvKioKQEAgLTExOTAsMTEgKzExOTYsMTQgQEAgdWJp
ZGlfc2V0Q29udGV4dChVQmlEaSAqcEJpRGksCiAgKiAgICAgICAgQSBsZXZlbCBvdmVycmlkZXMg
dGhlIGRpcmVjdGlvbmFsIHByb3BlcnR5IG9mIGl0cyBjb3JyZXNwb25kaW5nCiAgKiAgICAgICAg
KHNhbWUgaW5kZXgpIGNoYXJhY3RlciBpZiB0aGUgbGV2ZWwgaGFzIHRoZQogICogICAgICAgIDxj
b2RlPiNVQklESV9MRVZFTF9PVkVSUklERTwvY29kZT4gYml0IHNldC48YnI+PGJyPgotICogICAg
ICAgIEV4Y2VwdCBmb3IgdGhhdCBiaXQsIGl0IG11c3QgYmUKKyAqICAgICAgICBBc2lkZSBmcm9t
IHRoYXQgYml0LCBpdCBtdXN0IGJlCiAgKiAgICAgICAgPGNvZGU+cGFyYUxldmVsPD1lbWJlZGRp
bmdMZXZlbHNbXTw9VUJJRElfTUFYX0VYUExJQ0lUX0xFVkVMPC9jb2RlPiwKLSAqICAgICAgICB3
aXRoIG9uZSBleGNlcHRpb246IGEgbGV2ZWwgb2YgemVybyBtYXkgYmUgc3BlY2lmaWVkIGZvciBh
IHBhcmFncmFwaAotICogICAgICAgIHNlcGFyYXRvciBldmVuIGlmIDxjb2RlPnBhcmFMZXZlbD4w
PC9jb2RlPiB3aGVuIG11bHRpcGxlIHBhcmFncmFwaHMKLSAqICAgICAgICBhcmUgc3VibWl0dGVk
IGluIHRoZSBzYW1lIGNhbGwgdG8gPGNvZGU+dWJpZGlfc2V0UGFyYSgpPC9jb2RlPi48YnI+PGJy
PgorICogICAgICAgIGV4Y2VwdCB0aGF0IGxldmVsIDAgaXMgYWx3YXlzIGFsbG93ZWQuCisgKiAg
ICAgICAgTGV2ZWwgMCBmb3IgYSBwYXJhZ3JhcGggc2VwYXJhdG9yIHByZXZlbnRzIHJlb3JkZXJp
bmcgb2YgcGFyYWdyYXBoczsKKyAqICAgICAgICB0aGlzIG9ubHkgd29ya3MgcmVsaWFibHkgaWYg
PGNvZGU+I1VCSURJX0xFVkVMX09WRVJSSURFPC9jb2RlPgorICogICAgICAgIGlzIGFsc28gc2V0
IGZvciBwYXJhZ3JhcGggc2VwYXJhdG9ycy4KKyAqICAgICAgICBMZXZlbCAwIGZvciBvdGhlciBj
aGFyYWN0ZXJzIGlzIHRyZWF0ZWQgYXMgYSB3aWxkY2FyZAorICogICAgICAgIGFuZCBpcyBsaWZ0
ZWQgdXAgdG8gdGhlIHJlc29sdmVkIGxldmVsIG9mIHRoZSBzdXJyb3VuZGluZyBwYXJhZ3JhcGgu
PGJyPjxicj4KICAqICAgICAgICA8c3Ryb25nPkNhdXRpb246IDwvc3Ryb25nPkEgY29weSBvZiB0
aGlzIHBvaW50ZXIsIG5vdCBvZiB0aGUgbGV2ZWxzLAogICogICAgICAgIHdpbGwgYmUgc3RvcmVk
IGluIHRoZSA8Y29kZT5VQmlEaTwvY29kZT4gb2JqZWN0OwogICogICAgICAgIHRoZSA8Y29kZT5l
bWJlZGRpbmdMZXZlbHM8L2NvZGU+IGFycmF5IG11c3Qgbm90IGJlCkBAIC0xOTU5LDEzICsxOTY4
LDE5IEBAIFVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCiB1YmlkaV9nZXRSZXN1bHRMZW5ndGgo
Y29uc3QgVUJpRGkgKnBCaURpKTsKIAogVV9DREVDTF9CRUdJTgorCisjaWZuZGVmIFVfSElERV9E
RVBSRUNBVEVEX0FQSQogLyoqCi0gKiB2YWx1ZSByZXR1cm5lZCBieSA8Y29kZT5VQmlEaUNsYXNz
Q2FsbGJhY2s8L2NvZGU+IGNhbGxiYWNrcyB3aGVuCisgKiBWYWx1ZSByZXR1cm5lZCBieSA8Y29k
ZT5VQmlEaUNsYXNzQ2FsbGJhY2s8L2NvZGU+IGNhbGxiYWNrcyB3aGVuCiAgKiB0aGVyZSBpcyBu
byBuZWVkIHRvIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBCaWRpIGNsYXNzIGZvciBhIGdpdmVuIGNv
ZGUgcG9pbnQuCisgKgorICogVGhpcyBjb25zdGFudCBpcyBkZXByZWNhdGVkOyB1c2UgdV9nZXRJ
bnRQcm9wZXJ0eU1heFZhbHVlKFVDSEFSX0JJRElfQ0xBU1MpKzEgaW5zdGVhZC4KKyAqCiAgKiBA
c2VlIFVCaURpQ2xhc3NDYWxsYmFjawotICogQHN0YWJsZSBJQ1UgMy42CisgKiBAZGVwcmVjYXRl
ZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1Ug
dGlja2V0ICMxMjQyMC4KICAqLwogI2RlZmluZSBVX0JJRElfQ0xBU1NfREVGQVVMVCAgVV9DSEFS
X0RJUkVDVElPTl9DT1VOVAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIAogLyoq
CiAgKiBDYWxsYmFjayB0eXBlIGRlY2xhcmF0aW9uIGZvciBvdmVycmlkaW5nIGRlZmF1bHQgQmlk
aSBjbGFzcyB2YWx1ZXMgd2l0aApAQCAtMTk4MSw4ICsxOTk2LDggQEAgVV9DREVDTF9CRUdJTgog
ICoKICAqIEByZXR1cm4gVGhlIGRpcmVjdGlvbmFsIHByb3BlcnR5IC8gQmlkaSBjbGFzcyBmb3Ig
dGhlIGdpdmVuIGNvZGUgcG9pbnQKICAqICAgICAgICAgPGNvZGU+YzwvY29kZT4gaWYgdGhlIGRl
ZmF1bHQgY2xhc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiwgb3IKLSAqICAgICAgICAgPGNvZGU+I1Vf
QklESV9DTEFTU19ERUZBVUxUPC9jb2RlPiBpZiB0aGUgc3RhbmRhcmQgQmlkaSBjbGFzcyB2YWx1
ZQotICogICAgICAgICBmb3IgPGNvZGU+YzwvY29kZT4gaXMgdG8gYmUgdXNlZC4KKyAqICAgICAg
ICAgPGNvZGU+I1VfQklESV9DTEFTU19ERUZBVUxUPXVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShV
Q0hBUl9CSURJX0NMQVNTKSsxPC9jb2RlPgorICogICAgICAgICBpZiB0aGUgc3RhbmRhcmQgQmlk
aSBjbGFzcyB2YWx1ZSBmb3IgPGNvZGU+YzwvY29kZT4gaXMgdG8gYmUgdXNlZC4KICAqIEBzZWUg
dWJpZGlfc2V0Q2xhc3NDYWxsYmFjawogICogQHNlZSB1YmlkaV9nZXRDbGFzc0NhbGxiYWNrCiAg
KiBAc3RhYmxlIElDVSAzLjYKQEAgLTE5OTUsOCArMjAxMCw4IEBAIFVfQ0RFQ0xfRU5ECiAvKioK
ICAqIFJldHJpZXZlIHRoZSBCaWRpIGNsYXNzIGZvciBhIGdpdmVuIGNvZGUgcG9pbnQuCiAgKiA8
cD5JZiBhIDxjb2RlPiNVQmlEaUNsYXNzQ2FsbGJhY2s8L2NvZGU+IGNhbGxiYWNrIGlzIGRlZmlu
ZWQgYW5kIHJldHVybnMgYQotICogdmFsdWUgb3RoZXIgdGhhbiA8Y29kZT4jVV9CSURJX0NMQVNT
X0RFRkFVTFQ8L2NvZGU+LCB0aGF0IHZhbHVlIGlzIHVzZWQ7Ci0gKiBvdGhlcndpc2UgdGhlIGRl
ZmF1bHQgY2xhc3MgZGV0ZXJtaW5hdGlvbiBtZWNoYW5pc20gaXMgaW52b2tlZC48L3A+CisgKiB2
YWx1ZSBvdGhlciB0aGFuIDxjb2RlPiNVX0JJRElfQ0xBU1NfREVGQVVMVD11X2dldEludFByb3Bl
cnR5TWF4VmFsdWUoVUNIQVJfQklESV9DTEFTUykrMTwvY29kZT4sCisgKiB0aGF0IHZhbHVlIGlz
IHVzZWQ7IG90aGVyd2lzZSB0aGUgZGVmYXVsdCBjbGFzcyBkZXRlcm1pbmF0aW9uIG1lY2hhbmlz
bSBpcyBpbnZva2VkLjwvcD4KICAqCiAgKiBAcGFyYW0gcEJpRGkgaXMgdGhlIHBhcmFncmFwaCA8
Y29kZT5VQmlEaTwvY29kZT4gb2JqZWN0LgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdWJpZGl0cmFuc2Zvcm0uaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJpZGl0
cmFuc2Zvcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjdiMDA1ZWQ0NWY4ZDEzOTdlMGQyNTg1ZGMyZTAwYmU3
OTY0YTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91YmlkaXRy
YW5zZm9ybS5oCkBAIC0wLDAgKzEsMzE4IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisq
CisqIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisqIExpY2Vu
c2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwK
KyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIGZpbGUgbmFtZTogIHViaWRpdHJhbnNmb3Jt
LmgKKyogICBlbmNvZGluZzogICBVVEYtOAorKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQor
KiAgIGluZGVudGF0aW9uOjQKKyoKKyogICBjcmVhdGVkIG9uOiAyMDE2anVsMjQKKyogICBjcmVh
dGVkIGJ5OiBMaW5hIEtlbW1lbAorKgorKi8KKworI2lmbmRlZiBVQklESVRSQU5TRk9STV9ICisj
ZGVmaW5lIFVCSURJVFJBTlNGT1JNX0gKKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisj
aW5jbHVkZSAidW5pY29kZS91YmlkaS5oIgorI2luY2x1ZGUgInVuaWNvZGUvdWNoYXIuaCIKKyNp
bmNsdWRlICJ1bmljb2RlL2xvY2FscG9pbnRlci5oIgorCisvKioKKyAqIFxmaWxlCisgKiBcYnJp
ZWYgQmlkaSBUcmFuc2Zvcm1hdGlvbnMKKyAqCisgKiA8Y29kZT5VQmlEaU9yZGVyPC9jb2RlPiBp
bmRpY2F0ZXMgdGhlIG9yZGVyIG9mIHRleHQuPHA+CisgKiBUaGlzIGJpZGkgdHJhbnNmb3JtYXRp
b24gZW5naW5lIHN1cHBvcnRzIGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgKDQgaW4KKyAqIHRv
dGFsKSBvZiBpbnB1dCBhbmQgb3V0cHV0IHRleHQgb3JkZXI6CisgKiA8dWw+CisgKiA8bGk+PGxv
Z2ljYWwgaW5wdXQsIHZpc3VhbCBvdXRwdXQ+OiB1bmxlc3MgdGhlIG91dHB1dCBkaXJlY3Rpb24g
aXMgUlRMLCB0aGlzCisgKiBjb3JyZXNwb25kcyB0byBhIG5vcm1hbCBvcGVyYXRpb24gb2YgdGhl
IEJpZGkgYWxnb3JpdGhtIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAqIFVuaWNvZGUgVGVjaG5pY2Fs
IFJlcG9ydCBhbmQgaW1wbGVtZW50ZWQgYnkgPGNvZGU+VUJpRGk8L2NvZGU+IHdoZW4gdGhlCisg
KiByZW9yZGVyaW5nIG1vZGUgaXMgc2V0IHRvIDxjb2RlPlVCSURJX1JFT1JERVJfREVGQVVMVDwv
Y29kZT4uIFZpc3VhbCBSVEwKKyAqIG1vZGUgaXMgbm90IHN1cHBvcnRlZCBieSA8Y29kZT5VQmlE
aTwvY29kZT4gYW5kIGlzIGFjY29tcGxpc2hlZCB0aHJvdWdoCisgKiByZXZlcnNpbmcgYSB2aXN1
YWwgTFRSIHN0cmluZyw8L2xpPgorICogPGxpPjx2aXN1YWwgaW5wdXQsIGxvZ2ljYWwgb3V0cHV0
PjogdW5sZXNzIHRoZSBpbnB1dCBkaXJlY3Rpb24gaXMgUlRMLCB0aGlzCisgKiBjb3JyZXNwb25k
cyB0byBhbiAiaW52ZXJzZSBiaWRpIGFsZ29yaXRobSIgaW4gPGNvZGU+VUJpRGk8L2NvZGU+IHdp
dGggdGhlCisgKiByZW9yZGVyaW5nIG1vZGUgc2V0IHRvIDxjb2RlPlVCSURJX1JFT1JERVJfSU5W
RVJTRV9MSUtFX0RJUkVDVDwvY29kZT4uCisgKiBWaXN1YWwgUlRMIG1vZGUgaXMgbm90IG5vdCBz
dXBwb3J0ZWQgYnkgPGNvZGU+VUJpRGk8L2NvZGU+IGFuZCBpcworICogYWNjb21wbGlzaGVkIHRo
cm91Z2ggcmV2ZXJzaW5nIGEgdmlzdWFsIExUUiBzdHJpbmcsPC9saT4KKyAqIDxsaT48bG9naWNh
bCBpbnB1dCwgbG9naWNhbCBvdXRwdXQ+OiBpZiB0aGUgaW5wdXQgYW5kIG91dHB1dCBiYXNlIGRp
cmVjdGlvbnMKKyAqIG1pc21hdGNoLCB0aGlzIGNvcnJlc3BvbmRzIHRvIHRoZSA8Y29kZT5VQmlE
aTwvY29kZT4gaW1wbGVtZW50YXRpb24gd2l0aCB0aGUKKyAqIHJlb3JkZXJpbmcgbW9kZSBzZXQg
dG8gPGNvZGU+VUJJRElfUkVPUkRFUl9SVU5TX09OTFk8L2NvZGU+OyBhbmQgaWYgdGhlCisgKiBp
bnB1dCBhbmQgb3V0cHV0IGJhc2UgZGlyZWN0aW9ucyBhcmUgaWRlbnRpY2FsLCB0aGUgdHJhbnNm
b3JtYXRpb24gZW5naW5lCisgKiB3aWxsIG9ubHkgaGFuZGxlIGNoYXJhY3RlciBtaXJyb3Jpbmcg
YW5kIEFyYWJpYyBzaGFwaW5nIG9wZXJhdGlvbnMgd2l0aG91dAorICogcmVvcmRlcmluZyw8L2xp
PgorICogPGxpPjx2aXN1YWwgaW5wdXQsIHZpc3VhbCBvdXRwdXQ+OiB0aGlzIHJlb3JkZXJpbmcg
bW9kZSBpcyBub3Qgc3VwcG9ydGVkIGJ5CisgKiB0aGUgPGNvZGU+VUJpRGk8L2NvZGU+IGVuZ2lu
ZTsgaXQgaW1wbGllcyBjaGFyYWN0ZXIgbWlycm9yaW5nLCBBcmFiaWMKKyAqIHNoYXBpbmcsIGFu
ZCAtIGlmIHRoZSBpbnB1dC9vdXRwdXQgYmFzZSBkaXJlY3Rpb25zIG1pc21hdGNoIC0gIHN0cmlu
ZworICogcmV2ZXJzZSBvcGVyYXRpb25zLjwvbGk+CisgKiA8L3VsPgorICogQHNlZSB1YmlkaV9z
ZXRJbnZlcnNlCisgKiBAc2VlIHViaWRpX3NldFJlb3JkZXJpbmdNb2RlCisgKiBAc2VlIFVCSURJ
X1JFT1JERVJfREVGQVVMVAorICogQHNlZSBVQklESV9SRU9SREVSX0lOVkVSU0VfTElLRV9ESVJF
Q1QKKyAqIEBzZWUgVUJJRElfUkVPUkRFUl9SVU5TX09OTFkKKyAqIEBzdGFibGUgSUNVIDU4Cisg
Ki8KK3R5cGVkZWYgZW51bSB7CisgICAgLyoqIDA6IENvbnN0YW50IGluZGljYXRpbmcgYSBsb2dp
Y2FsIG9yZGVyLgorICAgICAgKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciBpbnB1dCB0ZXh0Lgor
ICAgICAgKiBAc3RhYmxlIElDVSA1OAorICAgICAgKi8KKyAgICBVQklESV9MT0dJQ0FMID0gMCwK
KyAgICAvKiogMTogQ29uc3RhbnQgaW5kaWNhdGluZyBhIHZpc3VhbCBvcmRlci4KKyAgICAgICog
VGhpcyBpcyBhIGRlZmF1bHQgZm9yIG91dHB1dCB0ZXh0LgorICAgICAgKiBAc3RhYmxlIElDVSA1
OAorICAgICAgKi8KKyAgICBVQklESV9WSVNVQUwKK30gVUJpRGlPcmRlcjsKKworLyoqCisgKiA8
Y29kZT5VQmlEaU1pcnJvcmluZzwvY29kZT4gaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGNoYXJh
Y3RlcnMgd2l0aCB0aGUKKyAqICJtaXJyb3JlZCIgcHJvcGVydHkgaW4gUlRMIHJ1bnMgc2hvdWxk
IGJlIHJlcGxhY2VkIHdpdGggdGhlaXIgbWlycm9yLWltYWdlCisgKiBjb3VudGVycGFydHMuCisg
KiBAc2VlIFVCSURJX0RPX01JUlJPUklORworICogQHNlZSB1YmlkaV9zZXRSZW9yZGVyaW5nT3B0
aW9ucworICogQHNlZSB1YmlkaV93cml0ZVJlb3JkZXJlZAorICogQHNlZSB1YmlkaV93cml0ZVJl
dmVyc2UKKyAqIEBzdGFibGUgSUNVIDU4CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgLyoqIDA6
IENvbnN0YW50IGluZGljYXRpbmcgdGhhdCBjaGFyYWN0ZXIgbWlycm9yaW5nIHNob3VsZCBub3Qg
YmUKKyAgICAgICogcGVyZm9ybWVkLgorICAgICAgKiBUaGlzIGlzIHRoZSBkZWZhdWx0LgorICAg
ICAgKiBAc3RhYmxlIElDVSA1OAorICAgICAgKi8KKyAgICBVQklESV9NSVJST1JJTkdfT0ZGID0g
MCwKKyAgICAvKiogMTogQ29uc3RhbnQgaW5kaWNhdGluZyB0aGF0IGNoYXJhY3RlciBtaXJyb3Jp
bmcgc2hvdWxkIGJlIHBlcmZvcm1lZC4KKyAgICAgICogVGhpcyBjb3JyZXNwb25kcyB0byBjYWxs
aW5nIDxjb2RlPnViaWRpX3dyaXRlUmVvcmRlcmVkPC9jb2RlPiBvcgorICAgICAgKiA8Y29kZT51
YmlkaV93cml0ZVJldmVyc2U8L2NvZGU+IHdpdGggdGhlCisgICAgICAqIDxjb2RlPlVCSURJX0RP
X01JUlJPUklORzwvY29kZT4gb3B0aW9uIGJpdCBzZXQuCisgICAgICAqIEBzdGFibGUgSUNVIDU4
CisgICAgICAqLworICAgIFVCSURJX01JUlJPUklOR19PTgorfSBVQmlEaU1pcnJvcmluZzsKKwor
LyoqCisgKiBGb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHRoZSA8Y29kZT5VQmlEaVRyYW5zZm9ybTwv
Y29kZT4gc3RydWN0dXJlIHRoYXQgc3RvcmVzCisgKiBpbmZvcm1hdGlvbiB1c2VkIGJ5IHRoZSBs
YXlvdXQgdHJhbnNmb3JtYXRpb24gZW5naW5lLgorICogQHN0YWJsZSBJQ1UgNTgKKyAqLwordHlw
ZWRlZiBzdHJ1Y3QgVUJpRGlUcmFuc2Zvcm0gVUJpRGlUcmFuc2Zvcm07CisKKy8qKgorICogUGVy
Zm9ybXMgdHJhbnNmb3JtYXRpb24gb2YgdGV4dCBmcm9tIHRoZSBiaWRpIGxheW91dCBkZWZpbmVk
IGJ5IHRoZSBpbnB1dAorICogb3JkZXJpbmcgc2NoZW1lIHRvIHRoZSBiaWRpIGxheW91dCBkZWZp
bmVkIGJ5IHRoZSBvdXRwdXQgb3JkZXJpbmcgc2NoZW1lLAorICogYW5kIGFwcGxpZXMgY2hhcmFj
dGVyIG1pcnJvcmluZyBhbmQgQXJhYmljIHNoYXBpbmcgb3BlcmF0aW9ucy48cD4KKyAqIEluIHRl
cm1zIG9mIDxjb2RlPlVCaURpPC9jb2RlPiwgc3VjaCBhIHRyYW5zZm9ybWF0aW9uIGltcGxpZXM6
CisgKiA8dWw+CisgKiA8bGk+Y2FsbGluZyA8Y29kZT51YmlkaV9zZXRSZW9yZGVyaW5nTW9kZTwv
Y29kZT4gYXMgbmVlZGVkICh3aGVuIHRoZQorICogcmVvcmRlcmluZyBtb2RlIGlzIG90aGVyIHRo
YW4gbm9ybWFsKSw8L2xpPgorICogPGxpPmNhbGxpbmcgPGNvZGU+dWJpZGlfc2V0SW52ZXJzZTwv
Y29kZT4gYXMgbmVlZGVkICh3aGVuIHRleHQgc2hvdWxkIGJlCisgKiB0cmFuc2Zvcm1lZCBmcm9t
IGEgdmlzdWFsIHRvIGEgbG9naWNhbCBmb3JtKSw8L2xpPgorICogPGxpPnJlc29sdmluZyBlbWJl
ZGRpbmcgbGV2ZWxzIG9mIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBpbnB1dCB0ZXh0IGJ5CisgKiBj
YWxsaW5nIDxjb2RlPnViaWRpX3NldFBhcmE8L2NvZGU+LDwvbGk+CisgKiA8bGk+cmVvcmRlcmlu
ZyB0aGUgY2hhcmFjdGVycyBiYXNlZCBvbiB0aGUgY29tcHV0ZWQgZW1iZWRkaW5nIGxldmVscywg
YWxzbworICogcGVyZm9ybWluZyBjaGFyYWN0ZXIgbWlycm9yaW5nIGFzIG5lZWRlZCwgYW5kIHN0
cmVhbWluZyB0aGUgcmVzdWx0IHRvIHRoZQorICogb3V0cHV0LCBieSBjYWxsaW5nIDxjb2RlPnVi
aWRpX3dyaXRlUmVvcmRlcmVkPC9jb2RlPiw8L2xpPgorICogPGxpPnBlcmZvcm1pbmcgQXJhYmlj
IGRpZ2l0IGFuZCBsZXR0ZXIgc2hhcGluZyBvbiB0aGUgb3V0cHV0IHRleHQgYnkgY2FsbGluZwor
ICogPGNvZGU+dV9zaGFwZUFyYWJpYzwvY29kZT4uPC9saT4KKyAqIDwvdWw+CisgKiBBbiAib3Jk
ZXJpbmcgc2NoZW1lIiBlbmNvbXBhc3NlcyB0aGUgYmFzZSBkaXJlY3Rpb24gYW5kIHRoZSBvcmRl
ciBvZiB0ZXh0LAorICogYW5kIHRoZXNlIGNoYXJhY3RlcmlzdGljcyBtdXN0IGJlIGRlZmluZWQg
YnkgdGhlIGNhbGxlciBmb3IgYm90aCBpbnB1dCBhbmQKKyAqIG91dHB1dCBleHBsaWNpdGx5IC48
cD4KKyAqIFRoZXJlIGFyZSAzNiBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2YgPGlucHV0LCBvdXRw
dXQ+IG9yZGVyaW5nIHNjaGVtZXMsCisgKiB3aGljaCBhcmUgcGFydGlhbGx5IHN1cHBvcnRlZCBi
eSA8Y29kZT5VQmlEaTwvY29kZT4gYWxyZWFkeS4gRXhhbXBsZXMgb2YgdGhlCisgKiBjdXJyZW50
bHkgc3VwcG9ydGVkIGNvbWJpbmF0aW9uczoKKyAqIDx1bD4KKyAqIDxsaT48TG9naWNhbCBMVFIs
IFZpc3VhbCBMVFI+OiB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZworICogPGNvZGU+dWJp
ZGlfc2V0UGFyYTwvY29kZT4gd2l0aCA8Y29kZT5wYXJhTGV2ZWwgPT0gVUJJRElfTFRSPC9jb2Rl
Piw8L2xpPgorICogPGxpPjxMb2dpY2FsIFJUTCwgVmlzdWFsIExUUj46IHRoaXMgaXMgZXF1aXZh
bGVudCB0byBjYWxsaW5nCisgKiA8Y29kZT51YmlkaV9zZXRQYXJhPC9jb2RlPiB3aXRoIDxjb2Rl
PnBhcmFMZXZlbCA9PSBVQklESV9SVEw8L2NvZGU+LDwvbGk+CisgKiA8bGk+PExvZ2ljYWwgRGVm
YXVsdCAoIkF1dG8iKSBMVFIsIFZpc3VhbCBMVFI+OiB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAq
IGNhbGxpbmcgPGNvZGU+dWJpZGlfc2V0UGFyYTwvY29kZT4gd2l0aAorICogPGNvZGU+cGFyYUxl
dmVsID09IFVCSURJX0RFRkFVTFRfTFRSPC9jb2RlPiw8L2xpPgorICogPGxpPjxMb2dpY2FsIERl
ZmF1bHQgKCJBdXRvIikgUlRMLCBWaXN1YWwgTFRSPjogdGhpcyBpcyBlcXVpdmFsZW50IHRvCisg
KiBjYWxsaW5nIDxjb2RlPnViaWRpX3NldFBhcmE8L2NvZGU+IHdpdGgKKyAqIDxjb2RlPnBhcmFM
ZXZlbCA9PSBVQklESV9ERUZBVUxUX1JUTDwvY29kZT4sPC9saT4KKyAqIDxsaT48VmlzdWFsIExU
UiwgTG9naWNhbCBMVFI+OiB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAqIGNhbGxpbmcgPGNvZGU+
dWJpZGlfc2V0SW52ZXJzZShVQmlEaSosIFRSVUUpPC9jb2RlPiBhbmQgdGhlbgorICogPGNvZGU+
dWJpZGlfc2V0UGFyYTwvY29kZT4gd2l0aCA8Y29kZT5wYXJhTGV2ZWwgPT0gVUJJRElfTFRSPC9j
b2RlPiw8L2xpPgorICogPGxpPjxWaXN1YWwgTFRSLCBMb2dpY2FsIFJUTD46IHRoaXMgaXMgZXF1
aXZhbGVudCB0bworICogY2FsbGluZyA8Y29kZT51YmlkaV9zZXRJbnZlcnNlKFVCaURpKiwgVFJV
RSk8L2NvZGU+IGFuZCB0aGVuCisgKiA8Y29kZT51YmlkaV9zZXRQYXJhPC9jb2RlPiB3aXRoIDxj
b2RlPnBhcmFMZXZlbCA9PSBVQklESV9SVEw8L2NvZGU+LjwvbGk+CisgKiA8L3VsPgorICogQWxs
IGNvbWJpbmF0aW9ucyB0aGF0IGludm9sdmUgdGhlIFZpc3VhbCBSVEwgc2NoZW1lIGFyZSB1bnN1
cHBvcnRlZCBieQorICogPGNvZGU+VUJpRGk8L2NvZGU+LCBmb3IgaW5zdGFuY2U6CisgKiA8dWw+
CisgKiA8bGk+PExvZ2ljYWwgTFRSLCBWaXN1YWwgUlRMPiw8L2xpPgorICogPGxpPjxWaXN1YWwg
UlRMLCBMb2dpY2FsIFJUTD4uPC9saT4KKyAqIDwvdWw+CisgKiA8cD5FeGFtcGxlIG9mIHVzYWdl
IG9mIHRoZSB0cmFuc2Zvcm1hdGlvbiBlbmdpbmU6PGJyPgorICogPHByZT4KKyAqIFxjb2RlCisg
KiBVQ2hhciB0ZXh0MVtdID0geydhJywgJ2InLCAnYycsIDB4MDYyNSwgJzEnLCAwfTsKKyAqIFVD
aGFyIHRleHQyW10gPSB7J2EnLCAnYicsICdjJywgMHgwNjI1LCAnMScsIDB9OworICogVUVycm9y
Q29kZSBlcnJvckNvZGUgPSBVX1pFUk9fRVJST1I7CisgKiAvLyBSdW4gYSB0cmFuc2Zvcm1hdGlv
bi4KKyAqIHViaWRpdHJhbnNmb3JtX3RyYW5zZm9ybShwQmlkaVRyYW5zZm9ybSwKKyAqICAgICAg
ICAgIHRleHQxLCAtMSwgdGV4dDIsIC0xLAorICogICAgICAgICAgVUJJRElfTFRSLCBVQklESV9W
SVNVQUwsCisgKiAgICAgICAgICBVQklESV9SVEwsIFVCSURJX0xPR0lDQUwsCisgKiAgICAgICAg
ICBVQklESV9NSVJST1JJTkdfT0ZGLAorICogICAgICAgICAgVV9TSEFQRV9ESUdJVFNfQU4yRU4g
fCBVX1NIQVBFX0RJR0lUX1RZUEVfQU5fRVhURU5ERUQsCisgKiAgICAgICAgICAmZXJyb3JDb2Rl
KTsKKyAqIC8vIERvIHNvbWV0aGluZyB3aXRoIHRleHQyLgorICogIHRleHQyWzRdID0gJzInOwor
ICogLy8gUnVuIGEgcmV2ZXJzZSB0cmFuc2Zvcm1hdGlvbi4KKyAqIHViaWRpdHJhbnNmb3JtX3Ry
YW5zZm9ybShwQmlkaVRyYW5zZm9ybSwKKyAqICAgICAgICAgIHRleHQyLCAtMSwgdGV4dDEsIC0x
LAorICogICAgICAgICAgVUJJRElfUlRMLCBVQklESV9MT0dJQ0FMLAorICogICAgICAgICAgVUJJ
RElfTFRSLCBVQklESV9WSVNVQUwsCisgKiAgICAgICAgICBVQklESV9NSVJST1JJTkdfT0ZGLAor
ICogICAgICAgICAgVV9TSEFQRV9ESUdJVFNfRU4yQU4gfCBVX1NIQVBFX0RJR0lUX1RZUEVfQU5f
RVhURU5ERUQsCisgKiAgICAgICAgICAmZXJyb3JDb2RlKTsKKyAqXGVuZGNvZGUKKyAqIDwvcHJl
PgorICogPC9wPgorICoKKyAqIEBwYXJhbSBwQmlEaVRyYW5zZm9ybSBBIHBvaW50ZXIgdG8gYSA8
Y29kZT5VQmlEaVRyYW5zZm9ybTwvY29kZT4gb2JqZWN0CisgKiAgICAgICAgYWxsb2NhdGVkIHdp
dGggPGNvZGU+dWJpZGl0cmFuc2Zvcm1fb3BlbigpPC9jb2RlPiBvcgorICogICAgICAgIDxjb2Rl
Pk5VTEw8L2NvZGU+LjxwPgorICogICAgICAgIFRoaXMgb2JqZWN0IHNlcnZlcyBmb3Igb25lLXRp
bWUgc2V0dXAgdG8gYW1vcnRpemUgaW5pdGlhbGl6YXRpb24KKyAqICAgICAgICBvdmVyaGVhZHMu
IFVzZSBvZiB0aGlzIG9iamVjdCBpcyBub3QgdGhyZWFkLXNhZmUuIEFsbCBvdGhlciB0aHJlYWRz
CisgKiAgICAgICAgc2hvdWxkIGFsbG9jYXRlIGEgbmV3IDxjb2RlPlVCaURpVHJhbnNmb3JtPC9j
b2RlPiBvYmplY3QgYnkgY2FsbGluZworICogICAgICAgIDxjb2RlPnViaWRpdHJhbnNmb3JtX29w
ZW4oKTwvY29kZT4gYmVmb3JlIHVzaW5nIGl0LiBBbHRlcm5hdGl2ZWx5LAorICogICAgICAgIGEg
Y2FsbGVyIGNhbiBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gPGNvZGU+TlVMTDwvY29kZT4sIGluIHdo
aWNoIGNhc2UKKyAqICAgICAgICB0aGUgb2JqZWN0IHdpbGwgYmUgYWxsb2NhdGVkIGJ5IHRoZSBl
bmdpbmUgb24gdGhlIGZseS48L3A+CisgKiBAcGFyYW0gc3JjIEEgcG9pbnRlciB0byB0aGUgdGV4
dCB0aGF0IHRoZSBCaWRpIGxheW91dCB0cmFuc2Zvcm1hdGlvbnMgd2lsbAorICogICAgICAgIGJl
IHBlcmZvcm1lZCBvbi4KKyAqICAgICAgICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IHRoZSB0
ZXh0IG11c3QgYmUgKGF0IGxlYXN0KQorICogICAgICAgIDxjb2RlPnNyY0xlbmd0aDwvY29kZT4g
bG9uZy48L3A+CisgKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIHRleHQsIGlu
IG51bWJlciBvZiBVQ2hhcnMuIElmCisgKiAgICAgICAgPGNvZGU+bGVuZ3RoID09IC0xPC9jb2Rl
PiB0aGVuIHRoZSB0ZXh0IG11c3QgYmUgemVyby10ZXJtaW5hdGVkLgorICogQHBhcmFtIGRlc3Qg
QSBwb2ludGVyIHRvIHdoZXJlIHRoZSBwcm9jZXNzZWQgdGV4dCBpcyB0byBiZSBjb3BpZWQuCisg
KiBAcGFyYW0gZGVzdFNpemUgVGhlIHNpemUgb2YgdGhlIDxjb2RlPmRlc3Q8L2NvZGU+IGJ1ZmZl
ciwgaW4gbnVtYmVyIG9mCisgKiAgICAgICAgVUNoYXJzLiBJZiB0aGUgPGNvZGU+VV9TSEFQRV9M
RVRURVJTX1VOU0hBUEU8L2NvZGU+IG9wdGlvbiBpcyBzZXQsCisgKiAgICAgICAgdGhlbiB0aGUg
ZGVzdGluYXRpb24gbGVuZ3RoIGNvdWxkIGJlIGFzIGxhcmdlIGFzCisgKiAgICAgICAgPGNvZGU+
c3JjTGVuZ3RoICogMjwvY29kZT4uIE90aGVyd2lzZSwgdGhlIGRlc3RpbmF0aW9uIGxlbmd0aCB3
aWxsCisgKiAgICAgICAgbm90IGV4Y2VlZCA8Y29kZT5zcmNMZW5ndGg8L2NvZGU+LiBJZiB0aGUg
Y2FsbGVyIHJlc2VydmVzIHRoZSBsYXN0CisgKiAgICAgICAgcG9zaXRpb24gZm9yIHplcm8tdGVy
bWluYXRpb24sIGl0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tCisgKiAgICAgICAgPGNvZGU+ZGVz
dFNpemU8L2NvZGU+LgorICogICAgICAgIDxwPjxjb2RlPmRlc3RTaXplID09IC0xPC9jb2RlPiBp
cyBhbGxvd2VkIGFuZCBtYWtlcyBzZW5zZSB3aGVuCisgKiAgICAgICAgPGNvZGU+ZGVzdDwvY29k
ZT4gd2FzIGhvbGRzIHNvbWUgbWVhbmluZ2Z1bCB2YWx1ZSwgZS5nLiB0aGF0IG9mCisgKiAgICAg
ICAgPGNvZGU+c3JjPC9jb2RlPi4gSW4gdGhpcyBjYXNlIDxjb2RlPmRlc3Q8L2NvZGU+IG11c3Qg
YmUKKyAqICAgICAgICB6ZXJvLXRlcm1pbmF0ZWQuPC9wPgorICogQHBhcmFtIGluUGFyYUxldmVs
IEEgYmFzZSBlbWJlZGRpbmcgbGV2ZWwgb2YgdGhlIGlucHV0IGFzIGRlZmluZWQgaW4KKyAqICAg
ICAgICA8Y29kZT51YmlkaV9zZXRQYXJhPC9jb2RlPiBkb2N1bWVudGF0aW9uIGZvciB0aGUKKyAq
ICAgICAgICA8Y29kZT5wYXJhTGV2ZWw8L2NvZGU+IHBhcmFtZXRlci4KKyAqIEBwYXJhbSBpbk9y
ZGVyIEFuIG9yZGVyIG9mIHRoZSBpbnB1dCwgd2hpY2ggY2FuIGJlIG9uZSBvZiB0aGUKKyAqICAg
ICAgICA8Y29kZT5VQmlEaU9yZGVyPC9jb2RlPiB2YWx1ZXMuCisgKiBAcGFyYW0gb3V0UGFyYUxl
dmVsIEEgYmFzZSBlbWJlZGRpbmcgbGV2ZWwgb2YgdGhlIG91dHB1dCBhcyBkZWZpbmVkIGluCisg
KiAgICAgICAgPGNvZGU+dWJpZGlfc2V0UGFyYTwvY29kZT4gZG9jdW1lbnRhdGlvbiBmb3IgdGhl
CisgKiAgICAgICAgPGNvZGU+cGFyYUxldmVsPC9jb2RlPiBwYXJhbWV0ZXIuCisgKiBAcGFyYW0g
b3V0T3JkZXIgQW4gb3JkZXIgb2YgdGhlIG91dHB1dCwgd2hpY2ggY2FuIGJlIG9uZSBvZiB0aGUK
KyAqICAgICAgICA8Y29kZT5VQmlEaU9yZGVyPC9jb2RlPiB2YWx1ZXMuCisgKiBAcGFyYW0gZG9N
aXJyb3JpbmcgSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRvIHBlcmZvcm0gY2hhcmFjdGVyIG1p
cnJvcmluZywKKyAqICAgICAgICBhbmQgY2FuIGFjY2VwdCBvbmUgb2YgdGhlIDxjb2RlPlVCaURp
TWlycm9yaW5nPC9jb2RlPiB2YWx1ZXMuCisgKiBAcGFyYW0gc2hhcGluZ09wdGlvbnMgQXJhYmlj
IGRpZ2l0IGFuZCBsZXR0ZXIgc2hhcGluZyBvcHRpb25zIGRlZmluZWQgaW4gdGhlCisgKiAgICAg
ICAgdXNoYXBlLmggZG9jdW1lbnRhdGlvbi4KKyAqICAgICAgICA8cD48c3Ryb25nPk5vdGU6PC9z
dHJvbmc+IERpcmVjdGlvbiBpbmRpY2F0b3Igb3B0aW9ucyBhcmUgY29tcHV0ZWQgYnkKKyAqICAg
ICAgICB0aGUgdHJhbnNmb3JtYXRpb24gZW5naW5lIGJhc2VkIG9uIHRoZSBlZmZlY3RpdmUgb3Jk
ZXJpbmcgc2NoZW1lcywgc28KKyAqICAgICAgICB1c2VyLWRlZmluZWQgZGlyZWN0aW9uIGluZGlj
YXRvcnMgd2lsbCBiZSBpZ25vcmVkLjwvcD4KKyAqIEBwYXJhbSBwRXJyb3JDb2RlIEEgcG9pbnRl
ciB0byBhbiBlcnJvciBjb2RlIHZhbHVlLgorICoKKyAqIEByZXR1cm4gVGhlIGRlc3RpbmF0aW9u
IGxlbmd0aCwgaS5lLiB0aGUgbnVtYmVyIG9mIFVDaGFycyB3cml0dGVuIHRvCisgKiAgICAgICAg
IDxjb2RlPmRlc3Q8L2NvZGU+LiBJZiB0aGUgdHJhbnNmb3JtYXRpb24gZmFpbHMsIHRoZSByZXR1
cm4gdmFsdWUKKyAqICAgICAgICAgd2lsbCBiZSAwIChhbmQgdGhlIGVycm9yIGNvZGUgd2lsbCBi
ZSB3cml0dGVuIHRvCisgKiAgICAgICAgIDxjb2RlPnBFcnJvckNvZGU8L2NvZGU+KS4KKyAqCisg
KiBAc2VlIFVCaURpTGV2ZWwKKyAqIEBzZWUgVUJpRGlPcmRlcgorICogQHNlZSBVQmlEaU1pcnJv
cmluZworICogQHNlZSB1YmlkaV9zZXRQYXJhCisgKiBAc2VlIHVfc2hhcGVBcmFiaWMKKyAqIEBz
dGFibGUgSUNVIDU4CisgKi8KK1VfU1RBQkxFIHVpbnQzMl90IFVfRVhQT1JUMgordWJpZGl0cmFu
c2Zvcm1fdHJhbnNmb3JtKFVCaURpVHJhbnNmb3JtICpwQmlEaVRyYW5zZm9ybSwKKyAgICAgICAg
ICAgIGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgVUNo
YXIgKmRlc3QsIGludDMyX3QgZGVzdFNpemUsCisgICAgICAgICAgICBVQmlEaUxldmVsIGluUGFy
YUxldmVsLCBVQmlEaU9yZGVyIGluT3JkZXIsCisgICAgICAgICAgICBVQmlEaUxldmVsIG91dFBh
cmFMZXZlbCwgVUJpRGlPcmRlciBvdXRPcmRlciwKKyAgICAgICAgICAgIFVCaURpTWlycm9yaW5n
IGRvTWlycm9yaW5nLCB1aW50MzJfdCBzaGFwaW5nT3B0aW9ucywKKyAgICAgICAgICAgIFVFcnJv
ckNvZGUgKnBFcnJvckNvZGUpOworCisvKioKKyAqIEFsbG9jYXRlcyBhIDxjb2RlPlVCaURpVHJh
bnNmb3JtPC9jb2RlPiBvYmplY3QuIFRoaXMgb2JqZWN0IGNhbiBiZSByZXVzZWQsCisgKiBlLmcu
IHdpdGggZGlmZmVyZW50IG9yZGVyaW5nIHNjaGVtZXMsIG1pcnJvcmluZyBvciBzaGFwaW5nIG9w
dGlvbnMuPHA+CisgKiA8c3Ryb25nPk5vdGU6PC9zdHJvbmc+VGhlIG9iamVjdCBjYW4gb25seSBi
ZSByZXVzZWQgaW4gdGhlIHNhbWUgdGhyZWFkLgorICogQWxsIG90aGVyIHRocmVhZHMgc2hvdWxk
IGFsbG9jYXRlIGEgbmV3IDxjb2RlPlVCaURpVHJhbnNmb3JtPC9jb2RlPiBvYmplY3QKKyAqIGJl
Zm9yZSB1c2luZyBpdC48cD4KKyAqIEV4YW1wbGUgb2YgdXNhZ2U6PHA+CisgKiA8cHJlPgorICog
XGNvZGUKKyAqIFVFcnJvckNvZGUgZXJyb3JDb2RlID0gVV9aRVJPX0VSUk9SOworICogLy8gT3Bl
biBhIG5ldyBVQmlEaVRyYW5zZm9ybS4KKyAqIFVCaURpVHJhbnNmb3JtKiB0cmFuc2Zvcm0gPSB1
YmlkaXRyYW5zZm9ybV9vcGVuKCZlcnJvckNvZGUpOworICogLy8gUnVuIGEgdHJhbnNmb3JtYXRp
b24uCisgKiB1YmlkaXRyYW5zZm9ybV90cmFuc2Zvcm0odHJhbnNmb3JtLAorICogICAgICAgICAg
dGV4dDEsIC0xLCB0ZXh0MiwgLTEsCisgKiAgICAgICAgICBVQklESV9SVEwsIFVCSURJX0xPR0lD
QUwsCisgKiAgICAgICAgICBVQklESV9MVFIsIFVCSURJX1ZJU1VBTCwKKyAqICAgICAgICAgIFVC
SURJX01JUlJPUklOR19PTiwKKyAqICAgICAgICAgIFVfU0hBUEVfRElHSVRTX0VOMkFOLAorICog
ICAgICAgICAgJmVycm9yQ29kZSk7CisgKiAvLyBEbyBzb21ldGhpbmcgd2l0aCB0aGUgb3V0cHV0
IHRleHQgYW5kIGludm9rZSBhbm90aGVyIHRyYW5zZm9ybWF0aW9uIHVzaW5nCisgKiAvLyAgIHRo
YXQgdGV4dCBhcyBpbnB1dC4KKyAqIHViaWRpdHJhbnNmb3JtX3RyYW5zZm9ybSh0cmFuc2Zvcm0s
CisgKiAgICAgICAgICB0ZXh0MiwgLTEsIHRleHQzLCAtMSwKKyAqICAgICAgICAgIFVCSURJX0xU
UiwgVUJJRElfVklTVUFMLAorICogICAgICAgICAgVUJJRElfUlRMLCBVQklESV9WSVNVQUwsCisg
KiAgICAgICAgICBVQklESV9NSVJST1JJTkdfT04sCisgKiAgICAgICAgICAwLCAmZXJyb3JDb2Rl
KTsKKyAqXGVuZGNvZGUKKyAqIDwvcHJlPgorICogPHA+CisgKiBUaGUgPGNvZGU+VUJpRGlUcmFu
c2Zvcm08L2NvZGU+IG9iamVjdCBtdXN0IGJlIGRlYWxsb2NhdGVkIGJ5IGNhbGxpbmcKKyAqIDxj
b2RlPnViaWRpdHJhbnNmb3JtX2Nsb3NlKCk8L2NvZGU+LgorICoKKyAqIEByZXR1cm4gQW4gZW1w
dHkgPGNvZGU+VUJpRGlUcmFuc2Zvcm08L2NvZGU+IG9iamVjdC4KKyAqIEBzdGFibGUgSUNVIDU4
CisgKi8KK1VfU1RBQkxFIFVCaURpVHJhbnNmb3JtKiBVX0VYUE9SVDIKK3ViaWRpdHJhbnNmb3Jt
X29wZW4oVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CisKKy8qKgorICogRGVhbGxvY2F0ZXMgdGhl
IGdpdmVuIDxjb2RlPlVCaURpVHJhbnNmb3JtPC9jb2RlPiBvYmplY3QuCisgKiBAc3RhYmxlIElD
VSA1OAorICovCitVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgordWJpZGl0cmFuc2Zvcm1fY2xvc2Uo
VUJpRGlUcmFuc2Zvcm0gKnBCaWRpVHJhbnNmb3JtKTsKKworI2lmIFVfU0hPV19DUExVU1BMVVNf
QVBJCisKK1VfTkFNRVNQQUNFX0JFR0lOCisKKy8qKgorICogXGNsYXNzIExvY2FsVUJpRGlUcmFu
c2Zvcm1Qb2ludGVyCisgKiAiU21hcnQgcG9pbnRlciIgY2xhc3MsIGNsb3NlcyBhIFVCaURpVHJh
bnNmb3JtIHZpYSB1YmlkaXRyYW5zZm9ybV9jbG9zZSgpLgorICogRm9yIG1vc3QgbWV0aG9kcyBz
ZWUgdGhlIExvY2FsUG9pbnRlckJhc2UgYmFzZSBjbGFzcy4KKyAqCisgKiBAc2VlIExvY2FsUG9p
bnRlckJhc2UKKyAqIEBzZWUgTG9jYWxQb2ludGVyCisgKiBAc3RhYmxlIElDVSA1OAorICovCitV
X0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVQmlEaVRyYW5zZm9ybVBvaW50ZXIsIFVC
aURpVHJhbnNmb3JtLCB1YmlkaXRyYW5zZm9ybV9jbG9zZSk7CisKK1VfTkFNRVNQQUNFX0VORAor
CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vi
cmsuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJyay5oCmluZGV4IDliZGI0ZDVkOWRlMzE4
OGUzZmVkNzJlMzllZmViNzUyYjVkYTViMDQuLjYwMDMyOGM0OWM2NmJjMTkzNGIwZjFlNDFiNGY4
MjZmZWEyZjVhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJyay5oCisr
KyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJyay5oCkBAIC0xLDYgKzEsOCBAQAorLy8gwqkg
MjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0
ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKLSogQ29weXJpZ2h0IChDKSAxOTk2LTIwMTQsIEludGVybmF0
aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4KKyogQ29weXJp
Z2h0IChDKSAxOTk2LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9y
YXRpb24gYW5kIG90aGVycy4KICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgogKi8KQEAgLTQ1LDEwICs0NywyMCBAQAogICogd2hlbiBsaW5lLXdyYXBwaW5nLiBU
aGUgbWVjaGFuaXNtIGNvcnJlY3RseSBoYW5kbGVzIHB1bmN0dWF0aW9uIGFuZAogICogaHlwaGVu
YXRlZCB3b3Jkcy4KICAqIDxwPgorICogTm90ZTogVGhlIGxvY2FsZSBrZXl3b3JkICJsYiIgY2Fu
IGJlIHVzZWQgdG8gbW9kaWZ5IGxpbmUgYnJlYWsKKyAqIGJlaGF2aW9yIGFjY29yZGluZyB0byB0
aGUgQ1NTIGxldmVsIDMgbGluZS1icmVhayBvcHRpb25zLCBzZWUKKyAqIDxodHRwOi8vZGV2Lncz
Lm9yZy9jc3N3Zy9jc3MtdGV4dC8jbGluZS1icmVha2luZz4uIEZvciBleGFtcGxlOgorICogImph
QGxiPXN0cmljdCIsICJ6aEBsYj1sb29zZSIuCisgKiA8cD4KICAqIFNlbnRlbmNlIGJvdW5kYXJ5
IGFuYWx5c2lzIGFsbG93cyBzZWxlY3Rpb24gd2l0aCBjb3JyZWN0CiAgKiBpbnRlcnByZXRhdGlv
biBvZiBwZXJpb2RzIHdpdGhpbiBudW1iZXJzIGFuZCBhYmJyZXZpYXRpb25zLCBhbmQKICAqIHRy
YWlsaW5nIHB1bmN0dWF0aW9uIG1hcmtzIHN1Y2ggYXMgcXVvdGF0aW9uIG1hcmtzIGFuZCBwYXJl
bnRoZXNlcy4KICAqIDxwPgorICogTm90ZTogVGhlIGxvY2FsZSBrZXl3b3JkICJzcyIgY2FuIGJl
IHVzZWQgdG8gZW5hYmxlIHVzZSBvZgorICogc2VnbWVudGF0aW9uIHN1cHByZXNzaW9uIGRhdGEg
KHByZXZlbnRpbmcgYnJlYWtzIGluIEVuZ2xpc2ggYWZ0ZXIKKyAqIGFiYnJldmlhdGlvbnMgc3Vj
aCBhcyAiTXIuIiBvciAiRXN0LiIsIGZvciBleGFtcGxlKSwgYXMgZm9sbG93czoKKyAqICJlbkBz
cz1zdGFuZGFyZCIuCisgKiA8cD4KICAqIFdvcmQgYm91bmRhcnkgYW5hbHlzaXMgaXMgdXNlZCBi
eSBzZWFyY2ggYW5kIHJlcGxhY2UgZnVuY3Rpb25zLCBhcwogICogd2VsbCBhcyB3aXRoaW4gdGV4
dCBlZGl0aW5nIGFwcGxpY2F0aW9ucyB0aGF0IGFsbG93IHRoZSB1c2VyIHRvCiAgKiBzZWxlY3Qg
d29yZHMgd2l0aCBhIGRvdWJsZSBjbGljay4gV29yZCBzZWxlY3Rpb24gcHJvdmlkZXMgY29ycmVj
dApAQCAtNjAsNyArNzIsNyBAQAogICogIkV4dGVuZGVkIEdyYXBoZW1lIENsdXN0ZXJzIiwgd2hp
Y2ggYXJlIGdyb3VwaW5ncyBvZiBjb2RlcG9pbnRzCiAgKiB0aGF0IHNob3VsZCBiZSB0cmVhdGVk
IGFzIGNoYXJhY3Rlci1saWtlIHVuaXRzIGZvciBtYW55IHRleHQgb3BlcmF0aW9ucy4KICAqIFBs
ZWFzZSBzZWUgVW5pY29kZSBTdGFuZGFyZCBBbm5leCAjMjksIFVuaWNvZGUgVGV4dCBTZWdtZW50
YXRpb24sCi0gKiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIyOS8gZm9yIGFkZGl0
aW9uYWwgaW5mb3JtYXRpb24gCisgKiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIy
OS8gZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KICAqIG9uIGdyYXBoZW1lIGNsdXN0ZXJzIGFu
ZCBndWlkZWxpbmVzIG9uIHRoZWlyIHVzZS4KICAqIDxwPgogICogVGl0bGUgYm91bmRhcnkgYW5h
bHlzaXMgbG9jYXRlcyBhbGwgcG9zaXRpb25zLApAQCAtMTA0LDggKzExNiwxMiBAQCB0eXBlZGVm
IGVudW0gVUJyZWFrSXRlcmF0b3JUeXBlIHsKICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuOCBVc2Ug
dGhlIHdvcmQgYnJlYWsgaXRlcmF0b3IgZm9yIHRpdGxlY2FzaW5nIGZvciBVbmljb2RlIDQgYW5k
IGxhdGVyLgogICAgKi8KICAgVUJSS19USVRMRSA9IDQsCi0jZW5kaWYgLyogVV9ISURFX0RFUFJF
Q0FURURfQVBJICovCi0gIFVCUktfQ09VTlQgPSA1CisgICAgLyoqCisgICAgICogT25lIG1vcmUg
dGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVUJyZWFrSXRlcmF0b3JUeXBlIHZhbHVlLgorICAgICAq
IEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGlt
ZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLworICAgIFVCUktfQ09VTlQgPSA1Cisj
ZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBVQnJlYWtJdGVyYXRvclR5cGU7CiAK
IC8qKiBWYWx1ZSBpbmRpY2F0aW5nIGFsbCB0ZXh0IGJvdW5kYXJpZXMgaGF2ZSBiZWVuIHJldHVy
bmVkLgpAQCAtMTIwLDcgKzEzNiwxMCBAQCB0eXBlZGVmIGVudW0gVUJyZWFrSXRlcmF0b3JUeXBl
IHsKICAqICB3b3JkLCB0byBhbGxvdyBmb3IgZnVydGhlciBzdWJkaXZpc2lvbnMgb2YgYSBjYXRl
Z29yeSBpbiBmdXR1cmUgcmVsZWFzZXMuCiAgKiAgQXBwbGljYXRpb25zIHNob3VsZCBjaGVjayBm
b3IgdGFnIHZhbHVlcyBmYWxsaW5nIHdpdGhpbiB0aGUgcmFuZ2UsIHJhdGhlcgogICogIHRoYW4g
Zm9yIHNpbmdsZSBpbmRpdmlkdWFsIHZhbHVlcy4KLSAqICBAc3RhYmxlIElDVSAyLjIKKyAqCisg
KiBUaGUgbnVtZXJpYyB2YWx1ZXMgb2YgYWxsIG9mIHRoZXNlIGNvbnN0YW50cyBhcmUgc3RhYmxl
ICh3aWxsIG5vdCBjaGFuZ2UpLgorICoKKyAqIEBzdGFibGUgSUNVIDIuMgogKi8KIHR5cGVkZWYg
ZW51bSBVV29yZEJyZWFrIHsKICAgICAvKiogVGFnIHZhbHVlIGZvciAid29yZHMiIHRoYXQgZG8g
bm90IGZpdCBpbnRvIGFueSBvZiBvdGhlciBjYXRlZ29yaWVzLgpAQCAtMTUzLDcgKzE3MiwxMCBA
QCB0eXBlZGVmIGVudW0gVVdvcmRCcmVhayB7CiAgKiAgd29yZCwgdG8gYWxsb3cgZm9yIGZ1cnRo
ZXIgc3ViZGl2aXNpb25zIG9mIGEgY2F0ZWdvcnkgaW4gZnV0dXJlIHJlbGVhc2VzLgogICogIEFw
cGxpY2F0aW9ucyBzaG91bGQgY2hlY2sgZm9yIHRhZyB2YWx1ZXMgZmFsbGluZyB3aXRoaW4gdGhl
IHJhbmdlLCByYXRoZXIKICAqICB0aGFuIGZvciBzaW5nbGUgaW5kaXZpZHVhbCB2YWx1ZXMuCi0g
KiAgQHN0YWJsZSBJQ1UgMi44CisgKgorICogVGhlIG51bWVyaWMgdmFsdWVzIG9mIGFsbCBvZiB0
aGVzZSBjb25zdGFudHMgYXJlIHN0YWJsZSAod2lsbCBub3QgY2hhbmdlKS4KKyAqCisgKiBAc3Rh
YmxlIElDVSAyLjgKICovCiB0eXBlZGVmIGVudW0gVUxpbmVCcmVha1RhZyB7CiAgICAgLyoqIFRh
ZyB2YWx1ZSBmb3Igc29mdCBsaW5lIGJyZWFrcywgcG9zaXRpb25zIGF0IHdoaWNoIGEgbGluZSBi
cmVhawpAQCAtMTc1LDcgKzE5NywxMCBAQCB0eXBlZGVmIGVudW0gVUxpbmVCcmVha1RhZyB7CiAg
KiAgc2VudGVuY2UsIHRvIGFsbG93IGZvciBmdXJ0aGVyIHN1YmRpdmlzaW9ucyBvZiBhIGNhdGVn
b3J5IGluIGZ1dHVyZSByZWxlYXNlcy4KICAqICBBcHBsaWNhdGlvbnMgc2hvdWxkIGNoZWNrIGZv
ciB0YWcgdmFsdWVzIGZhbGxpbmcgd2l0aGluIHRoZSByYW5nZSwgcmF0aGVyCiAgKiAgdGhhbiBm
b3Igc2luZ2xlIGluZGl2aWR1YWwgdmFsdWVzLgotICogIEBzdGFibGUgSUNVIDIuOAorICoKKyAq
IFRoZSBudW1lcmljIHZhbHVlcyBvZiBhbGwgb2YgdGhlc2UgY29uc3RhbnRzIGFyZSBzdGFibGUg
KHdpbGwgbm90IGNoYW5nZSkuCisgKgorICogQHN0YWJsZSBJQ1UgMi44CiAqLwogdHlwZWRlZiBl
bnVtIFVTZW50ZW5jZUJyZWFrVGFnIHsKICAgICAvKiogVGFnIHZhbHVlIGZvciBmb3Igc2VudGVu
Y2VzICBlbmRpbmcgd2l0aCBhIHNlbnRlbmNlIHRlcm1pbmF0b3IKQEAgLTIwMiw4ICsyMjcsMTEg
QEAgdHlwZWRlZiBlbnVtIFVTZW50ZW5jZUJyZWFrVGFnIHsKICAqIGFuZCBzZW50ZW5jZSBicmVh
a3MgaW4gdGV4dC4KICAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIFVCcmVha0l0ZXJhdG9yIHRv
IG9wZW46IG9uZSBvZiBVQlJLX0NIQVJBQ1RFUiwgVUJSS19XT1JELAogICogVUJSS19MSU5FLCBV
QlJLX1NFTlRFTkNFCi0gKiBAcGFyYW0gbG9jYWxlIFRoZSBsb2NhbGUgc3BlY2lmeWluZyB0aGUg
dGV4dC1icmVha2luZyBjb252ZW50aW9ucy4KLSAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJl
IGl0ZXJhdGVkIG92ZXIuCisgKiBAcGFyYW0gbG9jYWxlIFRoZSBsb2NhbGUgc3BlY2lmeWluZyB0
aGUgdGV4dC1icmVha2luZyBjb252ZW50aW9ucy4gTm90ZSB0aGF0CisgKiBsb2NhbGUga2V5cyBz
dWNoIGFzICJsYiIgYW5kICJzcyIgbWF5IGJlIHVzZWQgdG8gbW9kaWZ5IHRleHQgYnJlYWsgYmVo
YXZpb3IsCisgKiBzZWUgZ2VuZXJhbCBkaXNjdXNzaW9uIG9mIEJyZWFrSXRlcmF0b3IgQyBBUEku
CisgKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBiZSBpdGVyYXRlZCBvdmVyLiBNYXkgYmUgbnVs
bCwgaW4gd2hpY2ggY2FzZSB1YnJrX3NldFRleHQoKSBpcworICogICAgICAgIHVzZWQgdG8gc3Bl
Y2lmeSB0aGUgdGV4dCB0byBiZSBpdGVyYXRlZC4KICAqIEBwYXJhbSB0ZXh0TGVuZ3RoIFRoZSBu
dW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0ZXh0LCBvciAtMSBpZiBudWxsLXRlcm1pbmF0ZWQuCiAg
KiBAcGFyYW0gc3RhdHVzIEEgVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMuCiAgKiBA
cmV0dXJuIEEgVUJyZWFrSXRlcmF0b3IgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlLgpAQCAtMjQw
LDYgKzI2OCwzNCBAQCB1YnJrX29wZW5SdWxlcyhjb25zdCBVQ2hhciAgICAgKnJ1bGVzLAogICAg
ICAgICAgICAgICAgVVBhcnNlRXJyb3IgICAgICpwYXJzZUVyciwKICAgICAgICAgICAgICAgIFVF
cnJvckNvZGUgICAgICAqc3RhdHVzKTsKIAorI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCisvKioK
KyAqIE9wZW4gYSBuZXcgVUJyZWFrSXRlcmF0b3IgZm9yIGxvY2F0aW5nIHRleHQgYm91bmRhcmll
cyB1c2luZyBwcmVjb21waWxlZCBiaW5hcnkgcnVsZXMuCisgKiBPcGVuaW5nIGEgVUJyZWFrSXRl
cmF0b3IgdGhpcyB3YXkgaXMgc3Vic3RhbnRpYWxseSBmYXN0ZXIgdGhhbiB1c2luZyB1YnJrX29w
ZW5SdWxlcy4KKyAqIEJpbmFyeSBydWxlcyBtYXkgYmUgb2J0YWluZWQgdXNpbmcgdWJya19nZXRC
aW5hcnlSdWxlcy4gVGhlIGNvbXBpbGVkIHJ1bGVzIGFyZSBub3QKKyAqIGNvbXBhdGlibGUgYWNy
b3NzIGRpZmZlcmVudCBtYWpvciB2ZXJzaW9ucyBvZiBJQ1UsIG5vciBhY3Jvc3MgcGxhdGZvcm1z
IG9mIGRpZmZlcmVudAorICogZW5kaWFubmVzcyBvciBkaWZmZXJlbnQgYmFzZSBjaGFyYWN0ZXIg
c2V0IGZhbWlseSAoQVNDSUkgdnMgRUJDRElDKS4KKyAqIEBwYXJhbSBiaW5hcnlSdWxlcyBBIHNl
dCBvZiBjb21waWxlZCBiaW5hcnkgcnVsZXMgc3BlY2lmeWluZyB0aGUgdGV4dCBicmVha2luZwor
ICogICAgICAgICAgICAgICAgICAgIGNvbnZlbnRpb25zLiBPd25lcnNoaXAgb2YgdGhlIHN0b3Jh
Z2UgY29udGFpbmluZyB0aGUgY29tcGlsZWQKKyAqICAgICAgICAgICAgICAgICAgICBydWxlcyBy
ZW1haW5zIHdpdGggdGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uLiBUaGUgY29tcGlsZWQKKyAq
ICAgICAgICAgICAgICAgICAgICBydWxlcyBtdXN0IG5vdCBiZSBtb2RpZmllZCBvciBkZWxldGVk
IGR1cmluZyB0aGUgbGlmZSBvZiB0aGUKKyAqICAgICAgICAgICAgICAgICAgICBicmVhayBpdGVy
YXRvci4KKyAqIEBwYXJhbSBydWxlc0xlbmd0aCBUaGUgbGVuZ3RoIG9mIGJpbmFyeVJ1bGVzIGlu
IGJ5dGVzOyBtdXN0IGJlID49IDAuCisgKiBAcGFyYW0gdGV4dCAgICAgICAgVGhlIHRleHQgdG8g
YmUgaXRlcmF0ZWQgb3Zlci4gIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlCisgKiAgICAgICAg
ICAgICAgICAgICAgdWJya19zZXRUZXh0KCkgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSB0ZXh0IHRv
IGJlIGl0ZXJhdGVkLgorICogQHBhcmFtIHRleHRMZW5ndGggIFRoZSBudW1iZXIgb2YgY2hhcmFj
dGVycyBpbiB0ZXh0LCBvciAtMSBpZiBudWxsLXRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVz
ICAgICAgUG9pbnRlciB0byBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycy4KKyAqIEBy
ZXR1cm4gICAgICAgICAgICBVQnJlYWtJdGVyYXRvciBmb3IgdGhlIHNwZWNpZmllZCBydWxlcy4K
KyAqIEBzZWUgdWJya19nZXRCaW5hcnlSdWxlcworICogQGRyYWZ0IElDVSA1OQorICovCitVX0RS
QUZUIFVCcmVha0l0ZXJhdG9yKiBVX0VYUE9SVDIKK3Vicmtfb3BlbkJpbmFyeVJ1bGVzKGNvbnN0
IHVpbnQ4X3QgKmJpbmFyeVJ1bGVzLCBpbnQzMl90IHJ1bGVzTGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVUNoYXIgKiAgdGV4dCwgaW50MzJfdCB0ZXh0TGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqICAgc3RhdHVzKTsKKworI2VuZGlmICAvKiBVX0hJ
REVfRFJBRlRfQVBJICovCisKIC8qKgogICogVGhyZWFkIHNhZmUgY2xvbmluZyBvcGVyYXRpb24K
ICAqIEBwYXJhbSBiaSBpdGVyYXRvciB0byBiZSBjbG9uZWQKQEAgLTMwNCw3ICszNjAsMTEgQEAg
VV9OQU1FU1BBQ0VfRU5ECiAjZW5kaWYKIAogLyoqCi0gKiBTZXRzIGFuIGV4aXN0aW5nIGl0ZXJh
dG9yIHRvIHBvaW50IHRvIGEgbmV3IHBpZWNlIG9mIHRleHQKKyAqIFNldHMgYW4gZXhpc3Rpbmcg
aXRlcmF0b3IgdG8gcG9pbnQgdG8gYSBuZXcgcGllY2Ugb2YgdGV4dC4KKyAqIFRoZSBicmVhayBp
dGVyYXRvciByZXRhaW5zIGEgcG9pbnRlciB0byB0aGUgc3VwcGxpZWQgdGV4dC4KKyAqIFRoZSBj
YWxsZXIgbXVzdCBub3QgbW9kaWZ5IG9yIGRlbGV0ZSB0aGUgdGV4dCB3aGlsZSB0aGUgQnJlYWtJ
dGVyYXRvcgorICogcmV0YWlucyB0aGUgcmVmZXJlbmNlLgorICoKICAqIEBwYXJhbSBiaSBUaGUg
aXRlcmF0b3IgdG8gdXNlCiAgKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBiZSBzZXQKICAqIEBw
YXJhbSB0ZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIHRleHQKQEAgLTUzNSw2ICs1OTUsNDAg
QEAgdWJya19yZWZyZXNoVVRleHQoVUJyZWFrSXRlcmF0b3IgKmJpLAogICAgICAgICAgICAgICAg
ICAgICAgICBVVGV4dCAgICAgICAgICAqdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSAgICAgKnN0YXR1cyk7CiAKKworI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCisvKioK
KyAqIEdldCBhIGNvbXBpbGVkIGJpbmFyeSB2ZXJzaW9uIG9mIHRoZSBydWxlcyBzcGVjaWZ5aW5n
IHRoZSBiZWhhdmlvciBvZiBhIFVCcmVha0l0ZXJhdG9yLgorICogVGhlIGJpbmFyeSBydWxlcyBt
YXkgYmUgdXNlZCB3aXRoIHVicmtfb3BlbkJpbmFyeVJ1bGVzIHRvIG9wZW4gYSBuZXcgVUJyZWFr
SXRlcmF0b3IKKyAqIG1vcmUgcXVpY2tseSB0aGFuIHVzaW5nIHVicmtfb3BlblJ1bGVzLiBUaGUg
Y29tcGlsZWQgcnVsZXMgYXJlIG5vdCBjb21wYXRpYmxlIGFjcm9zcworICogZGlmZmVyZW50IG1h
am9yIHZlcnNpb25zIG9mIElDVSwgbm9yIGFjcm9zcyBwbGF0Zm9ybXMgb2YgZGlmZmVyZW50IGVu
ZGlhbm5lc3Mgb3IKKyAqIGRpZmZlcmVudCBiYXNlIGNoYXJhY3RlciBzZXQgZmFtaWx5IChBU0NJ
SSB2cyBFQkNESUMpLiBTdXBwb3J0cyBwcmVmbGlnaHRpbmcgKHdpdGgKKyAqIGJpbmFyeVJ1bGVz
PU5VTEwgYW5kIHJ1bGVzQ2FwYWNpdHk9MCkgdG8gZ2V0IHRoZSBydWxlcyBsZW5ndGggd2l0aG91
dCBjb3B5aW5nIHRoZW0gdG8KKyAqIHRoZSBiaW5hcnlSdWxlcyBidWZmZXIuIEhvd2V2ZXIsIHdo
ZXRoZXIgcHJlZmxpZ2h0aW5nIG9yIG5vdCwgaWYgdGhlIGFjdHVhbCBsZW5ndGgKKyAqIGlzIGdy
ZWF0ZXIgdGhhbiBJTlQzMl9NQVgsIHRoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgMCBhbmQgc2V0
cyAqc3RhdHVzIHRvCisgKiBVX0lOREVYX09VVE9GQk9VTkRTX0VSUk9SLgorCisgKiBAcGFyYW0g
YmkgICAgICAgICAgICBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgorICogQHBhcmFtIGJpbmFy
eVJ1bGVzICAgQnVmZmVyIHRvIHJlY2VpdmUgdGhlIGNvbXBpbGVkIGJpbmFyeSBydWxlczsgc2V0
IHRvIE5VTEwgZm9yCisgKiAgICAgICAgICAgICAgICAgICAgICBwcmVmbGlnaHRpbmcuCisgKiBA
cGFyYW0gcnVsZXNDYXBhY2l0eSBDYXBhY2l0eSAoaW4gYnl0ZXMpIG9mIHRoZSBiaW5hcnlSdWxl
cyBidWZmZXI7IHNldCB0byAwIGZvcgorICogICAgICAgICAgICAgICAgICAgICAgcHJlZmxpZ2h0
aW5nLiBNdXN0IGJlID49IDAuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgICBQb2ludGVyIHRvIFVF
cnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLCBzdWNoIGFzCisgKiAgICAgICAgICAgICAg
ICAgICAgICBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUiwgVV9JTkRFWF9PVVRPRkJPVU5EU19FUlJP
Uiwgb3IKKyAqICAgICAgICAgICAgICAgICAgICAgIFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUi4K
KyAqIEByZXR1cm4gICAgICAgICAgICAgIFRoZSBhY3R1YWwgYnl0ZSBsZW5ndGggb2YgdGhlIGJp
bmFyeSBydWxlcywgaWYgPD0gSU5UMzJfTUFYOworICogICAgICAgICAgICAgICAgICAgICAgb3Ro
ZXJ3aXNlIDAuIElmIG5vdCBwcmVmbGlnaHRpbmcgYW5kIHRoaXMgaXMgbGFyZ2VyIHRoYW4KKyAq
ICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzQ2FwYWNpdHksICpzdGF0dXMgd2lsbCBiZSBzZXQg
dG8gYW4gZXJyb3IuCisgKiBAc2VlIHVicmtfb3BlbkJpbmFyeVJ1bGVzCisgKiBAZHJhZnQgSUNV
IDU5CisgKi8KK1VfRFJBRlQgaW50MzJfdCBVX0VYUE9SVDIKK3VicmtfZ2V0QmluYXJ5UnVsZXMo
VUJyZWFrSXRlcmF0b3IgKmJpLAorICAgICAgICAgICAgICAgICAgICB1aW50OF90ICogICAgICAg
YmluYXJ5UnVsZXMsIGludDMyX3QgcnVsZXNDYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAg
VUVycm9yQ29kZSAqICAgIHN0YXR1cyk7CisKKyNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAq
LworCiAjZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0JSRUFLX0lURVJBVElPTiAqLwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNhbC5oIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91Y2FsLmgKaW5kZXggMzY4Mjg2MDcwOTlhNzZlMTY5MzM5OTJhNzk0Y2Nl
OGE5MDBiYzZlZS4uYzc2NWU3ODU5ZjU5ZjQ4OWI3ZjZkNGYxYmE5ZDI2M2QzNDJlY2JlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2FsLmgKKysrIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91Y2FsLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVz
cyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKQEAgLTQyMywxMCArNDI1LDEyIEBAIGVudW0gVUNh
bGVuZGFyRGF0ZUZpZWxkcyB7CiAgICAqLwogICBVQ0FMX0lTX0xFQVBfTU9OVEgsCiAKLSAgLyoq
Ci0gICAqIEZpZWxkIGNvdW50Ci0gICAqIEBzdGFibGUgSUNVIDIuNgotICAgKi8KKyAgICAvKiBE
byBub3QgY29uZGl0aW9uYWxpemUgdGhlIGZvbGxvd2luZyB3aXRoICNpZm5kZWYgVV9ISURFX0RF
UFJFQ0FURURfQVBJLAorICAgICAqIGl0IGlzIG5lZWRlZCBmb3IgbGF5b3V0IG9mIENhbGVuZGFy
LCBEYXRlRm9ybWF0LCBhbmQgb3RoZXIgb2JqZWN0cyAqLworICAgIC8qKgorICAgICAqIE9uZSBt
b3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVDYWxlbmRhckRhdGVGaWVsZHMgdmFsdWUuCisg
ICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3Zl
ciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgIFVDQUxfRklFTERfQ09V
TlQsCiAKICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNhc2VtYXAu
aCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNhc2VtYXAuaAppbmRleCBiMzdlMTY1ODg2OTdm
MWE5MzAxOTFlZTNkZjgxNmM2M2I3YmQzOGMxLi42YjI1M2UzZDYzODQ3NWU1MzUxNzkyODM0Njc5
MTRmMTgwYTZhNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjYXNlbWFw
LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2FzZW1hcC5oCkBAIC0xLDMgKzEsNSBA
QAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExp
Y2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0
bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC02LDcgKzgsNyBAQAogKgogKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIHVjYXNlbWFwLmgKLSogICBlbmNv
ZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAg
OCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpAQCAtMjAsOCArMjIsOSBAQAogI2Rl
ZmluZSBfX1VDQVNFTUFQX0hfXwogCiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKLSNpbmNs
dWRlICJ1bmljb2RlL3VzdHJpbmcuaCIKICNpbmNsdWRlICJ1bmljb2RlL2xvY2FscG9pbnRlci5o
IgorI2luY2x1ZGUgInVuaWNvZGUvc3RyaW5nb3B0aW9ucy5oIgorI2luY2x1ZGUgInVuaWNvZGUv
dXN0cmluZy5oIgogCiAvKioKICAqIFxmaWxlCkBAIC0xNDIsNDcgKzE0NSw2IEBAIHVjYXNlbWFw
X3NldExvY2FsZShVQ2FzZU1hcCAqY3NtLCBjb25zdCBjaGFyICpsb2NhbGUsIFVFcnJvckNvZGUg
KnBFcnJvckNvZGUpOwogVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKIHVjYXNlbWFwX3NldE9wdGlv
bnMoVUNhc2VNYXAgKmNzbSwgdWludDMyX3Qgb3B0aW9ucywgVUVycm9yQ29kZSAqcEVycm9yQ29k
ZSk7CiAKLS8qKgotICogRG8gbm90IGxvd2VyY2FzZSBub24taW5pdGlhbCBwYXJ0cyBvZiB3b3Jk
cyB3aGVuIHRpdGxlY2FzaW5nLgotICogT3B0aW9uIGJpdCBmb3IgdGl0bGVjYXNpbmcgQVBJcyB0
aGF0IHRha2UgYW4gb3B0aW9ucyBiaXQgc2V0LgotICoKLSAqIEJ5IGRlZmF1bHQsIHRpdGxlY2Fz
aW5nIHdpbGwgdGl0bGVjYXNlIHRoZSBmaXJzdCBjYXNlZCBjaGFyYWN0ZXIKLSAqIG9mIGEgd29y
ZCBhbmQgbG93ZXJjYXNlIGFsbCBvdGhlciBjaGFyYWN0ZXJzLgotICogV2l0aCB0aGlzIG9wdGlv
biwgdGhlIG90aGVyIGNoYXJhY3RlcnMgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gKgotICogQHNl
ZSB1Y2FzZW1hcF9zZXRPcHRpb25zCi0gKiBAc2VlIHVjYXNlbWFwX3RvVGl0bGUKLSAqIEBzZWUg
dWNhc2VtYXBfdXRmOFRvVGl0bGUKLSAqIEBzZWUgVW5pY29kZVN0cmluZzo6dG9UaXRsZQotICog
QHN0YWJsZSBJQ1UgMy44Ci0gKi8KLSNkZWZpbmUgVV9USVRMRUNBU0VfTk9fTE9XRVJDQVNFIDB4
MTAwCi0KLS8qKgotICogRG8gbm90IGFkanVzdCB0aGUgdGl0bGVjYXNpbmcgaW5kZXhlcyBmcm9t
IEJyZWFrSXRlcmF0b3I6Om5leHQoKSBpbmRleGVzOwotICogdGl0bGVjYXNlIGV4YWN0bHkgdGhl
IGNoYXJhY3RlcnMgYXQgYnJlYWtzIGZyb20gdGhlIGl0ZXJhdG9yLgotICogT3B0aW9uIGJpdCBm
b3IgdGl0bGVjYXNpbmcgQVBJcyB0aGF0IHRha2UgYW4gb3B0aW9ucyBiaXQgc2V0LgotICoKLSAq
IEJ5IGRlZmF1bHQsIHRpdGxlY2FzaW5nIHdpbGwgdGFrZSBlYWNoIGJyZWFrIGl0ZXJhdG9yIGlu
ZGV4LAotICogYWRqdXN0IGl0IGJ5IGxvb2tpbmcgZm9yIHRoZSBuZXh0IGNhc2VkIGNoYXJhY3Rl
ciwgYW5kIHRpdGxlY2FzZSB0aGF0IG9uZS4KLSAqIE90aGVyIGNoYXJhY3RlcnMgYXJlIGxvd2Vy
Y2FzZWQuCi0gKgotICogVGhpcyBmb2xsb3dzIFVuaWNvZGUgNCAmIDUgc2VjdGlvbiAzLjEzIERl
ZmF1bHQgQ2FzZSBPcGVyYXRpb25zOgotICoKLSAqIFIzICB0b1RpdGxlY2FzZShYKTogRmluZCB0
aGUgd29yZCBib3VuZGFyaWVzIGJhc2VkIG9uIFVuaWNvZGUgU3RhbmRhcmQgQW5uZXgKLSAqICMy
OSwgIlRleHQgQm91bmRhcmllcy4iIEJldHdlZW4gZWFjaCBwYWlyIG9mIHdvcmQgYm91bmRhcmll
cywgZmluZCB0aGUgZmlyc3QKLSAqIGNhc2VkIGNoYXJhY3RlciBGLiBJZiBGIGV4aXN0cywgbWFw
IEYgdG8gZGVmYXVsdF90aXRsZShGKTsgdGhlbiBtYXAgZWFjaAotICogc3Vic2VxdWVudCBjaGFy
YWN0ZXIgQyB0byBkZWZhdWx0X2xvd2VyKEMpLgotICoKLSAqIEBzZWUgdWNhc2VtYXBfc2V0T3B0
aW9ucwotICogQHNlZSB1Y2FzZW1hcF90b1RpdGxlCi0gKiBAc2VlIHVjYXNlbWFwX3V0ZjhUb1Rp
dGxlCi0gKiBAc2VlIFVuaWNvZGVTdHJpbmc6OnRvVGl0bGUKLSAqIEBzZWUgVV9USVRMRUNBU0Vf
Tk9fTE9XRVJDQVNFCi0gKiBAc3RhYmxlIElDVSAzLjgKLSAqLwotI2RlZmluZSBVX1RJVExFQ0FT
RV9OT19CUkVBS19BREpVU1RNRU5UIDB4MjAwCi0KICNpZiAhVUNPTkZJR19OT19CUkVBS19JVEVS
QVRJT04KIAogLyoqCkBAIC0yNDAsNyArMjAyLDcgQEAgdWNhc2VtYXBfc2V0QnJlYWtJdGVyYXRv
cihVQ2FzZU1hcCAqY3NtLCBVQnJlYWtJdGVyYXRvciAqaXRlclRvQWRvcHQsIFVFcnJvckNvZGUK
ICAqIFRoZSBzdGFuZGFyZCB0aXRsZWNhc2UgaXRlcmF0b3IgZm9yIHRoZSByb290IGxvY2FsZSBp
bXBsZW1lbnRzIHRoZQogICogYWxnb3JpdGhtIG9mIFVuaWNvZGUgVFIgMjEuCiAgKgotICogVGhp
cyBmdW5jdGlvbiB1c2VzIG9ubHkgdGhlIHNldFVUZXh0KCksIGZpcnN0KCksIG5leHQoKSBhbmQg
Y2xvc2UoKSBtZXRob2RzIG9mIHRoZQorICogVGhpcyBmdW5jdGlvbiB1c2VzIG9ubHkgdGhlIHNl
dFRleHQoKSwgZmlyc3QoKSBhbmQgbmV4dCgpIG1ldGhvZHMgb2YgdGhlCiAgKiBwcm92aWRlZCBi
cmVhayBpdGVyYXRvci4KICAqCiAgKiBUaGUgcmVzdWx0IG1heSBiZSBsb25nZXIgb3Igc2hvcnRl
ciB0aGFuIHRoZSBvcmlnaW5hbC4KQEAgLTI1MSw3ICsyMTMsNyBAQCB1Y2FzZW1hcF9zZXRCcmVh
a0l0ZXJhdG9yKFVDYXNlTWFwICpjc20sIFVCcmVha0l0ZXJhdG9yICppdGVyVG9BZG9wdCwgVUVy
cm9yQ29kZQogICogQHBhcmFtIGRlc3QgICAgICBBIGJ1ZmZlciBmb3IgdGhlIHJlc3VsdCBzdHJp
bmcuIFRoZSByZXN1bHQgd2lsbCBiZSBOVUwtdGVybWluYXRlZCBpZgogICogICAgICAgICAgICAg
ICAgICB0aGUgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KICAqICAgICAgICAgICAgICAgICAgVGhl
IGNvbnRlbnRzIGlzIHVuZGVmaW5lZCBpbiBjYXNlIG9mIGZhaWx1cmUuCi0gKiBAcGFyYW0gZGVz
dENhcGFjaXR5IFRoZSBzaXplIG9mIHRoZSBidWZmZXIgKG51bWJlciBvZiBieXRlcykuIElmIGl0
IGlzIDAsIHRoZW4KKyAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgVGhlIHNpemUgb2YgdGhlIGJ1ZmZl
ciAobnVtYmVyIG9mIFVDaGFycykuIElmIGl0IGlzIDAsIHRoZW4KICAqICAgICAgICAgICAgICAg
ICAgZGVzdCBtYXkgYmUgTlVMTCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgb25seSByZXR1cm4gdGhl
IGxlbmd0aCBvZiB0aGUgcmVzdWx0CiAgKiAgICAgICAgICAgICAgICAgIHdpdGhvdXQgd3JpdGlu
ZyBhbnkgb2YgdGhlIHJlc3VsdCBzdHJpbmcuCiAgKiBAcGFyYW0gc3JjICAgICAgIFRoZSBvcmln
aW5hbCBzdHJpbmcuCkBAIC0yNzAsNyArMjMyLDcgQEAgdWNhc2VtYXBfdG9UaXRsZShVQ2FzZU1h
cCAqY3NtLAogICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xl
bmd0aCwKICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CiAKLSNlbmRp
ZgorI2VuZGlmICAvLyBVQ09ORklHX05PX0JSRUFLX0lURVJBVElPTgogCiAvKioKICAqIExvd2Vy
Y2FzZSB0aGUgY2hhcmFjdGVycyBpbiBhIFVURi04IHN0cmluZy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdWNhdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2F0LmgK
aW5kZXggYWQ5ZjAzNzNhMzBkNzdmODVlOTliNDEwM2QwM2Y1NzY3YmUzODU2NS4uNGQxZmYzZjZi
MjhkMWVmMjkzMDc4MzQ0YzIyMjVmYmM2OWZiN2M0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91Y2F0LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2F0LmgKQEAg
LTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3Ro
ZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9j
b3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLTIw
MDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdWNoYXIuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNoYXIuaApp
bmRleCAxZDNhZTBkZDQzZjQzNWZiZjAxZWMyZGVlMGU1MTYzOTIxZDZlNTUxLi4zNjEzMzc0ZDlh
NDNhNWRmN2U4ZjMwMmRiNjFmM2ZiMjgxZTk0ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3VjaGFyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2hhci5oCkBA
IC0xLDYgKzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90
aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
Y29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAxOTk3
LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3B5cmlnaHQgKEMp
IDE5OTctMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0
aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpA
QCAtMjQsNiArMjYsNyBAQAogI2RlZmluZSBVQ0hBUl9ICiAKICNpbmNsdWRlICJ1bmljb2RlL3V0
eXBlcy5oIgorI2luY2x1ZGUgInVuaWNvZGUvc3RyaW5nb3B0aW9ucy5oIgogCiBVX0NERUNMX0JF
R0lOCiAKQEAgLTM5LDcgKzQyLDcgQEAgVV9DREVDTF9CRUdJTgogICogQHNlZSB1X2dldFVuaWNv
ZGVWZXJzaW9uCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotI2RlZmluZSBVX1VOSUNPREVfVkVS
U0lPTiAiNy4wIgorI2RlZmluZSBVX1VOSUNPREVfVkVSU0lPTiAiMTAuMCIKIAogLyoqCiAgKiBc
ZmlsZQpAQCAtMTQ2LDggKzE0OSw5IEBAIFVfQ0RFQ0xfQkVHSU4KICAqCiAgKiBUaGUgcHJvcGVy
dGllcyBBUElzIGFyZSBpbnRlbmRlZCB0byByZWZsZWN0IFVuaWNvZGUgcHJvcGVydGllcyBhcyBk
ZWZpbmVkCiAgKiBpbiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgKFVDRCkgYW5kIFVu
aWNvZGUgVGVjaG5pY2FsIFJlcG9ydHMgKFVUUikuCi0gKiBGb3IgZGV0YWlscyBhYm91dCB0aGUg
cHJvcGVydGllcyBzZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy91Y2QvIC4KLSAqIEZvciBuYW1l
cyBvZiBVbmljb2RlIHByb3BlcnRpZXMgc2VlIHRoZSBVQ0QgZmlsZSBQcm9wZXJ0eUFsaWFzZXMu
dHh0LgorICoKKyAqIEZvciBkZXRhaWxzIGFib3V0IHRoZSBwcm9wZXJ0aWVzIHNlZQorICogVUFY
ICM0NDogVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgKGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
cmVwb3J0cy90cjQ0LykuCiAgKgogICogSW1wb3J0YW50OiBJZiBJQ1UgaXMgYnVpbHQgd2l0aCBV
Q0QgZmlsZXMgZnJvbSBVbmljb2RlIHZlcnNpb25zIGJlbG93LCBlLmcuLCAzLjIsCiAgKiB0aGVu
IHByb3BlcnRpZXMgbWFya2VkIHdpdGggIm5ldyBpbiBVbmljb2RlIDMuMiIgYXJlIG5vdCBvciBu
b3QgZnVsbHkgYXZhaWxhYmxlLgpAQCAtMzk3LDggKzQwMSw1OCBAQCB0eXBlZGVmIGVudW0gVVBy
b3BlcnR5IHsKICAgICBVQ0hBUl9DSEFOR0VTX1dIRU5fQ0FTRU1BUFBFRD01NSwKICAgICAvKiog
QmluYXJ5IHByb3BlcnR5IENoYW5nZXNfV2hlbl9ORktDX0Nhc2Vmb2xkZWQuIEBzdGFibGUgSUNV
IDQuNCAqLwogICAgIFVDSEFSX0NIQU5HRVNfV0hFTl9ORktDX0NBU0VGT0xERUQ9NTYsCi0gICAg
LyoqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIGJpbmFyeSBVbmljb2RlIHBy
b3BlcnRpZXMuIEBzdGFibGUgSUNVIDIuMSAqLwotICAgIFVDSEFSX0JJTkFSWV9MSU1JVD01NywK
KyAgICAvKioKKyAgICAgKiBCaW5hcnkgcHJvcGVydHkgRW1vamkuCisgICAgICogU2VlIGh0dHA6
Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjUxLyNFbW9qaV9Qcm9wZXJ0aWVzCisgICAgICoK
KyAgICAgKiBAc3RhYmxlIElDVSA1NworICAgICAqLworICAgIFVDSEFSX0VNT0pJPTU3LAorICAg
IC8qKgorICAgICAqIEJpbmFyeSBwcm9wZXJ0eSBFbW9qaV9QcmVzZW50YXRpb24uCisgICAgICog
U2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjUxLyNFbW9qaV9Qcm9wZXJ0aWVz
CisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSA1NworICAgICAqLworICAgIFVDSEFSX0VNT0pJ
X1BSRVNFTlRBVElPTj01OCwKKyAgICAvKioKKyAgICAgKiBCaW5hcnkgcHJvcGVydHkgRW1vamlf
TW9kaWZpZXIuCisgICAgICogU2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjUx
LyNFbW9qaV9Qcm9wZXJ0aWVzCisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSA1NworICAgICAq
LworICAgIFVDSEFSX0VNT0pJX01PRElGSUVSPTU5LAorICAgIC8qKgorICAgICAqIEJpbmFyeSBw
cm9wZXJ0eSBFbW9qaV9Nb2RpZmllcl9CYXNlLgorICAgICAqIFNlZSBodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL3JlcG9ydHMvdHI1MS8jRW1vamlfUHJvcGVydGllcworICAgICAqCisgICAgICogQHN0
YWJsZSBJQ1UgNTcKKyAgICAgKi8KKyAgICBVQ0hBUl9FTU9KSV9NT0RJRklFUl9CQVNFPTYwLAor
ICAgIC8qKgorICAgICAqIEJpbmFyeSBwcm9wZXJ0eSBFbW9qaV9Db21wb25lbnQuCisgICAgICog
U2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjUxLyNFbW9qaV9Qcm9wZXJ0aWVz
CisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSA2MAorICAgICAqLworICAgIFVDSEFSX0VNT0pJ
X0NPTVBPTkVOVD02MSwKKyAgICAvKioKKyAgICAgKiBCaW5hcnkgcHJvcGVydHkgUmVnaW9uYWxf
SW5kaWNhdG9yLgorICAgICAqIEBzdGFibGUgSUNVIDYwCisgICAgICovCisgICAgVUNIQVJfUkVH
SU9OQUxfSU5ESUNBVE9SPTYyLAorICAgIC8qKgorICAgICAqIEJpbmFyeSBwcm9wZXJ0eSBQcmVw
ZW5kZWRfQ29uY2F0ZW5hdGlvbl9NYXJrLgorICAgICAqIEBzdGFibGUgSUNVIDYwCisgICAgICov
CisgICAgVUNIQVJfUFJFUEVOREVEX0NPTkNBVEVOQVRJT05fTUFSSz02MywKKyNpZm5kZWYgVV9I
SURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgbGFz
dCBjb25zdGFudCBmb3IgYmluYXJ5IFVuaWNvZGUgcHJvcGVydGllcy4KKyAgICAgKiBAZGVwcmVj
YXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJ
Q1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KKyAgICBVQ0hBUl9CSU5BUllfTElNSVQsCisjZW5k
aWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogCiAgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVy
dHkgQmlkaV9DbGFzcy4KICAgICAgICAgU2FtZSBhcyB1X2NoYXJEaXJlY3Rpb24sIHJldHVybnMg
VUNoYXJEaXJlY3Rpb24gdmFsdWVzLiBAc3RhYmxlIElDVSAyLjIgKi8KQEAgLTQ4NSw4ICs1Mzks
MTMgQEAgdHlwZWRlZiBlbnVtIFVQcm9wZXJ0eSB7CiAgICAgICAgIChodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL3JlcG9ydHMvdHI5LykKICAgICAgICAgUmV0dXJucyBVQmlkaVBhaXJlZEJyYWNrZXRU
eXBlIHZhbHVlcy4gQHN0YWJsZSBJQ1UgNTIgKi8KICAgICBVQ0hBUl9CSURJX1BBSVJFRF9CUkFD
S0VUX1RZUEU9MHgxMDE1LAotICAgIC8qKiBPbmUgbW9yZSB0aGFuIHRoZSBsYXN0IGNvbnN0YW50
IGZvciBlbnVtZXJhdGVkL2ludGVnZXIgVW5pY29kZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElDVSAy
LjIgKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25l
IG1vcmUgdGhhbiB0aGUgbGFzdCBjb25zdGFudCBmb3IgZW51bWVyYXRlZC9pbnRlZ2VyIFVuaWNv
ZGUgcHJvcGVydGllcy4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFs
dWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8K
ICAgICBVQ0hBUl9JTlRfTElNSVQ9MHgxMDE2LAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRF
RF9BUEkKIAogICAgIC8qKiBCaXRtYXNrIHByb3BlcnR5IEdlbmVyYWxfQ2F0ZWdvcnlfTWFzay4K
ICAgICAgICAgVGhpcyBpcyB0aGUgR2VuZXJhbF9DYXRlZ29yeSBwcm9wZXJ0eSByZXR1cm5lZCBh
cyBhIGJpdCBtYXNrLgpAQCAtNDk5LDE2ICs1NTgsMjYgQEAgdHlwZWRlZiBlbnVtIFVQcm9wZXJ0
eSB7CiAgICAgVUNIQVJfR0VORVJBTF9DQVRFR09SWV9NQVNLPTB4MjAwMCwKICAgICAvKiogRmly
c3QgY29uc3RhbnQgZm9yIGJpdC1tYXNrIFVuaWNvZGUgcHJvcGVydGllcy4gQHN0YWJsZSBJQ1Ug
Mi40ICovCiAgICAgVUNIQVJfTUFTS19TVEFSVD1VQ0hBUl9HRU5FUkFMX0NBVEVHT1JZX01BU0ss
Ci0gICAgLyoqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIGJpdC1tYXNrIFVu
aWNvZGUgcHJvcGVydGllcy4gQHN0YWJsZSBJQ1UgMi40ICovCisjaWZuZGVmIFVfSElERV9ERVBS
RUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3Rh
bnQgZm9yIGJpdC1tYXNrIFVuaWNvZGUgcHJvcGVydGllcy4KKyAgICAgKiBAZGVwcmVjYXRlZCBJ
Q1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlj
a2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVQ0hBUl9NQVNLX0xJTUlUPTB4MjAwMSwKKyNlbmRp
ZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiAKICAgICAvKiogRG91YmxlIHByb3BlcnR5IE51
bWVyaWNfVmFsdWUuCiAgICAgICAgIENvcnJlc3BvbmRzIHRvIHVfZ2V0TnVtZXJpY1ZhbHVlLiBA
c3RhYmxlIElDVSAyLjQgKi8KICAgICBVQ0hBUl9OVU1FUklDX1ZBTFVFPTB4MzAwMCwKICAgICAv
KiogRmlyc3QgY29uc3RhbnQgZm9yIGRvdWJsZSBVbmljb2RlIHByb3BlcnRpZXMuIEBzdGFibGUg
SUNVIDIuNCAqLwogICAgIFVDSEFSX0RPVUJMRV9TVEFSVD1VQ0hBUl9OVU1FUklDX1ZBTFVFLAot
ICAgIC8qKiBPbmUgbW9yZSB0aGFuIHRoZSBsYXN0IGNvbnN0YW50IGZvciBkb3VibGUgVW5pY29k
ZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElDVSAyLjQgKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FU
RURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgbGFzdCBjb25zdGFudCBm
b3IgZG91YmxlIFVuaWNvZGUgcHJvcGVydGllcy4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTgg
VGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMx
MjQyMC4KKyAgICAgKi8KICAgICBVQ0hBUl9ET1VCTEVfTElNSVQ9MHgzMDAxLAorI2VuZGlmICAv
LyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIAogICAgIC8qKiBTdHJpbmcgcHJvcGVydHkgQWdlLgog
ICAgICAgICBDb3JyZXNwb25kcyB0byB1X2NoYXJBZ2UuIEBzdGFibGUgSUNVIDIuNCAqLwpAQCAt
NTYwLDggKzYyOSwxMyBAQCB0eXBlZGVmIGVudW0gVVByb3BlcnR5IHsKICAgICAvKiogU3RyaW5n
IHByb3BlcnR5IEJpZGlfUGFpcmVkX0JyYWNrZXQgKG5ldyBpbiBVbmljb2RlIDYuMykuCiAgICAg
ICAgIENvcnJlc3BvbmRzIHRvIHVfZ2V0QmlkaVBhaXJlZEJyYWNrZXQuIEBzdGFibGUgSUNVIDUy
ICovCiAgICAgVUNIQVJfQklESV9QQUlSRURfQlJBQ0tFVD0weDQwMEQsCi0gICAgLyoqIE9uZSBt
b3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIHN0cmluZyBVbmljb2RlIHByb3BlcnRpZXMu
IEBzdGFibGUgSUNVIDIuNCAqLworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAv
KioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBsYXN0IGNvbnN0YW50IGZvciBzdHJpbmcgVW5p
Y29kZSBwcm9wZXJ0aWVzLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2
YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAq
LwogICAgIFVDSEFSX1NUUklOR19MSU1JVD0weDQwMEUsCisjZW5kaWYgIC8vIFVfSElERV9ERVBS
RUNBVEVEX0FQSQogCiAgICAgLyoqIE1pc2NlbGxhbmVvdXMgcHJvcGVydHkgU2NyaXB0X0V4dGVu
c2lvbnMgKG5ldyBpbiBVbmljb2RlIDYuMCkuCiAgICAgICAgIFNvbWUgY2hhcmFjdGVycyBhcmUg
Y29tbW9ubHkgdXNlZCBpbiBtdWx0aXBsZSBzY3JpcHRzLgpAQCAtNTcxLDkgKzY0NSwxNCBAQCB0
eXBlZGVmIGVudW0gVVByb3BlcnR5IHsKICAgICBVQ0hBUl9TQ1JJUFRfRVhURU5TSU9OUz0weDcw
MDAsCiAgICAgLyoqIEZpcnN0IGNvbnN0YW50IGZvciBVbmljb2RlIHByb3BlcnRpZXMgd2l0aCB1
bnVzdWFsIHZhbHVlIHR5cGVzLiBAc3RhYmxlIElDVSA0LjYgKi8KICAgICBVQ0hBUl9PVEhFUl9Q
Uk9QRVJUWV9TVEFSVD1VQ0hBUl9TQ1JJUFRfRVhURU5TSU9OUywKLSAgICAvKiogT25lIG1vcmUg
dGhhbiB0aGUgbGFzdCBjb25zdGFudCBmb3IgVW5pY29kZSBwcm9wZXJ0aWVzIHdpdGggdW51c3Vh
bCB2YWx1ZSB0eXBlcy4KLSAgICAgKiBAc3RhYmxlIElDVSA0LjYgKi8KKyNpZm5kZWYgVV9ISURF
X0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgbGFzdCBj
b25zdGFudCBmb3IgVW5pY29kZSBwcm9wZXJ0aWVzIHdpdGggdW51c3VhbCB2YWx1ZSB0eXBlcy4K
KyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBv
dmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVQ0hBUl9PVEhF
Ul9QUk9QRVJUWV9MSU1JVD0weDcwMDEsCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQ
SQorCiAgICAgLyoqIFJlcHJlc2VudHMgYSBub25leGlzdGVudCBvciBpbnZhbGlkIHByb3BlcnR5
IG9yIHByb3BlcnR5IHZhbHVlLiBAc3RhYmxlIElDVSAyLjQgKi8KICAgICBVQ0hBUl9JTlZBTElE
X0NPREUgPSAtMQogfSBVUHJvcGVydHk7CkBAIC02NTQsNyArNzMzLDEzIEBAIHR5cGVkZWYgZW51
bSBVQ2hhckNhdGVnb3J5CiAgICAgVV9JTklUSUFMX1BVTkNUVUFUSU9OICAgICA9IDI4LAogICAg
IC8qKiBQZiBAc3RhYmxlIElDVSAyLjAgKi8KICAgICBVX0ZJTkFMX1BVTkNUVUFUSU9OICAgICAg
ID0gMjksCi0gICAgLyoqIE9uZSBoaWdoZXIgdGhhbiB0aGUgbGFzdCBlbnVtIFVDaGFyQ2F0ZWdv
cnkgY29uc3RhbnQuIEBzdGFibGUgSUNVIDIuMCAqLworICAgIC8qKgorICAgICAqIE9uZSBoaWdo
ZXIgdGhhbiB0aGUgbGFzdCBlbnVtIFVDaGFyQ2F0ZWdvcnkgY29uc3RhbnQuCisgICAgICogVGhp
cyBudW1lcmljIHZhbHVlIGlzIHN0YWJsZSAod2lsbCBub3QgY2hhbmdlKSwgc2VlCisgICAgICog
aHR0cDovL3d3dy51bmljb2RlLm9yZy9wb2xpY2llcy9zdGFiaWxpdHlfcG9saWN5Lmh0bWwjUHJv
cGVydHlfVmFsdWUKKyAgICAgKgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLwogICAg
IFVfQ0hBUl9DQVRFR09SWV9DT1VOVAogfSBVQ2hhckNhdGVnb3J5OwogCkBAIC04MjgsOCArOTEz
LDE1IEBAIHR5cGVkZWYgZW51bSBVQ2hhckRpcmVjdGlvbiB7CiAgICAgVV9SSUdIVF9UT19MRUZU
X0lTT0xBVEUgICAgICAgPSAyMSwKICAgICAvKiogUERJIEBzdGFibGUgSUNVIDUyICovCiAgICAg
VV9QT1BfRElSRUNUSU9OQUxfSVNPTEFURSAgICAgPSAyMiwKLSAgICAvKiogQHN0YWJsZSBJQ1Ug
Mi4wICovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9u
ZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3QgVUNoYXJEaXJlY3Rpb24gdmFsdWUuCisgICAgICogVGhl
IGhpZ2hlc3QgdmFsdWUgaXMgYXZhaWxhYmxlIHZpYSB1X2dldEludFByb3BlcnR5TWF4VmFsdWUo
VUNIQVJfQklESV9DTEFTUykuCisgICAgICoKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhl
IG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQy
MC4KKyAgICAgKi8KICAgICBVX0NIQVJfRElSRUNUSU9OX0NPVU5UCisjZW5kaWYgIC8vIFVfSElE
RV9ERVBSRUNBVEVEX0FQSQogfSBVQ2hhckRpcmVjdGlvbjsKIAogLyoqCkBAIC04NTEsOCArOTQz
LDE1IEBAIHR5cGVkZWYgZW51bSBVQmlkaVBhaXJlZEJyYWNrZXRUeXBlIHsKICAgICBVX0JQVF9P
UEVOLAogICAgIC8qKiBDbG9zZSBwYWlyZWQgYnJhY2tldC4gQHN0YWJsZSBJQ1UgNTIgKi8KICAg
ICBVX0JQVF9DTE9TRSwKLSAgICAvKiogQHN0YWJsZSBJQ1UgNTIgKi8KKyNpZm5kZWYgVV9ISURF
X0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVz
dCBub3JtYWwgVUJpZGlQYWlyZWRCcmFja2V0VHlwZSB2YWx1ZS4KKyAgICAgKiBUaGUgaGlnaGVz
dCB2YWx1ZSBpcyBhdmFpbGFibGUgdmlhIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShVQ0hBUl9C
SURJX1BBSVJFRF9CUkFDS0VUX1RZUEUpLgorICAgICAqCisgICAgICogQGRlcHJlY2F0ZWQgSUNV
IDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tl
dCAjMTI0MjAuCisgICAgICovCiAgICAgVV9CUFRfQ09VTlQgLyogMyAqLworI2VuZGlmICAvLyBV
X0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVUJpZGlQYWlyZWRCcmFja2V0VHlwZTsKIAogLyoqCkBA
IC0xMTgzLDcgKzEyODIsNyBAQCBlbnVtIFVCbG9ja0NvZGUgewogICAgICAqIFVuaWNvZGUgNC4w
LjEgcmVuYW1lcyB0aGUgIkN5cmlsbGljIFN1cHBsZW1lbnRhcnkiIGJsb2NrIHRvICJDeXJpbGxp
YyBTdXBwbGVtZW50Ii4KICAgICAgKiBAc3RhYmxlIElDVSAyLjIKICAgICAgKi8KLSAgICBVQkxP
Q0tfQ1lSSUxMSUNfU1VQUExFTUVOVEFSWSA9IFVCTE9DS19DWVJJTExJQ19TVVBQTEVNRU5ULCAK
KyAgICBVQkxPQ0tfQ1lSSUxMSUNfU1VQUExFTUVOVEFSWSA9IFVCTE9DS19DWVJJTExJQ19TVVBQ
TEVNRU5ULAogICAgIC8qKiBAc3RhYmxlIElDVSAyLjIgKi8KICAgICBVQkxPQ0tfVEFHQUxPRyA9
IDk4LCAvKlsxNzAwXSovCiAgICAgLyoqIEBzdGFibGUgSUNVIDIuMiAqLwpAQCAtMTUxOSw4ICsx
NjE4LDgwIEBAIGVudW0gVUJsb2NrQ29kZSB7CiAgICAgLyoqIEBzdGFibGUgSUNVIDU0ICovCiAg
ICAgVUJMT0NLX1dBUkFOR19DSVRJID0gMjUyLCAvKlsxMThBMF0qLwogCi0gICAgLyoqIEBzdGFi
bGUgSUNVIDIuMCAqLwotICAgIFVCTE9DS19DT1VOVCA9IDI1MywKKyAgICAvKiBOZXcgYmxvY2tz
IGluIFVuaWNvZGUgOC4wICovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgNTYgKi8KKyAgICBVQkxP
Q0tfQUhPTSA9IDI1MywgLypbMTE3MDBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTYgKi8KKyAg
ICBVQkxPQ0tfQU5BVE9MSUFOX0hJRVJPR0xZUEhTID0gMjU0LCAvKlsxNDQwMF0qLworICAgIC8q
KiBAc3RhYmxlIElDVSA1NiAqLworICAgIFVCTE9DS19DSEVST0tFRV9TVVBQTEVNRU5UID0gMjU1
LCAvKltBQjcwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU2ICovCisgICAgVUJMT0NLX0NKS19V
TklGSUVEX0lERU9HUkFQSFNfRVhURU5TSU9OX0UgPSAyNTYsIC8qWzJCODIwXSovCisgICAgLyoq
IEBzdGFibGUgSUNVIDU2ICovCisgICAgVUJMT0NLX0VBUkxZX0RZTkFTVElDX0NVTkVJRk9STSA9
IDI1NywgLypbMTI0ODBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTYgKi8KKyAgICBVQkxPQ0tf
SEFUUkFOID0gMjU4LCAvKlsxMDhFMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSA1NiAqLworICAg
IFVCTE9DS19NVUxUQU5JID0gMjU5LCAvKlsxMTI4MF0qLworICAgIC8qKiBAc3RhYmxlIElDVSA1
NiAqLworICAgIFVCTE9DS19PTERfSFVOR0FSSUFOID0gMjYwLCAvKlsxMEM4MF0qLworICAgIC8q
KiBAc3RhYmxlIElDVSA1NiAqLworICAgIFVCTE9DS19TVVBQTEVNRU5UQUxfU1lNQk9MU19BTkRf
UElDVE9HUkFQSFMgPSAyNjEsIC8qWzFGOTAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU2ICov
CisgICAgVUJMT0NLX1NVVFRPTl9TSUdOV1JJVElORyA9IDI2MiwgLypbMUQ4MDBdKi8KKworICAg
IC8qIE5ldyBibG9ja3MgaW4gVW5pY29kZSA5LjAgKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSA1
OCAqLworICAgIFVCTE9DS19BRExBTSA9IDI2MywgLypbMUU5MDBdKi8KKyAgICAvKiogQHN0YWJs
ZSBJQ1UgNTggKi8KKyAgICBVQkxPQ0tfQkhBSUtTVUtJID0gMjY0LCAvKlsxMUMwMF0qLworICAg
IC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAgIFVCTE9DS19DWVJJTExJQ19FWFRFTkRFRF9DID0g
MjY1LCAvKlsxQzgwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVUJMT0NLX0dM
QUdPTElUSUNfU1VQUExFTUVOVCA9IDI2NiwgLypbMUUwMDBdKi8KKyAgICAvKiogQHN0YWJsZSBJ
Q1UgNTggKi8KKyAgICBVQkxPQ0tfSURFT0dSQVBISUNfU1lNQk9MU19BTkRfUFVOQ1RVQVRJT04g
PSAyNjcsIC8qWzE2RkUwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVUJMT0NL
X01BUkNIRU4gPSAyNjgsIC8qWzExQzcwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisg
ICAgVUJMT0NLX01PTkdPTElBTl9TVVBQTEVNRU5UID0gMjY5LCAvKlsxMTY2MF0qLworICAgIC8q
KiBAc3RhYmxlIElDVSA1OCAqLworICAgIFVCTE9DS19ORVdBID0gMjcwLCAvKlsxMTQwMF0qLwor
ICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAgIFVCTE9DS19PU0FHRSA9IDI3MSwgLypbMTA0
QjBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTggKi8KKyAgICBVQkxPQ0tfVEFOR1VUID0gMjcy
LCAvKlsxNzAwMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAgIFVCTE9DS19UQU5H
VVRfQ09NUE9ORU5UUyA9IDI3MywgLypbMTg4MDBdKi8KKworICAgIC8vIE5ldyBibG9ja3MgaW4g
VW5pY29kZSAxMC4wCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgNjAgKi8KKyAgICBVQkxPQ0tfQ0pL
X1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fRiA9IDI3NCwgLypbMkNFQjBdKi8KKyAgICAv
KiogQHN0YWJsZSBJQ1UgNjAgKi8KKyAgICBVQkxPQ0tfS0FOQV9FWFRFTkRFRF9BID0gMjc1LCAv
KlsxQjEwMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSA2MCAqLworICAgIFVCTE9DS19NQVNBUkFN
X0dPTkRJID0gMjc2LCAvKlsxMUQwMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSA2MCAqLworICAg
IFVCTE9DS19OVVNIVSA9IDI3NywgLypbMUIxNzBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNjAg
Ki8KKyAgICBVQkxPQ0tfU09ZT01CTyA9IDI3OCwgLypbMTFBNTBdKi8KKyAgICAvKiogQHN0YWJs
ZSBJQ1UgNjAgKi8KKyAgICBVQkxPQ0tfU1lSSUFDX1NVUFBMRU1FTlQgPSAyNzksIC8qWzA4NjBd
Ki8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNjAgKi8KKyAgICBVQkxPQ0tfWkFOQUJBWkFSX1NRVUFS
RSA9IDI4MCwgLypbMTFBMDBdKi8KKworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAg
ICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVQmxvY2tDb2Rl
IHZhbHVlLgorICAgICAqIFRoZSBoaWdoZXN0IHZhbHVlIGlzIGF2YWlsYWJsZSB2aWEgdV9nZXRJ
bnRQcm9wZXJ0eU1heFZhbHVlKFVDSEFSX0JMT0NLKS4KKyAgICAgKgorICAgICAqIEBkZXByZWNh
dGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElD
VSB0aWNrZXQgIzEyNDIwLgorICAgICAqLworICAgIFVCTE9DS19DT1VOVCA9IDI4MSwKKyNlbmRp
ZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiAKICAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICov
CiAgICAgVUJMT0NLX0lOVkFMSURfQ09ERT0tMQpAQCAtMTU0OSw3ICsxNzIwLDE1IEBAIHR5cGVk
ZWYgZW51bSBVRWFzdEFzaWFuV2lkdGggewogICAgIFVfRUFfRlVMTFdJRFRILCAvKltGXSovCiAg
ICAgVV9FQV9OQVJST1csICAgIC8qW05hXSovCiAgICAgVV9FQV9XSURFLCAgICAgIC8qW1ddKi8K
KyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUg
dGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVUVhc3RBc2lhbldpZHRoIHZhbHVlLgorICAgICAqIFRo
ZSBoaWdoZXN0IHZhbHVlIGlzIGF2YWlsYWJsZSB2aWEgdV9nZXRJbnRQcm9wZXJ0eU1heFZhbHVl
KFVDSEFSX0VBU1RfQVNJQU5fV0lEVEgpLgorICAgICAqCisgICAgICogQGRlcHJlY2F0ZWQgSUNV
IDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tl
dCAjMTI0MjAuCisgICAgICovCiAgICAgVV9FQV9DT1VOVAorI2VuZGlmICAvLyBVX0hJREVfREVQ
UkVDQVRFRF9BUEkKIH0gVUVhc3RBc2lhbldpZHRoOwogCiAvKioKQEAgLTE1NjYsNyArMTc0NSw3
IEBAIHR5cGVkZWYgZW51bSBVRWFzdEFzaWFuV2lkdGggewogdHlwZWRlZiBlbnVtIFVDaGFyTmFt
ZUNob2ljZSB7CiAgICAgLyoqIFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUgKE5hbWUgcHJvcGVydHkp
LiBAc3RhYmxlIElDVSAyLjAgKi8KICAgICBVX1VOSUNPREVfQ0hBUl9OQU1FLAotI2lmbmRlZiBV
X0hJREVfREVQUkVDQVRFRF9BUEkgCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAg
IC8qKgogICAgICAqIFRoZSBVbmljb2RlXzFfTmFtZSBwcm9wZXJ0eSB2YWx1ZSB3aGljaCBpcyBv
ZiBsaXR0bGUgcHJhY3RpY2FsIHZhbHVlLgogICAgICAqIEJlZ2lubmluZyB3aXRoIElDVSA0OSwg
SUNVIEFQSXMgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBmb3IgdGhpcyBuYW1lIGNob2ljZS4KQEAg
LTE1NzgsOCArMTc1NywxMyBAQCB0eXBlZGVmIGVudW0gVUNoYXJOYW1lQ2hvaWNlIHsKICAgICBV
X0VYVEVOREVEX0NIQVJfTkFNRSA9IFVfVU5JQ09ERV9DSEFSX05BTUUrMiwKICAgICAvKiogQ29y
cmVjdGVkIG5hbWUgZnJvbSBOYW1lQWxpYXNlcy50eHQuIEBzdGFibGUgSUNVIDQuNCAqLwogICAg
IFVfQ0hBUl9OQU1FX0FMSUFTLAotICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyNpZm5kZWYg
VV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUg
aGlnaGVzdCBub3JtYWwgVUNoYXJOYW1lQ2hvaWNlIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVk
IElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0
aWNrZXQgIzEyNDIwLgorICAgICAqLwogICAgIFVfQ0hBUl9OQU1FX0NIT0lDRV9DT1VOVAorI2Vu
ZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVUNoYXJOYW1lQ2hvaWNlOwogCiAvKioK
QEAgLTE1OTgsNyArMTc4MiwxMyBAQCB0eXBlZGVmIGVudW0gVUNoYXJOYW1lQ2hvaWNlIHsKIHR5
cGVkZWYgZW51bSBVUHJvcGVydHlOYW1lQ2hvaWNlIHsKICAgICBVX1NIT1JUX1BST1BFUlRZX05B
TUUsCiAgICAgVV9MT05HX1BST1BFUlRZX05BTUUsCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVE
X0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVQ
cm9wZXJ0eU5hbWVDaG9pY2UgdmFsdWUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBu
dW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAu
CisgICAgICovCiAgICAgVV9QUk9QRVJUWV9OQU1FX0NIT0lDRV9DT1VOVAorI2VuZGlmICAvLyBV
X0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVVByb3BlcnR5TmFtZUNob2ljZTsKIAogLyoqCkBAIC0x
NjMyLDcgKzE4MjIsMTUgQEAgdHlwZWRlZiBlbnVtIFVEZWNvbXBvc2l0aW9uVHlwZSB7CiAgICAg
VV9EVF9TVVBFUiwgICAgICAgICAgICAgLypbc3VwXSovCiAgICAgVV9EVF9WRVJUSUNBTCwgICAg
ICAgICAgLypbdmVydF0qLwogICAgIFVfRFRfV0lERSwgICAgICAgICAgICAgIC8qW3dpZGVdKi8K
KyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUg
dGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVURlY29tcG9zaXRpb25UeXBlIHZhbHVlLgorICAgICAq
IFRoZSBoaWdoZXN0IHZhbHVlIGlzIGF2YWlsYWJsZSB2aWEgdV9nZXRJbnRQcm9wZXJ0eU1heFZh
bHVlKFVDSEFSX0RFQ09NUE9TSVRJT05fVFlQRSkuCisgICAgICoKKyAgICAgKiBAZGVwcmVjYXRl
ZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1Ug
dGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVX0RUX0NPVU5UIC8qIDE4ICovCisjZW5kaWYg
IC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBVRGVjb21wb3NpdGlvblR5cGU7CiAKIC8qKgpA
QCAtMTY1NCw3ICsxODUyLDE1IEBAIHR5cGVkZWYgZW51bSBVSm9pbmluZ1R5cGUgewogICAgIFVf
SlRfTEVGVF9KT0lOSU5HLCAgICAgIC8qW0xdKi8KICAgICBVX0pUX1JJR0hUX0pPSU5JTkcsICAg
ICAvKltSXSovCiAgICAgVV9KVF9UUkFOU1BBUkVOVCwgICAgICAgLypbVF0qLworI2lmbmRlZiBV
X0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBo
aWdoZXN0IG5vcm1hbCBVSm9pbmluZ1R5cGUgdmFsdWUuCisgICAgICogVGhlIGhpZ2hlc3QgdmFs
dWUgaXMgYXZhaWxhYmxlIHZpYSB1X2dldEludFByb3BlcnR5TWF4VmFsdWUoVUNIQVJfSk9JTklO
R19UWVBFKS4KKyAgICAgKgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2
YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAq
LwogICAgIFVfSlRfQ09VTlQgLyogNiAqLworI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9B
UEkKIH0gVUpvaW5pbmdUeXBlOwogCiAvKioKQEAgLTE3NTcsNyArMTk2MywzMSBAQCB0eXBlZGVm
IGVudW0gVUpvaW5pbmdHcm91cCB7CiAgICAgVV9KR19NQU5JQ0hBRUFOX1lPREgsICAvKio8IEBz
dGFibGUgSUNVIDU0ICovCiAgICAgVV9KR19NQU5JQ0hBRUFOX1pBWUlOLCAgLyoqPCBAc3RhYmxl
IElDVSA1NCAqLwogICAgIFVfSkdfU1RSQUlHSFRfV0FXLCAgLyoqPCBAc3RhYmxlIElDVSA1NCAq
LworICAgIFVfSkdfQUZSSUNBTl9GRUgsICAvKio8IEBzdGFibGUgSUNVIDU4ICovCisgICAgVV9K
R19BRlJJQ0FOX05PT04sICAvKio8IEBzdGFibGUgSUNVIDU4ICovCisgICAgVV9KR19BRlJJQ0FO
X1FBRiwgIC8qKjwgQHN0YWJsZSBJQ1UgNTggKi8KKworICAgIFVfSkdfTUFMQVlBTEFNX0JIQSwg
IC8qKjwgQHN0YWJsZSBJQ1UgNjAgKi8KKyAgICBVX0pHX01BTEFZQUxBTV9KQSwgIC8qKjwgQHN0
YWJsZSBJQ1UgNjAgKi8KKyAgICBVX0pHX01BTEFZQUxBTV9MTEEsICAvKio8IEBzdGFibGUgSUNV
IDYwICovCisgICAgVV9KR19NQUxBWUFMQU1fTExMQSwgIC8qKjwgQHN0YWJsZSBJQ1UgNjAgKi8K
KyAgICBVX0pHX01BTEFZQUxBTV9OR0EsICAvKio8IEBzdGFibGUgSUNVIDYwICovCisgICAgVV9K
R19NQUxBWUFMQU1fTk5BLCAgLyoqPCBAc3RhYmxlIElDVSA2MCAqLworICAgIFVfSkdfTUFMQVlB
TEFNX05OTkEsICAvKio8IEBzdGFibGUgSUNVIDYwICovCisgICAgVV9KR19NQUxBWUFMQU1fTllB
LCAgLyoqPCBAc3RhYmxlIElDVSA2MCAqLworICAgIFVfSkdfTUFMQVlBTEFNX1JBLCAgLyoqPCBA
c3RhYmxlIElDVSA2MCAqLworICAgIFVfSkdfTUFMQVlBTEFNX1NTQSwgIC8qKjwgQHN0YWJsZSBJ
Q1UgNjAgKi8KKyAgICBVX0pHX01BTEFZQUxBTV9UVEEsICAvKio8IEBzdGFibGUgSUNVIDYwICov
CisKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1v
cmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVUpvaW5pbmdHcm91cCB2YWx1ZS4KKyAgICAgKiBU
aGUgaGlnaGVzdCB2YWx1ZSBpcyBhdmFpbGFibGUgdmlhIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1
ZShVQ0hBUl9KT0lOSU5HX0dST1VQKS4KKyAgICAgKgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1
OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQg
IzEyNDIwLgorICAgICAqLwogICAgIFVfSkdfQ09VTlQKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJF
Q0FURURfQVBJCiB9IFVKb2luaW5nR3JvdXA7CiAKIC8qKgpAQCAtMTc4MywxMCArMjAxMywzMSBA
QCB0eXBlZGVmIGVudW0gVUdyYXBoZW1lQ2x1c3RlckJyZWFrIHsKICAgICBVX0dDQl9MVlQgPSA3
LCAgICAgICAgICAgICAgLypbTFZUXSovCiAgICAgVV9HQ0JfVCA9IDgsICAgICAgICAgICAgICAg
IC8qW1RdKi8KICAgICBVX0dDQl9WID0gOSwgICAgICAgICAgICAgICAgLypbVl0qLworICAgIC8q
KiBAc3RhYmxlIElDVSA0LjAgKi8KICAgICBVX0dDQl9TUEFDSU5HX01BUksgPSAxMCwgICAgLypb
U01dKi8gLyogZnJvbSBoZXJlIG9uOiBuZXcgaW4gVW5pY29kZSA1LjEvSUNVIDQuMCAqLworICAg
IC8qKiBAc3RhYmxlIElDVSA0LjAgKi8KICAgICBVX0dDQl9QUkVQRU5EID0gMTEsICAgICAgICAg
LypbUFBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTAgKi8KICAgICBVX0dDQl9SRUdJT05BTF9J
TkRJQ0FUT1IgPSAxMiwgIC8qW1JJXSovIC8qIG5ldyBpbiBVbmljb2RlIDYuMi9JQ1UgNTAgKi8K
LSAgICBVX0dDQl9DT1VOVCA9IDEzCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVV9H
Q0JfRV9CQVNFID0gMTMsICAgICAgICAgIC8qW0VCXSovIC8qIGZyb20gaGVyZSBvbjogbmV3IGlu
IFVuaWNvZGUgOS4wL0lDVSA1OCAqLworICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAgIFVf
R0NCX0VfQkFTRV9HQVogPSAxNCwgICAgICAvKltFQkddKi8KKyAgICAvKiogQHN0YWJsZSBJQ1Ug
NTggKi8KKyAgICBVX0dDQl9FX01PRElGSUVSID0gMTUsICAgICAgLypbRU1dKi8KKyAgICAvKiog
QHN0YWJsZSBJQ1UgNTggKi8KKyAgICBVX0dDQl9HTFVFX0FGVEVSX1pXSiA9IDE2LCAgLypbR0Fa
XSovCisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVV9HQ0JfWldKID0gMTcsICAgICAg
ICAgICAgIC8qW1pXSl0qLworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioK
KyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVR3JhcGhlbWVDbHVzdGVy
QnJlYWsgdmFsdWUuCisgICAgICogVGhlIGhpZ2hlc3QgdmFsdWUgaXMgYXZhaWxhYmxlIHZpYSB1
X2dldEludFByb3BlcnR5TWF4VmFsdWUoVUNIQVJfR1JBUEhFTUVfQ0xVU1RFUl9CUkVBSykuCisg
ICAgICoKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNo
YW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KKyAgICBVX0dD
Ql9DT1VOVCA9IDE4CisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBVR3JhcGhl
bWVDbHVzdGVyQnJlYWs7CiAKIC8qKgpAQCAtMTgxMSwxNiArMjA2Miw0MyBAQCB0eXBlZGVmIGVu
dW0gVVdvcmRCcmVha1ZhbHVlcyB7CiAgICAgVV9XQl9NSUROVU0gPSA1LCAgICAgICAgICAgIC8q
W01OXSovCiAgICAgVV9XQl9OVU1FUklDID0gNiwgICAgICAgICAgIC8qW05VXSovCiAgICAgVV9X
Ql9FWFRFTkROVU1MRVQgPSA3LCAgICAgIC8qW0VYXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDQu
MCAqLwogICAgIFVfV0JfQ1IgPSA4LCAgICAgICAgICAgICAgICAvKltDUl0qLyAvKiBmcm9tIGhl
cmUgb246IG5ldyBpbiBVbmljb2RlIDUuMS9JQ1UgNC4wICovCisgICAgLyoqIEBzdGFibGUgSUNV
IDQuMCAqLwogICAgIFVfV0JfRVhURU5EID0gOSwgICAgICAgICAgICAvKltFeHRlbmRdKi8KKyAg
ICAvKiogQHN0YWJsZSBJQ1UgNC4wICovCiAgICAgVV9XQl9MRiA9IDEwLCAgICAgICAgICAgICAg
IC8qW0xGXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDQuMCAqLwogICAgIFVfV0JfTUlETlVNTEVU
ID0xMSwgICAgICAgICAvKltNQl0qLworICAgIC8qKiBAc3RhYmxlIElDVSA0LjAgKi8KICAgICBV
X1dCX05FV0xJTkUgPTEyLCAgICAgICAgICAgLypbTkxdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1Ug
NTAgKi8KICAgICBVX1dCX1JFR0lPTkFMX0lORElDQVRPUiA9IDEzLCAgIC8qW1JJXSovIC8qIG5l
dyBpbiBVbmljb2RlIDYuMi9JQ1UgNTAgKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTIgKi8KICAg
ICBVX1dCX0hFQlJFV19MRVRURVIgPSAxNCwgICAgLypbSExdKi8gLyogZnJvbSBoZXJlIG9uOiBu
ZXcgaW4gVW5pY29kZSA2LjMvSUNVIDUyICovCisgICAgLyoqIEBzdGFibGUgSUNVIDUyICovCiAg
ICAgVV9XQl9TSU5HTEVfUVVPVEUgPSAxNSwgICAgIC8qW1NRXSovCisgICAgLyoqIEBzdGFibGUg
SUNVIDUyICovCiAgICAgVV9XQl9ET1VCTEVfUVVPVEUgPSAxNiwgICAgIC8qW0RRXSovCi0gICAg
VV9XQl9DT1VOVCA9IDE3CisgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVV9XQl9FX0JB
U0UgPSAxNywgICAgICAgICAgIC8qW0VCXSovIC8qIGZyb20gaGVyZSBvbjogbmV3IGluIFVuaWNv
ZGUgOS4wL0lDVSA1OCAqLworICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAgIFVfV0JfRV9C
QVNFX0dBWiA9IDE4LCAgICAgICAvKltFQkddKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTggKi8K
KyAgICBVX1dCX0VfTU9ESUZJRVIgPSAxOSwgICAgICAgLypbRU1dKi8KKyAgICAvKiogQHN0YWJs
ZSBJQ1UgNTggKi8KKyAgICBVX1dCX0dMVUVfQUZURVJfWldKID0gMjAsICAgLypbR0FaXSovCisg
ICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgVV9XQl9aV0ogPSAyMSwgICAgICAgICAgICAg
IC8qW1pXSl0qLworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAg
KiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVV29yZEJyZWFrVmFsdWVzIHZhbHVl
LgorICAgICAqIFRoZSBoaWdoZXN0IHZhbHVlIGlzIGF2YWlsYWJsZSB2aWEgdV9nZXRJbnRQcm9w
ZXJ0eU1heFZhbHVlKFVDSEFSX1dPUkRfQlJFQUspLgorICAgICAqCisgICAgICogQGRlcHJlY2F0
ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNV
IHRpY2tldCAjMTI0MjAuCisgICAgICovCisgICAgVV9XQl9DT1VOVCA9IDIyCisjZW5kaWYgIC8v
IFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBVV29yZEJyZWFrVmFsdWVzOwogCiAvKioKQEAgLTE4
NTEsNyArMjEyOSwxNSBAQCB0eXBlZGVmIGVudW0gVVNlbnRlbmNlQnJlYWsgewogICAgIFVfU0Jf
RVhURU5EID0gMTIsICAgICAgICAgICAvKltFWF0qLwogICAgIFVfU0JfTEYgPSAxMywgICAgICAg
ICAgICAgICAvKltMRl0qLwogICAgIFVfU0JfU0NPTlRJTlVFID0gMTQsICAgICAgICAvKltTQ10q
LworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9y
ZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVU2VudGVuY2VCcmVhayB2YWx1ZS4KKyAgICAgKiBU
aGUgaGlnaGVzdCB2YWx1ZSBpcyBhdmFpbGFibGUgdmlhIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1
ZShVQ0hBUl9TRU5URU5DRV9CUkVBSykuCisgICAgICoKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1Ug
NTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0
ICMxMjQyMC4KKyAgICAgKi8KICAgICBVX1NCX0NPVU5UID0gMTUKKyNlbmRpZiAgLy8gVV9ISURF
X0RFUFJFQ0FURURfQVBJCiB9IFVTZW50ZW5jZUJyZWFrOwogCiAvKioKQEAgLTE4OTgsMTggKzIx
ODQsNDMgQEAgdHlwZWRlZiBlbnVtIFVMaW5lQnJlYWsgewogICAgIFVfTEJfU1BBQ0UgPSAyNiwg
ICAgICAgICAgICAgLypbU1BdKi8KICAgICBVX0xCX0JSRUFLX1NZTUJPTFMgPSAyNywgICAgIC8q
W1NZXSovCiAgICAgVV9MQl9aV1NQQUNFID0gMjgsICAgICAgICAgICAvKltaV10qLworICAgIC8q
KiBAc3RhYmxlIElDVSAyLjYgKi8KICAgICBVX0xCX05FWFRfTElORSA9IDI5LCAgICAgICAgIC8q
W05MXSovIC8qIGZyb20gaGVyZSBvbjogbmV3IGluIFVuaWNvZGUgNC9JQ1UgMi42ICovCisgICAg
LyoqIEBzdGFibGUgSUNVIDIuNiAqLwogICAgIFVfTEJfV09SRF9KT0lORVIgPSAzMCwgICAgICAg
LypbV0pdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMy40ICovCiAgICAgVV9MQl9IMiA9IDMxLCAg
ICAgICAgICAgICAgICAvKltIMl0qLyAvKiBmcm9tIGhlcmUgb246IG5ldyBpbiBVbmljb2RlIDQu
MS9JQ1UgMy40ICovCisgICAgLyoqIEBzdGFibGUgSUNVIDMuNCAqLwogICAgIFVfTEJfSDMgPSAz
MiwgICAgICAgICAgICAgICAgLypbSDNdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMy40ICovCiAg
ICAgVV9MQl9KTCA9IDMzLCAgICAgICAgICAgICAgICAvKltKTF0qLworICAgIC8qKiBAc3RhYmxl
IElDVSAzLjQgKi8KICAgICBVX0xCX0pUID0gMzQsICAgICAgICAgICAgICAgIC8qW0pUXSovCisg
ICAgLyoqIEBzdGFibGUgSUNVIDMuNCAqLwogICAgIFVfTEJfSlYgPSAzNSwgICAgICAgICAgICAg
ICAgLypbSlZdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNC40ICovCiAgICAgVV9MQl9DTE9TRV9Q
QVJFTlRIRVNJUyA9IDM2LCAvKltDUF0qLyAvKiBuZXcgaW4gVW5pY29kZSA1LjIvSUNVIDQuNCAq
LworICAgIC8qKiBAc3RhYmxlIElDVSA0OSAqLwogICAgIFVfTEJfQ09ORElUSU9OQUxfSkFQQU5F
U0VfU1RBUlRFUiA9IDM3LC8qW0NKXSovIC8qIG5ldyBpbiBVbmljb2RlIDYuMS9JQ1UgNDkgKi8K
KyAgICAvKiogQHN0YWJsZSBJQ1UgNDkgKi8KICAgICBVX0xCX0hFQlJFV19MRVRURVIgPSAzOCwg
ICAgIC8qW0hMXSovIC8qIG5ldyBpbiBVbmljb2RlIDYuMS9JQ1UgNDkgKi8KKyAgICAvKiogQHN0
YWJsZSBJQ1UgNTAgKi8KICAgICBVX0xCX1JFR0lPTkFMX0lORElDQVRPUiA9IDM5LC8qW1JJXSov
IC8qIG5ldyBpbiBVbmljb2RlIDYuMi9JQ1UgNTAgKi8KLSAgICBVX0xCX0NPVU5UID0gNDAKKyAg
ICAvKiogQHN0YWJsZSBJQ1UgNTggKi8KKyAgICBVX0xCX0VfQkFTRSA9IDQwLCAgICAgICAgICAg
IC8qW0VCXSovIC8qIGZyb20gaGVyZSBvbjogbmV3IGluIFVuaWNvZGUgOS4wL0lDVSA1OCAqLwor
ICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAgIFVfTEJfRV9NT0RJRklFUiA9IDQxLCAgICAg
ICAgLypbRU1dKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgNTggKi8KKyAgICBVX0xCX1pXSiA9IDQy
LCAgICAgICAgICAgICAgIC8qW1pXSl0qLworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkK
KyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVTGluZUJy
ZWFrIHZhbHVlLgorICAgICAqIFRoZSBoaWdoZXN0IHZhbHVlIGlzIGF2YWlsYWJsZSB2aWEgdV9n
ZXRJbnRQcm9wZXJ0eU1heFZhbHVlKFVDSEFSX0xJTkVfQlJFQUspLgorICAgICAqCisgICAgICog
QGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1l
LCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCisgICAgVV9MQl9DT1VOVCA9IDQzCisj
ZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBVTGluZUJyZWFrOwogCiAvKioKQEAg
LTE5MjksNyArMjI0MCwxNSBAQCB0eXBlZGVmIGVudW0gVU51bWVyaWNUeXBlIHsKICAgICBVX05U
X0RFQ0lNQUwsICAgICAgICAgICAvKltkZV0qLwogICAgIFVfTlRfRElHSVQsICAgICAgICAgICAg
IC8qW2RpXSovCiAgICAgVV9OVF9OVU1FUklDLCAgICAgICAgICAgLypbbnVdKi8KKyNpZm5kZWYg
VV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUg
aGlnaGVzdCBub3JtYWwgVU51bWVyaWNUeXBlIHZhbHVlLgorICAgICAqIFRoZSBoaWdoZXN0IHZh
bHVlIGlzIGF2YWlsYWJsZSB2aWEgdV9nZXRJbnRQcm9wZXJ0eU1heFZhbHVlKFVDSEFSX05VTUVS
SUNfVFlQRSkuCisgICAgICoKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMg
dmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAg
Ki8KICAgICBVX05UX0NPVU5UCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBV
TnVtZXJpY1R5cGU7CiAKIC8qKgpAQCAtMTk1MSw3ICsyMjcwLDE1IEBAIHR5cGVkZWYgZW51bSBV
SGFuZ3VsU3lsbGFibGVUeXBlIHsKICAgICBVX0hTVF9UUkFJTElOR19KQU1PLCAgICAvKltUXSov
CiAgICAgVV9IU1RfTFZfU1lMTEFCTEUsICAgICAgLypbTFZdKi8KICAgICBVX0hTVF9MVlRfU1lM
TEFCTEUsICAgICAvKltMVlRdKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAg
LyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVUhhbmd1bFN5bGxh
YmxlVHlwZSB2YWx1ZS4KKyAgICAgKiBUaGUgaGlnaGVzdCB2YWx1ZSBpcyBhdmFpbGFibGUgdmlh
IHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShVQ0hBUl9IQU5HVUxfU1lMTEFCTEVfVFlQRSkuCisg
ICAgICoKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNo
YW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVX0hT
VF9DT1VOVAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVUhhbmd1bFN5bGxh
YmxlVHlwZTsKIAogLyoqCkBAIC0yODE2LDcgKzMxNDMsNyBAQCB1X2NoYXJOYW1lKFVDaGFyMzIg
Y29kZSwgVUNoYXJOYW1lQ2hvaWNlIG5hbWVDaG9pY2UsCiAgICAgICAgICAgIGNoYXIgKmJ1ZmZl
ciwgaW50MzJfdCBidWZmZXJMZW5ndGgsCiAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNv
ZGUpOwogCi0jaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSSAKKyNpZm5kZWYgVV9ISURFX0RF
UFJFQ0FURURfQVBJCiAvKioKICAqIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nLgogICogVXNlZCB0
byByZXR1cm4gdGhlIElTTyAxMDY0NiBjb21tZW50IGZvciBhIGNoYXJhY3Rlci4KQEAgLTMyNDMs
MjcgKzM1NzAsNiBAQCB1X3RvdXBwZXIoVUNoYXIzMiBjKTsKIFVfU1RBQkxFIFVDaGFyMzIgVV9F
WFBPUlQyCiB1X3RvdGl0bGUoVUNoYXIzMiBjKTsKIAotLyoqIE9wdGlvbiB2YWx1ZSBmb3IgY2Fz
ZSBmb2xkaW5nOiB1c2UgZGVmYXVsdCBtYXBwaW5ncyBkZWZpbmVkIGluIENhc2VGb2xkaW5nLnR4
dC4gQHN0YWJsZSBJQ1UgMi4wICovCi0jZGVmaW5lIFVfRk9MRF9DQVNFX0RFRkFVTFQgMAotCi0v
KioKLSAqIE9wdGlvbiB2YWx1ZSBmb3IgY2FzZSBmb2xkaW5nOgotICoKLSAqIFVzZSB0aGUgbW9k
aWZpZWQgc2V0IG9mIG1hcHBpbmdzIHByb3ZpZGVkIGluIENhc2VGb2xkaW5nLnR4dCB0byBoYW5k
bGUgZG90dGVkIEkKLSAqIGFuZCBkb3RsZXNzIGkgYXBwcm9wcmlhdGVseSBmb3IgVHVya2ljIGxh
bmd1YWdlcyAodHIsIGF6KS4KLSAqCi0gKiBCZWZvcmUgVW5pY29kZSAzLjIsIENhc2VGb2xkaW5n
LnR4dCBjb250YWlucyBtYXBwaW5ncyBtYXJrZWQgd2l0aCAnSScgdGhhdAotICogYXJlIHRvIGJl
IGluY2x1ZGVkIGZvciBkZWZhdWx0IG1hcHBpbmdzIGFuZAotICogZXhjbHVkZWQgZm9yIHRoZSBU
dXJraWMtc3BlY2lmaWMgbWFwcGluZ3MuCi0gKgotICogVW5pY29kZSAzLjIgQ2FzZUZvbGRpbmcu
dHh0IGluc3RlYWQgY29udGFpbnMgbWFwcGluZ3MgbWFya2VkIHdpdGggJ1QnIHRoYXQKLSAqIGFy
ZSB0byBiZSBleGNsdWRlZCBmb3IgZGVmYXVsdCBtYXBwaW5ncyBhbmQKLSAqIGluY2x1ZGVkIGZv
ciB0aGUgVHVya2ljLXNwZWNpZmljIG1hcHBpbmdzLgotICoKLSAqIEBzdGFibGUgSUNVIDIuMAot
ICovCi0jZGVmaW5lIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JIDEKLQogLyoqCiAgKiBU
aGUgZ2l2ZW4gY2hhcmFjdGVyIGlzIG1hcHBlZCB0byBpdHMgY2FzZSBmb2xkaW5nIGVxdWl2YWxl
bnQgYWNjb3JkaW5nIHRvCiAgKiBVbmljb2RlRGF0YS50eHQgYW5kIENhc2VGb2xkaW5nLnR4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNoYXJzdHJpZS5oIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS91Y2hhcnN0cmllLmgKaW5kZXggMDU3NWE5NzRkMGM5NTdhY2M3ZDM3
ZmNjMDBlMzZkMDM4YTdjMWFiYS4uZGZjOTNmNmQwYmFlOGFjZjAyNDYzYjk5MDQ0ZThkZWE3MmU5
MzliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2hhcnN0cmllLmgKKysr
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2hhcnN0cmllLmgKQEAgLTEsMTAgKzEsMTIgQEAK
Ky8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNl
bnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1s
CiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAxMC0yMDEy
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90
aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAg
ZmlsZSBuYW1lOiAgdWNoYXJzdHJpZS5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBl
bmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVu
dGF0aW9uOjQKICoKQEAgLTM0LDcgKzM2LDcgQEAgY2xhc3MgVVZlY3RvcjMyOwogCiAvKioKICAq
IExpZ2h0LXdlaWdodCwgbm9uLWNvbnN0IHJlYWRlciBjbGFzcyBmb3IgYSBVQ2hhcnNUcmllLgot
ICogVHJhdmVyc2VzIGEgVUNoYXItc2VyaWFsaXplZCBkYXRhIHN0cnVjdHVyZSB3aXRoIG1pbmlt
YWwgc3RhdGUsCisgKiBUcmF2ZXJzZXMgYSBjaGFyMTZfdC1zZXJpYWxpemVkIGRhdGEgc3RydWN0
dXJlIHdpdGggbWluaW1hbCBzdGF0ZSwKICAqIGZvciBtYXBwaW5nIHN0cmluZ3MgKDE2LWJpdC11
bml0IHNlcXVlbmNlcykgdG8gbm9uLW5lZ2F0aXZlIGludGVnZXIgdmFsdWVzLgogICoKICAqIFRo
aXMgY2xhc3Mgb3ducyB0aGUgc2VyaWFsaXplZCB0cmllIGRhdGEgb25seSBpZiBpdCB3YXMgY29u
c3RydWN0ZWQgYnkKQEAgLTUwLDE4ICs1MiwxOCBAQCBwdWJsaWM6CiAgICAgLyoqCiAgICAgICog
Q29uc3RydWN0cyBhIFVDaGFyc1RyaWUgcmVhZGVyIGluc3RhbmNlLgogICAgICAqCi0gICAgICog
VGhlIHRyaWVVQ2hhcnMgbXVzdCBjb250YWluIGEgY29weSBvZiBhIFVDaGFyIHNlcXVlbmNlIGZy
b20gdGhlIFVDaGFyc1RyaWVCdWlsZGVyLAotICAgICAqIHN0YXJ0aW5nIHdpdGggdGhlIGZpcnN0
IFVDaGFyIG9mIHRoYXQgc2VxdWVuY2UuCi0gICAgICogVGhlIFVDaGFyc1RyaWUgb2JqZWN0IHdp
bGwgbm90IHJlYWQgbW9yZSBVQ2hhcnMgdGhhbgorICAgICAqIFRoZSB0cmllVUNoYXJzIG11c3Qg
Y29udGFpbiBhIGNvcHkgb2YgYSBjaGFyMTZfdCBzZXF1ZW5jZSBmcm9tIHRoZSBVQ2hhcnNUcmll
QnVpbGRlciwKKyAgICAgKiBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBjaGFyMTZfdCBvZiB0aGF0
IHNlcXVlbmNlLgorICAgICAqIFRoZSBVQ2hhcnNUcmllIG9iamVjdCB3aWxsIG5vdCByZWFkIG1v
cmUgY2hhcjE2X3RzIHRoYW4KICAgICAgKiB0aGUgVUNoYXJzVHJpZUJ1aWxkZXIgZ2VuZXJhdGVk
IGluIHRoZSBjb3JyZXNwb25kaW5nIGJ1aWxkKCkgY2FsbC4KICAgICAgKgogICAgICAqIFRoZSBh
cnJheSBpcyBub3QgY29waWVkL2Nsb25lZCBhbmQgbXVzdCBub3QgYmUgbW9kaWZpZWQgd2hpbGUK
ICAgICAgKiB0aGUgVUNoYXJzVHJpZSBvYmplY3QgaXMgaW4gdXNlLgogICAgICAqCi0gICAgICog
QHBhcmFtIHRyaWVVQ2hhcnMgVGhlIFVDaGFyIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHNlcmlh
bGl6ZWQgdHJpZS4KKyAgICAgKiBAcGFyYW0gdHJpZVVDaGFycyBUaGUgY2hhcjE2X3QgYXJyYXkg
dGhhdCBjb250YWlucyB0aGUgc2VyaWFsaXplZCB0cmllLgogICAgICAqIEBzdGFibGUgSUNVIDQu
OAogICAgICAqLwotICAgIFVDaGFyc1RyaWUoY29uc3QgVUNoYXIgKnRyaWVVQ2hhcnMpCisgICAg
VUNoYXJzVHJpZShDb25zdENoYXIxNlB0ciB0cmllVUNoYXJzKQogICAgICAgICAgICAgOiBvd25l
ZEFycmF5XyhOVUxMKSwgdWNoYXJzXyh0cmllVUNoYXJzKSwKICAgICAgICAgICAgICAgcG9zXyh1
Y2hhcnNfKSwgcmVtYWluaW5nTWF0Y2hMZW5ndGhfKC0xKSB7fQogCkBAIC03Myw3ICs3NSw3IEBA
IHB1YmxpYzoKIAogICAgIC8qKgogICAgICAqIENvcHkgY29uc3RydWN0b3IsIGNvcGllcyB0aGUg
b3RoZXIgdHJpZSByZWFkZXIgb2JqZWN0IGFuZCBpdHMgc3RhdGUsCi0gICAgICogYnV0IG5vdCB0
aGUgVUNoYXIgYXJyYXkgd2hpY2ggd2lsbCBiZSBzaGFyZWQuIChTaGFsbG93IGNvcHkuKQorICAg
ICAqIGJ1dCBub3QgdGhlIGNoYXIxNl90IGFycmF5IHdoaWNoIHdpbGwgYmUgc2hhcmVkLiAoU2hh
bGxvdyBjb3B5LikKICAgICAgKiBAcGFyYW0gb3RoZXIgQW5vdGhlciBVQ2hhcnNUcmllIG9iamVj
dC4KICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KQEAgLTEwNyw4ICsxMDksOCBAQCBw
dWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFVDaGFyc1RyaWU7CiAK
LSAgICAgICAgY29uc3QgVUNoYXIgKnVjaGFyczsKLSAgICAgICAgY29uc3QgVUNoYXIgKnBvczsK
KyAgICAgICAgY29uc3QgY2hhcjE2X3QgKnVjaGFyczsKKyAgICAgICAgY29uc3QgY2hhcjE2X3Qg
KnBvczsKICAgICAgICAgaW50MzJfdCByZW1haW5pbmdNYXRjaExlbmd0aDsKICAgICB9OwogCkBA
IC0xNDYsMTQgKzE0OCwxNCBAQCBwdWJsaWM6CiAKICAgICAvKioKICAgICAgKiBEZXRlcm1pbmVz
IHdoZXRoZXIgdGhlIHN0cmluZyBzbyBmYXIgbWF0Y2hlcywgd2hldGhlciBpdCBoYXMgYSB2YWx1
ZSwKLSAgICAgKiBhbmQgd2hldGhlciBhbm90aGVyIGlucHV0IFVDaGFyIGNhbiBjb250aW51ZSBh
IG1hdGNoaW5nIHN0cmluZy4KKyAgICAgKiBhbmQgd2hldGhlciBhbm90aGVyIGlucHV0IGNoYXIx
Nl90IGNhbiBjb250aW51ZSBhIG1hdGNoaW5nIHN0cmluZy4KICAgICAgKiBAcmV0dXJuIFRoZSBt
YXRjaC92YWx1ZSBSZXN1bHQuCiAgICAgICogQHN0YWJsZSBJQ1UgNC44CiAgICAgICovCiAgICAg
VVN0cmluZ1RyaWVSZXN1bHQgY3VycmVudCgpIGNvbnN0OwogCiAgICAgLyoqCi0gICAgICogVHJh
dmVyc2VzIHRoZSB0cmllIGZyb20gdGhlIGluaXRpYWwgc3RhdGUgZm9yIHRoaXMgaW5wdXQgVUNo
YXIuCisgICAgICogVHJhdmVyc2VzIHRoZSB0cmllIGZyb20gdGhlIGluaXRpYWwgc3RhdGUgZm9y
IHRoaXMgaW5wdXQgY2hhcjE2X3QuCiAgICAgICogRXF1aXZhbGVudCB0byByZXNldCgpLm5leHQo
dWNoYXIpLgogICAgICAqIEBwYXJhbSB1Y2hhciBJbnB1dCBjaGFyIHZhbHVlLiBWYWx1ZXMgYmVs
b3cgMCBhbmQgYWJvdmUgMHhmZmZmIHdpbGwgbmV2ZXIgbWF0Y2guCiAgICAgICogQHJldHVybiBU
aGUgbWF0Y2gvdmFsdWUgUmVzdWx0LgpAQCAtMTc1LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICBV
U3RyaW5nVHJpZVJlc3VsdCBmaXJzdEZvckNvZGVQb2ludChVQ2hhcjMyIGNwKTsKIAogICAgIC8q
KgotICAgICAqIFRyYXZlcnNlcyB0aGUgdHJpZSBmcm9tIHRoZSBjdXJyZW50IHN0YXRlIGZvciB0
aGlzIGlucHV0IFVDaGFyLgorICAgICAqIFRyYXZlcnNlcyB0aGUgdHJpZSBmcm9tIHRoZSBjdXJy
ZW50IHN0YXRlIGZvciB0aGlzIGlucHV0IGNoYXIxNl90LgogICAgICAqIEBwYXJhbSB1Y2hhciBJ
bnB1dCBjaGFyIHZhbHVlLiBWYWx1ZXMgYmVsb3cgMCBhbmQgYWJvdmUgMHhmZmZmIHdpbGwgbmV2
ZXIgbWF0Y2guCiAgICAgICogQHJldHVybiBUaGUgbWF0Y2gvdmFsdWUgUmVzdWx0LgogICAgICAq
IEBzdGFibGUgSUNVIDQuOApAQCAtMjA2LDcgKzIwOCw3IEBAIHB1YmxpYzoKICAgICAgKiBAcmV0
dXJuIFRoZSBtYXRjaC92YWx1ZSBSZXN1bHQuCiAgICAgICogQHN0YWJsZSBJQ1UgNC44CiAgICAg
ICovCi0gICAgVVN0cmluZ1RyaWVSZXN1bHQgbmV4dChjb25zdCBVQ2hhciAqcywgaW50MzJfdCBs
ZW5ndGgpOworICAgIFVTdHJpbmdUcmllUmVzdWx0IG5leHQoQ29uc3RDaGFyMTZQdHIgcywgaW50
MzJfdCBsZW5ndGgpOwogCiAgICAgLyoqCiAgICAgICogUmV0dXJucyBhIG1hdGNoaW5nIHN0cmlu
ZydzIHZhbHVlIGlmIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlcgpAQCAtMjE4LDcgKzIyMCw3IEBA
IHB1YmxpYzoKICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KICAgICBpbmxpbmUgaW50
MzJfdCBnZXRWYWx1ZSgpIGNvbnN0IHsKLSAgICAgICAgY29uc3QgVUNoYXIgKnBvcz1wb3NfOwor
ICAgICAgICBjb25zdCBjaGFyMTZfdCAqcG9zPXBvc187CiAgICAgICAgIGludDMyX3QgbGVhZFVu
aXQ9KnBvcysrOwogICAgICAgICAvLyBVX0FTU0VSVChsZWFkVW5pdD49a01pblZhbHVlTGVhZCk7
CiAgICAgICAgIHJldHVybiBsZWFkVW5pdCZrVmFsdWVJc0ZpbmFsID8KQEAgLTIzNSwxNiArMjM3
LDE2IEBAIHB1YmxpYzoKICAgICAgKiBAc3RhYmxlIElDVSA0LjgKICAgICAgKi8KICAgICBpbmxp
bmUgVUJvb2wgaGFzVW5pcXVlVmFsdWUoaW50MzJfdCAmdW5pcXVlVmFsdWUpIGNvbnN0IHsKLSAg
ICAgICAgY29uc3QgVUNoYXIgKnBvcz1wb3NfOworICAgICAgICBjb25zdCBjaGFyMTZfdCAqcG9z
PXBvc187CiAgICAgICAgIC8vIFNraXAgdGhlIHJlc3Qgb2YgYSBwZW5kaW5nIGxpbmVhci1tYXRj
aCBub2RlLgogICAgICAgICByZXR1cm4gcG9zIT1OVUxMICYmIGZpbmRVbmlxdWVWYWx1ZShwb3Mr
cmVtYWluaW5nTWF0Y2hMZW5ndGhfKzEsIEZBTFNFLCB1bmlxdWVWYWx1ZSk7CiAgICAgfQogCiAg
ICAgLyoqCi0gICAgICogRmluZHMgZWFjaCBVQ2hhciB3aGljaCBjb250aW51ZXMgdGhlIHN0cmlu
ZyBmcm9tIHRoZSBjdXJyZW50IHN0YXRlLgotICAgICAqIFRoYXQgaXMsIGVhY2ggVUNoYXIgYyBm
b3Igd2hpY2ggaXQgd291bGQgYmUgbmV4dChjKSE9VVNUUklOR1RSSUVfTk9fTUFUQ0ggbm93Lgot
ICAgICAqIEBwYXJhbSBvdXQgRWFjaCBuZXh0IFVDaGFyIGlzIGFwcGVuZGVkIHRvIHRoaXMgb2Jq
ZWN0LgotICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBVQ2hhcnMgd2hpY2ggY29udGludWUg
dGhlIHN0cmluZyBmcm9tIGhlcmUKKyAgICAgKiBGaW5kcyBlYWNoIGNoYXIxNl90IHdoaWNoIGNv
bnRpbnVlcyB0aGUgc3RyaW5nIGZyb20gdGhlIGN1cnJlbnQgc3RhdGUuCisgICAgICogVGhhdCBp
cywgZWFjaCBjaGFyMTZfdCBjIGZvciB3aGljaCBpdCB3b3VsZCBiZSBuZXh0KGMpIT1VU1RSSU5H
VFJJRV9OT19NQVRDSCBub3cuCisgICAgICogQHBhcmFtIG91dCBFYWNoIG5leHQgY2hhcjE2X3Qg
aXMgYXBwZW5kZWQgdG8gdGhpcyBvYmplY3QuCisgICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9m
IGNoYXIxNl90cyB3aGljaCBjb250aW51ZSB0aGUgc3RyaW5nIGZyb20gaGVyZQogICAgICAqIEBz
dGFibGUgSUNVIDQuOAogICAgICAqLwogICAgIGludDMyX3QgZ2V0TmV4dFVDaGFycyhBcHBlbmRh
YmxlICZvdXQpIGNvbnN0OwpAQCAtMjU2LDggKzI1OCw4IEBAIHB1YmxpYzoKICAgICBjbGFzcyBV
X0NPTU1PTl9BUEkgSXRlcmF0b3IgOiBwdWJsaWMgVU1lbW9yeSB7CiAgICAgcHVibGljOgogICAg
ICAgICAvKioKLSAgICAgICAgICogSXRlcmF0ZXMgZnJvbSB0aGUgcm9vdCBvZiBhIFVDaGFyLXNl
cmlhbGl6ZWQgVUNoYXJzVHJpZS4KLSAgICAgICAgICogQHBhcmFtIHRyaWVVQ2hhcnMgVGhlIHRy
aWUgVUNoYXJzLgorICAgICAgICAgKiBJdGVyYXRlcyBmcm9tIHRoZSByb290IG9mIGEgY2hhcjE2
X3Qtc2VyaWFsaXplZCBVQ2hhcnNUcmllLgorICAgICAgICAgKiBAcGFyYW0gdHJpZVVDaGFycyBU
aGUgdHJpZSBjaGFyMTZfdHMuCiAgICAgICAgICAqIEBwYXJhbSBtYXhTdHJpbmdMZW5ndGggSWYg
MCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgZnVsbCBzdHJpbmdzLgogICAgICAgICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgdGhlIGl0ZXJhdG9yIHJldHVybnMgc3RyaW5ncyB3
aXRoIHRoaXMgbWF4aW11bSBsZW5ndGguCiAgICAgICAgICAqIEBwYXJhbSBlcnJvckNvZGUgU3Rh
bmRhcmQgSUNVIGVycm9yIGNvZGUuIEl0cyBpbnB1dCB2YWx1ZSBtdXN0CkBAIC0yNjYsNyArMjY4
LDcgQEAgcHVibGljOgogICAgICAgICAgKiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoYWlu
aW5nLiAoU2VlIFVzZXIgR3VpZGUgZm9yIGRldGFpbHMuKQogICAgICAgICAgKiBAc3RhYmxlIElD
VSA0LjgKICAgICAgICAgICovCi0gICAgICAgIEl0ZXJhdG9yKGNvbnN0IFVDaGFyICp0cmllVUNo
YXJzLCBpbnQzMl90IG1heFN0cmluZ0xlbmd0aCwgVUVycm9yQ29kZSAmZXJyb3JDb2RlKTsKKyAg
ICAgICAgSXRlcmF0b3IoQ29uc3RDaGFyMTZQdHIgdHJpZVVDaGFycywgaW50MzJfdCBtYXhTdHJp
bmdMZW5ndGgsIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CiAKICAgICAgICAgLyoqCiAgICAgICAg
ICAqIEl0ZXJhdGVzIGZyb20gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBVQ2hh
cnNUcmllLgpAQCAtMzM0LDExICszMzYsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
IFRSVUU7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBVQ2hhciAqYnJhbmNoTmV4dChjb25z
dCBVQ2hhciAqcG9zLCBpbnQzMl90IGxlbmd0aCwgVUVycm9yQ29kZSAmZXJyb3JDb2RlKTsKKyAg
ICAgICAgY29uc3QgY2hhcjE2X3QgKmJyYW5jaE5leHQoY29uc3QgY2hhcjE2X3QgKnBvcywgaW50
MzJfdCBsZW5ndGgsIFVFcnJvckNvZGUgJmVycm9yQ29kZSk7CiAKLSAgICAgICAgY29uc3QgVUNo
YXIgKnVjaGFyc187Ci0gICAgICAgIGNvbnN0IFVDaGFyICpwb3NfOwotICAgICAgICBjb25zdCBV
Q2hhciAqaW5pdGlhbFBvc187CisgICAgICAgIGNvbnN0IGNoYXIxNl90ICp1Y2hhcnNfOworICAg
ICAgICBjb25zdCBjaGFyMTZfdCAqcG9zXzsKKyAgICAgICAgY29uc3QgY2hhcjE2X3QgKmluaXRp
YWxQb3NfOwogICAgICAgICBpbnQzMl90IHJlbWFpbmluZ01hdGNoTGVuZ3RoXzsKICAgICAgICAg
aW50MzJfdCBpbml0aWFsUmVtYWluaW5nTWF0Y2hMZW5ndGhfOwogICAgICAgICBVQm9vbCBza2lw
VmFsdWVfOyAgLy8gU2tpcCBpbnRlcm1lZGlhdGUgdmFsdWUgd2hpY2ggd2FzIGFscmVhZHkgZGVs
aXZlcmVkLgpAQCAtMzY2LDcgKzM2OCw3IEBAIHByaXZhdGU6CiAgICAgICogdGhpcyBjb25zdHJ1
Y3RvciBhZG9wdHMgdGhlIGJ1aWxkZXIncyBhcnJheS4KICAgICAgKiBUaGlzIGNvbnN0cnVjdG9y
IGlzIG9ubHkgY2FsbGVkIGJ5IHRoZSBidWlsZGVyLgogICAgICAqLwotICAgIFVDaGFyc1RyaWUo
VUNoYXIgKmFkb3B0VUNoYXJzLCBjb25zdCBVQ2hhciAqdHJpZVVDaGFycykKKyAgICBVQ2hhcnNU
cmllKGNoYXIxNl90ICphZG9wdFVDaGFycywgY29uc3QgY2hhcjE2X3QgKnRyaWVVQ2hhcnMpCiAg
ICAgICAgICAgICA6IG93bmVkQXJyYXlfKGFkb3B0VUNoYXJzKSwgdWNoYXJzXyh0cmllVUNoYXJz
KSwKICAgICAgICAgICAgICAgcG9zXyh1Y2hhcnNfKSwgcmVtYWluaW5nTWF0Y2hMZW5ndGhfKC0x
KSB7fQogCkBAIC0zNzksNyArMzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFJlYWRzIGEgY29t
cGFjdCAzMi1iaXQgaW50ZWdlci4KICAgICAvLyBwb3MgaXMgYWxyZWFkeSBhZnRlciB0aGUgbGVh
ZFVuaXQsIGFuZCB0aGUgbGVhZCB1bml0IGhhcyBiaXQgMTUgcmVzZXQuCi0gICAgc3RhdGljIGlu
bGluZSBpbnQzMl90IHJlYWRWYWx1ZShjb25zdCBVQ2hhciAqcG9zLCBpbnQzMl90IGxlYWRVbml0
KSB7CisgICAgc3RhdGljIGlubGluZSBpbnQzMl90IHJlYWRWYWx1ZShjb25zdCBjaGFyMTZfdCAq
cG9zLCBpbnQzMl90IGxlYWRVbml0KSB7CiAgICAgICAgIGludDMyX3QgdmFsdWU7CiAgICAgICAg
IGlmKGxlYWRVbml0PGtNaW5Ud29Vbml0VmFsdWVMZWFkKSB7CiAgICAgICAgICAgICB2YWx1ZT1s
ZWFkVW5pdDsKQEAgLTM5MCw3ICszOTIsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAg
IHJldHVybiB2YWx1ZTsKICAgICB9Ci0gICAgc3RhdGljIGlubGluZSBjb25zdCBVQ2hhciAqc2tp
cFZhbHVlKGNvbnN0IFVDaGFyICpwb3MsIGludDMyX3QgbGVhZFVuaXQpIHsKKyAgICBzdGF0aWMg
aW5saW5lIGNvbnN0IGNoYXIxNl90ICpza2lwVmFsdWUoY29uc3QgY2hhcjE2X3QgKnBvcywgaW50
MzJfdCBsZWFkVW5pdCkgewogICAgICAgICBpZihsZWFkVW5pdD49a01pblR3b1VuaXRWYWx1ZUxl
YWQpIHsKICAgICAgICAgICAgIGlmKGxlYWRVbml0PGtUaHJlZVVuaXRWYWx1ZUxlYWQpIHsKICAg
ICAgICAgICAgICAgICArK3BvczsKQEAgLTQwMCwxMiArNDAyLDEyIEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHBvczsKICAgICB9Ci0gICAgc3RhdGljIGlubGluZSBjb25z
dCBVQ2hhciAqc2tpcFZhbHVlKGNvbnN0IFVDaGFyICpwb3MpIHsKKyAgICBzdGF0aWMgaW5saW5l
IGNvbnN0IGNoYXIxNl90ICpza2lwVmFsdWUoY29uc3QgY2hhcjE2X3QgKnBvcykgewogICAgICAg
ICBpbnQzMl90IGxlYWRVbml0PSpwb3MrKzsKICAgICAgICAgcmV0dXJuIHNraXBWYWx1ZShwb3Ms
IGxlYWRVbml0JjB4N2ZmZik7CiAgICAgfQogCi0gICAgc3RhdGljIGlubGluZSBpbnQzMl90IHJl
YWROb2RlVmFsdWUoY29uc3QgVUNoYXIgKnBvcywgaW50MzJfdCBsZWFkVW5pdCkgeworICAgIHN0
YXRpYyBpbmxpbmUgaW50MzJfdCByZWFkTm9kZVZhbHVlKGNvbnN0IGNoYXIxNl90ICpwb3MsIGlu
dDMyX3QgbGVhZFVuaXQpIHsKICAgICAgICAgLy8gVV9BU1NFUlQoa01pblZhbHVlTGVhZDw9bGVh
ZFVuaXQgJiYgbGVhZFVuaXQ8a1ZhbHVlSXNGaW5hbCk7CiAgICAgICAgIGludDMyX3QgdmFsdWU7
CiAgICAgICAgIGlmKGxlYWRVbml0PGtNaW5Ud29Vbml0Tm9kZVZhbHVlTGVhZCkgewpAQCAtNDE3
LDcgKzQxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHZhbHVlOwog
ICAgIH0KLSAgICBzdGF0aWMgaW5saW5lIGNvbnN0IFVDaGFyICpza2lwTm9kZVZhbHVlKGNvbnN0
IFVDaGFyICpwb3MsIGludDMyX3QgbGVhZFVuaXQpIHsKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0
IGNoYXIxNl90ICpza2lwTm9kZVZhbHVlKGNvbnN0IGNoYXIxNl90ICpwb3MsIGludDMyX3QgbGVh
ZFVuaXQpIHsKICAgICAgICAgLy8gVV9BU1NFUlQoa01pblZhbHVlTGVhZDw9bGVhZFVuaXQgJiYg
bGVhZFVuaXQ8a1ZhbHVlSXNGaW5hbCk7CiAgICAgICAgIGlmKGxlYWRVbml0Pj1rTWluVHdvVW5p
dE5vZGVWYWx1ZUxlYWQpIHsKICAgICAgICAgICAgIGlmKGxlYWRVbml0PGtUaHJlZVVuaXROb2Rl
VmFsdWVMZWFkKSB7CkBAIC00MjksNyArNDMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IHBvczsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIGNvbnN0IFVDaGFyICpqdW1wQnlEZWx0
YShjb25zdCBVQ2hhciAqcG9zKSB7CisgICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyMTZfdCAq
anVtcEJ5RGVsdGEoY29uc3QgY2hhcjE2X3QgKnBvcykgewogICAgICAgICBpbnQzMl90IGRlbHRh
PSpwb3MrKzsKICAgICAgICAgaWYoZGVsdGE+PWtNaW5Ud29Vbml0RGVsdGFMZWFkKSB7CiAgICAg
ICAgICAgICBpZihkZWx0YT09a1RocmVlVW5pdERlbHRhTGVhZCkgewpAQCAtNDQyLDcgKzQ0NCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBwb3MrZGVsdGE7CiAgICAgfQogCi0gICAgc3Rh
dGljIGNvbnN0IFVDaGFyICpza2lwRGVsdGEoY29uc3QgVUNoYXIgKnBvcykgeworICAgIHN0YXRp
YyBjb25zdCBjaGFyMTZfdCAqc2tpcERlbHRhKGNvbnN0IGNoYXIxNl90ICpwb3MpIHsKICAgICAg
ICAgaW50MzJfdCBkZWx0YT0qcG9zKys7CiAgICAgICAgIGlmKGRlbHRhPj1rTWluVHdvVW5pdERl
bHRhTGVhZCkgewogICAgICAgICAgICAgaWYoZGVsdGE9PWtUaHJlZVVuaXREZWx0YUxlYWQpIHsK
QEAgLTQ1OSwyOCArNDYxLDI4IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgLy8gSGFuZGxlcyBh
IGJyYW5jaCBub2RlIGZvciBib3RoIG5leHQodWNoYXIpIGFuZCBuZXh0KHN0cmluZykuCi0gICAg
VVN0cmluZ1RyaWVSZXN1bHQgYnJhbmNoTmV4dChjb25zdCBVQ2hhciAqcG9zLCBpbnQzMl90IGxl
bmd0aCwgaW50MzJfdCB1Y2hhcik7CisgICAgVVN0cmluZ1RyaWVSZXN1bHQgYnJhbmNoTmV4dChj
b25zdCBjaGFyMTZfdCAqcG9zLCBpbnQzMl90IGxlbmd0aCwgaW50MzJfdCB1Y2hhcik7CiAKICAg
ICAvLyBSZXF1aXJlcyByZW1haW5pbmdMZW5ndGhfPDAuCi0gICAgVVN0cmluZ1RyaWVSZXN1bHQg
bmV4dEltcGwoY29uc3QgVUNoYXIgKnBvcywgaW50MzJfdCB1Y2hhcik7CisgICAgVVN0cmluZ1Ry
aWVSZXN1bHQgbmV4dEltcGwoY29uc3QgY2hhcjE2X3QgKnBvcywgaW50MzJfdCB1Y2hhcik7CiAK
ICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBoYXNVbmlxdWVWYWx1ZSgpLgogICAgIC8vIFJl
Y3Vyc2l2ZWx5IGZpbmRzIGEgdW5pcXVlIHZhbHVlIChvciB3aGV0aGVyIHRoZXJlIGlzIG5vdCBh
IHVuaXF1ZSBvbmUpCiAgICAgLy8gZnJvbSBhIGJyYW5jaC4KLSAgICBzdGF0aWMgY29uc3QgVUNo
YXIgKmZpbmRVbmlxdWVWYWx1ZUZyb21CcmFuY2goY29uc3QgVUNoYXIgKnBvcywgaW50MzJfdCBs
ZW5ndGgsCisgICAgc3RhdGljIGNvbnN0IGNoYXIxNl90ICpmaW5kVW5pcXVlVmFsdWVGcm9tQnJh
bmNoKGNvbnN0IGNoYXIxNl90ICpwb3MsIGludDMyX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQm9vbCBoYXZlVW5pcXVlVmFsdWUs
IGludDMyX3QgJnVuaXF1ZVZhbHVlKTsKICAgICAvLyBSZWN1cnNpdmVseSBmaW5kcyBhIHVuaXF1
ZSB2YWx1ZSAob3Igd2hldGhlciB0aGVyZSBpcyBub3QgYSB1bmlxdWUgb25lKQogICAgIC8vIHN0
YXJ0aW5nIGZyb20gYSBwb3NpdGlvbiBvbiBhIG5vZGUgbGVhZCB1bml0LgotICAgIHN0YXRpYyBV
Qm9vbCBmaW5kVW5pcXVlVmFsdWUoY29uc3QgVUNoYXIgKnBvcywgVUJvb2wgaGF2ZVVuaXF1ZVZh
bHVlLCBpbnQzMl90ICZ1bmlxdWVWYWx1ZSk7CisgICAgc3RhdGljIFVCb29sIGZpbmRVbmlxdWVW
YWx1ZShjb25zdCBjaGFyMTZfdCAqcG9zLCBVQm9vbCBoYXZlVW5pcXVlVmFsdWUsIGludDMyX3Qg
JnVuaXF1ZVZhbHVlKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGdldE5leHRVQ2hh
cnMoKS4KICAgICAvLyBnZXROZXh0VUNoYXJzKCkgd2hlbiBwb3MgaXMgb24gYSBicmFuY2ggbm9k
ZS4KLSAgICBzdGF0aWMgdm9pZCBnZXROZXh0QnJhbmNoVUNoYXJzKGNvbnN0IFVDaGFyICpwb3Ms
IGludDMyX3QgbGVuZ3RoLCBBcHBlbmRhYmxlICZvdXQpOworICAgIHN0YXRpYyB2b2lkIGdldE5l
eHRCcmFuY2hVQ2hhcnMoY29uc3QgY2hhcjE2X3QgKnBvcywgaW50MzJfdCBsZW5ndGgsIEFwcGVu
ZGFibGUgJm91dCk7CiAKICAgICAvLyBVQ2hhcnNUcmllIGRhdGEgc3RydWN0dXJlCiAgICAgLy8K
LSAgICAvLyBUaGUgdHJpZSBjb25zaXN0cyBvZiBhIHNlcmllcyBvZiBVQ2hhci1zZXJpYWxpemVk
IG5vZGVzIGZvciBpbmNyZW1lbnRhbAotICAgIC8vIFVuaWNvZGUgc3RyaW5nL1VDaGFyIHNlcXVl
bmNlIG1hdGNoaW5nLiAoVUNoYXI9MTYtYml0IHVuc2lnbmVkIGludGVnZXIpCisgICAgLy8gVGhl
IHRyaWUgY29uc2lzdHMgb2YgYSBzZXJpZXMgb2YgY2hhcjE2X3Qtc2VyaWFsaXplZCBub2RlcyBm
b3IgaW5jcmVtZW50YWwKKyAgICAvLyBVbmljb2RlIHN0cmluZy9jaGFyMTZfdCBzZXF1ZW5jZSBt
YXRjaGluZy4gKGNoYXIxNl90PTE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyKQogICAgIC8vIFRoZSBy
b290IG5vZGUgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJpZSBkYXRhLgogICAgIC8vCiAg
ICAgLy8gVHlwZXMgb2Ygbm9kZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYnkgdGhlaXIgbm9kZSBsZWFk
IHVuaXQgcmFuZ2VzLgpAQCAtNDg5LDkgKzQ5MSw5IEBAIHByaXZhdGU6CiAgICAgLy8KICAgICAv
LyBOb2RlIHR5cGVzOgogICAgIC8vICAtIEZpbmFsLXZhbHVlIG5vZGU6IFN0b3JlcyBhIDMyLWJp
dCBpbnRlZ2VyIGluIGEgY29tcGFjdCwgdmFyaWFibGUtbGVuZ3RoIGZvcm1hdC4KLSAgICAvLyAg
ICBUaGUgdmFsdWUgaXMgZm9yIHRoZSBzdHJpbmcvVUNoYXIgc2VxdWVuY2Ugc28gZmFyLgorICAg
IC8vICAgIFRoZSB2YWx1ZSBpcyBmb3IgdGhlIHN0cmluZy9jaGFyMTZfdCBzZXF1ZW5jZSBzbyBm
YXIuCiAgICAgLy8gIC0gTWF0Y2ggbm9kZSwgb3B0aW9uYWxseSB3aXRoIGFuIGludGVybWVkaWF0
ZSB2YWx1ZSBpbiBhIGRpZmZlcmVudCBjb21wYWN0IGZvcm1hdC4KLSAgICAvLyAgICBUaGUgdmFs
dWUsIGlmIHByZXNlbnQsIGlzIGZvciB0aGUgc3RyaW5nL1VDaGFyIHNlcXVlbmNlIHNvIGZhci4K
KyAgICAvLyAgICBUaGUgdmFsdWUsIGlmIHByZXNlbnQsIGlzIGZvciB0aGUgc3RyaW5nL2NoYXIx
Nl90IHNlcXVlbmNlIHNvIGZhci4KICAgICAvLwogICAgIC8vICBBc2lkZSBmcm9tIHRoZSB2YWx1
ZSwgd2hpY2ggdXNlcyB0aGUgbm9kZSBsZWFkIHVuaXQncyBoaWdoIGJpdHM6CiAgICAgLy8KQEAg
LTU1OCwxNSArNTYwLDE1IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBr
TWF4VHdvVW5pdERlbHRhPSgoa1RocmVlVW5pdERlbHRhTGVhZC1rTWluVHdvVW5pdERlbHRhTGVh
ZCk8PDE2KS0xOyAgLy8gMHgwM2ZlZmZmZgogCi0gICAgVUNoYXIgKm93bmVkQXJyYXlfOworICAg
IGNoYXIxNl90ICpvd25lZEFycmF5XzsKIAogICAgIC8vIEZpeGVkIHZhbHVlIHJlZmVyZW5jaW5n
IHRoZSBVQ2hhcnNUcmllIHdvcmRzLgotICAgIGNvbnN0IFVDaGFyICp1Y2hhcnNfOworICAgIGNv
bnN0IGNoYXIxNl90ICp1Y2hhcnNfOwogCiAgICAgLy8gSXRlcmF0b3IgdmFyaWFibGVzLgogCiAg
ICAgLy8gUG9pbnRlciB0byBuZXh0IHRyaWUgdW5pdCB0byByZWFkLiBOVUxMIGlmIG5vIG1vcmUg
bWF0Y2hlcy4KLSAgICBjb25zdCBVQ2hhciAqcG9zXzsKKyAgICBjb25zdCBjaGFyMTZfdCAqcG9z
XzsKICAgICAvLyBSZW1haW5pbmcgbGVuZ3RoIG9mIGEgbGluZWFyLW1hdGNoIG5vZGUsIG1pbnVz
IDEuIE5lZ2F0aXZlIGlmIG5vdCBpbiBzdWNoIGEgbm9kZS4KICAgICBpbnQzMl90IHJlbWFpbmlu
Z01hdGNoTGVuZ3RoXzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vj
aGFyc3RyaWVidWlsZGVyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjaGFyc3RyaWVidWls
ZGVyLmgKaW5kZXggMzVlMzUzZDQxYjUxNWVlYThmZjZhZDk3MjAzMTUwMWUyMTY0NGYzOS4uMmFh
NDc1N2U1MmNiMDdjN2UxYzI3OTAyZDg4M2EzNTdiNjZkMzE2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS91Y2hhcnN0cmllYnVpbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdWNoYXJzdHJpZWJ1aWxkZXIuaApAQCAtMSwxMCArMSwxMiBAQAorLy8gwqkgMjAx
NiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJt
cyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQsIEludGVybmF0
aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiwgSW50
ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMu
ICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUg
bmFtZTogIHVjaGFyc3RyaWVidWlsZGVyLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAg
IGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5k
ZW50YXRpb246NAogKgpAQCAtODcsMjEgKzg5LDIxIEBAIHB1YmxpYzoKICAgICBVQ2hhcnNUcmll
ICpidWlsZChVU3RyaW5nVHJpZUJ1aWxkT3B0aW9uIGJ1aWxkT3B0aW9uLCBVRXJyb3JDb2RlICZl
cnJvckNvZGUpOwogCiAgICAgLyoqCi0gICAgICogQnVpbGRzIGEgVUNoYXJzVHJpZSBmb3IgdGhl
IGFkZCgpZWQgZGF0YSBhbmQgVUNoYXItc2VyaWFsaXplcyBpdC4KKyAgICAgKiBCdWlsZHMgYSBV
Q2hhcnNUcmllIGZvciB0aGUgYWRkKCllZCBkYXRhIGFuZCBjaGFyMTZfdC1zZXJpYWxpemVzIGl0
LgogICAgICAqIE9uY2UgYnVpbHQsIG5vIGZ1cnRoZXIgZGF0YSBjYW4gYmUgYWRkKCllZCB1bnRp
bCBjbGVhcigpIGlzIGNhbGxlZC4KICAgICAgKgogICAgICAqIEEgVUNoYXJzVHJpZSBjYW5ub3Qg
YmUgZW1wdHkuIEF0IGxlYXN0IG9uZSAoc3RyaW5nLCB2YWx1ZSkgcGFpcgogICAgICAqIG11c3Qg
aGF2ZSBiZWVuIGFkZCgpZWQuCiAgICAgICoKICAgICAgKiBNdWx0aXBsZSBjYWxscyB0byBidWls
ZFVuaWNvZGVTdHJpbmcoKSBzZXQgdGhlIFVuaWNvZGVTdHJpbmdzIHRvIHRoZQotICAgICAqIGJ1
aWxkZXIncyBzYW1lIFVDaGFyIGFycmF5LCB3aXRob3V0IHJlYnVpbGRpbmcuCisgICAgICogYnVp
bGRlcidzIHNhbWUgY2hhcjE2X3QgYXJyYXksIHdpdGhvdXQgcmVidWlsZGluZy4KICAgICAgKiBJ
ZiBidWlsZFVuaWNvZGVTdHJpbmcoKSBpcyBjYWxsZWQgYWZ0ZXIgYnVpbGQoKSwgdGhlIHRyaWUg
d2lsbCBiZQogICAgICAqIHJlLXNlcmlhbGl6ZWQgaW50byBhIG5ldyBhcnJheS4KICAgICAgKiBJ
ZiBidWlsZCgpIGlzIGNhbGxlZCBhZnRlciBidWlsZFVuaWNvZGVTdHJpbmcoKSwgdGhlIHRyaWUg
b2JqZWN0IHdpbGwgYmVjb21lCiAgICAgICogdGhlIG93bmVyIG9mIHRoZSBwcmV2aW91c2x5IHJl
dHVybmVkIGFycmF5LgogICAgICAqIEFmdGVyIGNsZWFyKCkgaGFzIGJlZW4gY2FsbGVkLCBhIG5l
dyBhcnJheSB3aWxsIGJlIHVzZWQgYXMgd2VsbC4KICAgICAgKiBAcGFyYW0gYnVpbGRPcHRpb24g
QnVpbGQgb3B0aW9uLCBzZWUgVVN0cmluZ1RyaWVCdWlsZE9wdGlvbi4KLSAgICAgKiBAcGFyYW0g
cmVzdWx0IEEgVW5pY29kZVN0cmluZyB3aGljaCB3aWxsIGJlIHNldCB0byB0aGUgVUNoYXItc2Vy
aWFsaXplZAorICAgICAqIEBwYXJhbSByZXN1bHQgQSBVbmljb2RlU3RyaW5nIHdoaWNoIHdpbGwg
YmUgc2V0IHRvIHRoZSBjaGFyMTZfdC1zZXJpYWxpemVkCiAgICAgICogICAgICAgICAgICAgICBV
Q2hhcnNUcmllIGZvciB0aGUgYWRkKCllZCBkYXRhLgogICAgICAqIEBwYXJhbSBlcnJvckNvZGUg
U3RhbmRhcmQgSUNVIGVycm9yIGNvZGUuIEl0cyBpbnB1dCB2YWx1ZSBtdXN0CiAgICAgICogICAg
ICAgICAgICAgICAgICBwYXNzIHRoZSBVX1NVQ0NFU1MoKSB0ZXN0LCBvciBlbHNlIHRoZSBmdW5j
dGlvbiByZXR1cm5zCkBAIC0xMzMsMTQgKzEzNSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgYnVp
bGRVQ2hhcnMoVVN0cmluZ1RyaWVCdWlsZE9wdGlvbiBidWlsZE9wdGlvbiwgVUVycm9yQ29kZSAm
ZXJyb3JDb2RlKTsKIAogICAgIHZpcnR1YWwgaW50MzJfdCBnZXRFbGVtZW50U3RyaW5nTGVuZ3Ro
KGludDMyX3QgaSkgY29uc3Q7Ci0gICAgdmlydHVhbCBVQ2hhciBnZXRFbGVtZW50VW5pdChpbnQz
Ml90IGksIGludDMyX3QgdW5pdEluZGV4KSBjb25zdDsKKyAgICB2aXJ0dWFsIGNoYXIxNl90IGdl
dEVsZW1lbnRVbml0KGludDMyX3QgaSwgaW50MzJfdCB1bml0SW5kZXgpIGNvbnN0OwogICAgIHZp
cnR1YWwgaW50MzJfdCBnZXRFbGVtZW50VmFsdWUoaW50MzJfdCBpKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgaW50MzJfdCBnZXRMaW1pdE9mTGluZWFyTWF0Y2goaW50MzJfdCBmaXJzdCwgaW50MzJf
dCBsYXN0LCBpbnQzMl90IHVuaXRJbmRleCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGludDMyX3Qg
Y291bnRFbGVtZW50VW5pdHMoaW50MzJfdCBzdGFydCwgaW50MzJfdCBsaW1pdCwgaW50MzJfdCB1
bml0SW5kZXgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50MzJfdCBza2lwRWxlbWVudHNCeVNvbWVV
bml0cyhpbnQzMl90IGksIGludDMyX3QgdW5pdEluZGV4LCBpbnQzMl90IGNvdW50KSBjb25zdDsK
LSAgICB2aXJ0dWFsIGludDMyX3QgaW5kZXhPZkVsZW1lbnRXaXRoTmV4dFVuaXQoaW50MzJfdCBp
LCBpbnQzMl90IHVuaXRJbmRleCwgVUNoYXIgdW5pdCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQz
Ml90IGluZGV4T2ZFbGVtZW50V2l0aE5leHRVbml0KGludDMyX3QgaSwgaW50MzJfdCB1bml0SW5k
ZXgsIGNoYXIxNl90IHVuaXQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBVQm9vbCBtYXRjaE5vZGVz
Q2FuSGF2ZVZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIFRSVUU7IH0KIApAQCAtMTUwLDExICsxNTIs
MTEgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIFVDVExpbmVhck1hdGNoTm9kZSA6IHB1YmxpYyBM
aW5lYXJNYXRjaE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVUNUTGluZWFyTWF0Y2hOb2Rl
KGNvbnN0IFVDaGFyICp1bml0cywgaW50MzJfdCBsZW4sIE5vZGUgKm5leHROb2RlKTsKKyAgICAg
ICAgVUNUTGluZWFyTWF0Y2hOb2RlKGNvbnN0IGNoYXIxNl90ICp1bml0cywgaW50MzJfdCBsZW4s
IE5vZGUgKm5leHROb2RlKTsKICAgICAgICAgdmlydHVhbCBVQm9vbCBvcGVyYXRvcj09KGNvbnN0
IE5vZGUgJm90aGVyKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIHdyaXRlKFN0cmluZ1Ry
aWVCdWlsZGVyICZidWlsZGVyKTsKICAgICBwcml2YXRlOgotICAgICAgICBjb25zdCBVQ2hhciAq
czsKKyAgICAgICAgY29uc3QgY2hhcjE2X3QgKnM7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgTm9k
ZSAqY3JlYXRlTGluZWFyTWF0Y2hOb2RlKGludDMyX3QgaSwgaW50MzJfdCB1bml0SW5kZXgsIGlu
dDMyX3QgbGVuZ3RoLApAQCAtMTYyLDcgKzE2NCw3IEBAIHByaXZhdGU6CiAKICAgICBVQm9vbCBl
bnN1cmVDYXBhY2l0eShpbnQzMl90IGxlbmd0aCk7CiAgICAgdmlydHVhbCBpbnQzMl90IHdyaXRl
KGludDMyX3QgdW5pdCk7Ci0gICAgaW50MzJfdCB3cml0ZShjb25zdCBVQ2hhciAqcywgaW50MzJf
dCBsZW5ndGgpOworICAgIGludDMyX3Qgd3JpdGUoY29uc3QgY2hhcjE2X3QgKnMsIGludDMyX3Qg
bGVuZ3RoKTsKICAgICB2aXJ0dWFsIGludDMyX3Qgd3JpdGVFbGVtZW50VW5pdHMoaW50MzJfdCBp
LCBpbnQzMl90IHVuaXRJbmRleCwgaW50MzJfdCBsZW5ndGgpOwogICAgIHZpcnR1YWwgaW50MzJf
dCB3cml0ZVZhbHVlQW5kRmluYWwoaW50MzJfdCBpLCBVQm9vbCBpc0ZpbmFsKTsKICAgICB2aXJ0
dWFsIGludDMyX3Qgd3JpdGVWYWx1ZUFuZFR5cGUoVUJvb2wgaGFzVmFsdWUsIGludDMyX3QgdmFs
dWUsIGludDMyX3Qgbm9kZSk7CkBAIC0xNzMsOSArMTc1LDkgQEAgcHJpdmF0ZToKICAgICBpbnQz
Ml90IGVsZW1lbnRzQ2FwYWNpdHk7CiAgICAgaW50MzJfdCBlbGVtZW50c0xlbmd0aDsKIAotICAg
IC8vIFVDaGFyIHNlcmlhbGl6YXRpb24gb2YgdGhlIHRyaWUuCisgICAgLy8gY2hhcjE2X3Qgc2Vy
aWFsaXphdGlvbiBvZiB0aGUgdHJpZS4KICAgICAvLyBHcm93cyBmcm9tIHRoZSBiYWNrOiB1Y2hh
cnNMZW5ndGggbWVhc3VyZXMgZnJvbSB0aGUgZW5kIG9mIHRoZSBidWZmZXIhCi0gICAgVUNoYXIg
KnVjaGFyczsKKyAgICBjaGFyMTZfdCAqdWNoYXJzOwogICAgIGludDMyX3QgdWNoYXJzQ2FwYWNp
dHk7CiAgICAgaW50MzJfdCB1Y2hhcnNMZW5ndGg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91Y2hyaXRlci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y2hyaXRl
ci5oCmluZGV4IDZkNWE5OTBmN2I3ZWQzZDViYWNmMmRhODQ3MWVmOGZmOTQyMmY5OWMuLmVmY2Qy
NjNmOGJjYzkwZWE2YTc4YjllNmMxZjc2NTFiZTYyMWE2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdWNocml0ZXIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vj
aHJpdGVyLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwg
SW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51
bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmln
aHQgKEMpIDE5OTgtMjAwNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpAQCAtMTMs
MTggKzE1LDE4IEBACiAKIC8qKgogICogXGZpbGUgCi0gKiBcYnJpZWYgQysrIEFQSTogVUNoYXIg
Q2hhcmFjdGVyIEl0ZXJhdG9yCisgKiBcYnJpZWYgQysrIEFQSTogY2hhcjE2X3QgQ2hhcmFjdGVy
IEl0ZXJhdG9yCiAgKi8KICAKIFVfTkFNRVNQQUNFX0JFR0lOCiAKIC8qKgogICogQSBjb25jcmV0
ZSBzdWJjbGFzcyBvZiBDaGFyYWN0ZXJJdGVyYXRvciB0aGF0IGl0ZXJhdGVzIG92ZXIgdGhlCi0g
KiBjaGFyYWN0ZXJzIChjb2RlIHVuaXRzIG9yIGNvZGUgcG9pbnRzKSBpbiBhIFVDaGFyIGFycmF5
LgorICogY2hhcmFjdGVycyAoY29kZSB1bml0cyBvciBjb2RlIHBvaW50cykgaW4gYSBjaGFyMTZf
dCBhcnJheS4KICAqIEl0J3MgcG9zc2libGUgbm90IG9ubHkgdG8gY3JlYXRlIGFuCi0gKiBpdGVy
YXRvciB0aGF0IGl0ZXJhdGVzIG92ZXIgYW4gZW50aXJlIFVDaGFyIGFycmF5LCBidXQgYWxzbyB0
bwotICogY3JlYXRlIG9uZSB0aGF0IGl0ZXJhdGVzIG92ZXIgb25seSBhIHN1YnJhbmdlIG9mIGEg
VUNoYXIgYXJyYXkKLSAqIChpdGVyYXRvcnMgb3ZlciBkaWZmZXJlbnQgc3VicmFuZ2VzIG9mIHRo
ZSBzYW1lIFVDaGFyIGFycmF5IGRvbid0CisgKiBpdGVyYXRvciB0aGF0IGl0ZXJhdGVzIG92ZXIg
YW4gZW50aXJlIGNoYXIxNl90IGFycmF5LCBidXQgYWxzbyB0bworICogY3JlYXRlIG9uZSB0aGF0
IGl0ZXJhdGVzIG92ZXIgb25seSBhIHN1YnJhbmdlIG9mIGEgY2hhcjE2X3QgYXJyYXkKKyAqIChp
dGVyYXRvcnMgb3ZlciBkaWZmZXJlbnQgc3VicmFuZ2VzIG9mIHRoZSBzYW1lIGNoYXIxNl90IGFy
cmF5IGRvbid0CiAgKiBjb21wYXJlIGVxdWFsKS4KICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IK
ICAqIEBzZWUgRm9yd2FyZENoYXJhY3Rlckl0ZXJhdG9yCkBAIC0zMywzNCArMzUsMzQgQEAgVV9O
QU1FU1BBQ0VfQkVHSU4KIGNsYXNzIFVfQ09NTU9OX0FQSSBVQ2hhckNoYXJhY3Rlckl0ZXJhdG9y
IDogcHVibGljIENoYXJhY3Rlckl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgLyoqCi0gICAqIENyZWF0
ZSBhbiBpdGVyYXRvciBvdmVyIHRoZSBVQ2hhciBhcnJheSByZWZlcnJlZCB0byBieSAidGV4dFB0
ciIuCisgICAqIENyZWF0ZSBhbiBpdGVyYXRvciBvdmVyIHRoZSBjaGFyMTZfdCBhcnJheSByZWZl
cnJlZCB0byBieSAidGV4dFB0ciIuCiAgICAqIFRoZSBpdGVyYXRpb24gcmFuZ2UgaXMgMCB0byA8
Y29kZT5sZW5ndGgtMTwvY29kZT4uCiAgICAqIHRleHQgaXMgb25seSBhbGlhc2VkLCBub3QgYWRv
cHRlZCAodGhlCiAgICAqIGRlc3RydWN0b3Igd2lsbCBub3QgZGVsZXRlIGl0KS4KLSAgICogQHBh
cmFtIHRleHRQdHIgVGhlIFVDaGFyIGFycmF5IHRvIGJlIGl0ZXJhdGVkIG92ZXIKLSAgICogQHBh
cmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBVQ2hhciBhcnJheQorICAgKiBAcGFyYW0gdGV4
dFB0ciBUaGUgY2hhcjE2X3QgYXJyYXkgdG8gYmUgaXRlcmF0ZWQgb3ZlcgorICAgKiBAcGFyYW0g
bGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIGNoYXIxNl90IGFycmF5CiAgICAqIEBzdGFibGUgSUNV
IDIuMAogICAgKi8KLSAgVUNoYXJDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBVQ2hhciogdGV4dFB0
ciwgaW50MzJfdCBsZW5ndGgpOworICBVQ2hhckNoYXJhY3Rlckl0ZXJhdG9yKENvbnN0Q2hhcjE2
UHRyIHRleHRQdHIsIGludDMyX3QgbGVuZ3RoKTsKIAogICAvKioKLSAgICogQ3JlYXRlIGFuIGl0
ZXJhdG9yIG92ZXIgdGhlIFVDaGFyIGFycmF5IHJlZmVycmVkIHRvIGJ5ICJ0ZXh0UHRyIi4KKyAg
ICogQ3JlYXRlIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGNoYXIxNl90IGFycmF5IHJlZmVycmVkIHRv
IGJ5ICJ0ZXh0UHRyIi4KICAgICogVGhlIGl0ZXJhdGlvbiByYW5nZSBpcyAwIHRvIDxjb2RlPmxl
bmd0aC0xPC9jb2RlPi4KICAgICogdGV4dCBpcyBvbmx5IGFsaWFzZWQsIG5vdCBhZG9wdGVkICh0
aGUKICAgICogZGVzdHJ1Y3RvciB3aWxsIG5vdCBkZWxldGUgaXQpLgogICAgKiBUaGUgc3RhcnRp
bmcKICAgICogcG9zaXRpb24gaXMgc3BlY2lmaWVkIGJ5ICJwb3NpdGlvbiIuIElmICJwb3NpdGlv
biIgaXMgb3V0c2lkZSB0aGUgdmFsaWQKICAgICogaXRlcmF0aW9uIHJhbmdlLCB0aGUgYmVoYXZp
b3Igb2YgdGhpcyBvYmplY3QgaXMgdW5kZWZpbmVkLgotICAgKiBAcGFyYW0gdGV4dFB0ciBUaGUg
VUNoYXIgYXJyYXkgdG8gYmUgaXRlcmF0ZCBvdmVyCi0gICAqIEBwYXJhbSBsZW5ndGggVGhlIGxl
bmd0aCBvZiB0aGUgVUNoYXIgYXJyYXkKKyAgICogQHBhcmFtIHRleHRQdHIgVGhlIGNoYXIxNl90
IGFycmF5IHRvIGJlIGl0ZXJhdGQgb3ZlcgorICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGgg
b2YgdGhlIGNoYXIxNl90IGFycmF5CiAgICAqIEBwYXJhbSBwb3NpdGlvbiBUaGUgc3RhcnRpbmcg
cG9zaXRpb24gb2YgdGhlIGl0ZXJhdGlvbgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0g
IFVDaGFyQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgVUNoYXIqIHRleHRQdHIsIGludDMyX3QgbGVu
Z3RoLAorICBVQ2hhckNoYXJhY3Rlckl0ZXJhdG9yKENvbnN0Q2hhcjE2UHRyIHRleHRQdHIsIGlu
dDMyX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcG9zaXRpb24p
OwogCiAgIC8qKgotICAgKiBDcmVhdGUgYW4gaXRlcmF0b3Igb3ZlciB0aGUgVUNoYXIgYXJyYXkg
cmVmZXJyZWQgdG8gYnkgInRleHRQdHIiLgorICAgKiBDcmVhdGUgYW4gaXRlcmF0b3Igb3ZlciB0
aGUgY2hhcjE2X3QgYXJyYXkgcmVmZXJyZWQgdG8gYnkgInRleHRQdHIiLgogICAgKiBUaGUgaXRl
cmF0aW9uIHJhbmdlIGlzIDAgdG8gPGNvZGU+ZW5kLTE8L2NvZGU+LgogICAgKiB0ZXh0IGlzIG9u
bHkgYWxpYXNlZCwgbm90IGFkb3B0ZWQgKHRoZQogICAgKiBkZXN0cnVjdG9yIHdpbGwgbm90IGRl
bGV0ZSBpdCkuCkBAIC02OCwxNCArNzAsMTQgQEAgcHVibGljOgogICAgKiBwb3NpdGlvbiBpcyBz
cGVjaWZpZWQgYnkgInBvc2l0aW9uIi4gSWYgYmVnaW4gYW5kIGVuZCBkbyBub3QKICAgICogZm9y
bSBhIHZhbGlkIGl0ZXJhdGlvbiByYW5nZSBvciAicG9zaXRpb24iIGlzIG91dHNpZGUgdGhlIHZh
bGlkCiAgICAqIGl0ZXJhdGlvbiByYW5nZSwgdGhlIGJlaGF2aW9yIG9mIHRoaXMgb2JqZWN0IGlz
IHVuZGVmaW5lZC4KLSAgICogQHBhcmFtIHRleHRQdHIgVGhlIFVDaGFyIGFycmF5IHRvIGJlIGl0
ZXJhdGVkIG92ZXIKLSAgICogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBVQ2hhciBh
cnJheQorICAgKiBAcGFyYW0gdGV4dFB0ciBUaGUgY2hhcjE2X3QgYXJyYXkgdG8gYmUgaXRlcmF0
ZWQgb3ZlcgorICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIGNoYXIxNl90IGFy
cmF5CiAgICAqIEBwYXJhbSB0ZXh0QmVnaW4gIFRoZSBiZWdpbiBwb3NpdGlvbiBvZiB0aGUgaXRl
cmF0aW9uIHJhbmdlCiAgICAqIEBwYXJhbSB0ZXh0RW5kICAgIFRoZSBlbmQgcG9zaXRpb24gb2Yg
dGhlIGl0ZXJhdGlvbiByYW5nZQogICAgKiBAcGFyYW0gcG9zaXRpb24gICAgVGhlIHN0YXJ0aW5n
IHBvc2l0aW9uIG9mIHRoZSBpdGVyYXRpb24KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwot
ICBVQ2hhckNoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFVDaGFyKiB0ZXh0UHRyLCBpbnQzMl90IGxl
bmd0aCwKKyAgVUNoYXJDaGFyYWN0ZXJJdGVyYXRvcihDb25zdENoYXIxNlB0ciB0ZXh0UHRyLCBp
bnQzMl90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHRleHRCZWdp
biwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHRleHRFbmQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCBwb3NpdGlvbik7CkBAIC0xMzksNyArMTQxLDcgQEAgcHVi
bGljOgogICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBjb2RlIHVuaXQgaW4gaXRzIGl0ZXJhdGlvbiBy
YW5nZS4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICB2aXJ0dWFsIFVDaGFyICAgICAg
ICAgZmlyc3Qodm9pZCk7CisgIHZpcnR1YWwgY2hhcjE2X3QgICAgICAgICBmaXJzdCh2b2lkKTsK
IAogICAvKioKICAgICogU2V0cyB0aGUgaXRlcmF0b3IgdG8gcmVmZXIgdG8gdGhlIGZpcnN0IGNv
ZGUgdW5pdCBpbiBpdHMKQEAgLTE0OSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4g
dGhlIGZpcnN0IGNvZGUgdW5pdCBpbiBpdHMgaXRlcmF0aW9uIHJhbmdlCiAgICAqIEBzdGFibGUg
SUNVIDIuMAogICAgKi8KLSAgdmlydHVhbCBVQ2hhciAgICAgICAgIGZpcnN0UG9zdEluYyh2b2lk
KTsKKyAgdmlydHVhbCBjaGFyMTZfdCAgICAgICAgIGZpcnN0UG9zdEluYyh2b2lkKTsKIAogICAv
KioKICAgICogU2V0cyB0aGUgaXRlcmF0b3IgdG8gcmVmZXIgdG8gdGhlIGZpcnN0IGNvZGUgcG9p
bnQgaW4gaXRzCkBAIC0xNzksNyArMTgxLDcgQEAgcHVibGljOgogICAgKiBAcmV0dXJuIHRoZSBs
YXN0IGNvZGUgdW5pdCBpbiBpdHMgaXRlcmF0aW9uIHJhbmdlLgogICAgKiBAc3RhYmxlIElDVSAy
LjAKICAgICovCi0gIHZpcnR1YWwgVUNoYXIgICAgICAgICBsYXN0KHZvaWQpOworICB2aXJ0dWFs
IGNoYXIxNl90ICAgICAgICAgbGFzdCh2b2lkKTsKIAogICAvKioKICAgICogU2V0cyB0aGUgaXRl
cmF0b3IgdG8gcmVmZXIgdG8gdGhlIGxhc3QgY29kZSBwb2ludCBpbiBpdHMKQEAgLTE5OCw3ICsy
MDAsNyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gdGhlIGNvZGUgdW5pdAogICAgKiBAc3RhYmxl
IElDVSAyLjAKICAgICovCi0gIHZpcnR1YWwgVUNoYXIgICAgICAgICBzZXRJbmRleChpbnQzMl90
IHBvc2l0aW9uKTsKKyAgdmlydHVhbCBjaGFyMTZfdCAgICAgICAgIHNldEluZGV4KGludDMyX3Qg
cG9zaXRpb24pOwogCiAgIC8qKgogICAgKiBTZXRzIHRoZSBpdGVyYXRvciB0byByZWZlciB0byB0
aGUgYmVnaW5uaW5nIG9mIHRoZSBjb2RlIHBvaW50CkBAIC0yMTgsNyArMjIwLDcgQEAgcHVibGlj
OgogICAgKiBAcmV0dXJuIHRoZSBjb2RlIHVuaXQgdGhlIGl0ZXJhdG9yIGN1cnJlbnRseSByZWZl
cnMgdG8uCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgdmlydHVhbCBVQ2hhciAgICAg
ICAgIGN1cnJlbnQodm9pZCkgY29uc3Q7CisgIHZpcnR1YWwgY2hhcjE2X3QgICAgICAgICBjdXJy
ZW50KHZvaWQpIGNvbnN0OwogCiAgIC8qKgogICAgKiBSZXR1cm5zIHRoZSBjb2RlIHBvaW50IHRo
ZSBpdGVyYXRvciBjdXJyZW50bHkgcmVmZXJzIHRvLgpAQCAtMjM0LDcgKzIzNiw3IEBAIHB1Ymxp
YzoKICAgICogQHJldHVybiB0aGUgbmV4dCBjb2RlIHVuaXQgaW4gdGhlIGl0ZXJhdGlvbiByYW5n
ZS4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICB2aXJ0dWFsIFVDaGFyICAgICAgICAg
bmV4dCh2b2lkKTsKKyAgdmlydHVhbCBjaGFyMTZfdCAgICAgICAgIG5leHQodm9pZCk7CiAKICAg
LyoqCiAgICAqIEdldHMgdGhlIGN1cnJlbnQgY29kZSB1bml0IGZvciByZXR1cm5pbmcgYW5kIGFk
dmFuY2VzIHRvIHRoZSBuZXh0IGNvZGUgdW5pdApAQCAtMjQ0LDcgKzI0Niw3IEBAIHB1YmxpYzoK
ICAgICogQHJldHVybiB0aGUgY3VycmVudCBjb2RlIHVuaXQuCiAgICAqIEBzdGFibGUgSUNVIDIu
MAogICAgKi8KLSAgdmlydHVhbCBVQ2hhciAgICAgICAgIG5leHRQb3N0SW5jKHZvaWQpOworICB2
aXJ0dWFsIGNoYXIxNl90ICAgICAgICAgbmV4dFBvc3RJbmModm9pZCk7CiAKICAgLyoqCiAgICAq
IEFkdmFuY2VzIHRvIHRoZSBuZXh0IGNvZGUgcG9pbnQgaW4gdGhlIGl0ZXJhdGlvbiByYW5nZSAo
dG93YXJkCkBAIC0yODYsNyArMjg4LDcgQEAgcHVibGljOgogICAgKiBAcmV0dXJuIHRoZSBwcmV2
aW91cyBjb2RlIHVuaXQgaW4gdGhlIGl0ZXJhdGlvbiByYW5nZS4KICAgICogQHN0YWJsZSBJQ1Ug
Mi4wCiAgICAqLwotICB2aXJ0dWFsIFVDaGFyICAgICAgICAgcHJldmlvdXModm9pZCk7CisgIHZp
cnR1YWwgY2hhcjE2X3QgICAgICAgICBwcmV2aW91cyh2b2lkKTsKIAogICAvKioKICAgICogQWR2
YW5jZXMgdG8gdGhlIHByZXZpb3VzIGNvZGUgcG9pbnQgaW4gdGhlIGl0ZXJhdGlvbiByYW5nZSAo
dG93YXJkCkBAIC0zMzIsMTYgKzMzNCwyMCBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gdGhlIG5l
dyBwb3NpdGlvbgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCisjaWZkZWYgbW92ZTMyCisg
ICAvLyBPbmUgb2YgdGhlIHN5c3RlbSBoZWFkZXJzIHJpZ2h0IG5vdyBpcyBzb21ldGltZXMgZGVm
aW5pbmcgYSBjb25mbGljdGluZyBtYWNybyB3ZSBkb24ndCB1c2UKKyN1bmRlZiBtb3ZlMzIKKyNl
bmRpZgogICB2aXJ0dWFsIGludDMyX3QgICAgICBtb3ZlMzIoaW50MzJfdCBkZWx0YSwgRU9yaWdp
biBvcmlnaW4pOwogCiAgIC8qKgogICAgKiBTZXRzIHRoZSBpdGVyYXRvciB0byBpdGVyYXRlIG92
ZXIgYSBuZXcgcmFuZ2Ugb2YgdGV4dAogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIHZv
aWQgc2V0VGV4dChjb25zdCBVQ2hhciogbmV3VGV4dCwgaW50MzJfdCBuZXdUZXh0TGVuZ3RoKTsK
KyAgdm9pZCBzZXRUZXh0KENvbnN0Q2hhcjE2UHRyIG5ld1RleHQsIGludDMyX3QgbmV3VGV4dExl
bmd0aCk7CiAKICAgLyoqCi0gICAqIENvcGllcyB0aGUgVUNoYXIgYXJyYXkgdW5kZXIgaXRlcmF0
aW9uIGludG8gdGhlIFVuaWNvZGVTdHJpbmcKKyAgICogQ29waWVzIHRoZSBjaGFyMTZfdCBhcnJh
eSB1bmRlciBpdGVyYXRpb24gaW50byB0aGUgVW5pY29kZVN0cmluZwogICAgKiByZWZlcnJlZCB0
byBieSAicmVzdWx0Ii4gIEV2ZW4gaWYgdGhpcyBpdGVyYXRvciBpdGVyYXRlcyBhY3Jvc3MKICAg
ICogb25seSBhIHBhcnQgb2YgdGhpcyBzdHJpbmcsIHRoZSB3aG9sZSBzdHJpbmcgaXMgY29waWVk
LgogICAgKiBAcGFyYW0gcmVzdWx0IFJlY2VpdmVzIGEgY29weSBvZiB0aGUgdGV4dCB1bmRlciBp
dGVyYXRpb24uCkBAIC0zNzMsNyArMzc5LDcgQEAgcHJvdGVjdGVkOgogICAgKiBQcm90ZWN0ZWQg
bWVtYmVyIHRleHQKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBjb25zdCBVQ2hhciog
ICAgICAgICAgICB0ZXh0OworICBjb25zdCBjaGFyMTZfdCogICAgICAgICAgICB0ZXh0OwogCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbGVhbi5oIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS91Y2xlYW4uaAppbmRleCBkOWExZTUzOTA1OGNkZTg1ZWZkMmFhODRj
YjcwN2QzNzQxNzQyNWZlLi41YjA0ODZkMzk1MDE3N2IxYzgwZDcxM2Y5MmZjNjJmZGUyY2IwYjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbGVhbi5oCisrKyBiL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdWNsZWFuLmgKQEAgLTEsMTAgKzEsMTIgQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAwMS0yMDE0LCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgICAgICAgICAgICAgIENvcnBvcmF0aW9uIGFuZCBvdGhl
cnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxl
IG5hbWU6ICB1Y2xlYW4uaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6
ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0
CiAqCkBAIC05OSw3ICsxMDEsNyBAQCB1X2luaXQoVUVycm9yQ29kZSAqc3RhdHVzKTsKIFVfU1RB
QkxFIHZvaWQgVV9FWFBPUlQyIAogdV9jbGVhbnVwKHZvaWQpOwogCi0KK1VfQ0RFQ0xfQkVHSU4K
IC8qKgogICAqICBQb2ludGVyIHR5cGUgZm9yIGEgdXNlciBzdXBwbGllZCBtZW1vcnkgYWxsb2Nh
dGlvbiBmdW5jdGlvbi4KICAgKiAgQHBhcmFtIGNvbnRleHQgdXNlciBzdXBwbGllZCB2YWx1ZSwg
b2J0YWluZWQgZnJvbSBmcm9tIHVfc2V0TWVtb3J5RnVuY3Rpb25zKCkuCkBAIC0xNDcsOSArMTQ5
LDEwIEBAIHR5cGVkZWYgdm9pZCAgVV9DQUxMQ09OViBVTWVtRnJlZUZuIChjb25zdCB2b2lkICpj
b250ZXh0LCB2b2lkICptZW0pOwogICogIEBzeXN0ZW0KICAqLyAgCiBVX1NUQUJMRSB2b2lkIFVf
RVhQT1JUMiAKLXVfc2V0TWVtb3J5RnVuY3Rpb25zKGNvbnN0IHZvaWQgKmNvbnRleHQsIFVNZW1B
bGxvY0ZuICphLCBVTWVtUmVhbGxvY0ZuICpyLCBVTWVtRnJlZUZuICpmLCAKK3Vfc2V0TWVtb3J5
RnVuY3Rpb25zKGNvbnN0IHZvaWQgKmNvbnRleHQsIFVNZW1BbGxvY0ZuICogVV9DQUxMQ09OVl9G
UFRSIGEsIFVNZW1SZWFsbG9jRm4gKiBVX0NBTExDT05WX0ZQVFIgciwgVU1lbUZyZWVGbiAqIFVf
Q0FMTENPTlZfRlBUUiBmLCAKICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVz
KTsKIAorVV9DREVDTF9FTkQKIAogI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKIC8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKQEAgLTE3MCw2ICsxNzMsNyBAQCB1X3NldE1lbW9yeUZ1bmN0
aW9ucyhjb25zdCB2b2lkICpjb250ZXh0LCBVTWVtQWxsb2NGbiAqYSwgVU1lbVJlYWxsb2NGbiAq
ciwgVU1lbQogICAqLwogdHlwZWRlZiB2b2lkICpVTVRYOwogCitVX0NERUNMX0JFR0lOCiAvKioK
ICAgKiAgRnVuY3Rpb24gUG9pbnRlciB0eXBlIGZvciBhIHVzZXIgc3VwcGxpZWQgbXV0ZXggaW5p
dGlhbGl6YXRpb24gZnVuY3Rpb24uCiAgICogIFRoZSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHdp
bGwgYmUgY2FsbGVkIGJ5IElDVSB3aGVuZXZlciBJQ1UgbmVlZHMgdG8gY3JlYXRlIGEKQEAgLTE5
OSw3ICsyMDMsNyBAQCB0eXBlZGVmIHZvaWQgVV9DQUxMQ09OViBVTXR4SW5pdEZuIChjb25zdCB2
b2lkICpjb250ZXh0LCBVTVRYICAqbXV0ZXgsIFVFcnJvckNvZAogICAqICBAc3lzdGVtCiAgICov
CiB0eXBlZGVmIHZvaWQgVV9DQUxMQ09OViBVTXR4Rm4gICAoY29uc3Qgdm9pZCAqY29udGV4dCwg
VU1UWCAgKm11dGV4KTsKLQorVV9DREVDTF9FTkQKIAogLyoqCiAgICogIFNldCB0aGUgZnVuY3Rp
b25zIHRoYXQgSUNVIHdpbGwgdXNlIGZvciBtdXRleCBvcGVyYXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnYuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNu
di5oCmluZGV4IDU2NDY1NmMyODRmOGUwMjcwYjJjOTU2MjU0MzIyYjQ0NDNiMzAzNTEuLjA1ZDAw
NTBmNGEyZmM5Zjk3M2RhMDhmM2ZjZDI2NWYyNDEyODgwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdWNudi5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNudi5o
CkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5k
IG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKQEAgLTI3LDcgKzI5LDcg
QEAKICAqIGNvbnZlcnRlciwgeW91IGNhbiBnZXQgaXRzIHByb3BlcnRpZXMsIHNldCBvcHRpb25z
LCBjb252ZXJ0IHlvdXIgZGF0YSBhbmQKICAqIGNsb3NlIHRoZSBjb252ZXJ0ZXIuPC9wPgogICoK
LSAqIDxwPlNpbmNlIG1hbnkgc29mdHdhcmUgcHJvZ3JhbXMgcmVjb2dpemUgZGlmZmVyZW50IGNv
bnZlcnRlciBuYW1lcyBmb3IKKyAqIDxwPlNpbmNlIG1hbnkgc29mdHdhcmUgcHJvZ3JhbXMgcmVj
b2duaXplIGRpZmZlcmVudCBjb252ZXJ0ZXIgbmFtZXMgZm9yCiAgKiBkaWZmZXJlbnQgdHlwZXMg
b2YgY29udmVydGVycywgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIEFQSSB0bwog
ICogaXRlcmF0ZSBvdmVyIHRoZSBjb252ZXJ0ZXIgYWxpYXNlcy4gVGhlIGZ1bmN0aW9ucyB7QGxp
bmsgdWNudl9nZXRBdmFpbGFibGVOYW1lKCkgfSwKICAqIHtAbGluayB1Y252X2dldEFsaWFzKCkg
fSBhbmQge0BsaW5rIHVjbnZfZ2V0U3RhbmRhcmROYW1lKCkgfSBhcmUgc29tZSBvZiB0aGUKQEAg
LTE4Miw3ICsxODQsNyBAQCB0eXBlZGVmIGVudW0gewogCiAvKioKICAqIEZ1bmN0aW9uIHBvaW50
ZXIgZm9yIGVycm9yIGNhbGxiYWNrIGluIHRoZSBjb2RlcGFnZSB0byB1bmljb2RlIGRpcmVjdGlv
bi4KLSAqIENhbGxlZCB3aGVuIGFuIGVycm9yIGhhcyBvY2N1cmVkIGluIGNvbnZlcnNpb24gdG8g
dW5pY29kZSwgb3Igb24gb3Blbi9jbG9zZSBvZiB0aGUgY2FsbGJhY2sgKHNlZSByZWFzb24pLgor
ICogQ2FsbGVkIHdoZW4gYW4gZXJyb3IgaGFzIG9jY3VycmVkIGluIGNvbnZlcnNpb24gdG8gdW5p
Y29kZSwgb3Igb24gb3Blbi9jbG9zZSBvZiB0aGUgY2FsbGJhY2sgKHNlZSByZWFzb24pLgogICog
QHBhcmFtIGNvbnRleHQgUG9pbnRlciB0byB0aGUgY2FsbGJhY2sncyBwcml2YXRlIGRhdGEKICAq
IEBwYXJhbSBhcmdzIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjb252ZXJzaW9uIGluIHByb2dyZXNz
CiAgKiBAcGFyYW0gY29kZVVuaXRzIFBvaW50cyB0byAnbGVuZ3RoJyBieXRlcyBvZiB0aGUgY29u
Y2VybmVkIGNvZGVwYWdlIHNlcXVlbmNlCkBAIC00NTAsNyArNDUyLDcgQEAgdWNudl9vcGVuVShj
b25zdCBVQ2hhciAqbmFtZSwKICAqIEBwYXJhbSBwbGF0Zm9ybSB0aGUgcGxhdGZvcm0gaW4gd2hp
Y2ggdGhlIGNvZGVwYWdlIG51bWJlciBleGlzdHMKICAqIEBwYXJhbSBlcnIgZXJyb3Igc3RhdHVz
IDxUVD5VX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SLCBVX0ZJTEVfQUNDRVNTX0VSUk9SPC9UVD4K
ICAqIEByZXR1cm4gdGhlIGNyZWF0ZWQgVW5pY29kZSBjb252ZXJ0ZXIgb2JqZWN0LCBvciA8VFQ+
TlVMTDwvVFQ+IGlmIGFuIGVycm9yCi0gKiAgIG9jY3VyZWQuCisgKiAgIG9jY3VycmVkLgogICog
QHNlZSB1Y252X29wZW4KICAqIEBzZWUgdWNudl9vcGVuVQogICogQHNlZSB1Y252X2Nsb3NlCkBA
IC01OTQsNyArNTk2LDcgQEAgVV9OQU1FU1BBQ0VfRU5ECiAgKiBzdGF0ZWZ1bCwgdGhlbiBzdWJD
aGFycyB3aWxsIGJlIGFuIGVtcHR5IHN0cmluZy4KICAqCiAgKiBAcGFyYW0gY29udmVydGVyIHRo
ZSBVbmljb2RlIGNvbnZlcnRlcgotICogQHBhcmFtIHN1YkNoYXJzIHRoZSBzdWJzaXR1dGlvbiBj
aGFyYWN0ZXJzCisgKiBAcGFyYW0gc3ViQ2hhcnMgdGhlIHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXJz
CiAgKiBAcGFyYW0gbGVuIG9uIGlucHV0IHRoZSBjYXBhY2l0eSBvZiBzdWJDaGFycywgb24gb3V0
cHV0IHRoZSBudW1iZXIKICAqIG9mIGJ5dGVzIGNvcGllZCB0byBpdAogICogQHBhcmFtICBlcnIg
dGhlIG91dGdvaW5nIGVycm9yIHN0YXR1cyBjb2RlLgpAQCAtODMwLDcgKzgzMiw3IEBAIHVjbnZf
Z2V0TWluQ2hhclNpemUoY29uc3QgVUNvbnZlcnRlciAqY29udmVydGVyKTsKICAqIG5hbWUgd2ls
bCBiZSBmaWxsZWQgaW4uCiAgKgogICogQHBhcmFtIGNvbnZlcnRlciB0aGUgVW5pY29kZSBjb252
ZXJ0ZXIuCi0gKiBAcGFyYW0gZGlzcGxheUxvY2FsZSBpcyB0aGUgc3BlY2lmaWMgTG9jYWxlIHdl
IHdhbnQgdG8gbG9jYWxpc2VkIGZvcgorICogQHBhcmFtIGRpc3BsYXlMb2NhbGUgaXMgdGhlIHNw
ZWNpZmljIExvY2FsZSB3ZSB3YW50IHRvIGxvY2FsaXplZCBmb3IKICAqIEBwYXJhbSBkaXNwbGF5
TmFtZSB1c2VyIHByb3ZpZGVkIGJ1ZmZlciB0byBiZSBmaWxsZWQgaW4KICAqIEBwYXJhbSBkaXNw
bGF5TmFtZUNhcGFjaXR5IHNpemUgb2YgZGlzcGxheU5hbWUgQnVmZmVyCiAgKiBAcGFyYW0gZXJy
IGVycm9yIHN0YXR1cyBjb2RlCkBAIC04NzUsNyArODc3LDcgQEAgdWNudl9nZXROYW1lKGNvbnN0
IFVDb252ZXJ0ZXIgKmNvbnZlcnRlciwgVUVycm9yQ29kZSAqZXJyKTsKICAqCiAgKiBAcGFyYW0g
Y29udmVydGVyIHRoZSBVbmljb2RlIGNvbnZlcnRlcgogICogQHBhcmFtIGVyciB0aGUgZXJyb3Ig
c3RhdHVzIGNvZGUuCi0gKiBAcmV0dXJuIElmIGFueSBlcnJvciBvY2N1cnJzLCAtMSB3aWxsIGJl
IHJldHVybmVkIG90aGVyd2lzZSwgdGhlIGNvZGVwYWdlIG51bWJlcgorICogQHJldHVybiBJZiBh
bnkgZXJyb3Igb2NjdXJzLCAtMSB3aWxsIGJlIHJldHVybmVkIG90aGVyd2lzZSwgdGhlIGNvZGVw
YWdlIG51bWJlcgogICogd2lsbCBiZSByZXR1cm5lZAogICogQHNlZSB1Y252X29wZW5DQ1NJRAog
ICogQHNlZSB1Y252X2dldFBsYXRmb3JtCkBAIC05NDEsOCArOTQzLDEzIEBAIHR5cGVkZWYgZW51
bSBVQ29udmVydGVyVW5pY29kZVNldCB7CiAgICAgVUNOVl9ST1VORFRSSVBfU0VULAogICAgIC8q
KiBTZWxlY3QgdGhlIHNldCBvZiBVbmljb2RlIGNvZGUgcG9pbnRzIHdpdGggcm91bmR0cmlwIG9y
IGZhbGxiYWNrIG1hcHBpbmdzLiBAc3RhYmxlIElDVSA0LjAgKi8KICAgICBVQ05WX1JPVU5EVFJJ
UF9BTkRfRkFMTEJBQ0tfU0VULAotICAgIC8qKiBOdW1iZXIgb2YgVUNvbnZlcnRlclVuaWNvZGVT
ZXQgc2VsZWN0b3JzLiBAc3RhYmxlIElDVSAyLjYgKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FU
RURfQVBJCisgICAgLyoqCisgICAgICogTnVtYmVyIG9mIFVDb252ZXJ0ZXJVbmljb2RlU2V0IHNl
bGVjdG9ycy4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5
IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBV
Q05WX1NFVF9DT1VOVAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIH0gVUNvbnZl
cnRlclVuaWNvZGVTZXQ7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91
Y252X2NiLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnZfY2IuaAppbmRleCBmMGU2N2Jh
MTFlMGM0YmIxMDg3NzE3NDk4MGNiZTQ4ZWMxNWJmNzk4Li4xNDE2OWVkNjFjMTRjOWI5NTQ5YTRm
ODQ3ZjhkZDNmMThiMTAxNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vj
bnZfY2IuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnZfY2IuaApAQCAtMSwzICsx
LDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisv
LyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdo
dC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAwMC0yMDA0LCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3VjbnZfZXJyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnZfZXJyLmgK
aW5kZXggZTA5MmU5NWY4MDhiZjcwYzA2M2E2NGQxZDdkNGJlMzMzYWRhY2I0NS4uMmY3NDc1NGNl
NGRlMTQxNGE1NTIyMGI1MWI5ZjY3ZmQ0Nzk5OGRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91Y252X2Vyci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNudl9l
cnIuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMu
IGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAo
QykgMTk5OS0yMDA5LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjbnZzZWwuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvdWNudnNlbC5oCmluZGV4IGViOTU4OGViMmRiZWYwMTFhNzdjNzZjNTY1ZThmYTgwMTNlZDdj
YmQuLmQ0MjM4NDVjZWI2Mjk3NGI3OWY1M2ZkODAzMGY5NWFjNjQxYTA4YzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNudnNlbC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdWNudnNlbC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVu
aWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6
Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCiAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vjb2wuaCBiL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdWNvbC5oCmluZGV4IDUxMGRkYzhjNmJkZGNlYWY0OTVjM2M3ZTFh
NzFkNTU4ZWM2NDMwOTIuLmVjYWJkOWUwOWI5ZDdhOWNkZDM2NWY2OTQ1NTUyMTQ3NjczNjZhZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNvbC5oCisrKyBiL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdWNvbC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0
ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6
IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAqIENvcHlyaWdodCAoYykgMTk5Ni0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCkBAIC0xMjMsOCArMTI1LDEzIEBA
IHR5cGVkZWYgZW51bSB7CiAgIC8qKiB1cHBlciBjYXNlIHNvcnRzIGJlZm9yZSBsb3dlciBjYXNl
ICovCiAgIFVDT0xfVVBQRVJfRklSU1QgPSAyNSwKIAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRF
RF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBV
Q29sQXR0cmlidXRlVmFsdWUgdmFsdWUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBu
dW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAu
CisgICAgICovCiAgIFVDT0xfQVRUUklCVVRFX1ZBTFVFX0NPVU5UCi0KKyNlbmRpZiAgLyogVV9I
SURFX0RFUFJFQ0FURURfQVBJICovCiB9IFVDb2xBdHRyaWJ1dGVWYWx1ZTsKIAogLyoqCkBAIC0x
OTEsMTIgKzE5OCwxMyBAQCB0eXBlZGVmIGVudW0gewogICAgICogQHN0YWJsZSBJQ1UgNC44CiAg
ICAgKi8gICAgCiAgICAgVUNPTF9SRU9SREVSX0NPREVfRElHSVQgICAgICAgICA9IDB4MTAwNCwK
LSAgIC8qKgotICAgICogVGhlIGxpbWl0IG9mIHRoZSByZW9yZGVyIGNvZGVzLiBUaGlzIGlzIGlu
dGVuZGVkIGZvciB1c2UgaW4gcmFuZ2UgY2hlY2tpbmcgCi0gICAgKiBhbmQgZW51bWVyYXRpb24g
b2YgdGhlIHJlb3JkZXIgY29kZXMuCi0gICAgKiBAc3RhYmxlIElDVSA0LjgKLSAgICAqLyAgICAK
KyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUg
dGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVUNvbFJlb3JkZXJDb2RlIHZhbHVlLgorICAgICAqIEBk
ZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwg
c2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwogICAgIFVDT0xfUkVPUkRFUl9DT0RFX0xJ
TUlUICAgICAgICAgPSAweDEwMDUKKyNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICov
CiB9IFVDb2xSZW9yZGVyQ29kZTsKIAogLyoqCkBAIC0zMzMsMTAgKzM0MSwxMyBAQCB0eXBlZGVm
IGVudW0gewogICAgICAgKiBAc3RhYmxlIElDVSAyLjgKICAgICAgICovCiAgICAgIFVDT0xfTlVN
RVJJQ19DT0xMQVRJT04gPSBVQ09MX1NUUkVOR1RIICsgMiwgCi0gICAgIC8qKgotICAgICAgKiBU
aGUgbnVtYmVyIG9mIFVDb2xBdHRyaWJ1dGUgY29uc3RhbnRzLgotICAgICAgKiBAc3RhYmxlIElD
VSAyLjAKLSAgICAgICovCisKKyAgICAvKiBEbyBub3QgY29uZGl0aW9uYWxpemUgdGhlIGZvbGxv
d2luZyB3aXRoICNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJLAorICAgICAqIGl0IGlzIG5l
ZWRlZCBmb3IgbGF5b3V0IG9mIFJ1bGVCYXNlZENvbGxhdG9yIG9iamVjdC4gKi8KKyAgICAvKioK
KyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVQ29sQXR0cmlidXRlIHZh
bHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hh
bmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwogICAgICBVQ09M
X0FUVFJJQlVURV9DT1VOVAogfSBVQ29sQXR0cmlidXRlOwogCkBAIC0xMDUwLDcgKzEwNjEsMTMg
QEAgdHlwZWRlZiBlbnVtIHsKICAgVUNPTF9CT1VORF9VUFBFUiA9IDEsCiAgIC8qKiB1cHBlciBi
b3VuZCB0aGF0IHdpbGwgbWF0Y2ggYWxsIHRoZSBzdHJpbmdzIHRoYXQgaGF2ZSB0aGUgc2FtZSBp
bml0aWFsIHN1YnN0cmluZyBhcyB0aGUgZ2l2ZW4gc3RyaW5nICovCiAgIFVDT0xfQk9VTkRfVVBQ
RVJfTE9ORyA9IDIsCi0gIFVDT0xfQk9VTkRfVkFMVUVfQ09VTlQKKyNpZm5kZWYgVV9ISURFX0RF
UFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBu
b3JtYWwgVUNvbEJvdW5kTW9kZSB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhl
IG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQy
MC4KKyAgICAgKi8KKyAgICBVQ09MX0JPVU5EX1ZBTFVFX0NPVU5UCisjZW5kaWYgIC8qIFVfSElE
RV9ERVBSRUNBVEVEX0FQSSAqLwogfSBVQ29sQm91bmRNb2RlOwogCiAvKioKQEAgLTEyNjksNiAr
MTI4Niw3IEBAIHVjb2xfc2V0VmFyaWFibGVUb3AoVUNvbGxhdG9yICpjb2xsLAogICovCiBVX1NU
QUJMRSB1aW50MzJfdCBVX0VYUE9SVDIgdWNvbF9nZXRWYXJpYWJsZVRvcChjb25zdCBVQ29sbGF0
b3IgKmNvbGwsIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FU
RURfQVBJCiAvKioKICAqIFNldHMgdGhlIHZhcmlhYmxlIHRvcCB0byB0aGUgc3BlY2lmaWVkIHBy
aW1hcnkgd2VpZ2h0LgogICoKQEAgLTEyODQsNiArMTMwMiw3IEBAIFVfU1RBQkxFIHVpbnQzMl90
IFVfRVhQT1JUMiB1Y29sX2dldFZhcmlhYmxlVG9wKGNvbnN0IFVDb2xsYXRvciAqY29sbCwgVUVy
cm9yQ29kCiAgKi8KIFVfREVQUkVDQVRFRCB2b2lkIFVfRVhQT1JUMiAKIHVjb2xfcmVzdG9yZVZh
cmlhYmxlVG9wKFVDb2xsYXRvciAqY29sbCwgY29uc3QgdWludDMyX3QgdmFyVG9wLCBVRXJyb3JD
b2RlICpzdGF0dXMpOworI2VuZGlmICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KIAogLyoq
CiAgKiBUaHJlYWQgc2FmZSBjbG9uaW5nIG9wZXJhdGlvbi4gVGhlIHJlc3VsdCBpcyBhIGNsb25l
IG9mIGEgZ2l2ZW4gY29sbGF0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3Vjb2xlaXRyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vjb2xlaXRyLmgKaW5kZXggZjk4
NzYyNDA1NjcyN2M0NGY2N2NhMTA1NzJmN2E4ZGRlOTZiYWIzZi4uODVlYzgzODNkN2NiMmViNTgw
MzdlZjhhNjE0MGIwNDNkMjI2MmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS91Y29sZWl0ci5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNvbGVpdHIuaApAQCAt
MSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAo
QykgMjAwMS0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCkBAIC0xNTAsNyAr
MTUyLDcgQEAgdWNvbF9yZXNldChVQ29sbGF0aW9uRWxlbWVudHMgKmVsZW1zKTsKICAqIEEgc2lu
Z2xlIGNoYXJhY3RlciBtYXkgY29udGFpbiBtb3JlIHRoYW4gb25lIGNvbGxhdGlvbiBlbGVtZW50
LgogICogQHBhcmFtIGVsZW1zIFRoZSBVQ29sbGF0aW9uRWxlbWVudHMgY29udGFpbmluZyB0aGUg
dGV4dC4KICAqIEBwYXJhbSBzdGF0dXMgQSBwb2ludGVyIHRvIGEgVUVycm9yQ29kZSB0byByZWNl
aXZlIGFueSBlcnJvcnMuCi0gKiBAcmV0dXJuIFRoZSBuZXh0IGNvbGxhdGlvbiBlbGVtZW50cyBv
cmRlcmluZywgb3RoZXJ3aXNlIHJldHVybnMgTlVMTE9SREVSIAorICogQHJldHVybiBUaGUgbmV4
dCBjb2xsYXRpb24gZWxlbWVudHMgb3JkZXJpbmcsIG90aGVyd2lzZSByZXR1cm5zIFVDT0xfTlVM
TE9SREVSIAogICogICAgICAgICBpZiBhbiBlcnJvciBoYXMgb2NjdXJlZCBvciBpZiB0aGUgZW5k
IG9mIHN0cmluZyBoYXMgYmVlbiByZWFjaGVkCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwpAQCAt
MTY2LDcgKzE2OCw3IEBAIHVjb2xfbmV4dChVQ29sbGF0aW9uRWxlbWVudHMgKmVsZW1zLCBVRXJy
b3JDb2RlICpzdGF0dXMpOwogICogICAgICAgICAgICAgICBhIFVfQlVGRkVSX09WRVJGTE9XX0VS
Uk9SIGlzIHJldHVybmVkIGlmIHRoZSBpbnRlcm5hbCBzdGFjawogICogICAgICAgICAgICAgICBi
dWZmZXIgaGFzIGJlZW4gZXhoYXVzdGVkLgogICogQHJldHVybiBUaGUgcHJldmlvdXMgY29sbGF0
aW9uIGVsZW1lbnRzIG9yZGVyaW5nLCBvdGhlcndpc2UgcmV0dXJucyAKLSAqICAgICAgICAgTlVM
TE9SREVSIGlmIGFuIGVycm9yIGhhcyBvY2N1cmVkIG9yIGlmIHRoZSBzdGFydCBvZiBzdHJpbmcg
aGFzIAorICogICAgICAgICBVQ09MX05VTExPUkRFUiBpZiBhbiBlcnJvciBoYXMgb2NjdXJlZCBv
ciBpZiB0aGUgc3RhcnQgb2Ygc3RyaW5nIGhhcyAKICAqICAgICAgICAgYmVlbiByZWFjaGVkLgog
ICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvdWNvbmZpZy5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y29uZmlnLmgKaW5kZXggZjYy
MjNiYjhhODdiNWE0YmRjOWI1ODNhODRiODdkYTY4M2Y0NmEwNy4uOGU2Nzc1NmJhOThkZTIwNjcy
ZDI5YTFkNDA5NDI5MmE0Y2EzNjg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS91Y29uZmlnLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y29uZmlnLmgKQEAgLTEs
MTAgKzEsMTIgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvKiAgCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAyMDAy
LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3B5cmlnaHQgKEMp
IDIwMDItMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0
aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAg
IGZpbGUgbmFtZTogIHVjb25maWcuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5j
b2Rpbmc6ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRh
dGlvbjo0CiAqCkBAIC03NCw3ICs3Niw3IEBACiAjZW5kaWYKIAogLyoqCi0gKiBEZXRlcm1pbmVz
IHdoZXRlciB0byBlbmFibGUgYXV0byBjbGVhbnVwIG9mIGxpYnJhcmllcy4gCisgKiBEZXRlcm1p
bmVzIHdoZXRoZXIgdG8gZW5hYmxlIGF1dG8gY2xlYW51cCBvZiBsaWJyYXJpZXMuIAogICogQGlu
dGVybmFsCiAgKi8KICNpZm5kZWYgVUNMTl9OT19BVVRPX0NMRUFOVVAKQEAgLTg3LDcgKzg5LDcg
QEAKICAqIEBpbnRlcm5hbAogICovCiAjaWZuZGVmIFVfRElTQUJMRV9SRU5BTUlORwotI2RlZmlu
ZSBVX0RJU0FCTEVfUkVOQU1JTkcgMAorI2RlZmluZSBVX0RJU0FCTEVfUkVOQU1JTkcgMQogI2Vu
ZGlmCiAKIC8qKgpAQCAtMTM0LDYgKzEzNiwxNSBAQAogI2RlZmluZSBVX0VOQUJMRV9UUkFDSU5H
IDAKICNlbmRpZgogCisvKioKKyAqIFxkZWYgVUNPTkZJR19FTkFCTEVfUExVR0lOUworICogRGV0
ZXJtaW5lcyB3aGV0aGVyIHRvIGVuYWJsZSBJQ1UgcGx1Z2lucy4KKyAqIEBpbnRlcm5hbAorICov
CisjaWZuZGVmIFVDT05GSUdfRU5BQkxFX1BMVUdJTlMKKyNkZWZpbmUgVUNPTkZJR19FTkFCTEVf
UExVR0lOUyAwCisjZW5kaWYKKwogLyoqCiAgKiBcZGVmIFVfRU5BQkxFX0RZTE9BRAogICogV2hl
dGhlciB0byBlbmFibGUgRHluYW1pYyBsb2FkaW5nIGluIElDVS4KQEAgLTE1Miw3ICsxNjMsNiBA
QAogI2RlZmluZSBVX0NIRUNLX0RZTE9BRCAxCiAjZW5kaWYKIAotCiAvKioKICAqIFxkZWYgVV9E
RUZBVUxUX1NIT1dfRFJBRlQKICAqIERvIHdlIGFsbG93IElDVSB1c2VycyB0byB1c2UgdGhlIGRy
YWZ0IEFQSXMgYnkgZGVmYXVsdD8KQEAgLTI1Miw3ICsyNjIsOCBAQAogCiAvKioKICAqIFxkZWYg
VUNPTkZJR19OT19DT05WRVJTSU9OCi0gKiBJQ1Ugd2lsbCBub3QgY29tcGxldGVseSBidWlsZCB3
aXRoIHRoaXMgc3dpdGNoIHR1cm5lZCBvbi4KKyAqIElDVSB3aWxsIG5vdCBjb21wbGV0ZWx5IGJ1
aWxkIChjb21waWxpbmcgdGhlIHRvb2xzIGZhaWxzKSB3aXRoIHRoaXMKKyAqIHN3aXRjaCB0dXJu
ZWQgb24uCiAgKiBUaGlzIHN3aXRjaCB0dXJucyBvZmYgYWxsIGNvbnZlcnRlcnMuCiAgKgogICog
WW91IG1heSB3YW50IHRvIHVzZSB0aGlzIHRvZ2V0aGVyIHdpdGggVV9DSEFSU0VUX0lTX1VURjgg
ZGVmaW5lZCB0byAxCkBAIC0yNzgsNyArMjg5LDcgQEAKICAqIFRoaXMgaXMgbm90IHBvc3NpYmxl
IG9uIEVCQ0RJQyBwbGF0Zm9ybXMKICAqIGJlY2F1c2UgdGhleSBuZWVkIGlibS0zNyBvciBpYm0t
MTA0NyBkZWZhdWx0IGNvbnZlcnRlcnMuCiAgKgotICogQGRyYWZ0IElDVSA1NQorICogQHN0YWJs
ZSBJQ1UgNTUKICAqLwogI2lmbmRlZiBVQ09ORklHX09OTFlfSFRNTF9DT05WRVJTSU9OCiAjICAg
ZGVmaW5lIFVDT05GSUdfT05MWV9IVE1MX0NPTlZFUlNJT04gMApAQCAtMzEwLDcgKzMyMSw5IEBA
CiAgKi8KICNpZm5kZWYgVUNPTkZJR19OT19OT1JNQUxJWkFUSU9OCiAjICAgZGVmaW5lIFVDT05G
SUdfTk9fTk9STUFMSVpBVElPTiAwCi0jZWxpZiBVQ09ORklHX05PX05PUk1BTElaQVRJT04KKyNl
bmRpZgorCisjaWYgVUNPTkZJR19OT19OT1JNQUxJWkFUSU9OCiAgICAgLyogY29tbW9uIGxpYnJh
cnkgKi8KICAgICAvKiBJQ1UgNTAgQ0pLIGRpY3Rpb25hcnkgQnJlYWtJdGVyYXRvciB1c2VzIG5v
cm1hbGl6YXRpb24gKi8KICMgICBkZWZpbmUgVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04gMQpA
QCAtNDM3LDkgKzQ1MCw2IEBACiAgKi8KICNpZm5kZWYgVUNPTkZJR19OT19GSUxURVJFRF9CUkVB
S19JVEVSQVRJT04KICMgICBkZWZpbmUgVUNPTkZJR19OT19GSUxURVJFRF9CUkVBS19JVEVSQVRJ
T04gMAotCi0KLQogI2VuZGlmCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91Y3NkZXQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWNzZGV0LmgKaW5kZXgg
ZDNhMjk3YmUxZTFlZGExMzkyYTc3NzAwMGE1OTljMTVkYmM0ZDAwNC4uNTJlZDVhZDBlZTJlYjU1
M2FlNDMxOTM4MGU5NzEwM2I4ZTc1ZmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS91Y3NkZXQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vjc2RldC5oCkBAIC0x
LDEwICsxLDEyIEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3Ro
ZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9j
b3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgIENvcHlyaWdodCAoQykgMjAw
NS0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAgKiAgIENvcnBvcmF0aW9u
IGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICAg
ZmlsZSBuYW1lOiAgdWNzZGV0LmgKLSAqICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyAqICAgZW5j
b2Rpbmc6ICAgVVRGLTgKICAqICAgaW5kZW50YXRpb246NAogICoKICAqICAgY3JlYXRlZCBvbjog
MjAwNUF1ZzA0CkBAIC00Myw2ICs0NSwxMCBAQAogICogaW4gYSBzaW5nbGUgbGFuZ3VhZ2UsIGFu
ZCBhIG1pbmltdW0gb2YgYSBmZXcgaHVuZHJlZCBieXRlcyB3b3J0aCBvZiBwbGFpbiB0ZXh0CiAg
KiBpbiB0aGUgbGFuZ3VhZ2UgYXJlIG5lZWRlZC4gIFRoZSBkZXRlY3Rpb24gcHJvY2VzcyB3aWxs
IGF0dGVtcHQgdG8KICAqIGlnbm9yZSBodG1sIG9yIHhtbCBzdHlsZSBtYXJrdXAgdGhhdCBjb3Vs
ZCBvdGhlcndpc2Ugb2JzY3VyZSB0aGUgY29udGVudC4KKyAqIDxwPgorICogQW4gYWx0ZXJuYXRp
dmUgdG8gdGhlIElDVSBDaGFyc2V0IERldGVjdG9yIGlzIHRoZQorICogQ29tcGFjdCBFbmNvZGlu
ZyBEZXRlY3RvciwgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jb21wYWN0X2VuY19kZXQuCisg
KiBJdCBvZnRlbiBnaXZlcyBtb3JlIGFjY3VyYXRlIHJlc3VsdHMsIGVzcGVjaWFsbHkgd2l0aCBz
aG9ydCBpbnB1dCBzYW1wbGVzLgogICovCiAgCiAKQEAgLTM5Myw3ICszOTksNyBAQCB1Y3NkZXRf
Z2V0RGV0ZWN0YWJsZUNoYXJzZXRzKGNvbnN0IFVDaGFyc2V0RGV0ZWN0b3IgKnVjc2QsICBVRXJy
b3JDb2RlICpzdGF0dXMpOwogLyoqCiAgICogRW5hYmxlIG9yIGRpc2FibGUgaW5kaXZpZHVhbCBj
aGFyc2V0IGVuY29kaW5nLgogICAqIEEgbmFtZSBvZiBjaGFyc2V0IGVuY29kaW5nIG11c3QgYmUg
aW5jbHVkZWQgaW4gdGhlIG5hbWVzIHJldHVybmVkIGJ5Ci0gICoge0BsaW5rICNnZXRBbGxEZXRl
Y3RhYmxlQ2hhcnNldHMoKX0uCisgICoge0BsaW5rICN1Y3NkZXRfZ2V0QWxsRGV0ZWN0YWJsZUNo
YXJzZXRzKCl9LgogICAqCiAgICogQHBhcmFtIHVjc2QgYSBDaGFyc2V0IGRldGVjdG9yLgogICAq
IEBwYXJhbSBlbmNvZGluZyBlbmNvZGluZyB0aGUgbmFtZSBvZiBjaGFyc2V0IGVuY29kaW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y3Vyci5oIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91Y3Vyci5oCmluZGV4IDViMTk2OTAxNjkzZjQwY2MyNTlmOTYzZWZhOTk4MDkz
NDhhNjM5NDYuLjFhYmIzYjIyZTk3YWY0MWRjZjRiNDIyYjY3NTU5NDM3ZDM0YmVkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWN1cnIuaAorKysgYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3VjdXJyLmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSog
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMK
KyogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGlu
ZXMKICogQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAqLwpAQCAtMTMsNTUgKzE1LDUzIEBACiAvKioKICAqIFxmaWxlIAogICogXGJy
aWVmIEMgQVBJOiBFbmNhcHN1bGF0ZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBjdXJyZW5jeS4KKyAq
CisgKiBUaGUgdWN1cnIgQVBJIGVuY2Fwc3VsYXRlcyBpbmZvcm1hdGlvbiBhYm91dCBhIGN1cnJl
bmN5LCBhcyBkZWZpbmVkIGJ5CisgKiBJU08gNDIxNy4gIEEgY3VycmVuY3kgaXMgcmVwcmVzZW50
ZWQgYnkgYSAzLWNoYXJhY3RlciBzdHJpbmcKKyAqIGNvbnRhaW5pbmcgaXRzIElTTyA0MjE3IGNv
ZGUuICBUaGlzIEFQSSBjYW4gcmV0dXJuIHZhcmlvdXMgZGF0YQorICogbmVjZXNzYXJ5IHRoZSBw
cm9wZXIgZGlzcGxheSBvZiBhIGN1cnJlbmN5OgorICoKKyAqIDx1bD48bGk+QSBkaXNwbGF5IHN5
bWJvbCwgZm9yIGEgc3BlY2lmaWMgbG9jYWxlCisgKiA8bGk+VGhlIG51bWJlciBvZiBmcmFjdGlv
biBkaWdpdHMgdG8gZGlzcGxheQorICogPGxpPkEgcm91bmRpbmcgaW5jcmVtZW50CisgKiA8L3Vs
PgorICoKKyAqIFRoZSA8dHQ+RGVjaW1hbEZvcm1hdDwvdHQ+IGNsYXNzIHVzZXMgdGhlc2UgZGF0
YSB0byBkaXNwbGF5CisgKiBjdXJyZW5jaWVzLgorICogQGF1dGhvciBBbGFuIExpdQorICogQHNp
bmNlIElDVSAyLjIKICAqLwogCiAjaWYgIVVDT05GSUdfTk9fRk9STUFUVElORwogCiAvKioKICAq
IEN1cnJlbmN5IFVzYWdlIHVzZWQgZm9yIERlY2ltYWwgRm9ybWF0Ci0gKiBAZHJhZnQgSUNVIDU0
CisgKiBAc3RhYmxlIElDVSA1NAogICovCiBlbnVtIFVDdXJyZW5jeVVzYWdlIHsKLSNpZm5kZWYg
VV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIGEgc2V0dGluZyB0byBzcGVjaWZ5IGN1
cnJlbmN5IHVzYWdlIHdoaWNoIGRldGVybWluZXMgY3VycmVuY3kgZGlnaXQKICAgICAgKiBhbmQg
cm91bmRpbmcgZm9yIHN0YW5kYXJkIHVzYWdlLCBmb3IgZXhhbXBsZTogIjUwLjAwIE5UJCIKICAg
ICAgKiB1c2VkIGFzIERFRkFVTFQgdmFsdWUKLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICog
QHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBVQ1VSUl9VU0FHRV9TVEFOREFSRD0wLAogICAg
IC8qKgogICAgICAqIGEgc2V0dGluZyB0byBzcGVjaWZ5IGN1cnJlbmN5IHVzYWdlIHdoaWNoIGRl
dGVybWluZXMgY3VycmVuY3kgZGlnaXQKICAgICAgKiBhbmQgcm91bmRpbmcgZm9yIGNhc2ggdXNh
Z2UsIGZvciBleGFtcGxlOiAiNTAgTlQkIgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBA
c3RhYmxlIElDVSA1NAogICAgICAqLwogICAgIFVDVVJSX1VTQUdFX0NBU0g9MSwKLSNlbmRpZiAg
LyogVV9ISURFX0RSQUZUX0FQSSAqLworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAg
ICAvKioKICAgICAgKiBPbmUgaGlnaGVyIHRoYW4gdGhlIGxhc3QgZW51bSBVQ3VycmVuY3lVc2Fn
ZSBjb25zdGFudC4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQGRlcHJlY2F0ZWQgSUNV
IDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tl
dCAjMTI0MjAuCiAgICAgICovCiAgICAgVUNVUlJfVVNBR0VfQ09VTlQ9MgorI2VuZGlmICAvLyBV
X0hJREVfREVQUkVDQVRFRF9BUEkKIH07CiB0eXBlZGVmIGVudW0gVUN1cnJlbmN5VXNhZ2UgVUN1
cnJlbmN5VXNhZ2U7IAogCi0vKioKLSAqIFRoZSB1Y3VyciBBUEkgZW5jYXBzdWxhdGVzIGluZm9y
bWF0aW9uIGFib3V0IGEgY3VycmVuY3ksIGFzIGRlZmluZWQgYnkKLSAqIElTTyA0MjE3LiAgQSBj
dXJyZW5jeSBpcyByZXByZXNlbnRlZCBieSBhIDMtY2hhcmFjdGVyIHN0cmluZwotICogY29udGFp
bmluZyBpdHMgSVNPIDQyMTcgY29kZS4gIFRoaXMgQVBJIGNhbiByZXR1cm4gdmFyaW91cyBkYXRh
Ci0gKiBuZWNlc3NhcnkgdGhlIHByb3BlciBkaXNwbGF5IG9mIGEgY3VycmVuY3k6Ci0gKgotICog
PHVsPjxsaT5BIGRpc3BsYXkgc3ltYm9sLCBmb3IgYSBzcGVjaWZpYyBsb2NhbGUKLSAqIDxsaT5U
aGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0byBkaXNwbGF5Ci0gKiA8bGk+QSByb3VuZGlu
ZyBpbmNyZW1lbnQKLSAqIDwvdWw+Ci0gKgotICogVGhlIDx0dD5EZWNpbWFsRm9ybWF0PC90dD4g
Y2xhc3MgdXNlcyB0aGVzZSBkYXRhIHRvIGRpc3BsYXkKLSAqIGN1cnJlbmNpZXMuCi0gKiBAYXV0
aG9yIEFsYW4gTGl1Ci0gKiBAc2luY2UgSUNVIDIuMgotICovCi0KIC8qKgogICogRmluZHMgYSBj
dXJyZW5jeSBjb2RlIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLgogICogQHBhcmFtIGxvY2FsZSB0aGUg
bG9jYWxlIGZvciB3aGljaCB0byByZXRyaWV2ZSBhIGN1cnJlbmN5IGNvZGUuIApAQCAtMjA0LDcg
KzIwNCw2IEBAIFVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCiB1Y3Vycl9nZXREZWZhdWx0RnJh
Y3Rpb25EaWdpdHMoY29uc3QgVUNoYXIqIGN1cnJlbmN5LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUqIGVjKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAv
KioKICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0
cyB0aGF0IHNob3VsZAogICogYmUgZGlzcGxheWVkIGZvciB0aGUgZ2l2ZW4gY3VycmVuY3kgd2l0
aCB1c2FnZS4KQEAgLTIxMywxMyArMjEyLDEyIEBAIHVjdXJyX2dldERlZmF1bHRGcmFjdGlvbkRp
Z2l0cyhjb25zdCBVQ2hhciogY3VycmVuY3ksCiAgKiBAcGFyYW0gZWMgaW5wdXQtb3V0cHV0IGVy
cm9yIGNvZGUKICAqIEByZXR1cm4gYSBub24tbmVnYXRpdmUgbnVtYmVyIG9mIGZyYWN0aW9uIGRp
Z2l0cyB0byBiZQogICogZGlzcGxheWVkLCBvciAwIGlmIHRoZXJlIGlzIGFuIGVycm9yCi0gKiBA
ZHJhZnQgSUNVIDU0CisgKiBAc3RhYmxlIElDVSA1NAogICovCi1VX0RSQUZUIGludDMyX3QgVV9F
WFBPUlQyCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgogdWN1cnJfZ2V0RGVmYXVsdEZyYWN0
aW9uRGlnaXRzRm9yVXNhZ2UoY29uc3QgVUNoYXIqIGN1cnJlbmN5LCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDdXJyZW5jeVVzYWdlIHVzYWdlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogZWMpOwotI2Vu
ZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAKIC8qKgogICogUmV0dXJucyB0aGUgcm91bmRp
bmcgaW5jcmVtZW50IGZvciB0aGUgZ2l2ZW4gY3VycmVuY3ksIG9yIDAuMCBpZiBubwpAQCAtMjM1
LDcgKzIzMyw2IEBAIFVfU1RBQkxFIGRvdWJsZSBVX0VYUE9SVDIKIHVjdXJyX2dldFJvdW5kaW5n
SW5jcmVtZW50KGNvbnN0IFVDaGFyKiBjdXJyZW5jeSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVFcnJvckNvZGUqIGVjKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAvKioKICAq
IFJldHVybnMgdGhlIHJvdW5kaW5nIGluY3JlbWVudCBmb3IgdGhlIGdpdmVuIGN1cnJlbmN5LCBv
ciAwLjAgaWYgbm8KICAqIHJvdW5kaW5nIGlzIGRvbmUgYnkgdGhlIGN1cnJlbmN5IGdpdmVuIHVz
YWdlLgpAQCAtMjQ0LDEzICsyNDEsMTIgQEAgdWN1cnJfZ2V0Um91bmRpbmdJbmNyZW1lbnQoY29u
c3QgVUNoYXIqIGN1cnJlbmN5LAogICogQHBhcmFtIGVjIGlucHV0LW91dHB1dCBlcnJvciBjb2Rl
CiAgKiBAcmV0dXJuIHRoZSBub24tbmVnYXRpdmUgcm91bmRpbmcgaW5jcmVtZW50LCBvciAwLjAg
aWYgbm9uZSwKICAqIG9yIDAuMCBpZiB0aGVyZSBpcyBhbiBlcnJvcgotICogQGRyYWZ0IElDVSA1
NAorICogQHN0YWJsZSBJQ1UgNTQKICAqLwotVV9EUkFGVCBkb3VibGUgVV9FWFBPUlQyCitVX1NU
QUJMRSBkb3VibGUgVV9FWFBPUlQyCiB1Y3Vycl9nZXRSb3VuZGluZ0luY3JlbWVudEZvclVzYWdl
KGNvbnN0IFVDaGFyKiBjdXJyZW5jeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVUN1cnJlbmN5VXNhZ2UgdXNhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUqIGVjKTsKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAq
LwogCiAvKioKICAqIFNlbGVjdG9yIGNvbnN0YW50cyBmb3IgdWN1cnJfb3BlbkN1cnJlbmNpZXMo
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWRhdC5oIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91ZGF0LmgKaW5kZXggNTMyNjEzYTA2MzdkYmJlMDc5NjhmMmUxMTBkMWU2
MDhhMzY5NzMzZC4uOTBhZmYyMGRmMmExMjJiNzY0MjhmOTAzMDYyZDA3NzY3ODk4ZDhkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91ZGF0LmgKKysrIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91ZGF0LmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVz
cyBNYWNoaW5lcworICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMTYsIEludGVybmF0aW9uYWwgQnVz
aW5lc3MgTWFjaGluZXMKICAqIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KQEAgLTE1MCw3ICsxNTIsNyBAQAog
ICovCiB0eXBlZGVmIHZvaWQqIFVEYXRlRm9ybWF0OwogCi0vKiogVGhlIHBvc3NpYmxlIGRhdGUv
dGltZSBmb3JtYXQgc3R5bGVzIAorLyoqIFRoZSBwb3NzaWJsZSBkYXRlL3RpbWUgZm9ybWF0IHN0
eWxlcwogICogIEBzdGFibGUgSUNVIDIuNgogICovCiB0eXBlZGVmIGVudW0gVURhdGVGb3JtYXRT
dHlsZSB7CkBAIC0xNjcsMTYgKzE2OSwxNiBAQCB0eXBlZGVmIGVudW0gVURhdGVGb3JtYXRTdHls
ZSB7CiAKICAgICAvKiogQml0ZmllbGQgZm9yIHJlbGF0aXZlIGRhdGUgKi8KICAgICBVREFUX1JF
TEFUSVZFID0gKDEgPDwgNyksCi0gICAgCisKICAgICBVREFUX0ZVTExfUkVMQVRJVkUgPSBVREFU
X0ZVTEwgfCBVREFUX1JFTEFUSVZFLAotICAgICAgICAKKwogICAgIFVEQVRfTE9OR19SRUxBVElW
RSA9IFVEQVRfTE9ORyB8IFVEQVRfUkVMQVRJVkUsCi0gICAgCisKICAgICBVREFUX01FRElVTV9S
RUxBVElWRSA9IFVEQVRfTUVESVVNIHwgVURBVF9SRUxBVElWRSwKLSAgICAKKwogICAgIFVEQVRf
U0hPUlRfUkVMQVRJVkUgPSBVREFUX1NIT1JUIHwgVURBVF9SRUxBVElWRSwKLSAgICAKLSAgICAK
KworCiAgICAgLyoqIE5vIHN0eWxlICovCiAgICAgVURBVF9OT05FID0gLTEsCiAKQEAgLTI5NCw3
ICsyOTYsNyBAQCB0eXBlZGVmIGVudW0gVURhdGVGb3JtYXRTdHlsZSB7CiAgKiBVc2VkIGluIGNv
bWJpbmF0aW9ucyBkYXRlICsgdGltZSwgZGF0ZSArIHRpbWUgKyB6b25lLCBvciB0aW1lICsgem9u
ZS4KICAqIEBzdGFibGUgSUNVIDQuMAogICovCi0jZGVmaW5lIFVEQVRfWUVBUl9BQkJSX01PTlRI
X1dFRUtEQVlfREFZICJ5TU1NRWQiIAorI2RlZmluZSBVREFUX1lFQVJfQUJCUl9NT05USF9XRUVL
REFZX0RBWSAieU1NTUVkIgogLyoqCiAgKiBDb25zdGFudCBmb3IgZGF0ZSBza2VsZXRvbiB3aXRo
IHllYXIsIG51bWVyaWMgbW9udGgsIHdlZWtkYXksIGFuZCBkYXkuCiAgKiBVc2VkIGluIGNvbWJp
bmF0aW9ucyBkYXRlICsgdGltZSwgZGF0ZSArIHRpbWUgKyB6b25lLCBvciB0aW1lICsgem9uZS4K
QEAgLTQ0Niw3ICs0NDgsNyBAQCB0eXBlZGVmIGVudW0gVURhdGVGb3JtYXRTdHlsZSB7CiAKIC8q
IGRlcHJlY2F0ZWQgc2tlbGV0b24gY29uc3RhbnRzICovCiAKLSNpZm5kZWYgVV9ISURFX0RFUFJF
Q0FURURfQVBJIAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKIC8qKgogICogQ29uc3Rh
bnQgZm9yIGRhdGUgc2tlbGV0b24gd2l0aCBzdGFuZGFsb25lIG1vbnRoLgogICogQGRlcHJlY2F0
ZWQgSUNVIDUwIFVzZSBVREFUX01PTlRIIGluc3RlYWQuCkBAIC03NTksMzAgKzc2MSw1NCBAQCB0
eXBlZGVmIGVudW0gVURhdGVGb3JtYXRGaWVsZCB7CiAgICAgICogQGludGVybmFsIElDVSA1Mwog
ICAgICAqLwogICAgIFVEQVRfUkVMQVRFRF9ZRUFSX0ZJRUxEID0gMzQsCi0jZW5kaWYgLyogVV9I
SURFX0lOVEVSTkFMX0FQSSAqLworI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCiAK
LSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAgIC8qKgotICAgICAqIEZpZWxkUG9zaXRpb24g
YW5kIFVGaWVsZFBvc2l0aW9uIHNlbGVjdG9yIGZvciAnOicgdGltZSBzZXBhcmF0b3IsCi0gICAg
ICogbm8gY29ycmVzcG9uZGluZyBVQ0FMXyBmaWVsZC4KLSAgICAgKiBAZHJhZnQgSUNVIDU1Cisg
ICAgICogRmllbGRQb3NpdGlvbiBzZWxlY3RvciBmb3IgJ2InIGZpZWxkIGFsaWdubWVudC4KKyAg
ICAgKiBEaXNwbGF5cyBtaWRuaWdodCBhbmQgbm9vbiBmb3IgMTJhbSBhbmQgMTJwbSwgcmVzcGVj
dGl2ZWx5LCBpZiBhdmFpbGFibGU7CisgICAgICogb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBBTSAv
IFBNLgorICAgICAqIEBzdGFibGUgSUNVIDU3CiAgICAgICovCi0gICAgVURBVF9USU1FX1NFUEFS
QVRPUl9GSUVMRCA9IDM1LAotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCisgICAgVURB
VF9BTV9QTV9NSUROSUdIVF9OT09OX0ZJRUxEID0gMzUsCiAKLSAgIC8qKgorICAgIC8qIEZpZWxk
UG9zaXRpb24gc2VsZWN0b3IgZm9yICdCJyBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogRGlzcGxh
eXMgZmxleGlibGUgZGF5IHBlcmlvZHMsIHN1Y2ggYXMgImluIHRoZSBtb3JuaW5nIiwgaWYgYXZh
aWxhYmxlLgorICAgICAqIEBzdGFibGUgSUNVIDU3CisgICAgICovCisgICAgVURBVF9GTEVYSUJM
RV9EQVlfUEVSSU9EX0ZJRUxEID0gMzYsCisKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQor
ICAgIC8qKgorICAgICAqIEZpZWxkUG9zaXRpb24gYW5kIFVGaWVsZFBvc2l0aW9uIHNlbGVjdG9y
IGZvciB0aW1lIHNlcGFyYXRvciwKKyAgICAgKiBubyBjb3JyZXNwb25kaW5nIFVDQUxfIGZpZWxk
LiBObyBwYXR0ZXJuIGNoYXJhY3RlciBpcyBjdXJyZW50bHkKKyAgICAgKiBkZWZpbmVkIGZvciB0
aGlzLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIFVEQVRfVElNRV9TRVBBUkFUT1Jf
RklFTEQgPSAzNywKKyNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLworCisjaWZuZGVm
IFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgogICAgICAqIE51bWJlciBvZiBGaWVsZFBv
c2l0aW9uIGFuZCBVRmllbGRQb3NpdGlvbiBzZWxlY3RvcnMgZm9yCiAgICAgICogRGF0ZUZvcm1h
dCBhbmQgVURhdGVGb3JtYXQuCiAgICAgICogVmFsaWQgc2VsZWN0b3JzIHJhbmdlIGZyb20gMCB0
byBVREFUX0ZJRUxEX0NPVU5ULTEuCi0gICAgICogVGhpcyB2YWx1ZSBpcyBzdWJqZWN0IHRvIGNo
YW5nZSBpZiBuZXcgZmllbGRzIGFyZSBkZWZpbmVkCi0gICAgICogaW4gdGhlIGZ1dHVyZS4KLSAg
ICAgKiBAc3RhYmxlIElDVSAzLjAKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVy
aWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KICAg
ICAgKi8KLSAgICBVREFUX0ZJRUxEX0NPVU5UID0gMzYKLQorICAgIFVEQVRfRklFTERfQ09VTlQg
PSAzOAorI2VuZGlmICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KIH0gVURhdGVGb3JtYXRG
aWVsZDsKIAogCisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKKy8qKgorICogSXMgYSBwYXR0
ZXJuIGNoYXJhY3RlciBkZWZpbmVkIGZvciBVREFUX1RJTUVfU0VQQVJBVE9SX0ZJRUxEPworICog
SW4gSUNVIDU1IGl0IHdhcyBDT0xPTiwgYnV0IHRoYXQgd2FzIHdpdGhkcmF3biBpbiBJQ1UgNTYu
CisgKiBAaW50ZXJuYWwgSUNVIDU2CisgKi8KKyNkZWZpbmUgVURBVF9IQVNfUEFUVEVSTl9DSEFS
X0ZPUl9USU1FX1NFUEFSQVRPUiAwCisjZW5kaWYgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwor
CisKIC8qKgogICogTWFwcyBmcm9tIGEgVURhdGVGb3JtYXRGaWVsZCB0byB0aGUgY29ycmVzcG9u
ZGluZyBVQ2FsZW5kYXJEYXRlRmllbGRzLgogICogTm90ZTogc2luY2UgdGhlIG1hcHBpbmcgaXMg
bWFueS10by1vbmUsIHRoZXJlIGlzIG5vIGludmVyc2UgbWFwcGluZy4KQEAgLTc5MSw3ICs4MTcs
NyBAQCB0eXBlZGVmIGVudW0gVURhdGVGb3JtYXRGaWVsZCB7CiAgKiBvZiBlcnJvciAoZS5nLiwg
dGhlIGlucHV0IGZpZWxkIGlzIFVEQVRfRklFTERfQ09VTlQpLgogICogQHN0YWJsZSBJQ1UgNC40
CiAgKi8KLVVfU1RBQkxFIFVDYWxlbmRhckRhdGVGaWVsZHMgVV9FWFBPUlQyCitVX0NBUEkgVUNh
bGVuZGFyRGF0ZUZpZWxkcyBVX0VYUE9SVDIKIHVkYXRfdG9DYWxlbmRhckRhdGVGaWVsZChVRGF0
ZUZvcm1hdEZpZWxkIGZpZWxkKTsKIAogCkBAIC04MjMsNyArODQ5LDcgQEAgdWRhdF90b0NhbGVu
ZGFyRGF0ZUZpZWxkKFVEYXRlRm9ybWF0RmllbGQgZmllbGQpOwogICogYW4gZXJyb3Igb2NjdXJy
ZWQuCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgVURhdGVGb3JtYXQqIFVfRVhQ
T1JUMiAKK1VfQ0FQSSBVRGF0ZUZvcm1hdCogVV9FWFBPUlQyCiB1ZGF0X29wZW4oVURhdGVGb3Jt
YXRTdHlsZSAgdGltZVN0eWxlLAogICAgICAgICAgIFVEYXRlRm9ybWF0U3R5bGUgIGRhdGVTdHls
ZSwKICAgICAgICAgICBjb25zdCBjaGFyICAgICAgICAqbG9jYWxlLApAQCAtODQwLDEzICs4NjYs
MTMgQEAgdWRhdF9vcGVuKFVEYXRlRm9ybWF0U3R5bGUgIHRpbWVTdHlsZSwKICogQHBhcmFtIGZv
cm1hdCBUaGUgZm9ybWF0dGVyIHRvIGNsb3NlLgogKiBAc3RhYmxlIElDVSAyLjAKICovCi1VX1NU
QUJMRSB2b2lkIFVfRVhQT1JUMiAKK1VfQ0FQSSB2b2lkIFVfRVhQT1JUMgogdWRhdF9jbG9zZShV
RGF0ZUZvcm1hdCogZm9ybWF0KTsKIAogCiAvKioKICAqIERhdGVGb3JtYXQgYm9vbGVhbiBhdHRy
aWJ1dGVzCi0gKiAKKyAqCiAgKiBAc3RhYmxlIElDVSA1MwogICovCiB0eXBlZGVmIGVudW0gVURh
dGVGb3JtYXRCb29sZWFuQXR0cmlidXRlIHsKQEAgLTg2MSwyMiArODg3LDI0IEBAIHR5cGVkZWYg
ZW51bSBVRGF0ZUZvcm1hdEJvb2xlYW5BdHRyaWJ1dGUgewogICAgICAqIEBzdGFibGUgSUNVIDUz
CiAgICAgICovCiAgICAgVURBVF9QQVJTRV9BTExPV19OVU1FUklDID0gMSwKLSNpZm5kZWYgVV9I
SURFX0RSQUZUX0FQSQogICAgIC8qKgogICAgICAqIGluZGljYXRlcyB0b2xlcmFuY2Ugb2YgYSBw
YXJ0aWFsIGxpdGVyYWwgbWF0Y2gKLSAgICAgKiBAZHJhZnQgSUNVIDUzCisgICAgICogZS5nLiBh
Y2NlcHRpbmcgIi0tbW9uLTAyLW1hcmNoLTIwMTEiIGZvciBhIHBhdHRlcm4gb2YgIictLTogJ0VF
RS1XVy1NTU1NLXl5eXkiCisgICAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8KKyAgICBVREFU
X1BBUlNFX1BBUlRJQUxfTElURVJBTF9NQVRDSCA9IDIsCisgICAgLyoqCisgICAgICogaW5kaWNh
dGVzIHRvbGVyYW5jZSBvZiBwYXR0ZXJuIG1pc21hdGNoIGJldHdlZW4gaW5wdXQgZGF0YSBhbmQg
c3BlY2lmaWVkIGZvcm1hdCBwYXR0ZXJuLgorICAgICAqIGUuZy4gYWNjZXB0aW5nICJTZXB0ZW1i
ZXIiIGZvciBhIG1vbnRoIHBhdHRlcm4gb2YgTU1NICgiU2VwIikKKyAgICAgKiBAc3RhYmxlIElD
VSA1NgogICAgICAqLwotICAgIFVEQVRfUEFSU0VfUEFSVElBTF9NQVRDSCA9IDIsCi0gICAgLyoq
ICAKLSAgICAgKiBpbmRpY2F0ZXMgdG9sZXJhbmNlIG9mIHBhdHRlcm4gbWlzbWF0Y2ggYmV0d2Vl
biBpbnB1dCBkYXRhIGFuZCBzcGVjaWZpZWQgZm9ybWF0IHBhdHRlcm4uIAotICAgICAqIGUuZy4g
YWNjZXB0aW5nICJTZXB0ZW1iZXIiIGZvciBhIG1vbnRoIHBhdHRlcm4gb2YgTU1NICgiU2VwIikg
ICAKLSAgICAgKiBAZHJhZnQgSUNVIDUzCi0gICAgICovIAogICAgIFVEQVRfUEFSU0VfTVVMVElQ
TEVfUEFUVEVSTlNfRk9SX01BVENIID0gMywKLSNlbmRpZiAvKiBVX0hJREVfRFJBRlRfQVBJICov
CisKKyAgICAvKiBEbyBub3QgY29uZGl0aW9uYWxpemUgdGhlIGZvbGxvd2luZyB3aXRoICNpZm5k
ZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJLAorICAgICAqIGl0IGlzIG5lZWRlZCBmb3IgbGF5b3V0
IG9mIERhdGVGb3JtYXQgb2JqZWN0LiAqLwogICAgIC8qKgotICAgICAqIGNvdW50IGJvb2xlYW4g
ZGF0ZSBmb3JtYXQgY29uc3RhbnRzCi0gICAgICogQHN0YWJsZSBJQ1UgNTMKKyAgICAgKiBPbmUg
bW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVRGF0ZUZvcm1hdEJvb2xlYW5BdHRyaWJ1dGUg
dmFsdWUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBj
aGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCiAgICAgICovCiAgICAgVURB
VF9CT09MRUFOX0FUVFJJQlVURV9DT1VOVCA9IDQKIH0gVURhdGVGb3JtYXRCb29sZWFuQXR0cmli
dXRlOwpAQCAtODkxLDcgKzkxOSw3IEBAIHR5cGVkZWYgZW51bSBVRGF0ZUZvcm1hdEJvb2xlYW5B
dHRyaWJ1dGUgewogICogQHJldHVybiBUaGUgdmFsdWUgb2YgYXR0ci4KICAqIEBzdGFibGUgSUNV
IDUzCiAgKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgorVV9DQVBJIFVCb29sIFVfRVhQT1JU
MgogdWRhdF9nZXRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFVEYXRlRm9ybWF0KiBmbXQsIFVEYXRl
Rm9ybWF0Qm9vbGVhbkF0dHJpYnV0ZSBhdHRyLCBVRXJyb3JDb2RlKiBzdGF0dXMpOwogCiAvKioK
QEAgLTkwNCw3ICs5MzIsNyBAQCB1ZGF0X2dldEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgVURhdGVG
b3JtYXQqIGZtdCwgVURhdGVGb3JtYXRCb29sZWFuQXR0cmlidXRlIGF0dAogICogQHBhcmFtIHN0
YXR1cyBBIHBvaW50ZXIgdG8gYW4gVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMKICAq
IEBzdGFibGUgSUNVIDUzCiAgKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCitVX0NBUEkgdm9p
ZCBVX0VYUE9SVDIKIHVkYXRfc2V0Qm9vbGVhbkF0dHJpYnV0ZShVRGF0ZUZvcm1hdCAqZm10LCBV
RGF0ZUZvcm1hdEJvb2xlYW5BdHRyaWJ1dGUgYXR0ciwgVUJvb2wgbmV3VmFsdWUsIFVFcnJvckNv
ZGUqIHN0YXR1cyk7CiAKIApAQCAtOTM2LDcgKzk2NCw3IEBAIFVfTkFNRVNQQUNFX0VORAogICog
QHJldHVybiBBIHBvaW50ZXIgdG8gYSBVRGF0ZUZvcm1hdCBpZGVudGljYWwgdG8gZm10LgogICog
QHN0YWJsZSBJQ1UgMi4wCiAgKi8KLVVfU1RBQkxFIFVEYXRlRm9ybWF0KiBVX0VYUE9SVDIgCitV
X0NBUEkgVURhdGVGb3JtYXQqIFVfRVhQT1JUMgogdWRhdF9jbG9uZShjb25zdCBVRGF0ZUZvcm1h
dCAqZm10LAogICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKQEAgLTk1OCw3ICs5ODYsNyBA
QCB1ZGF0X2Nsb25lKGNvbnN0IFVEYXRlRm9ybWF0ICpmbXQsCiAqIEBzZWUgVUZpZWxkUG9zaXRp
b24KICogQHN0YWJsZSBJQ1UgMi4wCiAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIgCitV
X0NBUEkgaW50MzJfdCBVX0VYUE9SVDIKIHVkYXRfZm9ybWF0KCAgICBjb25zdCAgICBVRGF0ZUZv
cm1hdCogICAgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgVURhdGUgICAgICAgICAg
IGRhdGVUb0Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiAgICAgICAgICBy
ZXN1bHQsCkBAIC05NjYsNyArOTk0LDYgQEAgdWRhdF9mb3JtYXQoICAgIGNvbnN0ICAgIFVEYXRl
Rm9ybWF0KiAgICBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBVRmllbGRQb3NpdGlv
biogcG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiAgICAgc3Rh
dHVzKTsKIAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAvKioKICogRm9ybWF0IGEgZGF0ZSB1
c2luZyBhbiBVRGF0ZUZvcm1hdC4KICogVGhlIGRhdGUgd2lsbCBiZSBmb3JtYXR0ZWQgdXNpbmcg
dGhlIGNvbnZlbnRpb25zIHNwZWNpZmllZCBpbiB7QGxpbmsgI3VkYXRfb3BlbiB9CkBAIC05ODcs
OSArMTAxNCw5IEBAIHVkYXRfZm9ybWF0KCAgICBjb25zdCAgICBVRGF0ZUZvcm1hdCogICAgZm9y
bWF0LAogKiBAc2VlIHVkYXRfZm9ybWF0CiAqIEBzZWUgdWRhdF9wYXJzZUNhbGVuZGFyCiAqIEBz
ZWUgVUZpZWxkUG9zaXRpb24KLSogQGRyYWZ0IElDVSA1NQorKiBAc3RhYmxlIElDVSA1NQogKi8K
LVVfRFJBRlQgaW50MzJfdCBVX0VYUE9SVDIKK1VfQ0FQSSBpbnQzMl90IFVfRVhQT1JUMgogdWRh
dF9mb3JtYXRDYWxlbmRhciggICAgY29uc3QgVURhdGVGb3JtYXQqICBmb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBVQ2FsZW5kYXIqICAgICAgY2FsZW5kYXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBVQ2hhciogICAgICAgICAgcmVzdWx0LApAQCAtMTAyMiw5ICsxMDQ5LDkgQEAg
dWRhdF9mb3JtYXRDYWxlbmRhciggICAgY29uc3QgVURhdGVGb3JtYXQqICBmb3JtYXQsCiAqICAg
ICAgICAgIFRoZSB0b3RhbCBidWZmZXIgc2l6ZSBuZWVkZWQ7IGlmIGdyZWF0ZXIgdGhhbiByZXN1
bHRMZW5ndGgsIHRoZSBvdXRwdXQgd2FzIHRydW5jYXRlZC4KICogQHNlZSB1ZGF0X3BhcnNlCiAq
IEBzZWUgVUZpZWxkUG9zaXRpb25JdGVyYXRvcgotKiBAZHJhZnQgSUNVIDU1CisqIEBzdGFibGUg
SUNVIDU1CiAqLwotVV9EUkFGVCBpbnQzMl90IFVfRVhQT1JUMiAKK1VfQ0FQSSBpbnQzMl90IFVf
RVhQT1JUMgogdWRhdF9mb3JtYXRGb3JGaWVsZHMoICAgY29uc3QgVURhdGVGb3JtYXQqIGZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgIFVEYXRlICAgICAgICAgICBkYXRlVG9Gb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhciogICAgICAgICAgcmVzdWx0LApAQCAtMTA2
MCw5ICsxMDg3LDkgQEAgdWRhdF9mb3JtYXRGb3JGaWVsZHMoICAgY29uc3QgVURhdGVGb3JtYXQq
IGZvcm1hdCwKICogQHNlZSB1ZGF0X2Zvcm1hdAogKiBAc2VlIHVkYXRfcGFyc2VDYWxlbmRhcgog
KiBAc2VlIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IKLSogQGRyYWZ0IElDVSA1NQorKiBAc3RhYmxl
IElDVSA1NQogKi8KLVVfRFJBRlQgaW50MzJfdCBVX0VYUE9SVDIKK1VfQ0FQSSBpbnQzMl90IFVf
RVhQT1JUMgogdWRhdF9mb3JtYXRDYWxlbmRhckZvckZpZWxkcyggY29uc3QgVURhdGVGb3JtYXQq
IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFVDYWxlbmRhciogICAgICBjYWxlbmRh
ciwKICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiAgICAgICAgICByZXN1bHQsCkBAIC0x
MDcwLDcgKzEwOTcsNiBAQCB1ZGF0X2Zvcm1hdENhbGVuZGFyRm9yRmllbGRzKCBjb25zdCBVRGF0
ZUZvcm1hdCogZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgVUZpZWxkUG9zaXRpb25J
dGVyYXRvciogZnBvc2l0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiAg
ICAgc3RhdHVzKTsKIAotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAKIC8qKgogKiBQ
YXJzZSBhIHN0cmluZyBpbnRvIGFuIGRhdGUvdGltZSB1c2luZyBhIFVEYXRlRm9ybWF0LgpAQCAt
MTA5Nyw3ICsxMTIzLDcgQEAgdWRhdF9mb3JtYXRDYWxlbmRhckZvckZpZWxkcyggY29uc3QgVURh
dGVGb3JtYXQqIGZvcm1hdCwKICogQHNlZSB1ZGF0X2Zvcm1hdAogKiBAc3RhYmxlIElDVSAyLjAK
ICovCi1VX1NUQUJMRSBVRGF0ZSBVX0VYUE9SVDIgCitVX0NBUEkgVURhdGUgVV9FWFBPUlQyCiB1
ZGF0X3BhcnNlKGNvbnN0ICAgIFVEYXRlRm9ybWF0KiAgICBmb3JtYXQsCiAgICAgICAgICAgIGNv
bnN0ICAgIFVDaGFyKiAgICAgICAgICB0ZXh0LAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90
ICAgICAgICAgdGV4dExlbmd0aCwKQEAgLTExMjUsNyArMTE1MSw3IEBAIHVkYXRfcGFyc2UoY29u
c3QgICAgVURhdGVGb3JtYXQqICAgIGZvcm1hdCwKICogQHNlZSB1ZGF0X2Zvcm1hdAogKiBAc3Rh
YmxlIElDVSAyLjAKICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMiAKK1VfQ0FQSSB2b2lkIFVf
RVhQT1JUMgogdWRhdF9wYXJzZUNhbGVuZGFyKGNvbnN0ICAgIFVEYXRlRm9ybWF0KiAgICBmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNhbGVuZGFyKiAgICAgIGNhbGVuZGFy
LAogICAgICAgICAgICAgICAgICAgIGNvbnN0ICAgIFVDaGFyKiAgICAgICAgICB0ZXh0LApAQCAt
MTE0Miw3ICsxMTY4LDcgQEAgdWRhdF9wYXJzZUNhbGVuZGFyKGNvbnN0ICAgIFVEYXRlRm9ybWF0
KiAgICBmb3JtYXQsCiAqIEBzZWUgdWRhdF9zZXRMZW5pZW50CiAqIEBzdGFibGUgSUNVIDIuMAog
Ki8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMiAKK1VfQ0FQSSBVQm9vbCBVX0VYUE9SVDIKIHVk
YXRfaXNMZW5pZW50KGNvbnN0IFVEYXRlRm9ybWF0KiBmbXQpOwogCiAvKioKQEAgLTExNTQsNyAr
MTE4MCw3IEBAIHVkYXRfaXNMZW5pZW50KGNvbnN0IFVEYXRlRm9ybWF0KiBmbXQpOwogKiBAc2Vl
IGRhdF9pc0xlbmllbnQKICogQHN0YWJsZSBJQ1UgMi4wCiAqLwotVV9TVEFCTEUgdm9pZCBVX0VY
UE9SVDIgCitVX0NBUEkgdm9pZCBVX0VYUE9SVDIKIHVkYXRfc2V0TGVuaWVudCggICAgVURhdGVG
b3JtYXQqICAgIGZtdCwKICAgICAgICAgICAgICAgICAgICAgVUJvb2wgICAgICAgICAgaXNMZW5p
ZW50KTsKIApAQCAtMTE2Nyw3ICsxMTkzLDcgQEAgdWRhdF9zZXRMZW5pZW50KCAgICBVRGF0ZUZv
cm1hdCogICAgZm10LAogKiBAc2VlIHVkYXRfc2V0Q2FsZW5kYXIKICogQHN0YWJsZSBJQ1UgMi4w
CiAqLwotVV9TVEFCTEUgY29uc3QgVUNhbGVuZGFyKiBVX0VYUE9SVDIgCitVX0NBUEkgY29uc3Qg
VUNhbGVuZGFyKiBVX0VYUE9SVDIKIHVkYXRfZ2V0Q2FsZW5kYXIoY29uc3QgVURhdGVGb3JtYXQq
IGZtdCk7CiAKIC8qKgpAQCAtMTE3OSw3ICsxMjA1LDcgQEAgdWRhdF9nZXRDYWxlbmRhcihjb25z
dCBVRGF0ZUZvcm1hdCogZm10KTsKICogQHNlZSB1ZGF0X3NldENhbGVuZGFyCiAqIEBzdGFibGUg
SUNVIDIuMAogKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAorVV9DQVBJIHZvaWQgVV9FWFBP
UlQyCiB1ZGF0X3NldENhbGVuZGFyKCAgICAgICAgICAgIFVEYXRlRm9ybWF0KiAgICBmbXQsCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0ICAgVUNhbGVuZGFyKiAgICAgIGNhbGVuZGFyVG9TZXQp
OwogCkBAIC0xMTkyLDEwICsxMjE4LDkgQEAgdWRhdF9zZXRDYWxlbmRhciggICAgICAgICAgICBV
RGF0ZUZvcm1hdCogICAgZm10LAogKiBAc2VlIHVkYXRfc2V0TnVtYmVyRm9ybWF0CiAqIEBzdGFi
bGUgSUNVIDIuMAogKi8KLVVfU1RBQkxFIGNvbnN0IFVOdW1iZXJGb3JtYXQqIFVfRVhQT1JUMiAK
K1VfQ0FQSSBjb25zdCBVTnVtYmVyRm9ybWF0KiBVX0VYUE9SVDIKIHVkYXRfZ2V0TnVtYmVyRm9y
bWF0KGNvbnN0IFVEYXRlRm9ybWF0KiBmbXQpOwogCi0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkK
IC8qKgogKiBHZXQgdGhlIFVOdW1iZXJGb3JtYXQgZm9yIHNwZWNpZmljIGZpZWxkIGFzc29jaWF0
ZWQgd2l0aCBhbiBVRGF0ZUZvcm1hdC4KICogRm9yIGV4YW1wbGU6ICd5JyBmb3IgeWVhciBhbmQg
J00nIGZvciBtb250aApAQCAtMTIwMywxNiArMTIyOCwxNiBAQCB1ZGF0X2dldE51bWJlckZvcm1h
dChjb25zdCBVRGF0ZUZvcm1hdCogZm10KTsKICogQHBhcmFtIGZpZWxkIHRoZSBmaWVsZCB0byBx
dWVyeQogKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgVU51bWJlckZvcm1hdCB1c2VkIGJ5IGZt
dCB0byBmb3JtYXQgZmllbGQgbnVtYmVycy4KICogQHNlZSB1ZGF0X3NldE51bWJlckZvcm1hdEZv
ckZpZWxkCi0qIEBkcmFmdCBJQ1UgNTQKKyogQHN0YWJsZSBJQ1UgNTQKICovCi1VX0RSQUZUIGNv
bnN0IFVOdW1iZXJGb3JtYXQqIFVfRVhQT1JUMiAKK1VfQ0FQSSBjb25zdCBVTnVtYmVyRm9ybWF0
KiBVX0VYUE9SVDIKIHVkYXRfZ2V0TnVtYmVyRm9ybWF0Rm9yRmllbGQoY29uc3QgVURhdGVGb3Jt
YXQqIGZtdCwgVUNoYXIgZmllbGQpOwogCiAvKioKICogU2V0IHRoZSBVTnVtYmVyRm9ybWF0IGZv
ciBzcGVjaWZpYyBmaWVsZCBhc3NvY2lhdGVkIHdpdGggYW4gVURhdGVGb3JtYXQuCiAqIEl0IGNh
biBiZSBhIHNpbmdsZSBmaWVsZCBsaWtlOiAieSIoeWVhcikgb3IgIk0iKG1vbnRoKQogKiBJdCBj
YW4gYmUgc2V2ZXJhbCBmaWVsZCBjb21iaW5lZCB0b2dldGhlcjogInlNIih5ZWFyIGFuZCBtb250
aCkKLSogTm90ZTogCisqIE5vdGU6CiAqIDEgc3ltYm9sIGZpZWxkIGlzIGVub3VnaCBmb3IgbXVs
dGlwbGUgc3ltYm9sIGZpZWxkIChzbyAieSIgd2lsbCBvdmVycmlkZSAieXkiLCAieXl5IikKICog
SWYgdGhlIGZpZWxkIGlzIG5vdCBudW1lcmljLCB0aGVuIG92ZXJyaWRlIGhhcyBubyBlZmZlY3Qg
KGxpa2UgIk1NTSIgd2lsbCB1c2UgYWJicmV2aWF0aW9uLCBub3QgbnVtZXJpY2FsIGZpZWxkKQog
KgpAQCAtMTIyMSwzMiArMTI0NiwyOCBAQCB1ZGF0X2dldE51bWJlckZvcm1hdEZvckZpZWxkKGNv
bnN0IFVEYXRlRm9ybWF0KiBmbXQsIFVDaGFyIGZpZWxkKTsKICogQHBhcmFtIG51bWJlckZvcm1h
dFRvU2V0IEEgcG9pbnRlciB0byB0aGUgVU51bWJlckZvcm1hdCB0byBiZSB1c2VkIGJ5IGZtdCB0
byBmb3JtYXQgbnVtYmVycy4KICogQHBhcmFtIHN0YXR1cyBlcnJvciBjb2RlIHBhc3NlZCBhcm91
bmQgKG1lbW9yeSBhbGxvY2F0aW9uIG9yIGludmFsaWQgZmllbGRzKQogKiBAc2VlIHVkYXRfZ2V0
TnVtYmVyRm9ybWF0Rm9yRmllbGQKLSogQGRyYWZ0IElDVSA1NAorKiBAc3RhYmxlIElDVSA1NAog
Ki8KLVVfRFJBRlQgdm9pZCBVX0VYUE9SVDIgCitVX0NBUEkgdm9pZCBVX0VYUE9SVDIKIHVkYXRf
YWRvcHROdW1iZXJGb3JtYXRGb3JGaWVsZHMoICBVRGF0ZUZvcm1hdCogZm10LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBmaWVsZHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVU51bWJlckZvcm1hdCogIG51bWJlckZvcm1hdFRvU2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7Ci0jZW5k
aWYgIC8qIFVfSElERV9EUkFGVF9BUEkgKi8KLQogLyoqCiAqIFNldCB0aGUgVU51bWJlckZvcm1h
dCBhc3NvY2lhdGVkIHdpdGggYW4gVURhdGVGb3JtYXQuCiAqIEEgVURhdGVGb3JtYXQgdXNlcyBh
IFVOdW1iZXJGb3JtYXQgdG8gZm9ybWF0IG51bWJlcnMgd2l0aGluIGEgZGF0ZSwKICogZm9yIGV4
YW1wbGUgdGhlIGRheSBudW1iZXIuCi0qIFRoaXMgbWV0aG9kIGFsc28gY2xlYXJzIHBlciBmaWVs
ZCBOdW1iZXJGb3JtYXQgaW5zdGFuY2VzIHByZXZpb3VzbHkgCi0qIHNldCBieSB7QHNlZSB1ZGF0
X3NldE51bWJlckZvcm1hdEZvckZpZWxkfSAKKyogVGhpcyBtZXRob2QgYWxzbyBjbGVhcnMgcGVy
IGZpZWxkIE51bWJlckZvcm1hdCBpbnN0YW5jZXMgcHJldmlvdXNseQorKiBzZXQgYnkge0BzZWUg
dWRhdF9zZXROdW1iZXJGb3JtYXRGb3JGaWVsZH0KICogQHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVy
IHRvIHNldC4KICogQHBhcmFtIG51bWJlckZvcm1hdFRvU2V0IEEgcG9pbnRlciB0byB0aGUgVU51
bWJlckZvcm1hdCB0byBiZSB1c2VkIGJ5IGZtdCB0byBmb3JtYXQgbnVtYmVycy4KICogQHNlZSB1
ZGF0X2dldE51bWJlckZvcm1hdAogKiBAc2VlIHVkYXRfc2V0TnVtYmVyRm9ybWF0Rm9yRmllbGQK
ICogQHN0YWJsZSBJQ1UgMi4wCiAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgCitVX0NBUEkg
dm9pZCBVX0VYUE9SVDIKIHVkYXRfc2V0TnVtYmVyRm9ybWF0KCAgICAgICAgICAgIFVEYXRlRm9y
bWF0KiAgICBmbXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAgIFVOdW1iZXJGb3Jt
YXQqICBudW1iZXJGb3JtYXRUb1NldCk7Ci0KLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogLyoq
CiAqIEFkb3B0IHRoZSBVTnVtYmVyRm9ybWF0IGFzc29jaWF0ZWQgd2l0aCBhbiBVRGF0ZUZvcm1h
dC4KICogQSBVRGF0ZUZvcm1hdCB1c2VzIGEgVU51bWJlckZvcm1hdCB0byBmb3JtYXQgbnVtYmVy
cyB3aXRoaW4gYSBkYXRlLApAQCAtMTI1NCwxMyArMTI3NSwxMSBAQCB1ZGF0X3NldE51bWJlckZv
cm1hdCggICAgICAgICAgICBVRGF0ZUZvcm1hdCogICAgZm10LAogKiBAcGFyYW0gZm10IFRoZSBm
b3JtYXR0ZXIgdG8gc2V0LgogKiBAcGFyYW0gbnVtYmVyRm9ybWF0VG9BZG9wdCBBIHBvaW50ZXIg
dG8gdGhlIFVOdW1iZXJGb3JtYXQgdG8gYmUgdXNlZCBieSBmbXQgdG8gZm9ybWF0IG51bWJlcnMu
CiAqIEBzZWUgdWRhdF9nZXROdW1iZXJGb3JtYXQKLSogQGRyYWZ0IElDVSA1NAorKiBAc3RhYmxl
IElDVSA1NAogKi8KLVVfRFJBRlQgdm9pZCBVX0VYUE9SVDIgCitVX0NBUEkgdm9pZCBVX0VYUE9S
VDIKIHVkYXRfYWRvcHROdW1iZXJGb3JtYXQoICAgICAgICAgICAgVURhdGVGb3JtYXQqICAgIGZt
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU51bWJlckZvcm1hdCogIG51
bWJlckZvcm1hdFRvQWRvcHQpOwotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCi0KIC8q
KgogKiBHZXQgYSBsb2NhbGUgZm9yIHdoaWNoIGRhdGUvdGltZSBmb3JtYXR0aW5nIHBhdHRlcm5z
IGFyZSBhdmFpbGFibGUuCiAqIEEgVURhdGVGb3JtYXQgaW4gYSBsb2NhbGUgcmV0dXJuZWQgYnkg
dGhpcyBmdW5jdGlvbiB3aWxsIHBlcmZvcm0gdGhlIGNvcnJlY3QKQEAgLTEyNzAsNyArMTI4OSw3
IEBAIHVkYXRfYWRvcHROdW1iZXJGb3JtYXQoICAgICAgICAgICAgVURhdGVGb3JtYXQqICAgIGZt
dCwKICogQHNlZSB1ZGF0X2NvdW50QXZhaWxhYmxlCiAqIEBzdGFibGUgSUNVIDIuMAogKi8KLVVf
U1RBQkxFIGNvbnN0IGNoYXIqIFVfRVhQT1JUMiAKK1VfQ0FQSSBjb25zdCBjaGFyKiBVX0VYUE9S
VDIKIHVkYXRfZ2V0QXZhaWxhYmxlKGludDMyX3QgbG9jYWxlSW5kZXgpOwogCiAvKioKQEAgLTEy
ODEsNyArMTMwMCw3IEBAIHVkYXRfZ2V0QXZhaWxhYmxlKGludDMyX3QgbG9jYWxlSW5kZXgpOwog
KiBAc2VlIHVkYXRfZ2V0QXZhaWxhYmxlCiAqIEBzdGFibGUgSUNVIDIuMAogKi8KLVVfU1RBQkxF
IGludDMyX3QgVV9FWFBPUlQyIAorVV9DQVBJIGludDMyX3QgVV9FWFBPUlQyCiB1ZGF0X2NvdW50
QXZhaWxhYmxlKHZvaWQpOwogCiAvKioKQEAgLTEyOTQsNyArMTMxMyw3IEBAIHVkYXRfY291bnRB
dmFpbGFibGUodm9pZCk7CiAqIEBzZWUgdWRhdF9TZXQyRGlnaXRZZWFyU3RhcnQKICogQHN0YWJs
ZSBJQ1UgMi4wCiAqLwotVV9TVEFCTEUgVURhdGUgVV9FWFBPUlQyIAorVV9DQVBJIFVEYXRlIFVf
RVhQT1JUMgogdWRhdF9nZXQyRGlnaXRZZWFyU3RhcnQoICAgIGNvbnN0ICAgVURhdGVGb3JtYXQg
ICAgICpmbXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2Rl
ICAgICAgKnN0YXR1cyk7CiAKQEAgLTEzMDgsNyArMTMyNyw3IEBAIHVkYXRfZ2V0MkRpZ2l0WWVh
clN0YXJ0KCAgICBjb25zdCAgIFVEYXRlRm9ybWF0ICAgICAqZm10LAogKiBAc2VlIHVkYXRfU2V0
MkRpZ2l0WWVhclN0YXJ0CiAqIEBzdGFibGUgSUNVIDIuMAogKi8KLVVfU1RBQkxFIHZvaWQgVV9F
WFBPUlQyIAorVV9DQVBJIHZvaWQgVV9FWFBPUlQyCiB1ZGF0X3NldDJEaWdpdFllYXJTdGFydCgg
ICAgVURhdGVGb3JtYXQgICAgICpmbXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVURh
dGUgICAgICAgICAgIGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAg
ICAgICpzdGF0dXMpOwpAQCAtMTMyNSw3ICsxMzQ0LDcgQEAgdWRhdF9zZXQyRGlnaXRZZWFyU3Rh
cnQoICAgIFVEYXRlRm9ybWF0ICAgICAqZm10LAogKiBAc2VlIHVkYXRfYXBwbHlQYXR0ZXJuCiAq
IEBzdGFibGUgSUNVIDIuMAogKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAorVV9DQVBJ
IGludDMyX3QgVV9FWFBPUlQyCiB1ZGF0X3RvUGF0dGVybiggICAgY29uc3QgICBVRGF0ZUZvcm1h
dCAgICAgKmZtdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29sICAgICAgICAgIGxvY2Fs
aXplZCwKICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyICAgICAgICAgICAqcmVzdWx0LApA
QCAtMTM0MiwxNCArMTM2MSwxNCBAQCB1ZGF0X3RvUGF0dGVybiggICAgY29uc3QgICBVRGF0ZUZv
cm1hdCAgICAgKmZtdCwKICogQHNlZSB1ZGF0X3RvUGF0dGVybgogKiBAc3RhYmxlIElDVSAyLjAK
ICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMiAKK1VfQ0FQSSB2b2lkIFVfRVhQT1JUMgogdWRh
dF9hcHBseVBhdHRlcm4oICAgICAgICAgICAgVURhdGVGb3JtYXQgICAgICpmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVUJvb2wgICAgICAgICAgbG9jYWxpemVkLAogICAgICAg
ICAgICAgICAgICAgICBjb25zdCAgIFVDaGFyICAgICAgICAgICAqcGF0dGVybiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgcGF0dGVybkxlbmd0aCk7CiAKLS8q
KiAKLSAqIFRoZSBwb3NzaWJsZSB0eXBlcyBvZiBkYXRlIGZvcm1hdCBzeW1ib2xzIAorLyoqCisg
KiBUaGUgcG9zc2libGUgdHlwZXMgb2YgZGF0ZSBmb3JtYXQgc3ltYm9scwogICogQHN0YWJsZSBJ
Q1UgMi42CiAgKi8KIHR5cGVkZWYgZW51bSBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUgewpAQCAtMTQw
OCw0NCArMTQyNyw0MSBAQCB0eXBlZGVmIGVudW0gVURhdGVGb3JtYXRTeW1ib2xUeXBlIHsKICAg
ICAgKiBTdGFuZGFsb25lIHZlcnNpb24gb2YgVURBVF9TSE9SVEVSX1dFRUtEQVlTLgogICAgICAq
IEBzdGFibGUgSUNVIDUxCiAgICAgICovCi0gICAgVURBVF9TVEFOREFMT05FX1NIT1JURVJfV0VF
S0RBWVMKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQotICAgICwKKyAgICBVREFUX1NUQU5EQUxP
TkVfU0hPUlRFUl9XRUVLREFZUywKICAgICAvKioKICAgICAgKiBDeWNsaWMgeWVhciBuYW1lcyAo
b25seSBzdXBwb3J0ZWQgZm9yIHNvbWUgY2FsZW5kYXJzLCBhbmQgb25seSBmb3IgRk9STUFUIHVz
YWdlOwogICAgICAqIHVkYXRfc2V0U3ltYm9scyBub3Qgc3VwcG9ydGVkIGZvciBVREFUX0NZQ0xJ
Q19ZRUFSU19XSURFKQotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElDVSA1
NAogICAgICAqLwogICAgIFVEQVRfQ1lDTElDX1lFQVJTX1dJREUsCiAgICAgLyoqCiAgICAgICog
Q3ljbGljIHllYXIgbmFtZXMgKG9ubHkgc3VwcG9ydGVkIGZvciBzb21lIGNhbGVuZGFycywgYW5k
IG9ubHkgZm9yIEZPUk1BVCB1c2FnZSkKLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0
YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBVREFUX0NZQ0xJQ19ZRUFSU19BQkJSRVZJQVRFRCwK
ICAgICAvKioKICAgICAgKiBDeWNsaWMgeWVhciBuYW1lcyAob25seSBzdXBwb3J0ZWQgZm9yIHNv
bWUgY2FsZW5kYXJzLCBhbmQgb25seSBmb3IgRk9STUFUIHVzYWdlOwogICAgICAqIHVkYXRfc2V0
U3ltYm9scyBub3Qgc3VwcG9ydGVkIGZvciBVREFUX0NZQ0xJQ19ZRUFSU19OQVJST1cpCi0gICAg
ICogQGRyYWZ0IElDVSA1NAorICAgICAqIEBzdGFibGUgSUNVIDU0CiAgICAgICovCiAgICAgVURB
VF9DWUNMSUNfWUVBUlNfTkFSUk9XLAogICAgIC8qKgogICAgICAqIENhbGVuZGFyIHpvZGlhYyAg
bmFtZXMgKG9ubHkgc3VwcG9ydGVkIGZvciBzb21lIGNhbGVuZGFycywgYW5kIG9ubHkgZm9yIEZP
Uk1BVCB1c2FnZTsKICAgICAgKiB1ZGF0X3NldFN5bWJvbHMgbm90IHN1cHBvcnRlZCBmb3IgVURB
VF9aT0RJQUNfTkFNRVNfV0lERSkKLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJs
ZSBJQ1UgNTQKICAgICAgKi8KICAgICBVREFUX1pPRElBQ19OQU1FU19XSURFLAogICAgIC8qKgog
ICAgICAqIENhbGVuZGFyIHpvZGlhYyAgbmFtZXMgKG9ubHkgc3VwcG9ydGVkIGZvciBzb21lIGNh
bGVuZGFycywgYW5kIG9ubHkgZm9yIEZPUk1BVCB1c2FnZSkKLSAgICAgKiBAZHJhZnQgSUNVIDU0
CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBVREFUX1pPRElBQ19OQU1FU19B
QkJSRVZJQVRFRCwKICAgICAvKioKICAgICAgKiBDYWxlbmRhciB6b2RpYWMgIG5hbWVzIChvbmx5
IHN1cHBvcnRlZCBmb3Igc29tZSBjYWxlbmRhcnMsIGFuZCBvbmx5IGZvciBGT1JNQVQgdXNhZ2U7
CiAgICAgICogdWRhdF9zZXRTeW1ib2xzIG5vdCBzdXBwb3J0ZWQgZm9yIFVEQVRfWk9ESUFDX05B
TUVTX05BUlJPVykKLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQK
ICAgICAgKi8KICAgICBVREFUX1pPRElBQ19OQU1FU19OQVJST1cKLSNlbmRpZiAgLyogVV9ISURF
X0RSQUZUX0FQSSAqLwogfSBVRGF0ZUZvcm1hdFN5bWJvbFR5cGU7CiAKIHN0cnVjdCBVRGF0ZUZv
cm1hdFN5bWJvbHM7CkBAIC0xNDcxLDcgKzE0ODcsNyBAQCB0eXBlZGVmIHN0cnVjdCBVRGF0ZUZv
cm1hdFN5bWJvbHMgVURhdGVGb3JtYXRTeW1ib2xzOwogKiBAc2VlIHVkYXRfc2V0U3ltYm9scwog
KiBAc3RhYmxlIElDVSAyLjAKICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMiAKK1VfQ0FQ
SSBpbnQzMl90IFVfRVhQT1JUMgogdWRhdF9nZXRTeW1ib2xzKGNvbnN0ICAgVURhdGVGb3JtYXQg
ICAgICAgICAgICAgKmZtdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFVEYXRlRm9ybWF0U3lt
Ym9sVHlwZSAgIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAg
ICAgICAgICBzeW1ib2xJbmRleCwKQEAgLTE0OTEsNyArMTUwNyw3IEBAIHVkYXRfZ2V0U3ltYm9s
cyhjb25zdCAgIFVEYXRlRm9ybWF0ICAgICAgICAgICAgICpmbXQsCiAqIEBzZWUgdWRhdF9zZXRT
eW1ib2xzCiAqIEBzdGFibGUgSUNVIDIuMAogKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQy
IAorVV9DQVBJIGludDMyX3QgVV9FWFBPUlQyCiB1ZGF0X2NvdW50U3ltYm9scyggICAgY29uc3Qg
ICAgVURhdGVGb3JtYXQgICAgICAgICAgICAgICAgKmZtdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUgICAgdHlwZSk7CiAKQEAgLTE1MTAsNyArMTUy
Niw3IEBAIHVkYXRfY291bnRTeW1ib2xzKCAgICBjb25zdCAgICBVRGF0ZUZvcm1hdCAgICAgICAg
ICAgICAgICAqZm10LAogKiBAc2VlIHVkYXRfY291bnRTeW1ib2xzCiAqIEBzdGFibGUgSUNVIDIu
MAogKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyIAorVV9DQVBJIHZvaWQgVV9FWFBPUlQyCiB1
ZGF0X3NldFN5bWJvbHMoICAgIFVEYXRlRm9ybWF0ICAgICAgICAgICAgICpmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgIFVEYXRlRm9ybWF0U3ltYm9sVHlwZSAgIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgICAgICAgICAgICAgICAgIHN5bWJvbEluZGV4LApAQCAtMTUyMiwx
NSArMTUzOCwxNSBAQCB1ZGF0X3NldFN5bWJvbHMoICAgIFVEYXRlRm9ybWF0ICAgICAgICAgICAg
ICpmb3JtYXQsCiAgKiBHZXQgdGhlIGxvY2FsZSBmb3IgdGhpcyBkYXRlIGZvcm1hdCBvYmplY3Qu
CiAgKiBZb3UgY2FuIGNob29zZSBiZXR3ZWVuIHZhbGlkIGFuZCBhY3R1YWwgbG9jYWxlLgogICog
QHBhcmFtIGZtdCBUaGUgZm9ybWF0dGVyIHRvIGdldCB0aGUgbG9jYWxlIGZyb20KLSAqIEBwYXJh
bSB0eXBlIHR5cGUgb2YgdGhlIGxvY2FsZSB3ZSdyZSBsb29raW5nIGZvciAodmFsaWQgb3IgYWN0
dWFsKSAKKyAqIEBwYXJhbSB0eXBlIHR5cGUgb2YgdGhlIGxvY2FsZSB3ZSdyZSBsb29raW5nIGZv
ciAodmFsaWQgb3IgYWN0dWFsKQogICogQHBhcmFtIHN0YXR1cyBlcnJvciBjb2RlIGZvciB0aGUg
b3BlcmF0aW9uCiAgKiBAcmV0dXJuIHRoZSBsb2NhbGUgbmFtZQogICogQHN0YWJsZSBJQ1UgMi44
CiAgKi8KLVVfU1RBQkxFIGNvbnN0IGNoYXIqIFVfRVhQT1JUMgorVV9DQVBJIGNvbnN0IGNoYXIq
IFVfRVhQT1JUMgogdWRhdF9nZXRMb2NhbGVCeVR5cGUoY29uc3QgVURhdGVGb3JtYXQgKmZtdCwK
ICAgICAgICAgICAgICAgICAgICAgIFVMb2NEYXRhTG9jYWxlVHlwZSB0eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsgCisgICAgICAgICAgICAgICAgICAgICBV
RXJyb3JDb2RlKiBzdGF0dXMpOwogCiAvKioKICAqIFNldCBhIHBhcnRpY3VsYXIgVURpc3BsYXlD
b250ZXh0IHZhbHVlIGluIHRoZSBmb3JtYXR0ZXIsIHN1Y2ggYXMKQEAgLTE1NDAsNyArMTU1Niw3
IEBAIHVkYXRfZ2V0TG9jYWxlQnlUeXBlKGNvbnN0IFVEYXRlRm9ybWF0ICpmbXQsCiAgKiBAcGFy
YW0gc3RhdHVzIEEgcG9pbnRlciB0byBhbiBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9y
cwogICogQHN0YWJsZSBJQ1UgNTEKICAqLwotVV9EUkFGVCB2b2lkIFVfRVhQT1JUMgorVV9DQVBJ
IHZvaWQgVV9FWFBPUlQyCiB1ZGF0X3NldENvbnRleHQoVURhdGVGb3JtYXQqIGZtdCwgVURpc3Bs
YXlDb250ZXh0IHZhbHVlLCBVRXJyb3JDb2RlKiBzdGF0dXMpOwogCiAvKioKQEAgLTE1NTIsNyAr
MTU2OCw3IEBAIHVkYXRfc2V0Q29udGV4dChVRGF0ZUZvcm1hdCogZm10LCBVRGlzcGxheUNvbnRl
eHQgdmFsdWUsIFVFcnJvckNvZGUqIHN0YXR1cyk7CiAgKiBAcmV0dXJuIFRoZSBVRGlzcGxheUNv
bnRleHRWYWx1ZSBmb3IgdGhlIHNwZWNpZmllZCB0eXBlLgogICogQHN0YWJsZSBJQ1UgNTMKICAq
LwotVV9TVEFCTEUgVURpc3BsYXlDb250ZXh0IFVfRVhQT1JUMgorVV9DQVBJIFVEaXNwbGF5Q29u
dGV4dCBVX0VYUE9SVDIKIHVkYXRfZ2V0Q29udGV4dChjb25zdCBVRGF0ZUZvcm1hdCogZm10LCBV
RGlzcGxheUNvbnRleHRUeXBlIHR5cGUsIFVFcnJvckNvZGUqIHN0YXR1cyk7CiAKICNpZm5kZWYg
VV9ISURFX0lOVEVSTkFMX0FQSQpAQCAtMTU2Nyw3ICsxNTgzLDcgQEAgdWRhdF9nZXRDb250ZXh0
KGNvbnN0IFVEYXRlRm9ybWF0KiBmbXQsIFVEaXNwbGF5Q29udGV4dFR5cGUgdHlwZSwgVUVycm9y
Q29kZSogc3QKICogQHNlZSB1ZGF0X2FwcGx5UGF0dGVyblJlbGF0aXZlCiAqIEBpbnRlcm5hbCBJ
Q1UgNC4yIHRlY2hub2xvZ3kgcHJldmlldwogKi8KLVVfSU5URVJOQUwgaW50MzJfdCBVX0VYUE9S
VDIgCitVX0lOVEVSTkFMIGludDMyX3QgVV9FWFBPUlQyCiB1ZGF0X3RvUGF0dGVyblJlbGF0aXZl
RGF0ZShjb25zdCBVRGF0ZUZvcm1hdCAqZm10LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
VUNoYXIgICAgICAgICAgICAgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dDMyX3QgICAgICAgICAgIHJlc3VsdExlbmd0aCwKQEAgLTE1ODQsNyArMTYwMCw3IEBAIHVkYXRf
dG9QYXR0ZXJuUmVsYXRpdmVEYXRlKGNvbnN0IFVEYXRlRm9ybWF0ICpmbXQsCiAqIEBzZWUgdWRh
dF9hcHBseVBhdHRlcm5SZWxhdGl2ZQogKiBAaW50ZXJuYWwgSUNVIDQuMiB0ZWNobm9sb2d5IHBy
ZXZpZXcKICovCi1VX0lOVEVSTkFMIGludDMyX3QgVV9FWFBPUlQyIAorVV9JTlRFUk5BTCBpbnQz
Ml90IFVfRVhQT1JUMgogdWRhdF90b1BhdHRlcm5SZWxhdGl2ZVRpbWUoY29uc3QgVURhdGVGb3Jt
YXQgKmZtdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyICAgICAgICAgICAgICpy
ZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICByZXN1
bHRMZW5ndGgsCkBAIC0xNjAyLDcgKzE2MTgsNyBAQCB1ZGF0X3RvUGF0dGVyblJlbGF0aXZlVGlt
ZShjb25zdCBVRGF0ZUZvcm1hdCAqZm10LAogKiBAc2VlIHVkYXRfdG9QYXR0ZXJuUmVsYXRpdmVE
YXRlLCB1ZGF0X3RvUGF0dGVyblJlbGF0aXZlVGltZQogKiBAaW50ZXJuYWwgSUNVIDQuMiB0ZWNo
bm9sb2d5IHByZXZpZXcKICovCi1VX0lOVEVSTkFMIHZvaWQgVV9FWFBPUlQyIAorVV9JTlRFUk5B
TCB2b2lkIFVfRVhQT1JUMgogdWRhdF9hcHBseVBhdHRlcm5SZWxhdGl2ZShVRGF0ZUZvcm1hdCAq
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqZGF0ZVBhdHRl
cm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgICAgIGRhdGVQYXR0ZXJuTGVu
Z3RoLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91ZGF0YS5oIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS91ZGF0YS5oCmluZGV4IDI5ZTQ2NjMwZDUzOThkODI3MzhkMWQ2MWZm
YzRkMmM5MTRlOGM2OGIuLmEwMjg2ZTFlNDIwMzY3ODI5ODZkNTIzYWJmMzcwZTdjM2EyNWFhMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWRhdGEuaAorKysgYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL3VkYXRhLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBs
YXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVz
ZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgogKgpAQCAtNiw3ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog
KiAgIGZpbGUgbmFtZTogIHVkYXRhLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVu
Y29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50
YXRpb246NAogKgpAQCAtNDA4LDggKzQxMCwxMyBAQCB0eXBlZGVmIGVudW0gVURhdGFGaWxlQWNj
ZXNzIHsKICAgICBVREFUQV9QQUNLQUdFU19GSVJTVCwKICAgICAvKiogSUNVIGRvZXMgbm90IGFj
Y2VzcyB0aGUgZmlsZSBzeXN0ZW0gZm9yIGRhdGEgbG9hZGluZy4gQHN0YWJsZSBJQ1UgMy40ICov
CiAgICAgVURBVEFfTk9fRklMRVMsCi0gICAgLyoqIE51bWJlciBvZiByZWFsIFVEYXRhRmlsZUFj
Y2VzcyB2YWx1ZXMuIEBzdGFibGUgSUNVIDMuNCAqLworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRF
RF9BUEkKKyAgICAvKioKKyAgICAgKiBOdW1iZXIgb2YgcmVhbCBVRGF0YUZpbGVBY2Nlc3MgdmFs
dWVzLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hh
bmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwogICAgIFVEQVRB
X0ZJTEVfQUNDRVNTX0NPVU5UCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogfSBV
RGF0YUZpbGVBY2Nlc3M7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS91ZGF0ZWludGVydmFsZm9ybWF0LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VkYXRlaW50
ZXJ2YWxmb3JtYXQuaAppbmRleCA1ZWU5MmU2MjlhZjU0OTEzYTM4NGFlNzU2NGMzOTdhOTE0YmVk
MjgzLi45MzAwZGRjZjgyYjk2NTZjY2UwNjMwZGQ3ZDc4MWVhMzE0OTJiMzdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VkYXRlaW50ZXJ2YWxmb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3VkYXRlaW50ZXJ2YWxmb3JtYXQuaApAQCAtMSw2ICsxLDggQEAK
Ky8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNl
bnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1s
CiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMTIsMjAxNSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqIENvcnBv
cmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgogKi8KQEAgLTE2MCw2ICsxNjIsOSBAQCBVX05BTUVTUEFDRV9FTkQK
ICAqICAgICAgICAgICAgdGhlIGJlZ2lubmluZyBhbmQgZW5kaW5nIGluZGljZXMgb2YgZmllbGQg
bnVtYmVyIHBvc2l0aW9uLT5maWVsZCwKICAqICAgICAgICAgICAgaWYgc3VjaCBhIGZpZWxkIGV4
aXN0cy4gVGhpcyBwYXJhbWV0ZXIgbWF5IGJlIE5VTEwsIGluIHdoaWNoIGNhc2UKICAqICAgICAg
ICAgICAgbm8gZmllbGQgcG9zaXRpb24gZGF0YSBpcyByZXR1cm5lZC4KKyAqICAgICAgICAgICAg
VGhlcmUgbWF5IGJlIG11bHRpcGxlIGluc3RhbmNlcyBvZiBhIGdpdmVuIGZpZWxkIHR5cGUgaW4g
YW4KKyAqICAgICAgICAgICAgaW50ZXJ2YWwgZm9ybWF0OyBpbiB0aGlzIGNhc2UgdGhlIHBvc2l0
aW9uIGluZGljZXMgcmVmZXIgdG8gdGhlCisgKiAgICAgICAgICAgIGZpcnN0IGluc3RhbmNlLgog
ICogQHBhcmFtIHN0YXR1cwogICogICAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBVRXJyb3JDb2Rl
IHRvIHJlY2VpdmUgYW55IGVycm9ycy4KICAqIEByZXR1cm4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdWRhdHBnLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VkYXRwZy5o
CmluZGV4IDZiOTUyNTI4OTVlMDI1MzQ0YmMzMzlmYTU5NGNiZjNhZTNhMTkzZGUuLjc2YmFhM2Rh
NTg5NDBmZTIyYzJjM2Q3OGVkNTAyNzkzOTljNTUyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdWRhdHBnLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91ZGF0cGcu
aApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtNiw3
ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1ZGF0
cGcuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICog
ICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC04Myw3
ICs4NSwxMyBAQCB0eXBlZGVmIGVudW0gVURhdGVUaW1lUGF0dGVybkZpZWxkIHsKICAgICBVREFU
UEdfRlJBQ1RJT05BTF9TRUNPTkRfRklFTEQsCiAgICAgLyoqIEBzdGFibGUgSUNVIDMuOCAqLwog
ICAgIFVEQVRQR19aT05FX0ZJRUxELAotICAgIC8qKiBAc3RhYmxlIElDVSAzLjggKi8KKworICAg
IC8qIERvIG5vdCBjb25kaXRpb25hbGl6ZSB0aGUgZm9sbG93aW5nIHdpdGggI2lmbmRlZiBVX0hJ
REVfREVQUkVDQVRFRF9BUEksCisgICAgICogaXQgaXMgbmVlZGVkIGZvciBsYXlvdXQgb2YgRGF0
ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yIG9iamVjdC4gKi8KKyAgICAvKioKKyAgICAgKiBPbmUgbW9y
ZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVRGF0ZVRpbWVQYXR0ZXJuRmllbGQgdmFsdWUuCisg
ICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3Zl
ciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVURBVFBHX0ZJRUxE
X0NPVU5UCiB9IFVEYXRlVGltZVBhdHRlcm5GaWVsZDsKIApAQCAtMTIwLDggKzEyOCwxMyBAQCB0
eXBlZGVmIGVudW0gVURhdGVUaW1lUGF0dGVybkNvbmZsaWN0IHsKICAgICBVREFUUEdfQkFTRV9D
T05GTElDVCwKICAgICAvKiogQHN0YWJsZSBJQ1UgMy44ICovCiAgICAgVURBVFBHX0NPTkZMSUNU
LAotICAgIC8qKiBAc3RhYmxlIElDVSAzLjggKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURf
QVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVURh
dGVUaW1lUGF0dGVybkNvbmZsaWN0IHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBU
aGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEy
NDIwLgorICAgICAqLwogICAgIFVEQVRQR19DT05GTElDVF9DT1VOVAorI2VuZGlmICAvLyBVX0hJ
REVfREVQUkVDQVRFRF9BUEkKIH0gVURhdGVUaW1lUGF0dGVybkNvbmZsaWN0OwogCiAvKioKQEAg
LTI1OSw3ICsyNzIsOCBAQCB1ZGF0cGdfZ2V0QmVzdFBhdHRlcm5XaXRoT3B0aW9ucyhVRGF0ZVRp
bWVQYXR0ZXJuR2VuZXJhdG9yICpkdHBnLAogICAqIENvbnNlY3V0aXZlIGNhbGxzIHRvIHRoaXMg
ZnVuY3Rpb24gZG8gbm90IGFmZmVjdCBlYWNoIG90aGVyLAogICAqIGJ1dCB0aGlzIGZ1bmN0aW9u
IGNhbm5vdCBiZSB1c2VkIGNvbmN1cnJlbnRseSBvbiBhIHNpbmdsZSBnZW5lcmF0b3Igb2JqZWN0
LgogICAqCi0gICogQHBhcmFtIGR0cGcgICAgIGEgcG9pbnRlciB0byBVRGF0ZVRpbWVQYXR0ZXJu
R2VuZXJhdG9yLgorICAqIEBwYXJhbSB1bnVzZWREdHBnICAgICBhIHBvaW50ZXIgdG8gVURhdGVU
aW1lUGF0dGVybkdlbmVyYXRvci4KKyAgKiAgICBUaGlzIHBhcmFtZXRlciBpcyBubyBsb25nZXIg
dXNlZC4gQ2FsbGVycyBtYXkgcGFzcyBOVUxMLgogICAqIEBwYXJhbSBwYXR0ZXJuICBpbnB1dCBw
YXR0ZXJuLCBzdWNoIGFzICJkZC9NTU0iLgogICAqIEBwYXJhbSBsZW5ndGggICB0aGUgbGVuZ3Ro
IG9mIHBhdHRlcm4uCiAgICogQHBhcmFtIHNrZWxldG9uIHN1Y2ggYXMgIk1NTWRkIgpAQCAtMjcw
LDcgKzI4NCw3IEBAIHVkYXRwZ19nZXRCZXN0UGF0dGVybldpdGhPcHRpb25zKFVEYXRlVGltZVBh
dHRlcm5HZW5lcmF0b3IgKmR0cGcsCiAgICogQHN0YWJsZSBJQ1UgMy44CiAgICovCiBVX1NUQUJM
RSBpbnQzMl90IFVfRVhQT1JUMgotdWRhdHBnX2dldFNrZWxldG9uKFVEYXRlVGltZVBhdHRlcm5H
ZW5lcmF0b3IgKmR0cGcsCit1ZGF0cGdfZ2V0U2tlbGV0b24oVURhdGVUaW1lUGF0dGVybkdlbmVy
YXRvciAqdW51c2VkRHRwZywKICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqcGF0dGVy
biwgaW50MzJfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgVUNoYXIgKnNrZWxldG9uLCBp
bnQzMl90IGNhcGFjaXR5LAogICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNv
ZGUpOwpAQCAtMjg4LDcgKzMwMiw4IEBAIHVkYXRwZ19nZXRTa2VsZXRvbihVRGF0ZVRpbWVQYXR0
ZXJuR2VuZXJhdG9yICpkdHBnLAogICogQ29uc2VjdXRpdmUgY2FsbHMgdG8gdGhpcyBmdW5jdGlv
biBkbyBub3QgYWZmZWN0IGVhY2ggb3RoZXIsCiAgKiBidXQgdGhpcyBmdW5jdGlvbiBjYW5ub3Qg
YmUgdXNlZCBjb25jdXJyZW50bHkgb24gYSBzaW5nbGUgZ2VuZXJhdG9yIG9iamVjdC4KICAqCi0g
KiBAcGFyYW0gZHRwZyAgICAgYSBwb2ludGVyIHRvIFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3Iu
CisgKiBAcGFyYW0gdW51c2VkRHRwZyAgICAgYSBwb2ludGVyIHRvIFVEYXRlVGltZVBhdHRlcm5H
ZW5lcmF0b3IuCisgKiAgICBUaGlzIHBhcmFtZXRlciBpcyBubyBsb25nZXIgdXNlZC4gQ2FsbGVy
cyBtYXkgcGFzcyBOVUxMLgogICogQHBhcmFtIHBhdHRlcm4gIGlucHV0IHBhdHRlcm4sIHN1Y2gg
YXMgImRkL01NTSIuCiAgKiBAcGFyYW0gbGVuZ3RoICAgdGhlIGxlbmd0aCBvZiBwYXR0ZXJuLgog
ICogQHBhcmFtIGJhc2VTa2VsZXRvbiBzdWNoIGFzICJNZCIKQEAgLTI5OSw3ICszMTQsNyBAQCB1
ZGF0cGdfZ2V0U2tlbGV0b24oVURhdGVUaW1lUGF0dGVybkdlbmVyYXRvciAqZHRwZywKICAqIEBz
dGFibGUgSUNVIDMuOAogICovCiBVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdWRhdHBnX2dl
dEJhc2VTa2VsZXRvbihVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yICpkdHBnLAordWRhdHBnX2dl
dEJhc2VTa2VsZXRvbihVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yICp1bnVzZWREdHBnLAogICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqcGF0dGVybiwgaW50MzJfdCBsZW5ndGgs
CiAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyICpiYXNlU2tlbGV0b24sIGludDMyX3QgY2Fw
YWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91ZGlzcGxheWNvbnRleHQuaCBiL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvdWRpc3BsYXljb250ZXh0LmgKaW5kZXggOTJiMmY5NGE0OTFk
Y2NlZWNkMzNiZTcxNTE5NWE0MzQ3NDk1MmZlZC4uMzk4NDgxYzY4MTIyNDc4NTYxOGY1YWQxMmUx
MWI5MWIwOTNiMTA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91ZGlzcGxh
eWNvbnRleHQuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VkaXNwbGF5Y29udGV4dC5o
CkBAIC0xLDYgKzEsOCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5k
IG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMK
ICogQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAqLwpAQCAtMzUsMTYgKzM3LDE5IEBAIGVudW0gVURp
c3BsYXlDb250ZXh0VHlwZSB7CiAgICAgICogVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX0JF
R0lOTklOR19PRl9TRU5URU5DRSwgZXRjLgogICAgICAqIEBzdGFibGUgSUNVIDUxCiAgICAgICov
Ci0gICAgVURJU1BDVFhfVFlQRV9DQVBJVEFMSVpBVElPTiA9IDEKLSNpZm5kZWYgVV9ISURFX0RS
QUZUX0FQSQotICAgICwKKyAgICBVRElTUENUWF9UWVBFX0NBUElUQUxJWkFUSU9OID0gMSwKICAg
ICAvKioKICAgICAgKiBUeXBlIHRvIHJldHJpZXZlIHRoZSBkaXNwbGF5IGxlbmd0aCBzZXR0aW5n
LCBlLmcuCiAgICAgICogVURJU1BDVFhfTEVOR1RIX0ZVTEwsIFVESVNQQ1RYX0xFTkdUSF9TSE9S
VC4KLSAgICAgKiBAZHJhZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8K
LSAgICBVRElTUENUWF9UWVBFX0RJU1BMQVlfTEVOR1RIID0gMgotI2VuZGlmICAvKiBVX0hJREVf
RFJBRlRfQVBJICovCisgICAgVURJU1BDVFhfVFlQRV9ESVNQTEFZX0xFTkdUSCA9IDIsCisgICAg
LyoqCisgICAgICogVHlwZSB0byByZXRyaWV2ZSB0aGUgc3Vic3RpdHV0ZSBoYW5kbGluZyBzZXR0
aW5nLCBlLmcuCisgICAgICogVURJU1BDVFhfU1VCU1RJVFVURSwgVURJU1BDVFhfTk9fU1VCU1RJ
VFVURS4KKyAgICAgKiBAc3RhYmxlIElDVSA1OAorICAgICAqLworICAgIFVESVNQQ1RYX1RZUEVf
U1VCU1RJVFVURV9IQU5ETElORyA9IDMKIH07CiAvKioKICogIEBzdGFibGUgSUNVIDUxCkBAIC0x
MTUsOSArMTIwLDcgQEAgZW51bSBVRGlzcGxheUNvbnRleHQgewogICAgICAqIGlzb2xhdGVkIG5h
bWUgb24gYSBjYWxlbmRhciBwYWdlLgogICAgICAqIEBzdGFibGUgSUNVIDUxCiAgICAgICovCi0g
ICAgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxPTkUgPSAoVURJU1BDVFhfVFlQ
RV9DQVBJVEFMSVpBVElPTjw8OCkgKyA0Ci0jaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKLSAgICAs
CisgICAgVURJU1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxPTkUgPSAoVURJU1BDVFhf
VFlQRV9DQVBJVEFMSVpBVElPTjw8OCkgKyA0LAogICAgIC8qKgogICAgICAqID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CiAgICAgICogRElTUExBWV9MRU5HVEggY2FuIGJlIHNldCB0
byBvbmUgb2YgVURJU1BDVFhfTEVOR1RIX0ZVTEwgb3IKQEAgLTEyOCwxNyArMTMxLDM2IEBAIGVu
dW0gVURpc3BsYXlDb250ZXh0IHsKICAgICAgKiBBIHBvc3NpYmxlIHNldHRpbmcgZm9yIERJU1BM
QVlfTEVOR1RIOgogICAgICAqIHVzZSBmdWxsIG5hbWVzIHdoZW4gZ2VuZXJhdGluZyBhIGxvY2Fs
ZSBuYW1lLAogICAgICAqIGUuZy4gIlVuaXRlZCBTdGF0ZXMiIGZvciBVUy4KLSAgICAgKiBAZHJh
ZnQgSUNVIDU0CisgICAgICogQHN0YWJsZSBJQ1UgNTQKICAgICAgKi8KICAgICBVRElTUENUWF9M
RU5HVEhfRlVMTCA9IChVRElTUENUWF9UWVBFX0RJU1BMQVlfTEVOR1RIPDw4KSArIDAsCiAgICAg
LyoqCiAgICAgICogQSBwb3NzaWJsZSBzZXR0aW5nIGZvciBESVNQTEFZX0xFTkdUSDoKICAgICAg
KiB1c2Ugc2hvcnQgbmFtZXMgd2hlbiBnZW5lcmF0aW5nIGEgbG9jYWxlIG5hbWUsCiAgICAgICog
ZS5nLiAiVS5TLiIgZm9yIFVTLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxl
IElDVSA1NAorICAgICAqLworICAgIFVESVNQQ1RYX0xFTkdUSF9TSE9SVCA9IChVRElTUENUWF9U
WVBFX0RJU1BMQVlfTEVOR1RIPDw4KSArIDEsCisgICAgLyoqCisgICAgICogPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKyAgICAgKiBTVUJTVElUVVRFX0hBTkRMSU5HIGNhbiBiZSBz
ZXQgdG8gb25lIG9mIFVESVNQQ1RYX1NVQlNUSVRVVEUgb3IKKyAgICAgKiBVRElTUENUWF9OT19T
VUJTVElUVVRFLiBVc2UgVURpc3BsYXlDb250ZXh0VHlwZSBVRElTUENUWF9UWVBFX1NVQlNUSVRV
VEVfSEFORExJTkcKKyAgICAgKiB0byBnZXQgdGhlIHZhbHVlLgogICAgICAqLwotICAgIFVESVNQ
Q1RYX0xFTkdUSF9TSE9SVCA9IChVRElTUENUWF9UWVBFX0RJU1BMQVlfTEVOR1RIPDw4KSArIDEK
LSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLworICAgIC8qKgorICAgICAqIEEgcG9zc2li
bGUgc2V0dGluZyBmb3IgU1VCU1RJVFVURV9IQU5ETElORzoKKyAgICAgKiBSZXR1cm5zIGEgZmFs
bGJhY2sgdmFsdWUgKGUuZy4sIHRoZSBpbnB1dCBjb2RlKSB3aGVuIG5vIGRhdGEgaXMgYXZhaWxh
YmxlLgorICAgICAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgdmFsdWUuCisgICAgICogQHN0YWJsZSBJ
Q1UgNTgKKyAgICAgKi8KKyAgICBVRElTUENUWF9TVUJTVElUVVRFID0gKFVESVNQQ1RYX1RZUEVf
U1VCU1RJVFVURV9IQU5ETElORzw8OCkgKyAwLAorICAgIC8qKgorICAgICAqIEEgcG9zc2libGUg
c2V0dGluZyBmb3IgU1VCU1RJVFVURV9IQU5ETElORzoKKyAgICAgKiBSZXR1cm5zIGEgbnVsbCB2
YWx1ZSB3aGVuIG5vIGRhdGEgaXMgYXZhaWxhYmxlLgorICAgICAqIEBzdGFibGUgSUNVIDU4Cisg
ICAgICovCisgICAgVURJU1BDVFhfTk9fU1VCU1RJVFVURSA9IChVRElTUENUWF9UWVBFX1NVQlNU
SVRVVEVfSEFORExJTkc8PDgpICsgMQorCiB9OwogLyoqCiAqICBAc3RhYmxlIElDVSA1MQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91ZW51bS5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91ZW51bS5oCmluZGV4IDU0MDhlYzVhNjYwNWI3NTQwODU4YjRlZjY3ZTk5OWZlMjJj
NTEyYWEuLmZjNmVmYTI0NTBkYjE3ZDdlNjljYWE2NDUyYzk1NjI1N2E5NzBiYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWVudW0uaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3VlbnVtLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5p
Y29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDov
L3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKICoKQEAgLTYsNyArOCw3IEBACiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgZmls
ZSBuYW1lOiAgdWVudW0uaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6
ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjoy
CiAqCkBAIC0yMSw3ICsyMyw5IEBACiAjaW5jbHVkZSAidW5pY29kZS9sb2NhbHBvaW50ZXIuaCIK
IAogI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCi0jaW5jbHVkZSAidW5pY29kZS9zdHJlbnVtLmgi
CitVX05BTUVTUEFDRV9CRUdJTgorY2xhc3MgU3RyaW5nRW51bWVyYXRpb247CitVX05BTUVTUEFD
RV9FTkQKICNlbmRpZgogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dWZpZWxkcG9zaXRlci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91ZmllbGRwb3NpdGVyLmgK
aW5kZXggNmNjOWZmYWRhNDk2YzMwMThjZWQ3N2U5ZjAxYjM2YjYyMTFhYzYwNy4uM2FlNzNiNmQ4
NDM5NzQ5OTlhNGIzOTFjZGU4NDQ0N2Q5NzBkMWE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91ZmllbGRwb3NpdGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91
ZmllbGRwb3NpdGVyLmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5p
Y29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDov
L3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCi0qIENvcHlyaWdodCAoQykgMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVz
cyBNYWNoaW5lcworKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNp
bmVzcyBNYWNoaW5lcwogKiBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCkBAIC0xMSw3ICsxMyw2
IEBACiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKIAogI2lmICFVQ09ORklHX05PX0ZPUk1B
VFRJTkcKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogCiAjaW5jbHVkZSAidW5pY29kZS9sb2Nh
bHBvaW50ZXIuaCIKIApAQCAtMzcsMTAgKzM4LDEwIEBACiAKIC8qKgogICogT3BhcXVlIFVGaWVs
ZFBvc2l0aW9uSXRlcmF0b3Igb2JqZWN0IGZvciB1c2UgaW4gQy4KLSAqIEBkcmFmdCBJQ1UgNTUK
KyAqIEBzdGFibGUgSUNVIDU1CiAgKi8KIHN0cnVjdCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yOwot
dHlwZWRlZiBzdHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRvciBVRmllbGRQb3NpdGlvbkl0ZXJh
dG9yOyAgLyoqPCBDIHR5cGVkZWYgZm9yIHN0cnVjdCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLiBA
ZHJhZnQgSUNVIDU1ICovCit0eXBlZGVmIHN0cnVjdCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yIFVG
aWVsZFBvc2l0aW9uSXRlcmF0b3I7ICAvKio8IEMgdHlwZWRlZiBmb3Igc3RydWN0IFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IuIEBzdGFibGUgSUNVIDU1ICovCiAKIC8qKgogICogT3BlbiBhIG5ldywg
dW5zZXQgVUZpZWxkUG9zaXRpb25JdGVyYXRvciBvYmplY3QuCkBAIC00OSwxOCArNTAsMTggQEAg
dHlwZWRlZiBzdHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRvciBVRmllbGRQb3NpdGlvbkl0ZXJh
dG9yOyAgLyoqPCBDIHR5cGVkZWYgZm8KICAqIEByZXR1cm4KICAqICAgICAgICAgIEEgcG9pbnRl
ciB0byBhbiBlbXB0eSAodW5zZXQpIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3Igb2JqZWN0LAogICog
ICAgICAgICAgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KLSAqIEBkcmFmdCBJQ1UgNTUK
KyAqIEBzdGFibGUgSUNVIDU1CiAgKi8KLVVfRFJBRlQgVUZpZWxkUG9zaXRpb25JdGVyYXRvciog
VV9FWFBPUlQyCitVX1NUQUJMRSBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBVX0VYUE9SVDIKIHVm
aWVsZHBvc2l0ZXJfb3BlbihVRXJyb3JDb2RlKiBzdGF0dXMpOwogCiAvKioKICAqIENsb3NlIGEg
VUZpZWxkUG9zaXRpb25JdGVyYXRvciBvYmplY3QuIE9uY2UgY2xvc2VkIGl0IG1heSBubyBsb25n
ZXIgYmUgdXNlZC4KICAqIEBwYXJhbSBmcG9zaXRlcgogICogICAgICAgICAgQSBwb2ludGVyIHRv
IHRoZSBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yIG9iamVjdCB0byBjbG9zZS4KLSAqIEBkcmFmdCBJ
Q1UgNTUKKyAqIEBzdGFibGUgSUNVIDU1CiAgKi8KLVVfRFJBRlQgdm9pZCBVX0VYUE9SVDIKK1Vf
U1RBQkxFIHZvaWQgVV9FWFBPUlQyCiB1ZmllbGRwb3NpdGVyX2Nsb3NlKFVGaWVsZFBvc2l0aW9u
SXRlcmF0b3IgKmZwb3NpdGVyKTsKIAogCkBAIC03NSw3ICs3Niw3IEBAIFVfTkFNRVNQQUNFX0JF
R0lOCiAgKgogICogQHNlZSBMb2NhbFBvaW50ZXJCYXNlCiAgKiBAc2VlIExvY2FsUG9pbnRlcgot
ICogQGRyYWZ0IElDVSA1NQorICogQHN0YWJsZSBJQ1UgNTUKICAqLwogVV9ERUZJTkVfTE9DQUxf
T1BFTl9QT0lOVEVSKExvY2FsVUZpZWxkUG9zaXRpb25JdGVyYXRvclBvaW50ZXIsIFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IsIHVmaWVsZHBvc2l0ZXJfY2xvc2UpOwogCkBAIC04NSw4ICs4Niw4IEBA
IFVfTkFNRVNQQUNFX0VORAogCiAvKioKICAqIEdldCBpbmZvcm1hdGlvbiBmb3IgdGhlIG5leHQg
ZmllbGQgaW4gdGhlIGZvcm1hdHRlZCBzdHJpbmcgdG8gd2hpY2ggdGhpcwotICogVUZpZWxkUG9z
aXRpb25JdGVyYXRvciBjdXJyZW50bHkgYXBwbGllcywgb3IgcmV0dXJuIEZBTFNFIGlmIHRoZXJl
IGFyZQotICogbm8gbW9yZSBmaWVsZHMuCisgKiBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yIGN1cnJl
bnRseSBhcHBsaWVzLCBvciByZXR1cm4gYSBuZWdhdGl2ZSB2YWx1ZSBpZiB0aGVyZQorICogYXJl
IG5vIG1vcmUgZmllbGRzLgogICogQHBhcmFtIGZwb3NpdGVyCiAgKiAgICAgICAgICBBIHBvaW50
ZXIgdG8gdGhlIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3Igb2JqZWN0IGNvbnRhaW5pbmcgaXRlcmF0
aW9uCiAgKiAgICAgICAgICBzdGF0ZSBmb3IgdGhlIGZvcm1hdCBmaWVsZHMuCkBAIC0xMDksMTMg
KzExMCwxMiBAQCBVX05BTUVTUEFDRV9FTkQKICAqICAgICAgICAgIGRlc2NyaXB0aW9ucyBvZiBm
b3JtYXQgZnVuY3Rpb25zIHRoYXQgdGFrZSBhIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqCiAgKiAg
ICAgICAgICBwYXJhbWV0ZXIsIHN1Y2ggYXMge0BsaW5rICN1ZGF0X2Zvcm1hdEZvckZpZWxkc30u
CiAgKgotICogQGRyYWZ0IElDVSA1NQorICogQHN0YWJsZSBJQ1UgNTUKICAqLwotVV9EUkFGVCBp
bnQzMl90IFVfRVhQT1JUMgorVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKIHVmaWVsZHBvc2l0
ZXJfbmV4dChVRmllbGRQb3NpdGlvbkl0ZXJhdG9yICpmcG9zaXRlciwKICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90ICpiZWdpbkluZGV4LCBpbnQzMl90ICplbmRJbmRleCk7CiAKLSNlbmRpZiAv
KiBVX0hJREVfRFJBRlRfQVBJICovCiAjZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJ
TkcgKi8KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vmb3Jt
YXR0YWJsZS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Zm9ybWF0dGFibGUuaAppbmRleCBh
NjRhZTE0NjUzYTE5ZDU2YTg2ZTZhMWE0OTY3ZDM1MThiMjEzYTk5Li45YmEyYTM2OTAxYWE4MzU2
YzVkNGQ3NDRlYzAzOGUyYmYxMGNiYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3Vmb3JtYXR0YWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWZvcm1hdHRh
YmxlLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5j
LiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENv
cnBvcmF0aW9uIGFuZCBvdGhlcnMuCkBAIC00OSw3ICs1MSwxMyBAQCB0eXBlZGVmIGVudW0gVUZv
cm1hdHRhYmxlVHlwZSB7CiAgIFVGTVRfQVJSQVksICAgIC8qKjwgdWZtdF9jb3VudEFycmF5KCkg
YW5kIHVmbXRfZ2V0QXJyYXkoKSB3aWxsIHJldHVybiB0aGUgdmFsdWUuICBAc2VlIHVmbXRfZ2V0
QXJyYXlJdGVtQnlJbmRleCAqLwogICBVRk1UX0lOVDY0LCAgICAvKio8IHVmbXRfZ2V0SW50NjQo
KSB3aWxsIHJldHVybiB3aXRob3V0IGNvbnZlcnNpb24uIEBzZWUgdWZtdF9nZXRJbnQ2NCAqLwog
ICBVRk1UX09CSkVDVCwgICAvKio8IHVmbXRfZ2V0T2JqZWN0KCkgd2lsbCByZXR1cm4gd2l0aG91
dCBjb252ZXJzaW9uLiAgQHNlZSB1Zm10X2dldE9iamVjdCovCi0gIFVGTVRfQ09VTlQgICAgIC8q
KjwgQ291bnQgb2YgZGVmaW5lZCBVRm9ybWF0dGFibGVUeXBlIHZhbHVlcyAqLworI2lmbmRlZiBV
X0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBo
aWdoZXN0IG5vcm1hbCBVRm9ybWF0dGFibGVUeXBlIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVk
IElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0
aWNrZXQgIzEyNDIwLgorICAgICAqLworICAgIFVGTVRfQ09VTlQKKyNlbmRpZiAgLyogVV9ISURF
X0RFUFJFQ0FURURfQVBJICovCiB9IFVGb3JtYXR0YWJsZVR5cGU7CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS91Z2VuZGVyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3VnZW5kZXIuaAppbmRleCA4NmUyMjlkZjYxYjI5OGY5NmEwYTFlMmMxMjZmZjQzNzNmZjBkOTY4
Li5kMDE1YTIzMDBjZjZkNmFmMTI5NWU5M2I4NzIwY2Y4NjIwODk4NzliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3VnZW5kZXIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3VnZW5kZXIuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmlj
b2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8v
d3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMsIEludGVybmF0aW9uYWwgQnVz
aW5lc3MgTWFjaGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWlkbmEu
aCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWlkbmEuaAppbmRleCBkZWNlY2UxZmIwZTMwZjkz
M2ExNWNiMmRjNDNmNzUxYmExYjA5MzdiLi4wZGFmYjc2MjAxNzQ0MTJlYmY3NzgzOTNkM2YwNzk3
MTg3ZjU3NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VpZG5hLmgKKysr
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91aWRuYS5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkg
MjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0
ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTYsNyArOCw3IEBACiAgKgogICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKICAqICAgZmlsZSBuYW1lOiAgdWlkbmEuaAotICogICBlbmNvZGluZzog
ICBVUy1BU0NJSQorICogICBlbmNvZGluZzogICBVVEYtOAogICogICB0YWIgc2l6ZTogICA4IChu
b3QgdXNlZCkKICAqICAgaW5kZW50YXRpb246NAogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdWl0ZXIuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWl0ZXIuaAppbmRl
eCAwY2RiOGZmYmU1YzgxNTRhYzlkOTA4ZjYwNWIwZWIxNmVhNWJiMTk5Li4xMWFkNzVhY2Q1MTVj
NmUxMDZiMzRkN2M4MDAzZmU3NDdjZmMyYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3VpdGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91aXRlci5oCkBAIC0x
LDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVy
cy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29w
eXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC02LDcgKzgsNyBA
QAogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIHVpdGVyLmgKLSog
ICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNp
emU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246NAogKgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9pY3UvdW5pY29kZS91bGRuYW1lcy5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91
bGRuYW1lcy5oCmluZGV4IGIwYTJiYjBmYzg5ZmZiNmM5ZTU0YzMzM2NlYzJhMmMyOWY1ZTg4MmMu
LjNlYmZmYTIzZGI1ZjEyMWU5YmQ3YjE4MzYyNWIxNDJiMGUyODdlN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxkbmFtZXMuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3VsZG5hbWVzLmgKQEAgLTEsNyArMSw5IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5p
Y29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDov
L3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKLSogICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgKiAKLSogICBvdGhlcnMuICBBbGwgUmlnaHRz
IFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoK
KyogICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNo
aW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyogICBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgog
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgogKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91bGlzdGZvcm1hdHRlci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bGlzdGZv
cm1hdHRlci5oCmluZGV4IDFjNmNiMmQ3YjEyMzk1NDAyY2IyMWQ2MjY5YmY0NDQ0OWY1YmRlYjku
LjlmZTI0ZjdjN2I1ZWZjYmRhODEyZDYyOTUzMmM4NmVkZGFiNTM1MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxpc3Rmb3JtYXR0ZXIuaAorKysgYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3VsaXN0Zm9ybWF0dGVyLmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFu
ZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9m
IHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCi0qIENvcHlyaWdodCAoQykgMjAxNSwgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiwgSW50ZXJu
YXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCkBA
IC0xMSw3ICsxMyw2IEBACiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKIAogI2lmICFVQ09O
RklHX05PX0ZPUk1BVFRJTkcKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogCiAjaW5jbHVkZSAi
dW5pY29kZS9sb2NhbHBvaW50ZXIuaCIKIApAQCAtMjcsMTAgKzI4LDEwIEBACiAKIC8qKgogICog
T3BhcXVlIFVMaXN0Rm9ybWF0dGVyIG9iamVjdCBmb3IgdXNlIGluIEMKLSAqIEBkcmFmdCBJQ1Ug
NTUKKyAqIEBzdGFibGUgSUNVIDU1CiAgKi8KIHN0cnVjdCBVTGlzdEZvcm1hdHRlcjsKLXR5cGVk
ZWYgc3RydWN0IFVMaXN0Rm9ybWF0dGVyIFVMaXN0Rm9ybWF0dGVyOyAgLyoqPCBDIHR5cGVkZWYg
Zm9yIHN0cnVjdCBVTGlzdEZvcm1hdHRlci4gQGRyYWZ0IElDVSA1NSAqLwordHlwZWRlZiBzdHJ1
Y3QgVUxpc3RGb3JtYXR0ZXIgVUxpc3RGb3JtYXR0ZXI7ICAvKio8IEMgdHlwZWRlZiBmb3Igc3Ry
dWN0IFVMaXN0Rm9ybWF0dGVyLiBAc3RhYmxlIElDVSA1NSAqLwogCiAvKioKICAqIE9wZW4gYSBu
ZXcgVUxpc3RGb3JtYXR0ZXIgb2JqZWN0IHVzaW5nIHRoZSBydWxlcyBmb3IgYSBnaXZlbiBsb2Nh
bGUuCkBAIC00Niw5ICs0Nyw5IEBAIHR5cGVkZWYgc3RydWN0IFVMaXN0Rm9ybWF0dGVyIFVMaXN0
Rm9ybWF0dGVyOyAgLyoqPCBDIHR5cGVkZWYgZm9yIHN0cnVjdCBVTGlzdEZvCiAgKiBAcmV0dXJu
CiAgKiAgICAgICAgICAgIEEgcG9pbnRlciB0byBhIFVMaXN0Rm9ybWF0dGVyIG9iamVjdCBmb3Ig
dGhlIHNwZWNpZmllZCBsb2NhbGUsCiAgKiAgICAgICAgICAgIG9yIE5VTEwgaWYgYW4gZXJyb3Ig
b2NjdXJyZWQuCi0gKiBAZHJhZnQgSUNVIDU1CisgKiBAc3RhYmxlIElDVSA1NQogICovCi1VX0RS
QUZUIFVMaXN0Rm9ybWF0dGVyKiBVX0VYUE9SVDIKK1VfQ0FQSSBVTGlzdEZvcm1hdHRlciogVV9F
WFBPUlQyCiB1bGlzdGZtdF9vcGVuKGNvbnN0IGNoYXIqICBsb2NhbGUsCiAgICAgICAgICAgICAg
IFVFcnJvckNvZGUqICBzdGF0dXMpOwogCkBAIC01Niw5ICs1Nyw5IEBAIHVsaXN0Zm10X29wZW4o
Y29uc3QgY2hhciogIGxvY2FsZSwKICAqIENsb3NlIGEgVUxpc3RGb3JtYXR0ZXIgb2JqZWN0LiBP
bmNlIGNsb3NlZCBpdCBtYXkgbm8gbG9uZ2VyIGJlIHVzZWQuCiAgKiBAcGFyYW0gbGlzdGZtdAog
ICogICAgICAgICAgICBUaGUgVUxpc3RGb3JtYXR0ZXIgb2JqZWN0IHRvIGNsb3NlLgotICogQGRy
YWZ0IElDVSA1NQorICogQHN0YWJsZSBJQ1UgNTUKICAqLwotVV9EUkFGVCB2b2lkIFVfRVhQT1JU
MgorVV9DQVBJIHZvaWQgVV9FWFBPUlQyCiB1bGlzdGZtdF9jbG9zZShVTGlzdEZvcm1hdHRlciAq
bGlzdGZtdCk7CiAKIApAQCAtNzMsNyArNzQsNyBAQCBVX05BTUVTUEFDRV9CRUdJTgogICoKICAq
IEBzZWUgTG9jYWxQb2ludGVyQmFzZQogICogQHNlZSBMb2NhbFBvaW50ZXIKLSAqIEBkcmFmdCBJ
Q1UgNTUKKyAqIEBzdGFibGUgSUNVIDU1CiAgKi8KIFVfREVGSU5FX0xPQ0FMX09QRU5fUE9JTlRF
UihMb2NhbFVMaXN0Rm9ybWF0dGVyUG9pbnRlciwgVUxpc3RGb3JtYXR0ZXIsIHVsaXN0Zm10X2Ns
b3NlKTsKIApAQCAtMTEzLDkgKzExNCw5IEBAIFVfTkFNRVNQQUNFX0VORAogICogICAgICAgICAg
ICBUaGUgdG90YWwgYnVmZmVyIHNpemUgbmVlZGVkOyBpZiBncmVhdGVyIHRoYW4gcmVzdWx0TGVu
Z3RoLCB0aGUKICAqICAgICAgICAgICAgb3V0cHV0IHdhcyB0cnVuY2F0ZWQuIE1heSBiZSA8PTAg
aWYgdW5hYmxlIHRvIGRldGVybWluZSB0aGUKICAqICAgICAgICAgICAgdG90YWwgYnVmZmVyIHNp
emUgbmVlZGVkIChlLmcuIGZvciBpbGxlZ2FsIGFyZ3VtZW50cykuCi0gKiBAZHJhZnQgSUNVIDU1
CisgKiBAc3RhYmxlIElDVSA1NQogICovCi1VX0RSQUZUIGludDMyX3QgVV9FWFBPUlQyCitVX0NB
UEkgaW50MzJfdCBVX0VYUE9SVDIKIHVsaXN0Zm10X2Zvcm1hdChjb25zdCBVTGlzdEZvcm1hdHRl
ciogbGlzdGZtdCwKICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogY29uc3Qgc3RyaW5nc1td
LAogICAgICAgICAgICAgICAgIGNvbnN0IGludDMyX3QgKiAgICBzdHJpbmdMZW5ndGhzLApAQCAt
MTI0LDcgKzEyNSw2IEBAIHVsaXN0Zm10X2Zvcm1hdChjb25zdCBVTGlzdEZvcm1hdHRlciogbGlz
dGZtdCwKICAgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICAgcmVzdWx0Q2FwYWNpdHks
CiAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogICAgICAgIHN0YXR1cyk7CiAKLSNlbmRpZiAv
KiBVX0hJREVfRFJBRlRfQVBJICovCiAjZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJ
TkcgKi8KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vsb2Mu
aCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxvYy5oCmluZGV4IGMzMDVjOGI3OGM4YTg1M2I5
MzhkNjVkMTZhMWUxMjk2ZGI3NzM3YmIuLjIzYTU0YTk5ODFjYTk2MTlmYTA1NjAyNDUwMDhhYjBh
YTE1NzIyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxvYy5oCisrKyBi
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxvYy5oCkBAIC0xLDYgKzEsOCBAQAorLy8gwqkgMjAx
NiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJt
cyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCi0qICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTQsIEludGVybmF0aW9uYWwgQnVz
aW5lc3MgTWFjaGluZXMKKyogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiwgSW50ZXJuYXRpb25h
bCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmln
aHRzIFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtNTksNyArNjEsNyBAQAogICogaHR0
cDovL3d3dy5pY3MudWNpLmVkdS9wdWIvaWV0Zi9odHRwL3JlbGF0ZWQvaXNvNjM5LnR4dDwvYT4K
ICAqCiAgKiA8UD4KLSAqIFRoZSBzZWNvbmQgb3B0aW9uIGluY2x1ZGVzIGFuIGFkZGl0b25hbCA8
U1RST05HPklTTyBDb3VudHJ5CisgKiBUaGUgc2Vjb25kIG9wdGlvbiBpbmNsdWRlcyBhbiBhZGRp
dGlvbmFsIDxTVFJPTkc+SVNPIENvdW50cnkKICAqIENvZGUuPC9TVFJPTkc+IFRoZXNlIGNvZGVz
IGFyZSB0aGUgdXBwZXItY2FzZSB0d28tbGV0dGVyIGNvZGVzCiAgKiBhcyBkZWZpbmVkIGJ5IElT
Ty0zMTY2LgogICogWW91IGNhbiBmaW5kIGEgZnVsbCBsaXN0IG9mIHRoZXNlIGNvZGVzIGF0IGEg
bnVtYmVyIG9mIHNpdGVzLCBzdWNoIGFzOgpAQCAtNjcsNyArNjksNyBAQAogICogaHR0cDovL3d3
dy5jaGVtaWUuZnUtYmVybGluLmRlL2RpdmVyc2UvZG9jL0lTT18zMTY2Lmh0bWw8L2E+CiAgKgog
ICogPFA+Ci0gKiBUaGUgdGhpcmQgb3B0aW9uIHJlcXVpcmVzIGFub3RoZXIgYWRkaXRvbmFsIGlu
Zm9ybWF0aW9uLS10aGUgCisgKiBUaGUgdGhpcmQgb3B0aW9uIHJlcXVpcmVzIGFub3RoZXIgYWRk
aXRpb25hbCBpbmZvcm1hdGlvbi0tdGhlIAogICogPFNUUk9ORz5WYXJpYW50LjwvU1RST05HPgog
ICogVGhlIFZhcmlhbnQgY29kZXMgYXJlIHZlbmRvciBhbmQgYnJvd3Nlci1zcGVjaWZpYy4KICAq
IEZvciBleGFtcGxlLCB1c2UgV0lOIGZvciBXaW5kb3dzLCBNQUMgZm9yIE1hY2ludG9zaCwgYW5k
IFBPU0lYIGZvciBQT1NJWC4KQEAgLTE1NSw3ICsxNTcsNyBAQAogICogPFNUUk9ORz5qdXN0PC9T
VFJPTkc+IGEgbWVjaGFuaXNtIGZvciBpZGVudGlmeWluZyB0aGVzZSBzZXJ2aWNlcy4KICAqCiAg
KiA8UD4KLSAqIEVhY2ggaW50ZXJuYXRpb25hbCBzZXJpdmNlIHRoYXQgcGVyZm9ybXMgbG9jYWxl
LXNlbnNpdGl2ZSBvcGVyYXRpb25zIAorICogRWFjaCBpbnRlcm5hdGlvbmFsIHNlcnZpY2UgdGhh
dCBwZXJmb3JtcyBsb2NhbGUtc2Vuc2l0aXZlIG9wZXJhdGlvbnMgCiAgKiBhbGxvd3MgeW91CiAg
KiB0byBnZXQgYWxsIHRoZSBhdmFpbGFibGUgb2JqZWN0cyBvZiB0aGF0IHR5cGUuIFlvdSBjYW4g
c2lmdAogICogdGhyb3VnaCB0aGVzZSBvYmplY3RzIGJ5IGxhbmd1YWdlLCBjb3VudHJ5LCBvciB2
YXJpYW50LApAQCAtMzQ4LDEwICszNTAsMTQgQEAgdHlwZWRlZiBlbnVtIHsKICAgICogIEBkZXBy
ZWNhdGVkIElDVSAyLjggCiAgICAqLwogICBVTE9DX1JFUVVFU1RFRF9MT0NBTEUgPSAyLAotI2Vu
ZGlmIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogCi0gIFVMT0NfREFUQV9MT0NBTEVfVFlQ
RV9MSU1JVCA9IDMKLX0gVUxvY0RhdGFMb2NhbGVUeXBlIDsKKyAgICAvKioKKyAgICAgKiBPbmUg
bW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVTG9jRGF0YUxvY2FsZVR5cGUgdmFsdWUuCisg
ICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3Zl
ciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCisgICAgVUxPQ19EQVRBX0xP
Q0FMRV9UWVBFX0xJTUlUID0gMworI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKK30g
VUxvY0RhdGFMb2NhbGVUeXBlOwogCiAjaWZuZGVmIFVfSElERV9TWVNURU1fQVBJCiAvKioKQEAg
LTUzMyw2ICs1MzksOSBAQCB1bG9jX2dldElTTzNDb3VudHJ5KGNvbnN0IGNoYXIqIGxvY2FsZUlE
KTsKICAqIEdldHMgdGhlIFdpbjMyIExDSUQgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxl
LgogICogSWYgdGhlIElDVSBsb2NhbGUgaXMgbm90IHJlY29nbml6ZWQgYnkgV2luZG93cywgMCB3
aWxsIGJlIHJldHVybmVkLgogICoKKyAqIExDSURzIHdlcmUgZGVwcmVjYXRlZCB3aXRoIFdpbmRv
d3MgVmlzdGEgYW5kIE1pY3Jvc29mdCByZWNvbW1lbmRzCisgKiB0aGF0IGRldmVsb3BlcnMgdXNl
IEJDUDQ3IHN0eWxlIHRhZ3MgaW5zdGVhZCAodWxvY190b0xhbmd1YWdlVGFnKS4KKyAqCiAgKiBA
cGFyYW0gbG9jYWxlSUQgdGhlIGxvY2FsZSB0byBnZXQgdGhlIFdpbjMyIExDSUQgdmFsdWUgd2l0
aAogICogQHJldHVybiBjb3VudHJ5IHRoZSBXaW4zMiBMQ0lEIGZvciBsb2NhbGVJRAogICogQHN0
YWJsZSBJQ1UgMi4wCkBAIC01NzEsNyArNTgwLDcgQEAgdWxvY19nZXREaXNwbGF5TGFuZ3VhZ2Uo
Y29uc3QgY2hhciogbG9jYWxlLAogICogICAgICAgICAgICAgICAgIGlmIHRoZSBsb2NhbGUncyBs
YW5ndWFnZSBjb2RlIGlzICJlbiIsIHBhc3NpbmcgTG9jYWxlOjpnZXRGcmVuY2goKSBmb3IKICAq
ICAgICAgICAgICAgICAgICBpbkxvY2FsZSB3b3VsZCByZXN1bHQgaW4gIiIsIHdoaWxlIHBhc3Np
bmcgTG9jYWxlOjpnZXRHZXJtYW4oKQogICogICAgICAgICAgICAgICAgIGZvciBpbkxvY2FsZSB3
b3VsZCByZXN1bHQgaW4gIiIuIE5VTEwgbWF5IGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgZGVmYXVs
dC4KLSAqIEBwYXJhbSBzY3JpcHQgdGhlIGRpc3BsYXlhYmxlIGNvdW50cnkgY29kZSBmb3IgbG9j
YWxlSUQKKyAqIEBwYXJhbSBzY3JpcHQgdGhlIGRpc3BsYXlhYmxlIHNjcmlwdCBmb3IgdGhlIGxv
Y2FsZUlECiAgKiBAcGFyYW0gc2NyaXB0Q2FwYWNpdHkgdGhlIHNpemUgb2YgdGhlIHNjcmlwdCBi
dWZmZXIgdG8gc3RvcmUgdGhlICAKICAqIGRpc3BsYXlhYmxlIHNjcmlwdCBjb2RlIHdpdGgKICAq
IEBwYXJhbSBzdGF0dXMgZXJyb3IgaW5mb3JtYXRpb24gaWYgcmV0cmlldmluZyB0aGUgZGlzcGxh
eWFibGUgc2NyaXB0IGNvZGUgZmFpbGVkCkBAIC01ODgsNiArNTk3LDggQEAgdWxvY19nZXREaXNw
bGF5U2NyaXB0KGNvbnN0IGNoYXIqIGxvY2FsZSwKIAogLyoqCiAgKiBHZXRzIHRoZSBjb3VudHJ5
IG5hbWUgc3VpdGFibGUgZm9yIGRpc3BsYXkgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlLgorICog
V2FybmluZzogdGhpcyBpcyBmb3IgdGhlIHJlZ2lvbiBwYXJ0IG9mIGEgdmFsaWQgbG9jYWxlIElE
OyBpdCBjYW5ub3QganVzdCBiZSB0aGUgcmVnaW9uIGNvZGUgKGxpa2UgIkZSIikuCisgKiBUbyBn
ZXQgdGhlIGRpc3BsYXkgbmFtZSBmb3IgYSByZWdpb24gYWxvbmUsIG9yIGZvciBvdGhlciBvcHRp
b25zLCB1c2UgVUxvY2FsZURpc3BsYXlOYW1lcyBpbnN0ZWFkLgogICoKICAqIEBwYXJhbSBsb2Nh
bGUgdGhlIGxvY2FsZSB0byBnZXQgdGhlIGRpc3BsYXlhYmxlIGNvdW50cnkgY29kZSB3aXRoLiBO
VUxMIG1heSBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGRlZmF1bHQuCiAgKiBAcGFyYW0gZGlzcGxh
eUxvY2FsZSBTcGVjaWZpZXMgdGhlIGxvY2FsZSB0byBiZSB1c2VkIHRvIGRpc3BsYXkgdGhlIG5h
bWUuICBJbiBvdGhlciB3b3JkcywKQEAgLTg0NCwxMCArODU1LDEyIEBAIHVsb2Nfb3BlbktleXdv
cmRzKGNvbnN0IGNoYXIqIGxvY2FsZUlELAogICogR2V0IHRoZSB2YWx1ZSBmb3IgYSBrZXl3b3Jk
LiBMb2NhbGUgbmFtZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQuCiAgKiAKICAqIEBw
YXJhbSBsb2NhbGVJRCBsb2NhbGUgbmFtZSBjb250YWluaW5nIHRoZSBrZXl3b3JkICgiZGVfREVA
Y3VycmVuY3k9RVVSTztjb2xsYXRpb249UEhPTkVCT09LIikKLSAqIEBwYXJhbSBrZXl3b3JkTmFt
ZSBuYW1lIG9mIHRoZSBrZXl3b3JkIGZvciB3aGljaCB3ZSB3YW50IHRoZSB2YWx1ZS4gQ2FzZSBp
bnNlbnNpdGl2ZS4KKyAqIEBwYXJhbSBrZXl3b3JkTmFtZSBuYW1lIG9mIHRoZSBrZXl3b3JkIGZv
ciB3aGljaCB3ZSB3YW50IHRoZSB2YWx1ZTsgbXVzdCBub3QgYmUKKyAqICBOVUxMIG9yIGVtcHR5
LCBhbmQgbXVzdCBjb25zaXN0IG9ubHkgb2YgW0EtWmEtejAtOV0uIENhc2UgaW5zZW5zaXRpdmUu
CiAgKiBAcGFyYW0gYnVmZmVyIHJlY2VpdmluZyBidWZmZXIKICAqIEBwYXJhbSBidWZmZXJDYXBh
Y2l0eSBjYXBhY2l0eSBvZiByZWNlaXZpbmcgYnVmZmVyCi0gKiBAcGFyYW0gc3RhdHVzIGNvbnRh
aW5pbmcgZXJyb3IgY29kZSAtIGJ1ZmZlciBub3QgYmlnIGVub3VnaC4KKyAqIEBwYXJhbSBzdGF0
dXMgY29udGFpbmluZyBlcnJvciBjb2RlOiBlLmcuIGJ1ZmZlciBub3QgYmlnIGVub3VnaCBvciBp
bGwtZm9ybWVkIGxvY2FsZUlECisgKiAgb3Iga2V5d29yZE5hbWUgcGFyYW1ldGVycy4KICAqIEBy
ZXR1cm4gdGhlIGxlbmd0aCBvZiBrZXl3b3JkIHZhbHVlCiAgKiBAc3RhYmxlIElDVSAyLjgKICAq
LwpAQCAtODY0LDE4ICs4NzcsMjYgQEAgdWxvY19nZXRLZXl3b3JkVmFsdWUoY29uc3QgY2hhciog
bG9jYWxlSUQsCiAgKiBGb3IgcmVtb3ZpbmcgYWxsIGtleXdvcmRzLCB1c2UgdWxvY19nZXRCYXNl
TmFtZSgpLgogICoKICAqIE5PVEU6IFVubGlrZSBhbG1vc3QgZXZlcnkgb3RoZXIgSUNVIGZ1bmN0
aW9uIHdoaWNoIHRha2VzIGEKLSAqIGJ1ZmZlciwgdGhpcyBmdW5jdGlvbiB3aWxsIE5PVCB0cnVu
Y2F0ZSB0aGUgb3V0cHV0IHRleHQuIElmIGEKLSAqIEJVRkZFUl9PVkVSRkxPV19FUlJPUiBpcyBy
ZWNlaXZlZCwgaXQgbWVhbnMgdGhhdCB0aGUgb3JpZ2luYWwKLSAqIGJ1ZmZlciBpcyB1bnRvdWNo
ZWQuIFRoaXMgaXMgZG9uZSB0byBwcmV2ZW50IGluY29ycmVjdCBvciBwb3NzaWJseQotICogZXZl
biBtYWxmb3JtZWQgbG9jYWxlcyBmcm9tIGJlaW5nIGdlbmVyYXRlZCBhbmQgdXNlZC4KKyAqIGJ1
ZmZlciwgdGhpcyBmdW5jdGlvbiB3aWxsIE5PVCB0cnVuY2F0ZSB0aGUgb3V0cHV0IHRleHQsIGFu
ZCB3aWxsCisgKiBub3QgdXBkYXRlIHRoZSBidWZmZXIgd2l0aCB1bnRlcm1pbmF0ZWQgdGV4dCBz
ZXR0aW5nIGEgc3RhdHVzIG9mCisgKiBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HLiBJ
ZiBhIEJVRkZFUl9PVkVSRkxPV19FUlJPUiBpcyByZWNlaXZlZCwKKyAqIGl0IG1lYW5zIGEgdGVy
bWluYXRlZCB2ZXJzaW9uIG9mIHRoZSB1cGRhdGVkIGxvY2FsZSBJRCB3b3VsZCBub3QgZml0Cisg
KiBpbiB0aGUgYnVmZmVyLCBhbmQgdGhlIG9yaWdpbmFsIGJ1ZmZlciBpcyB1bnRvdWNoZWQuIFRo
aXMgaXMgZG9uZSB0bworICogcHJldmVudCBpbmNvcnJlY3Qgb3IgcG9zc2libHkgZXZlbiBtYWxm
b3JtZWQgbG9jYWxlcyBmcm9tIGJlaW5nIGdlbmVyYXRlZAorICogYW5kIHVzZWQuCiAgKgotICog
QHBhcmFtIGtleXdvcmROYW1lIG5hbWUgb2YgdGhlIGtleXdvcmQgdG8gYmUgc2V0LiBDYXNlIGlu
c2Vuc2l0aXZlLgorICogQHBhcmFtIGtleXdvcmROYW1lIG5hbWUgb2YgdGhlIGtleXdvcmQgdG8g
YmUgc2V0OyBtdXN0IG5vdCBiZQorICogIE5VTEwgb3IgZW1wdHksIGFuZCBtdXN0IGNvbnNpc3Qg
b25seSBvZiBbQS1aYS16MC05XS4gQ2FzZSBpbnNlbnNpdGl2ZS4KICAqIEBwYXJhbSBrZXl3b3Jk
VmFsdWUgdmFsdWUgb2YgdGhlIGtleXdvcmQgdG8gYmUgc2V0LiBJZiAwLWxlbmd0aCBvcgotICog
IE5VTEwsIHdpbGwgcmVzdWx0IGluIHRoZSBrZXl3b3JkIGJlaW5nIHJlbW92ZWQuIE5vIGVycm9y
IGlzIGdpdmVuIGlmIAotICogIHRoYXQga2V5d29yZCBkb2VzIG5vdCBleGlzdC4KLSAqIEBwYXJh
bSBidWZmZXIgaW5wdXQgYnVmZmVyIGNvbnRhaW5pbmcgbG9jYWxlIHRvIGJlIG1vZGlmaWVkLgor
ICogIE5VTEwsIHdpbGwgcmVzdWx0IGluIHRoZSBrZXl3b3JkIGJlaW5nIHJlbW92ZWQ7IG5vIGVy
cm9yIGlzIGdpdmVuIGlmIAorICogIHRoYXQga2V5d29yZCBkb2VzIG5vdCBleGlzdC4gT3RoZXJ3
aXNlLCBtdXN0IGNvbnNpc3Qgb25seSBvZgorICogIFtBLVphLXowLTldIGFuZCBbL18rLV0uCisg
KiBAcGFyYW0gYnVmZmVyIGlucHV0IGJ1ZmZlciBjb250YWluaW5nIHdlbGwtZm9ybWVkIGxvY2Fs
ZSBJRCB0byBiZQorICogIG1vZGlmaWVkLgogICogQHBhcmFtIGJ1ZmZlckNhcGFjaXR5IGNhcGFj
aXR5IG9mIHJlY2VpdmluZyBidWZmZXIKLSAqIEBwYXJhbSBzdGF0dXMgY29udGFpbmluZyBlcnJv
ciBjb2RlIC0gYnVmZmVyIG5vdCBiaWcgZW5vdWdoLgorICogQHBhcmFtIHN0YXR1cyBjb250YWlu
aW5nIGVycm9yIGNvZGU6IGUuZy4gYnVmZmVyIG5vdCBiaWcgZW5vdWdoCisgKiAgb3IgaWxsLWZv
cm1lZCBrZXl3b3JkTmFtZSBvciBrZXl3b3JkVmFsdWUgcGFyYW1ldGVycywgb3IgaWxsLWZvcm1l
ZAorICogIGxvY2FsZSBJRCBpbiBidWZmZXIgb24gaW5wdXQuCiAgKiBAcmV0dXJuIHRoZSBsZW5n
dGggbmVlZGVkIGZvciB0aGUgYnVmZmVyCiAgKiBAc2VlIHVsb2NfZ2V0S2V5d29yZFZhbHVlCiAg
KiBAc3RhYmxlIElDVSAzLjIKQEAgLTg4Niw3ICs5MDcsNiBAQCB1bG9jX3NldEtleXdvcmRWYWx1
ZShjb25zdCBjaGFyKiBrZXl3b3JkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGJ1
ZmZlciwgaW50MzJfdCBidWZmZXJDYXBhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUqIHN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogLyoqCiAgKiBSZXR1
cm5zIHdoZXRoZXIgdGhlIGxvY2FsZSdzIHNjcmlwdCBpcyB3cml0dGVuIHJpZ2h0LXRvLWxlZnQu
CiAgKiBJZiB0aGVyZSBpcyBubyBzY3JpcHQgc3VidGFnLCB0aGVuIHRoZSBsaWtlbHkgc2NyaXB0
IGlzIHVzZWQsIHNlZSB1bG9jX2FkZExpa2VseVN1YnRhZ3MoKS4KQEAgLTg5OSwxMSArOTE5LDEw
IEBAIHVsb2Nfc2V0S2V5d29yZFZhbHVlKGNvbnN0IGNoYXIqIGtleXdvcmROYW1lLAogICoKICAq
IEBwYXJhbSBsb2NhbGUgaW5wdXQgbG9jYWxlIElECiAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGxv
Y2FsZSdzIHNjcmlwdCBpcyB3cml0dGVuIHJpZ2h0LXRvLWxlZnQKLSAqIEBkcmFmdCBJQ1UgNTQK
KyAqIEBzdGFibGUgSUNVIDU0CiAgKi8KLVVfRFJBRlQgVUJvb2wgVV9FWFBPUlQyCitVX1NUQUJM
RSBVQm9vbCBVX0VYUE9SVDIKIHVsb2NfaXNSaWdodFRvTGVmdChjb25zdCBjaGFyICpsb2NhbGUp
OwotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAKIC8qKgogICogZW51bXMgZm9yIHRo
ZSAgcmV0dXJuIHZhbHVlIGZvciB0aGUgY2hhcmFjdGVyIGFuZCBsaW5lIG9yaWVudGF0aW9uCkBA
IC0xMTUxLDcgKzExNzAsNiBAQCB1bG9jX3RvTGFuZ3VhZ2VUYWcoY29uc3QgY2hhciogbG9jYWxl
SUQsCiAgICAgICAgICAgICAgICAgICAgVUJvb2wgc3RyaWN0LAogICAgICAgICAgICAgICAgICAg
IFVFcnJvckNvZGUqIGVycik7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogLyoqCiAgKiBD
b252ZXJ0cyB0aGUgc3BlY2lmaWVkIGtleXdvcmQgKGxlZ2FjeSBrZXksIG9yIEJDUCA0NyBVbmlj
b2RlIGxvY2FsZQogICogZXh0ZW5zaW9uIGtleSkgdG8gdGhlIGVxdWl2YWxlbnQgQkNQIDQ3IFVu
aWNvZGUgbG9jYWxlIGV4dGVuc2lvbiBrZXkuCkBAIC0xMTcxLDkgKzExODksOSBAQCB1bG9jX3Rv
TGFuZ3VhZ2VUYWcoY29uc3QgY2hhciogbG9jYWxlSUQsCiAgKiAgICAgICAgICAgICAgICAgICAg
ICBtYXBwZWQgdG8gYSB3ZWxsLWZvcm1lZCBCQ1AgNDcgVW5pY29kZSBsb2NhbGUgZXh0ZW5zaW9u
CiAgKiAgICAgICAgICAgICAgICAgICAgICBrZXkuIAogICogQHNlZSB1bG9jX3RvTGVnYWN5S2V5
Ci0gKiBAZHJhZnQgSUNVIDU0CisgKiBAc3RhYmxlIElDVSA1NAogICovCi1VX0RSQUZUIGNvbnN0
IGNoYXIqIFVfRVhQT1JUMgorVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCiB1bG9jX3Rv
VW5pY29kZUxvY2FsZUtleShjb25zdCBjaGFyKiBrZXl3b3JkKTsKIAogLyoqCkBAIC0xMjAyLDkg
KzEyMjAsOSBAQCB1bG9jX3RvVW5pY29kZUxvY2FsZUtleShjb25zdCBjaGFyKiBrZXl3b3JkKTsK
ICAqICAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhlIGxvY2FsZSBrZXl3b3JkIHZh
bHVlIGNhbm5vdCBiZSBtYXBwZWQgdG8KICAqICAgICAgICAgICAgICAgICAgICAgIGEgd2VsbC1m
b3JtZWQgQkNQIDQ3IFVuaWNvZGUgbG9jYWxlIGV4dGVuc2lvbiB0eXBlLgogICogQHNlZSB1bG9j
X3RvTGVnYWN5VHlwZQotICogQGRyYWZ0IElDVSA1NAorICogQHN0YWJsZSBJQ1UgNTQKICAqLwot
VV9EUkFGVCBjb25zdCBjaGFyKiBVX0VYUE9SVDIKK1VfU1RBQkxFIGNvbnN0IGNoYXIqIFVfRVhQ
T1JUMgogdWxvY190b1VuaWNvZGVMb2NhbGVUeXBlKGNvbnN0IGNoYXIqIGtleXdvcmQsIGNvbnN0
IGNoYXIqIHZhbHVlKTsKIAogLyoqCkBAIC0xMjE3LDkgKzEyMzUsOSBAQCB1bG9jX3RvVW5pY29k
ZUxvY2FsZVR5cGUoY29uc3QgY2hhcioga2V5d29yZCwgY29uc3QgY2hhciogdmFsdWUpOwogICog
QHJldHVybiAgICAgICAgICAgICAgdGhlIHdlbGwtZm9ybWVkIGxlZ2FjeSBrZXksIG9yIE5VTEwg
aWYgdGhlIHNwZWNpZmllZAogICogICAgICAgICAgICAgICAgICAgICAga2V5d29yZCBjYW5ub3Qg
YmUgbWFwcGVkIHRvIGEgd2VsbC1mb3JtZWQgbGVnYWN5IGtleS4KICAqIEBzZWUgdG9Vbmljb2Rl
TG9jYWxlS2V5Ci0gKiBAZHJhZnQgSUNVIDU0CisgKiBAc3RhYmxlIElDVSA1NAogICovCi1VX0RS
QUZUIGNvbnN0IGNoYXIqIFVfRVhQT1JUMgorVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQy
CiB1bG9jX3RvTGVnYWN5S2V5KGNvbnN0IGNoYXIqIGtleXdvcmQpOwogCiAvKioKQEAgLTEyNDYs
MTEgKzEyNjQsOSBAQCB1bG9jX3RvTGVnYWN5S2V5KGNvbnN0IGNoYXIqIGtleXdvcmQpOwogICog
ICAgICAgICAgICAgICAgICAgICAga2V5d29yZCB2YWx1ZSBjYW5ub3QgYmUgbWFwcGVkIHRvIGEg
d2VsbC1mb3JtZWQgbGVnYWN5CiAgKiAgICAgICAgICAgICAgICAgICAgICB0eXBlLgogICogQHNl
ZSB0b1VuaWNvZGVMb2NhbGVUeXBlCi0gKiBAZHJhZnQgSUNVIDU0CisgKiBAc3RhYmxlIElDVSA1
NAogICovCi1VX0RSQUZUIGNvbnN0IGNoYXIqIFVfRVhQT1JUMgorVV9TVEFCTEUgY29uc3QgY2hh
ciogVV9FWFBPUlQyCiB1bG9jX3RvTGVnYWN5VHlwZShjb25zdCBjaGFyKiBrZXl3b3JkLCBjb25z
dCBjaGFyKiB2YWx1ZSk7CiAKLSNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLwotCiAjZW5k
aWYgLypfVUxPQyovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vsb2NkYXRh
LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vsb2NkYXRhLmgKaW5kZXggNjM0OTVmNjgxY2Vl
NGExZmRmN2QzMWZlNGJiYmQzMjczZTI2MmQyZC4uZGU4ZDg1MzljNjc0OWFjY2Q1MDUzN2JmNjlm
MWVkM2ZiMTI2ODVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bG9jZGF0
YS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWxvY2RhdGEuaApAQCAtMSwzICsxLDUg
QEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBM
aWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5o
dG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKQEAg
LTYsNyArOCw3IEBACiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgogKiAgIGZpbGUgbmFtZTogIHVsb2NkYXRhLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQor
KiAgIGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAg
aW5kZW50YXRpb246NAogKgpAQCAtNDcsOCArNDksMTMgQEAgdHlwZWRlZiBlbnVtIFVMb2NhbGVE
YXRhRXhlbXBsYXJTZXRUeXBlICB7CiAgICAgVUxPQ0RBVEFfRVNfSU5ERVg9MiwKICAgICAvKiog
UHVuY3R1YXRpb24gc2V0IEBzdGFibGUgSUNVIDUxICovCiAgICAgVUxPQ0RBVEFfRVNfUFVOQ1RV
QVRJT049MywKLSAgICAvKiogT25lIGhpZ2hlciB0aGFuIHRoZSBsYXN0IHZhbGlkIHR5cGUgQHN0
YWJsZSBJQ1UgMy40ICovCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgor
ICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVMb2NhbGVEYXRhRXhlbXBs
YXJTZXRUeXBlIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2
YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAq
LwogICAgIFVMT0NEQVRBX0VTX0NPVU5UPTQKKyNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FURURf
QVBJICovCiB9IFVMb2NhbGVEYXRhRXhlbXBsYXJTZXRUeXBlOwogCiAvKiogVGhlIHBvc3NpYmxl
IHR5cGVzIG9mIGRlbGltaXRlcnMuCkBAIC02Myw4ICs3MCwxMyBAQCB0eXBlZGVmIGVudW0gVUxv
Y2FsZURhdGFEZWxpbWl0ZXJUeXBlIHsKICAgICBVTE9DREFUQV9BTFRfUVVPVEFUSU9OX1NUQVJU
ID0gMiwKICAgICAvKiogQWx0ZXJuYXRlIHF1b3RhdGlvbiBlbmQgQHN0YWJsZSBJQ1UgMy40ICov
CiAgICAgVUxPQ0RBVEFfQUxUX1FVT1RBVElPTl9FTkQgPSAzLAotICAgIC8qKiBPbmUgaGlnaGVy
IHRoYW4gdGhlIGxhc3QgdmFsaWQgdHlwZSBAc3RhYmxlIElDVSAzLjQgKi8KKyNpZm5kZWYgVV9I
SURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGln
aGVzdCBub3JtYWwgVUxvY2FsZURhdGFEZWxpbWl0ZXJUeXBlIHZhbHVlLgorICAgICAqIEBkZXBy
ZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2Vl
IElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwogICAgIFVMT0NEQVRBX0RFTElNSVRFUl9DT1VO
VCA9IDQKKyNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCiB9IFVMb2NhbGVEYXRh
RGVsaW1pdGVyVHlwZTsKIAogLyoqCkBAIC0xODksNyArMjAxLDEzIEBAIHR5cGVkZWYgZW51bSBV
TWVhc3VyZW1lbnRTeXN0ZW0gewogICAgIFVNU19TSSwgICAgIC8qKjwgTWVhc3VyZW1lbnQgc3lz
dGVtIHNwZWNpZmllZCBieSBTSSBvdGhlcndpc2Uga25vd24gYXMgTWV0cmljIHN5c3RlbS4gQHN0
YWJsZSBJQ1UgMi44ICovCiAgICAgVU1TX1VTLCAgICAgLyoqPCBNZWFzdXJlbWVudCBzeXN0ZW0g
Zm9sbG93ZWQgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYS4gQHN0YWJsZSBJQ1UgMi44
ICovCiAgICAgVU1TX1VLLCAgICAgLyoqPCBNaXggb2YgbWV0cmljIGFuZCBpbXBlcmlhbCB1bml0
cyB1c2VkIGluIEdyZWF0IEJyaXRhaW4uIEBzdGFibGUgSUNVIDU1ICovCisjaWZuZGVmIFVfSElE
RV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hl
c3Qgbm9ybWFsIFVNZWFzdXJlbWVudFN5c3RlbSB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJ
Q1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlj
a2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVTVNfTElNSVQKKyNlbmRpZiAgLyogVV9ISURFX0RF
UFJFQ0FURURfQVBJICovCiB9IFVNZWFzdXJlbWVudFN5c3RlbTsKIAogLyoqCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VtYWNoaW5lLmggYi9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3VtYWNoaW5lLmgKaW5kZXggNTMyMTU5MjE2YTVlM2QxMzAyN2E3ZmZlZjZmYzMyOGM3YjZm
NjRiOS4uOTFiODcyMTQ5MzgyYmVjNGMyZTE5OTRkM2RlMTEzNGQ4M2FiMWU4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bWFjaGluZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdW1hY2hpbmUuaApAQCAtMSwxMiArMSwxNCBAQAorLy8gwqkgMjAxNiBhbmQgbGF0
ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6
IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKICoKLSogICBDb3B5cmlnaHQgKEMpIDE5OTktMjAxNCwgSW50ZXJuYXRpb25hbCBC
dXNpbmVzcyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMTk5OS0yMDE1LCBJbnRlcm5hdGlv
bmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6
ICB1bWFjaGluZS5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBV
VEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoK
QEAgLTEzMiw3ICsxMzQsNyBAQAogICogQGludGVybmFsCiAgKi8KIAotI2lmIGRlZmluZWQoX19j
cGx1c3BsdXMpICYmIF9fY3BsdXNwbHVzPj0yMDExMDNMCisjaWYgVV9DUExVU1BMVVNfVkVSU0lP
TiA+PSAxMQogLyogQysrMTEgKi8KICNpZm5kZWYgVV9PVkVSUklERQogI2RlZmluZSBVX09WRVJS
SURFIG92ZXJyaWRlCkBAIC0yODgsMzAgKzI5MCw5MiBAQCB0eXBlZGVmIGludDhfdCBVQm9vbDsK
IC8qKiBOdW1iZXIgb2YgYnl0ZXMgaW4gYSBVQ2hhci4gQHN0YWJsZSBJQ1UgMi4wICovCiAjZGVm
aW5lIFVfU0laRU9GX1VDSEFSIDIKIAorLyoqCisgKiBcZGVmIFVfQ0hBUjE2X0lTX1RZUEVERUYK
KyAqIElmIDEsIHRoZW4gY2hhcjE2X3QgaXMgYSB0eXBlZGVmIGFuZCBub3QgYSByZWFsIHR5cGUg
KHlldCkKKyAqIEBpbnRlcm5hbAorICovCisjaWYgKFVfUExBVEZPUk0gPT0gVV9QRl9BSVgpICYm
IGRlZmluZWQoX19jcGx1c3BsdXMpICYmKFVfQ1BMVVNQTFVTX1ZFUlNJT04gPCAxMSkKKy8vIGZv
ciBBSVgsIHVjaGFyLmggbmVlZHMgdG8gYmUgaW5jbHVkZWQKKyMgaW5jbHVkZSA8dWNoYXIuaD4K
KyMgZGVmaW5lIFVfQ0hBUjE2X0lTX1RZUEVERUYgMQorI2Vsc2UKKyMgZGVmaW5lIFVfQ0hBUjE2
X0lTX1RZUEVERUYgMAorI2VuZGlmCisKKwogLyoqCiAgKiBcdmFyIFVDaGFyCi0gKiBEZWZpbmUg
VUNoYXIgdG8gYmUgVUNIQVJfVFlQRSwgaWYgdGhhdCBpcyAjZGVmaW5lZCAoZm9yIGV4YW1wbGUs
IHRvIGNoYXIxNl90KSwKLSAqIG9yIHdjaGFyX3QgaWYgdGhhdCBpcyAxNiBiaXRzIHdpZGU7IGFs
d2F5cyBhc3N1bWVkIHRvIGJlIHVuc2lnbmVkLgotICogSWYgbmVpdGhlciBpcyBhdmFpbGFibGUs
IHRoZW4gZGVmaW5lIFVDaGFyIHRvIGJlIHVpbnQxNl90LgogICoKLSAqIFRoaXMgbWFrZXMgdGhl
IGRlZmluaXRpb24gb2YgVUNoYXIgcGxhdGZvcm0tZGVwZW5kZW50Ci0gKiBidXQgYWxsb3dzIGRp
cmVjdCBzdHJpbmcgdHlwZSBjb21wYXRpYmlsaXR5IHdpdGggcGxhdGZvcm1zIHdpdGgKLSAqIDE2
LWJpdCB3Y2hhcl90IHR5cGVzLgorICogVGhlIGJhc2UgdHlwZSBmb3IgVVRGLTE2IGNvZGUgdW5p
dHMgYW5kIHBvaW50ZXJzLgorICogVW5zaWduZWQgMTYtYml0IGludGVnZXIuCisgKiBTdGFydGlu
ZyB3aXRoIElDVSA1OSwgQysrIEFQSSB1c2VzIGNoYXIxNl90IGRpcmVjdGx5LCB3aGlsZSBDIEFQ
SSBjb250aW51ZXMgdG8gdXNlIFVDaGFyLgorICoKKyAqIFVDaGFyIGlzIGNvbmZpZ3VyYWJsZSBi
eSBkZWZpbmluZyB0aGUgbWFjcm8gVUNIQVJfVFlQRQorICogb24gdGhlIHByZXByb2Nlc3NvciBv
ciBjb21waWxlciBjb21tYW5kIGxpbmU6CisgKiAtRFVDSEFSX1RZUEU9dWludDE2X3Qgb3IgLURV
Q0hBUl9UWVBFPXdjaGFyX3QgKGlmIFVfU0laRU9GX1dDSEFSX1Q9PTIpIGV0Yy4KKyAqIChUaGUg
VUNIQVJfVFlQRSBjYW4gYWxzbyBiZSAjZGVmaW5lZCBlYXJsaWVyIGluIHRoaXMgZmlsZSwgZm9y
IG91dHNpZGUgdGhlIElDVSBsaWJyYXJ5IGNvZGUuKQorICogVGhpcyBpcyBmb3IgdHJhbnNpdGlv
bmFsIHVzZSBmcm9tIGFwcGxpY2F0aW9uIGNvZGUgdGhhdCB1c2VzIHVpbnQxNl90IG9yIHdjaGFy
X3QgZm9yIFVURi0xNi4KKyAqCisgKiBUaGUgZGVmYXVsdCBpcyBVQ2hhcj1jaGFyMTZfdC4KKyAq
CisgKiBDKysxMSBkZWZpbmVzIGNoYXIxNl90IGFzIGJpdC1jb21wYXRpYmxlIHdpdGggdWludDE2
X3QsIGJ1dCBhcyBhIGRpc3RpbmN0IHR5cGUuCisgKgorICogSW4gQywgY2hhcjE2X3QgaXMgYSBz
aW1wbGUgdHlwZWRlZiBvZiB1aW50X2xlYXN0MTZfdC4KKyAqIElDVSByZXF1aXJlcyB1aW50X2xl
YXN0MTZfdD11aW50MTZfdCBmb3IgZGF0YSBtZW1vcnkgbWFwcGluZy4KKyAqIE9uIG1hY09TLCBj
aGFyMTZfdCBpcyBub3QgYXZhaWxhYmxlIGJlY2F1c2UgdGhlIHVjaGFyLmggc3RhbmRhcmQgaGVh
ZGVyIGlzIG1pc3NpbmcuCiAgKgogICogQHN0YWJsZSBJQ1UgNC40CiAgKi8KLSNpZiBkZWZpbmVk
KFVDSEFSX1RZUEUpCisKKyNpZiAxCisgICAgLy8gI2lmIDEgaXMgbm9ybWFsLiBVQ2hhciBkZWZh
dWx0cyB0byBjaGFyMTZfdCBpbiBDKysuCisgICAgLy8gRm9yIGNvbmZpZ3VyYXRpb24gdGVzdGlu
ZyBvZiBVQ2hhcj11aW50MTZfdCB0ZW1wb3JhcmlseSBjaGFuZ2UgdGhpcyB0byAjaWYgMC4KKyAg
ICAvLyBUaGUgaW50bHRlc3QgTWFrZWZpbGUgI2RlZmluZXMgVUNIQVJfVFlQRT1jaGFyMTZfdCwK
KyAgICAvLyBzbyB3ZSBvbmx5ICNkZWZpbmUgaXQgdG8gdWludDE2X3QgaWYgaXQgaXMgdW5kZWZp
bmVkIHNvIGZhci4KKyNlbGlmICFkZWZpbmVkKFVDSEFSX1RZUEUpCisjICAgZGVmaW5lIFVDSEFS
X1RZUEUgdWludDE2X3QKKyNlbmRpZgorCisjaWYgZGVmaW5lZChVX0NPTUJJTkVEX0lNUExFTUVO
VEFUSU9OKSB8fCBkZWZpbmVkKFVfQ09NTU9OX0lNUExFTUVOVEFUSU9OKSB8fCBcCisgICAgICAg
IGRlZmluZWQoVV9JMThOX0lNUExFTUVOVEFUSU9OKSB8fCBkZWZpbmVkKFVfSU9fSU1QTEVNRU5U
QVRJT04pCisgICAgLy8gSW5zaWRlIHRoZSBJQ1UgbGlicmFyeSBjb2RlLCBuZXZlciBjb25maWd1
cmFibGUuCisgICAgdHlwZWRlZiBjaGFyMTZfdCBVQ2hhcjsKKyNlbGlmIGRlZmluZWQoVUNIQVJf
VFlQRSkKICAgICB0eXBlZGVmIFVDSEFSX1RZUEUgVUNoYXI7Ci0vKiBOb3QgI2VsaWYgVV9IQVZF
X0NIQVIxNl9UIC0tIGJlY2F1c2UgdGhhdCBpcyB0eXBlLWluY29tcGF0aWJsZSB3aXRoIHByZS1D
KysxMSBjYWxsZXJzCi0gICAgdHlwZWRlZiBjaGFyMTZfdCBVQ2hhcjsgICovCi0jZWxpZiBVX1NJ
WkVPRl9XQ0hBUl9UPT0yCi0gICAgdHlwZWRlZiB3Y2hhcl90IFVDaGFyOwotI2VsaWYgZGVmaW5l
ZChfX0NIQVIxNl9UWVBFX18pCi0gICAgdHlwZWRlZiBfX0NIQVIxNl9UWVBFX18gVUNoYXI7Cisj
ZWxpZiAwCisgICAgdHlwZWRlZiBjaGFyMTZfdCBVQ2hhcjsKICNlbHNlCiAgICAgdHlwZWRlZiB1
aW50MTZfdCBVQ2hhcjsKICNlbmRpZgogCisvKioKKyAqIFx2YXIgT2xkVUNoYXIKKyAqIERlZmF1
bHQgSUNVIDU4IGRlZmluaXRpb24gb2YgVUNoYXIuCisgKiBBIGJhc2UgdHlwZSBmb3IgVVRGLTE2
IGNvZGUgdW5pdHMgYW5kIHBvaW50ZXJzLgorICogVW5zaWduZWQgMTYtYml0IGludGVnZXIuCisg
KgorICogRGVmaW5lIE9sZFVDaGFyIHRvIGJlIHdjaGFyX3QgaWYgdGhhdCBpcyAxNiBiaXRzIHdp
ZGUuCisgKiBJZiB3Y2hhcl90IGlzIG5vdCAxNiBiaXRzIHdpZGUsIHRoZW4gZGVmaW5lIFVDaGFy
IHRvIGJlIHVpbnQxNl90LgorICoKKyAqIFRoaXMgbWFrZXMgdGhlIGRlZmluaXRpb24gb2YgT2xk
VUNoYXIgcGxhdGZvcm0tZGVwZW5kZW50CisgKiBidXQgYWxsb3dzIGRpcmVjdCBzdHJpbmcgdHlw
ZSBjb21wYXRpYmlsaXR5IHdpdGggcGxhdGZvcm1zIHdpdGgKKyAqIDE2LWJpdCB3Y2hhcl90IHR5
cGVzLgorICoKKyAqIFRoaXMgaXMgaG93IFVDaGFyIHdhcyBkZWZpbmVkIGluIElDVSA1OCwgZm9y
IHRyYW5zaXRpb24gY29udmVuaWVuY2UuCisgKiBFeGNlcHRpb246IElDVSA1OCBVQ2hhciB3YXMg
ZGVmaW5lZCB0byBVQ0hBUl9UWVBFIGlmIHRoYXQgbWFjcm8gd2FzIGRlZmluZWQuCisgKiBUaGUg
Y3VycmVudCBVQ2hhciByZXNwb25kcyB0byBVQ0hBUl9UWVBFIGJ1dCBPbGRVQ2hhciBkb2VzIG5v
dC4KKyAqCisgKiBAZHJhZnQgSUNVIDU5CisgKi8KKyNpZiBVX1NJWkVPRl9XQ0hBUl9UPT0yCisg
ICAgdHlwZWRlZiB3Y2hhcl90IE9sZFVDaGFyOworI2VsaWYgZGVmaW5lZChfX0NIQVIxNl9UWVBF
X18pCisgICAgdHlwZWRlZiBfX0NIQVIxNl9UWVBFX18gT2xkVUNoYXI7CisjZWxzZQorICAgIHR5
cGVkZWYgdWludDE2X3QgT2xkVUNoYXI7CisjZW5kaWYKKwogLyoqCiAgKiBEZWZpbmUgVUNoYXIz
MiBhcyBhIHR5cGUgZm9yIHNpbmdsZSBVbmljb2RlIGNvZGUgcG9pbnRzLgogICogVUNoYXIzMiBp
cyBhIHNpZ25lZCAzMi1iaXQgaW50ZWdlciAoc2FtZSBhcyBpbnQzMl90KS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW1pc2MuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dW1pc2MuaAppbmRleCBkODU0NTFmYzc2N2MwNTgzNWY2YzE1ZjU2NmYzNTYyZTJkNGFmODM0Li4y
MTMyOTBiOWFmYTMzY2ZkYmRiMDYwNWM3OWU1NTBkZjMzM2Y1Y2NjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3VtaXNjLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91
bWlzYy5oCkBAIC0xLDEwICsxLDEyIEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwg
SW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51
bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwogKiAgIENv
cnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgogKiAgIGZpbGUgbmFtZTogIHVtaXNjLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAg
IGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5k
ZW50YXRpb246NAogKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bXNnLmgg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vtc2cuaAppbmRleCA1MmZlOTBlMmQ2YWQ4MjYxMjYy
NmFjMjJkYTNmMjUyYjkxMTQ2MTAxLi41ZDIzNWU0MmU4MGJhN2Q5MDU4MDY3MDI5YzBhOTdkMDgz
NjI2NTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vtc2cuaAorKysgYi9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3Vtc2cuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKICAqIENPUFlSSUdIVDogCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTctMjAxMSwgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKQEAgLTYsNyArOCw3IEBACiAg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKICAqCiAgKiAgIGZpbGUgbmFtZTogIHVtc2cuaAotICogICBlbmNvZGluZzog
ICBVUy1BU0NJSQorICogICBlbmNvZGluZzogICBVVEYtOAogICogICB0YWIgc2l6ZTogICA4IChu
b3QgdXNlZCkKICAqICAgaW5kZW50YXRpb246NAogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdW5pZmlsdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bmlmaWx0LmgK
aW5kZXggY2U5NTJhZmFlZmJlNzNiNGE0ZDMxODkxY2ViYjA2MTc0ZTBlZDdiOS4uZTEwNTI3MTU0
YjZkZTEzZTY1ZGUzOWY0MTk1NTQ3YTIxOWZjOTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91bmlmaWx0LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bmlmaWx0
LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBh
bmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2Rl
Lm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAx
OTk5LTIwMTAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5k
IG90aGVycy4KQEAgLTI4LDcgKzMwLDcgQEAgVV9OQU1FU1BBQ0VfQkVHSU4KICAqIGRlZmluZWQg
cmFuZ2UuCiAgKiBAc3RhYmxlIElDVSAzLjAKICAqLwotI2RlZmluZSBVX0VUSEVSICgoVUNoYXIp
MHhGRkZGKQorI2RlZmluZSBVX0VUSEVSICgoY2hhcjE2X3QpMHhGRkZGKQogCiAvKioKICAqCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaWZ1bmN0LmggYi9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3VuaWZ1bmN0LmgKaW5kZXggM2FhN2IwMzU4YzAzOTA1NTZhNTdkMTMyOGE1
MzkyZDMxYjc2N2M2NC4uMWM1MDc1OTY4NjE0OGU5OGM2NjBmYWJmNTZhYzM1M2I2NzViODdjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bmlmdW5jdC5oCisrKyBiL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdW5pZnVuY3QuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgogKiAgIENvcHlyaWdodCAoYykgMjAwMi0yMDA1LCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3VuaW1hdGNoLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaW1hdGNoLmgKaW5kZXgg
MGRiYjE0ZWZjMjA0MWY3OGM0OTczYWQ2ZDUxZjdmNWE1MWJhMWJhOS4uZWU0MzI2ZjkzYzFlYjg4
YmQ3Y2U5MTEyMzA2ZDU1OWMxMzY1NTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS91bmltYXRjaC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW5pbWF0Y2guaApA
QCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBv
dGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L2NvcHlyaWdodC5odG1sCiAvKgogKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNSwgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS91bmlyZXBsLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaXJlcGwuaAppbmRleCA2
Yjc3NDZiMjIxM2ZjZmNmOGY4ODAxN2U5NDA4MzkyYmZmNjI3ZTEyLi5kZGNiMGFkMGU4ZWQwY2Ex
Zjg0OGFhMzA5YmU0MzY2ZDQ2OGEyNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3VuaXJlcGwuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaXJlcGwuaApAQCAt
MSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoYykgMjAwMi0y
MDA1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaXNldC5oIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS91bmlzZXQuaAppbmRleCAyMzdlYmY3NjZjMzY1Y2RiOWYwZWMwNTJhZWJiNDNmYmQ0NjJk
NDM2Li40YTRjZTE5M2I2NDcxOTgyZjM3ZGYyZmI1YzRmNzJkMzM1MDg2ZmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaXNldC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdW5pc2V0LmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5p
Y29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDov
L3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot
KiBDb3B5cmlnaHQgKEMpIDE5OTktMjAxNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5l
cyBDb3Jwb3JhdGlvbgorKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAxNiwgSW50ZXJuYXRpb25hbCBC
dXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbgogKiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAg
RGVzY3JpcHRpb24KQEAgLTI5Miw3ICsyOTQsNyBAQCBjbGFzcyBVX0NPTU1PTl9BUEkgVW5pY29k
ZVNldCBVX0ZJTkFMIDogcHVibGljIFVuaWNvZGVGaWx0ZXIgewogICAgICAqIGluZGljYXRpbmcg
dGhhdCB0b1BhdHRlcm4oKSBtdXN0IGdlbmVyYXRlIGEgcGF0dGVybgogICAgICAqIHJlcHJlc2Vu
dGF0aW9uIGZyb20gdGhlIGludmVyc2lvbiBsaXN0LgogICAgICAqLwotICAgIFVDaGFyICpwYXQ7
CisgICAgY2hhcjE2X3QgKnBhdDsKICAgICBVVmVjdG9yKiBzdHJpbmdzOyAvLyBtYWludGFpbmVk
IGluIHNvcnRlZCBvcmRlcgogICAgIFVuaWNvZGVTZXRTdHJpbmdTcGFuICpzdHJpbmdTcGFuOwog
CkBAIC0zMDcsMTIgKzMwOSwxMiBAQCBwdWJsaWM6CiAgICAgICogQSBib2d1cyBzZXQgaGFzIG5v
IHZhbHVlLiBJdCBpcyBkaWZmZXJlbnQgZnJvbSBhbiBlbXB0eSBzZXQuCiAgICAgICogSXQgY2Fu
IGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCBubyBzZXQgdmFsdWUgaXMgYXZhaWxhYmxlLgogICAg
ICAqCi0gICAgICogQHJldHVybiBUUlVFIGlmIHRoZSBzZXQgaXMgdmFsaWQsIEZBTFNFIG90aGVy
d2lzZQorICAgICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgc2V0IGlzIGJvZ3VzL2ludmFsaWQsIEZB
TFNFIG90aGVyd2lzZQogICAgICAqIEBzZWUgc2V0VG9Cb2d1cygpCiAgICAgICogQHN0YWJsZSBJ
Q1UgNC4wCiAgICAgICovCiAgICAgaW5saW5lIFVCb29sIGlzQm9ndXModm9pZCkgY29uc3Q7Ci0g
ICAgCisKICAgICAvKioKICAgICAgKiBNYWtlIHRoaXMgVW5pY29kZVNldCBvYmplY3QgaW52YWxp
ZC4KICAgICAgKiBUaGUgc3RyaW5nIHdpbGwgdGVzdCBUUlVFIHdpdGggaXNCb2d1cygpLgpAQCAt
MzYwLDcgKzM2Miw3IEBAIHB1YmxpYzoKICAgICBVbmljb2RlU2V0KCk7CiAKICAgICAvKioKLSAg
ICAgKiBDb25zdHJ1Y3RzIGEgc2V0IGNvbnRhaW5pbmcgdGhlIGdpdmVuIHJhbmdlLiBJZiA8Y29k
ZT5lbmQgPgorICAgICAqIENvbnN0cnVjdHMgYSBzZXQgY29udGFpbmluZyB0aGUgZ2l2ZW4gcmFu
Z2UuIElmIDxjb2RlPmVuZCA8CiAgICAgICogc3RhcnQ8L2NvZGU+IHRoZW4gYW4gZW1wdHkgc2V0
IGlzIGNyZWF0ZWQuCiAgICAgICoKICAgICAgKiBAcGFyYW0gc3RhcnQgZmlyc3QgY2hhcmFjdGVy
LCBpbmNsdXNpdmUsIG9mIHJhbmdlCkBAIC0zNjksNiArMzcxLDI4IEBAIHB1YmxpYzoKICAgICAg
Ki8KICAgICBVbmljb2RlU2V0KFVDaGFyMzIgc3RhcnQsIFVDaGFyMzIgZW5kKTsKIAorI2lmbmRl
ZiBVX0hJREVfSU5URVJOQUxfQVBJCisgICAgLyoqCisgICAgICogQGludGVybmFsCisgICAgICov
CisgICAgZW51bSBFU2VyaWFsaXphdGlvbiB7CisgICAgICBrU2VyaWFsaXplZCAgLyogcmVzdWx0
IG9mIHNlcmlhbGl6ZSgpICovCisgICAgfTsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMg
YSBzZXQgZnJvbSB0aGUgb3V0cHV0IG9mIHNlcmlhbGl6ZSgpLgorICAgICAqCisgICAgICogQHBh
cmFtIGJ1ZmZlciB0aGUgMTYgYml0IGFycmF5CisgICAgICogQHBhcmFtIGJ1ZmZlckxlbiB0aGUg
b3JpZ2luYWwgbGVuZ3RoIHJldHVybmVkIGZyb20gc2VyaWFsaXplKCkKKyAgICAgKiBAcGFyYW0g
c2VyaWFsaXphdGlvbiB0aGUgdmFsdWUgJ2tTZXJpYWxpemVkJworICAgICAqIEBwYXJhbSBzdGF0
dXMgZXJyb3IgY29kZQorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgVW5p
Y29kZVNldChjb25zdCB1aW50MTZfdCBidWZmZXJbXSwgaW50MzJfdCBidWZmZXJMZW4sCisgICAg
ICAgICAgICAgICBFU2VyaWFsaXphdGlvbiBzZXJpYWxpemF0aW9uLCBVRXJyb3JDb2RlICZzdGF0
dXMpOworI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCisKICAgICAvKioKICAgICAg
KiBDb25zdHJ1Y3RzIGEgc2V0IGZyb20gdGhlIGdpdmVuIHBhdHRlcm4uICBTZWUgdGhlIGNsYXNz
CiAgICAgICogZGVzY3JpcHRpb24gZm9yIHRoZSBzeW50YXggb2YgdGhlIHBhdHRlcm4gbGFuZ3Vh
Z2UuCkBAIC04NjcsNyArODkxLDcgQEAgcHVibGljOgogICAgICAqIEBzdGFibGUgSUNVIDMuOAog
ICAgICAqIEBzZWUgVVNldFNwYW5Db25kaXRpb24KICAgICAgKi8KLSAgICBpbnQzMl90IHNwYW4o
Y29uc3QgVUNoYXIgKnMsIGludDMyX3QgbGVuZ3RoLCBVU2V0U3BhbkNvbmRpdGlvbiBzcGFuQ29u
ZGl0aW9uKSBjb25zdDsKKyAgICBpbnQzMl90IHNwYW4oY29uc3QgY2hhcjE2X3QgKnMsIGludDMy
X3QgbGVuZ3RoLCBVU2V0U3BhbkNvbmRpdGlvbiBzcGFuQ29uZGl0aW9uKSBjb25zdDsKIAogICAg
IC8qKgogICAgICAqIFJldHVybnMgdGhlIGVuZCBvZiB0aGUgc3Vic3RyaW5nIG9mIHRoZSBpbnB1
dCBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBVU2V0U3BhbkNvbmRpdGlvbi4KQEAgLTkwMCw3ICs5
MjQsNyBAQCBwdWJsaWM6CiAgICAgICogQHN0YWJsZSBJQ1UgMy44CiAgICAgICogQHNlZSBVU2V0
U3BhbkNvbmRpdGlvbgogICAgICAqLwotICAgIGludDMyX3Qgc3BhbkJhY2soY29uc3QgVUNoYXIg
KnMsIGludDMyX3QgbGVuZ3RoLCBVU2V0U3BhbkNvbmRpdGlvbiBzcGFuQ29uZGl0aW9uKSBjb25z
dDsKKyAgICBpbnQzMl90IHNwYW5CYWNrKGNvbnN0IGNoYXIxNl90ICpzLCBpbnQzMl90IGxlbmd0
aCwgVVNldFNwYW5Db25kaXRpb24gc3BhbkNvbmRpdGlvbikgY29uc3Q7CiAKICAgICAvKioKICAg
ICAgKiBSZXR1cm5zIHRoZSBzdGFydCBvZiB0aGUgc3Vic3RyaW5nIG9mIHRoZSBpbnB1dCBzdHJp
bmcgYWNjb3JkaW5nIHRvIHRoZSBVU2V0U3BhbkNvbmRpdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdW5pc3RyLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VuaXN0
ci5oCmluZGV4IDQ4ZmUyYjNiMWQ2YzhhMzVjNzdmYWExMjIwZTRmZmQ3Nzk2MDAzMTAuLmI5OWE2
ODYxMjZjNGUxNGZhYTQ4OWY4NDRkZTJmNzgzYmI2OWMxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdW5pc3RyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91bmlz
dHIuaApAQCAtMSw2ICsxLDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMu
IGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIENvcHlyaWdodCAo
QykgMTk5OC0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJp
Z2h0IChDKSAxOTk4LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBD
b3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKICoKQEAgLTIyLDI5ICsyNCwxOSBAQAogI2RlZmluZSBVTklTVFJfSAogCiAvKioKLSAqIFxm
aWxlIAotICogXGJyaWVmIEMrKyBBUEk6IFVuaWNvZGUgU3RyaW5nIAorICogXGZpbGUKKyAqIFxi
cmllZiBDKysgQVBJOiBVbmljb2RlIFN0cmluZwogICovCiAKKyNpbmNsdWRlIDxjc3RkZGVmPgog
I2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisjaW5jbHVkZSAidW5pY29kZS9jaGFyMTZwdHIu
aCIKICNpbmNsdWRlICJ1bmljb2RlL3JlcC5oIgogI2luY2x1ZGUgInVuaWNvZGUvc3RkX3N0cmlu
Zy5oIgogI2luY2x1ZGUgInVuaWNvZGUvc3RyaW5ncGllY2UuaCIKICNpbmNsdWRlICJ1bmljb2Rl
L2J5dGVzdHJlYW0uaCIKLSNpbmNsdWRlICJ1bmljb2RlL3VjYXNlbWFwLmgiCiAKIHN0cnVjdCBV
Q29udmVydGVyOyAgICAgICAgICAvLyB1bmljb2RlL3VjbnYuaAotY2xhc3MgIFN0cmluZ1RocmVh
ZFRlc3Q7Ci0KLSNpZm5kZWYgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIKLS8qIHNlZSBhbHNv
IHVzdHJpbmcuaCBhbmQgdW5vcm0uaCAqLwotLyoqCi0gKiBPcHRpb24gYml0IGZvciB1X3N0ckNh
c2VDb21wYXJlLCB1X3N0cmNhc2VjbXAsIHVub3JtX2NvbXBhcmUsIGV0YzoKLSAqIENvbXBhcmUg
c3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1bml0IG9yZGVyLgot
ICogQHN0YWJsZSBJQ1UgMi4yCi0gKi8KLSNkZWZpbmUgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JE
RVIgIDB4ODAwMAotI2VuZGlmCiAKICNpZm5kZWYgVVNUUklOR19ICiAvKioKQEAgLTU0LDI4ICs0
NiwzNCBAQCBVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgogdV9zdHJsZW4oY29uc3QgVUNoYXIg
KnMpOwogI2VuZGlmCiAKLS8qKgotICogXGRlZiBVX1NUUklOR19DQVNFX01BUFBFUl9ERUZJTkVE
Ci0gKiBAaW50ZXJuYWwKLSAqLwotI2lmbmRlZiBVX1NUUklOR19DQVNFX01BUFBFUl9ERUZJTkVE
Ci0jZGVmaW5lIFVfU1RSSU5HX0NBU0VfTUFQUEVSX0RFRklORUQKK1VfTkFNRVNQQUNFX0JFR0lO
CiAKKyNpZiAhVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04KK2NsYXNzIEJyZWFrSXRlcmF0b3I7
ICAgICAgICAvLyB1bmljb2RlL2Jya2l0ZXIuaAorI2VuZGlmCitjbGFzcyBFZGl0czsKKworVV9O
QU1FU1BBQ0VfRU5ECisKKy8vIE5vdCAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkgYmVjYXVz
ZSBVbmljb2RlU3RyaW5nIG5lZWRzIHRoZSBVU3RyaW5nQ2FzZU1hcHBlci4KIC8qKgogICogSW50
ZXJuYWwgc3RyaW5nIGNhc2UgbWFwcGluZyBmdW5jdGlvbiB0eXBlLgorICogQWxsIGVycm9yIGNo
ZWNraW5nIG11c3QgYmUgZG9uZS4KKyAqIHNyYyBhbmQgZGVzdCBtdXN0IG5vdCBvdmVybGFwLgog
ICogQGludGVybmFsCiAgKi8KIHR5cGVkZWYgaW50MzJfdCBVX0NBTExDT05WCi1VU3RyaW5nQ2Fz
ZU1hcHBlcihjb25zdCBVQ2FzZU1hcCAqY3NtLAotICAgICAgICAgICAgICAgICAgVUNoYXIgKmRl
c3QsIGludDMyX3QgZGVzdENhcGFjaXR5LAotICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIg
KnNyYywgaW50MzJfdCBzcmNMZW5ndGgsCi0gICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpw
RXJyb3JDb2RlKTsKLQorVVN0cmluZ0Nhc2VNYXBwZXIoaW50MzJfdCBjYXNlTG9jYWxlLCB1aW50
MzJfdCBvcHRpb25zLAorI2lmICFVQ09ORklHX05PX0JSRUFLX0lURVJBVElPTgorICAgICAgICAg
ICAgICAgICAgaWN1OjpCcmVha0l0ZXJhdG9yICppdGVyLAogI2VuZGlmCisgICAgICAgICAgICAg
ICAgICBjaGFyMTZfdCAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCisgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyMTZfdCAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgIGljdTo6RWRpdHMgKmVkaXRzLAorICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAm
ZXJyb3JDb2RlKTsKIAogVV9OQU1FU1BBQ0VfQkVHSU4KIAotY2xhc3MgQnJlYWtJdGVyYXRvcjsg
ICAgICAgIC8vIHVuaWNvZGUvYnJraXRlci5oCiBjbGFzcyBMb2NhbGU7ICAgICAgICAgICAgICAg
Ly8gdW5pY29kZS9sb2NpZC5oCiBjbGFzcyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcjsKIGNsYXNz
IFVuaWNvZGVTdHJpbmdBcHBlbmRhYmxlOyAgLy8gdW5pY29kZS9hcHBlbmRhYmxlLmgKQEAgLTk2
LDEwICs5NCwxMiBAQCBjbGFzcyBVbmljb2RlU3RyaW5nQXBwZW5kYWJsZTsgIC8vIHVuaWNvZGUv
YXBwZW5kYWJsZS5oCiAKIC8qKgogICogVW5pY29kZSBTdHJpbmcgbGl0ZXJhbHMgaW4gQysrLgot
ICogRGVwZW5kZW50IG9uIHRoZSBwbGF0Zm9ybSBwcm9wZXJ0aWVzLCBkaWZmZXJlbnQgVW5pY29k
ZVN0cmluZwotICogY29uc3RydWN0b3JzIHNob3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhIFVuaWNv
ZGVTdHJpbmcgb2JqZWN0IGZyb20KLSAqIGEgc3RyaW5nIGxpdGVyYWwuCi0gKiBUaGUgbWFjcm9z
IGFyZSBkZWZpbmVkIGZvciBtYXhpbXVtIHBlcmZvcm1hbmNlLgorICoKKyAqIE5vdGU6IHRoZXNl
IG1hY3JvcyBhcmUgbm90IHJlY29tbWVuZGVkIGZvciBuZXcgY29kZS4KKyAqIFByaW9yIHRvIHRo
ZSBhdmFpbGFiaWxpdHkgb2YgQysrMTEgYW5kIHUidW5pY29kZSBzdHJpbmcgbGl0ZXJhbHMiLAor
ICogdGhlc2UgbWFjcm9zIHdlcmUgcHJvdmlkZWQgZm9yIHBvcnRhYmlsaXR5IGFuZCBlZmZpY2ll
bmN5IHdoZW4KKyAqIGluaXRpYWxpemluZyBVbmljb2RlU3RyaW5ncyBmcm9tIGxpdGVyYWxzLgor
ICoKICAqIFRoZXkgd29yayBvbmx5IGZvciBzdHJpbmdzIHRoYXQgY29udGFpbiAiaW52YXJpYW50
IGNoYXJhY3RlcnMiLCBpLmUuLAogICogb25seSBsYXRpbiBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBz
b21lIHB1bmN0dWF0aW9uLgogICogU2VlIHV0eXBlcy5oIGZvciBkZXRhaWxzLgpAQCAtMTA3LDE4
ICsxMDcsMTIgQEAgY2xhc3MgVW5pY29kZVN0cmluZ0FwcGVuZGFibGU7ICAvLyB1bmljb2RlL2Fw
cGVuZGFibGUuaAogICogVGhlIHN0cmluZyBwYXJhbWV0ZXIgbXVzdCBiZSBhIEMgc3RyaW5nIGxp
dGVyYWwuCiAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsIG5vdCBpbmNsdWRpbmcgdGhlIHRl
cm1pbmF0aW5nCiAgKiA8Y29kZT5OVUw8L2NvZGU+LCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIGNv
bnN0YW50LgotICogVGhlIFVfU1RSSU5HX0RFQ0wgbWFjcm8gc2hvdWxkIGJlIGludm9rZWQgZXhh
Y3RseSBvbmNlIGZvciBvbmUKLSAqIHN1Y2ggc3RyaW5nIHZhcmlhYmxlIGJlZm9yZSBpdCBpcyB1
c2VkLgogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLSNpZiBkZWZpbmVkKFVfREVDTEFSRV9VVEYx
NikKLSMgICBkZWZpbmUgVU5JQ09ERV9TVFJJTkcoY3MsIF9sZW5ndGgpIGljdTo6VW5pY29kZVN0
cmluZyhUUlVFLCAoY29uc3QgVUNoYXIgKilVX0RFQ0xBUkVfVVRGMTYoY3MpLCBfbGVuZ3RoKQot
I2VsaWYgVV9TSVpFT0ZfV0NIQVJfVD09VV9TSVpFT0ZfVUNIQVIgJiYgKFVfQ0hBUlNFVF9GQU1J
TFk9PVVfQVNDSUlfRkFNSUxZIHx8IChVX1NJWkVPRl9VQ0hBUiA9PSAyICYmIGRlZmluZWQoVV9X
Q0hBUl9JU19VVEYxNikpKQotIyAgIGRlZmluZSBVTklDT0RFX1NUUklORyhjcywgX2xlbmd0aCkg
aWN1OjpVbmljb2RlU3RyaW5nKFRSVUUsIChjb25zdCBVQ2hhciAqKUwgIyMgY3MsIF9sZW5ndGgp
Ci0jZWxpZiBVX1NJWkVPRl9VQ0hBUj09MSAmJiBVX0NIQVJTRVRfRkFNSUxZPT1VX0FTQ0lJX0ZB
TUlMWQotIyAgIGRlZmluZSBVTklDT0RFX1NUUklORyhjcywgX2xlbmd0aCkgaWN1OjpVbmljb2Rl
U3RyaW5nKFRSVUUsIChjb25zdCBVQ2hhciAqKWNzLCBfbGVuZ3RoKQorI2lmICFVX0NIQVIxNl9J
U19UWVBFREVGCisjIGRlZmluZSBVTklDT0RFX1NUUklORyhjcywgX2xlbmd0aCkgaWN1OjpVbmlj
b2RlU3RyaW5nKFRSVUUsIHUgIyMgY3MsIF9sZW5ndGgpCiAjZWxzZQotIyAgIGRlZmluZSBVTklD
T0RFX1NUUklORyhjcywgX2xlbmd0aCkgaWN1OjpVbmljb2RlU3RyaW5nKGNzLCBfbGVuZ3RoLCBV
U19JTlYpCisjIGRlZmluZSBVTklDT0RFX1NUUklORyhjcywgX2xlbmd0aCkgaWN1OjpVbmljb2Rl
U3RyaW5nKFRSVUUsIChjb25zdCBjaGFyMTZfdCopdSAjIyBjcywgX2xlbmd0aCkKICNlbmRpZgog
CiAvKioKQEAgLTEzOSw3ICsxMzMsNyBAQCBjbGFzcyBVbmljb2RlU3RyaW5nQXBwZW5kYWJsZTsg
IC8vIHVuaWNvZGUvYXBwZW5kYWJsZS5oCiAvKioKICAqIFxkZWYgVU5JU1RSX0ZST01fQ0hBUl9F
WFBMSUNJVAogICogVGhpcyBjYW4gYmUgZGVmaW5lZCB0byBiZSBlbXB0eSBvciAiZXhwbGljaXQi
LgotICogSWYgZXhwbGljaXQsIHRoZW4gdGhlIFVuaWNvZGVTdHJpbmcoVUNoYXIpIGFuZCBVbmlj
b2RlU3RyaW5nKFVDaGFyMzIpCisgKiBJZiBleHBsaWNpdCwgdGhlbiB0aGUgVW5pY29kZVN0cmlu
ZyhjaGFyMTZfdCkgYW5kIFVuaWNvZGVTdHJpbmcoVUNoYXIzMikKICAqIGNvbnN0cnVjdG9ycyBh
cmUgbWFya2VkIGFzIGV4cGxpY2l0LCBwcmV2ZW50aW5nIHRoZWlyIGluYWR2ZXJ0ZW50IHVzZS4K
ICAqIEBzdGFibGUgSUNVIDQ5CiAgKi8KQEAgLTE1Niw3ICsxNTAsNyBAQCBjbGFzcyBVbmljb2Rl
U3RyaW5nQXBwZW5kYWJsZTsgIC8vIHVuaWNvZGUvYXBwZW5kYWJsZS5oCiAvKioKICAqIFxkZWYg
VU5JU1RSX0ZST01fU1RSSU5HX0VYUExJQ0lUCiAgKiBUaGlzIGNhbiBiZSBkZWZpbmVkIHRvIGJl
IGVtcHR5IG9yICJleHBsaWNpdCIuCi0gKiBJZiBleHBsaWNpdCwgdGhlbiB0aGUgVW5pY29kZVN0
cmluZyhjb25zdCBjaGFyICopIGFuZCBVbmljb2RlU3RyaW5nKGNvbnN0IFVDaGFyICopCisgKiBJ
ZiBleHBsaWNpdCwgdGhlbiB0aGUgVW5pY29kZVN0cmluZyhjb25zdCBjaGFyICopIGFuZCBVbmlj
b2RlU3RyaW5nKGNvbnN0IGNoYXIxNl90ICopCiAgKiBjb25zdHJ1Y3RvcnMgYXJlIG1hcmtlZCBh
cyBleHBsaWNpdCwgcHJldmVudGluZyB0aGVpciBpbmFkdmVydGVudCB1c2UuCiAgKgogICogSW4g
cGFydGljdWxhciwgdGhpcyBoZWxwcyBwcmV2ZW50IGFjY2lkZW50YWxseSBkZXBlbmRpbmcgb24g
SUNVIGNvbnZlcnNpb24gY29kZQpAQCAtMTczLDIwICsxNjcsNjcgQEAgY2xhc3MgVW5pY29kZVN0
cmluZ0FwcGVuZGFibGU7ICAvLyB1bmljb2RlL2FwcGVuZGFibGUuaAogIyBlbmRpZgogI2VuZGlm
CiAKKy8qKgorICogXGRlZiBVTklTVFJfT0JKRUNUX1NJWkUKKyAqIERlc2lyZWQgc2l6ZW9mKFVu
aWNvZGVTdHJpbmcpIGluIGJ5dGVzLgorICogSXQgc2hvdWxkIGJlIGEgbXVsdGlwbGUgb2Ygc2l6
ZW9mKHBvaW50ZXIpIHRvIGF2b2lkIHVudXNhYmxlIHNwYWNlIGZvciBwYWRkaW5nLgorICogVGhl
IG9iamVjdCBzaXplIG1heSB3YW50IHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYgYnl0ZXMsCisgKiB3
aGljaCBpcyBhIGNvbW1vbiBncmFudWxhcml0eSBmb3IgaGVhcCBhbGxvY2F0aW9uLgorICoKKyAq
IEFueSBzcGFjZSBpbnNpZGUgdGhlIG9iamVjdCBiZXlvbmQgc2l6ZW9mKHZ0YWJsZSBwb2ludGVy
KSArIDIKKyAqIGlzIGF2YWlsYWJsZSBmb3Igc3RvcmluZyBzaG9ydCBzdHJpbmdzIGluc2lkZSB0
aGUgb2JqZWN0LgorICogVGhlIGJpZ2dlciB0aGUgb2JqZWN0LCB0aGUgbG9uZ2VyIGEgc3RyaW5n
IHRoYXQgY2FuIGJlIHN0b3JlZCBpbnNpZGUgdGhlIG9iamVjdCwKKyAqIHdpdGhvdXQgYWRkaXRp
b25hbCBoZWFwIGFsbG9jYXRpb24uCisgKgorICogRGVwZW5kaW5nIG9uIGEgcGxhdGZvcm0ncyBw
b2ludGVyIHNpemUsIHBvaW50ZXIgYWxpZ25tZW50IHJlcXVpcmVtZW50cywKKyAqIGFuZCBzdHJ1
Y3QgcGFkZGluZywgdGhlIGNvbXBpbGVyIHdpbGwgdXN1YWxseSByb3VuZCB1cCBzaXplb2YoVW5p
Y29kZVN0cmluZykKKyAqIHRvIDQgKiBzaXplb2YocG9pbnRlcikgKG9yIDMgKiBzaXplb2YocG9p
bnRlcikgZm9yIFAxMjggZGF0YSBtb2RlbHMpLAorICogdG8gaG9sZCB0aGUgZmllbGRzIGZvciBo
ZWFwLWFsbG9jYXRlZCBzdHJpbmdzLgorICogU3VjaCBhIG1pbmltdW0gc2l6ZSBhbHNvIGVuc3Vy
ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGVhc2lseSBsYXJnZSBlbm91Z2gKKyAqIHRvIGhvbGQgYXQg
bGVhc3QgMiBjaGFyMTZfdHMsIGZvciBvbmUgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50IChVMTZf
TUFYX0xFTkdUSCkuCisgKgorICogc2l6ZW9mKFVuaWNvZGVTdHJpbmcpID49IDQ4IHNob3VsZCB3
b3JrIGZvciBhbGwga25vd24gcGxhdGZvcm1zLgorICoKKyAqIEZvciBleGFtcGxlLCBvbiBhIDY0
LWJpdCBtYWNoaW5lIHdoZXJlIHNpemVvZih2dGFibGUgcG9pbnRlcikgaXMgOCwKKyAqIHNpemVv
ZihVbmljb2RlU3RyaW5nKSA9IDY0IHdvdWxkIGxlYXZlIHNwYWNlIGZvcgorICogKDY0IC0gc2l6
ZW9mKHZ0YWJsZSBwb2ludGVyKSAtIDIpIC8gVV9TSVpFT0ZfVUNIQVIgPSAoNjQgLSA4IC0gMikg
LyAyID0gMjcKKyAqIGNoYXIxNl90cyBzdG9yZWQgaW5zaWRlIHRoZSBvYmplY3QuCisgKgorICog
VGhlIG1pbmltdW0gb2JqZWN0IHNpemUgb24gYSA2NC1iaXQgbWFjaGluZSB3b3VsZCBiZQorICog
NCAqIHNpemVvZihwb2ludGVyKSA9IDQgKiA4ID0gMzIgYnl0ZXMsCisgKiBhbmQgdGhlIGludGVy
bmFsIGJ1ZmZlciB3b3VsZCBob2xkIHVwIHRvIDExIGNoYXIxNl90cyBpbiB0aGF0IGNhc2UuCisg
KgorICogQHNlZSBVMTZfTUFYX0xFTkdUSAorICogQHN0YWJsZSBJQ1UgNTYKKyAqLworI2lmbmRl
ZiBVTklTVFJfT0JKRUNUX1NJWkUKKyMgZGVmaW5lIFVOSVNUUl9PQkpFQ1RfU0laRSA2NAorI2Vu
ZGlmCisKIC8qKgogICogVW5pY29kZVN0cmluZyBpcyBhIHN0cmluZyBjbGFzcyB0aGF0IHN0b3Jl
cyBVbmljb2RlIGNoYXJhY3RlcnMgZGlyZWN0bHkgYW5kIHByb3ZpZGVzCi0gKiBzaW1pbGFyIGZ1
bmN0aW9uYWxpdHkgYXMgdGhlIEphdmEgU3RyaW5nIGFuZCBTdHJpbmdCdWZmZXIgY2xhc3Nlcy4K
KyAqIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSBhcyB0aGUgSmF2YSBTdHJpbmcgYW5kIFN0cmluZ0J1
ZmZlci9TdHJpbmdCdWlsZGVyIGNsYXNzZXMuCiAgKiBJdCBpcyBhIGNvbmNyZXRlIGltcGxlbWVu
dGF0aW9uIG9mIHRoZSBhYnN0cmFjdCBjbGFzcyBSZXBsYWNlYWJsZSAoZm9yIHRyYW5zbGl0ZXJh
dGlvbikuCiAgKgorICogQSBVbmljb2RlU3RyaW5nIG1heSBhbHNvICJhbGlhcyIgYW4gZXh0ZXJu
YWwgYXJyYXkgb2YgY2hhcmFjdGVycworICogKHRoYXQgaXMsIHBvaW50IHRvIGl0LCByYXRoZXIg
dGhhbiBvd24gdGhlIGFycmF5KQorICogd2hvc2UgbGlmZXRpbWUgbXVzdCB0aGVuIGF0IGxlYXN0
IG1hdGNoIHRoZSBsaWZldGltZSBvZiB0aGUgYWxpYXNpbmcgb2JqZWN0LgorICogVGhpcyBhbGlh
c2luZyBtYXkgYmUgcHJlc2VydmVkIHdoZW4gcmV0dXJuaW5nIGEgVW5pY29kZVN0cmluZyBieSB2
YWx1ZSwKKyAqIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIgYW5kIHRoZSBmdW5jdGlvbiBpbXBs
ZW1lbnRhdGlvbiwKKyAqIHZpYSBSZXR1cm4gVmFsdWUgT3B0aW1pemF0aW9uIChSVk8pIG9yIHRo
ZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgKiAoSG93ZXZlciwgdGhlIGNvcHkgYXNzaWdu
bWVudCBvcGVyYXRvciBkb2VzIG5vdCBwcmVzZXJ2ZSBhbGlhc2luZy4pCisgKiBGb3IgZGV0YWls
cyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHN0b3JhZ2UgbW9kZWxzIGF0IHRoZSBlbmQgb2YgdGhl
IGNsYXNzIEFQSSBkb2NzCisgKiBhbmQgaW4gdGhlIFVzZXIgR3VpZGUgY2hhcHRlciBsaW5rZWQg
ZnJvbSB0aGVyZS4KKyAqCiAgKiBUaGUgVW5pY29kZVN0cmluZyBjbGFzcyBpcyBub3Qgc3VpdGFi
bGUgZm9yIHN1YmNsYXNzaW5nLgogICoKICAqIDxwPkZvciBhbiBvdmVydmlldyBvZiBVbmljb2Rl
IHN0cmluZ3MgaW4gQyBhbmQgQysrIHNlZSB0aGUKLSAqIDxhIGhyZWY9Imh0dHA6Ly9pY3UtcHJv
amVjdC5vcmcvdXNlcmd1aWRlL3N0cmluZ3MuaHRtbCI+VXNlciBHdWlkZSBTdHJpbmdzIGNoYXB0
ZXI8L2E+LjwvcD4KKyAqIDxhIGhyZWY9Imh0dHA6Ly91c2VyZ3VpZGUuaWN1LXByb2plY3Qub3Jn
L3N0cmluZ3MjVE9DLVN0cmluZ3MtaW4tQy1DLSI+VXNlciBHdWlkZSBTdHJpbmdzIGNoYXB0ZXI8
L2E+LjwvcD4KICAqCiAgKiA8cD5JbiBJQ1UsIGEgVW5pY29kZSBzdHJpbmcgY29uc2lzdHMgb2Yg
MTYtYml0IFVuaWNvZGUgPGVtPmNvZGUgdW5pdHM8L2VtPi4KICAqIEEgVW5pY29kZSBjaGFyYWN0
ZXIgbWF5IGJlIHN0b3JlZCB3aXRoIGVpdGhlciBvbmUgY29kZSB1bml0CiAgKiAodGhlIG1vc3Qg
Y29tbW9uIGNhc2UpIG9yIHdpdGggYSBtYXRjaGVkIHBhaXIgb2Ygc3BlY2lhbCBjb2RlIHVuaXRz
Ci0gKiAoInN1cnJvZ2F0ZXMiKS4gVGhlIGRhdGEgdHlwZSBmb3IgY29kZSB1bml0cyBpcyBVQ2hh
ci4gCisgKiAoInN1cnJvZ2F0ZXMiKS4gVGhlIGRhdGEgdHlwZSBmb3IgY29kZSB1bml0cyBpcyBj
aGFyMTZfdC4KICAqIEZvciBzaW5nbGUtY2hhcmFjdGVyIGhhbmRsaW5nLCBhIFVuaWNvZGUgY2hh
cmFjdGVyIGNvZGUgPGVtPnBvaW50PC9lbT4gaXMgYSB2YWx1ZQogICogaW4gdGhlIHJhbmdlIDAu
LjB4MTBmZmZmLiBJQ1UgdXNlcyB0aGUgVUNoYXIzMiB0eXBlIGZvciBjb2RlIHBvaW50cy48L3A+
CiAgKgpAQCAtMjAyLDcgKzI0Myw3IEBAIGNsYXNzIFVuaWNvZGVTdHJpbmdBcHBlbmRhYmxlOyAg
Ly8gdW5pY29kZS9hcHBlbmRhYmxlLmgKICAqIHRoYW4gb3RoZXIgSUNVIEFQSXMuIEluIHBhcnRp
Y3VsYXI6CiAgKiAtIElmIGluZGV4ZXMgYXJlIG91dCBvZiBib3VuZHMgZm9yIGEgVW5pY29kZVN0
cmluZyBvYmplY3QKICAqICAgKDwwIG9yID5sZW5ndGgoKSkgdGhlbiB0aGV5IGFyZSAicGlubmVk
IiB0byB0aGUgbmVhcmVzdCBib3VuZGFyeS4KLSAqIC0gSWYgcHJpbWl0aXZlIHN0cmluZyBwb2lu
dGVyIHZhbHVlcyAoZS5nLiwgY29uc3QgVUNoYXIgKiBvciBjaGFyICopCisgKiAtIElmIHByaW1p
dGl2ZSBzdHJpbmcgcG9pbnRlciB2YWx1ZXMgKGUuZy4sIGNvbnN0IGNoYXIxNl90ICogb3IgY2hh
ciAqKQogICogICBmb3IgaW5wdXQgc3RyaW5ncyBhcmUgTlVMTCwgdGhlbiB0aG9zZSBpbnB1dCBz
dHJpbmcgcGFyYW1ldGVycyBhcmUgdHJlYXRlZAogICogICBhcyBpZiB0aGV5IHBvaW50ZWQgdG8g
YW4gZW1wdHkgc3RyaW5nLgogICogICBIb3dldmVyLCB0aGlzIGlzIDxlbT5ub3Q8L2VtPiB0aGUg
Y2FzZSBmb3IgY2hhciAqIHBhcmFtZXRlcnMgZm9yIGNoYXJzZXQgbmFtZXMKQEAgLTIzNiw3ICsy
NzcsNyBAQCBjbGFzcyBVbmljb2RlU3RyaW5nQXBwZW5kYWJsZTsgIC8vIHVuaWNvZGUvYXBwZW5k
YWJsZS5oCiAgKiBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCiAgKiBBbHNv
LCB0aGUgaW50ZXJuYWwgYnVmZmVyIGlzIGFjY2Vzc2libGUgdmlhIHNwZWNpYWwgZnVuY3Rpb25z
LgogICogRm9yIGRldGFpbHMgc2VlIHRoZQotICogPGEgaHJlZj0iaHR0cDovL2ljdS1wcm9qZWN0
Lm9yZy91c2VyZ3VpZGUvc3RyaW5ncy5odG1sIj5Vc2VyIEd1aWRlIFN0cmluZ3MgY2hhcHRlcjwv
YT4uPC9wPgorICogPGEgaHJlZj0iaHR0cDovL3VzZXJndWlkZS5pY3UtcHJvamVjdC5vcmcvc3Ry
aW5ncyNUT0MtTWF4aW1pemluZy1QZXJmb3JtYW5jZS13aXRoLXRoZS1Vbmljb2RlU3RyaW5nLVN0
b3JhZ2UtTW9kZWwiPlVzZXIgR3VpZGUgU3RyaW5ncyBjaGFwdGVyPC9hPi48L3A+CiAgKgogICog
QHNlZSB1dGYuaAogICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvcgpAQCAtMzg5LDcgKzQzMCw3IEBA
IHB1YmxpYzoKICAgICogaW4gPGNvZGU+c3JjQ2hhcnM8L2NvZGU+LgogICAgKiBAc3RhYmxlIElD
VSAyLjAKICAgICovCi0gIGlubGluZSBpbnQ4X3QgY29tcGFyZShjb25zdCBVQ2hhciAqc3JjQ2hh
cnMsCisgIGlubGluZSBpbnQ4X3QgY29tcGFyZShDb25zdENoYXIxNlB0ciBzcmNDaGFycywKICAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsKIAogICAvKioKQEAgLTQwOCw3ICs0NDks
NyBAQCBwdWJsaWM6CiAgICAqLwogICBpbmxpbmUgaW50OF90IGNvbXBhcmUoaW50MzJfdCBzdGFy
dCwKICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAotICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0No
YXJzKSBjb25zdDsKKyAgICAgICAgIGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycykgY29uc3Q7CiAK
ICAgLyoqCiAgICAqIENvbXBhcmUgdGhlIGNoYXJhY3RlcnMgYml0d2lzZSBpbiB0aGUgcmFuZ2UK
QEAgLTQyOSw3ICs0NzAsNyBAQCBwdWJsaWM6CiAgICAqLwogICBpbmxpbmUgaW50OF90IGNvbXBh
cmUoaW50MzJfdCBzdGFydCwKICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAotICAgICAgICAgY29u
c3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzLAog
ICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBj
b25zdDsKIApAQCAtNTQzLDcgKzU4NCw3IEBAIHB1YmxpYzoKICAgICogaW4gY29kZSBwb2ludCBv
cmRlcgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBpbnQ4X3QgY29tcGFy
ZUNvZGVQb2ludE9yZGVyKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgaW5saW5lIGludDhfdCBj
b21wYXJlQ29kZVBvaW50T3JkZXIoQ29uc3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdDsKIAog
ICAvKioKQEAgLTU2Nyw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAqLwogICBpbmxpbmUgaW50OF90
IGNvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90IHN0YXJ0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzKSBjb25zdDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzKSBj
b25zdDsKIAogICAvKioKICAgICogQ29tcGFyZSB0d28gVW5pY29kZSBzdHJpbmdzIGluIGNvZGUg
cG9pbnQgb3JkZXIuCkBAIC01OTIsNyArNjMzLDcgQEAgcHVibGljOgogICAgKi8KICAgaW5saW5l
IGludDhfdCBjb21wYXJlQ29kZVBvaW50T3JkZXIoaW50MzJfdCBzdGFydCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkg
Y29uc3Q7CiAKQEAgLTcxNiw3ICs3NTcsNyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gQSBuZWdh
dGl2ZSwgemVybywgb3IgcG9zaXRpdmUgaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBjb21wYXJpc29u
IHJlc3VsdC4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbmxpbmUgaW50OF90IGNh
c2VDb21wYXJlKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgaW5saW5lIGludDhfdCBjYXNlQ29t
cGFyZShDb25zdENoYXIxNlB0ciBzcmNDaGFycywKICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3Ro
LAogICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Q7CiAKQEAgLTc0Miw3ICs3ODMsNyBA
QCBwdWJsaWM6CiAgICAqLwogICBpbmxpbmUgaW50OF90IGNhc2VDb21wYXJlKGludDMyX3Qgc3Rh
cnQsCiAgICAgICAgICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgIGNvbnN0IFVDaGFyICpzcmND
aGFycywKKyAgICAgICAgIGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgIHVpbnQz
Ml90IG9wdGlvbnMpIGNvbnN0OwogCiAgIC8qKgpAQCAtNzY5LDcgKzgxMCw3IEBAIHB1YmxpYzoK
ICAgICovCiAgIGlubGluZSBpbnQ4X3QgY2FzZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKICAgICAg
ICAgIGludDMyX3QgbGVuZ3RoLAotICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAg
ICAgICAgY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAgICAgaW50MzJfdCBzcmNTdGFy
dCwKICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgdWludDMyX3Qgb3B0aW9u
cykgY29uc3Q7CkBAIC04MzQsNyArODc1LDcgQEAgcHVibGljOgogICAgKiBGQUxTRSBvdGhlcndp
c2UKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbmxpbmUgVUJvb2wgc3RhcnRzV2l0
aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgIGlubGluZSBVQm9vbCBzdGFydHNXaXRoKENvbnN0
Q2hhcjE2UHRyIHNyY0NoYXJzLAogICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0
OwogCiAgIC8qKgpAQCAtODQ2LDcgKzg4Nyw3IEBAIHB1YmxpYzoKICAgICogQHJldHVybiBUUlVF
IGlmIHRoaXMgZW5kcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIDxUVD5zcmNDaGFyczwvVFQ+LCBG
QUxTRSBvdGhlcndpc2UKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbmxpbmUgVUJv
b2wgc3RhcnRzV2l0aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgIGlubGluZSBVQm9vbCBzdGFy
dHNXaXRoKGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICAgIGludDMyX3Qgc3Jj
U3RhcnQsCiAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7CiAKQEAgLTg4MSw3
ICs5MjIsNyBAQCBwdWJsaWM6CiAgICAqIEZBTFNFIG90aGVyd2lzZQogICAgKiBAc3RhYmxlIElD
VSAyLjAKICAgICovCi0gIGlubGluZSBVQm9vbCBlbmRzV2l0aChjb25zdCBVQ2hhciAqc3JjQ2hh
cnMsCisgIGlubGluZSBVQm9vbCBlbmRzV2l0aChDb25zdENoYXIxNlB0ciBzcmNDaGFycywKICAg
ICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3Q7CiAKICAgLyoqCkBAIC04OTQsNyArOTM1
LDcgQEAgcHVibGljOgogICAgKiBGQUxTRSBvdGhlcndpc2UKICAgICogQHN0YWJsZSBJQ1UgMi4w
CiAgICAqLwotICBpbmxpbmUgVUJvb2wgZW5kc1dpdGgoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAor
ICBpbmxpbmUgVUJvb2wgZW5kc1dpdGgoY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAg
ICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0
OwogCkBAIC05NzEsNyArMTAxMiw3IEBAIHB1YmxpYzoKICAgICogb3IgLTEgaWYgbm90IGZvdW5k
LgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBpbnQzMl90IGluZGV4T2Yo
Y29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICBpbmxpbmUgaW50MzJfdCBpbmRleE9mKGNvbnN0IGNo
YXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCiAgICAg
ICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0OwogCkBAIC05ODcsNyArMTAyOCw3IEBAIHB1
YmxpYzoKICAgICogb3IgLTEgaWYgbm90IGZvdW5kLgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAg
ICovCi0gIGlubGluZSBpbnQzMl90IGluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICBp
bmxpbmUgaW50MzJfdCBpbmRleE9mKENvbnN0Q2hhcjE2UHRyIHNyY0NoYXJzLAogICAgICAgICAg
ICAgICBpbnQzMl90IHNyY0xlbmd0aCwKICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKICAg
ICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0OwpAQCAtMTAwOCw3ICsxMDQ5LDcgQEAg
cHVibGljOgogICAgKiBvciAtMSBpZiBub3QgZm91bmQuCiAgICAqIEBzdGFibGUgSUNVIDIuMAog
ICAgKi8KLSAgaW50MzJfdCBpbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgaW50MzJf
dCBpbmRleE9mKGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICAgICAgaW50MzJf
dCBzcmNTdGFydCwKICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAgICAg
ICAgIGludDMyX3Qgc3RhcnQsCkBAIC0xMDIxLDcgKzEwNjIsNyBAQCBwdWJsaWM6CiAgICAqIEBy
ZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYgbm90IGZv
dW5kLgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBpbnQzMl90IGluZGV4
T2YoVUNoYXIgYykgY29uc3Q7CisgIGlubGluZSBpbnQzMl90IGluZGV4T2YoY2hhcjE2X3QgYykg
Y29uc3Q7CiAKICAgLyoqCiAgICAqIExvY2F0ZSBpbiB0aGlzIHRoZSBmaXJzdCBvY2N1cnJlbmNl
IG9mIHRoZSBjb2RlIHBvaW50IDxUVD5jPC9UVD4sCkBAIC0xMDQxLDcgKzEwODIsNyBAQCBwdWJs
aWM6CiAgICAqIEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3Ig
LTEgaWYgbm90IGZvdW5kLgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBp
bnQzMl90IGluZGV4T2YoVUNoYXIgYywKKyAgaW5saW5lIGludDMyX3QgaW5kZXhPZihjaGFyMTZf
dCBjLAogICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25zdDsKIAogICAvKioKQEAgLTEw
NjYsNyArMTEwNyw3IEBAIHB1YmxpYzoKICAgICogQHJldHVybiBUaGUgb2Zmc2V0IGludG8gdGhp
cyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQuCiAgICAqIEBzdGFibGUgSUNVIDIu
MAogICAgKi8KLSAgaW5saW5lIGludDMyX3QgaW5kZXhPZihVQ2hhciBjLAorICBpbmxpbmUgaW50
MzJfdCBpbmRleE9mKGNoYXIxNl90IGMsCiAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCiAg
ICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKIApAQCAtMTE1NCw3ICsxMTk1LDcg
QEAgcHVibGljOgogICAgKiBvciAtMSBpZiBub3QgZm91bmQuCiAgICAqIEBzdGFibGUgSUNVIDIu
MAogICAgKi8KLSAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0No
YXJzLAorICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihjb25zdCBjaGFyMTZfdCAqc3JjQ2hh
cnMsCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgICBpbnQz
Ml90IHN0YXJ0KSBjb25zdDsKIApAQCAtMTE3MCw3ICsxMjExLDcgQEAgcHVibGljOgogICAgKiBv
ciAtMSBpZiBub3QgZm91bmQuCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgaW5saW5l
IGludDMyX3QgbGFzdEluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICBpbmxpbmUgaW50
MzJfdCBsYXN0SW5kZXhPZihDb25zdENoYXIxNlB0ciBzcmNDaGFycywKICAgICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCiAgICAgICAg
ICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKQEAgLTExOTEsNyArMTIzMiw3IEBAIHB1Ymxp
YzoKICAgICogb3IgLTEgaWYgbm90IGZvdW5kLgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICov
Ci0gIGludDMyX3QgbGFzdEluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICBpbnQzMl90
IGxhc3RJbmRleE9mKGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCwKICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAg
ICAgICAgIGludDMyX3Qgc3RhcnQsCkBAIC0xMjA0LDcgKzEyNDUsNyBAQCBwdWJsaWM6CiAgICAq
IEByZXR1cm4gVGhlIG9mZnNldCBpbnRvIHRoaXMgb2YgPFRUPmM8L1RUPiwgb3IgLTEgaWYgbm90
IGZvdW5kLgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBpbnQzMl90IGxh
c3RJbmRleE9mKFVDaGFyIGMpIGNvbnN0OworICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihj
aGFyMTZfdCBjKSBjb25zdDsKIAogICAvKioKICAgICogTG9jYXRlIGluIHRoaXMgdGhlIGxhc3Qg
b2NjdXJyZW5jZSBvZiB0aGUgY29kZSBwb2ludCA8VFQ+YzwvVFQ+LApAQCAtMTIyNCw3ICsxMjY1
LDcgQEAgcHVibGljOgogICAgKiBAcmV0dXJuIFRoZSBvZmZzZXQgaW50byB0aGlzIG9mIDxUVD5j
PC9UVD4sIG9yIC0xIGlmIG5vdCBmb3VuZC4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwot
ICBpbmxpbmUgaW50MzJfdCBsYXN0SW5kZXhPZihVQ2hhciBjLAorICBpbmxpbmUgaW50MzJfdCBs
YXN0SW5kZXhPZihjaGFyMTZfdCBjLAogICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25z
dDsKIAogICAvKioKQEAgLTEyNDksNyArMTI5MCw3IEBAIHB1YmxpYzoKICAgICogQHJldHVybiBU
aGUgb2Zmc2V0IGludG8gdGhpcyBvZiA8VFQ+YzwvVFQ+LCBvciAtMSBpZiBub3QgZm91bmQuCiAg
ICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2Yo
VUNoYXIgYywKKyAgaW5saW5lIGludDMyX3QgbGFzdEluZGV4T2YoY2hhcjE2X3QgYywKICAgICAg
ICAgICAgICAgaW50MzJfdCBzdGFydCwKICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNv
bnN0OwogCkBAIC0xMjc5LDcgKzEzMjAsNyBAQCBwdWJsaWM6CiAgICAqICAgICAgICAgb3IgMHhm
ZmZmIGlmIHRoZSBvZmZzZXQgaXMgbm90IHZhbGlkIGZvciB0aGlzIHN0cmluZwogICAgKiBAc3Rh
YmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBVQ2hhciBjaGFyQXQoaW50MzJfdCBvZmZzZXQp
IGNvbnN0OworICBpbmxpbmUgY2hhcjE2X3QgY2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsK
IAogICAvKioKICAgICogUmV0dXJuIHRoZSBjb2RlIHVuaXQgYXQgb2Zmc2V0IDx0dD5vZmZzZXQ8
L3R0Pi4KQEAgLTEyODgsNyArMTMyOSw3IEBAIHB1YmxpYzoKICAgICogQHJldHVybiB0aGUgY29k
ZSB1bml0IGF0IG9mZnNldCA8dHQ+b2Zmc2V0PC90dD4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAg
ICAqLwotICBpbmxpbmUgVUNoYXIgb3BlcmF0b3JbXSAoaW50MzJfdCBvZmZzZXQpIGNvbnN0Owor
ICBpbmxpbmUgY2hhcjE2X3Qgb3BlcmF0b3JbXSAoaW50MzJfdCBvZmZzZXQpIGNvbnN0OwogCiAg
IC8qKgogICAgKiBSZXR1cm4gdGhlIGNvZGUgcG9pbnQgdGhhdCBjb250YWlucyB0aGUgY29kZSB1
bml0CkBAIC0xNDA5LDcgKzE0NTAsNyBAQCBwdWJsaWM6CiAgICAqLwogICBpbmxpbmUgdm9pZCBl
eHRyYWN0KGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAotICAgICAg
ICAgICBVQ2hhciAqZHN0LAorICAgICAgICAgICBDaGFyMTZQdHIgZHN0LAogICAgICAgICAgICBp
bnQzMl90IGRzdFN0YXJ0ID0gMCkgY29uc3Q7CiAKICAgLyoqCkBAIC0xNDI4LDEzICsxNDY5LDEz
IEBAIHB1YmxpYzoKICAgICogdGhlbiBleHRyYWN0KCkgd2lsbCBub3QgY29weSB0aGUgY29udGVu
dHMuCiAgICAqCiAgICAqIEBwYXJhbSBkZXN0IERlc3RpbmF0aW9uIHN0cmluZyBidWZmZXIuCi0g
ICAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgTnVtYmVyIG9mIFVDaGFycyBhdmFpbGFibGUgYXQgZGVz
dC4KKyAgICogQHBhcmFtIGRlc3RDYXBhY2l0eSBOdW1iZXIgb2YgY2hhcjE2X3RzIGF2YWlsYWJs
ZSBhdCBkZXN0LgogICAgKiBAcGFyYW0gZXJyb3JDb2RlIElDVSBlcnJvciBjb2RlLgogICAgKiBA
cmV0dXJuIGxlbmd0aCgpCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KICAgaW50MzJfdAot
ICBleHRyYWN0KFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgZXh0cmFjdChD
aGFyMTZQdHIgZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCiAgICAgICAgICAgVUVycm9yQ29k
ZSAmZXJyb3JDb2RlKSBjb25zdDsKIAogICAvKioKQEAgLTE0NjQsNyArMTUwNSw3IEBAIHB1Ymxp
YzoKICAgICovCiAgIGlubGluZSB2b2lkIGV4dHJhY3RCZXR3ZWVuKGludDMyX3Qgc3RhcnQsCiAg
ICAgICAgICAgICAgIGludDMyX3QgbGltaXQsCi0gICAgICAgICAgICAgIFVDaGFyICpkc3QsCisg
ICAgICAgICAgICAgIGNoYXIxNl90ICpkc3QsCiAgICAgICAgICAgICAgIGludDMyX3QgZHN0U3Rh
cnQgPSAwKSBjb25zdDsKIAogICAvKioKQEAgLTE0ODEsMTIgKzE1MjIsMTIgQEAgcHVibGljOgog
ICAgICAgICAgICAgICBVbmljb2RlU3RyaW5nJiB0YXJnZXQpIGNvbnN0OwogCiAgIC8qKgotICAg
KiBDb3B5IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSAKLSAgICogWzx0dD5zdGFydDwvVFQ+
LCA8dHQ+c3RhcnQgKyBsZW5ndGg8L1RUPikgaW50byBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzLgor
ICAgKiBDb3B5IHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgKiBbPHR0PnN0YXJ0PC9U
VD4sIDx0dD5zdGFydCArIHN0YXJ0TGVuZ3RoPC9UVD4pIGludG8gYW4gYXJyYXkgb2YgY2hhcmFj
dGVycy4KICAgICogQWxsIGNoYXJhY3RlcnMgbXVzdCBiZSBpbnZhcmlhbnQgKHNlZSB1dHlwZXMu
aCkuCiAgICAqIFVzZSBVU19JTlYgYXMgdGhlIGxhc3QsIHNpZ25hdHVyZS1kaXN0aW5ndWlzaGlu
ZyBwYXJhbWV0ZXIuCiAgICAqCi0gICAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd3JpdGUgYW55
IG1vcmUgdGhhbiA8Y29kZT50YXJnZXRMZW5ndGg8L2NvZGU+CisgICAqIFRoaXMgZnVuY3Rpb24g
ZG9lcyBub3Qgd3JpdGUgYW55IG1vcmUgdGhhbiA8Y29kZT50YXJnZXRDYXBhY2l0eTwvY29kZT4K
ICAgICogY2hhcmFjdGVycyBidXQgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBlbnRpcmUgb3V0
cHV0IHN0cmluZwogICAgKiBzbyB0aGF0IG9uZSBjYW4gYWxsb2NhdGUgYSBsYXJnZXIgYnVmZmVy
IGFuZCBjYWxsIHRoZSBmdW5jdGlvbiBhZ2FpbgogICAgKiBpZiBuZWNlc3NhcnkuCkBAIC0xNjY1
LDggKzE3MDYsNiBAQCBwdWJsaWM6CiAgICAqLwogICB2b2lkIHRvVVRGOChCeXRlU2luayAmc2lu
aykgY29uc3Q7CiAKLSNpZiBVX0hBVkVfU1REX1NUUklORwotCiAgIC8qKgogICAgKiBDb252ZXJ0
IHRoZSBVbmljb2RlU3RyaW5nIHRvIFVURi04IGFuZCBhcHBlbmQgdGhlIHJlc3VsdAogICAgKiB0
byBhIHN0YW5kYXJkIHN0cmluZy4KQEAgLTE2ODEsMTMgKzE3MjAsMTEgQEAgcHVibGljOgogICAg
Ki8KICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+CiAgIFN0cmluZ0NsYXNzICZ0b1VU
RjhTdHJpbmcoU3RyaW5nQ2xhc3MgJnJlc3VsdCkgY29uc3QgewotICAgIFN0cmluZ0J5dGVTaW5r
PFN0cmluZ0NsYXNzPiBzYnMoJnJlc3VsdCk7CisgICAgU3RyaW5nQnl0ZVNpbms8U3RyaW5nQ2xh
c3M+IHNicygmcmVzdWx0LCBsZW5ndGgoKSk7CiAgICAgdG9VVEY4KHNicyk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKICAgfQogCi0jZW5kaWYKLQogICAvKioKICAgICogQ29udmVydCB0aGUgVW5pY29k
ZVN0cmluZyB0byBVVEYtMzIuCiAgICAqIFVucGFpcmVkIHN1cnJvZ2F0ZXMgYXJlIHJlcGxhY2Vk
IHdpdGggVStGRkZELgpAQCAtMTcwOSw3ICsxNzQ2LDcgQEAgcHVibGljOgogCiAgIC8qKgogICAg
KiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QuCi0gICAqIFRo
ZSBsZW5ndGggaXMgdGhlIG51bWJlciBvZiBVQ2hhciBjb2RlIHVuaXRzIGFyZSBpbiB0aGUgVW5p
Y29kZVN0cmluZy4KKyAgICogVGhlIGxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIGNoYXIxNl90IGNv
ZGUgdW5pdHMgYXJlIGluIHRoZSBVbmljb2RlU3RyaW5nLgogICAgKiBJZiB5b3Ugd2FudCB0aGUg
bnVtYmVyIG9mIGNvZGUgcG9pbnRzLCBwbGVhc2UgdXNlIGNvdW50Q2hhcjMyKCkuCiAgICAqIEBy
ZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QKICAgICogQHNlZSBj
b3VudENoYXIzMgpAQCAtMTcxOCwxNCArMTc1NSwxNCBAQCBwdWJsaWM6CiAgIGlubGluZSBpbnQz
Ml90IGxlbmd0aCh2b2lkKSBjb25zdDsKIAogICAvKioKLSAgICogQ291bnQgVW5pY29kZSBjb2Rl
IHBvaW50cyBpbiB0aGUgbGVuZ3RoIFVDaGFyIGNvZGUgdW5pdHMgb2YgdGhlIHN0cmluZy4KLSAg
ICogQSBjb2RlIHBvaW50IG1heSBvY2N1cHkgZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1
bml0cy4KKyAgICogQ291bnQgVW5pY29kZSBjb2RlIHBvaW50cyBpbiB0aGUgbGVuZ3RoIGNoYXIx
Nl90IGNvZGUgdW5pdHMgb2YgdGhlIHN0cmluZy4KKyAgICogQSBjb2RlIHBvaW50IG1heSBvY2N1
cHkgZWl0aGVyIG9uZSBvciB0d28gY2hhcjE2X3QgY29kZSB1bml0cy4KICAgICogQ291bnRpbmcg
Y29kZSBwb2ludHMgaW52b2x2ZXMgcmVhZGluZyBhbGwgY29kZSB1bml0cy4KICAgICoKICAgICog
VGhpcyBmdW5jdGlvbnMgaXMgYmFzaWNhbGx5IHRoZSBpbnZlcnNlIG9mIG1vdmVJbmRleDMyKCku
CiAgICAqCiAgICAqIEBwYXJhbSBzdGFydCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNvZGUgdW5p
dCB0byBjaGVjawotICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgVUNoYXIgY29kZSB1
bml0cyB0byBjaGVjaworICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcjE2X3Qg
Y29kZSB1bml0cyB0byBjaGVjawogICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY29kZSBwb2lu
dHMgaW4gdGhlIHNwZWNpZmllZCBjb2RlIHVuaXRzCiAgICAqIEBzZWUgbGVuZ3RoCiAgICAqIEBz
dGFibGUgSUNVIDIuMApAQCAtMTczNCw3ICsxNzcxLDcgQEAgcHVibGljOgogICBjb3VudENoYXIz
MihpbnQzMl90IHN0YXJ0PTAsIGludDMyX3QgbGVuZ3RoPUlOVDMyX01BWCkgY29uc3Q7CiAKICAg
LyoqCi0gICAqIENoZWNrIGlmIHRoZSBsZW5ndGggVUNoYXIgY29kZSB1bml0cyBvZiB0aGUgc3Ry
aW5nCisgICAqIENoZWNrIGlmIHRoZSBsZW5ndGggY2hhcjE2X3QgY29kZSB1bml0cyBvZiB0aGUg
c3RyaW5nCiAgICAqIGNvbnRhaW4gbW9yZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRoYW4gYSBjZXJ0
YWluIG51bWJlci4KICAgICogVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGNvdW50aW5nIGFs
bCBjb2RlIHBvaW50cyBpbiB0aGlzIHBhcnQgb2YgdGhlIHN0cmluZwogICAgKiBhbmQgY29tcGFy
aW5nIHRoYXQgbnVtYmVyIHdpdGggYSB0aHJlc2hvbGQuCkBAIC0xNzQyLDEwICsxNzc5LDEwIEBA
IHB1YmxpYzoKICAgICogZmFsbHMgd2l0aGluIGEgY2VydGFpbiByYW5nZSwgYW5kCiAgICAqIG5l
dmVyIG5lZWRzIHRvIGNvdW50IG1vcmUgdGhhbiAnbnVtYmVyKzEnIGNvZGUgcG9pbnRzLgogICAg
KiBMb2dpY2FsbHkgZXF1aXZhbGVudCB0byAoY291bnRDaGFyMzIoc3RhcnQsIGxlbmd0aCk+bnVt
YmVyKS4KLSAgICogQSBVbmljb2RlIGNvZGUgcG9pbnQgbWF5IG9jY3VweSBlaXRoZXIgb25lIG9y
IHR3byBVQ2hhciBjb2RlIHVuaXRzLgorICAgKiBBIFVuaWNvZGUgY29kZSBwb2ludCBtYXkgb2Nj
dXB5IGVpdGhlciBvbmUgb3IgdHdvIGNoYXIxNl90IGNvZGUgdW5pdHMuCiAgICAqCiAgICAqIEBw
YXJhbSBzdGFydCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNvZGUgdW5pdCB0byBjaGVjayAoMCBm
b3IgdGhlIGVudGlyZSBzdHJpbmcpCi0gICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBV
Q2hhciBjb2RlIHVuaXRzIHRvIGNoZWNrCisgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBv
ZiBjaGFyMTZfdCBjb2RlIHVuaXRzIHRvIGNoZWNrCiAgICAqICAgICAgICAgICAgICAgKHVzZSBJ
TlQzMl9NQVggZm9yIHRoZSBlbnRpcmUgc3RyaW5nOyByZW1lbWJlciB0aGF0IHN0YXJ0L2xlbmd0
aAogICAgKiAgICAgICAgICAgICAgICB2YWx1ZXMgYXJlIHBpbm5lZCkKICAgICogQHBhcmFtIG51
bWJlciBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSAoc3ViKXN0cmluZyBpcyBjb21w
YXJlZCBhZ2FpbnN0CkBAIC0xNzcxLDcgKzE4MDgsNyBAQCBwdWJsaWM6CiAgICAqIFRoaXMgaXMg
dXNlZnVsIHRvZ2V0aGVyIHdpdGggdGhlIGdldEJ1ZmZlciBmdW5jdGlvbnMuCiAgICAqIFNlZSB0
aGVyZSBmb3IgZGV0YWlscy4KICAgICoKLSAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIFVDaGFy
cyBhdmFpbGFibGUgaW4gdGhlIGludGVybmFsIGJ1ZmZlcgorICAgKiBAcmV0dXJuIHRoZSBudW1i
ZXIgb2YgY2hhcjE2X3RzIGF2YWlsYWJsZSBpbiB0aGUgaW50ZXJuYWwgYnVmZmVyCiAgICAqIEBz
ZWUgZ2V0QnVmZmVyCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KQEAgLTE4MTAsOSArMTg0
NywyMCBAQCBwdWJsaWM6CiAgIC8qKgogICAgKiBBc3NpZ25tZW50IG9wZXJhdG9yLiAgUmVwbGFj
ZSB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIFVuaWNvZGVTdHJpbmcKICAgICogd2l0aCB0aGUgY2hh
cmFjdGVycyBmcm9tIDxUVD5zcmNUZXh0PC9UVD4uCisgICAqCisgICAqIFN0YXJ0aW5nIHdpdGgg
SUNVIDIuNCwgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IgYW5kIHRoZSBjb3B5IGNvbnN0cnVjdG9y
CisgICAqIGFsbG9jYXRlIGEgbmV3IGJ1ZmZlciBhbmQgY29weSB0aGUgYnVmZmVyIGNvbnRlbnRz
IGV2ZW4gZm9yIHJlYWRvbmx5IGFsaWFzZXMuCisgICAqIEJ5IGNvbnRyYXN0LCB0aGUgZmFzdENv
cHlGcm9tKCkgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgb2xkLAorICAgKiBtb3JlIGVmZmljaWVu
dCBidXQgbGVzcyBzYWZlIGJlaGF2aW9yCisgICAqIG9mIG1ha2luZyB0aGlzIHN0cmluZyBhbHNv
IGEgcmVhZG9ubHkgYWxpYXMgdG8gdGhlIHNhbWUgYnVmZmVyLgorICAgKgorICAgKiBJZiB0aGUg
c291cmNlIG9iamVjdCBoYXMgYW4gIm9wZW4iIGJ1ZmZlciBmcm9tIGdldEJ1ZmZlcihtaW5DYXBh
Y2l0eSksCisgICAqIHRoZW4gdGhlIGNvcHkgaXMgYW4gZW1wdHkgc3RyaW5nLgorICAgKgogICAg
KiBAcGFyYW0gc3JjVGV4dCBUaGUgdGV4dCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIHRvIHJl
cGxhY2UKICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCiAgICAqIEBzdGFibGUgSUNV
IDIuMAorICAgKiBAc2VlIGZhc3RDb3B5RnJvbQogICAgKi8KICAgVW5pY29kZVN0cmluZyAmb3Bl
cmF0b3I9KGNvbnN0IFVuaWNvZGVTdHJpbmcgJnNyY1RleHQpOwogCkBAIC0xODM0LDEyICsxODgy
LDU4IEBAIHB1YmxpYzoKICAgICogaW5jbHVkaW5nIGl0cyBjb250ZW50cywgZm9yIGV4YW1wbGUg
Zm9yIHN0cmluZ3MgZnJvbSByZXNvdXJjZSBidW5kbGVzCiAgICAqIG9yIGFsaWFzZXMgdG8gc3Ry
aW5nIGNvbnN0YW50cy4KICAgICoKKyAgICogSWYgdGhlIHNvdXJjZSBvYmplY3QgaGFzIGFuICJv
cGVuIiBidWZmZXIgZnJvbSBnZXRCdWZmZXIobWluQ2FwYWNpdHkpLAorICAgKiB0aGVuIHRoZSBj
b3B5IGlzIGFuIGVtcHR5IHN0cmluZy4KKyAgICoKICAgICogQHBhcmFtIHNyYyBUaGUgdGV4dCBj
b250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIHRvIHJlcGxhY2UuCiAgICAqIEByZXR1cm4gYSByZWZl
cmVuY2UgdG8gdGhpcwogICAgKiBAc3RhYmxlIElDVSAyLjQKICAgICovCiAgIFVuaWNvZGVTdHJp
bmcgJmZhc3RDb3B5RnJvbShjb25zdCBVbmljb2RlU3RyaW5nICZzcmMpOwogCisgIC8qKgorICAg
KiBNb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIG1pZ2h0IGxlYXZlIHNyYyBpbiBib2d1cyBzdGF0
ZS4KKyAgICogVGhpcyBzdHJpbmcgd2lsbCBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzIGFuZCBzdGF0
ZSB0aGF0IHRoZSBzb3VyY2Ugc3RyaW5nIGhhZC4KKyAgICogVGhlIGJlaGF2aW9yIGlzIHVuZGVm
aW5lZCBpZiAqdGhpcyBhbmQgc3JjIGFyZSB0aGUgc2FtZSBvYmplY3QuCisgICAqIEBwYXJhbSBz
cmMgc291cmNlIHN0cmluZworICAgKiBAcmV0dXJuICp0aGlzCisgICAqIEBzdGFibGUgSUNVIDU2
CisgICAqLworICBVbmljb2RlU3RyaW5nICZvcGVyYXRvcj0oVW5pY29kZVN0cmluZyAmJnNyYykg
VV9OT0VYQ0VQVCB7CisgICAgcmV0dXJuIG1vdmVGcm9tKHNyYyk7CisgIH0KKworICAvLyBkbyBu
b3QgdXNlICNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSSBmb3IgbW92ZUZyb20sIG5lZWRlZCBieSBu
b24tZHJhZnQgQVBJCisgIC8qKgorICAgKiBNb3ZlIGFzc2lnbm1lbnQsIG1pZ2h0IGxlYXZlIHNy
YyBpbiBib2d1cyBzdGF0ZS4KKyAgICogVGhpcyBzdHJpbmcgd2lsbCBoYXZlIHRoZSBzYW1lIGNv
bnRlbnRzIGFuZCBzdGF0ZSB0aGF0IHRoZSBzb3VyY2Ugc3RyaW5nIGhhZC4KKyAgICogVGhlIGJl
aGF2aW9yIGlzIHVuZGVmaW5lZCBpZiAqdGhpcyBhbmQgc3JjIGFyZSB0aGUgc2FtZSBvYmplY3Qu
CisgICAqCisgICAqIENhbiBiZSBjYWxsZWQgZXhwbGljaXRseSwgZG9lcyBub3QgbmVlZCBDKysx
MSBzdXBwb3J0LgorICAgKiBAcGFyYW0gc3JjIHNvdXJjZSBzdHJpbmcKKyAgICogQHJldHVybiAq
dGhpcworICAgKiBAZHJhZnQgSUNVIDU2CisgICAqLworICBVbmljb2RlU3RyaW5nICZtb3ZlRnJv
bShVbmljb2RlU3RyaW5nICZzcmMpIFVfTk9FWENFUFQ7CisKKyAgLyoqCisgICAqIFN3YXAgc3Ry
aW5ncy4KKyAgICogQHBhcmFtIG90aGVyIG90aGVyIHN0cmluZworICAgKiBAc3RhYmxlIElDVSA1
NgorICAgKi8KKyAgdm9pZCBzd2FwKFVuaWNvZGVTdHJpbmcgJm90aGVyKSBVX05PRVhDRVBUOwor
CisgIC8qKgorICAgKiBOb24tbWVtYmVyIFVuaWNvZGVTdHJpbmcgc3dhcCBmdW5jdGlvbi4KKyAg
ICogQHBhcmFtIHMxIHdpbGwgZ2V0IHMyJ3MgY29udGVudHMgYW5kIHN0YXRlCisgICAqIEBwYXJh
bSBzMiB3aWxsIGdldCBzMSdzIGNvbnRlbnRzIGFuZCBzdGF0ZQorICAgKiBAc3RhYmxlIElDVSA1
NgorICAgKi8KKyAgZnJpZW5kIFVfQ09NTU9OX0FQSSBpbmxpbmUgdm9pZCBVX0VYUE9SVDIKKyAg
c3dhcChVbmljb2RlU3RyaW5nICZzMSwgVW5pY29kZVN0cmluZyAmczIpIFVfTk9FWENFUFQgewor
ICAgIHMxLnN3YXAoczIpOworICB9CisKICAgLyoqCiAgICAqIEFzc2lnbm1lbnQgb3BlcmF0b3Iu
ICBSZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgVW5pY29kZVN0cmluZwogICAgKiB3aXRo
IHRoZSBjb2RlIHVuaXQgPFRUPmNoPC9UVD4uCkBAIC0xODQ3LDcgKzE5NDEsNyBAQCBwdWJsaWM6
CiAgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcwogICAgKiBAc3RhYmxlIElDVSAyLjAK
ICAgICovCi0gIGlubGluZSBVbmljb2RlU3RyaW5nJiBvcGVyYXRvcj0gKFVDaGFyIGNoKTsKKyAg
aW5saW5lIFVuaWNvZGVTdHJpbmcmIG9wZXJhdG9yPSAoY2hhcjE2X3QgY2gpOwogCiAgIC8qKgog
ICAgKiBBc3NpZ25tZW50IG9wZXJhdG9yLiAgUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGlz
IFVuaWNvZGVTdHJpbmcKQEAgLTE5MDcsNyArMjAwMSw3IEBAIHB1YmxpYzoKICAgICogQHJldHVy
biBhIHJlZmVyZW5jZSB0byB0aGlzCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgaW5s
aW5lIFVuaWNvZGVTdHJpbmcmIHNldFRvKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgaW5saW5l
IFVuaWNvZGVTdHJpbmcmIHNldFRvKGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKIAogICAvKioKQEAgLTE5MTgsNyArMjAxMiw3IEBA
IHB1YmxpYzoKICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGlzCiAgICAqIEBzdGFibGUg
SUNVIDIuMAogICAgKi8KLSAgVW5pY29kZVN0cmluZyYgc2V0VG8oVUNoYXIgc3JjQ2hhcik7Cisg
IFVuaWNvZGVTdHJpbmcmIHNldFRvKGNoYXIxNl90IHNyY0NoYXIpOwogCiAgIC8qKgogICAgKiBT
ZXQgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0IHRvIHRoZSBjb2Rl
IHBvaW50CkBAIC0xOTMxLDcgKzIwMjUsNyBAQCBwdWJsaWM6CiAgIFVuaWNvZGVTdHJpbmcmIHNl
dFRvKFVDaGFyMzIgc3JjQ2hhcik7CiAKICAgLyoqCi0gICAqIEFsaWFzaW5nIHNldFRvKCkgZnVu
Y3Rpb24sIGFuYWxvZ291cyB0byB0aGUgcmVhZG9ubHktYWxpYXNpbmcgVUNoYXIqIGNvbnN0cnVj
dG9yLgorICAgKiBBbGlhc2luZyBzZXRUbygpIGZ1bmN0aW9uLCBhbmFsb2dvdXMgdG8gdGhlIHJl
YWRvbmx5LWFsaWFzaW5nIGNoYXIxNl90KiBjb25zdHJ1Y3Rvci4KICAgICogVGhlIHRleHQgd2ls
bCBiZSB1c2VkIGZvciB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QsIGJ1dAogICAgKiBpdCB3aWxs
IG5vdCBiZSByZWxlYXNlZCB3aGVuIHRoZSBVbmljb2RlU3RyaW5nIGlzIGRlc3Ryb3llZC4KICAg
ICogVGhpcyBoYXMgY29weS1vbi13cml0ZSBzZW1hbnRpY3M6CkBAIC0xOTU0LDExICsyMDQ4LDEx
IEBAIHB1YmxpYzoKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwogICBVbmljb2RlU3RyaW5n
ICZzZXRUbyhVQm9vbCBpc1Rlcm1pbmF0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFVDaGFyICp0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBDb25zdENoYXIxNlB0ciB0ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHRleHRMZW5ndGgpOwogCiAgIC8qKgot
ICAgKiBBbGlhc2luZyBzZXRUbygpIGZ1bmN0aW9uLCBhbmFsb2dvdXMgdG8gdGhlIHdyaXRhYmxl
LWFsaWFzaW5nIFVDaGFyKiBjb25zdHJ1Y3Rvci4KKyAgICogQWxpYXNpbmcgc2V0VG8oKSBmdW5j
dGlvbiwgYW5hbG9nb3VzIHRvIHRoZSB3cml0YWJsZS1hbGlhc2luZyBjaGFyMTZfdCogY29uc3Ry
dWN0b3IuCiAgICAqIFRoZSB0ZXh0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIFVuaWNvZGVTdHJpbmcg
b2JqZWN0LCBidXQKICAgICogaXQgd2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUgVW5pY29k
ZVN0cmluZyBpcyBkZXN0cm95ZWQuCiAgICAqIFRoaXMgaGFzIHdyaXRlLXRocm91Z2ggc2VtYW50
aWNzOgpAQCAtMTk2NywxNiArMjA2MSwxNiBAQCBwdWJsaWM6CiAgICAqIGEgbmV3IGJ1ZmZlciB3
aWxsIGJlIGFsbG9jYXRlZCBhbmQgdGhlIGNvbnRlbnRzIGNvcGllZCBhcyB3aXRoIHJlZ3VsYXJs
eQogICAgKiBjb25zdHJ1Y3RlZCBzdHJpbmdzLgogICAgKiBJbiBhbiBhc3NpZ25tZW50IHRvIGFu
b3RoZXIgVW5pY29kZVN0cmluZywgdGhlIGJ1ZmZlciB3aWxsIGJlIGNvcGllZC4KLSAgICogVGhl
IGV4dHJhY3QoVUNoYXIgKmRzdCkgZnVuY3Rpb24gZGV0ZWN0cyB3aGV0aGVyIHRoZSBkc3QgcG9p
bnRlciBpcyB0aGUgc2FtZQorICAgKiBUaGUgZXh0cmFjdChDaGFyMTZQdHIgZHN0KSBmdW5jdGlv
biBkZXRlY3RzIHdoZXRoZXIgdGhlIGRzdCBwb2ludGVyIGlzIHRoZSBzYW1lCiAgICAqIGFzIHRo
ZSBzdHJpbmcgYnVmZmVyIGl0c2VsZiBhbmQgd2lsbCBpbiB0aGlzIGNhc2Ugbm90IGNvcHkgdGhl
IGNvbnRlbnRzLgogICAgKgogICAgKiBAcGFyYW0gYnVmZmVyIFRoZSBjaGFyYWN0ZXJzIHRvIGFs
aWFzIGZvciB0aGUgVW5pY29kZVN0cmluZy4KICAgICogQHBhcmFtIGJ1ZmZMZW5ndGggVGhlIG51
bWJlciBvZiBVbmljb2RlIGNoYXJhY3RlcnMgaW4gPGNvZGU+YnVmZmVyPC9jb2RlPiB0byBhbGlh
cy4KLSAgICogQHBhcmFtIGJ1ZmZDYXBhY2l0eSBUaGUgc2l6ZSBvZiA8Y29kZT5idWZmZXI8L2Nv
ZGU+IGluIFVDaGFycy4KKyAgICogQHBhcmFtIGJ1ZmZDYXBhY2l0eSBUaGUgc2l6ZSBvZiA8Y29k
ZT5idWZmZXI8L2NvZGU+IGluIGNoYXIxNl90cy4KICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0
byB0aGlzCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgVW5pY29kZVN0cmluZyAmc2V0
VG8oVUNoYXIgKmJ1ZmZlciwKKyAgVW5pY29kZVN0cmluZyAmc2V0VG8oY2hhcjE2X3QgKmJ1ZmZl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBidWZmTGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IGJ1ZmZDYXBhY2l0eSk7CiAKQEAgLTIwMTIsNyArMjEwNiw3
IEBAIHB1YmxpYzoKICAgICogICBzLnRydW5jYXRlKDApOyAgICAgICAgLy8gc2V0IHRvIGFuIGVt
cHR5IHN0cmluZyAoY29tcGxldGUgdHJ1bmNhdGlvbiksIG9yCiAgICAqICAgcz1Vbmljb2RlU3Ry
aW5nKCk7ICAgIC8vIGFzc2lnbiBhbiBlbXB0eSBzdHJpbmcsIG9yCiAgICAqICAgcy5zZXRUbygo
VUNoYXIzMiktMSk7IC8vIHNldCB0byBhIHBzZXVkbyBjb2RlIHBvaW50IHRoYXQgaXMgb3V0IG9m
IHJhbmdlLCBvcgotICAgKiAgIHN0YXRpYyBjb25zdCBVQ2hhciBudWw9MDsKKyAgICogICBzdGF0
aWMgY29uc3QgY2hhcjE2X3QgbnVsPTA7CiAgICAqICAgcy5zZXRUbygmbnVsLCAwKTsgICAgIC8v
IHNldCB0byBhbiBlbXB0eSBDIFVuaWNvZGUgc3RyaW5nCiAgICAqIH0KICAgICogXGVuZGNvZGUK
QEAgLTIwMzAsNyArMjEyNCw3IEBAIHB1YmxpYzoKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAq
LwogICBVbmljb2RlU3RyaW5nJiBzZXRDaGFyQXQoaW50MzJfdCBvZmZzZXQsCi0gICAgICAgICAg
ICAgICBVQ2hhciBjaCk7CisgICAgICAgICAgICAgICBjaGFyMTZfdCBjaCk7CiAKIAogICAvKiBB
cHBlbmQgb3BlcmF0aW9ucyAqLwpAQCAtMjA0Miw3ICsyMTM2LDcgQEAgcHVibGljOgogICAgKiBA
cmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwot
IGlubGluZSAgVW5pY29kZVN0cmluZyYgb3BlcmF0b3IrPSAoVUNoYXIgY2gpOworIGlubGluZSAg
VW5pY29kZVN0cmluZyYgb3BlcmF0b3IrPSAoY2hhcjE2X3QgY2gpOwogCiAgIC8qKgogICAgKiBB
cHBlbmQgb3BlcmF0b3IuIEFwcGVuZCB0aGUgY29kZSBwb2ludCA8VFQ+Y2g8L1RUPiB0byB0aGUg
VW5pY29kZVN0cmluZwpAQCAtMjEwMiw3ICsyMTk2LDcgQEAgcHVibGljOgogICAgKiBAcmV0dXJu
IGEgcmVmZXJlbmNlIHRvIHRoaXMKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwotICBpbmxp
bmUgVW5pY29kZVN0cmluZyYgYXBwZW5kKGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgaW5saW5l
IFVuaWNvZGVTdHJpbmcmIGFwcGVuZChjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAgICAgICAg
ICAgICBpbnQzMl90IHNyY1N0YXJ0LAogICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpOwog
CkBAIC0yMTE1LDcgKzIyMDksNyBAQCBwdWJsaWM6CiAgICAqIEByZXR1cm4gYSByZWZlcmVuY2Ug
dG8gdGhpcwogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIGlubGluZSBVbmljb2RlU3Ry
aW5nJiBhcHBlbmQoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICBpbmxpbmUgVW5pY29kZVN0cmlu
ZyYgYXBwZW5kKENvbnN0Q2hhcjE2UHRyIHNyY0NoYXJzLAogICAgICAgICAgICAgaW50MzJfdCBz
cmNMZW5ndGgpOwogCiAgIC8qKgpAQCAtMjEyNCw3ICsyMjE4LDcgQEAgcHVibGljOgogICAgKiBA
cmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMKICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwot
ICBpbmxpbmUgVW5pY29kZVN0cmluZyYgYXBwZW5kKFVDaGFyIHNyY0NoYXIpOworICBpbmxpbmUg
VW5pY29kZVN0cmluZyYgYXBwZW5kKGNoYXIxNl90IHNyY0NoYXIpOwogCiAgIC8qKgogICAgKiBB
cHBlbmQgdGhlIGNvZGUgcG9pbnQgPFRUPnNyY0NoYXI8L1RUPiB0byB0aGUgVW5pY29kZVN0cmlu
ZyBvYmplY3QuCkBAIC0yMTgwLDcgKzIyNzQsNyBAQCBwdWJsaWM6CiAgICAqIEBzdGFibGUgSUNV
IDIuMAogICAgKi8KICAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIGluc2VydChpbnQzMl90IHN0YXJ0
LAotICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgY29uc3Qg
Y2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKICAgICAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKTsKIApAQCAtMjE5NCw3ICsyMjg4LDcgQEAgcHVibGlj
OgogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCiAgIGlubGluZSBVbmljb2RlU3RyaW5nJiBp
bnNlcnQoaW50MzJfdCBzdGFydCwKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywK
KyAgICAgICAgICAgIENvbnN0Q2hhcjE2UHRyIHNyY0NoYXJzLAogICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpOwogCiAgIC8qKgpAQCAtMjIwNiw3ICsyMzAwLDcgQEAgcHVibGljOgogICAg
KiBAc3RhYmxlIElDVSAyLjAKICAgICovCiAgIGlubGluZSBVbmljb2RlU3RyaW5nJiBpbnNlcnQo
aW50MzJfdCBzdGFydCwKLSAgICAgICAgICAgIFVDaGFyIHNyY0NoYXIpOworICAgICAgICAgICAg
Y2hhcjE2X3Qgc3JjQ2hhcik7CiAKICAgLyoqCiAgICAqIEluc2VydCB0aGUgY29kZSBwb2ludCA8
VFQ+c3JjQ2hhcjwvVFQ+IGludG8gdGhlIFVuaWNvZGVTdHJpbmcgb2JqZWN0IGF0CkBAIC0yMjgw
LDcgKzIzNzQsNyBAQCBwdWJsaWM6CiAgICAqLwogICBVbmljb2RlU3RyaW5nJiByZXBsYWNlKGlu
dDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCi0gICAgICAgICAgICAg
Y29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90ICpzcmND
aGFycywKICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAogICAgICAgICAgICAgIGludDMy
X3Qgc3JjTGVuZ3RoKTsKIApAQCAtMjI5OCw3ICsyMzkyLDcgQEAgcHVibGljOgogICAgKi8KICAg
aW5saW5lIFVuaWNvZGVTdHJpbmcmIHJlcGxhY2UoaW50MzJfdCBzdGFydCwKICAgICAgICAgICAg
ICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisg
ICAgICAgICAgICAgQ29uc3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAgICAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgpOwogCiAgIC8qKgpAQCAtMjMxNCw3ICsyNDA4LDcgQEAgcHVibGljOgogICAg
Ki8KICAgaW5saW5lIFVuaWNvZGVTdHJpbmcmIHJlcGxhY2UoaW50MzJfdCBzdGFydCwKICAgICAg
ICAgICAgICBpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgICAgICBVQ2hhciBzcmNDaGFyKTsKKyAg
ICAgICAgICAgICBjaGFyMTZfdCBzcmNDaGFyKTsKIAogICAvKioKICAgICogUmVwbGFjZSB0aGUg
Y2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKQEAgLTI1MTIsNyArMjYwNiw3IEBAIHB1YmxpYzoKICAg
ICogQHN0YWJsZSBJQ1UgMi4wCiAgICAqLwogICBVQm9vbCBwYWRMZWFkaW5nKGludDMyX3QgdGFy
Z2V0TGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICBVQ2hhciBwYWRDaGFyID0gMHgwMDIwKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hhcjE2X3QgcGFkQ2hhciA9IDB4MDAyMCk7CiAKICAgLyoq
CiAgICAqIFBhZCB0aGUgZW5kIG9mIHRoaXMgVW5pY29kZVN0cmluZyB3aXRoIHRoZSBjaGFyYWN0
ZXIgPFRUPnBhZENoYXI8L1RUPi4KQEAgLTI1MjYsNyArMjYyMCw3IEBAIHB1YmxpYzoKICAgICog
QHN0YWJsZSBJQ1UgMi4wCiAgICAqLwogICBVQm9vbCBwYWRUcmFpbGluZyhpbnQzMl90IHRhcmdl
dExlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgIFVDaGFyIHBhZENoYXIgPSAweDAwMjApOwor
ICAgICAgICAgICAgICAgICAgICAgY2hhcjE2X3QgcGFkQ2hhciA9IDB4MDAyMCk7CiAKICAgLyoq
CiAgICAqIFRydW5jYXRlIHRoaXMgVW5pY29kZVN0cmluZyB0byB0aGUgPFRUPnRhcmdldExlbmd0
aDwvVFQ+LgpAQCAtMjY4MSwxMSArMjc3NSwxMSBAQCBwdWJsaWM6CiAgICAqICAgICAgICAgICAg
ICAgICAgYnJlYWsgaXRlcmF0b3IgaXMgb3BlbmVkLgogICAgKiAgICAgICAgICAgICAgICAgIE90
aGVyd2lzZSB0aGUgcHJvdmlkZWQgaXRlcmF0b3IgaXMgc2V0IHRvIHRoZSBzdHJpbmcncyB0ZXh0
LgogICAgKiBAcGFyYW0gbG9jYWxlICAgIFRoZSBsb2NhbGUgdG8gY29uc2lkZXIuCisgICAqIEBw
YXJhbSBvcHRpb25zICAgT3B0aW9ucyBiaXQgc2V0LCB1c3VhbGx5IDAuIFNlZSBVX1RJVExFQ0FT
RV9OT19MT1dFUkNBU0UsCisgICAqICAgICAgICAgICAgICAgICAgVV9USVRMRUNBU0VfTk9fQlJF
QUtfQURKVVNUTUVOVCwgVV9USVRMRUNBU0VfQURKVVNUX1RPX0NBU0VELAorICAgKiAgICAgICAg
ICAgICAgICAgIFVfVElUTEVDQVNFX1dIT0xFX1NUUklORywgVV9USVRMRUNBU0VfU0VOVEVOQ0VT
LgogICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGJpdCBzZXQsIHNlZSB1Y2FzZW1hcF9vcGVu
KCkuCiAgICAqIEByZXR1cm4gQSByZWZlcmVuY2UgdG8gdGhpcy4KLSAgICogQHNlZSBVX1RJVExF
Q0FTRV9OT19MT1dFUkNBU0UKLSAgICogQHNlZSBVX1RJVExFQ0FTRV9OT19CUkVBS19BREpVU1RN
RU5UCi0gICAqIEBzZWUgdWNhc2VtYXBfb3BlbgogICAgKiBAc3RhYmxlIElDVSAzLjgKICAgICov
CiAgIFVuaWNvZGVTdHJpbmcgJnRvVGl0bGUoQnJlYWtJdGVyYXRvciAqdGl0bGVJdGVyLCBjb25z
dCBMb2NhbGUgJmxvY2FsZSwgdWludDMyX3Qgb3B0aW9ucyk7CkBAIC0yNzEzLDcgKzI4MDcsNyBA
QCBwdWJsaWM6CiAKICAgLyoqCiAgICAqIEdldCBhIHJlYWQvd3JpdGUgcG9pbnRlciB0byB0aGUg
aW50ZXJuYWwgYnVmZmVyLgotICAgKiBUaGUgYnVmZmVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgbGFy
Z2UgZW5vdWdoIGZvciBhdCBsZWFzdCBtaW5DYXBhY2l0eSBVQ2hhcnMsCisgICAqIFRoZSBidWZm
ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBsYXJnZSBlbm91Z2ggZm9yIGF0IGxlYXN0IG1pbkNhcGFj
aXR5IGNoYXIxNl90cywKICAgICogd3JpdGFibGUsIGFuZCBpcyBzdGlsbCBvd25lZCBieSB0aGUg
VW5pY29kZVN0cmluZyBvYmplY3QuCiAgICAqIENhbGxzIHRvIGdldEJ1ZmZlcihtaW5DYXBhY2l0
eSkgbXVzdCBub3QgYmUgbmVzdGVkLCBhbmQKICAgICogbXVzdCBiZSBtYXRjaGVkIHdpdGggY2Fs
bHMgdG8gcmVsZWFzZUJ1ZmZlcihuZXdMZW5ndGgpLgpAQCAtMjc0NCwxNyArMjgzOCwxNyBAQCBw
dWJsaWM6CiAgICAqIC0gWW91IG11c3QgY2FsbCByZWxlYXNlQnVmZmVyKG5ld0xlbmd0aCkgYmVm
b3JlIGFuZCBpbiBvcmRlciB0bwogICAgKiAgIHJldHVybiB0byBub3JtYWwgVW5pY29kZVN0cmlu
ZyBvcGVyYXRpb24uCiAgICAqCi0gICAqIEBwYXJhbSBtaW5DYXBhY2l0eSB0aGUgbWluaW11bSBu
dW1iZXIgb2YgVUNoYXJzIHRoYXQgYXJlIHRvIGJlIGF2YWlsYWJsZQorICAgKiBAcGFyYW0gbWlu
Q2FwYWNpdHkgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGNoYXIxNl90cyB0aGF0IGFyZSB0byBiZSBh
dmFpbGFibGUKICAgICogICAgICAgIGluIHRoZSBidWZmZXIsIHN0YXJ0aW5nIGF0IHRoZSByZXR1
cm5lZCBwb2ludGVyOwogICAgKiAgICAgICAgZGVmYXVsdCB0byB0aGUgY3VycmVudCBzdHJpbmcg
Y2FwYWNpdHkgaWYgbWluQ2FwYWNpdHk9PS0xCiAgICAqIEByZXR1cm4gYSB3cml0YWJsZSBwb2lu
dGVyIHRvIHRoZSBpbnRlcm5hbCBzdHJpbmcgYnVmZmVyLAotICAgKiAgICAgICAgIG9yIDAgaWYg
YW4gZXJyb3Igb2NjdXJzIChuZXN0ZWQgY2FsbHMsIG91dCBvZiBtZW1vcnkpCisgICAqICAgICAg
ICAgb3IgbnVsbHB0ciBpZiBhbiBlcnJvciBvY2N1cnMgKG5lc3RlZCBjYWxscywgb3V0IG9mIG1l
bW9yeSkKICAgICoKICAgICogQHNlZSByZWxlYXNlQnVmZmVyCiAgICAqIEBzZWUgZ2V0VGVybWlu
YXRlZEJ1ZmZlcigpCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgVUNoYXIgKmdldEJ1
ZmZlcihpbnQzMl90IG1pbkNhcGFjaXR5KTsKKyAgY2hhcjE2X3QgKmdldEJ1ZmZlcihpbnQzMl90
IG1pbkNhcGFjaXR5KTsKIAogICAvKioKICAgICogUmVsZWFzZSBhIHJlYWQvd3JpdGUgYnVmZmVy
IG9uIGEgVW5pY29kZVN0cmluZyBvYmplY3Qgd2l0aCBhbgpAQCAtMjgwMiwxMyArMjg5NiwxMyBA
QCBwdWJsaWM6CiAgICAqIGJlIG1vZGlmaWVkLgogICAgKgogICAgKiBAcmV0dXJuIGEgcmVhZC1v
bmx5IHBvaW50ZXIgdG8gdGhlIGludGVybmFsIHN0cmluZyBidWZmZXIsCi0gICAqICAgICAgICAg
b3IgMCBpZiB0aGUgc3RyaW5nIGlzIGVtcHR5IG9yIGJvZ3VzCisgICAqICAgICAgICAgb3IgbnVs
bHB0ciBpZiB0aGUgc3RyaW5nIGlzIGVtcHR5IG9yIGJvZ3VzCiAgICAqCiAgICAqIEBzZWUgZ2V0
QnVmZmVyKGludDMyX3QgbWluQ2FwYWNpdHkpCiAgICAqIEBzZWUgZ2V0VGVybWluYXRlZEJ1ZmZl
cigpCiAgICAqIEBzdGFibGUgSUNVIDIuMAogICAgKi8KLSAgaW5saW5lIGNvbnN0IFVDaGFyICpn
ZXRCdWZmZXIoKSBjb25zdDsKKyAgaW5saW5lIGNvbnN0IGNoYXIxNl90ICpnZXRCdWZmZXIoKSBj
b25zdDsKIAogICAvKioKICAgICogR2V0IGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIGludGVy
bmFsIGJ1ZmZlciwKQEAgLTI4NDMsNyArMjkzNyw3IEBAIHB1YmxpYzoKICAgICogQHNlZSBnZXRC
dWZmZXIoKQogICAgKiBAc3RhYmxlIElDVSAyLjIKICAgICovCi0gIGNvbnN0IFVDaGFyICpnZXRU
ZXJtaW5hdGVkQnVmZmVyKCk7CisgIGNvbnN0IGNoYXIxNl90ICpnZXRUZXJtaW5hdGVkQnVmZmVy
KCk7CiAKICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIC8v
IENvbnN0cnVjdG9ycwpAQCAtMjg1NSw4ICsyOTQ5LDggQEAgcHVibGljOgogICBpbmxpbmUgVW5p
Y29kZVN0cmluZygpOwogCiAgIC8qKgotICAgKiBDb25zdHJ1Y3QgYSBVbmljb2RlU3RyaW5nIHdp
dGggY2FwYWNpdHkgdG8gaG9sZCA8VFQ+Y2FwYWNpdHk8L1RUPiBVQ2hhcnMKLSAgICogQHBhcmFt
IGNhcGFjaXR5IHRoZSBudW1iZXIgb2YgVUNoYXJzIHRoaXMgVW5pY29kZVN0cmluZyBzaG91bGQg
aG9sZAorICAgKiBDb25zdHJ1Y3QgYSBVbmljb2RlU3RyaW5nIHdpdGggY2FwYWNpdHkgdG8gaG9s
ZCA8VFQ+Y2FwYWNpdHk8L1RUPiBjaGFyMTZfdHMKKyAgICogQHBhcmFtIGNhcGFjaXR5IHRoZSBu
dW1iZXIgb2YgY2hhcjE2X3RzIHRoaXMgVW5pY29kZVN0cmluZyBzaG91bGQgaG9sZAogICAgKiBi
ZWZvcmUgYSByZXNpemUgaXMgbmVjZXNzYXJ5OyBpZiBjb3VudCBpcyBncmVhdGVyIHRoYW4gMCBh
bmQgY291bnQKICAgICogY29kZSBwb2ludHMgYyB0YWtlIHVwIG1vcmUgc3BhY2UgdGhhbiBjYXBh
Y2l0eSwgdGhlbiBjYXBhY2l0eSBpcyBhZGp1c3RlZAogICAgKiBhY2NvcmRpbmdseS4KQEAgLTI4
NjgsNyArMjk2Miw3IEBAIHB1YmxpYzoKICAgVW5pY29kZVN0cmluZyhpbnQzMl90IGNhcGFjaXR5
LCBVQ2hhcjMyIGMsIGludDMyX3QgY291bnQpOwogCiAgIC8qKgotICAgKiBTaW5nbGUgVUNoYXIg
KGNvZGUgdW5pdCkgY29uc3RydWN0b3IuCisgICAqIFNpbmdsZSBjaGFyMTZfdCAoY29kZSB1bml0
KSBjb25zdHJ1Y3Rvci4KICAgICoKICAgICogSXQgaXMgcmVjb21tZW5kZWQgdG8gbWFyayB0aGlz
IGNvbnN0cnVjdG9yICJleHBsaWNpdCIgYnkKICAgICogPGNvZGU+LURVTklTVFJfRlJPTV9DSEFS
X0VYUExJQ0lUPWV4cGxpY2l0PC9jb2RlPgpAQCAtMjg3Niw3ICsyOTcwLDcgQEAgcHVibGljOgog
ICAgKiBAcGFyYW0gY2ggdGhlIGNoYXJhY3RlciB0byBwbGFjZSBpbiB0aGUgVW5pY29kZVN0cmlu
ZwogICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIFVOSVNUUl9GUk9NX0NIQVJfRVhQTElD
SVQgVW5pY29kZVN0cmluZyhVQ2hhciBjaCk7CisgIFVOSVNUUl9GUk9NX0NIQVJfRVhQTElDSVQg
VW5pY29kZVN0cmluZyhjaGFyMTZfdCBjaCk7CiAKICAgLyoqCiAgICAqIFNpbmdsZSBVQ2hhcjMy
IChjb2RlIHBvaW50KSBjb25zdHJ1Y3Rvci4KQEAgLTI4OTAsNyArMjk4NCw3IEBAIHB1YmxpYzoK
ICAgVU5JU1RSX0ZST01fQ0hBUl9FWFBMSUNJVCBVbmljb2RlU3RyaW5nKFVDaGFyMzIgY2gpOwog
CiAgIC8qKgotICAgKiBVQ2hhciogY29uc3RydWN0b3IuCisgICAqIGNoYXIxNl90KiBjb25zdHJ1
Y3Rvci4KICAgICoKICAgICogSXQgaXMgcmVjb21tZW5kZWQgdG8gbWFyayB0aGlzIGNvbnN0cnVj
dG9yICJleHBsaWNpdCIgYnkKICAgICogPGNvZGU+LURVTklTVFJfRlJPTV9TVFJJTkdfRVhQTElD
SVQ9ZXhwbGljaXQ8L2NvZGU+CkBAIC0yODk5LDIwICsyOTkzLDEyMSBAQCBwdWJsaWM6CiAgICAq
IG11c3QgYmUgTlVMTCAoVSswMDAwKSB0ZXJtaW5hdGVkLgogICAgKiBAc3RhYmxlIElDVSAyLjAK
ICAgICovCi0gIFVOSVNUUl9GUk9NX1NUUklOR19FWFBMSUNJVCBVbmljb2RlU3RyaW5nKGNvbnN0
IFVDaGFyICp0ZXh0KTsKKyAgVU5JU1RSX0ZST01fU1RSSU5HX0VYUExJQ0lUIFVuaWNvZGVTdHJp
bmcoY29uc3QgY2hhcjE2X3QgKnRleHQpOworCisgIC8qCisgICAqIERvIG5vdCB1c2UgI2lmbmRl
ZiBVX0hJREVfRFJBRlRfQVBJIGZvciB0aGUgZm9sbG93aW5nIGNvbnN0cnVjdG9yLAorICAgKiBp
dCBzaG91bGQgYWx3YXlzIGJlIGF2YWlsYWJsZSByZWdhcmRsZXNzIG9mIFVfSElERV9EUkFGVF9B
UEkgc3RhdHVzCisgICAqLworI2lmICFVX0NIQVIxNl9JU19UWVBFREVGCisgIC8qKgorICAgKiB1
aW50MTZfdCAqIGNvbnN0cnVjdG9yLgorICAgKiBEZWxlZ2F0ZXMgdG8gVW5pY29kZVN0cmluZyhj
b25zdCBjaGFyMTZfdCAqKS4KKyAgICoKKyAgICogSXQgaXMgcmVjb21tZW5kZWQgdG8gbWFyayB0
aGlzIGNvbnN0cnVjdG9yICJleHBsaWNpdCIgYnkKKyAgICogPGNvZGU+LURVTklTVFJfRlJPTV9T
VFJJTkdfRVhQTElDSVQ9ZXhwbGljaXQ8L2NvZGU+CisgICAqIG9uIHRoZSBjb21waWxlciBjb21t
YW5kIGxpbmUgb3Igc2ltaWxhci4KKyAgICogQHBhcmFtIHRleHQgTlVMLXRlcm1pbmF0ZWQgVVRG
LTE2IHN0cmluZworICAgKiBAZHJhZnQgSUNVIDU5CisgICAqLworICBVTklTVFJfRlJPTV9TVFJJ
TkdfRVhQTElDSVQgVW5pY29kZVN0cmluZyhjb25zdCB1aW50MTZfdCAqdGV4dCkgOgorICAgICAg
VW5pY29kZVN0cmluZyhDb25zdENoYXIxNlB0cih0ZXh0KSkge30KKyNlbmRpZgorCisgIC8qCisg
ICAqIERvIG5vdCB1c2UgI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJIGZvciB0aGUgZm9sbG93aW5n
IGNvbnN0cnVjdG9yLAorICAgKiBpdCBzaG91bGQgYWx3YXlzIGJlIGF2YWlsYWJsZSByZWdhcmRs
ZXNzIG9mIFVfSElERV9EUkFGVF9BUEkgc3RhdHVzCisgICAqLworI2lmIFVfU0laRU9GX1dDSEFS
X1Q9PTIgfHwgZGVmaW5lZChVX0lOX0RPWFlHRU4pCisgIC8qKgorICAgKiB3Y2hhcl90ICogY29u
c3RydWN0b3IuCisgICAqIChPbmx5IGRlZmluZWQgaWYgVV9TSVpFT0ZfV0NIQVJfVD09Mi4pCisg
ICAqIERlbGVnYXRlcyB0byBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIxNl90ICopLgorICAgKgor
ICAgKiBJdCBpcyByZWNvbW1lbmRlZCB0byBtYXJrIHRoaXMgY29uc3RydWN0b3IgImV4cGxpY2l0
IiBieQorICAgKiA8Y29kZT4tRFVOSVNUUl9GUk9NX1NUUklOR19FWFBMSUNJVD1leHBsaWNpdDwv
Y29kZT4KKyAgICogb24gdGhlIGNvbXBpbGVyIGNvbW1hbmQgbGluZSBvciBzaW1pbGFyLgorICAg
KiBAcGFyYW0gdGV4dCBOVUwtdGVybWluYXRlZCBVVEYtMTYgc3RyaW5nCisgICAqIEBkcmFmdCBJ
Q1UgNTkKKyAgICovCisgIFVOSVNUUl9GUk9NX1NUUklOR19FWFBMSUNJVCBVbmljb2RlU3RyaW5n
KGNvbnN0IHdjaGFyX3QgKnRleHQpIDoKKyAgICAgIFVuaWNvZGVTdHJpbmcoQ29uc3RDaGFyMTZQ
dHIodGV4dCkpIHt9CisjZW5kaWYKIAorICAvKgorICAgKiBEbyBub3QgdXNlICNpZm5kZWYgVV9I
SURFX0RSQUZUX0FQSSBmb3IgdGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RvciwKKyAgICogaXQgc2hv
dWxkIGFsd2F5cyBiZSBhdmFpbGFibGUgcmVnYXJkbGVzcyBvZiBVX0hJREVfRFJBRlRfQVBJIHN0
YXR1cworICAgKi8KICAgLyoqCi0gICAqIFVDaGFyKiBjb25zdHJ1Y3Rvci4KKyAgICogbnVsbHB0
cl90IGNvbnN0cnVjdG9yLgorICAgKiBFZmZlY3RpdmVseSB0aGUgc2FtZSBhcyB0aGUgZGVmYXVs
dCBjb25zdHJ1Y3RvciwgbWFrZXMgYW4gZW1wdHkgc3RyaW5nIG9iamVjdC4KKyAgICoKKyAgICog
SXQgaXMgcmVjb21tZW5kZWQgdG8gbWFyayB0aGlzIGNvbnN0cnVjdG9yICJleHBsaWNpdCIgYnkK
KyAgICogPGNvZGU+LURVTklTVFJfRlJPTV9TVFJJTkdfRVhQTElDSVQ9ZXhwbGljaXQ8L2NvZGU+
CisgICAqIG9uIHRoZSBjb21waWxlciBjb21tYW5kIGxpbmUgb3Igc2ltaWxhci4KKyAgICogQHBh
cmFtIHRleHQgbnVsbHB0cgorICAgKiBAZHJhZnQgSUNVIDU5CisgICAqLworICBVTklTVFJfRlJP
TV9TVFJJTkdfRVhQTElDSVQgaW5saW5lIFVuaWNvZGVTdHJpbmcoY29uc3Qgc3RkOjpudWxscHRy
X3QgdGV4dCk7CisKKyAgLyoqCisgICAqIGNoYXIxNl90KiBjb25zdHJ1Y3Rvci4KICAgICogQHBh
cmFtIHRleHQgVGhlIGNoYXJhY3RlcnMgdG8gcGxhY2UgaW4gdGhlIFVuaWNvZGVTdHJpbmcuCiAg
ICAqIEBwYXJhbSB0ZXh0TGVuZ3RoIFRoZSBudW1iZXIgb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGlu
IDxUVD50ZXh0PC9UVD4KICAgICogdG8gY29weS4KICAgICogQHN0YWJsZSBJQ1UgMi4wCiAgICAq
LwotICBVbmljb2RlU3RyaW5nKGNvbnN0IFVDaGFyICp0ZXh0LAorICBVbmljb2RlU3RyaW5nKGNv
bnN0IGNoYXIxNl90ICp0ZXh0LAogICAgICAgICBpbnQzMl90IHRleHRMZW5ndGgpOwogCisgIC8q
CisgICAqIERvIG5vdCB1c2UgI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJIGZvciB0aGUgZm9sbG93
aW5nIGNvbnN0cnVjdG9yLAorICAgKiBpdCBzaG91bGQgYWx3YXlzIGJlIGF2YWlsYWJsZSByZWdh
cmRsZXNzIG9mIFVfSElERV9EUkFGVF9BUEkgc3RhdHVzCisgICAqLworI2lmICFVX0NIQVIxNl9J
U19UWVBFREVGCiAgIC8qKgotICAgKiBSZWFkb25seS1hbGlhc2luZyBVQ2hhciogY29uc3RydWN0
b3IuCisgICAqIHVpbnQxNl90ICogY29uc3RydWN0b3IuCisgICAqIERlbGVnYXRlcyB0byBVbmlj
b2RlU3RyaW5nKGNvbnN0IGNoYXIxNl90ICosIGludDMyX3QpLgorICAgKiBAcGFyYW0gdGV4dCBV
VEYtMTYgc3RyaW5nCisgICAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAorICAgKiBAZHJh
ZnQgSUNVIDU5CisgICAqLworICBVbmljb2RlU3RyaW5nKGNvbnN0IHVpbnQxNl90ICp0ZXh0LCBp
bnQzMl90IGxlbmd0aCkgOgorICAgICAgVW5pY29kZVN0cmluZyhDb25zdENoYXIxNlB0cih0ZXh0
KSwgbGVuZ3RoKSB7fQorI2VuZGlmCisKKyAgLyoKKyAgICogRG8gbm90IHVzZSAjaWZuZGVmIFVf
SElERV9EUkFGVF9BUEkgZm9yIHRoZSBmb2xsb3dpbmcgY29uc3RydWN0b3IsCisgICAqIGl0IHNo
b3VsZCBhbHdheXMgYmUgYXZhaWxhYmxlIHJlZ2FyZGxlc3Mgb2YgVV9ISURFX0RSQUZUX0FQSSBz
dGF0dXMKKyAgICovCisjaWYgVV9TSVpFT0ZfV0NIQVJfVD09MiB8fCBkZWZpbmVkKFVfSU5fRE9Y
WUdFTikKKyAgLyoqCisgICAqIHdjaGFyX3QgKiBjb25zdHJ1Y3Rvci4KKyAgICogKE9ubHkgZGVm
aW5lZCBpZiBVX1NJWkVPRl9XQ0hBUl9UPT0yLikKKyAgICogRGVsZWdhdGVzIHRvIFVuaWNvZGVT
dHJpbmcoY29uc3QgY2hhcjE2X3QgKiwgaW50MzJfdCkuCisgICAqIEBwYXJhbSB0ZXh0IE5VTC10
ZXJtaW5hdGVkIFVURi0xNiBzdHJpbmcKKyAgICogQHBhcmFtIGxlbmd0aCBzdHJpbmcgbGVuZ3Ro
CisgICAqIEBkcmFmdCBJQ1UgNTkKKyAgICovCisgIFVuaWNvZGVTdHJpbmcoY29uc3Qgd2NoYXJf
dCAqdGV4dCwgaW50MzJfdCBsZW5ndGgpIDoKKyAgICAgIFVuaWNvZGVTdHJpbmcoQ29uc3RDaGFy
MTZQdHIodGV4dCksIGxlbmd0aCkge30KKyNlbmRpZgorCisgIC8qCisgICAqIERvIG5vdCB1c2Ug
I2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJIGZvciB0aGUgZm9sbG93aW5nIGNvbnN0cnVjdG9yLAor
ICAgKiBpdCBzaG91bGQgYWx3YXlzIGJlIGF2YWlsYWJsZSByZWdhcmRsZXNzIG9mIFVfSElERV9E
UkFGVF9BUEkgc3RhdHVzCisgICAqLworICAvKioKKyAgICogbnVsbHB0cl90IGNvbnN0cnVjdG9y
LgorICAgKiBFZmZlY3RpdmVseSB0aGUgc2FtZSBhcyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvciwg
bWFrZXMgYW4gZW1wdHkgc3RyaW5nIG9iamVjdC4KKyAgICogQHBhcmFtIHRleHQgbnVsbHB0cgor
ICAgKiBAcGFyYW0gbGVuZ3RoIGlnbm9yZWQKKyAgICogQGRyYWZ0IElDVSA1OQorICAgKi8KKyAg
aW5saW5lIFVuaWNvZGVTdHJpbmcoY29uc3Qgc3RkOjpudWxscHRyX3QgdGV4dCwgaW50MzJfdCBs
ZW5ndGgpOworCisgIC8qKgorICAgKiBSZWFkb25seS1hbGlhc2luZyBjaGFyMTZfdCogY29uc3Ry
dWN0b3IuCiAgICAqIFRoZSB0ZXh0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIFVuaWNvZGVTdHJpbmcg
b2JqZWN0LCBidXQKICAgICogaXQgd2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUgVW5pY29k
ZVN0cmluZyBpcyBkZXN0cm95ZWQuCiAgICAqIFRoaXMgaGFzIGNvcHktb24td3JpdGUgc2VtYW50
aWNzOgpAQCAtMjkzNCwxMSArMzEyOSwxMSBAQCBwdWJsaWM6CiAgICAqIEBzdGFibGUgSUNVIDIu
MAogICAgKi8KICAgVW5pY29kZVN0cmluZyhVQm9vbCBpc1Rlcm1pbmF0ZWQsCi0gICAgICAgICAg
ICAgICAgY29uc3QgVUNoYXIgKnRleHQsCisgICAgICAgICAgICAgICAgQ29uc3RDaGFyMTZQdHIg
dGV4dCwKICAgICAgICAgICAgICAgICBpbnQzMl90IHRleHRMZW5ndGgpOwogCiAgIC8qKgotICAg
KiBXcml0YWJsZS1hbGlhc2luZyBVQ2hhciogY29uc3RydWN0b3IuCisgICAqIFdyaXRhYmxlLWFs
aWFzaW5nIGNoYXIxNl90KiBjb25zdHJ1Y3Rvci4KICAgICogVGhlIHRleHQgd2lsbCBiZSB1c2Vk
IGZvciB0aGUgVW5pY29kZVN0cmluZyBvYmplY3QsIGJ1dAogICAgKiBpdCB3aWxsIG5vdCBiZSBy
ZWxlYXNlZCB3aGVuIHRoZSBVbmljb2RlU3RyaW5nIGlzIGRlc3Ryb3llZC4KICAgICogVGhpcyBo
YXMgd3JpdGUtdGhyb3VnaCBzZW1hbnRpY3M6CkBAIC0yOTQ3LDE1ICszMTQyLDY0IEBAIHB1Ymxp
YzoKICAgICogYSBuZXcgYnVmZmVyIHdpbGwgYmUgYWxsb2NhdGVkIGFuZCB0aGUgY29udGVudHMg
Y29waWVkIGFzIHdpdGggcmVndWxhcmx5CiAgICAqIGNvbnN0cnVjdGVkIHN0cmluZ3MuCiAgICAq
IEluIGFuIGFzc2lnbm1lbnQgdG8gYW5vdGhlciBVbmljb2RlU3RyaW5nLCB0aGUgYnVmZmVyIHdp
bGwgYmUgY29waWVkLgotICAgKiBUaGUgZXh0cmFjdChVQ2hhciAqZHN0KSBmdW5jdGlvbiBkZXRl
Y3RzIHdoZXRoZXIgdGhlIGRzdCBwb2ludGVyIGlzIHRoZSBzYW1lCisgICAqIFRoZSBleHRyYWN0
KENoYXIxNlB0ciBkc3QpIGZ1bmN0aW9uIGRldGVjdHMgd2hldGhlciB0aGUgZHN0IHBvaW50ZXIg
aXMgdGhlIHNhbWUKICAgICogYXMgdGhlIHN0cmluZyBidWZmZXIgaXRzZWxmIGFuZCB3aWxsIGlu
IHRoaXMgY2FzZSBub3QgY29weSB0aGUgY29udGVudHMuCiAgICAqCiAgICAqIEBwYXJhbSBidWZm
ZXIgVGhlIGNoYXJhY3RlcnMgdG8gYWxpYXMgZm9yIHRoZSBVbmljb2RlU3RyaW5nLgogICAgKiBA
cGFyYW0gYnVmZkxlbmd0aCBUaGUgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycyBpbiA8Y29k
ZT5idWZmZXI8L2NvZGU+IHRvIGFsaWFzLgotICAgKiBAcGFyYW0gYnVmZkNhcGFjaXR5IFRoZSBz
aXplIG9mIDxjb2RlPmJ1ZmZlcjwvY29kZT4gaW4gVUNoYXJzLgorICAgKiBAcGFyYW0gYnVmZkNh
cGFjaXR5IFRoZSBzaXplIG9mIDxjb2RlPmJ1ZmZlcjwvY29kZT4gaW4gY2hhcjE2X3RzLgogICAg
KiBAc3RhYmxlIElDVSAyLjAKICAgICovCi0gIFVuaWNvZGVTdHJpbmcoVUNoYXIgKmJ1ZmZlciwg
aW50MzJfdCBidWZmTGVuZ3RoLCBpbnQzMl90IGJ1ZmZDYXBhY2l0eSk7CisgIFVuaWNvZGVTdHJp
bmcoY2hhcjE2X3QgKmJ1ZmZlciwgaW50MzJfdCBidWZmTGVuZ3RoLCBpbnQzMl90IGJ1ZmZDYXBh
Y2l0eSk7CisKKyAgLyoKKyAgICogRG8gbm90IHVzZSAjaWZuZGVmIFVfSElERV9EUkFGVF9BUEkg
Zm9yIHRoZSBmb2xsb3dpbmcgY29uc3RydWN0b3IsCisgICAqIGl0IHNob3VsZCBhbHdheXMgYmUg
YXZhaWxhYmxlIHJlZ2FyZGxlc3Mgb2YgVV9ISURFX0RSQUZUX0FQSSBzdGF0dXMKKyAgICovCisj
aWYgIVVfQ0hBUjE2X0lTX1RZUEVERUYKKyAgLyoqCisgICAqIFdyaXRhYmxlLWFsaWFzaW5nIHVp
bnQxNl90ICogY29uc3RydWN0b3IuCisgICAqIERlbGVnYXRlcyB0byBVbmljb2RlU3RyaW5nKGNv
bnN0IGNoYXIxNl90ICosIGludDMyX3QsIGludDMyX3QpLgorICAgKiBAcGFyYW0gYnVmZmVyIHdy
aXRhYmxlIGJ1ZmZlciBvZi9mb3IgVVRGLTE2IHRleHQKKyAgICogQHBhcmFtIGJ1ZmZMZW5ndGgg
bGVuZ3RoIG9mIHRoZSBjdXJyZW50IGJ1ZmZlciBjb250ZW50cworICAgKiBAcGFyYW0gYnVmZkNh
cGFjaXR5IGJ1ZmZlciBjYXBhY2l0eQorICAgKiBAZHJhZnQgSUNVIDU5CisgICAqLworICBVbmlj
b2RlU3RyaW5nKHVpbnQxNl90ICpidWZmZXIsIGludDMyX3QgYnVmZkxlbmd0aCwgaW50MzJfdCBi
dWZmQ2FwYWNpdHkpIDoKKyAgICAgIFVuaWNvZGVTdHJpbmcoQ2hhcjE2UHRyKGJ1ZmZlciksIGJ1
ZmZMZW5ndGgsIGJ1ZmZDYXBhY2l0eSkge30KKyNlbmRpZgorCisgIC8qCisgICAqIERvIG5vdCB1
c2UgI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJIGZvciB0aGUgZm9sbG93aW5nIGNvbnN0cnVjdG9y
LAorICAgKiBpdCBzaG91bGQgYWx3YXlzIGJlIGF2YWlsYWJsZSByZWdhcmRsZXNzIG9mIFVfSElE
RV9EUkFGVF9BUEkgc3RhdHVzCisgICAqLworI2lmIFVfU0laRU9GX1dDSEFSX1Q9PTIgfHwgZGVm
aW5lZChVX0lOX0RPWFlHRU4pCisgIC8qKgorICAgKiBXcml0YWJsZS1hbGlhc2luZyB3Y2hhcl90
ICogY29uc3RydWN0b3IuCisgICAqIChPbmx5IGRlZmluZWQgaWYgVV9TSVpFT0ZfV0NIQVJfVD09
Mi4pCisgICAqIERlbGVnYXRlcyB0byBVbmljb2RlU3RyaW5nKGNvbnN0IGNoYXIxNl90ICosIGlu
dDMyX3QsIGludDMyX3QpLgorICAgKiBAcGFyYW0gYnVmZmVyIHdyaXRhYmxlIGJ1ZmZlciBvZi9m
b3IgVVRGLTE2IHRleHQKKyAgICogQHBhcmFtIGJ1ZmZMZW5ndGggbGVuZ3RoIG9mIHRoZSBjdXJy
ZW50IGJ1ZmZlciBjb250ZW50cworICAgKiBAcGFyYW0gYnVmZkNhcGFjaXR5IGJ1ZmZlciBjYXBh
Y2l0eQorICAgKiBAZHJhZnQgSUNVIDU5CisgICAqLworICBVbmljb2RlU3RyaW5nKHdjaGFyX3Qg
KmJ1ZmZlciwgaW50MzJfdCBidWZmTGVuZ3RoLCBpbnQzMl90IGJ1ZmZDYXBhY2l0eSkgOgorICAg
ICAgVW5pY29kZVN0cmluZyhDaGFyMTZQdHIoYnVmZmVyKSwgYnVmZkxlbmd0aCwgYnVmZkNhcGFj
aXR5KSB7fQorI2VuZGlmCisKKyAgLyoKKyAgICogRG8gbm90IHVzZSAjaWZuZGVmIFVfSElERV9E
UkFGVF9BUEkgZm9yIHRoZSBmb2xsb3dpbmcgY29uc3RydWN0b3IsCisgICAqIGl0IHNob3VsZCBh
bHdheXMgYmUgYXZhaWxhYmxlIHJlZ2FyZGxlc3Mgb2YgVV9ISURFX0RSQUZUX0FQSSBzdGF0dXMK
KyAgICovCisgIC8qKgorICAgKiBXcml0YWJsZS1hbGlhc2luZyBudWxscHRyX3QgY29uc3RydWN0
b3IuCisgICAqIEVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9y
LCBtYWtlcyBhbiBlbXB0eSBzdHJpbmcgb2JqZWN0LgorICAgKiBAcGFyYW0gYnVmZmVyIG51bGxw
dHIKKyAgICogQHBhcmFtIGJ1ZmZMZW5ndGggaWdub3JlZAorICAgKiBAcGFyYW0gYnVmZkNhcGFj
aXR5IGlnbm9yZWQKKyAgICogQGRyYWZ0IElDVSA1OQorICAgKi8KKyAgaW5saW5lIFVuaWNvZGVT
dHJpbmcoc3RkOjpudWxscHRyX3QgYnVmZmVyLCBpbnQzMl90IGJ1ZmZMZW5ndGgsIGludDMyX3Qg
YnVmZkNhcGFjaXR5KTsKIAogI2lmIFVfQ0hBUlNFVF9JU19VVEY4IHx8ICFVQ09ORklHX05PX0NP
TlZFUlNJT04KIApAQCAtMzA4OSwxMSArMzMzMywzMCBAQCBwdWJsaWM6CiAKICAgLyoqCiAgICAq
IENvcHkgY29uc3RydWN0b3IuCisgICAqCisgICAqIFN0YXJ0aW5nIHdpdGggSUNVIDIuNCwgdGhl
IGFzc2lnbm1lbnQgb3BlcmF0b3IgYW5kIHRoZSBjb3B5IGNvbnN0cnVjdG9yCisgICAqIGFsbG9j
YXRlIGEgbmV3IGJ1ZmZlciBhbmQgY29weSB0aGUgYnVmZmVyIGNvbnRlbnRzIGV2ZW4gZm9yIHJl
YWRvbmx5IGFsaWFzZXMuCisgICAqIEJ5IGNvbnRyYXN0LCB0aGUgZmFzdENvcHlGcm9tKCkgZnVu
Y3Rpb24gaW1wbGVtZW50cyB0aGUgb2xkLAorICAgKiBtb3JlIGVmZmljaWVudCBidXQgbGVzcyBz
YWZlIGJlaGF2aW9yCisgICAqIG9mIG1ha2luZyB0aGlzIHN0cmluZyBhbHNvIGEgcmVhZG9ubHkg
YWxpYXMgdG8gdGhlIHNhbWUgYnVmZmVyLgorICAgKgorICAgKiBJZiB0aGUgc291cmNlIG9iamVj
dCBoYXMgYW4gIm9wZW4iIGJ1ZmZlciBmcm9tIGdldEJ1ZmZlcihtaW5DYXBhY2l0eSksCisgICAq
IHRoZW4gdGhlIGNvcHkgaXMgYW4gZW1wdHkgc3RyaW5nLgorICAgKgogICAgKiBAcGFyYW0gdGhh
dCBUaGUgVW5pY29kZVN0cmluZyBvYmplY3QgdG8gY29weS4KICAgICogQHN0YWJsZSBJQ1UgMi4w
CisgICAqIEBzZWUgZmFzdENvcHlGcm9tCiAgICAqLwogICBVbmljb2RlU3RyaW5nKGNvbnN0IFVu
aWNvZGVTdHJpbmcmIHRoYXQpOwogCisgIC8qKgorICAgKiBNb3ZlIGNvbnN0cnVjdG9yLCBtaWdo
dCBsZWF2ZSBzcmMgaW4gYm9ndXMgc3RhdGUuCisgICAqIFRoaXMgc3RyaW5nIHdpbGwgaGF2ZSB0
aGUgc2FtZSBjb250ZW50cyBhbmQgc3RhdGUgdGhhdCB0aGUgc291cmNlIHN0cmluZyBoYWQuCisg
ICAqIEBwYXJhbSBzcmMgc291cmNlIHN0cmluZworICAgKiBAc3RhYmxlIElDVSA1NgorICAgKi8K
KyAgVW5pY29kZVN0cmluZyhVbmljb2RlU3RyaW5nICYmc3JjKSBVX05PRVhDRVBUOworCiAgIC8q
KgogICAgKiAnU3Vic3RyaW5nJyBjb25zdHJ1Y3RvciBmcm9tIHRhaWwgb2Ygc291cmNlIHN0cmlu
Zy4KICAgICogQHBhcmFtIHNyYyBUaGUgVW5pY29kZVN0cmluZyBvYmplY3QgdG8gY29weS4KQEAg
LTMxNDcsNyArMzQxMCw3IEBAIHB1YmxpYzoKICAgICogQHNlZSB0b1VURjhTdHJpbmcKICAgICog
QHN0YWJsZSBJQ1UgNC4yCiAgICAqLwotICBzdGF0aWMgVW5pY29kZVN0cmluZyBmcm9tVVRGOChj
b25zdCBTdHJpbmdQaWVjZSAmdXRmOCk7CisgIHN0YXRpYyBVbmljb2RlU3RyaW5nIGZyb21VVEY4
KFN0cmluZ1BpZWNlIHV0ZjgpOwogCiAgIC8qKgogICAgKiBDcmVhdGUgYSBVbmljb2RlU3RyaW5n
IGZyb20gYSBVVEYtMzIgc3RyaW5nLgpAQCAtMzI1MSw3ICszNTE0LDcgQEAgcHJvdGVjdGVkOgog
ICAgKiBVbmljb2RlU3RyaW5nOjpjaGFyQXQoKSB0byBiZSBpbmxpbmUgYWdhaW4gKHNlZSBqaXR0
ZXJidWcgNzA5KS4KICAgICogQHN0YWJsZSBJQ1UgMi40CiAgICAqLwotICB2aXJ0dWFsIFVDaGFy
IGdldENoYXJBdChpbnQzMl90IG9mZnNldCkgY29uc3Q7CisgIHZpcnR1YWwgY2hhcjE2X3QgZ2V0
Q2hhckF0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKIAogICAvKioKICAgICogVGhlIGNoYW5nZSBp
biBSZXBsYWNlYWJsZSB0byB1c2UgdmlydHVhbCBnZXRDaGFyMzJBdCgpIGFsbG93cwpAQCAtMzI2
Miw3ICszNTI1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAvLyBGb3IgY2hhciogY29u
c3RydWN0b3JzLiBDb3VsZCBiZSBtYWRlIHB1YmxpYy4KLSAgVW5pY29kZVN0cmluZyAmc2V0VG9V
VEY4KGNvbnN0IFN0cmluZ1BpZWNlICZ1dGY4KTsKKyAgVW5pY29kZVN0cmluZyAmc2V0VG9VVEY4
KFN0cmluZ1BpZWNlIHV0ZjgpOwogICAvLyBGb3IgZXh0cmFjdChjaGFyKikuCiAgIC8vIFdlIGNv
dWxkIG1ha2UgYSB0b1VURjgodGFyZ2V0LCBjYXBhY2l0eSwgZXJyb3JDb2RlKSBwdWJsaWMgYnV0
IG5vdAogICAvLyB0aGlzIHZlcnNpb246IE5ldyBBUEkgd2lsbCBiZSBjbGVhbmVyIGlmIHdlIG1h
a2UgY2FsbGVycyBjcmVhdGUgc3Vic3RyaW5ncwpAQCAtMzI4Nyw3ICszNTUwLDcgQEAgcHJpdmF0
ZToKIAogICBpbnQ4X3QgZG9Db21wYXJlKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgIGludDMy
X3QgbGVuZ3RoLAotICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAg
IGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwK
ICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0OwogCkBAIC0zMzAwLDcgKzM1NjMs
NyBAQCBwcml2YXRlOgogCiAgIGludDhfdCBkb0NvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90
IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyMTZfdCAqc3JjQ2hh
cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0
OwogCkBAIC0zMzE1LDEyICszNTc4LDEyIEBAIHByaXZhdGU6CiAgIGludDhfdAogICBkb0Nhc2VD
b21wYXJlKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsCi0g
ICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICAgICAgICBpbnQzMl90IHNyY1N0YXJ0
LAogICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgICAgIHVp
bnQzMl90IG9wdGlvbnMpIGNvbnN0OwogCi0gIGludDMyX3QgZG9JbmRleE9mKFVDaGFyIGMsCisg
IGludDMyX3QgZG9JbmRleE9mKGNoYXIxNl90IGMsCiAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0
LAogICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgpIGNvbnN0OwogCkBAIC0zMzI4LDcgKzM1OTEs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKSBjb25zdDsKIAotICBpbnQzMl90
IGRvTGFzdEluZGV4T2YoVUNoYXIgYywKKyAgaW50MzJfdCBkb0xhc3RJbmRleE9mKGNoYXIxNl90
IGMsCiAgICAgICAgICAgICAgICAgaW50MzJfdCBzdGFydCwKICAgICAgICAgICAgICAgICBpbnQz
Ml90IGxlbmd0aCkgY29uc3Q7CiAKQEAgLTMzMzgsMTQgKzM2MDEsMTQgQEAgcHJpdmF0ZToKIAog
ICB2b2lkIGRvRXh0cmFjdChpbnQzMl90IHN0YXJ0LAogICAgICAgICAgaW50MzJfdCBsZW5ndGgs
Ci0gICAgICAgICBVQ2hhciAqZHN0LAorICAgICAgICAgY2hhcjE2X3QgKmRzdCwKICAgICAgICAg
IGludDMyX3QgZHN0U3RhcnQpIGNvbnN0OwogCiAgIGlubGluZSB2b2lkIGRvRXh0cmFjdChpbnQz
Ml90IHN0YXJ0LAogICAgICAgICAgaW50MzJfdCBsZW5ndGgsCiAgICAgICAgICBVbmljb2RlU3Ry
aW5nJiB0YXJnZXQpIGNvbnN0OwogCi0gIGlubGluZSBVQ2hhciBkb0NoYXJBdChpbnQzMl90IG9m
ZnNldCkgIGNvbnN0OworICBpbmxpbmUgY2hhcjE2X3QgZG9DaGFyQXQoaW50MzJfdCBvZmZzZXQp
ICBjb25zdDsKIAogICBVbmljb2RlU3RyaW5nJiBkb1JlcGxhY2UoaW50MzJfdCBzdGFydCwKICAg
ICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLApAQCAtMzM1NSwxMCArMzYxOCwxMyBAQCBwcml2
YXRlOgogCiAgIFVuaWNvZGVTdHJpbmcmIGRvUmVwbGFjZShpbnQzMl90IHN0YXJ0LAogICAgICAg
ICAgICAgICAgaW50MzJfdCBsZW5ndGgsCi0gICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3Jj
Q2hhcnMsCisgICAgICAgICAgICAgICBjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAgICAgICAg
ICAgICAgICBpbnQzMl90IHNyY1N0YXJ0LAogICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgpOwogCisgIFVuaWNvZGVTdHJpbmcmIGRvQXBwZW5kKGNvbnN0IFVuaWNvZGVTdHJpbmcmIHNy
YywgaW50MzJfdCBzcmNTdGFydCwgaW50MzJfdCBzcmNMZW5ndGgpOworICBVbmljb2RlU3RyaW5n
JiBkb0FwcGVuZChjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsIGludDMyX3Qgc3JjU3RhcnQsIGlu
dDMyX3Qgc3JjTGVuZ3RoKTsKKwogICBVbmljb2RlU3RyaW5nJiBkb1JldmVyc2UoaW50MzJfdCBz
dGFydCwKICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKTsKIApAQCAtMzM2Nyw4ICszNjMz
LDggQEAgcHJpdmF0ZToKIAogICAvLyBnZXQgcG9pbnRlciB0byBzdGFydCBvZiBhcnJheQogICAv
LyB0aGVzZSBkbyBub3QgY2hlY2sgZm9yIGtPcGVuR2V0QnVmZmVyLCB1bmxpa2UgdGhlIHB1Ymxp
YyBnZXRCdWZmZXIoKSBmdW5jdGlvbgotICBpbmxpbmUgVUNoYXIqIGdldEFycmF5U3RhcnQodm9p
ZCk7Ci0gIGlubGluZSBjb25zdCBVQ2hhciogZ2V0QXJyYXlTdGFydCh2b2lkKSBjb25zdDsKKyAg
aW5saW5lIGNoYXIxNl90KiBnZXRBcnJheVN0YXJ0KHZvaWQpOworICBpbmxpbmUgY29uc3QgY2hh
cjE2X3QqIGdldEFycmF5U3RhcnQodm9pZCkgY29uc3Q7CiAKICAgaW5saW5lIFVCb29sIGhhc1No
b3J0TGVuZ3RoKCkgY29uc3Q7CiAgIGlubGluZSBpbnQzMl90IGdldFNob3J0TGVuZ3RoKCkgY29u
c3Q7CkBAIC0zMzg1LDcgKzM2NTEsNyBAQCBwcml2YXRlOgogICBpbmxpbmUgdm9pZCBzZXRTaG9y
dExlbmd0aChpbnQzMl90IGxlbik7CiAgIGlubGluZSB2b2lkIHNldExlbmd0aChpbnQzMl90IGxl
bik7CiAgIGlubGluZSB2b2lkIHNldFRvRW1wdHkoKTsKLSAgaW5saW5lIHZvaWQgc2V0QXJyYXko
VUNoYXIgKmFycmF5LCBpbnQzMl90IGxlbiwgaW50MzJfdCBjYXBhY2l0eSk7IC8vIHNldHMgbGVu
Z3RoIGJ1dCBub3QgZmxhZ3MKKyAgaW5saW5lIHZvaWQgc2V0QXJyYXkoY2hhcjE2X3QgKmFycmF5
LCBpbnQzMl90IGxlbiwgaW50MzJfdCBjYXBhY2l0eSk7IC8vIHNldHMgbGVuZ3RoIGJ1dCBub3Qg
ZmxhZ3MKIAogICAvLyBhbGxvY2F0ZSB0aGUgYXJyYXk7IHJlc3VsdCBtYXkgYmUgdGhlIHN0YWNr
IGJ1ZmZlcgogICAvLyBzZXRzIHJlZkNvdW50IHRvIDEgaWYgYXBwcm9wcmlhdGUKQEAgLTM0MDMs
NiArMzY2OSw5IEBAIHByaXZhdGU6CiAgIC8vIGltcGxlbWVudHMgYXNzaWdtZW50IG9wZXJhdG9y
LCBjb3B5IGNvbnN0cnVjdG9yLCBhbmQgZmFzdENvcHlGcm9tKCkKICAgVW5pY29kZVN0cmluZyAm
Y29weUZyb20oY29uc3QgVW5pY29kZVN0cmluZyAmc3JjLCBVQm9vbCBmYXN0Q29weT1GQUxTRSk7
CiAKKyAgLy8gQ29waWVzIGp1c3QgdGhlIGZpZWxkcyB3aXRob3V0IG1lbW9yeSBtYW5hZ2VtZW50
LgorICB2b2lkIGNvcHlGaWVsZHNGcm9tKFVuaWNvZGVTdHJpbmcgJnNyYywgVUJvb2wgc2V0U3Jj
VG9Cb2d1cykgVV9OT0VYQ0VQVDsKKwogICAvLyBQaW4gc3RhcnQgYW5kIGxpbWl0IHRvIGFjY2Vw
dGFibGUgdmFsdWVzLgogICBpbmxpbmUgdm9pZCBwaW5JbmRleChpbnQzMl90JiBzdGFydCkgY29u
c3Q7CiAgIGlubGluZSB2b2lkIHBpbkluZGljZXMoaW50MzJfdCYgc3RhcnQsCkBAIC0zNDY1LDcg
KzM3MzQsMTEgQEAgcHJpdmF0ZToKICAgICogYXMgaW4gdXN0cl9pbXAuaCBmb3IgdXN0cmNhc2Vf
bWFwKCkuCiAgICAqLwogICBVbmljb2RlU3RyaW5nICYKLSAgY2FzZU1hcChjb25zdCBVQ2FzZU1h
cCAqY3NtLCBVU3RyaW5nQ2FzZU1hcHBlciAqc3RyaW5nQ2FzZU1hcHBlcik7CisgIGNhc2VNYXAo
aW50MzJfdCBjYXNlTG9jYWxlLCB1aW50MzJfdCBvcHRpb25zLAorI2lmICFVQ09ORklHX05PX0JS
RUFLX0lURVJBVElPTgorICAgICAgICAgIEJyZWFrSXRlcmF0b3IgKml0ZXIsCisjZW5kaWYKKyAg
ICAgICAgICBVU3RyaW5nQ2FzZU1hcHBlciAqc3RyaW5nQ2FzZU1hcHBlcik7CiAKICAgLy8gcmVm
IGNvdW50aW5nCiAgIHZvaWQgYWRkUmVmKHZvaWQpOwpAQCAtMzQ3NCwxMSArMzc0NywxMyBAQCBw
cml2YXRlOgogCiAgIC8vIGNvbnN0YW50cwogICBlbnVtIHsKLSAgICAvLyBTZXQgdGhlIHN0YWNr
IGJ1ZmZlciBzaXplIHNvIHRoYXQgc2l6ZW9mKFVuaWNvZGVTdHJpbmcpIGlzLAotICAgIC8vIG5h
dHVyYWxseSAod2l0aG91dCBwYWRkaW5nKSwgYSBtdWx0aXBsZSBvZiBzaXplb2YocG9pbnRlciku
Ci0gICAgVVNfU1RBQ0tCVUZfU0laRT0gc2l6ZW9mKHZvaWQgKik9PTQgPyAxMyA6IDE1LCAvLyBT
aXplIG9mIHN0YWNrIGJ1ZmZlciBmb3Igc2hvcnQgc3RyaW5ncworICAgIC8qKgorICAgICAqIFNp
emUgb2Ygc3RhY2sgYnVmZmVyIGZvciBzaG9ydCBzdHJpbmdzLgorICAgICAqIE11c3QgYmUgYXQg
bGVhc3QgVTE2X01BWF9MRU5HVEggZm9yIHRoZSBzaW5nbGUtY29kZSBwb2ludCBjb25zdHJ1Y3Rv
ciB0byB3b3JrLgorICAgICAqIEBzZWUgVU5JU1RSX09CSkVDVF9TSVpFCisgICAgICovCisgICAg
VVNfU1RBQ0tCVUZfU0laRT0oaW50MzJfdCkoVU5JU1RSX09CSkVDVF9TSVpFLXNpemVvZih2b2lk
ICopLTIpL1VfU0laRU9GX1VDSEFSLAogICAgIGtJbnZhbGlkVUNoYXI9MHhmZmZmLCAvLyBVK0ZG
RkYgcmV0dXJuZWQgYnkgY2hhckF0KGludmFsaWQgaW5kZXgpCi0gICAga0dyb3dTaXplPTEyOCwg
Ly8gZ3JvdyBzaXplIGZvciB0aGlzIGJ1ZmZlcgogICAgIGtJbnZhbGlkSGFzaENvZGU9MCwgLy8g
aW52YWxpZCBoYXNoIGNvZGUKICAgICBrRW1wdHlIYXNoQ29kZT0xLCAvLyBoYXNoIGNvZGUgZm9y
IGVtcHR5IHN0cmluZwogCkBAIC0zNTAzLDcgKzM3NzgsNiBAQCBwcml2YXRlOgogICAgIGtXcml0
YWJsZUFsaWFzPTAKICAgfTsKIAotICBmcmllbmQgY2xhc3MgU3RyaW5nVGhyZWFkVGVzdDsKICAg
ZnJpZW5kIGNsYXNzIFVuaWNvZGVTdHJpbmdBcHBlbmRhYmxlOwogCiAgIHVuaW9uIFN0YWNrQnVm
ZmVyT3JGaWVsZHM7ICAgICAgICAvLyBmb3J3YXJkIGRlY2xhcmF0aW9uIG5lY2Vzc2FyeSBiZWZv
cmUgZnJpZW5kIGRlY2xhcmF0aW9uCkBAIC0zNTQ0LDkgKzM4MTgsMTAgQEAgcHJpdmF0ZToKICAg
ICogKFBhZGRpbmcgYXQgdGhlIGVuZCBvZiBmRmllbGRzIGlzIG9rOgogICAgKiBBcyBsb25nIGFz
IGl0IGlzIG5vIGxhcmdlciB0aGFuIGZTdGFja0ZpZWxkcywgaXQgaXMgbm90IHdhc3RlZCBzcGFj
ZS4pCiAgICAqCi0gICAqIEZvciBzb21lIG9mIHRoZSBoaXN0b3J5IG9mIHRoZSBVbmljb2RlU3Ry
aW5nIGNsYXNzIGZpZWxkcyBsYXlvdXQsCi0gICAqIHNlZSBJQ1UgdGlja2V0ICMxMTMzNiAiVW5p
Y29kZVN0cmluZzogcmVjb21iaW5lIHN0YWNrIGJ1ZmZlciBhcnJheXMiCi0gICAqIGFuZCB0aWNr
ZXQgIzgzMjIgIndoeSBpcyBzaXplb2YoVW5pY29kZVN0cmluZyk9PTQ4PyIuCisgICAqIEZvciBz
b21lIG9mIHRoZSBoaXN0b3J5IG9mIHRoZSBVbmljb2RlU3RyaW5nIGNsYXNzIGZpZWxkcyBsYXlv
dXQsIHNlZQorICAgKiAtIElDVSB0aWNrZXQgIzExNTUxICJsb25nZXIgVW5pY29kZVN0cmluZyBj
b250ZW50cyBpbiBzdGFjayBidWZmZXIiCisgICAqIC0gSUNVIHRpY2tldCAjMTEzMzYgIlVuaWNv
ZGVTdHJpbmc6IHJlY29tYmluZSBzdGFjayBidWZmZXIgYXJyYXlzIgorICAgKiAtIElDVSB0aWNr
ZXQgIzgzMjIgIndoeSBpcyBzaXplb2YoVW5pY29kZVN0cmluZyk9PTQ4PyIKICAgICovCiAgIC8v
IChpbXBsaWNpdCkgKnZ0YWJsZTsKICAgdW5pb24gU3RhY2tCdWZmZXJPckZpZWxkcyB7CkBAIC0z
NTU0LDEzICszODI5LDE1IEBAIHByaXZhdGU6CiAgICAgLy8gRWFjaCBzdHJ1Y3Qgb2YgdGhlIHVu
aW9uIG11c3QgYmVnaW4gd2l0aCBmTGVuZ3RoQW5kRmxhZ3MuCiAgICAgc3RydWN0IHsKICAgICAg
IGludDE2X3QgZkxlbmd0aEFuZEZsYWdzOyAgICAgICAgICAvLyBiaXQgZmllbGRzOiBzZWUgY29u
c3RhbnRzIGFib3ZlCi0gICAgICBVQ2hhciBmQnVmZmVyW1VTX1NUQUNLQlVGX1NJWkVdOyAgLy8g
YnVmZmVyIGZvciBzaG9ydCBzdHJpbmdzCisgICAgICBjaGFyMTZfdCBmQnVmZmVyW1VTX1NUQUNL
QlVGX1NJWkVdOyAgLy8gYnVmZmVyIGZvciBzaG9ydCBzdHJpbmdzCiAgICAgfSBmU3RhY2tGaWVs
ZHM7CiAgICAgc3RydWN0IHsKICAgICAgIGludDE2X3QgZkxlbmd0aEFuZEZsYWdzOyAgICAgICAg
ICAvLyBiaXQgZmllbGRzOiBzZWUgY29uc3RhbnRzIGFib3ZlCi0gICAgICBVQ2hhciAgICpmQXJy
YXk7ICAgIC8vIHRoZSBVbmljb2RlIGRhdGEKLSAgICAgIGludDMyX3QgZkNhcGFjaXR5OyAgLy8g
Y2FwYWNpdHkgb2YgZkFycmF5IChpbiBVQ2hhcnMpCiAgICAgICBpbnQzMl90IGZMZW5ndGg7ICAg
IC8vIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGZBcnJheSBpZiA+MTI3OyBlbHNlIHVuZGVmaW5l
ZAorICAgICAgaW50MzJfdCBmQ2FwYWNpdHk7ICAvLyBjYXBhY2l0eSBvZiBmQXJyYXkgKGluIGNo
YXIxNl90cykKKyAgICAgIC8vIGFycmF5IHBvaW50ZXIgbGFzdCB0byBtaW5pbWl6ZSBwYWRkaW5n
IGZvciBtYWNoaW5lcyB3aXRoIFAxMjggZGF0YSBtb2RlbAorICAgICAgLy8gb3IgcG9pbnRlciBz
aXplcyB0aGF0IGFyZSBub3QgYSBwb3dlciBvZiAyCisgICAgICBjaGFyMTZfdCAgICpmQXJyYXk7
ICAgIC8vIHRoZSBVbmljb2RlIGRhdGEKICAgICB9IGZGaWVsZHM7CiAgIH0gZlVuaW9uOwogfTsK
QEAgLTM2MTMsMTMgKzM4OTAsMTMgQEAgVW5pY29kZVN0cmluZzo6cGluSW5kaWNlcyhpbnQzMl90
JiBzdGFydCwKICAgfQogfQogCi1pbmxpbmUgVUNoYXIqCitpbmxpbmUgY2hhcjE2X3QqCiBVbmlj
b2RlU3RyaW5nOjpnZXRBcnJheVN0YXJ0KCkgewogICByZXR1cm4gKGZVbmlvbi5mRmllbGRzLmZM
ZW5ndGhBbmRGbGFncyZrVXNpbmdTdGFja0J1ZmZlcikgPwogICAgIGZVbmlvbi5mU3RhY2tGaWVs
ZHMuZkJ1ZmZlciA6IGZVbmlvbi5mRmllbGRzLmZBcnJheTsKIH0KIAotaW5saW5lIGNvbnN0IFVD
aGFyKgoraW5saW5lIGNvbnN0IGNoYXIxNl90KgogVW5pY29kZVN0cmluZzo6Z2V0QXJyYXlTdGFy
dCgpIGNvbnN0IHsKICAgcmV0dXJuIChmVW5pb24uZkZpZWxkcy5mTGVuZ3RoQW5kRmxhZ3Mma1Vz
aW5nU3RhY2tCdWZmZXIpID8KICAgICBmVW5pb24uZlN0YWNrRmllbGRzLmZCdWZmZXIgOiBmVW5p
b24uZkZpZWxkcy5mQXJyYXk7CkBAIC0zNjM0LDYgKzM5MTEsMTggQEAgVW5pY29kZVN0cmluZzo6
VW5pY29kZVN0cmluZygpIHsKICAgZlVuaW9uLmZTdGFja0ZpZWxkcy5mTGVuZ3RoQW5kRmxhZ3M9
a1Nob3J0U3RyaW5nOwogfQogCitpbmxpbmUgVW5pY29kZVN0cmluZzo6VW5pY29kZVN0cmluZyhj
b25zdCBzdGQ6Om51bGxwdHJfdCAvKnRleHQqLykgeworICBmVW5pb24uZlN0YWNrRmllbGRzLmZM
ZW5ndGhBbmRGbGFncz1rU2hvcnRTdHJpbmc7Cit9CisKK2lubGluZSBVbmljb2RlU3RyaW5nOjpV
bmljb2RlU3RyaW5nKGNvbnN0IHN0ZDo6bnVsbHB0cl90IC8qdGV4dCovLCBpbnQzMl90IC8qbGVu
Z3RoKi8pIHsKKyAgZlVuaW9uLmZTdGFja0ZpZWxkcy5mTGVuZ3RoQW5kRmxhZ3M9a1Nob3J0U3Ry
aW5nOworfQorCitpbmxpbmUgVW5pY29kZVN0cmluZzo6VW5pY29kZVN0cmluZyhzdGQ6Om51bGxw
dHJfdCAvKmJ1ZmZlciovLCBpbnQzMl90IC8qYnVmZkxlbmd0aCovLCBpbnQzMl90IC8qYnVmZkNh
cGFjaXR5Ki8pIHsKKyAgZlVuaW9uLmZTdGFja0ZpZWxkcy5mTGVuZ3RoQW5kRmxhZ3M9a1Nob3J0
U3RyaW5nOworfQorCiAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IC8vIFJlYWQtb25seSBpbXBsZW1lbnRhdGlvbiBtZXRob2RzCiAvLz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTM2ODAsMTAgKzM5NjksMTAgQEAgVW5pY29kZVN0
cmluZzo6aXNCdWZmZXJXcml0YWJsZSgpIGNvbnN0CiAgICAgICAoIShmVW5pb24uZkZpZWxkcy5m
TGVuZ3RoQW5kRmxhZ3Mma1JlZkNvdW50ZWQpIHx8IHJlZkNvdW50KCk9PTEpKTsKIH0KIAotaW5s
aW5lIGNvbnN0IFVDaGFyICoKK2lubGluZSBjb25zdCBjaGFyMTZfdCAqCiBVbmljb2RlU3RyaW5n
OjpnZXRCdWZmZXIoKSBjb25zdCB7CiAgIGlmKGZVbmlvbi5mRmllbGRzLmZMZW5ndGhBbmRGbGFn
cyYoa0lzQm9ndXN8a09wZW5HZXRCdWZmZXIpKSB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG51bGxwdHI7CiAgIH0gZWxzZSBpZihmVW5pb24uZkZpZWxkcy5mTGVuZ3RoQW5kRmxhZ3Mma1Vz
aW5nU3RhY2tCdWZmZXIpIHsKICAgICByZXR1cm4gZlVuaW9uLmZTdGFja0ZpZWxkcy5mQnVmZmVy
OwogICB9IGVsc2UgewpAQCAtMzc1MSw3ICs0MDQwLDcgQEAgVW5pY29kZVN0cmluZzo6Y29tcGFy
ZShpbnQzMl90IHN0YXJ0LAogeyByZXR1cm4gZG9Db21wYXJlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNU
ZXh0LCAwLCBzcmNUZXh0Lmxlbmd0aCgpKTsgfQogCiBpbmxpbmUgaW50OF90Ci1Vbmljb2RlU3Ry
aW5nOjpjb21wYXJlKGNvbnN0IFVDaGFyICpzcmNDaGFycywKK1VuaWNvZGVTdHJpbmc6OmNvbXBh
cmUoQ29uc3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xl
bmd0aCkgY29uc3QKIHsgcmV0dXJuIGRvQ29tcGFyZSgwLCBsZW5ndGgoKSwgc3JjQ2hhcnMsIDAs
IHNyY0xlbmd0aCk7IH0KIApAQCAtMzc2NiwxMyArNDA1NSwxMyBAQCBVbmljb2RlU3RyaW5nOjpj
b21wYXJlKGludDMyX3Qgc3RhcnQsCiBpbmxpbmUgaW50OF90CiBVbmljb2RlU3RyaW5nOjpjb21w
YXJlKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgsCi0gICAg
ICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMpIGNvbnN0CisgICAgICAgICAgICAgICBj
b25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMpIGNvbnN0CiB7IHJldHVybiBkb0NvbXBhcmUoc3RhcnQs
IF9sZW5ndGgsIHNyY0NoYXJzLCAwLCBfbGVuZ3RoKTsgfQogCiBpbmxpbmUgaW50OF90CiBVbmlj
b2RlU3RyaW5nOjpjb21wYXJlKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBpbnQzMl90
IF9sZW5ndGgsCi0gICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCisgICAgICAg
ICAgICAgICBjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsCiAgICAgICAgICAgICAgICBpbnQzMl90
IHNyY1N0YXJ0LAogICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0CiB7IHJl
dHVybiBkb0NvbXBhcmUoc3RhcnQsIF9sZW5ndGgsIHNyY0NoYXJzLCBzcmNTdGFydCwgc3JjTGVu
Z3RoKTsgfQpAQCAtMzgxMiw3ICs0MTAxLDcgQEAgVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQ
b2ludE9yZGVyKGludDMyX3Qgc3RhcnQsCiB7IHJldHVybiBkb0NvbXBhcmVDb2RlUG9pbnRPcmRl
cihzdGFydCwgX2xlbmd0aCwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7IH0KIAogaW5s
aW5lIGludDhfdAotVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9yZGVyKGNvbnN0IFVD
aGFyICpzcmNDaGFycywKK1VuaWNvZGVTdHJpbmc6OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihDb25z
dENoYXIxNlB0ciBzcmNDaGFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QKIHsgcmV0dXJuIGRvQ29tcGFyZUNvZGVQb2ludE9y
ZGVyKDAsIGxlbmd0aCgpLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKTsgfQogCkBAIC0zODI3LDEz
ICs0MTE2LDEzIEBAIFVuaWNvZGVTdHJpbmc6OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihpbnQzMl90
IHN0YXJ0LAogaW5saW5lIGludDhfdAogVW5pY29kZVN0cmluZzo6Y29tcGFyZUNvZGVQb2ludE9y
ZGVyKGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFVDaGFyICpzcmNDaGFycykgY29uc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMpIGNvbnN0CiB7IHJldHVybiBkb0NvbXBh
cmVDb2RlUG9pbnRPcmRlcihzdGFydCwgX2xlbmd0aCwgc3JjQ2hhcnMsIDAsIF9sZW5ndGgpOyB9
CiAKIGlubGluZSBpbnQ4X3QKIFVuaWNvZGVTdHJpbmc6OmNvbXBhcmVDb2RlUG9pbnRPcmRlcihp
bnQzMl90IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QgX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBV
Q2hhciAqc3JjQ2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBzcmNMZW5ndGgpIGNvbnN0CiB7IHJldHVybiBkb0NvbXBhcmVDb2RlUG9pbnRP
cmRlcihzdGFydCwgX2xlbmd0aCwgc3JjQ2hhcnMsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CkBA
IC0zODc3LDcgKzQxNjYsNyBAQCBVbmljb2RlU3RyaW5nOjpjYXNlQ29tcGFyZShpbnQzMl90IHN0
YXJ0LAogfQogCiBpbmxpbmUgaW50OF90Ci1Vbmljb2RlU3RyaW5nOjpjYXNlQ29tcGFyZShjb25z
dCBVQ2hhciAqc3JjQ2hhcnMsCitVbmljb2RlU3RyaW5nOjpjYXNlQ29tcGFyZShDb25zdENoYXIx
NlB0ciBzcmNDaGFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVu
Z3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3Qg
ewogICByZXR1cm4gZG9DYXNlQ29tcGFyZSgwLCBsZW5ndGgoKSwgc3JjQ2hhcnMsIDAsIHNyY0xl
bmd0aCwgb3B0aW9ucyk7CkBAIC0zODk2LDcgKzQxODUsNyBAQCBVbmljb2RlU3RyaW5nOjpjYXNl
Q29tcGFyZShpbnQzMl90IHN0YXJ0LAogaW5saW5lIGludDhfdAogVW5pY29kZVN0cmluZzo6Y2Fz
ZUNvbXBhcmUoaW50MzJfdCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QgX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmND
aGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90ICpzcmNDaGFy
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMpIGNvbnN0IHsK
ICAgcmV0dXJuIGRvQ2FzZUNvbXBhcmUoc3RhcnQsIF9sZW5ndGgsIHNyY0NoYXJzLCAwLCBfbGVu
Z3RoLCBvcHRpb25zKTsKIH0KQEAgLTM5MDQsNyArNDE5Myw3IEBAIFVuaWNvZGVTdHJpbmc6OmNh
c2VDb21wYXJlKGludDMyX3Qgc3RhcnQsCiBpbmxpbmUgaW50OF90CiBVbmljb2RlU3RyaW5nOjpj
YXNlQ29tcGFyZShpbnQzMl90IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCBfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNy
Y0NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcjE2X3QgKnNyY0No
YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucykgY29uc3QgewpAQCAtMzk1NSw3ICs0MjQ0LDcg
QEAgVW5pY29kZVN0cmluZzo6aW5kZXhPZihjb25zdCBVbmljb2RlU3RyaW5nJiB0ZXh0LAogeyBy
ZXR1cm4gaW5kZXhPZih0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpLCBzdGFydCwgX2xlbmd0aCk7IH0K
IAogaW5saW5lIGludDMyX3QKLVVuaWNvZGVTdHJpbmc6OmluZGV4T2YoY29uc3QgVUNoYXIgKnNy
Y0NoYXJzLAorVW5pY29kZVN0cmluZzo6aW5kZXhPZihjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMs
CiAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKICAgICAgICAgICAgICAgIGludDMy
X3Qgc3RhcnQpIGNvbnN0IHsKICAgcGluSW5kZXgoc3RhcnQpOwpAQCAtMzk2MywxNCArNDI1Miwx
NCBAQCBVbmljb2RlU3RyaW5nOjppbmRleE9mKGNvbnN0IFVDaGFyICpzcmNDaGFycywKIH0KIAog
aW5saW5lIGludDMyX3QKLVVuaWNvZGVTdHJpbmc6OmluZGV4T2YoY29uc3QgVUNoYXIgKnNyY0No
YXJzLAorVW5pY29kZVN0cmluZzo6aW5kZXhPZihDb25zdENoYXIxNlB0ciBzcmNDaGFycywKICAg
ICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgICAgaW50MzJfdCBz
dGFydCwKICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCkgY29uc3QKIHsgcmV0dXJuIGlu
ZGV4T2Yoc3JjQ2hhcnMsIDAsIHNyY0xlbmd0aCwgc3RhcnQsIF9sZW5ndGgpOyB9CiAKIGlubGlu
ZSBpbnQzMl90Ci1Vbmljb2RlU3RyaW5nOjppbmRleE9mKFVDaGFyIGMsCitVbmljb2RlU3RyaW5n
OjppbmRleE9mKGNoYXIxNl90IGMsCiAgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0LAogICAg
ICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoKSBjb25zdAogeyByZXR1cm4gZG9JbmRleE9mKGMs
IHN0YXJ0LCBfbGVuZ3RoKTsgfQpAQCAtMzk4Miw3ICs0MjcxLDcgQEAgVW5pY29kZVN0cmluZzo6
aW5kZXhPZihVQ2hhcjMyIGMsCiB7IHJldHVybiBkb0luZGV4T2YoYywgc3RhcnQsIF9sZW5ndGgp
OyB9CiAKIGlubGluZSBpbnQzMl90Ci1Vbmljb2RlU3RyaW5nOjppbmRleE9mKFVDaGFyIGMpIGNv
bnN0CitVbmljb2RlU3RyaW5nOjppbmRleE9mKGNoYXIxNl90IGMpIGNvbnN0CiB7IHJldHVybiBk
b0luZGV4T2YoYywgMCwgbGVuZ3RoKCkpOyB9CiAKIGlubGluZSBpbnQzMl90CkBAIC0zOTkwLDcg
KzQyNzksNyBAQCBVbmljb2RlU3RyaW5nOjppbmRleE9mKFVDaGFyMzIgYykgY29uc3QKIHsgcmV0
dXJuIGluZGV4T2YoYywgMCwgbGVuZ3RoKCkpOyB9CiAKIGlubGluZSBpbnQzMl90Ci1Vbmljb2Rl
U3RyaW5nOjppbmRleE9mKFVDaGFyIGMsCitVbmljb2RlU3RyaW5nOjppbmRleE9mKGNoYXIxNl90
IGMsCiAgICAgICAgICAgICAgICBpbnQzMl90IHN0YXJ0KSBjb25zdCB7CiAgIHBpbkluZGV4KHN0
YXJ0KTsKICAgcmV0dXJuIGRvSW5kZXhPZihjLCBzdGFydCwgbGVuZ3RoKCkgLSBzdGFydCk7CkBA
IC00MDA0LDE0ICs0MjkzLDE0IEBAIFVuaWNvZGVTdHJpbmc6OmluZGV4T2YoVUNoYXIzMiBjLAog
fQogCiBpbmxpbmUgaW50MzJfdAotVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoY29uc3QgVUNo
YXIgKnNyY0NoYXJzLAorVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoQ29uc3RDaGFyMTZQdHIg
c3JjQ2hhcnMsCiAgICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKICAgICAgICAgICAg
ICAgIGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBpbnQzMl90IF9sZW5ndGgpIGNvbnN0
CiB7IHJldHVybiBsYXN0SW5kZXhPZihzcmNDaGFycywgMCwgc3JjTGVuZ3RoLCBzdGFydCwgX2xl
bmd0aCk7IH0KIAogaW5saW5lIGludDMyX3QKLVVuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKGNv
bnN0IFVDaGFyICpzcmNDaGFycywKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKGNvbnN0IGNo
YXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAg
ICAgICAgICAgICAgaW50MzJfdCBzdGFydCkgY29uc3QgewogICBwaW5JbmRleChzdGFydCk7CkBA
IC00MDUyLDcgKzQzNDEsNyBAQCBVbmljb2RlU3RyaW5nOjpsYXN0SW5kZXhPZihjb25zdCBVbmlj
b2RlU3RyaW5nJiB0ZXh0KSBjb25zdAogeyByZXR1cm4gbGFzdEluZGV4T2YodGV4dCwgMCwgdGV4
dC5sZW5ndGgoKSwgMCwgbGVuZ3RoKCkpOyB9CiAKIGlubGluZSBpbnQzMl90Ci1Vbmljb2RlU3Ry
aW5nOjpsYXN0SW5kZXhPZihVQ2hhciBjLAorVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoY2hh
cjE2X3QgYywKICAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBp
bnQzMl90IF9sZW5ndGgpIGNvbnN0CiB7IHJldHVybiBkb0xhc3RJbmRleE9mKGMsIHN0YXJ0LCBf
bGVuZ3RoKTsgfQpAQCAtNDA2NSw3ICs0MzU0LDcgQEAgVW5pY29kZVN0cmluZzo6bGFzdEluZGV4
T2YoVUNoYXIzMiBjLAogfQogCiBpbmxpbmUgaW50MzJfdAotVW5pY29kZVN0cmluZzo6bGFzdElu
ZGV4T2YoVUNoYXIgYykgY29uc3QKK1VuaWNvZGVTdHJpbmc6Omxhc3RJbmRleE9mKGNoYXIxNl90
IGMpIGNvbnN0CiB7IHJldHVybiBkb0xhc3RJbmRleE9mKGMsIDAsIGxlbmd0aCgpKTsgfQogCiBp
bmxpbmUgaW50MzJfdApAQCAtNDA3NCw3ICs0MzYzLDcgQEAgVW5pY29kZVN0cmluZzo6bGFzdElu
ZGV4T2YoVUNoYXIzMiBjKSBjb25zdCB7CiB9CiAKIGlubGluZSBpbnQzMl90Ci1Vbmljb2RlU3Ry
aW5nOjpsYXN0SW5kZXhPZihVQ2hhciBjLAorVW5pY29kZVN0cmluZzo6bGFzdEluZGV4T2YoY2hh
cjE2X3QgYywKICAgICAgICAgICAgICAgIGludDMyX3Qgc3RhcnQpIGNvbnN0IHsKICAgcGluSW5k
ZXgoc3RhcnQpOwogICByZXR1cm4gZG9MYXN0SW5kZXhPZihjLCBzdGFydCwgbGVuZ3RoKCkgLSBz
dGFydCk7CkBAIC00MDk4LDE3ICs0Mzg3LDE3IEBAIFVuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgo
Y29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKIHsgcmV0dXJuIGRvQ29tcGFyZSgwLCBzcmNM
ZW5ndGgsIHNyY1RleHQsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpID09IDA7IH0KIAogaW5saW5lIFVC
b29sCi1Vbmljb2RlU3RyaW5nOjpzdGFydHNXaXRoKGNvbnN0IFVDaGFyICpzcmNDaGFycywgaW50
MzJfdCBzcmNMZW5ndGgpIGNvbnN0IHsKK1VuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgoQ29uc3RD
aGFyMTZQdHIgc3JjQ2hhcnMsIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdCB7CiAgIGlmKHNyY0xl
bmd0aCA8IDApIHsKLSAgICBzcmNMZW5ndGggPSB1X3N0cmxlbihzcmNDaGFycyk7CisgICAgc3Jj
TGVuZ3RoID0gdV9zdHJsZW4odG9VQ2hhclB0cihzcmNDaGFycykpOwogICB9CiAgIHJldHVybiBk
b0NvbXBhcmUoMCwgc3JjTGVuZ3RoLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKSA9PSAwOwogfQog
CiBpbmxpbmUgVUJvb2wKLVVuaWNvZGVTdHJpbmc6OnN0YXJ0c1dpdGgoY29uc3QgVUNoYXIgKnNy
Y0NoYXJzLCBpbnQzMl90IHNyY1N0YXJ0LCBpbnQzMl90IHNyY0xlbmd0aCkgY29uc3QgeworVW5p
Y29kZVN0cmluZzo6c3RhcnRzV2l0aChjb25zdCBjaGFyMTZfdCAqc3JjQ2hhcnMsIGludDMyX3Qg
c3JjU3RhcnQsIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25zdCB7CiAgIGlmKHNyY0xlbmd0aCA8IDAp
IHsKLSAgICBzcmNMZW5ndGggPSB1X3N0cmxlbihzcmNDaGFycyk7CisgICAgc3JjTGVuZ3RoID0g
dV9zdHJsZW4odG9VQ2hhclB0cihzcmNDaGFycykpOwogICB9CiAgIHJldHVybiBkb0NvbXBhcmUo
MCwgc3JjTGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCkgPT0gMDsKIH0KQEAg
LTQxMjgsMjEgKzQ0MTcsMjEgQEAgVW5pY29kZVN0cmluZzo6ZW5kc1dpdGgoY29uc3QgVW5pY29k
ZVN0cmluZyYgc3JjVGV4dCwKIH0KIAogaW5saW5lIFVCb29sCi1Vbmljb2RlU3RyaW5nOjplbmRz
V2l0aChjb25zdCBVQ2hhciAqc3JjQ2hhcnMsCitVbmljb2RlU3RyaW5nOjplbmRzV2l0aChDb25z
dENoYXIxNlB0ciBzcmNDaGFycywKICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKSBjb25z
dCB7CiAgIGlmKHNyY0xlbmd0aCA8IDApIHsKLSAgICBzcmNMZW5ndGggPSB1X3N0cmxlbihzcmND
aGFycyk7CisgICAgc3JjTGVuZ3RoID0gdV9zdHJsZW4odG9VQ2hhclB0cihzcmNDaGFycykpOwog
ICB9CiAgIHJldHVybiBkb0NvbXBhcmUobGVuZ3RoKCkgLSBzcmNMZW5ndGgsIHNyY0xlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKSA9PSAwOwogfQogCiBp
bmxpbmUgVUJvb2wKLVVuaWNvZGVTdHJpbmc6OmVuZHNXaXRoKGNvbnN0IFVDaGFyICpzcmNDaGFy
cywKK1VuaWNvZGVTdHJpbmc6OmVuZHNXaXRoKGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAg
ICAgICAgICAgIGludDMyX3Qgc3JjU3RhcnQsCiAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0
aCkgY29uc3QgewogICBpZihzcmNMZW5ndGggPCAwKSB7Ci0gICAgc3JjTGVuZ3RoID0gdV9zdHJs
ZW4oc3JjQ2hhcnMgKyBzcmNTdGFydCk7CisgICAgc3JjTGVuZ3RoID0gdV9zdHJsZW4odG9VQ2hh
clB0cihzcmNDaGFycyArIHNyY1N0YXJ0KSk7CiAgIH0KICAgcmV0dXJuIGRvQ29tcGFyZShsZW5n
dGgoKSAtIHNyY0xlbmd0aCwgc3JjTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgIHNyY0NoYXJz
LCBzcmNTdGFydCwgc3JjTGVuZ3RoKSA9PSAwOwpAQCAtNDE2OCwxNCArNDQ1NywxNCBAQCBVbmlj
b2RlU3RyaW5nOjpyZXBsYWNlKGludDMyX3Qgc3RhcnQsCiBpbmxpbmUgVW5pY29kZVN0cmluZyYK
IFVuaWNvZGVTdHJpbmc6OnJlcGxhY2UoaW50MzJfdCBzdGFydCwKICAgICAgICAgICAgICAgIGlu
dDMyX3QgX2xlbmd0aCwKLSAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAg
ICAgICAgICAgICAgIENvbnN0Q2hhcjE2UHRyIHNyY0NoYXJzLAogICAgICAgICAgICAgICAgaW50
MzJfdCBzcmNMZW5ndGgpCiB7IHJldHVybiBkb1JlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsIHNyY0No
YXJzLCAwLCBzcmNMZW5ndGgpOyB9CiAKIGlubGluZSBVbmljb2RlU3RyaW5nJgogVW5pY29kZVN0
cmluZzo6cmVwbGFjZShpbnQzMl90IHN0YXJ0LAogICAgICAgICAgICAgICAgaW50MzJfdCBfbGVu
Z3RoLAotICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorICAgICAgICAgICAg
ICAgY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAgICAgICAgICAgaW50MzJfdCBzcmNT
dGFydCwKICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQogeyByZXR1cm4gZG9SZXBs
YWNlKHN0YXJ0LCBfbGVuZ3RoLCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xlbmd0aCk7IH0KQEAg
LTQxODMsNyArNDQ3Miw3IEBAIFVuaWNvZGVTdHJpbmc6OnJlcGxhY2UoaW50MzJfdCBzdGFydCwK
IGlubGluZSBVbmljb2RlU3RyaW5nJgogVW5pY29kZVN0cmluZzo6cmVwbGFjZShpbnQzMl90IHN0
YXJ0LAogICAgICAgICAgICAgICAgaW50MzJfdCBfbGVuZ3RoLAotICAgICAgICAgICAgICAgVUNo
YXIgc3JjQ2hhcikKKyAgICAgICAgICAgICAgIGNoYXIxNl90IHNyY0NoYXIpCiB7IHJldHVybiBk
b1JlcGxhY2Uoc3RhcnQsIF9sZW5ndGgsICZzcmNDaGFyLCAwLCAxKTsgfQogCiBpbmxpbmUgVW5p
Y29kZVN0cmluZyYKQEAgLTQyMjYsNyArNDUxNSw3IEBAIFVuaWNvZGVTdHJpbmc6OmRvRXh0cmFj
dChpbnQzMl90IHN0YXJ0LAogaW5saW5lIHZvaWQKIFVuaWNvZGVTdHJpbmc6OmV4dHJhY3QoaW50
MzJfdCBzdGFydCwKICAgICAgICAgICAgICAgIGludDMyX3QgX2xlbmd0aCwKLSAgICAgICAgICAg
ICAgIFVDaGFyICp0YXJnZXQsCisgICAgICAgICAgICAgICBDaGFyMTZQdHIgdGFyZ2V0LAogICAg
ICAgICAgICAgICAgaW50MzJfdCB0YXJnZXRTdGFydCkgY29uc3QKIHsgZG9FeHRyYWN0KHN0YXJ0
LCBfbGVuZ3RoLCB0YXJnZXQsIHRhcmdldFN0YXJ0KTsgfQogCkBAIC00MjU0LDcgKzQ1NDMsNyBA
QCBVbmljb2RlU3RyaW5nOjpleHRyYWN0KGludDMyX3Qgc3RhcnQsCiBpbmxpbmUgdm9pZAogVW5p
Y29kZVN0cmluZzo6ZXh0cmFjdEJldHdlZW4oaW50MzJfdCBzdGFydCwKICAgICAgICAgICAgICAg
ICAgIGludDMyX3QgbGltaXQsCi0gICAgICAgICAgICAgICAgICBVQ2hhciAqZHN0LAorICAgICAg
ICAgICAgICAgICAgY2hhcjE2X3QgKmRzdCwKICAgICAgICAgICAgICAgICAgIGludDMyX3QgZHN0
U3RhcnQpIGNvbnN0IHsKICAgcGluSW5kZXgoc3RhcnQpOwogICBwaW5JbmRleChsaW1pdCk7CkBA
IC00MjY2LDcgKzQ1NTUsNyBAQCBVbmljb2RlU3RyaW5nOjp0ZW1wU3ViU3RyaW5nQmV0d2Vlbihp
bnQzMl90IHN0YXJ0LCBpbnQzMl90IGxpbWl0KSBjb25zdCB7CiAgICAgcmV0dXJuIHRlbXBTdWJT
dHJpbmcoc3RhcnQsIGxpbWl0IC0gc3RhcnQpOwogfQogCi1pbmxpbmUgVUNoYXIKK2lubGluZSBj
aGFyMTZfdAogVW5pY29kZVN0cmluZzo6ZG9DaGFyQXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0CiB7
CiAgIGlmKCh1aW50MzJfdClvZmZzZXQgPCAodWludDMyX3QpbGVuZ3RoKCkpIHsKQEAgLTQyNzYs
MTEgKzQ1NjUsMTEgQEAgVW5pY29kZVN0cmluZzo6ZG9DaGFyQXQoaW50MzJfdCBvZmZzZXQpIGNv
bnN0CiAgIH0KIH0KIAotaW5saW5lIFVDaGFyCitpbmxpbmUgY2hhcjE2X3QKIFVuaWNvZGVTdHJp
bmc6OmNoYXJBdChpbnQzMl90IG9mZnNldCkgY29uc3QKIHsgcmV0dXJuIGRvQ2hhckF0KG9mZnNl
dCk7IH0KIAotaW5saW5lIFVDaGFyCitpbmxpbmUgY2hhcjE2X3QKIFVuaWNvZGVTdHJpbmc6Om9w
ZXJhdG9yW10gKGludDMyX3Qgb2Zmc2V0KSBjb25zdAogeyByZXR1cm4gZG9DaGFyQXQob2Zmc2V0
KTsgfQogCkBAIC00MzIxLDE0ICs0NjEwLDE0IEBAIFVuaWNvZGVTdHJpbmc6OnNldFRvRW1wdHko
KSB7CiB9CiAKIGlubGluZSB2b2lkCi1Vbmljb2RlU3RyaW5nOjpzZXRBcnJheShVQ2hhciAqYXJy
YXksIGludDMyX3QgbGVuLCBpbnQzMl90IGNhcGFjaXR5KSB7CitVbmljb2RlU3RyaW5nOjpzZXRB
cnJheShjaGFyMTZfdCAqYXJyYXksIGludDMyX3QgbGVuLCBpbnQzMl90IGNhcGFjaXR5KSB7CiAg
IHNldExlbmd0aChsZW4pOwogICBmVW5pb24uZkZpZWxkcy5mQXJyYXkgPSBhcnJheTsKICAgZlVu
aW9uLmZGaWVsZHMuZkNhcGFjaXR5ID0gY2FwYWNpdHk7CiB9CiAKIGlubGluZSBVbmljb2RlU3Ry
aW5nJgotVW5pY29kZVN0cmluZzo6b3BlcmF0b3I9IChVQ2hhciBjaCkKK1VuaWNvZGVTdHJpbmc6
Om9wZXJhdG9yPSAoY2hhcjE2X3QgY2gpCiB7IHJldHVybiBkb1JlcGxhY2UoMCwgbGVuZ3RoKCks
ICZjaCwgMCwgMSk7IH0KIAogaW5saW5lIFVuaWNvZGVTdHJpbmcmCkBAIC00MzYwLDcgKzQ2NDks
NyBAQCBVbmljb2RlU3RyaW5nOjpzZXRUbyhjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0KQog
fQogCiBpbmxpbmUgVW5pY29kZVN0cmluZyYKLVVuaWNvZGVTdHJpbmc6OnNldFRvKGNvbnN0IFVD
aGFyICpzcmNDaGFycywKK1VuaWNvZGVTdHJpbmc6OnNldFRvKGNvbnN0IGNoYXIxNl90ICpzcmND
aGFycywKICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkKIHsKICAgdW5Cb2d1cygpOwpA
QCAtNDM2OCw3ICs0NjU3LDcgQEAgVW5pY29kZVN0cmluZzo6c2V0VG8oY29uc3QgVUNoYXIgKnNy
Y0NoYXJzLAogfQogCiBpbmxpbmUgVW5pY29kZVN0cmluZyYKLVVuaWNvZGVTdHJpbmc6OnNldFRv
KFVDaGFyIHNyY0NoYXIpCitVbmljb2RlU3RyaW5nOjpzZXRUbyhjaGFyMTZfdCBzcmNDaGFyKQog
ewogICB1bkJvZ3VzKCk7CiAgIHJldHVybiBkb1JlcGxhY2UoMCwgbGVuZ3RoKCksICZzcmNDaGFy
LCAwLCAxKTsKQEAgLTQzODUsMzAgKzQ2NzQsMzAgQEAgaW5saW5lIFVuaWNvZGVTdHJpbmcmCiBV
bmljb2RlU3RyaW5nOjphcHBlbmQoY29uc3QgVW5pY29kZVN0cmluZyYgc3JjVGV4dCwKICAgICAg
ICAgICAgICAgaW50MzJfdCBzcmNTdGFydCwKICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5n
dGgpCi17IHJldHVybiBkb1JlcGxhY2UobGVuZ3RoKCksIDAsIHNyY1RleHQsIHNyY1N0YXJ0LCBz
cmNMZW5ndGgpOyB9Cit7IHJldHVybiBkb0FwcGVuZChzcmNUZXh0LCBzcmNTdGFydCwgc3JjTGVu
Z3RoKTsgfQogCiBpbmxpbmUgVW5pY29kZVN0cmluZyYKIFVuaWNvZGVTdHJpbmc6OmFwcGVuZChj
b25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0KQoteyByZXR1cm4gZG9SZXBsYWNlKGxlbmd0aCgp
LCAwLCBzcmNUZXh0LCAwLCBzcmNUZXh0Lmxlbmd0aCgpKTsgfQoreyByZXR1cm4gZG9BcHBlbmQo
c3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7IH0KIAogaW5saW5lIFVuaWNvZGVTdHJpbmcm
Ci1Vbmljb2RlU3RyaW5nOjphcHBlbmQoY29uc3QgVUNoYXIgKnNyY0NoYXJzLAorVW5pY29kZVN0
cmluZzo6YXBwZW5kKGNvbnN0IGNoYXIxNl90ICpzcmNDaGFycywKICAgICAgICAgICAgICAgaW50
MzJfdCBzcmNTdGFydCwKICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCi17IHJldHVy
biBkb1JlcGxhY2UobGVuZ3RoKCksIDAsIHNyY0NoYXJzLCBzcmNTdGFydCwgc3JjTGVuZ3RoKTsg
fQoreyByZXR1cm4gZG9BcHBlbmQoc3JjQ2hhcnMsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CiAK
IGlubGluZSBVbmljb2RlU3RyaW5nJgotVW5pY29kZVN0cmluZzo6YXBwZW5kKGNvbnN0IFVDaGFy
ICpzcmNDaGFycywKK1VuaWNvZGVTdHJpbmc6OmFwcGVuZChDb25zdENoYXIxNlB0ciBzcmNDaGFy
cywKICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgpCi17IHJldHVybiBkb1JlcGxhY2Uo
bGVuZ3RoKCksIDAsIHNyY0NoYXJzLCAwLCBzcmNMZW5ndGgpOyB9Cit7IHJldHVybiBkb0FwcGVu
ZChzcmNDaGFycywgMCwgc3JjTGVuZ3RoKTsgfQogCiBpbmxpbmUgVW5pY29kZVN0cmluZyYKLVVu
aWNvZGVTdHJpbmc6OmFwcGVuZChVQ2hhciBzcmNDaGFyKQoteyByZXR1cm4gZG9SZXBsYWNlKGxl
bmd0aCgpLCAwLCAmc3JjQ2hhciwgMCwgMSk7IH0KK1VuaWNvZGVTdHJpbmc6OmFwcGVuZChjaGFy
MTZfdCBzcmNDaGFyKQoreyByZXR1cm4gZG9BcHBlbmQoJnNyY0NoYXIsIDAsIDEpOyB9CiAKIGlu
bGluZSBVbmljb2RlU3RyaW5nJgotVW5pY29kZVN0cmluZzo6b3BlcmF0b3IrPSAoVUNoYXIgY2gp
Ci17IHJldHVybiBkb1JlcGxhY2UobGVuZ3RoKCksIDAsICZjaCwgMCwgMSk7IH0KK1VuaWNvZGVT
dHJpbmc6Om9wZXJhdG9yKz0gKGNoYXIxNl90IGNoKQoreyByZXR1cm4gZG9BcHBlbmQoJmNoLCAw
LCAxKTsgfQogCiBpbmxpbmUgVW5pY29kZVN0cmluZyYKIFVuaWNvZGVTdHJpbmc6Om9wZXJhdG9y
Kz0gKFVDaGFyMzIgY2gpIHsKQEAgLTQ0MTcsNyArNDcwNiw3IEBAIFVuaWNvZGVTdHJpbmc6Om9w
ZXJhdG9yKz0gKFVDaGFyMzIgY2gpIHsKIAogaW5saW5lIFVuaWNvZGVTdHJpbmcmCiBVbmljb2Rl
U3RyaW5nOjpvcGVyYXRvcis9IChjb25zdCBVbmljb2RlU3RyaW5nJiBzcmNUZXh0KQoteyByZXR1
cm4gZG9SZXBsYWNlKGxlbmd0aCgpLCAwLCBzcmNUZXh0LCAwLCBzcmNUZXh0Lmxlbmd0aCgpKTsg
fQoreyByZXR1cm4gZG9BcHBlbmQoc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7IH0KIAog
aW5saW5lIFVuaWNvZGVTdHJpbmcmCiBVbmljb2RlU3RyaW5nOjppbnNlcnQoaW50MzJfdCBzdGFy
dCwKQEAgLTQ0MzMsMjAgKzQ3MjIsMjAgQEAgVW5pY29kZVN0cmluZzo6aW5zZXJ0KGludDMyX3Qg
c3RhcnQsCiAKIGlubGluZSBVbmljb2RlU3RyaW5nJgogVW5pY29kZVN0cmluZzo6aW5zZXJ0KGlu
dDMyX3Qgc3RhcnQsCi0gICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAg
ICAgICAgICAgY29uc3QgY2hhcjE2X3QgKnNyY0NoYXJzLAogICAgICAgICAgICAgICBpbnQzMl90
IHNyY1N0YXJ0LAogICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCkKIHsgcmV0dXJuIGRv
UmVwbGFjZShzdGFydCwgMCwgc3JjQ2hhcnMsIHNyY1N0YXJ0LCBzcmNMZW5ndGgpOyB9CiAKIGlu
bGluZSBVbmljb2RlU3RyaW5nJgogVW5pY29kZVN0cmluZzo6aW5zZXJ0KGludDMyX3Qgc3RhcnQs
Ci0gICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmNDaGFycywKKyAgICAgICAgICAgICAgQ29u
c3RDaGFyMTZQdHIgc3JjQ2hhcnMsCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoKQog
eyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCAwLCBzcmNDaGFycywgMCwgc3JjTGVuZ3RoKTsgfQog
CiBpbmxpbmUgVW5pY29kZVN0cmluZyYKIFVuaWNvZGVTdHJpbmc6Omluc2VydChpbnQzMl90IHN0
YXJ0LAotICAgICAgICAgICAgICBVQ2hhciBzcmNDaGFyKQorICAgICAgICAgICAgICBjaGFyMTZf
dCBzcmNDaGFyKQogeyByZXR1cm4gZG9SZXBsYWNlKHN0YXJ0LCAwLCAmc3JjQ2hhciwgMCwgMSk7
IH0KIAogaW5saW5lIFVuaWNvZGVTdHJpbmcmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91
bmljb2RlL3Vub3JtLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vub3JtLmgKaW5kZXggZmJi
N2I0OWIzNjQ4NTQ4NDM3ZTQxZmYwNTMwZmRlOWIzYzhlMThmMi4uMzgzOWRlMTI5NTczYzE5YjA1
MjQ3YWU5ZDM1YzJiMjk0ZWU0MWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29k
ZS91bm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW5vcm0uaApAQCAtMSw2ICsx
LDggQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisv
LyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdo
dC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiBDb3B5cmlnaHQgKGMpIDE5OTYt
MjAxMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbgorKiBDb3B5
cmlnaHQgKGMpIDE5OTYtMjAxNiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jw
b3JhdGlvbgogKiAgICAgICAgICAgICAgIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAqIEZpbGUgdW5vcm0uaApAQCAtMjQsMTQgKzI2LDE1
IEBACiAKIC8qKgogICogXGZpbGUKLSAqIFxicmllZiBDIEFQSTogVW5pY29kZSBOb3JtYWxpemF0
aW9uIAorICogXGJyaWVmIEMgQVBJOiBVbmljb2RlIE5vcm1hbGl6YXRpb24KICAqCi0gKiA8aDI+
VW5pY29kZSBub3JtYWxpemF0aW9uIEFQSTwvaDI+CisgKiBPbGQgVW5pY29kZSBub3JtYWxpemF0
aW9uIEFQSS4KICAqCi0gKiBOb3RlOiBUaGlzIEFQSSBoYXMgYmVlbiByZXBsYWNlZCBieSB0aGUg
dW5vcm0yLmggQVBJIGFuZCBpcyBvbmx5IGF2YWlsYWJsZQorICogVGhpcyBBUEkgaGFzIGJlZW4g
cmVwbGFjZWQgYnkgdGhlIHVub3JtMi5oIEFQSSBhbmQgaXMgb25seSBhdmFpbGFibGUKICAqIGZv
ciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBUaGUgZnVuY3Rpb25zIGhlcmUgc2ltcGx5IGRlbGVn
YXRlIHRvIHRoZQogICogdW5vcm0yLmggZnVuY3Rpb25zLCBmb3IgZXhhbXBsZSB1bm9ybTJfZ2V0
SW5zdGFuY2UoKSBhbmQgdW5vcm0yX25vcm1hbGl6ZSgpLgogICogVGhlcmUgaXMgb25lIGV4Y2Vw
dGlvbjogVGhlIG5ldyBBUEkgZG9lcyBub3QgcHJvdmlkZSBhIHJlcGxhY2VtZW50IGZvciB1bm9y
bV9jb21wYXJlKCkuCisgKiBJdHMgZGVjbGFyYXRpb24gaGFzIGJlZW4gbW92ZWQgdG8gdW5vcm0y
LmguCiAgKgogICogPGNvZGU+dW5vcm1fbm9ybWFsaXplPC9jb2RlPiB0cmFuc2Zvcm1zIFVuaWNv
ZGUgdGV4dCBpbnRvIGFuIGVxdWl2YWxlbnQgY29tcG9zZWQgb3IKICAqIGRlY29tcG9zZWQgZm9y
bSwgYWxsb3dpbmcgZm9yIGVhc2llciBzb3J0aW5nIGFuZCBzZWFyY2hpbmcgb2YgdGV4dC4KQEAg
LTU3LDcgKzYwLDcgQEAKICAqCiAgKiBUbyBhIHVzZXIgb2YgeW91ciBwcm9ncmFtLCBob3dldmVy
LCBib3RoIG9mIHRoZXNlIHNlcXVlbmNlcyBzaG91bGQgYmUKICAqIHRyZWF0ZWQgYXMgdGhlIHNh
bWUgInVzZXItbGV2ZWwiIGNoYXJhY3RlciAiQSB3aXRoIGFjdXRlIGFjY2VudCIuICBXaGVuIHlv
dSBhcmUgc2VhcmNoaW5nIG9yCi0gKiBjb21wYXJpbmcgdGV4dCwgeW91IG11c3QgZW5zdXJlIHRo
YXQgdGhlc2UgdHdvIHNlcXVlbmNlcyBhcmUgdHJlYXRlZCAKKyAqIGNvbXBhcmluZyB0ZXh0LCB5
b3UgbXVzdCBlbnN1cmUgdGhhdCB0aGVzZSB0d28gc2VxdWVuY2VzIGFyZSB0cmVhdGVkCiAgKiBl
cXVpdmFsZW50bHkuICBJbiBhZGRpdGlvbiwgeW91IG11c3QgaGFuZGxlIGNoYXJhY3RlcnMgd2l0
aCBtb3JlIHRoYW4gb25lCiAgKiBhY2NlbnQuICBTb21ldGltZXMgdGhlIG9yZGVyIG9mIGEgY2hh
cmFjdGVyJ3MgY29tYmluaW5nIGFjY2VudHMgaXMKICAqIHNpZ25pZmljYW50LCB3aGlsZSBpbiBv
dGhlciBjYXNlcyBhY2NlbnQgc2VxdWVuY2VzIGluIGRpZmZlcmVudCBvcmRlcnMgYXJlCkBAIC04
NSw4ICs4OCw4IEBACiAgKiB3aWxsIG9mdGVuIHdhbnQgdG8gdXNlIHRoZXNlIG1hcHBpbmdzLgog
ICoKICAqIDxjb2RlPnVub3JtX25vcm1hbGl6ZTwvY29kZT4gaGVscHMgc29sdmUgdGhlc2UgcHJv
YmxlbXMgYnkgdHJhbnNmb3JtaW5nIHRleHQgaW50byB0aGUKLSAqIGNhbm9uaWNhbCBjb21wb3Nl
ZCBhbmQgZGVjb21wb3NlZCBmb3JtcyBhcyBzaG93biBpbiB0aGUgZmlyc3QgZXhhbXBsZSBhYm92
ZS4gIAotICogSW4gYWRkaXRpb24sIHlvdSBjYW4gaGF2ZSBpdCBwZXJmb3JtIGNvbXBhdGliaWxp
dHkgZGVjb21wb3NpdGlvbnMgc28gdGhhdCAKKyAqIGNhbm9uaWNhbCBjb21wb3NlZCBhbmQgZGVj
b21wb3NlZCBmb3JtcyBhcyBzaG93biBpbiB0aGUgZmlyc3QgZXhhbXBsZSBhYm92ZS4KKyAqIElu
IGFkZGl0aW9uLCB5b3UgY2FuIGhhdmUgaXQgcGVyZm9ybSBjb21wYXRpYmlsaXR5IGRlY29tcG9z
aXRpb25zIHNvIHRoYXQKICAqIHlvdSBjYW4gdHJlYXQgY29tcGF0aWJpbGl0eSBjaGFyYWN0ZXJz
IHRoZSBzYW1lIGFzIHRoZWlyIGVxdWl2YWxlbnRzLgogICogRmluYWxseSwgPGNvZGU+dW5vcm1f
bm9ybWFsaXplPC9jb2RlPiByZWFycmFuZ2VzIGFjY2VudHMgaW50byB0aGUgcHJvcGVyIGNhbm9u
aWNhbAogICogb3JkZXIsIHNvIHRoYXQgeW91IGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGFj
Y2VudCByZWFycmFuZ2VtZW50IG9uIHlvdXIKQEAgLTEyNiw0MyArMTI5LDQ3IEBACiAgKiBGb3Ig
bW9yZSB1c2FnZSBleGFtcGxlcywgc2VlIHRoZSBVbmljb2RlIFN0YW5kYXJkIEFubmV4LgogICov
CiAKKy8vIERvIG5vdCBjb25kaXRpb25hbGl6ZSB0aGUgZm9sbG93aW5nIGVudW0gd2l0aCAjaWZu
ZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSSwKKy8vIGl0IGlzIG5lZWRlZCBmb3IgbGF5b3V0IG9m
IE5vcm1hbGl6ZXIgb2JqZWN0LgogLyoqCiAgKiBDb25zdGFudHMgZm9yIG5vcm1hbGl6YXRpb24g
bW9kZXMuCi0gKiBAc3RhYmxlIElDVSAyLjAKKyAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgdW5v
cm0yLmggaW5zdGVhZC4KICAqLwogdHlwZWRlZiBlbnVtIHsKLSAgLyoqIE5vIGRlY29tcG9zaXRp
b24vY29tcG9zaXRpb24uIEBzdGFibGUgSUNVIDIuMCAqLwotICBVTk9STV9OT05FID0gMSwgCi0g
IC8qKiBDYW5vbmljYWwgZGVjb21wb3NpdGlvbi4gQHN0YWJsZSBJQ1UgMi4wICovCisgIC8qKiBO
byBkZWNvbXBvc2l0aW9uL2NvbXBvc2l0aW9uLiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3Jt
Mi5oIGluc3RlYWQuICovCisgIFVOT1JNX05PTkUgPSAxLAorICAvKiogQ2Fub25pY2FsIGRlY29t
cG9zaXRpb24uIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgdW5vcm0yLmggaW5zdGVhZC4gKi8KICAg
VU5PUk1fTkZEID0gMiwKLSAgLyoqIENvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbi4gQHN0YWJs
ZSBJQ1UgMi4wICovCisgIC8qKiBDb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb24uIEBkZXByZWNh
dGVkIElDVSA1NiBVc2UgdW5vcm0yLmggaW5zdGVhZC4gKi8KICAgVU5PUk1fTkZLRCA9IDMsCi0g
IC8qKiBDYW5vbmljYWwgZGVjb21wb3NpdGlvbiBmb2xsb3dlZCBieSBjYW5vbmljYWwgY29tcG9z
aXRpb24uIEBzdGFibGUgSUNVIDIuMCAqLworICAvKiogQ2Fub25pY2FsIGRlY29tcG9zaXRpb24g
Zm9sbG93ZWQgYnkgY2Fub25pY2FsIGNvbXBvc2l0aW9uLiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNl
IHVub3JtMi5oIGluc3RlYWQuICovCiAgIFVOT1JNX05GQyA9IDQsCi0gIC8qKiBEZWZhdWx0IG5v
cm1hbGl6YXRpb24uIEBzdGFibGUgSUNVIDIuMCAqLwotICBVTk9STV9ERUZBVUxUID0gVU5PUk1f
TkZDLCAKLSAgLyoqIENvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbiBmb2xsb3dlZCBieSBjYW5v
bmljYWwgY29tcG9zaXRpb24uIEBzdGFibGUgSUNVIDIuMCAqLworICAvKiogRGVmYXVsdCBub3Jt
YWxpemF0aW9uLiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGluc3RlYWQuICovCisg
IFVOT1JNX0RFRkFVTFQgPSBVTk9STV9ORkMsCisgIC8qKiBDb21wYXRpYmlsaXR5IGRlY29tcG9z
aXRpb24gZm9sbG93ZWQgYnkgY2Fub25pY2FsIGNvbXBvc2l0aW9uLiBAZGVwcmVjYXRlZCBJQ1Ug
NTYgVXNlIHVub3JtMi5oIGluc3RlYWQuICovCiAgIFVOT1JNX05GS0MgPTUsCi0gIC8qKiAiRmFz
dCBDIG9yIEQiIGZvcm0uIEBzdGFibGUgSUNVIDIuMCAqLworICAvKiogIkZhc3QgQyBvciBEIiBm
b3JtLiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGluc3RlYWQuICovCiAgIFVOT1JN
X0ZDRCA9IDYsCiAKLSAgLyoqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsaXphdGlv
biBtb2RlIGNvbnN0YW50LiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgLyoqIE9uZSBtb3JlIHRoYW4g
dGhlIGhpZ2hlc3Qgbm9ybWFsaXphdGlvbiBtb2RlIGNvbnN0YW50LiBAZGVwcmVjYXRlZCBJQ1Ug
NTYgVXNlIHVub3JtMi5oIGluc3RlYWQuICovCiAgIFVOT1JNX01PREVfQ09VTlQKIH0gVU5vcm1h
bGl6YXRpb25Nb2RlOwogCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorCiAvKioKICAq
IENvbnN0YW50cyBmb3Igb3B0aW9ucyBmbGFncyBmb3Igbm9ybWFsaXphdGlvbi4KICAqIFVzZSAw
IGZvciBkZWZhdWx0IG9wdGlvbnMsCiAgKiBpbmNsdWRpbmcgbm9ybWFsaXphdGlvbiBhY2NvcmRp
bmcgdG8gdGhlIFVuaWNvZGUgdmVyc2lvbgogICogdGhhdCBpcyBjdXJyZW50bHkgc3VwcG9ydGVk
IGJ5IElDVSAoc2VlIHVfZ2V0VW5pY29kZVZlcnNpb24pLgotICogQHN0YWJsZSBJQ1UgMi42Cisg
KiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGluc3RlYWQuCiAgKi8KIGVudW0gewog
ICAgIC8qKgogICAgICAqIE9wdGlvbnMgYml0IHNldCB2YWx1ZSB0byBzZWxlY3QgVW5pY29kZSAz
LjIgbm9ybWFsaXphdGlvbgogICAgICAqIChleGNlcHQgTm9ybWFsaXphdGlvbkNvcnJlY3Rpb25z
KS4KICAgICAgKiBBdCBtb3N0IG9uZSBVbmljb2RlIHZlcnNpb24gY2FuIGJlIHNlbGVjdGVkIGF0
IGEgdGltZS4KLSAgICAgKiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1Ug
NTYgVXNlIHVub3JtMi5oIGluc3RlYWQuCiAgICAgICovCiAgICAgVU5PUk1fVU5JQ09ERV8zXzI9
MHgyMAogfTsKQEAgLTE4MCw3ICsxODcsNyBAQCBlbnVtIHsKICAqIGludGVybmFsIG5vcm1hbGl6
YXRpb24gZnVuY3Rpb25zLikKICAqCiAgKiBAc2VlIHVub3JtX2NvbXBhcmUKLSAqIEBzdGFibGUg
SUNVIDIuNgorICogQGRlcHJlY2F0ZWQgSUNVIDU2IFVzZSB1bm9ybTIuaCBpbnN0ZWFkLgogICov
CiAjZGVmaW5lIFVOT1JNX0NPTVBBUkVfTk9STV9PUFRJT05TX1NISUZUIDIwCiAKQEAgLTE5Miw3
ICsxOTksNyBAQCBlbnVtIHsKICAqCiAgKiBAcGFyYW0gc291cmNlIFRoZSBzdHJpbmcgdG8gbm9y
bWFsaXplLgogICogQHBhcmFtIHNvdXJjZUxlbmd0aCBUaGUgbGVuZ3RoIG9mIHNvdXJjZSwgb3Ig
LTEgaWYgTlVMLXRlcm1pbmF0ZWQuCi0gKiBAcGFyYW0gbW9kZSBUaGUgbm9ybWFsaXphdGlvbiBt
b2RlOyBvbmUgb2YgVU5PUk1fTk9ORSwgCisgKiBAcGFyYW0gbW9kZSBUaGUgbm9ybWFsaXphdGlv
biBtb2RlOyBvbmUgb2YgVU5PUk1fTk9ORSwKICAqICAgICAgICAgICAgIFVOT1JNX05GRCwgVU5P
Uk1fTkZDLCBVTk9STV9ORktDLCBVTk9STV9ORktELCBVTk9STV9ERUZBVUxULgogICogQHBhcmFt
IG9wdGlvbnMgVGhlIG5vcm1hbGl6YXRpb24gb3B0aW9ucywgT1JlZCB0b2dldGhlciAoMCBmb3Ig
bm8gb3B0aW9ucykuCiAgKiBAcGFyYW0gcmVzdWx0IEEgcG9pbnRlciB0byBhIGJ1ZmZlciB0byBy
ZWNlaXZlIHRoZSByZXN1bHQgc3RyaW5nLgpAQCAtMjAxLDIzICsyMDgsMjMgQEAgZW51bSB7CiAg
KiBAcGFyYW0gc3RhdHVzIEEgcG9pbnRlciB0byBhIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkg
ZXJyb3JzLgogICogQHJldHVybiBUaGUgdG90YWwgYnVmZmVyIHNpemUgbmVlZGVkOyBpZiBncmVh
dGVyIHRoYW4gcmVzdWx0TGVuZ3RoLAogICogICAgICAgICB0aGUgb3V0cHV0IHdhcyB0cnVuY2F0
ZWQsIGFuZCB0aGUgZXJyb3IgY29kZSBpcyBzZXQgdG8gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1Iu
Ci0gKiBAc3RhYmxlIElDVSAyLjAKKyAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgdW5vcm0yLmgg
aW5zdGVhZC4KICAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIgCitVX0RFUFJFQ0FURUQg
aW50MzJfdCBVX0VYUE9SVDIKIHVub3JtX25vcm1hbGl6ZShjb25zdCBVQ2hhciAqc291cmNlLCBp
bnQzMl90IHNvdXJjZUxlbmd0aCwKICAgICAgICAgICAgICAgICBVTm9ybWFsaXphdGlvbk1vZGUg
bW9kZSwgaW50MzJfdCBvcHRpb25zLAogICAgICAgICAgICAgICAgIFVDaGFyICpyZXN1bHQsIGlu
dDMyX3QgcmVzdWx0TGVuZ3RoLAogICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7
CiAKIC8qKgotICogUGVyZm9ybWluZyBxdWljayBjaGVjayBvbiBhIHN0cmluZywgdG8gcXVpY2ts
eSBkZXRlcm1pbmUgaWYgdGhlIHN0cmluZyBpcyAKKyAqIFBlcmZvcm1pbmcgcXVpY2sgY2hlY2sg
b24gYSBzdHJpbmcsIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBzdHJpbmcgaXMKICAqIGlu
IGEgcGFydGljdWxhciBub3JtYWxpemF0aW9uIGZvcm1hdC4KICAqIFRocmVlIHR5cGVzIG9mIHJl
c3VsdCBjYW4gYmUgcmV0dXJuZWQgVU5PUk1fWUVTLCBVTk9STV9OTyBvcgogICogVU5PUk1fTUFZ
QkUuIFJlc3VsdCBVTk9STV9ZRVMgaW5kaWNhdGVzIHRoYXQgdGhlIGFyZ3VtZW50CiAgKiBzdHJp
bmcgaXMgaW4gdGhlIGRlc2lyZWQgbm9ybWFsaXplZCBmb3JtYXQsIFVOT1JNX05PIGRldGVybWlu
ZXMgdGhhdAotICogYXJndW1lbnQgc3RyaW5nIGlzIG5vdCBpbiB0aGUgZGVzaXJlZCBub3JtYWxp
emVkIGZvcm1hdC4gQSAKLSAqIFVOT1JNX01BWUJFIHJlc3VsdCBpbmRpY2F0ZXMgdGhhdCBhIG1v
cmUgdGhvcm91Z2ggY2hlY2sgaXMgcmVxdWlyZWQsIAotICogdGhlIHVzZXIgbWF5IGhhdmUgdG8g
cHV0IHRoZSBzdHJpbmcgaW4gaXRzIG5vcm1hbGl6ZWQgZm9ybSBhbmQgY29tcGFyZSB0aGUgCisg
KiBhcmd1bWVudCBzdHJpbmcgaXMgbm90IGluIHRoZSBkZXNpcmVkIG5vcm1hbGl6ZWQgZm9ybWF0
LiBBCisgKiBVTk9STV9NQVlCRSByZXN1bHQgaW5kaWNhdGVzIHRoYXQgYSBtb3JlIHRob3JvdWdo
IGNoZWNrIGlzIHJlcXVpcmVkLAorICogdGhlIHVzZXIgbWF5IGhhdmUgdG8gcHV0IHRoZSBzdHJp
bmcgaW4gaXRzIG5vcm1hbGl6ZWQgZm9ybSBhbmQgY29tcGFyZSB0aGUKICAqIHJlc3VsdHMuCiAg
KgogICogQHBhcmFtIHNvdXJjZSAgICAgICBzdHJpbmcgZm9yIGRldGVybWluaW5nIGlmIGl0IGlz
IGluIGEgbm9ybWFsaXplZCBmb3JtYXQKQEAgLTIyNyw5ICsyMzQsOSBAQCB1bm9ybV9ub3JtYWxp
emUoY29uc3QgVUNoYXIgKnNvdXJjZSwgaW50MzJfdCBzb3VyY2VMZW5ndGgsCiAgKiBAcmV0dXJu
IFVOT1JNX1lFUywgVU5PUk1fTk8gb3IgVU5PUk1fTUFZQkUKICAqCiAgKiBAc2VlIHVub3JtX2lz
Tm9ybWFsaXplZAotICogQHN0YWJsZSBJQ1UgMi4wCisgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNl
IHVub3JtMi5oIGluc3RlYWQuCiAgKi8KLVVfU1RBQkxFIFVOb3JtYWxpemF0aW9uQ2hlY2tSZXN1
bHQgVV9FWFBPUlQyCitVX0RFUFJFQ0FURUQgVU5vcm1hbGl6YXRpb25DaGVja1Jlc3VsdCBVX0VY
UE9SVDIKIHVub3JtX3F1aWNrQ2hlY2soY29uc3QgVUNoYXIgKnNvdXJjZSwgaW50MzJfdCBzb3Vy
Y2VsZW5ndGgsCiAgICAgICAgICAgICAgICAgIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLAogICAg
ICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwpAQCAtMjQ4LDEwICsyNTUsMTAgQEAg
dW5vcm1fcXVpY2tDaGVjayhjb25zdCBVQ2hhciAqc291cmNlLCBpbnQzMl90IHNvdXJjZWxlbmd0
aCwKICAqCiAgKiBAc2VlIHVub3JtX3F1aWNrQ2hlY2sKICAqIEBzZWUgdW5vcm1faXNOb3JtYWxp
emVkCi0gKiBAc3RhYmxlIElDVSAyLjYKKyAqIEBkZXByZWNhdGVkIElDVSA1NiBVc2UgdW5vcm0y
LmggaW5zdGVhZC4KICAqLwotVV9TVEFCTEUgVU5vcm1hbGl6YXRpb25DaGVja1Jlc3VsdCBVX0VY
UE9SVDIKLXVub3JtX3F1aWNrQ2hlY2tXaXRoT3B0aW9ucyhjb25zdCBVQ2hhciAqc3JjLCBpbnQz
Ml90IHNyY0xlbmd0aCwgCitVX0RFUFJFQ0FURUQgVU5vcm1hbGl6YXRpb25DaGVja1Jlc3VsdCBV
X0VYUE9SVDIKK3Vub3JtX3F1aWNrQ2hlY2tXaXRoT3B0aW9ucyhjb25zdCBVQ2hhciAqc3JjLCBp
bnQzMl90IHNyY0xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTm9ybWFsaXph
dGlvbk1vZGUgbW9kZSwgaW50MzJfdCBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwogCkBAIC0yNzQsOSArMjgxLDkgQEAgdW5vcm1f
cXVpY2tDaGVja1dpdGhPcHRpb25zKGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3Ro
LAogICogICAgICAgICAibW9kZSIgbm9ybWFsaXphdGlvbiBmb3JtLgogICoKICAqIEBzZWUgdW5v
cm1fcXVpY2tDaGVjawotICogQHN0YWJsZSBJQ1UgMi4yCisgKiBAZGVwcmVjYXRlZCBJQ1UgNTYg
VXNlIHVub3JtMi5oIGluc3RlYWQuCiAgKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgorVV9E
RVBSRUNBVEVEIFVCb29sIFVfRVhQT1JUMgogdW5vcm1faXNOb3JtYWxpemVkKGNvbnN0IFVDaGFy
ICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgIFVOb3JtYWxpemF0
aW9uTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUp
OwpAQCAtMjk2LDkgKzMwMyw5IEBAIHVub3JtX2lzTm9ybWFsaXplZChjb25zdCBVQ2hhciAqc3Jj
LCBpbnQzMl90IHNyY0xlbmd0aCwKICAqCiAgKiBAc2VlIHVub3JtX3F1aWNrQ2hlY2sKICAqIEBz
ZWUgdW5vcm1faXNOb3JtYWxpemVkCi0gKiBAc3RhYmxlIElDVSAyLjYKKyAqIEBkZXByZWNhdGVk
IElDVSA1NiBVc2UgdW5vcm0yLmggaW5zdGVhZC4KICAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBP
UlQyCitVX0RFUFJFQ0FURUQgVUJvb2wgVV9FWFBPUlQyCiB1bm9ybV9pc05vcm1hbGl6ZWRXaXRo
T3B0aW9ucyhjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBpbnQzMl90IG9wdGlv
bnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2Rl
KTsKQEAgLTM3NCw5ICszODEsOSBAQCB1bm9ybV9pc05vcm1hbGl6ZWRXaXRoT3B0aW9ucyhjb25z
dCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwKICAqIEBzZWUgdW5vcm1fcHJldmlvdXMK
ICAqIEBzZWUgdW5vcm1fbm9ybWFsaXplCiAgKgotICogQHN0YWJsZSBJQ1UgMi4xCisgKiBAZGVw
cmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGluc3RlYWQuCiAgKi8KLVVfU1RBQkxFIGludDMy
X3QgVV9FWFBPUlQyCitVX0RFUFJFQ0FURUQgaW50MzJfdCBVX0VYUE9SVDIKIHVub3JtX25leHQo
VUNoYXJJdGVyYXRvciAqc3JjLAogICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0
Q2FwYWNpdHksCiAgICAgICAgICAgIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBpbnQzMl90IG9w
dGlvbnMsCkBAIC00MDcsOSArNDE0LDkgQEAgdW5vcm1fbmV4dChVQ2hhckl0ZXJhdG9yICpzcmMs
CiAgKiBAc2VlIHVub3JtX25leHQKICAqIEBzZWUgdW5vcm1fbm9ybWFsaXplCiAgKgotICogQHN0
YWJsZSBJQ1UgMi4xCisgKiBAZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGluc3RlYWQu
CiAgKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCitVX0RFUFJFQ0FURUQgaW50MzJfdCBV
X0VYUE9SVDIKIHVub3JtX3ByZXZpb3VzKFVDaGFySXRlcmF0b3IgKnNyYywKICAgICAgICAgICAg
ICAgIFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKICAgICAgICAgICAgICAgIFVO
b3JtYWxpemF0aW9uTW9kZSBtb2RlLCBpbnQzMl90IG9wdGlvbnMsCkBAIC00NTEsMTExICs0NTgs
MTUgQEAgdW5vcm1fcHJldmlvdXMoVUNoYXJJdGVyYXRvciAqc3JjLAogICogQHNlZSB1bm9ybV9u
ZXh0CiAgKiBAc2VlIHVub3JtX3ByZXZpb3VzCiAgKgotICogQHN0YWJsZSBJQ1UgMi4xCisgKiBA
ZGVwcmVjYXRlZCBJQ1UgNTYgVXNlIHVub3JtMi5oIGluc3RlYWQuCiAgKi8KLVVfU1RBQkxFIGlu
dDMyX3QgVV9FWFBPUlQyCitVX0RFUFJFQ0FURUQgaW50MzJfdCBVX0VYUE9SVDIKIHVub3JtX2Nv
bmNhdGVuYXRlKGNvbnN0IFVDaGFyICpsZWZ0LCBpbnQzMl90IGxlZnRMZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICBjb25zdCBVQ2hhciAqcmlnaHQsIGludDMyX3QgcmlnaHRMZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCiAgICAgICAg
ICAgICAgICAgICBVTm9ybWFsaXphdGlvbk1vZGUgbW9kZSwgaW50MzJfdCBvcHRpb25zLAogICAg
ICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CiAKLS8qKgotICogT3B0aW9u
IGJpdCBmb3IgdW5vcm1fY29tcGFyZToKLSAqIEJvdGggaW5wdXQgc3RyaW5ncyBhcmUgYXNzdW1l
ZCB0byBmdWxmaWxsIEZDRCBjb25kaXRpb25zLgotICogQHN0YWJsZSBJQ1UgMi4yCi0gKi8KLSNk
ZWZpbmUgVU5PUk1fSU5QVVRfSVNfRkNEICAgICAgICAgIDB4MjAwMDAKLQotLyoqCi0gKiBPcHRp
b24gYml0IGZvciB1bm9ybV9jb21wYXJlOgotICogUGVyZm9ybSBjYXNlLWluc2Vuc2l0aXZlIGNv
bXBhcmlzb24uCi0gKiBAc3RhYmxlIElDVSAyLjIKLSAqLwotI2RlZmluZSBVX0NPTVBBUkVfSUdO
T1JFX0NBU0UgICAgICAgMHgxMDAwMAotCi0jaWZuZGVmIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09S
REVSCi0vKiBzZWUgYWxzbyB1bmlzdHIuaCBhbmQgdXN0cmluZy5oICovCi0vKioKLSAqIE9wdGlv
biBiaXQgZm9yIHVfc3RyQ2FzZUNvbXBhcmUsIHVfc3RyY2FzZWNtcCwgdW5vcm1fY29tcGFyZSwg
ZXRjOgotICogQ29tcGFyZSBzdHJpbmdzIGluIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBj
b2RlIHVuaXQgb3JkZXIuCi0gKiBAc3RhYmxlIElDVSAyLjIKLSAqLwotI2RlZmluZSBVX0NPTVBB
UkVfQ09ERV9QT0lOVF9PUkRFUiAgMHg4MDAwCi0jZW5kaWYKLQotLyoqCi0gKiBDb21wYXJlIHR3
byBzdHJpbmdzIGZvciBjYW5vbmljYWwgZXF1aXZhbGVuY2UuCi0gKiBGdXJ0aGVyIG9wdGlvbnMg
aW5jbHVkZSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gYW5kCi0gKiBjb2RlIHBvaW50IG9y
ZGVyIChhcyBvcHBvc2VkIHRvIGNvZGUgdW5pdCBvcmRlcikuCi0gKgotICogQ2Fub25pY2FsIGVx
dWl2YWxlbmNlIGJldHdlZW4gdHdvIHN0cmluZ3MgaXMgZGVmaW5lZCBhcyB0aGVpciBub3JtYWxp
emVkCi0gKiBmb3JtcyAoTkZEIG9yIE5GQykgYmVpbmcgaWRlbnRpY2FsLgotICogVGhpcyBmdW5j
dGlvbiBjb21wYXJlcyBzdHJpbmdzIGluY3JlbWVudGFsbHkgaW5zdGVhZCBvZiBub3JtYWxpemlu
ZwotICogKGFuZCBvcHRpb25hbGx5IGNhc2UtZm9sZGluZykgYm90aCBzdHJpbmdzIGVudGlyZWx5
LAotICogaW1wcm92aW5nIHBlcmZvcm1hbmNlIHNpZ25pZmljYW50bHkuCi0gKgotICogQnVsayBu
b3JtYWxpemF0aW9uIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHRoZSBzdHJpbmdzIGRvIG5vdCBmdWxm
aWxsIHRoZSBGQ0QKLSAqIGNvbmRpdGlvbnMuIE9ubHkgaW4gdGhpcyBjYXNlLCBhbmQgb25seSBp
ZiB0aGUgc3RyaW5ncyBhcmUgcmVsYXRpdmVseSBsb25nLAotICogaXMgbWVtb3J5IGFsbG9jYXRl
ZCB0ZW1wb3JhcmlseS4KLSAqIEZvciBGQ0Qgc3RyaW5ncyBhbmQgc2hvcnQgbm9uLUZDRCBzdHJp
bmdzIHRoZXJlIGlzIG5vIG1lbW9yeSBhbGxvY2F0aW9uLgotICoKLSAqIFNlbWFudGljYWxseSwg
dGhpcyBpcyBlcXVpdmFsZW50IHRvCi0gKiAgIHN0cmNtcFtDb2RlUG9pbnRPcmRlcl0oTkZEKGZv
bGRDYXNlKE5GRChzMSkpKSwgTkZEKGZvbGRDYXNlKE5GRChzMikpKSkKLSAqIHdoZXJlIGNvZGUg
cG9pbnQgb3JkZXIgYW5kIGZvbGRDYXNlIGFyZSBhbGwgb3B0aW9uYWwuCi0gKgotICogVUFYIDIx
IDIuNSBDYXNlbGVzcyBNYXRjaGluZyBzcGVjaWZpZXMgdGhhdCBmb3IgYSBjYW5vbmljYWwgY2Fz
ZWxlc3MgbWF0Y2gKLSAqIHRoZSBjYXNlIGZvbGRpbmcgbXVzdCBiZSBwZXJmb3JtZWQgZmlyc3Qs
IHRoZW4gdGhlIG5vcm1hbGl6YXRpb24uCi0gKgotICogQHBhcmFtIHMxIEZpcnN0IHNvdXJjZSBz
dHJpbmcuCi0gKiBAcGFyYW0gbGVuZ3RoMSBMZW5ndGggb2YgZmlyc3Qgc291cmNlIHN0cmluZywg
b3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQuCi0gKgotICogQHBhcmFtIHMyIFNlY29uZCBzb3VyY2Ug
c3RyaW5nLgotICogQHBhcmFtIGxlbmd0aDIgTGVuZ3RoIG9mIHNlY29uZCBzb3VyY2Ugc3RyaW5n
LCBvciAtMSBpZiBOVUwtdGVybWluYXRlZC4KLSAqCi0gKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBz
ZXQgb2Ygb3B0aW9uczoKLSAqICAgLSBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBm
b3IgZGVmYXVsdCBvcHRpb25zOgotICogICAgIENhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb24gaW4g
Y29kZSB1bml0IG9yZGVyLCBhbmQgdGhlIGlucHV0IHN0cmluZ3MKLSAqICAgICBhcmUgcXVpY2st
Y2hlY2tlZCBmb3IgRkNELgotICoKLSAqICAgLSBVTk9STV9JTlBVVF9JU19GQ0QKLSAqICAgICBT
ZXQgaWYgdGhlIGNhbGxlciBrbm93cyB0aGF0IGJvdGggczEgYW5kIHMyIGZ1bGZpbGwgdGhlIEZD
RCBjb25kaXRpb25zLgotICogICAgIElmIG5vdCBzZXQsIHRoZSBmdW5jdGlvbiB3aWxsIHF1aWNr
Q2hlY2sgZm9yIEZDRAotICogICAgIGFuZCBub3JtYWxpemUgaWYgbmVjZXNzYXJ5LgotICoKLSAq
ICAgLSBVX0NPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUgotICogICAgIFNldCB0byBjaG9vc2UgY29k
ZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNvZGUgdW5pdCBvcmRlcgotICogICAgIChzZWUgdV9z
dHJDb21wYXJlIGZvciBkZXRhaWxzKS4KLSAqCi0gKiAgIC0gVV9DT01QQVJFX0lHTk9SRV9DQVNF
Ci0gKiAgICAgU2V0IHRvIGNvbXBhcmUgc3RyaW5ncyBjYXNlLWluc2Vuc2l0aXZlbHkgdXNpbmcg
Y2FzZSBmb2xkaW5nLAotICogICAgIGluc3RlYWQgb2YgY2FzZS1zZW5zaXRpdmVseS4KLSAqICAg
ICBJZiBzZXQsIHRoZW4gdGhlIGZvbGxvd2luZyBjYXNlIGZvbGRpbmcgb3B0aW9ucyBhcmUgdXNl
ZC4KLSAqCi0gKiAgIC0gT3B0aW9ucyBhcyB1c2VkIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBjb21w
YXJpc29ucywgY3VycmVudGx5OgotICoKLSAqICAgLSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJ
QUxfSQotICogICAgKHNlZSB1X3N0ckNhc2VDb21wYXJlIGZvciBkZXRhaWxzKQotICoKLSAqICAg
LSByZWd1bGFyIG5vcm1hbGl6YXRpb24gb3B0aW9ucyBzaGlmdGVkIGxlZnQgYnkgVU5PUk1fQ09N
UEFSRV9OT1JNX09QVElPTlNfU0hJRlQKLSAqCi0gKiBAcGFyYW0gcEVycm9yQ29kZSBJQ1UgZXJy
b3IgY29kZSBpbi9vdXQgcGFyYW1ldGVyLgotICogICAgICAgICAgICAgICAgICAgTXVzdCBmdWxm
aWxsIFVfU1VDQ0VTUyBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwuCi0gKiBAcmV0dXJuIDwwIG9y
IDAgb3IgPjAgYXMgdXN1YWwgZm9yIHN0cmluZyBjb21wYXJpc29ucwotICoKLSAqIEBzZWUgdW5v
cm1fbm9ybWFsaXplCi0gKiBAc2VlIFVOT1JNX0ZDRAotICogQHNlZSB1X3N0ckNvbXBhcmUKLSAq
IEBzZWUgdV9zdHJDYXNlQ29tcGFyZQotICoKLSAqIEBzdGFibGUgSUNVIDIuMgotICovCi1VX1NU
QUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdW5vcm1fY29tcGFyZShjb25zdCBVQ2hhciAqczEsIGlu
dDMyX3QgbGVuZ3RoMSwKLSAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90IGxl
bmd0aDIsCi0gICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMsCi0gICAgICAgICAgICAgIFVF
cnJvckNvZGUgKnBFcnJvckNvZGUpOwotCisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQ
SSAqLwogI2VuZGlmIC8qICNpZiAhVUNPTkZJR19OT19OT1JNQUxJWkFUSU9OICovCi0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bm9ybTIuaCBiL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdW5vcm0yLmgKaW5kZXggNzE1MmZjMTA5NDY2ZDA3YzUwYmJjYTVjOWRm
N2I3N2MxOTk3ZjkwMC4uYTliZDAyZjI1NjM2MWYzNDM4Y2I3NTk3MmQ5M2Q2NjhlMjIzYjMzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91bm9ybTIuaAorKysgYi9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL3Vub3JtMi5oCkBAIC0xLDEyICsxLDE0IEBACisvLyDCqSAyMDE2IGFu
ZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9m
IHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKICoKLSogICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMywgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMjAwOS0yMDE1LCBJbnRl
cm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4g
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgZmls
ZSBuYW1lOiAgdW5vcm0yLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5n
OiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246
NAogKgpAQCAtMzAsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKICNp
bmNsdWRlICJ1bmljb2RlL2xvY2FscG9pbnRlci5oIgorI2luY2x1ZGUgInVuaWNvZGUvc3RyaW5n
b3B0aW9ucy5oIgogI2luY2x1ZGUgInVuaWNvZGUvdXNldC5oIgogCiAvKioKQEAgLTUyNCw1ICs1
MjcsNzcgQEAgdW5vcm0yX2hhc0JvdW5kYXJ5QWZ0ZXIoY29uc3QgVU5vcm1hbGl6ZXIyICpub3Jt
MiwgVUNoYXIzMiBjKTsKIFVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgogdW5vcm0yX2lzSW5lcnQo
Y29uc3QgVU5vcm1hbGl6ZXIyICpub3JtMiwgVUNoYXIzMiBjKTsKIAorLyoqCisgKiBDb21wYXJl
cyB0d28gc3RyaW5ncyBmb3IgY2Fub25pY2FsIGVxdWl2YWxlbmNlLgorICogRnVydGhlciBvcHRp
b25zIGluY2x1ZGUgY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uIGFuZAorICogY29kZSBwb2lu
dCBvcmRlciAoYXMgb3Bwb3NlZCB0byBjb2RlIHVuaXQgb3JkZXIpLgorICoKKyAqIENhbm9uaWNh
bCBlcXVpdmFsZW5jZSBiZXR3ZWVuIHR3byBzdHJpbmdzIGlzIGRlZmluZWQgYXMgdGhlaXIgbm9y
bWFsaXplZAorICogZm9ybXMgKE5GRCBvciBORkMpIGJlaW5nIGlkZW50aWNhbC4KKyAqIFRoaXMg
ZnVuY3Rpb24gY29tcGFyZXMgc3RyaW5ncyBpbmNyZW1lbnRhbGx5IGluc3RlYWQgb2Ygbm9ybWFs
aXppbmcKKyAqIChhbmQgb3B0aW9uYWxseSBjYXNlLWZvbGRpbmcpIGJvdGggc3RyaW5ncyBlbnRp
cmVseSwKKyAqIGltcHJvdmluZyBwZXJmb3JtYW5jZSBzaWduaWZpY2FudGx5LgorICoKKyAqIEJ1
bGsgbm9ybWFsaXphdGlvbiBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB0aGUgc3RyaW5ncyBkbyBub3Qg
ZnVsZmlsbCB0aGUgRkNECisgKiBjb25kaXRpb25zLiBPbmx5IGluIHRoaXMgY2FzZSwgYW5kIG9u
bHkgaWYgdGhlIHN0cmluZ3MgYXJlIHJlbGF0aXZlbHkgbG9uZywKKyAqIGlzIG1lbW9yeSBhbGxv
Y2F0ZWQgdGVtcG9yYXJpbHkuCisgKiBGb3IgRkNEIHN0cmluZ3MgYW5kIHNob3J0IG5vbi1GQ0Qg
c3RyaW5ncyB0aGVyZSBpcyBubyBtZW1vcnkgYWxsb2NhdGlvbi4KKyAqCisgKiBTZW1hbnRpY2Fs
bHksIHRoaXMgaXMgZXF1aXZhbGVudCB0bworICogICBzdHJjbXBbQ29kZVBvaW50T3JkZXJdKE5G
RChmb2xkQ2FzZShORkQoczEpKSksIE5GRChmb2xkQ2FzZShORkQoczIpKSkpCisgKiB3aGVyZSBj
b2RlIHBvaW50IG9yZGVyIGFuZCBmb2xkQ2FzZSBhcmUgYWxsIG9wdGlvbmFsLgorICoKKyAqIFVB
WCAyMSAyLjUgQ2FzZWxlc3MgTWF0Y2hpbmcgc3BlY2lmaWVzIHRoYXQgZm9yIGEgY2Fub25pY2Fs
IGNhc2VsZXNzIG1hdGNoCisgKiB0aGUgY2FzZSBmb2xkaW5nIG11c3QgYmUgcGVyZm9ybWVkIGZp
cnN0LCB0aGVuIHRoZSBub3JtYWxpemF0aW9uLgorICoKKyAqIEBwYXJhbSBzMSBGaXJzdCBzb3Vy
Y2Ugc3RyaW5nLgorICogQHBhcmFtIGxlbmd0aDEgTGVuZ3RoIG9mIGZpcnN0IHNvdXJjZSBzdHJp
bmcsIG9yIC0xIGlmIE5VTC10ZXJtaW5hdGVkLgorICoKKyAqIEBwYXJhbSBzMiBTZWNvbmQgc291
cmNlIHN0cmluZy4KKyAqIEBwYXJhbSBsZW5ndGgyIExlbmd0aCBvZiBzZWNvbmQgc291cmNlIHN0
cmluZywgb3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQuCisgKgorICogQHBhcmFtIG9wdGlvbnMgQSBi
aXQgc2V0IG9mIG9wdGlvbnM6CisgKiAgIC0gVV9GT0xEX0NBU0VfREVGQVVMVCBvciAwIGlzIHVz
ZWQgZm9yIGRlZmF1bHQgb3B0aW9uczoKKyAqICAgICBDYXNlLXNlbnNpdGl2ZSBjb21wYXJpc29u
IGluIGNvZGUgdW5pdCBvcmRlciwgYW5kIHRoZSBpbnB1dCBzdHJpbmdzCisgKiAgICAgYXJlIHF1
aWNrLWNoZWNrZWQgZm9yIEZDRC4KKyAqCisgKiAgIC0gVU5PUk1fSU5QVVRfSVNfRkNECisgKiAg
ICAgU2V0IGlmIHRoZSBjYWxsZXIga25vd3MgdGhhdCBib3RoIHMxIGFuZCBzMiBmdWxmaWxsIHRo
ZSBGQ0QgY29uZGl0aW9ucy4KKyAqICAgICBJZiBub3Qgc2V0LCB0aGUgZnVuY3Rpb24gd2lsbCBx
dWlja0NoZWNrIGZvciBGQ0QKKyAqICAgICBhbmQgbm9ybWFsaXplIGlmIG5lY2Vzc2FyeS4KKyAq
CisgKiAgIC0gVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIKKyAqICAgICBTZXQgdG8gY2hvb3Nl
IGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBjb2RlIHVuaXQgb3JkZXIKKyAqICAgICAoc2Vl
IHVfc3RyQ29tcGFyZSBmb3IgZGV0YWlscykuCisgKgorICogICAtIFVfQ09NUEFSRV9JR05PUkVf
Q0FTRQorICogICAgIFNldCB0byBjb21wYXJlIHN0cmluZ3MgY2FzZS1pbnNlbnNpdGl2ZWx5IHVz
aW5nIGNhc2UgZm9sZGluZywKKyAqICAgICBpbnN0ZWFkIG9mIGNhc2Utc2Vuc2l0aXZlbHkuCisg
KiAgICAgSWYgc2V0LCB0aGVuIHRoZSBmb2xsb3dpbmcgY2FzZSBmb2xkaW5nIG9wdGlvbnMgYXJl
IHVzZWQuCisgKgorICogICAtIE9wdGlvbnMgYXMgdXNlZCB3aXRoIGNhc2UtaW5zZW5zaXRpdmUg
Y29tcGFyaXNvbnMsIGN1cnJlbnRseToKKyAqCisgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9T
UEVDSUFMX0kKKyAqICAgIChzZWUgdV9zdHJDYXNlQ29tcGFyZSBmb3IgZGV0YWlscykKKyAqCisg
KiAgIC0gcmVndWxhciBub3JtYWxpemF0aW9uIG9wdGlvbnMgc2hpZnRlZCBsZWZ0IGJ5IFVOT1JN
X0NPTVBBUkVfTk9STV9PUFRJT05TX1NISUZUCisgKgorICogQHBhcmFtIHBFcnJvckNvZGUgSUNV
IGVycm9yIGNvZGUgaW4vb3V0IHBhcmFtZXRlci4KKyAqICAgICAgICAgICAgICAgICAgIE11c3Qg
ZnVsZmlsbCBVX1NVQ0NFU1MgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgorICogQHJldHVybiA8
MCBvciAwIG9yID4wIGFzIHVzdWFsIGZvciBzdHJpbmcgY29tcGFyaXNvbnMKKyAqCisgKiBAc2Vl
IHVub3JtX25vcm1hbGl6ZQorICogQHNlZSBVTk9STV9GQ0QKKyAqIEBzZWUgdV9zdHJDb21wYXJl
CisgKiBAc2VlIHVfc3RyQ2FzZUNvbXBhcmUKKyAqCisgKiBAc3RhYmxlIElDVSAyLjIKKyAqLwor
VV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vub3JtX2NvbXBhcmUoY29uc3QgVUNoYXIgKnMx
LCBpbnQzMl90IGxlbmd0aDEsCisgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzMiwgaW50MzJf
dCBsZW5ndGgyLAorICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zLAorICAgICAgICAgICAg
ICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKwogI2VuZGlmICAvKiAhVUNPTkZJR19OT19OT1JN
QUxJWkFUSU9OICovCiAjZW5kaWYgIC8qIF9fVU5PUk0yX0hfXyAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9pY3UvdW5pY29kZS91bnVtLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VudW0u
aAppbmRleCA0NzgwODlmZjEwNDY4YTBjY2QwNTQ1YmIxM2Q2NmI2OTQ3NWQ2MDcyLi4yYWIwOWI1
ZDBkNDE3YWVlMDY2ZDJmYTZhOWY1ZGNkOTgzN2U4YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3VudW0uaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VudW0uaApA
QCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBv
dGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQg
KEMpIDE5OTctMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlv
biBhbmQgb3RoZXJzLgpAQCAtMjMsNiArMjUsNyBAQAogI2luY2x1ZGUgInVuaWNvZGUvcGFyc2Vl
cnIuaCIKICNpbmNsdWRlICJ1bmljb2RlL3Vmb3JtYXR0YWJsZS5oIgogI2luY2x1ZGUgInVuaWNv
ZGUvdWRpc3BsYXljb250ZXh0LmgiCisjaW5jbHVkZSAidW5pY29kZS91ZmllbGRwb3NpdGVyLmgi
CiAKIC8qKgogICogXGZpbGUKQEAgLTExMiw3ICsxMTUsNyBAQAogICogPFA+CiAgKiBZb3UgY2Fu
IGFsc28gY29udHJvbCB0aGUgZGlzcGxheSBvZiBudW1iZXJzIHdpdGggc3VjaCBmdW5jdGlvbiBh
cwogICogdW51bV9nZXRBdHRyaWJ1dGVzKCkgYW5kIHVudW1fc2V0QXR0cmlidXRlcygpLCB3aGlj
aCBsZXQgeW91IHNldCB0aGUKLSAqIG1pbWludW0gZnJhY3Rpb24gZGlnaXRzLCBncm91cGluZywg
ZXRjLgorICogbWluaW11bSBmcmFjdGlvbiBkaWdpdHMsIGdyb3VwaW5nLCBldGMuCiAgKiBAc2Vl
IFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGVzIGZvciBtb3JlIGRldGFpbHMKICAqIDxQPgogICogWW91
IGNhbiBhbHNvIHVzZSBmb3JtcyBvZiB0aGUgcGFyc2UgYW5kIGZvcm1hdCBtZXRob2RzIHdpdGgK
QEAgLTEyMyw3ICsxMjYsNyBAQAogICogPC91bD4KICAqIDxwPgogICogSXQgaXMgYWxzbyBwb3Nz
aWJsZSB0byBjaGFuZ2Ugb3Igc2V0IHRoZSBzeW1ib2xzIHVzZWQgZm9yIGEgcGFydGljdWxhcgot
ICogbG9jYWxlIGxpa2UgdGhlIGN1cnJlbmN5IHN5bWJvbCwgdGhlIGdyb3VwaW5nIHNlcGVyYXRv
ciAsIG1vbmV0YXJ5IHNlcGVyYXRvcgorICogbG9jYWxlIGxpa2UgdGhlIGN1cnJlbmN5IHN5bWJv
bCwgdGhlIGdyb3VwaW5nIHNlcGFyYXRvciAsIG1vbmV0YXJ5IHNlcGFyYXRvcgogICogZXRjIGJ5
IG1ha2luZyB1c2Ugb2YgZnVuY3Rpb25zIHVudW1fc2V0U3ltYm9scygpIGFuZCB1bnVtX2dldFN5
bWJvbHMoKS4KICAqLwogCkBAIC0xNDgsNyArMTUxLDExIEBAIHR5cGVkZWYgZW51bSBVTnVtYmVy
Rm9ybWF0U3R5bGUgewogICAgICAqLwogICAgIFVOVU1fREVDSU1BTD0xLAogICAgIC8qKgotICAg
ICAqIEN1cnJlbmN5IGZvcm1hdCB3aXRoIGEgY3VycmVuY3kgc3ltYm9sLCBlLmcuLCAiJDEuMDAi
LgorICAgICAqIEN1cnJlbmN5IGZvcm1hdCAoZ2VuZXJpYykuCisgICAgICogRGVmYXVsdHMgdG8g
VU5VTV9DVVJSRU5DWV9TVEFOREFSRCBzdHlsZQorICAgICAqICh1c2luZyBjdXJyZW5jeSBzeW1i
b2wsIGUuZy4sICIkMS4wMCIsIHdpdGggbm9uLWFjY291bnRpbmcKKyAgICAgKiBzdHlsZSBmb3Ig
bmVnYXRpdmUgdmFsdWVzIGUuZy4gdXNpbmcgbWludXMgc2lnbikuCisgICAgICogVGhlIHNwZWNp
ZmljIHN0eWxlIG1heSBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlIC1jZi0gbG9jYWxlIGtleS4KICAg
ICAgKiBAc3RhYmxlIElDVSAyLjAKICAgICAgKi8KICAgICBVTlVNX0NVUlJFTkNZPTIsCkBAIC0y
MDUsMjMgKzIxMiw0NSBAQCB0eXBlZGVmIGVudW0gVU51bWJlckZvcm1hdFN0eWxlIHsKICAgICAv
KioKICAgICAgKiBDdXJyZW5jeSBmb3JtYXQgZm9yIGFjY291bnRpbmcsIGUuZy4sICIoJDMuMDAp
IiBmb3IKICAgICAgKiBuZWdhdGl2ZSBjdXJyZW5jeSBhbW91bnQgaW5zdGVhZCBvZiAiLSQzLjAw
IiAoe0BsaW5rICNVTlVNX0NVUlJFTkNZfSkuCisgICAgICogT3ZlcnJpZGVzIGFueSBzdHlsZSBz
cGVjaWZpZWQgdXNpbmcgLWNmLSBrZXkgaW4gbG9jYWxlLgogICAgICAqIEBzdGFibGUgSUNVIDUz
CiAgICAgICovCiAgICAgVU5VTV9DVVJSRU5DWV9BQ0NPVU5USU5HPTEyLAotI2lmbmRlZiBVX0hJ
REVfRFJBRlRfQVBJCiAgICAgLyoqCiAgICAgICogQ3VycmVuY3kgZm9ybWF0IHdpdGggYSBjdXJy
ZW5jeSBzeW1ib2wgZ2l2ZW4gQ0FTSCB1c2FnZSwgZS5nLiwgCiAgICAgICogIk5UJDMiIGluc3Rl
YWQgb2YgIk5UJDMuMjMiLgotICAgICAqIEBkcmFmdCBJQ1UgNTQKKyAgICAgKiBAc3RhYmxlIElD
VSA1NAogICAgICAqLwogICAgIFVOVU1fQ0FTSF9DVVJSRU5DWT0xMywKLSNlbmRpZiAvKiBVX0hJ
REVfRFJBRlRfQVBJICovCisgICAgLyoqCisgICAgICogRGVjaW1hbCBmb3JtYXQgZXhwcmVzc2Vk
IHVzaW5nIGNvbXBhY3Qgbm90YXRpb24KKyAgICAgKiAoc2hvcnQgZm9ybSwgY29ycmVzcG9uZHMg
dG8gVU51bWJlckNvbXBhY3RTdHlsZT1VTlVNX1NIT1JUKQorICAgICAqIGUuZy4gIjIzSyIsICI0
NUIiCisgICAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8KKyAgICBVTlVNX0RFQ0lNQUxfQ09N
UEFDVF9TSE9SVD0xNCwKKyAgICAvKioKKyAgICAgKiBEZWNpbWFsIGZvcm1hdCBleHByZXNzZWQg
dXNpbmcgY29tcGFjdCBub3RhdGlvbgorICAgICAqIChsb25nIGZvcm0sIGNvcnJlc3BvbmRzIHRv
IFVOdW1iZXJDb21wYWN0U3R5bGU9VU5VTV9MT05HKQorICAgICAqIGUuZy4gIjIzIHRob3VzYW5k
IiwgIjQ1IGJpbGxpb24iCisgICAgICogQHN0YWJsZSBJQ1UgNTYKKyAgICAgKi8KKyAgICBVTlVN
X0RFQ0lNQUxfQ09NUEFDVF9MT05HPTE1LAorICAgIC8qKgorICAgICAqIEN1cnJlbmN5IGZvcm1h
dCB3aXRoIGEgY3VycmVuY3kgc3ltYm9sLCBlLmcuLCAiJDEuMDAiLAorICAgICAqIHVzaW5nIG5v
bi1hY2NvdW50aW5nIHN0eWxlIGZvciBuZWdhdGl2ZSB2YWx1ZXMgKGUuZy4gbWludXMgc2lnbiku
CisgICAgICogT3ZlcnJpZGVzIGFueSBzdHlsZSBzcGVjaWZpZWQgdXNpbmcgLWNmLSBrZXkgaW4g
bG9jYWxlLgorICAgICAqIEBzdGFibGUgSUNVIDU2CisgICAgICovCisgICAgVU5VTV9DVVJSRU5D
WV9TVEFOREFSRD0xNiwKIAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgICAvKioK
LSAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG51bWJlciBmb3JtYXQgc3R5bGUgY29u
c3RhbnQuCi0gICAgICogQHN0YWJsZSBJQ1UgNC44CisgICAgICogT25lIG1vcmUgdGhhbiB0aGUg
aGlnaGVzdCBub3JtYWwgVU51bWJlckZvcm1hdFN0eWxlIHZhbHVlLgorICAgICAqIEBkZXByZWNh
dGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElD
VSB0aWNrZXQgIzEyNDIwLgogICAgICAqLwotICAgIFVOVU1fRk9STUFUX1NUWUxFX0NPVU5UPTE0
LAorICAgIFVOVU1fRk9STUFUX1NUWUxFX0NPVU5UPTE3LAorI2VuZGlmICAvKiBVX0hJREVfREVQ
UkVDQVRFRF9BUEkgKi8KIAogICAgIC8qKgogICAgICAqIERlZmF1bHQgZm9ybWF0CkBAIC0yMzUs
OCArMjY0LDEzIEBAIHR5cGVkZWYgZW51bSBVTnVtYmVyRm9ybWF0U3R5bGUgewogICAgIFVOVU1f
SUdOT1JFID0gVU5VTV9QQVRURVJOX0RFQ0lNQUwKIH0gVU51bWJlckZvcm1hdFN0eWxlOwogCi0v
KiogVGhlIHBvc3NpYmxlIG51bWJlciBmb3JtYXQgcm91bmRpbmcgbW9kZXMuIAotICogIEBzdGFi
bGUgSUNVIDIuMAorLyoqIFRoZSBwb3NzaWJsZSBudW1iZXIgZm9ybWF0IHJvdW5kaW5nIG1vZGVz
LgorICoKKyAqIDxwPgorICogRm9yIG1vcmUgZGV0YWlsIG9uIHJvdW5kaW5nIG1vZGVzLCBzZWU6
CisgKiBodHRwOi8vdXNlcmd1aWRlLmljdS1wcm9qZWN0Lm9yZy9mb3JtYXRwYXJzZS9udW1iZXJz
L3JvdW5kaW5nLW1vZGVzCisgKgorICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KIHR5cGVkZWYgZW51
bSBVTnVtYmVyRm9ybWF0Um91bmRpbmdNb2RlIHsKICAgICBVTlVNX1JPVU5EX0NFSUxJTkcsCkBA
IC0yOTcsNyArMzMxLDEzIEBAIGVudW0gVUN1cnJlbmN5U3BhY2luZyB7CiAgICAgVU5VTV9DVVJS
RU5DWV9TVVJST1VORElOR19NQVRDSCwKICAgICAvKiogQHN0YWJsZSBJQ1UgNC44ICovCiAgICAg
VU5VTV9DVVJSRU5DWV9JTlNFUlQsCi0gICAgLyoqIEBzdGFibGUgSUNVIDQuOCAqLworCisgICAg
LyogRG8gbm90IGNvbmRpdGlvbmFsaXplIHRoZSBmb2xsb3dpbmcgd2l0aCAjaWZuZGVmIFVfSElE
RV9ERVBSRUNBVEVEX0FQSSwKKyAgICAgKiBpdCBpcyBuZWVkZWQgZm9yIGxheW91dCBvZiBEZWNp
bWFsRm9ybWF0U3ltYm9scyBvYmplY3QuICovCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhh
biB0aGUgaGlnaGVzdCBub3JtYWwgVUN1cnJlbmN5U3BhY2luZyB2YWx1ZS4KKyAgICAgKiBAZGVw
cmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNl
ZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVTlVNX0NVUlJFTkNZX1NQQUNJTkdf
Q09VTlQKIH07CiB0eXBlZGVmIGVudW0gVUN1cnJlbmN5U3BhY2luZyBVQ3VycmVuY3lTcGFjaW5n
OyAvKio8IEBzdGFibGUgSUNVIDQuOCAqLwpAQCAtMzMxLDggKzM3MSwxMyBAQCB0eXBlZGVmIGVu
dW0gVU51bWJlckZvcm1hdEZpZWxkcyB7CiAgICAgVU5VTV9QRVJNSUxMX0ZJRUxELAogICAgIC8q
KiBAc3RhYmxlIElDVSA0OSAqLwogICAgIFVOVU1fU0lHTl9GSUVMRCwKLSAgICAvKiogQHN0YWJs
ZSBJQ1UgNDkgKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAg
ICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVU51bWJlckZvcm1hdEZpZWxkcyB2
YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNo
YW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVTlVN
X0ZJRUxEX0NPVU5UCisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwogfSBVTnVt
YmVyRm9ybWF0RmllbGRzOwogCiAKQEAgLTUxNCw2ICs1NTksNTkgQEAgdW51bV9mb3JtYXREb3Vi
bGUoICAgIGNvbnN0ICAgIFVOdW1iZXJGb3JtYXQqICBmbXQsCiAgICAgICAgICAgICBVRmllbGRQ
b3NpdGlvbiAgKnBvcywgLyogMCBpZiBpZ25vcmUgKi8KICAgICAgICAgICAgIFVFcnJvckNvZGUq
ICAgICBzdGF0dXMpOwogCisjaWZuZGVmIFVfSElERV9EUkFGVF9BUEkKKy8qKgorKiBGb3JtYXQg
YSBkb3VibGUgdXNpbmcgYSBVTnVtYmVyRm9ybWF0IGFjY29yZGluZyB0byB0aGUgVU51bWJlckZv
cm1hdCdzIGxvY2FsZSwKKyogYW5kIGluaXRpYWxpemUgYSBVRmllbGRQb3NpdGlvbkl0ZXJhdG9y
IHRoYXQgZW51bWVyYXRlcyB0aGUgc3ViY29tcG9uZW50cyBvZgorKiB0aGUgcmVzdWx0aW5nIHN0
cmluZy4KKyoKKyogQHBhcmFtIGZvcm1hdAorKiAgICAgICAgICBUaGUgZm9ybWF0dGVyIHRvIHVz
ZS4KKyogQHBhcmFtIG51bWJlcgorKiAgICAgICAgICBUaGUgbnVtYmVyIHRvIGZvcm1hdC4KKyog
QHBhcmFtIHJlc3VsdAorKiAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBidWZmZXIgdG8gcmVjZWl2
ZSB0aGUgTlVMTC10ZXJtaW5hdGVkIGZvcm1hdHRlZAorKiAgICAgICAgICBudW1iZXIuIElmIHRo
ZSBmb3JtYXR0ZWQgbnVtYmVyIGZpdHMgaW50byBkZXN0IGJ1dCBjYW5ub3QgYmUKKyogICAgICAg
ICAgTlVMTC10ZXJtaW5hdGVkIChsZW5ndGggPT0gcmVzdWx0TGVuZ3RoKSB0aGVuIHRoZSBlcnJv
ciBjb2RlIGlzIHNldAorKiAgICAgICAgICB0byBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9XQVJO
SU5HLiBJZiB0aGUgZm9ybWF0dGVkIG51bWJlciBkb2Vzbid0CisqICAgICAgICAgIGZpdCBpbnRv
IHJlc3VsdCB0aGVuIHRoZSBlcnJvciBjb2RlIGlzIHNldCB0bworKiAgICAgICAgICBVX0JVRkZF
Ul9PVkVSRkxPV19FUlJPUi4KKyogQHBhcmFtIHJlc3VsdExlbmd0aAorKiAgICAgICAgICBUaGUg
bWF4aW11bSBzaXplIG9mIHJlc3VsdC4KKyogQHBhcmFtIGZwb3NpdGVyCisqICAgICAgICAgIEEg
cG9pbnRlciB0byBhIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IgY3JlYXRlZCBieSB7QGxpbmsgI3Vm
aWVsZHBvc2l0ZXJfb3Blbn0KKyogICAgICAgICAgKG1heSBiZSBOVUxMIGlmIGZpZWxkIHBvc2l0
aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBuZWVkZWQsIGJ1dCBpbiB0aGlzCisqICAgICAgICAgIGNh
c2UgaXQncyBwcmVmZXJhYmxlIHRvIHVzZSB7QGxpbmsgI3VudW1fZm9ybWF0RG91YmxlfSkuIEl0
ZXJhdGlvbgorKiAgICAgICAgICBpbmZvcm1hdGlvbiBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIFVG
aWVsZFBvc2l0aW9uSXRlcmF0b3IgaXMgZGVsZXRlZCwKKyogICAgICAgICAgYW5kIHRoZSBpdGVy
YXRvciBpcyByZXNldCB0byBhcHBseSB0byB0aGUgZmllbGRzIGluIHRoZSBmb3JtYXR0ZWQKKyog
ICAgICAgICAgc3RyaW5nIGNyZWF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYWxsLiBUaGUgZmllbGQg
dmFsdWVzIGFuZCBpbmRleGVzCisqICAgICAgICAgIHJldHVybmVkIGJ5IHtAbGluayAjdWZpZWxk
cG9zaXRlcl9uZXh0fSByZXByZXNlbnQgZmllbGRzIGRlbm90ZWQgYnkKKyogICAgICAgICAgdGhl
IFVOdW1iZXJGb3JtYXRGaWVsZHMgZW51bS4gRmllbGRzIGFyZSBub3QgcmV0dXJuZWQgaW4gYSBn
dWFyYW50ZWVkCisqICAgICAgICAgIG9yZGVyLiBGaWVsZHMgY2Fubm90IG92ZXJsYXAsIGJ1dCB0
aGV5IG1heSBuZXN0LiBGb3IgZXhhbXBsZSwgMTIzNAorKiAgICAgICAgICBjb3VsZCBmb3JtYXQg
YXMgIjEsMjM0IiB3aGljaCBtaWdodCBjb25zaXN0IG9mIGEgZ3JvdXBpbmcgc2VwYXJhdG9yCisq
ICAgICAgICAgIGZpZWxkIGZvciAnLCcgYW5kIGFuIGludGVnZXIgZmllbGQgZW5jb21wYXNzaW5n
IHRoZSBlbnRpcmUgc3RyaW5nLgorKiBAcGFyYW0gc3RhdHVzCisqICAgICAgICAgIEEgcG9pbnRl
ciB0byBhbiBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycworKiBAcmV0dXJuCisqICAg
ICAgICAgIFRoZSB0b3RhbCBidWZmZXIgc2l6ZSBuZWVkZWQ7IGlmIGdyZWF0ZXIgdGhhbiByZXN1
bHRMZW5ndGgsIHRoZQorKiAgICAgICAgICBvdXRwdXQgd2FzIHRydW5jYXRlZC4KKyogQHNlZSB1
bnVtX2Zvcm1hdERvdWJsZQorKiBAc2VlIHVudW1fcGFyc2UKKyogQHNlZSB1bnVtX3BhcnNlRG91
YmxlCisqIEBzZWUgVUZpZWxkUG9zaXRpb25JdGVyYXRvcgorKiBAc2VlIFVOdW1iZXJGb3JtYXRG
aWVsZHMKKyogQGRyYWZ0IElDVSA1OQorKi8KK1VfRFJBRlQgaW50MzJfdCBVX0VYUE9SVDIKK3Vu
dW1fZm9ybWF0RG91YmxlRm9yRmllbGRzKGNvbnN0IFVOdW1iZXJGb3JtYXQqIGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBudW1iZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVQ2hhciogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCByZXN1bHRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVRmllbGRQb3Np
dGlvbkl0ZXJhdG9yKiBmcG9zaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUqIHN0YXR1cyk7CisKKyNlbmRpZiAgLyogVV9ISURFX0RSQUZUX0FQSSAqLworCiAvKioK
ICogRm9ybWF0IGEgZGVjaW1hbCBudW1iZXIgdXNpbmcgYSBVTnVtYmVyRm9ybWF0LgogKiBUaGUg
bnVtYmVyIHdpbGwgYmUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgVU51bWJlckZvcm1hdCdz
IGxvY2FsZS4KQEAgLTYxNSw2ICs3MTMsOCBAQCB1bnVtX2Zvcm1hdFVGb3JtYXR0YWJsZShjb25z
dCBVTnVtYmVyRm9ybWF0KiBmbXQsCiAvKioKICogUGFyc2UgYSBzdHJpbmcgaW50byBhbiBpbnRl
Z2VyIHVzaW5nIGEgVU51bWJlckZvcm1hdC4KICogVGhlIHN0cmluZyB3aWxsIGJlIHBhcnNlZCBh
Y2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUuCisqIE5vdGU6IHBhcnNpbmcg
aXMgbm90IHN1cHBvcnRlZCBmb3Igc3R5bGVzIFVOVU1fREVDSU1BTF9DT01QQUNUX1NIT1JUCisq
IGFuZCBVTlVNX0RFQ0lNQUxfQ09NUEFDVF9MT05HLgogKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0
ZXIgdG8gdXNlLgogKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBwYXJzZS4KICogQHBhcmFtIHRl
eHRMZW5ndGggVGhlIGxlbmd0aCBvZiB0ZXh0LCBvciAtMSBpZiBudWxsLXRlcm1pbmF0ZWQuCkBA
IC02MzksNiArNzM5LDggQEAgdW51bV9wYXJzZSggICAgY29uc3QgICBVTnVtYmVyRm9ybWF0KiAg
Zm10LAogLyoqCiAqIFBhcnNlIGEgc3RyaW5nIGludG8gYW4gaW50NjQgdXNpbmcgYSBVTnVtYmVy
Rm9ybWF0LgogKiBUaGUgc3RyaW5nIHdpbGwgYmUgcGFyc2VkIGFjY29yZGluZyB0byB0aGUgVU51
bWJlckZvcm1hdCdzIGxvY2FsZS4KKyogTm90ZTogcGFyc2luZyBpcyBub3Qgc3VwcG9ydGVkIGZv
ciBzdHlsZXMgVU5VTV9ERUNJTUFMX0NPTVBBQ1RfU0hPUlQKKyogYW5kIFVOVU1fREVDSU1BTF9D
T01QQUNUX0xPTkcuCiAqIEBwYXJhbSBmbXQgVGhlIGZvcm1hdHRlciB0byB1c2UuCiAqIEBwYXJh
bSB0ZXh0IFRoZSB0ZXh0IHRvIHBhcnNlLgogKiBAcGFyYW0gdGV4dExlbmd0aCBUaGUgbGVuZ3Ro
IG9mIHRleHQsIG9yIC0xIGlmIG51bGwtdGVybWluYXRlZC4KQEAgLTY2Myw2ICs3NjUsOCBAQCB1
bnVtX3BhcnNlSW50NjQoY29uc3QgVU51bWJlckZvcm1hdCogIGZtdCwKIC8qKgogKiBQYXJzZSBh
IHN0cmluZyBpbnRvIGEgZG91YmxlIHVzaW5nIGEgVU51bWJlckZvcm1hdC4KICogVGhlIHN0cmlu
ZyB3aWxsIGJlIHBhcnNlZCBhY2NvcmRpbmcgdG8gdGhlIFVOdW1iZXJGb3JtYXQncyBsb2NhbGUu
CisqIE5vdGU6IHBhcnNpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3R5bGVzIFVOVU1fREVDSU1B
TF9DT01QQUNUX1NIT1JUCisqIGFuZCBVTlVNX0RFQ0lNQUxfQ09NUEFDVF9MT05HLgogKiBAcGFy
YW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8gdXNlLgogKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBw
YXJzZS4KICogQHBhcmFtIHRleHRMZW5ndGggVGhlIGxlbmd0aCBvZiB0ZXh0LCBvciAtMSBpZiBu
dWxsLXRlcm1pbmF0ZWQuCkBAIC02OTEsNiArNzk1LDggQEAgdW51bV9wYXJzZURvdWJsZSggICAg
Y29uc3QgICBVTnVtYmVyRm9ybWF0KiAgZm10LAogKiBUaGUgc3ludGF4IG9mIHRoZSBvdXRwdXQg
aXMgYSAibnVtZXJpYyBzdHJpbmciCiAqIGFzIGRlZmluZWQgaW4gdGhlIERlY2ltYWwgQXJpdGht
ZXRpYyBTcGVjaWZpY2F0aW9uLCBhdmFpbGFibGUgYXQKICogaHR0cDovL3NwZWxlb3Ryb3ZlLmNv
bS9kZWNpbWFsCisqIE5vdGU6IHBhcnNpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3R5bGVzIFVO
VU1fREVDSU1BTF9DT01QQUNUX1NIT1JUCisqIGFuZCBVTlVNX0RFQ0lNQUxfQ09NUEFDVF9MT05H
LgogKiBAcGFyYW0gZm10IFRoZSBmb3JtYXR0ZXIgdG8gdXNlLgogKiBAcGFyYW0gdGV4dCBUaGUg
dGV4dCB0byBwYXJzZS4KICogQHBhcmFtIHRleHRMZW5ndGggVGhlIGxlbmd0aCBvZiB0ZXh0LCBv
ciAtMSBpZiBudWxsLXRlcm1pbmF0ZWQuCkBAIC03NTAsNiArODU2LDggQEAgdW51bV9wYXJzZURv
dWJsZUN1cnJlbmN5KGNvbnN0IFVOdW1iZXJGb3JtYXQqIGZtdCwKICAqIFBhcnNlIGEgVUNoYXIg
c3RyaW5nIGludG8gYSBVRm9ybWF0dGFibGUuCiAgKiBFeGFtcGxlIGNvZGU6CiAgKiBcc25pcHBl
dCB0ZXN0L2NpbnRsdHN0L2NudW10c3QuYyB1bnVtX3BhcnNlVG9VRm9ybWF0dGFibGUKKyAqIE5v
dGU6IHBhcnNpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3R5bGVzIFVOVU1fREVDSU1BTF9DT01Q
QUNUX1NIT1JUCisgKiBhbmQgVU5VTV9ERUNJTUFMX0NPTVBBQ1RfTE9ORy4KICAqIEBwYXJhbSBm
bXQgdGhlIGZvcm1hdHRlciB0byB1c2UKICAqIEBwYXJhbSByZXN1bHQgdGhlIFVGb3JtYXR0YWJs
ZSB0byBob2xkIHRoZSByZXN1bHQuIElmIE5VTEwsIGEgbmV3IFVGb3JtYXR0YWJsZSB3aWxsIGJl
IGFsbG9jYXRlZCAod2hpY2ggdGhlIGNhbGxlciBtdXN0IGNsb3NlIHdpdGggdWZtdF9jbG9zZSku
CiAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCB0byBwYXJzZQpAQCAtNzgwLDcgKzg4OCw3IEBAIHVu
dW1fcGFyc2VUb1VGb3JtYXR0YWJsZShjb25zdCBVTnVtYmVyRm9ybWF0KiBmbXQsCiAgKiBAcGFy
YW0gbG9jYWxpemVkIFRSVUUgaWYgdGhlIHBhdHRlcm4gaXMgbG9jYWxpemVkLCBGQUxTRSBvdGhl
cndpc2UuCiAgKiBAcGFyYW0gcGF0dGVybiBUaGUgbmV3IHBhdHRlcm4KICAqIEBwYXJhbSBwYXR0
ZXJuTGVuZ3RoIFRoZSBsZW5ndGggb2YgcGF0dGVybiwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVk
LgotICogQHBhcmFtIHBhcnNlRXJyb3IgQSBwb2ludGVyIHRvIFVQYXJzZUVycm9yIHRvIHJlY2ll
dmUgaW5mb3JtYXRpb24KKyAqIEBwYXJhbSBwYXJzZUVycm9yIEEgcG9pbnRlciB0byBVUGFyc2VF
cnJvciB0byByZWNlaXZlIGluZm9ybWF0aW9uCiAgKiBhYm91dCBlcnJvcnMgb2NjdXJyZWQgZHVy
aW5nIHBhcnNpbmcsIG9yIE5VTEwgaWYgbm8gcGFyc2UgZXJyb3IKICAqIGluZm9ybWF0aW9uIGlz
IGRlc2lyZWQuCiAgKiBAcGFyYW0gc3RhdHVzIEEgcG9pbnRlciB0byBhbiBpbnB1dC1vdXRwdXQg
VUVycm9yQ29kZS4KQEAgLTgzNSw2ICs5NDMsOSBAQCB0eXBlZGVmIGVudW0gVU51bWJlckZvcm1h
dEF0dHJpYnV0ZVZhbHVlIHsKICAgVU5VTV9ZRVMgPSAxLAogICAvKiogQGludGVybmFsICovCiAg
IFVOVU1fTUFZQkUgPSAyCisjZWxzZQorICAvKiogQGludGVybmFsICovCisgIFVOVU1fRk9STUFU
X0FUVFJJQlVURV9WQUxVRV9ISURERU4KICNlbmRpZiAvKiBVX0hJREVfSU5URVJOQUxfQVBJICov
CiB9IFVOdW1iZXJGb3JtYXRBdHRyaWJ1dGVWYWx1ZTsKICNlbmRpZgpAQCAtODkxLDcgKzEwMDIs
NyBAQCB0eXBlZGVmIGVudW0gVU51bWJlckZvcm1hdEF0dHJpYnV0ZSB7CiAgICAqIFRoaXMgaXMg
YW4gaW50ZXJuYWwgSUNVIEFQSS4gRG8gbm90IHVzZS4KICAgICogQGludGVybmFsCiAgICAqLwot
ICBVTlVNX1BBUlNFX0FMTF9JTlBVVCA9IFVOVU1fTEVOSUVOVF9QQVJTRSArIDEsCisgIFVOVU1f
UEFSU0VfQUxMX0lOUFVUID0gMjAsCiAjZW5kaWYKICAgLyoqIAogICAgICogU2NhbGUsIHdoaWNo
IGFkanVzdHMgdGhlIHBvc2l0aW9uIG9mIHRoZQpAQCAtOTAyLDIzICsxMDEzLDI1IEBAIHR5cGVk
ZWYgZW51bSBVTnVtYmVyRm9ybWF0QXR0cmlidXRlIHsKICAgICAqIDxwPkV4YW1wbGU6IHNldHRp
bmcgdGhlIHNjYWxlIHRvIC00LCAxMjMgZm9ybWF0cyBhcyAiMC4wMTIzIgogICAgICoKICAgICog
QHN0YWJsZSBJQ1UgNTEgKi8KLSAgVU5VTV9TQ0FMRSA9IFVOVU1fTEVOSUVOVF9QQVJTRSArIDIs
Ci0KKyAgVU5VTV9TQ0FMRSA9IDIxLAogI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCi0gIC8q
KiBDb3VudCBvZiAicmVndWxhciIgbnVtZXJpYyBhdHRyaWJ1dGVzLgotICAgKiBAaW50ZXJuYWwg
Ki8KLSAgVU5VTV9OVU1FUklDX0FUVFJJQlVURV9DT1VOVCA9IFVOVU1fTEVOSUVOVF9QQVJTRSAr
IDMsCisgIC8qKgorICAgKiBNaW5pbXVtIGdyb3VwaW5nIGRpZ2l0cywgdGVjaG5vbG9neSBwcmV2
aWV3LgorICAgKiBTZWUgRGVjaW1hbEZvcm1hdDo6Z2V0TWluaW11bUdyb3VwaW5nRGlnaXRzKCku
CisgICAqCisgICAqIEBpbnRlcm5hbCB0ZWNobm9sb2d5IHByZXZpZXcKKyAgICovCisgIFVOVU1f
TUlOSU1VTV9HUk9VUElOR19ESUdJVFMgPSAyMiwKKyAgLyogVE9ETzogdGVzdCBDIEFQSSB3aGVu
IGl0IGJlY29tZXMgQGRyYWZ0ICovCiAjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8K
IAotI2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgIC8qKiAKICAgICogaWYgdGhpcyBhdHRyaWJ1
dGUgaXMgc2V0IHRvIDAsIGl0IGlzIHNldCB0byBVTlVNX0NVUlJFTkNZX1NUQU5EQVJEIHB1cnBv
c2UsCiAgICAqIG90aGVyd2lzZSBpdCBpcyBVTlVNX0NVUlJFTkNZX0NBU0ggcHVycG9zZQogICAg
KiBEZWZhdWx0OiAwIChVTlVNX0NVUlJFTkNZX1NUQU5EQVJEIHB1cnBvc2UpCi0gICAqIEBkcmFm
dCBJQ1UgNTQKKyAgICogQHN0YWJsZSBJQ1UgNTQKICAgICovCi0gIFVOVU1fQ1VSUkVOQ1lfVVNB
R0UgPSBVTlVNX0xFTklFTlRfUEFSU0UgKyA0LAotI2VuZGlmICAvKiBVX0hJREVfRFJBRlRfQVBJ
ICovCisgIFVOVU1fQ1VSUkVOQ1lfVVNBR0UgPSAyMywKIAogICAvKiBUaGUgZm9sbG93aW5nIGNh
bm5vdCBiZSAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEksIG5lZWRlZCBpbiAuaCBmaWxlIHZh
cmlhYmxlIGRlY2xhcmFyaW9ucyAqLwogICAvKiogT25lIGJlbG93IHRoZSBmaXJzdCBiaXRmaWVs
ZC1ib29sZWFuIGl0ZW0uCkBAIC05NDAsMjIgKzEwNTMsMjAgQEAgdHlwZWRlZiBlbnVtIFVOdW1i
ZXJGb3JtYXRBdHRyaWJ1dGUgewogICAgKi8KICAgVU5VTV9QQVJTRV9OT19FWFBPTkVOVCwKIAot
I2lmbmRlZiBVX0hJREVfRFJBRlRfQVBJCiAgIC8qKiAKICAgICogaWYgdGhpcyBhdHRyaWJ1dGUg
aXMgc2V0IHRvIDEsIHNwZWNpZmllcyB0aGF0LCBpZiB0aGUgcGF0dGVybiBjb250YWlucyBhIAog
ICAgKiBkZWNpbWFsIG1hcmsgdGhlIGlucHV0IGlzIHJlcXVpcmVkIHRvIGhhdmUgb25lLiBJZiB0
aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gMCwKICAgICogc3BlY2lmaWVzIHRoYXQgaW5wdXQgZG9l
cyBub3QgaGF2ZSB0byBjb250YWluIGEgZGVjaW1hbCBtYXJrLgogICAgKiBIYXMgbm8gZWZmZWN0
IG9uIGZvcm1hdHRpbmcuCiAgICAqIERlZmF1bHQ6IDAgKHVuc2V0KQotICAgKiBAZHJhZnQgSUNV
IDU0CisgICAqIEBzdGFibGUgSUNVIDU0CiAgICAqLwotICBVTlVNX1BBUlNFX0RFQ0lNQUxfTUFS
S19SRVFVSVJFRCA9IFVOVU1fUEFSU0VfTk9fRVhQT05FTlQrMSwKLSNlbmRpZiAgLyogVV9ISURF
X0RSQUZUX0FQSSAqLworICBVTlVNX1BBUlNFX0RFQ0lNQUxfTUFSS19SRVFVSVJFRCA9IDB4MTAw
MiwKIAogICAvKiBUaGUgZm9sbG93aW5nIGNhbm5vdCBiZSAjaWZuZGVmIFVfSElERV9JTlRFUk5B
TF9BUEksIG5lZWRlZCBpbiAuaCBmaWxlIHZhcmlhYmxlIGRlY2xhcmFyaW9ucyAqLwogICAvKiog
TGltaXQgb2YgYm9vbGVhbiBhdHRyaWJ1dGVzLgogICAgKiBAaW50ZXJuYWwgKi8KLSAgVU5VTV9M
SU1JVF9CT09MRUFOX0FUVFJJQlVURSA9IFVOVU1fUEFSU0VfTk9fRVhQT05FTlQrMgorICBVTlVN
X0xJTUlUX0JPT0xFQU5fQVRUUklCVVRFID0gMHgxMDAzCiB9IFVOdW1iZXJGb3JtYXRBdHRyaWJ1
dGU7CiAKIC8qKgpAQCAtOTY2LDcgKzEwNzcsNyBAQCB0eXBlZGVmIGVudW0gVU51bWJlckZvcm1h
dEF0dHJpYnV0ZSB7CiAqIFVOVU1fREVDSU1BTF9BTFdBWVNfU0hPV04sIFVOVU1fTUFYX0lOVEVH
RVJfRElHSVRTLCBVTlVNX01JTl9JTlRFR0VSX0RJR0lUUywgVU5VTV9JTlRFR0VSX0RJR0lUUywK
ICogVU5VTV9NQVhfRlJBQ1RJT05fRElHSVRTLCBVTlVNX01JTl9GUkFDVElPTl9ESUdJVFMsIFVO
VU1fRlJBQ1RJT05fRElHSVRTLCBVTlVNX01VTFRJUExJRVIsCiAqIFVOVU1fR1JPVVBJTkdfU0la
RSwgVU5VTV9ST1VORElOR19NT0RFLCBVTlVNX0ZPUk1BVF9XSURUSCwgVU5VTV9QQURESU5HX1BP
U0lUSU9OLCBVTlVNX1NFQ09OREFSWV9HUk9VUElOR19TSVpFLAotKiBVTlVNX1NDQUxFLgorKiBV
TlVNX1NDQUxFLCBVTlVNX01JTklNVU1fR1JPVVBJTkdfRElHSVRTLgogKiBAcmV0dXJuIFRoZSB2
YWx1ZSBvZiBhdHRyLgogKiBAc2VlIHVudW1fc2V0QXR0cmlidXRlCiAqIEBzZWUgdW51bV9nZXRE
b3VibGVBdHRyaWJ1dGUKQEAgLTk4OSw3ICsxMTAwLDcgQEAgdW51bV9nZXRBdHRyaWJ1dGUoY29u
c3QgVU51bWJlckZvcm1hdCogICAgICAgICAgZm10LAogKiBVTlVNX0RFQ0lNQUxfQUxXQVlTX1NI
T1dOLCBVTlVNX01BWF9JTlRFR0VSX0RJR0lUUywgVU5VTV9NSU5fSU5URUdFUl9ESUdJVFMsIFVO
VU1fSU5URUdFUl9ESUdJVFMsCiAqIFVOVU1fTUFYX0ZSQUNUSU9OX0RJR0lUUywgVU5VTV9NSU5f
RlJBQ1RJT05fRElHSVRTLCBVTlVNX0ZSQUNUSU9OX0RJR0lUUywgVU5VTV9NVUxUSVBMSUVSLAog
KiBVTlVNX0dST1VQSU5HX1NJWkUsIFVOVU1fUk9VTkRJTkdfTU9ERSwgVU5VTV9GT1JNQVRfV0lE
VEgsIFVOVU1fUEFERElOR19QT1NJVElPTiwgVU5VTV9TRUNPTkRBUllfR1JPVVBJTkdfU0laRSwK
LSogVU5VTV9MRU5JRU5UX1BBUlNFLCBvciBVTlVNX1NDQUxFLgorKiBVTlVNX0xFTklFTlRfUEFS
U0UsIFVOVU1fU0NBTEUsIFVOVU1fTUlOSU1VTV9HUk9VUElOR19ESUdJVFMuCiAqIEBwYXJhbSBu
ZXdWYWx1ZSBUaGUgbmV3IHZhbHVlIG9mIGF0dHIuCiAqIEBzZWUgdW51bV9nZXRBdHRyaWJ1dGUK
ICogQHNlZSB1bnVtX2dldERvdWJsZUF0dHJpYnV0ZQpAQCAtMTIyOCwxNSArMTMzOSwxOCBAQCB0
eXBlZGVmIGVudW0gVU51bWJlckZvcm1hdFN5bWJvbCB7CiAgICAqLwogICBVTlVNX05JTkVfRElH
SVRfU1lNQk9MID0gMjYsCiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogICAvKiogTXVsdGlw
bGljYXRpb24gc2lnbgotICAgKiBAZHJhZnQgSUNVIDU0CisgICAqIEBzdGFibGUgSUNVIDU0CiAg
ICAqLwogICBVTlVNX0VYUE9ORU5UX01VTFRJUExJQ0FUSU9OX1NZTUJPTCA9IDI3LAotI2VuZGlm
ICAvKiBVX0hJREVfRFJBRlRfQVBJICovCiAKLSAgLyoqIGNvdW50IHN5bWJvbCBjb25zdGFudHMg
Ki8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1v
cmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgVU51bWJlckZvcm1hdFN5bWJvbCB2YWx1ZS4KKyAg
ICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVy
IHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgVU5VTV9GT1JNQVRfU1lN
Qk9MX0NPVU5UID0gMjgKKyNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCiB9IFVO
dW1iZXJGb3JtYXRTeW1ib2w7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS91bnVtc3lzLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VudW1zeXMuaAppbmRleCBm
NWEyYzQzZTkyOGVlODZmM2RlZTI4ZDk3ZTMzNTVhMWQxNjdkYTY1Li43OTVlYzYwMjU1ZjIzZWZk
YjY3NmEyMGQ3MzNjMTNjZDdhNDE1ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmlj
b2RlL3VudW1zeXMuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VudW1zeXMuaApAQCAt
MSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2Nv
cHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdW9iamVjdC5oIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91b2JqZWN0LmgKaW5kZXggNTRjZWFjZTYyNmQ3MzVjYmFjNmQ4MzViZjZhYmEz
NDgzM2E5ZjQzYS4uOTc4MmYyNzJmNmQ3MDQ1YTVjMWM2Njg0NjhjNzNhNjJkMzE2MDE2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91b2JqZWN0LmgKKysrIGIvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91b2JqZWN0LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBs
YXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVz
ZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgogKgpAQCAtNiw3ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog
KiAgIGZpbGUgbmFtZTogIHVvYmplY3QuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAg
ZW5jb2Rpbmc6ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRl
bnRhdGlvbjo0CiAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VwbHVyYWxy
dWxlcy5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91cGx1cmFscnVsZXMuaAppbmRleCA1YmNh
ZGQ0YmRhNjBmNDFjNzRhMGY0NWViZTExNWUwN2E0YjI0N2QzLi45OWQ5M2E0ZTA1MTdhYjhkODc3
OWJkN2IwOWFmZWZlYjlmOTQ2ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3VwbHVyYWxydWxlcy5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXBsdXJhbHJ1bGVz
LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBh
bmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2Rl
Lm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hp
bmVzCkBAIC0xMyw2ICsxNSwxMCBAQAogI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKIAogI2lu
Y2x1ZGUgInVuaWNvZGUvbG9jYWxwb2ludGVyLmgiCisjaW5jbHVkZSAidW5pY29kZS91ZW51bS5o
IgorI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCisjaW5jbHVkZSAidW5pY29kZS91bnVtLmgi
CisjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KIAogLyoqCiAgKiBcZmlsZQpAQCAt
NTIsMTEgKzU4LDEzIEBAIGVudW0gVVBsdXJhbFR5cGUgewogICAgICAqIEBzdGFibGUgSUNVIDUw
CiAgICAgICovCiAgICAgVVBMVVJBTF9UWVBFX09SRElOQUwsCisjaWZuZGVmIFVfSElERV9ERVBS
RUNBVEVEX0FQSQogICAgIC8qKgotICAgICAqIE51bWJlciBvZiBQbHVyYWwgcnVsZXMgdHlwZXMu
Ci0gICAgICogQHN0YWJsZSBJQ1UgNTAKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0
IG5vcm1hbCBVUGx1cmFsVHlwZSB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhl
IG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQy
MC4KICAgICAgKi8KICAgICBVUExVUkFMX1RZUEVfQ09VTlQKKyNlbmRpZiAgLyogVV9ISURFX0RF
UFJFQ0FURURfQVBJICovCiB9OwogLyoqCiAgKiBAc3RhYmxlIElDVSA1MApAQCAtNzksNyArODcs
NyBAQCB0eXBlZGVmIHN0cnVjdCBVUGx1cmFsUnVsZXMgVVBsdXJhbFJ1bGVzOyAgLyoqPCBDIHR5
cGVkZWYgZm9yIHN0cnVjdCBVUGx1cmFsUnVsZQogICogQHJldHVybiBBIFVQbHVyYWxSdWxlcyBm
b3IgdGhlIHNwZWNpZmllZCBsb2NhbGUsIG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAg
KiBAc3RhYmxlIElDVSA0LjgKICAqLwotVV9TVEFCTEUgVVBsdXJhbFJ1bGVzKiBVX0VYUE9SVDIK
K1VfQ0FQSSBVUGx1cmFsUnVsZXMqIFVfRVhQT1JUMgogdXBscnVsZXNfb3Blbihjb25zdCBjaGFy
ICpsb2NhbGUsIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKIC8qKgpAQCAtOTEsNyArOTksNyBAQCB1
cGxydWxlc19vcGVuKGNvbnN0IGNoYXIgKmxvY2FsZSwgVUVycm9yQ29kZSAqc3RhdHVzKTsKICAq
IEByZXR1cm4gQSBVUGx1cmFsUnVsZXMgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlLCBvciBOVUxM
IGlmIGFuIGVycm9yIG9jY3VycmVkLgogICogQHN0YWJsZSBJQ1UgNTAKICAqLwotVV9EUkFGVCBV
UGx1cmFsUnVsZXMqIFVfRVhQT1JUMgorVV9DQVBJIFVQbHVyYWxSdWxlcyogVV9FWFBPUlQyCiB1
cGxydWxlc19vcGVuRm9yVHlwZShjb25zdCBjaGFyICpsb2NhbGUsIFVQbHVyYWxUeXBlIHR5cGUs
IFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKIC8qKgpAQCAtOTksNyArMTA3LDcgQEAgdXBscnVsZXNf
b3BlbkZvclR5cGUoY29uc3QgY2hhciAqbG9jYWxlLCBVUGx1cmFsVHlwZSB0eXBlLCBVRXJyb3JD
b2RlICpzdGF0dXMpOwogICogQHBhcmFtIHVwbHJ1bGVzIFRoZSBVUGx1cmFsUnVsZXMgb2JqZWN0
IHRvIGNsb3NlLgogICogQHN0YWJsZSBJQ1UgNC44CiAgKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBP
UlQyCitVX0NBUEkgdm9pZCBVX0VYUE9SVDIKIHVwbHJ1bGVzX2Nsb3NlKFVQbHVyYWxSdWxlcyAq
dXBscnVsZXMpOwogCiAKQEAgLTEzNCwxMiArMTQyLDU1IEBAIFVfTkFNRVNQQUNFX0VORAogICog
QHJldHVybiBUaGUgbGVuZ3RoIG9mIGtleXdvcmQuCiAgKiBAc3RhYmxlIElDVSA0LjgKICAqLwot
VV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK1VfQ0FQSSBpbnQzMl90IFVfRVhQT1JUMgogdXBs
cnVsZXNfc2VsZWN0KGNvbnN0IFVQbHVyYWxSdWxlcyAqdXBscnVsZXMsCiAgICAgICAgICAgICAg
ICBkb3VibGUgbnVtYmVyLAogICAgICAgICAgICAgICAgVUNoYXIgKmtleXdvcmQsIGludDMyX3Qg
Y2FwYWNpdHksCiAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwogCisjaWZuZGVm
IFVfSElERV9JTlRFUk5BTF9BUEkKKy8qKgorICogR2l2ZW4gYSBudW1iZXIsIHJldHVybnMgdGhl
IGtleXdvcmQgb2YgdGhlIGZpcnN0IHJ1bGUgdGhhdCBhcHBsaWVzIHRvIHRoZQorICogbnVtYmVy
LCBhY2NvcmRpbmcgdG8gdGhlIFVQbHVyYWxSdWxlcyBvYmplY3QgYW5kIGdpdmVuIHRoZSBudW1i
ZXIgZm9ybWF0CisgKiBzcGVjaWZpZWQgYnkgdGhlIFVOdW1iZXJGb3JtYXQgb2JqZWN0LgorICog
Tm90ZTogVGhpcyBpbnRlcm5hbCBwcmV2aWV3IGludGVyZmFjZSBtYXkgYmUgcmVtb3ZlZCBpbiB0
aGUgZnV0dXJlIGlmCisgKiBhbiBhcmNoaXRlY3R1cmFsbHkgY2xlYW5lciBzb2x1dGlvbiByZWFj
aGVzIHN0YWJsZSBzdGF0dXMuCisgKiBAcGFyYW0gdXBscnVsZXMgVGhlIFVQbHVyYWxSdWxlcyBv
YmplY3Qgc3BlY2lmeWluZyB0aGUgcnVsZXMuCisgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIg
Zm9yIHdoaWNoIHRoZSBydWxlIGhhcyB0byBiZSBkZXRlcm1pbmVkLgorICogQHBhcmFtIGZtdCBU
aGUgVU51bWJlckZvcm1hdCBzcGVjaWZ5aW5nIGhvdyB0aGUgbnVtYmVyIHdpbGwgYmUgZm9ybWF0
dGVkCisgKiAgICAgICAgKHRoaXMgY2FuIGFmZmVjdCB0aGUgcGx1cmFsIGZvcm0sIGUuZy4gIjEg
ZG9sbGFyIiB2cyAiMS4wIGRvbGxhcnMiKS4KKyAqICAgICAgICBJZiB0aGlzIGlzIE5VTEwsIHRo
ZSBmdW5jdGlvbiBiZWhhdmVzIGxpa2UgdXBscnVsZXNfc2VsZWN0LgorICogQHBhcmFtIGtleXdv
cmQgVGhlIGtleXdvcmQgb2YgdGhlIHJ1bGUgdGhhdCBhcHBsaWVzIHRvIG51bWJlci4KKyAqIEBw
YXJhbSBjYXBhY2l0eSBUaGUgY2FwYWNpdHkgb2YgdGhlIGtleXdvcmQgYnVmZmVyLgorICogQHBh
cmFtIHN0YXR1cyBBIHBvaW50ZXIgdG8gYSBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9y
cy4KKyAqIEByZXR1cm4gVGhlIGxlbmd0aCBvZiBrZXl3b3JkLgorICogQGludGVybmFsIElDVSA1
OSB0ZWNobm9sb2d5IHByZXZpZXcsIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUKKyAqLwor
VV9JTlRFUk5BTCBpbnQzMl90IFVfRVhQT1JUMgordXBscnVsZXNfc2VsZWN0V2l0aEZvcm1hdChj
b25zdCBVUGx1cmFsUnVsZXMgKnVwbHJ1bGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVTnVtYmVyRm9y
bWF0ICpmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyICprZXl3b3JkLCBpbnQz
Ml90IGNhcGFjaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0
dXMpOworCisjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KKworI2lmbmRlZiBVX0hJ
REVfRFJBRlRfQVBJCisvKioKKyAqIENyZWF0ZXMgYSBzdHJpbmcgZW51bWVyYXRpb24gb2YgYWxs
IHBsdXJhbCBydWxlIGtleXdvcmRzIHVzZWQgaW4gdGhpcworICogVVBsdXJhbFJ1bGVzIG9iamVj
dC4gVGhlIHJ1bGUgIm90aGVyIiBpcyBhbHdheXMgcHJlc2VudCBieSBkZWZhdWx0LgorICogQHBh
cmFtIHVwbHJ1bGVzIFRoZSBVUGx1cmFsUnVsZXMgb2JqZWN0IHNwZWNpZnlpbmcgdGhlIHJ1bGVz
IGZvcgorICogICAgICAgIGEgZ2l2ZW4gbG9jYWxlLgorICogQHBhcmFtIHN0YXR1cyBBIHBvaW50
ZXIgdG8gYSBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycy4KKyAqIEByZXR1cm4gYSBz
dHJpbmcgZW51bWVyYXRpb24gb3ZlciBwbHVyYWwgcnVsZSBrZXl3b3Jkcywgb3IgTlVMTAorICog
dXBvbiBlcnJvci4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgY2xvc2luZyB0aGUgcmVz
dWx0LgorICogQGRyYWZ0IElDVSA1OQorICovCitVX0RSQUZUIFVFbnVtZXJhdGlvbiogVV9FWFBP
UlQyCit1cGxydWxlc19nZXRLZXl3b3Jkcyhjb25zdCBVUGx1cmFsUnVsZXMgKnVwbHJ1bGVzLAor
ICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKyNlbmRpZiAgLyogVV9I
SURFX0RSQUZUX0FQSSAqLworCiAjZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcg
Ki8KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VyZWdleC5o
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91cmVnZXguaAppbmRleCBiMWI1ZDY1ZDE1MDZlY2M5
OTlhNDU4NmE1YzAyZDgxM2Q0ZWNmM2ZkLi5mM2U4MjE0OTQ0NDk5MWQyOTkyMTA5OTA2ZGM0NzVh
MDU4NDM3OWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VyZWdleC5oCisr
KyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXJlZ2V4LmgKQEAgLTEsMTAgKzEsMTIgQEAKKy8v
IMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNl
ICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAv
KgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgotKiAgIENvcHlyaWdodCAoQykgMjAwNC0yMDE1LCBJbnRlcm5hdGlv
bmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYsIEludGVy
bmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAg
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1cmVn
ZXguaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICog
ICBpbmRlbnRhdGlvbjo0CiAqCiAqICAgY3JlYXRlZCBvbjogMjAwNG1hcjA5CkBAIC00ODcsNyAr
NDg5LDcgQEAgdXJlZ2V4X21hdGNoZXM2NChVUmVndWxhckV4cHJlc3Npb24gKnJlZ2V4cCwKICAg
KgogICAqICAgPHA+SWYgdGhlIG1hdGNoIHN1Y2NlZWRzIHRoZW4gbW9yZSBpbmZvcm1hdGlvbiBj
YW4gYmUgb2J0YWluZWQgdmlhIHRoZQogICAqICAgIDxjb2RlPnVyZWdleHBfc3RhcnQoKTwvY29k
ZT4sIDxjb2RlPnVyZWdleHBfZW5kKCk8L2NvZGU+LAotICAqICAgIGFuZCA8Y29kZT51cmVnZXhw
X2dyb3VwKCk8L2NvZGU+IGZ1bmN0aW9ucy48L3A+CisgICogICAgYW5kIDxjb2RlPnVyZWdleF9n
cm91cCgpPC9jb2RlPiBmdW5jdGlvbnMuPC9wPgogICAqCiAgICogICAgQHBhcmFtICAgcmVnZXhw
ICAgICAgVGhlIGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICAgKiAgICBAcGFyYW0gICBz
dGFydEluZGV4ICBUaGUgaW5wdXQgc3RyaW5nIChuYXRpdmUpIGluZGV4IGF0IHdoaWNoIHRvIGJl
Z2luIG1hdGNoaW5nLCBvcgpAQCAtNTE2LDcgKzUxOCw3IEBAIHVyZWdleF9sb29raW5nQXQoVVJl
Z3VsYXJFeHByZXNzaW9uICpyZWdleHAsCiAgICoKICAgKiAgIDxwPklmIHRoZSBtYXRjaCBzdWNj
ZWVkcyB0aGVuIG1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIG9idGFpbmVkIHZpYSB0aGUKICAgKiAg
ICA8Y29kZT51cmVnZXhwX3N0YXJ0KCk8L2NvZGU+LCA8Y29kZT51cmVnZXhwX2VuZCgpPC9jb2Rl
PiwKLSAgKiAgICBhbmQgPGNvZGU+dXJlZ2V4cF9ncm91cCgpPC9jb2RlPiBmdW5jdGlvbnMuPC9w
PgorICAqICAgIGFuZCA8Y29kZT51cmVnZXhfZ3JvdXAoKTwvY29kZT4gZnVuY3Rpb25zLjwvcD4K
ICAgKgogICAqICAgIEBwYXJhbSAgIHJlZ2V4cCAgICAgIFRoZSBjb21waWxlZCByZWd1bGFyIGV4
cHJlc3Npb24uCiAgICogICAgQHBhcmFtICAgc3RhcnRJbmRleCAgVGhlIGlucHV0IHN0cmluZyAo
bmF0aXZlKSBpbmRleCBhdCB3aGljaCB0byBiZWdpbiBtYXRjaGluZywgb3IKQEAgLTYwNyw3ICs2
MDksNiBAQCBVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgogdXJlZ2V4X2dyb3VwQ291bnQoVVJl
Z3VsYXJFeHByZXNzaW9uICpyZWdleHAsCiAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICAg
ICAgICAgKnN0YXR1cyk7CiAKLSNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQogLyoqCiAgICogR2V0
IHRoZSBncm91cCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBhIG5hbWVkIGNhcHR1cmUgZ3JvdXAu
CiAgICogVGhlIHJldHVybmVkIG51bWJlciBjYW4gYmUgdXNlZCB3aXRoIGFueSBmdW5jdGlvbiB0
aGF0IGFjY2VzcwpAQCAtNjIyLDkgKzYyMyw5IEBAIHVyZWdleF9ncm91cENvdW50KFVSZWd1bGFy
RXhwcmVzc2lvbiAqcmVnZXhwLAogICAqICAgICAgICAgICAgICAgICAgICAgbnVsLXRlcm1pbmF0
ZWQgc3RyaW5nLgogICAqIEBwYXJhbSAgc3RhdHVzICAgICAgQSBwb2ludGVyIHRvIGEgVUVycm9y
Q29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMuCiAgICoKLSAgKiBAZHJhZnQgSUNVIDU1CisgICog
QHN0YWJsZSBJQ1UgNTUKICAgKi8KLVVfRFJBRlQgaW50MzJfdCBVX0VYUE9SVDIKK1VfU1RBQkxF
IGludDMyX3QgVV9FWFBPUlQyCiB1cmVnZXhfZ3JvdXBOdW1iZXJGcm9tTmFtZShVUmVndWxhckV4
cHJlc3Npb24gKnJlZ2V4cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFy
ICAgICAgICAqZ3JvdXBOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAg
ICAgICAgICAgICBuYW1lTGVuZ3RoLApAQCAtNjQ2LDE0ICs2NDcsMTMgQEAgdXJlZ2V4X2dyb3Vw
TnVtYmVyRnJvbU5hbWUoVVJlZ3VsYXJFeHByZXNzaW9uICpyZWdleHAsCiAgICogICAgICAgICAg
ICAgICAgICAgICBudWwtdGVybWluYXRlZC4KICAgKiBAcGFyYW0gIHN0YXR1cyAgICAgIEEgcG9p
bnRlciB0byBhIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLgogICAqCi0gICogQGRy
YWZ0IElDVSA1NQorICAqIEBzdGFibGUgSUNVIDU1CiAgICovCi1VX0RSQUZUIGludDMyX3QgVV9F
WFBPUlQyCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgogdXJlZ2V4X2dyb3VwTnVtYmVyRnJv
bUNOYW1lKFVSZWd1bGFyRXhwcmVzc2lvbiAqcmVnZXhwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgICAgICAgICAqZ3JvdXBOYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgICAgICAgICAgICAgbmFtZUxlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVRXJyb3JDb2RlICAgICAgICAgICpzdGF0dXMpOwotI2VuZGlmICAvKiBV
X0hJREVfRFJBRlRfQVBJICovCiAKIC8qKiBFeHRyYWN0IHRoZSBzdHJpbmcgZm9yIHRoZSBzcGVj
aWZpZWQgbWF0Y2hpbmcgZXhwcmVzc2lvbiBvciBzdWJleHByZXNzaW9uLgogICAqIEdyb3VwICMw
IGlzIHRoZSBjb21wbGV0ZSBzdHJpbmcgb2YgbWF0Y2hlZCB0ZXh0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9pY3UvdW5pY29kZS91cmVnaW9uLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vy
ZWdpb24uaAppbmRleCA5OWIzODFmZmQ0YTY2ZDU2ZWUzZmYzZjY1Mzk1ZDczZjJjZDFmYzE4Li5h
NWRlNDk2NzRiNTJkOGU4NjhjNTE1NjU2NDUzMWViYWVmNGQ1MWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3VyZWdpb24uaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3VyZWdpb24uaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2Rl
LCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3
LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKICogQ29weXJpZ2h0IChDKSAyMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1h
Y2hpbmVzCkBAIC0xMDUsMTEgKzEwNywxMyBAQCB0eXBlZGVmIGVudW0gVVJlZ2lvblR5cGUgewog
ICAgICAqLwogICAgIFVSR05fREVQUkVDQVRFRCwKIAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRF
RF9BUEkKICAgICAvKioKLSAgICAgKiBNYXhpbXVtIHZhbHVlIGZvciB0aGlzIHVudW1lcmF0aW9u
LgotICAgICAqIEBzdGFibGUgSUNVIDUxIAorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hl
c3Qgbm9ybWFsIFVSZWdpb25UeXBlIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBU
aGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEy
NDIwLgogICAgICAqLwogICAgIFVSR05fTElNSVQKKyNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FU
RURfQVBJICovCiB9IFVSZWdpb25UeXBlOwogCiAjaWYgIVVDT05GSUdfTk9fRk9STUFUVElORwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91cmVsZGF0ZWZtdC5oIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS91cmVsZGF0ZWZtdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZGUxODhkMGY0OTdl
NThiNzZiZGQ4NWE5NzY1ZDQwZjZhMzA0MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RG
L2ljdS91bmljb2RlL3VyZWxkYXRlZm10LmgKQEAgLTAsMCArMSwzNjUgQEAKKy8vIMKpIDIwMTYg
YW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMg
b2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCisvKgorKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAyMDE2LCBJbnRlcm5h
dGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKwor
I2lmbmRlZiBVUkVMREFURUZNVF9ICisjZGVmaW5lIFVSRUxEQVRFRk1UX0gKKworI2luY2x1ZGUg
InVuaWNvZGUvdXR5cGVzLmgiCisKKyNpZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HICYmICFVQ09O
RklHX05PX0JSRUFLX0lURVJBVElPTgorCisjaW5jbHVkZSAidW5pY29kZS91bnVtLmgiCisjaW5j
bHVkZSAidW5pY29kZS91ZGlzcGxheWNvbnRleHQuaCIKKyNpbmNsdWRlICJ1bmljb2RlL2xvY2Fs
cG9pbnRlci5oIgorCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6IFVSZWxhdGl2ZURh
dGVUaW1lRm9ybWF0dGVyLCByZWxhdGl2ZSBkYXRlIGZvcm1hdHRpbmcgb2YgdW5pdCArIG51bWVy
aWMgb2Zmc2V0LgorICoKKyAqIFByb3ZpZGVzIHNpbXBsZSBmb3JtYXR0aW5nIG9mIHJlbGF0aXZl
IGRhdGVzLCBpbiB0d28gd2F5cworICogPHVsPgorICogICA8bGk+cmVsYXRpdmUgZGF0ZXMgd2l0
aCBhIHF1YW50aXR5IGUuZyAiaW4gNSBkYXlzIjwvbGk+CisgKiAgIDxsaT5yZWxhdGl2ZSBkYXRl
cyB3aXRob3V0IGEgcXVhbnRpdHkgZS5nICJuZXh0IFR1ZXNkYXkiPC9saT4KKyAqIDwvdWw+Cisg
KiA8cD4KKyAqIFRoaXMgZG9lcyBub3QgcHJvdmlkZSBjb21wb3VuZCBmb3JtYXR0aW5nIGZvciBt
dWx0aXBsZSB1bml0cywKKyAqIG90aGVyIHRoYW4gdGhlIGFiaWxpdHkgdG8gY29tYmluZSBhIHRp
bWUgc3RyaW5nIHdpdGggYSByZWxhdGl2ZSBkYXRlLAorICogYXMgaW4gIm5leHQgVHVlc2RheSBh
dCAzOjQ1IFBNIi4gSXQgYWxzbyBkb2VzIG5vdCBwcm92aWRlIHN1cHBvcnQKKyAqIGZvciBkZXRl
cm1pbmluZyB3aGljaCB1bml0IHRvIHVzZSwgc3VjaCBhcyBkZWNpZGluZyBiZXR3ZWVuICJpbiA3
IGRheXMiCisgKiBhbmQgImluIDEgd2VlayIuCisgKgorICogQHN0YWJsZSBJQ1UgNTcKKyAqLwor
CisvKioKKyAqIFRoZSBmb3JtYXR0aW5nIHN0eWxlCisgKiBAc3RhYmxlIElDVSA1NAorICovCit0
eXBlZGVmIGVudW0gVURhdGVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyU3R5bGUgeworICAvKioK
KyAgICogRXZlcnl0aGluZyBzcGVsbGVkIG91dC4KKyAgICogQHN0YWJsZSBJQ1UgNTQKKyAgICov
CisgIFVEQVRfU1RZTEVfTE9ORywKKworICAvKioKKyAgICogQWJicmV2aWF0aW9ucyB1c2VkIHdo
ZW4gcG9zc2libGUuCisgICAqIEBzdGFibGUgSUNVIDU0CisgICAqLworICBVREFUX1NUWUxFX1NI
T1JULAorCisgIC8qKgorICAgKiBVc2UgdGhlIHNob3J0ZXN0IHBvc3NpYmxlIGZvcm0uCisgICAq
IEBzdGFibGUgSUNVIDU0CisgICAqLworICBVREFUX1NUWUxFX05BUlJPVywKKworI2lmbmRlZiBV
X0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBo
aWdoZXN0IG5vcm1hbCBVRGF0ZVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJTdHlsZSB2YWx1ZS4K
KyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBv
dmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KKyAgICBVREFUX1NUWUxF
X0NPVU5UCisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLworfSBVRGF0ZVJlbGF0
aXZlRGF0ZVRpbWVGb3JtYXR0ZXJTdHlsZTsKKworLyoqCisgKiBSZXByZXNlbnRzIHRoZSB1bml0
IGZvciBmb3JtYXR0aW5nIGEgcmVsYXRpdmUgZGF0ZS4gZS5nICJpbiA1IGRheXMiCisgKiBvciAi
bmV4dCB5ZWFyIgorICogQHN0YWJsZSBJQ1UgNTcKKyAqLwordHlwZWRlZiBlbnVtIFVSZWxhdGl2
ZURhdGVUaW1lVW5pdCB7CisgICAgLyoqCisgICAgICogU3BlY2lmaWVzIHRoYXQgcmVsYXRpdmUg
dW5pdCBpcyB5ZWFyLCBlLmcuICJsYXN0IHllYXIiLAorICAgICAqICJpbiA1IHllYXJzIi4gCisg
ICAgICogQHN0YWJsZSBJQ1UgNTcKKyAgICAgKi8KKyAgICBVREFUX1JFTF9VTklUX1lFQVIsCisg
ICAgLyoqCisgICAgICogU3BlY2lmaWVzIHRoYXQgcmVsYXRpdmUgdW5pdCBpcyBxdWFydGVyLCBl
LmcuICJsYXN0IHF1YXJ0ZXIiLAorICAgICAqICJpbiA1IHF1YXJ0ZXJzIi4KKyAgICAgKiBAc3Rh
YmxlIElDVSA1NworICAgICAqLworICAgIFVEQVRfUkVMX1VOSVRfUVVBUlRFUiwKKyAgICAvKioK
KyAgICAgKiBTcGVjaWZpZXMgdGhhdCByZWxhdGl2ZSB1bml0IGlzIG1vbnRoLCBlLmcuICJsYXN0
IG1vbnRoIiwKKyAgICAgKiAiaW4gNSBtb250aHMiLgorICAgICAqIEBzdGFibGUgSUNVIDU3Cisg
ICAgICovCisgICAgVURBVF9SRUxfVU5JVF9NT05USCwKKyAgICAvKioKKyAgICAgKiBTcGVjaWZp
ZXMgdGhhdCByZWxhdGl2ZSB1bml0IGlzIHdlZWssIGUuZy4gImxhc3Qgd2VlayIsCisgICAgICog
ImluIDUgd2Vla3MiLgorICAgICAqIEBzdGFibGUgSUNVIDU3CisgICAgICovCisgICAgVURBVF9S
RUxfVU5JVF9XRUVLLAorICAgIC8qKgorICAgICAqIFNwZWNpZmllcyB0aGF0IHJlbGF0aXZlIHVu
aXQgaXMgZGF5LCBlLmcuICJ5ZXN0ZXJkYXkiLAorICAgICAqICJpbiA1IGRheXMiLgorICAgICAq
IEBzdGFibGUgSUNVIDU3CisgICAgICovCisgICAgVURBVF9SRUxfVU5JVF9EQVksCisgICAgLyoq
CisgICAgICogU3BlY2lmaWVzIHRoYXQgcmVsYXRpdmUgdW5pdCBpcyBob3VyLCBlLmcuICIxIGhv
dXIgYWdvIiwKKyAgICAgKiAiaW4gNSBob3VycyIuCisgICAgICogQHN0YWJsZSBJQ1UgNTcKKyAg
ICAgKi8KKyAgICBVREFUX1JFTF9VTklUX0hPVVIsCisgICAgLyoqCisgICAgICogU3BlY2lmaWVz
IHRoYXQgcmVsYXRpdmUgdW5pdCBpcyBtaW51dGUsIGUuZy4gIjEgbWludXRlIGFnbyIsCisgICAg
ICogImluIDUgbWludXRlcyIuCisgICAgICogQHN0YWJsZSBJQ1UgNTcKKyAgICAgKi8KKyAgICBV
REFUX1JFTF9VTklUX01JTlVURSwKKyAgICAvKioKKyAgICAgKiBTcGVjaWZpZXMgdGhhdCByZWxh
dGl2ZSB1bml0IGlzIHNlY29uZCwgZS5nLiAiMSBzZWNvbmQgYWdvIiwKKyAgICAgKiAiaW4gNSBz
ZWNvbmRzIi4KKyAgICAgKiBAc3RhYmxlIElDVSA1NworICAgICAqLworICAgIFVEQVRfUkVMX1VO
SVRfU0VDT05ELAorICAgIC8qKgorICAgICAqIFNwZWNpZmllcyB0aGF0IHJlbGF0aXZlIHVuaXQg
aXMgU3VuZGF5LCBlLmcuICJsYXN0IFN1bmRheSIsCisgICAgICogInRoaXMgU3VuZGF5IiwgIm5l
eHQgU3VuZGF5IiwgImluIDUgU3VuZGF5cyIuCisgICAgICogQHN0YWJsZSBJQ1UgNTcKKyAgICAg
Ki8KKyAgICBVREFUX1JFTF9VTklUX1NVTkRBWSwKKyAgICAvKioKKyAgICAgKiBTcGVjaWZpZXMg
dGhhdCByZWxhdGl2ZSB1bml0IGlzIE1vbmRheSwgZS5nLiAibGFzdCBNb25kYXkiLAorICAgICAq
ICJ0aGlzIE1vbmRheSIsICJuZXh0IE1vbmRheSIsICJpbiA1IE1vbmRheXMiLgorICAgICAqIEBz
dGFibGUgSUNVIDU3CisgICAgICovCisgICAgVURBVF9SRUxfVU5JVF9NT05EQVksCisgICAgLyoq
CisgICAgICogU3BlY2lmaWVzIHRoYXQgcmVsYXRpdmUgdW5pdCBpcyBUdWVzZGF5LCBlLmcuICJs
YXN0IFR1ZXNkYXkiLAorICAgICAqICJ0aGlzIFR1ZXNkYXkiLCAibmV4dCBUdWVzZGF5IiwgImlu
IDUgVHVlc2RheXMiLgorICAgICAqIEBzdGFibGUgSUNVIDU3CisgICAgICovCisgICAgVURBVF9S
RUxfVU5JVF9UVUVTREFZLAorICAgIC8qKgorICAgICAqIFNwZWNpZmllcyB0aGF0IHJlbGF0aXZl
IHVuaXQgaXMgV2VkbmVzZGF5LCBlLmcuICJsYXN0IFdlZG5lc2RheSIsCisgICAgICogInRoaXMg
V2VkbmVzZGF5IiwgIm5leHQgV2VkbmVzZGF5IiwgImluIDUgV2VkbmVzZGF5cyIuCisgICAgICog
QHN0YWJsZSBJQ1UgNTcKKyAgICAgKi8KKyAgICBVREFUX1JFTF9VTklUX1dFRE5FU0RBWSwKKyAg
ICAvKioKKyAgICAgKiBTcGVjaWZpZXMgdGhhdCByZWxhdGl2ZSB1bml0IGlzIFRodXJzZGF5LCBl
LmcuICJsYXN0IFRodXJzZGF5IiwKKyAgICAgKiAidGhpcyBUaHVyc2RheSIsICJuZXh0IFRodXJz
ZGF5IiwgImluIDUgVGh1cnNkYXlzIi4gCisgICAgICogQHN0YWJsZSBJQ1UgNTcKKyAgICAgKi8K
KyAgICBVREFUX1JFTF9VTklUX1RIVVJTREFZLAorICAgIC8qKgorICAgICAqIFNwZWNpZmllcyB0
aGF0IHJlbGF0aXZlIHVuaXQgaXMgRnJpZGF5LCBlLmcuICJsYXN0IEZyaWRheSIsCisgICAgICog
InRoaXMgRnJpZGF5IiwgIm5leHQgRnJpZGF5IiwgImluIDUgRnJpZGF5cyIuCisgICAgICogQHN0
YWJsZSBJQ1UgNTcKKyAgICAgKi8KKyAgICBVREFUX1JFTF9VTklUX0ZSSURBWSwKKyAgICAvKioK
KyAgICAgKiBTcGVjaWZpZXMgdGhhdCByZWxhdGl2ZSB1bml0IGlzIFNhdHVyZGF5LCBlLmcuICJs
YXN0IFNhdHVyZGF5IiwKKyAgICAgKiAidGhpcyBTYXR1cmRheSIsICJuZXh0IFNhdHVyZGF5Iiwg
ImluIDUgU2F0dXJkYXlzIi4KKyAgICAgKiBAc3RhYmxlIElDVSA1NworICAgICAqLworICAgIFVE
QVRfUkVMX1VOSVRfU0FUVVJEQVksCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAg
IC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVSZWxhdGl2ZURh
dGVUaW1lVW5pdCB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMg
dmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAg
Ki8KKyAgICBVREFUX1JFTF9VTklUX0NPVU5UCisjZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVE
X0FQSSAqLworfSBVUmVsYXRpdmVEYXRlVGltZVVuaXQ7CisKKy8qKgorICogT3BhcXVlIFVSZWxh
dGl2ZURhdGVUaW1lRm9ybWF0dGVyIG9iamVjdCBmb3IgdXNlIGluIEMgcHJvZ3JhbXMuCisgKiBA
c3RhYmxlIElDVSA1NworICovCitzdHJ1Y3QgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXI7Cit0
eXBlZGVmIHN0cnVjdCBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciBVUmVsYXRpdmVEYXRlVGlt
ZUZvcm1hdHRlcjsgIC8qKjwgQyB0eXBlZGVmIGZvciBzdHJ1Y3QgVVJlbGF0aXZlRGF0ZVRpbWVG
b3JtYXR0ZXIuIEBzdGFibGUgSUNVIDU3ICovCisKKworLyoqCisgKiBPcGVuIGEgbmV3IFVSZWxh
dGl2ZURhdGVUaW1lRm9ybWF0dGVyIG9iamVjdCBmb3IgYSBnaXZlbiBsb2NhbGUgdXNpbmcgdGhl
CisgKiBzcGVjaWZpZWQgd2lkdGggYW5kIGNhcGl0YWxpemF0aW9uQ29udGV4dCwgYWxvbmcgd2l0
aCBhIG51bWJlciBmb3JtYXR0ZXIKKyAqIChpZiBkZXNpcmVkKSB0byBvdmVycmlkZSB0aGUgZGVm
YXVsdCBmb3JtYXR0ZXIgdGhhdCB3b3VsZCBiZSB1c2VkIGZvcgorICogZGlzcGxheSBvZiBudW1l
cmljIGZpZWxkIG9mZnNldHMuIFRoZSBkZWZhdWx0IGZvcm1hdHRlciB0eXBpY2FsbHkgcm91bmRz
CisgKiB0b3dhcmQgMCBhbmQgaGFzIGEgbWluaW11bSBvZiAwIGZyYWN0aW9uIGRpZ2l0cyBhbmQg
YSBtYXhpbXVtIG9mIDMKKyAqIGZyYWN0aW9uIGRpZ2l0cyAoaS5lLiBpdCB3aWxsIHNob3cgYXMg
bWFueSBkZWNpbWFsIHBsYWNlcyBhcyBuZWNlc3NhcnkKKyAqIHVwIHRvIDMsIHdpdGhvdXQgc2hv
d2luZyB0cmFpbGluZyAwcykuCisgKgorICogQHBhcmFtIGxvY2FsZQorICogICAgICAgICAgVGhl
IGxvY2FsZQorICogQHBhcmFtIG5mVG9BZG9wdAorICogICAgICAgICAgQSBudW1iZXIgZm9ybWF0
dGVyIHRvIHNldCBmb3IgdGhpcyBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcgorICogICAgICAg
ICAgb2JqZWN0IChpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGRlY2ltYWwgZm9ybWF0dGVyKS4gT3du
ZXJzaGlwIG9mCisgKiAgICAgICAgICB0aGlzIFVOdW1iZXJGb3JtYXQgb2JqZWN0IHdpbGwgcGFz
cyB0byB0aGUgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIKKyAqICAgICAgICAgIG9iamVjdCAo
dGhlIFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyIGFkb3B0cyB0aGUgVU51bWJlckZvcm1hdCks
CisgKiAgICAgICAgICB3aGljaCBiZWNvbWVzIHJlc3BvbnNpYmxlIGZvciBjbG9zaW5nIGl0LiBJ
ZiB0aGUgY2FsbGVyIHdpc2hlcyB0bworICogICAgICAgICAgcmV0YWluIG93bmVyc2hpcCBvZiB0
aGUgVU51bWJlckZvcm1hdCBvYmplY3QsIHRoZSBjYWxsZXIgbXVzdCBjbG9uZQorICogICAgICAg
ICAgaXQgKHdpdGggdW51bV9jbG9uZSkgYW5kIHBhc3MgdGhlIGNsb25lIHRvIHVyZWxkYXRlZm10
X29wZW4uIE1heSBiZQorICogICAgICAgICAgTlVMTCB0byB1c2UgdGhlIGRlZmF1bHQgZGVjaW1h
bCBmb3JtYXR0ZXIuCisgKiBAcGFyYW0gd2lkdGgKKyAqICAgICAgICAgIFRoZSB3aWR0aCAtIHdp
ZGUsIHNob3J0LCBuYXJyb3csIGV0Yy4KKyAqIEBwYXJhbSBjYXBpdGFsaXphdGlvbkNvbnRleHQK
KyAqICAgICAgICAgIEEgdmFsdWUgZnJvbSBVRGlzcGxheUNvbnRleHQgdGhhdCBwZXJ0YWlucyB0
byBjYXBpdGFsaXphdGlvbiwgZS5nLgorICogICAgICAgICAgVURJU1BDVFhfQ0FQSVRBTElaQVRJ
T05fRk9SX0JFR0lOTklOR19PRl9TRU5URU5DRS4KKyAqIEBwYXJhbSBzdGF0dXMKKyAqICAgICAg
ICAgIEEgcG9pbnRlciB0byBhIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLgorICog
QHJldHVybgorICogICAgICAgICAgQSBwb2ludGVyIHRvIGEgVVJlbGF0aXZlRGF0ZVRpbWVGb3Jt
YXR0ZXIgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZSwKKyAqICAgICAgICAgIG9yIE5V
TEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisgKiBAc3RhYmxlIElDVSA1NworICovCitVX1NUQUJM
RSBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciogVV9FWFBPUlQyCit1cmVsZGF0ZWZtdF9vcGVu
KCBjb25zdCBjaGFyKiAgICAgICAgICBsb2NhbGUsCisgICAgICAgICAgICAgICAgICBVTnVtYmVy
Rm9ybWF0KiAgICAgICBuZlRvQWRvcHQsCisgICAgICAgICAgICAgICAgICBVRGF0ZVJlbGF0aXZl
RGF0ZVRpbWVGb3JtYXR0ZXJTdHlsZSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgIFVEaXNwbGF5
Q29udGV4dCAgICAgIGNhcGl0YWxpemF0aW9uQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgIFVF
cnJvckNvZGUqICAgICAgICAgIHN0YXR1cyApOworCisvKioKKyAqIENsb3NlIGEgVVJlbGF0aXZl
RGF0ZVRpbWVGb3JtYXR0ZXIgb2JqZWN0LiBPbmNlIGNsb3NlZCBpdCBtYXkgbm8gbG9uZ2VyIGJl
IHVzZWQuCisgKiBAcGFyYW0gcmVsZGF0ZWZtdAorICogICAgICAgICAgICBUaGUgVVJlbGF0aXZl
RGF0ZVRpbWVGb3JtYXR0ZXIgb2JqZWN0IHRvIGNsb3NlLgorICogQHN0YWJsZSBJQ1UgNTcKKyAq
LworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VyZWxkYXRlZm10X2Nsb3NlKFVSZWxhdGl2ZURh
dGVUaW1lRm9ybWF0dGVyICpyZWxkYXRlZm10KTsKKworI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJ
CisKK1VfTkFNRVNQQUNFX0JFR0lOCisKKy8qKgorICogXGNsYXNzIExvY2FsVVJlbGF0aXZlRGF0
ZVRpbWVGb3JtYXR0ZXJQb2ludGVyCisgKiAiU21hcnQgcG9pbnRlciIgY2xhc3MsIGNsb3NlcyBh
IFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyIHZpYSB1cmVsZGF0ZWZtdF9jbG9zZSgpLgorICog
Rm9yIG1vc3QgbWV0aG9kcyBzZWUgdGhlIExvY2FsUG9pbnRlckJhc2UgYmFzZSBjbGFzcy4KKyAq
CisgKiBAc2VlIExvY2FsUG9pbnRlckJhc2UKKyAqIEBzZWUgTG9jYWxQb2ludGVyCisgKiBAc3Rh
YmxlIElDVSA1NworICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVUmVsYXRp
dmVEYXRlVGltZUZvcm1hdHRlclBvaW50ZXIsIFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLCB1
cmVsZGF0ZWZtdF9jbG9zZSk7CisKK1VfTkFNRVNQQUNFX0VORAorCisjZW5kaWYKKworLyoqCisg
KiBGb3JtYXQgYSBjb21iaW5hdGlvbiBvZiBVUmVsYXRpdmVEYXRlVGltZVVuaXQgYW5kIG51bWVy
aWMKKyAqIG9mZnNldCB1c2luZyBhIG51bWVyaWMgc3R5bGUsIGUuZy4gIjEgd2VlayBhZ28iLCAi
aW4gMSB3ZWVrIiwKKyAqICI1IHdlZWtzIGFnbyIsICJpbiA1IHdlZWtzIi4KKyAqCisgKiBAcGFy
YW0gcmVsZGF0ZWZtdAorICogICAgICAgICAgVGhlIFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVy
IG9iamVjdCBzcGVjaWZ5aW5nIHRoZQorICogICAgICAgICAgZm9ybWF0IGNvbnZlbnRpb25zLgor
ICogQHBhcmFtIG9mZnNldAorICogICAgICAgICAgVGhlIHNpZ25lZCBvZmZzZXQgZm9yIHRoZSBz
cGVjaWZpZWQgdW5pdC4gVGhpcyB3aWxsCisgKiAgICAgICAgICBiZSBmb3JtYXR0ZWQgYWNjb3Jk
aW5nIHRvIHRoaXMgb2JqZWN0J3MgVU51bWJlckZvcm1hdAorICogICAgICAgICAgb2JqZWN0Lgor
ICogQHBhcmFtIHVuaXQKKyAqICAgICAgICAgIFRoZSB1bml0IHRvIHVzZSB3aGVuIGZvcm1hdHRp
bmcgdGhlIHJlbGF0aXZlCisgKiAgICAgICAgICBkYXRlLCBlLmcuIFVEQVRfUkVMX1VOSVRfV0VF
SywgVURBVF9SRUxfVU5JVF9GUklEQVkuCisgKiBAcGFyYW0gcmVzdWx0CisgKiAgICAgICAgICBB
IHBvaW50ZXIgdG8gYSBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgZm9ybWF0dGVkIHJlc3VsdC4KKyAq
IEBwYXJhbSByZXN1bHRDYXBhY2l0eQorICogICAgICAgICAgVGhlIG1heGltdW0gc2l6ZSBvZiBy
ZXN1bHQuCisgKiBAcGFyYW0gc3RhdHVzCisgKiAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBVRXJy
b3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycy4gSW4KKyAqICAgICAgICAgIGNhc2Ugb2YgZXJy
b3Igc3RhdHVzLCB0aGUgY29udGVudHMgb2YgcmVzdWx0IGFyZQorICogICAgICAgICAgdW5kZWZp
bmVkLgorICogQHJldHVybgorICogICAgICAgICAgVGhlIGxlbmd0aCBvZiB0aGUgZm9ybWF0dGVk
IHJlc3VsdDsgbWF5IGJlIGdyZWF0ZXIKKyAqICAgICAgICAgIHRoYW4gcmVzdWx0Q2FwYWNpdHks
IGluIHdoaWNoIGNhc2UgYW4gZXJyb3IgaXMgcmV0dXJuZWQuCisgKiBAc3RhYmxlIElDVSA1Nwor
ICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordXJlbGRhdGVmbXRfZm9ybWF0TnVtZXJp
YyggY29uc3QgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqIHJlbGRhdGVmbXQsCisgICAgICAg
ICAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgIFVSZWxhdGl2ZURhdGVUaW1lVW5pdCB1bml0LAorICAgICAgICAgICAgICAgICAgICBV
Q2hhciogICAgICAgICAgICAgICAgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICBpbnQzMl90
ICAgICAgICAgICAgICAgcmVzdWx0Q2FwYWNpdHksCisgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUqICAgICAgICAgICBzdGF0dXMpOworCisvKioKKyAqIEZvcm1hdCBhIGNvbWJpbmF0aW9u
IG9mIFVSZWxhdGl2ZURhdGVUaW1lVW5pdCBhbmQgbnVtZXJpYyBvZmZzZXQKKyAqIHVzaW5nIGEg
dGV4dCBzdHlsZSBpZiBwb3NzaWJsZSwgZS5nLiAibGFzdCB3ZWVrIiwgInRoaXMgd2VlayIsCisg
KiAibmV4dCB3ZWVrIiwgInllc3RlcmRheSIsICJ0b21vcnJvdyIuIEZhbGxzIGJhY2sgdG8gbnVt
ZXJpYworICogc3R5bGUgaWYgbm8gYXBwcm9wcmlhdGUgdGV4dCB0ZXJtIGlzIGF2YWlsYWJsZSBm
b3IgdGhlIHNwZWNpZmllZAorICogb2Zmc2V0IGluIHRoZSBvYmplY3QncyBsb2NhbGUuCisgKgor
ICogQHBhcmFtIHJlbGRhdGVmbXQKKyAqICAgICAgICAgIFRoZSBVUmVsYXRpdmVEYXRlVGltZUZv
cm1hdHRlciBvYmplY3Qgc3BlY2lmeWluZyB0aGUKKyAqICAgICAgICAgIGZvcm1hdCBjb252ZW50
aW9ucy4KKyAqIEBwYXJhbSBvZmZzZXQKKyAqICAgICAgICAgIFRoZSBzaWduZWQgb2Zmc2V0IGZv
ciB0aGUgc3BlY2lmaWVkIHVuaXQuCisgKiBAcGFyYW0gdW5pdAorICogICAgICAgICAgVGhlIHVu
aXQgdG8gdXNlIHdoZW4gZm9ybWF0dGluZyB0aGUgcmVsYXRpdmUKKyAqICAgICAgICAgIGRhdGUs
IGUuZy4gVURBVF9SRUxfVU5JVF9XRUVLLCBVREFUX1JFTF9VTklUX0ZSSURBWS4KKyAqIEBwYXJh
bSByZXN1bHQKKyAqICAgICAgICAgIEEgcG9pbnRlciB0byBhIGJ1ZmZlciB0byByZWNlaXZlIHRo
ZSBmb3JtYXR0ZWQgcmVzdWx0LgorICogQHBhcmFtIHJlc3VsdENhcGFjaXR5CisgKiAgICAgICAg
ICBUaGUgbWF4aW11bSBzaXplIG9mIHJlc3VsdC4KKyAqIEBwYXJhbSBzdGF0dXMKKyAqICAgICAg
ICAgIEEgcG9pbnRlciB0byBhIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLiBJbgor
ICogICAgICAgICAgY2FzZSBvZiBlcnJvciBzdGF0dXMsIHRoZSBjb250ZW50cyBvZiByZXN1bHQg
YXJlCisgKiAgICAgICAgICB1bmRlZmluZWQuCisgKiBAcmV0dXJuCisgKiAgICAgICAgICBUaGUg
bGVuZ3RoIG9mIHRoZSBmb3JtYXR0ZWQgcmVzdWx0OyBtYXkgYmUgZ3JlYXRlcgorICogICAgICAg
ICAgdGhhbiByZXN1bHRDYXBhY2l0eSwgaW4gd2hpY2ggY2FzZSBhbiBlcnJvciBpcyByZXR1cm5l
ZC4KKyAqIEBzdGFibGUgSUNVIDU3CisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1
cmVsZGF0ZWZtdF9mb3JtYXQoIGNvbnN0IFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKiByZWxk
YXRlZm10LAorICAgICAgICAgICAgICAgICAgICBkb3VibGUgICAgICAgICAgICAgICAgb2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICBVUmVsYXRpdmVEYXRlVGltZVVuaXQgdW5pdCwKKyAgICAg
ICAgICAgICAgICAgICAgVUNoYXIqICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCAgICAgICAgICAgICAgIHJlc3VsdENhcGFjaXR5LAorICAgICAgICAg
ICAgICAgICAgICBVRXJyb3JDb2RlKiAgICAgICAgICAgc3RhdHVzKTsKKworLyoqCisgKiBDb21i
aW5lcyBhIHJlbGF0aXZlIGRhdGUgc3RyaW5nIGFuZCBhIHRpbWUgc3RyaW5nIGluIHRoaXMgb2Jq
ZWN0J3MKKyAqIGxvY2FsZS4gVGhpcyBpcyBkb25lIHdpdGggdGhlIHNhbWUgZGF0ZS10aW1lIHNl
cGFyYXRvciB1c2VkIGZvciB0aGUKKyAqIGRlZmF1bHQgY2FsZW5kYXIgaW4gdGhpcyBsb2NhbGUg
dG8gcHJvZHVjZSBhIHJlc3VsdCBzdWNoIGFzCisgKiAieWVzdGVyZGF5IGF0IDM6NDUgUE0iLgor
ICoKKyAqIEBwYXJhbSByZWxkYXRlZm10CisgKiAgICAgICAgICBUaGUgVVJlbGF0aXZlRGF0ZVRp
bWVGb3JtYXR0ZXIgb2JqZWN0IHNwZWNpZnlpbmcgdGhlIGZvcm1hdCBjb252ZW50aW9ucy4KKyAq
IEBwYXJhbSByZWxhdGl2ZURhdGVTdHJpbmcKKyAqICAgICAgICAgIFRoZSByZWxhdGl2ZSBkYXRl
IHN0cmluZy4KKyAqIEBwYXJhbSByZWxhdGl2ZURhdGVTdHJpbmdMZW4KKyAqICAgICAgICAgIFRo
ZSBsZW5ndGggb2YgcmVsYXRpdmVEYXRlU3RyaW5nOyBtYXkgYmUgLTEgaWYgcmVsYXRpdmVEYXRl
U3RyaW5nCisgKiAgICAgICAgICBpcyB6ZXJvLXRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gdGltZVN0
cmluZworICogICAgICAgICAgVGhlIHRpbWUgc3RyaW5nLgorICogQHBhcmFtIHRpbWVTdHJpbmdM
ZW4KKyAqICAgICAgICAgIFRoZSBsZW5ndGggb2YgdGltZVN0cmluZzsgbWF5IGJlIC0xIGlmIHRp
bWVTdHJpbmcgaXMgemVyby10ZXJtaW5hdGVkLgorICogQHBhcmFtIHJlc3VsdAorICogICAgICAg
ICAgQSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGZvcm1hdHRlZCByZXN1bHQu
CisgKiBAcGFyYW0gcmVzdWx0Q2FwYWNpdHkKKyAqICAgICAgICAgIFRoZSBtYXhpbXVtIHNpemUg
b2YgcmVzdWx0LgorICogQHBhcmFtIHN0YXR1cworICogICAgICAgICAgQSBwb2ludGVyIHRvIGEg
VUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMuIEluIGNhc2Ugb2YgZXJyb3Igc3RhdHVz
LAorICogICAgICAgICAgdGhlIGNvbnRlbnRzIG9mIHJlc3VsdCBhcmUgdW5kZWZpbmVkLgorICog
QHJldHVybgorICogICAgICAgICAgVGhlIGxlbmd0aCBvZiB0aGUgZm9ybWF0dGVkIHJlc3VsdDsg
bWF5IGJlIGdyZWF0ZXIgdGhhbiByZXN1bHRDYXBhY2l0eSwKKyAqICAgICAgICAgIGluIHdoaWNo
IGNhc2UgYW4gZXJyb3IgaXMgcmV0dXJuZWQuCisgKiBAc3RhYmxlIElDVSA1NworICovCitVX1NU
QUJMRSBpbnQzMl90IFVfRVhQT1JUMgordXJlbGRhdGVmbXRfY29tYmluZURhdGVBbmRUaW1lKCBj
b25zdCBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciogcmVsZGF0ZWZtdCwKKyAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVUNoYXIgKiAgICAgcmVsYXRpdmVEYXRlU3RyaW5nLAorICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICByZWxhdGl2ZURhdGVTdHJpbmdMZW4sCisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICogICAgIHRpbWVTdHJpbmcsCisgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgICAgICAgICAgIHRpbWVTdHJpbmdMZW4sCisgICAgICAgICAgICAg
ICAgICAgIFVDaGFyKiAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCAgICAgICAgICAgcmVzdWx0Q2FwYWNpdHksCisgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUqICAgICAgIHN0YXR1cyApOworCisjZW5kaWYgLyogIVVDT05GSUdfTk9fRk9STUFUVElO
RyAmJiAhVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04gKi8KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VyZW5hbWUuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvdXJlbmFtZS5oCmluZGV4IDMxM2YyNzFhYjMxZWE3MTc1MTJkODQ1OGE3ZWY1MTcwYjZlMDBk
YWEuLjk4MjY1NWM0NDI1ZTBiNzk1ODZkM2JlYjYzZGI1ZmMyNTY2YTcyMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXJlbmFtZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdXJlbmFtZS5oCkBAIC0xLDExICsxLDEzIEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKLSogICBDb3B5cmlnaHQgKEMpIDIwMDItMjAxNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVz
cyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMjAwMi0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1
c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCiAqICAgZmlsZSBuYW1lOiAgdXJl
bmFtZS5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAog
KiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTk4
LDEyICsxMDAsMTcgQEAKICNkZWZpbmUgX1VURjE2QkVEYXRhIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRShfVVRGMTZCRURhdGEpCiAjZGVmaW5lIF9VVEYxNkRhdGEgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKF9VVEYxNkRhdGEpCiAjZGVmaW5lIF9VVEYxNkxFRGF0YSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUoX1VURjE2TEVEYXRhKQorI2RlZmluZSBfVVRGMTZ2MkRhdGEgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKF9VVEYxNnYyRGF0YSkKICNkZWZpbmUgX1VURjMyQkVEYXRhIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRShfVVRGMzJCRURhdGEpCiAjZGVmaW5lIF9VVEYzMkRhdGEgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKF9VVEYzMkRhdGEpCiAjZGVmaW5lIF9VVEYzMkxFRGF0YSBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUoX1VURjMyTEVEYXRhKQogI2RlZmluZSBfVVRGN0RhdGEgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKF9VVEY3RGF0YSkKICNkZWZpbmUgX1VURjhEYXRhIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRShfVVRGOERhdGEpCisjZGVmaW5lIGFsbG93ZWRIb3VyRm9ybWF0
c0NsZWFudXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGFsbG93ZWRIb3VyRm9ybWF0c0NsZWFu
dXApCisjZGVmaW5lIGNoZWNrSW1wbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoY2hlY2tJbXBs
KQogI2RlZmluZSBjbWVtb3J5X2NsZWFudXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGNtZW1v
cnlfY2xlYW51cCkKKyNkZWZpbmUgZGF5UGVyaW9kUnVsZXNDbGVhbnVwIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRShkYXlQZXJpb2RSdWxlc0NsZWFudXApCisjZGVmaW5lIGRlbGV0ZUFsbG93ZWRI
b3VyRm9ybWF0cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoZGVsZXRlQWxsb3dlZEhvdXJGb3Jt
YXRzKQogI2RlZmluZSBnVGltZVpvbmVGaWxlc0luaXRPbmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRShnVGltZVpvbmVGaWxlc0luaXRPbmNlKQogI2RlZmluZSBpenJ1bGVfY2xvbmUgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKGl6cnVsZV9jbG9uZSkKICNkZWZpbmUgaXpydWxlX2Nsb3NlIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRShpenJ1bGVfY2xvc2UpCkBAIC0xMTksMTYgKzEyNiw2IEBA
CiAjZGVmaW5lIGl6cnVsZV9nZXRTdGF0aWNDbGFzc0lEIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RShpenJ1bGVfZ2V0U3RhdGljQ2xhc3NJRCkKICNkZWZpbmUgaXpydWxlX2lzRXF1aXZhbGVudFRv
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShpenJ1bGVfaXNFcXVpdmFsZW50VG8pCiAjZGVmaW5l
IGl6cnVsZV9vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShpenJ1bGVfb3BlbikKLSNkZWZp
bmUgbGVfY2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxlX2Nsb3NlKQotI2RlZmluZSBs
ZV9jcmVhdGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxlX2NyZWF0ZSkKLSNkZWZpbmUgbGVf
Z2V0Q2hhckluZGljZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxlX2dldENoYXJJbmRpY2Vz
KQotI2RlZmluZSBsZV9nZXRDaGFySW5kaWNlc1dpdGhCYXNlIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRShsZV9nZXRDaGFySW5kaWNlc1dpdGhCYXNlKQotI2RlZmluZSBsZV9nZXRHbHlwaENvdW50
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShsZV9nZXRHbHlwaENvdW50KQotI2RlZmluZSBsZV9n
ZXRHbHlwaFBvc2l0aW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShsZV9nZXRHbHlwaFBvc2l0
aW9uKQotI2RlZmluZSBsZV9nZXRHbHlwaFBvc2l0aW9ucyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUobGVfZ2V0R2x5cGhQb3NpdGlvbnMpCi0jZGVmaW5lIGxlX2dldEdseXBocyBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUobGVfZ2V0R2x5cGhzKQotI2RlZmluZSBsZV9sYXlvdXRDaGFycyBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUobGVfbGF5b3V0Q2hhcnMpCi0jZGVmaW5lIGxlX3Jlc2V0IFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRShsZV9yZXNldCkKICNkZWZpbmUgbG9jYWxlX2dldEtleXdv
cmRzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShsb2NhbGVfZ2V0S2V5d29yZHMpCiAjZGVmaW5l
IGxvY2FsZV9nZXRLZXl3b3Jkc1N0YXJ0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShsb2NhbGVf
Z2V0S2V5d29yZHNTdGFydCkKICNkZWZpbmUgbG9jYWxlX2dldF9kZWZhdWx0IFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRShsb2NhbGVfZ2V0X2RlZmF1bHQpCkBAIC00NzQsNiArNDcxLDkgQEAKICNk
ZWZpbmUgdWJpZGlfc2V0UmVvcmRlcmluZ09wdGlvbnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHViaWRpX3NldFJlb3JkZXJpbmdPcHRpb25zKQogI2RlZmluZSB1YmlkaV93cml0ZVJlb3JkZXJl
ZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfd3JpdGVSZW9yZGVyZWQpCiAjZGVmaW5l
IHViaWRpX3dyaXRlUmV2ZXJzZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfd3JpdGVS
ZXZlcnNlKQorI2RlZmluZSB1YmlkaXRyYW5zZm9ybV9jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWJpZGl0cmFuc2Zvcm1fY2xvc2UpCisjZGVmaW5lIHViaWRpdHJhbnNmb3JtX29wZW4g
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpdHJhbnNmb3JtX29wZW4pCisjZGVmaW5lIHVi
aWRpdHJhbnNmb3JtX3RyYW5zZm9ybSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGl0cmFu
c2Zvcm1fdHJhbnNmb3JtKQogI2RlZmluZSB1YmxvY2tfZ2V0Q29kZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWJsb2NrX2dldENvZGUpCiAjZGVmaW5lIHVicmtfY2xvc2UgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVicmtfY2xvc2UpCiAjZGVmaW5lIHVicmtfY291bnRBdmFpbGFibGUgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVicmtfY291bnRBdmFpbGFibGUpCkBAIC00ODEsNiArNDgx
LDcgQEAKICNkZWZpbmUgdWJya19maXJzdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJya19m
aXJzdCkKICNkZWZpbmUgdWJya19mb2xsb3dpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVi
cmtfZm9sbG93aW5nKQogI2RlZmluZSB1YnJrX2dldEF2YWlsYWJsZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWJya19nZXRBdmFpbGFibGUpCisjZGVmaW5lIHVicmtfZ2V0QmluYXJ5UnVsZXMg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVicmtfZ2V0QmluYXJ5UnVsZXMpCiAjZGVmaW5lIHVi
cmtfZ2V0TG9jYWxlQnlUeXBlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX2dldExvY2Fs
ZUJ5VHlwZSkKICNkZWZpbmUgdWJya19nZXRSdWxlU3RhdHVzIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1YnJrX2dldFJ1bGVTdGF0dXMpCiAjZGVmaW5lIHVicmtfZ2V0UnVsZVN0YXR1c1ZlYyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJya19nZXRSdWxlU3RhdHVzVmVjKQpAQCAtNDg4LDYg
KzQ4OSw3IEBACiAjZGVmaW5lIHVicmtfbGFzdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJy
a19sYXN0KQogI2RlZmluZSB1YnJrX25leHQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVicmtf
bmV4dCkKICNkZWZpbmUgdWJya19vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX29w
ZW4pCisjZGVmaW5lIHVicmtfb3BlbkJpbmFyeVJ1bGVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1YnJrX29wZW5CaW5hcnlSdWxlcykKICNkZWZpbmUgdWJya19vcGVuUnVsZXMgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVicmtfb3BlblJ1bGVzKQogI2RlZmluZSB1YnJrX3ByZWNlZGluZyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJya19wcmVjZWRpbmcpCiAjZGVmaW5lIHVicmtfcHJl
dmlvdXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVicmtfcHJldmlvdXMpCkBAIC01NDksNyAr
NTUxLDYgQEAKICNkZWZpbmUgdWNhc2VfYWRkU3RyaW5nQ2FzZUNsb3N1cmUgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVjYXNlX2FkZFN0cmluZ0Nhc2VDbG9zdXJlKQogI2RlZmluZSB1Y2FzZV9m
b2xkIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZV9mb2xkKQogI2RlZmluZSB1Y2FzZV9n
ZXRDYXNlTG9jYWxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZV9nZXRDYXNlTG9jYWxl
KQotI2RlZmluZSB1Y2FzZV9nZXRTaW5nbGV0b24gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVj
YXNlX2dldFNpbmdsZXRvbikKICNkZWZpbmUgdWNhc2VfZ2V0VHlwZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWNhc2VfZ2V0VHlwZSkKICNkZWZpbmUgdWNhc2VfZ2V0VHlwZU9ySWdub3JhYmxl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZV9nZXRUeXBlT3JJZ25vcmFibGUpCiAjZGVm
aW5lIHVjYXNlX2hhc0JpbmFyeVByb3BlcnR5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2Fz
ZV9oYXNCaW5hcnlQcm9wZXJ0eSkKQEAgLTk0NCw2ICs5NDUsNyBAQAogI2RlZmluZSB1aGFzaF9p
Z2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9pZ2V0KQogI2RlZmluZSB1aGFzaF9p
Z2V0aSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfaWdldGkpCiAjZGVmaW5lIHVoYXNo
X2luaXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX2luaXQpCisjZGVmaW5lIHVoYXNo
X2luaXRTaXplIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9pbml0U2l6ZSkKICNkZWZp
bmUgdWhhc2hfaXB1dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfaXB1dCkKICNkZWZp
bmUgdWhhc2hfaXB1dGkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX2lwdXRpKQogI2Rl
ZmluZSB1aGFzaF9pcmVtb3ZlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9pcmVtb3Zl
KQpAQCAtMTAxMyw2ICsxMDE1LDcgQEAKICNkZWZpbmUgdWxpc3RfZ2V0TGlzdFNpemUgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVsaXN0X2dldExpc3RTaXplKQogI2RlZmluZSB1bGlzdF9nZXRO
ZXh0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bGlzdF9nZXROZXh0KQogI2RlZmluZSB1bGlz
dF9uZXh0X2tleXdvcmRfdmFsdWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsaXN0X25leHRf
a2V5d29yZF92YWx1ZSkKKyNkZWZpbmUgdWxpc3RfcmVtb3ZlU3RyaW5nIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1bGlzdF9yZW1vdmVTdHJpbmcpCiAjZGVmaW5lIHVsaXN0X3Jlc2V0TGlzdCBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxpc3RfcmVzZXRMaXN0KQogI2RlZmluZSB1bGlzdF9y
ZXNldF9rZXl3b3JkX3ZhbHVlc19pdGVyYXRvciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxp
c3RfcmVzZXRfa2V5d29yZF92YWx1ZXNfaXRlcmF0b3IpCiAjZGVmaW5lIHVsaXN0Zm10X2Nsb3Nl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bGlzdGZtdF9jbG9zZSkKQEAgLTEwNzcsNiArMTA4
MCw3IEBACiAjZGVmaW5lIHVsb2NkYXRhX3NldE5vU3Vic3RpdHV0ZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWxvY2RhdGFfc2V0Tm9TdWJzdGl0dXRlKQogI2RlZmluZSB1bG9jaW1wX2dldENv
dW50cnkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NpbXBfZ2V0Q291bnRyeSkKICNkZWZp
bmUgdWxvY2ltcF9nZXRMYW5ndWFnZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxvY2ltcF9n
ZXRMYW5ndWFnZSkKKyNkZWZpbmUgdWxvY2ltcF9nZXRSZWdpb25Gb3JTdXBwbGVtZW50YWxEYXRh
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jaW1wX2dldFJlZ2lvbkZvclN1cHBsZW1lbnRh
bERhdGEpCiAjZGVmaW5lIHVsb2NpbXBfZ2V0U2NyaXB0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1bG9jaW1wX2dldFNjcmlwdCkKICNkZWZpbmUgdWxvY2ltcF90b0JjcEtleSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWxvY2ltcF90b0JjcEtleSkKICNkZWZpbmUgdWxvY2ltcF90b0JjcFR5
cGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NpbXBfdG9CY3BUeXBlKQpAQCAtMTE0Myw2
ICsxMTQ3LDcgQEAKICNkZWZpbmUgdW51bV9mb3JtYXREZWNpbWFsIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1bnVtX2Zvcm1hdERlY2ltYWwpCiAjZGVmaW5lIHVudW1fZm9ybWF0RG91YmxlIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtX2Zvcm1hdERvdWJsZSkKICNkZWZpbmUgdW51bV9m
b3JtYXREb3VibGVDdXJyZW5jeSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW51bV9mb3JtYXRE
b3VibGVDdXJyZW5jeSkKKyNkZWZpbmUgdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzKQogI2RlZmluZSB1
bnVtX2Zvcm1hdEludDY0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtX2Zvcm1hdEludDY0
KQogI2RlZmluZSB1bnVtX2Zvcm1hdFVGb3JtYXR0YWJsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodW51bV9mb3JtYXRVRm9ybWF0dGFibGUpCiAjZGVmaW5lIHVudW1fZ2V0QXR0cmlidXRlIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtX2dldEF0dHJpYnV0ZSkKQEAgLTExNzQsOSArMTE3
OSwxMSBAQAogI2RlZmluZSB1bnVtc3lzX29wZW5BdmFpbGFibGVOYW1lcyBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodW51bXN5c19vcGVuQXZhaWxhYmxlTmFtZXMpCiAjZGVmaW5lIHVudW1zeXNf
b3BlbkJ5TmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW51bXN5c19vcGVuQnlOYW1lKQog
I2RlZmluZSB1cGxydWxlc19jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBscnVsZXNf
Y2xvc2UpCisjZGVmaW5lIHVwbHJ1bGVzX2dldEtleXdvcmRzIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1cGxydWxlc19nZXRLZXl3b3JkcykKICNkZWZpbmUgdXBscnVsZXNfb3BlbiBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXBscnVsZXNfb3BlbikKICNkZWZpbmUgdXBscnVsZXNfb3BlbkZv
clR5cGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwbHJ1bGVzX29wZW5Gb3JUeXBlKQogI2Rl
ZmluZSB1cGxydWxlc19zZWxlY3QgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwbHJ1bGVzX3Nl
bGVjdCkKKyNkZWZpbmUgdXBscnVsZXNfc2VsZWN0V2l0aEZvcm1hdCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXBscnVsZXNfc2VsZWN0V2l0aEZvcm1hdCkKICNkZWZpbmUgdXBsdWdfY2xvc2VM
aWJyYXJ5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGx1Z19jbG9zZUxpYnJhcnkpCiAjZGVm
aW5lIHVwbHVnX2ZpbmRMaWJyYXJ5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGx1Z19maW5k
TGlicmFyeSkKICNkZWZpbmUgdXBsdWdfZ2V0Q29uZmlndXJhdGlvbiBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXBsdWdfZ2V0Q29uZmlndXJhdGlvbikKQEAgLTEyMTMsNiArMTIyMCw3IEBACiAj
ZGVmaW5lIHVwcnZfY29tcGFyZUludkViY2RpYyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBy
dl9jb21wYXJlSW52RWJjZGljKQogI2RlZmluZSB1cHJ2X2NvbXBhcmVJbnZFYmNkaWNBc0FzY2lp
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2NvbXBhcmVJbnZFYmNkaWNBc0FzY2lpKQog
I2RlZmluZSB1cHJ2X2NvbnZlcnRUb0xDSUQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZf
Y29udmVydFRvTENJRCkKKyNkZWZpbmUgdXBydl9jb252ZXJ0VG9MQ0lEUGxhdGZvcm0gVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfY29udmVydFRvTENJRFBsYXRmb3JtKQogI2RlZmluZSB1
cHJ2X2NvbnZlcnRUb1Bvc2l4IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2NvbnZlcnRU
b1Bvc2l4KQogI2RlZmluZSB1cHJ2X2NvcHlBc2NpaSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXBydl9jb3B5QXNjaWkpCiAjZGVmaW5lIHVwcnZfY29weUViY2RpYyBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXBydl9jb3B5RWJjZGljKQpAQCAtMTM1NCw2ICsxMzYyLDcgQEAKICNkZWZpbmUg
dXBydl90b3VwcGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X3RvdXBwZXIpCiAjZGVm
aW5lIHVwcnZfdHJ1bmMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfdHJ1bmMpCiAjZGVm
aW5lIHVwcnZfdHpuYW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X3R6bmFtZSkKKyNk
ZWZpbmUgdXBydl90em5hbWVfY2xlYXJfY2FjaGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVw
cnZfdHpuYW1lX2NsZWFyX2NhY2hlKQogI2RlZmluZSB1cHJ2X3R6c2V0IFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1cHJ2X3R6c2V0KQogI2RlZmluZSB1cHJ2X3VpbnQxNkNvbXBhcmF0b3IgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfdWludDE2Q29tcGFyYXRvcikKICNkZWZpbmUgdXBy
dl91aW50MzJDb21wYXJhdG9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X3VpbnQzMkNv
bXBhcmF0b3IpCkBAIC0xNDQ1LDExICsxNDU0LDE3IEBACiAjZGVmaW5lIHVyZWdpb25fZ2V0UmVn
aW9uRnJvbUNvZGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdpb25fZ2V0UmVnaW9uRnJv
bUNvZGUpCiAjZGVmaW5lIHVyZWdpb25fZ2V0UmVnaW9uRnJvbU51bWVyaWNDb2RlIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1cmVnaW9uX2dldFJlZ2lvbkZyb21OdW1lcmljQ29kZSkKICNkZWZp
bmUgdXJlZ2lvbl9nZXRUeXBlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnaW9uX2dldFR5
cGUpCisjZGVmaW5lIHVyZWxkYXRlZm10X2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
cmVsZGF0ZWZtdF9jbG9zZSkKKyNkZWZpbmUgdXJlbGRhdGVmbXRfY29tYmluZURhdGVBbmRUaW1l
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVsZGF0ZWZtdF9jb21iaW5lRGF0ZUFuZFRpbWUp
CisjZGVmaW5lIHVyZWxkYXRlZm10X2Zvcm1hdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJl
bGRhdGVmbXRfZm9ybWF0KQorI2RlZmluZSB1cmVsZGF0ZWZtdF9mb3JtYXROdW1lcmljIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVsZGF0ZWZtdF9mb3JtYXROdW1lcmljKQorI2RlZmluZSB1
cmVsZGF0ZWZtdF9vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVsZGF0ZWZtdF9vcGVu
KQogI2RlZmluZSB1cmVzX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2Nsb3Nl
KQogI2RlZmluZSB1cmVzX2NvcHlSZXNiIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2Nv
cHlSZXNiKQogI2RlZmluZSB1cmVzX2NvdW50QXJyYXlJdGVtcyBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXJlc19jb3VudEFycmF5SXRlbXMpCiAjZGVmaW5lIHVyZXNfZmluZFJlc291cmNlIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2ZpbmRSZXNvdXJjZSkKICNkZWZpbmUgdXJlc19m
aW5kU3ViUmVzb3VyY2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfZmluZFN1YlJlc291
cmNlKQorI2RlZmluZSB1cmVzX2dldEFsbEl0ZW1zV2l0aEZhbGxiYWNrIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1cmVzX2dldEFsbEl0ZW1zV2l0aEZhbGxiYWNrKQogI2RlZmluZSB1cmVzX2dl
dEJpbmFyeSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19nZXRCaW5hcnkpCiAjZGVmaW5l
IHVyZXNfZ2V0QnlJbmRleCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19nZXRCeUluZGV4
KQogI2RlZmluZSB1cmVzX2dldEJ5S2V5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2dl
dEJ5S2V5KQpAQCAtMTU5NywxMyArMTYxMiwyMCBAQAogI2RlZmluZSB1c3Bvb2ZfYXJlQ29uZnVz
YWJsZVVURjggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9hcmVDb25mdXNhYmxlVVRG
OCkKICNkZWZpbmUgdXNwb29mX2FyZUNvbmZ1c2FibGVVbmljb2RlU3RyaW5nIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1c3Bvb2ZfYXJlQ29uZnVzYWJsZVVuaWNvZGVTdHJpbmcpCiAjZGVmaW5l
IHVzcG9vZl9jaGVjayBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2NoZWNrKQorI2Rl
ZmluZSB1c3Bvb2ZfY2hlY2syIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfY2hlY2sy
KQorI2RlZmluZSB1c3Bvb2ZfY2hlY2syVVRGOCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNw
b29mX2NoZWNrMlVURjgpCisjZGVmaW5lIHVzcG9vZl9jaGVjazJVbmljb2RlU3RyaW5nIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfY2hlY2syVW5pY29kZVN0cmluZykKICNkZWZpbmUg
dXNwb29mX2NoZWNrVVRGOCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2NoZWNrVVRG
OCkKICNkZWZpbmUgdXNwb29mX2NoZWNrVW5pY29kZVN0cmluZyBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXNwb29mX2NoZWNrVW5pY29kZVN0cmluZykKICNkZWZpbmUgdXNwb29mX2Nsb25lIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfY2xvbmUpCiAjZGVmaW5lIHVzcG9vZl9jbG9z
ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2Nsb3NlKQorI2RlZmluZSB1c3Bvb2Zf
Y2xvc2VDaGVja1Jlc3VsdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2Nsb3NlQ2hl
Y2tSZXN1bHQpCiAjZGVmaW5lIHVzcG9vZl9nZXRBbGxvd2VkQ2hhcnMgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVzcG9vZl9nZXRBbGxvd2VkQ2hhcnMpCiAjZGVmaW5lIHVzcG9vZl9nZXRBbGxv
d2VkTG9jYWxlcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2dldEFsbG93ZWRMb2Nh
bGVzKQogI2RlZmluZSB1c3Bvb2ZfZ2V0QWxsb3dlZFVuaWNvZGVTZXQgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVzcG9vZl9nZXRBbGxvd2VkVW5pY29kZVNldCkKKyNkZWZpbmUgdXNwb29mX2dl
dENoZWNrUmVzdWx0Q2hlY2tzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0Q2hl
Y2tSZXN1bHRDaGVja3MpCisjZGVmaW5lIHVzcG9vZl9nZXRDaGVja1Jlc3VsdE51bWVyaWNzIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0Q2hlY2tSZXN1bHROdW1lcmljcykKKyNk
ZWZpbmUgdXNwb29mX2dldENoZWNrUmVzdWx0UmVzdHJpY3Rpb25MZXZlbCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXNwb29mX2dldENoZWNrUmVzdWx0UmVzdHJpY3Rpb25MZXZlbCkKICNkZWZp
bmUgdXNwb29mX2dldENoZWNrcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2dldENo
ZWNrcykKICNkZWZpbmUgdXNwb29mX2dldEluY2x1c2lvblNldCBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXNwb29mX2dldEluY2x1c2lvblNldCkKICNkZWZpbmUgdXNwb29mX2dldEluY2x1c2lv
blVuaWNvZGVTZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9nZXRJbmNsdXNpb25V
bmljb2RlU2V0KQpAQCAtMTYxMyw3ICsxNjM1LDkgQEAKICNkZWZpbmUgdXNwb29mX2dldFNrZWxl
dG9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0U2tlbGV0b24pCiAjZGVmaW5l
IHVzcG9vZl9nZXRTa2VsZXRvblVURjggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9n
ZXRTa2VsZXRvblVURjgpCiAjZGVmaW5lIHVzcG9vZl9nZXRTa2VsZXRvblVuaWNvZGVTdHJpbmcg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9nZXRTa2VsZXRvblVuaWNvZGVTdHJpbmcp
CisjZGVmaW5lIHVzcG9vZl9pbnRlcm5hbEluaXRTdGF0aWNzIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1c3Bvb2ZfaW50ZXJuYWxJbml0U3RhdGljcykKICNkZWZpbmUgdXNwb29mX29wZW4gVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9vcGVuKQorI2RlZmluZSB1c3Bvb2Zfb3BlbkNo
ZWNrUmVzdWx0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2Zfb3BlbkNoZWNrUmVzdWx0
KQogI2RlZmluZSB1c3Bvb2Zfb3BlbkZyb21TZXJpYWxpemVkIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1c3Bvb2Zfb3BlbkZyb21TZXJpYWxpemVkKQogI2RlZmluZSB1c3Bvb2Zfb3BlbkZyb21T
b3VyY2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9vcGVuRnJvbVNvdXJjZSkKICNk
ZWZpbmUgdXNwb29mX3NlcmlhbGl6ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX3Nl
cmlhbGl6ZSkKQEAgLTE2MzEsMTIgKzE2NTUsMTQgQEAKICNkZWZpbmUgdXN0cl9oYXNoQ2hhcnNO
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3RyX2hhc2hDaGFyc04pCiAjZGVmaW5lIHVzdHJf
aGFzaElDaGFyc04gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzdHJfaGFzaElDaGFyc04pCiAj
ZGVmaW5lIHVzdHJfaGFzaFVDaGFyc04gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzdHJfaGFz
aFVDaGFyc04pCisjZGVmaW5lIHVzdHJjYXNlX2dldENhc2VMb2NhbGUgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVzdHJjYXNlX2dldENhc2VMb2NhbGUpCisjZGVmaW5lIHVzdHJjYXNlX2dldFRp
dGxlQnJlYWtJdGVyYXRvciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXN0cmNhc2VfZ2V0VGl0
bGVCcmVha0l0ZXJhdG9yKQogI2RlZmluZSB1c3RyY2FzZV9pbnRlcm5hbEZvbGQgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVzdHJjYXNlX2ludGVybmFsRm9sZCkKICNkZWZpbmUgdXN0cmNhc2Vf
aW50ZXJuYWxUb0xvd2VyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3RyY2FzZV9pbnRlcm5h
bFRvTG93ZXIpCiAjZGVmaW5lIHVzdHJjYXNlX2ludGVybmFsVG9UaXRsZSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXN0cmNhc2VfaW50ZXJuYWxUb1RpdGxlKQogI2RlZmluZSB1c3RyY2FzZV9p
bnRlcm5hbFRvVXBwZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzdHJjYXNlX2ludGVybmFs
VG9VcHBlcikKICNkZWZpbmUgdXN0cmNhc2VfbWFwIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
c3RyY2FzZV9tYXApCi0jZGVmaW5lIHVzdHJjYXNlX3NldFRlbXBDYXNlTWFwTG9jYWxlIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1c3RyY2FzZV9zZXRUZW1wQ2FzZU1hcExvY2FsZSkKKyNkZWZp
bmUgdXN0cmNhc2VfbWFwV2l0aE92ZXJsYXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzdHJj
YXNlX21hcFdpdGhPdmVybGFwKQogI2RlZmluZSB1dGV4dF9jaGFyMzJBdCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXRleHRfY2hhcjMyQXQpCiAjZGVmaW5lIHV0ZXh0X2Nsb25lIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1dGV4dF9jbG9uZSkKICNkZWZpbmUgdXRleHRfY2xvc2UgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHV0ZXh0X2Nsb3NlKQpAQCAtMTY4MSw3ICsxNzA3LDYgQEAKICNk
ZWZpbmUgdXRyYWNlX2Z1bmN0aW9uTmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyYWNl
X2Z1bmN0aW9uTmFtZSkKICNkZWZpbmUgdXRyYWNlX2dldEZ1bmN0aW9ucyBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXRyYWNlX2dldEZ1bmN0aW9ucykKICNkZWZpbmUgdXRyYWNlX2dldExldmVs
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJhY2VfZ2V0TGV2ZWwpCi0jZGVmaW5lIHV0cmFj
ZV9sZXZlbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyYWNlX2xldmVsKQogI2RlZmluZSB1
dHJhY2Vfc2V0RnVuY3Rpb25zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJhY2Vfc2V0RnVu
Y3Rpb25zKQogI2RlZmluZSB1dHJhY2Vfc2V0TGV2ZWwgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHV0cmFjZV9zZXRMZXZlbCkKICNkZWZpbmUgdXRyYWNlX3Zmb3JtYXQgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHV0cmFjZV92Zm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS91cmVwLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VyZXAuaAppbmRleCBjN2I5OTQ3
NmYwMGI4YjNlODk3YTM1ZmFhNDYyODJmZWRlZmMzNzc0Li45MzIyMDJkZGIwNGIxYzEzZWZmNGEy
YTQ4OWZkZGFkZmU1ZTYxNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Vy
ZXAuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VyZXAuaApAQCAtMSwzICsxLDUgQEAK
Ky8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNl
bnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1s
CiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTAs
IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdXJlcy5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91cmVzLmgKaW5kZXgg
YzkxZjAzMGIxMDA0NTQxZDEzZjgzZDg4NzI1ZjVkZTk4M2JjNGIzOC4uOTE4YjlmMjA4ZTJjZDA0
NzMwNjg0NmNiNWI1MjllNmNkOGY0ZjIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS91cmVzLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91cmVzLmgKQEAgLTEsNiAr
MSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgor
Ly8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmln
aHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxMiwy
MDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAx
OTk3LTIwMTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlv
biBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAg
LTEyLDcgKzE0LDcgQEAKICogICAwNC8wMS85NyAgICBhbGl1ICAgICAgICBDcmVhdGlvbi4KICog
ICAwMi8yMi85OSAgICBkYW1pYmEgICAgICBvdmVyaGF1bC4KICogICAwNC8wNC85OSAgICBoZWxl
bmEgICAgICBGaXhlZCBpbnRlcm5hbCBoZWFkZXIgaW5jbHVzaW9uLgotKiAgIDA0LzE1Lzk5ICAg
IE1hZGh1ICAgICAgIFVwZGF0ZWQgSmF2YWRvYyAgCisqICAgMDQvMTUvOTkgICAgTWFkaHUgICAg
ICAgVXBkYXRlZCBKYXZhZG9jCiAqICAgMDYvMTQvOTkgICAgc3RlcGhlbiAgICAgUmVtb3ZlZCBm
dW5jdGlvbnMgdGFraW5nIGEgZmlsZW5hbWUgc3VmZml4LgogKiAgIDA3LzIwLzk5ICAgIHN0ZXBo
ZW4gICAgIExhbmd1YWdlLWluZGVwZW5kZW50IHlwZWRlZiB0byB2b2lkKgogKiAgIDExLzA5Lzk5
ICAgIHdlaXYgICAgICAgIEFkZGVkIHVyZXNfZ2V0TG9jYWxlKCkKQEAgLTI5LDcgKzMxLDcgQEAK
IAogLyoqCiAgKiBcZmlsZQotICogXGJyaWVmIEMgQVBJOiBSZXNvdXJjZSBCdW5kbGUgCisgKiBc
YnJpZWYgQyBBUEk6IFJlc291cmNlIEJ1bmRsZQogICoKICAqIDxoMj5DIEFQSTogUmVzb3VyY2Ug
QnVuZGxlPC9oMj4KICAqCkBAIC00MCw3ICs0Miw3IEBACiAgKiA8UD4KICAqIFJlc291cmNlIGJ1
bmRsZXMgaW4gSUNVNEMgYXJlIGN1cnJlbnRseSBkZWZpbmVkIHVzaW5nIHRleHQgZmlsZXMgd2hp
Y2ggY29uZm9ybSB0byB0aGUgZm9sbG93aW5nCiAgKiA8YSBocmVmPSJodHRwOi8vc291cmNlLmlj
dS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3UvaWN1aHRtbC90cnVuay9kZXNpZ24vYm5mX3JiLnR4dCI+
Qk5GIGRlZmluaXRpb248L2E+LgotICogTW9yZSBvbiByZXNvdXJjZSBidW5kbGUgY29uY2VwdHMg
YW5kIHN5bnRheCBjYW4gYmUgZm91bmQgaW4gdGhlIAorICogTW9yZSBvbiByZXNvdXJjZSBidW5k
bGUgY29uY2VwdHMgYW5kIHN5bnRheCBjYW4gYmUgZm91bmQgaW4gdGhlCiAgKiA8YSBocmVmPSJo
dHRwOi8vaWN1LXByb2plY3Qub3JnL3VzZXJndWlkZS9SZXNvdXJjZU1hbmFnZW1lbnQuaHRtbCI+
VXNlcnMgR3VpZGU8L2E+LgogICogPFA+CiAgKi8KQEAgLTExOSwxMCArMTIxLDE0IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICAgLyoqIEBkZXByZWNhdGVkIElDVSAyLjYgVXNlIHRoZSBVUkVTXyBjb25z
dGFudCBpbnN0ZWFkLiAqLwogICAgIFJFU19JTlRfVkVDVE9SPVVSRVNfSU5UX1ZFQ1RPUiwKICAg
ICAvKiogQGRlcHJlY2F0ZWQgSUNVIDIuNiBOb3QgdXNlZC4gKi8KLSAgICBSRVNfUkVTRVJWRUQ9
MTUsIAotI2VuZGlmIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLworICAgIFJFU19SRVNFUlZF
RD0xNSwKIAorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFs
IFVSZXNUeXBlIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2
YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAq
LwogICAgIFVSRVNfTElNSVQgPSAxNgorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkK
IH0gVVJlc1R5cGU7CiAKIC8qCkBAIC0xMzQsMTUgKzE0MCwxNSBAQCB0eXBlZGVmIGVudW0gewog
ICogdGhlaXIgY29ycmVzcG9uZGluZyBrZXlzLgogICogTm90ZSB0aGF0IHRoZSBjYWxsZXIgaXMg
cmVzcG9uc2libGUgb2YgY2FsbGluZyA8VFQ+dXJlc19jbG9zZTwvVFQ+IG9uIGVhY2ggc3VjY2Vz
ZnVsbHkKICAqIG9wZW5lZCByZXNvdXJjZSBidW5kbGUuCi0gKiBAcGFyYW0gcGFja2FnZU5hbWUg
ICBUaGUgcGFja2FnZU5hbWUgYW5kIGxvY2FsZSB0b2dldGhlciBwb2ludCB0byBhbiBJQ1UgdWRh
dGEgb2JqZWN0LCAKLSAqICAgICAgICAgICAgICAgICAgICAgIGFzIGRlZmluZWQgYnkgPGNvZGU+
IHVkYXRhX29wZW4oIHBhY2thZ2VOYW1lLCAicmVzIiwgbG9jYWxlLCBlcnIpIDwvY29kZT4gCisg
KiBAcGFyYW0gcGFja2FnZU5hbWUgICBUaGUgcGFja2FnZU5hbWUgYW5kIGxvY2FsZSB0b2dldGhl
ciBwb2ludCB0byBhbiBJQ1UgdWRhdGEgb2JqZWN0LAorICogICAgICAgICAgICAgICAgICAgICAg
YXMgZGVmaW5lZCBieSA8Y29kZT4gdWRhdGFfb3BlbiggcGFja2FnZU5hbWUsICJyZXMiLCBsb2Nh
bGUsIGVycikgPC9jb2RlPgogICogICAgICAgICAgICAgICAgICAgICAgb3IgZXF1aXZhbGVudC4g
IFR5cGljYWxseSwgcGFja2FnZU5hbWUgd2lsbCByZWZlciB0byBhICguZGF0KSBmaWxlLCBvciB0
bwogICogICAgICAgICAgICAgICAgICAgICAgYSBwYWNrYWdlIHJlZ2lzdGVyZWQgd2l0aCB1ZGF0
YV9zZXRBcHBEYXRhKCkuIFVzaW5nIGEgZnVsbCBmaWxlIG9yIGRpcmVjdG9yeQogICogICAgICAg
ICAgICAgICAgICAgICAgcGF0aG5hbWUgZm9yIHBhY2thZ2VOYW1lIGlzIGRlcHJlY2F0ZWQuIElm
IE5VTEwsIElDVSBkYXRhIHdpbGwgYmUgdXNlZC4KICAqIEBwYXJhbSBsb2NhbGUgIHNwZWNpZmll
cyB0aGUgbG9jYWxlIGZvciB3aGljaCB3ZSB3YW50IHRvIG9wZW4gdGhlIHJlc291cmNlCiAgKiAg
ICAgICAgICAgICAgICBpZiBOVUxMLCB0aGUgZGVmYXVsdCBsb2NhbGUgd2lsbCBiZSB1c2VkLiBJ
ZiBzdHJsZW4obG9jYWxlKSA9PSAwCiAgKiAgICAgICAgICAgICAgICByb290IGxvY2FsZSB3aWxs
IGJlIHVzZWQuCi0gKiAgICAgICAgICAgICAgICAKKyAqCiAgKiBAcGFyYW0gc3RhdHVzICBmaWxs
cyBpbiB0aGUgb3V0Z29pbmcgZXJyb3IgY29kZS4KICAqIFRoZSBVRXJyb3JDb2RlIGVyciBwYXJh
bWV0ZXIgaXMgdXNlZCB0byByZXR1cm4gc3RhdHVzIGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyLiBU
bwogICogY2hlY2sgd2hldGhlciB0aGUgY29uc3RydWN0aW9uIHN1Y2NlZWRlZCBvciBub3QsIHlv
dSBzaG91bGQgY2hlY2sgdGhlIHZhbHVlIG9mCkBAIC0xNTAsMzkgKzE1NiwzOSBAQCB0eXBlZGVm
IGVudW0gewogICogaW5mb3JtYXRpb25hbCBzdGF0dXMgcmVzdWx0cyB3aGljaCBzdGlsbCBpbmRp
Y2F0ZSBzdWNjZXNzLiBVX1VTSU5HX0ZBTExCQUNLX1dBUk5JTkcKICAqIGluZGljYXRlcyB0aGF0
IGEgZmFsbCBiYWNrIGxvY2FsZSB3YXMgdXNlZC4gRm9yIGV4YW1wbGUsICdkZV9DSCcgd2FzIHJl
cXVlc3RlZCwKICAqIGJ1dCBub3RoaW5nIHdhcyBmb3VuZCB0aGVyZSwgc28gJ2RlJyB3YXMgdXNl
ZC4gVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgaW5kaWNhdGVzIHRoYXQKLSAqIHRoZSBkZWZhdWx0
IGxvY2FsZSBkYXRhIG9yIHJvb3QgbG9jYWxlIGRhdGEgd2FzIHVzZWQ7IG5laXRoZXIgdGhlIHJl
cXVlc3RlZCBsb2NhbGUgCi0gKiBub3IgYW55IG9mIGl0cyBmYWxsIGJhY2sgbG9jYWxlcyBjb3Vs
ZCBiZSBmb3VuZC4gUGxlYXNlIHNlZSB0aGUgdXNlcnMgZ3VpZGUgZm9yIG1vcmUgCisgKiB0aGUg
ZGVmYXVsdCBsb2NhbGUgZGF0YSBvciByb290IGxvY2FsZSBkYXRhIHdhcyB1c2VkOyBuZWl0aGVy
IHRoZSByZXF1ZXN0ZWQgbG9jYWxlCisgKiBub3IgYW55IG9mIGl0cyBmYWxsIGJhY2sgbG9jYWxl
cyBjb3VsZCBiZSBmb3VuZC4gUGxlYXNlIHNlZSB0aGUgdXNlcnMgZ3VpZGUgZm9yIG1vcmUKICAq
IGluZm9ybWF0aW9uIG9uIHRoaXMgdG9waWMuCiAgKiBAcmV0dXJuICAgICAgYSBuZXdseSBhbGxv
Y2F0ZWQgcmVzb3VyY2UgYnVuZGxlLgogICogQHNlZSB1cmVzX2Nsb3NlCiAgKiBAc3RhYmxlIElD
VSAyLjAKICAqLwotVV9TVEFCTEUgVVJlc291cmNlQnVuZGxlKiAgVV9FWFBPUlQyIAorVV9TVEFC
TEUgVVJlc291cmNlQnVuZGxlKiAgVV9FWFBPUlQyCiB1cmVzX29wZW4oY29uc3QgY2hhciogICAg
cGFja2FnZU5hbWUsCi0gICAgICAgICAgY29uc3QgY2hhciogIGxvY2FsZSwgCisgICAgICAgICAg
Y29uc3QgY2hhciogIGxvY2FsZSwKICAgICAgICAgICBVRXJyb3JDb2RlKiAgICAgc3RhdHVzKTsK
IAogCi0vKiogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjYXJlIHdoYXQga2luZCBvZiBsb2NhbGVJ
RCBpcyBwYXNzZWQgaW4uIEl0IHNpbXBseSBvcGVucyBhIGJ1bmRsZSB3aXRoIAorLyoqIFRoaXMg
ZnVuY3Rpb24gZG9lcyBub3QgY2FyZSB3aGF0IGtpbmQgb2YgbG9jYWxlSUQgaXMgcGFzc2VkIGlu
LiBJdCBzaW1wbHkgb3BlbnMgYSBidW5kbGUgd2l0aAogICogIHRoYXQgbmFtZS4gRmFsbGJhY2sg
bWVjaGFuaXNtIGlzIGRpc2FibGVkIGZvciB0aGUgbmV3IGJ1bmRsZS4gSWYgdGhlIHJlcXVlc3Rl
ZCBidW5kbGUgY29udGFpbnMKICAqICBhbiAlJUFMSUFTIGRpcmVjdGl2ZSwgdGhlIHJlc3VsdHMg
YXJlIHVuZGVmaW5lZC4KLSAqIEBwYXJhbSBwYWNrYWdlTmFtZSAgIFRoZSBwYWNrYWdlTmFtZSBh
bmQgbG9jYWxlIHRvZ2V0aGVyIHBvaW50IHRvIGFuIElDVSB1ZGF0YSBvYmplY3QsIAotICogICAg
ICAgICAgICAgICAgICAgICAgYXMgZGVmaW5lZCBieSA8Y29kZT4gdWRhdGFfb3BlbiggcGFja2Fn
ZU5hbWUsICJyZXMiLCBsb2NhbGUsIGVycikgPC9jb2RlPiAKKyAqIEBwYXJhbSBwYWNrYWdlTmFt
ZSAgIFRoZSBwYWNrYWdlTmFtZSBhbmQgbG9jYWxlIHRvZ2V0aGVyIHBvaW50IHRvIGFuIElDVSB1
ZGF0YSBvYmplY3QsCisgKiAgICAgICAgICAgICAgICAgICAgICBhcyBkZWZpbmVkIGJ5IDxjb2Rl
PiB1ZGF0YV9vcGVuKCBwYWNrYWdlTmFtZSwgInJlcyIsIGxvY2FsZSwgZXJyKSA8L2NvZGU+CiAg
KiAgICAgICAgICAgICAgICAgICAgICBvciBlcXVpdmFsZW50LiAgVHlwaWNhbGx5LCBwYWNrYWdl
TmFtZSB3aWxsIHJlZmVyIHRvIGEgKC5kYXQpIGZpbGUsIG9yIHRvCiAgKiAgICAgICAgICAgICAg
ICAgICAgICBhIHBhY2thZ2UgcmVnaXN0ZXJlZCB3aXRoIHVkYXRhX3NldEFwcERhdGEoKS4gVXNp
bmcgYSBmdWxsIGZpbGUgb3IgZGlyZWN0b3J5CiAgKiAgICAgICAgICAgICAgICAgICAgICBwYXRo
bmFtZSBmb3IgcGFja2FnZU5hbWUgaXMgZGVwcmVjYXRlZC4gSWYgTlVMTCwgSUNVIGRhdGEgd2ls
bCBiZSB1c2VkLgogICogQHBhcmFtIGxvY2FsZSAgc3BlY2lmaWVzIHRoZSBsb2NhbGUgZm9yIHdo
aWNoIHdlIHdhbnQgdG8gb3BlbiB0aGUgcmVzb3VyY2UKICAqICAgICAgICAgICAgICAgIGlmIE5V
TEwsIHRoZSBkZWZhdWx0IGxvY2FsZSB3aWxsIGJlIHVzZWQuIElmIHN0cmxlbihsb2NhbGUpID09
IDAKICAqICAgICAgICAgICAgICAgIHJvb3QgbG9jYWxlIHdpbGwgYmUgdXNlZC4KLSAqICAgICAg
ICAgICAgICAgIAorICoKICAqIEBwYXJhbSBzdGF0dXMgZmlsbHMgaW4gdGhlIG91dGdvaW5nIGVy
cm9yIGNvZGUuIEVpdGhlciBVX1pFUk9fRVJST1Igb3IgVV9NSVNTSU5HX1JFU09VUkNFX0VSUk9S
CiAgKiBAcmV0dXJuICAgICAgYSBuZXdseSBhbGxvY2F0ZWQgcmVzb3VyY2UgYnVuZGxlIG9yIE5V
TEwgaWYgaXQgZG9lc24ndCBleGlzdC4KICAqIEBzZWUgdXJlc19jbG9zZQogICogQHN0YWJsZSBJ
Q1UgMi4wCiAgKi8KLVVfU1RBQkxFIFVSZXNvdXJjZUJ1bmRsZSogVV9FWFBPUlQyIAotdXJlc19v
cGVuRGlyZWN0KGNvbnN0IGNoYXIqIHBhY2thZ2VOYW1lLCAKLSAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBsb2NhbGUsIAorVV9TVEFCTEUgVVJlc291cmNlQnVuZGxlKiBVX0VYUE9SVDIKK3Vy
ZXNfb3BlbkRpcmVjdChjb25zdCBjaGFyKiBwYWNrYWdlTmFtZSwKKyAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBsb2NhbGUsCiAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsK
IAogLyoqCkBAIC0xOTAsOCArMTk2LDggQEAgdXJlc19vcGVuRGlyZWN0KGNvbnN0IGNoYXIqIHBh
Y2thZ2VOYW1lLAogICogVGhpcyBwYXRoIHdpbGwgYmUgY29udmVydGVkIHRvIGNoYXIgKiB1c2lu
ZyB0aGUgZGVmYXVsdCBjb252ZXJ0ZXIsCiAgKiB0aGVuIHVyZXNfb3BlbigpIGlzIGNhbGxlZC4K
ICAqCi0gKiBAcGFyYW0gcGFja2FnZU5hbWUgICBUaGUgcGFja2FnZU5hbWUgYW5kIGxvY2FsZSB0
b2dldGhlciBwb2ludCB0byBhbiBJQ1UgdWRhdGEgb2JqZWN0LCAKLSAqICAgICAgICAgICAgICAg
ICAgICAgIGFzIGRlZmluZWQgYnkgPGNvZGU+IHVkYXRhX29wZW4oIHBhY2thZ2VOYW1lLCAicmVz
IiwgbG9jYWxlLCBlcnIpIDwvY29kZT4gCisgKiBAcGFyYW0gcGFja2FnZU5hbWUgICBUaGUgcGFj
a2FnZU5hbWUgYW5kIGxvY2FsZSB0b2dldGhlciBwb2ludCB0byBhbiBJQ1UgdWRhdGEgb2JqZWN0
LAorICogICAgICAgICAgICAgICAgICAgICAgYXMgZGVmaW5lZCBieSA8Y29kZT4gdWRhdGFfb3Bl
biggcGFja2FnZU5hbWUsICJyZXMiLCBsb2NhbGUsIGVycikgPC9jb2RlPgogICogICAgICAgICAg
ICAgICAgICAgICAgb3IgZXF1aXZhbGVudC4gIFR5cGljYWxseSwgcGFja2FnZU5hbWUgd2lsbCBy
ZWZlciB0byBhICguZGF0KSBmaWxlLCBvciB0bwogICogICAgICAgICAgICAgICAgICAgICAgYSBw
YWNrYWdlIHJlZ2lzdGVyZWQgd2l0aCB1ZGF0YV9zZXRBcHBEYXRhKCkuIFVzaW5nIGEgZnVsbCBm
aWxlIG9yIGRpcmVjdG9yeQogICogICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUgZm9yIHBh
Y2thZ2VOYW1lIGlzIGRlcHJlY2F0ZWQuIElmIE5VTEwsIElDVSBkYXRhIHdpbGwgYmUgdXNlZC4K
QEAgLTIwMywyMSArMjA5LDIxIEBAIHVyZXNfb3BlbkRpcmVjdChjb25zdCBjaGFyKiBwYWNrYWdl
TmFtZSwKICAqIEBzZWUgdXJlc19vcGVuCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFC
TEUgVVJlc291cmNlQnVuZGxlKiBVX0VYUE9SVDIgCi11cmVzX29wZW5VKGNvbnN0IFVDaGFyKiBw
YWNrYWdlTmFtZSwgCi0gICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2FsZSwgCitVX1NUQUJMRSBV
UmVzb3VyY2VCdW5kbGUqIFVfRVhQT1JUMgordXJlc19vcGVuVShjb25zdCBVQ2hhciogcGFja2Fn
ZU5hbWUsCisgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2FsZSwKICAgICAgICAgICAgVUVycm9y
Q29kZSogc3RhdHVzKTsKIAogI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKIC8qKgogICog
UmV0dXJucyB0aGUgbnVtYmVyIG9mIHN0cmluZ3MvYXJyYXlzIGluIHJlc291cmNlIGJ1bmRsZXMu
Ci0gKiBCZXR0ZXIgdG8gdXNlIHVyZXNfZ2V0U2l6ZSwgYXMgdGhpcyBmdW5jdGlvbiB3aWxsIGJl
IGRlcHJlY2F0ZWQuIAorICogQmV0dGVyIHRvIHVzZSB1cmVzX2dldFNpemUsIGFzIHRoaXMgZnVu
Y3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkLgogICoKICAqQHBhcmFtIHJlc291cmNlQnVuZGxlIHJl
c291cmNlIGJ1bmRsZSBjb250YWluaW5nIHRoZSBkZXNpcmVkIHN0cmluZ3MKICAqQHBhcmFtIHJl
c291cmNlS2V5IGtleSB0YWdnaW5nIHRoZSByZXNvdXJjZQogICpAcGFyYW0gZXJyIGZpbGxzIGlu
IHRoZSBvdXRnb2luZyBlcnJvciBjb2RlCiAgKiAgICAgICAgICAgICAgICBjb3VsZCBiZSA8VFQ+
VV9NSVNTSU5HX1JFU09VUkNFX0VSUk9SPC9UVD4gaWYgdGhlIGtleSBpcyBub3QgZm91bmQKLSAq
ICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgbm9uLWZhaWxpbmcgZXJyb3IgCisgKiAgICAgICAg
ICAgICAgICBjb3VsZCBiZSBhIG5vbi1mYWlsaW5nIGVycm9yCiAgKiAgICAgICAgICAgICAgICBl
LmcuOiA8VFQ+VV9VU0lOR19GQUxMQkFDS19XQVJOSU5HPC9UVD4sPFRUPlVfVVNJTkdfRkFMTEJB
Q0tfV0FSTklORyA8L1RUPgogICpAcmV0dXJuOiBmb3IgICAgPFNUUk9ORz5BcnJheXM8L1NUUk9O
Rz46IHJldHVybnMgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgaW4gdGhlIGFycmF5CiAgKiAgICAg
ICAgICAgICAgICA8U1RST05HPlRhYmxlczwvU1RST05HPjogcmV0dXJucyB0aGUgbnVtYmVyIG9m
IHJlc291cmNlcyBpbiB0aGUgdGFibGUKQEAgLTIyNSw3ICsyMzEsNyBAQCB1cmVzX29wZW5VKGNv
bnN0IFVDaGFyKiBwYWNrYWdlTmFtZSwKICAqQHNlZSB1cmVzX2dldFNpemUKICAqIEBkZXByZWNh
dGVkIElDVSAyLjggVXNlciB1cmVzX2dldFNpemUgaW5zdGVhZAogICovCi1VX0RFUFJFQ0FURUQg
aW50MzJfdCBVX0VYUE9SVDIgCitVX0RFUFJFQ0FURUQgaW50MzJfdCBVX0VYUE9SVDIKIHVyZXNf
Y291bnRBcnJheUl0ZW1zKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsCiAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZXNvdXJjZUtleSwKICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUqIGVycik7CkBAIC0yMzksNyArMjQ1LDcgQEAgdXJlc19jb3Vu
dEFycmF5SXRlbXMoY29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwKICAqIEBz
ZWUgdXJlc19vcGVuCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgdm9pZCBVX0VY
UE9SVDIgCitVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgogdXJlc19jbG9zZShVUmVzb3VyY2VCdW5k
bGUqIHJlc291cmNlQnVuZGxlKTsKIAogI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCkBAIC0yNzIs
MTIgKzI3OCwxMiBAQCBVX05BTUVTUEFDRV9FTkQKICAqIEBzZWUgdXJlc19nZXRWZXJzaW9uCiAg
KiBAZGVwcmVjYXRlZCBJQ1UgMi44IFVzZSB1cmVzX2dldFZlcnNpb24gaW5zdGVhZC4KICAqLwot
VV9ERVBSRUNBVEVEIGNvbnN0IGNoYXIqIFVfRVhQT1JUMiAKK1VfREVQUkVDQVRFRCBjb25zdCBj
aGFyKiBVX0VYUE9SVDIKIHVyZXNfZ2V0VmVyc2lvbk51bWJlcihjb25zdCBVUmVzb3VyY2VCdW5k
bGUqICAgcmVzb3VyY2VCdW5kbGUpOwogI2VuZGlmICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkg
Ki8KIAogLyoqCi0gKiBSZXR1cm4gdGhlIHZlcnNpb24gbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0
aGlzIFJlc291cmNlQnVuZGxlIGFzIGFuIAorICogUmV0dXJuIHRoZSB2ZXJzaW9uIG51bWJlciBh
c3NvY2lhdGVkIHdpdGggdGhpcyBSZXNvdXJjZUJ1bmRsZSBhcyBhbgogICogVVZlcnNpb25JbmZv
IGFycmF5LgogICoKICAqIEBwYXJhbSByZXNCIFRoZSByZXNvdXJjZSBidW5kbGUgZm9yIHdoaWNo
IHRoZSB2ZXJzaW9uIGlzIGNoZWNrZWQuCkBAIC0yODUsMTUgKzI5MSwxNSBAQCB1cmVzX2dldFZl
cnNpb25OdW1iZXIoY29uc3QgVVJlc291cmNlQnVuZGxlKiAgIHJlc291cmNlQnVuZGxlKTsKICAq
ICAgICAgICAgICAgICAgICAgICBhcyBzcGVjaWZpZWQgaW4gdGhlIHJlc291cmNlIGJ1bmRsZSBv
ciBpdHMgcGFyZW50LgogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLVVfU1RBQkxFIHZvaWQgVV9F
WFBPUlQyIAotdXJlc19nZXRWZXJzaW9uKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVzQiwgCitV
X1NUQUJMRSB2b2lkIFVfRVhQT1JUMgordXJlc19nZXRWZXJzaW9uKGNvbnN0IFVSZXNvdXJjZUJ1
bmRsZSogcmVzQiwKICAgICAgICAgICAgICAgICBVVmVyc2lvbkluZm8gdmVyc2lvbkluZm8pOwog
CiAjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogLyoqCiAgKiBSZXR1cm4gdGhlIG5hbWUg
b2YgdGhlIExvY2FsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBSZXNvdXJjZUJ1bmRsZS4gVGhpcyBB
UEkgYWxsb3dzCi0gKiB5b3UgdG8gcXVlcnkgZm9yIHRoZSByZWFsIGxvY2FsZSBvZiB0aGUgcmVz
b3VyY2UuIEZvciBleGFtcGxlLCBpZiB5b3UgcmVxdWVzdGVkIAotICogImVuX1VTX0NBTElGT1JO
SUEiIGFuZCBvbmx5ICJlbl9VUyIgYnVuZGxlIGV4aXN0cywgImVuX1VTIiB3aWxsIGJlIHJldHVy
bmVkLiAKKyAqIHlvdSB0byBxdWVyeSBmb3IgdGhlIHJlYWwgbG9jYWxlIG9mIHRoZSByZXNvdXJj
ZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSByZXF1ZXN0ZWQKKyAqICJlbl9VU19DQUxJRk9STklBIiBh
bmQgb25seSAiZW5fVVMiIGJ1bmRsZSBleGlzdHMsICJlbl9VUyIgd2lsbCBiZSByZXR1cm5lZC4K
ICAqIEZvciBzdWJyZXNvdXJjZXMsIHRoZSBsb2NhbGUgd2hlcmUgdGhpcyByZXNvdXJjZSBjb21l
cyBmcm9tIHdpbGwgYmUgcmV0dXJuZWQuCiAgKiBJZiBmYWxsYmFjayBoYXMgb2NjdXJlZCwgZ2V0
TG9jYWxlIHdpbGwgcmVmbGVjdCB0aGlzLgogICoKQEAgLTMwMiwxMyArMzA4LDEzIEBAIHVyZXNf
Z2V0VmVyc2lvbihjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJlc0IsCiAgKiBAcmV0dXJuICBBIExv
Y2FsZSBuYW1lCiAgKiBAZGVwcmVjYXRlZCBJQ1UgMi44IFVzZSB1cmVzX2dldExvY2FsZUJ5VHlw
ZSBpbnN0ZWFkLgogICovCi1VX0RFUFJFQ0FURUQgY29uc3QgY2hhciogVV9FWFBPUlQyIAotdXJl
c19nZXRMb2NhbGUoY29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwgCitVX0RF
UFJFQ0FURUQgY29uc3QgY2hhciogVV9FWFBPUlQyCit1cmVzX2dldExvY2FsZShjb25zdCBVUmVz
b3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLAogICAgICAgICAgICAgICAgVUVycm9yQ29kZSog
c3RhdHVzKTsKICNlbmRpZiAgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCiAKIC8qKgotICog
UmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBMb2NhbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUmVzb3Vy
Y2VCdW5kbGUuIAorICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBMb2NhbGUgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgUmVzb3VyY2VCdW5kbGUuCiAgKiBZb3UgY2FuIGNob29zZSBiZXR3ZWVuIHJlcXVl
c3RlZCwgdmFsaWQgYW5kIHJlYWwgbG9jYWxlLgogICoKICAqIEBwYXJhbSByZXNvdXJjZUJ1bmRs
ZSByZXNvdXJjZSBidW5kbGUgaW4gcXVlc3Rpb24KQEAgLTMxOSw5ICszMjUsOSBAQCB1cmVzX2dl
dExvY2FsZShjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLAogICogQHJldHVy
biAgQSBMb2NhbGUgbmFtZQogICogQHN0YWJsZSBJQ1UgMi44CiAgKi8KLVVfU1RBQkxFIGNvbnN0
IGNoYXIqIFVfRVhQT1JUMiAKLXVyZXNfZ2V0TG9jYWxlQnlUeXBlKGNvbnN0IFVSZXNvdXJjZUJ1
bmRsZSogcmVzb3VyY2VCdW5kbGUsIAotICAgICAgICAgICAgICAgICAgICAgVUxvY0RhdGFMb2Nh
bGVUeXBlIHR5cGUsIAorVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCit1cmVzX2dldExv
Y2FsZUJ5VHlwZShjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLAorICAgICAg
ICAgICAgICAgICAgICAgVUxvY0RhdGFMb2NhbGVUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOwogCiAKQEAgLTMzMiw4ICszMzgsOCBAQCB1cmVzX2dl
dExvY2FsZUJ5VHlwZShjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLAogICog
VE9ETyBuZWVkIHRvIHJldmlzaXQgdXNlZnVsbmVzcyBvZiB0aGlzIGZ1bmN0aW9uCiAgKiAgICAg
IGFuZCB1c2FnZSBtb2RlbCBmb3IgZmlsbEluIHBhcmFtZXRlcnMgd2l0aG91dCBrbm93aW5nIHNp
emVvZihVUmVzb3VyY2VCdW5kbGUpCiAgKiBAcGFyYW0gciBUaGUgcmVzb3VyY2VidW5kbGUgdG8g
b3BlbgotICogQHBhcmFtIHBhY2thZ2VOYW1lICAgVGhlIHBhY2thZ2VOYW1lIGFuZCBsb2NhbGUg
dG9nZXRoZXIgcG9pbnQgdG8gYW4gSUNVIHVkYXRhIG9iamVjdCwgCi0gKiAgICAgICAgICAgICAg
ICAgICAgICBhcyBkZWZpbmVkIGJ5IDxjb2RlPiB1ZGF0YV9vcGVuKCBwYWNrYWdlTmFtZSwgInJl
cyIsIGxvY2FsZSwgZXJyKSA8L2NvZGU+IAorICogQHBhcmFtIHBhY2thZ2VOYW1lICAgVGhlIHBh
Y2thZ2VOYW1lIGFuZCBsb2NhbGUgdG9nZXRoZXIgcG9pbnQgdG8gYW4gSUNVIHVkYXRhIG9iamVj
dCwKKyAqICAgICAgICAgICAgICAgICAgICAgIGFzIGRlZmluZWQgYnkgPGNvZGU+IHVkYXRhX29w
ZW4oIHBhY2thZ2VOYW1lLCAicmVzIiwgbG9jYWxlLCBlcnIpIDwvY29kZT4KICAqICAgICAgICAg
ICAgICAgICAgICAgIG9yIGVxdWl2YWxlbnQuICBUeXBpY2FsbHksIHBhY2thZ2VOYW1lIHdpbGwg
cmVmZXIgdG8gYSAoLmRhdCkgZmlsZSwgb3IgdG8KICAqICAgICAgICAgICAgICAgICAgICAgIGEg
cGFja2FnZSByZWdpc3RlcmVkIHdpdGggdWRhdGFfc2V0QXBwRGF0YSgpLiBVc2luZyBhIGZ1bGwg
ZmlsZSBvciBkaXJlY3RvcnkKICAqICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lIGZvciBw
YWNrYWdlTmFtZSBpcyBkZXByZWNhdGVkLiBJZiBOVUxMLCBJQ1UgZGF0YSB3aWxsIGJlIHVzZWQu
CkBAIC0zNDIsMTAgKzM0OCwxMCBAQCB1cmVzX2dldExvY2FsZUJ5VHlwZShjb25zdCBVUmVzb3Vy
Y2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLAogICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBy
ZXNvdXJjZSBidW5kbGUgb3IgTlVMTCBpZiBpdCBkb2Vzbid0IGV4aXN0LgogICogQGludGVybmFs
CiAgKi8KLVVfSU5URVJOQUwgdm9pZCBVX0VYUE9SVDIgCi11cmVzX29wZW5GaWxsSW4oVVJlc291
cmNlQnVuZGxlICpyLCAKK1VfSU5URVJOQUwgdm9pZCBVX0VYUE9SVDIKK3VyZXNfb3BlbkZpbGxJ
bihVUmVzb3VyY2VCdW5kbGUgKnIsCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcGFja2Fn
ZU5hbWUsCi0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYWxlSUQsIAorICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGxvY2FsZUlELAogICAgICAgICAgICAgICAgIFVFcnJvckNvZGUq
IHN0YXR1cyk7CiAjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KIApAQCAtMzU3LDcg
KzM2Myw3IEBAIHVyZXNfb3BlbkZpbGxJbihVUmVzb3VyY2VCdW5kbGUgKnIsCiAgKiBAcGFyYW0g
c3RhdHVzIGZpbGxzIGluIHRoZSBvdXRnb2luZyBlcnJvciBjb2RlCiAgKiAgICAgICAgICAgICAg
ICBjb3VsZCBiZSA8VFQ+VV9NSVNTSU5HX1JFU09VUkNFX0VSUk9SPC9UVD4gaWYgdGhlIGtleSBp
cyBub3QgZm91bmQKICAqICAgICAgICAgICAgICAgIEFsd2F5cyBjaGVjayB0aGUgdmFsdWUgb2Yg
c3RhdHVzLiBEb24ndCBjb3VudCBvbiByZXR1cm5pbmcgTlVMTC4KLSAqICAgICAgICAgICAgICAg
IGNvdWxkIGJlIGEgbm9uLWZhaWxpbmcgZXJyb3IgCisgKiAgICAgICAgICAgICAgICBjb3VsZCBi
ZSBhIG5vbi1mYWlsaW5nIGVycm9yCiAgKiAgICAgICAgICAgICAgICBlLmcuOiA8VFQ+VV9VU0lO
R19GQUxMQkFDS19XQVJOSU5HPC9UVD4sPFRUPlVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIDwvVFQ+
CiAgKiBAcmV0dXJuIGEgcG9pbnRlciB0byBhIHplcm8tdGVybWluYXRlZCBVQ2hhciBhcnJheSB3
aGljaCBsaXZlcyBpbiBhIG1lbW9yeSBtYXBwZWQvRExMIGZpbGUuCiAgKiBAc2VlIHVyZXNfZ2V0
QmluYXJ5CkBAIC0zNjYsOSArMzcyLDkgQEAgdXJlc19vcGVuRmlsbEluKFVSZXNvdXJjZUJ1bmRs
ZSAqciwKICAqIEBzZWUgdXJlc19nZXRVSW50CiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9T
VEFCTEUgY29uc3QgVUNoYXIqIFVfRVhQT1JUMiAKLXVyZXNfZ2V0U3RyaW5nKGNvbnN0IFVSZXNv
dXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsIAotICAgICAgICAgICAgICAgaW50MzJfdCogbGVu
LCAKK1VfU1RBQkxFIGNvbnN0IFVDaGFyKiBVX0VYUE9SVDIKK3VyZXNfZ2V0U3RyaW5nKGNvbnN0
IFVSZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsCisgICAgICAgICAgICAgICBpbnQzMl90
KiBsZW4sCiAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpOwogCiAvKioKQEAgLTQy
NSwxNCArNDMxLDE0IEBAIHVyZXNfZ2V0VVRGOFN0cmluZyhjb25zdCBVUmVzb3VyY2VCdW5kbGUg
KnJlc0IsCiAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKIAogLyoqCi0g
KiBSZXR1cm5zIGEgYmluYXJ5IGRhdGEgZnJvbSBhIGJpbmFyeSByZXNvdXJjZS4gCisgKiBSZXR1
cm5zIGEgYmluYXJ5IGRhdGEgZnJvbSBhIGJpbmFyeSByZXNvdXJjZS4KICAqCiAgKiBAcGFyYW0g
cmVzb3VyY2VCdW5kbGUgYSBzdHJpbmcgcmVzb3VyY2UKICAqIEBwYXJhbSBsZW4gICAgZmlsbHMg
aW4gdGhlIGxlbmd0aCBvZiByZXN1bHRpbmcgYnl0ZSBjaHVuawogICogQHBhcmFtIHN0YXR1cyBm
aWxscyBpbiB0aGUgb3V0Z29pbmcgZXJyb3IgY29kZQogICogICAgICAgICAgICAgICAgY291bGQg
YmUgPFRUPlVfTUlTU0lOR19SRVNPVVJDRV9FUlJPUjwvVFQ+IGlmIHRoZSBrZXkgaXMgbm90IGZv
dW5kCiAgKiAgICAgICAgICAgICAgICBBbHdheXMgY2hlY2sgdGhlIHZhbHVlIG9mIHN0YXR1cy4g
RG9uJ3QgY291bnQgb24gcmV0dXJuaW5nIE5VTEwuCi0gKiAgICAgICAgICAgICAgICBjb3VsZCBi
ZSBhIG5vbi1mYWlsaW5nIGVycm9yIAorICogICAgICAgICAgICAgICAgY291bGQgYmUgYSBub24t
ZmFpbGluZyBlcnJvcgogICogICAgICAgICAgICAgICAgZS5nLjogPFRUPlVfVVNJTkdfRkFMTEJB
Q0tfV0FSTklORzwvVFQ+LDxUVD5VX1VTSU5HX0RFRkFVTFRfV0FSTklORyA8L1RUPgogICogQHJl
dHVybiBhIHBvaW50ZXIgdG8gYSBjaHVuayBvZiB1bnNpZ25lZCBieXRlcyB3aGljaCBsaXZlIGlu
IGEgbWVtb3J5IG1hcHBlZC9ETEwgZmlsZS4KICAqIEBzZWUgdXJlc19nZXRTdHJpbmcKQEAgLTQ0
MSwyMCArNDQ3LDIwIEBAIHVyZXNfZ2V0VVRGOFN0cmluZyhjb25zdCBVUmVzb3VyY2VCdW5kbGUg
KnJlc0IsCiAgKiBAc2VlIHVyZXNfZ2V0VUludAogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLVVf
U1RBQkxFIGNvbnN0IHVpbnQ4X3QqIFVfRVhQT1JUMiAKLXVyZXNfZ2V0QmluYXJ5KGNvbnN0IFVS
ZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsIAotICAgICAgICAgICAgICAgaW50MzJfdCog
bGVuLCAKK1VfU1RBQkxFIGNvbnN0IHVpbnQ4X3QqIFVfRVhQT1JUMgordXJlc19nZXRCaW5hcnko
Y29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwKKyAgICAgICAgICAgICAgIGlu
dDMyX3QqIGxlbiwKICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7CiAKIC8qKgot
ICogUmV0dXJucyBhIDMyIGJpdCBpbnRlZ2VyIGFycmF5IGZyb20gYSByZXNvdXJjZS4gCisgKiBS
ZXR1cm5zIGEgMzIgYml0IGludGVnZXIgYXJyYXkgZnJvbSBhIHJlc291cmNlLgogICoKICAqIEBw
YXJhbSByZXNvdXJjZUJ1bmRsZSBhbiBpbnQgdmVjdG9yIHJlc291cmNlCiAgKiBAcGFyYW0gbGVu
ICAgIGZpbGxzIGluIHRoZSBsZW5ndGggb2YgcmVzdWx0aW5nIGJ5dGUgY2h1bmsKICAqIEBwYXJh
bSBzdGF0dXMgZmlsbHMgaW4gdGhlIG91dGdvaW5nIGVycm9yIGNvZGUKICAqICAgICAgICAgICAg
ICAgIGNvdWxkIGJlIDxUVD5VX01JU1NJTkdfUkVTT1VSQ0VfRVJST1I8L1RUPiBpZiB0aGUga2V5
IGlzIG5vdCBmb3VuZAogICogICAgICAgICAgICAgICAgQWx3YXlzIGNoZWNrIHRoZSB2YWx1ZSBv
ZiBzdGF0dXMuIERvbid0IGNvdW50IG9uIHJldHVybmluZyBOVUxMLgotICogICAgICAgICAgICAg
ICAgY291bGQgYmUgYSBub24tZmFpbGluZyBlcnJvciAKKyAqICAgICAgICAgICAgICAgIGNvdWxk
IGJlIGEgbm9uLWZhaWxpbmcgZXJyb3IKICAqICAgICAgICAgICAgICAgIGUuZy46IDxUVD5VX1VT
SU5HX0ZBTExCQUNLX1dBUk5JTkc8L1RUPiw8VFQ+VV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgPC9U
VD4KICAqIEByZXR1cm4gYSBwb2ludGVyIHRvIGEgY2h1bmsgb2YgaW50ZWdlcnMgd2hpY2ggbGl2
ZSBpbiBhIG1lbW9yeSBtYXBwZWQvRExMIGZpbGUuCiAgKiBAc2VlIHVyZXNfZ2V0QmluYXJ5CkBA
IC00NjMsMTkgKzQ2OSwxOSBAQCB1cmVzX2dldEJpbmFyeShjb25zdCBVUmVzb3VyY2VCdW5kbGUq
IHJlc291cmNlQnVuZGxlLAogICogQHNlZSB1cmVzX2dldFVJbnQKICAqIEBzdGFibGUgSUNVIDIu
MAogICovCi1VX1NUQUJMRSBjb25zdCBpbnQzMl90KiBVX0VYUE9SVDIgCi11cmVzX2dldEludFZl
Y3Rvcihjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLCAKLSAgICAgICAgICAg
ICAgICAgIGludDMyX3QqIGxlbiwgCitVX1NUQUJMRSBjb25zdCBpbnQzMl90KiBVX0VYUE9SVDIK
K3VyZXNfZ2V0SW50VmVjdG9yKGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUs
CisgICAgICAgICAgICAgICAgICBpbnQzMl90KiBsZW4sCiAgICAgICAgICAgICAgICAgICBVRXJy
b3JDb2RlKiBzdGF0dXMpOwogCiAvKioKLSAqIFJldHVybnMgYW4gdW5zaWduZWQgaW50ZWdlciBm
cm9tIGEgcmVzb3VyY2UuIAorICogUmV0dXJucyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYSBy
ZXNvdXJjZS4KICAqIFRoaXMgaW50ZWdlciBpcyBvcmlnaW5hbGx5IDI4IGJpdHMuCiAgKgogICog
QHBhcmFtIHJlc291cmNlQnVuZGxlIGEgc3RyaW5nIHJlc291cmNlCiAgKiBAcGFyYW0gc3RhdHVz
IGZpbGxzIGluIHRoZSBvdXRnb2luZyBlcnJvciBjb2RlCiAgKiAgICAgICAgICAgICAgICBjb3Vs
ZCBiZSA8VFQ+VV9NSVNTSU5HX1JFU09VUkNFX0VSUk9SPC9UVD4gaWYgdGhlIGtleSBpcyBub3Qg
Zm91bmQKLSAqICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgbm9uLWZhaWxpbmcgZXJyb3IgCisg
KiAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIG5vbi1mYWlsaW5nIGVycm9yCiAgKiAgICAgICAg
ICAgICAgICBlLmcuOiA8VFQ+VV9VU0lOR19GQUxMQkFDS19XQVJOSU5HPC9UVD4sPFRUPlVfVVNJ
TkdfREVGQVVMVF9XQVJOSU5HIDwvVFQ+CiAgKiBAcmV0dXJuIGFuIGludGVnZXIgdmFsdWUKICAq
IEBzZWUgdXJlc19nZXRJbnQKQEAgLTQ4NCwxOCArNDkwLDE4IEBAIHVyZXNfZ2V0SW50VmVjdG9y
KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUsCiAgKiBAc2VlIHVyZXNfZ2V0
U3RyaW5nCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgdWludDMyX3QgVV9FWFBP
UlQyIAotdXJlc19nZXRVSW50KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSogcmVzb3VyY2VCdW5kbGUs
IAorVV9TVEFCTEUgdWludDMyX3QgVV9FWFBPUlQyCit1cmVzX2dldFVJbnQoY29uc3QgVVJlc291
cmNlQnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwKICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0
dXMpOwogCiAvKioKLSAqIFJldHVybnMgYSBzaWduZWQgaW50ZWdlciBmcm9tIGEgcmVzb3VyY2Uu
IAorICogUmV0dXJucyBhIHNpZ25lZCBpbnRlZ2VyIGZyb20gYSByZXNvdXJjZS4KICAqIFRoaXMg
aW50ZWdlciBpcyBvcmlnaW5hbGx5IDI4IGJpdCBhbmQgdGhlIHNpZ24gZ2V0cyBwcm9wYWdhdGVk
LgogICoKICAqIEBwYXJhbSByZXNvdXJjZUJ1bmRsZSBhIHN0cmluZyByZXNvdXJjZQogICogQHBh
cmFtIHN0YXR1cyAgZmlsbHMgaW4gdGhlIG91dGdvaW5nIGVycm9yIGNvZGUKICAqICAgICAgICAg
ICAgICAgIGNvdWxkIGJlIDxUVD5VX01JU1NJTkdfUkVTT1VSQ0VfRVJST1I8L1RUPiBpZiB0aGUg
a2V5IGlzIG5vdCBmb3VuZAotICogICAgICAgICAgICAgICAgY291bGQgYmUgYSBub24tZmFpbGlu
ZyBlcnJvciAKKyAqICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgbm9uLWZhaWxpbmcgZXJyb3IK
ICAqICAgICAgICAgICAgICAgIGUuZy46IDxUVD5VX1VTSU5HX0ZBTExCQUNLX1dBUk5JTkc8L1RU
Piw8VFQ+VV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgPC9UVD4KICAqIEByZXR1cm4gYW4gaW50ZWdl
ciB2YWx1ZQogICogQHNlZSB1cmVzX2dldFVJbnQKQEAgLTUwNCwyMSArNTEwLDIxIEBAIHVyZXNf
Z2V0VUludChjb25zdCBVUmVzb3VyY2VCdW5kbGUqIHJlc291cmNlQnVuZGxlLAogICogQHNlZSB1
cmVzX2dldFN0cmluZwogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLVVfU1RBQkxFIGludDMyX3Qg
VV9FWFBPUlQyIAotdXJlc19nZXRJbnQoY29uc3QgVVJlc291cmNlQnVuZGxlKiByZXNvdXJjZUJ1
bmRsZSwgCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordXJlc19nZXRJbnQoY29uc3QgVVJl
c291cmNlQnVuZGxlKiByZXNvdXJjZUJ1bmRsZSwKICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0
YXR1cyk7CiAKIC8qKgotICogUmV0dXJucyB0aGUgc2l6ZSBvZiBhIHJlc291cmNlLiBTaXplIGZv
ciBzY2FsYXIgdHlwZXMgaXMgYWx3YXlzIDEsIAorICogUmV0dXJucyB0aGUgc2l6ZSBvZiBhIHJl
c291cmNlLiBTaXplIGZvciBzY2FsYXIgdHlwZXMgaXMgYWx3YXlzIDEsCiAgKiBhbmQgZm9yIHZl
Y3Rvci90YWJsZSB0eXBlcyBpcyB0aGUgbnVtYmVyIG9mIGNoaWxkIHJlc291cmNlcy4KLSAqIEB3
YXJuaW5nIEludGVnZXIgYXJyYXkgaXMgdHJlYXRlZCBhcyBhIHNjYWxhciB0eXBlLiBUaGVyZSBh
cmUgbm8gCisgKiBAd2FybmluZyBJbnRlZ2VyIGFycmF5IGlzIHRyZWF0ZWQgYXMgYSBzY2FsYXIg
dHlwZS4gVGhlcmUgYXJlIG5vCiAgKiAgICAgICAgICBBUElzIHRvIGFjY2VzcyBpbmRpdmlkdWFs
IG1lbWJlcnMgb2YgYW4gaW50ZWdlciBhcnJheS4gSXQKICAqICAgICAgICAgIGlzIGFsd2F5cyBy
ZXR1cm5lZCBhcyBhIHdob2xlLgogICogQHBhcmFtIHJlc291cmNlQnVuZGxlIGEgcmVzb3VyY2UK
ICAqIEByZXR1cm4gbnVtYmVyIG9mIHJlc291cmNlcyBpbiBhIGdpdmVuIHJlc291cmNlLgogICog
QHN0YWJsZSBJQ1UgMi4wCiAgKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAorVV9TVEFC
TEUgaW50MzJfdCBVX0VYUE9SVDIKIHVyZXNfZ2V0U2l6ZShjb25zdCBVUmVzb3VyY2VCdW5kbGUg
KnJlc291cmNlQnVuZGxlKTsKIAogLyoqCkBAIC01MjksMjEgKzUzNSwyMSBAQCB1cmVzX2dldFNp
emUoY29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNvdXJjZUJ1bmRsZSk7CiAgKiBAc2VlIFVSZXNU
eXBlCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgVVJlc1R5cGUgVV9FWFBPUlQy
IAorVV9TVEFCTEUgVVJlc1R5cGUgVV9FWFBPUlQyCiB1cmVzX2dldFR5cGUoY29uc3QgVVJlc291
cmNlQnVuZGxlICpyZXNvdXJjZUJ1bmRsZSk7CiAKIC8qKgotICogUmV0dXJucyB0aGUga2V5IGFz
c29jaWF0ZWQgd2l0aCBhIGdpdmVuIHJlc291cmNlLiBOb3QgYWxsIHRoZSByZXNvdXJjZXMgaGF2
ZSBhIGtleSAtIG9ubHkgCisgKiBSZXR1cm5zIHRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2
ZW4gcmVzb3VyY2UuIE5vdCBhbGwgdGhlIHJlc291cmNlcyBoYXZlIGEga2V5IC0gb25seQogICog
dGhvc2UgdGhhdCBhcmUgbWVtYmVycyBvZiBhIHRhYmxlLgogICoKICAqIEBwYXJhbSByZXNvdXJj
ZUJ1bmRsZSBhIHJlc291cmNlCiAgKiBAcmV0dXJuIGEga2V5IGFzc29jaWF0ZWQgdG8gdGhpcyBy
ZXNvdXJjZSwgb3IgTlVMTCBpZiBpdCBkb2Vzbid0IGhhdmUgYSBrZXkKICAqIEBzdGFibGUgSUNV
IDIuMAogICovCi1VX1NUQUJMRSBjb25zdCBjaGFyICogVV9FWFBPUlQyIAorVV9TVEFCTEUgY29u
c3QgY2hhciAqIFVfRVhQT1JUMgogdXJlc19nZXRLZXkoY29uc3QgVVJlc291cmNlQnVuZGxlICpy
ZXNvdXJjZUJ1bmRsZSk7CiAKLS8qIElURVJBVElPTiBBUEkgCisvKiBJVEVSQVRJT04gQVBJCiAg
ICAgVGhpcyBBUEkgcHJvdmlkZXMgbWVhbnMgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIGEgcmVzb3Vy
Y2UKICovCiAKQEAgLTU1Myw3ICs1NTksNyBAQCB1cmVzX2dldEtleShjb25zdCBVUmVzb3VyY2VC
dW5kbGUgKnJlc291cmNlQnVuZGxlKTsKICAqIEBwYXJhbSByZXNvdXJjZUJ1bmRsZSBhIHJlc291
cmNlCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgCitV
X1NUQUJMRSB2b2lkIFVfRVhQT1JUMgogdXJlc19yZXNldEl0ZXJhdG9yKFVSZXNvdXJjZUJ1bmRs
ZSAqcmVzb3VyY2VCdW5kbGUpOwogCiAvKioKQEAgLTU2MywxMiArNTY5LDEyIEBAIHVyZXNfcmVz
ZXRJdGVyYXRvcihVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxlKTsKICAqIEByZXR1cm4g
VFJVRSBpZiB0aGVyZSBhcmUgbW9yZSBlbGVtZW50cywgRkFMU0UgaWYgdGhlcmUgaXMgbm8gbW9y
ZSBlbGVtZW50cwogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQ
T1JUMiAKK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgogdXJlc19oYXNOZXh0KGNvbnN0IFVSZXNv
dXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUpOwogCiAvKioKLSAqIFJldHVybnMgdGhlIG5leHQg
cmVzb3VyY2UgaW4gYSBnaXZlbiByZXNvdXJjZSBvciBOVUxMIGlmIHRoZXJlIGFyZSBubyBtb3Jl
IHJlc291cmNlcyAKLSAqIHRvIGl0ZXJhdGUgb3Zlci4gRmVhdHVyZXMgYSBmaWxsLWluIHBhcmFt
ZXRlci4gCisgKiBSZXR1cm5zIHRoZSBuZXh0IHJlc291cmNlIGluIGEgZ2l2ZW4gcmVzb3VyY2Ug
b3IgTlVMTCBpZiB0aGVyZSBhcmUgbm8gbW9yZSByZXNvdXJjZXMKKyAqIHRvIGl0ZXJhdGUgb3Zl
ci4gRmVhdHVyZXMgYSBmaWxsLWluIHBhcmFtZXRlci4KICAqCiAgKiBAcGFyYW0gcmVzb3VyY2VC
dW5kbGUgICAgYSByZXNvdXJjZQogICogQHBhcmFtIGZpbGxJbiAgICAgICAgICAgIGlmIE5VTEwg
YSBuZXcgVVJlc291cmNlQnVuZGxlIHN0cnVjdCBpcyBhbGxvY2F0ZWQgYW5kIG11c3QgYmUgY2xv
c2VkIGJ5IHRoZSBjYWxsZXIuCkBAIC01NzgsMTQgKzU4NCwxNCBAQCB1cmVzX2hhc05leHQoY29u
c3QgVVJlc291cmNlQnVuZGxlICpyZXNvdXJjZUJ1bmRsZSk7CiAgKiBAcmV0dXJuICAgICAgICAg
ICAgICAgICAgYSBwb2ludGVyIHRvIGEgVVJlc291cmNlQnVuZGxlIHN0cnVjdC4gSWYgZmlsbCBp
biBwYXJhbSB3YXMgTlVMTCwgY2FsbGVyIG11c3QgY2xvc2UgaXQKICAqIEBzdGFibGUgSUNVIDIu
MAogICovCi1VX1NUQUJMRSBVUmVzb3VyY2VCdW5kbGUqIFVfRVhQT1JUMiAKLXVyZXNfZ2V0TmV4
dFJlc291cmNlKFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUsIAotICAgICAgICAgICAg
ICAgICAgICAgVVJlc291cmNlQnVuZGxlICpmaWxsSW4sIAorVV9TVEFCTEUgVVJlc291cmNlQnVu
ZGxlKiBVX0VYUE9SVDIKK3VyZXNfZ2V0TmV4dFJlc291cmNlKFVSZXNvdXJjZUJ1bmRsZSAqcmVz
b3VyY2VCdW5kbGUsCisgICAgICAgICAgICAgICAgICAgICBVUmVzb3VyY2VCdW5kbGUgKmZpbGxJ
biwKICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKIC8qKgotICog
UmV0dXJucyB0aGUgbmV4dCBzdHJpbmcgaW4gYSBnaXZlbiByZXNvdXJjZSBvciBOVUxMIGlmIHRo
ZXJlIGFyZSBubyBtb3JlIHJlc291cmNlcyAKLSAqIHRvIGl0ZXJhdGUgb3Zlci4gCisgKiBSZXR1
cm5zIHRoZSBuZXh0IHN0cmluZyBpbiBhIGdpdmVuIHJlc291cmNlIG9yIE5VTEwgaWYgdGhlcmUg
YXJlIG5vIG1vcmUgcmVzb3VyY2VzCisgKiB0byBpdGVyYXRlIG92ZXIuCiAgKgogICogQHBhcmFt
IHJlc291cmNlQnVuZGxlICAgIGEgcmVzb3VyY2UKICAqIEBwYXJhbSBsZW4gICAgICAgICAgICAg
ICBmaWxsIGluIGxlbmd0aCBvZiB0aGUgc3RyaW5nCkBAIC01OTUsMTQgKzYwMSwxNCBAQCB1cmVz
X2dldE5leHRSZXNvdXJjZShVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxlLAogICogQHJl
dHVybiBhIHBvaW50ZXIgdG8gYSB6ZXJvLXRlcm1pbmF0ZWQgVUNoYXIgYXJyYXkgd2hpY2ggbGl2
ZXMgaW4gYSBtZW1vcnkgbWFwcGVkL0RMTCBmaWxlLgogICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8K
LVVfU1RBQkxFIGNvbnN0IFVDaGFyKiBVX0VYUE9SVDIgCi11cmVzX2dldE5leHRTdHJpbmcoVVJl
c291cmNlQnVuZGxlICpyZXNvdXJjZUJ1bmRsZSwgCi0gICAgICAgICAgICAgICAgICAgaW50MzJf
dCogbGVuLCAKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqIGtleSwgCitVX1NUQUJM
RSBjb25zdCBVQ2hhciogVV9FWFBPUlQyCit1cmVzX2dldE5leHRTdHJpbmcoVVJlc291cmNlQnVu
ZGxlICpyZXNvdXJjZUJ1bmRsZSwKKyAgICAgICAgICAgICAgICAgICBpbnQzMl90KiBsZW4sCisg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKiBrZXksCiAgICAgICAgICAgICAgICAgICAg
VUVycm9yQ29kZSAqc3RhdHVzKTsKIAogLyoqCi0gKiBSZXR1cm5zIHRoZSByZXNvdXJjZSBpbiBh
IGdpdmVuIHJlc291cmNlIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguIEZlYXR1cmVzIGEgZmlsbC1p
biBwYXJhbWV0ZXIuIAorICogUmV0dXJucyB0aGUgcmVzb3VyY2UgaW4gYSBnaXZlbiByZXNvdXJj
ZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LiBGZWF0dXJlcyBhIGZpbGwtaW4gcGFyYW1ldGVyLgog
ICoKICAqIEBwYXJhbSByZXNvdXJjZUJ1bmRsZSAgICB0aGUgcmVzb3VyY2UgYnVuZGxlIGZyb20g
d2hpY2ggdG8gZ2V0IGEgc3ViLXJlc291cmNlCiAgKiBAcGFyYW0gaW5kZXhSICAgICAgICAgICAg
YW4gaW5kZXggdG8gdGhlIHdhbnRlZCByZXNvdXJjZS4KQEAgLTYxMywxMCArNjE5LDEwIEBAIHVy
ZXNfZ2V0TmV4dFN0cmluZyhVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxlLAogICogQHJl
dHVybiAgICAgICAgICAgICAgICAgIGEgcG9pbnRlciB0byBhIFVSZXNvdXJjZUJ1bmRsZSBzdHJ1
Y3QuIElmIGZpbGwgaW4gcGFyYW0gd2FzIE5VTEwsIGNhbGxlciBtdXN0IGNsb3NlIGl0CiAgKiBA
c3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgVVJlc291cmNlQnVuZGxlKiBVX0VYUE9SVDIg
Ci11cmVzX2dldEJ5SW5kZXgoY29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNvdXJjZUJ1bmRsZSwg
Ci0gICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleFIsIAotICAgICAgICAgICAgICAgIFVSZXNv
dXJjZUJ1bmRsZSAqZmlsbEluLCAKK1VfU1RBQkxFIFVSZXNvdXJjZUJ1bmRsZSogVV9FWFBPUlQy
Cit1cmVzX2dldEJ5SW5kZXgoY29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNvdXJjZUJ1bmRsZSwK
KyAgICAgICAgICAgICAgICBpbnQzMl90IGluZGV4UiwKKyAgICAgICAgICAgICAgICBVUmVzb3Vy
Y2VCdW5kbGUgKmZpbGxJbiwKICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwog
CiAvKioKQEAgLTYzMCwxMCArNjM2LDEwIEBAIHVyZXNfZ2V0QnlJbmRleChjb25zdCBVUmVzb3Vy
Y2VCdW5kbGUgKnJlc291cmNlQnVuZGxlLAogICogQHJldHVybiAgICAgICAgICAgICAgICAgIGEg
cG9pbnRlciB0byBhIHplcm8tdGVybWluYXRlZCBVQ2hhciBhcnJheSB3aGljaCBsaXZlcyBpbiBh
IG1lbW9yeSBtYXBwZWQvRExMIGZpbGUuCiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFC
TEUgY29uc3QgVUNoYXIqIFVfRVhQT1JUMiAKLXVyZXNfZ2V0U3RyaW5nQnlJbmRleChjb25zdCBV
UmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxlLCAKLSAgICAgICAgICAgICAgICAgICAgICBp
bnQzMl90IGluZGV4UywgCi0gICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCogbGVuLCAKK1Vf
U1RBQkxFIGNvbnN0IFVDaGFyKiBVX0VYUE9SVDIKK3VyZXNfZ2V0U3RyaW5nQnlJbmRleChjb25z
dCBVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxlLAorICAgICAgICAgICAgICAgICAgICAg
IGludDMyX3QgaW5kZXhTLAorICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QqIGxlbiwKICAg
ICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwogCiAvKioKQEAgLTY5Myw3
ICs2OTksNyBAQCB1cmVzX2dldFVURjhTdHJpbmdCeUluZGV4KGNvbnN0IFVSZXNvdXJjZUJ1bmRs
ZSAqcmVzQiwKIAogLyoqCiAgKiBSZXR1cm5zIGEgcmVzb3VyY2UgaW4gYSBnaXZlbiByZXNvdXJj
ZSB0aGF0IGhhcyBhIGdpdmVuIGtleS4gVGhpcyBwcm9jZWR1cmUgd29ya3Mgb25seSB3aXRoIHRh
YmxlCi0gKiByZXNvdXJjZXMuIEZlYXR1cmVzIGEgZmlsbC1pbiBwYXJhbWV0ZXIuIAorICogcmVz
b3VyY2VzLiBGZWF0dXJlcyBhIGZpbGwtaW4gcGFyYW1ldGVyLgogICoKICAqIEBwYXJhbSByZXNv
dXJjZUJ1bmRsZSAgICBhIHJlc291cmNlCiAgKiBAcGFyYW0ga2V5ICAgICAgICAgICAgICAgYSBr
ZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSB3YW50ZWQgcmVzb3VyY2UKQEAgLTcwMywxNSArNzA5LDE1
IEBAIHVyZXNfZ2V0VVRGOFN0cmluZ0J5SW5kZXgoY29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNC
LAogICogQHJldHVybiAgICAgICAgICAgICAgICAgIGEgcG9pbnRlciB0byBhIFVSZXNvdXJjZUJ1
bmRsZSBzdHJ1Y3QuIElmIGZpbGwgaW4gcGFyYW0gd2FzIE5VTEwsIGNhbGxlciBtdXN0IGNsb3Nl
IGl0CiAgKiBAc3RhYmxlIElDVSAyLjAKICAqLwotVV9TVEFCTEUgVVJlc291cmNlQnVuZGxlKiBV
X0VYUE9SVDIgCi11cmVzX2dldEJ5S2V5KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VC
dW5kbGUsIAotICAgICAgICAgICAgICBjb25zdCBjaGFyKiBrZXksIAotICAgICAgICAgICAgICBV
UmVzb3VyY2VCdW5kbGUgKmZpbGxJbiwgCitVX1NUQUJMRSBVUmVzb3VyY2VCdW5kbGUqIFVfRVhQ
T1JUMgordXJlc19nZXRCeUtleShjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc291cmNlQnVuZGxl
LAorICAgICAgICAgICAgICBjb25zdCBjaGFyKiBrZXksCisgICAgICAgICAgICAgIFVSZXNvdXJj
ZUJ1bmRsZSAqZmlsbEluLAogICAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwogCiAv
KioKICAqIFJldHVybnMgYSBzdHJpbmcgaW4gYSBnaXZlbiByZXNvdXJjZSB0aGF0IGhhcyBhIGdp
dmVuIGtleS4gVGhpcyBwcm9jZWR1cmUgd29ya3Mgb25seSB3aXRoIHRhYmxlCi0gKiByZXNvdXJj
ZXMuIAorICogcmVzb3VyY2VzLgogICoKICAqIEBwYXJhbSByZXNCICAgICAgICAgICAgICBhIHJl
c291cmNlCiAgKiBAcGFyYW0ga2V5ICAgICAgICAgICAgICAgYSBrZXkgYXNzb2NpYXRlZCB3aXRo
IHRoZSB3YW50ZWQgc3RyaW5nCkBAIC03MjEsMTAgKzcyNywxMCBAQCB1cmVzX2dldEJ5S2V5KGNv
bnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzb3VyY2VCdW5kbGUsCiAgKiBAcmV0dXJuICAgICAgICAg
ICAgICAgICAgYSBwb2ludGVyIHRvIGEgemVyby10ZXJtaW5hdGVkIFVDaGFyIGFycmF5IHdoaWNo
IGxpdmVzIGluIGEgbWVtb3J5IG1hcHBlZC9ETEwgZmlsZS4KICAqIEBzdGFibGUgSUNVIDIuMAog
ICovCi1VX1NUQUJMRSBjb25zdCBVQ2hhciogVV9FWFBPUlQyIAotdXJlc19nZXRTdHJpbmdCeUtl
eShjb25zdCBVUmVzb3VyY2VCdW5kbGUgKnJlc0IsIAotICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBrZXksIAotICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiBsZW4sIAorVV9TVEFC
TEUgY29uc3QgVUNoYXIqIFVfRVhQT1JUMgordXJlc19nZXRTdHJpbmdCeUtleShjb25zdCBVUmVz
b3VyY2VCdW5kbGUgKnJlc0IsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGtleSwK
KyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCogbGVuLAogICAgICAgICAgICAgICAgICAgICBV
RXJyb3JDb2RlICpzdGF0dXMpOwogCiAvKioKQEAgLTc4OSw4MiArNzk1LDk3IEBAIHVyZXNfZ2V0
VVRGOFN0cmluZ0J5S2V5KGNvbnN0IFVSZXNvdXJjZUJ1bmRsZSAqcmVzQiwKIAogVV9OQU1FU1BB
Q0VfQkVHSU4KIC8qKgotICogcmV0dXJucyBhIHN0cmluZyBmcm9tIGEgc3RyaW5nIHJlc291cmNl
IHR5cGUKKyAqIFJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBmcm9tIGEgc3RyaW5nIHJlc291cmNl
IGJ1bmRsZS4KICAqCi0gKiBAcGFyYW0gcmVzQiAgICBhIHJlc291cmNlCisgKiBAcGFyYW0gcmVz
QiAgICBhIHJlc291cmNlLCBzaG91bGQgaGF2ZSB0eXBlIFVSRVNfU1RSSU5HCiAgKiBAcGFyYW0g
c3RhdHVzOiBmaWxscyBpbiB0aGUgb3V0Z29pbmcgZXJyb3IgY29kZQogICogICAgICAgICAgICAg
ICAgY291bGQgYmUgPFRUPlVfTUlTU0lOR19SRVNPVVJDRV9FUlJPUjwvVFQ+IGlmIHRoZSBrZXkg
aXMgbm90IGZvdW5kCi0gKiAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIG5vbi1mYWlsaW5nIGVy
cm9yIAorICogICAgICAgICAgICAgICAgY291bGQgYmUgYSBub24tZmFpbGluZyBlcnJvcgogICog
ICAgICAgICAgICAgICAgZS5nLjogPFRUPlVfVVNJTkdfRkFMTEJBQ0tfV0FSTklORzwvVFQ+LDxU
VD5VX1VTSU5HX0RFRkFVTFRfV0FSTklORyA8L1RUPgotICogQHJldHVybiAgICAgICAgYSBVbmlj
b2RlU3RyaW5nIG9iamVjdC4gSWYgdGhlcmUgaXMgYW4gZXJyb3IsIHN0cmluZyBpcyBib2d1cwor
ICogQHJldHVybiBUaGUgc3RyaW5nIHZhbHVlLCBvciBhIGJvZ3VzIHN0cmluZyBpZiB0aGVyZSBp
cyBhIGZhaWx1cmUgVUVycm9yQ29kZS4KICAqIEBzdGFibGUgSUNVIDIuMAogICovCi1pbmxpbmUg
VW5pY29kZVN0cmluZyAKLXVyZXNfZ2V0VW5pY29kZVN0cmluZyhjb25zdCBVUmVzb3VyY2VCdW5k
bGUgKnJlc0IsIAotICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cykgCi17
CitpbmxpbmUgVW5pY29kZVN0cmluZwordXJlc19nZXRVbmljb2RlU3RyaW5nKGNvbnN0IFVSZXNv
dXJjZUJ1bmRsZSAqcmVzQiwgVUVycm9yQ29kZSogc3RhdHVzKSB7CisgICAgVW5pY29kZVN0cmlu
ZyByZXN1bHQ7CiAgICAgaW50MzJfdCBsZW4gPSAwOwogICAgIGNvbnN0IFVDaGFyICpyID0gdXJl
c19nZXRTdHJpbmcocmVzQiwgJmxlbiwgc3RhdHVzKTsKLSAgICByZXR1cm4gVW5pY29kZVN0cmlu
ZyhUUlVFLCByLCBsZW4pOworICAgIGlmKFVfU1VDQ0VTUygqc3RhdHVzKSkgeworICAgICAgICBy
ZXN1bHQuc2V0VG8oVFJVRSwgciwgbGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQu
c2V0VG9Cb2d1cygpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKioKLSAqIFJl
dHVybnMgdGhlIG5leHQgc3RyaW5nIGluIGEgcmVzb3VyY2Ugb3IgTlVMTCBpZiB0aGVyZSBhcmUg
bm8gbW9yZSByZXNvdXJjZXMgCi0gKiB0byBpdGVyYXRlIG92ZXIuIAorICogUmV0dXJucyB0aGUg
bmV4dCBzdHJpbmcgaW4gYSByZXNvdXJjZSwgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZXJlIGFy
ZSBubyBtb3JlIHJlc291cmNlcworICogdG8gaXRlcmF0ZSBvdmVyLgorICogVXNlIHVyZXNfZ2V0
TmV4dFN0cmluZygpIGluc3RlYWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgorICogdGhlIGVuZCBv
ZiB0aGUgaXRlcmF0aW9uIGFuZCBhIHJlYWwgZW1wdHkgc3RyaW5nIHZhbHVlLgogICoKICAqIEBw
YXJhbSByZXNCICAgICAgICAgICAgICBhIHJlc291cmNlCiAgKiBAcGFyYW0ga2V5ICAgICAgICAg
ICAgICAgZmlsbCBpbiBmb3Iga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN0cmluZwogICogQHBh
cmFtIHN0YXR1cyAgICAgICAgICAgIGZpbGxzIGluIHRoZSBvdXRnb2luZyBlcnJvciBjb2RlCi0g
KiBAcmV0dXJuIGFuIFVuaWNvZGVTdHJpbmcgb2JqZWN0LgorICogQHJldHVybiBUaGUgc3RyaW5n
IHZhbHVlLCBvciBhIGJvZ3VzIHN0cmluZyBpZiB0aGVyZSBpcyBhIGZhaWx1cmUgVUVycm9yQ29k
ZS4KICAqIEBzdGFibGUgSUNVIDIuMAogICovCi1pbmxpbmUgVW5pY29kZVN0cmluZyAKLXVyZXNf
Z2V0TmV4dFVuaWNvZGVTdHJpbmcoVVJlc291cmNlQnVuZGxlICpyZXNCLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKiBrZXksIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlKiBzdGF0dXMpIAoteworaW5saW5lIFVuaWNvZGVTdHJpbmcKK3VyZXNf
Z2V0TmV4dFVuaWNvZGVTdHJpbmcoVVJlc291cmNlQnVuZGxlICpyZXNCLCBjb25zdCBjaGFyICoq
IGtleSwgVUVycm9yQ29kZSogc3RhdHVzKSB7CisgICAgVW5pY29kZVN0cmluZyByZXN1bHQ7CiAg
ICAgaW50MzJfdCBsZW4gPSAwOwogICAgIGNvbnN0IFVDaGFyKiByID0gdXJlc19nZXROZXh0U3Ry
aW5nKHJlc0IsICZsZW4sIGtleSwgc3RhdHVzKTsKLSAgICByZXR1cm4gVW5pY29kZVN0cmluZyhU
UlVFLCByLCBsZW4pOworICAgIGlmKFVfU1VDQ0VTUygqc3RhdHVzKSkgeworICAgICAgICByZXN1
bHQuc2V0VG8oVFJVRSwgciwgbGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQuc2V0
VG9Cb2d1cygpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKioKLSAqIFJldHVy
bnMgdGhlIHN0cmluZyBpbiBhIGdpdmVuIHJlc291cmNlIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXgu
CisgKiBSZXR1cm5zIHRoZSBzdHJpbmcgaW4gYSBnaXZlbiByZXNvdXJjZSBhcnJheSBvciB0YWJs
ZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgogICoKICAqIEBwYXJhbSByZXNCICAgICAgICAgICAg
ICBhIHJlc291cmNlCiAgKiBAcGFyYW0gaW5kZXhTICAgICAgICAgICAgYW4gaW5kZXggdG8gdGhl
IHdhbnRlZCBzdHJpbmcuCiAgKiBAcGFyYW0gc3RhdHVzICAgICAgICAgICAgZmlsbHMgaW4gdGhl
IG91dGdvaW5nIGVycm9yIGNvZGUKLSAqIEByZXR1cm4gICAgICAgICAgICAgICAgICBhbiBVbmlj
b2RlU3RyaW5nIG9iamVjdC4gSWYgdGhlcmUgaXMgYW4gZXJyb3IsIHN0cmluZyBpcyBib2d1cwor
ICogQHJldHVybiBUaGUgc3RyaW5nIHZhbHVlLCBvciBhIGJvZ3VzIHN0cmluZyBpZiB0aGVyZSBp
cyBhIGZhaWx1cmUgVUVycm9yQ29kZS4KICAqIEBzdGFibGUgSUNVIDIuMAogICovCi1pbmxpbmUg
VW5pY29kZVN0cmluZyAKLXVyZXNfZ2V0VW5pY29kZVN0cmluZ0J5SW5kZXgoY29uc3QgVVJlc291
cmNlQnVuZGxlICpyZXNCLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBp
bmRleFMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBzdGF0dXMp
IAoteworaW5saW5lIFVuaWNvZGVTdHJpbmcKK3VyZXNfZ2V0VW5pY29kZVN0cmluZ0J5SW5kZXgo
Y29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNCLCBpbnQzMl90IGluZGV4UywgVUVycm9yQ29kZSog
c3RhdHVzKSB7CisgICAgVW5pY29kZVN0cmluZyByZXN1bHQ7CiAgICAgaW50MzJfdCBsZW4gPSAw
OwogICAgIGNvbnN0IFVDaGFyKiByID0gdXJlc19nZXRTdHJpbmdCeUluZGV4KHJlc0IsIGluZGV4
UywgJmxlbiwgc3RhdHVzKTsKLSAgICByZXR1cm4gVW5pY29kZVN0cmluZyhUUlVFLCByLCBsZW4p
OworICAgIGlmKFVfU1VDQ0VTUygqc3RhdHVzKSkgeworICAgICAgICByZXN1bHQuc2V0VG8oVFJV
RSwgciwgbGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQuc2V0VG9Cb2d1cygpOwor
ICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKioKLSAqIFJldHVybnMgYSBzdHJpbmcg
aW4gYSByZXNvdXJjZSB0aGF0IGhhcyBhIGdpdmVuIGtleS4gVGhpcyBwcm9jZWR1cmUgd29ya3Mg
b25seSB3aXRoIHRhYmxlCi0gKiByZXNvdXJjZXMuIAorICogUmV0dXJucyBhIHN0cmluZyBpbiBh
IHJlc291cmNlIHRoYXQgaGFzIGEgZ2l2ZW4ga2V5LgorICogVGhpcyBwcm9jZWR1cmUgd29ya3Mg
b25seSB3aXRoIHRhYmxlIHJlc291cmNlcy4KICAqCiAgKiBAcGFyYW0gcmVzQiAgICAgICAgICAg
ICAgYSByZXNvdXJjZQogICogQHBhcmFtIGtleSAgICAgICAgICAgICAgIGEga2V5IGFzc29jaWF0
ZWQgd2l0aCB0aGUgd2FudGVkIHN0cmluZwogICogQHBhcmFtIHN0YXR1cyAgICAgICAgICAgIGZp
bGxzIGluIHRoZSBvdXRnb2luZyBlcnJvciBjb2RlCi0gKiBAcmV0dXJuICAgICAgICAgICAgICAg
ICAgYW4gVW5pY29kZVN0cmluZyBvYmplY3QuIElmIHRoZXJlIGlzIGFuIGVycm9yLCBzdHJpbmcg
aXMgYm9ndXMKKyAqIEByZXR1cm4gVGhlIHN0cmluZyB2YWx1ZSwgb3IgYSBib2d1cyBzdHJpbmcg
aWYgdGhlcmUgaXMgYSBmYWlsdXJlIFVFcnJvckNvZGUuCiAgKiBAc3RhYmxlIElDVSAyLjAKICAq
LwotaW5saW5lIFVuaWNvZGVTdHJpbmcgCi11cmVzX2dldFVuaWNvZGVTdHJpbmdCeUtleShjb25z
dCBVUmVzb3VyY2VCdW5kbGUgKnJlc0IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhcioga2V5LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIHN0
YXR1cykgCi17CitpbmxpbmUgVW5pY29kZVN0cmluZwordXJlc19nZXRVbmljb2RlU3RyaW5nQnlL
ZXkoY29uc3QgVVJlc291cmNlQnVuZGxlICpyZXNCLCBjb25zdCBjaGFyKiBrZXksIFVFcnJvckNv
ZGUqIHN0YXR1cykgeworICAgIFVuaWNvZGVTdHJpbmcgcmVzdWx0OwogICAgIGludDMyX3QgbGVu
ID0gMDsKICAgICBjb25zdCBVQ2hhciogciA9IHVyZXNfZ2V0U3RyaW5nQnlLZXkocmVzQiwga2V5
LCAmbGVuLCBzdGF0dXMpOwotICAgIHJldHVybiBVbmljb2RlU3RyaW5nKFRSVUUsIHIsIGxlbik7
CisgICAgaWYoVV9TVUNDRVNTKCpzdGF0dXMpKSB7CisgICAgICAgIHJlc3VsdC5zZXRUbyhUUlVF
LCByLCBsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdC5zZXRUb0JvZ3VzKCk7Cisg
ICAgfQorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFVfTkFNRVNQQUNFX0VORApAQCAtODcyLDcg
Kzg5Myw3IEBAIFVfTkFNRVNQQUNFX0VORAogI2VuZGlmCiAKIC8qKgotICogQ3JlYXRlIGEgc3Ry
aW5nIGVudW1lcmF0b3IsIG93bmVkIGJ5IHRoZSBjYWxsZXIsIG9mIGFsbCBsb2NhbGVzIGxvY2F0
ZWQgd2l0aGluIAorICogQ3JlYXRlIGEgc3RyaW5nIGVudW1lcmF0b3IsIG93bmVkIGJ5IHRoZSBj
YWxsZXIsIG9mIGFsbCBsb2NhbGVzIGxvY2F0ZWQgd2l0aGluCiAgKiB0aGUgc3BlY2lmaWVkIHJl
c291cmNlIHRyZWUuCiAgKiBAcGFyYW0gcGFja2FnZU5hbWUgbmFtZSBvZiB0aGUgdHJlZSwgc3Vj
aCBhcyAoTlVMTCkgb3IgVV9JQ1VEQVRBX0FMSUFTIG9yICBvciAiSUNVREFUQS1jb2xsIgogICog
VGhpcyBjYWxsIGlzIHNpbWlsYXIgdG8gdWxvY19nZXRBdmFpbGFibGUoKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNjcmlwdC5oIGIvU291cmNlL1dURi9pY3UvdW5pY29k
ZS91c2NyaXB0LmgKaW5kZXggYjIxN2M4MTQ3MjhhYzExMWQwYTRjZmE3NTUwZDM5MjY4YTg3YTMx
ZC4uM2VjMjM1ZDUwY2UyYzI4OGE2MDM4NDBlYzMwYmFiOWE1ODg4MjliYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS91c2NyaXB0LmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5p
Y29kZS91c2NyaXB0LmgKQEAgLTEsNiArMSw4IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5p
Y29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDov
L3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAg
IENvcHlyaWdodCAoQykgMTk5Ny0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVz
CisgKiAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDE2LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1h
Y2hpbmVzCiAgKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVk
LgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKICAqCkBAIC0zMiwxMyArMzQsMTMgQEAKICAqIFNlZSBVQVggIzI0
IFVuaWNvZGUgU2NyaXB0IFByb3BlcnR5IChodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMv
dHIyNC8pCiAgKiBhbmQgaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvVUNEL2xhdGVzdC91
Y2QvUHJvcGVydHlWYWx1ZUFsaWFzZXMudHh0IC4KICAqCi0gKiBTdGFydGluZyB3aXRoIElDVSAz
LjYsIGNvbnN0YW50cyBmb3IgbW9zdCBJU08gMTU5MjQgc2NyaXB0IGNvZGVzCisgKiBJbiBhZGRp
dGlvbiwgY29uc3RhbnRzIGZvciBtYW55IElTTyAxNTkyNCBzY3JpcHQgY29kZXMKICAqIGFyZSBp
bmNsdWRlZCwgZm9yIHVzZSB3aXRoIGxhbmd1YWdlIHRhZ3MsIENMRFIgZGF0YSwgYW5kIHNpbWls
YXIuCiAgKiBTb21lIG9mIHRob3NlIGNvZGVzIGFyZSBub3QgdXNlZCBpbiB0aGUgVW5pY29kZSBD
aGFyYWN0ZXIgRGF0YWJhc2UgKFVDRCkuCiAgKiBGb3IgZXhhbXBsZSwgdGhlcmUgYXJlIG5vIGNo
YXJhY3RlcnMgdGhhdCBoYXZlIGEgVUNEIHNjcmlwdCBwcm9wZXJ0eSB2YWx1ZSBvZgogICogSGFu
cyBvciBIYW50LiBBbGwgSGFuIGlkZW9ncmFwaHMgaGF2ZSB0aGUgSGFuaSBzY3JpcHQgcHJvcGVy
dHkgdmFsdWUgaW4gVW5pY29kZS4KICAqCi0gKiBQcml2YXRlLXVzZSBjb2RlcyBRYWFhLi5RYWJ4
IGFyZSBub3QgaW5jbHVkZWQuCisgKiBQcml2YXRlLXVzZSBjb2RlcyBRYWFhLi5RYWJ4IGFyZSBu
b3QgaW5jbHVkZWQsIGV4Y2VwdCBhcyB1c2VkIGluIHRoZSBVQ0Qgb3IgaW4gQ0xEUi4KICAqCiAg
KiBTdGFydGluZyB3aXRoIElDVSA1NSwgc2NyaXB0IGNvZGVzIGFyZSBvbmx5IGFkZGVkIHdoZW4g
dGhlaXIgc2NyaXB0cwogICogaGF2ZSBiZWVuIG9yIHdpbGwgY2VydGFpbmx5IGJlIGVuY29kZWQg
aW4gVW5pY29kZSwKQEAgLTMwMCw3ICszMDIsNyBAQCB0eXBlZGVmIGVudW0gVVNjcmlwdENvZGUg
ewogICAgICAgVVNDUklQVF9SRUpBTkcgICAgICAgICAgICAgICAgICAgICAgICA9IDExMCwvKiBS
am5nICovCiAgICAgICAvKiogQHN0YWJsZSBJQ1UgMy44ICovCiAgICAgICBVU0NSSVBUX1NBVVJB
U0hUUkEgICAgICAgICAgICAgICAgICAgID0gMTExLC8qIFNhdXIgKi8KLSAgICAgIC8qKiBAc3Rh
YmxlIElDVSAzLjggKi8KKyAgICAgIC8qKiBTdXR0b24gU2lnbldyaXRpbmcgQHN0YWJsZSBJQ1Ug
My44ICovCiAgICAgICBVU0NSSVBUX1NJR05fV1JJVElORyAgICAgICAgICAgICAgICAgID0gMTEy
LC8qIFNnbncgKi8KICAgICAgIC8qKiBAc3RhYmxlIElDVSAzLjggKi8KICAgICAgIFVTQ1JJUFRf
U1VOREFORVNFICAgICAgICAgICAgICAgICAgICAgPSAxMTMsLyogU3VuZCAqLwpAQCAtNDI0LDI0
ICs0MjYsNDYgQEAgdHlwZWRlZiBlbnVtIFVTY3JpcHRDb2RlIHsKICAgICAgIC8qKiBAc3RhYmxl
IElDVSA1NCAqLwogICAgICAgVVNDUklQVF9TSURESEFNICAgICAgICAgICAgICAgICAgICAgICA9
IDE2NiwvKiBTaWRkICovCiAKLSAgICAgIC8qKgotICAgICAgICogT25lIGhpZ2hlciB0aGFuIHRo
ZSBsYXN0IHNjcmlwdCBjb2RlIGNvbnN0YW50LgotICAgICAgICogVGhpcyB2YWx1ZSBpbmNyZWFz
ZXMgYXMgY29uc3RhbnRzIGZvciBzY3JpcHQgY29kZXMgYXJlIGFkZGVkLgotICAgICAgICoKLSAg
ICAgICAqIFRoZXJlIGFyZSBjb25zdGFudHMgZm9yIFVuaWNvZGUgNyBzY3JpcHQgcHJvcGVydHkg
dmFsdWVzLgotICAgICAgICogVGhlcmUgYXJlIGNvbnN0YW50cyBmb3IgSVNPIDE1OTI0IHNjcmlw
dCBjb2RlcyBhc3NpZ25lZCBvbiBvciBiZWZvcmUgMjAxMy0xMC0xMi4KLSAgICAgICAqIFRoZXJl
IGFyZSBubyBjb25zdGFudHMgZm9yIHByaXZhdGUgdXNlIGNvZGVzIGZyb20gUWFhYSAtIFFhYngK
LSAgICAgICAqIGV4Y2VwdCBhcyB1c2VkIGluIHRoZSBVQ0QuCi0gICAgICAgKgotICAgICAgICog
QHN0YWJsZSBJQ1UgMi4yCi0gICAgICAgKi8KLSAgICAgIFVTQ1JJUFRfQ09ERV9MSU1JVCAgICA9
IDE2NworICAgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgICBVU0NSSVBUX0FETEFNICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMTY3LC8qIEFkbG0gKi8KKyAgICAgIC8qKiBAc3RhYmxl
IElDVSA1OCAqLworICAgICAgVVNDUklQVF9CSEFJS1NVS0kgICAgICAgICAgICAgICAgICAgICA9
IDE2OCwvKiBCaGtzICovCisgICAgICAvKiogQHN0YWJsZSBJQ1UgNTggKi8KKyAgICAgIFVTQ1JJ
UFRfTUFSQ0hFTiAgICAgICAgICAgICAgICAgICAgICAgPSAxNjksLyogTWFyYyAqLworICAgICAg
LyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgICBVU0NSSVBUX05FV0EgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMTcwLC8qIE5ld2EgKi8KKyAgICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLwor
ICAgICAgVVNDUklQVF9PU0FHRSAgICAgICAgICAgICAgICAgICAgICAgICA9IDE3MSwvKiBPc2dl
ICovCisKKyAgICAgIC8qKiBAc3RhYmxlIElDVSA1OCAqLworICAgICAgVVNDUklQVF9IQU5fV0lU
SF9CT1BPTU9GTyAgICAgICAgICAgICA9IDE3MiwvKiBIYW5iICovCisgICAgICAvKiogQHN0YWJs
ZSBJQ1UgNTggKi8KKyAgICAgIFVTQ1JJUFRfSkFNTyAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxNzMsLyogSmFtbyAqLworICAgICAgLyoqIEBzdGFibGUgSUNVIDU4ICovCisgICAgICBVU0NS
SVBUX1NZTUJPTFNfRU1PSkkgICAgICAgICAgICAgICAgID0gMTc0LC8qIFpzeWUgKi8KKworICAg
ICAgLyoqIEBzdGFibGUgSUNVIDYwICovCisgICAgICBVU0NSSVBUX01BU0FSQU1fR09OREkgICAg
ICAgICAgICAgICAgID0gMTc1LC8qIEdvbm0gKi8KKyAgICAgIC8qKiBAc3RhYmxlIElDVSA2MCAq
LworICAgICAgVVNDUklQVF9TT1lPTUJPICAgICAgICAgICAgICAgICAgICAgICA9IDE3NiwvKiBT
b3lvICovCisgICAgICAvKiogQHN0YWJsZSBJQ1UgNjAgKi8KKyAgICAgIFVTQ1JJUFRfWkFOQUJB
WkFSX1NRVUFSRSAgICAgICAgICAgICAgPSAxNzcsLyogWmFuYiAqLworCisjaWZuZGVmIFVfSElE
RV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hl
c3Qgbm9ybWFsIFVTY3JpcHRDb2RlIHZhbHVlLgorICAgICAqIFRoZSBoaWdoZXN0IHZhbHVlIGlz
IGF2YWlsYWJsZSB2aWEgdV9nZXRJbnRQcm9wZXJ0eU1heFZhbHVlKFVDSEFSX1NDUklQVCkuCisg
ICAgICoKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNo
YW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KKyAgICBVU0NS
SVBUX0NPREVfTElNSVQgICAgPSAxNzgKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJ
CiB9IFVTY3JpcHRDb2RlOwogCiAvKioKLSAqIEdldHMgdGhlIHNjcmlwdCBjb2RlcyBhc3NvY2lh
dGVkIHdpdGggdGhlIGdpdmVuIGxvY2FsZSBvciBJU08gMTU5MjQgYWJicmV2aWF0aW9uIG9yIG5h
bWUuIAorICogR2V0cyB0aGUgc2NyaXB0IGNvZGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4g
bG9jYWxlIG9yIElTTyAxNTkyNCBhYmJyZXZpYXRpb24gb3IgbmFtZS4KICAqIEZpbGxzIGluIFVT
Q1JJUFRfTUFMQVlBTEFNIGdpdmVuICJNYWxheWFtIiBPUiAiTWx5bSIuCi0gKiBGaWxscyBpbiBV
U0NSSVBUX0xBVElOIGdpdmVuICJlbiIgT1IgImVuX1VTIiAKKyAqIEZpbGxzIGluIFVTQ1JJUFRf
TEFUSU4gZ2l2ZW4gImVuIiBPUiAiZW5fVVMiCiAgKiBJZiB0aGUgcmVxdWlyZWQgY2FwYWNpdHkg
aXMgZ3JlYXRlciB0aGFuIHRoZSBjYXBhY2l0eSBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLAog
ICogdGhlbiB0aGUgZXJyb3IgY29kZSBpcyBzZXQgdG8gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1Ig
YW5kIHRoZSByZXF1aXJlZCBjYXBhY2l0eSBpcyByZXR1cm5lZC4KICAqCkBAIC00NTQsMTAgKzQ3
OCwxMCBAQCB0eXBlZGVmIGVudW0gVVNjcmlwdENvZGUgewogICogQHBhcmFtIGZpbGxJbiB0aGUg
VVNjcmlwdENvZGUgYnVmZmVyIHRvIGZpbGwgaW4gdGhlIHNjcmlwdCBjb2RlCiAgKiBAcGFyYW0g
Y2FwYWNpdHkgdGhlIGNhcGFjaXR5IChzaXplKSBmbyBVU2NyaXB0Q29kZSBidWZmZXIgcGFzc2Vk
IGluLgogICogQHBhcmFtIGVyciB0aGUgZXJyb3Igc3RhdHVzIGNvZGUuCi0gKiBAcmV0dXJuIFRo
ZSBudW1iZXIgb2Ygc2NyaXB0IGNvZGVzIGZpbGxlZCBpbiB0aGUgYnVmZmVyIHBhc3NlZCBpbiAK
KyAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBzY3JpcHQgY29kZXMgZmlsbGVkIGluIHRoZSBidWZm
ZXIgcGFzc2VkIGluCiAgKiBAc3RhYmxlIElDVSAyLjQKICAqLwotVV9TVEFCTEUgaW50MzJfdCAg
VV9FWFBPUlQyIAorVV9TVEFCTEUgaW50MzJfdCAgVV9FWFBPUlQyCiB1c2NyaXB0X2dldENvZGUo
Y29uc3QgY2hhciogbmFtZU9yQWJick9yTG9jYWxlLFVTY3JpcHRDb2RlKiBmaWxsSW4saW50MzJf
dCBjYXBhY2l0eSxVRXJyb3JDb2RlICplcnIpOwogCiAvKioKQEAgLTQ3MCw3ICs0OTQsNyBAQCB1
c2NyaXB0X2dldENvZGUoY29uc3QgY2hhciogbmFtZU9yQWJick9yTG9jYWxlLFVTY3JpcHRDb2Rl
KiBmaWxsSW4saW50MzJfdCBjYXBhYwogICogb3IgTlVMTCBpZiBzY3JpcHRDb2RlIGlzIGludmFs
aWQKICAqIEBzdGFibGUgSUNVIDIuNAogICovCi1VX1NUQUJMRSBjb25zdCBjaGFyKiAgVV9FWFBP
UlQyIAorVV9TVEFCTEUgY29uc3QgY2hhciogIFVfRVhQT1JUMgogdXNjcmlwdF9nZXROYW1lKFVT
Y3JpcHRDb2RlIHNjcmlwdENvZGUpOwogCiAvKioKQEAgLTQ4MiwxOCArNTA2LDE4IEBAIHVzY3Jp
cHRfZ2V0TmFtZShVU2NyaXB0Q29kZSBzY3JpcHRDb2RlKTsKICAqIEByZXR1cm4gc2hvcnQgc2Ny
aXB0IG5hbWUgKDQtbGV0dGVyIGNvZGUpLCBvciBOVUxMIGlmIHNjcmlwdENvZGUgaXMgaW52YWxp
ZAogICogQHN0YWJsZSBJQ1UgMi40CiAgKi8KLVVfU1RBQkxFIGNvbnN0IGNoYXIqICBVX0VYUE9S
VDIgCitVX1NUQUJMRSBjb25zdCBjaGFyKiAgVV9FWFBPUlQyCiB1c2NyaXB0X2dldFNob3J0TmFt
ZShVU2NyaXB0Q29kZSBzY3JpcHRDb2RlKTsKIAogLyoqCiAgKiBHZXRzIHRoZSBzY3JpcHQgY29k
ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvZGVwb2ludC4KLSAqIFJldHVybnMgVVNDUklQ
VF9NQUxBWUFMQU0gZ2l2ZW4gMHgwRDAyIAorICogUmV0dXJucyBVU0NSSVBUX01BTEFZQUxBTSBn
aXZlbiAweDBEMDIKICAqIEBwYXJhbSBjb2RlcG9pbnQgVUNoYXIzMiBjb2RlcG9pbnQKICAqIEBw
YXJhbSBlcnIgdGhlIGVycm9yIHN0YXR1cyBjb2RlLgotICogQHJldHVybiBUaGUgVVNjcmlwdENv
ZGUsIG9yIDAgaWYgY29kZXBvaW50IGlzIGludmFsaWQgCisgKiBAcmV0dXJuIFRoZSBVU2NyaXB0
Q29kZSwgb3IgMCBpZiBjb2RlcG9pbnQgaXMgaW52YWxpZAogICogQHN0YWJsZSBJQ1UgMi40CiAg
Ki8KLVVfU1RBQkxFIFVTY3JpcHRDb2RlICBVX0VYUE9SVDIgCitVX1NUQUJMRSBVU2NyaXB0Q29k
ZSAgVV9FWFBPUlQyCiB1c2NyaXB0X2dldFNjcmlwdChVQ2hhcjMyIGNvZGVwb2ludCwgVUVycm9y
Q29kZSAqZXJyKTsKIAogLyoqCkBAIC01MDMsOSArNTI3LDYgQEAgdXNjcmlwdF9nZXRTY3JpcHQo
VUNoYXIzMiBjb2RlcG9pbnQsIFVFcnJvckNvZGUgKmVycik7CiAgKgogICogU29tZSBjaGFyYWN0
ZXJzIGFyZSBjb21tb25seSB1c2VkIGluIG11bHRpcGxlIHNjcmlwdHMuCiAgKiBGb3IgbW9yZSBp
bmZvcm1hdGlvbiwgc2VlIFVBWCAjMjQ6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90
cjI0Ly4KLSAqCi0gKiBUaGUgU2NyaXB0X0V4dGVuc2lvbnMgcHJvcGVydHkgaXMgcHJvdmlzaW9u
YWwuIEl0IG1heSBiZSBtb2RpZmllZCBvciByZW1vdmVkCi0gKiBpbiBmdXR1cmUgdmVyc2lvbnMg
b2YgdGhlIFVuaWNvZGUgU3RhbmRhcmQsIGFuZCB0aHVzIGluIElDVS4KICAqIEBwYXJhbSBjIGNv
ZGUgcG9pbnQKICAqIEBwYXJhbSBzYyBzY3JpcHQgY29kZQogICogQHJldHVybiBUUlVFIGlmIHNj
IGlzIGluIFNjcmlwdF9FeHRlbnNpb25zKGMpCkBAIC01MzIsOCArNTUzLDYgQEAgdXNjcmlwdF9o
YXNTY3JpcHQoVUNoYXIzMiBjLCBVU2NyaXB0Q29kZSBzYyk7CiAgKiBVX0JVRkZFUl9PVkVSRkxP
V19FUlJPUiBpcyBzZXQgYW5kIHRoZSBudW1iZXIgb2YgU2NyaXB0X0V4dGVuc2lvbnMgaXMgcmV0
dXJuZWQuCiAgKiAoVXN1YWwgSUNVIGJ1ZmZlciBoYW5kbGluZyBiZWhhdmlvci4pCiAgKgotICog
VGhlIFNjcmlwdF9FeHRlbnNpb25zIHByb3BlcnR5IGlzIHByb3Zpc2lvbmFsLiBJdCBtYXkgYmUg
bW9kaWZpZWQgb3IgcmVtb3ZlZAotICogaW4gZnV0dXJlIHZlcnNpb25zIG9mIHRoZSBVbmljb2Rl
IFN0YW5kYXJkLCBhbmQgdGh1cyBpbiBJQ1UuCiAgKiBAcGFyYW0gYyBjb2RlIHBvaW50CiAgKiBA
cGFyYW0gc2NyaXB0cyBvdXRwdXQgc2NyaXB0IGNvZGUgYXJyYXkKICAqIEBwYXJhbSBjYXBhY2l0
eSBjYXBhY2l0eSBvZiB0aGUgc2NyaXB0cyBhcnJheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91c2VhcmNoLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzZWFyY2guaApp
bmRleCA3NTUyMWY1MjhhNDEwZmFlMTkyMzU4YjA3MGYzODU5MGQ2NjI2YTNkLi5lYmZjZGY3ZWM2
YTQ5NGUzNDJjMmIzNTFlYWQyN2NhNzIxYjVhMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3VzZWFyY2guaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzZWFyY2gu
aApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykg
MjAwMS0yMDExLDIwMTQgSUJNIGFuZCBvdGhlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0x
ODgsMTEgKzE5MCwxMyBAQCB0eXBlZGVmIGVudW0gewogICAgICAqLwogICAgIFVTRUFSQ0hfRUxF
TUVOVF9DT01QQVJJU09OID0gMiwKIAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAg
ICAvKioKLSAgICAgKiBDb3VudCBvZiBhdHRyaWJ1dGUgdHlwZXMKLSAgICAgKiBAc3RhYmxlIElD
VSAyLjQKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVU2VhcmNoQXR0
cmlidXRlIHZhbHVlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1
ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgogICAgICAqLwog
ICAgIFVTRUFSQ0hfQVRUUklCVVRFX0NPVU5UID0gMworI2VuZGlmICAvKiBVX0hJREVfREVQUkVD
QVRFRF9BUEkgKi8KIH0gVVNlYXJjaEF0dHJpYnV0ZTsKIAogLyoqCkBAIC0yNjIsMTEgKzI2Niwx
MyBAQCB0eXBlZGVmIGVudW0gewogICAgICAqLwogICAgIFVTRUFSQ0hfQU5ZX0JBU0VfV0VJR0hU
X0lTX1dJTERDQVJELAogCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAgIC8qKgot
ICAgICAqIENvdW50IG9mIGF0dHJpYnV0ZSB2YWx1ZXMKLSAgICAgKiBAc3RhYmxlIElDVSAyLjQK
KyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBVU2VhcmNoQXR0cmlidXRl
VmFsdWUgdmFsdWUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVl
IG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCiAgICAgICovCiAg
ICAgVVNFQVJDSF9BVFRSSUJVVEVfVkFMVUVfQ09VTlQKKyNlbmRpZiAgLyogVV9ISURFX0RFUFJF
Q0FURURfQVBJICovCiB9IFVTZWFyY2hBdHRyaWJ1dGVWYWx1ZTsKIAogLyogb3BlbiBhbmQgY2xv
c2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzZXQuaCBiL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdXNldC5oCmluZGV4IGViM2M5ZTZhMDZhNmY5ZmY5NDkzNWVlODEwZTlj
YTg5MWRmNjAxMDUuLjU5ZjQ2NTA3ZDU0OGFhNDg2NThmODQ3OGFmNzlkNWZkNDNhOWYyY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNldC5oCisrKyBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdXNldC5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6
IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0
dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqCkBAIC02LDcgKzgsNyBAQAogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAg
IGZpbGUgbmFtZTogIHVzZXQuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rp
bmc6ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlv
bjo0CiAqCkBAIC0xOTYsMTEgKzE5OCwxMyBAQCB0eXBlZGVmIGVudW0gVVNldFNwYW5Db25kaXRp
b24gewogICAgICAqIEBzdGFibGUgSUNVIDMuOAogICAgICAqLwogICAgIFVTRVRfU1BBTl9TSU1Q
TEUgPSAyLAorI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKICAgICAvKioKICAgICAgKiBP
bmUgbW9yZSB0aGFuIHRoZSBsYXN0IHNwYW4gY29uZGl0aW9uLgotICAgICAqIEBzdGFibGUgSUNV
IDMuOAorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hh
bmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgogICAgICAqLwogICAgIFVTRVRf
U1BBTl9DT05ESVRJT05fQ09VTlQKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9
IFVTZXRTcGFuQ29uZGl0aW9uOwogCiBlbnVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdXNldGl0ZXIuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNldGl0ZXIuaApp
bmRleCBiZjkyN2IwOGNlZTg2ZDBjMWM4Zjk5Yjg4ZThhOGI4MWRkMmYwMDZkLi5kMGQ5OTE4NWI3
Y2RiNzI1NWU0NmNiNTk3OWQ2YjBkZmUzY2EzY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3VzZXRpdGVyLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91c2V0aXRl
ci5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4g
YW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29k
ZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoYykg
MjAwMi0yMDE0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL2ljdS91bmljb2RlL3VzaGFwZS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91
c2hhcGUuaAppbmRleCA5ZmI1YWI0ZTU0N2Y0Y2FkYzY0MzFiM2UzOWFmYzUyMjJlYTI3MzdiLi5j
NjRmZTIyN2MxZjRhMzhmN2Y4NmRmZWRhYTJlOTZiOGVlNzQzODhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL2ljdS91bmljb2RlL3VzaGFwZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dXNoYXBlLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwg
SW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51
bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpA
QCAtNiw3ICs4LDcgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTog
IHVzaGFwZS5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYt
OAogKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNwb29mLmggYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3VzcG9vZi5oCmluZGV4IDhkNjY1ZTFiM2VkN2FjYTkxMTAxMzA5NTk4ZWVjMWYx
NzA1OGM2ZDIuLjlmY2ZjZDNlZGU4MzZjNWQ4MGU1MThiOWU1OGNmMjc4ODkxZjBjZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNwb29mLmgKKysrIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91c3Bvb2YuaApAQCAtMSwxMCArMSwxMiBAQAorLy8gwqkgMjAxNiBhbmQgbGF0
ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6
IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKLSogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTUsIEludGVybmF0aW9uYWwgQnVzaW5lc3Mg
TWFjaGluZXMgQ29ycG9yYXRpb24KKyogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTYsIEludGVybmF0
aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24KICogYW5kIG90aGVycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIGZpbGUgbmFtZTogIHVzcG9v
Zi5oCi0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAg
IHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTM1LDEy
MyArMzcsMzQ5IEBACiAgKiBcZmlsZQogICogXGJyaWVmIFVuaWNvZGUgU2VjdXJpdHkgYW5kIFNw
b29maW5nIERldGVjdGlvbiwgQyBBUEkuCiAgKgotICogVGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRl
bmRlZCB0byBjaGVjayBzdHJpbmdzLCB0eXBpY2FsbHkKLSAqIGlkZW50aWZpZXJzIG9mIHNvbWUg
dHlwZSwgc3VjaCBhcyBVUkxzLCBmb3IgdGhlIHByZXNlbmNlIG9mCi0gKiBjaGFyYWN0ZXJzIHRo
YXQgYXJlIGxpa2VseSB0byBiZSB2aXN1YWxseSBjb25mdXNpbmcgLSAKLSAqIGZvciBjYXNlcyB3
aGVyZSB0aGUgZGlzcGxheWVkIGZvcm0gb2YgYW4gaWRlbnRpZmllciBtYXkKLSAqIG5vdCBiZSB3
aGF0IGl0IGFwcGVhcnMgdG8gYmUuCi0gKgotICogVW5pY29kZSBUZWNobmljYWwgUmVwb3J0ICMz
NiwgaHR0cDovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIzNiwgYW5kCi0gKiBVbmljb2RlIFRlY2hu
aWNhbCBTdGFuZGFyZCAjMzksIGh0dHA6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMzkKLSAqICJV
bmljb2RlIHNlY3VyaXR5IGNvbnNpZGVyYXRpb25zIiwgZ2l2ZSBtb3JlIGJhY2tncm91bmQgb24g
Ci0gKiBzZWN1cml0eSBhbiBzcG9vZmluZyBpc3N1ZXMgd2l0aCBVbmljb2RlIGlkZW50aWZpZXJz
LgotICogVGhlIHRlc3RzIGFuZCBjaGVja3MgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUgaW1wbGVt
ZW50IHRoZSByZWNvbW1lbmRhdGlvbnMKLSAqIGZyb20gdGhvc2UgVW5pY29kZSBkb2N1bWVudHMu
Ci0gKgotICogVGhlIHRlc3RzIGF2YWlsYWJsZSBvbiBpZGVudGlmaWVycyBmYWxsIGludG8gdHdv
IGdlbmVyYWwgY2F0ZWdvcmllczoKLSAqICAgLSMgIFNpbmdsZSBpZGVudGlmaWVyIHRlc3RzLiAg
Q2hlY2sgd2hldGhlciBhbiBpZGVudGlmaWVyIGlzCi0gKiAgICAgICBwb3RlbnRpYWxseSBjb25m
dXNhYmxlIHdpdGggYW55IG90aGVyIHN0cmluZywgb3IgaXMgc3VzcGljaW91cwotICogICAgICAg
Zm9yIG90aGVyIHJlYXNvbnMuCi0gKiAgIC0jICBUd28gaWRlbnRpZmllciB0ZXN0cy4gIENoZWNr
IHdoZXRoZXIgdHdvIHNwZWNpZmljIGlkZW50aWZpZXJzIGFyZSBjb25mdXNhYmxlLgotICogICAg
ICAgVGhpcyBkb2VzIG5vdCBjb25zaWRlciB3aGV0aGVyIGVpdGhlciBvZiBzdHJpbmdzIGlzIHBv
dGVudGlhbGx5Ci0gKiAgICAgICBjb25mdXNhYmxlIHdpdGggYW55IHN0cmluZyBvdGhlciB0aGFu
IHRoZSBleGFjdCBvbmUgc3BlY2lmaWVkLgotICoKLSAqIFRoZSBzdGVwcyB0byBwZXJmb3JtIGNv
bmZ1c2FiaWxpdHkgdGVzdGluZyBhcmUKLSAqICAgLSMgIE9wZW4gYSBVU3Bvb2ZDaGVja2VyLgot
ICogICAtIyAgQ29uZmlndXJlIHRoZSBVU1Bvb2ZDaGVja2VyIGZvciB0aGUgZGVzaXJlZCBzZXQg
b2YgdGVzdHMuICBUaGUgdGVzdHMgdGhhdCB3aWxsCi0gKiAgICAgICBiZSBwZXJmb3JtZWQgYXJl
IHNwZWNpZmllZCBieSBhIHNldCBvZiBVU3Bvb2ZDaGVja3MgZmxhZ3MuCi0gKiAgIC0jICBQZXJm
b3JtIHRoZSBjaGVja3MgdXNpbmcgdGhlIHByZS1jb25maWd1cmVkIFVTcG9vZkNoZWNrZXIuICBU
aGUgcmVzdWx0cyBpbmRpY2F0ZQotICogICAgICAgd2hpY2ggKGlmIGFueSkgb2YgdGhlIHNlbGVj
dGVkIHRlc3RzIGhhdmUgaWRlbnRpZmllZCBwb3NzaWJsZSBwcm9ibGVtcyB3aXRoIHRoZSBpZGVu
dGlmaWVyLgotICogICAgICAgUmVzdWx0cyBhcmUgcmVwb3J0ZWQgYXMgYSBzZXQgb2YgVVNwb29m
Q2hlY2tzIGZsYWdzOyAgdGhpcyBtaXJyb3JzIHRoZSBmb3JtIGluIHdoaWNoCi0gKiAgICAgICB0
aGUgc2V0IG9mIHRlc3RzIHRvIHBlcmZvcm0gd2FzIG9yaWdpbmFsbHkgc3BlY2lmaWVkIHRvIHRo
ZSBVU3Bvb2ZDaGVja2VyLgotICoKLSAqIEEgVVNwb29mQ2hlY2tlciBtYXkgYmUgdXNlZCByZXBl
YXRlZGx5IHRvIHBlcmZvcm0gY2hlY2tzIG9uIGFueSBudW1iZXIgb2YgaWRlbnRpZmllcnMuCi0g
KgotICogVGhyZWFkIFNhZmV0eTogVGhlIHRlc3QgZnVuY3Rpb25zIGZvciBjaGVja2luZyBhIHNp
bmdsZSBpZGVudGlmaWVyLCBvciBmb3IgdGVzdGluZyAKLSAqIHdoZXRoZXIgdHdvIGlkZW50aWZp
ZXJzIGFyZSBwb3NzaWJsZSBjb25mdXNhYmxlLCBhcmUgdGhyZWFkIHNhZmUuICAKLSAqIFRoZXkg
bWF5IGNhbGxlZCBjb25jdXJyZW50bHksIGZyb20gbXVsdGlwbGUgdGhyZWFkcywgdXNpbmcgdGhl
IHNhbWUgVVNwb29mQ2hlY2tlciBpbnN0YW5jZS4KLSAqCi0gKiBNb3JlIGdlbmVyYWxseSwgdGhl
IHN0YW5kYXJkIElDVSB0aHJlYWQgc2FmZXR5IHJ1bGVzIGFwcGx5OiAgZnVuY3Rpb25zIHRoYXQg
dGFrZSBhCi0gKiBjb25zdCBVU3Bvb2ZDaGVja2VyIHBhcmFtZXRlciBhcmUgdGhyZWFkIHNhZmUu
ICBUaG9zZSB0aGF0IHRha2UgYSBub24tY29uc3QgCi0gKiBVU3Bvb2ZDaGVjaWVyIGFyZSBub3Qg
dGhyZWFkIHNhZmUuCi0gKgotICoKLSAqIERlc2NyaXB0aW9ucyBvZiB0aGUgYXZhaWxhYmxlIGNo
ZWNrcy4KLSAqCi0gKiBXaGVuIHRlc3Rpbmcgd2hldGhlciBwYWlycyBvZiBpZGVudGlmaWVycyBh
cmUgY29uZnVzYWJsZSwgd2l0aCB0aGUgdXNwb29mX2FyZUNvbmZ1c2FibGUoKQotICogZmFtaWx5
IG9mIGZ1bmN0aW9ucywgdGhlIHJlbGV2YW50IHRlc3RzIGFyZQotICoKLSAqICAgLSMgVVNQT09G
X1NJTkdMRV9TQ1JJUFRfQ09ORlVTQUJMRTogIEFsbCBvZiB0aGUgY2hhcmFjdGVycyBmcm9tIHRo
ZSB0d28gaWRlbnRpZmllcnMgYXJlCi0gKiAgICAgIGZyb20gYSBzaW5nbGUgc2NyaXB0LCBhbmQg
dGhlIHR3byBpZGVudGlmaWVycyBhcmUgdmlzdWFsbHkgY29uZnVzYWJsZS4KLSAqICAgLSMgVVNQ
T09GX01JWEVEX1NDUklQVF9DT05GVVNBQkxFOiAgQXQgbGVhc3Qgb25lIG9mIHRoZSBpZGVudGlm
aWVycyBjb250YWlucyBjaGFyYWN0ZXJzCi0gKiAgICAgIGZyb20gbW9yZSB0aGFuIG9uZSBzY3Jp
cHQsIGFuZCB0aGUgdHdvIGlkZW50aWZpZXJzIGFyZSB2aXN1YWxseSBjb25mdXNhYmxlLgotICog
ICAtIyBVU1BPT0ZfV0hPTEVfU0NSSVBUX0NPTkZVU0FCTEU6IEVhY2ggb2YgdGhlIHR3byBpZGVu
dGlmaWVycyBpcyBvZiBhIHNpbmdsZSBzY3JpcHQsIGJ1dAotICogICAgICB0aGUgdHdvIGlkZW50
aWZpZXJzIGFyZSBmcm9tIGRpZmZlcmVudCBzY3JpcHRzLCBhbmQgdGhleSBhcmUgdmlzdWFsbHkg
Y29uZnVzYWJsZS4KLSAqCi0gKiBUaGUgc2FmZXN0IGFwcHJvYWNoIGlzIHRvIGVuYWJsZSBhbGwg
dGhyZWUgb2YgdGhlc2UgY2hlY2tzIGFzIGEgZ3JvdXAuCi0gKgotICogVVNQT09GX0FOWV9DQVNF
IGlzIGEgbW9kaWZpZXIgZm9yIHRoZSBhYm92ZSB0ZXN0cy4gIElmIHRoZSBpZGVudGlmaWVycyBi
ZWluZyBjaGVja2VkIGNhbgotICogYmUgb2YgbWl4ZWQgY2FzZSBhbmQgYXJlIHVzZWQgaW4gYSBj
YXNlLXNlbnNpdGl2ZSBtYW5uZXIsIHRoaXMgb3B0aW9uIHNob3VsZCBiZSBzcGVjaWZpZWQuCi0g
KgotICogSWYgdGhlIGlkZW50aWZpZXJzIGJlaW5nIGNoZWNrZWQgYXJlIHVzZWQgaW4gYSBjYXNl
LWluc2Vuc2l0aXZlIG1hbm5lciwgYW5kIGlmIHRoZXkgYXJlCi0gKiBkaXNwbGF5ZWQgdG8gdXNl
cnMgaW4gbG93ZXItY2FzZSBmb3JtIG9ubHksIHRoZSBVU1BPT0ZfQU5ZX0NBU0Ugb3B0aW9uIHNo
b3VsZCBub3QgYmUKLSAqIHNwZWNpZmllZC4gIENvbmZ1c2FiYWxpdHkgaXNzdWVzIGludm9sdmlu
ZyB1cHBlciBjYXNlIGxldHRlcnMgd2lsbCBub3QgYmUgcmVwb3J0ZWQuCi0gKgotICogV2hlbiBw
ZXJmb3JtaW5nIHRlc3RzIG9uIGEgc2luZ2xlIGlkZW50aWZpZXIsIHdpdGggdGhlIHVzcG9vZl9j
aGVjaygpIGZhbWlseSBvZiBmdW5jdGlvbnMsCi0gKiB0aGUgcmVsZXZhbnQgdGVzdHMgYXJlOgot
ICoKLSAqICAgIC0jIFVTUE9PRl9NSVhFRF9TQ1JJUFRfQ09ORlVTQUJMRTogdGhlIGlkZW50aWZp
ZXIgY29udGFpbnMgY2hhcmFjdGVycyBmcm9tIG11bHRpcGxlCi0gKiAgICAgICBzY3JpcHRzLCBh
bmQgdGhlcmUgZXhpc3RzIGFuIGlkZW50aWZpZXIgb2YgYSBzaW5nbGUgc2NyaXB0IHRoYXQgaXMg
dmlzdWFsbHkgY29uZnVzYWJsZS4KLSAqICAgIC0jIFVTUE9PRl9XSE9MRV9TQ1JJUFRfQ09ORlVT
QUJMRTogdGhlIGlkZW50aWZpZXIgY29uc2lzdHMgb2YgY2hhcmFjdGVycyBmcm9tIGEgc2luZ2xl
Ci0gKiAgICAgICBzY3JpcHQsIGFuZCB0aGVyZSBleGlzdHMgYSB2aXN1YWxseSBjb25mdXNhYmxl
IGlkZW50aWZpZXIuCi0gKiAgICAgICBUaGUgdmlzdWFsbHkgY29uZnVzYWJsZSBpZGVudGlmaWVy
IGFsc28gY29uc2lzdHMgb2YgY2hhcmFjdGVycyBmcm9tIGEgc2luZ2xlIHNjcmlwdC4KLSAqICAg
ICAgIGJ1dCBub3QgdGhlIHNhbWUgc2NyaXB0IGFzIHRoZSBpZGVudGlmaWVyIGJlaW5nIGNoZWNr
ZWQuCi0gKiAgICAtIyBVU1BPT0ZfQU5ZX0NBU0U6IG1vZGlmaWVzIHRoZSBtaXhlZCBzY3JpcHQg
YW5kIHdob2xlIHNjcmlwdCBjb25mdXNhYmxlcyB0ZXN0cy4gIElmCi0gKiAgICAgICBzcGVjaWZp
ZWQsIHRoZSBjaGVja3Mgd2lsbCBjb25zaWRlciBjb25mdXNhYmxlIGNoYXJhY3RlcnMgb2YgYW55
IGNhc2UuICBJZiB0aGlzIGZsYWcgaXMgbm90Ci0gKiAgICAgICBzZXQsIHRoZSB0ZXN0IGlzIHBl
cmZvcm1lZCBhc3N1bWluZyBjYXNlIGZvbGRlZCBpZGVudGlmaWVycy4KLSAqICAgIC0jIFVTUE9P
Rl9TSU5HTEVfU0NSSVBUOiBjaGVjayB0aGF0IHRoZSBpZGVudGlmaWVyIGNvbnRhaW5zIG9ubHkg
Y2hhcmFjdGVycyBmcm9tIGEKLSAqICAgICAgIHNpbmdsZSBzY3JpcHQuICAoQ2hhcmFjdGVycyBm
cm9tIHRoZSAnY29tbW9uJyBhbmQgJ2luaGVyaXRlZCcgc2NyaXB0cyBhcmUgaWdub3JlZC4pCi0g
KiAgICAgICBUaGlzIGlzIG5vdCBhIHRlc3QgZm9yIGNvbmZ1c2FibGUgaWRlbnRpZmllcnMKLSAq
ICAgIC0jIFVTUE9PRl9JTlZJU0lCTEU6IGNoZWNrIGFuIGlkZW50aWZpZXIgZm9yIHRoZSBwcmVz
ZW5jZSBvZiBpbnZpc2libGUgY2hhcmFjdGVycywKLSAqICAgICAgIHN1Y2ggYXMgemVyby13aWR0
aCBzcGFjZXMsIG9yIGNoYXJhY3RlciBzZXF1ZW5jZXMgdGhhdCBhcmUKLSAqICAgICAgIGxpa2Vs
eSBub3QgdG8gZGlzcGxheSwgc3VjaCBhcyBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGUgc2Ft
ZQotICogICAgICAgbm9uLXNwYWNpbmcgbWFyay4gIFRoaXMgY2hlY2sgZG9lcyBub3QgdGVzdCB0
aGUgaW5wdXQgc3RyaW5nIGFzIGEgd2hvbGUKLSAqICAgICAgIGZvciBjb25mb3JtYW5jZSB0byBh
bnkgcGFydGljdWxhciBzeW50YXggZm9yIGlkZW50aWZpZXJzLgotICogICAgLSMgVVNQT09GX0NI
QVJfTElNSVQ6IGNoZWNrIHRoYXQgYW4gaWRlbnRpZmllciBjb250YWlucyBvbmx5IGNoYXJhY3Rl
cnMgZnJvbSBhIHNwZWNpZmllZCBzZXQKLSAqICAgICAgIG9mIGFjY2VwdGFibGUgY2hhcmFjdGVy
cy4gIFNlZSB1c3Bvb2Zfc2V0QWxsb3dlZENoYXJzKCkgYW5kCi0gKiAgICAgICB1c3Bvb2Zfc2V0
QWxsb3dlZExvY2FsZXMoKS4KLSAqCi0gKiAgTm90ZSBvbiBTY3JpcHRzOgotICogICAgIENoYXJh
Y3RlcnMgZnJvbSB0aGUgVW5pY29kZSBTY3JpcHRzICJDb21tb24iIGFuZCAiSW5oZXJpdGVkIiBh
cmUgaWdub3JlZCB3aGVuIGNvbnNpZGVyaW5nCi0gKiAgICAgdGhlIHNjcmlwdCBvZiBhbiBpZGVu
dGlmaWVyLiBDb21tb24gY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0cyBhbmQgc3ltYm9scyB0aGF0
Ci0gKiAgICAgYXJlIG5vcm1hbGx5IHVzZWQgd2l0aCB0ZXh0IGZyb20gbW9yZSB0aGFuIG9uZSBz
Y3JpcHQuCi0gKgotICogIElkZW50aWZpZXIgU2tlbGV0b25zOiAgQSBza2VsZXRvbiBpcyBhIHRy
YW5zZm9ybWF0aW9uIG9mIGFuIGlkZW50aWZpZXIsIHN1Y2ggdGhhdAotICogIGFsbCBpZGVudGlm
aWVycyB0aGF0IGFyZSBjb25mdXNhYmxlIHdpdGggZWFjaCBvdGhlciBoYXZlIHRoZSBzYW1lIHNr
ZWxldG9uLgotICogIFVzaW5nIHNrZWxldG9ucywgaXQgaXMgcG9zc2libGUgdG8gYnVpbGQgYSBk
aWN0aW9uYXJ5IGRhdGEgc3RydWN0dXJlIGZvcgotICogIGEgc2V0IG9mIGlkZW50aWZpZXJzLCBh
bmQgdGhlbiBxdWlja2x5IHRlc3Qgd2hldGhlciBhIG5ldyBpZGVudGlmaWVyIGlzCi0gKiAgY29u
ZnVzYWJsZSB3aXRoIGFuIGlkZW50aWZpZXIgYWxyZWFkeSBpbiB0aGUgc2V0LiAgVGhlIHVzcG9v
Zl9nZXRTa2VsZXRvbigpCi0gKiAgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3aWxsIHByb2R1Y2UgdGhl
IHNrZWxldG9uIGZyb20gYW4gaWRlbnRpZmllci4KLSAqCi0gKiAgTm90ZSB0aGF0IHNrZWxldG9u
cyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlIGJldHdlZW4gdmVyc2lvbnMgCi0gKiAg
b2YgVW5pY29kZSBvciBJQ1UsIHNvIGFuIGFwcGxpY2F0aW9ucyBzaG91bGQgbm90IHJlbHkgb24g
Y3JlYXRpbmcgYSBwZXJtYW5lbnQsCi0gKiAgb3IgZGlmZmljdWx0IHRvIHVwZGF0ZSwgZGF0YWJh
c2Ugb2Ygc2tlbGV0b25zLiAgSW5zdGFiaWxpdGllcyByZXN1bHQgZnJvbQotICogIGlkZW50aWZ5
aW5nIG5ldyBwYWlycyBvciBzZXF1ZW5jZXMgb2YgY2hhcmFjdGVycyB0aGF0IGFyZSB2aXN1YWxs
eQotICogIGNvbmZ1c2FibGUsIGFuZCB0aHVzIG11c3QgYmUgbWFwcGVkIHRvIHRoZSBzYW1lIHNr
ZWxldG9uIGNoYXJhY3RlcihzKS4KLSAqCi0gKiAgU2tlbGV0b25zIGFyZSBjb21wdXRlZCB1c2lu
ZyB0aGUgYWxnb3JpdGhtIGFuZCBkYXRhIGRlc2NyaWJlIGluIFVuaWNvZGUgVUFYIDM5LgotICog
IFRoZSBsYXRlc3QgcHJvcG9zZWQgdXBkYXRlLCBVQVggMzkgVmVyc2lvbiA4IGRyYWZ0IDEsIHNh
eXMgInRoZSB0YWJsZXMgU0wsIFNBLCBhbmQgTUwKLSAqICB3ZXJlIHN0aWxsIHByb2JsZW1hdGlj
LCBhbmQgZGlzY291cmFnZWQgZnJvbSB1c2UgaW4gW1VuaW9jZGVdIDcuMC4KLSAqICBUaGV5IHdl
cmUgdGh1cyByZW1vdmVkIGZyb20gdmVyc2lvbiA4LjAiCi0gKgotICogIEluIGxpZ2h0IG9mIHRo
aXMsIHRoZSBkZWZhdWx0IG1hcHBpbmcgZGF0YSBpbmNsdWRlZCB3aXRoIElDVSA1NSB1c2VzIHRo
ZQotICogIFVuaWNvZGUgNyBNQSAoTXVsdGkgc2NyaXB0IEFueSBjYXNlKSB0YWJsZSBkYXRhIGZv
ciB0aGUgb3RoZXIgdHlwZSBvcHRpb25zCi0gKiAgKFNpbmdsZSBTY3JpcHQsIEFueSBDYXNlKSwg
KFNpbmdsZSBTY3JpcHQsIExvd2VyIENhc2UpIGFuZCAoTXVsdGkgU2NyaXB0LCBMb3dlciBDYXNl
KS4KKyAqIDxwPgorICogVGhpcyBjbGFzcywgYmFzZWQgb24gPGEgaHJlZj0iaHR0cDovL3VuaWNv
ZGUub3JnL3JlcG9ydHMvdHIzNiI+VW5pY29kZSBUZWNobmljYWwgUmVwb3J0ICMzNjwvYT4gYW5k
CisgKiA8YSBocmVmPSJodHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjM5Ij5Vbmljb2RlIFRl
Y2huaWNhbCBTdGFuZGFyZCAjMzk8L2E+LCBoYXMgdHdvIG1haW4gZnVuY3Rpb25zOgorICoKKyAq
IDxvbD4KKyAqIDxsaT5DaGVja2luZyB3aGV0aGVyIHR3byBzdHJpbmdzIGFyZSB2aXN1YWxseSA8
ZW0+Y29uZnVzYWJsZTwvZW0+IHdpdGggZWFjaCBvdGhlciwgc3VjaCBhcyAiSGFydmVzdCIgYW5k
CisgKiAmcXVvdDsmRXRhO2FydmVzdCZxdW90Oywgd2hlcmUgdGhlIHNlY29uZCBzdHJpbmcgc3Rh
cnRzIHdpdGggdGhlIEdyZWVrIGNhcGl0YWwgbGV0dGVyIEV0YS48L2xpPgorICogPGxpPkNoZWNr
aW5nIHdoZXRoZXIgYW4gaW5kaXZpZHVhbCBzdHJpbmcgaXMgbGlrZWx5IHRvIGJlIGFuIGF0dGVt
cHQgYXQgY29uZnVzaW5nIHRoZSByZWFkZXIgKDxlbT5zcG9vZgorICogZGV0ZWN0aW9uPC9lbT4p
LCBzdWNoIGFzICJwYXlwYWwiIHdpdGggc29tZSBMYXRpbiBjaGFyYWN0ZXJzIHN1YnN0aXR1dGVk
IHdpdGggQ3lyaWxsaWMgbG9vay1hbGlrZXMuPC9saT4KKyAqIDwvb2w+CisgKgorICogPHA+Cisg
KiBBbHRob3VnaCBvcmlnaW5hbGx5IGRlc2lnbmVkIGFzIGEgbWV0aG9kIGZvciBmbGFnZ2luZyBz
dXNwaWNpb3VzIGlkZW50aWZpZXIgc3RyaW5ncyBzdWNoIGFzIFVSTHMsCisgKiA8Y29kZT5VU3Bv
b2ZDaGVja2VyPC9jb2RlPiBoYXMgYSBudW1iZXIgb2Ygb3RoZXIgcHJhY3RpY2FsIHVzZSBjYXNl
cywgc3VjaCBhcyBwcmV2ZW50aW5nIGF0dGVtcHRzIHRvIGV2YWRlIGJhZC13b3JkCisgKiBjb250
ZW50IGZpbHRlcnMuCisgKgorICogPHA+CisgKiBUaGUgZnVuY3Rpb25zIG9mIHRoaXMgY2xhc3Mg
YXJlIGV4cG9zZWQgYXMgQyBBUEksIHdpdGggYSBoYW5kZnVsIG9mIHN5bnRhY3RpY2FsIGNvbnZl
bmllbmNlcyBmb3IgQysrLgorICoKKyAqIDxoMj5Db25mdXNhYmxlczwvaDI+CisgKgorICogPHA+
CisgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IHRvIHVzZSA8Y29kZT5VU3Bvb2ZD
aGVja2VyPC9jb2RlPiB0byBjaGVjayBmb3IgY29uZnVzYWJpbGl0eSBiZXR3ZWVuIHR3byBzdHJp
bmdzOgorICoKKyAqIFxjb2Rley5jfQorICogVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CisgKiBVQ2hhciogc3RyMSA9IChVQ2hhciopIHUiSGFydmVzdCI7CisgKiBVQ2hhciogc3Ry
MiA9IChVQ2hhciopIHUiXHUwMzk3YXJ2ZXN0IjsgIC8vIHdpdGggVSswMzk3IEdSRUVLIENBUElU
QUwgTEVUVEVSIEVUQQorICoKKyAqIFVTcG9vZkNoZWNrZXIqIHNjID0gdXNwb29mX29wZW4oJnN0
YXR1cyk7CisgKiB1c3Bvb2Zfc2V0Q2hlY2tzKHNjLCBVU1BPT0ZfQ09ORlVTQUJMRSwgJnN0YXR1
cyk7CisgKgorICogaW50MzJfdCBiaXRtYXNrID0gdXNwb29mX2FyZUNvbmZ1c2FibGUoc2MsIHN0
cjEsIC0xLCBzdHIyLCAtMSwgJnN0YXR1cyk7CisgKiBVQm9vbCByZXN1bHQgPSBiaXRtYXNrICE9
IDA7CisgKiAvLyBhcmVDb25mdXNhYmxlOiAxIChzdGF0dXM6IFVfWkVST19FUlJPUikKKyAqIHBy
aW50ZigiYXJlQ29uZnVzYWJsZTogJWQgKHN0YXR1czogJXMpXG4iLCByZXN1bHQsIHVfZXJyb3JO
YW1lKHN0YXR1cykpOworICogdXNwb29mX2Nsb3NlKHNjKTsKKyAqIFxlbmRjb2RlCisgKgorICog
PHA+CisgKiBUaGUgY2FsbCB0byB7QGxpbmsgdXNwb29mX29wZW59IGNyZWF0ZXMgYSA8Y29kZT5V
U3Bvb2ZDaGVja2VyPC9jb2RlPiBvYmplY3Q7IHRoZSBjYWxsIHRvIHtAbGluayB1c3Bvb2Zfc2V0
Q2hlY2tzfQorICogZW5hYmxlcyBjb25mdXNhYmxlIGNoZWNraW5nIGFuZCBkaXNhYmxlcyBhbGwg
b3RoZXIgY2hlY2tzOyB0aGUgY2FsbCB0byB7QGxpbmsgdXNwb29mX2FyZUNvbmZ1c2FibGV9IHBl
cmZvcm1zIHRoZQorICogY29uZnVzYWJpbGl0eSB0ZXN0OyBhbmQgdGhlIGZvbGxvd2luZyBsaW5l
IGV4dHJhY3RzIHRoZSByZXN1bHQgb3V0IG9mIHRoZSByZXR1cm4gdmFsdWUuIEZvciBiZXN0IHBl
cmZvcm1hbmNlLAorICogdGhlIGluc3RhbmNlIHNob3VsZCBiZSBjcmVhdGVkIG9uY2UgKGUuZy4s
IHVwb24gYXBwbGljYXRpb24gc3RhcnR1cCksIGFuZCB0aGUgZWZmaWNpZW50CisgKiB7QGxpbmsg
dXNwb29mX2FyZUNvbmZ1c2FibGV9IG1ldGhvZCBjYW4gYmUgdXNlZCBhdCBydW50aW1lLgorICoK
KyAqIDxwPgorICogVGhlIHR5cGUge0BsaW5rIExvY2FsVVNwb29mQ2hlY2tlclBvaW50ZXJ9IGlz
IGV4cG9zZWQgZm9yIEMrKyBwcm9ncmFtbWVycy4gIEl0IHdpbGwgYXV0b21hdGljYWxseSBjYWxs
CisgKiB7QGxpbmsgdXNwb29mX2Nsb3NlfSB3aGVuIHRoZSBvYmplY3QgZ29lcyBvdXQgb2Ygc2Nv
cGU6CisgKgorICogXGNvZGV7LmNwcH0KKyAqIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICogTG9jYWxVU3Bvb2ZDaGVja2VyUG9pbnRlciBzYyh1c3Bvb2Zfb3Blbigmc3RhdHVz
KSk7CisgKiB1c3Bvb2Zfc2V0Q2hlY2tzKHNjLmdldEFsaWFzKCksIFVTUE9PRl9DT05GVVNBQkxF
LCAmc3RhdHVzKTsKKyAqIC8vIC4uLgorICogXGVuZGNvZGUKKyAqCisgKiA8cD4KKyAqIFVUUyAz
OSBkZWZpbmVzIHR3byBzdHJpbmdzIHRvIGJlIDxlbT5jb25mdXNhYmxlPC9lbT4gaWYgdGhleSBt
YXAgdG8gdGhlIHNhbWUgPGVtPnNrZWxldG9uIHN0cmluZzwvZW0+LiBBIHNrZWxldG9uIGNhbgor
ICogYmUgdGhvdWdodCBvZiBhcyBhICJoYXNoIGNvZGUiLiB7QGxpbmsgdXNwb29mX2dldFNrZWxl
dG9ufSBjb21wdXRlcyB0aGUgc2tlbGV0b24gZm9yIGEgcGFydGljdWxhciBzdHJpbmcsIHNvCisg
KiB0aGUgZm9sbG93aW5nIHNuaXBwZXQgaXMgZXF1aXZhbGVudCB0byB0aGUgZXhhbXBsZSBhYm92
ZToKKyAqCisgKiBcY29kZXsuY30KKyAqIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OworICogVUNoYXIqIHN0cjEgPSAoVUNoYXIqKSB1IkhhcnZlc3QiOworICogVUNoYXIqIHN0cjIg
PSAoVUNoYXIqKSB1Ilx1MDM5N2FydmVzdCI7ICAvLyB3aXRoIFUrMDM5NyBHUkVFSyBDQVBJVEFM
IExFVFRFUiBFVEEKKyAqCisgKiBVU3Bvb2ZDaGVja2VyKiBzYyA9IHVzcG9vZl9vcGVuKCZzdGF0
dXMpOworICogdXNwb29mX3NldENoZWNrcyhzYywgVVNQT09GX0NPTkZVU0FCTEUsICZzdGF0dXMp
OworICoKKyAqIC8vIEdldCBza2VsZXRvbiAxCisgKiBpbnQzMl90IHNrZWwxTGVuID0gdXNwb29m
X2dldFNrZWxldG9uKHNjLCAwLCBzdHIxLCAtMSwgTlVMTCwgMCwgJnN0YXR1cyk7CisgKiBVQ2hh
ciogc2tlbDEgPSAoVUNoYXIqKSBtYWxsb2MoKytza2VsMUxlbiAqIHNpemVvZihVQ2hhcikpOwor
ICogc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICogdXNwb29mX2dldFNrZWxldG9uKHNjLCAwLCBz
dHIxLCAtMSwgc2tlbDEsIHNrZWwxTGVuLCAmc3RhdHVzKTsKKyAqCisgKiAvLyBHZXQgc2tlbGV0
b24gMgorICogaW50MzJfdCBza2VsMkxlbiA9IHVzcG9vZl9nZXRTa2VsZXRvbihzYywgMCwgc3Ry
MiwgLTEsIE5VTEwsIDAsICZzdGF0dXMpOworICogVUNoYXIqIHNrZWwyID0gKFVDaGFyKikgbWFs
bG9jKCsrc2tlbDJMZW4gKiBzaXplb2YoVUNoYXIpKTsKKyAqIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKKyAqIHVzcG9vZl9nZXRTa2VsZXRvbihzYywgMCwgc3RyMiwgLTEsIHNrZWwyLCBza2VsMkxl
biwgJnN0YXR1cyk7CisgKgorICogLy8gQXJlIHRoZSBza2VsZXRvbnMgdGhlIHNhbWU/CisgKiBV
Qm9vbCByZXN1bHQgPSB1X3N0cmNtcChza2VsMSwgc2tlbDIpID09IDA7CisgKiAvLyBhcmVDb25m
dXNhYmxlOiAxIChzdGF0dXM6IFVfWkVST19FUlJPUikKKyAqIHByaW50ZigiYXJlQ29uZnVzYWJs
ZTogJWQgKHN0YXR1czogJXMpXG4iLCByZXN1bHQsIHVfZXJyb3JOYW1lKHN0YXR1cykpOworICog
dXNwb29mX2Nsb3NlKHNjKTsKKyAqIGZyZWUoc2tlbDEpOworICogZnJlZShza2VsMik7CisgKiBc
ZW5kY29kZQorICoKKyAqIDxwPgorICogSWYgeW91IG5lZWQgdG8gY2hlY2sgaWYgYSBzdHJpbmcg
aXMgY29uZnVzYWJsZSB3aXRoIGFueSBzdHJpbmcgaW4gYSBkaWN0aW9uYXJ5IG9mIG1hbnkgc3Ry
aW5ncywgcmF0aGVyIHRoYW4gY2FsbGluZworICoge0BsaW5rIHVzcG9vZl9hcmVDb25mdXNhYmxl
fSBtYW55IHRpbWVzIGluIGEgbG9vcCwge0BsaW5rIHVzcG9vZl9nZXRTa2VsZXRvbn0gY2FuIGJl
IHVzZWQgaW5zdGVhZCwgYXMgc2hvd24gYmVsb3c6CisgKgorICogXGNvZGV7LmN9CisgKiBVRXJy
b3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAqICNkZWZpbmUgRElDVElPTkFSWV9MRU5H
VEggMgorICogVUNoYXIqIGRpY3Rpb25hcnlbRElDVElPTkFSWV9MRU5HVEhdID0geyAoVUNoYXIq
KSB1ImxvcmVtIiwgKFVDaGFyKikgdSJpcHN1bSIgfTsKKyAqIFVDaGFyKiBza2VsZXRvbnNbRElD
VElPTkFSWV9MRU5HVEhdOworICogVUNoYXIqIHN0ciA9IChVQ2hhciopIHUiMW9yZXJuIjsKKyAq
CisgKiAvLyBTZXR1cDoKKyAqIFVTcG9vZkNoZWNrZXIqIHNjID0gdXNwb29mX29wZW4oJnN0YXR1
cyk7CisgKiB1c3Bvb2Zfc2V0Q2hlY2tzKHNjLCBVU1BPT0ZfQ09ORlVTQUJMRSwgJnN0YXR1cyk7
CisgKiBmb3IgKHNpemVfdCBpPTA7IGk8RElDVElPTkFSWV9MRU5HVEg7IGkrKykgeworICogICAg
IFVDaGFyKiB3b3JkID0gZGljdGlvbmFyeVtpXTsKKyAqICAgICBpbnQzMl90IGxlbiA9IHVzcG9v
Zl9nZXRTa2VsZXRvbihzYywgMCwgd29yZCwgLTEsIE5VTEwsIDAsICZzdGF0dXMpOworICogICAg
IHNrZWxldG9uc1tpXSA9IChVQ2hhciopIG1hbGxvYygrK2xlbiAqIHNpemVvZihVQ2hhcikpOwor
ICogICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAqICAgICB1c3Bvb2ZfZ2V0U2tlbGV0b24o
c2MsIDAsIHdvcmQsIC0xLCBza2VsZXRvbnNbaV0sIGxlbiwgJnN0YXR1cyk7CisgKiB9CisgKgor
ICogLy8gTGl2ZSBDaGVjazoKKyAqIHsKKyAqICAgICBpbnQzMl90IGxlbiA9IHVzcG9vZl9nZXRT
a2VsZXRvbihzYywgMCwgc3RyLCAtMSwgTlVMTCwgMCwgJnN0YXR1cyk7CisgKiAgICAgVUNoYXIq
IHNrZWwgPSAoVUNoYXIqKSBtYWxsb2MoKytsZW4gKiBzaXplb2YoVUNoYXIpKTsKKyAqICAgICBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CisgKiAgICAgdXNwb29mX2dldFNrZWxldG9uKHNjLCAwLCBz
dHIsIC0xLCBza2VsLCBsZW4sICZzdGF0dXMpOworICogICAgIFVCb29sIHJlc3VsdCA9IEZBTFNF
OworICogICAgIGZvciAoc2l6ZV90IGk9MDsgaTxESUNUSU9OQVJZX0xFTkdUSDsgaSsrKSB7Cisg
KiAgICAgICAgIHJlc3VsdCA9IHVfc3RyY21wKHNrZWwsIHNrZWxldG9uc1tpXSkgPT0gMDsKKyAq
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBUUlVFKSB7IGJyZWFrOyB9CisgKiAgICAgfQorICogICAg
IC8vIEhhcyBjb25mdXNhYmxlIGluIGRpY3Rpb25hcnk6IDEgKHN0YXR1czogVV9aRVJPX0VSUk9S
KQorICogICAgIHByaW50ZigiSGFzIGNvbmZ1c2FibGUgaW4gZGljdGlvbmFyeTogJWQgKHN0YXR1
czogJXMpXG4iLCByZXN1bHQsIHVfZXJyb3JOYW1lKHN0YXR1cykpOworICogICAgIGZyZWUoc2tl
bCk7CisgKiB9CisgKgorICogZm9yIChzaXplX3QgaT0wOyBpPERJQ1RJT05BUllfTEVOR1RIOyBp
KyspIHsKKyAqICAgICBmcmVlKHNrZWxldG9uc1tpXSk7CisgKiB9CisgKiB1c3Bvb2ZfY2xvc2Uo
c2MpOworICogXGVuZGNvZGUKKyAqCisgKiA8cD4KKyAqIDxiPk5vdGU6PC9iPiBTaW5jZSB0aGUg
VW5pY29kZSBjb25mdXNhYmxlcyBtYXBwaW5nIHRhYmxlIGlzIGZyZXF1ZW50bHkgdXBkYXRlZCwg
Y29uZnVzYWJsZSBza2VsZXRvbnMgYXJlIDxlbT5ub3Q8L2VtPgorICogZ3VhcmFudGVlZCB0byBi
ZSB0aGUgc2FtZSBiZXR3ZWVuIElDVSByZWxlYXNlcy4gV2UgdGhlcmVmb3JlIHJlY29tbWVuZCB0
aGF0IHlvdSBhbHdheXMgY29tcHV0ZSBjb25mdXNhYmxlIHNrZWxldG9ucworICogYXQgcnVudGlt
ZSBhbmQgZG8gbm90IHJlbHkgb24gY3JlYXRpbmcgYSBwZXJtYW5lbnQsIG9yIGRpZmZpY3VsdCB0
byB1cGRhdGUsIGRhdGFiYXNlIG9mIHNrZWxldG9ucy4KKyAqCisgKiA8aDI+U3Bvb2YgRGV0ZWN0
aW9uPC9oMj4KKyAqCisgKiA8cD4KKyAqIFRoZSBmb2xsb3dpbmcgc25pcHBldCBzaG93cyBhIG1p
bmltYWwgZXhhbXBsZSBvZiB1c2luZyA8Y29kZT5VU3Bvb2ZDaGVja2VyPC9jb2RlPiB0byBwZXJm
b3JtIHNwb29mIGRldGVjdGlvbiBvbiBhCisgKiBzdHJpbmc6CisgKgorICogXGNvZGV7LmN9Cisg
KiBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAqIFVDaGFyKiBzdHIgPSAoVUNo
YXIqKSB1InBcdTA0MzB5cGFsIjsgIC8vIHdpdGggVSswNDMwIENZUklMTElDIFNNQUxMIExFVFRF
UiBBCisgKgorICogLy8gR2V0IHRoZSBkZWZhdWx0IHNldCBvZiBhbGxvd2FibGUgY2hhcmFjdGVy
czoKKyAqIFVTZXQqIGFsbG93ZWQgPSB1c2V0X29wZW5FbXB0eSgpOworICogdXNldF9hZGRBbGwo
YWxsb3dlZCwgdXNwb29mX2dldFJlY29tbWVuZGVkU2V0KCZzdGF0dXMpKTsKKyAqIHVzZXRfYWRk
QWxsKGFsbG93ZWQsIHVzcG9vZl9nZXRJbmNsdXNpb25TZXQoJnN0YXR1cykpOworICoKKyAqIFVT
cG9vZkNoZWNrZXIqIHNjID0gdXNwb29mX29wZW4oJnN0YXR1cyk7CisgKiB1c3Bvb2Zfc2V0QWxs
b3dlZENoYXJzKHNjLCBhbGxvd2VkLCAmc3RhdHVzKTsKKyAqIHVzcG9vZl9zZXRSZXN0cmljdGlv
bkxldmVsKHNjLCBVU1BPT0ZfTU9ERVJBVEVMWV9SRVNUUklDVElWRSk7CisgKgorICogaW50MzJf
dCBiaXRtYXNrID0gdXNwb29mX2NoZWNrKHNjLCBzdHIsIC0xLCBOVUxMLCAmc3RhdHVzKTsKKyAq
IFVCb29sIHJlc3VsdCA9IGJpdG1hc2sgIT0gMDsKKyAqIC8vIGZhaWxzIGNoZWNrczogMSAoc3Rh
dHVzOiBVX1pFUk9fRVJST1IpCisgKiBwcmludGYoImZhaWxzIGNoZWNrczogJWQgKHN0YXR1czog
JXMpXG4iLCByZXN1bHQsIHVfZXJyb3JOYW1lKHN0YXR1cykpOworICogdXNwb29mX2Nsb3NlKHNj
KTsKKyAqIHVzZXRfY2xvc2UoYWxsb3dlZCk7CisgKiBcZW5kY29kZQorICoKKyAqIDxwPgorICog
QXMgaW4gdGhlIGNhc2UgZm9yIGNvbmZ1c2FiaWxpdHkgY2hlY2tpbmcsIGl0IGlzIGdvb2QgcHJh
Y3RpY2UgdG8gY3JlYXRlIG9uZSA8Y29kZT5VU3Bvb2ZDaGVja2VyPC9jb2RlPiBpbnN0YW5jZSBh
dAorICogc3RhcnR1cCwgYW5kIGNhbGwgdGhlIGNoZWFwZXIge0BsaW5rIHVzcG9vZl9jaGVja30g
b25saW5lLiBXZSBzcGVjaWZ5IHRoZSBzZXQgb2YKKyAqIGFsbG93ZWQgY2hhcmFjdGVycyB0byBi
ZSB0aG9zZSB3aXRoIHR5cGUgUkVDT01NRU5ERUQgb3IgSU5DTFVTSU9OLCBhY2NvcmRpbmcgdG8g
dGhlIHJlY29tbWVuZGF0aW9uIGluIFVUUyAzOS4KKyAqCisgKiA8cD4KKyAqIEluIGFkZGl0aW9u
IHRvIHtAbGluayB1c3Bvb2ZfY2hlY2t9LCB0aGUgZnVuY3Rpb24ge0BsaW5rIHVzcG9vZl9jaGVj
a1VURjh9IGlzIGV4cG9zZWQgZm9yIFVURjgtZW5jb2RlZCBjaGFyKiBzdHJpbmdzLAorICogYW5k
IHtAbGluayB1c3Bvb2ZfY2hlY2tVbmljb2RlU3RyaW5nfSBpcyBleHBvc2VkIGZvciBDKysgcHJv
Z3JhbW1lcnMuCisgKgorICogPHA+CisgKiBJZiB0aGUge0BsaW5rIFVTUE9PRl9BVVhfSU5GT30g
Y2hlY2sgaXMgZW5hYmxlZCwgYSBsaW1pdGVkIGFtb3VudCBvZiBpbmZvcm1hdGlvbiBvbiB3aHkg
YSBzdHJpbmcgZmFpbGVkIHRoZSBjaGVja3MKKyAqIGlzIGF2YWlsYWJsZSBpbiB0aGUgcmV0dXJu
ZWQgYml0bWFzay4gIEZvciBjb21wbGV0ZSBpbmZvcm1hdGlvbiwgdXNlIHRoZSB7QGxpbmsgdXNw
b29mX2NoZWNrMn0gY2xhc3Mgb2YgZnVuY3Rpb25zCisgKiB3aXRoIGEge0BsaW5rIFVTcG9vZkNo
ZWNrUmVzdWx0fSBwYXJhbWV0ZXI6CisgKgorICogXGNvZGV7LmN9CisgKiBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKKyAqIFVDaGFyKiBzdHIgPSAoVUNoYXIqKSB1InBcdTA0MzB5
cGFsIjsgIC8vIHdpdGggVSswNDMwIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgKgorICogLy8g
R2V0IHRoZSBkZWZhdWx0IHNldCBvZiBhbGxvd2FibGUgY2hhcmFjdGVyczoKKyAqIFVTZXQqIGFs
bG93ZWQgPSB1c2V0X29wZW5FbXB0eSgpOworICogdXNldF9hZGRBbGwoYWxsb3dlZCwgdXNwb29m
X2dldFJlY29tbWVuZGVkU2V0KCZzdGF0dXMpKTsKKyAqIHVzZXRfYWRkQWxsKGFsbG93ZWQsIHVz
cG9vZl9nZXRJbmNsdXNpb25TZXQoJnN0YXR1cykpOworICoKKyAqIFVTcG9vZkNoZWNrZXIqIHNj
ID0gdXNwb29mX29wZW4oJnN0YXR1cyk7CisgKiB1c3Bvb2Zfc2V0QWxsb3dlZENoYXJzKHNjLCBh
bGxvd2VkLCAmc3RhdHVzKTsKKyAqIHVzcG9vZl9zZXRSZXN0cmljdGlvbkxldmVsKHNjLCBVU1BP
T0ZfTU9ERVJBVEVMWV9SRVNUUklDVElWRSk7CisgKgorICogVVNwb29mQ2hlY2tSZXN1bHQqIGNo
ZWNrUmVzdWx0ID0gdXNwb29mX29wZW5DaGVja1Jlc3VsdCgmc3RhdHVzKTsKKyAqIGludDMyX3Qg
Yml0bWFzayA9IHVzcG9vZl9jaGVjazIoc2MsIHN0ciwgLTEsIGNoZWNrUmVzdWx0LCAmc3RhdHVz
KTsKKyAqCisgKiBpbnQzMl90IGZhaWx1cmVzMSA9IGJpdG1hc2s7CisgKiBpbnQzMl90IGZhaWx1
cmVzMiA9IHVzcG9vZl9nZXRDaGVja1Jlc3VsdENoZWNrcyhjaGVja1Jlc3VsdCwgJnN0YXR1cyk7
CisgKiBhc3NlcnQoZmFpbHVyZXMxID09IGZhaWx1cmVzMik7CisgKiAvLyBjaGVja3MgdGhhdCBm
YWlsZWQ6IDB4MDAwMDAwMTAgKHN0YXR1czogVV9aRVJPX0VSUk9SKQorICogcHJpbnRmKCJjaGVj
a3MgdGhhdCBmYWlsZWQ6ICUjMDEweCAoc3RhdHVzOiAlcylcbiIsIGZhaWx1cmVzMSwgdV9lcnJv
ck5hbWUoc3RhdHVzKSk7CisgKgorICogLy8gQ2xlYW51cDoKKyAqIHVzcG9vZl9jbG9zZShzYyk7
CisgKiB1c2V0X2Nsb3NlKGFsbG93ZWQpOworICogdXNwb29mX2Nsb3NlQ2hlY2tSZXN1bHQoY2hl
Y2tSZXN1bHQpOworICogXGVuZGNvZGUKKyAqCisgKiBDKysgdXNlcnMgY2FuIHRha2UgYWR2YW50
YWdlIG9mIGEgZmV3IHN5bnRhY3RpY2FsIGNvbnZlbmllbmNlcy4gIFRoZSBmb2xsb3dpbmcgc25p
cHBldCBpcyBmdW5jdGlvbmFsbHkKKyAqIGVxdWl2YWxlbnQgdG8gdGhlIG9uZSBhYm92ZToKKyAq
CisgKiBcY29kZXsuY3BwfQorICogVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
KiBVbmljb2RlU3RyaW5nIHN0cigoVUNoYXIqKSB1InBcdTA0MzB5cGFsIik7ICAvLyB3aXRoIFUr
MDQzMCBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICoKKyAqIC8vIEdldCB0aGUgZGVmYXVsdCBz
ZXQgb2YgYWxsb3dhYmxlIGNoYXJhY3RlcnM6CisgKiBVbmljb2RlU2V0IGFsbG93ZWQ7CisgKiBh
bGxvd2VkLmFkZEFsbCgqdXNwb29mX2dldFJlY29tbWVuZGVkVW5pY29kZVNldCgmc3RhdHVzKSk7
CisgKiBhbGxvd2VkLmFkZEFsbCgqdXNwb29mX2dldEluY2x1c2lvblVuaWNvZGVTZXQoJnN0YXR1
cykpOworICoKKyAqIExvY2FsVVNwb29mQ2hlY2tlclBvaW50ZXIgc2ModXNwb29mX29wZW4oJnN0
YXR1cykpOworICogdXNwb29mX3NldEFsbG93ZWRDaGFycyhzYy5nZXRBbGlhcygpLCBhbGxvd2Vk
LnRvVVNldCgpLCAmc3RhdHVzKTsKKyAqIHVzcG9vZl9zZXRSZXN0cmljdGlvbkxldmVsKHNjLmdl
dEFsaWFzKCksIFVTUE9PRl9NT0RFUkFURUxZX1JFU1RSSUNUSVZFKTsKKyAqCisgKiBMb2NhbFVT
cG9vZkNoZWNrUmVzdWx0UG9pbnRlciBjaGVja1Jlc3VsdCh1c3Bvb2Zfb3BlbkNoZWNrUmVzdWx0
KCZzdGF0dXMpKTsKKyAqIGludDMyX3QgYml0bWFzayA9IHVzcG9vZl9jaGVjazJVbmljb2RlU3Ry
aW5nKHNjLmdldEFsaWFzKCksIHN0ciwgY2hlY2tSZXN1bHQuZ2V0QWxpYXMoKSwgJnN0YXR1cyk7
CisgKgorICogaW50MzJfdCBmYWlsdXJlczEgPSBiaXRtYXNrOworICogaW50MzJfdCBmYWlsdXJl
czIgPSB1c3Bvb2ZfZ2V0Q2hlY2tSZXN1bHRDaGVja3MoY2hlY2tSZXN1bHQuZ2V0QWxpYXMoKSwg
JnN0YXR1cyk7CisgKiBhc3NlcnQoZmFpbHVyZXMxID09IGZhaWx1cmVzMik7CisgKiAvLyBjaGVj
a3MgdGhhdCBmYWlsZWQ6IDB4MDAwMDAwMTAgKHN0YXR1czogVV9aRVJPX0VSUk9SKQorICogcHJp
bnRmKCJjaGVja3MgdGhhdCBmYWlsZWQ6ICUjMDEweCAoc3RhdHVzOiAlcylcbiIsIGZhaWx1cmVz
MSwgdV9lcnJvck5hbWUoc3RhdHVzKSk7CisgKgorICogLy8gRXhwbGljaXQgY2xlYW51cCBub3Qg
bmVjZXNzYXJ5LgorICogXGVuZGNvZGUKKyAqCisgKiA8cD4KKyAqIFRoZSByZXR1cm4gdmFsdWUg
aXMgYSBiaXRtYXNrIG9mIHRoZSBjaGVja3MgdGhhdCBmYWlsZWQuIEluIHRoaXMgY2FzZSwgdGhl
cmUgd2FzIG9uZSBjaGVjayB0aGF0IGZhaWxlZDoKKyAqIHtAbGluayBVU1BPT0ZfUkVTVFJJQ1RJ
T05fTEVWRUx9LCBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaWZ0aCBiaXQgKDE2KS4gVGhlIHBvc3Np
YmxlIGNoZWNrcyBhcmU6CisgKgorICogPHVsPgorICogPGxpPjxjb2RlPlJFU1RSSUNUSU9OX0xF
VkVMPC9jb2RlPjogZmxhZ3Mgc3RyaW5ncyB0aGF0IHZpb2xhdGUgdGhlCisgKiA8YSBocmVmPSJo
dHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjM5LyNSZXN0cmljdGlvbl9MZXZlbF9EZXRlY3Rp
b24iPlJlc3RyaWN0aW9uIExldmVsPC9hPiB0ZXN0IGFzIHNwZWNpZmllZCBpbiBVVFMKKyAqIDM5
OyBpbiBtb3N0IGNhc2VzLCB0aGlzIG1lYW5zIGZsYWdnaW5nIHN0cmluZ3MgdGhhdCBjb250YWlu
IGNoYXJhY3RlcnMgZnJvbSBtdWx0aXBsZSBkaWZmZXJlbnQgc2NyaXB0cy48L2xpPgorICogPGxp
Pjxjb2RlPklOVklTSUJMRTwvY29kZT46IGZsYWdzIHN0cmluZ3MgdGhhdCBjb250YWluIGludmlz
aWJsZSBjaGFyYWN0ZXJzLCBzdWNoIGFzIHplcm8td2lkdGggc3BhY2VzLCBvciBjaGFyYWN0ZXIK
KyAqIHNlcXVlbmNlcyB0aGF0IGFyZSBsaWtlbHkgbm90IHRvIGRpc3BsYXksIHN1Y2ggYXMgbXVs
dGlwbGUgb2NjdXJyZW5jZXMgb2YgdGhlIHNhbWUgbm9uLXNwYWNpbmcgbWFyay48L2xpPgorICog
PGxpPjxjb2RlPkNIQVJfTElNSVQ8L2NvZGU+OiBmbGFncyBzdHJpbmdzIHRoYXQgY29udGFpbiBj
aGFyYWN0ZXJzIG91dHNpZGUgb2YgYSBzcGVjaWZpZWQgc2V0IG9mIGFjY2VwdGFibGUKKyAqIGNo
YXJhY3RlcnMuIFNlZSB7QGxpbmsgdXNwb29mX3NldEFsbG93ZWRDaGFyc30gYW5kIHtAbGluayB1
c3Bvb2Zfc2V0QWxsb3dlZExvY2FsZXN9LjwvbGk+CisgKiA8bGk+PGNvZGU+TUlYRURfTlVNQkVS
UzwvY29kZT46IGZsYWdzIHN0cmluZ3MgdGhhdCBjb250YWluIGRpZ2l0cyBmcm9tIG11bHRpcGxl
IGRpZmZlcmVudCBudW1iZXJpbmcgc3lzdGVtcy48L2xpPgorICogPC91bD4KKyAqCisgKiA8cD4K
KyAqIFRoZXNlIGNoZWNrcyBjYW4gYmUgZW5hYmxlZCBpbmRlcGVuZGVudGx5IG9mIGVhY2ggb3Ro
ZXIuIEZvciBleGFtcGxlLCBpZiB5b3Ugd2VyZSBpbnRlcmVzdGVkIGluIGNoZWNraW5nIGZvciBv
bmx5IHRoZQorICogSU5WSVNJQkxFIGFuZCBNSVhFRF9OVU1CRVJTIGNvbmRpdGlvbnMsIHlvdSBj
b3VsZCBkbzoKKyAqCisgKiBcY29kZXsuY30KKyAqIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICogVUNoYXIqIHN0ciA9IChVQ2hhciopIHUiOFx1MDlFQSI7ICAvLyA4IG1peGVk
IHdpdGggVSswOUVBIEJFTkdBTEkgRElHSVQgRk9VUgorICoKKyAqIFVTcG9vZkNoZWNrZXIqIHNj
ID0gdXNwb29mX29wZW4oJnN0YXR1cyk7CisgKiB1c3Bvb2Zfc2V0Q2hlY2tzKHNjLCBVU1BPT0Zf
SU5WSVNJQkxFIHwgVVNQT09GX01JWEVEX05VTUJFUlMsICZzdGF0dXMpOworICoKKyAqIGludDMy
X3QgYml0bWFzayA9IHVzcG9vZl9jaGVjazIoc2MsIHN0ciwgLTEsIE5VTEwsICZzdGF0dXMpOwor
ICogVUJvb2wgcmVzdWx0ID0gYml0bWFzayAhPSAwOworICogLy8gZmFpbHMgY2hlY2tzOiAxIChz
dGF0dXM6IFVfWkVST19FUlJPUikKKyAqIHByaW50ZigiZmFpbHMgY2hlY2tzOiAlZCAoc3RhdHVz
OiAlcylcbiIsIHJlc3VsdCwgdV9lcnJvck5hbWUoc3RhdHVzKSk7CisgKiB1c3Bvb2ZfY2xvc2Uo
c2MpOworICogXGVuZGNvZGUKKyAqCisgKiA8cD4KKyAqIEhlcmUgaXMgYW4gZXhhbXBsZSBpbiBD
Kysgc2hvd2luZyBob3cgdG8gY29tcHV0ZSB0aGUgcmVzdHJpY3Rpb24gbGV2ZWwgb2YgYSBzdHJp
bmc6CisgKgorICogXGNvZGV7LmNwcH0KKyAqIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICogVW5pY29kZVN0cmluZyBzdHIoKFVDaGFyKikgdSJwXHUwNDMweXBhbCIpOyAgLy8g
d2l0aCBVKzA0MzAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAqCisgKiAvLyBHZXQgdGhlIGRl
ZmF1bHQgc2V0IG9mIGFsbG93YWJsZSBjaGFyYWN0ZXJzOgorICogVW5pY29kZVNldCBhbGxvd2Vk
OworICogYWxsb3dlZC5hZGRBbGwoKnVzcG9vZl9nZXRSZWNvbW1lbmRlZFVuaWNvZGVTZXQoJnN0
YXR1cykpOworICogYWxsb3dlZC5hZGRBbGwoKnVzcG9vZl9nZXRJbmNsdXNpb25Vbmljb2RlU2V0
KCZzdGF0dXMpKTsKKyAqCisgKiBMb2NhbFVTcG9vZkNoZWNrZXJQb2ludGVyIHNjKHVzcG9vZl9v
cGVuKCZzdGF0dXMpKTsKKyAqIHVzcG9vZl9zZXRBbGxvd2VkQ2hhcnMoc2MuZ2V0QWxpYXMoKSwg
YWxsb3dlZC50b1VTZXQoKSwgJnN0YXR1cyk7CisgKiB1c3Bvb2Zfc2V0UmVzdHJpY3Rpb25MZXZl
bChzYy5nZXRBbGlhcygpLCBVU1BPT0ZfTU9ERVJBVEVMWV9SRVNUUklDVElWRSk7CisgKiB1c3Bv
b2Zfc2V0Q2hlY2tzKHNjLmdldEFsaWFzKCksIFVTUE9PRl9SRVNUUklDVElPTl9MRVZFTCB8IFVT
UE9PRl9BVVhfSU5GTywgJnN0YXR1cyk7CisgKgorICogTG9jYWxVU3Bvb2ZDaGVja1Jlc3VsdFBv
aW50ZXIgY2hlY2tSZXN1bHQodXNwb29mX29wZW5DaGVja1Jlc3VsdCgmc3RhdHVzKSk7CisgKiBp
bnQzMl90IGJpdG1hc2sgPSB1c3Bvb2ZfY2hlY2syVW5pY29kZVN0cmluZyhzYy5nZXRBbGlhcygp
LCBzdHIsIGNoZWNrUmVzdWx0LmdldEFsaWFzKCksICZzdGF0dXMpOworICoKKyAqIFVSZXN0cmlj
dGlvbkxldmVsIHJlc3RyaWN0aW9uTGV2ZWwgPSB1c3Bvb2ZfZ2V0Q2hlY2tSZXN1bHRSZXN0cmlj
dGlvbkxldmVsKGNoZWNrUmVzdWx0LmdldEFsaWFzKCksICZzdGF0dXMpOworICogLy8gU2luY2Ug
VVNQT09GX0FVWF9JTkZPIHdhcyBlbmFibGVkLCB0aGUgcmVzdHJpY3Rpb24gbGV2ZWwgaXMgYWxz
byBhdmFpbGFibGUgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlIGJpdG1hc2s6CisgKiBhc3NlcnQo
KHJlc3RyaWN0aW9uTGV2ZWwgJiBiaXRtYXNrKSA9PSByZXN0cmljdGlvbkxldmVsKTsKKyAqIC8v
IFJlc3RyaWN0aW9uIGxldmVsOiAweDUwMDAwMDAwIChzdGF0dXM6IFVfWkVST19FUlJPUikKKyAq
IHByaW50ZigiUmVzdHJpY3Rpb24gbGV2ZWw6ICUjMDEweCAoc3RhdHVzOiAlcylcbiIsIHJlc3Ry
aWN0aW9uTGV2ZWwsIHVfZXJyb3JOYW1lKHN0YXR1cykpOworICogXGVuZGNvZGUKKyAqCisgKiA8
cD4KKyAqIFRoZSBjb2RlICcweDUwMDAwMDAwJyBjb3JyZXNwb25kcyB0byB0aGUgcmVzdHJpY3Rp
b24gbGV2ZWwgVVNQT09GX01JTklNQUxMWV9SRVNUUklDVElWRS4gIFNpbmNlCisgKiBVU1BPT0Zf
TUlOSU1BTExZX1JFU1RSSUNUSVZFIGlzIHdlYWtlciB0aGFuIFVTUE9PRl9NT0RFUkFURUxZX1JF
U1RSSUNUSVZFLCB0aGUgc3RyaW5nIGZhaWxzIHRoZSBjaGVjay4KKyAqCisgKiA8cD4KKyAqIDxi
Pk5vdGU6PC9iPiBUaGUgUmVzdHJpY3Rpb24gTGV2ZWwgaXMgdGhlIG1vc3QgcG93ZXJmdWwgb2Yg
dGhlIGNoZWNrcy4gVGhlIGZ1bGwgbG9naWMgaXMgZG9jdW1lbnRlZCBpbgorICogPGEgaHJlZj0i
aHR0cDovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIzOS8jUmVzdHJpY3Rpb25fTGV2ZWxfRGV0ZWN0
aW9uIj5VVFMgMzk8L2E+LCBidXQgdGhlIGJhc2ljIGlkZWEgaXMgdGhhdCBzdHJpbmdzCisgKiBh
cmUgcmVzdHJpY3RlZCB0byBjb250YWluIGNoYXJhY3RlcnMgZnJvbSBvbmx5IGEgc2luZ2xlIHNj
cmlwdCwgPGVtPmV4Y2VwdDwvZW0+IHRoYXQgbW9zdCBzY3JpcHRzIGFyZSBhbGxvd2VkIHRvIGhh
dmUKKyAqIExhdGluIGNoYXJhY3RlcnMgaW50ZXJzcGVyc2VkLiBBbHRob3VnaCB0aGUgZGVmYXVs
dCByZXN0cmljdGlvbiBsZXZlbCBpcyA8Y29kZT5ISUdITFlfUkVTVFJJQ1RJVkU8L2NvZGU+LCBp
dCBpcworICogcmVjb21tZW5kZWQgdGhhdCB1c2VycyBzZXQgdGhlaXIgcmVzdHJpY3Rpb24gbGV2
ZWwgdG8gPGNvZGU+TU9ERVJBVEVMWV9SRVNUUklDVElWRTwvY29kZT4sIHdoaWNoIGFsbG93cyBM
YXRpbiBtaXhlZAorICogd2l0aCBhbGwgb3RoZXIgc2NyaXB0cyBleGNlcHQgQ3lyaWxsaWMsIEdy
ZWVrLCBhbmQgQ2hlcm9rZWUsIHdpdGggd2hpY2ggaXQgaXMgb2Z0ZW4gY29uZnVzYWJsZS4gRm9y
IG1vcmUgZGV0YWlscyBvbgorICogdGhlIGxldmVscywgc2VlIFVUUyAzOSBvciB7QGxpbmsgVVJl
c3RyaWN0aW9uTGV2ZWx9LiBUaGUgUmVzdHJpY3Rpb24gTGV2ZWwgdGVzdCBpcyBhd2FyZSBvZiB0
aGUgc2V0IG9mCisgKiBhbGxvd2VkIGNoYXJhY3RlcnMgc2V0IGluIHtAbGluayB1c3Bvb2Zfc2V0
QWxsb3dlZENoYXJzfS4gTm90ZSB0aGF0IGNoYXJhY3RlcnMgd2hpY2ggaGF2ZSBzY3JpcHQgY29k
ZQorICogQ09NTU9OIG9yIElOSEVSSVRFRCwgc3VjaCBhcyBudW1iZXJzIGFuZCBwdW5jdHVhdGlv
biwgYXJlIGlnbm9yZWQgd2hlbiBjb21wdXRpbmcgd2hldGhlciBhIHN0cmluZyBoYXMgbXVsdGlw
bGUKKyAqIHNjcmlwdHMuCisgKgorICogPGgyPkFkZGl0aW9uYWwgSW5mb3JtYXRpb248L2gyPgor
ICoKKyAqIDxwPgorICogQSA8Y29kZT5VU3Bvb2ZDaGVja2VyPC9jb2RlPiBpbnN0YW5jZSBtYXkg
YmUgdXNlZCByZXBlYXRlZGx5IHRvIHBlcmZvcm0gY2hlY2tzIG9uIGFueSBudW1iZXIgb2YgaWRl
bnRpZmllcnMuCisgKgorICogPHA+CisgKiA8Yj5UaHJlYWQgU2FmZXR5OjwvYj4gVGhlIHRlc3Qg
ZnVuY3Rpb25zIGZvciBjaGVja2luZyBhIHNpbmdsZSBpZGVudGlmaWVyLCBvciBmb3IgdGVzdGlu
ZyB3aGV0aGVyCisgKiB0d28gaWRlbnRpZmllcnMgYXJlIHBvc3NpYmxlIGNvbmZ1c2FibGUsIGFy
ZSB0aHJlYWQgc2FmZS4gVGhleSBtYXkgY2FsbGVkIGNvbmN1cnJlbnRseSwgZnJvbSBtdWx0aXBs
ZSB0aHJlYWRzLAorICogdXNpbmcgdGhlIHNhbWUgVVNwb29mQ2hlY2tlciBpbnN0YW5jZS4KKyAq
CisgKiA8cD4KKyAqIE1vcmUgZ2VuZXJhbGx5LCB0aGUgc3RhbmRhcmQgSUNVIHRocmVhZCBzYWZl
dHkgcnVsZXMgYXBwbHk6IGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBjb25zdCBVU3Bvb2ZDaGVja2Vy
IHBhcmFtZXRlciBhcmUKKyAqIHRocmVhZCBzYWZlLiBUaG9zZSB0aGF0IHRha2UgYSBub24tY29u
c3QgVVNwb29mQ2hlY2tlciBhcmUgbm90IHRocmVhZCBzYWZlLi4KKyAqCisgKiBAc3RhYmxlIElD
VSA0LjYKICAqLwogCiBzdHJ1Y3QgVVNwb29mQ2hlY2tlcjsKKy8qKgorICogQHN0YWJsZSBJQ1Ug
NC4yCisgKi8KIHR5cGVkZWYgc3RydWN0IFVTcG9vZkNoZWNrZXIgVVNwb29mQ2hlY2tlcjsgLyoq
PCB0eXBlZGVmIGZvciBDIG9mIFVTcG9vZkNoZWNrZXIgKi8KIAorc3RydWN0IFVTcG9vZkNoZWNr
UmVzdWx0OworLyoqCisgKiBAc2VlIHVzcG9vZl9vcGVuQ2hlY2tSZXN1bHQKKyAqIEBzdGFibGUg
SUNVIDU4CisgKi8KK3R5cGVkZWYgc3RydWN0IFVTcG9vZkNoZWNrUmVzdWx0IFVTcG9vZkNoZWNr
UmVzdWx0OworCiAvKioKICAqIEVudW0gZm9yIHRoZSBraW5kcyBvZiBjaGVja3MgdGhhdCBVU3Bv
b2ZDaGVja2VyIGNhbiBwZXJmb3JtLgogICogVGhlc2UgZW51bSB2YWx1ZXMgYXJlIHVzZWQgYm90
aCB0byBzZWxlY3QgdGhlIHNldCBvZiBjaGVja3MgdGhhdApAQCAtMTYwLDQ1ICszODgsNTkgQEAg
dHlwZWRlZiBzdHJ1Y3QgVVNwb29mQ2hlY2tlciBVU3Bvb2ZDaGVja2VyOyAvKio8IHR5cGVkZWYg
Zm9yIEMgb2YgVVNwb29mQ2hlY2tlcgogICogQHN0YWJsZSBJQ1UgNC4yCiAgKi8KIHR5cGVkZWYg
ZW51bSBVU3Bvb2ZDaGVja3MgewotICAgIC8qKiAgIFNpbmdsZSBzY3JpcHQgY29uZnVzYWJsZSB0
ZXN0LgotICAgICAgKiAgIFdoZW4gdGVzdGluZyB3aGV0aGVyIHR3byBpZGVudGlmaWVycyBhcmUg
Y29uZnVzYWJsZSwgcmVwb3J0IHRoYXQgdGhleSBhcmUgaWYKLSAgICAgICogICBib3RoIGFyZSBm
cm9tIHRoZSBzYW1lIHNjcmlwdCBhbmQgdGhleSBhcmUgdmlzdWFsbHkgY29uZnVzYWJsZS4KLSAg
ICAgICogICBOb3RlOiB0aGlzIHRlc3QgaXMgbm90IGFwcGxpY2FibGUgdG8gYSBjaGVjayBvZiBh
IHNpbmdsZSBpZGVudGlmaWVyLgotICAgICAgKi8KKyAgICAvKioKKyAgICAgKiBXaGVuIHBlcmZv
cm1pbmcgdGhlIHR3by1zdHJpbmcge0BsaW5rIHVzcG9vZl9hcmVDb25mdXNhYmxlfSB0ZXN0LCB0
aGlzIGZsYWcgaW4gdGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMKKyAgICAgKiB0aGF0IHRoZSB0
d28gc3RyaW5ncyBhcmUgdmlzdWFsbHkgY29uZnVzYWJsZSBhbmQgdGhhdCB0aGV5IGFyZSBmcm9t
IHRoZSBzYW1lIHNjcmlwdCwgYWNjb3JkaW5nIHRvIFVUUyAzOSBzZWN0aW9uCisgICAgICogNC4K
KyAgICAgKgorICAgICAqIEBzZWUgdXNwb29mX2FyZUNvbmZ1c2FibGUKKyAgICAgKiBAc3RhYmxl
IElDVSA0LjIKKyAgICAgKi8KICAgICBVU1BPT0ZfU0lOR0xFX1NDUklQVF9DT05GVVNBQkxFID0g
ICAxLAogCi0gICAgLyoqIE1peGVkIHNjcmlwdCBjb25mdXNhYmxlIHRlc3QuCi0gICAgICogIFdo
ZW4gY2hlY2tpbmcgYSBzaW5nbGUgaWRlbnRpZmllciwgcmVwb3J0IGEgcHJvYmxlbSBpZgotICAg
ICAqICAgIHRoZSBpZGVudGlmaWVyIGNvbnRhaW5zIG11bHRpcGxlIHNjcmlwdHMsIGFuZAotICAg
ICAqICAgIGlzIGNvbmZ1c2FibGUgd2l0aCBzb21lIG90aGVyIGlkZW50aWZpZXIgaW4gYSBzaW5n
bGUgc2NyaXB0Ci0gICAgICogIFdoZW4gdGVzdGluZyB3aGV0aGVyIHR3byBpZGVudGlmaWVycyBh
cmUgY29uZnVzYWJsZSwgcmVwb3J0IHRoYXQgdGhleSBhcmUgaWYKLSAgICAgKiAgICB0aGUgdHdv
IElEcyBhcmUgdmlzdWFsbHkgY29uZnVzYWJsZSwgCi0gICAgICogICAgYW5kIGF0IGxlYXN0IG9u
ZSBjb250YWlucyBjaGFyYWN0ZXJzIGZyb20gbW9yZSB0aGFuIG9uZSBzY3JpcHQuCisgICAgLyoq
CisgICAgICogV2hlbiBwZXJmb3JtaW5nIHRoZSB0d28tc3RyaW5nIHtAbGluayB1c3Bvb2ZfYXJl
Q29uZnVzYWJsZX0gdGVzdCwgdGhpcyBmbGFnIGluIHRoZSByZXR1cm4gdmFsdWUgaW5kaWNhdGVz
CisgICAgICogdGhhdCB0aGUgdHdvIHN0cmluZ3MgYXJlIHZpc3VhbGx5IGNvbmZ1c2FibGUgYW5k
IHRoYXQgdGhleSBhcmUgPGI+bm90PC9iPiBmcm9tIHRoZSBzYW1lIHNjcmlwdCwgYWNjb3JkaW5n
IHRvIFVUUworICAgICAqIDM5IHNlY3Rpb24gNC4KKyAgICAgKgorICAgICAqIEBzZWUgdXNwb29m
X2FyZUNvbmZ1c2FibGUKKyAgICAgKiBAc3RhYmxlIElDVSA0LjIKICAgICAgKi8KICAgICBVU1BP
T0ZfTUlYRURfU0NSSVBUX0NPTkZVU0FCTEUgID0gICAyLAogCi0gICAgLyoqIFdob2xlIHNjcmlw
dCBjb25mdXNhYmxlIHRlc3QuCi0gICAgICogIFdoZW4gY2hlY2tpbmcgYSBzaW5nbGUgaWRlbnRp
ZmllciwgcmVwb3J0IGEgcHJvYmxlbSBpZgotICAgICAqICAgIFRoZSBpZGVudGlmaWVyIGlzIG9m
IGEgc2luZ2xlIHNjcmlwdCwgYW5kCi0gICAgICogICAgdGhlcmUgZXhpc3RzIGEgY29uZnVzYWJs
ZSBpZGVudGlmaWVyIGluIGFub3RoZXIgc2NyaXB0LgotICAgICAqICBXaGVuIHRlc3Rpbmcgd2hl
dGhlciB0d28gaWRlbnRpZmllcnMgYXJlIGNvbmZ1c2FibGUsIHJlcG9ydCB0aGF0IHRoZXkgYXJl
IGlmCi0gICAgICogICAgZWFjaCBpcyBvZiBhIHNpbmdsZSBzY3JpcHQsIAotICAgICAqICAgIHRo
ZSBzY3JpcHRzIG9mIHRoZSB0d28gaWRlbnRpZmllcnMgYXJlIGRpZmZlcmVudCwgYW5kCi0gICAg
ICogICAgdGhlIGlkZW50aWZpZXJzIGFyZSB2aXN1YWxseSBjb25mdXNhYmxlLgorICAgIC8qKgor
ICAgICAqIFdoZW4gcGVyZm9ybWluZyB0aGUgdHdvLXN0cmluZyB7QGxpbmsgdXNwb29mX2FyZUNv
bmZ1c2FibGV9IHRlc3QsIHRoaXMgZmxhZyBpbiB0aGUgcmV0dXJuIHZhbHVlIGluZGljYXRlcwor
ICAgICAqIHRoYXQgdGhlIHR3byBzdHJpbmdzIGFyZSB2aXN1YWxseSBjb25mdXNhYmxlIGFuZCB0
aGF0IHRoZXkgYXJlIG5vdCBmcm9tIHRoZSBzYW1lIHNjcmlwdCBidXQgYm90aCBvZiB0aGVtIGFy
ZQorICAgICAqIHNpbmdsZS1zY3JpcHQgc3RyaW5ncywgYWNjb3JkaW5nIHRvIFVUUyAzOSBzZWN0
aW9uIDQuCisgICAgICoKKyAgICAgKiBAc2VlIHVzcG9vZl9hcmVDb25mdXNhYmxlCisgICAgICog
QHN0YWJsZSBJQ1UgNC4yCiAgICAgICovCiAgICAgVVNQT09GX1dIT0xFX1NDUklQVF9DT05GVVNB
QkxFICA9ICAgNCwKLSAgICAKLSAgICAvKiogQW55IENhc2UgTW9kaWZpZXIgZm9yIGNvbmZ1c2Fi
bGUgaWRlbnRpZmllciB0ZXN0cy4KLSAgICAgICAgSWYgc3BlY2lmaWVkLCBjb25zaWRlciBhbGwg
Y2hhcmFjdGVycywgb2YgYW55IGNhc2UsIHdoZW4gbG9va2luZyBmb3IgY29uZnVzYWJsZXMuCi0g
ICAgICAgIElmIFVTUE9PRl9BTllfQ0FTRSBpcyBub3Qgc3BlY2lmaWVkLCBpZGVudGlmaWVycyBi
ZWluZyBjaGVja2VkIGFyZSBhc3N1bWVkIHRvIGhhdmUgYmVlbgotICAgICAgICBjYXNlIGZvbGRl
ZC4gIFVwcGVyIGNhc2UgY29uZnVzYWJsZSBjaGFyYWN0ZXJzIHdpbGwgbm90IGJlIGNoZWNrZWQu
Ci0gICAgICAgIFNlbGVjdHMgYmV0d2VlbiBMb3dlciBDYXNlIENvbmZ1c2FibGUgYW5kCi0gICAg
ICAgIEFueSBDYXNlIENvbmZ1c2FibGUuICAgKi8KKworICAgIC8qKgorICAgICAqIEVuYWJsZSB0
aGlzIGZsYWcgaW4ge0BsaW5rIHVzcG9vZl9zZXRDaGVja3N9IHRvIHR1cm4gb24gYWxsIHR5cGVz
IG9mIGNvbmZ1c2FibGVzLiAgWW91IG1heSBzZXQKKyAgICAgKiB0aGUgY2hlY2tzIHRvIHNvbWUg
c3Vic2V0IG9mIFNJTkdMRV9TQ1JJUFRfQ09ORlVTQUJMRSwgTUlYRURfU0NSSVBUX0NPTkZVU0FC
TEUsIG9yIFdIT0xFX1NDUklQVF9DT05GVVNBQkxFIHRvCisgICAgICogbWFrZSB7QGxpbmsgdXNw
b29mX2FyZUNvbmZ1c2FibGV9IHJldHVybiBvbmx5IHRob3NlIHR5cGVzIG9mIGNvbmZ1c2FibGVz
LgorICAgICAqCisgICAgICogQHNlZSB1c3Bvb2ZfYXJlQ29uZnVzYWJsZQorICAgICAqIEBzZWUg
dXNwb29mX2dldFNrZWxldG9uCisgICAgICogQHN0YWJsZSBJQ1UgNTgKKyAgICAgKi8KKyAgICBV
U1BPT0ZfQ09ORlVTQUJMRSAgICAgICAgICAgICAgID0gICBVU1BPT0ZfU0lOR0xFX1NDUklQVF9D
T05GVVNBQkxFIHwgVVNQT09GX01JWEVEX1NDUklQVF9DT05GVVNBQkxFIHwgVVNQT09GX1dIT0xF
X1NDUklQVF9DT05GVVNBQkxFLAorCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAg
IC8qKgorICAgICAgKiBUaGlzIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGFmZmVj
dHMgdGhlIGJlaGF2aW9yIG9mIFNwb29mQ2hlY2tlci4KKyAgICAgICoKKyAgICAgICogQGRlcHJl
Y2F0ZWQgSUNVIDU4ICBBbnkgY2FzZSBjb25mdXNhYmxlIG1hcHBpbmdzIHdlcmUgcmVtb3ZlZCBm
cm9tIFVUUyAzOTsgdGhlIGNvcnJlc3BvbmRpbmcgSUNVIEFQSSB3YXMgZGVwcmVjYXRlZC4KKyAg
ICAgICovCiAgICAgVVNQT09GX0FOWV9DQVNFICAgICAgICAgICAgICAgICA9ICAgOCwKKyNlbmRp
ZiAgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCiAKICAgICAvKioKICAgICAgICogQ2hlY2sg
dGhhdCBhbiBpZGVudGlmaWVyIGlzIG5vIGxvb3NlciB0aGFuIHRoZSBzcGVjaWZpZWQgUmVzdHJp
Y3Rpb25MZXZlbC4KLSAgICAgICogVGhlIGRlZmF1bHQgaWYgdXNwb29mX3NldFJlc3RyY3Rpb25M
ZXZlbCgpIGlzIG5vdCBjYWxsZWQgaXMgSElHSExZX1JFU1RSSUNUSVZFLgorICAgICAgKiBUaGUg
ZGVmYXVsdCBpZiB7QGxpbmsgdXNwb29mX3NldFJlc3RyaWN0aW9uTGV2ZWx9IGlzIG5vdCBjYWxs
ZWQgaXMgSElHSExZX1JFU1RSSUNUSVZFLgogICAgICAgKgogICAgICAgKiBJZiBVU1BPT0ZfQVVY
X0lORk8gaXMgZW5hYmxlZCB0aGUgYWN0dWFsIHJlc3RyaWN0aW9uIGxldmVsIG9mIHRoZQogICAg
ICAgKiBpZGVudGlmaWVyIGJlaW5nIHRlc3RlZCB3aWxsIGFsc28gYmUgcmV0dXJuZWQgYnkgdXNw
b29mX2NoZWNrKCkuCkBAIC0yMTEsNyArNDUzLDcgQEAgdHlwZWRlZiBlbnVtIFVTcG9vZkNoZWNr
cyB7CiAgICAgICAqLwogICAgIFVTUE9PRl9SRVNUUklDVElPTl9MRVZFTCAgICAgICAgPSAxNiwK
IAotI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkgCisjaWZuZGVmIFVfSElERV9ERVBSRUNB
VEVEX0FQSQogICAgIC8qKiBDaGVjayB0aGF0IGFuIGlkZW50aWZpZXIgY29udGFpbnMgb25seSBj
aGFyYWN0ZXJzIGZyb20gYQogICAgICAgKiBzaW5nbGUgc2NyaXB0IChwbHVzIGNoYXJzIGZyb20g
dGhlIGNvbW1vbiBhbmQgaW5oZXJpdGVkIHNjcmlwdHMuKQogICAgICAgKiBBcHBsaWVzIHRvIGNo
ZWNrcyBvZiBhIHNpbmdsZSBpZGVudGlmaWVyIGNoZWNrIG9ubHkuCkBAIC0yMTksNyArNDYxLDcg
QEAgdHlwZWRlZiBlbnVtIFVTcG9vZkNoZWNrcyB7CiAgICAgICAqLwogICAgIFVTUE9PRl9TSU5H
TEVfU0NSSVBUICAgICAgICAgICAgPSAgVVNQT09GX1JFU1RSSUNUSU9OX0xFVkVMLAogI2VuZGlm
ICAvKiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KLSAgIAorCiAgICAgLyoqIENoZWNrIGFuIGlk
ZW50aWZpZXIgZm9yIHRoZSBwcmVzZW5jZSBvZiBpbnZpc2libGUgY2hhcmFjdGVycywKICAgICAg
ICogc3VjaCBhcyB6ZXJvLXdpZHRoIHNwYWNlcywgb3IgY2hhcmFjdGVyIHNlcXVlbmNlcyB0aGF0
IGFyZQogICAgICAgKiBsaWtlbHkgbm90IHRvIGRpc3BsYXksIHN1Y2ggYXMgbXVsdGlwbGUgb2Nj
dXJyZW5jZXMgb2YgdGhlIHNhbWUKQEAgLTIyOSw5NyArNDcxLDExOSBAQCB0eXBlZGVmIGVudW0g
VVNwb29mQ2hlY2tzIHsKICAgICBVU1BPT0ZfSU5WSVNJQkxFICAgICAgICAgICAgICAgID0gIDMy
LAogCiAgICAgLyoqIENoZWNrIHRoYXQgYW4gaWRlbnRpZmllciBjb250YWlucyBvbmx5IGNoYXJh
Y3RlcnMgZnJvbSBhIHNwZWNpZmllZCBzZXQKLSAgICAgICogb2YgYWNjZXB0YWJsZSBjaGFyYWN0
ZXJzLiAgU2VlIHVzcG9vZl9zZXRBbGxvd2VkQ2hhcnMoKSBhbmQKLSAgICAgICogdXNwb29mX3Nl
dEFsbG93ZWRMb2NhbGVzKCkuCisgICAgICAqIG9mIGFjY2VwdGFibGUgY2hhcmFjdGVycy4gIFNl
ZSB7QGxpbmsgdXNwb29mX3NldEFsbG93ZWRDaGFyc30gYW5kCisgICAgICAqIHtAbGluayB1c3Bv
b2Zfc2V0QWxsb3dlZExvY2FsZXN9LiAgTm90ZSB0aGF0IGEgc3RyaW5nIHRoYXQgZmFpbHMgdGhp
cyBjaGVjaworICAgICAgKiB3aWxsIGFsc28gZmFpbCB0aGUge0BsaW5rIFVTUE9PRl9SRVNUUklD
VElPTl9MRVZFTH0gY2hlY2suCiAgICAgICAqLwogICAgIFVTUE9PRl9DSEFSX0xJTUlUICAgICAg
ICAgICAgICAgPSAgNjQsCiAKICAgIC8qKgotICAgICAqIENoZWNrIHRoYXQgYW4gaWRlbnRpZmll
ciBkb2VzIG5vdCBpbmNsdWRlIGRlY2ltYWwgZGlnaXRzIGZyb20KLSAgICAgKiBtb3JlIHRoYW4g
b25lIG51bWJlcmluZyBzeXN0ZW0uCi0gICAgICogCisgICAgICogQ2hlY2sgdGhhdCBhbiBpZGVu
dGlmaWVyIGRvZXMgbm90IG1peCBudW1iZXJzIGZyb20gZGlmZmVyZW50IG51bWJlcmluZyBzeXN0
ZW1zLgorICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgVVRTIDM5IHNlY3Rpb24gNS4z
LgorICAgICAqCiAgICAgICogQHN0YWJsZSBJQ1UgNTEKICAgICAgKi8KICAgICBVU1BPT0ZfTUlY
RURfTlVNQkVSUyAgICAgICAgICAgID0gMTI4LAogCiAgICAvKioKICAgICAgKiBFbmFibGUgYWxs
IHNwb29mIGNoZWNrcy4KLSAgICAgKiAKKyAgICAgKgogICAgICAqIEBzdGFibGUgSUNVIDQuNgog
ICAgICAqLwogICAgIFVTUE9PRl9BTExfQ0hFQ0tTICAgICAgICAgICAgICAgPSAweEZGRkYsCiAK
ICAgICAvKioKICAgICAgICogRW5hYmxlIHRoZSByZXR1cm4gb2YgYXV4aWxsYXJ5IChub24tZXJy
b3IpIGluZm9ybWF0aW9uIGluIHRoZQotICAgICAgKiB1cHBlciBiaXRzIG9mIHRoZSBjaGVjayBy
ZXN1bHRzIHZhbHVlLiAKKyAgICAgICogdXBwZXIgYml0cyBvZiB0aGUgY2hlY2sgcmVzdWx0cyB2
YWx1ZS4KICAgICAgICoKLSAgICAgICogSWYgdGhpcyAiY2hlY2siIGlzIG5vdCBlbmFibGVkLCB0
aGUgcmVzdWx0cyBvZiB1c3Bvb2ZfY2hlY2soKSB3aWxsIGJlIHplcm8gd2hlbiBhbgotICAgICAg
KiBpZGVudGlmaWVyIHBhc3NlcyBhbGwgb2YgdGhlIGVuYWJsZWQgY2hlY2tzLgorICAgICAgKiBJ
ZiB0aGlzICJjaGVjayIgaXMgbm90IGVuYWJsZWQsIHRoZSByZXN1bHRzIG9mIHtAbGluayB1c3Bv
b2ZfY2hlY2t9IHdpbGwgYmUKKyAgICAgICogemVybyB3aGVuIGFuIGlkZW50aWZpZXIgcGFzc2Vz
IGFsbCBvZiB0aGUgZW5hYmxlZCBjaGVja3MuCiAgICAgICAqCi0gICAgICAqIElmIHRoaXMgImNo
ZWNrIiBpcyBlbmFibGVkLCAodXNwb29mX2NoZWNrKCkgJiBVU1BPT0ZfQUxMX0NIRUNLUykgd2ls
bCBiZSB6ZXJvCi0gICAgICAqIHdoZW4gYW4gaWRlbnRpZmllciBwYXNzZXMgYWxsIGNoZWNrcy4K
KyAgICAgICogSWYgdGhpcyAiY2hlY2siIGlzIGVuYWJsZWQsICh1c3Bvb2ZfY2hlY2soKSAmIHtA
bGluayBVU1BPT0ZfQUxMX0NIRUNLU30pIHdpbGwKKyAgICAgICogYmUgemVybyB3aGVuIGFuIGlk
ZW50aWZpZXIgcGFzc2VzIGFsbCBjaGVja3MuCiAgICAgICAqCiAgICAgICAqIEBzdGFibGUgSUNV
IDUxCiAgICAgICAqLwogICAgIFVTUE9PRl9BVVhfSU5GTyAgICAgICAgICAgICAgICAgID0gMHg0
MDAwMDAwMAogCiAgICAgfSBVU3Bvb2ZDaGVja3M7Ci0gICAgCi0gICAgCisKKwogICAgIC8qKgot
ICAgICAqIENvbnN0YW50cyBmcm9tIFVBWCAjMzkgZm9yIHVzZSBpbiBzZXRSZXN0cmljdGlvbkxl
dmVsKCksIGFuZAorICAgICAqIENvbnN0YW50cyBmcm9tIFVBWCAjMzkgZm9yIHVzZSBpbiB7QGxp
bmsgdXNwb29mX3NldFJlc3RyaWN0aW9uTGV2ZWx9LCBhbmQKICAgICAgKiBmb3IgcmV0dXJuZWQg
aWRlbnRpZmllciByZXN0cmljdGlvbiBsZXZlbHMgaW4gY2hlY2sgcmVzdWx0cy4KKyAgICAgKgog
ICAgICAqIEBzdGFibGUgSUNVIDUxCisgICAgICoKKyAgICAgKiBAc2VlIHVzcG9vZl9zZXRSZXN0
cmljdGlvbkxldmVsCisgICAgICogQHNlZSB1c3Bvb2ZfY2hlY2sKICAgICAgKi8KICAgICB0eXBl
ZGVmIGVudW0gVVJlc3RyaWN0aW9uTGV2ZWwgewogICAgICAgICAvKioKLSAgICAgICAgICogT25s
eSBBU0NJSSBjaGFyYWN0ZXJzOiBVKzAwMDAuLlUrMDA3RgotICAgICAgICAgKiAKKyAgICAgICAg
ICogQWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgaW4gdGhlIGlkZW50aWZpZXIgcHJv
ZmlsZSBhbmQgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgaW4gdGhlCisgICAgICAg
ICAqIEFTQ0lJIHJhbmdlLgorICAgICAgICAgKgogICAgICAgICAgKiBAc3RhYmxlIElDVSA1MQog
ICAgICAgICAgKi8KICAgICAgICAgVVNQT09GX0FTQ0lJID0gMHgxMDAwMDAwMCwKICAgICAgICAg
LyoqCi0gICAgICAgICAgKiBBbGwgY2hhcmFjdGVycyBpbiBlYWNoIGlkZW50aWZpZXIgbXVzdCBi
ZSBmcm9tIGEgc2luZ2xlIHNjcmlwdC4KLSAgICAgICAgICAqCi0gICAgICAgICAgKiBAc3RhYmxl
IElDVSA1MwotICAgICAgICAgICovCisgICAgICAgICAqIFRoZSBzdHJpbmcgY2xhc3NpZmllcyBh
cyBBU0NJSS1Pbmx5LCBvciBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBpbiB0aGUg
aWRlbnRpZmllciBwcm9maWxlIGFuZAorICAgICAgICAgKiB0aGUgc3RyaW5nIGlzIHNpbmdsZS1z
Y3JpcHQsIGFjY29yZGluZyB0byB0aGUgZGVmaW5pdGlvbiBpbiBVVFMgMzkgc2VjdGlvbiA1LjEu
CisgICAgICAgICAqCisgICAgICAgICAqIEBzdGFibGUgSUNVIDUzCisgICAgICAgICAqLwogICAg
ICAgICBVU1BPT0ZfU0lOR0xFX1NDUklQVF9SRVNUUklDVElWRSA9IDB4MjAwMDAwMDAsCiAgICAg
ICAgIC8qKgotICAgICAgICAgKiBBbGwgY2hhcmFjdGVycyBpbiBlYWNoIGlkZW50aWZpZXIgbXVz
dCBiZSBmcm9tIGEgc2luZ2xlIHNjcmlwdCwgb3IgZnJvbSB0aGUgY29tYmluYXRpb25zOiBMYXRp
biArIEhhbiArCi0gICAgICAgICAqIEhpcmFnYW5hICsgS2F0YWthbmE7IExhdGluICsgSGFuICsg
Qm9wb21vZm87IG9yIExhdGluICsgSGFuICsgSGFuZ3VsLiBOb3RlIHRoYXQgdGhpcyBsZXZlbCB3
aWxsIHNhdGlzZnkgdGhlCi0gICAgICAgICAqIHZhc3QgbWFqb3JpdHkgb2YgTGF0aW4tc2NyaXB0
IHVzZXJzOyBhbHNvIHRoYXQgVFIzNiBoYXMgQVNDSUkgaW5zdGVhZCBvZiBMYXRpbi4KLSAgICAg
ICAgICogCisgICAgICAgICAqIFRoZSBzdHJpbmcgY2xhc3NpZmllcyBhcyBTaW5nbGUgU2NyaXB0
LCBvciBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBpbiB0aGUgaWRlbnRpZmllciBw
cm9maWxlIGFuZAorICAgICAgICAgKiB0aGUgc3RyaW5nIGlzIGNvdmVyZWQgYnkgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgc2V0cyBvZiBzY3JpcHRzLCBhY2NvcmRpbmcgdG8gdGhlIGRlZmluaXRpb24g
aW4gVVRTIDM5CisgICAgICAgICAqIHNlY3Rpb24gNS4xOgorICAgICAgICAgKiA8dWw+CisgICAg
ICAgICAqICAgPGxpPkxhdGluICsgSGFuICsgQm9wb21vZm8gKG9yIGVxdWl2YWxlbnRseTogTGF0
biArIEhhbmIpPC9saT4KKyAgICAgICAgICogICA8bGk+TGF0aW4gKyBIYW4gKyBIaXJhZ2FuYSAr
IEthdGFrYW5hIChvciBlcXVpdmFsZW50bHk6IExhdG4gKyBKcGFuKTwvbGk+CisgICAgICAgICAq
ICAgPGxpPkxhdGluICsgSGFuICsgSGFuZ3VsIChvciBlcXVpdmFsZW50bHk6IExhdG4gK0tvcmUp
PC9saT4KKyAgICAgICAgICogPC91bD4KKyAgICAgICAgICogVGhpcyBpcyB0aGUgZGVmYXVsdCBy
ZXN0cmljdGlvbiBpbiBJQ1UuCisgICAgICAgICAqCiAgICAgICAgICAqIEBzdGFibGUgSUNVIDUx
CiAgICAgICAgICAqLwogICAgICAgICBVU1BPT0ZfSElHSExZX1JFU1RSSUNUSVZFID0gMHgzMDAw
MDAwMCwKICAgICAgICAgLyoqCi0gICAgICAgICAqIEFsbG93IExhdGluIHdpdGggb3RoZXIgc2Ny
aXB0cyBleGNlcHQgQ3lyaWxsaWMsIEdyZWVrLCBDaGVyb2tlZSBPdGhlcndpc2UsIHRoZSBzYW1l
IGFzIEhpZ2hseSBSZXN0cmljdGl2ZQotICAgICAgICAgKiAKKyAgICAgICAgICogVGhlIHN0cmlu
ZyBjbGFzc2lmaWVzIGFzIEhpZ2hseSBSZXN0cmljdGl2ZSwgb3IgYWxsIGNoYXJhY3RlcnMgaW4g
dGhlIHN0cmluZyBhcmUgaW4gdGhlIGlkZW50aWZpZXIgcHJvZmlsZQorICAgICAgICAgKiBhbmQg
dGhlIHN0cmluZyBpcyBjb3ZlcmVkIGJ5IExhdGluIGFuZCBhbnkgb25lIG90aGVyIFJlY29tbWVu
ZGVkIG9yIEFzcGlyYXRpb25hbCBzY3JpcHQsIGV4Y2VwdCBDeXJpbGxpYywKKyAgICAgICAgICog
R3JlZWssIGFuZCBDaGVyb2tlZS4KKyAgICAgICAgICoKICAgICAgICAgICogQHN0YWJsZSBJQ1Ug
NTEKICAgICAgICAgICovCiAgICAgICAgIFVTUE9PRl9NT0RFUkFURUxZX1JFU1RSSUNUSVZFID0g
MHg0MDAwMDAwMCwKICAgICAgICAgLyoqCi0gICAgICAgICAqIEFsbG93IGFyYml0cmFyeSBtaXh0
dXJlcyBvZiBzY3JpcHRzLiBPdGhlcndpc2UsIHRoZSBzYW1lIGFzIE1vZGVyYXRlbHkgUmVzdHJp
Y3RpdmUuCi0gICAgICAgICAqIAorICAgICAgICAgKiBBbGwgY2hhcmFjdGVycyBpbiB0aGUgc3Ry
aW5nIGFyZSBpbiB0aGUgaWRlbnRpZmllciBwcm9maWxlLiAgQWxsb3cgYXJiaXRyYXJ5IG1peHR1
cmVzIG9mIHNjcmlwdHMuCisgICAgICAgICAqCiAgICAgICAgICAqIEBzdGFibGUgSUNVIDUxCiAg
ICAgICAgICAqLwogICAgICAgICBVU1BPT0ZfTUlOSU1BTExZX1JFU1RSSUNUSVZFID0gMHg1MDAw
MDAwMCwKICAgICAgICAgLyoqCiAgICAgICAgICAqIEFueSB2YWxpZCBpZGVudGlmaWVycywgaW5j
bHVkaW5nIGNoYXJhY3RlcnMgb3V0c2lkZSBvZiB0aGUgSWRlbnRpZmllciBQcm9maWxlLgotICAg
ICAgICAgKiAKKyAgICAgICAgICoKICAgICAgICAgICogQHN0YWJsZSBJQ1UgNTEKICAgICAgICAg
ICovCiAgICAgICAgIFVTUE9PRl9VTlJFU1RSSUNUSVZFID0gMHg2MDAwMDAwMCwKICAgICAgICAg
LyoqCi0gICAgICAgICAgKiBNYXNrIGZvciBzZWxlY3RpbmcgdGhlIFJlc3RyaWN0aW9uIExldmVs
IGJpdHMgZnJvbSB0aGUgcmV0dXJuIHZhbHVlIG9mIHVzcG9vZl9jaGVjaygpLgotICAgICAgICAg
ICogCi0gICAgICAgICAgKiBAc3RhYmxlIElDVSA1MwotICAgICAgICAgICovCi0gICAgICAgICBV
U1BPT0ZfUkVTVFJJQ1RJT05fTEVWRUxfTUFTSyA9IDB4N0YwMDAwMDAgCisgICAgICAgICAqIE1h
c2sgZm9yIHNlbGVjdGluZyB0aGUgUmVzdHJpY3Rpb24gTGV2ZWwgYml0cyBmcm9tIHRoZSByZXR1
cm4gdmFsdWUgb2Yge0BsaW5rIHVzcG9vZl9jaGVja30uCisgICAgICAgICAqCisgICAgICAgICAq
IEBzdGFibGUgSUNVIDUzCisgICAgICAgICAqLworICAgICAgICBVU1BPT0ZfUkVTVFJJQ1RJT05f
TEVWRUxfTUFTSyA9IDB4N0YwMDAwMDAsCisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKKyAg
ICAgICAgLyoqCisgICAgICAgICAqIEFuIHVuZGVmaW5lZCByZXN0cmljdGlvbiBsZXZlbC4KKyAg
ICAgICAgICogQGludGVybmFsCisgICAgICAgICAqLworICAgICAgICBVU1BPT0ZfVU5ERUZJTkVE
X1JFU1RSSUNUSVZFID0gLTEKKyNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogICAg
IH0gVVJlc3RyaWN0aW9uTGV2ZWw7CiAKIC8qKgotICogIENyZWF0ZSBhIFVuaWNvZGUgU3Bvb2Yg
Q2hlY2tlciwgY29uZmlndXJlZCB0byBwZXJmb3JtIGFsbCAKKyAqICBDcmVhdGUgYSBVbmljb2Rl
IFNwb29mIENoZWNrZXIsIGNvbmZpZ3VyZWQgdG8gcGVyZm9ybSBhbGwKICAqICBjaGVja3MgZXhj
ZXB0IGZvciBVU1BPT0ZfTE9DQUxFX0xJTUlUIGFuZCBVU1BPT0ZfQ0hBUl9MSU1JVC4KICAqICBO
b3RlIHRoYXQgYWRkaXRpb25hbCBjaGVja3MgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUsCiAg
KiAgcmVzdWx0aW5nIGluIHRoZSBjaGFuZ2VzIHRvIHRoZSBkZWZhdWx0IGNoZWNraW5nIGJlaGF2
aW9yLgpAQCAtMzU5LDEwICs2MjMsMTAgQEAgdXNwb29mX29wZW5Gcm9tU2VyaWFsaXplZChjb25z
dCB2b2lkICpkYXRhLCBpbnQzMl90IGxlbmd0aCwgaW50MzJfdCAqcEFjdHVhbExlbmcKIAogLyoq
CiAgICogT3BlbiBhIFNwb29mIENoZWNrZXIgZnJvbSB0aGUgc291cmNlIGZvcm0gb2YgdGhlIHNw
b29mIGRhdGEuCi0gICogVGhlIHR3byBpbnB1dHMgY29ycmVzcG9uZCB0byB0aGUgVW5pY29kZSBk
YXRhIGZpbGVzIGNvbmZ1c2FibGVzLnR4dAotICAqIGFuZCBjb25mdXNhYmxlc1dob2xlU2NyaXB0
LnR4dCBhcyBkZXNjcmliZWQgaW4gVW5pY29kZSBVQVggIzM5LgotICAqIFRoZSBzeW50YXggb2Yg
dGhlIHNvdXJjZSBkYXRhIGlzIGFzIGRlc2NyaWJlZCBpbiBVQVggIzM5IGZvcgotICAqIHRoZXNl
IGZpbGVzLCBhbmQgdGhlIGNvbnRlbnQgb2YgdGhlc2UgZmlsZXMgaXMgYWNjZXB0YWJsZSBpbnB1
dC4KKyAgKiBUaGUgaW5wdXQgY29ycmVzcG9uZHMgdG8gdGhlIFVuaWNvZGUgZGF0YSBmaWxlIGNv
bmZ1c2FibGVzLnR4dAorICAqIGFzIGRlc2NyaWJlZCBpbiBVbmljb2RlIFVBWCAjMzkuICBUaGUg
c3ludGF4IG9mIHRoZSBzb3VyY2UgZGF0YQorICAqIGlzIGFzIGRlc2NyaWJlZCBpbiBVQVggIzM5
IGZvciB0aGlzIGZpbGUsIGFuZCB0aGUgY29udGVudCBvZgorICAqIHRoaXMgZmlsZSBpcyBhY2Nl
cHRhYmxlIGlucHV0LgogICAqCiAgICogVGhlIGNoYXJhY3RlciBlbmNvZGluZyBvZiB0aGUgKGNo
YXIgKikgaW5wdXQgdGV4dCBpcyBVVEYtOC4KICAgKgpAQCAtMzcxLDEwICs2MzUsOSBAQCB1c3Bv
b2Zfb3BlbkZyb21TZXJpYWxpemVkKGNvbnN0IHZvaWQgKmRhdGEsIGludDMyX3QgbGVuZ3RoLCBp
bnQzMl90ICpwQWN0dWFsTGVuZwogICAqIEBwYXJhbSBjb25mdXNhYmxlc0xlbiBUaGUgbGVuZ3Ro
IG9mIHRoZSBjb25mdXNhYmxlcyB0ZXh0LCBvciAtMSBpZiB0aGUKICAgKiAgICAgICAgICAgICAg
ICAgICAgaW5wdXQgc3RyaW5nIGlzIHplcm8gdGVybWluYXRlZC4KICAgKiBAcGFyYW0gY29uZnVz
YWJsZXNXaG9sZVNjcmlwdAotICAqICAgICAgICAgICAgICAgICAgICBhIHBvaW50ZXIgdG8gdGhl
IHdob2xlIHNjcmlwdCBjb25mdXNhYmxlcyBkZWZpbml0aW9ucywKLSAgKiAgICAgICAgICAgICAg
ICAgICAgYXMgZm91bmQgaW4gdGhlIGZpbGUgY29uZnVzYWJsZXNXaG9sZVNjcmlwdC50eHQgZnJv
bSB1bmljb2RlLm9yZy4KLSAgKiBAcGFyYW0gY29uZnVzYWJsZXNXaG9sZVNjcmlwdExlbiBUaGUg
bGVuZ3RoIG9mIHRoZSB3aG9sZSBzY3JpcHQgY29uZnVzYWJsZXMgdGV4dCwgb3IKLSAgKiAgICAg
ICAgICAgICAgICAgICAgLTEgaWYgdGhlIGlucHV0IHN0cmluZyBpcyB6ZXJvIHRlcm1pbmF0ZWQu
CisgICogICAgICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQgaW4gSUNVIDU4LiAgTm8gbG9uZ2Vy
IHVzZWQuCisgICogQHBhcmFtIGNvbmZ1c2FibGVzV2hvbGVTY3JpcHRMZW4KKyAgKiAgICAgICAg
ICAgICAgICAgICAgRGVwcmVjYXRlZCBpbiBJQ1UgNTguICBObyBsb25nZXIgdXNlZC4KICAgKiBA
cGFyYW0gZXJyVHlwZSAgICAgSW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yIGluIHRoZSBpbnB1dCwg
aW5kaWNhdGVzCiAgICogICAgICAgICAgICAgICAgICAgIHdoaWNoIG9mIHRoZSBpbnB1dCBmaWxl
cyBjb250YWlucyB0aGUgZXJyb3IuCiAgICogICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBp
cyBvbmUgb2YgVVNQT09GX1NJTkdMRV9TQ1JJUFRfQ09ORlVTQUJMRSBvcgpAQCAtNDM1LDggKzY5
OCwzMyBAQCB1c3Bvb2ZfY2xvbmUoY29uc3QgVVNwb29mQ2hlY2tlciAqc2MsIFVFcnJvckNvZGUg
KnN0YXR1cyk7CiAKIAogLyoqCi0gKiBTcGVjaWZ5IHRoZSBzZXQgb2YgY2hlY2tzIHRoYXQgd2ls
bCBiZSBwZXJmb3JtZWQgYnkgdGhlIGNoZWNrCi0gKiBmdW5jdGlvbnMgb2YgdGhpcyBTcG9vZiBD
aGVja2VyLgorICogU3BlY2lmeSB0aGUgYml0bWFzayBvZiBjaGVja3MgdGhhdCB3aWxsIGJlIHBl
cmZvcm1lZCBieSB7QGxpbmsgdXNwb29mX2NoZWNrfS4gQ2FsbGluZyB0aGlzIG1ldGhvZAorICog
b3ZlcndyaXRlcyBhbnkgY2hlY2tzIHRoYXQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGVuYWJsZWQu
IEJ5IGRlZmF1bHQsIGFsbCBjaGVja3MgYXJlIGVuYWJsZWQuCisgKgorICogVG8gZW5hYmxlIHNw
ZWNpZmljIGNoZWNrcyBhbmQgZGlzYWJsZSBhbGwgb3RoZXJzLCB0aGUgIndoaXRlbGlzdGVkIiBj
aGVja3Mgc2hvdWxkIGJlIE9SZWQgdG9nZXRoZXIuIEZvcgorICogZXhhbXBsZSwgdG8gZmFpbCBz
dHJpbmdzIGNvbnRhaW5pbmcgY2hhcmFjdGVycyBvdXRzaWRlIG9mIHRoZSBzZXQgc3BlY2lmaWVk
IGJ5IHtAbGluayB1c3Bvb2Zfc2V0QWxsb3dlZENoYXJzfSBhbmQKKyAqIGFsc28gc3RyaW5ncyB0
aGF0IGNvbnRhaW4gZGlnaXRzIGZyb20gbWl4ZWQgbnVtYmVyaW5nIHN5c3RlbXM6CisgKgorICog
PHByZT4KKyAqIHtAY29kZQorICogdXNwb29mX3NldENoZWNrcyhVU1BPT0ZfQ0hBUl9MSU1JVCB8
IFVTUE9PRl9NSVhFRF9OVU1CRVJTKTsKKyAqIH0KKyAqIDwvcHJlPgorICoKKyAqIFRvIGRpc2Fi
bGUgc3BlY2lmaWMgY2hlY2tzIGFuZCBlbmFibGUgYWxsIG90aGVycywgdGhlICJibGFja2xpc3Rl
ZCIgY2hlY2tzIHNob3VsZCBiZSBBTkRlZCBhd2F5IGZyb20KKyAqIEFMTF9DSEVDS1MuIEZvciBl
eGFtcGxlLCBpZiB5b3UgYXJlIG5vdCBwbGFubmluZyB0byB1c2UgdGhlIHtAbGluayB1c3Bvb2Zf
YXJlQ29uZnVzYWJsZX0gZnVuY3Rpb25hbGl0eSwKKyAqIGl0IGlzIGdvb2QgcHJhY3RpY2UgdG8g
ZGlzYWJsZSB0aGUgQ09ORlVTQUJMRSBjaGVjazoKKyAqCisgKiA8cHJlPgorICoge0Bjb2RlCisg
KiB1c3Bvb2Zfc2V0Q2hlY2tzKFVTUE9PRl9BTExfQ0hFQ0tTICYgflVTUE9PRl9DT05GVVNBQkxF
KTsKKyAqIH0KKyAqIDwvcHJlPgorICoKKyAqIE5vdGUgdGhhdCBtZXRob2RzIHN1Y2ggYXMge0Bs
aW5rIHVzcG9vZl9zZXRBbGxvd2VkQ2hhcnN9LCB7QGxpbmsgdXNwb29mX3NldEFsbG93ZWRMb2Nh
bGVzfSwgYW5kCisgKiB7QGxpbmsgdXNwb29mX3NldFJlc3RyaWN0aW9uTGV2ZWx9IHdpbGwgZW5h
YmxlIGNlcnRhaW4gY2hlY2tzIHdoZW4gY2FsbGVkLiBUaG9zZSBtZXRob2RzIHdpbGwgT1IgdGhl
IGNoZWNrIHRoZXkKKyAqIGVuYWJsZSBvbnRvIHRoZSBleGlzdGluZyBiaXRtYXNrIHNwZWNpZmll
ZCBieSB0aGlzIG1ldGhvZC4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBkb2N1bWVudGF0aW9u
IG9mIHRob3NlCisgKiBtZXRob2RzLgogICoKICAqIEBwYXJhbSBzYyAgICAgICBUaGUgVVNwb29m
Q2hlY2tlcgogICogQHBhcmFtIGNoZWNrcyAgICAgICAgIFRoZSBzZXQgb2YgY2hlY2tzIHRoYXQg
dGhpcyBzcG9vZiBjaGVja2VyIHdpbGwgcGVyZm9ybS4KQEAgLTQ1MSw3ICs3MzksNyBAQCB1c3Bv
b2Zfc2V0Q2hlY2tzKFVTcG9vZkNoZWNrZXIgKnNjLCBpbnQzMl90IGNoZWNrcywgVUVycm9yQ29k
ZSAqc3RhdHVzKTsKIAogLyoqCiAgKiBHZXQgdGhlIHNldCBvZiBjaGVja3MgdGhhdCB0aGlzIFNw
b29mIENoZWNrZXIgaGFzIGJlZW4gY29uZmlndXJlZCB0byBwZXJmb3JtLgotICogCisgKgogICog
QHBhcmFtIHNjICAgICAgIFRoZSBVU3Bvb2ZDaGVja2VyCiAgKiBAcGFyYW0gc3RhdHVzICAgVGhl
IGVycm9yIGNvZGUsIHNldCBpZiB0aGlzIGZ1bmN0aW9uIGVuY291bnRlcnMgYSBwcm9ibGVtLgog
ICogQHJldHVybiAgICAgICAgIFRoZSBzZXQgb2YgY2hlY2tzIHRoYXQgdGhpcyBzcG9vZiBjaGVj
a2VyIHdpbGwgcGVyZm9ybS4KQEAgLTQ2NCwxOSArNzUyLDIyIEBAIFVfU1RBQkxFIGludDMyX3Qg
VV9FWFBPUlQyCiB1c3Bvb2ZfZ2V0Q2hlY2tzKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLCBVRXJy
b3JDb2RlICpzdGF0dXMpOwogCiAvKioKLSAgKiBTZXQgdGhlIGxvb3Nlc3QgcmVzdHJpY3Rpb24g
bGV2ZWwgYWxsb3dlZC4gVGhlIGRlZmF1bHQgaWYgdGhpcyBmdW5jdGlvbiAKLSAgKiBpcyBub3Qg
Y2FsbGVkIGlzIEhJR0hMWV9SRVNUUklDVElWRS4KLSAgKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24g
YWxzbyBlbmFibGVzIHRoZSBSRVNUUklDVElPTl9MRVZFTCBjaGVjay4KLSAgKiBAcGFyYW0gcmVz
dHJpY3Rpb25MZXZlbCBUaGUgbG9vc2VzdCByZXN0cmljdGlvbiBsZXZlbCBhbGxvd2VkLgotICAq
IEBzZWUgVVJlc3RyaWN0aW9uTGV2ZWwKLSAgKiBAc3RhYmxlIElDVSA1MQotICAqLworICogU2V0
IHRoZSBsb29zZXN0IHJlc3RyaWN0aW9uIGxldmVsIGFsbG93ZWQgZm9yIHN0cmluZ3MuIFRoZSBk
ZWZhdWx0IGlmIHRoaXMgaXMgbm90IGNhbGxlZCBpcworICoge0BsaW5rIFVTUE9PRl9ISUdITFlf
UkVTVFJJQ1RJVkV9LiBDYWxsaW5nIHRoaXMgbWV0aG9kIGVuYWJsZXMgdGhlIHtAbGluayBVU1BP
T0ZfUkVTVFJJQ1RJT05fTEVWRUx9IGFuZAorICoge0BsaW5rIFVTUE9PRl9NSVhFRF9OVU1CRVJT
fSBjaGVja3MsIGNvcnJlc3BvbmRpbmcgdG8gU2VjdGlvbnMgNS4xIGFuZCA1LjIgb2YgVVRTIDM5
LiBUbyBjdXN0b21pemUgd2hpY2ggY2hlY2tzIGFyZQorICogdG8gYmUgcGVyZm9ybWVkIGJ5IHtA
bGluayB1c3Bvb2ZfY2hlY2t9LCBzZWUge0BsaW5rIHVzcG9vZl9zZXRDaGVja3N9LgorICoKKyAq
IEBwYXJhbSBzYyAgICAgICBUaGUgVVNwb29mQ2hlY2tlcgorICogQHBhcmFtIHJlc3RyaWN0aW9u
TGV2ZWwgVGhlIGxvb3Nlc3QgcmVzdHJpY3Rpb24gbGV2ZWwgYWxsb3dlZC4KKyAqIEBzZWUgVVJl
c3RyaWN0aW9uTGV2ZWwKKyAqIEBzdGFibGUgSUNVIDUxCisgKi8KIFVfU1RBQkxFIHZvaWQgVV9F
WFBPUlQyCiB1c3Bvb2Zfc2V0UmVzdHJpY3Rpb25MZXZlbChVU3Bvb2ZDaGVja2VyICpzYywgVVJl
c3RyaWN0aW9uTGV2ZWwgcmVzdHJpY3Rpb25MZXZlbCk7CiAKIAogLyoqCi0gICogR2V0IHRoZSBS
ZXN0cmljdGlvbiBMZXZlbCB0aGF0IHdpbGwgYmUgdGVzdGVkIGlmIHRoZSBjaGVja3MgaW5jbHVk
ZSBSRVNUUklDVElPTl9MRVZFTC4KKyAgKiBHZXQgdGhlIFJlc3RyaWN0aW9uIExldmVsIHRoYXQg
d2lsbCBiZSB0ZXN0ZWQgaWYgdGhlIGNoZWNrcyBpbmNsdWRlIHtAbGluayBVU1BPT0ZfUkVTVFJJ
Q1RJT05fTEVWRUx9LgogICAqCiAgICogQHJldHVybiBUaGUgcmVzdHJpY3Rpb24gbGV2ZWwKICAg
KiBAc2VlIFVSZXN0cmljdGlvbkxldmVsCkBAIC00ODYsNyArNzc3LDcgQEAgVV9TVEFCTEUgVVJl
c3RyaWN0aW9uTGV2ZWwgVV9FWFBPUlQyCiB1c3Bvb2ZfZ2V0UmVzdHJpY3Rpb25MZXZlbChjb25z
dCBVU3Bvb2ZDaGVja2VyICpzYyk7CiAKIC8qKgotICogTGltaXQgY2hhcmFjdGVycyB0aGF0IGFy
ZSBhY2NlcHRhYmxlIGluIGlkZW50aWZpZXJzIGJlaW5nIGNoZWNrZWQgdG8gdGhvc2UgCisgKiBM
aW1pdCBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFjY2VwdGFibGUgaW4gaWRlbnRpZmllcnMgYmVpbmcg
Y2hlY2tlZCB0byB0aG9zZQogICogbm9ybWFsbHkgdXNlZCB3aXRoIHRoZSBsYW5ndWFnZXMgYXNz
b2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgbG9jYWxlcy4KICAqIEFueSBwcmV2aW91c2x5IHNw
ZWNpZmllZCBsaXN0IG9mIGxvY2FsZXMgaXMgcmVwbGFjZWQgYnkgdGhlIG5ldyBzZXR0aW5ncy4K
ICAqCkBAIC00OTksNyArNzkwLDcgQEAgdXNwb29mX2dldFJlc3RyaWN0aW9uTGV2ZWwoY29uc3Qg
VVNwb29mQ2hlY2tlciAqc2MpOwogICogU3VwcGx5aW5nIGFuIGVtcHR5IHN0cmluZyByZW1vdmVz
IGFsbCByZXN0cmljdGlvbnM7CiAgKiBjaGFyYWN0ZXJzIGZyb20gYW55IHNjcmlwdCB3aWxsIGJl
IGFsbG93ZWQuCiAgKgotICogVGhlIFVTUE9PRl9DSEFSX0xJTUlUIHRlc3QgaXMgYXV0b21hdGlj
YWxseSBlbmFibGVkIGZvciB0aGlzCisgKiBUaGUge0BsaW5rIFVTUE9PRl9DSEFSX0xJTUlUfSB0
ZXN0IGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBmb3IgdGhpcwogICogVVNwb29mQ2hlY2tlciB3
aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIGEgbm9uLWVtcHR5IGxpc3QKICAqIG9mIGxv
Y2FsZXMuCiAgKgpAQCAtNTExLDkgKzgwMiw5IEBAIHVzcG9vZl9nZXRSZXN0cmljdGlvbkxldmVs
KGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjKTsKICAqIGNhbiBiZSBtYWRlIHRvIHRoZSByZXN1bHQg
b2YgdXNwb29mX3NldEFsbG93ZWRMb2NhbGVzKCkgYnkKICAqIGZldGNoaW5nIHRoZSByZXN1bHRp
bmcgc2V0IHdpdGggdXNwb29mX2dldEFsbG93ZWRDaGFycygpLAogICogbWFuaXB1bGF0aW5nIGl0
IHdpdGggdGhlIFVuaWNvZGUgU2V0IEFQSSwgdGhlbiByZXNldHRpbmcgdGhlCi0gKiBzcG9vZiBk
ZXRlY3RvcnMgbGltaXRzIHdpdGggdXNwb29mX3NldEFsbG93ZWRDaGFycygpCisgKiBzcG9vZiBk
ZXRlY3RvcnMgbGltaXRzIHdpdGggdXNwb29mX3NldEFsbG93ZWRDaGFycygpLgogICoKLSAqIEBw
YXJhbSBzYyAgICAgICAgICAgVGhlIFVTcG9vZkNoZWNrZXIgCisgKiBAcGFyYW0gc2MgICAgICAg
ICAgIFRoZSBVU3Bvb2ZDaGVja2VyCiAgKiBAcGFyYW0gbG9jYWxlc0xpc3QgIEEgbGlzdCBsaXN0
IG9mIGxvY2FsZXMsIGZyb20gd2hpY2ggdGhlIGxhbmd1YWdlCiAgKiAgICAgICAgICAgICAgICAg
ICAgIGFuZCBhc3NvY2lhdGVkIHNjcmlwdCBhcmUgZXh0cmFjdGVkLiAgVGhlIGxvY2FsZXMKICAq
ICAgICAgICAgICAgICAgICAgICAgYXJlIGNvbW1hLXNlcGFyYXRlZCBpZiB0aGVyZSBpcyBtb3Jl
IHRoYW4gb25lLgpAQCAtNTM3LDE4ICs4MjgsMTggQEAgdXNwb29mX3NldEFsbG93ZWRMb2NhbGVz
KFVTcG9vZkNoZWNrZXIgKnNjLCBjb25zdCBjaGFyICpsb2NhbGVzTGlzdCwgVUVycm9yQ29kZQog
ICoKICAqICB1c3Bvb2Zfc2V0QWxsb3dlZENoYXJzKCkgd2lsbCByZXNldCB0aGUgbGlzdCBvZiBh
bGxvd2VkIHRvIGJlIGVtcHR5LgogICoKLSAqICBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBs
aXN0IGlzIHRoZSBzYW1lIGFzIHRoYXQgc3VwcGxpZWQgdG8gCi0gKiAgdXNwb29mX3NldEFsbG93
ZWRMb2NhbGVzKCksIGJ1dCByZXR1cm5lZCBsaXN0IG1heSBub3QgYmUgaWRlbnRpY2FsIAotICog
IHRvIHRoZSBvcmlnaW5hbGx5IHNwZWNpZmllZCBzdHJpbmc7IHRoZSBzdHJpbmcgbWF5IGJlIHJl
Zm9ybWF0dGVkLCAKKyAqICBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBsaXN0IGlzIHRoZSBz
YW1lIGFzIHRoYXQgc3VwcGxpZWQgdG8KKyAqICB1c3Bvb2Zfc2V0QWxsb3dlZExvY2FsZXMoKSwg
YnV0IHJldHVybmVkIGxpc3QgbWF5IG5vdCBiZSBpZGVudGljYWwKKyAqICB0byB0aGUgb3JpZ2lu
YWxseSBzcGVjaWZpZWQgc3RyaW5nOyB0aGUgc3RyaW5nIG1heSBiZSByZWZvcm1hdHRlZCwKICAq
ICBhbmQgaW5mb3JtYXRpb24gb3RoZXIgdGhhbiBsYW5ndWFnZXMgZnJvbQogICogIHRoZSBvcmln
aW5hbGx5IHNwZWNpZmllZCBsb2NhbGVzIG1heSBiZSBvbWl0dGVkLgogICoKLSAqIEBwYXJhbSBz
YyAgICAgICAgICAgVGhlIFVTcG9vZkNoZWNrZXIgCisgKiBAcGFyYW0gc2MgICAgICAgICAgIFRo
ZSBVU3Bvb2ZDaGVja2VyCiAgKiBAcGFyYW0gc3RhdHVzICAgICAgIFRoZSBlcnJvciBjb2RlLCBz
ZXQgaWYgdGhpcyBmdW5jdGlvbiBlbmNvdW50ZXJzIGEgcHJvYmxlbS4KICAqIEByZXR1cm4gICAg
ICAgICAgICAgQSBzdHJpbmcgY29udGFpbmluZyBhIGxpc3Qgb2YgIGxvY2FsZXMgY29ycmVzcG9u
ZGluZwogICogICAgICAgICAgICAgICAgICAgICB0byB0aGUgYWNjZXB0YWJsZSBzY3JpcHRzLCBm
b3JtYXR0ZWQgbGlrZSBhbgogICogICAgICAgICAgICAgICAgICAgICBIVFRQIEFjY2VwdCBMYW5n
dWFnZSB2YWx1ZS4KLSAqICAKKyAqCiAgKiBAc3RhYmxlIElDVSA0LjIKICAqLwogVV9TVEFCTEUg
Y29uc3QgY2hhciAqIFVfRVhQT1JUMgpAQCAtNTY0LDcgKzg1NSw3IEBAIHVzcG9vZl9nZXRBbGxv
d2VkTG9jYWxlcyhVU3Bvb2ZDaGVja2VyICpzYywgVUVycm9yQ29kZSAqc3RhdHVzKTsKICAqIFRo
ZSBVU1BPT0ZfQ0hBUl9MSU1JVCB0ZXN0IGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBmb3IgdGhp
cwogICogVVNwb29mQ2hlY2tlciBieSB0aGlzIGZ1bmN0aW9uLgogICoKLSAqIEBwYXJhbSBzYyAg
ICAgICBUaGUgVVNwb29mQ2hlY2tlciAKKyAqIEBwYXJhbSBzYyAgICAgICBUaGUgVVNwb29mQ2hl
Y2tlcgogICogQHBhcmFtIGNoYXJzICAgIEEgVW5pY29kZSBTZXQgY29udGFpbmluZyB0aGUgbGlz
dCBvZgogICogICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgdGhhdCBhcmUgcGVybWl0dGVkLiAg
T3duZXJzaGlwIG9mIHRoZSBzZXQKICAqICAgICAgICAgICAgICAgICByZW1haW5zIHdpdGggdGhl
IGNhbGxlci4gIFRoZSBpbmNvbWluZyBzZXQgaXMgY2xvbmVkIGJ5CkBAIC01OTEsNyArODgyLDcg
QEAgdXNwb29mX3NldEFsbG93ZWRDaGFycyhVU3Bvb2ZDaGVja2VyICpzYywgY29uc3QgVVNldCAq
Y2hhcnMsIFVFcnJvckNvZGUgKnN0YXR1cykKICAqIG9yIGlmIGEgbmV3IHNldCBvZiBhbGxvd2Vk
IGNoYXJhY3RlcnMgaXMgc3BlY2lmaWVkLgogICoKICAqCi0gKiBAcGFyYW0gc2MgICAgICAgVGhl
IFVTcG9vZkNoZWNrZXIgCisgKiBAcGFyYW0gc2MgICAgICAgVGhlIFVTcG9vZkNoZWNrZXIKICAq
IEBwYXJhbSBzdGF0dXMgICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIHRoaXMgZnVuY3Rpb24gZW5j
b3VudGVycyBhIHByb2JsZW0uCiAgKiBAcmV0dXJuICAgICAgICAgQSBVU2V0IGNvbnRhaW5pbmcg
dGhlIGNoYXJhY3RlcnMgdGhhdCBhcmUgcGVybWl0dGVkIGJ5CiAgKiAgICAgICAgICAgICAgICAg
dGhlIFVTUE9PRl9DSEFSX0xJTUlUIHRlc3QuCkBAIC02MTEsNyArOTAyLDcgQEAgdXNwb29mX2dl
dEFsbG93ZWRDaGFycyhjb25zdCBVU3Bvb2ZDaGVja2VyICpzYywgVUVycm9yQ29kZSAqc3RhdHVz
KTsKICAqIFRoZSBVU1BPT0ZfQ0hBUl9MSU1JVCB0ZXN0IGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxl
ZCBmb3IgdGhpcwogICogVVNvb2ZDaGVja2VyIGJ5IHRoaXMgZnVuY3Rpb24uCiAgKgotICogQHBh
cmFtIHNjICAgICAgIFRoZSBVU3Bvb2ZDaGVja2VyIAorICogQHBhcmFtIHNjICAgICAgIFRoZSBV
U3Bvb2ZDaGVja2VyCiAgKiBAcGFyYW0gY2hhcnMgICAgQSBVbmljb2RlIFNldCBjb250YWluaW5n
IHRoZSBsaXN0IG9mCiAgKiAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyB0aGF0IGFyZSBwZXJt
aXR0ZWQuICBPd25lcnNoaXAgb2YgdGhlIHNldAogICogICAgICAgICAgICAgICAgIHJlbWFpbnMg
d2l0aCB0aGUgY2FsbGVyLiAgVGhlIGluY29taW5nIHNldCBpcyBjbG9uZWQgYnkKQEAgLTYyNiw3
ICs5MTcsNyBAQCB1c3Bvb2Zfc2V0QWxsb3dlZFVuaWNvZGVTZXQoVVNwb29mQ2hlY2tlciAqc2Ms
IGNvbnN0IGljdTo6VW5pY29kZVNldCAqY2hhcnMsIFVFcgogCiAvKioKICAqIEdldCBhIFVuaWNv
ZGVTZXQgZm9yIHRoZSBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiBhbiBpZGVudGlmaWVyLgotICog
VGhpcyBjb3JyZXNwb25kcyB0byB0aGUgbGltaXRzIGltcG9zZWQgYnkgdGhlIFNldCBBbGxvd2Vk
IENoYXJhY3RlcnMgLyAKKyAqIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGxpbWl0cyBpbXBvc2Vk
IGJ5IHRoZSBTZXQgQWxsb3dlZCBDaGFyYWN0ZXJzIC8KICAqIFVuaWNvZGVTZXQgZnVuY3Rpb25z
LiBMaW1pdGF0aW9ucyBpbXBvc2VkIGJ5IG90aGVyIGNoZWNrcyB3aWxsIG5vdCBiZQogICogcmVm
bGVjdGVkIGluIHRoZSBzZXQgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbi4KICAqCkBAIC02Mzgs
NyArOTI5LDcgQEAgdXNwb29mX3NldEFsbG93ZWRVbmljb2RlU2V0KFVTcG9vZkNoZWNrZXIgKnNj
LCBjb25zdCBpY3U6OlVuaWNvZGVTZXQgKmNoYXJzLCBVRXIKICAqIG9yIGlmIGEgbmV3IHNldCBv
ZiBhbGxvd2VkIGNoYXJhY3RlcnMgaXMgc3BlY2lmaWVkLgogICoKICAqCi0gKiBAcGFyYW0gc2Mg
ICAgICAgVGhlIFVTcG9vZkNoZWNrZXIgCisgKiBAcGFyYW0gc2MgICAgICAgVGhlIFVTcG9vZkNo
ZWNrZXIKICAqIEBwYXJhbSBzdGF0dXMgICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIHRoaXMgZnVu
Y3Rpb24gZW5jb3VudGVycyBhIHByb2JsZW0uCiAgKiBAcmV0dXJuICAgICAgICAgQSBVbmljb2Rl
U2V0IGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlcnMgdGhhdCBhcmUgcGVybWl0dGVkIGJ5CiAgKiAg
ICAgICAgICAgICAgICAgdGhlIFVTUE9PRl9DSEFSX0xJTUlUIHRlc3QuCkBAIC02NTMsMTcgKzk0
NCwyMiBAQCB1c3Bvb2ZfZ2V0QWxsb3dlZFVuaWNvZGVTZXQoY29uc3QgVVNwb29mQ2hlY2tlciAq
c2MsIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAgKiBDaGVjayB0aGUgc3BlY2lmaWVkIHN0cmluZyBm
b3IgcG9zc2libGUgc2VjdXJpdHkgaXNzdWVzLgogICogVGhlIHRleHQgdG8gYmUgY2hlY2tlZCB3
aWxsIHR5cGljYWxseSBiZSBhbiBpZGVudGlmaWVyIG9mIHNvbWUgc29ydC4KICAqIFRoZSBzZXQg
b2YgY2hlY2tzIHRvIGJlIHBlcmZvcm1lZCBpcyBzcGVjaWZpZWQgd2l0aCB1c3Bvb2Zfc2V0Q2hl
Y2tzKCkuCi0gKiAKLSAqIEBwYXJhbSBzYyAgICAgIFRoZSBVU3Bvb2ZDaGVja2VyIAorICoKKyAq
IFxub3RlCisgKiAgIENvbnNpZGVyIHVzaW5nIHRoZSBuZXdlciBBUEksIHtAbGluayB1c3Bvb2Zf
Y2hlY2syfSwgaW5zdGVhZC4KKyAqICAgVGhlIG5ld2VyIEFQSSBleHBvc2VzIGFkZGl0aW9uYWwg
aW5mb3JtYXRpb24gZnJvbSB0aGUgY2hlY2sgcHJvY2VkdXJlCisgKiAgIGFuZCBpcyBvdGhlcndp
c2UgaWRlbnRpY2FsIHRvIHRoaXMgbWV0aG9kLgorICoKKyAqIEBwYXJhbSBzYyAgICAgIFRoZSBV
U3Bvb2ZDaGVja2VyCiAgKiBAcGFyYW0gaWQgICAgICBUaGUgaWRlbnRpZmllciB0byBiZSBjaGVj
a2VkIGZvciBwb3NzaWJsZSBzZWN1cml0eSBpc3N1ZXMsCiAgKiAgICAgICAgICAgICAgICBpbiBV
VEYtMTYgZm9ybWF0LgogICogQHBhcmFtIGxlbmd0aCAgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5n
IHRvIGJlIGNoZWNrZWQsIGV4cHJlc3NlZCBpbgotICogICAgICAgICAgICAgICAgMTYgYml0IFVU
Ri0xNiBjb2RlIHVuaXRzLCBvciAtMSBpZiB0aGUgc3RyaW5nIGlzIAorICogICAgICAgICAgICAg
ICAgMTYgYml0IFVURi0xNiBjb2RlIHVuaXRzLCBvciAtMSBpZiB0aGUgc3RyaW5nIGlzCiAgKiAg
ICAgICAgICAgICAgICB6ZXJvIHRlcm1pbmF0ZWQuCi0gKiBAcGFyYW0gcG9zaXRpb24gICAgICBB
biBvdXQgcGFyYW1ldGVyLgotICogICAgICAgICAgICAgICAgT3JpZ2luYWxseSwgdGhlIGluZGV4
IG9mIHRoZSBmaXJzdCBzdHJpbmcgcG9zaXRpb24gdGhhdCBmYWlsZWQgYSBjaGVjay4KLSAqICAg
ICAgICAgICAgICAgIE5vdywgYWx3YXlzIHJldHVybnMgemVyby4KLSAqICAgICAgICAgICAgICAg
IFRoaXMgcGFyYW1ldGVyIG1heSBiZSBudWxsLgorICogQHBhcmFtIHBvc2l0aW9uICBEZXByZWNh
dGVkIGluIElDVSA1MS4gIEFsd2F5cyByZXR1cm5zIHplcm8uCisgKiAgICAgICAgICAgICAgICBP
cmlnaW5hbGx5LCBhbiBvdXQgcGFyYW1ldGVyIGZvciB0aGUgaW5kZXggb2YgdGhlIGZpcnN0Cisg
KiAgICAgICAgICAgICAgICBzdHJpbmcgcG9zaXRpb24gdGhhdCBmYWlsZWQgYSBjaGVjay4KKyAq
ICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG1heSBiZSBOVUxMLgogICogQHBhcmFtIHN0
YXR1cyAgVGhlIGVycm9yIGNvZGUsIHNldCBpZiBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRl
bXB0aW5nIHRvCiAgKiAgICAgICAgICAgICAgICBwZXJmb3JtIHRoZSBjaGVjay4KICAqICAgICAg
ICAgICAgICAgIFNwb29maW5nIG9yIHNlY3VyaXR5IGlzc3VlcyBkZXRlY3RlZCB3aXRoIHRoZSBp
bnB1dCBzdHJpbmcgYXJlCkBAIC02NzMsMTEgKzk2OSwxMiBAQCB1c3Bvb2ZfZ2V0QWxsb3dlZFVu
aWNvZGVTZXQoY29uc3QgVVNwb29mQ2hlY2tlciAqc2MsIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAg
KiAgICAgICAgICAgICAgICBlbnVtIFVTcG9vZkNoZWNrcy4gIChyZXR1cm5lZF92YWx1ZSAmIFVT
UE9PRl9BTExfQ0hFQ0tTKQogICogICAgICAgICAgICAgICAgd2lsbCBiZSB6ZXJvIGlmIHRoZSBp
bnB1dCBzdHJpbmcgcGFzc2VzIGFsbCBvZiB0aGUKICAqICAgICAgICAgICAgICAgIGVuYWJsZWQg
Y2hlY2tzLgorICogQHNlZSB1c3Bvb2ZfY2hlY2syCiAgKiBAc3RhYmxlIElDVSA0LjIKICAqLwog
VV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKIHVzcG9vZl9jaGVjayhjb25zdCBVU3Bvb2ZDaGVj
a2VyICpzYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqaWQsIGludDMy
X3QgbGVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqaWQsIGlu
dDMyX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKnBvc2l0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKQEAgLTY4
NiwxNiArOTgzLDIwIEBAIHVzcG9vZl9jaGVjayhjb25zdCBVU3Bvb2ZDaGVja2VyICpzYywKICAq
IENoZWNrIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciBwb3NzaWJsZSBzZWN1cml0eSBpc3N1ZXMu
CiAgKiBUaGUgdGV4dCB0byBiZSBjaGVja2VkIHdpbGwgdHlwaWNhbGx5IGJlIGFuIGlkZW50aWZp
ZXIgb2Ygc29tZSBzb3J0LgogICogVGhlIHNldCBvZiBjaGVja3MgdG8gYmUgcGVyZm9ybWVkIGlz
IHNwZWNpZmllZCB3aXRoIHVzcG9vZl9zZXRDaGVja3MoKS4KLSAqIAotICogQHBhcmFtIHNjICAg
ICAgVGhlIFVTcG9vZkNoZWNrZXIgCisgKgorICogXG5vdGUKKyAqICAgQ29uc2lkZXIgdXNpbmcg
dGhlIG5ld2VyIEFQSSwge0BsaW5rIHVzcG9vZl9jaGVjazJVVEY4fSwgaW5zdGVhZC4KKyAqICAg
VGhlIG5ld2VyIEFQSSBleHBvc2VzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgY2hl
Y2sgcHJvY2VkdXJlCisgKiAgIGFuZCBpcyBvdGhlcndpc2UgaWRlbnRpY2FsIHRvIHRoaXMgbWV0
aG9kLgorICoKKyAqIEBwYXJhbSBzYyAgICAgIFRoZSBVU3Bvb2ZDaGVja2VyCiAgKiBAcGFyYW0g
aWQgICAgICBBIGlkZW50aWZpZXIgdG8gYmUgY2hlY2tlZCBmb3IgcG9zc2libGUgc2VjdXJpdHkg
aXNzdWVzLCBpbiBVVEY4IGZvcm1hdC4KLSAqIEBwYXJhbSBsZW5ndGggIHRoZSBsZW5ndGggb2Yg
dGhlIHN0cmluZyB0byBiZSBjaGVja2VkLCBvciAtMSBpZiB0aGUgc3RyaW5nIGlzIAorICogQHBh
cmFtIGxlbmd0aCAgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHRvIGJlIGNoZWNrZWQsIG9yIC0x
IGlmIHRoZSBzdHJpbmcgaXMKICAqICAgICAgICAgICAgICAgIHplcm8gdGVybWluYXRlZC4KLSAq
IEBwYXJhbSBwb3NpdGlvbiAgICAgIEFuIG91dCBwYXJhbWV0ZXIuCi0gKiAgICAgICAgICAgICAg
ICBPcmlnaW5hbGx5LCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHN0cmluZyBwb3NpdGlvbiB0aGF0
IGZhaWxlZCBhIGNoZWNrLgotICogICAgICAgICAgICAgICAgTm93LCBhbHdheXMgcmV0dXJucyB6
ZXJvLgotICogICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbWF5IGJlIG51bGwuCi0gKiAg
ICAgICAgICAgICAgICBAZGVwcmVjYXRlZCBJQ1UgNTEKKyAqIEBwYXJhbSBwb3NpdGlvbiAgRGVw
cmVjYXRlZCBpbiBJQ1UgNTEuICBBbHdheXMgcmV0dXJucyB6ZXJvLgorICogICAgICAgICAgICAg
ICAgT3JpZ2luYWxseSwgYW4gb3V0IHBhcmFtZXRlciBmb3IgdGhlIGluZGV4IG9mIHRoZSBmaXJz
dAorICogICAgICAgICAgICAgICAgc3RyaW5nIHBvc2l0aW9uIHRoYXQgZmFpbGVkIGEgY2hlY2su
CisgKiAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtYXkgYmUgTlVMTC4KICAqIEBwYXJh
bSBzdGF0dXMgIFRoZSBlcnJvciBjb2RlLCBzZXQgaWYgYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUg
YXR0ZW1wdGluZyB0bwogICogICAgICAgICAgICAgICAgcGVyZm9ybSB0aGUgY2hlY2suCiAgKiAg
ICAgICAgICAgICAgICBTcG9vZmluZyBvciBzZWN1cml0eSBpc3N1ZXMgZGV0ZWN0ZWQgd2l0aCB0
aGUgaW5wdXQgc3RyaW5nIGFyZQpAQCAtNzA3LDYgKzEwMDgsNyBAQCB1c3Bvb2ZfY2hlY2soY29u
c3QgVVNwb29mQ2hlY2tlciAqc2MsCiAgKiAgICAgICAgICAgICAgICBlbnVtIFVTcG9vZkNoZWNr
cy4gIChyZXR1cm5lZF92YWx1ZSAmIFVTUE9PRl9BTExfQ0hFQ0tTKQogICogICAgICAgICAgICAg
ICAgd2lsbCBiZSB6ZXJvIGlmIHRoZSBpbnB1dCBzdHJpbmcgcGFzc2VzIGFsbCBvZiB0aGUKICAq
ICAgICAgICAgICAgICAgIGVuYWJsZWQgY2hlY2tzLgorICogQHNlZSB1c3Bvb2ZfY2hlY2syVVRG
OAogICogQHN0YWJsZSBJQ1UgNC4yCiAgKi8KIFVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCkBA
IC03MjEsMTQgKzEwMjMsMTggQEAgdXNwb29mX2NoZWNrVVRGOChjb25zdCBVU3Bvb2ZDaGVja2Vy
ICpzYywKICAqIENoZWNrIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciBwb3NzaWJsZSBzZWN1cml0
eSBpc3N1ZXMuCiAgKiBUaGUgdGV4dCB0byBiZSBjaGVja2VkIHdpbGwgdHlwaWNhbGx5IGJlIGFu
IGlkZW50aWZpZXIgb2Ygc29tZSBzb3J0LgogICogVGhlIHNldCBvZiBjaGVja3MgdG8gYmUgcGVy
Zm9ybWVkIGlzIHNwZWNpZmllZCB3aXRoIHVzcG9vZl9zZXRDaGVja3MoKS4KLSAqIAotICogQHBh
cmFtIHNjICAgICAgVGhlIFVTcG9vZkNoZWNrZXIgCisgKgorICogXG5vdGUKKyAqICAgQ29uc2lk
ZXIgdXNpbmcgdGhlIG5ld2VyIEFQSSwge0BsaW5rIHVzcG9vZl9jaGVjazJVbmljb2RlU3RyaW5n
fSwgaW5zdGVhZC4KKyAqICAgVGhlIG5ld2VyIEFQSSBleHBvc2VzIGFkZGl0aW9uYWwgaW5mb3Jt
YXRpb24gZnJvbSB0aGUgY2hlY2sgcHJvY2VkdXJlCisgKiAgIGFuZCBpcyBvdGhlcndpc2UgaWRl
bnRpY2FsIHRvIHRoaXMgbWV0aG9kLgorICoKKyAqIEBwYXJhbSBzYyAgICAgIFRoZSBVU3Bvb2ZD
aGVja2VyCiAgKiBAcGFyYW0gaWQgICAgICBBIGlkZW50aWZpZXIgdG8gYmUgY2hlY2tlZCBmb3Ig
cG9zc2libGUgc2VjdXJpdHkgaXNzdWVzLgotICogQHBhcmFtIHBvc2l0aW9uICAgICAgQW4gb3V0
IHBhcmFtZXRlci4KLSAqICAgICAgICAgICAgICAgIE9yaWdpbmFsbHksIHRoZSBpbmRleCBvZiB0
aGUgZmlyc3Qgc3RyaW5nIHBvc2l0aW9uIHRoYXQgZmFpbGVkIGEgY2hlY2suCi0gKiAgICAgICAg
ICAgICAgICBOb3csIGFsd2F5cyByZXR1cm5zIHplcm8uCi0gKiAgICAgICAgICAgICAgICBUaGlz
IHBhcmFtZXRlciBtYXkgYmUgbnVsbC4KLSAqICAgICAgICAgICAgICAgIEBkZXByZWNhdGVkIElD
VSA1MQorICogQHBhcmFtIHBvc2l0aW9uICBEZXByZWNhdGVkIGluIElDVSA1MS4gIEFsd2F5cyBy
ZXR1cm5zIHplcm8uCisgKiAgICAgICAgICAgICAgICBPcmlnaW5hbGx5LCBhbiBvdXQgcGFyYW1l
dGVyIGZvciB0aGUgaW5kZXggb2YgdGhlIGZpcnN0CisgKiAgICAgICAgICAgICAgICBzdHJpbmcg
cG9zaXRpb24gdGhhdCBmYWlsZWQgYSBjaGVjay4KKyAqICAgICAgICAgICAgICAgIFRoaXMgcGFy
YW1ldGVyIG1heSBiZSBOVUxMLgogICogQHBhcmFtIHN0YXR1cyAgVGhlIGVycm9yIGNvZGUsIHNl
dCBpZiBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvCiAgKiAgICAgICAgICAg
ICAgICBwZXJmb3JtIHRoZSBjaGVjay4KICAqICAgICAgICAgICAgICAgIFNwb29maW5nIG9yIHNl
Y3VyaXR5IGlzc3VlcyBkZXRlY3RlZCB3aXRoIHRoZSBpbnB1dCBzdHJpbmcgYXJlCkBAIC03Mzgs
NDUgKzEwNDQsMjQ3IEBAIHVzcG9vZl9jaGVja1VURjgoY29uc3QgVVNwb29mQ2hlY2tlciAqc2Ms
CiAgKiAgICAgICAgICAgICAgICBlbnVtIFVTcG9vZkNoZWNrcy4gIChyZXR1cm5lZF92YWx1ZSAm
IFVTUE9PRl9BTExfQ0hFQ0tTKQogICogICAgICAgICAgICAgICAgd2lsbCBiZSB6ZXJvIGlmIHRo
ZSBpbnB1dCBzdHJpbmcgcGFzc2VzIGFsbCBvZiB0aGUKICAqICAgICAgICAgICAgICAgIGVuYWJs
ZWQgY2hlY2tzLgorICogQHNlZSB1c3Bvb2ZfY2hlY2syVW5pY29kZVN0cmluZwogICogQHN0YWJs
ZSBJQ1UgNC4yCiAgKi8KIFVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCiB1c3Bvb2ZfY2hlY2tV
bmljb2RlU3RyaW5nKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpY3U6OlVuaWNvZGVTdHJpbmcgJmlkLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgaWN1OjpVbmljb2RlU3RyaW5nICZpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCAqcG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVF
cnJvckNvZGUgKnN0YXR1cyk7CisjZW5kaWYKKworCisvKioKKyAqIENoZWNrIHRoZSBzcGVjaWZp
ZWQgc3RyaW5nIGZvciBwb3NzaWJsZSBzZWN1cml0eSBpc3N1ZXMuCisgKiBUaGUgdGV4dCB0byBi
ZSBjaGVja2VkIHdpbGwgdHlwaWNhbGx5IGJlIGFuIGlkZW50aWZpZXIgb2Ygc29tZSBzb3J0Lgor
ICogVGhlIHNldCBvZiBjaGVja3MgdG8gYmUgcGVyZm9ybWVkIGlzIHNwZWNpZmllZCB3aXRoIHVz
cG9vZl9zZXRDaGVja3MoKS4KKyAqCisgKiBAcGFyYW0gc2MgICAgICBUaGUgVVNwb29mQ2hlY2tl
cgorICogQHBhcmFtIGlkICAgICAgVGhlIGlkZW50aWZpZXIgdG8gYmUgY2hlY2tlZCBmb3IgcG9z
c2libGUgc2VjdXJpdHkgaXNzdWVzLAorICogICAgICAgICAgICAgICAgaW4gVVRGLTE2IGZvcm1h
dC4KKyAqIEBwYXJhbSBsZW5ndGggIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyB0byBiZSBjaGVj
a2VkLCBvciAtMSBpZiB0aGUgc3RyaW5nIGlzCisgKiAgICAgICAgICAgICAgICB6ZXJvIHRlcm1p
bmF0ZWQuCisgKiBAcGFyYW0gY2hlY2tSZXN1bHQgIEFuIGluc3RhbmNlIG9mIFVTcG9vZkNoZWNr
UmVzdWx0IHRvIGJlIGZpbGxlZCB3aXRoCisgKiAgICAgICAgICAgICAgICBkZXRhaWxzIGFib3V0
IHRoZSBpZGVudGlmaWVyLiAgQ2FuIGJlIE5VTEwuCisgKiBAcGFyYW0gc3RhdHVzICBUaGUgZXJy
b3IgY29kZSwgc2V0IGlmIGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8KKyAq
ICAgICAgICAgICAgICAgIHBlcmZvcm0gdGhlIGNoZWNrLgorICogICAgICAgICAgICAgICAgU3Bv
b2Zpbmcgb3Igc2VjdXJpdHkgaXNzdWVzIGRldGVjdGVkIHdpdGggdGhlIGlucHV0IHN0cmluZyBh
cmUKKyAqICAgICAgICAgICAgICAgIG5vdCByZXBvcnRlZCBoZXJlLCBidXQgdGhyb3VnaCB0aGUg
ZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUuCisgKiBAcmV0dXJuICAgICAgICBBbiBpbnRlZ2VyIHZh
bHVlIHdpdGggYml0cyBzZXQgZm9yIGFueSBwb3RlbnRpYWwgc2VjdXJpdHkKKyAqICAgICAgICAg
ICAgICAgIG9yIHNwb29maW5nIGlzc3VlcyBkZXRlY3RlZC4gIFRoZSBiaXRzIGFyZSBkZWZpbmVk
IGJ5CisgKiAgICAgICAgICAgICAgICBlbnVtIFVTcG9vZkNoZWNrcy4gIChyZXR1cm5lZF92YWx1
ZSAmIFVTUE9PRl9BTExfQ0hFQ0tTKQorICogICAgICAgICAgICAgICAgd2lsbCBiZSB6ZXJvIGlm
IHRoZSBpbnB1dCBzdHJpbmcgcGFzc2VzIGFsbCBvZiB0aGUKKyAqICAgICAgICAgICAgICAgIGVu
YWJsZWQgY2hlY2tzLiAgQW55IGluZm9ybWF0aW9uIGluIHRoaXMgYml0bWFzayB3aWxsIGJlCisg
KiAgICAgICAgICAgICAgICBjb25zaXN0ZW50IHdpdGggdGhlIGluZm9ybWF0aW9uIHNhdmVkIGlu
IHRoZSBvcHRpb25hbAorICogICAgICAgICAgICAgICAgY2hlY2tSZXN1bHQgcGFyYW1ldGVyLgor
ICogQHNlZSB1c3Bvb2Zfb3BlbkNoZWNrUmVzdWx0CisgKiBAc2VlIHVzcG9vZl9jaGVjazJVVEY4
CisgKiBAc2VlIHVzcG9vZl9jaGVjazJVbmljb2RlU3RyaW5nCisgKiBAc3RhYmxlIElDVSA1OAor
ICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordXNwb29mX2NoZWNrMihjb25zdCBVU3Bv
b2ZDaGVja2VyICpzYywKKyAgICBjb25zdCBVQ2hhciogaWQsIGludDMyX3QgbGVuZ3RoLAorICAg
IFVTcG9vZkNoZWNrUmVzdWx0KiBjaGVja1Jlc3VsdCwKKyAgICBVRXJyb3JDb2RlICpzdGF0dXMp
OworCisvKioKKyAqIENoZWNrIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciBwb3NzaWJsZSBzZWN1
cml0eSBpc3N1ZXMuCisgKiBUaGUgdGV4dCB0byBiZSBjaGVja2VkIHdpbGwgdHlwaWNhbGx5IGJl
IGFuIGlkZW50aWZpZXIgb2Ygc29tZSBzb3J0LgorICogVGhlIHNldCBvZiBjaGVja3MgdG8gYmUg
cGVyZm9ybWVkIGlzIHNwZWNpZmllZCB3aXRoIHVzcG9vZl9zZXRDaGVja3MoKS4KKyAqCisgKiBU
aGlzIHZlcnNpb24gb2Yge0BsaW5rIHVzcG9vZl9jaGVja30gYWNjZXB0cyBhIFVTcG9vZkNoZWNr
UmVzdWx0LCB3aGljaAorICogcmV0dXJucyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRo
ZSBpZGVudGlmaWVyLiAgRm9yIG1vcmUKKyAqIGluZm9ybWF0aW9uLCBzZWUge0BsaW5rIHVzcG9v
Zl9vcGVuQ2hlY2tSZXN1bHR9LgorICoKKyAqIEBwYXJhbSBzYyAgICAgIFRoZSBVU3Bvb2ZDaGVj
a2VyCisgKiBAcGFyYW0gaWQgICAgICBBIGlkZW50aWZpZXIgdG8gYmUgY2hlY2tlZCBmb3IgcG9z
c2libGUgc2VjdXJpdHkgaXNzdWVzLCBpbiBVVEY4IGZvcm1hdC4KKyAqIEBwYXJhbSBsZW5ndGgg
IHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyB0byBiZSBjaGVja2VkLCBvciAtMSBpZiB0aGUgc3Ry
aW5nIGlzCisgKiAgICAgICAgICAgICAgICB6ZXJvIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gY2hl
Y2tSZXN1bHQgIEFuIGluc3RhbmNlIG9mIFVTcG9vZkNoZWNrUmVzdWx0IHRvIGJlIGZpbGxlZCB3
aXRoCisgKiAgICAgICAgICAgICAgICBkZXRhaWxzIGFib3V0IHRoZSBpZGVudGlmaWVyLiAgQ2Fu
IGJlIE5VTEwuCisgKiBAcGFyYW0gc3RhdHVzICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIGFuIGVy
cm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8KKyAqICAgICAgICAgICAgICAgIHBlcmZv
cm0gdGhlIGNoZWNrLgorICogICAgICAgICAgICAgICAgU3Bvb2Zpbmcgb3Igc2VjdXJpdHkgaXNz
dWVzIGRldGVjdGVkIHdpdGggdGhlIGlucHV0IHN0cmluZyBhcmUKKyAqICAgICAgICAgICAgICAg
IG5vdCByZXBvcnRlZCBoZXJlLCBidXQgdGhyb3VnaCB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdmFs
dWUuCisgKiBAcmV0dXJuICAgICAgICBBbiBpbnRlZ2VyIHZhbHVlIHdpdGggYml0cyBzZXQgZm9y
IGFueSBwb3RlbnRpYWwgc2VjdXJpdHkKKyAqICAgICAgICAgICAgICAgIG9yIHNwb29maW5nIGlz
c3VlcyBkZXRlY3RlZC4gIFRoZSBiaXRzIGFyZSBkZWZpbmVkIGJ5CisgKiAgICAgICAgICAgICAg
ICBlbnVtIFVTcG9vZkNoZWNrcy4gIChyZXR1cm5lZF92YWx1ZSAmIFVTUE9PRl9BTExfQ0hFQ0tT
KQorICogICAgICAgICAgICAgICAgd2lsbCBiZSB6ZXJvIGlmIHRoZSBpbnB1dCBzdHJpbmcgcGFz
c2VzIGFsbCBvZiB0aGUKKyAqICAgICAgICAgICAgICAgIGVuYWJsZWQgY2hlY2tzLiAgQW55IGlu
Zm9ybWF0aW9uIGluIHRoaXMgYml0bWFzayB3aWxsIGJlCisgKiAgICAgICAgICAgICAgICBjb25z
aXN0ZW50IHdpdGggdGhlIGluZm9ybWF0aW9uIHNhdmVkIGluIHRoZSBvcHRpb25hbAorICogICAg
ICAgICAgICAgICAgY2hlY2tSZXN1bHQgcGFyYW1ldGVyLgorICogQHNlZSB1c3Bvb2Zfb3BlbkNo
ZWNrUmVzdWx0CisgKiBAc2VlIHVzcG9vZl9jaGVjazIKKyAqIEBzZWUgdXNwb29mX2NoZWNrMlVu
aWNvZGVTdHJpbmcKKyAqIEBzdGFibGUgSUNVIDU4CisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9F
WFBPUlQyCit1c3Bvb2ZfY2hlY2syVVRGOChjb25zdCBVU3Bvb2ZDaGVja2VyICpzYywKKyAgICBj
b25zdCBjaGFyICppZCwgaW50MzJfdCBsZW5ndGgsCisgICAgVVNwb29mQ2hlY2tSZXN1bHQqIGNo
ZWNrUmVzdWx0LAorICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNpZiBVX1NIT1dfQ1BMVVNQ
TFVTX0FQSQorLyoqCisgKiBDaGVjayB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgcG9zc2libGUg
c2VjdXJpdHkgaXNzdWVzLgorICogVGhlIHRleHQgdG8gYmUgY2hlY2tlZCB3aWxsIHR5cGljYWxs
eSBiZSBhbiBpZGVudGlmaWVyIG9mIHNvbWUgc29ydC4KKyAqIFRoZSBzZXQgb2YgY2hlY2tzIHRv
IGJlIHBlcmZvcm1lZCBpcyBzcGVjaWZpZWQgd2l0aCB1c3Bvb2Zfc2V0Q2hlY2tzKCkuCisgKgor
ICogQHBhcmFtIHNjICAgICAgVGhlIFVTcG9vZkNoZWNrZXIKKyAqIEBwYXJhbSBpZCAgICAgIEEg
aWRlbnRpZmllciB0byBiZSBjaGVja2VkIGZvciBwb3NzaWJsZSBzZWN1cml0eSBpc3N1ZXMuCisg
KiBAcGFyYW0gY2hlY2tSZXN1bHQgIEFuIGluc3RhbmNlIG9mIFVTcG9vZkNoZWNrUmVzdWx0IHRv
IGJlIGZpbGxlZCB3aXRoCisgKiAgICAgICAgICAgICAgICBkZXRhaWxzIGFib3V0IHRoZSBpZGVu
dGlmaWVyLiAgQ2FuIGJlIE5VTEwuCisgKiBAcGFyYW0gc3RhdHVzICBUaGUgZXJyb3IgY29kZSwg
c2V0IGlmIGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8KKyAqICAgICAgICAg
ICAgICAgIHBlcmZvcm0gdGhlIGNoZWNrLgorICogICAgICAgICAgICAgICAgU3Bvb2Zpbmcgb3Ig
c2VjdXJpdHkgaXNzdWVzIGRldGVjdGVkIHdpdGggdGhlIGlucHV0IHN0cmluZyBhcmUKKyAqICAg
ICAgICAgICAgICAgIG5vdCByZXBvcnRlZCBoZXJlLCBidXQgdGhyb3VnaCB0aGUgZnVuY3Rpb24n
cyByZXR1cm4gdmFsdWUuCisgKiBAcmV0dXJuICAgICAgICBBbiBpbnRlZ2VyIHZhbHVlIHdpdGgg
Yml0cyBzZXQgZm9yIGFueSBwb3RlbnRpYWwgc2VjdXJpdHkKKyAqICAgICAgICAgICAgICAgIG9y
IHNwb29maW5nIGlzc3VlcyBkZXRlY3RlZC4gIFRoZSBiaXRzIGFyZSBkZWZpbmVkIGJ5CisgKiAg
ICAgICAgICAgICAgICBlbnVtIFVTcG9vZkNoZWNrcy4gIChyZXR1cm5lZF92YWx1ZSAmIFVTUE9P
Rl9BTExfQ0hFQ0tTKQorICogICAgICAgICAgICAgICAgd2lsbCBiZSB6ZXJvIGlmIHRoZSBpbnB1
dCBzdHJpbmcgcGFzc2VzIGFsbCBvZiB0aGUKKyAqICAgICAgICAgICAgICAgIGVuYWJsZWQgY2hl
Y2tzLiAgQW55IGluZm9ybWF0aW9uIGluIHRoaXMgYml0bWFzayB3aWxsIGJlCisgKiAgICAgICAg
ICAgICAgICBjb25zaXN0ZW50IHdpdGggdGhlIGluZm9ybWF0aW9uIHNhdmVkIGluIHRoZSBvcHRp
b25hbAorICogICAgICAgICAgICAgICAgY2hlY2tSZXN1bHQgcGFyYW1ldGVyLgorICogQHNlZSB1
c3Bvb2Zfb3BlbkNoZWNrUmVzdWx0CisgKiBAc2VlIHVzcG9vZl9jaGVjazIKKyAqIEBzZWUgdXNw
b29mX2NoZWNrMlVURjgKKyAqIEBzdGFibGUgSUNVIDU4CisgKi8KK1VfU1RBQkxFIGludDMyX3Qg
VV9FWFBPUlQyCit1c3Bvb2ZfY2hlY2syVW5pY29kZVN0cmluZyhjb25zdCBVU3Bvb2ZDaGVja2Vy
ICpzYywKKyAgICBjb25zdCBpY3U6OlVuaWNvZGVTdHJpbmcgJmlkLAorICAgIFVTcG9vZkNoZWNr
UmVzdWx0KiBjaGVja1Jlc3VsdCwKKyAgICBVRXJyb3JDb2RlICpzdGF0dXMpOworI2VuZGlmCisK
Ky8qKgorICogQ3JlYXRlIGEgVVNwb29mQ2hlY2tSZXN1bHQsIHVzZWQgYnkgdGhlIHtAbGluayB1
c3Bvb2ZfY2hlY2syfSBjbGFzcyBvZiBmdW5jdGlvbnMgdG8gcmV0dXJuCisgKiBpbmZvcm1hdGlv
biBhYm91dCB0aGUgaWRlbnRpZmllci4gIEluZm9ybWF0aW9uIGluY2x1ZGVzOgorICogPHVsPgor
ICogICA8bGk+QSBiaXRtYXNrIG9mIHRoZSBjaGVja3MgdGhhdCBmYWlsZWQ8L2xpPgorICogICA8
bGk+VGhlIGlkZW50aWZpZXIncyByZXN0cmljdGlvbiBsZXZlbCAoVVRTIDM5IHNlY3Rpb24gNS4y
KTwvbGk+CisgKiAgIDxsaT5UaGUgc2V0IG9mIG51bWVyaWNzIGluIHRoZSBzdHJpbmcgKFVUUyAz
OSBzZWN0aW9uIDUuMyk8L2xpPgorICogPC91bD4KKyAqIFRoZSBkYXRhIGhlbGQgaW4gYSBVU3Bv
b2ZDaGVja1Jlc3VsdCBpcyBjbGVhcmVkIHdoZW5ldmVyIGl0IGlzIHBhc3NlZCBpbnRvIGEgbmV3
IGNhbGwKKyAqIG9mIHtAbGluayB1c3Bvb2ZfY2hlY2syfS4KKyAqCisgKiBAcGFyYW0gc3RhdHVz
ICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIHRoaXMgZnVuY3Rpb24gZW5jb3VudGVycyBhIHByb2Js
ZW0uCisgKiBAcmV0dXJuICAgICAgICB0aGUgbmV3bHkgY3JlYXRlZCBVU3Bvb2ZDaGVja1Jlc3Vs
dAorICogQHNlZSB1c3Bvb2ZfY2hlY2syCisgKiBAc2VlIHVzcG9vZl9jaGVjazJVVEY4CisgKiBA
c2VlIHVzcG9vZl9jaGVjazJVbmljb2RlU3RyaW5nCisgKiBAc3RhYmxlIElDVSA1OAorICovCitV
X1NUQUJMRSBVU3Bvb2ZDaGVja1Jlc3VsdCogVV9FWFBPUlQyCit1c3Bvb2Zfb3BlbkNoZWNrUmVz
dWx0KFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogQ2xvc2UgYSBVU3Bvb2ZDaGVja1Jl
c3VsdCwgZnJlZWluZyBhbnkgbWVtb3J5IHRoYXQgd2FzIGJlaW5nIGhlbGQgYnkKKyAqICAgaXRz
IGltcGxlbWVudGF0aW9uLgorICoKKyAqIEBwYXJhbSBjaGVja1Jlc3VsdCAgVGhlIGluc3RhbmNl
IG9mIFVTcG9vZkNoZWNrUmVzdWx0IHRvIGNsb3NlCisgKiBAc3RhYmxlIElDVSA1OAorICovCitV
X1NUQUJMRSB2b2lkIFVfRVhQT1JUMgordXNwb29mX2Nsb3NlQ2hlY2tSZXN1bHQoVVNwb29mQ2hl
Y2tSZXN1bHQgKmNoZWNrUmVzdWx0KTsKKworI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCisKK1Vf
TkFNRVNQQUNFX0JFR0lOCisKKy8qKgorICogXGNsYXNzIExvY2FsVVNwb29mQ2hlY2tSZXN1bHRQ
b2ludGVyCisgKiAiU21hcnQgcG9pbnRlciIgY2xhc3MsIGNsb3NlcyBhIFVTcG9vZkNoZWNrUmVz
dWx0IHZpYSB7QGxpbmsgdXNwb29mX2Nsb3NlQ2hlY2tSZXN1bHR9LgorICogRm9yIG1vc3QgbWV0
aG9kcyBzZWUgdGhlIExvY2FsUG9pbnRlckJhc2UgYmFzZSBjbGFzcy4KKyAqCisgKiBAc2VlIExv
Y2FsUG9pbnRlckJhc2UKKyAqIEBzZWUgTG9jYWxQb2ludGVyCisgKiBAc3RhYmxlIElDVSA1OAor
ICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVU3Bvb2ZDaGVja1Jlc3VsdFBv
aW50ZXIsIFVTcG9vZkNoZWNrUmVzdWx0LCB1c3Bvb2ZfY2xvc2VDaGVja1Jlc3VsdCk7CisKK1Vf
TkFNRVNQQUNFX0VORAogCiAjZW5kaWYKIAorLyoqCisgKiBJbmRpY2F0ZXMgd2hpY2ggb2YgdGhl
IHNwb29mIGNoZWNrKHMpIGhhdmUgZmFpbGVkLiBUaGUgdmFsdWUgaXMgYSBiaXR3aXNlIE9SIG9m
IHRoZSBjb25zdGFudHMgZm9yIHRoZSB0ZXN0cworICogaW4gcXVlc3Rpb246IFVTUE9PRl9SRVNU
UklDVElPTl9MRVZFTCwgVVNQT09GX0NIQVJfTElNSVQsIGFuZCBzbyBvbi4KKyAqCisgKiBAcGFy
YW0gY2hlY2tSZXN1bHQgIFRoZSBpbnN0YW5jZSBvZiBVU3Bvb2ZDaGVja1Jlc3VsdCBjcmVhdGVk
IGJ5IHtAbGluayB1c3Bvb2Zfb3BlbkNoZWNrUmVzdWx0fQorICogQHBhcmFtIHN0YXR1cyAgICAg
ICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIGFuIGVycm9yIG9jY3VycmVkLgorICogQHJldHVybiAg
ICAgICAgQW4gaW50ZWdlciB2YWx1ZSB3aXRoIGJpdHMgc2V0IGZvciBhbnkgcG90ZW50aWFsIHNl
Y3VyaXR5CisgKiAgICAgICAgICAgICAgICBvciBzcG9vZmluZyBpc3N1ZXMgZGV0ZWN0ZWQuICBU
aGUgYml0cyBhcmUgZGVmaW5lZCBieQorICogICAgICAgICAgICAgICAgZW51bSBVU3Bvb2ZDaGVj
a3MuICAocmV0dXJuZWRfdmFsdWUgJiBVU1BPT0ZfQUxMX0NIRUNLUykKKyAqICAgICAgICAgICAg
ICAgIHdpbGwgYmUgemVybyBpZiB0aGUgaW5wdXQgc3RyaW5nIHBhc3NlcyBhbGwgb2YgdGhlCisg
KiAgICAgICAgICAgICAgICBlbmFibGVkIGNoZWNrcy4KKyAqIEBzZWUgdXNwb29mX3NldENoZWNr
cworICogQHN0YWJsZSBJQ1UgNTgKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vz
cG9vZl9nZXRDaGVja1Jlc3VsdENoZWNrcyhjb25zdCBVU3Bvb2ZDaGVja1Jlc3VsdCAqY2hlY2tS
ZXN1bHQsIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogR2V0cyB0aGUgcmVzdHJpY3Rp
b24gbGV2ZWwgdGhhdCB0aGUgdGV4dCBtZWV0cywgaWYgdGhlIFVTUE9PRl9SRVNUUklDVElPTl9M
RVZFTCBjaGVjaworICogd2FzIGVuYWJsZWQ7IG90aGVyd2lzZSwgdW5kZWZpbmVkLgorICoKKyAq
IEBwYXJhbSBjaGVja1Jlc3VsdCAgVGhlIGluc3RhbmNlIG9mIFVTcG9vZkNoZWNrUmVzdWx0IGNy
ZWF0ZWQgYnkge0BsaW5rIHVzcG9vZl9vcGVuQ2hlY2tSZXN1bHR9CisgKiBAcGFyYW0gc3RhdHVz
ICAgICAgIFRoZSBlcnJvciBjb2RlLCBzZXQgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisgKiBAcmV0
dXJuICAgICAgICAgICAgIFRoZSByZXN0cmljdGlvbiBsZXZlbCBjb250YWluZWQgaW4gdGhlIFVT
cG9vZkNoZWNrUmVzdWx0CisgKiBAc2VlIHVzcG9vZl9zZXRSZXN0cmljdGlvbkxldmVsCisgKiBA
c3RhYmxlIElDVSA1OAorICovCitVX1NUQUJMRSBVUmVzdHJpY3Rpb25MZXZlbCBVX0VYUE9SVDIK
K3VzcG9vZl9nZXRDaGVja1Jlc3VsdFJlc3RyaWN0aW9uTGV2ZWwoY29uc3QgVVNwb29mQ2hlY2tS
ZXN1bHQgKmNoZWNrUmVzdWx0LCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIEdldHMg
dGhlIHNldCBvZiBudW1lcmljcyBmb3VuZCBpbiB0aGUgc3RyaW5nLCBpZiB0aGUgVVNQT09GX01J
WEVEX05VTUJFUlMgY2hlY2sgd2FzIGVuYWJsZWQ7CisgKiBvdGhlcndpc2UsIHVuZGVmaW5lZC4g
IFRoZSBzZXQgd2lsbCBjb250YWluIHRoZSB6ZXJvIGRpZ2l0IGZyb20gZWFjaCBkZWNpbWFsIG51
bWJlciBzeXN0ZW0gZm91bmQKKyAqIGluIHRoZSBpbnB1dCBzdHJpbmcuICBPd25lcnNoaXAgb2Yg
dGhlIHJldHVybmVkIFVTZXQgcmVtYWlucyB3aXRoIHRoZSBVU3Bvb2ZDaGVja1Jlc3VsdC4KKyAq
IFRoZSBVU2V0IHdpbGwgYmUgZnJlZSdkIHdoZW4ge0BsaW5rIHVzcG9vZl9jbG9zZUNoZWNrUmVz
dWx0fSBpcyBjYWxsZWQuCisgKgorICogQHBhcmFtIGNoZWNrUmVzdWx0ICBUaGUgaW5zdGFuY2Ug
b2YgVVNwb29mQ2hlY2tSZXN1bHQgY3JlYXRlZCBieSB7QGxpbmsgdXNwb29mX29wZW5DaGVja1Jl
c3VsdH0KKyAqIEByZXR1cm4gICAgICAgICAgICAgVGhlIHNldCBvZiBudW1lcmljcyBjb250YWlu
ZWQgaW4gdGhlIFVTcG9vZkNoZWNrUmVzdWx0CisgKiBAcGFyYW0gc3RhdHVzICAgICAgIFRoZSBl
cnJvciBjb2RlLCBzZXQgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisgKiBAc3RhYmxlIElDVSA1OAor
ICovCitVX1NUQUJMRSBjb25zdCBVU2V0KiBVX0VYUE9SVDIKK3VzcG9vZl9nZXRDaGVja1Jlc3Vs
dE51bWVyaWNzKGNvbnN0IFVTcG9vZkNoZWNrUmVzdWx0ICpjaGVja1Jlc3VsdCwgVUVycm9yQ29k
ZSAqc3RhdHVzKTsKKwogCiAvKioKICAqIENoZWNrIHRoZSB3aGV0aGVyIHR3byBzcGVjaWZpZWQg
c3RyaW5ncyBhcmUgdmlzdWFsbHkgY29uZnVzYWJsZS4KLSAqIFRoZSB0eXBlcyBvZiBjb25mdXNh
YmlsaXR5IHRvIGJlIHRlc3RlZCAtIHNpbmdsZSBzY3JpcHQsIG1peGVkIHNjcmlwdCwKLSAqIG9y
IHdob2xlIHNjcmlwdCAtIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBjaGVjayBvcHRpb25zIHNldCBm
b3IgdGhlCi0gKiBVU3Bvb2ZDaGVja2VyLgotICoKLSAqIFRoZSB0ZXN0cyB0byBiZSBwZXJmb3Jt
ZWQgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIGZsYWdzCi0gKiAgIFVTUE9PRl9TSU5HTEVfU0NSSVBU
X0NPTkZVU0FCTEUgCi0gKiAgIFVTUE9PRl9NSVhFRF9TQ1JJUFRfQ09ORlVTQUJMRSAgCi0gKiAg
IFVTUE9PRl9XSE9MRV9TQ1JJUFRfQ09ORlVTQUJMRQotICogQXQgbGVhc3Qgb25lIG9mIHRoZXNl
IHRlc3RzIG11c3QgYmUgc2VsZWN0ZWQuCi0gKiAKLSAqIFVTUE9PRl9BTllfQ0FTRSBpcyBhIG1v
ZGlmaWVyIGZvciB0aGUgdGVzdHMuICBTZWxlY3QgaXQgaWYgdGhlIGlkZW50aWZpZXJzCi0gKiAg
IG1heSBiZSBvZiBtaXhlZCBjYXNlLgotICogSWYgaWRlbnRpZmllcnMgYXJlIGNhc2UgZm9sZGVk
IGZvciBjb21wYXJpc29uIGFuZAotICogZGlzcGxheSB0byB0aGUgdXNlciwgZG8gbm90IHNlbGVj
dCB0aGUgVVNQT09GX0FOWV9DQVNFIG9wdGlvbi4KKyAqCisgKiBJZiB0aGUgc3RyaW5ncyBhcmUg
Y29uZnVzYWJsZSwgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIG5vbnplcm8sIGFzIGxvbmcgYXMK
KyAqIHtAbGluayBVU1BPT0ZfQ09ORlVTQUJMRX0gd2FzIGVuYWJsZWQgaW4gdXNwb29mX3NldENo
ZWNrcygpLgorICoKKyAqIFRoZSBiaXRzIGluIHRoZSByZXR1cm4gdmFsdWUgY29ycmVzcG9uZCB0
byBmbGFncyBmb3IgZWFjaCBvZiB0aGUgY2xhc3NlcyBvZgorICogY29uZnVzYWJsZXMgYXBwbGlj
YWJsZSB0byB0aGUgdHdvIGlucHV0IHN0cmluZ3MuICBBY2NvcmRpbmcgdG8gVVRTIDM5CisgKiBz
ZWN0aW9uIDQsIHRoZSBwb3NzaWJsZSBmbGFncyBhcmU6CisgKgorICogPHVsPgorICogICA8bGk+
e0BsaW5rIFVTUE9PRl9TSU5HTEVfU0NSSVBUX0NPTkZVU0FCTEV9PC9saT4KKyAqICAgPGxpPntA
bGluayBVU1BPT0ZfTUlYRURfU0NSSVBUX0NPTkZVU0FCTEV9PC9saT4KKyAqICAgPGxpPntAbGlu
ayBVU1BPT0ZfV0hPTEVfU0NSSVBUX0NPTkZVU0FCTEV9PC9saT4KKyAqIDwvdWw+CisgKgorICog
SWYgb25lIG9yIG1vcmUgb2YgdGhlIGFib3ZlIGZsYWdzIHdlcmUgbm90IGxpc3RlZCBpbiB1c3Bv
b2Zfc2V0Q2hlY2tzKCksIHRoaXMKKyAqIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgcmVwb3J0IHRoYXQg
Y2xhc3Mgb2YgY29uZnVzYWJsZS4gIFRoZSBjaGVjaworICoge0BsaW5rIFVTUE9PRl9DT05GVVNB
QkxFfSBlbmFibGVzIGFsbCB0aHJlZSBmbGFncy4KICAqCiAgKgogICogQHBhcmFtIHNjICAgICAg
VGhlIFVTcG9vZkNoZWNrZXIKLSAqIEBwYXJhbSBpZDEgICAgIFRoZSBmaXJzdCBvZiB0aGUgdHdv
IGlkZW50aWZpZXJzIHRvIGJlIGNvbXBhcmVkIGZvciAKKyAqIEBwYXJhbSBpZDEgICAgIFRoZSBm
aXJzdCBvZiB0aGUgdHdvIGlkZW50aWZpZXJzIHRvIGJlIGNvbXBhcmVkIGZvcgogICogICAgICAg
ICAgICAgICAgY29uZnVzYWJpbGl0eS4gIFRoZSBzdHJpbmdzIGFyZSBpbiBVVEYtMTYgZm9ybWF0
LgogICogQHBhcmFtIGxlbmd0aDEgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3QgaWRlbnRpZmVyLCBl
eHByZXNzZWQgaW4KLSAqICAgICAgICAgICAgICAgIDE2IGJpdCBVVEYtMTYgY29kZSB1bml0cywg
b3IgLTEgaWYgdGhlIHN0cmluZyBpcyAKKyAqICAgICAgICAgICAgICAgIDE2IGJpdCBVVEYtMTYg
Y29kZSB1bml0cywgb3IgLTEgaWYgdGhlIHN0cmluZyBpcwogICogICAgICAgICAgICAgICAgbnVs
IHRlcm1pbmF0ZWQuCi0gKiBAcGFyYW0gaWQyICAgICBUaGUgc2Vjb25kIG9mIHRoZSB0d28gaWRl
bnRpZmllcnMgdG8gYmUgY29tcGFyZWQgZm9yIAorICogQHBhcmFtIGlkMiAgICAgVGhlIHNlY29u
ZCBvZiB0aGUgdHdvIGlkZW50aWZpZXJzIHRvIGJlIGNvbXBhcmVkIGZvcgogICogICAgICAgICAg
ICAgICAgY29uZnVzYWJpbGl0eS4gIFRoZSBpZGVudGlmaWVycyBhcmUgaW4gVVRGLTE2IGZvcm1h
dC4KICAqIEBwYXJhbSBsZW5ndGgyIFRoZSBsZW5ndGggb2YgdGhlIHNlY29uZCBpZGVudGlmaWVy
cywgZXhwcmVzc2VkIGluCi0gKiAgICAgICAgICAgICAgICAxNiBiaXQgVVRGLTE2IGNvZGUgdW5p
dHMsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMgCisgKiAgICAgICAgICAgICAgICAxNiBiaXQgVVRG
LTE2IGNvZGUgdW5pdHMsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMKICAqICAgICAgICAgICAgICAg
IG51bCB0ZXJtaW5hdGVkLgogICogQHBhcmFtIHN0YXR1cyAgVGhlIGVycm9yIGNvZGUsIHNldCBp
ZiBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvCiAgKiAgICAgICAgICAgICAg
ICBwZXJmb3JtIHRoZSBjaGVjay4KQEAgLTc4Niw2ICsxMjk0LDcgQEAgdXNwb29mX2NoZWNrVW5p
Y29kZVN0cmluZyhjb25zdCBVU3Bvb2ZDaGVja2VyICpzYywKICAqICAgICAgICAgICAgICAgIHRo
ZSB0eXBlIG9mIGNvbmZ1c2FiaWxpdHkgZm91bmQsIGFzIGRlZmluZWQgYnkKICAqICAgICAgICAg
ICAgICAgIGVudW0gVVNwb29mQ2hlY2tzLiAgWmVybyBpcyByZXR1cm5lZCBpZiB0aGUgaWRlbnRp
ZmllcnMKICAqICAgICAgICAgICAgICAgIGFyZSBub3QgY29uZnVzYWJsZS4KKyAqCiAgKiBAc3Rh
YmxlIElDVSA0LjIKICAqLwogVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKQEAgLTc5NywxOSAr
MTMwNiwxNiBAQCB1c3Bvb2ZfYXJlQ29uZnVzYWJsZShjb25zdCBVU3Bvb2ZDaGVja2VyICpzYywK
IAogCiAvKioKLSAqIENoZWNrIHRoZSB3aGV0aGVyIHR3byBzcGVjaWZpZWQgc3RyaW5ncyBhcmUg
dmlzdWFsbHkgY29uZnVzYWJsZS4KLSAqIFRoZSB0eXBlcyBvZiBjb25mdXNhYmlsaXR5IHRvIGJl
IHRlc3RlZCAtIHNpbmdsZSBzY3JpcHQsIG1peGVkIHNjcmlwdCwKLSAqIG9yIHdob2xlIHNjcmlw
dCAtIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBjaGVjayBvcHRpb25zIHNldCBmb3IgdGhlCi0gKiBV
U3Bvb2ZDaGVja2VyLgorICogQSB2ZXJzaW9uIG9mIHtAbGluayB1c3Bvb2ZfYXJlQ29uZnVzYWJs
ZX0gYWNjZXB0aW5nIHN0cmluZ3MgaW4gVVRGLTggZm9ybWF0LgogICoKICAqIEBwYXJhbSBzYyAg
ICAgIFRoZSBVU3Bvb2ZDaGVja2VyCi0gKiBAcGFyYW0gaWQxICAgICBUaGUgZmlyc3Qgb2YgdGhl
IHR3byBpZGVudGlmaWVycyB0byBiZSBjb21wYXJlZCBmb3IgCisgKiBAcGFyYW0gaWQxICAgICBU
aGUgZmlyc3Qgb2YgdGhlIHR3byBpZGVudGlmaWVycyB0byBiZSBjb21wYXJlZCBmb3IKICAqICAg
ICAgICAgICAgICAgIGNvbmZ1c2FiaWxpdHkuICBUaGUgc3RyaW5ncyBhcmUgaW4gVVRGLTggZm9y
bWF0LgotICogQHBhcmFtIGxlbmd0aDEgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3QgaWRlbnRpZmll
cnMsIGluIGJ5dGVzLCBvciAtMSAKKyAqIEBwYXJhbSBsZW5ndGgxIHRoZSBsZW5ndGggb2YgdGhl
IGZpcnN0IGlkZW50aWZpZXJzLCBpbiBieXRlcywgb3IgLTEKICAqICAgICAgICAgICAgICAgIGlm
IHRoZSBzdHJpbmcgaXMgbnVsIHRlcm1pbmF0ZWQuCi0gKiBAcGFyYW0gaWQyICAgICBUaGUgc2Vj
b25kIG9mIHRoZSB0d28gaWRlbnRpZmllcnMgdG8gYmUgY29tcGFyZWQgZm9yIAorICogQHBhcmFt
IGlkMiAgICAgVGhlIHNlY29uZCBvZiB0aGUgdHdvIGlkZW50aWZpZXJzIHRvIGJlIGNvbXBhcmVk
IGZvcgogICogICAgICAgICAgICAgICAgY29uZnVzYWJpbGl0eS4gIFRoZSBzdHJpbmdzIGFyZSBp
biBVVEYtOCBmb3JtYXQuCi0gKiBAcGFyYW0gbGVuZ3RoMiBUaGUgbGVuZ3RoIG9mIHRoZSBzZWNv
bmQgc3RyaW5nIGluIGJ5dGVzLCBvciAtMSAKKyAqIEBwYXJhbSBsZW5ndGgyIFRoZSBsZW5ndGgg
b2YgdGhlIHNlY29uZCBzdHJpbmcgaW4gYnl0ZXMsIG9yIC0xCiAgKiAgICAgICAgICAgICAgICBp
ZiB0aGUgc3RyaW5nIGlzIG51bCB0ZXJtaW5hdGVkLgogICogQHBhcmFtIHN0YXR1cyAgVGhlIGVy
cm9yIGNvZGUsIHNldCBpZiBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvCiAg
KiAgICAgICAgICAgICAgICBwZXJmb3JtIHRoZSBjaGVjay4KQEAgLTgxOSw3ICsxMzI1LDEwIEBA
IHVzcG9vZl9hcmVDb25mdXNhYmxlKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAogICogICAgICAg
ICAgICAgICAgdGhlIHR5cGUgb2YgY29uZnVzYWJpbGl0eSBmb3VuZCwgYXMgZGVmaW5lZCBieQog
ICogICAgICAgICAgICAgICAgZW51bSBVU3Bvb2ZDaGVja3MuICBaZXJvIGlzIHJldHVybmVkIGlm
IHRoZSBzdHJpbmdzCiAgKiAgICAgICAgICAgICAgICBhcmUgbm90IGNvbmZ1c2FibGUuCisgKgog
ICogQHN0YWJsZSBJQ1UgNC4yCisgKgorICogQHNlZSB1c3Bvb2ZfYXJlQ29uZnVzYWJsZQogICov
CiBVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgogdXNwb29mX2FyZUNvbmZ1c2FibGVVVEY4KGNv
bnN0IFVTcG9vZkNoZWNrZXIgKnNjLApAQCAtODMyLDE1ICsxMzQxLDEyIEBAIHVzcG9vZl9hcmVD
b25mdXNhYmxlVVRGOChjb25zdCBVU3Bvb2ZDaGVja2VyICpzYywKIAogI2lmIFVfU0hPV19DUExV
U1BMVVNfQVBJCiAvKioKLSAqIENoZWNrIHRoZSB3aGV0aGVyIHR3byBzcGVjaWZpZWQgc3RyaW5n
cyBhcmUgdmlzdWFsbHkgY29uZnVzYWJsZS4KLSAqIFRoZSB0eXBlcyBvZiBjb25mdXNhYmlsaXR5
IHRvIGJlIHRlc3RlZCAtIHNpbmdsZSBzY3JpcHQsIG1peGVkIHNjcmlwdCwKLSAqIG9yIHdob2xl
IHNjcmlwdCAtIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBjaGVjayBvcHRpb25zIHNldCBmb3IgdGhl
Ci0gKiBVU3Bvb2ZDaGVja2VyLgorICogQSB2ZXJzaW9uIG9mIHtAbGluayB1c3Bvb2ZfYXJlQ29u
ZnVzYWJsZX0gYWNjZXB0aW5nIFVuaWNvZGVTdHJpbmdzLgogICoKICAqIEBwYXJhbSBzYyAgICAg
IFRoZSBVU3Bvb2ZDaGVja2VyCi0gKiBAcGFyYW0gczEgICAgIFRoZSBmaXJzdCBvZiB0aGUgdHdv
IGlkZW50aWZpZXJzIHRvIGJlIGNvbXBhcmVkIGZvciAKKyAqIEBwYXJhbSBzMSAgICAgVGhlIGZp
cnN0IG9mIHRoZSB0d28gaWRlbnRpZmllcnMgdG8gYmUgY29tcGFyZWQgZm9yCiAgKiAgICAgICAg
ICAgICAgICBjb25mdXNhYmlsaXR5LiAgVGhlIHN0cmluZ3MgYXJlIGluIFVURi04IGZvcm1hdC4K
LSAqIEBwYXJhbSBzMiAgICAgVGhlIHNlY29uZCBvZiB0aGUgdHdvIGlkZW50aWZpZXJzIHRvIGJl
IGNvbXBhcmVkIGZvciAKKyAqIEBwYXJhbSBzMiAgICAgVGhlIHNlY29uZCBvZiB0aGUgdHdvIGlk
ZW50aWZpZXJzIHRvIGJlIGNvbXBhcmVkIGZvcgogICogICAgICAgICAgICAgICAgY29uZnVzYWJp
bGl0eS4gIFRoZSBzdHJpbmdzIGFyZSBpbiBVVEYtOCBmb3JtYXQuCiAgKiBAcGFyYW0gc3RhdHVz
ICBUaGUgZXJyb3IgY29kZSwgc2V0IGlmIGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRp
bmcgdG8KICAqICAgICAgICAgICAgICAgIHBlcmZvcm0gdGhlIGNoZWNrLgpAQCAtODUwLDcgKzEz
NTYsMTAgQEAgdXNwb29mX2FyZUNvbmZ1c2FibGVVVEY4KGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNj
LAogICogICAgICAgICAgICAgICAgdGhlIHR5cGUgb2YgY29uZnVzYWJpbGl0eSBmb3VuZCwgYXMg
ZGVmaW5lZCBieQogICogICAgICAgICAgICAgICAgZW51bSBVU3Bvb2ZDaGVja3MuICBaZXJvIGlz
IHJldHVybmVkIGlmIHRoZSBpZGVudGlmaWVycwogICogICAgICAgICAgICAgICAgYXJlIG5vdCBj
b25mdXNhYmxlLgorICoKICAqIEBzdGFibGUgSUNVIDQuMgorICoKKyAqIEBzZWUgdXNwb29mX2Fy
ZUNvbmZ1c2FibGUKICAqLwogVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKIHVzcG9vZl9hcmVD
b25mdXNhYmxlVW5pY29kZVN0cmluZyhjb25zdCBVU3Bvb2ZDaGVja2VyICpzYywKQEAgLTg2MSwx
MTIgKzEzNzAsMTA3IEBAIHVzcG9vZl9hcmVDb25mdXNhYmxlVW5pY29kZVN0cmluZyhjb25zdCBV
U3Bvb2ZDaGVja2VyICpzYywKIAogCiAvKioKLSAgKiAgR2V0IHRoZSAic2tlbGV0b24iIGZvciBh
biBpZGVudGlmaWVyLgotICAqICBTa2VsZXRvbnMgYXJlIGEgdHJhbnNmb3JtYXRpb24gb2YgdGhl
IGlucHV0IGlkZW50aWZpZXI7Ci0gICogIFR3byBpZGVudGlmaWVycyBhcmUgY29uZnVzYWJsZSBp
ZiB0aGVpciBza2VsZXRvbnMgYXJlIGlkZW50aWNhbC4KLSAgKiAgU2VlIFVuaWNvZGUgVUFYICMz
OSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KLSAgKgotICAqICBVc2luZyBza2VsZXRvbnMg
ZGlyZWN0bHkgbWFrZXMgaXQgcG9zc2libGUgdG8gcXVpY2tseSBjaGVjawotICAqICB3aGV0aGVy
IGFuIGlkZW50aWZpZXIgaXMgY29uZnVzYWJsZSB3aXRoIGFueSBvZiBzb21lIGxhcmdlCi0gICog
IHNldCBvZiBleGlzdGluZyBpZGVudGlmaWVycywgYnkgY3JlYXRpbmcgYW4gZWZmaWNpZW50bHkK
LSAgKiAgc2VhcmNoYWJsZSBjb2xsZWN0aW9uIG9mIHRoZSBza2VsZXRvbnMuCi0gICoKLSAgKiBA
cGFyYW0gc2MgICAgICBUaGUgVVNwb29mQ2hlY2tlcgotICAqIEBwYXJhbSB0eXBlICAgIFRoZSB0
eXBlIG9mIHNrZWxldG9uLCBjb3JyZXNwb25kaW5nIHRvIHdoaWNoCi0gICogICAgICAgICAgICAg
ICAgb2YgdGhlIFVuaWNvZGUgY29uZnVzYWJsZSBkYXRhIHRhYmxlcyB0byB1c2UuCi0gICogICAg
ICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgTWl4ZWQtU2NyaXB0LCBMb3dlcmNhc2UuCi0gICog
ICAgICAgICAgICAgICAgQWxsb3dlZCBvcHRpb25zIGFyZSBVU1BPT0ZfU0lOR0xFX1NDUklQVF9D
T05GVVNBQkxFIGFuZAotICAqICAgICAgICAgICAgICAgIFVTUE9PRl9BTllfQ0FTRS4gIFRoZSB0
d28gZmxhZ3MgbWF5IGJlIE9SZWQuCi0gICogQHBhcmFtIGlkICAgICAgVGhlIGlucHV0IGlkZW50
aWZpZXIgd2hvc2Ugc2tlbGV0b24gd2lsbCBiZSBjb21wdXRlZC4KLSAgKiBAcGFyYW0gbGVuZ3Ro
ICBUaGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBpZGVudGlmaWVyLCBleHByZXNzZWQgaW4gMTYgYml0
Ci0gICogICAgICAgICAgICAgICAgVVRGLTE2IGNvZGUgdW5pdHMsIG9yIC0xIGlmIHRoZSBzdHJp
bmcgaXMgemVybyB0ZXJtaW5hdGVkLgotICAqIEBwYXJhbSBkZXN0ICAgIFRoZSBvdXRwdXQgYnVm
ZmVyLCB0byByZWNlaXZlIHRoZSBza2VsZXRvbiBzdHJpbmcuCi0gICogQHBhcmFtIGRlc3RDYXBh
Y2l0eSAgVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IGJ1ZmZlciwgaW4gMTYgYml0IHVuaXRzLgot
ICAqICAgICAgICAgICAgICAgIFRoZSBkZXN0Q2FwYWNpdHkgbWF5IGJlIHplcm8sIGluIHdoaWNo
IGNhc2UgdGhlIGZ1bmN0aW9uIHdpbGwKLSAgKiAgICAgICAgICAgICAgICByZXR1cm4gdGhlIGFj
dHVhbCBsZW5ndGggb2YgdGhlIHNrZWxldG9uLgotICAqIEBwYXJhbSBzdGF0dXMgIFRoZSBlcnJv
ciBjb2RlLCBzZXQgaWYgYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0bwotICAq
ICAgICAgICAgICAgICAgIHBlcmZvcm0gdGhlIGNoZWNrLgotICAqIEByZXR1cm4gICAgICAgIFRo
ZSBsZW5ndGggb2YgdGhlIHNrZWxldG9uIHN0cmluZy4gIFRoZSByZXR1cm5lZCBsZW5ndGgKLSAg
KiAgICAgICAgICAgICAgICBpcyBhbHdheXMgdGhhdCBvZiB0aGUgY29tcGxldGUgc2tlbGV0b24s
IGV2ZW4gd2hlbiB0aGUKLSAgKiAgICAgICAgICAgICAgICBzdXBwbGllZCBidWZmZXIgaXMgdG9v
IHNtYWxsIChvciBvZiB6ZXJvIGxlbmd0aCkKLSAgKiAgICAgICAgICAgICAgICAKLSAgKiBAc3Rh
YmxlIElDVSA0LjIKLSAgKi8KKyAqICBHZXQgdGhlICJza2VsZXRvbiIgZm9yIGFuIGlkZW50aWZp
ZXIuCisgKiAgU2tlbGV0b25zIGFyZSBhIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBpbnB1dCBpZGVu
dGlmaWVyOworICogVHdvIGlkZW50aWZpZXJzIGFyZSBjb25mdXNhYmxlIGlmIHRoZWlyIHNrZWxl
dG9ucyBhcmUgaWRlbnRpY2FsLgorICogIFNlZSBVbmljb2RlIFVBWCAjMzkgZm9yIGFkZGl0aW9u
YWwgaW5mb3JtYXRpb24uCisgKgorICogIFVzaW5nIHNrZWxldG9ucyBkaXJlY3RseSBtYWtlcyBp
dCBwb3NzaWJsZSB0byBxdWlja2x5IGNoZWNrCisgKiAgd2hldGhlciBhbiBpZGVudGlmaWVyIGlz
IGNvbmZ1c2FibGUgd2l0aCBhbnkgb2Ygc29tZSBsYXJnZQorICogIHNldCBvZiBleGlzdGluZyBp
ZGVudGlmaWVycywgYnkgY3JlYXRpbmcgYW4gZWZmaWNpZW50bHkKKyAqICBzZWFyY2hhYmxlIGNv
bGxlY3Rpb24gb2YgdGhlIHNrZWxldG9ucy4KKyAqCisgKiBAcGFyYW0gc2MgICAgICBUaGUgVVNw
b29mQ2hlY2tlcgorICogQHBhcmFtIHR5cGUgICAgRGVwcmVjYXRlZCBpbiBJQ1UgNTguICBZb3Ug
bWF5IHBhc3MgYW55IG51bWJlci4KKyAqICAgICAgICAgICAgICAgIE9yaWdpbmFsbHksIGNvbnRy
b2xsZWQgd2hpY2ggb2YgdGhlIFVuaWNvZGUgY29uZnVzYWJsZSBkYXRhCisgKiAgICAgICAgICAg
ICAgICB0YWJsZXMgdG8gdXNlLgorICogQHBhcmFtIGlkICAgICAgVGhlIGlucHV0IGlkZW50aWZp
ZXIgd2hvc2Ugc2tlbGV0b24gd2lsbCBiZSBjb21wdXRlZC4KKyAqIEBwYXJhbSBsZW5ndGggIFRo
ZSBsZW5ndGggb2YgdGhlIGlucHV0IGlkZW50aWZpZXIsIGV4cHJlc3NlZCBpbiAxNiBiaXQKKyAq
ICAgICAgICAgICAgICAgIFVURi0xNiBjb2RlIHVuaXRzLCBvciAtMSBpZiB0aGUgc3RyaW5nIGlz
IHplcm8gdGVybWluYXRlZC4KKyAqIEBwYXJhbSBkZXN0ICAgIFRoZSBvdXRwdXQgYnVmZmVyLCB0
byByZWNlaXZlIHRoZSBza2VsZXRvbiBzdHJpbmcuCisgKiBAcGFyYW0gZGVzdENhcGFjaXR5ICBU
aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgYnVmZmVyLCBpbiAxNiBiaXQgdW5pdHMuCisgKiAgICAg
ICAgICAgICAgICBUaGUgZGVzdENhcGFjaXR5IG1heSBiZSB6ZXJvLCBpbiB3aGljaCBjYXNlIHRo
ZSBmdW5jdGlvbiB3aWxsCisgKiAgICAgICAgICAgICAgICByZXR1cm4gdGhlIGFjdHVhbCBsZW5n
dGggb2YgdGhlIHNrZWxldG9uLgorICogQHBhcmFtIHN0YXR1cyAgVGhlIGVycm9yIGNvZGUsIHNl
dCBpZiBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvCisgKiAgICAgICAgICAg
ICAgICBwZXJmb3JtIHRoZSBjaGVjay4KKyAqIEByZXR1cm4gICAgICAgIFRoZSBsZW5ndGggb2Yg
dGhlIHNrZWxldG9uIHN0cmluZy4gIFRoZSByZXR1cm5lZCBsZW5ndGgKKyAqICAgICAgICAgICAg
ICAgIGlzIGFsd2F5cyB0aGF0IG9mIHRoZSBjb21wbGV0ZSBza2VsZXRvbiwgZXZlbiB3aGVuIHRo
ZQorICogICAgICAgICAgICAgICAgc3VwcGxpZWQgYnVmZmVyIGlzIHRvbyBzbWFsbCAob3Igb2Yg
emVybyBsZW5ndGgpCisgKgorICogQHN0YWJsZSBJQ1UgNC4yCisgKiBAc2VlIHVzcG9vZl9hcmVD
b25mdXNhYmxlCisgKi8KIFVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCiB1c3Bvb2ZfZ2V0U2tl
bGV0b24oY29uc3QgVVNwb29mQ2hlY2tlciAqc2MsCiAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgdHlwZSwKICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqaWQsICBpbnQzMl90IGxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNp
dHksCiAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKLSAgICAKKwogLyoq
Ci0gICogIEdldCB0aGUgInNrZWxldG9uIiBmb3IgYW4gaWRlbnRpZmllci4KLSAgKiAgU2tlbGV0
b25zIGFyZSBhIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBpbnB1dCBpZGVudGlmaWVyOwotICAqICBU
d28gaWRlbnRpZmllcnMgYXJlIGNvbmZ1c2FibGUgaWYgdGhlaXIgc2tlbGV0b25zIGFyZSBpZGVu
dGljYWwuCi0gICogIFNlZSBVbmljb2RlIFVBWCAjMzkgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRp
b24uCi0gICoKLSAgKiAgVXNpbmcgc2tlbGV0b25zIGRpcmVjdGx5IG1ha2VzIGl0IHBvc3NpYmxl
IHRvIHF1aWNrbHkgY2hlY2sKLSAgKiAgd2hldGhlciBhbiBpZGVudGlmaWVyIGlzIGNvbmZ1c2Fi
bGUgd2l0aCBhbnkgb2Ygc29tZSBsYXJnZQotICAqICBzZXQgb2YgZXhpc3RpbmcgaWRlbnRpZmll
cnMsIGJ5IGNyZWF0aW5nIGFuIGVmZmljaWVudGx5Ci0gICogIHNlYXJjaGFibGUgY29sbGVjdGlv
biBvZiB0aGUgc2tlbGV0b25zLgotICAqCi0gICogQHBhcmFtIHNjICAgICAgVGhlIFVTcG9vZkNo
ZWNrZXIgCi0gICogQHBhcmFtIHR5cGUgICAgVGhlIHR5cGUgb2Ygc2tlbGV0b24sIGNvcnJlc3Bv
bmRpbmcgdG8gd2hpY2gKLSAgKiAgICAgICAgICAgICAgICBvZiB0aGUgVW5pY29kZSBjb25mdXNh
YmxlIGRhdGEgdGFibGVzIHRvIHVzZS4KLSAgKiAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBp
cyBNaXhlZC1TY3JpcHQsIExvd2VyY2FzZS4KLSAgKiAgICAgICAgICAgICAgICBBbGxvd2VkIG9w
dGlvbnMgYXJlIFVTUE9PRl9TSU5HTEVfU0NSSVBUX0NPTkZVU0FCTEUgYW5kCi0gICogICAgICAg
ICAgICAgICAgVVNQT09GX0FOWV9DQVNFLiAgVGhlIHR3byBmbGFncyBtYXkgYmUgT1JlZC4KLSAg
KiBAcGFyYW0gaWQgICAgICBUaGUgVVRGLTggZm9ybWF0IGlkZW50aWZpZXIgd2hvc2Ugc2tlbGV0
b24gd2lsbCBiZSBjb21wdXRlZC4KLSAgKiBAcGFyYW0gbGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRo
ZSBpbnB1dCBzdHJpbmcsIGluIGJ5dGVzLAotICAqICAgICAgICAgICAgICAgIG9yIC0xIGlmIHRo
ZSBzdHJpbmcgaXMgemVybyB0ZXJtaW5hdGVkLgotICAqIEBwYXJhbSBkZXN0ICAgIFRoZSBvdXRw
dXQgYnVmZmVyLCB0byByZWNlaXZlIHRoZSBza2VsZXRvbiBzdHJpbmcuCi0gICogQHBhcmFtIGRl
c3RDYXBhY2l0eSAgVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IGJ1ZmZlciwgaW4gYnl0ZXMuCi0g
ICogICAgICAgICAgICAgICAgVGhlIGRlc3RDYXBhY2l0eSBtYXkgYmUgemVybywgaW4gd2hpY2gg
Y2FzZSB0aGUgZnVuY3Rpb24gd2lsbAotICAqICAgICAgICAgICAgICAgIHJldHVybiB0aGUgYWN0
dWFsIGxlbmd0aCBvZiB0aGUgc2tlbGV0b24uCi0gICogQHBhcmFtIHN0YXR1cyAgVGhlIGVycm9y
IGNvZGUsIHNldCBpZiBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvCi0gICog
ICAgICAgICAgICAgICAgcGVyZm9ybSB0aGUgY2hlY2suICBQb3NzaWJsZSBFcnJvcnMgaW5jbHVk
ZSBVX0lOVkFMSURfQ0hBUl9GT1VORAotICAqICAgICAgICAgICAgICAgICAgIGZvciBpbnZhbGlk
IFVURi04IHNlcXVlbmNlcywgYW5kCi0gICogICAgICAgICAgICAgICAgICAgVV9CVUZGRVJfT1ZF
UkZMT1dfRVJST1IgaWYgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBpcyB0b28gc21hbGwKLSAgKiAg
ICAgICAgICAgICAgICAgICB0byBob2xkIHRoZSBjb21wbGV0ZSBza2VsZXRvbi4KLSAgKiBAcmV0
dXJuICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBza2VsZXRvbiBzdHJpbmcsIGluIGJ5dGVzLiAg
VGhlIHJldHVybmVkIGxlbmd0aAotICAqICAgICAgICAgICAgICAgIGlzIGFsd2F5cyB0aGF0IG9m
IHRoZSBjb21wbGV0ZSBza2VsZXRvbiwgZXZlbiB3aGVuIHRoZQotICAqICAgICAgICAgICAgICAg
IHN1cHBsaWVkIGJ1ZmZlciBpcyB0b28gc21hbGwgKG9yIG9mIHplcm8gbGVuZ3RoKQotICAqICAg
ICAgICAgICAgICAgIAotICAqIEBzdGFibGUgSUNVIDQuMgotICAqLyAgIAorICogIEdldCB0aGUg
InNrZWxldG9uIiBmb3IgYW4gaWRlbnRpZmllci4KKyAqICBTa2VsZXRvbnMgYXJlIGEgdHJhbnNm
b3JtYXRpb24gb2YgdGhlIGlucHV0IGlkZW50aWZpZXI7CisgKiAgVHdvIGlkZW50aWZpZXJzIGFy
ZSBjb25mdXNhYmxlIGlmIHRoZWlyIHNrZWxldG9ucyBhcmUgaWRlbnRpY2FsLgorICogIFNlZSBV
bmljb2RlIFVBWCAjMzkgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgKgorICogIFVzaW5n
IHNrZWxldG9ucyBkaXJlY3RseSBtYWtlcyBpdCBwb3NzaWJsZSB0byBxdWlja2x5IGNoZWNrCisg
KiAgd2hldGhlciBhbiBpZGVudGlmaWVyIGlzIGNvbmZ1c2FibGUgd2l0aCBhbnkgb2Ygc29tZSBs
YXJnZQorICogIHNldCBvZiBleGlzdGluZyBpZGVudGlmaWVycywgYnkgY3JlYXRpbmcgYW4gZWZm
aWNpZW50bHkKKyAqICBzZWFyY2hhYmxlIGNvbGxlY3Rpb24gb2YgdGhlIHNrZWxldG9ucy4KKyAq
CisgKiBAcGFyYW0gc2MgICAgICBUaGUgVVNwb29mQ2hlY2tlcgorICogQHBhcmFtIHR5cGUgICAg
RGVwcmVjYXRlZCBpbiBJQ1UgNTguICBZb3UgbWF5IHBhc3MgYW55IG51bWJlci4KKyAqICAgICAg
ICAgICAgICAgIE9yaWdpbmFsbHksIGNvbnRyb2xsZWQgd2hpY2ggb2YgdGhlIFVuaWNvZGUgY29u
ZnVzYWJsZSBkYXRhCisgKiAgICAgICAgICAgICAgICB0YWJsZXMgdG8gdXNlLgorICogQHBhcmFt
IGlkICAgICAgVGhlIFVURi04IGZvcm1hdCBpZGVudGlmaWVyIHdob3NlIHNrZWxldG9uIHdpbGwg
YmUgY29tcHV0ZWQuCisgKiBAcGFyYW0gbGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBz
dHJpbmcsIGluIGJ5dGVzLAorICogICAgICAgICAgICAgICAgb3IgLTEgaWYgdGhlIHN0cmluZyBp
cyB6ZXJvIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gZGVzdCAgICBUaGUgb3V0cHV0IGJ1ZmZlciwg
dG8gcmVjZWl2ZSB0aGUgc2tlbGV0b24gc3RyaW5nLgorICogQHBhcmFtIGRlc3RDYXBhY2l0eSAg
VGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IGJ1ZmZlciwgaW4gYnl0ZXMuCisgKiAgICAgICAgICAg
ICAgICBUaGUgZGVzdENhcGFjaXR5IG1heSBiZSB6ZXJvLCBpbiB3aGljaCBjYXNlIHRoZSBmdW5j
dGlvbiB3aWxsCisgKiAgICAgICAgICAgICAgICByZXR1cm4gdGhlIGFjdHVhbCBsZW5ndGggb2Yg
dGhlIHNrZWxldG9uLgorICogQHBhcmFtIHN0YXR1cyAgVGhlIGVycm9yIGNvZGUsIHNldCBpZiBh
biBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvCisgKiAgICAgICAgICAgICAgICBw
ZXJmb3JtIHRoZSBjaGVjay4gIFBvc3NpYmxlIEVycm9ycyBpbmNsdWRlIFVfSU5WQUxJRF9DSEFS
X0ZPVU5ECisgKiAgICAgICAgICAgICAgICAgICBmb3IgaW52YWxpZCBVVEYtOCBzZXF1ZW5jZXMs
IGFuZAorICogICAgICAgICAgICAgICAgICAgVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IgaWYgdGhl
IGRlc3RpbmF0aW9uIGJ1ZmZlciBpcyB0b28gc21hbGwKKyAqICAgICAgICAgICAgICAgICAgIHRv
IGhvbGQgdGhlIGNvbXBsZXRlIHNrZWxldG9uLgorICogQHJldHVybiAgICAgICAgVGhlIGxlbmd0
aCBvZiB0aGUgc2tlbGV0b24gc3RyaW5nLCBpbiBieXRlcy4gIFRoZSByZXR1cm5lZCBsZW5ndGgK
KyAqICAgICAgICAgICAgICAgIGlzIGFsd2F5cyB0aGF0IG9mIHRoZSBjb21wbGV0ZSBza2VsZXRv
biwgZXZlbiB3aGVuIHRoZQorICogICAgICAgICAgICAgICAgc3VwcGxpZWQgYnVmZmVyIGlzIHRv
byBzbWFsbCAob3Igb2YgemVybyBsZW5ndGgpCisgKgorICogQHN0YWJsZSBJQ1UgNC4yCisgKi8K
IFVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCiB1c3Bvb2ZfZ2V0U2tlbGV0b25VVEY4KGNvbnN0
IFVTcG9vZkNoZWNrZXIgKnNjLAogICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppZCwgIGludDMyX3QgbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0
eSwKICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKLSAgICAKKwog
I2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCiAvKioKLSAgKiAgR2V0IHRoZSAic2tlbGV0b24iIGZv
ciBhbiBpZGVudGlmaWVyLgotICAqICBTa2VsZXRvbnMgYXJlIGEgdHJhbnNmb3JtYXRpb24gb2Yg
dGhlIGlucHV0IGlkZW50aWZpZXI7Ci0gICogIFR3byBpZGVudGlmaWVycyBhcmUgY29uZnVzYWJs
ZSBpZiB0aGVpciBza2VsZXRvbnMgYXJlIGlkZW50aWNhbC4KLSAgKiAgU2VlIFVuaWNvZGUgVUFY
ICMzOSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KLSAgKgotICAqICBVc2luZyBza2VsZXRv
bnMgZGlyZWN0bHkgbWFrZXMgaXQgcG9zc2libGUgdG8gcXVpY2tseSBjaGVjawotICAqICB3aGV0
aGVyIGFuIGlkZW50aWZpZXIgaXMgY29uZnVzYWJsZSB3aXRoIGFueSBvZiBzb21lIGxhcmdlCi0g
ICogIHNldCBvZiBleGlzdGluZyBpZGVudGlmaWVycywgYnkgY3JlYXRpbmcgYW4gZWZmaWNpZW50
bHkKLSAgKiAgc2VhcmNoYWJsZSBjb2xsZWN0aW9uIG9mIHRoZSBza2VsZXRvbnMuCi0gICoKLSAg
KiBAcGFyYW0gc2MgICAgICBUaGUgVVNwb29mQ2hlY2tlci4KLSAgKiBAcGFyYW0gdHlwZSAgICBU
aGUgdHlwZSBvZiBza2VsZXRvbiwgY29ycmVzcG9uZGluZyB0byB3aGljaAotICAqICAgICAgICAg
ICAgICAgIG9mIHRoZSBVbmljb2RlIGNvbmZ1c2FibGUgZGF0YSB0YWJsZXMgdG8gdXNlLgotICAq
ICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIE1peGVkLVNjcmlwdCwgTG93ZXJjYXNlLgot
ICAqICAgICAgICAgICAgICAgIEFsbG93ZWQgb3B0aW9ucyBhcmUgVVNQT09GX1NJTkdMRV9TQ1JJ
UFRfQ09ORlVTQUJMRSBhbmQKLSAgKiAgICAgICAgICAgICAgICBVU1BPT0ZfQU5ZX0NBU0UuICBU
aGUgdHdvIGZsYWdzIG1heSBiZSBPUmVkLgotICAqIEBwYXJhbSBpZCAgICAgIFRoZSBpbnB1dCBp
ZGVudGlmaWVyIHdob3NlIHNrZWxldG9uIHdpbGwgYmUgY29tcHV0ZWQuCi0gICogQHBhcmFtIGRl
c3QgICAgVGhlIG91dHB1dCBpZGVudGlmaWVyLCB0byByZWNlaXZlIHRoZSBza2VsZXRvbiBzdHJp
bmcuCi0gICogQHBhcmFtIHN0YXR1cyAgVGhlIGVycm9yIGNvZGUsIHNldCBpZiBhbiBlcnJvciBv
Y2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvCi0gICogICAgICAgICAgICAgICAgcGVyZm9ybSB0
aGUgY2hlY2suCi0gICogQHJldHVybiAgICAgICAgQSByZWZlcmVuY2UgdG8gdGhlIGRlc3RpbmF0
aW9uIChza2VsZXRvbikgc3RyaW5nLgotICAqICAgICAgICAgICAgICAgIAotICAqIEBzdGFibGUg
SUNVIDQuMgotICAqLyAgIAorICogIEdldCB0aGUgInNrZWxldG9uIiBmb3IgYW4gaWRlbnRpZmll
ci4KKyAqICBTa2VsZXRvbnMgYXJlIGEgdHJhbnNmb3JtYXRpb24gb2YgdGhlIGlucHV0IGlkZW50
aWZpZXI7CisgKiAgVHdvIGlkZW50aWZpZXJzIGFyZSBjb25mdXNhYmxlIGlmIHRoZWlyIHNrZWxl
dG9ucyBhcmUgaWRlbnRpY2FsLgorICogIFNlZSBVbmljb2RlIFVBWCAjMzkgZm9yIGFkZGl0aW9u
YWwgaW5mb3JtYXRpb24uCisgKgorICogIFVzaW5nIHNrZWxldG9ucyBkaXJlY3RseSBtYWtlcyBp
dCBwb3NzaWJsZSB0byBxdWlja2x5IGNoZWNrCisgKiAgd2hldGhlciBhbiBpZGVudGlmaWVyIGlz
IGNvbmZ1c2FibGUgd2l0aCBhbnkgb2Ygc29tZSBsYXJnZQorICogIHNldCBvZiBleGlzdGluZyBp
ZGVudGlmaWVycywgYnkgY3JlYXRpbmcgYW4gZWZmaWNpZW50bHkKKyAqICBzZWFyY2hhYmxlIGNv
bGxlY3Rpb24gb2YgdGhlIHNrZWxldG9ucy4KKyAqCisgKiBAcGFyYW0gc2MgICAgICBUaGUgVVNw
b29mQ2hlY2tlci4KKyAqIEBwYXJhbSB0eXBlICAgIERlcHJlY2F0ZWQgaW4gSUNVIDU4LiAgWW91
IG1heSBwYXNzIGFueSBudW1iZXIuCisgKiAgICAgICAgICAgICAgICBPcmlnaW5hbGx5LCBjb250
cm9sbGVkIHdoaWNoIG9mIHRoZSBVbmljb2RlIGNvbmZ1c2FibGUgZGF0YQorICogICAgICAgICAg
ICAgICAgdGFibGVzIHRvIHVzZS4KKyAqIEBwYXJhbSBpZCAgICAgIFRoZSBpbnB1dCBpZGVudGlm
aWVyIHdob3NlIHNrZWxldG9uIHdpbGwgYmUgY29tcHV0ZWQuCisgKiBAcGFyYW0gZGVzdCAgICBU
aGUgb3V0cHV0IGlkZW50aWZpZXIsIHRvIHJlY2VpdmUgdGhlIHNrZWxldG9uIHN0cmluZy4KKyAq
IEBwYXJhbSBzdGF0dXMgIFRoZSBlcnJvciBjb2RlLCBzZXQgaWYgYW4gZXJyb3Igb2NjdXJyZWQg
d2hpbGUgYXR0ZW1wdGluZyB0bworICogICAgICAgICAgICAgICAgcGVyZm9ybSB0aGUgY2hlY2su
CisgKiBAcmV0dXJuICAgICAgICBBIHJlZmVyZW5jZSB0byB0aGUgZGVzdGluYXRpb24gKHNrZWxl
dG9uKSBzdHJpbmcuCisgKgorICogQHN0YWJsZSBJQ1UgNC4yCisgKi8KIFVfSTE4Tl9BUEkgaWN1
OjpVbmljb2RlU3RyaW5nICYgVV9FWFBPUlQyCiB1c3Bvb2ZfZ2V0U2tlbGV0b25Vbmljb2RlU3Ry
aW5nKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCB0eXBlLApAQCAtOTc3LDcgKzE0ODEsOCBAQCB1c3Bvb2ZfZ2V0U2tlbGV0
b25Vbmljb2RlU3RyaW5nKGNvbnN0IFVTcG9vZkNoZWNrZXIgKnNjLAogCiAvKioKICAgKiBHZXQg
dGhlIHNldCBvZiBDYW5kaWRhdGUgQ2hhcmFjdGVycyBmb3IgSW5jbHVzaW9uIGluIElkZW50aWZp
ZXJzLCBhcyBkZWZpbmVkCi0gICogaW4gVW5pY29kZSBVQVggIzMxLCBodHRwOi8vd3d3LnVuaWNv
ZGUub3JnL3JlcG9ydHMvdHIzMS8jVGFibGVfQ2FuZGlkYXRlX0NoYXJhY3RlcnNfZm9yX0luY2x1
c2lvbl9pbl9JZGVudGlmaWVycworICAqIGluIGh0dHA6Ly91bmljb2RlLm9yZy9QdWJsaWMvc2Vj
dXJpdHkvbGF0ZXN0L3hpZG1vZGlmaWNhdGlvbnMudHh0CisgICogYW5kIGRvY3VtZW50ZWQgaW4g
aHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzkvLCBVbmljb2RlIFNlY3VyaXR5IE1l
Y2hhbmlzbXMuCiAgICoKICAgKiBUaGUgcmV0dXJuZWQgc2V0IGlzIGZyb3plbi4gT3duZXJzaGlw
IG9mIHRoZSBzZXQgcmVtYWlucyB3aXRoIHRoZSBJQ1UgbGlicmFyeTsgaXQgbXVzdCBub3QKICAg
KiBiZSBkZWxldGVkIGJ5IHRoZSBjYWxsZXIuCkBAIC05OTEsNyArMTQ5Niw4IEBAIHVzcG9vZl9n
ZXRJbmNsdXNpb25TZXQoVUVycm9yQ29kZSAqc3RhdHVzKTsKIAogLyoqCiAgICogR2V0IHRoZSBz
ZXQgb2YgY2hhcmFjdGVycyBmcm9tIFJlY29tbWVuZGVkIFNjcmlwdHMgZm9yIEluY2x1c2lvbiBp
biBJZGVudGlmaWVycywgYXMgZGVmaW5lZAotICAqIGluIFVuaWNvZGUgVUFYICMzMSwgaHR0cDov
L3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzEvI1RhYmxlX1JlY29tbWVuZGVkX1NjcmlwdHMK
KyAgKiBpbiBodHRwOi8vdW5pY29kZS5vcmcvUHVibGljL3NlY3VyaXR5L2xhdGVzdC94aWRtb2Rp
ZmljYXRpb25zLnR4dAorICAqIGFuZCBkb2N1bWVudGVkIGluIGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvcmVwb3J0cy90cjM5LywgVW5pY29kZSBTZWN1cml0eSBNZWNoYW5pc21zLgogICAqCiAgICog
VGhlIHJldHVybmVkIHNldCBpcyBmcm96ZW4uIE93bmVyc2hpcCBvZiB0aGUgc2V0IHJlbWFpbnMg
d2l0aCB0aGUgSUNVIGxpYnJhcnk7IGl0IG11c3Qgbm90CiAgICogYmUgZGVsZXRlZCBieSB0aGUg
Y2FsbGVyLgpAQCAtMTAwNyw3ICsxNTEzLDggQEAgdXNwb29mX2dldFJlY29tbWVuZGVkU2V0KFVF
cnJvckNvZGUgKnN0YXR1cyk7CiAKIC8qKgogICAqIEdldCB0aGUgc2V0IG9mIENhbmRpZGF0ZSBD
aGFyYWN0ZXJzIGZvciBJbmNsdXNpb24gaW4gSWRlbnRpZmllcnMsIGFzIGRlZmluZWQKLSAgKiBp
biBVbmljb2RlIFVBWCAjMzEsIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjMxLyNU
YWJsZV9DYW5kaWRhdGVfQ2hhcmFjdGVyc19mb3JfSW5jbHVzaW9uX2luX0lkZW50aWZpZXJzCisg
ICogaW4gaHR0cDovL3VuaWNvZGUub3JnL1B1YmxpYy9zZWN1cml0eS9sYXRlc3QveGlkbW9kaWZp
Y2F0aW9ucy50eHQKKyAgKiBhbmQgZG9jdW1lbnRlZCBpbiBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L3JlcG9ydHMvdHIzOS8sIFVuaWNvZGUgU2VjdXJpdHkgTWVjaGFuaXNtcy4KICAgKgogICAqIFRo
ZSByZXR1cm5lZCBzZXQgaXMgZnJvemVuLiBPd25lcnNoaXAgb2YgdGhlIHNldCByZW1haW5zIHdp
dGggdGhlIElDVSBsaWJyYXJ5OyBpdCBtdXN0IG5vdAogICAqIGJlIGRlbGV0ZWQgYnkgdGhlIGNh
bGxlci4KQEAgLTEwMjEsNyArMTUyOCw4IEBAIHVzcG9vZl9nZXRJbmNsdXNpb25Vbmljb2RlU2V0
KFVFcnJvckNvZGUgKnN0YXR1cyk7CiAKIC8qKgogICAqIEdldCB0aGUgc2V0IG9mIGNoYXJhY3Rl
cnMgZnJvbSBSZWNvbW1lbmRlZCBTY3JpcHRzIGZvciBJbmNsdXNpb24gaW4gSWRlbnRpZmllcnMs
IGFzIGRlZmluZWQKLSAgKiBpbiBVbmljb2RlIFVBWCAjMzEsIGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvcmVwb3J0cy90cjMxLyNUYWJsZV9SZWNvbW1lbmRlZF9TY3JpcHRzCisgICogaW4gaHR0cDov
L3VuaWNvZGUub3JnL1B1YmxpYy9zZWN1cml0eS9sYXRlc3QveGlkbW9kaWZpY2F0aW9ucy50eHQK
KyAgKiBhbmQgZG9jdW1lbnRlZCBpbiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIz
OS8sIFVuaWNvZGUgU2VjdXJpdHkgTWVjaGFuaXNtcy4KICAgKgogICAqIFRoZSByZXR1cm5lZCBz
ZXQgaXMgZnJvemVuLiBPd25lcnNoaXAgb2YgdGhlIHNldCByZW1haW5zIHdpdGggdGhlIElDVSBs
aWJyYXJ5OyBpdCBtdXN0IG5vdAogICAqIGJlIGRlbGV0ZWQgYnkgdGhlIGNhbGxlci4KQEAgLTEw
NDEsNyArMTU0OSw3IEBAIHVzcG9vZl9nZXRSZWNvbW1lbmRlZFVuaWNvZGVTZXQoVUVycm9yQ29k
ZSAqc3RhdHVzKTsKICAqIGluc3RhbnRpYXRlIGEgbmV3IFNwb29mIERldGVjdG9yLgogICoKICAq
IFRoZSBzZXJpYWxpemVkIHNwb29mIGNoZWNrZXIgaW5jbHVkZXMgb25seSB0aGUgZGF0YSBjb21w
aWxlZCBmcm9tIHRoZQotICogVW5pY29kZSBkYXRhIHRhYmxlcyBieSB1c3Bvb2Zfb3BlbkZyb21T
b3VyY2UoKTsgaXQgZG9lcyBub3QgaW5jbHVkZSAKKyAqIFVuaWNvZGUgZGF0YSB0YWJsZXMgYnkg
dXNwb29mX29wZW5Gcm9tU291cmNlKCk7IGl0IGRvZXMgbm90IGluY2x1ZGUKICAqIGluY2x1ZGUg
YW55IG90aGVyIHN0YXRlIG9yIGNvbmZpZ3VyYXRpb24gdGhhdCBtYXkgaGF2ZSBiZWVuIHNldC4K
ICAqCiAgKiBAcGFyYW0gc2MgICB0aGUgU3Bvb2YgRGV0ZWN0b3Igd2hvc2UgZGF0YSBpcyB0byBi
ZSBzZXJpYWxpemVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91c3ByZXAu
aCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXNwcmVwLmgKaW5kZXggNjM4YzMyZWUxNmUyYjA0
MWRiZmUyMTg5NWQ3MWY5NzlhZjZiMjZkYy4uZGEwODQ4ZGFjMWJiNDZjMzg0Y2YwYjJlNDE2Yjk5
ZmNiYzUyNjQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91c3ByZXAuaAor
KysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzcHJlcC5oCkBAIC0xLDMgKzEsNSBAQAorLy8g
wqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIEluYy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2Ug
JiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8q
CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTYsNyArOCw3IEBACiAgKgogICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKICAqICAgZmlsZSBuYW1lOiAgdXNwcmVwLmgKLSAqICAgZW5jb2Rp
bmc6ICAgVVMtQVNDSUkKKyAqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICAqICAgdGFiIHNpemU6ICAg
OCAobm90IHVzZWQpCiAgKiAgIGluZGVudGF0aW9uOjQKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL2ljdS91bmljb2RlL3VzdHJpbmcuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXN0cmlu
Zy5oCmluZGV4IDZkMTQxZThkZjYzMzhkYzhlNGVkMGM5ZjQ0Yjc2YmIzYWM1MWEwNTcuLjNkYWEy
OGU1NTVlNWRiMjc3NGYzZDJjNTFmNzQ2NjI2OTk5MTYzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdXN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXN0
cmluZy5oCkBAIC0xLDMgKzEsNSBAQAorLy8gwqkgMjAxNiBhbmQgbGF0ZXI6IFVuaWNvZGUsIElu
Yy4gYW5kIG90aGVycy4KKy8vIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5p
Y29kZS5vcmcvY29weXJpZ2h0Lmh0bWwKIC8qCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgQ29weXJpZ2h0
IChDKSAxOTk4LTIwMTQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKQEAgLTQ5NSwx
NiArNDk3LDYgQEAgdV9zdHJDb21wYXJlKGNvbnN0IFVDaGFyICpzMSwgaW50MzJfdCBsZW5ndGgx
LAogVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKIHVfc3RyQ29tcGFyZUl0ZXIoVUNoYXJJdGVy
YXRvciAqaXRlcjEsIFVDaGFySXRlcmF0b3IgKml0ZXIyLCBVQm9vbCBjb2RlUG9pbnRPcmRlcik7
CiAKLSNpZm5kZWYgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIKLS8qIHNlZSBhbHNvIHVuaXN0
ci5oIGFuZCB1bm9ybS5oICovCi0vKioKLSAqIE9wdGlvbiBiaXQgZm9yIHVfc3RyQ2FzZUNvbXBh
cmUsIHVfc3RyY2FzZWNtcCwgdW5vcm1fY29tcGFyZSwgZXRjOgotICogQ29tcGFyZSBzdHJpbmdz
IGluIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBjb2RlIHVuaXQgb3JkZXIuCi0gKiBAc3Rh
YmxlIElDVSAyLjIKLSAqLwotI2RlZmluZSBVX0NPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUiAgMHg4
MDAwCi0jZW5kaWYKLQogLyoqCiAgKiBDb21wYXJlIHR3byBzdHJpbmdzIGNhc2UtaW5zZW5zaXRp
dmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGluZy4KICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0bwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91c3RyaW5ndHJpZS5oIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS91c3RyaW5ndHJpZS5oCmluZGV4IDg3MWQwZjg4N2EzNzY1NTUwMjBl
N2I5MDIwMjk1MWVhMzRjMjQxOGUuLmZkODU2NDgyMjU0MDhjODA0Y2IzMzg0YmY4NzFjNDRhZjdi
ODMwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXN0cmluZ3RyaWUuaAor
KysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VzdHJpbmd0cmllLmgKQEAgLTEsMTAgKzEsMTIg
QEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBM
aWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5o
dG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAxMC0y
MDEyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5k
IG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAq
ICAgZmlsZSBuYW1lOiAgdWRpY3R0cmllLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAg
IGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5k
ZW50YXRpb246NAogKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGV4dC5o
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGV4dC5oCmluZGV4IGQ0MzE5MTNkMzViMzFlODc3
MTljMjY0NzlhYjIyMTVlNjRmZjMzOWUuLjMzZjJmNGNmMjdiNGJhNmI0ZWY4NjVhZjE4ZjczM2Nl
Yzg3YjZkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRleHQuaAorKysg
Yi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0ZXh0LmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAy
MDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRl
cm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKICoKQEAgLTYsNyArOCw3IEBACiAqCiAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgdXRleHQuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFT
Q0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgKICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkK
ICogICBpbmRlbnRhdGlvbjo0CiAqCkBAIC0zODcsNyArMzg5LDcgQEAgdXRleHRfZXF1YWxzKGNv
bnN0IFVUZXh0ICphLCBjb25zdCBVVGV4dCAqYik7CiAKIC8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog
ICoKLSAqICAgRnVuY3Rpb25zIHRvIHdvcmsgd2l0aCB0aGUgdGV4dCByZXByZXNldGVkIGJ5IGEg
VVRleHQgd3JhcHBlcgorICogICBGdW5jdGlvbnMgdG8gd29yayB3aXRoIHRoZSB0ZXh0IHJlcHJl
c2VudGVkIGJ5IGEgVVRleHQgd3JhcHBlcgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApA
QCAtNDMxLDcgKzQzMyw3IEBAIHV0ZXh0X2lzTGVuZ3RoRXhwZW5zaXZlKGNvbnN0IFVUZXh0ICp1
dCk7CiAgKgogICogVGhlIGl0ZXJhdGlvbiBwb3NpdGlvbiB3aWxsIGJlIHNldCB0byB0aGUgc3Rh
cnQgb2YgdGhlIHJldHVybmVkIGNvZGUgcG9pbnQuCiAgKgotICogVGhpcyBmdW5jdGlvbiBpcyBy
b3VnaGx5IGVxdWl2YWxlbnQgdG8gdGhlIHRoZSBzZXF1ZW5jZQorICogVGhpcyBmdW5jdGlvbiBp
cyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdGhlIHNlcXVlbmNlCiAgKiAgICB1dGV4dF9zZXROYXRp
dmVJbmRleChpbmRleCk7CiAgKiAgICB1dGV4dF9jdXJyZW50MzIoKTsKICAqIChUaGVyZSBpcyBh
IHN1YnRsZSBkaWZmZXJlbmNlIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzIGJ5IGJlaW5n
IGxlc3MgdGhhbiB6ZXJvIC0gCkBAIC01OTAsNyArNTkyLDcgQEAgVV9TVEFCTEUgdm9pZCBVX0VY
UE9SVDIKIHV0ZXh0X3NldE5hdGl2ZUluZGV4KFVUZXh0ICp1dCwgaW50NjRfdCBuYXRpdmVJbmRl
eCk7CiAKIC8qKgotICogTW92ZSB0aGUgaXRlcmF0b3IgcG9zdGlvbiBieSBkZWx0YSBjb2RlIHBv
aW50cy4gIFRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMKKyAqIE1vdmUgdGhlIGl0ZXJhdG9yIHBv
c2l0aW9uIGJ5IGRlbHRhIGNvZGUgcG9pbnRzLiAgVGhlIG51bWJlciBvZiBjb2RlIHBvaW50cwog
ICogaXMgYSBzaWduZWQgbnVtYmVyOyBhIG5lZ2F0aXZlIGRlbHRhIHdpbGwgbW92ZSB0aGUgaXRl
cmF0b3IgYmFja3dhcmRzLAogICogdG93YXJkcyB0aGUgc3RhcnQgb2YgdGhlIHRleHQuCiAgKiA8
cD4KQEAgLTYwOSw3ICs2MTEsNyBAQCBVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKIHV0ZXh0X21v
dmVJbmRleDMyKFVUZXh0ICp1dCwgaW50MzJfdCBkZWx0YSk7CiAKIC8qKgotICogR2V0IHRoZSBu
YXRpdmUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBwcmVjZWVkaW5nIHRoZSBjdXJyZW50IHBvc2l0
aW9uLgorICogR2V0IHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBwcmVjZWRpbmcg
dGhlIGN1cnJlbnQgcG9zaXRpb24uCiAgKiBJZiB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uIGlzIGFs
cmVhZHkgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LCB6ZXJvCiAgKiBpcyByZXR1cm5lZC4KICAq
IFRoZSB2YWx1ZSByZXR1cm5lZCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9idGFpbmVkIGZyb20gdGhl
IGZvbGxvd2luZyBzZXF1ZW5jZSwKQEAgLTYyNiw3ICs2MjgsNyBAQCB1dGV4dF9tb3ZlSW5kZXgz
MihVVGV4dCAqdXQsIGludDMyX3QgZGVsdGEpOwogICogICBuYXRpdmUgaW5kZXggb2YgdGhlIGNo
YXJhY3RlciBtb3N0IHJlY2VudGx5IHJldHVybmVkIGZyb20gdXRleHRfbmV4dCgpLgogICoKICAq
IEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZAotICogQHJldHVybiB0aGUgbmF0aXZl
IGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgY3VycmVudCBpbmRleCBwb3Np
dGlvbiwKKyAqIEByZXR1cm4gdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHByZWNl
ZGluZyB0aGUgY3VycmVudCBpbmRleCBwb3NpdGlvbiwKICAqICAgICAgICAgb3IgemVybyBpZiB0
aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHQuCiAgKiBAc3Rh
YmxlIElDVSAzLjYKICAqLwpAQCAtNzY2LDcgKzc2OCw3IEBAIHV0ZXh0X2V4dHJhY3QoVVRleHQg
KnV0LAogICAqLwogI2RlZmluZSBVVEVYVF9TRVROQVRJVkVJTkRFWCh1dCwgaXgpICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgeyBpbnQ2NF90IF9fb2Zmc2V0ID0gKGl4KSAtICh1dCktPmNo
dW5rTmF0aXZlU3RhcnQ7IFwKLSAgICAgIGlmIChfX29mZnNldD49MCAmJiBfX29mZnNldDw9KGlu
dDY0X3QpKHV0KS0+bmF0aXZlSW5kZXhpbmdMaW1pdCkgeyBcCisgICAgICBpZiAoX19vZmZzZXQ+
PTAgJiYgX19vZmZzZXQ8KGludDY0X3QpKHV0KS0+bmF0aXZlSW5kZXhpbmdMaW1pdCAmJiAodXQp
LT5jaHVua0NvbnRlbnRzW19fb2Zmc2V0XTwweGRjMDApIHsgXAogICAgICAgICAgICh1dCktPmNo
dW5rT2Zmc2V0PShpbnQzMl90KV9fb2Zmc2V0OyBcCiAgICAgICB9IGVsc2UgeyBcCiAgICAgICAg
ICAgdXRleHRfc2V0TmF0aXZlSW5kZXgoKHV0KSwgKGl4KSk7IH0gfQpAQCAtMTA1Miw3ICsxMDU0
LDcgQEAgVVRleHRBY2Nlc3MoVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBm
b3J3YXJkKTsKICAqIGJlIE5VTC10ZXJtaW5hdGVkIGlmIHRoZXJlIGlzIHN1ZmZpY2llbnQgc3Bh
Y2UgaW4gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KICAqCiAgKiBAcGFyYW0gIHV0ICAgICAgICAg
ICAgdGhlIFVUZXh0IGZyb20gd2hpY2ggdG8gZXh0cmFjdCBkYXRhLgotICogQHBhcmFtICBuYXRp
dmVTdGFydCAgIHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY2VyIHRvIGV4dHJh
Y3QuCisgKiBAcGFyYW0gIG5hdGl2ZVN0YXJ0ICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgZmly
c3QgY2hhcmFjdGVyIHRvIGV4dHJhY3QuCiAgKiBAcGFyYW0gIG5hdGl2ZUxpbWl0ICAgdGhlIG5h
dGl2ZSBzdHJpbmcgaW5kZXggb2YgdGhlIHBvc2l0aW9uIGZvbGxvd2luZyB0aGUgbGFzdAogICog
ICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciB0byBleHRyYWN0LgogICogQHBhcmFtICBk
ZXN0ICAgICAgICAgIHRoZSBVQ2hhciAoVVRGLTE2KSBidWZmZXIgaW50byB3aGljaCB0aGUgZXh0
cmFjdGVkIHRleHQgaXMgcGxhY2VkCkBAIC0xMjA5LDcgKzEyMTEsNyBAQCBVVGV4dENsb3NlKFVU
ZXh0ICp1dCk7CiBzdHJ1Y3QgVVRleHRGdW5jcyB7CiAgICAgLyoqCiAgICAgICogICAocHVibGlj
KSAgRnVuY3Rpb24gdGFibGUgc2l6ZSwgc2l6ZW9mKFVUZXh0RnVuY3MpCi0gICAgICogICAgICAg
ICAgICAgSW50ZW5kZWQgZm9yIHVzZSBzaG91bGQgdGhlIHRhYmxlIGdyb3cgdG8gYWNjb21vZGF0
ZSBhZGRlZAorICAgICAqICAgICAgICAgICAgIEludGVuZGVkIGZvciB1c2Ugc2hvdWxkIHRoZSB0
YWJsZSBncm93IHRvIGFjY29tbW9kYXRlIGFkZGVkCiAgICAgICogICAgICAgICAgICAgZnVuY3Rp
b25zIGluIHRoZSBmdXR1cmUsIHRvIGFsbG93IHRlc3RzIGZvciBvbGRlciBmb3JtYXQKICAgICAg
KiAgICAgICAgICAgICBmdW5jdGlvbiB0YWJsZXMgdGhhdCBkbyBub3QgY29udGFpbiB0aGUgZXh0
ZW5zaW9ucy4KICAgICAgKgpAQCAtMTM0Myw3ICsxMzQ1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVVRl
eHRGdW5jcyBVVGV4dEZ1bmNzOwogc3RydWN0IFVUZXh0IHsKICAgICAvKioKICAgICAgKiAgICAg
KHByaXZhdGUpICBNYWdpYy4gIFVzZWQgdG8gaGVscCBkZXRlY3Qgd2hlbiBVVGV4dCBmdW5jdGlv
bnMgYXJlIGhhbmRlZAotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZCBvciB1
bml0aWFsaXplZCBVVGV4dCBzdHJ1Y3RzLgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAg
aW52YWxpZCBvciB1bmluaXRpYWxpemVkIFVUZXh0IHN0cnVjdHMuCiAgICAgICogICAgICAgICAg
ICAgICAgICAgICAgICB1dGV4dF9vcGVuWFlaKCkgZnVuY3Rpb25zIHRha2UgYW4gaW5pdGlhbGl6
ZWQsCiAgICAgICogICAgICAgICAgICAgICAgICAgICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IG9w
ZW4sIFVUZXh0IHN0cnVjdCBhcyBhbgogICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgb3B0
aW9uYWwgZmlsbC1pbiBwYXJhbWV0ZXIuICBUaGlzIG1hZ2ljIGZpZWxkCkBAIC0xMzY1LDcgKzEz
NjcsNyBAQCBzdHJ1Y3QgVVRleHQgewogCiAKICAgICAvKioKLSAgICAgICogIFRleHQgcHJvdmlk
ZXIgcHJvcGVydGllcy4gIFRoaXMgc2V0IG9mIGZsYWdzIGlzIG1haW50YWludGVkIGJ5IHRoZQor
ICAgICAgKiAgVGV4dCBwcm92aWRlciBwcm9wZXJ0aWVzLiAgVGhpcyBzZXQgb2YgZmxhZ3MgaXMg
bWFpbnRhaW5lZCBieSB0aGUKICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHQgcHJvdmlkZXIgaW1wbGVtZW50YXRpb24uCiAgICAgICAqICBAc3RhYmxlIElDVSAzLjQKICAg
ICAgICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0Zi5oIGIvU291cmNl
L1dURi9pY3UvdW5pY29kZS91dGYuaAppbmRleCBmNTk1NGZlOWZlNjk5ODkzYmQzMThlMjQ3NzI5
MjZjMTc1YTIwYzc0Li5lZjUxMjk5N2YwNWExNWFjYTFiNmE0YWMzNjc1NWRlMWQyYjcxMDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0Zi5oCisrKyBiL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdXRmLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKICoKQEAgLTYsNyArOCw3IEBACiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAg
ZmlsZSBuYW1lOiAgdXRmLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29kaW5n
OiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRpb246
NAogKgpAQCAtMjEsOSArMjMsNiBAQAogICogVGhpcyBmaWxlIGRlZmluZXMgbWFjcm9zIGZvciBj
aGVja2luZyB3aGV0aGVyIGEgY29kZSBwb2ludCBpcwogICogYSBzdXJyb2dhdGUgb3IgYSBub24t
Y2hhcmFjdGVyIGV0Yy4KICAqCi0gKiBUaGUgVUNoYXIgYW5kIFVDaGFyMzIgZGF0YSB0eXBlcyBm
b3IgVW5pY29kZSBjb2RlIHVuaXRzIGFuZCBjb2RlIHBvaW50cwotICogYXJlIGRlZmluZWQgaW4g
dW1hY2hpbmUuaCBiZWNhdXNlIHRoZXkgY2FuIGJlIG1hY2hpbmUtZGVwZW5kZW50LgotICoKICAq
IElmIFVfTk9fREVGQVVMVF9JTkNMVURFX1VURl9IRUFERVJTIGlzIDAgdGhlbiB1dGYuaCBpcyBp
bmNsdWRlZCBieSB1dHlwZXMuaAogICogYW5kIGl0c2VsZiBpbmNsdWRlcyB1dGY4LmggYW5kIHV0
ZjE2LmggYWZ0ZXIgc29tZQogICogY29tbW9uIGRlZmluaXRpb25zLgpAQCAtNDgsMTEgKzQ3LDEx
IEBACiAgKiBidXQgYXJlIG9wdGltaXplZCBmb3IgdGhlIG11Y2ggbW9yZSBmcmVxdWVudGx5IG9j
Y3VycmluZyBCTVAgY29kZSBwb2ludHMuCiAgKgogICogdW1hY2hpbmUuaCBkZWZpbmVzIFVDaGFy
IHRvIGJlIGFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyLgotICogV2hlcmUgYXZhaWxhYmxlLCBV
Q2hhciBpcyBkZWZpbmVkIHRvIGJlIGEgY2hhcjE2X3QKLSAqIG9yIGEgd2NoYXJfdCAoaWYgdGhh
dCBpcyBhbiB1bnNpZ25lZCAxNi1iaXQgdHlwZSksIG90aGVyd2lzZSB1aW50MTZfdC4KKyAqIFNp
bmNlIElDVSA1OSwgSUNVIHVzZXMgY2hhcjE2X3QgaW4gQysrLCBVQ2hhciBvbmx5IGluIEMsCisg
KiBhbmQgZGVmaW5lcyBVQ2hhcj1jaGFyMTZfdCBieSBkZWZhdWx0LiBTZWUgdGhlIFVDaGFyIEFQ
SSBkb2NzIGZvciBkZXRhaWxzLgogICoKICAqIFVDaGFyMzIgaXMgZGVmaW5lZCB0byBiZSBhIHNp
Z25lZCAzMi1iaXQgaW50ZWdlciAoaW50MzJfdCksIGxhcmdlIGVub3VnaCBmb3IgYSAyMS1iaXQK
LSAqIFVuaWNvZGUgY29kZSBwb2ludCAoVW5pY29kZSBzY2FsYXIgdmFsdWUsIDAuLjB4MTBmZmZm
KS4KKyAqIFVuaWNvZGUgY29kZSBwb2ludCAoVW5pY29kZSBzY2FsYXIgdmFsdWUsIDAuLjB4MTBm
ZmZmKSBhbmQgVV9TRU5USU5FTCAoLTEpLgogICogQmVmb3JlIElDVSAyLjQsIHRoZSBkZWZpbml0
aW9uIG9mIFVDaGFyMzIgd2FzIHNpbWlsYXJseSBwbGF0Zm9ybS1kZXBlbmRlbnQgYXMKICAqIHRo
ZSBkZWZpbml0aW9uIG9mIFVDaGFyLiBGb3IgZGV0YWlscyBzZWUgdGhlIGRvY3VtZW50YXRpb24g
Zm9yIFVDaGFyMzIgaXRzZWxmLgogICoKQEAgLTYxLDExICs2MCwyMCBAQAogICogRm9yIGFjdHVh
bCBVbmljb2RlIGNoYXJhY3RlciBwcm9wZXJ0aWVzIHNlZSB1Y2hhci5oLgogICoKICAqIEJ5IGRl
ZmF1bHQsIHN0cmluZyBvcGVyYXRpb25zIG11c3QgYmUgZG9uZSB3aXRoIGVycm9yIGNoZWNraW5n
IGluIGNhc2UKLSAqIGEgc3RyaW5nIGlzIG5vdCB3ZWxsLWZvcm1lZCBVVEYtMTYuCi0gKiBUaGUg
bWFjcm9zIHdpbGwgZGV0ZWN0IGlmIGEgc3Vycm9nYXRlIGNvZGUgdW5pdCBpcyB1bnBhaXJlZAor
ICogYSBzdHJpbmcgaXMgbm90IHdlbGwtZm9ybWVkIFVURi0xNiBvciBVVEYtOC4KKyAqCisgKiBU
aGUgVTE2XyBtYWNyb3MgZGV0ZWN0IGlmIGEgc3Vycm9nYXRlIGNvZGUgdW5pdCBpcyB1bnBhaXJl
ZAogICogKGxlYWQgdW5pdCB3aXRob3V0IHRyYWlsIHVuaXQgb3IgdmljZSB2ZXJzYSkgYW5kIGp1
c3QgcmV0dXJuIHRoZSB1bml0IGl0c2VsZgogICogYXMgdGhlIGNvZGUgcG9pbnQuCiAgKgorICog
VGhlIFU4XyBtYWNyb3MgZGV0ZWN0IGlsbGVnYWwgYnl0ZSBzZXF1ZW5jZXMgYW5kIHJldHVybiBh
IG5lZ2F0aXZlIHZhbHVlLgorICogU3RhcnRpbmcgd2l0aCBJQ1UgNjAsIHRoZSBvYnNlcnZhYmxl
IGxlbmd0aCBvZiBhIHNpbmdsZSBpbGxlZ2FsIGJ5dGUgc2VxdWVuY2UKKyAqIHNraXBwZWQgYnkg
b25lIG9mIHRoZXNlIG1hY3JvcyBmb2xsb3dzIHRoZSBVbmljb2RlIDYrIHJlY29tbWVuZGF0aW9u
CisgKiB3aGljaCBpcyBjb25zaXN0ZW50IHdpdGggdGhlIFczQyBFbmNvZGluZyBTdGFuZGFyZC4K
KyAqCisgKiBUaGVyZSBhcmUgLi4uX09SX0ZGRkQgdmVyc2lvbnMgb2YgYm90aCBVMTZfIGFuZCBV
OF8gbWFjcm9zCisgKiB0aGF0IHJldHVybiBVK0ZGRkQgZm9yIGlsbGVnYWwgY29kZSB1bml0IHNl
cXVlbmNlcy4KKyAqCiAgKiBUaGUgcmVndWxhciAic2FmZSIgbWFjcm9zIHJlcXVpcmUgdGhhdCB0
aGUgaW5pdGlhbCwgcGFzc2VkLWluIHN0cmluZyBpbmRleAogICogaXMgd2l0aGluIGJvdW5kcy4g
VGhleSBvbmx5IGNoZWNrIHRoZSBpbmRleCB3aGVuIHRoZXkgcmVhZCBtb3JlIHRoYW4gb25lCiAg
KiBjb2RlIHVuaXQuIFRoaXMgaXMgdXN1YWxseSBkb25lIHdpdGggY29kZSBzaW1pbGFyIHRvIHRo
ZSBmb2xsb3dpbmcgbG9vcDoKQEAgLTg5LDEwICs5Nyw3IEBACiAgKiBUaGUgcGVyZm9ybWFuY2Ug
ZGlmZmVyZW5jZXMgYXJlIG11Y2ggbGFyZ2VyIGhlcmUgYmVjYXVzZSBVVEYtOCBwcm92aWRlcyBz
bwogICogbWFueSBvcHBvcnR1bml0aWVzIGZvciBtYWxmb3JtZWQgc2VxdWVuY2VzLgogICogVGhl
IHVuc2FmZSBVVEYtOCBtYWNyb3MgYXJlIGVudGlyZWx5IGltcGxlbWVudGVkIGluc2lkZSB0aGUg
bWFjcm8gZGVmaW5pdGlvbnMKLSAqIGFuZCBhcmUgZmFzdCwgd2hpbGUgdGhlIHNhZmUgVVRGLTgg
bWFjcm9zIGNhbGwgZnVuY3Rpb25zIGZvciBhbGwgYnV0IHRoZQotICogdHJpdmlhbCAoQVNDSUkp
IGNhc2VzLgotICogKElDVSAzLjYgb3B0aW1pemVzIFU4X05FWFQoKSBhbmQgVThfQVBQRU5EKCkg
dG8gaGFuZGxlIG1vc3Qgb3RoZXIgY29tbW9uCi0gKiBjaGFyYWN0ZXJzIGlubGluZSBhcyB3ZWxs
LikKKyAqIGFuZCBhcmUgZmFzdCwgd2hpbGUgdGhlIHNhZmUgVVRGLTggbWFjcm9zIGNhbGwgZnVu
Y3Rpb25zIGZvciBzb21lIGNvbXBsaWNhdGVkIGNhc2VzLgogICoKICAqIFVubGlrZSB3aXRoIFVU
Ri0xNiwgbWFsZm9ybWVkIHNlcXVlbmNlcyBjYW5ub3QgYmUgZXhwcmVzc2VkIHdpdGggZGlzdGlu
Y3QKICAqIGNvZGUgcG9pbnQgdmFsdWVzICgwLi5VKzEwZmZmZikuIFRoZXkgYXJlIGluZGljYXRl
ZCB3aXRoIG5lZ2F0aXZlIHZhbHVlcyBpbnN0ZWFkLgpAQCAtMTI0LDggKzEyOSw3IEBACiAgKi8K
ICNkZWZpbmUgVV9JU19VTklDT0RFX05PTkNIQVIoYykgXAogICAgICgoYyk+PTB4ZmRkMCAmJiBc
Ci0gICAgICgodWludDMyX3QpKGMpPD0weGZkZWYgfHwgKChjKSYweGZmZmUpPT0weGZmZmUpICYm
IFwKLSAgICAgKHVpbnQzMl90KShjKTw9MHgxMGZmZmYpCisgICAgICgoYyk8PTB4ZmRlZiB8fCAo
KGMpJjB4ZmZmZSk9PTB4ZmZmZSkgJiYgKGMpPD0weDEwZmZmZikKIAogLyoqCiAgKiBJcyBjIGEg
VW5pY29kZSBjb2RlIHBvaW50IHZhbHVlICgwLi5VKzEwZmZmZikKQEAgLTE0Niw5ICsxNTAsNyBA
QAogICovCiAjZGVmaW5lIFVfSVNfVU5JQ09ERV9DSEFSKGMpIFwKICAgICAoKHVpbnQzMl90KShj
KTwweGQ4MDAgfHwgXAotICAgICAgICAoKHVpbnQzMl90KShjKT4weGRmZmYgJiYgXAotICAgICAg
ICAgKHVpbnQzMl90KShjKTw9MHgxMGZmZmYgJiYgXAotICAgICAgICAgIVVfSVNfVU5JQ09ERV9O
T05DSEFSKGMpKSkKKyAgICAgICAgKDB4ZGZmZjwoYykgJiYgKGMpPD0weDEwZmZmZiAmJiAhVV9J
U19VTklDT0RFX05PTkNIQVIoYykpKQogCiAvKioKICAqIElzIHRoaXMgY29kZSBwb2ludCBhIEJN
UCBjb2RlIHBvaW50IChVKzAwMDAuLlUrZmZmZik/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3V0ZjE2LmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0ZjE2LmgKaW5kZXgg
YmRkODhhOGI5YzRmMDBlYTBkZjI3MmFjMDJmNjk2N2VmNjEwODliNi4uMzVmZDA5ODYxMTQzY2Rm
YjFmYjAwMDJhZGU2NGUxYTczNDkyNzQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5p
Y29kZS91dGYxNi5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRmMTYuaApAQCAtMSwz
ICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMu
CisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHly
aWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgpAQCAtNiw3ICs4LDcgQEAK
ICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBmaWxlIG5hbWU6ICB1dGYxNi5oCi0qICAg
ZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXpl
OiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTE4Myw4ICsxODUsOCBA
QAogICoKICAqIFRoZSBsZW5ndGggY2FuIGJlIG5lZ2F0aXZlIGZvciBhIE5VTC10ZXJtaW5hdGVk
IHN0cmluZy4KICAqCi0gKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIHNpbmdsZSwgdW5wYWly
ZWQgc3Vycm9nYXRlLCB0aGVuIHRoYXQgaXRzZWxmCi0gKiB3aWxsIGJlIHJldHVybmVkIGFzIHRo
ZSBjb2RlIHBvaW50LgorICogSWYgdGhlIG9mZnNldCBwb2ludHMgdG8gYSBzaW5nbGUsIHVucGFp
cmVkIHN1cnJvZ2F0ZSwgdGhlbgorICogYyBpcyBzZXQgdG8gdGhhdCB1bnBhaXJlZCBzdXJyb2dh
dGUuCiAgKiBJdGVyYXRpb24gdGhyb3VnaCBhIHN0cmluZyBpcyBtb3JlIGVmZmljaWVudCB3aXRo
IFUxNl9ORVhUX1VOU0FGRSBvciBVMTZfTkVYVC4KICAqCiAgKiBAcGFyYW0gcyBjb25zdCBVQ2hh
ciAqIHN0cmluZwpAQCAtMjExLDYgKzIxMyw1MyBAQAogICAgIH0gXAogfQogCisjaWZuZGVmIFVf
SElERV9EUkFGVF9BUEkKKworLyoqCisgKiBHZXQgYSBjb2RlIHBvaW50IGZyb20gYSBzdHJpbmcg
YXQgYSByYW5kb20tYWNjZXNzIG9mZnNldCwKKyAqIHdpdGhvdXQgY2hhbmdpbmcgdGhlIG9mZnNl
dC4KKyAqICJTYWZlIiBtYWNybywgaGFuZGxlcyB1bnBhaXJlZCBzdXJyb2dhdGVzIGFuZCBjaGVj
a3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoKKyAqIFRoZSBvZmZzZXQgbWF5IHBvaW50IHRv
IGVpdGhlciB0aGUgbGVhZCBvciB0cmFpbCBzdXJyb2dhdGUgdW5pdAorICogZm9yIGEgc3VwcGxl
bWVudGFyeSBjb2RlIHBvaW50LCBpbiB3aGljaCBjYXNlIHRoZSBtYWNybyB3aWxsIHJlYWQKKyAq
IHRoZSBhZGphY2VudCBtYXRjaGluZyBzdXJyb2dhdGUgYXMgd2VsbC4KKyAqCisgKiBUaGUgbGVu
Z3RoIGNhbiBiZSBuZWdhdGl2ZSBmb3IgYSBOVUwtdGVybWluYXRlZCBzdHJpbmcuCisgKgorICog
SWYgdGhlIG9mZnNldCBwb2ludHMgdG8gYSBzaW5nbGUsIHVucGFpcmVkIHN1cnJvZ2F0ZSwgdGhl
bgorICogYyBpcyBzZXQgdG8gVStGRkZELgorICogSXRlcmF0aW9uIHRocm91Z2ggYSBzdHJpbmcg
aXMgbW9yZSBlZmZpY2llbnQgd2l0aCBVMTZfTkVYVF9VTlNBRkUgb3IgVTE2X05FWFRfT1JfRkZG
RC4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmluZworICogQHBhcmFtIHN0YXJ0
IHN0YXJ0aW5nIHN0cmluZyBvZmZzZXQgKHVzdWFsbHkgMCkKKyAqIEBwYXJhbSBpIHN0cmluZyBv
ZmZzZXQsIG11c3QgYmUgc3RhcnQ8PWk8bGVuZ3RoCisgKiBAcGFyYW0gbGVuZ3RoIHN0cmluZyBs
ZW5ndGgKKyAqIEBwYXJhbSBjIG91dHB1dCBVQ2hhcjMyIHZhcmlhYmxlCisgKiBAc2VlIFUxNl9H
RVRfVU5TQUZFCisgKiBAZHJhZnQgSUNVIDYwCisgKi8KKyNkZWZpbmUgVTE2X0dFVF9PUl9GRkZE
KHMsIHN0YXJ0LCBpLCBsZW5ndGgsIGMpIHsgXAorICAgIChjKT0ocylbaV07IFwKKyAgICBpZihV
MTZfSVNfU1VSUk9HQVRFKGMpKSB7IFwKKyAgICAgICAgdWludDE2X3QgX19jMjsgXAorICAgICAg
ICBpZihVMTZfSVNfU1VSUk9HQVRFX0xFQUQoYykpIHsgXAorICAgICAgICAgICAgaWYoKGkpKzEh
PShsZW5ndGgpICYmIFUxNl9JU19UUkFJTChfX2MyPShzKVsoaSkrMV0pKSB7IFwKKyAgICAgICAg
ICAgICAgICAoYyk9VTE2X0dFVF9TVVBQTEVNRU5UQVJZKChjKSwgX19jMik7IFwKKyAgICAgICAg
ICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAoYyk9MHhmZmZkOyBcCisgICAgICAgICAg
ICB9IFwKKyAgICAgICAgfSBlbHNlIHsgXAorICAgICAgICAgICAgaWYoKGkpPihzdGFydCkgJiYg
VTE2X0lTX0xFQUQoX19jMj0ocylbKGkpLTFdKSkgeyBcCisgICAgICAgICAgICAgICAgKGMpPVUx
Nl9HRVRfU1VQUExFTUVOVEFSWShfX2MyLCAoYykpOyBcCisgICAgICAgICAgICB9IGVsc2UgeyBc
CisgICAgICAgICAgICAgICAgKGMpPTB4ZmZmZDsgXAorICAgICAgICAgICAgfSBcCisgICAgICAg
IH0gXAorICAgIH0gXAorfQorCisjZW5kaWYgIC8vIFVfSElERV9EUkFGVF9BUEkKKwogLyogZGVm
aW5pdGlvbnMgd2l0aCBmb3J3YXJkIGl0ZXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gKi8KIAogLyoqCkBAIC0yNTEsOCArMzAwLDcgQEAKICAqIGZvciBhIHN1
cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgaW4gd2hpY2ggY2FzZSB0aGUgbWFjcm8gd2lsbCByZWFk
CiAgKiB0aGUgZm9sbG93aW5nIHRyYWlsIHN1cnJvZ2F0ZSBhcyB3ZWxsLgogICogSWYgdGhlIG9m
ZnNldCBwb2ludHMgdG8gYSB0cmFpbCBzdXJyb2dhdGUgb3IKLSAqIHRvIGEgc2luZ2xlLCB1bnBh
aXJlZCBsZWFkIHN1cnJvZ2F0ZSwgdGhlbiB0aGF0IGl0c2VsZgotICogd2lsbCBiZSByZXR1cm5l
ZCBhcyB0aGUgY29kZSBwb2ludC4KKyAqIHRvIGEgc2luZ2xlLCB1bnBhaXJlZCBsZWFkIHN1cnJv
Z2F0ZSwgdGhlbiBjIGlzIHNldCB0byB0aGF0IHVucGFpcmVkIHN1cnJvZ2F0ZS4KICAqCiAgKiBA
cGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmluZwogICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwg
bXVzdCBiZSBpPGxlbmd0aApAQCAtMjcyLDYgKzMyMCw0NCBAQAogICAgIH0gXAogfQogCisjaWZu
ZGVmIFVfSElERV9EUkFGVF9BUEkKKworLyoqCisgKiBHZXQgYSBjb2RlIHBvaW50IGZyb20gYSBz
dHJpbmcgYXQgYSBjb2RlIHBvaW50IGJvdW5kYXJ5IG9mZnNldCwKKyAqIGFuZCBhZHZhbmNlIHRo
ZSBvZmZzZXQgdG8gdGhlIG5leHQgY29kZSBwb2ludCBib3VuZGFyeS4KKyAqIChQb3N0LWluY3Jl
bWVudGluZyBmb3J3YXJkIGl0ZXJhdGlvbi4pCisgKiAiU2FmZSIgbWFjcm8sIGhhbmRsZXMgdW5w
YWlyZWQgc3Vycm9nYXRlcyBhbmQgY2hlY2tzIGZvciBzdHJpbmcgYm91bmRhcmllcy4KKyAqCisg
KiBUaGUgbGVuZ3RoIGNhbiBiZSBuZWdhdGl2ZSBmb3IgYSBOVUwtdGVybWluYXRlZCBzdHJpbmcu
CisgKgorICogVGhlIG9mZnNldCBtYXkgcG9pbnQgdG8gdGhlIGxlYWQgc3Vycm9nYXRlIHVuaXQK
KyAqIGZvciBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgaW4gd2hpY2ggY2FzZSB0aGUgbWFj
cm8gd2lsbCByZWFkCisgKiB0aGUgZm9sbG93aW5nIHRyYWlsIHN1cnJvZ2F0ZSBhcyB3ZWxsLgor
ICogSWYgdGhlIG9mZnNldCBwb2ludHMgdG8gYSB0cmFpbCBzdXJyb2dhdGUgb3IKKyAqIHRvIGEg
c2luZ2xlLCB1bnBhaXJlZCBsZWFkIHN1cnJvZ2F0ZSwgdGhlbiBjIGlzIHNldCB0byBVK0ZGRkQu
CisgKgorICogQHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKKyAqIEBwYXJhbSBpIHN0cmlu
ZyBvZmZzZXQsIG11c3QgYmUgaTxsZW5ndGgKKyAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0
aAorICogQHBhcmFtIGMgb3V0cHV0IFVDaGFyMzIgdmFyaWFibGUKKyAqIEBzZWUgVTE2X05FWFRf
VU5TQUZFCisgKiBAZHJhZnQgSUNVIDYwCisgKi8KKyNkZWZpbmUgVTE2X05FWFRfT1JfRkZGRChz
LCBpLCBsZW5ndGgsIGMpIHsgXAorICAgIChjKT0ocylbKGkpKytdOyBcCisgICAgaWYoVTE2X0lT
X1NVUlJPR0FURShjKSkgeyBcCisgICAgICAgIHVpbnQxNl90IF9fYzI7IFwKKyAgICAgICAgaWYo
VTE2X0lTX1NVUlJPR0FURV9MRUFEKGMpICYmIChpKSE9KGxlbmd0aCkgJiYgVTE2X0lTX1RSQUlM
KF9fYzI9KHMpWyhpKV0pKSB7IFwKKyAgICAgICAgICAgICsrKGkpOyBcCisgICAgICAgICAgICAo
Yyk9VTE2X0dFVF9TVVBQTEVNRU5UQVJZKChjKSwgX19jMik7IFwKKyAgICAgICAgfSBlbHNlIHsg
XAorICAgICAgICAgICAgKGMpPTB4ZmZmZDsgXAorICAgICAgICB9IFwKKyAgICB9IFwKK30KKwor
I2VuZGlmICAvLyBVX0hJREVfRFJBRlRfQVBJCisKIC8qKgogICogQXBwZW5kIGEgY29kZSBwb2lu
dCB0byBhIHN0cmluZywgb3ZlcndyaXRpbmcgMSBvciAyIGNvZGUgdW5pdHMuCiAgKiBUaGUgb2Zm
c2V0IHBvaW50cyB0byB0aGUgY3VycmVudCBlbmQgb2YgdGhlIHN0cmluZyBjb250ZW50cwpAQCAt
NDc5LDggKzU2NSw3IEBACiAgKiBmb3IgYSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQsIHRoZW4g
dGhlIG1hY3JvIHdpbGwgcmVhZAogICogdGhlIHByZWNlZGluZyBsZWFkIHN1cnJvZ2F0ZSBhcyB3
ZWxsLgogICogSWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgYSBsZWFkIHN1cnJvZ2F0ZSBvciBiZWhp
bmQgYSBzaW5nbGUsIHVucGFpcmVkCi0gKiB0cmFpbCBzdXJyb2dhdGUsIHRoZW4gdGhhdCBpdHNl
bGYKLSAqIHdpbGwgYmUgcmV0dXJuZWQgYXMgdGhlIGNvZGUgcG9pbnQuCisgKiB0cmFpbCBzdXJy
b2dhdGUsIHRoZW4gYyBpcyBzZXQgdG8gdGhhdCB1bnBhaXJlZCBzdXJyb2dhdGUuCiAgKgogICog
QHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKICAqIEBwYXJhbSBzdGFydCBzdGFydGluZyBz
dHJpbmcgb2Zmc2V0ICh1c3VhbGx5IDApCkBAIC01MDAsNiArNTg1LDQzIEBACiAgICAgfSBcCiB9
CiAKKyNpZm5kZWYgVV9ISURFX0RSQUZUX0FQSQorCisvKioKKyAqIE1vdmUgdGhlIHN0cmluZyBv
ZmZzZXQgZnJvbSBvbmUgY29kZSBwb2ludCBib3VuZGFyeSB0byB0aGUgcHJldmlvdXMgb25lCisg
KiBhbmQgZ2V0IHRoZSBjb2RlIHBvaW50IGJldHdlZW4gdGhlbS4KKyAqIChQcmUtZGVjcmVtZW50
aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCisgKiAiU2FmZSIgbWFjcm8sIGhhbmRsZXMgdW5wYWly
ZWQgc3Vycm9nYXRlcyBhbmQgY2hlY2tzIGZvciBzdHJpbmcgYm91bmRhcmllcy4KKyAqCisgKiBU
aGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KKyAq
IElmIHRoZSBvZmZzZXQgaXMgYmVoaW5kIGEgdHJhaWwgc3Vycm9nYXRlIHVuaXQKKyAqIGZvciBh
IHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgdGhlbiB0aGUgbWFjcm8gd2lsbCByZWFkCisgKiB0
aGUgcHJlY2VkaW5nIGxlYWQgc3Vycm9nYXRlIGFzIHdlbGwuCisgKiBJZiB0aGUgb2Zmc2V0IGlz
IGJlaGluZCBhIGxlYWQgc3Vycm9nYXRlIG9yIGJlaGluZCBhIHNpbmdsZSwgdW5wYWlyZWQKKyAq
IHRyYWlsIHN1cnJvZ2F0ZSwgdGhlbiBjIGlzIHNldCB0byBVK0ZGRkQuCisgKgorICogQHBhcmFt
IHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKKyAqIEBwYXJhbSBzdGFydCBzdGFydGluZyBzdHJpbmcg
b2Zmc2V0ICh1c3VhbGx5IDApCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBtdXN0IGJlIHN0
YXJ0PGkKKyAqIEBwYXJhbSBjIG91dHB1dCBVQ2hhcjMyIHZhcmlhYmxlCisgKiBAc2VlIFUxNl9Q
UkVWX1VOU0FGRQorICogQGRyYWZ0IElDVSA2MAorICovCisjZGVmaW5lIFUxNl9QUkVWX09SX0ZG
RkQocywgc3RhcnQsIGksIGMpIHsgXAorICAgIChjKT0ocylbLS0oaSldOyBcCisgICAgaWYoVTE2
X0lTX1NVUlJPR0FURShjKSkgeyBcCisgICAgICAgIHVpbnQxNl90IF9fYzI7IFwKKyAgICAgICAg
aWYoVTE2X0lTX1NVUlJPR0FURV9UUkFJTChjKSAmJiAoaSk+KHN0YXJ0KSAmJiBVMTZfSVNfTEVB
RChfX2MyPShzKVsoaSktMV0pKSB7IFwKKyAgICAgICAgICAgIC0tKGkpOyBcCisgICAgICAgICAg
ICAoYyk9VTE2X0dFVF9TVVBQTEVNRU5UQVJZKF9fYzIsIChjKSk7IFwKKyAgICAgICAgfSBlbHNl
IHsgXAorICAgICAgICAgICAgKGMpPTB4ZmZmZDsgXAorICAgICAgICB9IFwKKyAgICB9IFwKK30K
KworI2VuZGlmICAvLyBVX0hJREVfRFJBRlRfQVBJCisKIC8qKgogICogTW92ZSB0aGUgc3RyaW5n
IG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUu
CiAgKiAoUHJlLWRlY3JlbWVudGluZyBiYWNrd2FyZCBpdGVyYXRpb24uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9pY3UvdW5pY29kZS91dGYzMi5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91
dGYzMi5oCmluZGV4IGJmNjNlNjlkYmEwMGM3OWU3NDA0OGY1NjU1ZGM4MWM2Njk4Y2VjMWEuLjg4
MjJjNGRkMDk2MmM4ZWU4ZjYyYmEwZjhhYmY0NDhmMDRkNWFiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvaWN1L3VuaWNvZGUvdXRmMzIuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0
ZjMyLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5j
LiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmlj
b2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAg
LTYsNyArOCw3IEBACiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAg
dXRmMzIuaAotKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgZW5jb2Rpbmc6ICAgVVRGLTgK
ICogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKICogICBpbmRlbnRhdGlvbjo0CiAqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0ZjguaCBiL1NvdXJjZS9XVEYvaWN1L3Vu
aWNvZGUvdXRmOC5oCmluZGV4IDdiZDBiMGU4NTI2MGYwMjBhODg1ZDU5YWJjMjRiZjMwNTA5N2Qy
NWIuLmRmMDhkMzQxYWI4NjhhZmJiNjc4MmY5M2I3ZDY1MGRmMmI3MmUwY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRmOC5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNv
ZGUvdXRmOC5oCkBAIC0xLDEyICsxLDE0IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29k
ZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3
dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
ICoKLSogICBDb3B5cmlnaHQgKEMpIDE5OTktMjAxNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN
YWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMTk5OS0yMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2lu
ZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgdXRmOC5o
Ci0qICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRh
YiBzaXplOiAgIDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTM5LDUyICs0
MSwyNCBAQAogCiAvKiBpbnRlcm5hbCBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKioKLSAqIFx2YXIgdXRmOF9j
b3VudFRyYWlsQnl0ZXMKLSAqIEludGVybmFsIGFycmF5IHdpdGggbnVtYmVycyBvZiB0cmFpbCBi
eXRlcyBmb3IgYW55IGdpdmVuIGJ5dGUgdXNlZCBpbgotICogbGVhZCBieXRlIHBvc2l0aW9uLgot
ICoKLSAqIFRoaXMgaXMgaW50ZXJuYWwgc2luY2UgaXQgaXMgbm90IG1lYW50IHRvIGJlIGNhbGxl
ZCBkaXJlY3RseSBieSBleHRlcm5hbCBjbGllbnRzOwotICogaG93ZXZlciBpdCBpcyBjYWxsZWQg
YnkgcHVibGljIG1hY3JvcyBpbiB0aGlzIGZpbGUgYW5kIHRodXMgbXVzdCByZW1haW4gc3RhYmxl
LAotICogYW5kIHNob3VsZCBub3QgYmUgaGlkZGVuIHdoZW4gb3RoZXIgaW50ZXJuYWwgZnVuY3Rp
b25zIGFyZSBoaWRkZW4gKG90aGVyd2lzZQotICogcHVibGljIG1hY3JvcyB3b3VsZCBmYWlsIHRv
IGNvbXBpbGUpLgotICogQGludGVybmFsCi0gKi8KLSNpZmRlZiBVX1VURjhfSU1QTAotVV9FWFBP
UlQgY29uc3QgdWludDhfdCAKLSNlbGlmIGRlZmluZWQoVV9TVEFUSUNfSU1QTEVNRU5UQVRJT04p
IHx8IGRlZmluZWQoVV9DT01NT05fSU1QTEVNRU5UQVRJT04pCi1VX0NGVU5DIGNvbnN0IHVpbnQ4
X3QKLSNlbHNlCi1VX0NGVU5DIFVfSU1QT1JUIGNvbnN0IHVpbnQ4X3QgLyogVV9JTVBPUlQyPyAq
LyAvKlVfSU1QT1JUKi8gCi0jZW5kaWYKLXV0ZjhfY291bnRUcmFpbEJ5dGVzWzI1Nl07Ci0KIC8q
KgogICogQ291bnRzIHRoZSB0cmFpbCBieXRlcyBmb3IgYSBVVEYtOCBsZWFkIGJ5dGUuCi0gKiBS
ZXR1cm5zIDAgZm9yIDAuLjB4YmYgYXMgd2VsbCBhcyBmb3IgMHhmZSBhbmQgMHhmZi4KKyAqIFJl
dHVybnMgMCBmb3IgMC4uMHhjMSBhcyB3ZWxsIGFzIGZvciAweGY1Li4weGZmLgorICogbGVhZEJ5
dGUgbWlnaHQgYmUgZXZhbHVhdGVkIG11bHRpcGxlIHRpbWVzLgogICoKICAqIFRoaXMgaXMgaW50
ZXJuYWwgc2luY2UgaXQgaXMgbm90IG1lYW50IHRvIGJlIGNhbGxlZCBkaXJlY3RseSBieSBleHRl
cm5hbCBjbGllbnRzOwogICogaG93ZXZlciBpdCBpcyBjYWxsZWQgYnkgcHVibGljIG1hY3JvcyBp
biB0aGlzIGZpbGUgYW5kIHRodXMgbXVzdCByZW1haW4gc3RhYmxlLgogICoKLSAqIE5vdGU6IEJl
Z2lubmluZyB3aXRoIElDVSA1MCwgdGhlIGltcGxlbWVudGF0aW9uIHVzZXMgYSBtdWx0aS1jb25k
aXRpb24gZXhwcmVzc2lvbgotICogd2hpY2ggd2FzIHNob3duIGluIDIwMTIgKG9uIHg4Ni02NCkg
dG8gY29tcGlsZSB0byBmYXN0LCBicmFuY2gtZnJlZSBjb2RlLgotICogbGVhZEJ5dGUgaXMgZXZh
bHVhdGVkIG11bHRpcGxlIHRpbWVzLgotICoKLSAqIFRoZSBwcmUtSUNVIDUwIGltcGxlbWVudGF0
aW9uIHVzZWQgdGhlIGV4cG9ydGVkIGFycmF5IHV0ZjhfY291bnRUcmFpbEJ5dGVzOgotICogI2Rl
ZmluZSBVOF9DT1VOVF9UUkFJTF9CWVRFUyhsZWFkQnl0ZSkgKHV0ZjhfY291bnRUcmFpbEJ5dGVz
W2xlYWRCeXRlXSkKLSAqIGxlYWRCeXRlIHdhcyBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLgotICoK
ICAqIEBwYXJhbSBsZWFkQnl0ZSBUaGUgZmlyc3QgYnl0ZSBvZiBhIFVURi04IHNlcXVlbmNlLiBN
dXN0IGJlIDAuLjB4ZmYuCiAgKiBAaW50ZXJuYWwKICAqLwogI2RlZmluZSBVOF9DT1VOVF9UUkFJ
TF9CWVRFUyhsZWFkQnl0ZSkgXAotICAgICgodWludDhfdCkobGVhZEJ5dGUpPDB4ZjAgPyBcCi0g
ICAgICAgICgodWludDhfdCkobGVhZEJ5dGUpPj0weGMwKSsoKHVpbnQ4X3QpKGxlYWRCeXRlKT49
MHhlMCkgOiBcCi0gICAgICAgICh1aW50OF90KShsZWFkQnl0ZSk8MHhmZSA/IDMrKCh1aW50OF90
KShsZWFkQnl0ZSk+PTB4ZjgpKygodWludDhfdCkobGVhZEJ5dGUpPj0weGZjKSA6IDApCisgICAg
KFU4X0lTX0xFQUQobGVhZEJ5dGUpID8gXAorICAgICAgICAoKHVpbnQ4X3QpKGxlYWRCeXRlKT49
MHhlMCkrKCh1aW50OF90KShsZWFkQnl0ZSk+PTB4ZjApKzEgOiAwKQogCiAvKioKICAqIENvdW50
cyB0aGUgdHJhaWwgYnl0ZXMgZm9yIGEgVVRGLTggbGVhZCBieXRlIG9mIGEgdmFsaWQgVVRGLTgg
c2VxdWVuY2UuCi0gKiBUaGUgbWF4aW11bSBzdXBwb3J0ZWQgbGVhZCBieXRlIGlzIDB4ZjQgY29y
cmVzcG9uZGluZyB0byBVKzEwRkZGRi4KKyAqIFJldHVybnMgMCBmb3IgMC4uMHhjMS4gVW5kZWZp
bmVkIGZvciAweGY1Li4weGZmLgogICogbGVhZEJ5dGUgbWlnaHQgYmUgZXZhbHVhdGVkIG11bHRp
cGxlIHRpbWVzLgogICoKICAqIFRoaXMgaXMgaW50ZXJuYWwgc2luY2UgaXQgaXMgbm90IG1lYW50
IHRvIGJlIGNhbGxlZCBkaXJlY3RseSBieSBleHRlcm5hbCBjbGllbnRzOwpAQCAtOTQsNyArNjgs
NyBAQCB1dGY4X2NvdW50VHJhaWxCeXRlc1syNTZdOwogICogQGludGVybmFsCiAgKi8KICNkZWZp
bmUgVThfQ09VTlRfVFJBSUxfQllURVNfVU5TQUZFKGxlYWRCeXRlKSBcCi0gICAgKCgobGVhZEJ5
dGUpPj0weGMwKSsoKGxlYWRCeXRlKT49MHhlMCkrKChsZWFkQnl0ZSk+PTB4ZjApKQorICAgICgo
KHVpbnQ4X3QpKGxlYWRCeXRlKT49MHhjMikrKCh1aW50OF90KShsZWFkQnl0ZSk+PTB4ZTApKygo
dWludDhfdCkobGVhZEJ5dGUpPj0weGYwKSkKIAogLyoqCiAgKiBNYXNrIGEgVVRGLTggbGVhZCBi
eXRlLCBsZWF2ZSBvbmx5IHRoZSBsb3dlciBiaXRzIHRoYXQgZm9ybSBwYXJ0IG9mIHRoZSBjb2Rl
IHBvaW50IHZhbHVlLgpAQCAtMTA1LDYgKzc5LDQwIEBAIHV0ZjhfY291bnRUcmFpbEJ5dGVzWzI1
Nl07CiAgKi8KICNkZWZpbmUgVThfTUFTS19MRUFEX0JZVEUobGVhZEJ5dGUsIGNvdW50VHJhaWxC
eXRlcykgKChsZWFkQnl0ZSkmPSgxPDwoNi0oY291bnRUcmFpbEJ5dGVzKSkpLTEpCiAKKy8qKgor
ICogSW50ZXJuYWwgYml0IHZlY3RvciBmb3IgMy1ieXRlIFVURi04IHZhbGlkaXR5IGNoZWNrLCBm
b3IgdXNlIGluIFU4X0lTX1ZBTElEX0xFQUQzX0FORF9UMS4KKyAqIEVhY2ggYml0IGluZGljYXRl
cyB3aGV0aGVyIG9uZSBsZWFkIGJ5dGUgKyBmaXJzdCB0cmFpbCBieXRlIHBhaXIgc3RhcnRzIGEg
dmFsaWQgc2VxdWVuY2UuCisgKiBMZWFkIGJ5dGUgRTAuLkVGIGJpdHMgMy4uMCBhcmUgdXNlZCBh
cyBieXRlIGluZGV4LAorICogZmlyc3QgdHJhaWwgYnl0ZSBiaXRzIDcuLjUgYXJlIHVzZWQgYXMg
Yml0IGluZGV4IGludG8gdGhhdCBieXRlLgorICogQHNlZSBVOF9JU19WQUxJRF9MRUFEM19BTkRf
VDEKKyAqIEBpbnRlcm5hbAorICovCisjZGVmaW5lIFU4X0xFQUQzX1QxX0JJVFMgIlx4MjBceDMw
XHgzMFx4MzBceDMwXHgzMFx4MzBceDMwXHgzMFx4MzBceDMwXHgzMFx4MzBceDEwXHgzMFx4MzAi
CisKKy8qKgorICogSW50ZXJuYWwgMy1ieXRlIFVURi04IHZhbGlkaXR5IGNoZWNrLgorICogTm9u
LXplcm8gaWYgbGVhZCBieXRlIEUwLi5FRiBhbmQgZmlyc3QgdHJhaWwgYnl0ZSAwMC4uRkYgc3Rh
cnQgYSB2YWxpZCBzZXF1ZW5jZS4KKyAqIEBpbnRlcm5hbAorICovCisjZGVmaW5lIFU4X0lTX1ZB
TElEX0xFQUQzX0FORF9UMShsZWFkLCB0MSkgKFU4X0xFQUQzX1QxX0JJVFNbKGxlYWQpJjB4Zl0m
KDE8PCgodWludDhfdCkodDEpPj41KSkpCisKKy8qKgorICogSW50ZXJuYWwgYml0IHZlY3RvciBm
b3IgNC1ieXRlIFVURi04IHZhbGlkaXR5IGNoZWNrLCBmb3IgdXNlIGluIFU4X0lTX1ZBTElEX0xF
QUQ0X0FORF9UMS4KKyAqIEVhY2ggYml0IGluZGljYXRlcyB3aGV0aGVyIG9uZSBsZWFkIGJ5dGUg
KyBmaXJzdCB0cmFpbCBieXRlIHBhaXIgc3RhcnRzIGEgdmFsaWQgc2VxdWVuY2UuCisgKiBGaXJz
dCB0cmFpbCBieXRlIGJpdHMgNy4uNCBhcmUgdXNlZCBhcyBieXRlIGluZGV4LAorICogbGVhZCBi
eXRlIEYwLi5GNCBiaXRzIDIuLjAgYXJlIHVzZWQgYXMgYml0IGluZGV4IGludG8gdGhhdCBieXRl
LgorICogQHNlZSBVOF9JU19WQUxJRF9MRUFENF9BTkRfVDEKKyAqIEBpbnRlcm5hbAorICovCisj
ZGVmaW5lIFU4X0xFQUQ0X1QxX0JJVFMgIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw
XHgxRVx4MEZceDBGXHgwRlx4MDBceDAwXHgwMFx4MDAiCisKKy8qKgorICogSW50ZXJuYWwgNC1i
eXRlIFVURi04IHZhbGlkaXR5IGNoZWNrLgorICogTm9uLXplcm8gaWYgbGVhZCBieXRlIEYwLi5G
NCBhbmQgZmlyc3QgdHJhaWwgYnl0ZSAwMC4uRkYgc3RhcnQgYSB2YWxpZCBzZXF1ZW5jZS4KKyAq
IEBpbnRlcm5hbAorICovCisjZGVmaW5lIFU4X0lTX1ZBTElEX0xFQUQ0X0FORF9UMShsZWFkLCB0
MSkgKFU4X0xFQUQ0X1QxX0JJVFNbKHVpbnQ4X3QpKHQxKT4+NF0mKDE8PCgobGVhZCkmNykpKQor
CiAvKioKICAqIEZ1bmN0aW9uIGZvciBoYW5kbGluZyAibmV4dCBjb2RlIHBvaW50IiB3aXRoIGVy
cm9yLWNoZWNraW5nLgogICoKQEAgLTE2NCwyMCArMTcyLDIxIEBAIHV0ZjhfYmFjazFTYWZlQm9k
eShjb25zdCB1aW50OF90ICpzLCBpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGkpOwogI2RlZmluZSBV
OF9JU19TSU5HTEUoYykgKCgoYykmMHg4MCk9PTApCiAKIC8qKgotICogSXMgdGhpcyBjb2RlIHVu
aXQgKGJ5dGUpIGEgVVRGLTggbGVhZCBieXRlPworICogSXMgdGhpcyBjb2RlIHVuaXQgKGJ5dGUp
IGEgVVRGLTggbGVhZCBieXRlPyAoMHhDMi4uMHhGNCkKICAqIEBwYXJhbSBjIDgtYml0IGNvZGUg
dW5pdCAoYnl0ZSkKICAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQogICogQHN0YWJsZSBJQ1UgMi40
CiAgKi8KLSNkZWZpbmUgVThfSVNfTEVBRChjKSAoKHVpbnQ4X3QpKChjKS0weGMwKTwweDNlKQor
I2RlZmluZSBVOF9JU19MRUFEKGMpICgodWludDhfdCkoKGMpLTB4YzIpPD0weDMyKQorLy8gMHgz
Mj0weGY0LTB4YzIKIAogLyoqCi0gKiBJcyB0aGlzIGNvZGUgdW5pdCAoYnl0ZSkgYSBVVEYtOCB0
cmFpbCBieXRlPworICogSXMgdGhpcyBjb2RlIHVuaXQgKGJ5dGUpIGEgVVRGLTggdHJhaWwgYnl0
ZT8gKDB4ODAuLjB4QkYpCiAgKiBAcGFyYW0gYyA4LWJpdCBjb2RlIHVuaXQgKGJ5dGUpCiAgKiBA
cmV0dXJuIFRSVUUgb3IgRkFMU0UKICAqIEBzdGFibGUgSUNVIDIuNAogICovCi0jZGVmaW5lIFU4
X0lTX1RSQUlMKGMpICgoKGMpJjB4YzApPT0weDgwKQorI2RlZmluZSBVOF9JU19UUkFJTChjKSAo
KGludDhfdCkoYyk8LTB4NDApCiAKIC8qKgogICogSG93IG1hbnkgY29kZSB1bml0cyAoYnl0ZXMp
IGFyZSB1c2VkIGZvciB0aGUgVVRGLTggZW5jb2RpbmcKQEAgLTMwNSw3ICszMTQsNyBAQCB1dGY4
X2JhY2sxU2FmZUJvZHkoY29uc3QgdWludDhfdCAqcywgaW50MzJfdCBzdGFydCwgaW50MzJfdCBp
KTsKICAqLwogI2RlZmluZSBVOF9ORVhUX1VOU0FGRShzLCBpLCBjKSB7IFwKICAgICAoYyk9KHVp
bnQ4X3QpKHMpWyhpKSsrXTsgXAotICAgIGlmKChjKT49MHg4MCkgeyBcCisgICAgaWYoIVU4X0lT
X1NJTkdMRShjKSkgeyBcCiAgICAgICAgIGlmKChjKTwweGUwKSB7IFwKICAgICAgICAgICAgIChj
KT0oKChjKSYweDFmKTw8Nil8KChzKVsoaSkrK10mMHgzZik7IFwKICAgICAgICAgfSBlbHNlIGlm
KChjKTwweGYwKSB7IFwKQEAgLTM0MSwyMiArMzUwLDE5IEBAIHV0ZjhfYmFjazFTYWZlQm9keShj
b25zdCB1aW50OF90ICpzLCBpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGkpOwogICovCiAjZGVmaW5l
IFU4X05FWFQocywgaSwgbGVuZ3RoLCBjKSB7IFwKICAgICAoYyk9KHVpbnQ4X3QpKHMpWyhpKSsr
XTsgXAotICAgIGlmKChjKT49MHg4MCkgeyBcCisgICAgaWYoIVU4X0lTX1NJTkdMRShjKSkgeyBc
CiAgICAgICAgIHVpbnQ4X3QgX190MSwgX190MjsgXAotICAgICAgICBpZiggLyogaGFuZGxlIFUr
MTAwMC4uVStDRkZGIGlubGluZSAqLyBcCi0gICAgICAgICAgICAoMHhlMDwoYykgJiYgKGMpPD0w
eGVjKSAmJiBcCi0gICAgICAgICAgICAoKChpKSsxKTwobGVuZ3RoKSB8fCAobGVuZ3RoKTwwKSAm
JiBcCi0gICAgICAgICAgICAoX190MT0odWludDhfdCkoKHMpW2ldLTB4ODApKTw9MHgzZiAmJiBc
Ci0gICAgICAgICAgICAoX190Mj0odWludDhfdCkoKHMpWyhpKSsxXS0weDgwKSk8PSAweDNmIFwK
LSAgICAgICAgKSB7IFwKLSAgICAgICAgICAgIC8qIG5vIG5lZWQgZm9yIChjJjB4ZikgYmVjYXVz
ZSB0aGUgdXBwZXIgYml0cyBhcmUgdHJ1bmNhdGVkIGFmdGVyIDw8MTIgaW4gdGhlIGNhc3QgdG8g
KFVDaGFyKSAqLyBcCi0gICAgICAgICAgICAoYyk9KFVDaGFyKSgoKGMpPDwxMil8KF9fdDE8PDYp
fF9fdDIpOyBcCisgICAgICAgIGlmKCAvKiBoYW5kbGUgVSswODAwLi5VK0ZGRkYgaW5saW5lICov
IFwKKyAgICAgICAgICAgICAgICAoMHhlMDw9KGMpICYmIChjKTwweGYwKSAmJiBcCisgICAgICAg
ICAgICAgICAgKCgoaSkrMSk8KGxlbmd0aCkgfHwgKGxlbmd0aCk8MCkgJiYgXAorICAgICAgICAg
ICAgICAgIFU4X0lTX1ZBTElEX0xFQUQzX0FORF9UMSgoYyksIF9fdDE9KHMpW2ldKSAmJiBcCisg
ICAgICAgICAgICAgICAgKF9fdDI9KHMpWyhpKSsxXS0weDgwKTw9MHgzZikgeyBcCisgICAgICAg
ICAgICAoYyk9KCgoYykmMHhmKTw8MTIpfCgoX190MSYweDNmKTw8Nil8X190MjsgXAogICAgICAg
ICAgICAgKGkpKz0yOyBcCiAgICAgICAgIH0gZWxzZSBpZiggLyogaGFuZGxlIFUrMDA4MC4uVSsw
N0ZGIGlubGluZSAqLyBcCi0gICAgICAgICAgICAoKGMpPDB4ZTAgJiYgKGMpPj0weGMyKSAmJiBc
Ci0gICAgICAgICAgICAoKGkpIT0obGVuZ3RoKSkgJiYgXAotICAgICAgICAgICAgKF9fdDE9KHVp
bnQ4X3QpKChzKVtpXS0weDgwKSk8PTB4M2YgXAotICAgICAgICApIHsgXAorICAgICAgICAgICAg
ICAgICgoYyk8MHhlMCAmJiAoYyk+PTB4YzIpICYmIFwKKyAgICAgICAgICAgICAgICAoKGkpIT0o
bGVuZ3RoKSkgJiYgXAorICAgICAgICAgICAgICAgIChfX3QxPShzKVtpXS0weDgwKTw9MHgzZikg
eyBcCiAgICAgICAgICAgICAoYyk9KCgoYykmMHgxZik8PDYpfF9fdDE7IFwKICAgICAgICAgICAg
ICsrKGkpOyBcCiAgICAgICAgIH0gZWxzZSB7IFwKQEAgLTM5MiwyMiArMzk4LDE5IEBAIHV0Zjhf
YmFjazFTYWZlQm9keShjb25zdCB1aW50OF90ICpzLCBpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGkp
OwogICovCiAjZGVmaW5lIFU4X05FWFRfT1JfRkZGRChzLCBpLCBsZW5ndGgsIGMpIHsgXAogICAg
IChjKT0odWludDhfdCkocylbKGkpKytdOyBcCi0gICAgaWYoKGMpPj0weDgwKSB7IFwKKyAgICBp
ZighVThfSVNfU0lOR0xFKGMpKSB7IFwKICAgICAgICAgdWludDhfdCBfX3QxLCBfX3QyOyBcCi0g
ICAgICAgIGlmKCAvKiBoYW5kbGUgVSsxMDAwLi5VK0NGRkYgaW5saW5lICovIFwKLSAgICAgICAg
ICAgICgweGUwPChjKSAmJiAoYyk8PTB4ZWMpICYmIFwKLSAgICAgICAgICAgICgoKGkpKzEpPChs
ZW5ndGgpIHx8IChsZW5ndGgpPDApICYmIFwKLSAgICAgICAgICAgIChfX3QxPSh1aW50OF90KSgo
cylbaV0tMHg4MCkpPD0weDNmICYmIFwKLSAgICAgICAgICAgIChfX3QyPSh1aW50OF90KSgocylb
KGkpKzFdLTB4ODApKTw9IDB4M2YgXAotICAgICAgICApIHsgXAotICAgICAgICAgICAgLyogbm8g
bmVlZCBmb3IgKGMmMHhmKSBiZWNhdXNlIHRoZSB1cHBlciBiaXRzIGFyZSB0cnVuY2F0ZWQgYWZ0
ZXIgPDwxMiBpbiB0aGUgY2FzdCB0byAoVUNoYXIpICovIFwKLSAgICAgICAgICAgIChjKT0oVUNo
YXIpKCgoYyk8PDEyKXwoX190MTw8Nil8X190Mik7IFwKKyAgICAgICAgaWYoIC8qIGhhbmRsZSBV
KzA4MDAuLlUrRkZGRiBpbmxpbmUgKi8gXAorICAgICAgICAgICAgICAgICgweGUwPD0oYykgJiYg
KGMpPDB4ZjApICYmIFwKKyAgICAgICAgICAgICAgICAoKChpKSsxKTwobGVuZ3RoKSB8fCAobGVu
Z3RoKTwwKSAmJiBcCisgICAgICAgICAgICAgICAgVThfSVNfVkFMSURfTEVBRDNfQU5EX1QxKChj
KSwgX190MT0ocylbaV0pICYmIFwKKyAgICAgICAgICAgICAgICAoX190Mj0ocylbKGkpKzFdLTB4
ODApPD0weDNmKSB7IFwKKyAgICAgICAgICAgIChjKT0oKChjKSYweGYpPDwxMil8KChfX3QxJjB4
M2YpPDw2KXxfX3QyOyBcCiAgICAgICAgICAgICAoaSkrPTI7IFwKICAgICAgICAgfSBlbHNlIGlm
KCAvKiBoYW5kbGUgVSswMDgwLi5VKzA3RkYgaW5saW5lICovIFwKLSAgICAgICAgICAgICgoYyk8
MHhlMCAmJiAoYyk+PTB4YzIpICYmIFwKLSAgICAgICAgICAgICgoaSkhPShsZW5ndGgpKSAmJiBc
Ci0gICAgICAgICAgICAoX190MT0odWludDhfdCkoKHMpW2ldLTB4ODApKTw9MHgzZiBcCi0gICAg
ICAgICkgeyBcCisgICAgICAgICAgICAgICAgKChjKTwweGUwICYmIChjKT49MHhjMikgJiYgXAor
ICAgICAgICAgICAgICAgICgoaSkhPShsZW5ndGgpKSAmJiBcCisgICAgICAgICAgICAgICAgKF9f
dDE9KHMpW2ldLTB4ODApPD0weDNmKSB7IFwKICAgICAgICAgICAgIChjKT0oKChjKSYweDFmKTw8
Nil8X190MTsgXAogICAgICAgICAgICAgKysoaSk7IFwKICAgICAgICAgfSBlbHNlIHsgXApAQCAt
NDkyLDcgKzQ5NSw3IEBAIHV0ZjhfYmFjazFTYWZlQm9keShjb25zdCB1aW50OF90ICpzLCBpbnQz
Ml90IHN0YXJ0LCBpbnQzMl90IGkpOwogICogQHN0YWJsZSBJQ1UgMi40CiAgKi8KICNkZWZpbmUg
VThfRldEXzFfVU5TQUZFKHMsIGkpIHsgXAotICAgIChpKSs9MStVOF9DT1VOVF9UUkFJTF9CWVRF
U19VTlNBRkUoKHVpbnQ4X3QpKHMpW2ldKTsgXAorICAgIChpKSs9MStVOF9DT1VOVF9UUkFJTF9C
WVRFU19VTlNBRkUoKHMpW2ldKTsgXAogfQogCiAvKioKQEAgLTUwOSwxNSArNTEyLDI0IEBAIHV0
ZjhfYmFjazFTYWZlQm9keShjb25zdCB1aW50OF90ICpzLCBpbnQzMl90IHN0YXJ0LCBpbnQzMl90
IGkpOwogICogQHN0YWJsZSBJQ1UgMi40CiAgKi8KICNkZWZpbmUgVThfRldEXzEocywgaSwgbGVu
Z3RoKSB7IFwKLSAgICB1aW50OF90IF9fYj0odWludDhfdCkocylbKGkpKytdOyBcCi0gICAgaWYo
VThfSVNfTEVBRChfX2IpKSB7IFwKLSAgICAgICAgdWludDhfdCBfX2NvdW50PVU4X0NPVU5UX1RS
QUlMX0JZVEVTKF9fYik7IFwKLSAgICAgICAgaWYoKGkpK19fY291bnQ+KGxlbmd0aCkgJiYgKGxl
bmd0aCk+PTApIHsgXAotICAgICAgICAgICAgX19jb3VudD0odWludDhfdCkoKGxlbmd0aCktKGkp
KTsgXAotICAgICAgICB9IFwKLSAgICAgICAgd2hpbGUoX19jb3VudD4wICYmIFU4X0lTX1RSQUlM
KChzKVtpXSkpIHsgXAotICAgICAgICAgICAgKysoaSk7IFwKLSAgICAgICAgICAgIC0tX19jb3Vu
dDsgXAorICAgIHVpbnQ4X3QgX19iPShzKVsoaSkrK107IFwKKyAgICBpZihVOF9JU19MRUFEKF9f
YikgJiYgKGkpIT0obGVuZ3RoKSkgeyBcCisgICAgICAgIHVpbnQ4X3QgX190MT0ocylbaV07IFwK
KyAgICAgICAgaWYoKDB4ZTA8PV9fYiAmJiBfX2I8MHhmMCkpIHsgXAorICAgICAgICAgICAgaWYo
VThfSVNfVkFMSURfTEVBRDNfQU5EX1QxKF9fYiwgX190MSkgJiYgXAorICAgICAgICAgICAgICAg
ICAgICArKyhpKSE9KGxlbmd0aCkgJiYgVThfSVNfVFJBSUwoKHMpW2ldKSkgeyBcCisgICAgICAg
ICAgICAgICAgKysoaSk7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IGVsc2UgaWYoX19i
PDB4ZTApIHsgXAorICAgICAgICAgICAgaWYoVThfSVNfVFJBSUwoX190MSkpIHsgXAorICAgICAg
ICAgICAgICAgICsrKGkpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBlbHNlIC8qIGM+
PTB4ZjAgKi8geyBcCisgICAgICAgICAgICBpZihVOF9JU19WQUxJRF9MRUFENF9BTkRfVDEoX19i
LCBfX3QxKSAmJiBcCisgICAgICAgICAgICAgICAgICAgICsrKGkpIT0obGVuZ3RoKSAmJiBVOF9J
U19UUkFJTCgocylbaV0pICYmIFwKKyAgICAgICAgICAgICAgICAgICAgKysoaSkhPShsZW5ndGgp
ICYmIFU4X0lTX1RSQUlMKChzKVtpXSkpIHsgXAorICAgICAgICAgICAgICAgICsrKGkpOyBcCisg
ICAgICAgICAgICB9IFwKICAgICAgICAgfSBcCiAgICAgfSBcCiB9CkBAIC02MzEsNyArNjQzLDcg
QEAgdXRmOF9iYWNrMVNhZmVCb2R5KGNvbnN0IHVpbnQ4X3QgKnMsIGludDMyX3Qgc3RhcnQsIGlu
dDMyX3QgaSk7CiAgICAgICAgIC8qIGMgaXMgYSB0cmFpbCBieXRlICovIFwKICAgICAgICAgKGMp
Jj0weDNmOyBcCiAgICAgICAgIGZvcig7OykgeyBcCi0gICAgICAgICAgICBfX2I9KHVpbnQ4X3Qp
KHMpWy0tKGkpXTsgXAorICAgICAgICAgICAgX19iPShzKVstLShpKV07IFwKICAgICAgICAgICAg
IGlmKF9fYj49MHhjMCkgeyBcCiAgICAgICAgICAgICAgICAgVThfTUFTS19MRUFEX0JZVEUoX19i
LCBfX2NvdW50KTsgXAogICAgICAgICAgICAgICAgIChjKXw9KFVDaGFyMzIpX19iPDxfX3NoaWZ0
OyBcCkBAIC02NjcsNyArNjc5LDcgQEAgdXRmOF9iYWNrMVNhZmVCb2R5KGNvbnN0IHVpbnQ4X3Qg
KnMsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgaSk7CiAgKi8KICNkZWZpbmUgVThfUFJFVihzLCBz
dGFydCwgaSwgYykgeyBcCiAgICAgKGMpPSh1aW50OF90KShzKVstLShpKV07IFwKLSAgICBpZigo
Yyk+PTB4ODApIHsgXAorICAgIGlmKCFVOF9JU19TSU5HTEUoYykpIHsgXAogICAgICAgICAoYyk9
dXRmOF9wcmV2Q2hhclNhZmVCb2R5KChjb25zdCB1aW50OF90ICopcywgc3RhcnQsICYoaSksIGMs
IC0xKTsgXAogICAgIH0gXAogfQpAQCAtNjk4LDcgKzcxMCw3IEBAIHV0ZjhfYmFjazFTYWZlQm9k
eShjb25zdCB1aW50OF90ICpzLCBpbnQzMl90IHN0YXJ0LCBpbnQzMl90IGkpOwogICovCiAjZGVm
aW5lIFU4X1BSRVZfT1JfRkZGRChzLCBzdGFydCwgaSwgYykgeyBcCiAgICAgKGMpPSh1aW50OF90
KShzKVstLShpKV07IFwKLSAgICBpZigoYyk+PTB4ODApIHsgXAorICAgIGlmKCFVOF9JU19TSU5H
TEUoYykpIHsgXAogICAgICAgICAoYyk9dXRmOF9wcmV2Q2hhclNhZmVCb2R5KChjb25zdCB1aW50
OF90ICopcywgc3RhcnQsICYoaSksIGMsIC0zKTsgXAogICAgIH0gXAogfQpAQCAtODE1LDcgKzgy
Nyw3IEBAIHV0ZjhfYmFjazFTYWZlQm9keShjb25zdCB1aW50OF90ICpzLCBpbnQzMl90IHN0YXJ0
LCBpbnQzMl90IGkpOwogICogQHN0YWJsZSBJQ1UgMi40CiAgKi8KICNkZWZpbmUgVThfU0VUX0NQ
X0xJTUlUKHMsIHN0YXJ0LCBpLCBsZW5ndGgpIHsgXAotICAgIGlmKChzdGFydCk8KGkpICYmICgo
aSk8KGxlbmd0aCkgfHwgKChsZW5ndGgpPDAgJiYgKHMpW2ldIT0wKSkpIHsgXAorICAgIGlmKChz
dGFydCk8KGkpICYmICgoaSk8KGxlbmd0aCkgfHwgKGxlbmd0aCk8MCkpIHsgXAogICAgICAgICBV
OF9CQUNLXzEocywgc3RhcnQsIGkpOyBcCiAgICAgICAgIFU4X0ZXRF8xKHMsIGksIGxlbmd0aCk7
IFwKICAgICB9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRmX29sZC5o
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGZfb2xkLmgKaW5kZXggZjkxMjViMWRkMmVkN2Ux
YzY4NGRhMTY1NGY1ZTQ3ZGQ3Y2Q1ZmIxNC4uNTVjMTdjMDFkZjZkYjM0ZjFhNTA0MTI2M2Y0ZGM1
NjI3Zjc1MzdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGZfb2xkLmgK
KysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGZfb2xkLmgKQEAgLTEsMyArMSw1IEBACisv
LyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5z
ZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAog
LyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTYsNyArOCw3IEBACiAqCiAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiAqICAgZmlsZSBuYW1lOiAgdXRmX29sZC5oCi0qICAgZW5jb2Rpbmc6
ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAgIDggKG5v
dCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKQEAgLTE1LDEyICsxNywxMiBAQAogKi8KIAog
LyoqCi0gKiBcZmlsZSAKKyAqIFxmaWxlCiAgKiBcYnJpZWYgQyBBUEk6IERlcHJlY2F0ZWQgbWFj
cm9zIGZvciBVbmljb2RlIHN0cmluZyBoYW5kbGluZwogICovCiAKIC8qKgotICogCisgKgogICog
VGhlIG1hY3JvcyBpbiB1dGZfb2xkLmggYXJlIGFsbCBkZXByZWNhdGVkIGFuZCB0aGVpciB1c2Ug
ZGlzY291cmFnZWQuCiAgKiBTb21lIG9mIHRoZSBkZXNpZ24gcHJpbmNpcGxlcyBiZWhpbmQgdGhl
IHNldCBvZiBVVEYgbWFjcm9zCiAgKiBoYXZlIGNoYW5nZWQgb3IgcHJvdmVkIGltcHJhY3RpY2Fs
LgpAQCAtMTQzLDcgKzE0NSwyMiBAQAogI2lmbmRlZiBfX1VURl9PTERfSF9fCiAjZGVmaW5lIF9f
VVRGX09MRF9IX18KIAotI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKy8qKgorICogXGRl
ZiBVX0hJREVfT0JTT0xFVEVfVVRGX09MRF9ICisgKgorICogSGlkZXMgdGhlIG9ic29sZXRlIGRl
ZmluaXRpb25zIGluIHVuaWNvZGUvdXRmX29sZC5oLgorICogUmVjb21tZW5kZWQgdG8gYmUgc2V0
IHRvIDEgYXQgY29tcGlsZSB0aW1lIHRvIG1ha2Ugc3VyZQorICogdGhlIGxvbmctZGVwcmVjYXRl
ZCBtYWNyb3MgYXJlIG5vIGxvbmdlciB1c2VkLgorICoKKyAqIEZvciByZWFzb25zIGZvciB0aGUg
ZGVwcmVjYXRpb24gc2VlIHRoZSB1dGZfb2xkLmggZmlsZSBjb21tZW50cy4KKyAqCisgKiBAaW50
ZXJuYWwKKyAqLworI2lmbmRlZiBVX0hJREVfT0JTT0xFVEVfVVRGX09MRF9ICisjICAgZGVmaW5l
IFVfSElERV9PQlNPTEVURV9VVEZfT0xEX0ggMAorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChVX0hJ
REVfREVQUkVDQVRFRF9BUEkpICYmICFVX0hJREVfT0JTT0xFVEVfVVRGX09MRF9ICiAKICNpbmNs
dWRlICJ1bmljb2RlL3V0Zi5oIgogI2luY2x1ZGUgInVuaWNvZGUvdXRmOC5oIgpAQCAtMjY1LDYg
KzI4MiwyNSBAQCB0eXBlZGVmIGludDMyX3QgVVRleHRPZmZzZXQ7CiAKIC8qIEZvcm1lcmx5IHV0
ZjguaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICovCiAKKy8qKgorKiBcdmFyIHV0ZjhfY291bnRUcmFpbEJ5dGVzCisqIEludGVybmFs
IGFycmF5IHdpdGggbnVtYmVycyBvZiB0cmFpbCBieXRlcyBmb3IgYW55IGdpdmVuIGJ5dGUgdXNl
ZCBpbgorKiBsZWFkIGJ5dGUgcG9zaXRpb24uCisqCisqIFRoaXMgaXMgaW50ZXJuYWwgc2luY2Ug
aXQgaXMgbm90IG1lYW50IHRvIGJlIGNhbGxlZCBkaXJlY3RseSBieSBleHRlcm5hbCBjbGllbnRz
OworKiBob3dldmVyIGl0IGlzIGNhbGxlZCBieSBwdWJsaWMgbWFjcm9zIGluIHRoaXMgZmlsZSBh
bmQgdGh1cyBtdXN0IHJlbWFpbiBzdGFibGUsCisqIGFuZCBzaG91bGQgbm90IGJlIGhpZGRlbiB3
aGVuIG90aGVyIGludGVybmFsIGZ1bmN0aW9ucyBhcmUgaGlkZGVuIChvdGhlcndpc2UKKyogcHVi
bGljIG1hY3JvcyB3b3VsZCBmYWlsIHRvIGNvbXBpbGUpLgorKiBAaW50ZXJuYWwKKyovCisjaWZk
ZWYgVV9VVEY4X0lNUEwKKy8vIE5vIGZvcndhcmQgZGVjbGFyYXRpb24gaWYgY29tcGlsaW5nIHV0
Zl9pbXBsLmNwcCwgd2hpY2ggZGVmaW5lcyB1dGY4X2NvdW50VHJhaWxCeXRlcy4KKyNlbGlmIGRl
ZmluZWQoVV9TVEFUSUNfSU1QTEVNRU5UQVRJT04pIHx8IGRlZmluZWQoVV9DT01NT05fSU1QTEVN
RU5UQVRJT04pCitVX0NGVU5DIGNvbnN0IHVpbnQ4X3QgdXRmOF9jb3VudFRyYWlsQnl0ZXNbXTsK
KyNlbHNlCitVX0NGVU5DIFVfSU1QT1JUIGNvbnN0IHVpbnQ4X3QgdXRmOF9jb3VudFRyYWlsQnl0
ZXNbXTsgICAgLyogVV9JTVBPUlQyPyAqLyAvKlVfSU1QT1JUKi8KKyNlbmRpZgorCiAvKioKICAq
IENvdW50IHRoZSB0cmFpbCBieXRlcyBmb3IgYSBVVEYtOCBsZWFkIGJ5dGUuCiAgKiBAZGVwcmVj
YXRlZCBJQ1UgMi40LiBSZW5hbWVkIHRvIFU4X0NPVU5UX1RSQUlMX0JZVEVTLCBzZWUgdXRmX29s
ZC5oLgpAQCAtMTE2Myw3ICsxMTk5LDYgQEAgdHlwZWRlZiBpbnQzMl90IFVUZXh0T2Zmc2V0Owog
ICovCiAjZGVmaW5lIFVURl9TRVRfQ0hBUl9MSU1JVChzLCBzdGFydCwgaSwgbGVuZ3RoKSBVMTZf
U0VUX0NQX0xJTUlUKHMsIHN0YXJ0LCBpLCBsZW5ndGgpCiAKLSNlbmRpZiAvKiBVX0hJREVfREVQ
UkVDQVRFRF9BUEkgKi8KKyNlbmRpZiAgLy8gIVVfSElERV9ERVBSRUNBVEVEX0FQSSAmJiAhVV9I
SURFX09CU09MRVRFX1VURl9PTERfSAogCiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9pY3UvdW5pY29kZS91dG1zY2FsZS5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dG1zY2Fs
ZS5oCmluZGV4IDQ3MmQ3NzZhNjJkMTBjM2JiMmVhOTAwM2U0MmFhYWJkNTI0ZmU5ZWMuLmQ4Yjhh
MmU2NjhhZjFkYTBiM2NmOTNhZDgwNjM5OWFmZTA3YTc4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdXRtc2NhbGUuaAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0
bXNjYWxlLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwg
SW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51
bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICog
Q29weXJpZ2h0IChDKSAyMDA0IC0gMjAwOCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5l
cyBDb3Jwb3JhdGlvbiBhbmQKQEAgLTI4MSwxMCArMjgzLDE0IEBAIHR5cGVkZWYgZW51bSBVRGF0
ZVRpbWVTY2FsZSB7CiAgICAgICovCiAgICAgVURUU19VTklYX01JQ1JPU0VDT05EU19USU1FLAog
CisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAgIC8qKgogICAgICAqIFRoZSBmaXJz
dCB1bnVzZWQgdGltZSBzY2FsZSB2YWx1ZS4gVGhlIGxpbWl0IG9mIHRoaXMgZW51bQorICAgICAq
IEBkZXByZWNhdGVkIElDVSA1OSBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGlt
ZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgogICAgICAqLwogICAgIFVEVFNfTUFYX1NDQUxFCisj
ZW5kaWYgIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLworCiB9IFVEYXRlVGltZVNjYWxlOwog
CiAvKioKQEAgLTQyMSwxMiArNDI3LDE1IEBAIHR5cGVkZWYgZW51bSBVVGltZVNjYWxlVmFsdWUg
ewogCiAjZW5kaWYgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogCisjaWZuZGVmIFVfSElERV9E
RVBSRUNBVEVEX0FQSQogICAgIC8qKgogICAgICAqIFRoZSBudW1iZXIgb2YgdGltZSBzY2FsZSB2
YWx1ZXMsIGluIG90aGVyIHdvcmRzIGxpbWl0IG9mIHRoaXMgZW51bS4KICAgICAgKiAKICAgICAg
KiBAc2VlIHV0bXNjYWxlX2dldFRpbWVTY2FsZVZhbHVlCisgICAgICogQGRlcHJlY2F0ZWQgSUNV
IDU5IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tl
dCAjMTI0MjAuCiAgICAgICovCiAgICAgVVRTVl9NQVhfU0NBTEVfVkFMVUU9MTEKKyNlbmRpZiAg
LyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCiAKIH0gVVRpbWVTY2FsZVZhbHVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0cmFjZS5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91dHJhY2UuaAppbmRleCAyNjIxY2Y5Yzg1NDIwNzA4MjFlMmE5ZTMyOWQyNzQ1Njhl
YjZjMGE5Li42YjRjNGRmOTQwMjZhN2ZkM2NkMWFlYjBiNjk1NTgxMDYwMGU2MjVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0cmFjZS5oCisrKyBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdXRyYWNlLmgKQEAgLTEsMyArMSw1IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjog
VW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0
cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRtbAogLyoKICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKICoKQEAgLTYsNyArOCw3IEBACiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAg
ZmlsZSBuYW1lOiAgdXRyYWNlLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIGVuY29k
aW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5kZW50YXRp
b246NAogKgpAQCAtNjQsNyArNjYsMTMgQEAgdHlwZWRlZiBlbnVtIFVUcmFjZUZ1bmN0aW9uTnVt
YmVyIHsKICAgICBVVFJBQ0VfRlVOQ1RJT05fU1RBUlQ9MCwKICAgICBVVFJBQ0VfVV9JTklUPVVU
UkFDRV9GVU5DVElPTl9TVEFSVCwKICAgICBVVFJBQ0VfVV9DTEVBTlVQLAorI2lmbmRlZiBVX0hJ
REVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9yZSB0aGFuIHRoZSBoaWdo
ZXN0IG5vcm1hbCBjb2xsYXRpb24gdHJhY2UgbG9jYXRpb24uCisgICAgICogQGRlcHJlY2F0ZWQg
SUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRp
Y2tldCAjMTI0MjAuCisgICAgICovCiAgICAgVVRSQUNFX0ZVTkNUSU9OX0xJTUlULAorI2VuZGlm
ICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIAogICAgIFVUUkFDRV9DT05WRVJTSU9OX1NUQVJU
PTB4MTAwMCwKICAgICBVVFJBQ0VfVUNOVl9PUEVOPVVUUkFDRV9DT05WRVJTSU9OX1NUQVJULApA
QCAtNzUsNyArODMsMTMgQEAgdHlwZWRlZiBlbnVtIFVUcmFjZUZ1bmN0aW9uTnVtYmVyIHsKICAg
ICBVVFJBQ0VfVUNOVl9GTFVTSF9DQUNIRSwKICAgICBVVFJBQ0VfVUNOVl9MT0FELAogICAgIFVU
UkFDRV9VQ05WX1VOTE9BRCwKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoq
CisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgY29sbGF0aW9uIHRyYWNl
IGxvY2F0aW9uLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBt
YXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLwogICAg
IFVUUkFDRV9DT05WRVJTSU9OX0xJTUlULAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9B
UEkKIAogICAgIFVUUkFDRV9DT0xMQVRJT05fU1RBUlQ9MHgyMDAwLAogICAgIFVUUkFDRV9VQ09M
X09QRU49VVRSQUNFX0NPTExBVElPTl9TVEFSVCwKQEAgLTg3LDcgKzEwMSwxMyBAQCB0eXBlZGVm
IGVudW0gVVRyYWNlRnVuY3Rpb25OdW1iZXIgewogICAgIFVUUkFDRV9VQ09MX1NUUkNPTExJVEVS
LAogICAgIFVUUkFDRV9VQ09MX09QRU5fRlJPTV9TSE9SVF9TVFJJTkcsCiAgICAgVVRSQUNFX1VD
T0xfU1RSQ09MTFVURjgsIC8qKjwgQHN0YWJsZSBJQ1UgNTAgKi8KKyNpZm5kZWYgVV9ISURFX0RF
UFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBu
b3JtYWwgY29sbGF0aW9uIHRyYWNlIGxvY2F0aW9uLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1
OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQg
IzEyNDIwLgorICAgICAqLwogICAgIFVUUkFDRV9DT0xMQVRJT05fTElNSVQKKyNlbmRpZiAgLy8g
VV9ISURFX0RFUFJFQ0FURURfQVBJCiB9IFVUcmFjZUZ1bmN0aW9uTnVtYmVyOwogCiAvKioKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRyYW5zLmggYi9Tb3VyY2UvV1RGL2lj
dS91bmljb2RlL3V0cmFucy5oCmluZGV4IGUzZmUxNjI5YzhjYjUyNjFmMjc3MGU3MmFjZjdhZjU3
NzljMjEyYjEuLmQwZjA1Y2YyYjYwYzMyZTYyMzllZjA3ODc3NmE0ZDY4ZjZkYjdhZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRyYW5zLmgKKysrIGIvU291cmNlL1dURi9p
Y3UvdW5pY29kZS91dHJhbnMuaApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVy
OiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBo
dHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMTk5Ny0yMDExLDIwMTQtMjAxNSBJbnRlcm5hdGlv
bmFsIEJ1c2luZXNzIE1hY2hpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2ljdS91bmljb2Rl
L3V0eXBlcy5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dHlwZXMuaAppbmRleCAwOTAzN2E4
MWQ1Mjg1YzE3NTQzNDdkMzVhZGIwNWYzZmM5ZDJkMzVkLi4wMzNjYmRjNTg2MjQ5ZmE0MWNkYjEx
NGMxOTYzMTBjZWRmNzUwM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V0
eXBlcy5oCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXR5cGVzLmgKQEAgLTEsNiArMSw4
IEBACisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8g
TGljZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQu
aHRtbAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKLSogICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxNSwgSW50
ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDE2
LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCiAqICAgQ29ycG9yYXRpb24gYW5kIG90
aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC01OSw3ICs2
MSw3IEBACiAgKi8KICNpZmRlZiBfX2NwbHVzcGx1cwogIyAgIGlmbmRlZiBVX1NIT1dfQ1BMVVNQ
TFVTX0FQSQotIyAgICAgICBkZWZpbmUgVV9TSE9XX0NQTFVTUExVU19BUEkgMQorIyAgICAgICBk
ZWZpbmUgVV9TSE9XX0NQTFVTUExVU19BUEkgMAogIyAgIGVuZGlmCiAjZWxzZQogIyAgIHVuZGVm
IFVfU0hPV19DUExVU1BMVVNfQVBJCkBAIC0xMzcsNyArMTM5LDcgQEAKICNkZWZpbmUgVV9JQ1VE
QVRBX05BTUUgICAgImljdWR0IiBVX0lDVV9WRVJTSU9OX1NIT1JUIFVfSUNVREFUQV9UWVBFX0xF
VFRFUgogI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCiAjZGVmaW5lIFVfVVNSREFUQV9OQU1F
ICAgICJ1c3JkdCIgVV9JQ1VfVkVSU0lPTl9TSE9SVCBVX0lDVURBVEFfVFlQRV9MRVRURVIgIC8q
KjwgQGludGVybmFsICovCi0jZGVmaW5lIFVfVVNFX1VTUkRBVEEgICAgIDEgIC8qKjwgQGludGVy
bmFsICovCisjZGVmaW5lIFVfVVNFX1VTUkRBVEEgICAgIDAgIC8qKjwgQGludGVybmFsICovCiAj
ZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KIAogLyoqCkBAIC0xNzYsMTIgKzE3OCwx
MiBAQAogCiAvKioKICAqIFxkZWYgTlVMTAotICogRGVmaW5lIE5VTEwgaWYgbmVjZXNzYXJ5LCB0
byAwIGZvciBDKysgYW5kIHRvICgodm9pZCAqKTApIGZvciBDLgorICogRGVmaW5lIE5VTEwgaWYg
bmVjZXNzYXJ5LCB0byBudWxscHRyIGZvciBDKysgYW5kIHRvICgodm9pZCAqKTApIGZvciBDLgog
ICogQHN0YWJsZSBJQ1UgMi4wCiAgKi8KICNpZm5kZWYgTlVMTAogI2lmZGVmIF9fY3BsdXNwbHVz
Ci0jZGVmaW5lIE5VTEwgICAgMAorI2RlZmluZSBOVUxMICAgIG51bGxwdHIKICNlbHNlCiAjZGVm
aW5lIE5VTEwgICAgKCh2b2lkICopMCkKICNlbmRpZgpAQCAtMzczLDg4ICszNzUsNiBAQCB0eXBl
ZGVmIGRvdWJsZSBVRGF0ZTsKICNkZWZpbmUgVV9TVEFOREFSRF9DUFBfTkFNRVNQQUNFCiAjZW5k
aWYKIAotCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0vKiBHbG9iYWwgZGVsZXRlIG9wZXJhdG9y
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0v
Kj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PSovCi0KLS8qCi0gKiBUaGUgSUNVNEMgbGlicmFyeSBtdXN0IG5v
dCB1c2UgdGhlIGdsb2JhbCBuZXcgYW5kIGRlbGV0ZSBvcGVyYXRvcnMuCi0gKiBUaGVzZSBvcGVy
YXRvcnMgaGVyZSBhcmUgZGVmaW5lZCB0byBlbmFibGUgdGVzdGluZyBmb3IgdGhpcy4KLSAqIFNl
ZSBKaXR0ZXJidWcgMjU4MSBmb3IgZGV0YWlscyBvZiB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuCi0g
KgotICogVmVyaWZpY2F0aW9uIHRoYXQgSUNVNEMncyBtZW1vcnkgdXNhZ2UgaXMgY29ycmVjdCwg
aS5lLiwKLSAqIHRoYXQgZ2xvYmFsIG5ldy9kZWxldGUgYXJlIG5vdCB1c2VkOgotICoKLSAqIGEp
IENoZWNrIGZvciBpbXBvcnRzIG9mIGdsb2JhbCBuZXcvZGVsZXRlIChzZWUgdW9iamVjdC5jcHAg
Zm9yIGRldGFpbHMpCi0gKiBiKSBWZXJpZnkgdGhhdCBuZXcgaXMgbmV2ZXIgaW1wb3J0ZWQuCi0g
KiBjKSBWZXJpZnkgdGhhdCBkZWxldGUgaXMgb25seSBpbXBvcnRlZCBmcm9tIG9iamVjdCBjb2Rl
IGZvciBpbnRlcmZhY2UvbWl4aW4gY2xhc3Nlcy4KLSAqIGQpIEFkZCBnbG9iYWwgZGVsZXRlIGFu
ZCBkZWxldGVbXSBvbmx5IGZvciB0aGUgSUNVNEMgbGlicmFyeSBpdHNlbGYKLSAqICAgIGFuZCBk
ZWZpbmUgdGhlbSBpbiBhIHdheSB0aGF0IGNyYXNoZXMgb3Igb3RoZXJ3aXNlIGVhc2lseSBzaG93
cyBhIHByb2JsZW0uCi0gKgotICogVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGQpLgotICogVGhl
IG9wZXJhdG9yIGltcGxlbWVudGF0aW9ucyBjcmFzaDsgdGhpcyBpcyBpbnRlbnRpb25hbCBhbmQg
dXNlZCBmb3IgbGlicmFyeSBkZWJ1Z2dpbmcuCi0gKgotICogTm90ZTogVGhpcyBpcyBjdXJyZW50
bHkgb25seSBkb25lIG9uIFdpbmRvd3MgYmVjYXVzZQotICogc29tZSBMaW51eC9Vbml4IGNvbXBp
bGVycyBoYXZlIHByb2JsZW1zIHdpdGggZGVmaW5pbmcgZ2xvYmFsIG5ldy9kZWxldGUuCi0gKiBP
biBXaW5kb3dzLCBpdCBpcyBfTVNDX1ZFUj49MTIwMCBmb3IgTVNWQyA2LjAgYW5kIGhpZ2hlci4K
LSAqLwotI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmIFVfREVCVUcgJiYgVV9PVkVSUklERV9D
WFhfQUxMT0NBVElPTiAmJiAoX01TQ19WRVI+PTEyMDApICYmICFkZWZpbmVkKFVfU1RBVElDX0lN
UExFTUVOVEFUSU9OKSAmJiAoZGVmaW5lZChVX0NPTU1PTl9JTVBMRU1FTlRBVElPTikgfHwgZGVm
aW5lZChVX0kxOE5fSU1QTEVNRU5UQVRJT04pIHx8IGRlZmluZWQoVV9JT19JTVBMRU1FTlRBVElP
TikgfHwgZGVmaW5lZChVX0xBWU9VVF9JTVBMRU1FTlRBVElPTikgfHwgZGVmaW5lZChVX0xBWU9V
VEVYX0lNUExFTUVOVEFUSU9OKSkKLQotI2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCi0vKioK
LSAqIEdsb2JhbCBvcGVyYXRvciBuZXcsIGRlZmluZWQgb25seSBpbnNpZGUgSUNVNEMsIG11c3Qg
bm90IGJlIHVzZWQuCi0gKiBDcmFzaGVzIGludGVudGlvbmFsbHkuCi0gKiBAaW50ZXJuYWwKLSAq
LwotaW5saW5lIHZvaWQgKgotb3BlcmF0b3IgbmV3KHNpemVfdCAvKnNpemUqLykgewotICAgIGNo
YXIgKnE9TlVMTDsKLSAgICAqcT01OyAvKiBicmVhayBpdCAqLwotICAgIHJldHVybiBxOwotfQot
Ci0jaWZkZWYgX1JldF9ieXRlY2FwXwotLyogVGhpcyBpcyBvbmx5IG5lZWRlZCB0byBzdXBwcmVz
cyBhIFZpc3VhbCBDKysgMjAwOCB3YXJuaW5nIGZvciBvcGVyYXRvciBuZXdbXS4gKi8KLV9SZXRf
Ynl0ZWNhcF8oX1NpemUpCi0jZW5kaWYKLS8qKgotICogR2xvYmFsIG9wZXJhdG9yIG5ld1tdLCBk
ZWZpbmVkIG9ubHkgaW5zaWRlIElDVTRDLCBtdXN0IG5vdCBiZSB1c2VkLgotICogQ3Jhc2hlcyBp
bnRlbnRpb25hbGx5LgotICogQGludGVybmFsCi0gKi8KLWlubGluZSB2b2lkICoKLW9wZXJhdG9y
IG5ld1tdKHNpemVfdCAvKnNpemUqLykgewotICAgIGNoYXIgKnE9TlVMTDsKLSAgICAqcT01OyAv
KiBicmVhayBpdCAqLwotICAgIHJldHVybiBxOwotfQotCi0vKioKLSAqIEdsb2JhbCBvcGVyYXRv
ciBkZWxldGUsIGRlZmluZWQgb25seSBpbnNpZGUgSUNVNEMsIG11c3Qgbm90IGJlIHVzZWQuCi0g
KiBDcmFzaGVzIGludGVudGlvbmFsbHkuCi0gKiBAaW50ZXJuYWwKLSAqLwotaW5saW5lIHZvaWQK
LW9wZXJhdG9yIGRlbGV0ZSh2b2lkICogLypwKi8pIHsKLSAgICBjaGFyICpxPU5VTEw7Ci0gICAg
KnE9NTsgLyogYnJlYWsgaXQgKi8KLX0KLQotLyoqCi0gKiBHbG9iYWwgb3BlcmF0b3IgZGVsZXRl
W10sIGRlZmluZWQgb25seSBpbnNpZGUgSUNVNEMsIG11c3Qgbm90IGJlIHVzZWQuCi0gKiBDcmFz
aGVzIGludGVudGlvbmFsbHkuCi0gKiBAaW50ZXJuYWwKLSAqLwotaW5saW5lIHZvaWQKLW9wZXJh
dG9yIGRlbGV0ZVtdKHZvaWQgKiAvKnAqLykgewotICAgIGNoYXIgKnE9TlVMTDsKLSAgICAqcT01
OyAvKiBicmVhayBpdCAqLwotfQotCi0jZW5kaWYgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwot
I2VuZGlmCi0KIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIC8qIFVFcnJvckNvZGUgKi8KIC8qPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ki8KQEAgLTQ5OSw4ICs0MTksMTMgQEAgdHlwZWRlZiBlbnVtIFVFcnJv
ckNvZGUgewogICAgIAogICAgIFVfUExVR0lOX0NIQU5HRURfTEVWRUxfV0FSTklORyA9IC0xMjAs
IC8qKjwgQSBwbHVnaW4gY2F1c2VkIGEgbGV2ZWwgY2hhbmdlLiBNYXkgbm90IGJlIGFuIGVycm9y
LCBidXQgbGF0ZXIgcGx1Z2lucyBtYXkgbm90IGxvYWQuICovCiAKLSAgICBVX0VSUk9SX1dBUk5J
TkdfTElNSVQsICAgICAgICAgICAgICAvKio8IFRoaXMgbXVzdCBhbHdheXMgYmUgdGhlIGxhc3Qg
d2FybmluZyB2YWx1ZSB0byBpbmRpY2F0ZSB0aGUgbGltaXQgZm9yIFVFcnJvckNvZGUgd2Fybmlu
Z3MgKGxhc3Qgd2FybmluZyBjb2RlICsxKSAqLwotCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVE
X0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIFVF
cnJvckNvZGUgd2FybmluZyB2YWx1ZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51
bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4K
KyAgICAgKi8KKyAgICBVX0VSUk9SX1dBUk5JTkdfTElNSVQsCisjZW5kaWYgIC8vIFVfSElERV9E
RVBSRUNBVEVEX0FQSQogCiAgICAgVV9aRVJPX0VSUk9SICAgICAgICAgICAgICA9ICAwLCAgICAg
LyoqPCBObyBlcnJvciwgbm8gd2FybmluZy4gKi8KIApAQCAtNTM2LDkgKzQ2MSwxNiBAQCB0eXBl
ZGVmIGVudW0gVUVycm9yQ29kZSB7CiAgICAgVV9VU0VMRVNTX0NPTExBVE9SX0VSUk9SICA9IDI5
LCAgICAgLyoqPCBDb2xsYXRvciBpcyBvcHRpb25zIG9ubHkgYW5kIG5vIGJhc2UgaXMgc3BlY2lm
aWVkICovCiAgICAgVV9OT19XUklURV9QRVJNSVNTSU9OICAgICA9IDMwLCAgICAgLyoqPCBBdHRl
bXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgb3IgY29uc3RhbnQgZGF0YS4gKi8KIAotICAgIFVfU1RB
TkRBUkRfRVJST1JfTElNSVQsICAgICAgICAgICAgIC8qKjwgVGhpcyBtdXN0IGFsd2F5cyBiZSB0
aGUgbGFzdCB2YWx1ZSB0byBpbmRpY2F0ZSB0aGUgbGltaXQgZm9yIHN0YW5kYXJkIGVycm9ycyAq
LworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9y
ZSB0aGFuIHRoZSBoaWdoZXN0IHN0YW5kYXJkIGVycm9yIGNvZGUuCisgICAgICogQGRlcHJlY2F0
ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNV
IHRpY2tldCAjMTI0MjAuCisgICAgICovCisgICAgVV9TVEFOREFSRF9FUlJPUl9MSU1JVCwKKyNl
bmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCisKICAgICAvKgotICAgICAqIHRoZSBlcnJv
ciBjb2RlIHJhbmdlIDB4MTAwMDAgMHgxMDEwMCBhcmUgcmVzZXJ2ZWQgZm9yIFRyYW5zbGl0ZXJh
dG9yCisgICAgICogRXJyb3IgY29kZXMgaW4gdGhlIHJhbmdlIDB4MTAwMDAgMHgxMDEwMCBhcmUg
cmVzZXJ2ZWQgZm9yIFRyYW5zbGl0ZXJhdG9yLgogICAgICAqLwogICAgIFVfQkFEX1ZBUklBQkxF
X0RFRklOSVRJT049MHgxMDAwMCwvKio8IE1pc3NpbmcgJyQnIG9yIGR1cGxpY2F0ZSB2YXJpYWJs
ZSBuYW1lICovCiAgICAgVV9QQVJTRV9FUlJPUl9TVEFSVCA9IDB4MTAwMDAsICAgIC8qKjwgU3Rh
cnQgb2YgVHJhbnNsaXRlcmF0b3IgZXJyb3JzICovCkBAIC01NzYsMTAgKzUwOCwxNiBAQCB0eXBl
ZGVmIGVudW0gVUVycm9yQ29kZSB7CiAgICAgVV9JTlRFUk5BTF9UUkFOU0xJVEVSQVRPUl9FUlJP
UiwgIC8qKjwgSW50ZXJuYWwgdHJhbnNsaXRlcmF0b3Igc3lzdGVtIGVycm9yICovCiAgICAgVV9J
TlZBTElEX0lELCAgICAgICAgICAgICAgICAgICAgIC8qKjwgQSAiOjppZCIgcnVsZSBzcGVjaWZp
ZXMgYW4gdW5rbm93biB0cmFuc2xpdGVyYXRvciAqLwogICAgIFVfSU5WQUxJRF9GVU5DVElPTiwg
ICAgICAgICAgICAgICAvKio8IEEgIiZmbigpIiBydWxlIHNwZWNpZmllcyBhbiB1bmtub3duIHRy
YW5zbGl0ZXJhdG9yICovCi0gICAgVV9QQVJTRV9FUlJPUl9MSU1JVCwgICAgICAgICAgICAgIC8q
KjwgVGhlIGxpbWl0IGZvciBUcmFuc2xpdGVyYXRvciBlcnJvcnMgKi8KKyNpZm5kZWYgVV9ISURF
X0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVz
dCBub3JtYWwgVHJhbnNsaXRlcmF0b3IgZXJyb3IgY29kZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJ
Q1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlj
a2V0ICMxMjQyMC4KKyAgICAgKi8KKyAgICBVX1BBUlNFX0VSUk9SX0xJTUlULAorI2VuZGlmICAv
LyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIAogICAgIC8qCi0gICAgICogdGhlIGVycm9yIGNvZGUg
cmFuZ2UgMHgxMDEwMCAweDEwMjAwIGFyZSByZXNlcnZlZCBmb3IgZm9ybWF0dGluZyBBUEkgcGFy
c2luZyBlcnJvcgorICAgICAqIEVycm9yIGNvZGVzIGluIHRoZSByYW5nZSAweDEwMTAwIDB4MTAy
MDAgYXJlIHJlc2VydmVkIGZvciB0aGUgZm9ybWF0dGluZyBBUEkuCiAgICAgICovCiAgICAgVV9V
TkVYUEVDVEVEX1RPS0VOPTB4MTAxMDAsICAgICAgIC8qKjwgU3ludGF4IGVycm9yIGluIGZvcm1h
dCBwYXR0ZXJuICovCiAgICAgVV9GTVRfUEFSU0VfRVJST1JfU1RBUlQ9MHgxMDEwMCwgIC8qKjwg
U3RhcnQgb2YgZm9ybWF0IGxpYnJhcnkgZXJyb3JzICovCkBAIC02MDEsMTAgKzUzOSwxNiBAQCB0
eXBlZGVmIGVudW0gVUVycm9yQ29kZSB7CiAgICAgVV9ERUZBVUxUX0tFWVdPUkRfTUlTU0lORywg
ICAgICAgIC8qKjwgTWlzc2luZyBERUZBVUxUIHJ1bGUgaW4gcGx1cmFsIHJ1bGVzICovCiAgICAg
VV9ERUNJTUFMX05VTUJFUl9TWU5UQVhfRVJST1IsICAgIC8qKjwgRGVjaW1hbCBudW1iZXIgc3lu
dGF4IGVycm9yICovCiAgICAgVV9GT1JNQVRfSU5FWEFDVF9FUlJPUiwgICAgICAgICAgIC8qKjwg
Q2Fubm90IGZvcm1hdCBhIG51bWJlciBleGFjdGx5IGFuZCByb3VuZGluZyBtb2RlIGlzIFJPVU5E
X1VOTkVDRVNTQVJZIEBzdGFibGUgSUNVIDQuOCAqLwotICAgIFVfRk1UX1BBUlNFX0VSUk9SX0xJ
TUlULCAgICAgICAgICAvKio8IFRoZSBsaW1pdCBmb3IgZm9ybWF0IGxpYnJhcnkgZXJyb3JzICov
CisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3Jl
IHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIGZvcm1hdHRpbmcgQVBJIGVycm9yIGNvZGUuCisgICAg
ICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVlIG1heSBjaGFuZ2Ugb3ZlciB0
aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCisgICAgVV9GTVRfUEFSU0VfRVJS
T1JfTElNSVQsCisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogCiAgICAgLyoKLSAg
ICAgKiB0aGUgZXJyb3IgY29kZSByYW5nZSAweDEwMjAwIDB4MTAyZmYgYXJlIHJlc2VydmVkIGZv
ciBCcmVhayBJdGVyYXRvciByZWxhdGVkIGVycm9yCisgICAgICogRXJyb3IgY29kZXMgaW4gdGhl
IHJhbmdlIDB4MTAyMDAgMHgxMDJmZiBhcmUgcmVzZXJ2ZWQgZm9yIEJyZWFrSXRlcmF0b3IuCiAg
ICAgICovCiAgICAgVV9CUktfSU5URVJOQUxfRVJST1I9MHgxMDIwMCwgICAgICAgICAgLyoqPCBB
biBpbnRlcm5hbCBlcnJvciAoYnVnKSB3YXMgZGV0ZWN0ZWQuICAgICAgICAgICAgICovCiAgICAg
VV9CUktfRVJST1JfU1RBUlQ9MHgxMDIwMCwgICAgICAgICAgICAgLyoqPCBTdGFydCBvZiBjb2Rl
cyBpbmRpY2F0aW5nIEJyZWFrIEl0ZXJhdG9yIGZhaWx1cmVzICovCkBAIC02MjEsMTAgKzU2NSwx
NiBAQCB0eXBlZGVmIGVudW0gVUVycm9yQ29kZSB7CiAgICAgVV9CUktfUlVMRV9FTVBUWV9TRVQs
ICAgICAgICAgICAgICAgICAgLyoqPCBSdWxlIGNvbnRhaW5zIGFuIGVtcHR5IFVuaWNvZGUgU2V0
LiAgICAgICAgICAgICAgICovCiAgICAgVV9CUktfVU5SRUNPR05JWkVEX09QVElPTiwgICAgICAg
ICAgICAgLyoqPCAhIW9wdGlvbiBpbiBSQkJJIHJ1bGVzIG5vdCByZWNvZ25pemVkLiAgICAgICAg
ICAgICovCiAgICAgVV9CUktfTUFMRk9STUVEX1JVTEVfVEFHLCAgICAgICAgICAgICAgLyoqPCBU
aGUge25ubn0gdGFnIG9uIGEgcnVsZSBpcyBtYWwgZm9ybWVkICAgICAgICAgICAgICovCi0gICAg
VV9CUktfRVJST1JfTElNSVQsICAgICAgICAgICAgICAgICAgICAgLyoqPCBUaGlzIG11c3QgYWx3
YXlzIGJlIHRoZSBsYXN0IHZhbHVlIHRvIGluZGljYXRlIHRoZSBsaW1pdCBmb3IgQnJlYWsgSXRl
cmF0b3IgZmFpbHVyZXMgKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoq
CisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgQnJlYWtJdGVyYXRvciBl
cnJvciBjb2RlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBt
YXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0aWNrZXQgIzEyNDIwLgorICAgICAqLworICAg
IFVfQlJLX0VSUk9SX0xJTUlULAorI2VuZGlmICAvLyBVX0hJREVfREVQUkVDQVRFRF9BUEkKIAog
ICAgIC8qCi0gICAgICogVGhlIGVycm9yIGNvZGVzIGluIHRoZSByYW5nZSAweDEwMzAwLTB4MTAz
ZmYgYXJlIHJlc2VydmVkIGZvciByZWd1bGFyIGV4cHJlc3Npb24gcmVsYXRlZCBlcnJycworICAg
ICAqIEVycm9yIGNvZGVzIGluIHRoZSByYW5nZSAweDEwMzAwLTB4MTAzZmYgYXJlIHJlc2VydmVk
IGZvciByZWd1bGFyIGV4cHJlc3Npb24gcmVsYXRlZCBlcnJvcnMuCiAgICAgICovCiAgICAgVV9S
RUdFWF9JTlRFUk5BTF9FUlJPUj0weDEwMzAwLCAgICAgICAvKio8IEFuIGludGVybmFsIGVycm9y
IChidWcpIHdhcyBkZXRlY3RlZC4gICAgICAgICAgICAgICovCiAgICAgVV9SRUdFWF9FUlJPUl9T
VEFSVD0weDEwMzAwLCAgICAgICAgICAvKio8IFN0YXJ0IG9mIGNvZGVzIGluZGljYXRpbmcgUmVn
ZXhwIGZhaWx1cmVzICAgICAgICAgICovCkBAIC02NDksMTQgKzU5OSwxOCBAQCB0eXBlZGVmIGVu
dW0gVUVycm9yQ29kZSB7CiAgICAgVV9SRUdFWF9TVEFDS19PVkVSRkxPVywgICAgICAgICAgICAg
ICAvKio8IFJlZ3VsYXIgZXhwcmVzc2lvbiBiYWNrdHJhY2sgc3RhY2sgb3ZlcmZsb3cuICAgICAg
ICovCiAgICAgVV9SRUdFWF9USU1FX09VVCwgICAgICAgICAgICAgICAgICAgICAvKio8IE1heGlt
dW0gYWxsb3dlZCBtYXRjaCB0aW1lIGV4Y2VlZGVkICAgICAgICAgICAgICAgICovCiAgICAgVV9S
RUdFWF9TVE9QUEVEX0JZX0NBTExFUiwgICAgICAgICAgICAvKio8IE1hdGNoaW5nIG9wZXJhdGlv
biBhYm9ydGVkIGJ5IHVzZXIgY2FsbGJhY2sgZm4uICAgICovCi0jaWZuZGVmIFVfSElERV9EUkFG
VF9BUEkKLSAgICBVX1JFR0VYX1BBVFRFUk5fVE9PX0JJRywgICAgICAgICAgICAgIC8qKjwgUGF0
dGVybiBleGNlZWRzIGxpbWl0cyBvbiBzaXplIG9yIGNvbXBsZXhpdHkuIEBkcmFmdCBJQ1UgNTUg
Ki8KLSAgICBVX1JFR0VYX0lOVkFMSURfQ0FQVFVSRV9HUk9VUF9OQU1FLCAgIC8qKjwgSW52YWxp
ZCBjYXB0dXJlIGdyb3VwIG5hbWUuIEBkcmFmdCBJQ1UgNTUgKi8KLSNlbmRpZiAgLyogVV9ISURF
X0RSQUZUX0FQSSAqLwotICAgIFVfUkVHRVhfRVJST1JfTElNSVQ9VV9SRUdFWF9TVE9QUEVEX0JZ
X0NBTExFUiszLCAvKio8IFRoaXMgbXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgdmFsdWUgdG8gaW5k
aWNhdGUgdGhlIGxpbWl0IGZvciByZWdleHAgZXJyb3JzICovCisgICAgVV9SRUdFWF9QQVRURVJO
X1RPT19CSUcsICAgICAgICAgICAgICAvKio8IFBhdHRlcm4gZXhjZWVkcyBsaW1pdHMgb24gc2l6
ZSBvciBjb21wbGV4aXR5LiBAc3RhYmxlIElDVSA1NSAqLworICAgIFVfUkVHRVhfSU5WQUxJRF9D
QVBUVVJFX0dST1VQX05BTUUsICAgLyoqPCBJbnZhbGlkIGNhcHR1cmUgZ3JvdXAgbmFtZS4gQHN0
YWJsZSBJQ1UgNTUgKi8KKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisgICAgLyoqCisg
ICAgICogT25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBub3JtYWwgcmVndWxhciBleHByZXNzaW9u
IGVycm9yIGNvZGUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDU4IFRoZSBudW1lcmljIHZhbHVl
IG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCBzZWUgSUNVIHRpY2tldCAjMTI0MjAuCisgICAgICovCisg
ICAgVV9SRUdFWF9FUlJPUl9MSU1JVD1VX1JFR0VYX1NUT1BQRURfQllfQ0FMTEVSKzMsCisjZW5k
aWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogCiAgICAgLyoKLSAgICAgKiBUaGUgZXJyb3Ig
Y29kZSBpbiB0aGUgcmFuZ2UgMHgxMDQwMC0weDEwNGZmIGFyZSByZXNlcnZlZCBmb3IgSUROQSBy
ZWxhdGVkIGVycm9yIGNvZGVzCisgICAgICogRXJyb3IgY29kZXMgaW4gdGhlIHJhbmdlIDB4MTA0
MDAtMHgxMDRmZiBhcmUgcmVzZXJ2ZWQgZm9yIElETkEgcmVsYXRlZCBlcnJvciBjb2Rlcy4KICAg
ICAgKi8KICAgICBVX0lETkFfUFJPSElCSVRFRF9FUlJPUj0weDEwNDAwLAogICAgIFVfSUROQV9F
UlJPUl9TVEFSVD0weDEwNDAwLApAQCAtNjY4LDcgKzYyMiwxMyBAQCB0eXBlZGVmIGVudW0gVUVy
cm9yQ29kZSB7CiAgICAgVV9JRE5BX0xBQkVMX1RPT19MT05HX0VSUk9SLAogICAgIFVfSUROQV9a
RVJPX0xFTkdUSF9MQUJFTF9FUlJPUiwKICAgICBVX0lETkFfRE9NQUlOX05BTUVfVE9PX0xPTkdf
RVJST1IsCisjaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9u
ZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3Qgbm9ybWFsIElETkEgZXJyb3IgY29kZS4KKyAgICAgKiBA
ZGVwcmVjYXRlZCBJQ1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUs
IHNlZSBJQ1UgdGlja2V0ICMxMjQyMC4KKyAgICAgKi8KICAgICBVX0lETkFfRVJST1JfTElNSVQs
CisjZW5kaWYgIC8vIFVfSElERV9ERVBSRUNBVEVEX0FQSQogICAgIC8qCiAgICAgICogQWxpYXNl
cyBmb3IgU3RyaW5nUHJlcAogICAgICAqLwpAQCAtNjc3LDE0ICs2MzcsMjYgQEAgdHlwZWRlZiBl
bnVtIFVFcnJvckNvZGUgewogICAgIFVfU1RSSU5HUFJFUF9DSEVDS19CSURJX0VSUk9SID0gVV9J
RE5BX0NIRUNLX0JJRElfRVJST1IsCiAgICAgCiAgICAgLyoKLSAgICAgKiBUaGUgZXJyb3IgY29k
ZSBpbiB0aGUgcmFuZ2UgMHgxMDUwMC0weDEwNWZmIGFyZSByZXNlcnZlZCBmb3IgUGx1Z2luIHJl
bGF0ZWQgZXJyb3IgY29kZXMKKyAgICAgKiBFcnJvciBjb2RlcyBpbiB0aGUgcmFuZ2UgMHgxMDUw
MC0weDEwNWZmIGFyZSByZXNlcnZlZCBmb3IgUGx1Z2luIHJlbGF0ZWQgZXJyb3IgY29kZXMuCiAg
ICAgICovCiAgICAgVV9QTFVHSU5fRVJST1JfU1RBUlQ9MHgxMDUwMCwgICAgICAgICAvKio8IFN0
YXJ0IG9mIGNvZGVzIGluZGljYXRpbmcgcGx1Z2luIGZhaWx1cmVzICovCiAgICAgVV9QTFVHSU5f
VE9PX0hJR0g9MHgxMDUwMCwgICAgICAgICAgICAvKio8IFRoZSBwbHVnaW4ncyBsZXZlbCBpcyB0
b28gaGlnaCB0byBiZSBsb2FkZWQgcmlnaHQgbm93LiAqLwogICAgIFVfUExVR0lOX0RJRE5UX1NF
VF9MRVZFTCwgICAgICAgICAgICAgLyoqPCBUaGUgcGx1Z2luIGRpZG4ndCBjYWxsIHVwbHVnX3Nl
dFBsdWdMZXZlbCBpbiByZXNwb25zZSB0byBhIFFVRVJZICovCi0gICAgVV9QTFVHSU5fRVJST1Jf
TElNSVQsICAgICAgICAgICAgICAgICAvKio8IFRoaXMgbXVzdCBhbHdheXMgYmUgdGhlIGxhc3Qg
dmFsdWUgdG8gaW5kaWNhdGUgdGhlIGxpbWl0IGZvciBwbHVnaW4gZXJyb3JzICovCisjaWZuZGVm
IFVfSElERV9ERVBSRUNBVEVEX0FQSQorICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhl
IGhpZ2hlc3Qgbm9ybWFsIHBsdWctaW4gZXJyb3IgY29kZS4KKyAgICAgKiBAZGVwcmVjYXRlZCBJ
Q1UgNTggVGhlIG51bWVyaWMgdmFsdWUgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHNlZSBJQ1UgdGlj
a2V0ICMxMjQyMC4KKyAgICAgKi8KKyAgICBVX1BMVUdJTl9FUlJPUl9MSU1JVCwKKyNlbmRpZiAg
Ly8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiAKLSAgICBVX0VSUk9SX0xJTUlUPVVfUExVR0lOX0VS
Uk9SX0xJTUlUICAgICAgLyoqPCBUaGlzIG11c3QgYWx3YXlzIGJlIHRoZSBsYXN0IHZhbHVlIHRv
IGluZGljYXRlIHRoZSBsaW1pdCBmb3IgVUVycm9yQ29kZSAobGFzdCBlcnJvciBjb2RlICsxKSAq
LworI2lmbmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyAgICAvKioKKyAgICAgKiBPbmUgbW9y
ZSB0aGFuIHRoZSBoaWdoZXN0IG5vcm1hbCBlcnJvciBjb2RlLgorICAgICAqIEBkZXByZWNhdGVk
IElDVSA1OCBUaGUgbnVtZXJpYyB2YWx1ZSBtYXkgY2hhbmdlIG92ZXIgdGltZSwgc2VlIElDVSB0
aWNrZXQgIzEyNDIwLgorICAgICAqLworICAgIFVfRVJST1JfTElNSVQ9VV9QTFVHSU5fRVJST1Jf
TElNSVQKKyNlbmRpZiAgLy8gVV9ISURFX0RFUFJFQ0FURURfQVBJCiB9IFVFcnJvckNvZGU7CiAK
IC8qIFVzZSB0aGUgZm9sbG93aW5nIHRvIGRldGVybWluZSBpZiBhbiBVRXJyb3JDb2RlIHJlcHJl
c2VudHMgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXZlcm51bS5oIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS91dmVybnVtLmgKaW5kZXggM2UyZWZmNjMxYzEwNTg1OTQw
MGMyZDcwMmM1Mzg3Njg5NGJjYjA0Ny4uZDkwNWEwZjUwZDFkMjkyYTYwYzMzZGIwYTYyNTk4YTQ3
MjZlNTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91dmVybnVtLmgKKysr
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dmVybnVtLmgKQEAgLTEsMTEgKzEsMTMgQEAKKy8v
IMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhlcnMuCisvLyBMaWNlbnNl
ICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL2NvcHlyaWdodC5odG1sCiAv
KgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgIENvcHlyaWdodCAoQykgMjAwMC0yMDE1LCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29weXJpZ2h0IChDKSAyMDAwLTIw
MTYsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKICogICBDb3Jwb3JhdGlvbiBhbmQg
b3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoK
ICogICBmaWxlIG5hbWU6ICB1dmVybnVtLmgKLSogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAg
IGVuY29kaW5nOiAgIFVURi04CiAqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCiAqICAgaW5k
ZW50YXRpb246NAogKgpAQCAtMzIsMTMgKzM0LDEyIEBACiAgICogIGJ5IHJ1bm5pbmcgdGhlIFVO
SVggbWFrZWZpbGUgdGFyZ2V0ICd1cGRhdGUtd2luZG93cy1tYWtlZmlsZXMnIGluIGljdS9zb3Vy
Y2UuCiAgICoKICAgKgotICAqIHNvdXJjZS9jb21tb24vY29tbW9uLnZjcHJvaiAtIHVwZGF0ZSAn
T3V0cHV0IGZpbGUgbmFtZScgb24gdGhlIGxpbmsgdGFiIHNvCisgICogc291cmNlL2NvbW1vbi9j
b21tb24udmN4cHJvaiAtIHVwZGF0ZSAnT3V0cHV0IGZpbGUgbmFtZScgb24gdGhlIGxpbmsgdGFi
IHNvCiAgICogICAgICAgICAgICAgICAgICAgdGhhdCBpdCBjb250YWlucyB0aGUgbmV3IG1ham9y
L21pbm9yIGNvbWJpbmF0aW9uCi0gICogc291cmNlL2kxOG4vaTE4bi52Y3Byb2ogLSBzYW1lIGFz
IGZvciB0aGUgY29tbW9uLnZjcHJvagotICAqIHNvdXJjZS9sYXlvdXQvbGF5b3V0LnZjcHJvaiAt
IHNhbWUgYXMgZm9yIHRoZSBjb21tb24udmNwcm9qCisgICogc291cmNlL2kxOG4vaTE4bi52Y3hw
cm9qIC0gc2FtZSBhcyBmb3IgdGhlIGNvbW1vbi52Y3hwcm9qCiAgICogc291cmNlL2xheW91dGV4
L2xheW91dGV4LnZjcHJvaiAtIHNhbWUKLSAgKiBzb3VyY2Uvc3R1YmRhdGEvc3R1YmRhdGEudmNw
cm9qIC0gc2FtZSBhcyBmb3IgdGhlIGNvbW1vbi52Y3Byb2oKLSAgKiBzb3VyY2UvaW8vaW8udmNw
cm9qIC0gc2FtZSBhcyBmb3IgdGhlIGNvbW1vbi52Y3Byb2oKKyAgKiBzb3VyY2Uvc3R1YmRhdGEv
c3R1YmRhdGEudmNwcm9qIC0gc2FtZSBhcyBmb3IgdGhlIGNvbW1vbi52Y3hwcm9qCisgICogc291
cmNlL2lvL2lvLnZjcHJvaiAtIHNhbWUgYXMgZm9yIHRoZSBjb21tb24udmN4cHJvagogICAqIHNv
dXJjZS9kYXRhL21ha2VkYXRhLm1hayAtIGNoYW5nZSBVX0lDVURBVEFfTkFNRSBzbyB0aGF0IGl0
IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyBtYWpvci9t
aW5vciBjb21iaW5hdGlvbiBhbmQgdGhlIFVuaWNvZGUgdmVyc2lvbi4KICAgKi8KQEAgLTUxLDE5
ICs1MiwxOSBAQAogICogIEBzdGFibGUgSUNVIDIuNAogICovCiAjZGVmaW5lIFVfQ09QWVJJR0hU
X1NUUklORyBcCi0gICIgQ29weXJpZ2h0IChDKSAyMDE1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNz
IE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICIK
KyAgIiBDb3B5cmlnaHQgKEMpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFuZCBvdGhl
cnMuIExpY2Vuc2UgJiB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY29weXJp
Z2h0Lmh0bWwgIgogCiAvKiogVGhlIGN1cnJlbnQgSUNVIG1ham9yIHZlcnNpb24gYXMgYW4gaW50
ZWdlci4KICAqICBUaGlzIHZhbHVlIHdpbGwgY2hhbmdlIGluIHRoZSBzdWJzZXF1ZW50IHJlbGVh
c2VzIG9mIElDVQogICogIEBzdGFibGUgSUNVIDIuNAogICovCi0jZGVmaW5lIFVfSUNVX1ZFUlNJ
T05fTUFKT1JfTlVNIDU1CisjZGVmaW5lIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNIDYwCiAKIC8q
KiBUaGUgY3VycmVudCBJQ1UgbWlub3IgdmVyc2lvbiBhcyBhbiBpbnRlZ2VyLgogICogIFRoaXMg
dmFsdWUgd2lsbCBjaGFuZ2UgaW4gdGhlIHN1YnNlcXVlbnQgcmVsZWFzZXMgb2YgSUNVCiAgKiAg
QHN0YWJsZSBJQ1UgMi42CiAgKi8KLSNkZWZpbmUgVV9JQ1VfVkVSU0lPTl9NSU5PUl9OVU0gMQor
I2RlZmluZSBVX0lDVV9WRVJTSU9OX01JTk9SX05VTSAyCiAKIC8qKiBUaGUgY3VycmVudCBJQ1Ug
cGF0Y2hsZXZlbCB2ZXJzaW9uIGFzIGFuIGludGVnZXIuCiAgKiAgVGhpcyB2YWx1ZSB3aWxsIGNo
YW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKQEAgLTgzLDcgKzg0LDcgQEAK
ICAqICBUaGlzIHZhbHVlIHdpbGwgY2hhbmdlIGluIHRoZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9m
IElDVQogICogIEBzdGFibGUgSUNVIDIuNgogICovCi0jZGVmaW5lIFVfSUNVX1ZFUlNJT05fU1VG
RklYIF81NQorI2RlZmluZSBVX0lDVV9WRVJTSU9OX1NVRkZJWCBfNjAKIAogLyoqCiAgKiBcZGVm
IFVfREVGMl9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FCkBAIC0xMTgsMTkgKzExOSwxOSBAQAogICog
IFRoaXMgdmFsdWUgd2lsbCBjaGFuZ2UgaW4gdGhlIHN1YnNlcXVlbnQgcmVsZWFzZXMgb2YgSUNV
CiAgKiAgQHN0YWJsZSBJQ1UgMi40CiAgKi8KLSNkZWZpbmUgVV9JQ1VfVkVSU0lPTiAiNTUuMSIK
KyNkZWZpbmUgVV9JQ1VfVkVSU0lPTiAiNjAuMiIKIAogLyoqIFRoZSBjdXJyZW50IElDVSBsaWJy
YXJ5IG1ham9yL21pbm9yIHZlcnNpb24gYXMgYSBzdHJpbmcgd2l0aG91dCBkb3RzLCBmb3IgbGli
cmFyeSBuYW1lIHN1ZmZpeGVzLgogICogIFRoaXMgdmFsdWUgd2lsbCBjaGFuZ2UgaW4gdGhlIHN1
YnNlcXVlbnQgcmVsZWFzZXMgb2YgSUNVCiAgKiAgQHN0YWJsZSBJQ1UgMi42CiAgKi8KLSNkZWZp
bmUgVV9JQ1VfVkVSU0lPTl9TSE9SVCAiNTUiCisjZGVmaW5lIFVfSUNVX1ZFUlNJT05fU0hPUlQg
IjYwIgogCiAjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKIC8qKiBEYXRhIHZlcnNpb24gaW4g
SUNVNEMuCiAgKiBAaW50ZXJuYWwgSUNVIDQuNCBJbnRlcm5hbCBVc2UgT25seQogICoqLwotI2Rl
ZmluZSBVX0lDVV9EQVRBX1ZFUlNJT04gIjU1LjEiCisjZGVmaW5lIFVfSUNVX0RBVEFfVkVSU0lP
TiAiNjAuMiIKICNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwogCiAvKj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9pY3UvdW5pY29kZS91dmVyc2lvbi5o
IGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dmVyc2lvbi5oCmluZGV4IDc0ZTMwOTEwNTUxNGFk
ZjM4MjM3YTNiN2E0MDk4MDFhODE1YTVkNTYuLmUyNDA2OGQwZjk1M2FjOTRlZDQ0ODQzOWFlNzA2
YTYwZWI4YTY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXZlcnNpb24u
aAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3V2ZXJzaW9uLmgKQEAgLTEsMyArMSw1IEBA
CisvLyDCqSAyMDE2IGFuZCBsYXRlcjogVW5pY29kZSwgSW5jLiBhbmQgb3RoZXJzLgorLy8gTGlj
ZW5zZSAmIHRlcm1zIG9mIHVzZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9jb3B5cmlnaHQuaHRt
bAogLyoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAx
MSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwpAQCAtNSw3ICs3LDcgQEAKICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKICoKICogICBmaWxlIG5hbWU6ICB1dmVyc2lvbi5oCi0qICAgZW5j
b2Rpbmc6ICAgVVMtQVNDSUkKKyogICBlbmNvZGluZzogICBVVEYtOAogKiAgIHRhYiBzaXplOiAg
IDggKG5vdCB1c2VkKQogKiAgIGluZGVudGF0aW9uOjQKICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvaWN1L3VuaWNvZGUvdnR6b25lLmggYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3Z0em9uZS5o
CmluZGV4IDkyODE3YmExNmJhZWRhZGFiODllMWJkNWQ5Y2NmYzczODdmNmY5NTguLjE4MjY1ZDM0
MTUwNWNiMGE2M2EyOTIyMjQwMDNiM2FlNzA4ZjQ3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
aWN1L3VuaWNvZGUvdnR6b25lLmgKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS92dHpvbmUu
aApAQCAtMSwzICsxLDUgQEAKKy8vIMKpIDIwMTYgYW5kIGxhdGVyOiBVbmljb2RlLCBJbmMuIGFu
ZCBvdGhlcnMuCisvLyBMaWNlbnNlICYgdGVybXMgb2YgdXNlOiBodHRwOi8vd3d3LnVuaWNvZGUu
b3JnL2NvcHlyaWdodC5odG1sCiAvKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmln
aHQgKEMpIDIwMDctMjAxMywgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3Jh
dGlvbiBhbmQK
</data>
<flag name="review"
          id="358299"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="358300"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>