<?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>231082</bug_id>
          
          <creation_ts>2021-10-01 08:51:54 -0700</creation_ts>
          <short_desc>[WebIDL] Support [Exposed=*] extended attribute</short_desc>
          <delta_ts>2021-11-02 20:08:21 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Caitlin Potter (:caitp)">caitp</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1799319</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-10-01 08:51:54 -0700</bug_when>
    <thetext>[WebIDL] Support [Exposed=*] extended attribute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799323</commentid>
    <comment_count>1</comment_count>
      <attachid>439866</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-10-01 08:56:07 -0700</bug_when>
    <thetext>Created attachment 439866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799324</commentid>
    <comment_count>2</comment_count>
      <attachid>439866</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-01 09:00:45 -0700</bug_when>
    <thetext>Comment on attachment 439866
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        https://github.com/heycam/webidl/pull/526 for details.

Seems this has not landed yet. We should probably wait a bit before adding support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799326</commentid>
    <comment_count>3</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-10-01 09:04:20 -0700</bug_when>
    <thetext>&gt; See https://github.com/heycam/webidl/issues/468 and https://github.com/heycam/webidl/pull/526 for details.

This is pretty much just a shorthand which doesn&apos;t change any semantics really, and there seems to be some agreement on the syntax.

We want this to make it look nice and brief to expose an interface on all interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799327</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-01 09:06:23 -0700</bug_when>
    <thetext>(In reply to Caitlin Potter (:caitp) from comment #3)
&gt; &gt; See https://github.com/heycam/webidl/issues/468 and https://github.com/heycam/webidl/pull/526 for details.
&gt; 
&gt; This is pretty much just a shorthand which doesn&apos;t change any semantics
&gt; really, and there seems to be some agreement on the syntax.
&gt; 
&gt; We want this to make it look nice and brief to expose an interface on all
&gt; interfaces.

From my reading, there is no real agreement yet. I don&apos;t think we should add non-standard things. Once the spec gets updated, I have no objection though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802087</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-08 08:52:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/84029794&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811130</commentid>
    <comment_count>6</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-02 08:49:10 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Caitlin Potter (:caitp) from comment #3)
&gt; &gt; &gt; See https://github.com/heycam/webidl/issues/468 and https://github.com/heycam/webidl/pull/526 for details.
&gt; &gt; 
&gt; &gt; This is pretty much just a shorthand which doesn&apos;t change any semantics
&gt; &gt; really, and there seems to be some agreement on the syntax.
&gt; &gt; 
&gt; &gt; We want this to make it look nice and brief to expose an interface on all
&gt; &gt; interfaces.
&gt; 
&gt; From my reading, there is no real agreement yet. I don&apos;t think we should add
&gt; non-standard things. Once the spec gets updated, I have no objection though.

Dan&apos;s PR has been merged into webidl https://github.com/whatwg/webidl/commit/59dae6fa5166ab059ba04fe6d82845c78c4a3960</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811131</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-02 08:53:44 -0700</bug_when>
    <thetext>(In reply to Caitlin Potter (:caitp) from comment #6)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; (In reply to Caitlin Potter (:caitp) from comment #3)
&gt; &gt; &gt; &gt; See https://github.com/heycam/webidl/issues/468 and https://github.com/heycam/webidl/pull/526 for details.
&gt; &gt; &gt; 
&gt; &gt; &gt; This is pretty much just a shorthand which doesn&apos;t change any semantics
&gt; &gt; &gt; really, and there seems to be some agreement on the syntax.
&gt; &gt; &gt; 
&gt; &gt; &gt; We want this to make it look nice and brief to expose an interface on all
&gt; &gt; &gt; interfaces.
&gt; &gt; 
&gt; &gt; From my reading, there is no real agreement yet. I don&apos;t think we should add
&gt; &gt; non-standard things. Once the spec gets updated, I have no objection though.
&gt; 
&gt; Dan&apos;s PR has been merged into webidl
&gt; https://github.com/whatwg/webidl/commit/
&gt; 59dae6fa5166ab059ba04fe6d82845c78c4a3960

Nice, could you please take a look at the bindings EWS failure?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811132</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-02 08:54:15 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Caitlin Potter (:caitp) from comment #6)
&gt; &gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; &gt; (In reply to Caitlin Potter (:caitp) from comment #3)
&gt; &gt; &gt; &gt; &gt; See https://github.com/heycam/webidl/issues/468 and https://github.com/heycam/webidl/pull/526 for details.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; This is pretty much just a shorthand which doesn&apos;t change any semantics
&gt; &gt; &gt; &gt; really, and there seems to be some agreement on the syntax.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; We want this to make it look nice and brief to expose an interface on all
&gt; &gt; &gt; &gt; interfaces.
&gt; &gt; &gt; 
&gt; &gt; &gt; From my reading, there is no real agreement yet. I don&apos;t think we should add
&gt; &gt; &gt; non-standard things. Once the spec gets updated, I have no objection though.
&gt; &gt; 
&gt; &gt; Dan&apos;s PR has been merged into webidl
&gt; &gt; https://github.com/whatwg/webidl/commit/
&gt; &gt; 59dae6fa5166ab059ba04fe6d82845c78c4a3960
&gt; 
&gt; Nice, could you please take a look at the bindings EWS failure?

May just need a rebaseline, I haven&apos;t checked but I bet it is related given the area of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811138</commentid>
    <comment_count>9</comment_count>
      <attachid>443095</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-02 09:00:59 -0700</bug_when>
    <thetext>Created attachment 443095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811143</commentid>
    <comment_count>10</comment_count>
      <attachid>443097</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-02 09:07:09 -0700</bug_when>
    <thetext>Created attachment 443097
Patch

Oops, missed the test failures. Rebaselined, hopefully that does it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811147</commentid>
    <comment_count>11</comment_count>
      <attachid>443097</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-02 09:14:42 -0700</bug_when>
    <thetext>Comment on attachment 443097
Patch

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

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:61
&gt; +    &quot;DedicatedWorker&quot;,

This is already implied by &quot;Worker&quot; above, no?

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:62
&gt; +    &quot;ServiceWorker&quot;,

ditto.

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:64
&gt; +    &quot;PaintWorklet&quot;,

This is already implied by &quot;Worklet&quot; above no?

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:65
&gt; +    &quot;AudioWorklet&quot;

ditto.

Because of this, I worry that an interface marked as &quot;Exposed=*&quot; will generate several properties in the ServiceWorker prototype (one on ServiceWorkerPrototype, one on WorkerPrototype).
Am I missing something?

&gt; Source/WebCore/bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp:72
&gt; +    { &quot;ExposedStar&quot;, static_cast&lt;unsigned&gt;(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsDedicatedWorkerGlobalScope_ExposedStarConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) } },

Notice that DedicatedWorkerGlobalScope now has a ExposedStar property, even though DedicatedWorkerGlobalScope is a subclass of WorkerGlobalScope...

&gt; Source/WebCore/bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:94
&gt; +    { &quot;ExposedStar&quot;, static_cast&lt;unsigned&gt;(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsWorkerGlobalScope_ExposedStarConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) } },

...And WorkerGlobalScope has the WorkerGlobalScope already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811202</commentid>
    <comment_count>12</comment_count>
      <attachid>443115</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-02 11:40:07 -0700</bug_when>
    <thetext>Created attachment 443115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811204</commentid>
    <comment_count>13</comment_count>
      <attachid>443097</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-02 11:42:09 -0700</bug_when>
    <thetext>Comment on attachment 443097
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:61
&gt;&gt; +    &quot;DedicatedWorker&quot;,
&gt; 
&gt; This is already implied by &quot;Worker&quot; above, no?

Yep -- I guess I had the idea that this could include all supported values, but I&apos;ve removed Worker/Worklet and left a comment indicating what this is used for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811207</commentid>
    <comment_count>14</comment_count>
      <attachid>443115</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-02 11:46:26 -0700</bug_when>
    <thetext>Comment on attachment 443115
Patch

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

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:61
&gt; +my @supportedGlobalContexts = (

This is the opposite of what I expected. I thought this would be &quot;Window&quot;, &quot;Worker&quot;, &quot;Worklet&quot;.
This has an impact on which prototype object the property is exposed so it is important to get right. Does the spec say which one is right (Your patch proposal or my proposal?). If not, we may want to request that the specification is clarified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811211</commentid>
    <comment_count>15</comment_count>
      <attachid>443115</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-02 11:55:10 -0700</bug_when>
    <thetext>Comment on attachment 443115
Patch

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

r=me with updated comment.

&gt;&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:61
&gt;&gt; +my @supportedGlobalContexts = (
&gt; 
&gt; This is the opposite of what I expected. I thought this would be &quot;Window&quot;, &quot;Worker&quot;, &quot;Worklet&quot;.
&gt; This has an impact on which prototype object the property is exposed so it is important to get right. Does the spec say which one is right (Your patch proposal or my proposal?). If not, we may want to request that the specification is clarified.

Ok, I just checked the spec and what you implemented seems to match the spec. The spec says &quot;only interfaces marked as &quot;[Global]&quot;. Indeed, DedicatedWorkerGlobalScope is marked as [Global] but not WorkerGlobalScope.

I think your comment should be clarified to mention that it should only contains interfaces that have the [Global] extended attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811222</commentid>
    <comment_count>16</comment_count>
      <attachid>443120</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-02 12:30:22 -0700</bug_when>
    <thetext>Created attachment 443120
Patch

Update comment to be more specific</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811324</commentid>
    <comment_count>17</comment_count>
      <attachid>443151</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-02 17:12:08 -0700</bug_when>
    <thetext>Created attachment 443151
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811330</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-02 17:52:40 -0700</bug_when>
    <thetext>commit-queue failed to commit attachment 443151 to WebKit repository. To retry, please set cq+ flag again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811358</commentid>
    <comment_count>19</comment_count>
      <attachid>443160</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-02 19:11:14 -0700</bug_when>
    <thetext>Created attachment 443160
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811363</commentid>
    <comment_count>20</comment_count>
      <attachid>443163</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-02 19:30:01 -0700</bug_when>
    <thetext>Created attachment 443163
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811373</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-02 20:08:18 -0700</bug_when>
    <thetext>Committed r285196 (243822@main): &lt;https://commits.webkit.org/243822@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443163.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439866</attachid>
            <date>2021-10-01 08:56:07 -0700</date>
            <delta_ts>2021-11-02 09:00:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231082-20211001155606.patch</filename>
            <type>text/plain</type>
            <size>58995</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFkOGM4NmQ0MmFlY2Ji
NjNjMmRiNjA5MzliNTc5YzNiZGY1OWJjNC4uMDEzZmRiZmJiOTIzZDliZjg5MzU1MTQzZWU2ZTcw
NWZmZDAxZWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTEwLTAxICBDYWl0
bG4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0
IFtFeHBvc2VkPSpdIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIHNob3J0aGFuZCB0byBleHBvc2UgaW50ZXJm
YWNlcy9hdHRyaWJ1dGVzIG9uIFdpbmRvdywgV29ya2VycyosCisgICAgICAgIGFuZCB0aGUgZm9y
dGhjb21pbmcgU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBTZWUgaHR0cHM6
Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNzdWVzLzQ2OCBhbmQKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvcHVsbC81MjYgZm9yIGRldGFpbHMuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChzaG91bGRQ
cm9wZXJ0eUJlRXhwb3NlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
Z0ZvckV4cG9zZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgor
ICAgICAgICAocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0V4cG9zZWRTdGFy
LmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2lu
ZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3Ry
dWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNFeHBvc2VkU3Rhci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBv
c2VkU3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpKU0V4cG9zZWRTdGFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNF
eHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5
cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0c0JvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3Nl
ZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVy
YXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhw
b3NlZFN0YXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRT
dGFyOjphbmFseXplSGVhcCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rh
cjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBv
c2VkU3Rhci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6d3JhcHBlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJD
b25zdHJ1Y3RvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNXb3Jr
ZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzV29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRs
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBw
bGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGw6CisKIDIwMjEt
MTAtMDEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFt
ZSBJbmxpbmVJdGVyYXRvciB0byBMZWdhY3lJbmxpbmVJdGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IGE2MDRiZmQzOTk0
ZWQyNDNiY2EzYTI1NDk4OTAzMDU1NWYwZTU2NGQuLjlhYzEyNjZkODFhYjVkY2VjODEzYTE4MTY3
MDYzNGU0OTBkZmVmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0KQEAgLTQ4OCwxMiArNDg4LDE1IEBAIHN1YiBQcm9jZXNzRGljdGlv
bmFyeVN1cHBsZW1lbnRhbERlcGVuZGVuY2llcwogfQogCiAjIEF0dHJpYnV0ZXMgLyBPcGVyYXRp
b25zIC8gQ29uc3RhbnRzIG9mIHN1cHBsZW1lbnRhbCBpbnRlcmZhY2VzIGNhbiBoYXZlIGFuIFtF
eHBvc2VkPVhYXSBhdHRyaWJ1dGUgd2hpY2ggcmVzdHJpY3RzCi0jIG9uIHdoaWNoIGdsb2JhbCBj
b250ZXh0cyB0aGV5IHNob3VsZCBiZSBleHBvc2VkLgorIyBvbiB3aGljaCBnbG9iYWwgY29udGV4
dHMgdGhleSBzaG91bGQgYmUgZXhwb3NlZC4gW0V4cG9zZWQ9Kl0gd2lsbCBleHBvc2UgdGhlIGF0
dHJpYnV0ZSBvbiB0aGUgaW50ZXJmYWNlIGZvciBhbGwKKyMgc3VwcG9ydGVkIGdsb2JhbCBjb250
ZXh0cy4KIHN1YiBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZAogewogICAgIG15ICgkY29udGV4dCwg
JHRhcmdldCkgPSBAXzsKIAogICAgIG15ICRleHBvc2VkQXR0cmlidXRlID0gJHRhcmdldC0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkV4cG9zZWQifSB8fCAiV2luZG93IjsKKyAgICByZXR1cm4gMSBp
ZiAkZXhwb3NlZEF0dHJpYnV0ZSBlcSAiKiI7CisKICAgICAkZXhwb3NlZEF0dHJpYnV0ZSA9IHN1
YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwgLTEpIGlmIHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0
ZSwgMCwgMSkgZXEgIigiOwogICAgIG15IEB0YXJnZXRHbG9iYWxDb250ZXh0cyA9IHNwbGl0KCIs
IiwgJGV4cG9zZWRBdHRyaWJ1dGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGNlOTk1NDE5NTMzNzg4ZmJiZjZmNzE0
MTcwZTI4ZDQyZWIyNjBhNmYuLjVjN2VlMzY2YzM3OTFmMjAwNjM1ZWY3MmE5YmM0MDMzYmNhNzBi
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC0zOTQ1LDYgKzM5NDUsOCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2VkCiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIpOwogCiAgICAgbXkgJGV4cG9zZWQgPSAkY29udGV4dC0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57RXhwb3NlZH07CisgICAgcmV0dXJuIGlmICRleHBvc2VkIGVxICIq
IjsKKwogICAgIGlmIChyZWYoJGV4cG9zZWQpIGVxICdBUlJBWScpIHsKICAgICAgICAgaWYgKHNj
YWxhcihAJGV4cG9zZWQpID4gMSkgewogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQppbmRleCBjODliNjZiZWMxYzAxM2Zi
N2JkYTIyNjRjMzdhOWU5NWEwZWU0MjgwLi5lNGZmMTUxM2JiNDNmN2MzMjlkNTI2OGIzNDZiOGZk
NWJlZWRhZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TFBhcnNlci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNl
ci5wbQpAQCAtMjM3Miw2ICsyMzcyLDEwIEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlUmVz
dDIKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIp
IiwgX19MSU5FX18pOwogICAgICAgICByZXR1cm4gXEBhcmd1bWVudHM7CiAgICAgfQorICAgIGlm
ICgkbmV4dC0+dmFsdWUoKSBlcSAiKiIpIHsKKyAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFs
dWUoJHNlbGYtPmdldFRva2VuKCksICIqIiwgX19MSU5FX18pOworICAgICAgICByZXR1cm4gIioi
OworICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4pIHsKICAg
ICAgICAgbXkgJG5hbWUgPSAkc2VsZi0+cGFyc2VOYW1lKCk7CiAgICAgICAgIHJldHVybiAkc2Vs
Zi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QzKCRuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKaW5kZXggMWU1YjZmMjA4
NTQ5ODNmNTJhODAxNGM3YjRlNzIxNDcwZTAzMjY1OC4uMDg1N2NkOTM2MTIxZDljNmE0ZWQ5YjAz
M2U0MDU3ZWVhNTE4ZjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKQEAgLTU1LDYgKzU1LDE2IEBAIG15ICRzdXBwbGVtZW50
YWxNYWtlZmlsZURlcHM7CiBteSAkaWRsQXR0cmlidXRlc0ZpbGU7CiBteSAkdmVyYm9zZSA9IDA7
CiAKK215IEBzdXBwb3J0ZWRHbG9iYWxDb250ZXh0cyA9ICgKKyAgICAiV2luZG93IiwKKyAgICAi
V29ya2VyIiwKKyAgICAiRGVkaWNhdGVkV29ya2VyIiwKKyAgICAiU2VydmljZVdvcmtlciIsCisg
ICAgIldvcmtsZXQiLAorICAgICJQYWludFdvcmtsZXQiLAorICAgICJBdWRpb1dvcmtsZXQiCisp
OworCiAjIFRvZ2dsZSB0aGlzIHRvIHZhbGlkYXRlIHRoYXQgdGhlIGZhc3QgcmVndWxhciBleHBy
ZXNzaW9uIGJhc2VkICJwYXJzaW5nIiB1c2VkCiAjIGluIHRoaXMgZmlsZSBwcm9kdWNlcyB0aGUg
c2FtZSByZXN1bHRzIGFzIHRoZSBzbG93ZXIgcmVzdWx0cyBwcm9kdWNlZCBieSB0aGUKICMgY29t
cGxldGUgSURMUGFyc2VyLgpAQCAtMjQ2LDcgKzI1NiwxMSBAQCBmb3JlYWNoIG15ICRpZGxGaWxl
TmFtZSAoc29ydCBrZXlzICVpZGxGaWxlTmFtZUhhc2gpIHsKICAgICAgICAgaWYgKCEkZXhwb3Nl
ZEF0dHJpYnV0ZSkgewogICAgICAgICAgICAgZGllICJFUlJPUjogTm8gW0V4cG9zZWRdIGV4dGVu
ZGVkIGF0dHJpYnV0ZSBzcGVjaWZpZWQgZm9yIGludGVyZmFjZSBpbiAkaWRsRmlsZU5hbWUiOwog
ICAgICAgICB9CisgICAgICAgIGlmICgkZXhwb3NlZEF0dHJpYnV0ZSBlcSAiKiIpIHsKKyAgICAg
ICAgICAgICRleHBvc2VkQXR0cmlidXRlID0gIigiIC4gam9pbignLCcsIEBzdXBwb3J0ZWRHbG9i
YWxDb250ZXh0cykgLiAiKSI7CisgICAgICAgIH0KICAgICAgICAgJGV4cG9zZWRBdHRyaWJ1dGUg
PSBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRy
aWJ1dGUsIDAsIDEpIGVxICIoIjsKKwogICAgICAgICBteSBAZ2xvYmFsQ29udGV4dHMgPSBzcGxp
dCgiLCIsICRleHBvc2VkQXR0cmlidXRlKTsKICAgICAgICAgZm9yZWFjaCBteSAkZ2xvYmFsQ29u
dGV4dCAoQGdsb2JhbENvbnRleHRzKSB7CiAgICAgICAgICAgICBteSAoJGF0dHJpYnV0ZUNvZGUs
ICR3aW5kb3dBbGlhc2VzKSA9IEdlbmVyYXRlQ29uc3RydWN0b3JBdHRyaWJ1dGVzKCRpbnRlcmZh
Y2VOYW1lLCAkZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkZ2xvYmFsQ29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAppbmRleCAxMGRhZTEx
MDdkMzM0YmM4ZjQzZGYyZjRmN2U4NGE5ODNjMzVkNjZmLi4xNzVjNDdjZmE4OTFmZmZiYzVhMzJh
YTk2ZmViNzFhZTFmMzQxY2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5pZGwKQEAgLTEsMiArMSwzIEBACiBwYXJ0aWFsIGludGVyZmFjZSBB
dWRpb1dvcmtsZXRHbG9iYWxTY29wZSB7CisgICAgYXR0cmlidXRlIEV4cG9zZWRTdGFyQ29uc3Ry
dWN0b3IgRXhwb3NlZFN0YXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbAppbmRleCBl
YjdlMmVmMTM5NzJhYzA2MDYwYmRhYWZmZDQzZDZiZjA1N2U0OWI5Li5mNDA2YmIyNGJhYzE5NDQ2
MThhODIxOGNkNTYwZTQzOTBhYWU1NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbApA
QCAtMSw1ICsxLDYgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIERPTVdpbmRvdyB7CiAgICAgYXR0cmli
dXRlIERPTVdpbmRvd0NvbnN0cnVjdG9yIERPTVdpbmRvdzsKKyAgICBhdHRyaWJ1dGUgRXhwb3Nl
ZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2VkU3RhcjsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93Q29uc3RydWN0b3IgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OwogICAgIGF0
dHJpYnV0ZSBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25h
bEluY2x1ZGVzOwogICAgIGF0dHJpYnV0ZSBUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0
cnVjdG9yIFRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggMmEzMGRhMDdhMzk4
NmE2MjBlY2IyM2E0YWEwOGQ5ZDM4NDg1ODBlMC4uZGE1OWE1MTg0ZTA4Zjc3YzZiNTkzNTFjMTAy
MDQxZTdiZWYwZjViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnMuaWRsCkBAIC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2Ug
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgewogICAgIGF0dHJpYnV0ZSBEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOworICAg
IGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9FeHBvc2VkU3Rhci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRXhwb3NlZFN0YXIuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBhNGY5ZDk5YTYxYWQxOTE0ZjhiNDFlYTQyY2ZiZjk5MGE0NDI0NDUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRXhw
b3NlZFN0YXIuaWRsCkBAIC0wLDAgKzEsNyBAQAorWworCUV4cG9zZWQ9KgorXSBpbnRlcmZhY2Ug
RXhwb3NlZFN0YXIgOiBFdmVudFRhcmdldCB7CisJW0V4cG9zZWQ9Kl0gdW5kZWZpbmVkIG9wZXJh
dGlvbkZvckFsbENvbnRleHRzKCk7CisJW0V4cG9zZWQ9V2luZG93XSB1bmRlZmluZWQgb3BlcmF0
aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzKCk7CisJW0V4cG9zZWQ9V29ya2VyXSB1bmRlZmluZWQg
b3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKaW5kZXgg
ZTQ2OTA0OTUyYmU1N2FkN2IyNjA0NTE5NjY1YjY2MTg4NzA5NTk2My4uYzlhMzhkNjJhMTZiMjRi
YTBmYzYwNTgxMDkzZmYwNWFiMjk1OTViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIkpT
RXhwb3NlZFN0YXIuaCIKICNpbmNsdWRlICJKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oIgog
I2luY2x1ZGUgIkpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuaCIKICNpbmNsdWRlICJKU1Rlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlLmgiCkBAIC02NCw2ICs2NSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93Q29u
c3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3df
RE9NV2luZG93Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNET01XaW5kb3dfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1
Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19UZXN0
Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzRE9NV2luZG93X1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0
b3IpOwpAQCAtODQsNyArODYsNyBAQCB1c2luZyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNET01XaW5kb3c+OwogCiBzdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNET01XaW5kb3dUYWJsZUluZGV4WzM3XSA9
IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNSwgMzUgfSwKKyAgICB7IDYsIDM1IH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC05NywzNSAr
OTksMzYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9NV2luZG93
VGFibGVJbmRleFszN10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyA0LCAzMyB9LAorICAgIHsgNSwgMzMgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMiwgLTEgfSwKLSAgICB7IDEsIDMyIH0sCisgICAgeyAzLCAtMSB9LAorICAg
IHsgMiwgMzIgfSwKICAgICB7IDAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgOSwgLTEgfSwKKyAgICB7IDEw
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgMywgMzQgfSwKLSAgICB7IDYsIDM2IH0sCi0gICAgeyA3LCAtMSB9LAorICAgIHsgNCwgMzQg
fSwKKyAgICB7IDcsIDM2IH0sCiAgICAgeyA4LCAtMSB9LAotICAgIHsgMTAsIC0xIH0sCisgICAg
eyA5LCAtMSB9LAorICAgIHsgMTEsIC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzW10gPQogewogICAgIHsgIkRPTVdpbmRvdyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNET01XaW5kb3dfRE9NV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAi
RXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiAgICAgeyAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdp
bmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTE0Miw3ICsxNDUsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNET01XaW5kb3dUYWJsZVZhbHVlc1tdID0KICAgICB7ICJUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19UZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRE9N
V2luZG93VGFibGUgPSB7IDExLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNET01X
aW5kb3dUYWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTRE9NV2luZG93VGFibGUgPSB7IDEyLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6
OmluZm8oKSwgSlNET01XaW5kb3dUYWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07
CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJET01XaW5kb3ciLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBs
YXRlPD4gSlNWYWx1ZSBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CkBAIC0yMjUsNiArMjI4LDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRv
d19ET01XaW5kb3dDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpCiAgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OmdldDxqc0RPTVdpbmRvd19ET01XaW5kb3dDb25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRl
TmFtZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0RPTVdpbmRvd19FeHBvc2VkU3Rh
ckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0RPTVdpbmRvdyYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNET01XaW5kb3c+OjpnZXQ8anNET01XaW5kb3dfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvckdl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9
CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3dDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNET01XaW5kb3cmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCmluZGV4IGE5ZDYxNTg4NjA5ODc5NTY0NTYyNzhkOWU0NDBhYjkyYzM1MDQ0YmIuLjMzMDcz
NjRlYzA0MzExYTdlMTgyM2ZkNjZlMjFhZWYwNzY2NjM5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRl
ICJKU0V4cG9zZWRTdGFyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwQW5hbHl6ZXIuaD4KQEAgLTUwLDIzICs1MSwyOCBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiAKIHVzaW5nIEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+OwogCiAvKiBIYXNo
IHRhYmxlICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1
Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRl
eFs1XSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCA0IH0sCisgICAgeyAxLCAtMSB9LAogfTsKIAog
CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
IH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZv
KCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVU
YWJsZVZhbHVlcywgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1Zh
bHVlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQpAQCAtMTQ3LDYgKzE1MywxNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZQogICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT46OmdldDxq
c0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0
ZU5hbWUpOwogfQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0
KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4g
SlNFeHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCksICZ0aGlzT2JqZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKwogSlNDOjpJc29TdWJzcGFjZSogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewog
ICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDg5YThjYTZlMTdhY2Iz
ZWFiZmY3ZWQ0N2JmZDQwOTdmNThhYzgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCkBAIC0wLDAgKzEs
MzA4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJKU0V4cG9zZWRTdGFyLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
KyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0QmFzZS5oIgorI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5h
bHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBG
dW5jdGlvbnMKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3Rh
clByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkZvckFsbENvbnRleHRzKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVy
YXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXb3Jr
ZXJDb250ZXh0cyk7CisKKy8vIEF0dHJpYnV0ZXMKKworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNFeHBvc2VkU3RhckNvbnN0cnVjdG9yKTsKKworY2xhc3MgSlNFeHBvc2VkU3Rh
clByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGlj
OgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpT
RXhwb3NlZFN0YXJQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAg
ICAgIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNFeHBvc2VkU3RhclByb3RvdHlwZT4odm0uaGVhcCkpIEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFS
RV9JTkZPOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNj
ZXNzPgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
RXhwb3NlZFN0YXJQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5h
bE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU0V4cG9zZWRTdGFyUHJvdG90eXBlLCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpCYXNlKTsK
KwordXNpbmcgSlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNFeHBvc2VkU3Rhcj47CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTRXhwb3NlZFN0YXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRXhwb3NlZFN0YXIi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
RXhwb3NlZFN0YXJET01Db25zdHJ1Y3RvcikgfTsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTRXhw
b3NlZFN0YXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBK
U0V2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7Cit9CisKK3Rl
bXBsYXRlPD4gdm9pZCBKU0V4cG9zZWRTdGFyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNFeHBvc2VkU3Rhcjo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJFeHBvc2VkU3RhciJfcyk7CisgICAgbV9vcmlnaW5hbE5hbWUuc2V0
KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKKy8q
IEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNFeHBvc2VkU3RhclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0
cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAi
b3BlcmF0aW9uRm9yQWxsQ29udGV4dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9v
cGVyYXRpb25Gb3JBbGxDb250ZXh0cyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJvcGVy
YXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlv
bl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisg
ICAgeyAib3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc0V4cG9zZWRTdGFyUHJvdG90
eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzKSwgKGludHB0cl90KSAo
MCkgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFN0YXJQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIkV4cG9zZWRTdGFyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90eXBlKSB9OworCit2b2lkIEpT
RXhwb3NlZFN0YXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU0V4
cG9zZWRTdGFyOjppbmZvKCksIEpTRXhwb3NlZFN0YXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRo
aXMpOworICAgIGJvb2wgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOworICAg
IGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm9w
ZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cyIpLCBzdHJsZW4oIm9wZXJhdGlvbkp1c3RGb3JX
aW5kb3dDb250ZXh0cyIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0K
KyAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAg
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJvcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMiKSwgc3RybGVuKCJvcGVy
YXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICB9CisgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3Ry
dWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQorICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVj
dCh2bSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisK
K2NvbnN0IENsYXNzSW5mbyBKU0V4cG9zZWRTdGFyOjpzX2luZm8gPSB7ICJFeHBvc2VkU3RhciIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNF
eHBvc2VkU3RhcikgfTsKKworSlNFeHBvc2VkU3Rhcjo6SlNFeHBvc2VkU3RhcihTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEV4cG9zZWRT
dGFyPiYmIGltcGwpCisgICAgOiBKU0V2ZW50VGFyZ2V0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFz
ZV9vZjxBY3RpdmVET01PYmplY3QsIEV4cG9zZWRTdGFyPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMg
bm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlv
biBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCog
SlNFeHBvc2VkU3Rhcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNFeHBvc2VkU3RhclByb3RvdHlwZTo6Y3Jl
YXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIEpTRXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSkpOworfQorCitKU09iamVjdCogSlNFeHBvc2VkU3Rhcjo6cHJvdG90eXBlKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0
RE9NUHJvdG90eXBlPEpTRXhwb3NlZFN0YXI+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1Zh
bHVlIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNF
eHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yLCBET01Db25zdHJ1Y3RvcklEOjpFeHBvc2VkU3Rhcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTRXhwb3NlZFN0YXJQcm90
b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VM
WSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0V4
cG9zZWRTdGFyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
LCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uRm9y
QWxsQ29udGV4dHNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9z
ZWRTdGFyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uRm9yQWxsQ29u
dGV4dHMoKTsgfSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRXhwb3NlZFN0
YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0cywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Y2FsbDxqc0V4cG9zZWRTdGFyUHJv
dG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uRm9yQWxsQ29udGV4dHNCb2R5PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgIm9wZXJhdGlvbkZvckFsbENvbnRleHRzIik7Cit9CisKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVu
Y3Rpb25fb3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNFeHBvc2VkU3Rhcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVy
biBpbXBsLm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cygpOyB9KSkpOworfQorCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJh
dGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU0V4cG9zZWRTdGFyPjo6Y2FsbDxqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3Bl
cmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJvcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMiKTsKK30KKworc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlv
bl9vcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
K3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGlt
cGwub3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzKCk7IH0pKSk7Cit9CisKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9u
SnVzdEZvcldvcmtlckNvbnRleHRzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
RXhwb3NlZFN0YXI+OjpjYWxsPGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRp
b25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgIm9wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyIpOworfQorCitKU0M6Oklzb1N1
YnNwYWNlKiBKU0V4cG9zZWRTdGFyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7Cisg
ICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Cisg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQo
KSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4gfHwgIUpTRXhw
b3NlZFN0YXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4pCisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTRXhwb3NlZFN0YXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRXhwb3Nl
ZFN0YXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rh
ci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICB2b2lkICgqbXlW
aXNpdE91dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0g
SlNFeHBvc2VkU3Rhcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICB2b2lkICgqanNDZWxs
VmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9
IEpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzOworICAgIGlmIChteVZpc2l0T3V0
cHV0Q29uc3RyYWludCAhPSBqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQpCisgICAgICAgIGNs
aWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVf
V0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQor
Cit2b2lkIEpTRXhwb3NlZFN0YXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5
emVyJiBhbmFseXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRXhwb3Nl
ZFN0YXIqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxs
LCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwg
InVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJp
bmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCisjaWYg
RU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19p
ZGVudGlmaWVyKCI/P183RXhwb3NlZFN0YXJAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UK
K2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTExRXhwb3NlZFN0YXJFW107
IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RXhw
b3NlZFN0YXI+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAg
ICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBs
LnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gX19pZGVudGlmaWVyKCI/P183RXhwb3NlZFN0YXJAV2ViQ29yZUBANkJAIik7CisjZWxz
ZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMTFFeHBv
c2VkU3RhckVbMl07CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgRXhwb3NlZFN0YXIg
ZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIElt
cGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5p
dGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxFeHBvc2VkU3Rhcj46
OnZhbHVlLCAiRXhwb3NlZFN0YXIgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5
b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1
Zywgb3IKKyAgICAvLyBFeHBvc2VkU3RhciBoYXMgc3ViY2xhc3Nlcy4gSWYgRXhwb3NlZFN0YXIg
aGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJl
bnRseSByZXF1aXJlIEV4cG9zZWRTdGFyIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVu
aW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUg
dG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVh
bFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJl
dHVybiBjcmVhdGVXcmFwcGVyPEV4cG9zZWRTdGFyPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeHBvc2VkU3Rh
ciYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGltcGwpOworfQorCitFeHBvc2VkU3RhciogSlNFeHBvc2VkU3Rhcjo6dG9XcmFwcGVk
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBw
ZXIgPSBqc0R5bmFtaWNDYXN0PEpTRXhwb3NlZFN0YXIqPih2bSwgdmFsdWUpKQorICAgICAgICBy
ZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhw
b3NlZFN0YXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4
cG9zZWRTdGFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg4Mjg0OGNmYTA0NjczNGJjOGI3OGIzODg4NmFhNzE1
MTZjMzBiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4cG9zZWRTdGFyLmgiCisj
aW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTRXhwb3NlZFN0YXIgOiBwdWJsaWMgSlNFdmVu
dFRhcmdldCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRXZlbnRUYXJnZXQ7CisgICAg
dXNpbmcgRE9NV3JhcHBlZCA9IEV4cG9zZWRTdGFyOworICAgIHN0YXRpYyBKU0V4cG9zZWRTdGFy
KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPEV4cG9zZWRTdGFyPiYmIGltcGwpCisgICAgeworICAgICAgICBKU0V4
cG9zZWRTdGFyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRXhwb3Nl
ZFN0YXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNFeHBvc2VkU3RhcihzdHJ1Y3R1cmUs
ICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0
aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisg
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01H
bG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6
Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBFeHBvc2VkU3RhciogdG9XcmFw
cGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJl
bnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3Bh
Y2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlND
ZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKKyAgICBFeHBvc2VkU3RhciYgd3JhcHBlZCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwb3NlZFN0YXImPihCYXNl
Ojp3cmFwcGVkKCkpOworICAgIH0KK3Byb3RlY3RlZDoKKyAgICBKU0V4cG9zZWRTdGFyKEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8RXhwb3NlZFN0YXI+JiYpOworCisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBFeHBvc2VkU3RhciYp
OworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4cG9zZWRTdGFy
KiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxFeHBv
c2VkU3Rhcj4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmUHRyPEV4cG9zZWRTdGFyPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0
b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5y
ZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPEV4cG9zZWRTdGFyPiB7CisgICAgdXNpbmcgV3Jh
cHBlckNsYXNzID0gSlNFeHBvc2VkU3RhcjsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBl
ID0gRXhwb3NlZFN0YXIqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGU0Y2Y1YjY4OTk3NzQ2Yjk0YWVk
NTdhNTgwYTY4MDQ1MDE0Y2Y5ODQuLjA5YzRhNzk1ZDRhZDVlZTE4MTIxM2VkNDdhOTMzZTQyZTI2
ZGNlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01HbG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKKyNpbmNsdWRlICJKU0V4cG9zZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDksMTMgKzUwLDE2IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX0V4
cG9zZWRTdGFyQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yKTsKIAogdXNpbmcgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZT47CiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFz
aEluZGV4IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4WzJdID0geworc3RhdGlj
IGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVU
YWJsZUluZGV4WzRdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAwLCAtMSB9LAogfTsKQEAgLTYzLDEwICs2NywxMSBAQCBzdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRh
YmxlSW5kZXhbMl0gPSB7CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CisgICAgeyAiRXhwb3NlZFN0YXIiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKICAgICB7ICJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNQYWludFdv
cmtsZXRHbG9iYWxTY29wZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
VGFibGUgPSB7IDEsIDEsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwg
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlVGFibGVJbmRleCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU6OmluZm8oKSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVj
dG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xMzYsNiArMTQxLDE3IEBAIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvckdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29u
c3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPjo6Z2V0PGpzUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5jcHAKaW5kZXggMDU1Njg1ZDBkMGQ1MzM2NDFmZDZhN2Q0NWNlYWU1NzMyMGY5ZGE3
Yy4uY2MwZGEzMDNmYTQ0M2E1YmQxNmE5N2JmMjRmNTRlZWQwMDA2YmRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAi
SlNFeHBvc2VkU3Rhci5oIgogI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtNDksMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAvLyBBdHRyaWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25z
dHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZV9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKIHVz
aW5nIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT47CiAKIC8q
IEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5k
ZXhbNF0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IDAsIC0xIH0sCiB9OwpAQCAtNjMsMTAgKzY3LDExIEBAIHN0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5k
ZXhbMl0gPSB7CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQogeworICAgIHsgIkV4cG9zZWRTdGFyIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAogICAgIHsgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVfU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
VGFibGUgPSB7IDEsIDEsIHRydWUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCks
IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlVGFibGVJbmRleCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6aW5mbygpLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVE
T01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEzNiw2ICsxNDEs
MTcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKK3N0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3Rh
ckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFS
QU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7
Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5h
bWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU+OjpnZXQ8anNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rv
ckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7
Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmpl
Y3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29y
a2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg2ZmE4MWFiYjc4ODIxMDM2ZWI2NzVlNzIzZGQyYjRi
N2M3NGY5ZDYuLjFiMzk4NDliNDVjNWRkYzUyMjM4ZjRlNzBhOWUxMDZkY2QwOGRjNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckds
b2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJKU0V4cG9z
ZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuaCIKICNpbmNs
dWRlICJKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaCIKICNpbmNsdWRlICJK
U1Rlc3ROb2RlLmgiCkBAIC01NCw2ICs1NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBB
dHRyaWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1dvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3dDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1dvcmtlckdsb2JhbFNjb3BlX1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25z
dHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtlckdsb2Jh
bFNjb3BlX1Rlc3ROb2RlQ29uc3RydWN0b3IpOwpAQCAtNjcsMjggKzY5LDI5IEBAIHVzaW5nIEpT
V29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTV29yCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBK
U1dvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFsxOF0gPSB7CiAgICAgeyAtMSwgLTEgfSwKLSAg
ICB7IDAsIDE2IH0sCi0gICAgeyA1LCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAx
NiB9LAorICAgIHsgNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAorICAgIHsgMCwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgMywgLTEgfSwKKyAgICB7IDQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDQsIC0xIH0sCisgICAgeyA1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxLCAxNyB9
LAotICAgIHsgMiwgLTEgfSwKKyAgICB7IDIsIDE3IH0sCisgICAgeyAzLCAtMSB9LAogfTsKIAog
CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFs
dWVzW10gPQogeworICAgIHsgIkV4cG9zZWRTdGFyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNj
b3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvd0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVfVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3ROb2RlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlX1Rlc3ROb2RlQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCkBA
IC05Nyw3ICsxMDAsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNXb3JrZXJHbG9i
YWxTY29wZVRhYmxlVmFsdWVzW10gPQogICAgIHsgIldvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1dvcmtlckdsb2JhbFNjb3BlX1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZSA9
IHsgNiwgMTUsIHRydWUsIEpTV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrZXJHbG9i
YWxTY29wZVRhYmxlVmFsdWVzLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9Oworc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDcsIDE1LCB0
cnVlLCBKU1dvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJs
ZVZhbHVlcywgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvcikgfTsK
IAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTc3LDYgKzE4MCwxNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXb3JrZXJHbG9iYWxTY29wZTo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5n
bG9iYWxPYmplY3QoKSkpOwogfQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrZXJHbG9i
YWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1dvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQoreworICAg
IFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNFeHBvc2Vk
U3Rhcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0
aGlzT2JqZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzV29ya2VyR2xvYmFs
U2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1
dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTV29ya2VyR2xvYmFsU2NvcGU+
OjpnZXQ8anNXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKwogc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5k
ZXggNTQxNzIzZmQ1MTg1MDFlOTMxZWQyYzFiYWU5NDViODc2MWNiZDZkZi4uZTg5NGRjNDUxMmNl
YWM0YWM3MWYyMGZjMGZhZjgzZjJkMDg5ZDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiSlNFeHBvc2VkU3Rhci5oIgogI2luY2x1ZGUg
IkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKQEAgLTQ5LDI0ICs1MCwyOCBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gQXR0cmlidXRlcwogCiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzV29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRT
dGFyQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNXb3Jr
bGV0R2xvYmFsU2NvcGVfV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogCiB1c2luZyBK
U1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNXb3JrbGV0R2xvYmFsU2NvcGU+OwogCiAvKiBIYXNoIHRhYmxlICovCiAK
LXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1dvcmtsZXRHbG9iYWxTY29w
ZVRhYmxlSW5kZXhbMl0gPSB7Ci0gICAgeyAwLCAtMSB9LAorc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTV29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleFs0XSA9IHsKKyAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAorICAgIHsgMCwg
LTEgfSwKIH07CiAKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTV29ya2xldEdsb2Jh
bFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAi
V29ya2xldEdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtsZXRHbG9iYWxTY29wZV9Xb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNXb3JrbGV0R2xv
YmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNXb3Jr
bGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTV29y
a2xldEdsb2JhbFNjb3BlVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTV29ya2xldEdsb2JhbFNjb3Bl
OjppbmZvKCksIEpTV29ya2xldEdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTV29ya2xldEdsb2Jh
bFNjb3BlVGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNXb3JrbGV0
R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiV29ya2xldEdsb2JhbFNjb3Bl
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpA
QCAtMTQ2LDYgKzE1MSwxNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpYwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzV29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRT
dGFyQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTV29ya2xldEdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNFeHBvc2VkU3Rhcjo6Z2V0Q29uc3Ry
dWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzV29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRT
dGFyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1dvcmtsZXRHbG9iYWxTY29wZT46OmdldDxqc1dvcmts
ZXRHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKwogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzV29ya2xldEdsb2JhbFNjb3BlX1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1dvcmtsZXRHbG9i
YWxTY29wZSYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
LmlkbAppbmRleCAzYjVmYWNhNDQ5YjI0ZGY5ZTY2MDY4ZGJlOTcxMmNiZDM2MDcwZDIzLi5iOTNj
ODk2MTY1YTA4ZDg4M2QxMTIwYWE2YjVmNjJlMjQ1NWM4NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKQEAgLTEsMyArMSw0IEBACiBw
YXJ0aWFsIGludGVyZmFjZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZSB7CisgICAgYXR0cmlidXRl
IEV4cG9zZWRTdGFyQ29uc3RydWN0b3IgRXhwb3NlZFN0YXI7CiAgICAgYXR0cmlidXRlIFBhaW50
V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bAppbmRleCAwZWNmYjBhZmI4NDQ3NzM2NmU0MDBhZTRiYzkyYTk0YzI1NWYzZGZhLi4xNzQ5MWU1
Nzk1ZTRlODhjOGFjODdhNWY4MGE2YWYyN2QyNmRhOTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbApAQCAtMSwzICsxLDQgQEAKIHBh
cnRpYWwgaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB7CisgICAgYXR0cmlidXRl
IEV4cG9zZWRTdGFyQ29uc3RydWN0b3IgRXhwb3NlZFN0YXI7CiAgICAgYXR0cmlidXRlIFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3Vw
cGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCmluZGV4IDczYWZjNTAwZDVmNDU2
YzFkYzM4ZmM3MWQ4OTY4MTgyZGRiZjA2MTguLmMxMjMyMTUyNDYxYTZjMmVkMmU1NDgwYTJlN2M2
ZGI2ODg0YmE0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCkBAIC03LDYg
KzcsOSBAQCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg6IERlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAogRE9NRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aDogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBXZWJET01EZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9ycy5pZGwKIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbDoK
K0pTRXhwb3NlZFN0YXIuaDogCitET01FeHBvc2VkU3Rhci5oOiAKK1dlYkRPTUV4cG9zZWRTdGFy
Lmg6IAogSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuaDogCiBET01FeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3cuaDogCiBXZWJET01FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuaDogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAppbmRleCA2NGExYzk3NDQ0NzY4ZjQy
YzQ1ODBhYzZjOTlmZjNjOTAxNWEwMDhjLi4wZDJiOTc2NjU5NDcxNzY5Njk1MGUwNDRhN2VhNmUx
MGFmZjQwNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwK
QEAgLTEsNCArMSw1IEBACiBwYXJ0aWFsIGludGVyZmFjZSBXb3JrZXJHbG9iYWxTY29wZSB7Cisg
ICAgYXR0cmlidXRlIEV4cG9zZWRTdGFyQ29uc3RydWN0b3IgRXhwb3NlZFN0YXI7CiAgICAgYXR0
cmlidXRlIEV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yIEV4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdzsKICAgICBhdHRyaWJ1dGUgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZENvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ7CiAgICAg
YXR0cmlidXRlIFRlc3ROb2RlQ29uc3RydWN0b3IgVGVzdE5vZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvV29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCmluZGV4IDU5ZDBjZmNjZGIyZDhlMjkwYTIyYmMx
YTNjMmE1MjlhMGYzN2RiZTMuLmI1ZmFlZTZmNTFmYjMxNTcyNWY3YjYwOGUzZDY0ZWQ2OTE2N2Rk
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCkBAIC0x
LDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgV29ya2xldEdsb2JhbFNjb3BlIHsKKyAgICBh
dHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2VkU3RhcjsKICAgICBhdHRyaWJ1
dGUgV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IgV29ya2xldEdsb2JhbFNjb3BlOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443095</attachid>
            <date>2021-11-02 09:00:59 -0700</date>
            <delta_ts>2021-11-02 09:07:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231082-20211102160058.patch</filename>
            <type>text/plain</type>
            <size>59015</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2OTMzZTYxNzE4YTcx
MTg2MzFjYTg0MTcwODdmNjcwYTkxMjJlYi4uMThkNWUzZjU2ZGUyYjhjYmJjZjY0ZGY2NDhkYTNm
ODVmYmE5MDc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTEwLTAxICBDYWl0
bG4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0
IFtFeHBvc2VkPSpdIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIHNob3J0aGFuZCB0byBleHBvc2UgaW50ZXJm
YWNlcy9hdHRyaWJ1dGVzIG9uIFdpbmRvdywgV29ya2VycyosCisgICAgICAgIGFuZCB0aGUgZm9y
dGhjb21pbmcgU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBTZWUgaHR0cHM6
Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNzdWVzLzQ2OCBhbmQKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvcHVsbC81MjYgZm9yIGRldGFpbHMuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChzaG91bGRQ
cm9wZXJ0eUJlRXhwb3NlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
Z0ZvckV4cG9zZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgor
ICAgICAgICAocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0V4cG9zZWRTdGFy
LmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2lu
ZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3Ry
dWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNFeHBvc2VkU3Rhci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBv
c2VkU3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpKU0V4cG9zZWRTdGFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNF
eHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5
cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0c0JvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3Nl
ZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVy
YXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhw
b3NlZFN0YXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRT
dGFyOjphbmFseXplSGVhcCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rh
cjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBv
c2VkU3Rhci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6d3JhcHBlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJD
b25zdHJ1Y3RvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNXb3Jr
ZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzV29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRs
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBw
bGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGw6CisKIDIwMjEt
MTEtMDIgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lG
Q10gUGFzcyBpbiB0aGUgdmlzdWFsIG9yZGVyIGxpc3QgdG8gZGlzcGxheSBib3ggY29uc3RydWN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KaW5kZXggOGEwMjZlNjJlZmYwZDNmZWJmYTM1NWMwZDliYTMzZjg0YTljZTg5NC4uY2MwNzRk
ZTdhOGZlYzdhNjc0YTcyMTJlZjhjMDRjMTZjMDMxMTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtNDg4LDEyICs0ODgsMTUg
QEAgc3ViIFByb2Nlc3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzCiB9CiAKICMg
QXR0cmlidXRlcyAvIE9wZXJhdGlvbnMgLyBDb25zdGFudHMgb2Ygc3VwcGxlbWVudGFsIGludGVy
ZmFjZXMgY2FuIGhhdmUgYW4gW0V4cG9zZWQ9WFhdIGF0dHJpYnV0ZSB3aGljaCByZXN0cmljdHMK
LSMgb24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJlIGV4cG9zZWQuCisjIG9u
IHdoaWNoIGdsb2JhbCBjb250ZXh0cyB0aGV5IHNob3VsZCBiZSBleHBvc2VkLiBbRXhwb3NlZD0q
XSB3aWxsIGV4cG9zZSB0aGUgYXR0cmlidXRlIG9uIHRoZSBpbnRlcmZhY2UgZm9yIGFsbAorIyBz
dXBwb3J0ZWQgZ2xvYmFsIGNvbnRleHRzLgogc3ViIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkCiB7
CiAgICAgbXkgKCRjb250ZXh0LCAkdGFyZ2V0KSA9IEBfOwogCiAgICAgbXkgJGV4cG9zZWRBdHRy
aWJ1dGUgPSAkdGFyZ2V0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5k
b3ciOworICAgIHJldHVybiAxIGlmICRleHBvc2VkQXR0cmlidXRlIGVxICIqIjsKKwogICAgICRl
eHBvc2VkQXR0cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAxLCAtMSkgaWYgc3Vi
c3RyKCRleHBvc2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7CiAgICAgbXkgQHRhcmdldEdsb2Jh
bENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNmFh
YmEzOGYzNWViZjE4MTAxMmFhNjA4MDVhNTdkZDkxN2U0YTkyNy4uMzVhOTNkZGMzZWVjZjYxMDMy
MjQyNWMwNTA1MTQ1ZGEwMzNiYTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM5NDYsNiArMzk0Niw4IEBAIHN1YiBH
ZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4cG9zZWQKICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7CiAKICAgICBteSAkZXhw
b3NlZCA9ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfTsKKyAgICByZXR1
cm4gaWYgJGV4cG9zZWQgZXEgIioiOworCiAgICAgaWYgKHJlZigkZXhwb3NlZCkgZXEgJ0FSUkFZ
JykgewogICAgICAgICBpZiAoc2NhbGFyKEAkZXhwb3NlZCkgPiAxKSB7CiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBh
cnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmlu
ZGV4IDMxZTQyNjMwMWU4MDNkNzFjNjMyODc0MjM4NTk0NGMwMzM1NDAzYzcuLmFhMGQ5MDE2M2Rj
NjlkZTMwMzE4MjI0ZWEzYmZjZDNiYzFhNGFmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0yMzcyLDYgKzIzNzIsMTAgQEAgc3ViIHBhcnNl
RXh0ZW5kZWRBdHRyaWJ1dGVSZXN0MgogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgk
c2VsZi0+Z2V0VG9rZW4oKSwgIikiLCBfX0xJTkVfXyk7CiAgICAgICAgIHJldHVybiBcQGFyZ3Vt
ZW50czsKICAgICB9CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICIqIikgeworICAgICAgICAk
c2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIioiLCBfX0xJTkVfXyk7
CisgICAgICAgIHJldHVybiAiKiI7CisgICAgfQogICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElk
ZW50aWZpZXJUb2tlbikgewogICAgICAgICBteSAkbmFtZSA9ICRzZWxmLT5wYXJzZU5hbWUoKTsK
ICAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlUmVzdDMoJG5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNz
LWlkbHMucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRs
cy5wbAppbmRleCA3OTIxMmNlMGMyN2I5YWViMGI0YzlkY2RjY2ZmM2ViOTA1NDgwY2UyLi5mNzlh
ZDA4MTA2OGZiMGU4Y2U0Y2Y0OTBmYjRlNGIzMmMwNjJkZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbApAQCAtNTUsNiArNTUs
MTYgQEAgbXkgJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwczsKIG15ICRpZGxBdHRyaWJ1dGVzRmls
ZTsKIG15ICR2ZXJib3NlID0gMDsKIAorbXkgQHN1cHBvcnRlZEdsb2JhbENvbnRleHRzID0gKAor
ICAgICJXaW5kb3ciLAorICAgICJXb3JrZXIiLAorICAgICJEZWRpY2F0ZWRXb3JrZXIiLAorICAg
ICJTZXJ2aWNlV29ya2VyIiwKKyAgICAiV29ya2xldCIsCisgICAgIlBhaW50V29ya2xldCIsCisg
ICAgIkF1ZGlvV29ya2xldCIKKyk7CisKICMgVG9nZ2xlIHRoaXMgdG8gdmFsaWRhdGUgdGhhdCB0
aGUgZmFzdCByZWd1bGFyIGV4cHJlc3Npb24gYmFzZWQgInBhcnNpbmciIHVzZWQKICMgaW4gdGhp
cyBmaWxlIHByb2R1Y2VzIHRoZSBzYW1lIHJlc3VsdHMgYXMgdGhlIHNsb3dlciByZXN1bHRzIHBy
b2R1Y2VkIGJ5IHRoZQogIyBjb21wbGV0ZSBJRExQYXJzZXIuCkBAIC0yNDYsNyArMjU2LDExIEBA
IGZvcmVhY2ggbXkgJGlkbEZpbGVOYW1lIChzb3J0IGtleXMgJWlkbEZpbGVOYW1lSGFzaCkgewog
ICAgICAgICBpZiAoISRleHBvc2VkQXR0cmlidXRlKSB7CiAgICAgICAgICAgICBkaWUgIkVSUk9S
OiBObyBbRXhwb3NlZF0gZXh0ZW5kZWQgYXR0cmlidXRlIHNwZWNpZmllZCBmb3IgaW50ZXJmYWNl
IGluICRpZGxGaWxlTmFtZSI7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCRleHBvc2VkQXR0cmli
dXRlIGVxICIqIikgeworICAgICAgICAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSAiKCIgLiBqb2lu
KCcsJywgQHN1cHBvcnRlZEdsb2JhbENvbnRleHRzKSAuICIpIjsKKyAgICAgICAgfQogICAgICAg
ICAkZXhwb3NlZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwgLTEpIGlm
IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEgIigiOworCiAgICAgICAgIG15IEBn
bG9iYWxDb250ZXh0cyA9IHNwbGl0KCIsIiwgJGV4cG9zZWRBdHRyaWJ1dGUpOwogICAgICAgICBm
b3JlYWNoIG15ICRnbG9iYWxDb250ZXh0IChAZ2xvYmFsQ29udGV4dHMpIHsKICAgICAgICAgICAg
IG15ICgkYXR0cmlidXRlQ29kZSwgJHdpbmRvd0FsaWFzZXMpID0gR2VuZXJhdGVDb25zdHJ1Y3Rv
ckF0dHJpYnV0ZXMoJGludGVyZmFjZU5hbWUsICRleHRlbmRlZEF0dHJpYnV0ZXMsICRnbG9iYWxD
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuaWRsCmluZGV4IDEwZGFlMTEwN2QzMzRiYzhmNDNkZjJmNGY3ZTg0YTk4M2MzNWQ2NmYuLjE3
NWM0N2NmYTg5MWZmZmJjNWEzMmFhOTZmZWI3MWFlMWYzNDFjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbApAQCAtMSwyICsxLDMgQEAK
IHBhcnRpYWwgaW50ZXJmYWNlIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlIHsKKyAgICBhdHRyaWJ1
dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2VkU3RhcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3Jz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25z
dHJ1Y3RvcnMuaWRsCmluZGV4IGViN2UyZWYxMzk3MmFjMDYwNjBiZGFhZmZkNDNkNmJmMDU3ZTQ5
YjkuLmY0MDZiYjI0YmFjMTk0NDYxOGE4MjE4Y2Q1NjBlNDM5MGFhZTU2YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3Rv
cnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5k
b3dDb25zdHJ1Y3RvcnMuaWRsCkBAIC0xLDUgKzEsNiBAQAogcGFydGlhbCBpbnRlcmZhY2UgRE9N
V2luZG93IHsKICAgICBhdHRyaWJ1dGUgRE9NV2luZG93Q29uc3RydWN0b3IgRE9NV2luZG93Owor
ICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogICAgIGF0
dHJpYnV0ZSBFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciBFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3c7CiAgICAgYXR0cmlidXRlIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3Ry
dWN0b3IgVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM7CiAgICAgYXR0cmlidXRlIFRlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IgVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bAppbmRleCAyYTMwZGEwN2EzOTg2YTYyMGVjYjIzYTRhYTA4ZDlkMzg0ODU4MGUwLi5kYTU5YTUx
ODRlMDhmNzdjNmI1OTM1MWMxMDIwNDFlN2JlZjBmNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKQEAgLTEsMyArMSw0IEBA
CiBwYXJ0aWFsIGludGVyZmFjZSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgYXR0
cmlidXRlIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IgRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU7CisgICAgYXR0cmlidXRlIEV4cG9zZWRTdGFyQ29uc3RydWN0b3IgRXhw
b3NlZFN0YXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0V4cG9zZWRTdGFyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9FeHBvc2VkU3Rhci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE0ZjlkOTlhNjFhZDE5MTRmOGI0MWVh
NDJjZmJmOTkwYTQ0MjQ0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9FeHBvc2VkU3Rhci5pZGwKQEAgLTAsMCArMSw3IEBACitbCisJRXhw
b3NlZD0qCitdIGludGVyZmFjZSBFeHBvc2VkU3RhciA6IEV2ZW50VGFyZ2V0IHsKKwlbRXhwb3Nl
ZD0qXSB1bmRlZmluZWQgb3BlcmF0aW9uRm9yQWxsQ29udGV4dHMoKTsKKwlbRXhwb3NlZD1XaW5k
b3ddIHVuZGVmaW5lZCBvcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMoKTsKKwlbRXhwb3Nl
ZD1Xb3JrZXJdIHVuZGVmaW5lZCBvcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMoKTsKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNE
T01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RE9NV2luZG93LmNwcAppbmRleCBlNDY5MDQ5NTJiZTU3YWQ3YjI2MDQ1MTk2NjViNjYxODg3MDk1
OTYzLi5jOWEzOGQ2MmExNmIyNGJhMGZjNjA1ODEwOTNmZjA1YWIyOTU5NWI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRv
dy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCisjaW5jbHVkZSAiSlNFeHBvc2VkU3Rhci5oIgogI2luY2x1ZGUgIkpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93LmgiCiAjaW5jbHVkZSAiSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5o
IgogI2luY2x1ZGUgIkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuaCIKQEAgLTY0LDYgKzY1
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNET01XaW5kb3dDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0RPTVdpbmRvd19ET01XaW5kb3dDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9yKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93X0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzRE9NV2luZG93X1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGVDb25zdHJ1Y3Rvcik7CkBAIC04NCw3ICs4Niw3IEBAIHVzaW5nIEpTRE9NV2lu
ZG93RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU0RP
TVdpbmRvdz47CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RPTVdp
bmRvd1RhYmxlSW5kZXhbMzddID0gewogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1LCAzNSB9LAor
ICAgIHsgNiwgMzUgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKQEAgLTk3LDM1ICs5OSwzNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNET01XaW5kb3dUYWJsZUluZGV4WzM3XSA9IHsKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQsIDMzIH0sCisgICAgeyA1
LCAzMyB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyLCAtMSB9LAotICAgIHsgMSwgMzIgfSwK
KyAgICB7IDMsIC0xIH0sCisgICAgeyAyLCAzMiB9LAogICAgIHsgMCwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAorICAgIHsgMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA5LCAtMSB9LAorICAgIHsgMTAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzLCAzNCB9LAotICAgIHsgNiwgMzYgfSwKLSAgICB7IDcs
IC0xIH0sCisgICAgeyA0LCAzNCB9LAorICAgIHsgNywgMzYgfSwKICAgICB7IDgsIC0xIH0sCi0g
ICAgeyAxMCwgLTEgfSwKKyAgICB7IDksIC0xIH0sCisgICAgeyAxMSwgLTEgfSwKIH07CiAKIAog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTRE9NV2luZG93VGFibGVWYWx1ZXNbXSA9CiB7
CiAgICAgeyAiRE9NV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19ET01XaW5kb3dDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKKyAgICB7ICJFeHBvc2VkU3RhciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfRXhw
b3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93X0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAogICAgIHsgIlRlc3RDb25kaXRpb25hbEluY2x1ZGVzIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RP
TVdpbmRvd19UZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsg
IlRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19UZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LApAQCAtMTQyLDcgKzE0NSw3IEBA
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzW10gPQog
ICAgIHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93X1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNET01XaW5kb3dUYWJsZSA9IHsgMTEsIDMxLCB0cnVlLCBKU0RPTVdp
bmRvdzo6aW5mbygpLCBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzLCBKU0RPTVdpbmRvd1RhYmxlSW5k
ZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNET01XaW5kb3dUYWJsZSA9IHsgMTIsIDMx
LCB0cnVlLCBKU0RPTVdpbmRvdzo6aW5mbygpLCBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzLCBKU0RP
TVdpbmRvd1RhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2lu
ZG93RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkRPTVdpbmRvdyIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dET01Db25z
dHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRE9NV2luZG93RE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTIyNSw2ICsyMjgsMTcgQEAgSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzRE9NV2luZG93X0RPTVdpbmRvd0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGkKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTRE9NV2luZG93Pjo6Z2V0PGpzRE9N
V2luZG93X0RPTVdpbmRvd0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
RE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTRE9NV2luZG93JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNF
RF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNFeHBvc2VkU3Rhcjo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2Jq
ZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93X0V4cG9zZWRT
dGFyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OmdldDxqc0RPTVdpbmRvd19FeHBv
c2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBhdHRyaWJ1dGVOYW1lKTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzRE9NV2luZG93
X0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTVdpbmRvdyYgdGhpc09iamVjdCkKIHsKICAgICBV
TlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggYTlkNjE1ODg2MDk4Nzk1NjQ1NjI3OGQ5ZTQ0
MGFiOTJjMzUwNDRiYi4uMzMwNzM2NGVjMDQzMTFhN2UxODIzZmQ2NmUyMWFlZjA3NjY2Mzk1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgpAQCAtNTAsMjMgKzUxLDI4IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVj
dG9yKTsKIAogdXNpbmcgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4WzJdID0g
eworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVUYWJsZUluZGV4WzVdID0gewogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAwLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIDQgfSwKKyAg
ICB7IDEsIC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVf
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJFeHBv
c2VkU3RhciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3Rh
ckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxl
VmFsdWVzLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9Oworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDIs
IDMsIHRydWUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlVGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9
OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNDcsNiArMTUzLDE3IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlPjo6Z2V0PGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIHJldHVybiBKU0V4cG9zZWRTdGFyOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT46OmdldDxqc0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOworfQorCiBKU0M6
Oklzb1N1YnNwYWNlKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlkODlhOGNhNmUxN2FjYjNlYWJmZjdlZDQ3YmZkNDA5N2Y1OGFjODMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2Vk
U3Rhci5jcHAKQEAgLTAsMCArMSwzMDggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIuaCIKKworI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1
ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRC
YXNlLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpT
RE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCisj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFj
cm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CisjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKKy8vIEZ1bmN0aW9ucworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uRm9yQWxsQ29u
dGV4dHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclBy
b3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cyk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25f
b3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzKTsKKworLy8gQXR0cmlidXRlcworCitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpOwor
CitjbGFzcyBKU0V4cG9zZWRTdGFyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9i
amVjdDsKKyAgICBzdGF0aWMgSlNFeHBvc2VkU3RhclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNFeHBvc2VkU3RhclByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0V4cG9zZWRTdGFyUHJvdG90eXBlPih2bS5o
ZWFwKSkgSlNFeHBvc2VkU3RhclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsK
KyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNFeHBvc2VkU3RhclByb3RvdHlwZSwgQmFzZSk7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNFeHBvc2VkU3RhclByb3RvdHlwZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
ICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0K
KworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQcm90b3R5cGUsIEpTRXhwb3NlZFN0
YXJQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU0V4cG9zZWRTdGFyRE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU0V4cG9zZWRTdGFyPjsKKwordGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJFeHBvc2VkU3RhciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yKSB9OworCit0ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIEpTRXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xv
YmFsT2JqZWN0KTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEpTRXhwb3NlZFN0YXJET01Db25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU0V4cG9zZWRTdGFyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBKU1N0cmluZyog
bmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkV4cG9zZWRTdGFyIl9zKTsKKyAg
ICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOworICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKK30KKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0V4cG9zZWRTdGFyUHJvdG90eXBlVGFibGVWYWx1ZXNb
XSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRXhwb3NlZFN0YXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKKyAgICB7ICJvcGVyYXRpb25Gb3JBbGxDb250ZXh0cyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNFeHBvc2VkU3Rh
clByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkZvckFsbENvbnRleHRzKSwgKGludHB0cl90KSAo
MCkgfSB9LAorICAgIHsgIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNFeHBvc2Vk
U3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cyksIChp
bnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJvcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29u
dGV4dHMpLCAoaW50cHRyX3QpICgwKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNFeHBv
c2VkU3RhclByb3RvdHlwZTo6c19pbmZvID0geyAiRXhwb3NlZFN0YXIiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRXhwb3NlZFN0YXJQcm90
b3R5cGUpIH07CisKK3ZvaWQgSlNFeHBvc2VkU3RhclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRp
Y1Byb3BlcnRpZXModm0sIEpTRXhwb3NlZFN0YXI6OmluZm8oKSwgSlNFeHBvc2VkU3RhclByb3Rv
dHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gZmFsc2U7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7Cisg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigib3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzIiksIHN0cmxl
bigib3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzIikpOworICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFs
U2NvcGUoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
KyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm9wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250
ZXh0cyIpLCBzdHJsZW4oIm9wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyIpKTsKKyAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBpZiAoaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgIGZs
YXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VU
X1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFN0YXI6OnNfaW5m
byA9IHsgIkV4cG9zZWRTdGFyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU0V4cG9zZWRTdGFyKSB9OworCitKU0V4cG9zZWRTdGFyOjpKU0V4
cG9zZWRTdGFyKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LCBSZWY8RXhwb3NlZFN0YXI+JiYgaW1wbCkKKyAgICA6IEpTRXZlbnRUYXJnZXQoc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNFeHBv
c2VkU3Rhcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGlj
X2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgRXhwb3NlZFN0YXI+Ojp2
YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4g
dGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIp
OworCit9CisKK0pTT2JqZWN0KiBKU0V4cG9zZWRTdGFyOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU0V4cG9z
ZWRTdGFyUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNFdmVudFRhcmdl
dDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7Cit9CisKK0pTT2JqZWN0KiBKU0V4cG9z
ZWRTdGFyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNFeHBvc2VkU3Rhcj4odm0sIGdsb2Jh
bE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNFeHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU0V4cG9zZWRTdGFyRE9NQ29uc3RydWN0b3IsIERPTUNvbnN0cnVj
dG9ySUQ6OkV4cG9zZWRTdGFyPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNFeHBvc2Vk
U3RhckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNFeHBvc2VkU3RhclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKwor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRXhwb3NlZFN0YXJQcm90b3R5cGVG
dW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0c0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQor
eworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5vcGVyYXRpb25Gb3JBbGxDb250ZXh0cygpOyB9KSkpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkZvckFsbENv
bnRleHRzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+Ojpj
YWxsPGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0
c0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAib3BlcmF0aW9uRm9yQWxs
Q29udGV4dHMiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRXhw
b3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNC
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRz
KCk7IH0pKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0V4cG9zZWRTdGFyUHJv
dG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+OjpjYWxsPGpzRXhwb3NlZFN0YXJQ
cm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNCb2R5PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250
ZXh0cyIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNFeHBvc2Vk
U3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0c0JvZHko
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5k
ZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5
cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMoKTsg
fSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRXhwb3NlZFN0YXJQcm90b3R5
cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNFeHBvc2VkU3Rhcj46OmNhbGw8anNFeHBvc2VkU3RhclByb3Rv
dHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0c0JvZHk+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAib3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRz
Iik7Cit9CisKK0pTQzo6SXNvU3Vic3BhY2UqIEpTRXhwb3NlZFN0YXI6OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50
RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvckV4cG9zZWRTdGFyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4
cG9zZWRTdGFyPiB8fCAhSlNFeHBvc2VkU3Rhcjo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U0V4cG9zZWRTdGFyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNFeHBvc2VkU3Rhcik7CisgICAg
ZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNFeHBvc2VkU3Rhcik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvckV4cG9zZWRTdGFyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQorICAgIHZvaWQgKCpteVZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBK
U0M6OlNsb3RWaXNpdG9yJikgPSBKU0V4cG9zZWRTdGFyOjp2aXNpdE91dHB1dENvbnN0cmFpbnRz
OworICAgIHZvaWQgKCpqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwg
SlNDOjpTbG90VmlzaXRvciYpID0gSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7
CisgICAgaWYgKG15VmlzaXRPdXRwdXRDb25zdHJhaW50ICE9IGpzQ2VsbFZpc2l0T3V0cHV0Q29u
c3RyYWludCkKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBw
ZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAg
ICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNFeHBvc2VkU3Rhcjo6YW5hbHl6ZUhlYXAoSlND
ZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQoreworICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNFeHBvc2VkU3Rhcio+KGNlbGwpOworICAgIGFuYWx5emVyLnNldFdyYXBw
ZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAgIGlmICh0
aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5emVyLnNl
dExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKKyAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBh
bmFseXplcik7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZP
Uk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0
ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdFeHBvc2VkU3RhckBXZWJDb3JlQEA2
QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJD
b3JlMTFFeHBvc2VkU3RhckVbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxFeHBvc2VkU3Rhcj4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJ
TkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBn
ZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lk
KiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdFeHBvc2VkU3RhckBX
ZWJDb3JlQEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0g
Jl9aVFZON1dlYkNvcmUxMUV4cG9zZWRTdGFyRVsyXTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhp
cyBmYWlscyBFeHBvc2VkU3RhciBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0
byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8g
dGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHlt
b3JwaGljPEV4cG9zZWRTdGFyPjo6dmFsdWUsICJFeHBvc2VkU3RhciBpcyBub3QgcG9seW1vcnBo
aWMiKTsKKworICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZl
IGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIEV4cG9zZWRTdGFyIGhhcyBzdWJjbGFz
c2VzLiBJZiBFeHBvc2VkU3RhciBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAv
LyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgRXhwb3NlZFN0YXIgeW91IHRvIG9wdCBv
dXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVW
YWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAg
UkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50
ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8RXhwb3NlZFN0YXI+KGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEV4cG9zZWRTdGFyJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK0V4cG9zZWRTdGFyKiBKU0V4
cG9zZWRTdGFyOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNFeHBvc2VkU3Rhcio+KHZt
LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODgyODQ4Y2ZhMDQ2
NzM0YmM4Yjc4YjM4ODg2YWE3MTUxNmMzMGJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuaApAQCAtMCwwICsx
LDgwIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiRXhwb3NlZFN0YXIuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJK
U0V2ZW50VGFyZ2V0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNFeHBvc2Vk
U3RhciA6IHB1YmxpYyBKU0V2ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNFdmVudFRhcmdldDsKKyAgICB1c2luZyBET01XcmFwcGVkID0gRXhwb3NlZFN0YXI7CisgICAg
c3RhdGljIEpTRXhwb3NlZFN0YXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RXhwb3NlZFN0YXI+JiYgaW1wbCkK
KyAgICB7CisgICAgICAgIEpTRXhwb3NlZFN0YXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNFeHBvc2VkU3Rhcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU0V4
cG9zZWRTdGFyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0
dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGlj
IEV4cG9zZWRTdGFyKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0K
KworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJz
cGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJz
cGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMg
dm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOworICAgIEV4cG9z
ZWRTdGFyJiB3cmFwcGVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFeHBvc2VkU3RhciY+KEJhc2U6OndyYXBwZWQoKSk7CisgICAgfQorcHJvdGVjdGVkOgorICAg
IEpTRXhwb3NlZFN0YXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxF
eHBvc2VkU3Rhcj4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307
CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCosIEV4cG9zZWRTdGFyJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRXhwb3NlZFN0YXIqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlND
OjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgUmVmPEV4cG9zZWRTdGFyPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8RXhwb3NlZFN0YXI+JiYgaW1w
bCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8RXhwb3NlZFN0
YXI+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU0V4cG9zZWRTdGFyOworICAgIHVzaW5n
IFRvV3JhcHBlZFJldHVyblR5cGUgPSBFeHBvc2VkU3Rhcio7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXgg
ZTRjZjViNjg5OTc3NDZiOTRhZWQ1N2E1ODBhNjgwNDUwMTRjZjk4NC4uMDljNGE3OTVkNGFkNWVl
MTgxMjEzZWQ0N2E5MzNlNDJlMjZkY2U3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIuaCIKICNp
bmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBA
IC00OSwxMyArNTAsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogCiB1c2luZyBKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxl
SW5kZXhbMl0gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDAsIC0xIH0sCiB9OwpAQCAtNjMs
MTAgKzY3LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKIAogc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZVZhbHVlc1tdID0KIHsKKyAg
ICB7ICJFeHBvc2VkU3RhciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9FeHBv
c2VkU3RhckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlBhaW50V29ya2xldEdsb2JhbFNjb3Bl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZTo6aW5mbygpLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVWYWx1ZXMs
IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6aW5mbygpLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
VGFibGVWYWx1ZXMsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CiB0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEz
Niw2ICsxNDEsMTcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwog
fQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9FeHBv
c2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNF
RF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNFeHBvc2VkU3Rhcjo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2Jq
ZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1
dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU+OjpnZXQ8anNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVj
dG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1l
KTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVf
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSYgdGhpc09iamVj
dCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAwNTU2ODVkMGQwZDUzMzY0MWZk
NmE3ZDQ1Y2VhZTU3MzIwZjlkYTdjLi5jYzBkYTMwM2ZhNDQzYTViZDE2YTk3YmYyNGY1NGVlZDAw
MDZiZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01HbG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKKyNpbmNsdWRlICJKU0V4cG9zZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC00OSwxMyArNTAsMTYg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlX1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yKTsKIAogdXNpbmcgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4WzJd
ID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlVGFibGVJbmRleFs0XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgLTEgfSwKIH07CkBAIC02MywxMCArNjcs
MTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CisgICAgeyAi
RXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRT
dGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVl
cywgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDIsIDMsIHRydWUs
IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlVGFibGVWYWx1ZXMsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9
OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVE
T01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQpAQCAtMTM2LDYgKzE0MSwxNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KgogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzU2VydmljZVdvcmtlckds
b2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0
KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4g
SlNFeHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCksICZ0aGlzT2JqZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT46OmdldDxqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9F
eHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlX1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggODZmYTgxYWJiNzg4
MjEwMzZlYjY3NWU3MjNkZDJiNGI3Yzc0ZjlkNi4uMWIzOTg0OWI0NWM1ZGRjNTIyMzhmNGU3MGE5
ZTEwNmRjZDA4ZGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJK
U0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5o
IgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIuaCIKICNpbmNsdWRlICJKU0V4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdy5oIgogI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZC5oIgogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKQEAgLTU0LDYgKzU1LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1
Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtlckdsb2JhbFNj
b3BlX0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzV29ya2VyR2xvYmFsU2NvcGVfVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzV29ya2VyR2xvYmFsU2NvcGVfVGVzdE5vZGVDb25zdHJ1Y3Rvcik7CkBAIC02Nywy
OCArNjksMjkgQEAgdXNpbmcgSlNXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNXb3IKIAogc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4WzE4XSA9IHsK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgMTYgfSwKLSAgICB7IDUsIC0xIH0sCi0gICAgeyAt
MSwgLTEgfSwKKyAgICB7IDEsIDE2IH0sCisgICAgeyA2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAg
eyAwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzLCAtMSB9LAorICAgIHsgNCwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAotICAgIHsgNCwgLTEgfSwKKyAgICB7IDUsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDEsIDE3IH0sCi0gICAgeyAyLCAtMSB9LAorICAgIHsgMiwgMTcgfSwKKyAg
ICB7IDMsIC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1dvcmtl
ckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAg
ICB7ICJFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2Nv
cGVfRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxT
Y29wZV9UZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CiAgICAgeyAiVGVzdE5vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVfVGVzdE5vZGVD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTk3LDcgKzEwMCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiV29ya2Vy
R2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVfV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNXb3Jr
ZXJHbG9iYWxTY29wZVRhYmxlID0geyA2LCAxNSwgdHJ1ZSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6
aW5mbygpLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTV29ya2VyR2xvYmFsU2Nv
cGVUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTV29ya2VyR2xvYmFsU2Nv
cGVUYWJsZSA9IHsgNywgMTUsIHRydWUsIEpTV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNX
b3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRl
eCB9OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJHbG9iYWxTY29wZURPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJXb3JrZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3JrZXJHbG9iYWxTY29w
ZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxT
Y29wZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNzcsNiArMTgwLDE3IEBA
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dv
cmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTV29ya2VyR2xvYmFsU2NvcGUm
IHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIHJldHVybiBKU0V4cG9zZWRTdGFyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNXb3JrZXJHbG9iYWxTY29wZT46OmdldDxqc1dvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFy
Q29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJp
YnV0ZU5hbWUpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrZXJHbG9iYWxTY29w
ZV9FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrZXJHbG9iYWxTY29wZSYgdGhpc09iamVjdCkK
IHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xl
dEdsb2JhbFNjb3BlLmNwcAppbmRleCA1NDE3MjNmZDUxODUwMWU5MzFlZDJjMWJhZTk0NWI4NzYx
Y2JkNmRmLi5lODk0ZGM0NTEyY2VhYzRhYzcxZjIwZmMwZmFmODNmMmQwODlkMzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJKU0V4cG9z
ZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgpAQCAtNDksMjQgKzUwLDI4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVz
CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzV29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNXb3JrbGV0
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc1dvcmtsZXRHbG9iYWxTY29wZV9Xb3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3Rvcik7CiAKIHVzaW5nIEpTV29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1dvcmtsZXRHbG9iYWxTY29wZT47CiAK
IC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTV29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKLSAgICB7IDAsIC0xIH0sCitz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNXb3JrbGV0R2xvYmFsU2NvcGVU
YWJsZUluZGV4WzRdID0geworICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAogfTsKIAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZVZhbHVlc1tdID0KIHsKKyAgICB7ICJFeHBv
c2VkU3RhciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICAgICB7ICJXb3JrbGV0R2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2xl
dEdsb2JhbFNjb3BlX1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAot
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtsZXRHbG9iYWxTY29wZVRhYmxlID0geyAxLCAx
LCB0cnVlLCBKU1dvcmtsZXRHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtsZXRHbG9iYWxTY29w
ZVRhYmxlVmFsdWVzLCBKU1dvcmtsZXRHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKK3N0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZSA9IHsgMiwgMywgdHJ1ZSwg
SlNXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZVZh
bHVlcywgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CiB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJXb3JrbGV0R2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IpIH07
CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNDYsNiArMTUxLDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dvcmtsZXRHbG9iYWxTY29wZTo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrbGV0
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrbGV0R2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCit7
CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU0V4
cG9zZWRTdGFyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgJnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNXb3JrbGV0
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBh
dHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTV29ya2xldEdsb2Jh
bFNjb3BlPjo6Z2V0PGpzV29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JH
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwor
fQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrbGV0R2xvYmFsU2NvcGVfV29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTV29ya2xldEdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9Q
QVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCmluZGV4IDNiNWZhY2E0NDliMjRkZjllNjYwNjhkYmU5
NzEyY2JkMzYwNzBkMjMuLmI5M2M4OTYxNjVhMDhkODgzZDExMjBhYTZiNWY2MmUyNDU1Yzg0YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9QYWludFdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bApAQCAtMSwzICsxLDQgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFBhaW50V29ya2xldEdsb2JhbFNj
b3BlIHsKKyAgICBhdHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2VkU3RhcjsK
ICAgICBhdHRyaWJ1dGUgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciBQYWludFdv
cmtsZXRHbG9iYWxTY29wZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnMuaWRsCmluZGV4IDBlY2ZiMGFmYjg0NDc3MzY2ZTQwMGFlNGJjOTJh
OTRjMjU1ZjNkZmEuLjE3NDkxZTU3OTVlNGU4OGM4YWM4N2E1ZjgwYTZhZjI3ZDI2ZGE5NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRs
CkBAIC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlIHsKKyAgICBhdHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2VkU3RhcjsK
ICAgICBhdHRyaWJ1dGUgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAK
aW5kZXggNzNhZmM1MDBkNWY0NTZjMWRjMzhmYzcxZDg5NjgxODJkZGJmMDYxOC4uYzEyMzIxNTI0
NjFhNmMyZWQyZTU0ODBhMmU3YzZkYjY4ODRiYTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVu
ZGVuY2llcy5kZXAKQEAgLTcsNiArNyw5IEBAIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aDogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBET01EZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5oOiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9ycy5pZGwKIFdlYkRPTURlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg6IERlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnMuaWRsOgorSlNFeHBvc2VkU3Rhci5oOiAKK0RPTUV4cG9zZWRTdGFyLmg6
IAorV2ViRE9NRXhwb3NlZFN0YXIuaDogCiBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oOiAK
IERPTUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oOiAKIFdlYkRPTUV4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdy5oOiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCmlu
ZGV4IDY0YTFjOTc0NDQ3NjhmNDJjNDU4MGFjNmM5OWZmM2M5MDE1YTAwOGMuLjBkMmI5NzY2NTk0
NzE3Njk2OTUwZTA0NGE3ZWE2ZTEwYWZmNDA0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1dvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzLmlkbApAQCAtMSw0ICsxLDUgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFdv
cmtlckdsb2JhbFNjb3BlIHsKKyAgICBhdHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBF
eHBvc2VkU3RhcjsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3Ry
dWN0b3IgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OwogICAgIGF0dHJpYnV0ZSBUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IgVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZDsKICAgICBhdHRyaWJ1dGUgVGVzdE5vZGVDb25zdHJ1Y3RvciBUZXN0Tm9k
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggNTlk
MGNmY2NkYjJkOGUyOTBhMjJiYzFhM2MyYTUyOWEwZjM3ZGJlMy4uYjVmYWVlNmY1MWZiMzE1NzI1
ZjdiNjA4ZTNkNjRlZDY5MTY3ZGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1dvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5pZGwKQEAgLTEsMyArMSw0IEBACiBwYXJ0aWFsIGludGVyZmFjZSBXb3JrbGV0
R2xvYmFsU2NvcGUgeworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9z
ZWRTdGFyOwogICAgIGF0dHJpYnV0ZSBXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciBXb3Jr
bGV0R2xvYmFsU2NvcGU7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443097</attachid>
            <date>2021-11-02 09:07:09 -0700</date>
            <delta_ts>2021-11-02 11:40:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231082-20211102160708.patch</filename>
            <type>text/plain</type>
            <size>59015</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2OTMzZTYxNzE4YTcx
MTg2MzFjYTg0MTcwODdmNjcwYTkxMjJlYi4uMThkNWUzZjU2ZGUyYjhjYmJjZjY0ZGY2NDhkYTNm
ODVmYmE5MDc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIxLTEwLTAxICBDYWl0
bG4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0
IFtFeHBvc2VkPSpdIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIHNob3J0aGFuZCB0byBleHBvc2UgaW50ZXJm
YWNlcy9hdHRyaWJ1dGVzIG9uIFdpbmRvdywgV29ya2VycyosCisgICAgICAgIGFuZCB0aGUgZm9y
dGhjb21pbmcgU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBTZWUgaHR0cHM6
Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNzdWVzLzQ2OCBhbmQKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvcHVsbC81MjYgZm9yIGRldGFpbHMuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChzaG91bGRQ
cm9wZXJ0eUJlRXhwb3NlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
Z0ZvckV4cG9zZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgor
ICAgICAgICAocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0V4cG9zZWRTdGFy
LmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2lu
ZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3Ry
dWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNFeHBvc2VkU3Rhci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBv
c2VkU3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpKU0V4cG9zZWRTdGFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNF
eHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5
cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0c0JvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3Nl
ZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVy
YXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhw
b3NlZFN0YXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRT
dGFyOjphbmFseXplSGVhcCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rh
cjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBv
c2VkU3Rhci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6d3JhcHBlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJD
b25zdHJ1Y3RvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNXb3Jr
ZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzV29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRs
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBw
bGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGw6CisKIDIwMjEt
MTEtMDIgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lG
Q10gUGFzcyBpbiB0aGUgdmlzdWFsIG9yZGVyIGxpc3QgdG8gZGlzcGxheSBib3ggY29uc3RydWN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KaW5kZXggOGEwMjZlNjJlZmYwZDNmZWJmYTM1NWMwZDliYTMzZjg0YTljZTg5NC4uY2MwNzRk
ZTdhOGZlYzdhNjc0YTcyMTJlZjhjMDRjMTZjMDMxMTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtNDg4LDEyICs0ODgsMTUg
QEAgc3ViIFByb2Nlc3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzCiB9CiAKICMg
QXR0cmlidXRlcyAvIE9wZXJhdGlvbnMgLyBDb25zdGFudHMgb2Ygc3VwcGxlbWVudGFsIGludGVy
ZmFjZXMgY2FuIGhhdmUgYW4gW0V4cG9zZWQ9WFhdIGF0dHJpYnV0ZSB3aGljaCByZXN0cmljdHMK
LSMgb24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJlIGV4cG9zZWQuCisjIG9u
IHdoaWNoIGdsb2JhbCBjb250ZXh0cyB0aGV5IHNob3VsZCBiZSBleHBvc2VkLiBbRXhwb3NlZD0q
XSB3aWxsIGV4cG9zZSB0aGUgYXR0cmlidXRlIG9uIHRoZSBpbnRlcmZhY2UgZm9yIGFsbAorIyBz
dXBwb3J0ZWQgZ2xvYmFsIGNvbnRleHRzLgogc3ViIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkCiB7
CiAgICAgbXkgKCRjb250ZXh0LCAkdGFyZ2V0KSA9IEBfOwogCiAgICAgbXkgJGV4cG9zZWRBdHRy
aWJ1dGUgPSAkdGFyZ2V0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5k
b3ciOworICAgIHJldHVybiAxIGlmICRleHBvc2VkQXR0cmlidXRlIGVxICIqIjsKKwogICAgICRl
eHBvc2VkQXR0cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAxLCAtMSkgaWYgc3Vi
c3RyKCRleHBvc2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7CiAgICAgbXkgQHRhcmdldEdsb2Jh
bENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNmFh
YmEzOGYzNWViZjE4MTAxMmFhNjA4MDVhNTdkZDkxN2U0YTkyNy4uMzVhOTNkZGMzZWVjZjYxMDMy
MjQyNWMwNTA1MTQ1ZGEwMzNiYTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM5NDYsNiArMzk0Niw4IEBAIHN1YiBH
ZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4cG9zZWQKICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7CiAKICAgICBteSAkZXhw
b3NlZCA9ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfTsKKyAgICByZXR1
cm4gaWYgJGV4cG9zZWQgZXEgIioiOworCiAgICAgaWYgKHJlZigkZXhwb3NlZCkgZXEgJ0FSUkFZ
JykgewogICAgICAgICBpZiAoc2NhbGFyKEAkZXhwb3NlZCkgPiAxKSB7CiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBh
cnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmlu
ZGV4IDMxZTQyNjMwMWU4MDNkNzFjNjMyODc0MjM4NTk0NGMwMzM1NDAzYzcuLmFhMGQ5MDE2M2Rj
NjlkZTMwMzE4MjI0ZWEzYmZjZDNiYzFhNGFmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0yMzcyLDYgKzIzNzIsMTAgQEAgc3ViIHBhcnNl
RXh0ZW5kZWRBdHRyaWJ1dGVSZXN0MgogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgk
c2VsZi0+Z2V0VG9rZW4oKSwgIikiLCBfX0xJTkVfXyk7CiAgICAgICAgIHJldHVybiBcQGFyZ3Vt
ZW50czsKICAgICB9CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICIqIikgeworICAgICAgICAk
c2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIioiLCBfX0xJTkVfXyk7
CisgICAgICAgIHJldHVybiAiKiI7CisgICAgfQogICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElk
ZW50aWZpZXJUb2tlbikgewogICAgICAgICBteSAkbmFtZSA9ICRzZWxmLT5wYXJzZU5hbWUoKTsK
ICAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlUmVzdDMoJG5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNz
LWlkbHMucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRs
cy5wbAppbmRleCA3OTIxMmNlMGMyN2I5YWViMGI0YzlkY2RjY2ZmM2ViOTA1NDgwY2UyLi5mNzlh
ZDA4MTA2OGZiMGU4Y2U0Y2Y0OTBmYjRlNGIzMmMwNjJkZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbApAQCAtNTUsNiArNTUs
MTYgQEAgbXkgJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwczsKIG15ICRpZGxBdHRyaWJ1dGVzRmls
ZTsKIG15ICR2ZXJib3NlID0gMDsKIAorbXkgQHN1cHBvcnRlZEdsb2JhbENvbnRleHRzID0gKAor
ICAgICJXaW5kb3ciLAorICAgICJXb3JrZXIiLAorICAgICJEZWRpY2F0ZWRXb3JrZXIiLAorICAg
ICJTZXJ2aWNlV29ya2VyIiwKKyAgICAiV29ya2xldCIsCisgICAgIlBhaW50V29ya2xldCIsCisg
ICAgIkF1ZGlvV29ya2xldCIKKyk7CisKICMgVG9nZ2xlIHRoaXMgdG8gdmFsaWRhdGUgdGhhdCB0
aGUgZmFzdCByZWd1bGFyIGV4cHJlc3Npb24gYmFzZWQgInBhcnNpbmciIHVzZWQKICMgaW4gdGhp
cyBmaWxlIHByb2R1Y2VzIHRoZSBzYW1lIHJlc3VsdHMgYXMgdGhlIHNsb3dlciByZXN1bHRzIHBy
b2R1Y2VkIGJ5IHRoZQogIyBjb21wbGV0ZSBJRExQYXJzZXIuCkBAIC0yNDYsNyArMjU2LDExIEBA
IGZvcmVhY2ggbXkgJGlkbEZpbGVOYW1lIChzb3J0IGtleXMgJWlkbEZpbGVOYW1lSGFzaCkgewog
ICAgICAgICBpZiAoISRleHBvc2VkQXR0cmlidXRlKSB7CiAgICAgICAgICAgICBkaWUgIkVSUk9S
OiBObyBbRXhwb3NlZF0gZXh0ZW5kZWQgYXR0cmlidXRlIHNwZWNpZmllZCBmb3IgaW50ZXJmYWNl
IGluICRpZGxGaWxlTmFtZSI7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCRleHBvc2VkQXR0cmli
dXRlIGVxICIqIikgeworICAgICAgICAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSAiKCIgLiBqb2lu
KCcsJywgQHN1cHBvcnRlZEdsb2JhbENvbnRleHRzKSAuICIpIjsKKyAgICAgICAgfQogICAgICAg
ICAkZXhwb3NlZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwgLTEpIGlm
IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEgIigiOworCiAgICAgICAgIG15IEBn
bG9iYWxDb250ZXh0cyA9IHNwbGl0KCIsIiwgJGV4cG9zZWRBdHRyaWJ1dGUpOwogICAgICAgICBm
b3JlYWNoIG15ICRnbG9iYWxDb250ZXh0IChAZ2xvYmFsQ29udGV4dHMpIHsKICAgICAgICAgICAg
IG15ICgkYXR0cmlidXRlQ29kZSwgJHdpbmRvd0FsaWFzZXMpID0gR2VuZXJhdGVDb25zdHJ1Y3Rv
ckF0dHJpYnV0ZXMoJGludGVyZmFjZU5hbWUsICRleHRlbmRlZEF0dHJpYnV0ZXMsICRnbG9iYWxD
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuaWRsCmluZGV4IDEwZGFlMTEwN2QzMzRiYzhmNDNkZjJmNGY3ZTg0YTk4M2MzNWQ2NmYuLjE3
NWM0N2NmYTg5MWZmZmJjNWEzMmFhOTZmZWI3MWFlMWYzNDFjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbApAQCAtMSwyICsxLDMgQEAK
IHBhcnRpYWwgaW50ZXJmYWNlIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlIHsKKyAgICBhdHRyaWJ1
dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2VkU3RhcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3Jz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25z
dHJ1Y3RvcnMuaWRsCmluZGV4IGViN2UyZWYxMzk3MmFjMDYwNjBiZGFhZmZkNDNkNmJmMDU3ZTQ5
YjkuLmY0MDZiYjI0YmFjMTk0NDYxOGE4MjE4Y2Q1NjBlNDM5MGFhZTU2YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3Rv
cnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5k
b3dDb25zdHJ1Y3RvcnMuaWRsCkBAIC0xLDUgKzEsNiBAQAogcGFydGlhbCBpbnRlcmZhY2UgRE9N
V2luZG93IHsKICAgICBhdHRyaWJ1dGUgRE9NV2luZG93Q29uc3RydWN0b3IgRE9NV2luZG93Owor
ICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogICAgIGF0
dHJpYnV0ZSBFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciBFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3c7CiAgICAgYXR0cmlidXRlIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3Ry
dWN0b3IgVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM7CiAgICAgYXR0cmlidXRlIFRlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IgVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bAppbmRleCAyYTMwZGEwN2EzOTg2YTYyMGVjYjIzYTRhYTA4ZDlkMzg0ODU4MGUwLi5kYTU5YTUx
ODRlMDhmNzdjNmI1OTM1MWMxMDIwNDFlN2JlZjBmNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKQEAgLTEsMyArMSw0IEBA
CiBwYXJ0aWFsIGludGVyZmFjZSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgYXR0
cmlidXRlIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IgRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU7CisgICAgYXR0cmlidXRlIEV4cG9zZWRTdGFyQ29uc3RydWN0b3IgRXhw
b3NlZFN0YXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0V4cG9zZWRTdGFyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9FeHBvc2VkU3Rhci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE0ZjlkOTlhNjFhZDE5MTRmOGI0MWVh
NDJjZmJmOTkwYTQ0MjQ0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9FeHBvc2VkU3Rhci5pZGwKQEAgLTAsMCArMSw3IEBACitbCisJRXhw
b3NlZD0qCitdIGludGVyZmFjZSBFeHBvc2VkU3RhciA6IEV2ZW50VGFyZ2V0IHsKKwlbRXhwb3Nl
ZD0qXSB1bmRlZmluZWQgb3BlcmF0aW9uRm9yQWxsQ29udGV4dHMoKTsKKwlbRXhwb3NlZD1XaW5k
b3ddIHVuZGVmaW5lZCBvcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMoKTsKKwlbRXhwb3Nl
ZD1Xb3JrZXJdIHVuZGVmaW5lZCBvcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMoKTsKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNE
T01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RE9NV2luZG93LmNwcAppbmRleCBlNDY5MDQ5NTJiZTU3YWQ3YjI2MDQ1MTk2NjViNjYxODg3MDk1
OTYzLi5jOWEzOGQ2MmExNmIyNGJhMGZjNjA1ODEwOTNmZjA1YWIyOTU5NWI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRv
dy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCisjaW5jbHVkZSAiSlNFeHBvc2VkU3Rhci5oIgogI2luY2x1ZGUgIkpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93LmgiCiAjaW5jbHVkZSAiSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5o
IgogI2luY2x1ZGUgIkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuaCIKQEAgLTY0LDYgKzY1
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNET01XaW5kb3dDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0RPTVdpbmRvd19ET01XaW5kb3dDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9yKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93X0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzRE9NV2luZG93X1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGVDb25zdHJ1Y3Rvcik7CkBAIC04NCw3ICs4Niw3IEBAIHVzaW5nIEpTRE9NV2lu
ZG93RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU0RP
TVdpbmRvdz47CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RPTVdp
bmRvd1RhYmxlSW5kZXhbMzddID0gewogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1LCAzNSB9LAor
ICAgIHsgNiwgMzUgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKQEAgLTk3LDM1ICs5OSwzNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNET01XaW5kb3dUYWJsZUluZGV4WzM3XSA9IHsKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQsIDMzIH0sCisgICAgeyA1
LCAzMyB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyLCAtMSB9LAotICAgIHsgMSwgMzIgfSwK
KyAgICB7IDMsIC0xIH0sCisgICAgeyAyLCAzMiB9LAogICAgIHsgMCwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAorICAgIHsgMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA5LCAtMSB9LAorICAgIHsgMTAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzLCAzNCB9LAotICAgIHsgNiwgMzYgfSwKLSAgICB7IDcs
IC0xIH0sCisgICAgeyA0LCAzNCB9LAorICAgIHsgNywgMzYgfSwKICAgICB7IDgsIC0xIH0sCi0g
ICAgeyAxMCwgLTEgfSwKKyAgICB7IDksIC0xIH0sCisgICAgeyAxMSwgLTEgfSwKIH07CiAKIAog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTRE9NV2luZG93VGFibGVWYWx1ZXNbXSA9CiB7
CiAgICAgeyAiRE9NV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19ET01XaW5kb3dDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKKyAgICB7ICJFeHBvc2VkU3RhciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfRXhw
b3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93X0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAogICAgIHsgIlRlc3RDb25kaXRpb25hbEluY2x1ZGVzIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RP
TVdpbmRvd19UZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsg
IlRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19UZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LApAQCAtMTQyLDcgKzE0NSw3IEBA
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzW10gPQog
ICAgIHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93X1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNET01XaW5kb3dUYWJsZSA9IHsgMTEsIDMxLCB0cnVlLCBKU0RPTVdp
bmRvdzo6aW5mbygpLCBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzLCBKU0RPTVdpbmRvd1RhYmxlSW5k
ZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNET01XaW5kb3dUYWJsZSA9IHsgMTIsIDMx
LCB0cnVlLCBKU0RPTVdpbmRvdzo6aW5mbygpLCBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzLCBKU0RP
TVdpbmRvd1RhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2lu
ZG93RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkRPTVdpbmRvdyIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dET01Db25z
dHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRE9NV2luZG93RE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTIyNSw2ICsyMjgsMTcgQEAgSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzRE9NV2luZG93X0RPTVdpbmRvd0NvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGkKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTRE9NV2luZG93Pjo6Z2V0PGpzRE9N
V2luZG93X0RPTVdpbmRvd0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
RE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTRE9NV2luZG93JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNF
RF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNFeHBvc2VkU3Rhcjo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2Jq
ZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93X0V4cG9zZWRT
dGFyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OmdldDxqc0RPTVdpbmRvd19FeHBv
c2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBhdHRyaWJ1dGVOYW1lKTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzRE9NV2luZG93
X0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTVdpbmRvdyYgdGhpc09iamVjdCkKIHsKICAgICBV
TlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggYTlkNjE1ODg2MDk4Nzk1NjQ1NjI3OGQ5ZTQ0
MGFiOTJjMzUwNDRiYi4uMzMwNzM2NGVjMDQzMTFhN2UxODIzZmQ2NmUyMWFlZjA3NjY2Mzk1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgpAQCAtNTAsMjMgKzUxLDI4IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVj
dG9yKTsKIAogdXNpbmcgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4WzJdID0g
eworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVUYWJsZUluZGV4WzVdID0gewogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAwLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIDQgfSwKKyAg
ICB7IDEsIC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVf
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJFeHBv
c2VkU3RhciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3Rh
ckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxl
VmFsdWVzLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9Oworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDIs
IDMsIHRydWUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlVGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9
OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNDcsNiArMTUzLDE3IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlPjo6Z2V0PGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIHJldHVybiBKU0V4cG9zZWRTdGFyOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT46OmdldDxqc0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOworfQorCiBKU0M6
Oklzb1N1YnNwYWNlKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE3ZGRmNDA2OGMxNDczM2VjOWU2MTgzODk1NjQzNjZmYTVmM2E2NzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2Vk
U3Rhci5jcHAKQEAgLTAsMCArMSwzMDggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIuaCIKKworI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1
ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRC
YXNlLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpT
RE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCisj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFj
cm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CisjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKKy8vIEZ1bmN0aW9ucworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uRm9yQWxsQ29u
dGV4dHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclBy
b3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cyk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25f
b3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzKTsKKworLy8gQXR0cmlidXRlcworCitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpOwor
CitjbGFzcyBKU0V4cG9zZWRTdGFyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9i
amVjdDsKKyAgICBzdGF0aWMgSlNFeHBvc2VkU3RhclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNFeHBvc2VkU3RhclByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0V4cG9zZWRTdGFyUHJvdG90eXBlPih2bS5o
ZWFwKSkgSlNFeHBvc2VkU3RhclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsK
KyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNFeHBvc2VkU3RhclByb3RvdHlwZSwgQmFzZSk7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNFeHBvc2VkU3RhclByb3RvdHlwZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
ICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0K
KworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQcm90b3R5cGUsIEpTRXhwb3NlZFN0
YXJQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU0V4cG9zZWRTdGFyRE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU0V4cG9zZWRTdGFyPjsKKwordGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJFeHBvc2VkU3RhciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yKSB9OworCit0ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIEpTRXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xv
YmFsT2JqZWN0KTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEpTRXhwb3NlZFN0YXJET01Db25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJFeHBvc2VkU3RhciJfcyk7CisgICAgbV9vcmlnaW5hbE5h
bWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU0V4cG9zZWRTdGFyOjpwcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlKTsKK30KKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0V4cG9zZWRTdGFyUHJvdG90eXBlVGFibGVWYWx1ZXNb
XSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRXhwb3NlZFN0YXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKKyAgICB7ICJvcGVyYXRpb25Gb3JBbGxDb250ZXh0cyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNFeHBvc2VkU3Rh
clByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkZvckFsbENvbnRleHRzKSwgKGludHB0cl90KSAo
MCkgfSB9LAorICAgIHsgIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNFeHBvc2Vk
U3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cyksIChp
bnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJvcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29u
dGV4dHMpLCAoaW50cHRyX3QpICgwKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNFeHBv
c2VkU3RhclByb3RvdHlwZTo6c19pbmZvID0geyAiRXhwb3NlZFN0YXIiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRXhwb3NlZFN0YXJQcm90
b3R5cGUpIH07CisKK3ZvaWQgSlNFeHBvc2VkU3RhclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRp
Y1Byb3BlcnRpZXModm0sIEpTRXhwb3NlZFN0YXI6OmluZm8oKSwgSlNFeHBvc2VkU3RhclByb3Rv
dHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gZmFsc2U7CisgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7Cisg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigib3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzIiksIHN0cmxl
bigib3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzIikpOworICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFs
U2NvcGUoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
KyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm9wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250
ZXh0cyIpLCBzdHJsZW4oIm9wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyIpKTsKKyAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBpZiAoaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgIGZs
YXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VU
X1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFN0YXI6OnNfaW5m
byA9IHsgIkV4cG9zZWRTdGFyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU0V4cG9zZWRTdGFyKSB9OworCitKU0V4cG9zZWRTdGFyOjpKU0V4
cG9zZWRTdGFyKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LCBSZWY8RXhwb3NlZFN0YXI+JiYgaW1wbCkKKyAgICA6IEpTRXZlbnRUYXJnZXQoc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNFeHBv
c2VkU3Rhcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGlj
X2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgRXhwb3NlZFN0YXI+Ojp2
YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4g
dGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIp
OworCit9CisKK0pTT2JqZWN0KiBKU0V4cG9zZWRTdGFyOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU0V4cG9z
ZWRTdGFyUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNFdmVudFRhcmdl
dDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7Cit9CisKK0pTT2JqZWN0KiBKU0V4cG9z
ZWRTdGFyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNFeHBvc2VkU3Rhcj4odm0sIGdsb2Jh
bE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNFeHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU0V4cG9zZWRTdGFyRE9NQ29uc3RydWN0b3IsIERPTUNvbnN0cnVj
dG9ySUQ6OkV4cG9zZWRTdGFyPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNFeHBvc2Vk
U3RhckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNFeHBvc2VkU3RhclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKwor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRXhwb3NlZFN0YXJQcm90b3R5cGVG
dW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0c0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQor
eworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5vcGVyYXRpb25Gb3JBbGxDb250ZXh0cygpOyB9KSkpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkZvckFsbENv
bnRleHRzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+Ojpj
YWxsPGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0
c0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAib3BlcmF0aW9uRm9yQWxs
Q29udGV4dHMiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRXhw
b3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNC
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRz
KCk7IH0pKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0V4cG9zZWRTdGFyUHJv
dG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+OjpjYWxsPGpzRXhwb3NlZFN0YXJQ
cm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNCb2R5PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250
ZXh0cyIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNFeHBvc2Vk
U3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0c0JvZHko
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5k
ZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5
cGUoYXV0bykgeyByZXR1cm4gaW1wbC5vcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMoKTsg
fSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRXhwb3NlZFN0YXJQcm90b3R5
cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNFeHBvc2VkU3Rhcj46OmNhbGw8anNFeHBvc2VkU3RhclByb3Rv
dHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0c0JvZHk+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAib3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRz
Iik7Cit9CisKK0pTQzo6SXNvU3Vic3BhY2UqIEpTRXhwb3NlZFN0YXI6OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50
RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvckV4cG9zZWRTdGFyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0V4
cG9zZWRTdGFyPiB8fCAhSlNFeHBvc2VkU3Rhcjo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U0V4cG9zZWRTdGFyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNFeHBvc2VkU3Rhcik7CisgICAg
ZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNFeHBvc2VkU3Rhcik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvckV4cG9zZWRTdGFyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQorICAgIHZvaWQgKCpteVZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBK
U0M6OlNsb3RWaXNpdG9yJikgPSBKU0V4cG9zZWRTdGFyOjp2aXNpdE91dHB1dENvbnN0cmFpbnRz
OworICAgIHZvaWQgKCpqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwg
SlNDOjpTbG90VmlzaXRvciYpID0gSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7
CisgICAgaWYgKG15VmlzaXRPdXRwdXRDb25zdHJhaW50ICE9IGpzQ2VsbFZpc2l0T3V0cHV0Q29u
c3RyYWludCkKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBw
ZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAg
ICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNFeHBvc2VkU3Rhcjo6YW5hbHl6ZUhlYXAoSlND
ZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQoreworICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNFeHBvc2VkU3Rhcio+KGNlbGwpOworICAgIGFuYWx5emVyLnNldFdyYXBw
ZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAgIGlmICh0
aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5emVyLnNl
dExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKKyAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBh
bmFseXplcik7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZP
Uk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0
ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdFeHBvc2VkU3RhckBXZWJDb3JlQEA2
QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJD
b3JlMTFFeHBvc2VkU3RhckVbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxFeHBvc2VkU3Rhcj4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJ
TkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBn
ZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lk
KiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdFeHBvc2VkU3RhckBX
ZWJDb3JlQEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0g
Jl9aVFZON1dlYkNvcmUxMUV4cG9zZWRTdGFyRVsyXTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhp
cyBmYWlscyBFeHBvc2VkU3RhciBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0
byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8g
dGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHlt
b3JwaGljPEV4cG9zZWRTdGFyPjo6dmFsdWUsICJFeHBvc2VkU3RhciBpcyBub3QgcG9seW1vcnBo
aWMiKTsKKworICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZl
IGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIEV4cG9zZWRTdGFyIGhhcyBzdWJjbGFz
c2VzLiBJZiBFeHBvc2VkU3RhciBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAv
LyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgRXhwb3NlZFN0YXIgeW91IHRvIG9wdCBv
dXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVW
YWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAg
UkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50
ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8RXhwb3NlZFN0YXI+KGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEV4cG9zZWRTdGFyJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK0V4cG9zZWRTdGFyKiBKU0V4
cG9zZWRTdGFyOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNFeHBvc2VkU3Rhcio+KHZt
LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODgyODQ4Y2ZhMDQ2
NzM0YmM4Yjc4YjM4ODg2YWE3MTUxNmMzMGJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuaApAQCAtMCwwICsx
LDgwIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiRXhwb3NlZFN0YXIuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJK
U0V2ZW50VGFyZ2V0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNFeHBvc2Vk
U3RhciA6IHB1YmxpYyBKU0V2ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNFdmVudFRhcmdldDsKKyAgICB1c2luZyBET01XcmFwcGVkID0gRXhwb3NlZFN0YXI7CisgICAg
c3RhdGljIEpTRXhwb3NlZFN0YXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RXhwb3NlZFN0YXI+JiYgaW1wbCkK
KyAgICB7CisgICAgICAgIEpTRXhwb3NlZFN0YXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNFeHBvc2VkU3Rhcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU0V4
cG9zZWRTdGFyKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0
dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGlj
IEV4cG9zZWRTdGFyKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0K
KworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJz
cGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJz
cGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMg
dm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOworICAgIEV4cG9z
ZWRTdGFyJiB3cmFwcGVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFeHBvc2VkU3RhciY+KEJhc2U6OndyYXBwZWQoKSk7CisgICAgfQorcHJvdGVjdGVkOgorICAg
IEpTRXhwb3NlZFN0YXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxF
eHBvc2VkU3Rhcj4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307
CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCosIEV4cG9zZWRTdGFyJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRXhwb3NlZFN0YXIqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlND
OjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgUmVmPEV4cG9zZWRTdGFyPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8RXhwb3NlZFN0YXI+JiYgaW1w
bCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8RXhwb3NlZFN0
YXI+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU0V4cG9zZWRTdGFyOworICAgIHVzaW5n
IFRvV3JhcHBlZFJldHVyblR5cGUgPSBFeHBvc2VkU3Rhcio7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXgg
ZTRjZjViNjg5OTc3NDZiOTRhZWQ1N2E1ODBhNjgwNDUwMTRjZjk4NC4uMDljNGE3OTVkNGFkNWVl
MTgxMjEzZWQ0N2E5MzNlNDJlMjZkY2U3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIuaCIKICNp
bmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBA
IC00OSwxMyArNTAsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogCiB1c2luZyBKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxl
SW5kZXhbMl0gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDAsIC0xIH0sCiB9OwpAQCAtNjMs
MTAgKzY3LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKIAogc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZVZhbHVlc1tdID0KIHsKKyAg
ICB7ICJFeHBvc2VkU3RhciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9FeHBv
c2VkU3RhckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlBhaW50V29ya2xldEdsb2JhbFNjb3Bl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZTo6aW5mbygpLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVWYWx1ZXMs
IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6aW5mbygpLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
VGFibGVWYWx1ZXMsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CiB0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlRE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEz
Niw2ICsxNDEsMTcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwog
fQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9FeHBv
c2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNF
RF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNFeHBvc2VkU3Rhcjo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2Jq
ZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1
dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGU+OjpnZXQ8anNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVj
dG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1l
KTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVf
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSYgdGhpc09iamVj
dCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAwNTU2ODVkMGQwZDUzMzY0MWZk
NmE3ZDQ1Y2VhZTU3MzIwZjlkYTdjLi5jYzBkYTMwM2ZhNDQzYTViZDE2YTk3YmYyNGY1NGVlZDAw
MDZiZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01HbG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKKyNpbmNsdWRlICJKU0V4cG9zZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC00OSwxMyArNTAsMTYg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlX1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yKTsKIAogdXNpbmcgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4WzJd
ID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlVGFibGVJbmRleFs0XSA9IHsKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgLTEgfSwKIH07CkBAIC02MywxMCArNjcs
MTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CisgICAgeyAi
RXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRT
dGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVl
cywgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDIsIDMsIHRydWUs
IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlVGFibGVWYWx1ZXMsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9
OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVE
T01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQpAQCAtMTM2LDYgKzE0MSwxNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KgogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzU2VydmljZVdvcmtlckds
b2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0
KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4g
SlNFeHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCksICZ0aGlzT2JqZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT46OmdldDxqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9F
eHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlX1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggODZmYTgxYWJiNzg4
MjEwMzZlYjY3NWU3MjNkZDJiNGI3Yzc0ZjlkNi4uMWIzOTg0OWI0NWM1ZGRjNTIyMzhmNGU3MGE5
ZTEwNmRjZDA4ZGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJK
U0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5o
IgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIuaCIKICNpbmNsdWRlICJKU0V4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdy5oIgogI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZC5oIgogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKQEAgLTU0LDYgKzU1LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIC8vIEF0dHJpYnV0ZXMKIAogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1
Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtlckdsb2JhbFNj
b3BlX0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzV29ya2VyR2xvYmFsU2NvcGVfVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzV29ya2VyR2xvYmFsU2NvcGVfVGVzdE5vZGVDb25zdHJ1Y3Rvcik7CkBAIC02Nywy
OCArNjksMjkgQEAgdXNpbmcgSlNXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNXb3IKIAogc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4WzE4XSA9IHsK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgMTYgfSwKLSAgICB7IDUsIC0xIH0sCi0gICAgeyAt
MSwgLTEgfSwKKyAgICB7IDEsIDE2IH0sCisgICAgeyA2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAg
eyAwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzLCAtMSB9LAorICAgIHsgNCwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAotICAgIHsgNCwgLTEgfSwKKyAgICB7IDUsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDEsIDE3IH0sCi0gICAgeyAyLCAtMSB9LAorICAgIHsgMiwgMTcgfSwKKyAg
ICB7IDMsIC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1dvcmtl
ckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAg
ICB7ICJFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2Nv
cGVfRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxT
Y29wZV9UZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CiAgICAgeyAiVGVzdE5vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVfVGVzdE5vZGVD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTk3LDcgKzEwMCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAiV29ya2Vy
R2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVfV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNXb3Jr
ZXJHbG9iYWxTY29wZVRhYmxlID0geyA2LCAxNSwgdHJ1ZSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6
aW5mbygpLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTV29ya2VyR2xvYmFsU2Nv
cGVUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTV29ya2VyR2xvYmFsU2Nv
cGVUYWJsZSA9IHsgNywgMTUsIHRydWUsIEpTV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNX
b3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRl
eCB9OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJHbG9iYWxTY29wZURPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJXb3JrZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3JrZXJHbG9iYWxTY29w
ZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxT
Y29wZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNzcsNiArMTgwLDE3IEBA
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dv
cmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTV29ya2VyR2xvYmFsU2NvcGUm
IHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIHJldHVybiBKU0V4cG9zZWRTdGFyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNXb3JrZXJHbG9iYWxTY29wZT46OmdldDxqc1dvcmtlckdsb2JhbFNjb3BlX0V4cG9zZWRTdGFy
Q29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJp
YnV0ZU5hbWUpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrZXJHbG9iYWxTY29w
ZV9FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrZXJHbG9iYWxTY29wZSYgdGhpc09iamVjdCkK
IHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xl
dEdsb2JhbFNjb3BlLmNwcAppbmRleCA1NDE3MjNmZDUxODUwMWU5MzFlZDJjMWJhZTk0NWI4NzYx
Y2JkNmRmLi5lODk0ZGM0NTEyY2VhYzRhYzcxZjIwZmMwZmFmODNmMmQwODlkMzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJKU0V4cG9z
ZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgpAQCAtNDksMjQgKzUwLDI4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVz
CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzV29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNXb3JrbGV0
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc1dvcmtsZXRHbG9iYWxTY29wZV9Xb3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3Rvcik7CiAKIHVzaW5nIEpTV29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1dvcmtsZXRHbG9iYWxTY29wZT47CiAK
IC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTV29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKLSAgICB7IDAsIC0xIH0sCitz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNXb3JrbGV0R2xvYmFsU2NvcGVU
YWJsZUluZGV4WzRdID0geworICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAogfTsKIAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZVZhbHVlc1tdID0KIHsKKyAgICB7ICJFeHBv
c2VkU3RhciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICAgICB7ICJXb3JrbGV0R2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2xl
dEdsb2JhbFNjb3BlX1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAot
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtsZXRHbG9iYWxTY29wZVRhYmxlID0geyAxLCAx
LCB0cnVlLCBKU1dvcmtsZXRHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtsZXRHbG9iYWxTY29w
ZVRhYmxlVmFsdWVzLCBKU1dvcmtsZXRHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKK3N0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZSA9IHsgMiwgMywgdHJ1ZSwg
SlNXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZVZh
bHVlcywgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CiB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJXb3JrbGV0R2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IpIH07
CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNDYsNiArMTUxLDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dvcmtsZXRHbG9iYWxTY29wZTo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrbGV0
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrbGV0R2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCit7
CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU0V4
cG9zZWRTdGFyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgJnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNXb3JrbGV0
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBh
dHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTV29ya2xldEdsb2Jh
bFNjb3BlPjo6Z2V0PGpzV29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JH
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwor
fQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrbGV0R2xvYmFsU2NvcGVfV29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTV29ya2xldEdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9Q
QVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCmluZGV4IDNiNWZhY2E0NDliMjRkZjllNjYwNjhkYmU5
NzEyY2JkMzYwNzBkMjMuLmI5M2M4OTYxNjVhMDhkODgzZDExMjBhYTZiNWY2MmUyNDU1Yzg0YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9QYWludFdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bApAQCAtMSwzICsxLDQgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFBhaW50V29ya2xldEdsb2JhbFNj
b3BlIHsKKyAgICBhdHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2VkU3RhcjsK
ICAgICBhdHRyaWJ1dGUgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciBQYWludFdv
cmtsZXRHbG9iYWxTY29wZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnMuaWRsCmluZGV4IDBlY2ZiMGFmYjg0NDc3MzY2ZTQwMGFlNGJjOTJh
OTRjMjU1ZjNkZmEuLjE3NDkxZTU3OTVlNGU4OGM4YWM4N2E1ZjgwYTZhZjI3ZDI2ZGE5NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRs
CkBAIC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlIHsKKyAgICBhdHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2VkU3RhcjsK
ICAgICBhdHRyaWJ1dGUgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAK
aW5kZXggNzNhZmM1MDBkNWY0NTZjMWRjMzhmYzcxZDg5NjgxODJkZGJmMDYxOC4uYzEyMzIxNTI0
NjFhNmMyZWQyZTU0ODBhMmU3YzZkYjY4ODRiYTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVu
ZGVuY2llcy5kZXAKQEAgLTcsNiArNyw5IEBAIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aDogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBET01EZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5oOiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9ycy5pZGwKIFdlYkRPTURlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg6IERlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnMuaWRsOgorSlNFeHBvc2VkU3Rhci5oOiAKK0RPTUV4cG9zZWRTdGFyLmg6
IAorV2ViRE9NRXhwb3NlZFN0YXIuaDogCiBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oOiAK
IERPTUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oOiAKIFdlYkRPTUV4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdy5oOiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCmlu
ZGV4IDY0YTFjOTc0NDQ3NjhmNDJjNDU4MGFjNmM5OWZmM2M5MDE1YTAwOGMuLjBkMmI5NzY2NTk0
NzE3Njk2OTUwZTA0NGE3ZWE2ZTEwYWZmNDA0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1dvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzLmlkbApAQCAtMSw0ICsxLDUgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFdv
cmtlckdsb2JhbFNjb3BlIHsKKyAgICBhdHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBF
eHBvc2VkU3RhcjsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3Ry
dWN0b3IgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OwogICAgIGF0dHJpYnV0ZSBUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IgVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZDsKICAgICBhdHRyaWJ1dGUgVGVzdE5vZGVDb25zdHJ1Y3RvciBUZXN0Tm9k
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggNTlk
MGNmY2NkYjJkOGUyOTBhMjJiYzFhM2MyYTUyOWEwZjM3ZGJlMy4uYjVmYWVlNmY1MWZiMzE1NzI1
ZjdiNjA4ZTNkNjRlZDY5MTY3ZGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1dvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5pZGwKQEAgLTEsMyArMSw0IEBACiBwYXJ0aWFsIGludGVyZmFjZSBXb3JrbGV0
R2xvYmFsU2NvcGUgeworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9z
ZWRTdGFyOwogICAgIGF0dHJpYnV0ZSBXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciBXb3Jr
bGV0R2xvYmFsU2NvcGU7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443115</attachid>
            <date>2021-11-02 11:40:07 -0700</date>
            <delta_ts>2021-11-02 12:30:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231082-20211102184006.patch</filename>
            <type>text/plain</type>
            <size>48944</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBlMDExOWRhZDAyMDdh
OWNmODEzYjkyMDFlZDAxMDI5YTVmYzI3YS4uOTE1NjI5OTg5Y2Q1NWI0ZDAyNjMwMDg3ODIwZmM5
MzVjMTM5YmFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTExLTAyICBDYWl0
bG4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0
IFtFeHBvc2VkPSpdIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIHNob3J0aGFuZCB0byBleHBvc2UgaW50ZXJm
YWNlcy9hdHRyaWJ1dGVzIG9uIFdpbmRvdywgV29ya2VycyosCisgICAgICAgIGFuZCB0aGUgZm9y
dGhjb21pbmcgU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBTZWUgaHR0cHM6
Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNzdWVzLzQ2OCBhbmQKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvcHVsbC81MjYgZm9yIGRldGFpbHMuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChzaG91bGRQ
cm9wZXJ0eUJlRXhwb3NlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
Z0ZvckV4cG9zZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgor
ICAgICAgICAocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0V4cG9zZWRTdGFy
LmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2lu
ZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3Ry
dWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNFeHBvc2VkU3Rhci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBv
c2VkU3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpKU0V4cG9zZWRTdGFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNF
eHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5
cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0c0JvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3Nl
ZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVy
YXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhw
b3NlZFN0YXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRT
dGFyOjphbmFseXplSGVhcCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rh
cjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBv
c2VkU3Rhci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6d3JhcHBlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJD
b25zdHJ1Y3RvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
LmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzLmRlcDoKKwogMjAyMS0xMS0wMiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5
QGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFNhZmFyaSBvbiBpT1MgYW5kIG1hY09TIGFyZSBu
b3Qgc2VuZGluZyBhZCBjbGljayBhdHRyaWJ1dGlvbiByZXBvcnRzIGZvciBQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0KaW5kZXggOGEwMjZlNjJlZmYwZDNmZWJmYTM1NWMwZDliYTMzZjg0YTljZTg5
NC4uY2MwNzRkZTdhOGZlYzdhNjc0YTcyMTJlZjhjMDRjMTZjMDMxMTcxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtNDg4LDEy
ICs0ODgsMTUgQEAgc3ViIFByb2Nlc3NEaWN0aW9uYXJ5U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
CiB9CiAKICMgQXR0cmlidXRlcyAvIE9wZXJhdGlvbnMgLyBDb25zdGFudHMgb2Ygc3VwcGxlbWVu
dGFsIGludGVyZmFjZXMgY2FuIGhhdmUgYW4gW0V4cG9zZWQ9WFhdIGF0dHJpYnV0ZSB3aGljaCBy
ZXN0cmljdHMKLSMgb24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJlIGV4cG9z
ZWQuCisjIG9uIHdoaWNoIGdsb2JhbCBjb250ZXh0cyB0aGV5IHNob3VsZCBiZSBleHBvc2VkLiBb
RXhwb3NlZD0qXSB3aWxsIGV4cG9zZSB0aGUgYXR0cmlidXRlIG9uIHRoZSBpbnRlcmZhY2UgZm9y
IGFsbAorIyBzdXBwb3J0ZWQgZ2xvYmFsIGNvbnRleHRzLgogc3ViIHNob3VsZFByb3BlcnR5QmVF
eHBvc2VkCiB7CiAgICAgbXkgKCRjb250ZXh0LCAkdGFyZ2V0KSA9IEBfOwogCiAgICAgbXkgJGV4
cG9zZWRBdHRyaWJ1dGUgPSAkdGFyZ2V0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9
IHx8ICJXaW5kb3ciOworICAgIHJldHVybiAxIGlmICRleHBvc2VkQXR0cmlidXRlIGVxICIqIjsK
KwogICAgICRleHBvc2VkQXR0cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAxLCAt
MSkgaWYgc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7CiAgICAgbXkgQHRh
cmdldEdsb2JhbENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggNmFhYmEzOGYzNWViZjE4MTAxMmFhNjA4MDVhNTdkZDkxN2U0YTkyNy4uMzVhOTNkZGMz
ZWVjZjYxMDMyMjQyNWMwNTA1MTQ1ZGEwMzNiYTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM5NDYsNiArMzk0Niw4
IEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0ZvckV4cG9zZWQK
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7CiAKICAg
ICBteSAkZXhwb3NlZCA9ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfTsK
KyAgICByZXR1cm4gaWYgJGV4cG9zZWQgZXEgIioiOworCiAgICAgaWYgKHJlZigkZXhwb3NlZCkg
ZXEgJ0FSUkFZJykgewogICAgICAgICBpZiAoc2NhbGFyKEAkZXhwb3NlZCkgPiAxKSB7CiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFy
c2VyLnBtCmluZGV4IDMxZTQyNjMwMWU4MDNkNzFjNjMyODc0MjM4NTk0NGMwMzM1NDAzYzcuLmFh
MGQ5MDE2M2RjNjlkZTMwMzE4MjI0ZWEzYmZjZDNiYzFhNGFmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0yMzcyLDYgKzIzNzIsMTAgQEAg
c3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVSZXN0MgogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9r
ZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIikiLCBfX0xJTkVfXyk7CiAgICAgICAgIHJldHVy
biBcQGFyZ3VtZW50czsKICAgICB9CisgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICIqIikgewor
ICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIioiLCBf
X0xJTkVfXyk7CisgICAgICAgIHJldHVybiAiKiI7CisgICAgfQogICAgIGlmICgkbmV4dC0+dHlw
ZSgpID09IElkZW50aWZpZXJUb2tlbikgewogICAgICAgICBteSAkbmFtZSA9ICRzZWxmLT5wYXJz
ZU5hbWUoKTsKICAgICAgICAgcmV0dXJuICRzZWxmLT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlUmVz
dDMoJG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9w
cmVwcm9jZXNzLWlkbHMucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXBy
b2Nlc3MtaWRscy5wbAppbmRleCA3OTIxMmNlMGMyN2I5YWViMGI0YzlkY2RjY2ZmM2ViOTA1NDgw
Y2UyLi4zZTM1Yzg4ZDA1MDhlZDUwYmFhODY2M2Y0Y2JlNjk4MjQ0YTgyNjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbApAQCAt
NTUsNiArNTUsMTcgQEAgbXkgJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwczsKIG15ICRpZGxBdHRy
aWJ1dGVzRmlsZTsKIG15ICR2ZXJib3NlID0gMDsKIAorIyBPbmx5IHNwZWNpZmljIGNvbnRleHRz
LCBub3Qgb25lcyB3aGljaCBpbXBseSBtdWx0aXBsZSBjb250ZXh0cy4gVGhpcyB3aWxsIHByZXZl
bnQKKyMgdGhlIHNhbWUgYXR0cmlidXRlcy9pbnRlcmZhY2VzIGJlaW5nIGluc3RhbGxlZCBtdWx0
aXBsZSB0aW1lcyB3aGVuIFtFeHBvc2VkPSpdIGlzCisjIHVzZWQuCitteSBAc3VwcG9ydGVkR2xv
YmFsQ29udGV4dHMgPSAoCisgICAgIldpbmRvdyIsCisgICAgIkRlZGljYXRlZFdvcmtlciIsCisg
ICAgIlNlcnZpY2VXb3JrZXIiLAorICAgICJQYWludFdvcmtsZXQiLAorICAgICJBdWRpb1dvcmts
ZXQiCispOworCiAjIFRvZ2dsZSB0aGlzIHRvIHZhbGlkYXRlIHRoYXQgdGhlIGZhc3QgcmVndWxh
ciBleHByZXNzaW9uIGJhc2VkICJwYXJzaW5nIiB1c2VkCiAjIGluIHRoaXMgZmlsZSBwcm9kdWNl
cyB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBzbG93ZXIgcmVzdWx0cyBwcm9kdWNlZCBieSB0aGUK
ICMgY29tcGxldGUgSURMUGFyc2VyLgpAQCAtMjQ2LDcgKzI1NywxMSBAQCBmb3JlYWNoIG15ICRp
ZGxGaWxlTmFtZSAoc29ydCBrZXlzICVpZGxGaWxlTmFtZUhhc2gpIHsKICAgICAgICAgaWYgKCEk
ZXhwb3NlZEF0dHJpYnV0ZSkgewogICAgICAgICAgICAgZGllICJFUlJPUjogTm8gW0V4cG9zZWRd
IGV4dGVuZGVkIGF0dHJpYnV0ZSBzcGVjaWZpZWQgZm9yIGludGVyZmFjZSBpbiAkaWRsRmlsZU5h
bWUiOwogICAgICAgICB9CisgICAgICAgIGlmICgkZXhwb3NlZEF0dHJpYnV0ZSBlcSAiKiIpIHsK
KyAgICAgICAgICAgICRleHBvc2VkQXR0cmlidXRlID0gIigiIC4gam9pbignLCcsIEBzdXBwb3J0
ZWRHbG9iYWxDb250ZXh0cykgLiAiKSI7CisgICAgICAgIH0KICAgICAgICAgJGV4cG9zZWRBdHRy
aWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9z
ZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsKKwogICAgICAgICBteSBAZ2xvYmFsQ29udGV4dHMg
PSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmlidXRlKTsKICAgICAgICAgZm9yZWFjaCBteSAkZ2xv
YmFsQ29udGV4dCAoQGdsb2JhbENvbnRleHRzKSB7CiAgICAgICAgICAgICBteSAoJGF0dHJpYnV0
ZUNvZGUsICR3aW5kb3dBbGlhc2VzKSA9IEdlbmVyYXRlQ29uc3RydWN0b3JBdHRyaWJ1dGVzKCRp
bnRlcmZhY2VOYW1lLCAkZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkZ2xvYmFsQ29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAppbmRleCAx
MGRhZTExMDdkMzM0YmM4ZjQzZGYyZjRmN2U4NGE5ODNjMzVkNjZmLi4xNzVjNDdjZmE4OTFmZmZi
YzVhMzJhYTk2ZmViNzFhZTFmMzQxY2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9BdWRpb1dvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKQEAgLTEsMiArMSwzIEBACiBwYXJ0aWFsIGludGVy
ZmFjZSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSB7CisgICAgYXR0cmlidXRlIEV4cG9zZWRTdGFy
Q29uc3RydWN0b3IgRXhwb3NlZFN0YXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbApp
bmRleCBlYjdlMmVmMTM5NzJhYzA2MDYwYmRhYWZmZDQzZDZiZjA1N2U0OWI5Li5mNDA2YmIyNGJh
YzE5NDQ2MThhODIxOGNkNTYwZTQzOTBhYWU1NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3Jz
LmlkbApAQCAtMSw1ICsxLDYgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIERPTVdpbmRvdyB7CiAgICAg
YXR0cmlidXRlIERPTVdpbmRvd0NvbnN0cnVjdG9yIERPTVdpbmRvdzsKKyAgICBhdHRyaWJ1dGUg
RXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2VkU3RhcjsKICAgICBhdHRyaWJ1dGUgRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Owog
ICAgIGF0dHJpYnV0ZSBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yIFRlc3RDb25k
aXRpb25hbEluY2x1ZGVzOwogICAgIGF0dHJpYnV0ZSBUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0
ZUNvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggMmEzMGRh
MDdhMzk4NmE2MjBlY2IyM2E0YWEwOGQ5ZDM4NDg1ODBlMC4uZGE1OWE1MTg0ZTA4Zjc3YzZiNTkz
NTFjMTAyMDQxZTdiZWYwZjViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCkBAIC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRl
cmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgewogICAgIGF0dHJpYnV0ZSBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
OworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9FeHBvc2Vk
U3Rhci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRXhwb3NlZFN0
YXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBhNGY5ZDk5YTYxYWQxOTE0ZjhiNDFlYTQyY2ZiZjk5MGE0NDI0
NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvRXhwb3NlZFN0YXIuaWRsCkBAIC0wLDAgKzEsNyBAQAorWworCUV4cG9zZWQ9KgorXSBpbnRl
cmZhY2UgRXhwb3NlZFN0YXIgOiBFdmVudFRhcmdldCB7CisJW0V4cG9zZWQ9Kl0gdW5kZWZpbmVk
IG9wZXJhdGlvbkZvckFsbENvbnRleHRzKCk7CisJW0V4cG9zZWQ9V2luZG93XSB1bmRlZmluZWQg
b3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzKCk7CisJW0V4cG9zZWQ9V29ya2VyXSB1bmRl
ZmluZWQgb3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzKCk7Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAK
aW5kZXggZTQ2OTA0OTUyYmU1N2FkN2IyNjA0NTE5NjY1YjY2MTg4NzA5NTk2My4uYzlhMzhkNjJh
MTZiMjRiYTBmYzYwNTgxMDkzZmYwNWFiMjk1OTViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1
ZGUgIkpTRXhwb3NlZFN0YXIuaCIKICNpbmNsdWRlICJKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRv
dy5oIgogI2luY2x1ZGUgIkpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuaCIKICNpbmNsdWRlICJK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmgiCkBAIC02NCw2ICs2NSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2lu
ZG93Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01X
aW5kb3dfRE9NV2luZG93Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNET01XaW5kb3dfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dD
b25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRv
d19UZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93X1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29u
c3RydWN0b3IpOwpAQCAtODQsNyArODYsNyBAQCB1c2luZyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVj
dG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNET01XaW5kb3c+OwogCiBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNET01XaW5kb3dUYWJsZUluZGV4
WzM3XSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNSwgMzUgfSwKKyAgICB7IDYsIDM1IH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC05
NywzNSArOTksMzYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9N
V2luZG93VGFibGVJbmRleFszN10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0LCAzMyB9LAorICAgIHsgNSwgMzMgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgMiwgLTEgfSwKLSAgICB7IDEsIDMyIH0sCisgICAgeyAzLCAtMSB9
LAorICAgIHsgMiwgMzIgfSwKICAgICB7IDAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgOSwgLTEgfSwKKyAg
ICB7IDEwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgMywgMzQgfSwKLSAgICB7IDYsIDM2IH0sCi0gICAgeyA3LCAtMSB9LAorICAgIHsg
NCwgMzQgfSwKKyAgICB7IDcsIDM2IH0sCiAgICAgeyA4LCAtMSB9LAotICAgIHsgMTAsIC0xIH0s
CisgICAgeyA5LCAtMSB9LAorICAgIHsgMTEsIC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzW10gPQogewogICAgIHsgIkRPTVdp
bmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfRE9NV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisg
ICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiAgICAgeyAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAg
ICB7ICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTE0Miw3ICsxNDUsNyBAQCBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNET01XaW5kb3dUYWJsZVZhbHVlc1tdID0KICAgICB7ICJUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19UZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTRE9NV2luZG93VGFibGUgPSB7IDExLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwg
SlNET01XaW5kb3dUYWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07CitzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlIEpTRE9NV2luZG93VGFibGUgPSB7IDEyLCAzMSwgdHJ1ZSwgSlNET01X
aW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dUYWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUlu
ZGV4IH07CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJET01XaW5kb3ciLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3IpIH07CiAK
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCkBAIC0yMjUsNiArMjI4LDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RP
TVdpbmRvd19ET01XaW5kb3dDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpCiAgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OmdldDxqc0RPTVdpbmRvd19ET01XaW5k
b3dDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0
cmlidXRlTmFtZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0RPTVdpbmRvd19FeHBv
c2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0RPTVdpbmRvdyYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9y
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNET01XaW5kb3c+OjpnZXQ8anNET01XaW5kb3dfRXhwb3NlZFN0YXJDb25zdHJ1
Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFt
ZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3dDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNET01XaW5kb3cmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwCmluZGV4IGE5ZDYxNTg4NjA5ODc5NTY0NTYyNzhkOWU0NDBhYjkyYzM1MDQ0YmIu
LjMzMDczNjRlYzA0MzExYTdlMTgyM2ZkNjZlMjFhZWYwNzY2NjM5NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNp
bmNsdWRlICJKU0V4cG9zZWRTdGFyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KQEAgLTUwLDIzICs1MSwyOCBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiAKIHVzaW5n
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+OwogCiAv
KiBIYXNoIHRhYmxlICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25z
dCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFi
bGVJbmRleFs1XSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCA0IH0sCisgICAgeyAxLCAtMSB9LAog
fTsKIAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
OjppbmZvKCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVUYWJsZVZhbHVlcywgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXgg
fTsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQpAQCAtMTQ3LDYgKzE1MywxNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZQogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT46
OmdldDxqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOwogfQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJiB0aGlz
T2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBy
ZXR1cm4gSlNFeHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKwogSlNDOjpJc29TdWJzcGFjZSog
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2RkZjQwNjhj
MTQ3MzNlYzllNjE4Mzg5NTY0MzY2ZmE1ZjNhNjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCkBAIC0w
LDAgKzEsMzA4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3Bl
biBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU0V4cG9zZWRTdGFyLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJJRExUeXBlcy5o
IgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0QmFzZS5oIgorI2luY2x1
ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVj
dElubGluZXMuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CisvLyBGdW5jdGlvbnMKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBv
c2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkZvckFsbENvbnRleHRzKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlv
bl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RG
b3JXb3JrZXJDb250ZXh0cyk7CisKKy8vIEF0dHJpYnV0ZXMKKworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNFeHBvc2VkU3RhckNvbnN0cnVjdG9yKTsKKworY2xhc3MgSlNFeHBv
c2VkU3RhclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3Rh
dGljIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgICAgIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNFeHBvc2VkU3RhclByb3RvdHlwZT4odm0uaGVhcCkpIEpTRXhwb3Nl
ZFN0YXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAg
REVDTEFSRV9JTkZPOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNw
YWNlQWNjZXNzPgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTRXhwb3NlZFN0YXJQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNO
b25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90eXBlLCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpC
YXNlKTsKKwordXNpbmcgSlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNFeHBvc2VkU3Rhcj47CisKK3RlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTRXhwb3NlZFN0YXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRXhwb3Nl
ZFN0YXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTRXhwb3NlZFN0YXJET01Db25zdHJ1Y3RvcikgfTsKKwordGVtcGxhdGU8PiBKU1ZhbHVl
IEpTRXhwb3NlZFN0YXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJl
dHVybiBKU0V2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7Cit9
CisKK3RlbXBsYXRlPD4gdm9pZCBKU0V4cG9zZWRTdGFyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiRXhwb3NlZFN0YXIiX3MpOworICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhp
cywgbmFtZVN0cmluZyk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNFeHBvc2VkU3Rhcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7Cit9
CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNFeHBvc2VkU3RhclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisg
ICAgeyAib3BlcmF0aW9uRm9yQWxsQ29udGV4dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5j
dGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0cyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7
ICJvcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVG
dW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMpLCAoaW50cHRyX3QpICgwKSB9
IH0sCisgICAgeyAib3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc0V4cG9zZWRTdGFy
UHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzKSwgKGludHB0
cl90KSAoMCkgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFN0YXJQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIkV4cG9zZWRTdGFyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90eXBlKSB9OworCit2
b2lkIEpTRXhwb3NlZFN0YXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZt
LCBKU0V4cG9zZWRTdGFyOjppbmZvKCksIEpTRXhwb3NlZFN0YXJQcm90b3R5cGVUYWJsZVZhbHVl
cywgKnRoaXMpOworICAgIGJvb2wgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNl
OworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cyIpLCBzdHJsZW4oIm9wZXJhdGlvbkp1
c3RGb3JXaW5kb3dDb250ZXh0cyIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgIH0KKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAg
ICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJvcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMiKSwgc3RybGVu
KCJvcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMiKSk7CisgICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
JiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQorICAgICAgICBmbGF0dGVuRGljdGlvbmFy
eU9iamVjdCh2bSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7
Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU0V4cG9zZWRTdGFyOjpzX2luZm8gPSB7ICJFeHBvc2Vk
U3RhciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNFeHBvc2VkU3RhcikgfTsKKworSlNFeHBvc2VkU3Rhcjo6SlNFeHBvc2VkU3RhcihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEV4
cG9zZWRTdGFyPiYmIGltcGwpCisgICAgOiBKU0V2ZW50VGFyZ2V0KHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTRXhwb3NlZFN0YXI6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
QVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6
aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIEV4cG9zZWRTdGFyPjo6dmFsdWUsICJJbnRlcmZh
Y2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1l
bnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09i
amVjdCogSlNFeHBvc2VkU3Rhcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNFeHBvc2VkU3RhclByb3RvdHlw
ZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIEpTRXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KSkpOworfQorCitKU09iamVjdCogSlNFeHBvc2VkU3Rhcjo6cHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1
cm4gZ2V0RE9NUHJvdG90eXBlPEpTRXhwb3NlZFN0YXI+KHZtLCBnbG9iYWxPYmplY3QpOworfQor
CitKU1ZhbHVlIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yLCBET01Db25zdHJ1Y3RvcklEOjpFeHBvc2Vk
U3Rhcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRXhwb3NlZFN0YXJDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTRXhwb3NlZFN0
YXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChV
TkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0V4cG9zZWRTdGFyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0
aW9uRm9yQWxsQ29udGV4dHNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U0V4cG9zZWRTdGFyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uRm9y
QWxsQ29udGV4dHMoKTsgfSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRXhw
b3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0cywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Y2FsbDxqc0V4cG9zZWRT
dGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uRm9yQWxsQ29udGV4dHNCb2R5PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm9wZXJhdGlvbkZvckFsbENvbnRleHRzIik7Cit9
CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0V4cG9zZWRTdGFyUHJvdG90
eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzQm9keShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1l
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNFeHBvc2VkU3Rhcj46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cygpOyB9KSkpOworfQor
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9u
X29wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Y2FsbDxqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rp
b25fb3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzQm9keT4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICJvcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMiKTsKK30KKwor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRXhwb3NlZFN0YXJQcm90b3R5cGVG
dW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwub3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzKCk7IH0pKSk7Cit9CisKK0pT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3Bl
cmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTRXhwb3NlZFN0YXI+OjpjYWxsPGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9v
cGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgIm9wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyIpOworfQorCitKU0M6
Oklzb1N1YnNwYWNlKiBKU0V4cG9zZWRTdGFyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
Cit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2Vz
KCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rh
ci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4gfHwg
IUpTRXhwb3NlZFN0YXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4p
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRXhwb3NlZFN0YXIpOworICAgIGVsc2UKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
RXhwb3NlZFN0YXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBv
c2VkU3Rhci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICB2b2lk
ICgqbXlWaXNpdE91dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRv
ciYpID0gSlNFeHBvc2VkU3Rhcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICB2b2lkICgq
anNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0
b3ImKSA9IEpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzOworICAgIGlmIChteVZp
c2l0T3V0cHV0Q29uc3RyYWludCAhPSBqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQpCisgICAg
ICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJ
R05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNl
OworfQorCit2b2lkIEpTRXhwb3NlZFN0YXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVh
cEFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
RXhwb3NlZFN0YXIqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2Vs
bChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwo
Y2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwo
KS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQor
CisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29u
c3QgX19pZGVudGlmaWVyKCI/P183RXhwb3NlZFN0YXJAV2ViQ29yZUBANkJAIilbXSkoKTsgfQor
I2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTExRXhwb3NlZFN0
YXJFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWY8RXhwb3NlZFN0YXI+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklU
WSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRl
cihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFi
bGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183RXhwb3NlZFN0YXJAV2ViQ29yZUBANkJAIik7
CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3Jl
MTFFeHBvc2VkU3RhckVbMl07CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgRXhwb3Nl
ZFN0YXIgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAg
IC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2Ug
ZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxFeHBvc2Vk
U3Rhcj46OnZhbHVlLCAiRXhwb3NlZFN0YXIgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAv
LyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBm
cmVlIGJ1Zywgb3IKKyAgICAvLyBFeHBvc2VkU3RhciBoYXMgc3ViY2xhc3Nlcy4gSWYgRXhwb3Nl
ZFN0YXIgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdl
IGN1cnJlbnRseSByZXF1aXJlIEV4cG9zZWRTdGFyIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcg
aGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRy
aWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJU
KGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgor
ICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPEV4cG9zZWRTdGFyPihnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeHBv
c2VkU3RhciYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGltcGwpOworfQorCitFeHBvc2VkU3RhciogSlNFeHBvc2VkU3Rhcjo6dG9X
cmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTRXhwb3NlZFN0YXIqPih2bSwgdmFsdWUpKQorICAg
ICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRXhwb3NlZFN0YXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0V4cG9zZWRTdGFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg4Mjg0OGNmYTA0NjczNGJjOGI3OGIzODg4
NmFhNzE1MTZjMzBiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisg
ICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4cG9zZWRTdGFy
LmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTRXhwb3NlZFN0YXIgOiBwdWJsaWMg
SlNFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRXZlbnRUYXJnZXQ7
CisgICAgdXNpbmcgRE9NV3JhcHBlZCA9IEV4cG9zZWRTdGFyOworICAgIHN0YXRpYyBKU0V4cG9z
ZWRTdGFyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPEV4cG9zZWRTdGFyPiYmIGltcGwpCisgICAgeworICAgICAg
ICBKU0V4cG9zZWRTdGFyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
RXhwb3NlZFN0YXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNFeHBvc2VkU3RhcihzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAg
fQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBl
KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBFeHBvc2VkU3Rhciog
dG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9k
ZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAg
IHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
c3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhl
YXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKKyAgICBFeHBvc2VkU3RhciYgd3JhcHBl
ZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwb3NlZFN0YXIm
PihCYXNlOjp3cmFwcGVkKCkpOworICAgIH0KK3Byb3RlY3RlZDoKKyAgICBKU0V4cG9zZWRTdGFy
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8RXhwb3NlZFN0YXI+JiYp
OworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBFeHBvc2Vk
U3RhciYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4cG9z
ZWRTdGFyKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJl
ZjxFeHBvc2VkU3Rhcj4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPEV4cG9zZWRTdGFyPiYmIGltcGwpIHsgcmV0dXJuIGlt
cGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
aW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBz
dHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPEV4cG9zZWRTdGFyPiB7CisgICAgdXNp
bmcgV3JhcHBlckNsYXNzID0gSlNFeHBvc2VkU3RhcjsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1
cm5UeXBlID0gRXhwb3NlZFN0YXIqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGU0Y2Y1YjY4OTk3NzQ2
Yjk0YWVkNTdhNTgwYTY4MDQ1MDE0Y2Y5ODQuLjA5YzRhNzk1ZDRhZDVlZTE4MTIxM2VkNDdhOTMz
ZTQyZTI2ZGNlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAj
aW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJKU0V4cG9zZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDksMTMgKzUwLDE2
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNj
b3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKTsKIAogdXNpbmcgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVj
dG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4WzJdID0gewor
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVUYWJsZUluZGV4WzRdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAwLCAtMSB9LAogfTsKQEAgLTYzLDEwICs2NywxMSBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZVRhYmxlSW5kZXhbMl0gPSB7CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CisgICAgeyAiRXhwb3NlZFN0
YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICAgICB7ICJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6Omlu
Zm8oKSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlVGFibGVJbmRleCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNv
bnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xMzYsNiArMTQxLDE3IEBA
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3IsIChKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1
Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9y
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRT
dGFyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPjo6Z2V0PGpz
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMDU1Njg1ZDBkMGQ1MzM2NDFmZDZhN2Q0NWNlYWU1NzMy
MGY5ZGE3Yy4uY2MwZGEzMDNmYTQ0M2E1YmQxNmE5N2JmMjRmNTRlZWQwMDA2YmRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xv
YmFsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5j
bHVkZSAiSlNFeHBvc2VkU3Rhci5oIgogI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtNDksMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0
YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZV9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7
CiAKIHVzaW5nIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT47
CiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaElu
ZGV4IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRh
YmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IDAsIC0xIH0sCiB9OwpAQCAtNjMsMTAgKzY3LDExIEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRh
YmxlSW5kZXhbMl0gPSB7CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQogeworICAgIHsgIkV4cG9zZWRTdGFyIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAogICAgIHsgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVfU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpp
bmZvKCksIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFs
dWVzLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEzNiw2
ICsxNDEsMTcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBv
c2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVT
RURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6
OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09i
amVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJp
YnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU+OjpnZXQ8anNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRl
TmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZV9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHRo
aXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXgg
M2I1ZmFjYTQ0OWIyNGRmOWU2NjA2OGRiZTk3MTJjYmQzNjA3MGQyMy4uYjkzYzg5NjE2NWEwOGQ4
ODNkMTEyMGFhNmI1ZjYyZTI0NTVjODRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCkBAIC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRl
cmZhY2UgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgeworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3Rh
ckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogICAgIGF0dHJpYnV0ZSBQYWludFdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yIFBhaW50V29ya2xldEdsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggMGVj
ZmIwYWZiODQ0NzczNjZlNDAwYWU0YmM5MmE5NGMyNTVmM2RmYS4uMTc0OTFlNTc5NWU0ZTg4Yzhh
Yzg3YTVmODBhNmFmMjdkMjZkYTk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKQEAgLTEsMyArMSw0IEBACiBwYXJ0aWFsIGludGVy
ZmFjZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgeworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3Rh
ckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogICAgIGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvciBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERl
cGVuZGVuY2llcy5kZXAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3Vw
cGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAppbmRleCA3M2FmYzUwMGQ1ZjQ1NmMxZGMzOGZjNzFk
ODk2ODE4MmRkYmYwNjE4Li5jMTIzMjE1MjQ2MWE2YzJlZDJlNTQ4MGEyZTdjNmRiNjg4NGJhNDYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxl
bWVudGFsRGVwZW5kZW5jaWVzLmRlcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcApAQCAtNyw2ICs3LDkgQEAgSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5pZGwKIERPTURlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg6IERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAogV2ViRE9NRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaDogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRs
CiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGw6CitKU0V4cG9zZWRT
dGFyLmg6IAorRE9NRXhwb3NlZFN0YXIuaDogCitXZWJET01FeHBvc2VkU3Rhci5oOiAKIEpTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93Lmg6IAogRE9NRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Lmg6
IAogV2ViRE9NRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Lmg6IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443120</attachid>
            <date>2021-11-02 12:30:22 -0700</date>
            <delta_ts>2021-11-02 17:12:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231082-20211102193021.patch</filename>
            <type>text/plain</type>
            <size>48974</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk0OTZjYWYyOGI4YzRm
YmEyNGUyMmIyNTRiYWY5NmRlYzFlNzM5Mi4uYjIxYzljZWEzZWEyNjY2MDdlZDlmZjk3YzM4MmFj
NTdlZDNkZDM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTExLTAyICBDYWl0
bG4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0
IFtFeHBvc2VkPSpdIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIHNob3J0aGFuZCB0byBleHBvc2UgaW50ZXJm
YWNlcy9hdHRyaWJ1dGVzIG9uIFdpbmRvdywgV29ya2VycyosCisgICAgICAgIGFuZCB0aGUgZm9y
dGhjb21pbmcgU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBTZWUgaHR0cHM6
Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNzdWVzLzQ2OCBhbmQKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvcHVsbC81MjYgZm9yIGRldGFpbHMuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChzaG91bGRQ
cm9wZXJ0eUJlRXhwb3NlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
Z0ZvckV4cG9zZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgor
ICAgICAgICAocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0V4cG9zZWRTdGFy
LmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2lu
ZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3Ry
dWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNFeHBvc2VkU3Rhci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBv
c2VkU3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpKU0V4cG9zZWRTdGFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNF
eHBvc2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5
cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0c0JvZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3Nl
ZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVy
YXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhw
b3NlZFN0YXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRT
dGFyOjphbmFseXplSGVhcCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rh
cjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBv
c2VkU3Rhci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6d3JhcHBlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJD
b25zdHJ1Y3RvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
LmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzLmRlcDoKKwogMjAyMS0xMS0wMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFByb3ZpZGUgYmlkaSBwcm9wZXJ0aWVz
IHdoZW4gY29uc3RydWN0aW5nIFRleHRSdW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQppbmRleCA4YTAyNmU2MmVmZjBkM2ZlYmZhMzU1YzBk
OWJhMzNmODRhOWNlODk0Li5jYzA3NGRlN2E4ZmVjN2E2NzRhNzIxMmVmOGMwNGMxNmMwMzExNzE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtCkBAIC00ODgsMTIgKzQ4OCwxNSBAQCBzdWIgUHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50
YWxEZXBlbmRlbmNpZXMKIH0KIAogIyBBdHRyaWJ1dGVzIC8gT3BlcmF0aW9ucyAvIENvbnN0YW50
cyBvZiBzdXBwbGVtZW50YWwgaW50ZXJmYWNlcyBjYW4gaGF2ZSBhbiBbRXhwb3NlZD1YWF0gYXR0
cmlidXRlIHdoaWNoIHJlc3RyaWN0cwotIyBvbiB3aGljaCBnbG9iYWwgY29udGV4dHMgdGhleSBz
aG91bGQgYmUgZXhwb3NlZC4KKyMgb24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxk
IGJlIGV4cG9zZWQuIFtFeHBvc2VkPSpdIHdpbGwgZXhwb3NlIHRoZSBhdHRyaWJ1dGUgb24gdGhl
IGludGVyZmFjZSBmb3IgYWxsCisjIHN1cHBvcnRlZCBnbG9iYWwgY29udGV4dHMuCiBzdWIgc2hv
dWxkUHJvcGVydHlCZUV4cG9zZWQKIHsKICAgICBteSAoJGNvbnRleHQsICR0YXJnZXQpID0gQF87
CiAKICAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXQtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJFeHBvc2VkIn0gfHwgIldpbmRvdyI7CisgICAgcmV0dXJuIDEgaWYgJGV4cG9zZWRBdHRy
aWJ1dGUgZXEgIioiOworCiAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRB
dHRyaWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIo
IjsKICAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0
cmlidXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCA2YWFiYTM4ZjM1ZWJmMTgxMDEyYWE2MDgwNWE1N2RkOTE3ZTRh
OTI3Li4zNWE5M2RkYzNlZWNmNjEwMzIyNDI1YzA1MDUxNDVkYTAzM2JhNmRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
Mzk0Niw2ICszOTQ2LDggQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3Ry
aW5nRm9yRXhwb3NlZAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiKTsKIAogICAgIG15ICRleHBvc2VkID0gJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0V4cG9zZWR9OworICAgIHJldHVybiBpZiAkZXhwb3NlZCBlcSAiKiI7CisKICAgICBpZiAo
cmVmKCRleHBvc2VkKSBlcSAnQVJSQVknKSB7CiAgICAgICAgIGlmIChzY2FsYXIoQCRleHBvc2Vk
KSA+IDEpIHsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMzFlNDI2MzAxZTgwM2Q3MWM2MzI4NzQyMzg1OTQ0
YzAzMzU0MDNjNy4uYWEwZDkwMTYzZGM2OWRlMzAzMTgyMjRlYTNiZmNkM2JjMWE0YWY0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTIzNzIs
NiArMjM3MiwxMCBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyCiAgICAgICAgICRz
ZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiKSIsIF9fTElORV9fKTsK
ICAgICAgICAgcmV0dXJuIFxAYXJndW1lbnRzOwogICAgIH0KKyAgICBpZiAoJG5leHQtPnZhbHVl
KCkgZXEgIioiKSB7CisgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRU
b2tlbigpLCAiKiIsIF9fTElORV9fKTsKKyAgICAgICAgcmV0dXJuICIqIjsKKyAgICB9CiAgICAg
aWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuKSB7CiAgICAgICAgIG15ICRuYW1l
ID0gJHNlbGYtPnBhcnNlTmFtZSgpOwogICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlRXh0ZW5k
ZWRBdHRyaWJ1dGVSZXN0MygkbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IDc5MjEyY2UwYzI3YjlhZWIwYjRjOWRj
ZGNjZmYzZWI5MDU0ODBjZTIuLjViODkzMTNmZTVjYWVmYjg5MTJmYjQzNmYxNDc2ODJmMDQ3NTc3
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vz
cy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vz
cy1pZGxzLnBsCkBAIC01NSw2ICs1NSwxOSBAQCBteSAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBz
OwogbXkgJGlkbEF0dHJpYnV0ZXNGaWxlOwogbXkgJHZlcmJvc2UgPSAwOwogCisjIExpc3Qgb2Yg
Y29udGV4dHMgd2l0aCB0aGUgW0dsb2JhbF0gZXh0ZW5kZWQgYXR0cmlidXRlLgorIworIyBNdXN0
IG5vdCBjb250YWluIHBhcnRpYWwgaW50ZXJmYWNlcyB1c2VkIGJ5IG90aGVyIGludGVyZmFjZXMg
aW4gdGhlIGxpc3QsCisjIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHNhbWUgYXR0cmlidXRlcy9p
bnRlcmZhY2VzIGJlaW5nIGluc3RhbGxlZCBtdWx0aXBsZQorIyB0aW1lcyB3aGVuIFtFeHBvc2Vk
PSpdIGlzIHVzZWQuCitteSBAc3VwcG9ydGVkR2xvYmFsQ29udGV4dHMgPSAoCisgICAgIldpbmRv
dyIsCisgICAgIkRlZGljYXRlZFdvcmtlciIsCisgICAgIlNlcnZpY2VXb3JrZXIiLAorICAgICJQ
YWludFdvcmtsZXQiLAorICAgICJBdWRpb1dvcmtsZXQiCispOworCiAjIFRvZ2dsZSB0aGlzIHRv
IHZhbGlkYXRlIHRoYXQgdGhlIGZhc3QgcmVndWxhciBleHByZXNzaW9uIGJhc2VkICJwYXJzaW5n
IiB1c2VkCiAjIGluIHRoaXMgZmlsZSBwcm9kdWNlcyB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBz
bG93ZXIgcmVzdWx0cyBwcm9kdWNlZCBieSB0aGUKICMgY29tcGxldGUgSURMUGFyc2VyLgpAQCAt
MjQ2LDcgKzI1OSwxMSBAQCBmb3JlYWNoIG15ICRpZGxGaWxlTmFtZSAoc29ydCBrZXlzICVpZGxG
aWxlTmFtZUhhc2gpIHsKICAgICAgICAgaWYgKCEkZXhwb3NlZEF0dHJpYnV0ZSkgewogICAgICAg
ICAgICAgZGllICJFUlJPUjogTm8gW0V4cG9zZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZSBzcGVjaWZp
ZWQgZm9yIGludGVyZmFjZSBpbiAkaWRsRmlsZU5hbWUiOwogICAgICAgICB9CisgICAgICAgIGlm
ICgkZXhwb3NlZEF0dHJpYnV0ZSBlcSAiKiIpIHsKKyAgICAgICAgICAgICRleHBvc2VkQXR0cmli
dXRlID0gIigiIC4gam9pbignLCcsIEBzdXBwb3J0ZWRHbG9iYWxDb250ZXh0cykgLiAiKSI7Cisg
ICAgICAgIH0KICAgICAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRy
aWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsK
KwogICAgICAgICBteSBAZ2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmli
dXRlKTsKICAgICAgICAgZm9yZWFjaCBteSAkZ2xvYmFsQ29udGV4dCAoQGdsb2JhbENvbnRleHRz
KSB7CiAgICAgICAgICAgICBteSAoJGF0dHJpYnV0ZUNvZGUsICR3aW5kb3dBbGlhc2VzKSA9IEdl
bmVyYXRlQ29uc3RydWN0b3JBdHRyaWJ1dGVzKCRpbnRlcmZhY2VOYW1lLCAkZXh0ZW5kZWRBdHRy
aWJ1dGVzLCAkZ2xvYmFsQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRs
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzLmlkbAppbmRleCAxMGRhZTExMDdkMzM0YmM4ZjQzZGYyZjRmN2U4
NGE5ODNjMzVkNjZmLi4xNzVjNDdjZmE4OTFmZmZiYzVhMzJhYTk2ZmViNzFhZTFmMzQxY2M0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwK
QEAgLTEsMiArMSwzIEBACiBwYXJ0aWFsIGludGVyZmFjZSBBdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZSB7CisgICAgYXR0cmlidXRlIEV4cG9zZWRTdGFyQ29uc3RydWN0b3IgRXhwb3NlZFN0YXI7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RPTVdp
bmRvd0NvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbAppbmRleCBlYjdlMmVmMTM5NzJhYzA2MDYwYmRh
YWZmZDQzZDZiZjA1N2U0OWI5Li5mNDA2YmIyNGJhYzE5NDQ2MThhODIxOGNkNTYwZTQzOTBhYWU1
NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9N
V2luZG93Q29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbApAQCAtMSw1ICsxLDYgQEAKIHBhcnRp
YWwgaW50ZXJmYWNlIERPTVdpbmRvdyB7CiAgICAgYXR0cmlidXRlIERPTVdpbmRvd0NvbnN0cnVj
dG9yIERPTVdpbmRvdzsKKyAgICBhdHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBv
c2VkU3RhcjsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0
b3IgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OwogICAgIGF0dHJpYnV0ZSBUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc0NvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOwogICAgIGF0dHJp
YnV0ZSBUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggMmEzMGRhMDdhMzk4NmE2MjBlY2IyM2E0YWEwOGQ5ZDM4
NDg1ODBlMC4uZGE1OWE1MTg0ZTA4Zjc3YzZiNTkzNTFjMTAyMDQxZTdiZWYwZjViZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRs
CkBAIC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUgewogICAgIGF0dHJpYnV0ZSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9yIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3Rh
ckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9FeHBvc2VkU3Rhci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvRXhwb3NlZFN0YXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNGY5ZDk5
YTYxYWQxOTE0ZjhiNDFlYTQyY2ZiZjk5MGE0NDI0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRXhwb3NlZFN0YXIuaWRsCkBAIC0wLDAg
KzEsNyBAQAorWworCUV4cG9zZWQ9KgorXSBpbnRlcmZhY2UgRXhwb3NlZFN0YXIgOiBFdmVudFRh
cmdldCB7CisJW0V4cG9zZWQ9Kl0gdW5kZWZpbmVkIG9wZXJhdGlvbkZvckFsbENvbnRleHRzKCk7
CisJW0V4cG9zZWQ9V2luZG93XSB1bmRlZmluZWQgb3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRl
eHRzKCk7CisJW0V4cG9zZWQ9V29ya2VyXSB1bmRlZmluZWQgb3BlcmF0aW9uSnVzdEZvcldvcmtl
ckNvbnRleHRzKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKaW5kZXggZTQ2OTA0OTUyYmU1N2FkN2IyNjA0
NTE5NjY1YjY2MTg4NzA5NTk2My4uYzlhMzhkNjJhMTZiMjRiYTBmYzYwNTgxMDkzZmYwNWFiMjk1
OTViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNET01XaW5kb3cuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNET01H
bG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIuaCIKICNpbmNs
dWRlICJKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oIgogI2luY2x1ZGUgIkpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXMuaCIKICNpbmNsdWRlICJKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
LmgiCkBAIC02NCw2ICs2NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93Q29uc3RydWN0b3IpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfRE9NV2luZG93Q29uc3RydWN0b3Ip
Oworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfRXhwb3NlZFN0
YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdp
bmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19UZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0Nv
bnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93
X1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IpOwpAQCAtODQsNyArODYsNyBA
QCB1c2luZyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNET01XaW5kb3c+OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNET01XaW5kb3dUYWJsZUluZGV4WzM3XSA9IHsKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNSwgMzUgfSwKKyAgICB7IDYsIDM1IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC05NywzNSArOTksMzYgQEAgc3RhdGljIGNvbnN0
IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9NV2luZG93VGFibGVJbmRleFszN10gPSB7CiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0
LCAzMyB9LAorICAgIHsgNSwgMzMgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMiwgLTEgfSwK
LSAgICB7IDEsIDMyIH0sCisgICAgeyAzLCAtMSB9LAorICAgIHsgMiwgMzIgfSwKICAgICB7IDAs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IC0xLCAtMSB9LAotICAgIHsgOSwgLTEgfSwKKyAgICB7IDEwLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMywgMzQgfSwKLSAgICB7IDYs
IDM2IH0sCi0gICAgeyA3LCAtMSB9LAorICAgIHsgNCwgMzQgfSwKKyAgICB7IDcsIDM2IH0sCiAg
ICAgeyA4LCAtMSB9LAotICAgIHsgMTAsIC0xIH0sCisgICAgeyA5LCAtMSB9LAorICAgIHsgMTEs
IC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RPTVdpbmRvd1Rh
YmxlVmFsdWVzW10gPQogewogICAgIHsgIkRPTVdpbmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3df
RE9NV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNET01XaW5kb3dfVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKICAgICB7ICJUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNE
T01XaW5kb3dfVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAg
LTE0Miw3ICsxNDUsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNET01XaW5kb3dU
YWJsZVZhbHVlc1tdID0KICAgICB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0RPTVdpbmRvd19UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRE9NV2luZG93VGFibGUgPSB7IDExLCAz
MSwgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dUYWJsZVZhbHVlcywgSlNE
T01XaW5kb3dUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRE9NV2luZG93
VGFibGUgPSB7IDEyLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dU
YWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07CiB0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJET01XaW5kb3ci
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
RE9NV2luZG93RE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU0RPTVdp
bmRvd0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0yMjUsNiArMjI4LDE3IEBA
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19ET01XaW5kb3dDb25zdHJ1Y3Rv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0RPTVdp
bmRvdz46OmdldDxqc0RPTVdpbmRvd19ET01XaW5kb3dDb25zdHJ1Y3RvckdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0RPTVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTVdpbmRvdyYgdGhpc09iamVj
dCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RP
TVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJp
YnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpnZXQ8
anNET01XaW5kb3dfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01XaW5kb3cmIHRoaXNP
YmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGE5ZDYxNTg4NjA5
ODc5NTY0NTYyNzhkOWU0NDBhYjkyYzM1MDQ0YmIuLjMzMDczNjRlYzA0MzExYTdlMTgyM2ZkNjZl
MjFhZWYwNzY2NjM5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElu
bGluZXMuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0V4cG9zZWRTdGFyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KQEAg
LTUwLDIzICs1MSwyOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Ip
Owogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRXhw
b3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiAKIHVzaW5nIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+OwogCiAvKiBIYXNoIHRhYmxlICovCiAKLXN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
VGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFs1XSA9IHsKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAwLCA0IH0sCisgICAgeyAxLCAtMSB9LAogfTsKIAogCiBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQogewog
ICAgIHsgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyAxLCAxLCB0cnVl
LCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxl
SW5kZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpp
bmZvKCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVE
T01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTQ3LDYgKzE1
MywxNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZQogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT46OmdldDxqc0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNv
bnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJB
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNFeHBvc2VkU3Rhcjo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTsK
K30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVO
YW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGU+OjpnZXQ8anNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0
cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVO
YW1lKTsKK30KKwogSlNDOjpJc29TdWJzcGFjZSogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRT
dGFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hN2RkZjQwNjhjMTQ3MzNlYzllNjE4Mzg5NTY0MzY2ZmE1ZjNh
Njc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCkBAIC0wLDAgKzEsMzA4IEBACisvKgorICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0V4cG9zZWRTdGFy
LmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJz
cGFjZXMuaCIKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVk
ZSAiSlNET01Db252ZXJ0QmFzZS5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcu
aCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlvbnMKKworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29w
ZXJhdGlvbkZvckFsbENvbnRleHRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29u
dGV4dHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclBy
b3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyk7CisKKy8vIEF0
dHJpYnV0ZXMKKworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNFeHBvc2VkU3Rh
ckNvbnN0cnVjdG9yKTsKKworY2xhc3MgSlNFeHBvc2VkU3RhclByb3RvdHlwZSBmaW5hbCA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUq
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTRXhwb3NlZFN0YXJQcm90
b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNFeHBvc2VkU3Rh
clByb3RvdHlwZT4odm0uaGVhcCkpIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
ICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQcm90b3R5cGUs
IEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTRXhwb3NlZFN0YXJQcm90
b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJl
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307
CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90
eXBlLCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpCYXNlKTsKKwordXNpbmcgSlNFeHBvc2VkU3Rh
ckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNFeHBv
c2VkU3Rhcj47CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFN0YXJET01D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRXhwb3NlZFN0YXIiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRXhwb3NlZFN0YXJET01Db25zdHJ1
Y3RvcikgfTsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTRXhwb3NlZFN0YXJET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU0V2ZW50VGFyZ2V0OjpnZXRDb25z
dHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU0V4cG9z
ZWRTdGFyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIEpTU3RyaW5n
KiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiRXhwb3NlZFN0YXIiX3MpOwor
ICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CisgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNFeHBvc2Vk
U3Rhcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7Cit9CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3Rv
dHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNFeHBvc2VkU3RhclByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0V4
cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAib3BlcmF0aW9uRm9yQWxsQ29udGV4
dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0
cyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJvcGVyYXRpb25KdXN0Rm9yV2luZG93Q29u
dGV4dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2lu
ZG93Q29udGV4dHMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAib3BlcmF0aW9uSnVzdEZv
cldvcmtlckNvbnRleHRzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9u
SnVzdEZvcldvcmtlckNvbnRleHRzKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKworY29uc3Qg
Q2xhc3NJbmZvIEpTRXhwb3NlZFN0YXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkV4cG9zZWRTdGFy
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U0V4cG9zZWRTdGFyUHJvdG90eXBlKSB9OworCit2b2lkIEpTRXhwb3NlZFN0YXJQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU0V4cG9zZWRTdGFyOjppbmZvKCksIEpT
RXhwb3NlZFN0YXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIGJvb2wgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOworICAgIGlmICghanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlz
RG9jdW1lbnQoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dD
b250ZXh0cyIpLCBzdHJsZW4oIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cyIpKTsKKyAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBpZiAoIWpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJvcGVyYXRpb25K
dXN0Rm9yV29ya2VyQ29udGV4dHMiKSwgc3RybGVuKCJvcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29u
dGV4dHMiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYg
KGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFy
eSgpKQorICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CisgICAgSlNDX1RPX1NU
UklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU0V4
cG9zZWRTdGFyOjpzX2luZm8gPSB7ICJFeHBvc2VkU3RhciIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNFeHBvc2VkU3RhcikgfTsKKworSlNF
eHBvc2VkU3Rhcjo6SlNFeHBvc2VkU3RhcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEV4cG9zZWRTdGFyPiYmIGltcGwpCisgICAgOiBK
U0V2ZW50VGFyZ2V0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQorewor
fQorCit2b2lkIEpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3Qs
IEV4cG9zZWRTdGFyPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZl
RE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFj
dGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNFeHBvc2VkU3Rhcjo6Y3JlYXRl
UHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICByZXR1cm4gSlNFeHBvc2VkU3RhclByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0
LCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmpl
Y3QsIEpTRXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOworfQorCitK
U09iamVjdCogSlNFeHBvc2VkU3Rhcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTRXhwb3Nl
ZFN0YXI+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTRXhwb3NlZFN0YXI6Omdl
dENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVj
dG9yLCBET01Db25zdHJ1Y3RvcklEOjpFeHBvc2VkU3Rhcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7
CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTRXhwb3NlZFN0YXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0V4cG9zZWRTdGFyOjpnZXRDb25zdHJ1
Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0V4cG9z
ZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uRm9yQWxsQ29udGV4dHNCb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uRm9yQWxsQ29udGV4dHMoKTsgfSkpKTsKK30KKwor
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9v
cGVyYXRpb25Gb3JBbGxDb250ZXh0cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U0V4cG9zZWRTdGFyPjo6Y2FsbDxqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0
aW9uRm9yQWxsQ29udGV4dHNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
Im9wZXJhdGlvbkZvckFsbENvbnRleHRzIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZv
cldpbmRvd0NvbnRleHRzQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNF
eHBvc2VkU3Rhcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm9wZXJhdGlvbkp1c3RG
b3JXaW5kb3dDb250ZXh0cygpOyB9KSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
anNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250
ZXh0cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Y2Fs
bDxqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldpbmRvd0Nv
bnRleHRzQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJvcGVyYXRpb25K
dXN0Rm9yV2luZG93Q29udGV4dHMiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29y
a2VyQ29udGV4dHNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9z
ZWRTdGFyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVu
Y29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uSnVzdEZvcldv
cmtlckNvbnRleHRzKCk7IH0pKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0V4
cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRz
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+OjpjYWxsPGpz
RXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4
dHNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm9wZXJhdGlvbkp1c3RG
b3JXb3JrZXJDb250ZXh0cyIpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU0V4cG9zZWRTdGFy
OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9
ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8m
IHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNw
YWNlOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4gfHwgIUpTRXhwb3NlZFN0YXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRXhw
b3NlZFN0YXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2Vk
U3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRXhwb3NlZFN0YXIpOworICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKTsKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKKyAgICB2b2lkICgqbXlWaXNpdE91dHB1dENvbnN0cmFpbnQp
KEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNFeHBvc2VkU3Rhcjo6dmlzaXRP
dXRwdXRDb25zdHJhaW50czsKKyAgICB2b2lkICgqanNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50
KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxsOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzOworICAgIGlmIChteVZpc2l0T3V0cHV0Q29uc3RyYWludCAhPSBqc0Nl
bGxWaXNpdE91dHB1dENvbnN0cmFpbnQpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3Ry
YWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVf
V0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTRXhwb3NlZFN0YXI6
OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKK3sKKyAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRXhwb3NlZFN0YXIqPihjZWxsKTsKKyAgICBh
bmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBl
ZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAg
ICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5h
bHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdS
SVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQor
ZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183RXhwb3Nl
ZFN0YXJAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4g
dm9pZCogX1pUVk43V2ViQ29yZTExRXhwb3NlZFN0YXJFW107IH0KKyNlbmRpZgorI2VuZGlmCisK
K0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RXhwb3NlZFN0YXI+JiYgaW1wbCkKK3sK
KworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxW
VGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9S
TShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/
P183RXhwb3NlZFN0YXJAV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVk
VlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMTFFeHBvc2VkU3RhckVbMl07CisjZW5kaWYK
KworICAgIC8vIElmIHRoaXMgZmFpbHMgRXhwb3NlZFN0YXIgZG9lcyBub3QgaGF2ZSBhIHZ0YWJs
ZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19wb2x5bW9ycGhpYzxFeHBvc2VkU3Rhcj46OnZhbHVlLCAiRXhwb3NlZFN0YXIg
aXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9u
IHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBFeHBvc2Vk
U3RhciBoYXMgc3ViY2xhc3Nlcy4gSWYgRXhwb3NlZFN0YXIgaGFzIHN1YmNsYXNzZXMgdGhhdCBn
ZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIEV4cG9zZWRT
dGFyIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5n
IHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwg
ZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhw
ZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPEV4
cG9zZWRTdGFyPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeHBvc2VkU3RhciYgaW1wbCkKK3sKKyAgICByZXR1
cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitF
eHBvc2VkU3RhciogSlNFeHBvc2VkU3Rhcjo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
VmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
RXhwb3NlZFN0YXIqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBw
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTg4Mjg0OGNmYTA0NjczNGJjOGI3OGIzODg4NmFhNzE1MTZjMzBiZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRT
dGFyLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkV4cG9zZWRTdGFyLmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVy
LmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEpTRXhwb3NlZFN0YXIgOiBwdWJsaWMgSlNFdmVudFRhcmdldCB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IEpTRXZlbnRUYXJnZXQ7CisgICAgdXNpbmcgRE9NV3JhcHBlZCA9IEV4
cG9zZWRTdGFyOworICAgIHN0YXRpYyBKU0V4cG9zZWRTdGFyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEV4cG9z
ZWRTdGFyPiYmIGltcGwpCisgICAgeworICAgICAgICBKU0V4cG9zZWRTdGFyKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRXhwb3NlZFN0YXI+KGdsb2JhbE9iamVjdC0+
dm0oKS5oZWFwKSkgSlNFeHBvc2VkU3RhcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVj
dCYpOworICAgIHN0YXRpYyBFeHBvc2VkU3RhciogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5v
bkFycmF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICht
b2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9
CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6
ZXImKTsKKyAgICBFeHBvc2VkU3RhciYgd3JhcHBlZCgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RXhwb3NlZFN0YXImPihCYXNlOjp3cmFwcGVkKCkpOworICAgIH0K
K3Byb3RlY3RlZDoKKyAgICBKU0V4cG9zZWRTdGFyKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QmLCBSZWY8RXhwb3NlZFN0YXI+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNET01HbG9iYWxPYmplY3QqLCBFeHBvc2VkU3RhciYpOworaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4cG9zZWRTdGFyKiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6
anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxFeHBvc2VkU3Rhcj4mJik7CitpbmxpbmUg
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPEV4
cG9zZWRTdGFyPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpT
Qzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVy
VHJhaXRzPEV4cG9zZWRTdGFyPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNFeHBvc2Vk
U3RhcjsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gRXhwb3NlZFN0YXIqOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCmluZGV4IGU0Y2Y1YjY4OTk3NzQ2Yjk0YWVkNTdhNTgwYTY4MDQ1MDE0Y2Y5ODQu
LjA5YzRhNzk1ZDRhZDVlZTE4MTIxM2VkNDdhOTMzZTQyZTI2ZGNlNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJKU0V4
cG9zZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgpAQCAtNDksMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAv
LyBBdHRyaWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3Ip
Owogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIAogdXNpbmcgSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUg
Ki8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVUYWJsZUluZGV4WzJdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4WzRdID0geworICAg
IHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAwLCAt
MSB9LAogfTsKQEAgLTYzLDEwICs2NywxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlSW5kZXhbMl0gPSB7CiAKIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVW
YWx1ZXNbXSA9CiB7CisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJQYWludFdv
cmtsZXRHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGUgPSB7IDEsIDEsIHRydWUs
IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleCB9Owor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGUgPSB7
IDIsIDMsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFi
bGVJbmRleCB9OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCkBAIC0xMzYsNiArMTQxLDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCoKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSYgdGhpc09iamVj
dCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlPjo6Z2V0PGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhw
b3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1BhaW50V29y
a2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMDU1
Njg1ZDBkMGQ1MzM2NDFmZDZhN2Q0NWNlYWU1NzMyMGY5ZGE3Yy4uY2MwZGEzMDNmYTQ0M2E1YmQx
NmE5N2JmMjRmNTRlZWQwMDA2YmRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiSlNFeHBvc2VkU3Rhci5oIgogI2lu
Y2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgpA
QCAtNDksMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAK
IHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKIHVzaW5nIEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlVGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDAsIC0xIH0sCiB9
OwpAQCAtNjMsMTAgKzY3LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbMl0gPSB7CiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVz
W10gPQogeworICAgIHsgIkV4cG9zZWRTdGFyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDEsIDEsIHRydWUs
IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlVGFibGVWYWx1ZXMsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9
Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxl
ID0geyAyLCAzLCB0cnVlLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvcikgfTsKIAog
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEzNiw2ICsxNDEsMTcgQEAgSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2Jh
bE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVj
dG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9QYWludFdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggM2I1ZmFjYTQ0OWIyNGRmOWU2NjA2OGRiZTk3
MTJjYmQzNjA3MGQyMy4uYjkzYzg5NjE2NWEwOGQ4ODNkMTEyMGFhNmI1ZjYyZTI0NTVjODRhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1BhaW50V29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRs
CkBAIC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUgeworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwog
ICAgIGF0dHJpYnV0ZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yIFBhaW50V29y
a2xldEdsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggMGVjZmIwYWZiODQ0NzczNjZlNDAwYWU0YmM5MmE5
NGMyNTVmM2RmYS4uMTc0OTFlNTc5NWU0ZTg4YzhhYzg3YTVmODBhNmFmMjdkMjZkYTk2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwK
QEAgLTEsMyArMSw0IEBACiBwYXJ0aWFsIGludGVyZmFjZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUgeworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwog
ICAgIGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciBTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcApp
bmRleCA3M2FmYzUwMGQ1ZjQ1NmMxZGMzOGZjNzFkODk2ODE4MmRkYmYwNjE4Li5jMTIzMjE1MjQ2
MWE2YzJlZDJlNTQ4MGEyZTdjNmRiNjg4NGJhNDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzLmRlcApAQCAtNyw2ICs3LDkgQEAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
OiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERPTURlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmg6IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzLmlkbAogV2ViRE9NRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDogRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9ycy5pZGw6CitKU0V4cG9zZWRTdGFyLmg6IAorRE9NRXhwb3NlZFN0YXIuaDog
CitXZWJET01FeHBvc2VkU3Rhci5oOiAKIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Lmg6IAog
RE9NRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Lmg6IAogV2ViRE9NRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93Lmg6IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443151</attachid>
            <date>2021-11-02 17:12:08 -0700</date>
            <delta_ts>2021-11-02 19:11:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231082-20211103001207.patch</filename>
            <type>text/plain</type>
            <size>48971</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIzYjIwM2VhYzVjOWM2
NWQwNDA2YmMwZWQ2YjdmZjcwOThmODE4Zi4uYjYyNWExOWJlN2NkMTY0Y2E0NTgwZTEzNzQ5OTRj
MzM4MjFkZmMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTExLTAyICBDYWl0
bG4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0
IFtFeHBvc2VkPSpdIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hy
aXMgRHVtZXouCisKKyAgICAgICAgQWRkcyBhIHNob3J0aGFuZCB0byBleHBvc2UgaW50ZXJmYWNl
cy9hdHRyaWJ1dGVzIG9uIFdpbmRvdywgV29ya2VycyosCisgICAgICAgIGFuZCB0aGUgZm9ydGhj
b21pbmcgU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBTZWUgaHR0cHM6Ly9n
aXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNzdWVzLzQ2OCBhbmQKKyAgICAgICAgaHR0cHM6Ly9n
aXRodWIuY29tL2hleWNhbS93ZWJpZGwvcHVsbC81MjYgZm9yIGRldGFpbHMuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChzaG91bGRQcm9w
ZXJ0eUJlRXhwb3NlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0Zv
ckV4cG9zZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAg
ICAgICAocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0V4cG9zZWRTdGFyLmlk
bDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3RydWN0
b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlND
X0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNFeHBvc2VkU3Rhci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2Vk
U3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpKU0V4cG9zZWRTdGFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0V4cG9zZWRTdGFyOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBv
c2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVG
dW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0c0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0
YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRp
b25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3Nl
ZFN0YXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFy
OjphbmFseXplSGVhcCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6
dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2Vk
U3Rhci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFeHBvc2VkU3Rhcjo6d3JhcHBlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25z
dHJ1Y3RvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzLmRlcDoKKwogMjAyMS0xMS0wMiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgogCiAgICAgICAgIFNWRyBlbGVtZW50cyBzaG91bGQgaW5jbHVkZSBTVkdFbGVtZW50SW5s
aW5lcyBub3QgRWxlbWVudElubGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbQppbmRleCA4YTAyNmU2MmVmZjBkM2ZlYmZhMzU1YzBkOWJh
MzNmODRhOWNlODk0Li5jYzA3NGRlN2E4ZmVjN2E2NzRhNzIxMmVmOGMwNGMxNmMwMzExNzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CkBAIC00ODgsMTIgKzQ4OCwxNSBAQCBzdWIgUHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50YWxE
ZXBlbmRlbmNpZXMKIH0KIAogIyBBdHRyaWJ1dGVzIC8gT3BlcmF0aW9ucyAvIENvbnN0YW50cyBv
ZiBzdXBwbGVtZW50YWwgaW50ZXJmYWNlcyBjYW4gaGF2ZSBhbiBbRXhwb3NlZD1YWF0gYXR0cmli
dXRlIHdoaWNoIHJlc3RyaWN0cwotIyBvbiB3aGljaCBnbG9iYWwgY29udGV4dHMgdGhleSBzaG91
bGQgYmUgZXhwb3NlZC4KKyMgb24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJl
IGV4cG9zZWQuIFtFeHBvc2VkPSpdIHdpbGwgZXhwb3NlIHRoZSBhdHRyaWJ1dGUgb24gdGhlIGlu
dGVyZmFjZSBmb3IgYWxsCisjIHN1cHBvcnRlZCBnbG9iYWwgY29udGV4dHMuCiBzdWIgc2hvdWxk
UHJvcGVydHlCZUV4cG9zZWQKIHsKICAgICBteSAoJGNvbnRleHQsICR0YXJnZXQpID0gQF87CiAK
ICAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJFeHBvc2VkIn0gfHwgIldpbmRvdyI7CisgICAgcmV0dXJuIDEgaWYgJGV4cG9zZWRBdHRyaWJ1
dGUgZXEgIioiOworCiAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRy
aWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsK
ICAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmli
dXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCA2YWFiYTM4ZjM1ZWJmMTgxMDEyYWE2MDgwNWE1N2RkOTE3ZTRhOTI3
Li4zNWE5M2RkYzNlZWNmNjEwMzIyNDI1YzA1MDUxNDVkYTAzM2JhNmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzk0
Niw2ICszOTQ2LDggQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
Rm9yRXhwb3NlZAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiKTsKIAogICAgIG15ICRleHBvc2VkID0gJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0V4cG9zZWR9OworICAgIHJldHVybiBpZiAkZXhwb3NlZCBlcSAiKiI7CisKICAgICBpZiAocmVm
KCRleHBvc2VkKSBlcSAnQVJSQVknKSB7CiAgICAgICAgIGlmIChzY2FsYXIoQCRleHBvc2VkKSA+
IDEpIHsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KaW5kZXggMzFlNDI2MzAxZTgwM2Q3MWM2MzI4NzQyMzg1OTQ0YzAz
MzU0MDNjNy4uYWEwZDkwMTYzZGM2OWRlMzAzMTgyMjRlYTNiZmNkM2JjMWE0YWY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTIzNzIsNiAr
MjM3MiwxMCBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyCiAgICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiKSIsIF9fTElORV9fKTsKICAg
ICAgICAgcmV0dXJuIFxAYXJndW1lbnRzOwogICAgIH0KKyAgICBpZiAoJG5leHQtPnZhbHVlKCkg
ZXEgIioiKSB7CisgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tl
bigpLCAiKiIsIF9fTElORV9fKTsKKyAgICAgICAgcmV0dXJuICIqIjsKKyAgICB9CiAgICAgaWYg
KCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuKSB7CiAgICAgICAgIG15ICRuYW1lID0g
JHNlbGYtPnBhcnNlTmFtZSgpOwogICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlRXh0ZW5kZWRB
dHRyaWJ1dGVSZXN0MygkbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IDc5MjEyY2UwYzI3YjlhZWIwYjRjOWRjZGNj
ZmYzZWI5MDU0ODBjZTIuLjViODkzMTNmZTVjYWVmYjg5MTJmYjQzNmYxNDc2ODJmMDQ3NTc3YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1p
ZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1p
ZGxzLnBsCkBAIC01NSw2ICs1NSwxOSBAQCBteSAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzOwog
bXkgJGlkbEF0dHJpYnV0ZXNGaWxlOwogbXkgJHZlcmJvc2UgPSAwOwogCisjIExpc3Qgb2YgY29u
dGV4dHMgd2l0aCB0aGUgW0dsb2JhbF0gZXh0ZW5kZWQgYXR0cmlidXRlLgorIworIyBNdXN0IG5v
dCBjb250YWluIHBhcnRpYWwgaW50ZXJmYWNlcyB1c2VkIGJ5IG90aGVyIGludGVyZmFjZXMgaW4g
dGhlIGxpc3QsCisjIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHNhbWUgYXR0cmlidXRlcy9pbnRl
cmZhY2VzIGJlaW5nIGluc3RhbGxlZCBtdWx0aXBsZQorIyB0aW1lcyB3aGVuIFtFeHBvc2VkPSpd
IGlzIHVzZWQuCitteSBAc3VwcG9ydGVkR2xvYmFsQ29udGV4dHMgPSAoCisgICAgIldpbmRvdyIs
CisgICAgIkRlZGljYXRlZFdvcmtlciIsCisgICAgIlNlcnZpY2VXb3JrZXIiLAorICAgICJQYWlu
dFdvcmtsZXQiLAorICAgICJBdWRpb1dvcmtsZXQiCispOworCiAjIFRvZ2dsZSB0aGlzIHRvIHZh
bGlkYXRlIHRoYXQgdGhlIGZhc3QgcmVndWxhciBleHByZXNzaW9uIGJhc2VkICJwYXJzaW5nIiB1
c2VkCiAjIGluIHRoaXMgZmlsZSBwcm9kdWNlcyB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBzbG93
ZXIgcmVzdWx0cyBwcm9kdWNlZCBieSB0aGUKICMgY29tcGxldGUgSURMUGFyc2VyLgpAQCAtMjQ2
LDcgKzI1OSwxMSBAQCBmb3JlYWNoIG15ICRpZGxGaWxlTmFtZSAoc29ydCBrZXlzICVpZGxGaWxl
TmFtZUhhc2gpIHsKICAgICAgICAgaWYgKCEkZXhwb3NlZEF0dHJpYnV0ZSkgewogICAgICAgICAg
ICAgZGllICJFUlJPUjogTm8gW0V4cG9zZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZSBzcGVjaWZpZWQg
Zm9yIGludGVyZmFjZSBpbiAkaWRsRmlsZU5hbWUiOwogICAgICAgICB9CisgICAgICAgIGlmICgk
ZXhwb3NlZEF0dHJpYnV0ZSBlcSAiKiIpIHsKKyAgICAgICAgICAgICRleHBvc2VkQXR0cmlidXRl
ID0gIigiIC4gam9pbignLCcsIEBzdXBwb3J0ZWRHbG9iYWxDb250ZXh0cykgLiAiKSI7CisgICAg
ICAgIH0KICAgICAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1
dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsKKwog
ICAgICAgICBteSBAZ2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmlidXRl
KTsKICAgICAgICAgZm9yZWFjaCBteSAkZ2xvYmFsQ29udGV4dCAoQGdsb2JhbENvbnRleHRzKSB7
CiAgICAgICAgICAgICBteSAoJGF0dHJpYnV0ZUNvZGUsICR3aW5kb3dBbGlhc2VzKSA9IEdlbmVy
YXRlQ29uc3RydWN0b3JBdHRyaWJ1dGVzKCRpbnRlcmZhY2VOYW1lLCAkZXh0ZW5kZWRBdHRyaWJ1
dGVzLCAkZ2xvYmFsQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzLmlkbAppbmRleCAxMGRhZTExMDdkMzM0YmM4ZjQzZGYyZjRmN2U4NGE5
ODNjMzVkNjZmLi4xNzVjNDdjZmE4OTFmZmZiYzVhMzJhYTk2ZmViNzFhZTFmMzQxY2M0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKQEAg
LTEsMiArMSwzIEBACiBwYXJ0aWFsIGludGVyZmFjZSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSB7
CisgICAgYXR0cmlidXRlIEV4cG9zZWRTdGFyQ29uc3RydWN0b3IgRXhwb3NlZFN0YXI7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RPTVdpbmRv
d0NvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
RE9NV2luZG93Q29uc3RydWN0b3JzLmlkbAppbmRleCBlYjdlMmVmMTM5NzJhYzA2MDYwYmRhYWZm
ZDQzZDZiZjA1N2U0OWI5Li5mNDA2YmIyNGJhYzE5NDQ2MThhODIxOGNkNTYwZTQzOTBhYWU1NmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2lu
ZG93Q29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbApAQCAtMSw1ICsxLDYgQEAKIHBhcnRpYWwg
aW50ZXJmYWNlIERPTVdpbmRvdyB7CiAgICAgYXR0cmlidXRlIERPTVdpbmRvd0NvbnN0cnVjdG9y
IERPTVdpbmRvdzsKKyAgICBhdHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2Vk
U3RhcjsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3Ig
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93OwogICAgIGF0dHJpYnV0ZSBUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc0NvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOwogICAgIGF0dHJpYnV0
ZSBUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5pZGwKaW5kZXggMmEzMGRhMDdhMzk4NmE2MjBlY2IyM2E0YWEwOGQ5ZDM4NDg1
ODBlMC4uZGE1OWE1MTg0ZTA4Zjc3YzZiNTkzNTFjMTAyMDQxZTdiZWYwZjViZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCkBA
IC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUgewogICAgIGF0dHJpYnV0ZSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNv
bnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9FeHBvc2VkU3Rhci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvRXhwb3NlZFN0YXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNGY5ZDk5YTYx
YWQxOTE0ZjhiNDFlYTQyY2ZiZjk5MGE0NDI0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRXhwb3NlZFN0YXIuaWRsCkBAIC0wLDAgKzEs
NyBAQAorWworCUV4cG9zZWQ9KgorXSBpbnRlcmZhY2UgRXhwb3NlZFN0YXIgOiBFdmVudFRhcmdl
dCB7CisJW0V4cG9zZWQ9Kl0gdW5kZWZpbmVkIG9wZXJhdGlvbkZvckFsbENvbnRleHRzKCk7CisJ
W0V4cG9zZWQ9V2luZG93XSB1bmRlZmluZWQgb3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRleHRz
KCk7CisJW0V4cG9zZWQ9V29ya2VyXSB1bmRlZmluZWQgb3BlcmF0aW9uSnVzdEZvcldvcmtlckNv
bnRleHRzKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKaW5kZXggZTQ2OTA0OTUyYmU1N2FkN2IyNjA0NTE5
NjY1YjY2MTg4NzA5NTk2My4uYzlhMzhkNjJhMTZiMjRiYTBmYzYwNTgxMDkzZmYwNWFiMjk1OTVi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNET01XaW5kb3cuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIuaCIKICNpbmNsdWRl
ICJKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oIgogI2luY2x1ZGUgIkpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXMuaCIKICNpbmNsdWRlICJKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmgi
CkBAIC02NCw2ICs2NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfRE9NV2luZG93Q29uc3RydWN0b3IpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfRXhwb3NlZFN0YXJD
b25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRv
d19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19UZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0
cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93X1Rl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IpOwpAQCAtODQsNyArODYsNyBAQCB1
c2luZyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGU8SlNET01XaW5kb3c+OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggSlNET01XaW5kb3dUYWJsZUluZGV4WzM3XSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgNSwgMzUgfSwKKyAgICB7IDYsIDM1IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC05NywzNSArOTksMzYgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9NV2luZG93VGFibGVJbmRleFszN10gPSB7CiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0LCAz
MyB9LAorICAgIHsgNSwgMzMgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMiwgLTEgfSwKLSAg
ICB7IDEsIDMyIH0sCisgICAgeyAzLCAtMSB9LAorICAgIHsgMiwgMzIgfSwKICAgICB7IDAsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IC0x
LCAtMSB9LAotICAgIHsgOSwgLTEgfSwKKyAgICB7IDEwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMywgMzQgfSwKLSAgICB7IDYsIDM2
IH0sCi0gICAgeyA3LCAtMSB9LAorICAgIHsgNCwgMzQgfSwKKyAgICB7IDcsIDM2IH0sCiAgICAg
eyA4LCAtMSB9LAotICAgIHsgMTAsIC0xIH0sCisgICAgeyA5LCAtMSB9LAorICAgIHsgMTEsIC0x
IH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RPTVdpbmRvd1RhYmxl
VmFsdWVzW10gPQogewogICAgIHsgIkRPTVdpbmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfRE9N
V2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
RE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNET01XaW5kb3dfVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKICAgICB7ICJUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01X
aW5kb3dfVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTE0
Miw3ICsxNDUsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNET01XaW5kb3dUYWJs
ZVZhbHVlc1tdID0KICAgICB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Iiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0RPTVdpbmRvd19UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9
OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRE9NV2luZG93VGFibGUgPSB7IDExLCAzMSwg
dHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dUYWJsZVZhbHVlcywgSlNET01X
aW5kb3dUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRE9NV2luZG93VGFi
bGUgPSB7IDEyLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dUYWJs
ZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07CiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNz
SW5mbyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJET01XaW5kb3ciLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9N
V2luZG93RE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU0RPTVdpbmRv
d0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0yMjUsNiArMjI4LDE3IEBAIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19ET01XaW5kb3dDb25zdHJ1Y3Rvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0RPTVdpbmRv
dz46OmdldDxqc0RPTVdpbmRvd19ET01XaW5kb3dDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0RPTVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTVdpbmRvdyYgdGhpc09iamVjdCkK
K3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpT
RXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdp
bmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0
ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpnZXQ8anNE
T01XaW5kb3dfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01XaW5kb3cmIHRoaXNPYmpl
Y3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGE5ZDYxNTg4NjA5ODc5
NTY0NTYyNzhkOWU0NDBhYjkyYzM1MDQ0YmIuLjMzMDczNjRlYzA0MzExYTdlMTgyM2ZkNjZlMjFh
ZWYwNzY2NjM5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0V4cG9zZWRTdGFyLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KQEAgLTUw
LDIzICs1MSwyOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVfRXhwb3Nl
ZFN0YXJDb25zdHJ1Y3Rvcik7CiAKIHVzaW5nIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVE
T01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGU+OwogCiAvKiBIYXNoIHRhYmxlICovCiAKLXN0YXRpYyBjb25z
dCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFi
bGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFs1XSA9IHsKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAwLCA0IH0sCisgICAgeyAxLCAtMSB9LAogfTsKIAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQogewogICAg
IHsgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNo
VGFibGUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyAxLCAxLCB0cnVlLCBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVUYWJsZVZhbHVlcywgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5k
ZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZv
KCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01D
b25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAtMTQ3LDYgKzE1Mywx
NyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZQogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT46OmdldDxqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCitzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0
cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNFeHBvc2VkU3Rhcjo6Z2V0Q29uc3Ry
dWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVf
RXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1l
KSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGU+OjpnZXQ8anNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVj
dG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1l
KTsKK30KKwogSlNDOjpJc29TdWJzcGFjZSogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNsaWVudERhdGEgPSAq
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hN2RkZjQwNjhjMTQ3MzNlYzllNjE4Mzg5NTY0MzY2ZmE1ZjNhNjc4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRXhwb3NlZFN0YXIuY3BwCkBAIC0wLDAgKzEsMzA4IEBACisvKgorICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0V4cG9zZWRTdGFyLmgi
CisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFj
ZXMuaCIKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAi
SlNET01Db252ZXJ0QmFzZS5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
KyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0RPTU9w
ZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
bG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29y
ZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlvbnMKKworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJh
dGlvbkZvckFsbENvbnRleHRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpz
RXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4
dHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3Rv
dHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyk7CisKKy8vIEF0dHJp
YnV0ZXMKKworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNFeHBvc2VkU3RhckNv
bnN0cnVjdG9yKTsKKworY2xhc3MgSlNFeHBvc2VkU3RhclByb3RvdHlwZSBmaW5hbCA6IHB1Ymxp
YyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6
OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTRXhwb3NlZFN0YXJQcm90b3R5
cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNFeHBvc2VkU3RhclBy
b3RvdHlwZT4odm0uaGVhcCkpIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAg
IHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQcm90b3R5cGUsIEJh
c2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTRXhwb3NlZFN0YXJQcm90b3R5
cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90eXBl
LCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpCYXNlKTsKKwordXNpbmcgSlNFeHBvc2VkU3RhckRP
TUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNFeHBvc2Vk
U3Rhcj47CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFN0YXJET01Db25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiRXhwb3NlZFN0YXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRXhwb3NlZFN0YXJET01Db25zdHJ1Y3Rv
cikgfTsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTRXhwb3NlZFN0YXJET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU0V2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1
Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU0V4cG9zZWRT
dGFyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIEpTU3RyaW5nKiBu
YW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiRXhwb3NlZFN0YXIiX3MpOworICAg
IG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CisgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNFeHBvc2VkU3Rh
cjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7Cit9CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNFeHBvc2VkU3RhclByb3RvdHlw
ZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0V4cG9z
ZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAib3BlcmF0aW9uRm9yQWxsQ29udGV4dHMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0cyks
IChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJvcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4
dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93
Q29udGV4dHMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAib3BlcmF0aW9uSnVzdEZvcldv
cmtlckNvbnRleHRzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVz
dEZvcldvcmtlckNvbnRleHRzKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKworY29uc3QgQ2xh
c3NJbmZvIEpTRXhwb3NlZFN0YXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkV4cG9zZWRTdGFyIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0V4
cG9zZWRTdGFyUHJvdG90eXBlKSB9OworCit2b2lkIEpTRXhwb3NlZFN0YXJQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU0V4cG9zZWRTdGFyOjppbmZvKCksIEpTRXhw
b3NlZFN0YXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIGJvb2wgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOworICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9j
dW1lbnQoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
KyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250
ZXh0cyIpLCBzdHJsZW4oIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cyIpKTsKKyAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJvcGVyYXRpb25KdXN0
Rm9yV29ya2VyQ29udGV4dHMiKSwgc3RybGVuKCJvcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4
dHMiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYgKGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgp
KQorICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CisgICAgSlNDX1RPX1NUUklO
R19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU0V4cG9z
ZWRTdGFyOjpzX2luZm8gPSB7ICJFeHBvc2VkU3RhciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNFeHBvc2VkU3RhcikgfTsKKworSlNFeHBv
c2VkU3Rhcjo6SlNFeHBvc2VkU3RhcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEV4cG9zZWRTdGFyPiYmIGltcGwpCisgICAgOiBKU0V2
ZW50VGFyZ2V0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQor
Cit2b2lkIEpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsK
KworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIEV4
cG9zZWRTdGFyPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9N
T2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2
ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNFeHBvc2VkU3Rhcjo6Y3JlYXRlUHJv
dG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBy
ZXR1cm4gSlNFeHBvc2VkU3RhclByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBK
U0V4cG9zZWRTdGFyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3Qs
IEpTRXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOworfQorCitKU09i
amVjdCogSlNFeHBvc2VkU3Rhcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTRXhwb3NlZFN0
YXI+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTRXhwb3NlZFN0YXI6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9y
LCBET01Db25zdHJ1Y3RvcklEOjpFeHBvc2VkU3Rhcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTRXhwb3NlZFN0YXJQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0V4cG9zZWRTdGFyOjpnZXRDb25zdHJ1Y3Rv
cihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0V4cG9zZWRT
dGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uRm9yQWxsQ29udGV4dHNCb2R5KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJh
bWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUp
OworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwub3BlcmF0aW9uRm9yQWxsQ29udGV4dHMoKTsgfSkpKTsKK30KKworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVy
YXRpb25Gb3JBbGxDb250ZXh0cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0V4
cG9zZWRTdGFyPjo6Y2FsbDxqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9u
Rm9yQWxsQ29udGV4dHNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm9w
ZXJhdGlvbkZvckFsbENvbnRleHRzIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldp
bmRvd0NvbnRleHRzQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNFeHBv
c2VkU3Rhcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm9wZXJhdGlvbkp1c3RGb3JX
aW5kb3dDb250ZXh0cygpOyB9KSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNF
eHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0
cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Y2FsbDxq
c0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldpbmRvd0NvbnRl
eHRzQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJvcGVyYXRpb25KdXN0
Rm9yV2luZG93Q29udGV4dHMiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29ya2Vy
Q29udGV4dHNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9zZWRT
dGFyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uSnVzdEZvcldvcmtl
ckNvbnRleHRzKCk7IH0pKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0V4cG9z
ZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+OjpjYWxsPGpzRXhw
b3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHNC
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm9wZXJhdGlvbkp1c3RGb3JX
b3JrZXJDb250ZXh0cyIpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU0V4cG9zZWRTdGFyOjpz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNw
YWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNl
OworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4gfHwgIUpTRXhwb3NlZFN0YXI6Om5lZWRzRGVzdHJ1Y3Rp
b24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRXhwb3Nl
ZFN0YXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rh
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRXhwb3NlZFN0YXIpOworICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKKyAgICB2b2lkICgqbXlWaXNpdE91dHB1dENvbnN0cmFpbnQpKEpT
Qzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNFeHBvc2VkU3Rhcjo6dmlzaXRPdXRw
dXRDb25zdHJhaW50czsKKyAgICB2b2lkICgqanNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KShK
U0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzOworICAgIGlmIChteVZpc2l0T3V0cHV0Q29uc3RyYWludCAhPSBqc0NlbGxW
aXNpdE91dHB1dENvbnN0cmFpbnQpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWlu
dFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FS
TklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTRXhwb3NlZFN0YXI6OmFu
YWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRXhwb3NlZFN0YXIqPihjZWxsKTsKKyAgICBhbmFs
eXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgp
KTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAg
ICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6
ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZ
KQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0
ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183RXhwb3NlZFN0
YXJAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9p
ZCogX1pUVk43V2ViQ29yZTExRXhwb3NlZFN0YXJFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pT
Qzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RXhwb3NlZFN0YXI+JiYgaW1wbCkKK3sKKwor
I2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFi
bGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9STShX
SU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183
RXhwb3NlZFN0YXJAV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRh
YmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMTFFeHBvc2VkU3RhckVbMl07CisjZW5kaWYKKwor
ICAgIC8vIElmIHRoaXMgZmFpbHMgRXhwb3NlZFN0YXIgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwg
c28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUg
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19wb2x5bW9ycGhpYzxFeHBvc2VkU3Rhcj46OnZhbHVlLCAiRXhwb3NlZFN0YXIgaXMg
bm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlv
dSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBFeHBvc2VkU3Rh
ciBoYXMgc3ViY2xhc3Nlcy4gSWYgRXhwb3NlZFN0YXIgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQg
cGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIEV4cG9zZWRTdGFy
IHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRo
ZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVm
aW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0
ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPEV4cG9z
ZWRTdGFyPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeHBvc2VkU3RhciYgaW1wbCkKK3sKKyAgICByZXR1cm4g
d3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitFeHBv
c2VkU3RhciogSlNFeHBvc2VkU3Rhcjo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFs
dWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTRXhw
b3NlZFN0YXIqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTg4Mjg0OGNmYTA0NjczNGJjOGI3OGIzODg4NmFhNzE1MTZjMzBiZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFy
LmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkV4cG9zZWRTdGFyLmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgi
CisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEpTRXhwb3NlZFN0YXIgOiBwdWJsaWMgSlNFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZSA9IEpTRXZlbnRUYXJnZXQ7CisgICAgdXNpbmcgRE9NV3JhcHBlZCA9IEV4cG9z
ZWRTdGFyOworICAgIHN0YXRpYyBKU0V4cG9zZWRTdGFyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPEV4cG9zZWRT
dGFyPiYmIGltcGwpCisgICAgeworICAgICAgICBKU0V4cG9zZWRTdGFyKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRXhwb3NlZFN0YXI+KGdsb2JhbE9iamVjdC0+dm0o
KS5oZWFwKSkgSlNFeHBvc2VkU3RhcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7
CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYp
OworICAgIHN0YXRpYyBFeHBvc2VkU3RhciogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFs
dWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFy
cmF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpT
Qzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2Rl
ID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9Cisg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7
CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXIm
KTsKKyAgICBFeHBvc2VkU3RhciYgd3JhcHBlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RXhwb3NlZFN0YXImPihCYXNlOjp3cmFwcGVkKCkpOworICAgIH0KK3By
b3RlY3RlZDoKKyAgICBKU0V4cG9zZWRTdGFyKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxP
YmplY3QmLCBSZWY8RXhwb3NlZFN0YXI+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNET01HbG9iYWxPYmplY3QqLCBFeHBvc2VkU3RhciYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4cG9zZWRTdGFyKiBpbXBsKSB7IHJldHVybiBpbXBsID8g
dG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNO
dWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxFeHBvc2VkU3Rhcj4mJik7CitpbmxpbmUgSlND
OjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPEV4cG9z
ZWRTdGFyPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6
anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJh
aXRzPEV4cG9zZWRTdGFyPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNFeHBvc2VkU3Rh
cjsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gRXhwb3NlZFN0YXIqOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCmluZGV4IGU0Y2Y1YjY4OTk3NzQ2Yjk0YWVkNTdhNTgwYTY4MDQ1MDE0Y2Y5ODQuLjA5
YzRhNzk1ZDRhZDVlZTE4MTIxM2VkNDdhOTMzZTQyZTI2ZGNlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJKU0V4cG9z
ZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgpAQCAtNDksMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBB
dHRyaWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIAogdXNpbmcgSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUgKi8K
IAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVUYWJsZUluZGV4WzJdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFz
aEluZGV4IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4WzRdID0geworICAgIHsg
LTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAwLCAtMSB9
LAogfTsKQEAgLTYzLDEwICs2NywxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlSW5kZXhbMl0gPSB7CiAKIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVWYWx1
ZXNbXSA9CiB7CisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJQYWludFdvcmts
ZXRHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNQYWludFdvcmtsZXRHbG9iYWxTY29wZV9QYWludFdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleCB9Oworc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGUgPSB7IDIs
IDMsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVJ
bmRleCB9OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCkBAIC0xMzYsNiArMTQxLDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCoKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSYgdGhpc09iamVjdCkK
K3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpT
RXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50
V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlPjo6Z2V0PGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3Nl
ZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
YXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlX1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMDU1Njg1
ZDBkMGQ1MzM2NDFmZDZhN2Q0NWNlYWU1NzMyMGY5ZGE3Yy4uY2MwZGEzMDNmYTQ0M2E1YmQxNmE5
N2JmMjRmNTRlZWQwMDA2YmRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiSlNFeHBvc2VkU3Rhci5oIgogI2luY2x1
ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAt
NDksMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKIHVzaW5nIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGlj
IGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
VGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbNF0gPSB7CisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDAsIC0xIH0sCiB9OwpA
QCAtNjMsMTAgKzY3LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbMl0gPSB7CiAKIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzW10g
PQogeworICAgIHsgIkV4cG9zZWRTdGFyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDEsIDEsIHRydWUsIEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlVGFibGVWYWx1ZXMsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9Owor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0g
eyAyLCAzLCB0cnVlLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvcikgfTsKIAogdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKQEAgLTEzNiw2ICsxNDEsMTcgQEAgSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90
b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVD
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9QYWludFdvcmtsZXRHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggM2I1ZmFjYTQ0OWIyNGRmOWU2NjA2OGRiZTk3MTJj
YmQzNjA3MGQyMy4uYjkzYzg5NjE2NWEwOGQ4ODNkMTEyMGFhNmI1ZjYyZTI0NTVjODRhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCkBA
IC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUg
eworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogICAg
IGF0dHJpYnV0ZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yIFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggMGVjZmIwYWZiODQ0NzczNjZlNDAwYWU0YmM5MmE5NGMy
NTVmM2RmYS4uMTc0OTFlNTc5NWU0ZTg4YzhhYzg3YTVmODBhNmFmMjdkMjZkYTk2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKQEAg
LTEsMyArMSw0IEBACiBwYXJ0aWFsIGludGVyZmFjZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUg
eworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogICAg
IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAppbmRl
eCA3M2FmYzUwMGQ1ZjQ1NmMxZGMzOGZjNzFkODk2ODE4MmRkYmYwNjE4Li5jMTIzMjE1MjQ2MWE2
YzJlZDJlNTQ4MGEyZTdjNmRiNjg4NGJhNDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzLmRlcApAQCAtNyw2ICs3LDkgQEAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOiBE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERPTURlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmg6IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
LmlkbAogV2ViRE9NRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDogRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5pZGw6CitKU0V4cG9zZWRTdGFyLmg6IAorRE9NRXhwb3NlZFN0YXIuaDogCitX
ZWJET01FeHBvc2VkU3Rhci5oOiAKIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Lmg6IAogRE9N
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Lmg6IAogV2ViRE9NRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93Lmg6IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443160</attachid>
            <date>2021-11-02 19:11:14 -0700</date>
            <delta_ts>2021-11-02 19:29:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231082-20211103021114.patch</filename>
            <type>text/plain</type>
            <size>48983</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIzYjIwM2VhYzVjOWM2
NWQwNDA2YmMwZWQ2YjdmZjcwOThmODE4Zi4uYjYyNWExOWJlN2NkMTY0Y2E0NTgwZTEzNzQ5OTRj
MzM4MjFkZmMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTExLTAyICBDYWl0
bG4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0
IFtFeHBvc2VkPSpdIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hy
aXMgRHVtZXouCisKKyAgICAgICAgQWRkcyBhIHNob3J0aGFuZCB0byBleHBvc2UgaW50ZXJmYWNl
cy9hdHRyaWJ1dGVzIG9uIFdpbmRvdywgV29ya2VycyosCisgICAgICAgIGFuZCB0aGUgZm9ydGhj
b21pbmcgU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBTZWUgaHR0cHM6Ly9n
aXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNzdWVzLzQ2OCBhbmQKKyAgICAgICAgaHR0cHM6Ly9n
aXRodWIuY29tL2hleWNhbS93ZWJpZGwvcHVsbC81MjYgZm9yIGRldGFpbHMuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChzaG91bGRQcm9w
ZXJ0eUJlRXhwb3NlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0Zv
ckV4cG9zZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAg
ICAgICAocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0V4cG9zZWRTdGFyLmlk
bDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3RydWN0
b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlND
X0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNFeHBvc2VkU3Rhci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2Vk
U3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpKU0V4cG9zZWRTdGFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0V4cG9zZWRTdGFyOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBv
c2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVG
dW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0c0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0
YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRp
b25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3Nl
ZFN0YXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFy
OjphbmFseXplSGVhcCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6
dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2Vk
U3Rhci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFeHBvc2VkU3Rhcjo6d3JhcHBlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25z
dHJ1Y3RvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzLmRlcDoKKwogMjAyMS0xMS0wMiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgogCiAgICAgICAgIFNWRyBlbGVtZW50cyBzaG91bGQgaW5jbHVkZSBTVkdFbGVtZW50SW5s
aW5lcyBub3QgRWxlbWVudElubGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbQppbmRleCA4YTAyNmU2MmVmZjBkM2ZlYmZhMzU1YzBkOWJh
MzNmODRhOWNlODk0Li5jYzA3NGRlN2E4ZmVjN2E2NzRhNzIxMmVmOGMwNGMxNmMwMzExNzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CkBAIC00ODgsMTIgKzQ4OCwxNSBAQCBzdWIgUHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50YWxE
ZXBlbmRlbmNpZXMKIH0KIAogIyBBdHRyaWJ1dGVzIC8gT3BlcmF0aW9ucyAvIENvbnN0YW50cyBv
ZiBzdXBwbGVtZW50YWwgaW50ZXJmYWNlcyBjYW4gaGF2ZSBhbiBbRXhwb3NlZD1YWF0gYXR0cmli
dXRlIHdoaWNoIHJlc3RyaWN0cwotIyBvbiB3aGljaCBnbG9iYWwgY29udGV4dHMgdGhleSBzaG91
bGQgYmUgZXhwb3NlZC4KKyMgb24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJl
IGV4cG9zZWQuIFtFeHBvc2VkPSpdIHdpbGwgZXhwb3NlIHRoZSBhdHRyaWJ1dGUgb24gdGhlIGlu
dGVyZmFjZSBmb3IgYWxsCisjIHN1cHBvcnRlZCBnbG9iYWwgY29udGV4dHMuCiBzdWIgc2hvdWxk
UHJvcGVydHlCZUV4cG9zZWQKIHsKICAgICBteSAoJGNvbnRleHQsICR0YXJnZXQpID0gQF87CiAK
ICAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJFeHBvc2VkIn0gfHwgIldpbmRvdyI7CisgICAgcmV0dXJuIDEgaWYgJGV4cG9zZWRBdHRyaWJ1
dGUgZXEgIioiOworCiAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRy
aWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsK
ICAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmli
dXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCA2YWFiYTM4ZjM1ZWJmMTgxMDEyYWE2MDgwNWE1N2RkOTE3ZTRhOTI3
Li4zNWE5M2RkYzNlZWNmNjEwMzIyNDI1YzA1MDUxNDVkYTAzM2JhNmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzk0
Niw2ICszOTQ2LDggQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
Rm9yRXhwb3NlZAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiKTsKIAogICAgIG15ICRleHBvc2VkID0gJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0V4cG9zZWR9OworICAgIHJldHVybiBpZiAkZXhwb3NlZCBlcSAiKiI7CisKICAgICBpZiAocmVm
KCRleHBvc2VkKSBlcSAnQVJSQVknKSB7CiAgICAgICAgIGlmIChzY2FsYXIoQCRleHBvc2VkKSA+
IDEpIHsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KaW5kZXggMzFlNDI2MzAxZTgwM2Q3MWM2MzI4NzQyMzg1OTQ0YzAz
MzU0MDNjNy4uYWEwZDkwMTYzZGM2OWRlMzAzMTgyMjRlYTNiZmNkM2JjMWE0YWY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTIzNzIsNiAr
MjM3MiwxMCBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyCiAgICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiKSIsIF9fTElORV9fKTsKICAg
ICAgICAgcmV0dXJuIFxAYXJndW1lbnRzOwogICAgIH0KKyAgICBpZiAoJG5leHQtPnZhbHVlKCkg
ZXEgIioiKSB7CisgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tl
bigpLCAiKiIsIF9fTElORV9fKTsKKyAgICAgICAgcmV0dXJuICIqIjsKKyAgICB9CiAgICAgaWYg
KCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuKSB7CiAgICAgICAgIG15ICRuYW1lID0g
JHNlbGYtPnBhcnNlTmFtZSgpOwogICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlRXh0ZW5kZWRB
dHRyaWJ1dGVSZXN0MygkbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IDc5MjEyY2UwYzI3YjlhZWIwYjRjOWRjZGNj
ZmYzZWI5MDU0ODBjZTIuLjViODkzMTNmZTVjYWVmYjg5MTJmYjQzNmYxNDc2ODJmMDQ3NTc3YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1p
ZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1p
ZGxzLnBsCkBAIC01NSw2ICs1NSwxOSBAQCBteSAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzOwog
bXkgJGlkbEF0dHJpYnV0ZXNGaWxlOwogbXkgJHZlcmJvc2UgPSAwOwogCisjIExpc3Qgb2YgY29u
dGV4dHMgd2l0aCB0aGUgW0dsb2JhbF0gZXh0ZW5kZWQgYXR0cmlidXRlLgorIworIyBNdXN0IG5v
dCBjb250YWluIHBhcnRpYWwgaW50ZXJmYWNlcyB1c2VkIGJ5IG90aGVyIGludGVyZmFjZXMgaW4g
dGhlIGxpc3QsCisjIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHNhbWUgYXR0cmlidXRlcy9pbnRl
cmZhY2VzIGJlaW5nIGluc3RhbGxlZCBtdWx0aXBsZQorIyB0aW1lcyB3aGVuIFtFeHBvc2VkPSpd
IGlzIHVzZWQuCitteSBAc3VwcG9ydGVkR2xvYmFsQ29udGV4dHMgPSAoCisgICAgIldpbmRvdyIs
CisgICAgIkRlZGljYXRlZFdvcmtlciIsCisgICAgIlNlcnZpY2VXb3JrZXIiLAorICAgICJQYWlu
dFdvcmtsZXQiLAorICAgICJBdWRpb1dvcmtsZXQiCispOworCiAjIFRvZ2dsZSB0aGlzIHRvIHZh
bGlkYXRlIHRoYXQgdGhlIGZhc3QgcmVndWxhciBleHByZXNzaW9uIGJhc2VkICJwYXJzaW5nIiB1
c2VkCiAjIGluIHRoaXMgZmlsZSBwcm9kdWNlcyB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBzbG93
ZXIgcmVzdWx0cyBwcm9kdWNlZCBieSB0aGUKICMgY29tcGxldGUgSURMUGFyc2VyLgpAQCAtMjQ2
LDcgKzI1OSwxMSBAQCBmb3JlYWNoIG15ICRpZGxGaWxlTmFtZSAoc29ydCBrZXlzICVpZGxGaWxl
TmFtZUhhc2gpIHsKICAgICAgICAgaWYgKCEkZXhwb3NlZEF0dHJpYnV0ZSkgewogICAgICAgICAg
ICAgZGllICJFUlJPUjogTm8gW0V4cG9zZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZSBzcGVjaWZpZWQg
Zm9yIGludGVyZmFjZSBpbiAkaWRsRmlsZU5hbWUiOwogICAgICAgICB9CisgICAgICAgIGlmICgk
ZXhwb3NlZEF0dHJpYnV0ZSBlcSAiKiIpIHsKKyAgICAgICAgICAgICRleHBvc2VkQXR0cmlidXRl
ID0gIigiIC4gam9pbignLCcsIEBzdXBwb3J0ZWRHbG9iYWxDb250ZXh0cykgLiAiKSI7CisgICAg
ICAgIH0KICAgICAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1
dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsKKwog
ICAgICAgICBteSBAZ2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmlidXRl
KTsKICAgICAgICAgZm9yZWFjaCBteSAkZ2xvYmFsQ29udGV4dCAoQGdsb2JhbENvbnRleHRzKSB7
CiAgICAgICAgICAgICBteSAoJGF0dHJpYnV0ZUNvZGUsICR3aW5kb3dBbGlhc2VzKSA9IEdlbmVy
YXRlQ29uc3RydWN0b3JBdHRyaWJ1dGVzKCRpbnRlcmZhY2VOYW1lLCAkZXh0ZW5kZWRBdHRyaWJ1
dGVzLCAkZ2xvYmFsQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzLmlkbAppbmRleCAxMGRhZTExMDdkMzM0YmM4ZjQzZGYyZjRmN2U4NGE5
ODNjMzVkNjZmLi4xNzVjNDdjZmE4OTFmZmZiYzVhMzJhYTk2ZmViNzFhZTFmMzQxY2M0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKQEAg
LTEsMiArMSwzIEBACiBwYXJ0aWFsIGludGVyZmFjZSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSB7
CisgICAgYXR0cmlidXRlIEV4cG9zZWRTdGFyQ29uc3RydWN0b3IgRXhwb3NlZFN0YXI7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RPTVdpbmRv
d0NvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
RE9NV2luZG93Q29uc3RydWN0b3JzLmlkbAppbmRleCBlYjdlMmVmMTM5NzJhYzA2MDYwYmRhYWZm
ZDQzZDZiZjA1N2U0OWI5Li5mNDA2YmIyNGJhYzE5NDQ2MThhODIxOGNkNTYwZTQzOTBhYWU1NmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2lu
ZG93Q29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbApAQCAtMSw1ICsxLDYgQEAKIHBhcnRpYWwg
aW50ZXJmYWNlIERPTVdpbmRvdyB7CiAgICAgYXR0cmlidXRlIERPTVdpbmRvd0NvbnN0cnVjdG9y
IERPTVdpbmRvdzsKKyAgICBhdHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2Vk
U3RhcjsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3Ig
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93OwogICAgIGF0dHJpYnV0ZSBUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc0NvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOwogICAgIGF0dHJpYnV0
ZSBUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5pZGwKaW5kZXggMmEzMGRhMDdhMzk4NmE2MjBlY2IyM2E0YWEwOGQ5ZDM4NDg1
ODBlMC4uZGE1OWE1MTg0ZTA4Zjc3YzZiNTkzNTFjMTAyMDQxZTdiZWYwZjViZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCkBA
IC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUgewogICAgIGF0dHJpYnV0ZSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNv
bnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9FeHBvc2VkU3Rhci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvRXhwb3NlZFN0YXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYjBkZTU4NmMx
MDkwYTMwYTNiNmE1MDE4MTViMThkZTg2YTI0NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRXhwb3NlZFN0YXIuaWRsCkBAIC0wLDAgKzEs
NyBAQAorWworICAgIEV4cG9zZWQ9KgorXSBpbnRlcmZhY2UgRXhwb3NlZFN0YXIgOiBFdmVudFRh
cmdldCB7CisgICAgW0V4cG9zZWQ9Kl0gdW5kZWZpbmVkIG9wZXJhdGlvbkZvckFsbENvbnRleHRz
KCk7CisgICAgW0V4cG9zZWQ9V2luZG93XSB1bmRlZmluZWQgb3BlcmF0aW9uSnVzdEZvcldpbmRv
d0NvbnRleHRzKCk7CisgICAgW0V4cG9zZWQ9V29ya2VyXSB1bmRlZmluZWQgb3BlcmF0aW9uSnVz
dEZvcldvcmtlckNvbnRleHRzKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKaW5kZXggZTQ2OTA0OTUyYmU1
N2FkN2IyNjA0NTE5NjY1YjY2MTg4NzA5NTk2My4uYzlhMzhkNjJhMTZiMjRiYTBmYzYwNTgxMDkz
ZmYwNWFiMjk1OTViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiSlNET01HbG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIu
aCIKICNpbmNsdWRlICJKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuaCIKICNpbmNsdWRlICJKU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlLmgiCkBAIC02NCw2ICs2NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93Q29uc3RydWN0b3IpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfRE9NV2luZG93Q29u
c3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3df
RXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcik7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19UZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc0NvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
RE9NV2luZG93X1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IpOwpAQCAtODQs
NyArODYsNyBAQCB1c2luZyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNET01XaW5kb3c+OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNET01XaW5kb3dUYWJsZUluZGV4WzM3XSA9IHsKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgNSwgMzUgfSwKKyAgICB7IDYsIDM1IH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC05NywzNSArOTksMzYgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9NV2luZG93VGFibGVJbmRleFsz
N10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyA0LCAzMyB9LAorICAgIHsgNSwgMzMgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MiwgLTEgfSwKLSAgICB7IDEsIDMyIH0sCisgICAgeyAzLCAtMSB9LAorICAgIHsgMiwgMzIgfSwK
ICAgICB7IDAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgOSwgLTEgfSwKKyAgICB7IDEwLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMywgMzQgfSwK
LSAgICB7IDYsIDM2IH0sCi0gICAgeyA3LCAtMSB9LAorICAgIHsgNCwgMzQgfSwKKyAgICB7IDcs
IDM2IH0sCiAgICAgeyA4LCAtMSB9LAotICAgIHsgMTAsIC0xIH0sCisgICAgeyA5LCAtMSB9LAor
ICAgIHsgMTEsIC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RP
TVdpbmRvd1RhYmxlVmFsdWVzW10gPQogewogICAgIHsgIkRPTVdpbmRvdyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNE
T01XaW5kb3dfRE9NV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiRXhwb3NlZFN0YXIi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAg
eyAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19FeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfVGVzdENvbmRpdGlvbmFsSW5jbHVkZXND
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNET01XaW5kb3dfVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKQEAgLTE0Miw3ICsxNDUsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNE
T01XaW5kb3dUYWJsZVZhbHVlc1tdID0KICAgICB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0RPTVdpbmRvd19UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRE9NV2luZG93VGFibGUg
PSB7IDExLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dUYWJsZVZh
bHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
RE9NV2luZG93VGFibGUgPSB7IDEyLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNE
T01XaW5kb3dUYWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07CiB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJE
T01XaW5kb3ciLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0yMjUsNiAr
MjI4LDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19ET01XaW5kb3dD
b25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpCiAgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0RPTVdpbmRvdz46OmdldDxqc0RPTVdpbmRvd19ET01XaW5kb3dDb25zdHJ1Y3RvckdldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0RPTVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9y
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTVdpbmRvdyYg
dGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0RPTVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNET01XaW5k
b3c+OjpnZXQ8anNET01XaW5kb3dfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1
Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01XaW5k
b3cmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGE5
ZDYxNTg4NjA5ODc5NTY0NTYyNzhkOWU0NDBhYjkyYzM1MDQ0YmIuLjMzMDczNjRlYzA0MzExYTdl
MTgyM2ZkNjZlMjFhZWYwNzY2NjM5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0RPTUdsb2Jh
bE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0V4cG9zZWRT
dGFyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6
ZXIuaD4KQEAgLTUwLDIzICs1MSwyOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiAKIHVzaW5nIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+OwogCiAvKiBIYXNoIHRhYmxlICovCiAK
LXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFs1XSA9IHsKICAg
ICB7IC0xLCAtMSB9LAotICAgIHsgMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAwLCA0IH0sCisgICAgeyAxLCAtMSB9LAogfTsKIAogCiBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVz
W10gPQogewogICAgIHsgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRp
YyBjb25zdCBIYXNoVGFibGUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyAx
LCAxLCB0cnVlLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlSW5kZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlOjppbmZvKCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlcywg
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAt
MTQ3LDYgKzE1MywxNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZQogICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT46OmdldDxqc0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQog
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBv
c2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQoreworICAgIFVO
VVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNFeHBvc2VkU3Rh
cjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlz
T2JqZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBh
dHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2Vk
U3RhckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBh
dHRyaWJ1dGVOYW1lKTsKK30KKwogSlNDOjpJc29TdWJzcGFjZSogSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4
cG9zZWRTdGFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0V4cG9zZWRTdGFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2RkZjQwNjhjMTQ3MzNlYzllNjE4Mzg5NTY0
MzY2ZmE1ZjNhNjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCkBAIC0wLDAgKzEsMzA4IEBACisvKgor
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
KyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0V4
cG9zZWRTdGFyLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJE
T01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgi
CisjaW5jbHVkZSAiSlNET01Db252ZXJ0QmFzZS5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKKyNpbmNs
dWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1l
c3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlvbnMKKwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1
bmN0aW9uX29wZXJhdGlvbkZvckFsbENvbnRleHRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9y
V2luZG93Q29udGV4dHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBv
c2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyk7
CisKKy8vIEF0dHJpYnV0ZXMKKworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNF
eHBvc2VkU3RhckNvbnN0cnVjdG9yKTsKKworY2xhc3MgSlNFeHBvc2VkU3RhclByb3RvdHlwZSBm
aW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTRXhwb3Nl
ZFN0YXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNF
eHBvc2VkU3RhclByb3RvdHlwZT4odm0uaGVhcCkpIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgorICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTRXhwb3Nl
ZFN0YXJQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwg
c3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRT
dGFyUHJvdG90eXBlLCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpCYXNlKTsKKwordXNpbmcgSlNF
eHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNFeHBvc2VkU3Rhcj47CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3Nl
ZFN0YXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRXhwb3NlZFN0YXIiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRXhwb3NlZFN0YXJE
T01Db25zdHJ1Y3RvcikgfTsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTRXhwb3NlZFN0YXJET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU0V2ZW50VGFyZ2V0
OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7Cit9CisKK3RlbXBsYXRlPD4gdm9p
ZCBKU0V4cG9zZWRTdGFyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAg
IEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiRXhwb3NlZFN0
YXIiX3MpOworICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNFeHBvc2VkU3Rhcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7Cit9CisKKy8qIEhhc2ggdGFibGUg
Zm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNFeHBvc2Vk
U3RhclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAib3BlcmF0aW9uRm9y
QWxsQ29udGV4dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JB
bGxDb250ZXh0cyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJvcGVyYXRpb25KdXN0Rm9y
V2luZG93Q29udGV4dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25K
dXN0Rm9yV2luZG93Q29udGV4dHMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAib3BlcmF0
aW9uSnVzdEZvcldvcmtlckNvbnRleHRzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25f
b3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsK
KworY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFN0YXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkV4
cG9zZWRTdGFyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90eXBlKSB9OworCit2b2lkIEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU0V4cG9zZWRTdGFyOjpp
bmZvKCksIEpTRXhwb3NlZFN0YXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIGJv
b2wgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOworICAgIGlmICghanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm9wZXJhdGlvbkp1c3RG
b3JXaW5kb3dDb250ZXh0cyIpLCBzdHJsZW4oIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0
cyIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBpZiAoIWpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJv
cGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMiKSwgc3RybGVuKCJvcGVyYXRpb25KdXN0Rm9y
V29ya2VyQ29udGV4dHMiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9
CisgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlz
RGljdGlvbmFyeSgpKQorICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CisgICAg
SlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNz
SW5mbyBKU0V4cG9zZWRTdGFyOjpzX2luZm8gPSB7ICJFeHBvc2VkU3RhciIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNFeHBvc2VkU3Rhcikg
fTsKKworSlNFeHBvc2VkU3Rhcjo6SlNFeHBvc2VkU3RhcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEV4cG9zZWRTdGFyPiYmIGltcGwp
CisgICAgOiBKU0V2ZW50VGFyZ2V0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKQoreworfQorCit2b2lkIEpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVE
T01PYmplY3QsIEV4cG9zZWRTdGFyPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBh
cyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJj
bGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNFeHBvc2VkU3Rh
cjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3sKKyAgICByZXR1cm4gSlNFeHBvc2VkU3RhclByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xv
YmFsT2JqZWN0LCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZn
bG9iYWxPYmplY3QsIEpTRXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkp
OworfQorCitKU09iamVjdCogSlNFeHBvc2VkU3Rhcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBl
PEpTRXhwb3NlZFN0YXI+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTRXhwb3Nl
ZFN0YXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNFeHBvc2VkU3RhckRP
TUNvbnN0cnVjdG9yLCBET01Db25zdHJ1Y3RvcklEOjpFeHBvc2VkU3Rhcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKworSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRv
KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTRXhwb3NlZFN0YXJQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0V4cG9zZWRTdGFyOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uRm9yQWxsQ29udGV4dHNC
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uRm9yQWxsQ29udGV4dHMoKTsgfSkp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRXhwb3NlZFN0YXJQcm90b3R5cGVG
dW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Y2FsbDxqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rp
b25fb3BlcmF0aW9uRm9yQWxsQ29udGV4dHNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgIm9wZXJhdGlvbkZvckFsbENvbnRleHRzIik7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0
aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNFeHBvc2VkU3Rhcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm9wZXJh
dGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cygpOyB9KSkpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JX
aW5kb3dDb250ZXh0cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0V4cG9zZWRT
dGFyPjo6Y2FsbDxqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZv
cldpbmRvd0NvbnRleHRzQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJv
cGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25K
dXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU0V4cG9zZWRTdGFyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9u
SnVzdEZvcldvcmtlckNvbnRleHRzKCk7IH0pKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldvcmtl
ckNvbnRleHRzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+
OjpjYWxsPGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29y
a2VyQ29udGV4dHNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm9wZXJh
dGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyIpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU0V4
cG9zZWRTdGFyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xp
ZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwor
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKSkKKyAgICAgICAg
cmV0dXJuIHNwYWNlOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4gfHwgIUpTRXhwb3NlZFN0YXI6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4pCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTRXhwb3NlZFN0YXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRXhwb3NlZFN0YXIpOworICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICB2b2lkICgqbXlWaXNpdE91dHB1dENv
bnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNFeHBvc2VkU3Rh
cjo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICB2b2lkICgqanNDZWxsVmlzaXRPdXRwdXRD
b25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxs
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzOworICAgIGlmIChteVZpc2l0T3V0cHV0Q29uc3RyYWlu
dCAhPSBqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQpCisgICAgICAgIGNsaWVudERhdGEub3V0
cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5E
CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTRXhw
b3NlZFN0YXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXpl
cikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRXhwb3NlZFN0YXIqPihjZWxs
KTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVj
dC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhp
c09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAg
QmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCisjaWYgRU5BQkxFKEJJTkRJ
TkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxl
OiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/
P183RXhwb3NlZFN0YXJAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIg
eyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTExRXhwb3NlZFN0YXJFW107IH0KKyNlbmRpZgor
I2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RXhwb3NlZFN0YXI+JiYg
aW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVu
dGlmaWVyKCI/P183RXhwb3NlZFN0YXJAV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQq
IGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMTFFeHBvc2VkU3RhckVbMl07
CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgRXhwb3NlZFN0YXIgZG9lcyBub3QgaGF2
ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxFeHBvc2VkU3Rhcj46OnZhbHVlLCAiRXhw
b3NlZFN0YXIgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMg
YXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAv
LyBFeHBvc2VkU3RhciBoYXMgc3ViY2xhc3Nlcy4gSWYgRXhwb3NlZFN0YXIgaGFzIHN1YmNsYXNz
ZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJl
IEV4cG9zZWRTdGFyIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8g
YnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVy
ZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50
ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVX
cmFwcGVyPEV4cG9zZWRTdGFyPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeHBvc2VkU3RhciYgaW1wbCkKK3sK
KyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwp
OworfQorCitFeHBvc2VkU3RhciogSlNFeHBvc2VkU3Rhcjo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTRXhwb3NlZFN0YXIqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBw
ZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTg4Mjg0OGNmYTA0NjczNGJjOGI3OGIzODg4NmFhNzE1MTZjMzBiZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0V4cG9zZWRTdGFyLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4cG9zZWRTdGFyLmgiCisjaW5jbHVkZSAiSlNE
T01XcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEpTRXhwb3NlZFN0YXIgOiBwdWJsaWMgSlNFdmVudFRhcmdldCB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRXZlbnRUYXJnZXQ7CisgICAgdXNpbmcgRE9NV3Jh
cHBlZCA9IEV4cG9zZWRTdGFyOworICAgIHN0YXRpYyBKU0V4cG9zZWRTdGFyKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPEV4cG9zZWRTdGFyPiYmIGltcGwpCisgICAgeworICAgICAgICBKU0V4cG9zZWRTdGFyKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRXhwb3NlZFN0YXI+KGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKSkgSlNFeHBvc2VkU3RhcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUds
b2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBFeHBvc2VkU3RhciogdG9XcmFwcGVkKEpTQzo6Vk0m
LCBKU0M6OkpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
LCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKKyAgICBFeHBvc2VkU3RhciYgd3JhcHBlZCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwb3NlZFN0YXImPihCYXNlOjp3cmFwcGVkKCkp
OworICAgIH0KK3Byb3RlY3RlZDoKKyAgICBKU0V4cG9zZWRTdGFyKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8RXhwb3NlZFN0YXI+JiYpOworCisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBFeHBvc2VkU3RhciYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4cG9zZWRTdGFyKiBpbXBsKSB7IHJl
dHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBs
KSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxFeHBvc2VkU3Rhcj4mJik7
CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmUHRyPEV4cG9zZWRTdGFyPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVh
dGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVs
bCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVy
Q29udmVydGVyVHJhaXRzPEV4cG9zZWRTdGFyPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0g
SlNFeHBvc2VkU3RhcjsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gRXhwb3NlZFN0
YXIqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGU0Y2Y1YjY4OTk3NzQ2Yjk0YWVkNTdhNTgwYTY4MDQ1
MDE0Y2Y5ODQuLjA5YzRhNzk1ZDRhZDVlZTE4MTIxM2VkNDdhOTMzZTQyZTI2ZGNlNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNs
dWRlICJKU0V4cG9zZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDksMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29u
c3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmts
ZXRHbG9iYWxTY29wZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIAogdXNp
bmcgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT47CiAKIC8qIEhh
c2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4WzJdID0geworc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4WzRd
ID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAwLCAtMSB9LAogfTsKQEAgLTYzLDEwICs2NywxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlSW5kZXhbMl0g
PSB7CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlVGFibGVWYWx1ZXNbXSA9CiB7CisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7
ICJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGUgPSB7IDEs
IDEsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVJ
bmRleCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
VGFibGUgPSB7IDIsIDMsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwg
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlVGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJQYWludFdvcmtsZXRH
bG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xMzYsNiArMTQxLDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSYg
dGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPjo6Z2V0PGpzUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1BhaW50V29ya2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAK
aW5kZXggMDU1Njg1ZDBkMGQ1MzM2NDFmZDZhN2Q0NWNlYWU1NzMyMGY5ZGE3Yy4uY2MwZGEzMDNm
YTQ0M2E1YmQxNmE5N2JmMjRmNTRlZWQwMDA2YmRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiSlNFeHBvc2VkU3Rh
ci5oIgogI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oIgpAQCAtNDksMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRy
aWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZV9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKIHVzaW5nIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUg
Ki8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbNF0gPSB7Cisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDAs
IC0xIH0sCiB9OwpAQCAtNjMsMTAgKzY3LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbMl0gPSB7CiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRh
YmxlVmFsdWVzW10gPQogeworICAgIHsgIkV4cG9zZWRTdGFyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVfU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi1zdGF0
aWMgY29uc3QgSGFzaFRhYmxlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDEs
IDEsIHRydWUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFi
bGVJbmRleCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6aW5m
bygpLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rv
cikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEzNiw2ICsxNDEsMTcgQEAgSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9y
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3Rh
ckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9QYWludFdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggM2I1ZmFjYTQ0OWIyNGRmOWU2
NjA2OGRiZTk3MTJjYmQzNjA3MGQyMy4uYjkzYzg5NjE2NWEwOGQ4ODNkMTEyMGFhNmI1ZjYyZTI0
NTVjODRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnMuaWRsCkBAIC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUgeworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9z
ZWRTdGFyOwogICAgIGF0dHJpYnV0ZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggMGVjZmIwYWZiODQ0NzczNjZlNDAw
YWU0YmM5MmE5NGMyNTVmM2RmYS4uMTc0OTFlNTc5NWU0ZTg4YzhhYzg3YTVmODBhNmFmMjdkMjZk
YTk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9ycy5pZGwKQEAgLTEsMyArMSw0IEBACiBwYXJ0aWFsIGludGVyZmFjZSBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgeworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9z
ZWRTdGFyOwogICAgIGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
ciBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzLmRlcAppbmRleCA3M2FmYzUwMGQ1ZjQ1NmMxZGMzOGZjNzFkODk2ODE4MmRkYmYwNjE4Li5j
MTIzMjE1MjQ2MWE2YzJlZDJlNTQ4MGEyZTdjNmRiNjg4NGJhNDYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
LmRlcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVu
dGFsRGVwZW5kZW5jaWVzLmRlcApAQCAtNyw2ICs3LDkgQEAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oOiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERP
TURlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg6IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzLmlkbAogV2ViRE9NRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDogRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGw6CitKU0V4cG9zZWRTdGFyLmg6IAorRE9NRXhwb3Nl
ZFN0YXIuaDogCitXZWJET01FeHBvc2VkU3Rhci5oOiAKIEpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93Lmg6IAogRE9NRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Lmg6IAogV2ViRE9NRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93Lmg6IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443163</attachid>
            <date>2021-11-02 19:30:01 -0700</date>
            <delta_ts>2021-11-02 20:08:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231082-20211103023000.patch</filename>
            <type>text/plain</type>
            <size>48983</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIzYjIwM2VhYzVjOWM2
NWQwNDA2YmMwZWQ2YjdmZjcwOThmODE4Zi4uYjYyNWExOWJlN2NkMTY0Y2E0NTgwZTEzNzQ5OTRj
MzM4MjFkZmMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTExLTAyICBDYWl0
bG4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViSURMXSBTdXBwb3J0
IFtFeHBvc2VkPSpdIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hy
aXMgRHVtZXouCisKKyAgICAgICAgQWRkcyBhIHNob3J0aGFuZCB0byBleHBvc2UgaW50ZXJmYWNl
cy9hdHRyaWJ1dGVzIG9uIFdpbmRvdywgV29ya2VycyosCisgICAgICAgIGFuZCB0aGUgZm9ydGhj
b21pbmcgU2hhZG93UmVhbG0gZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBTZWUgaHR0cHM6Ly9n
aXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNzdWVzLzQ2OCBhbmQKKyAgICAgICAgaHR0cHM6Ly9n
aXRodWIuY29tL2hleWNhbS93ZWJpZGwvcHVsbC81MjYgZm9yIGRldGFpbHMuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChzaG91bGRQcm9w
ZXJ0eUJlRXhwb3NlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ0Zv
ckV4cG9zZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAg
ICAgICAocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0V4cG9zZWRTdGFyLmlk
bDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3RydWN0
b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlND
X0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNFeHBvc2VkU3Rhci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2Vk
U3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpKU0V4cG9zZWRTdGFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0V4cG9zZWRTdGFyOjpwcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBv
c2VkU3Rhcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVG
dW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0c0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0
YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHNCb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRp
b25KdXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3Nl
ZFN0YXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFy
OjphbmFseXplSGVhcCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6
dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2Vk
U3Rhci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFeHBvc2VkU3Rhcjo6d3JhcHBlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25z
dHJ1Y3RvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzLmRlcDoKKwogMjAyMS0xMS0wMiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgogCiAgICAgICAgIFNWRyBlbGVtZW50cyBzaG91bGQgaW5jbHVkZSBTVkdFbGVtZW50SW5s
aW5lcyBub3QgRWxlbWVudElubGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbQppbmRleCA4YTAyNmU2MmVmZjBkM2ZlYmZhMzU1YzBkOWJh
MzNmODRhOWNlODk0Li5jYzA3NGRlN2E4ZmVjN2E2NzRhNzIxMmVmOGMwNGMxNmMwMzExNzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CkBAIC00ODgsMTIgKzQ4OCwxNSBAQCBzdWIgUHJvY2Vzc0RpY3Rpb25hcnlTdXBwbGVtZW50YWxE
ZXBlbmRlbmNpZXMKIH0KIAogIyBBdHRyaWJ1dGVzIC8gT3BlcmF0aW9ucyAvIENvbnN0YW50cyBv
ZiBzdXBwbGVtZW50YWwgaW50ZXJmYWNlcyBjYW4gaGF2ZSBhbiBbRXhwb3NlZD1YWF0gYXR0cmli
dXRlIHdoaWNoIHJlc3RyaWN0cwotIyBvbiB3aGljaCBnbG9iYWwgY29udGV4dHMgdGhleSBzaG91
bGQgYmUgZXhwb3NlZC4KKyMgb24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJl
IGV4cG9zZWQuIFtFeHBvc2VkPSpdIHdpbGwgZXhwb3NlIHRoZSBhdHRyaWJ1dGUgb24gdGhlIGlu
dGVyZmFjZSBmb3IgYWxsCisjIHN1cHBvcnRlZCBnbG9iYWwgY29udGV4dHMuCiBzdWIgc2hvdWxk
UHJvcGVydHlCZUV4cG9zZWQKIHsKICAgICBteSAoJGNvbnRleHQsICR0YXJnZXQpID0gQF87CiAK
ICAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJFeHBvc2VkIn0gfHwgIldpbmRvdyI7CisgICAgcmV0dXJuIDEgaWYgJGV4cG9zZWRBdHRyaWJ1
dGUgZXEgIioiOworCiAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRy
aWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsK
ICAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmli
dXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCA2YWFiYTM4ZjM1ZWJmMTgxMDEyYWE2MDgwNWE1N2RkOTE3ZTRhOTI3
Li4zNWE5M2RkYzNlZWNmNjEwMzIyNDI1YzA1MDUxNDVkYTAzM2JhNmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzk0
Niw2ICszOTQ2LDggQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
Rm9yRXhwb3NlZAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiKTsKIAogICAgIG15ICRleHBvc2VkID0gJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0V4cG9zZWR9OworICAgIHJldHVybiBpZiAkZXhwb3NlZCBlcSAiKiI7CisKICAgICBpZiAocmVm
KCRleHBvc2VkKSBlcSAnQVJSQVknKSB7CiAgICAgICAgIGlmIChzY2FsYXIoQCRleHBvc2VkKSA+
IDEpIHsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0KaW5kZXggMzFlNDI2MzAxZTgwM2Q3MWM2MzI4NzQyMzg1OTQ0YzAz
MzU0MDNjNy4uYWEwZDkwMTYzZGM2OWRlMzAzMTgyMjRlYTNiZmNkM2JjMWE0YWY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTIzNzIsNiAr
MjM3MiwxMCBAQCBzdWIgcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyCiAgICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiKSIsIF9fTElORV9fKTsKICAg
ICAgICAgcmV0dXJuIFxAYXJndW1lbnRzOwogICAgIH0KKyAgICBpZiAoJG5leHQtPnZhbHVlKCkg
ZXEgIioiKSB7CisgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tl
bigpLCAiKiIsIF9fTElORV9fKTsKKyAgICAgICAgcmV0dXJuICIqIjsKKyAgICB9CiAgICAgaWYg
KCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuKSB7CiAgICAgICAgIG15ICRuYW1lID0g
JHNlbGYtPnBhcnNlTmFtZSgpOwogICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlRXh0ZW5kZWRB
dHRyaWJ1dGVSZXN0MygkbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IDc5MjEyY2UwYzI3YjlhZWIwYjRjOWRjZGNj
ZmYzZWI5MDU0ODBjZTIuLjViODkzMTNmZTVjYWVmYjg5MTJmYjQzNmYxNDc2ODJmMDQ3NTc3YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1p
ZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1p
ZGxzLnBsCkBAIC01NSw2ICs1NSwxOSBAQCBteSAkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzOwog
bXkgJGlkbEF0dHJpYnV0ZXNGaWxlOwogbXkgJHZlcmJvc2UgPSAwOwogCisjIExpc3Qgb2YgY29u
dGV4dHMgd2l0aCB0aGUgW0dsb2JhbF0gZXh0ZW5kZWQgYXR0cmlidXRlLgorIworIyBNdXN0IG5v
dCBjb250YWluIHBhcnRpYWwgaW50ZXJmYWNlcyB1c2VkIGJ5IG90aGVyIGludGVyZmFjZXMgaW4g
dGhlIGxpc3QsCisjIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHNhbWUgYXR0cmlidXRlcy9pbnRl
cmZhY2VzIGJlaW5nIGluc3RhbGxlZCBtdWx0aXBsZQorIyB0aW1lcyB3aGVuIFtFeHBvc2VkPSpd
IGlzIHVzZWQuCitteSBAc3VwcG9ydGVkR2xvYmFsQ29udGV4dHMgPSAoCisgICAgIldpbmRvdyIs
CisgICAgIkRlZGljYXRlZFdvcmtlciIsCisgICAgIlNlcnZpY2VXb3JrZXIiLAorICAgICJQYWlu
dFdvcmtsZXQiLAorICAgICJBdWRpb1dvcmtsZXQiCispOworCiAjIFRvZ2dsZSB0aGlzIHRvIHZh
bGlkYXRlIHRoYXQgdGhlIGZhc3QgcmVndWxhciBleHByZXNzaW9uIGJhc2VkICJwYXJzaW5nIiB1
c2VkCiAjIGluIHRoaXMgZmlsZSBwcm9kdWNlcyB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBzbG93
ZXIgcmVzdWx0cyBwcm9kdWNlZCBieSB0aGUKICMgY29tcGxldGUgSURMUGFyc2VyLgpAQCAtMjQ2
LDcgKzI1OSwxMSBAQCBmb3JlYWNoIG15ICRpZGxGaWxlTmFtZSAoc29ydCBrZXlzICVpZGxGaWxl
TmFtZUhhc2gpIHsKICAgICAgICAgaWYgKCEkZXhwb3NlZEF0dHJpYnV0ZSkgewogICAgICAgICAg
ICAgZGllICJFUlJPUjogTm8gW0V4cG9zZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZSBzcGVjaWZpZWQg
Zm9yIGludGVyZmFjZSBpbiAkaWRsRmlsZU5hbWUiOwogICAgICAgICB9CisgICAgICAgIGlmICgk
ZXhwb3NlZEF0dHJpYnV0ZSBlcSAiKiIpIHsKKyAgICAgICAgICAgICRleHBvc2VkQXR0cmlidXRl
ID0gIigiIC4gam9pbignLCcsIEBzdXBwb3J0ZWRHbG9iYWxDb250ZXh0cykgLiAiKSI7CisgICAg
ICAgIH0KICAgICAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1
dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsKKwog
ICAgICAgICBteSBAZ2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmlidXRl
KTsKICAgICAgICAgZm9yZWFjaCBteSAkZ2xvYmFsQ29udGV4dCAoQGdsb2JhbENvbnRleHRzKSB7
CiAgICAgICAgICAgICBteSAoJGF0dHJpYnV0ZUNvZGUsICR3aW5kb3dBbGlhc2VzKSA9IEdlbmVy
YXRlQ29uc3RydWN0b3JBdHRyaWJ1dGVzKCRpbnRlcmZhY2VOYW1lLCAkZXh0ZW5kZWRBdHRyaWJ1
dGVzLCAkZ2xvYmFsQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzLmlkbAppbmRleCAxMGRhZTExMDdkMzM0YmM4ZjQzZGYyZjRmN2U4NGE5
ODNjMzVkNjZmLi4xNzVjNDdjZmE4OTFmZmZiYzVhMzJhYTk2ZmViNzFhZTFmMzQxY2M0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKQEAg
LTEsMiArMSwzIEBACiBwYXJ0aWFsIGludGVyZmFjZSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSB7
CisgICAgYXR0cmlidXRlIEV4cG9zZWRTdGFyQ29uc3RydWN0b3IgRXhwb3NlZFN0YXI7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RPTVdpbmRv
d0NvbnN0cnVjdG9ycy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
RE9NV2luZG93Q29uc3RydWN0b3JzLmlkbAppbmRleCBlYjdlMmVmMTM5NzJhYzA2MDYwYmRhYWZm
ZDQzZDZiZjA1N2U0OWI5Li5mNDA2YmIyNGJhYzE5NDQ2MThhODIxOGNkNTYwZTQzOTBhYWU1NmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2lu
ZG93Q29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbApAQCAtMSw1ICsxLDYgQEAKIHBhcnRpYWwg
aW50ZXJmYWNlIERPTVdpbmRvdyB7CiAgICAgYXR0cmlidXRlIERPTVdpbmRvd0NvbnN0cnVjdG9y
IERPTVdpbmRvdzsKKyAgICBhdHRyaWJ1dGUgRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciBFeHBvc2Vk
U3RhcjsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3Ig
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93OwogICAgIGF0dHJpYnV0ZSBUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc0NvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOwogICAgIGF0dHJpYnV0
ZSBUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5pZGwKaW5kZXggMmEzMGRhMDdhMzk4NmE2MjBlY2IyM2E0YWEwOGQ5ZDM4NDg1
ODBlMC4uZGE1OWE1MTg0ZTA4Zjc3YzZiNTkzNTFjMTAyMDQxZTdiZWYwZjViZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCkBA
IC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUgewogICAgIGF0dHJpYnV0ZSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNv
bnN0cnVjdG9yIEV4cG9zZWRTdGFyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9FeHBvc2VkU3Rhci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvRXhwb3NlZFN0YXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYjBkZTU4NmMx
MDkwYTMwYTNiNmE1MDE4MTViMThkZTg2YTI0NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRXhwb3NlZFN0YXIuaWRsCkBAIC0wLDAgKzEs
NyBAQAorWworICAgIEV4cG9zZWQ9KgorXSBpbnRlcmZhY2UgRXhwb3NlZFN0YXIgOiBFdmVudFRh
cmdldCB7CisgICAgW0V4cG9zZWQ9Kl0gdW5kZWZpbmVkIG9wZXJhdGlvbkZvckFsbENvbnRleHRz
KCk7CisgICAgW0V4cG9zZWQ9V2luZG93XSB1bmRlZmluZWQgb3BlcmF0aW9uSnVzdEZvcldpbmRv
d0NvbnRleHRzKCk7CisgICAgW0V4cG9zZWQ9V29ya2VyXSB1bmRlZmluZWQgb3BlcmF0aW9uSnVz
dEZvcldvcmtlckNvbnRleHRzKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKaW5kZXggZTQ2OTA0OTUyYmU1
N2FkN2IyNjA0NTE5NjY1YjY2MTg4NzA5NTk2My4uYzlhMzhkNjJhMTZiMjRiYTBmYzYwNTgxMDkz
ZmYwNWFiMjk1OTViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiSlNET01HbG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIkpTRXhwb3NlZFN0YXIu
aCIKICNpbmNsdWRlICJKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuaCIKICNpbmNsdWRlICJKU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlLmgiCkBAIC02NCw2ICs2NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93Q29uc3RydWN0b3IpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3dfRE9NV2luZG93Q29u
c3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5kb3df
RXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcik7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19UZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc0NvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
RE9NV2luZG93X1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IpOwpAQCAtODQs
NyArODYsNyBAQCB1c2luZyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNET01XaW5kb3c+OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNET01XaW5kb3dUYWJsZUluZGV4WzM3XSA9IHsKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgNSwgMzUgfSwKKyAgICB7IDYsIDM1IH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC05NywzNSArOTksMzYgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9NV2luZG93VGFibGVJbmRleFsz
N10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyA0LCAzMyB9LAorICAgIHsgNSwgMzMgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MiwgLTEgfSwKLSAgICB7IDEsIDMyIH0sCisgICAgeyAzLCAtMSB9LAorICAgIHsgMiwgMzIgfSwK
ICAgICB7IDAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgOSwgLTEgfSwKKyAgICB7IDEwLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMywgMzQgfSwK
LSAgICB7IDYsIDM2IH0sCi0gICAgeyA3LCAtMSB9LAorICAgIHsgNCwgMzQgfSwKKyAgICB7IDcs
IDM2IH0sCiAgICAgeyA4LCAtMSB9LAotICAgIHsgMTAsIC0xIH0sCisgICAgeyA5LCAtMSB9LAor
ICAgIHsgMTEsIC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RP
TVdpbmRvd1RhYmxlVmFsdWVzW10gPQogewogICAgIHsgIkRPTVdpbmRvdyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNE
T01XaW5kb3dfRE9NV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiRXhwb3NlZFN0YXIi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzRE9NV2luZG93X0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAg
eyAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd19FeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dfVGVzdENvbmRpdGlvbmFsSW5jbHVkZXND
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNET01XaW5kb3dfVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKQEAgLTE0Miw3ICsxNDUsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNE
T01XaW5kb3dUYWJsZVZhbHVlc1tdID0KICAgICB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0RPTVdpbmRvd19UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRE9NV2luZG93VGFibGUg
PSB7IDExLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dUYWJsZVZh
bHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
RE9NV2luZG93VGFibGUgPSB7IDEyLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNE
T01XaW5kb3dUYWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07CiB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJE
T01XaW5kb3ciLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3IpIH07CiAKIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0yMjUsNiAr
MjI4LDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd19ET01XaW5kb3dD
b25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpCiAgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0RPTVdpbmRvdz46OmdldDxqc0RPTVdpbmRvd19ET01XaW5kb3dDb25zdHJ1Y3RvckdldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0RPTVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9y
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTVdpbmRvdyYg
dGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0RPTVdpbmRvd19FeHBvc2VkU3RhckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNET01XaW5k
b3c+OjpnZXQ8anNET01XaW5kb3dfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0RPTVdpbmRvd19FeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1
Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01XaW5k
b3cmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGE5
ZDYxNTg4NjA5ODc5NTY0NTYyNzhkOWU0NDBhYjkyYzM1MDQ0YmIuLjMzMDczNjRlYzA0MzExYTdl
MTgyM2ZkNjZlMjFhZWYwNzY2NjM5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0RPTUdsb2Jh
bE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0V4cG9zZWRT
dGFyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6
ZXIuaD4KQEAgLTUwLDIzICs1MSwyOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiAKIHVzaW5nIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+OwogCiAvKiBIYXNoIHRhYmxlICovCiAK
LXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFs1XSA9IHsKICAg
ICB7IC0xLCAtMSB9LAotICAgIHsgMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEs
IC0xIH0sCisgICAgeyAwLCA0IH0sCisgICAgeyAxLCAtMSB9LAogfTsKIAogCiBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVz
W10gPQogewogICAgIHsgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXN0YXRp
YyBjb25zdCBIYXNoVGFibGUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyAx
LCAxLCB0cnVlLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlSW5kZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlOjppbmZvKCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlcywg
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVET01Db25zdHJ1Y3RvcikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpAQCAt
MTQ3LDYgKzE1MywxNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZV9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZQogICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT46OmdldDxqc0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlX0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQog
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBv
c2VkU3RhckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQoreworICAgIFVO
VVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNFeHBvc2VkU3Rh
cjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlz
T2JqZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBh
dHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2Vk
U3RhckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBh
dHRyaWJ1dGVOYW1lKTsKK30KKwogSlNDOjpJc29TdWJzcGFjZSogSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4
cG9zZWRTdGFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0V4cG9zZWRTdGFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2RkZjQwNjhjMTQ3MzNlYzllNjE4Mzg5NTY0
MzY2ZmE1ZjNhNjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCkBAIC0wLDAgKzEsMzA4IEBACisvKgor
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
KyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0V4
cG9zZWRTdGFyLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJE
T01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgi
CisjaW5jbHVkZSAiSlNET01Db252ZXJ0QmFzZS5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKKyNpbmNs
dWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1l
c3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlvbnMKKwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1
bmN0aW9uX29wZXJhdGlvbkZvckFsbENvbnRleHRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9y
V2luZG93Q29udGV4dHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNFeHBv
c2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyk7
CisKKy8vIEF0dHJpYnV0ZXMKKworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNF
eHBvc2VkU3RhckNvbnN0cnVjdG9yKTsKKworY2xhc3MgSlNFeHBvc2VkU3RhclByb3RvdHlwZSBm
aW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTRXhwb3Nl
ZFN0YXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNF
eHBvc2VkU3RhclByb3RvdHlwZT4odm0uaGVhcCkpIEpTRXhwb3NlZFN0YXJQcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgorICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTRXhwb3Nl
ZFN0YXJQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwg
c3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRT
dGFyUHJvdG90eXBlLCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpCYXNlKTsKKwordXNpbmcgSlNF
eHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNFeHBvc2VkU3Rhcj47CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3Nl
ZFN0YXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRXhwb3NlZFN0YXIiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRXhwb3NlZFN0YXJE
T01Db25zdHJ1Y3RvcikgfTsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTRXhwb3NlZFN0YXJET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU0V2ZW50VGFyZ2V0
OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7Cit9CisKK3RlbXBsYXRlPD4gdm9p
ZCBKU0V4cG9zZWRTdGFyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAg
IEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiRXhwb3NlZFN0
YXIiX3MpOworICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNFeHBvc2VkU3Rhcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7Cit9CisKKy8qIEhhc2ggdGFibGUg
Zm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNFeHBvc2Vk
U3RhclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0V4cG9zZWRTdGFyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAib3BlcmF0aW9uRm9y
QWxsQ29udGV4dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25Gb3JB
bGxDb250ZXh0cyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJvcGVyYXRpb25KdXN0Rm9y
V2luZG93Q29udGV4dHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25K
dXN0Rm9yV2luZG93Q29udGV4dHMpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAib3BlcmF0
aW9uSnVzdEZvcldvcmtlckNvbnRleHRzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25f
b3BlcmF0aW9uSnVzdEZvcldvcmtlckNvbnRleHRzKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsK
KworY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFN0YXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIkV4
cG9zZWRTdGFyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90eXBlKSB9OworCit2b2lkIEpTRXhwb3NlZFN0YXJQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU0V4cG9zZWRTdGFyOjpp
bmZvKCksIEpTRXhwb3NlZFN0YXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIGJv
b2wgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOworICAgIGlmICghanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm9wZXJhdGlvbkp1c3RG
b3JXaW5kb3dDb250ZXh0cyIpLCBzdHJsZW4oIm9wZXJhdGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0
cyIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBpZiAoIWpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJv
cGVyYXRpb25KdXN0Rm9yV29ya2VyQ29udGV4dHMiKSwgc3RybGVuKCJvcGVyYXRpb25KdXN0Rm9y
V29ya2VyQ29udGV4dHMiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9
CisgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlz
RGljdGlvbmFyeSgpKQorICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CisgICAg
SlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNz
SW5mbyBKU0V4cG9zZWRTdGFyOjpzX2luZm8gPSB7ICJFeHBvc2VkU3RhciIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNFeHBvc2VkU3Rhcikg
fTsKKworSlNFeHBvc2VkU3Rhcjo6SlNFeHBvc2VkU3RhcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEV4cG9zZWRTdGFyPiYmIGltcGwp
CisgICAgOiBKU0V2ZW50VGFyZ2V0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKQoreworfQorCit2b2lkIEpTRXhwb3NlZFN0YXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVE
T01PYmplY3QsIEV4cG9zZWRTdGFyPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBh
cyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJj
bGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNFeHBvc2VkU3Rh
cjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3sKKyAgICByZXR1cm4gSlNFeHBvc2VkU3RhclByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xv
YmFsT2JqZWN0LCBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZn
bG9iYWxPYmplY3QsIEpTRXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkp
OworfQorCitKU09iamVjdCogSlNFeHBvc2VkU3Rhcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBl
PEpTRXhwb3NlZFN0YXI+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTRXhwb3Nl
ZFN0YXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNFeHBvc2VkU3RhckRP
TUNvbnN0cnVjdG9yLCBET01Db25zdHJ1Y3RvcklEOjpFeHBvc2VkU3Rhcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKworSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRv
KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTRXhwb3NlZFN0YXJQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0V4cG9zZWRTdGFyOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uRm9yQWxsQ29udGV4dHNC
b2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9uRm9yQWxsQ29udGV4dHMoKTsgfSkp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzRXhwb3NlZFN0YXJQcm90b3R5cGVG
dW5jdGlvbl9vcGVyYXRpb25Gb3JBbGxDb250ZXh0cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU0V4cG9zZWRTdGFyPjo6Y2FsbDxqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rp
b25fb3BlcmF0aW9uRm9yQWxsQ29udGV4dHNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgIm9wZXJhdGlvbkZvckFsbENvbnRleHRzIik7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0
aW9uSnVzdEZvcldpbmRvd0NvbnRleHRzQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNFeHBvc2VkU3Rhcj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm9wZXJh
dGlvbkp1c3RGb3JXaW5kb3dDb250ZXh0cygpOyB9KSkpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oanNFeHBvc2VkU3RhclByb3RvdHlwZUZ1bmN0aW9uX29wZXJhdGlvbkp1c3RGb3JX
aW5kb3dDb250ZXh0cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0V4cG9zZWRT
dGFyPjo6Y2FsbDxqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZv
cldpbmRvd0NvbnRleHRzQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJv
cGVyYXRpb25KdXN0Rm9yV2luZG93Q29udGV4dHMiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25K
dXN0Rm9yV29ya2VyQ29udGV4dHNCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU0V4cG9zZWRTdGFyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwub3BlcmF0aW9u
SnVzdEZvcldvcmtlckNvbnRleHRzKCk7IH0pKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc0V4cG9zZWRTdGFyUHJvdG90eXBlRnVuY3Rpb25fb3BlcmF0aW9uSnVzdEZvcldvcmtl
ckNvbnRleHRzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTRXhwb3NlZFN0YXI+
OjpjYWxsPGpzRXhwb3NlZFN0YXJQcm90b3R5cGVGdW5jdGlvbl9vcGVyYXRpb25KdXN0Rm9yV29y
a2VyQ29udGV4dHNCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm9wZXJh
dGlvbkp1c3RGb3JXb3JrZXJDb250ZXh0cyIpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU0V4
cG9zZWRTdGFyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xp
ZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwor
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKSkKKyAgICAgICAg
cmV0dXJuIHNwYWNlOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4gfHwgIUpTRXhwb3NlZFN0YXI6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4pCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTRXhwb3NlZFN0YXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRXhwb3NlZFN0YXIpOworICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICB2b2lkICgqbXlWaXNpdE91dHB1dENv
bnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNFeHBvc2VkU3Rh
cjo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICB2b2lkICgqanNDZWxsVmlzaXRPdXRwdXRD
b25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxs
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzOworICAgIGlmIChteVZpc2l0T3V0cHV0Q29uc3RyYWlu
dCAhPSBqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQpCisgICAgICAgIGNsaWVudERhdGEub3V0
cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5E
CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTRXhw
b3NlZFN0YXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXpl
cikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRXhwb3NlZFN0YXIqPihjZWxs
KTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVj
dC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhp
c09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAg
QmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCisjaWYgRU5BQkxFKEJJTkRJ
TkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxl
OiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/
P183RXhwb3NlZFN0YXJAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIg
eyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTExRXhwb3NlZFN0YXJFW107IH0KKyNlbmRpZgor
I2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RXhwb3NlZFN0YXI+JiYg
aW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVu
dGlmaWVyKCI/P183RXhwb3NlZFN0YXJAV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQq
IGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMTFFeHBvc2VkU3RhckVbMl07
CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgRXhwb3NlZFN0YXIgZG9lcyBub3QgaGF2
ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxFeHBvc2VkU3Rhcj46OnZhbHVlLCAiRXhw
b3NlZFN0YXIgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMg
YXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAv
LyBFeHBvc2VkU3RhciBoYXMgc3ViY2xhc3Nlcy4gSWYgRXhwb3NlZFN0YXIgaGFzIHN1YmNsYXNz
ZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJl
IEV4cG9zZWRTdGFyIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8g
YnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVy
ZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50
ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVX
cmFwcGVyPEV4cG9zZWRTdGFyPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeHBvc2VkU3RhciYgaW1wbCkKK3sK
KyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwp
OworfQorCitFeHBvc2VkU3RhciogSlNFeHBvc2VkU3Rhcjo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTRXhwb3NlZFN0YXIqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBw
ZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTg4Mjg0OGNmYTA0NjczNGJjOGI3OGIzODg4NmFhNzE1MTZjMzBiZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0V4cG9zZWRTdGFyLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4cG9zZWRTdGFyLmgiCisjaW5jbHVkZSAiSlNE
T01XcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEpTRXhwb3NlZFN0YXIgOiBwdWJsaWMgSlNFdmVudFRhcmdldCB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRXZlbnRUYXJnZXQ7CisgICAgdXNpbmcgRE9NV3Jh
cHBlZCA9IEV4cG9zZWRTdGFyOworICAgIHN0YXRpYyBKU0V4cG9zZWRTdGFyKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPEV4cG9zZWRTdGFyPiYmIGltcGwpCisgICAgeworICAgICAgICBKU0V4cG9zZWRTdGFyKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRXhwb3NlZFN0YXI+KGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKSkgSlNFeHBvc2VkU3RhcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUds
b2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBFeHBvc2VkU3RhciogdG9XcmFwcGVkKEpTQzo6Vk0m
LCBKU0M6OkpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
LCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKKyAgICBFeHBvc2VkU3RhciYgd3JhcHBlZCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwb3NlZFN0YXImPihCYXNlOjp3cmFwcGVkKCkp
OworICAgIH0KK3Byb3RlY3RlZDoKKyAgICBKU0V4cG9zZWRTdGFyKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8RXhwb3NlZFN0YXI+JiYpOworCisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBFeHBvc2VkU3RhciYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4cG9zZWRTdGFyKiBpbXBsKSB7IHJl
dHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBs
KSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxFeHBvc2VkU3Rhcj4mJik7
CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmUHRyPEV4cG9zZWRTdGFyPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVh
dGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVs
bCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVy
Q29udmVydGVyVHJhaXRzPEV4cG9zZWRTdGFyPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0g
SlNFeHBvc2VkU3RhcjsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gRXhwb3NlZFN0
YXIqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGU0Y2Y1YjY4OTk3NzQ2Yjk0YWVkNTdhNTgwYTY4MDQ1
MDE0Y2Y5ODQuLjA5YzRhNzk1ZDRhZDVlZTE4MTIxM2VkNDdhOTMzZTQyZTI2ZGNlNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNs
dWRlICJKU0V4cG9zZWRTdGFyLmgiCiAjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDksMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAvLyBBdHRyaWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29u
c3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNQYWludFdvcmts
ZXRHbG9iYWxTY29wZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIAogdXNp
bmcgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT47CiAKIC8qIEhh
c2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4WzJdID0geworc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4WzRd
ID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAwLCAtMSB9LAogfTsKQEAgLTYzLDEwICs2NywxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlSW5kZXhbMl0g
PSB7CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlVGFibGVWYWx1ZXNbXSA9CiB7CisgICAgeyAiRXhwb3NlZFN0YXIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7
ICJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZV9QYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogfTsKIAotc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGUgPSB7IDEs
IDEsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdvcmts
ZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGVJ
bmRleCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
VGFibGUgPSB7IDIsIDMsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwg
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlVGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJQYWludFdvcmtsZXRH
bG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiB0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xMzYsNiArMTQxLDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3Rv
dHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSYg
dGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1BhaW50V29ya2xldEdsb2JhbFNjb3BlX0V4cG9zZWRTdGFyQ29uc3RydWN0b3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPjo6Z2V0PGpzUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1BhaW50V29ya2xldEdsb2JhbFNjb3BlX1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxH
bG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAK
aW5kZXggMDU1Njg1ZDBkMGQ1MzM2NDFmZDZhN2Q0NWNlYWU1NzMyMGY5ZGE3Yy4uY2MwZGEzMDNm
YTQ0M2E1YmQxNmE5N2JmMjRmNTRlZWQwMDA2YmRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiSlNFeHBvc2VkU3Rh
ci5oIgogI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oIgpAQCAtNDksMTMgKzUwLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBBdHRy
aWJ1dGVzCiAKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3Rvcik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZV9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKIHVzaW5nIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUg
Ki8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlVGFibGVJbmRleFsyXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbNF0gPSB7Cisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDAs
IC0xIH0sCiB9OwpAQCAtNjMsMTAgKzY3LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbMl0gPSB7CiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRh
YmxlVmFsdWVzW10gPQogeworICAgIHsgIkV4cG9zZWRTdGFyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVfU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiB9OwogCi1zdGF0
aWMgY29uc3QgSGFzaFRhYmxlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDEs
IDEsIHRydWUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFi
bGVJbmRleCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlID0geyAyLCAzLCB0cnVlLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6aW5m
bygpLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rv
cikgfTsKIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKQEAgLTEzNiw2ICsxNDEsMTcgQEAgSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3RhckNvbnN0cnVjdG9y
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTRXhwb3NlZFN0YXI6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9FeHBvc2VkU3Rh
ckNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVfRXhwb3NlZFN0YXJDb25zdHJ1Y3RvckdldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZV9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9QYWludFdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggM2I1ZmFjYTQ0OWIyNGRmOWU2
NjA2OGRiZTk3MTJjYmQzNjA3MGQyMy4uYjkzYzg5NjE2NWEwOGQ4ODNkMTEyMGFhNmI1ZjYyZTI0
NTVjODRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnMuaWRsCkBAIC0xLDMgKzEsNCBAQAogcGFydGlhbCBpbnRlcmZhY2UgUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUgeworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9z
ZWRTdGFyOwogICAgIGF0dHJpYnV0ZSBQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKaW5kZXggMGVjZmIwYWZiODQ0NzczNjZlNDAw
YWU0YmM5MmE5NGMyNTVmM2RmYS4uMTc0OTFlNTc5NWU0ZTg4YzhhYzg3YTVmODBhNmFmMjdkMjZk
YTk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9ycy5pZGwKQEAgLTEsMyArMSw0IEBACiBwYXJ0aWFsIGludGVyZmFjZSBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgeworICAgIGF0dHJpYnV0ZSBFeHBvc2VkU3RhckNvbnN0cnVjdG9yIEV4cG9z
ZWRTdGFyOwogICAgIGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
ciBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5j
aWVzLmRlcAppbmRleCA3M2FmYzUwMGQ1ZjQ1NmMxZGMzOGZjNzFkODk2ODE4MmRkYmYwNjE4Li5j
MTIzMjE1MjQ2MWE2YzJlZDJlNTQ4MGEyZTdjNmRiNjg4NGJhNDYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
LmRlcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVu
dGFsRGVwZW5kZW5jaWVzLmRlcApAQCAtNyw2ICs3LDkgQEAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oOiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKIERP
TURlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg6IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzLmlkbAogV2ViRE9NRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDogRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGw6CitKU0V4cG9zZWRTdGFyLmg6IAorRE9NRXhwb3Nl
ZFN0YXIuaDogCitXZWJET01FeHBvc2VkU3Rhci5oOiAKIEpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93Lmg6IAogRE9NRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Lmg6IAogV2ViRE9NRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93Lmg6IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>