<?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>212909</bug_id>
          
          <creation_ts>2020-06-08 12:29:47 -0700</creation_ts>
          <short_desc>Disambiguate the OverridesGetPropertyNames structure flag.</short_desc>
          <delta_ts>2020-06-09 17:22:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212954</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=212956</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=212958</see_also>
          <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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1660303</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-08 12:29:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/63823557&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660306</commentid>
    <comment_count>1</comment_count>
      <attachid>401357</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-08 12:34:24 -0700</bug_when>
    <thetext>Created attachment 401357
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660315</commentid>
    <comment_count>2</comment_count>
      <attachid>401357</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-06-08 12:44:27 -0700</bug_when>
    <thetext>Comment on attachment 401357
proposed patch.

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

&gt; JSTests/stress/stack-overflow-below-JSObject-getPropertyNames.js:16
&gt; +            caughtStackOverflowOnce = true;

Why do we want to catch it once?

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:2345
&gt;          if (prototype-&gt;structure(vm)-&gt;typeInfo().overridesGetPropertyNames()) {

Doesn&apos;t this check mean we are not recursing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660340</commentid>
    <comment_count>3</comment_count>
      <attachid>401357</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-08 13:11:14 -0700</bug_when>
    <thetext>Comment on attachment 401357
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:2337
&gt; +    // This is needed because we&apos;re recursing in the getPropertyNames() calls below.

Is the idea that an overridden getProperty names calls back into here?

I don’t see how your test does or proves this. Why not make a super duper long prototype chain to prove this is happening?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660352</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-08 13:37:36 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #3)
&gt; &gt; Source/JavaScriptCore/runtime/JSObject.cpp:2337
&gt; &gt; +    // This is needed because we&apos;re recursing in the getPropertyNames() calls below.
&gt; 
&gt; Is the idea that an overridden getProperty names calls back into here?
&gt; 
&gt; I don’t see how your test does or proves this. Why not make a super duper
&gt; long prototype chain to prove this is happening?

Both you and Keith have pointed out that this is not expected.  The tests does prove that the issue manifests on trunk.  Looks like the root issue lies elsewhere.  I will investigate further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660353</commentid>
    <comment_count>5</comment_count>
      <attachid>401357</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-08 13:37:58 -0700</bug_when>
    <thetext>Comment on attachment 401357
proposed patch.

Taking out of review while I dig for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660374</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-08 14:14:31 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #2)
&gt; Comment on attachment 401357 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401357&amp;action=review
&gt; 
&gt; &gt; JSTests/stress/stack-overflow-below-JSObject-getPropertyNames.js:16
&gt; &gt; +            caughtStackOverflowOnce = true;
&gt; 
&gt; Why do we want to catch it once?

This was added so that the test can end quickly vs taking forever.  But this check turns out to be unnecessary.  We just need to rethrow in the catch to avoid running the for-in loop after the catch block.  The issue does not repro if I remove the try-catch or the for-in loop.

But none of these may matter once the real root cause.  Still digging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660649</commentid>
    <comment_count>7</comment_count>
      <attachid>401430</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-09 02:57:38 -0700</bug_when>
    <thetext>Created attachment 401430
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660872</commentid>
    <comment_count>8</comment_count>
      <attachid>401430</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-09 14:46:25 -0700</bug_when>
    <thetext>Comment on attachment 401430
proposed patch.

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

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        for definition (2).  OverridesGetPropertyNames now only means definition (1).

so (1) implies (2), right?

Do we assert that?

but doesn&apos;t that also mean that (1) implies slow for...in?

I wouldn&apos;t expect getOwnNonIndexPropertyNames means you can&apos;t cache property enumerator but that&apos;s what your change does b/c changes in canCacheOwnKeys

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +

so you say some code conflated these two things. What was the actual bug this lead to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660977</commentid>
    <comment_count>9</comment_count>
      <attachid>401430</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-09 15:37:21 -0700</bug_when>
    <thetext>Comment on attachment 401430
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt;&gt; +        for definition (2).  OverridesGetPropertyNames now only means definition (1).
&gt; 
&gt; so (1) implies (2), right?
&gt; 
&gt; Do we assert that?
&gt; 
&gt; but doesn&apos;t that also mean that (1) implies slow for...in?
&gt; 
&gt; I wouldn&apos;t expect getOwnNonIndexPropertyNames means you can&apos;t cache property enumerator but that&apos;s what your change does b/c changes in canCacheOwnKeys

Yes, (1) implies (2).  The asserts in Structure::validateFlags() already asserts that if getPropertyNames is overridden, then the OverridesAnyFormOfGetPropertyNames flag should be set.  It also asserts that the OverridesGetPropertyNames should be set.  So, this effectively asserts what you&apos;re asking.

Regarding this slowing does for...in, how so?  We were already doing this to begin with: in the old code, Structure::canCacheOwnKeys() used to check typeInfo().overridesGetPropertyNames(), and OverridesGetPropertyName is set when any of the getPropertyName, getOwnPropertyNames, getOwnNonIndexPropertyNames are overridden.  There were some cases where it was even set when getPropertyName was not overridden.  For example, JSArray did not override getPropertyNames but sets OverridesGetPropertyNames.  This means canCacheOwnKeys() always returned false for JSArray ... no different than with my patch.  So, I fail to see how things have changed to be more pessimistic after my patch.  Can you give me a specific class and scenario to demonstrate your point?

The only cases where I added OverridesAnyFormOfGetPropertyNames where OverridesGetPropertyNames wasn&apos;t present before are 1. JSAPIValueWrapper, and 2. JSDataView.  Are you saying JSDataView is the case which will be the slow down here?

&gt;&gt; Source/JavaScriptCore/ChangeLog:18
&gt;&gt; +
&gt; 
&gt; so you say some code conflated these two things. What was the actual bug this lead to?

Here are the rough details:

1. The repro test case was invoking JSObject::getPropertyNames on a JSArray. 

2. In the while loop at the bottom of JSObject::getPropertynames, we check `if (prototype-&gt;structure(vm)-&gt;typeInfo().overridesGetPropertyNames()) {`.  

3. The test overrides proto as follows: `arg0.__proto__ = arr1` where both arg0 and arr1 are JArrays.

4. As commented above, JSArray sets OverridesGetPropertyNames but does not override getPropertyNames().
    It actually meant to set OverridesAnyFormOfGetPropertyNames (after I disambiguated it) because JSArray overrides getOwnNonIndexPropertyNames().

5. When we get to the check at (2), we ask if the prototype overridesGetPropertyNames().
    Since JSArray sets OverridesGetPropertyNames, the answer is yes / true.
    JSObject::getPropertynames() then proceeds to invoke `prototype-&gt;methodTable(vm)-&gt;getPropertyNames(prototype, globalObject, propertyNames, mode);`
    But because JSArray does actually overrides getPropertyNames(), we&apos;re actually invoking JSObject::getPropertyNames() here.

Viola!  Infinite loop.

That&apos;s the bug.  The fix is that JSArray should not be setting OverridesGetPropertyNames.  It should be setting OverridesAnyFormOfGetPropertyNames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660983</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-09 15:53:33 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #9)
...
&gt; 5. When we get to the check at (2), we ask if the prototype
&gt; overridesGetPropertyNames().
&gt;     Since JSArray sets OverridesGetPropertyNames, the answer is yes / true.
&gt;     JSObject::getPropertynames() then proceeds to invoke
&gt; `prototype-&gt;methodTable(vm)-&gt;getPropertyNames(prototype, globalObject,
&gt; propertyNames, mode);`
&gt;     But because JSArray does actually overrides getPropertyNames(), we&apos;re
&gt; actually invoking JSObject::getPropertyNames() here.

typo: I meant to say &quot;because JSArray does NOT actually override getPropertyNames()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660997</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-09 16:20:32 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #9)
&gt; Comment on attachment 401430 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401430&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt; &gt;&gt; +        for definition (2).  OverridesGetPropertyNames now only means definition (1).
&gt; &gt; 
&gt; &gt; so (1) implies (2), right?
&gt; &gt; 
&gt; &gt; Do we assert that?
&gt; &gt; 
&gt; &gt; but doesn&apos;t that also mean that (1) implies slow for...in?
&gt; &gt; 
&gt; &gt; I wouldn&apos;t expect getOwnNonIndexPropertyNames means you can&apos;t cache property enumerator but that&apos;s what your change does b/c changes in canCacheOwnKeys
&gt; 
&gt; Yes, (1) implies (2).  The asserts in Structure::validateFlags() already
&gt; asserts that if getPropertyNames is overridden, then the
&gt; OverridesAnyFormOfGetPropertyNames flag should be set.  It also asserts that
&gt; the OverridesGetPropertyNames should be set.  So, this effectively asserts
&gt; what you&apos;re asking.
&gt; 
&gt; Regarding this slowing does for...in, how so?  We were already doing this to
&gt; begin with: in the old code, Structure::canCacheOwnKeys() used to check
&gt; typeInfo().overridesGetPropertyNames(), and OverridesGetPropertyName is set
&gt; when any of the getPropertyName, getOwnPropertyNames,
&gt; getOwnNonIndexPropertyNames are overridden.  There were some cases where it
&gt; was even set when getPropertyName was not overridden.  For example, JSArray
&gt; did not override getPropertyNames but sets OverridesGetPropertyNames.  This
&gt; means canCacheOwnKeys() always returned false for JSArray ... no different
&gt; than with my patch.  So, I fail to see how things have changed to be more
&gt; pessimistic after my patch.  Can you give me a specific class and scenario
&gt; to demonstrate your point?
&gt; 
&gt; The only cases where I added OverridesAnyFormOfGetPropertyNames where
&gt; OverridesGetPropertyNames wasn&apos;t present before are 1. JSAPIValueWrapper,
&gt; and 2. JSDataView.  Are you saying JSDataView is the case which will be the
&gt; slow down here?
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:18
&gt; &gt;&gt; +
&gt; &gt; 
&gt; &gt; so you say some code conflated these two things. What was the actual bug this lead to?
&gt; 
&gt; Here are the rough details:
&gt; 
&gt; 1. The repro test case was invoking JSObject::getPropertyNames on a JSArray. 
&gt; 
&gt; 2. In the while loop at the bottom of JSObject::getPropertynames, we check
&gt; `if (prototype-&gt;structure(vm)-&gt;typeInfo().overridesGetPropertyNames()) {`.  
&gt; 
&gt; 3. The test overrides proto as follows: `arg0.__proto__ = arr1` where both
&gt; arg0 and arr1 are JArrays.
&gt; 
&gt; 4. As commented above, JSArray sets OverridesGetPropertyNames but does not
&gt; override getPropertyNames().
&gt;     It actually meant to set OverridesAnyFormOfGetPropertyNames (after I
&gt; disambiguated it) because JSArray overrides getOwnNonIndexPropertyNames().
&gt; 
&gt; 5. When we get to the check at (2), we ask if the prototype
&gt; overridesGetPropertyNames().
&gt;     Since JSArray sets OverridesGetPropertyNames, the answer is yes / true.
&gt;     JSObject::getPropertynames() then proceeds to invoke
&gt; `prototype-&gt;methodTable(vm)-&gt;getPropertyNames(prototype, globalObject,
&gt; propertyNames, mode);`
&gt;     But because JSArray does actually overrides getPropertyNames(), we&apos;re
&gt; actually invoking JSObject::getPropertyNames() here.
&gt; 
&gt; Viola!  Infinite loop.
&gt; 
&gt; That&apos;s the bug.  The fix is that JSArray should not be setting
&gt; OverridesGetPropertyNames.  It should be setting
&gt; OverridesAnyFormOfGetPropertyNames.

Makes sense. Please add this into your changelog since it&apos;s the most interesting part, and the motivation for the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661009</commentid>
    <comment_count>12</comment_count>
      <attachid>401430</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-09 16:39:05 -0700</bug_when>
    <thetext>Comment on attachment 401430
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661024</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-09 17:22:41 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r262827: &lt;http://trac.webkit.org/r262827&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401357</attachid>
            <date>2020-06-08 12:34:24 -0700</date>
            <delta_ts>2020-06-09 01:00:52 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212909.patch</filename>
            <type>text/plain</type>
            <size>2912</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjI3MjQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcygpIG5lZWRzIGEgc3RhY2sg
b3ZlcmZsb3cgY2hlY2sgc2luY2UgaXQgcmVjdXJzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI5MDkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9zdGFjay1vdmVyZmxvdy1iZWxvdy1K
U09iamVjdC1nZXRQcm9wZXJ0eU5hbWVzLmpzOiBBZGRlZC4KKwogMjAyMC0wNi0wNSAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpdCBzYWZlIHRvIGV4ZWN1
dGUKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93LWJlbG93LUpTT2JqZWN0LWdl
dFByb3BlcnR5TmFtZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvc3RhY2stb3Zl
cmZsb3ctYmVsb3ctSlNPYmplY3QtZ2V0UHJvcGVydHlOYW1lcy5qcwkobm9uZXhpc3RlbnQpCisr
KyBKU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVyZmxvdy1iZWxvdy1KU09iamVjdC1nZXRQcm9wZXJ0
eU5hbWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS1leGNlcHRpb25TdGFja1RyYWNlTGltaXQ9MCIsICItLWRlZmF1bHRFcnJvclN0YWNr
VHJhY2VMaW1pdD0wIikKKworbGV0IGFycjAgPSBbXTsKKwordmFyIGNhdWdodFN0YWNrT3ZlcmZs
b3dPbmNlID0gZmFsc2U7CisKK2Z1bmN0aW9uIGZvbyhhcmcwKSB7CisgICAgbGV0IGFycjEgPSBb
XTsKKyAgICBhcmcwLl9fcHJvdG9fXyA9IGFycjE7CisgICAgdHJ5IHsKKyAgICAgICAgZm9vKGFy
cjEpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGNhdWdodFN0YWNrT3ZlcmZsb3dP
bmNlKQorICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgaWYgKGUgPT0gIlJhbmdlRXJyb3I6
IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpCisgICAgICAgICAgICBjYXVnaHRT
dGFja092ZXJmbG93T25jZSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93
IGU7IC8vIFVuZXhwZWN0ZWQgZXJyb3IuCisgICAgfQorICAgIGZvciAobGV0IHEgaW4gYXJyMCkg
e30KK30KKwordHJ5IHsKKyAgICBmb28oYXJyMCk7Cit9IGNhdGNoIChlKSB7CisgICAgaWYgKGUg
IT0gIlJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIpCisgICAg
ICAgIHRocm93IGU7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2
MjcwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNi0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoKSBuZWVkcyBhIHN0YWNr
IG92ZXJmbG93IGNoZWNrIHNpbmNlIGl0IHJlY3Vyc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorCiAyMDIwLTA2LTA3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5B
QkxFX1ZJREVPX1RSQUNLIGlmZGVmIGd1YXJkcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjYyNzAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzM0LDYg
KzIzMzQsMTIgQEAgdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdAogICAg
IGlmIChuZXh0UHJvdG8uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIFRoaXMg
aXMgbmVlZGVkIGJlY2F1c2Ugd2UncmUgcmVjdXJzaW5nIGluIHRoZSBnZXRQcm9wZXJ0eU5hbWVz
KCkgY2FsbHMgYmVsb3cuCisgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0
KCkpKSB7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9
IGFzT2JqZWN0KG5leHRQcm90byk7CiAgICAgd2hpbGUoMSkgewogICAgICAgICBpZiAocHJvdG90
eXBlLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMo
KSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401430</attachid>
            <date>2020-06-09 02:57:38 -0700</date>
            <delta_ts>2020-06-09 16:39:05 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212909.patch</filename>
            <type>text/plain</type>
            <size>88902</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjI3ODApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTA2LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgdGhlIE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMg
c3RydWN0dXJlIGZsYWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjkwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MjM1NTc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvdW5leHBl
Y3RlZC1zdGFjay1vdmVyZmxvdy1iZWxvdy1KU09iamVjdC1nZXRQcm9wZXJ0eU5hbWVzLmpzOiBB
ZGRlZC4KKwogMjAyMC0wNi0wOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5j
b20+CiAKICAgICAgICAgW0ludGxdIFVwZGF0ZSB0ZXN0cyB0byBzdXBwb3J0IElDVSA2NwpJbmRl
eDogSlNUZXN0cy9zdHJlc3MvdW5leHBlY3RlZC1zdGFjay1vdmVyZmxvdy1iZWxvdy1KU09iamVj
dC1nZXRQcm9wZXJ0eU5hbWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3VuZXhw
ZWN0ZWQtc3RhY2stb3ZlcmZsb3ctYmVsb3ctSlNPYmplY3QtZ2V0UHJvcGVydHlOYW1lcy5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy91bmV4cGVjdGVkLXN0YWNrLW92ZXJmbG93
LWJlbG93LUpTT2JqZWN0LWdldFByb3BlcnR5TmFtZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWV4Y2VwdGlvblN0YWNrVHJhY2VMaW1p
dD0wIiwgIi0tZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0PTAiKQorCitsZXQgYXJyMCA9IFtd
OwordmFyIGFmdGVyRmlyc3RDYXRjaCA9IGZhbHNlOworCitmdW5jdGlvbiBmb28oYXJnMCkgewor
ICAgIHZhciBleGNlcHRpb247CisgICAgbGV0IGFycjEgPSBbXTsKKyAgICBhcmcwLl9fcHJvdG9f
XyA9IGFycjE7CisgICAgdHJ5IHsKKyAgICAgICAgZm9vKGFycjEpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgLy8gVGhpcyBhZnRlckZpcnN0Q2F0Y2ggdHJhY2tpbmcgaXMganVzdCB0byBm
YWNpbGl0YXRlIGJlaW5nIGFibGUgdG8gZW5kIHRoaXMKKyAgICAgICAgLy8gdGVzdCBxdWlja2x5
IHdpdGhvdXQgaGF2aW5nIHRvIHJ1biB0aGUgZm9yLWluIGxvb3AgYmVsb3cgb24gdGhlIGVudGly
ZSByZXR1cm4KKyAgICAgICAgLy8gcGF0aC4KKyAgICAgICAgaWYgKGFmdGVyRmlyc3RDYXRjaCkK
KyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIGFmdGVyRmlyc3RDYXRjaCA9IHRydWU7Cisg
ICAgICAgIGV4Y2VwdGlvbiA9IGU7CisgICAgfQorICAgIGZvciAobGV0IHEgaW4gYXJyMCkgeyB9
CisgICAgaWYgKGFmdGVyRmlyc3RDYXRjaCkKKyAgICAgICAgdGhyb3cgZXhjZXB0aW9uOyAvLyBX
ZSdyZSBkb25lIHdpdGggdGhlIHRlc3QuIExldCdzIGVuZCB0aGlzIHF1aWNrbHkuCit9CisKK3Ry
eSB7CisgICAgZm9vKGFycjApOworfSBjYXRjaCAoZSkgeworICAgIGlmIChlICE9ICJSYW5nZUVy
cm9yOiBNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKQorICAgICAgICB0aHJvdyBl
OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjI3NTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUxIEBACisyMDIwLTA2LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXNhbWJpZ3VhdGUgdGhlIE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgc3RydWN0dXJl
IGZsYWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MjkwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MjM1NTc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIE92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMgc3RydWN0dXJlIGZsYWcgY291bGQgbWVhbiAyIGRpZmZlcmVudAor
ICAgICAgICB0aGluZ3M6CisgICAgICAgIDEuIHRoZSBnZXRQcm9wZXJ0eU5hbWVzKCkgbWV0aG9k
IGlzIG92ZXJyaWRkZW4sIG9yCisgICAgICAgIDIuIGFueSBvZiB0aGUgZm9ybXMgb2YgZ2V0UHJv
cGVydHlOYW1lKCkgaXMgb3ZlcnJpZGRlbjoKKyAgICAgICAgICAgZ2V0UHJvcGVydHlOYW1lLCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzLCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMKKworICAgICAg
ICBTb21lIHBhcnRzIG9mIHRoZSBjb2RlIGV4cGVjdHMgb25lIGRlZmluaXRpb24gd2hpbGUgb3Ro
ZXIgcGFydHMgZXhwZWN0IHRoZSBvdGhlci4KKyAgICAgICAgVGhpcyBwYXRjaCBkaXNhbWJpZ3Vh
dGVzIGJldHdlZW4gdGhlIDIgYnkgaW50cm9kdWNpbmcgT3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJv
cGVydHlOYW1lcworICAgICAgICBmb3IgZGVmaW5pdGlvbiAoMikuICBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIG5vdyBvbmx5IG1lYW5zIGRlZmluaXRpb24gKDEpLgorCisgICAgICAgIE5vdGU6
IHdlIGNvdWxkIGhhdmUgaW1wbGVtZW50ZWQgb3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpIGJ5
IGRvaW5nIGEgY29tcGFyaXNvbgorICAgICAgICBvZiB0aGUgZ2V0UHJvcGVydHlOYW1lcyBwb2lu
dGVyIGluIHRoZSBNZXRob2RUYWJsZS4gIFRoaXMgaXMgYSBsaXR0bGUgc2xvd2VyIHRoYW4KKyAg
ICAgICAgY2hlY2tpbmcgYSBUeXBlSW5mbyBmbGFnLCBidXQgcHJvYmFibHkgZG9lc24ndCBtYXR0
ZXIgYSBsb3QgaW4gdGhlIGNvZGUgcGF0aHMKKyAgICAgICAgd2hlcmUgb3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcygpIGlzIGNhbGxlZC4gIEhvd2V2ZXIsIHdlIGhhdmUgYml0cyBpbiBUeXBlSW5m
bworICAgICAgICBsZWZ0LiAgU28sIHdlJ2xsIG1pZ2h0IGFzIHdlbGwgdXNlIGl0LgorCisgICAg
ICAgIFRoaXMgYW1iaWd1aXR5IHJlc3VsdGVkIGluIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVz
KCkgcmVjdXJzaW5nIGluZmluaXRlbHkKKyAgICAgICAgd2hlbiBpdCBkaWRuJ3QgdGhpbmsgaXQg
Y291bGQgcmVjdXJzZS4gIFRoaXMgaXMgZGVtb25zdHJhdGVkIGluCisgICAgICAgIEpTVGVzdHMv
c3RyZXNzL3VuZXhwZWN0ZWQtc3RhY2stb3ZlcmZsb3ctYmVsb3ctSlNPYmplY3QtZ2V0UHJvcGVy
dHlOYW1lcy5qcy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbWFkZSB0aGUgZm9sbG93aW5n
IGNoYW5nZXM6CisKKyAgICAgICAgMS4gVGVtcGxhdGl6ZWQgVHlwZUluZm86OmlzU2V0T25GbGFn
czEoKSBhbmQgVHlwZUluZm86OmlzU2V0T25GbGFnczIoKSBzbyB0aGF0CisgICAgICAgICAgIHdl
IGNhbiB1c2VkIHN0YXRpY19hc3NlcnRzIGluc3RlYWQgb2YgYSBkZWJ1ZyBBU1NFUlQgdG8gdmVy
aWZ5IHRoZSBpbnRlZ3JpdHkgb2YKKyAgICAgICAgICAgdGhlIGZsYWcgd2UncmUgY2hlY2tpbmcg
YWdhaW5zdC4KKworICAgICAgICAyLiBBZGRlZCBhIFN0cnVjdHVyZTo6dmFsaWRhdGVGbGFncygp
IGNhbGxlZCBmcm9tIHRoZSBTdHJ1Y3R1cmUgY29uc3RydWN0b3IuCisgICAgICAgICAgIHZhbGlk
YXRlRmxhZ3MoKSB3aWxsIHZlcmlmeSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICBhLiBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgbXVzdCBiZSBzZXQgaW4gdGhlIGZsYWdzIGlmIGdldE93
blByb3BlcnR5U2xvdAorICAgICAgICAgICAgICBpcyBvdmVycmlkZGVuIGluIHRoZSBNZXRob2RU
YWJsZS4KKyAgICAgICAgICAgYi4gSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyBtdXN0IGJlIHNldCBpbgorICAgICAgICAgICAgICB0aGUg
ZmxhZ3MgaWYgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleCBpcyBvdmVycmlkZGVuIGluIHRoZSBN
ZXRob2RUYWJsZS4KKyAgICAgICAgICAgYy4gSGFzUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrIG11
c3QgYmUgc2V0IGluIHRoZSBmbGFncyBpZiBkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjaworICAg
ICAgICAgICAgICBpcyBvdmVycmlkZGVuIGluIHRoZSBNZXRob2RUYWJsZS4KKyAgICAgICAgICAg
ZC4gT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyBtdXN0IGJlIHNldCBpbiB0aGUgZmxhZ3MgaWYg
Z2V0UHJvcGVydHlOYW1lcworICAgICAgICAgICAgICBpcyBvdmVycmlkZGVuIGluIHRoZSBNZXRo
b2RUYWJsZS4KKyAgICAgICAgICAgZS4gT3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1l
cyBtdXN0IGJlIHNldCBpbiB0aGUgZmxhZ3MgaWYgYW55IG9mCisgICAgICAgICAgICAgIGdldFBy
b3BlcnR5TmFtZXMsIGdldE93blByb3BlcnR5TmFtZXMsIG9yIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyBhcmUKKyAgICAgICAgICAgICAgb3ZlcnJpZGRlbiBpbiB0aGUgTWV0aG9kVGFibGUu
CisKKyAgICAgICAgICAgQW4gYWx0ZXJuYXRlIHNvbHV0aW9uIHdvdWxkIGJlIHRvIGF1dG9tYXRp
Y2FsbHkgc2V0IHRoZXNlIGZsYWdzIGlmIHdlIGRldGVjdAorICAgICAgICAgICB0aGVpciBjb3Jy
ZXNwb25kaW5nIG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4uICBIb3dldmVyLCB0aGlzIGFsdGVybmF0
ZSBzb2x1dGlvbgorICAgICAgICAgICByZXF1aXJlcyB0aGlzIGxhdW5kcnkgbGlzdCB0byBiZSBj
aGVja2VkIGV2ZXJ5IHRpbWUgYSBzdHJ1Y3R1cmUgaXMgY29uc3RydWN0ZWQuCisgICAgICAgICAg
IFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGhhdmluZyB0aGUgcmVxdWlyZWQgZmxhZ3Mg
YWxyZWFkeSBwcmUtZGV0ZXJtaW5lZAorICAgICAgICAgICBhcyBhIGNvbnN0YW50IGlzIG1vcmUg
ZWZmaWNpZW50IGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlIGFuZCBjb2RlIHNwYWNlLgorCisgICAg
ICAgICAgIEFsc28sIGl0IG9ubHkgdGFrZXMgb25lIGluc3RhbnRpYXRpb24gb2YgdGhlIHN0cnVj
dHVyZSB0byB2ZXJpZnkgdGhhdCB0aGUgZmxhZ3MKKyAgICAgICAgICAgYXJlIHZhbGlkLiAgU2lu
Y2Ugd2Ugb25seSB3cml0ZSBKU0NlbGwgLyBKU09iamVjdCBjbGFzc2VzIHdoZW4gd2UgbmVlZCB0
aGVtCisgICAgICAgICAgIGFuZCB3ZSBhbHdheXMgd3JpdGUgdGVzdHMgdG8gZXhlcmNpc2UgbmV3
IGNvZGUgKGVzcGVjaWFsbHkgc3VjaCBjbGFzc2VzKSwgd2UncmUKKyAgICAgICAgICAgZ3VhcmFu
dGVlZCB0aGUgZmxhZ3MgdmFsaWRhdGlvbiB3aWxsIGJlIGV4ZXJjaXNlZC4KKworICAgICAgICAz
LiBNYWRlIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoKSBhbmQgSlNPYmplY3Q6OmRvUHV0
UHJvcGVydHlTZWN1cml0eUNoZWNrKCkKKyAgICAgICAgICAgbm90IGlubGluZWQgd2hlbiBBU1NF
UlRfRU5BQkxFRC4gIFRoaXMgaXMgbmVlZGVkIGluIG9yZGVyIGZvciBTdHJ1Y3R1cmU6OnZhbGlk
YXRlRmxhZ3MoKQorICAgICAgICAgICB0byBkbyBpdHMgY2hlY2tzIHVzaW5nIGZ1bmN0aW9uIHBv
aW50ZXIgY29tcGFyaXNvbnMuCisKKyAgICAgICAgNC4gU3RydWN0dXJlOjp2YWxpZGF0ZUZsYWdz
KCkgZm91bmQgdGhlIGZvbGxvd2luZyBwcm9ibGVtcyB3aGljaCBhcmUgbm93IGZpeGVkOgorCisg
ICAgICAgICAgIEdldHRlclNldHRlciB3YXMgbm90IHVzaW5nIGl0cyBTdHJ1Y3R1cmVGbGFncy4g
IEFzIGEgcmVzdWx0LCBpdCB3YXMgbWlzc2luZyB0aGUKKyAgICAgICAgICAgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IGZsYWcuCisKKyAgICAgICAgICAgSlNEYXRhVmlldyBkaWQgbm90IGRl
ZmluZSBpdHMgU3RydWN0dXJlRmxhZ3MuICBJdCB3YXMgbWlzc2luZyB0aGUKKyAgICAgICAgICAg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IGFuZCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9w
ZXJ0eU5hbWVzIGZsYWdzLgorCisgICAgICAgIDUuIENoYW5nZWQgYSBUeXBlSW5mbyBjb25zdHJ1
Y3RvciB0byBub3QgaGF2ZSBhIGRlZmF1bHQgYXJndW1lbnQgZm9yIHRoZSBmbGFncyB2YWx1ZS4K
KyAgICAgICAgICAgQWxzbyBncmVwcGVkIGZvciBhbGwgdXNlcyBvZiB0aGlzIGNvbnN0cnVjdG9y
IHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIHBhc3NlZAorICAgICAgICAgICB0aGUgU3RydWN0dXJl
RmxhZ3MgZmllbGQuICBUaGlzIGV4ZXJjaXNlIGZvdW5kIHRoZSBmb2xsb3dpbmcgaXNzdWU6CisK
KyAgICAgICAgICAgSlNBUElWYWx1ZVdyYXBwZXIgd2FzIG5vdCB1c2luZyBpdHMgU3RydWN0dXJl
RmxhZ3Mgd2hlbiBjcmVhdGluZyBpdHMgc3RydWN0dXJlLgorICAgICAgICAgICBQcmV2aW91c2x5
LCBpdCB3YXMganVzdCBpZ25vcmluZyB0aGUgU3RydWN0dXJlSXNJbW1vcnRhbCBmbGFnIGluIFN0
cnVjdHVyZUZsYWdzLgorCisgICAgICAgIDYuIEhhcmRlbmVkIHRoZSBhc3NlcnRpb25zIGZvciBo
YXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkKKyAgICAg
ICAgICAgYW5kIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSBpbiB0aGUgU3RydWN0dXJlIGNv
bnN0cnVjdG9yLgorCisgICAgICAgICAgIFByZXZpb3VzbHksIGlmIHRoZSBmbGFnIGlzIHNldCwg
aXQgdmVyaWZpZXMgdGhhdCB0aGUgQ2xhc3NJbmZvIGhhcyB0aGUKKyAgICAgICAgICAgYXBwcm9w
cmlhdGUgZGF0YSBleHBlY3RlZCBieSB0aGUgZmxhZy4gIEhvd2V2ZXIsIGl0IGRvZXMgbm90IGFz
c2VydCB0aGUgcmV2ZXJzZQorICAgICAgICAgICBpLmUuIHRoYXQgaWYgdGhlIENsYXNzSW5mbyBk
YXRhIGV4aXN0cywgdGhlbiB0aGUgZmxhZyBtdXN0IGFsc28gYmUgc2V0LgorICAgICAgICAgICBU
aGUgbmV3IGFzc2VydGlvbnMgbm93IGNoZWNrcyBib3RoLgorCisgICAgICAgICAgIE1vdmVkIHRo
ZSBvdmVycmlkZXNHZXRDYWxsRGF0YSgpIGFzc2VydGlvbiBpbnRvIFN0cnVjdHVyZTo6dmFsaWRh
dGVGbGFncygpCisgICAgICAgICAgIGJlY2F1c2UgaXQgY29uY2VybnMgdGhlIE92ZXJyaWRlc0dl
dENhbGxEYXRhIGZsYWcuICBUaGlzIGFzc2VydGlvbiBoYXMgYWxzbworICAgICAgICAgICBiZW4g
aGFyZGVuZWQuCisKKyAgICAgICAgKiBBUEkvSlNBUElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2Nv
cGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmg6
CisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1l
L0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90SW1wbCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm94eS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoK
KyAgICAgICAgKEpTQzo6VHlwZUluZm86OlR5cGVJbmZvKToKKyAgICAgICAgKEpTQzo6VHlwZUlu
Zm86Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpUeXBlSW5m
bzo6aW1wbGVtZW50c0hhc0luc3RhbmNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86
OmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpUeXBl
SW5mbzo6b3ZlcnJpZGVzR2V0Q2FsbERhdGEgY29uc3QpOgorICAgICAgICAoSlNDOjpUeXBlSW5m
bzo6b3ZlcnJpZGVzVG9UaGlzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OnN0cnVj
dHVyZUlzSW1tb3J0YWwgY29uc3QpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6b3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcyBjb25zdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpvdmVycmlk
ZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUlu
Zm86OnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyBjb25zdCk6CisgICAgICAgIChKU0M6OlR5cGVJ
bmZvOjpnZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OlR5
cGVJbmZvOjpnZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSBjb25z
dCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpoYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2sg
Y29uc3QpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6bmV3SW1wdXJlUHJvcGVydHlGaXJlc1dh
dGNocG9pbnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmlzSW1tdXRhYmxlUHJv
dG90eXBlRXhvdGljT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gY29u
c3QpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6aXNTZXRPbkZsYWdzMSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlR5cGVJbmZvOjppc1NldE9uRmxhZ3MyIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JBc3NpZ24pOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnZhbGlkYXRlRmxhZ3MpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZU93bktleXMg
Y29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorCiAyMDIwLTA2LTA4ICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZWQg
dW5uZWVkZWQgUE9JTlRFUl9XSURUSCBtYWNybyBmcm9tIGIzCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJVmFsdWVXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSVZhbHVlV3JhcHBlci5oCShyZXZpc2lvbiAyNjI3NTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJVmFsdWVXcmFwcGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0z
Myw3ICszMywxMyBAQCBjbGFzcyBKU0FQSVZhbHVlV3JhcHBlciBmaW5hbCA6IHB1YmxpYyBKCiAg
ICAgZnJpZW5kIEpTVmFsdWUganNBUElWYWx1ZVdyYXBwZXIoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDZWxsOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0
cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICAvLyBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0
eU5hbWVzICh3aGljaCB1c2VkIHRvIGJlIE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMpIHdhcyBo
ZXJlCisgICAgLy8gc2luY2UgYW5jaWVudCB0aW1lcyBiYWNrIHdoZW4gd2UgcGVzc2ltaXN0aWNh
bGx5IGNob29zZSB0byBhcHBseSB0aGlzIGZsYWcuIEkgdGhpbmsgd2UKKyAgICAvLyBjYW4gcmVt
b3ZlIGl0LCBidXQgd2Ugc2hvdWxkIGRvIG1vcmUgdGVzdGluZyBiZWZvcmUgd2UgZG8gc28uCisg
ICAgLy8gUmVmOiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80OTY5NC93ZWJraXQj
ZmlsZTkKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMjk1NAorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFt
ZXMgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCkBAIC00NSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQVBJVmFsdWVXcmFw
cGVyVHlwZSwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyksIGluZm8oKSk7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEFQSVZhbHVlV3JhcHBlclR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9
CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDI2Mjc1NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8
ZXJpY0B3ZWJraXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTI1LDcgKzEyNSw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IGZpbmFsIDogcHVi
bGljIFBhcmVudCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFBhcmVudDsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IE92ZXJyaWRlc0dldENhbGxEYXRhOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBJbXBsZW1lbnRzSGFz
SW5zdGFuY2UgfCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVz
R2V0Q2FsbERhdGE7CiAgICAgc3RhdGljX2Fzc2VydCghKFN0cnVjdHVyZUZsYWdzICYgSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSksICJ1c2luZyBjdXN0b21IYXNJbnN0YW5jZSIpOwogCiAg
ICAgfkpTQ2FsbGJhY2tPYmplY3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM2LDcgKzM2LDcgQEAgY2xhc3MgSlNTY29wZTsKIGNsYXNzIERlYnVnZ2VyU2NvcGUgZmluYWwg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
Tm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyNjI3NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDggQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBKU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxP
YmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7
CisgICAgLy8gRG8gd2UgcmVhbGx5IG5lZWQgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90Pwor
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEy
OTU2CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIGNsYXNzIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBK
U0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7CisgICAgLy8gRG8gd2UgcmVhbGx5IG5lZWQgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90PworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyOTU2CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFj
ZUFjY2Vzcz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5oCShyZXZpc2lvbiAyNjI3NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcgKzQwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBDbG9uZWRBcmd1bWVudHMgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxP
YmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCShyZXZpc2lvbiAyNjI3NTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBv
cnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI5
LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFcnJvckluc3RhbmNlIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFs
T2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJy
aWRlc0dldFByb3BlcnR5TmFtZXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgT3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lczsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNBcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgJKHJldmlzaW9uIDI2Mjc1NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM2LDcgKzM2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIGNsYXNzIEdlbmVy
aWNBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0FueUZvcm1PZkdl
dFByb3BlcnR5TmFtZXM7CiAKIHByb3RlY3RlZDoKICAgICBHZW5lcmljQXJndW1lbnRzKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3
ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEdldHRlclNldHRlclR5cGUpLCBpbmZvKCkpOworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhHZXR0ZXJTZXR0ZXJUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdldHRlcigpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAyNjI3NTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQwLDcg
KzQwLDcgQEAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IAogCiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNBbnlGb3Jt
T2ZHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShD
aGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpCiAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNEYXRhVmlldyBmaW5hbCA6
IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpT
QXJyYXlCdWZmZXJWaWV3OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXM7CisKICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gMTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndh
cmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFr
cyBPcmxvdmljaAogICoKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAg
ICB0eXBlZGVmIEpTQ2FsbGVlIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENhbGxE
YXRhOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRl
c0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRDYWxsRGF0YTsKIAogICAg
IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFj
aXR5KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBK
U0FycmF5QnVmZmVyVmlldzsKICAgICB0eXBlZGVmIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgRWxl
bWVudFR5cGU7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNBbnlG
b3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybzsK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01MzEsNyArNTMx
LDkgQEAgcHVibGljOgogICAgICAgICAKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0OworICAgIC8vIERvIHdlIHJlYWx5
IG5lZWQgT3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyBoZXJlPworICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTU0CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IE92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBJc0ltbXV0YWJsZVBy
b3RvdHlwZUV4b3RpY09iamVjdDsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gdHJ1ZTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHVzaW5nIEJhc2Ug
PSBKU1N5bWJvbFRhYmxlT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1l
czsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHZhcmlhYmxlcygpCiAgICAgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52
aXJvbm1lbnQuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDAs
NyBAQCBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50IGZpbmFsIDogcHVibGljCiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
SlNMZXhpY2FsRW52aXJvbm1lbnQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVz
OwogCiAgICAgc3RhdGljIEpTTW9kdWxlRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgQWJzdHJhY3RNb2R1bGVSZWNv
cmQqIG1vZHVsZVJlY29yZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgJKHJldmlzaW9uIDI2
Mjc1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJz
ZW5jZSB8IElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0OworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9w
ZXJ0eU5hbWVzIHwgR2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2Ug
fCBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdDsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjksNiArNjY5LDIwIEBAIGJvb2wgSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
KyNpZiBBU1NFUlRfRU5BQkxFRAorLy8gVGhlc2UgbmVlZHMgdG8gYmUgdW5pcXVlIChub3QgaW5s
aW5lZCkgZm9yIEFTU0VSVF9FTkFCTEVEIGJ1aWxkcyB0byBlbmFibGUKKy8vIFN0cnVjdHVyZTo6
dmFsaWRhdGVGbGFncygpIHRvIGRvIGNoZWNrcyB1c2luZyBmdW5jdGlvbiBwb2ludGVyIGNvbXBh
cmlzb25zLgorCitib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eVNs
b3RJbXBsKG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit2
b2lkIEpTT2JqZWN0Ojpkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayhKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQdXRQcm9wZXJ0eVNsb3QmKQoreworfQorI2VuZGlm
IC8vIEFTU0VSVF9FTkFCTEVECisKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8j
c2VjLW9yZGluYXJ5c2V0CiBib29sIG9yZGluYXJ5U2V0U2xvdyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHJlY2VpdmVyLCBib29sIHNob3VsZFRocm93KQogewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyNjI3
NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Miw2ICs5MiwxMiBAQCBDT01QSUxFX0FTU0VSVChQcm9wZXJ0eUF0dHJpYnV0
ZTo6QWNjZXNzCiAKIGNsYXNzIEpTRmluYWxPYmplY3Q7CiAKKyNpZiBBU1NFUlRfRU5BQkxFRAor
I2RlZmluZSBKU19FWFBPUlRfUFJJVkFURV9JRl9BU1NFUlRfRU5BQkxFRCBKU19FWFBPUlRfUFJJ
VkFURQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEVfSUZfQVNTRVJUX0VOQUJMRUQK
KyNlbmRpZgorCiBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBj
bGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcjsKICAgICBmcmllbmQgY2xhc3MgSklUOwpA
QCAtMTcwLDEwICsxNzYsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxi
YWNrV2hlbk5vRXhjZXB0aW9uPiB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5O
b0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5cGUgZ2V0UHJvcGVydHlTbG90KEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2tXaGVuTm9FeGNlcHRpb24+IHR5cGVu
YW1lIHN0ZDo6cmVzdWx0X29mPENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uKGJvb2wsIFByb3BlcnR5
U2xvdCYpPjo6dHlwZSBnZXRQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYsIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uKSBjb25zdDsKIAotICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK3ByaXZhdGU6CisgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90SW1wbChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK3B1YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJVkFU
RV9JRl9BU1NFUlRfRU5BQkxFRCBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90SW5saW5lKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBkb1B1
dFByb3BlcnR5U2VjdXJpdHlDaGVjayhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURV9JRl9BU1NF
UlRfRU5BQkxFRCBzdGF0aWMgdm9pZCBkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayhKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgIC8vIFRoZSBrZXkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIGdldE93blByb3BlcnR5
U2xvdCBpcyB0aGF0IGdldE93blByb3BlcnR5U2xvdAogICAgIC8vIGN1cnJlbnRseSByZXR1cm5z
IGluY29ycmVjdCByZXN1bHRzIGZvciB0aGUgRE9NIHdpbmRvdyAod2l0aCBub24tb3duIHByb3Bl
cnRpZXMpCkBAIC0xNDM1LDcgKzE0NDUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6
OmZpbGxDdXN0b21HCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0
aGlzIGxhcmdlLCBlc3BlY2lhbGx5IGEgdmlydHVhbCBmdW5jdGlvbiwKIC8vIGJ1dCBpdCBtYWtl
cyBhIGJpZyBkaWZmZXJlbmNlIHRvIHByb3BlcnR5IGxvb2t1cCB0aGF0IGRlcml2ZWQgY2xhc3Nl
cyBjYW4gaW5saW5lIHRoZWlyCiAvLyBiYXNlIGNsYXNzIGNhbGwgdG8gdGhpcy4KLUFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90SW1wbChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKQEAgLTE0NDYsOSArMTQ1NiwxNiBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCisjaWYgIUFTU0VSVF9FTkFCTEVECitBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7
CisgICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xvdEltcGwob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6
ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgUHV0UHJvcGVydHlTbG90JikKIHsKIH0KKyNlbmRpZgogCiAvLyBJdCBtYXkg
c2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlIGJ1dCBpdCBtYWtlcyBh
IGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5jZSB0aGlzIGlzIGZ1bmN0aW9uIHZlcnkgaG90IGluIHZh
cmlhYmxlIGxvb2t1cApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
aAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IGNsYXNzIEpTUHJveHkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm87CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlO
YW1lcyB8IE92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBJbnRlcmNlcHRzR2V0
T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAyNjI3NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxMCBA
QCBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFNtYWxsU3RyaW5nczsKIAogICAgIHR5cGVkZWYg
SlNDZWxsIEJhc2U7CisgICAgLy8gRG8gd2UgcmVhbGx5IG5lZWQgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90PworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyOTU2CisgICAgLy8gRG8gd2UgcmVhbGx5IG5lZWQgSW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybz8KKyAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjk1OAogICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9y
dGFsIHwgT3ZlcnJpZGVzVG9UaGlzOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTU3ltYm9s
VGFibGVPYmplY3QgOiBwdWJsaWMgSlNTY29wZSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9
IEpTU2NvcGU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsg
fQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8u
aAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwyMSArNDksMjcgQEAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBUeXBlSW5mb1BlckNlbAogCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgODsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyA9IDEgPDwgOTsKLXN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nID0gMSA8PCAxMDsKLXN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgR2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUgPSAxIDw8IDExOwotc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMg
PSAxIDw8IDEyOwotc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBJc0ltbXV0YWJsZVByb3RvdHlw
ZUV4b3RpY09iamVjdCA9IDEgPDwgMTM7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEdldE93
blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlID0gMSA8PCAxNDsKLXN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyA9IDEgPDwgMTU7Ci1zdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUlzSW1tb3J0YWwgPSAxIDw8IDE2Owotc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBIYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2sgPSAxIDw8IDE3OworLy8gT3ZlcnJpZGVz
QW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyBtZWFucyB0aGF0IHdlIGNhbm5vdCBtYWtlIGFzc3Vt
cHRpb25zIGFib3V0CisvLyB0aGUgY2FjaGVhYmlsaXR5IG9yIGVudW1lcmFiaWxpdHkgb2YgcHJv
cGVydHkgbmFtZXMsIGFuZCB0aGVyZWZvcmUsIHdlJ2xsIG5lZWQKKy8vIHRvIGRpc2FibGUgY2Vy
dGFpbiBvcHRpbWl6YXRpb25zLiBUaGlzIGZsYWcgc2hvdWxkIGJlIHNldCBpZiBvbmUgb3IgbW9y
ZSBvZiB0aGUKKy8vIGZvbGxvd2luZyBPYmplY3QgbWV0aG9kcyBhcmUgb3ZlcnJpZGRlbjoKKy8v
ICAgICBnZXRPd25Qcm9wZXJ0eU5hbWVzLCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMsIGdl
dFByb3BlcnR5TmFtZXMKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzQW55Rm9y
bU9mR2V0UHJvcGVydHlOYW1lcyA9IDEgPDwgMTA7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyA9IDEgPDwgMTE7CitzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIEdldE93blByb3BlcnR5U2xvdElzSW1wdXJlID0gMSA8PCAxMjsKK3N0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzID0gMSA8PCAx
MzsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNP
YmplY3QgPSAxIDw8IDE0Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBHZXRPd25Qcm9wZXJ0
eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSA9IDEgPDwgMTU7CitzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gPSAxIDw8IDE2Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVJc0ltbW9ydGFsID0gMSA8PCAxNzsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSGFz
UHV0UHJvcGVydHlTZWN1cml0eUNoZWNrID0gMSA8PCAxODsKIAogY2xhc3MgVHlwZUluZm8gewog
cHVibGljOgogICAgIHR5cGVkZWYgdWludDhfdCBJbmxpbmVUeXBlRmxhZ3M7CiAgICAgdHlwZWRl
ZiB1aW50MTZfdCBPdXRPZkxpbmVUeXBlRmxhZ3M7CiAKLSAgICBUeXBlSW5mbyhKU1R5cGUgdHlw
ZSwgdW5zaWduZWQgZmxhZ3MgPSAwKQorICAgIFR5cGVJbmZvKEpTVHlwZSB0eXBlLCB1bnNpZ25l
ZCBmbGFncykKICAgICAgICAgOiBUeXBlSW5mbyh0eXBlLCBmbGFncyAmIDB4ZmYsIGZsYWdzID4+
IDgpCiAgICAgewogICAgICAgICBBU1NFUlQoIShmbGFncyA+PiAyNCkpOwpAQCAtODMsMjQgKzg5
LDI1IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVtYmVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
dHlwZSgpID09IE51bWJlck9iamVjdFR5cGU7IH0KIAogICAgIHVuc2lnbmVkIGZsYWdzKCkgY29u
c3QgeyByZXR1cm4gKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ZsYWdzMikgPDwgOCkgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9mbGFncyk7IH0KLSAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpOyB9Ci0gICAgYm9vbCBpbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBp
c1NldE9uRmxhZ3MyKEltcGxlbWVudHNIYXNJbnN0YW5jZSk7IH0KLSAgICBib29sIGltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxKEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpOyB9Ci0gICAgYm9vbCBvdmVycmlkZXNHZXRDYWxsRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczEoT3ZlcnJpZGVzR2V0Q2FsbERhdGEpOyB9
CisgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gaXNTZXRP
bkZsYWdzMTxNYXNxdWVyYWRlc0FzVW5kZWZpbmVkPigpOyB9CisgICAgYm9vbCBpbXBsZW1lbnRz
SGFzSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPEltcGxlbWVudHNIYXNJ
bnN0YW5jZT4oKTsgfQorICAgIGJvb2wgaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpIGNv
bnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZT4o
KTsgfQorICAgIGJvb2wgb3ZlcnJpZGVzR2V0Q2FsbERhdGEoKSBjb25zdCB7IHJldHVybiBpc1Nl
dE9uRmxhZ3MxPE92ZXJyaWRlc0dldENhbGxEYXRhPigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QoKSBjb25zdCB7IHJldHVybiBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QoaW5saW5lVHlwZUZsYWdzKCkpOyB9CiAgICAgc3RhdGljIGJvb2wgb3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90KElubGluZVR5cGVGbGFncyBmbGFncykgeyByZXR1cm4gZmxhZ3MgJiBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7IH0KICAgICBzdGF0aWMgYm9vbCBoYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlKElubGluZVR5cGVGbGFncyBmbGFncykgeyByZXR1cm4gZmxhZ3MgJiBIYXNT
dGF0aWNQcm9wZXJ0eVRhYmxlOyB9CiAgICAgc3RhdGljIGJvb2wgcGVyQ2VsbEJpdChJbmxpbmVU
eXBlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgVHlwZUluZm9QZXJDZWxsQml0OyB9Ci0g
ICAgYm9vbCBvdmVycmlkZXNUb1RoaXMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxKE92
ZXJyaWRlc1RvVGhpcyk7IH0KLSAgICBib29sIHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBjb25zdCB7
IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0cnVjdHVyZUlzSW1tb3J0YWwpOyB9Ci0gICAgYm9vbCBv
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKTsgfQotICAgIGJvb2wgcHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihQcm9oaWJpdHNQcm9wZXJ0eUNh
Y2hpbmcpOyB9Ci0gICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSgpIGNvbnN0IHsg
cmV0dXJuIGlzU2V0T25GbGFnczIoR2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUpOyB9Ci0gICAg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSgpIGNvbnN0
IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoR2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9w
ZXJ0eUFic2VuY2UpOyB9Ci0gICAgYm9vbCBoYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soKSBj
b25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKEhhc1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayk7
IH0KLSAgICBib29sIG5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygpIGNvbnN0IHsg
cmV0dXJuIGlzU2V0T25GbGFnczIoTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzKTsg
fQotICAgIGJvb2wgaXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBpc1NldE9uRmxhZ3MyKElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0KTsgfQot
ICAgIGJvb2wgaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0
aElzTm90WmVybygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoSW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyk7IH0KKyAgICBib29s
IG92ZXJyaWRlc1RvVGhpcygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8T3ZlcnJpZGVz
VG9UaGlzPigpOyB9CisgICAgYm9vbCBzdHJ1Y3R1cmVJc0ltbW9ydGFsKCkgY29uc3QgeyByZXR1
cm4gaXNTZXRPbkZsYWdzMjxTdHJ1Y3R1cmVJc0ltbW9ydGFsPigpOyB9CisgICAgYm9vbCBvdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxPdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzPigpOyB9CisgICAgYm9vbCBvdmVycmlkZXNBbnlGb3JtT2ZH
ZXRQcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxPdmVycmlkZXNB
bnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzPigpOyB9CisgICAgYm9vbCBwcm9oaWJpdHNQcm9wZXJ0
eUNhY2hpbmcoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPFByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZz4oKTsgfQorICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUoKSBjb25z
dCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPEdldE93blByb3BlcnR5U2xvdElzSW1wdXJlPigpOyB9
CisgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSgp
IGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVG
b3JQcm9wZXJ0eUFic2VuY2U+KCk7IH0KKyAgICBib29sIGhhc1B1dFByb3BlcnR5U2VjdXJpdHlD
aGVjaygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8SGFzUHV0UHJvcGVydHlTZWN1cml0
eUNoZWNrPigpOyB9CisgICAgYm9vbCBuZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMo
KSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRj
aHBvaW50cz4oKTsgfQorICAgIGJvb2wgaXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGlj
T2JqZWN0PigpOyB9CisgICAgYm9vbCBpbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
PigpOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0FyZ3VtZW50c1R5cGUoSlNUeXBlIHR5cGUpCiAg
ICAgewpAQCAtMTMxLDggKzEzOCwxOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBib29sIGlzU2V0T25GbGFnczEodW5z
aWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2Zs
YWdzICYgZmxhZzsgfQotICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25z
dCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4g
OCk7IH0KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBmbGFnPgorICAgIGJvb2wgaXNTZXRPbkZsYWdz
MSgpIGNvbnN0CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KGZsYWcgPD0gKDEgPDwgNykp
OworICAgICAgICByZXR1cm4gbV9mbGFncyAmIGZsYWc7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dW5zaWduZWQgZmxhZz4KKyAgICBib29sIGlzU2V0T25GbGFnczIoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChmbGFnID49ICgxIDw8IDgpICYmIGZsYWcgPD0gKDEgPDwgMjQp
KTsKKyAgICAgICAgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7CisgICAgfQogCiAgICAg
SlNUeXBlIG1fdHlwZTsKICAgICB1aW50OF90IG1fZmxhZ3M7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAyNjI3NTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw3ICszMDIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgICAgICAgICBhdXRvIGNhblBlcmZvcm1G
YXN0UHJvcGVydHlFbnVtZXJhdGlvbkZvck9iamVjdEFzc2lnbiA9IFtdIChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkgewogICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT50eXBl
SW5mbygpLm92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJbmRleGVk
IHByb3BlcnRpZXMgY2FuIGJlIGhhbmRsZWQuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTM1OApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCShyZXZpc2lvbiAyNjI3NTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFByb3h5T2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9u
RmkKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAotICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldENhbGxEYXRh
IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hp
bmc7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVz
R2V0Q2FsbERhdGEgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVu
TGVuZ3RoSXNOb3RaZXJvIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0Fu
eUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAyNjI3NTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFJlZ0V4cE9iamVj
dCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBPdmVy
cmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVy
T2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNXcmFwcGVyT2JqZWN0OwotICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFpl
cm8gfCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDI2Mjc1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsNjEg
QEAgdm9pZCBTdHJ1Y3R1cmU6OmR1bXBTdGF0aXN0aWNzKCkKICNlbmRpZgogfQogCisjaWYgQVNT
RVJUX0VOQUJMRUQKK3ZvaWQgU3RydWN0dXJlOjp2YWxpZGF0ZUZsYWdzKCkKK3sKKyAgICBjb25z
dCBNZXRob2RUYWJsZSYgbWV0aG9kVGFibGUgPSBtX2NsYXNzSW5mby0+bWV0aG9kVGFibGU7CisK
KyAgICBib29sIG92ZXJyaWRlc0dldENhbGxEYXRhID0gbWV0aG9kVGFibGUuZ2V0Q2FsbERhdGEg
IT0gSlNDZWxsOjpnZXRDYWxsRGF0YTsKKyAgICBSRUxFQVNFX0FTU0VSVChvdmVycmlkZXNHZXRD
YWxsRGF0YSA9PSB0eXBlSW5mbygpLm92ZXJyaWRlc0dldENhbGxEYXRhKCkpOworCisgICAgYm9v
bCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgPQorICAgICAgICBtZXRob2RUYWJsZS5nZXRP
d25Qcm9wZXJ0eVNsb3QgIT0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdAorICAgICAgICAm
JiBtZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3QgIT0gSlNDZWxsOjpnZXRPd25Qcm9wZXJ0
eVNsb3Q7CisgICAgLy8gV2UgY2FuIHN0cmVuZ3RoZW4gdGhpcyBpbnRvIGFuIGVxdWl2YWxlbmNl
IHRlc3QgaWYgdGhlcmUgYXJlIG5vIGNsYXNzZXMKKyAgICAvLyB0aGF0IHNwZWNpZmllcyB0aGlz
IGZsYWcgd2l0aG91dCBvdmVycmlkaW5nIGdldE93blByb3BlcnR5U2xvdC4KKyAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjk1NgorICAgIGlm
IChvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHR5
cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpOworCisgICAgYm9vbCBvdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4ID0KKyAgICAgICAgbWV0aG9kVGFibGUuZ2V0
T3duUHJvcGVydHlTbG90QnlJbmRleCAhPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleAorICAgICAgICAmJiBtZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4ICE9
IEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleDsKKyAgICAvLyBXZSBjYW4gc3RyZW5n
dGhlbiB0aGlzIGludG8gYW4gZXF1aXZhbGVuY2UgdGVzdCBpZiB0aGVyZSBhcmUgbm8gY2xhc3Nl
cworICAgIC8vIHRoYXQgc3BlY2lmaWVzIHRoaXMgZmxhZyB3aXRob3V0IG92ZXJyaWRpbmcgZ2V0
T3duUHJvcGVydHlTbG90QnlJbmRleC4KKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjk1OAorICAgIGlmIChvdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KQorICAgICAgICBSRUxFQVNFX0FTU0VSVCh0eXBlSW5mbygpLmludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSk7
CisKKyAgICBib29sIG92ZXJyaWRlc1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayA9CisgICAgICAg
IG1ldGhvZFRhYmxlLmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrICE9IEpTT2JqZWN0Ojpkb1B1
dFByb3BlcnR5U2VjdXJpdHlDaGVjaworICAgICAgICAmJiBtZXRob2RUYWJsZS5kb1B1dFByb3Bl
cnR5U2VjdXJpdHlDaGVjayAhPSBKU0NlbGw6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG92ZXJyaWRlc1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayA9PSB0
eXBlSW5mbygpLmhhc1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjaygpKTsKKworICAgIGJvb2wgb3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyA9CisgICAgICAgIG1ldGhvZFRhYmxlLmdldFByb3BlcnR5
TmFtZXMgIT0gSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMKKyAgICAgICAgJiYgbWV0aG9kVGFi
bGUuZ2V0UHJvcGVydHlOYW1lcyAhPSBKU0NlbGw6OmdldFByb3BlcnR5TmFtZXM7CisgICAgYm9v
bCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzID0KKyAgICAgICAgbWV0aG9kVGFibGUuZ2V0
T3duUHJvcGVydHlOYW1lcyAhPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcworICAgICAg
ICAmJiBtZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eU5hbWVzICE9IEpTQ2VsbDo6Z2V0T3duUHJv
cGVydHlOYW1lczsKKyAgICBib29sIG92ZXJyaWRlc0dldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyA9CisgICAgICAgIG1ldGhvZFRhYmxlLmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyAhPSBK
U09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzCisgICAgICAgICYmIG1ldGhvZFRh
YmxlLmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyAhPSBKU0NlbGw6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lczsKKworICAgIFJFTEVBU0VfQVNTRVJUKG92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXMgPT0gdHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpOworCisgICAg
Ly8gV2UgY2FuIHN0cmVuZ3RoZW4gdGhpcyBpbnRvIGFuIGVxdWl2YWxlbmNlIHRlc3QgaWYgdGhl
cmUgYXJlIG5vIGNsYXNzZXMKKyAgICAvLyB0aGF0IHNwZWNpZmllcyB0aGlzIGZsYWcgd2l0aG91
dCBvdmVycmlkaW5nIGFueSBvZiB0aGUgZm9ybXMgb2YgZ2V0UHJvcGVydHlOYW1lcy4KKyAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjk1NAor
ICAgIGlmIChvdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzCisgICAgICAgIHx8IG92ZXJyaWRlc0dl
dE93blByb3BlcnR5TmFtZXMKKyAgICAgICAgfHwgb3ZlcnJpZGVzR2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKQorICAgICAgICBSRUxFQVNFX0FTU0VSVCh0eXBlSW5mbygpLm92ZXJyaWRlc0Fu
eUZvcm1PZkdldFByb3BlcnR5TmFtZXMoKSk7Cit9CisjZWxzZQoraW5saW5lIHZvaWQgU3RydWN0
dXJlOjp2YWxpZGF0ZUZsYWdzKCkgeyB9CisjZW5kaWYKKwogU3RydWN0dXJlOjpTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwg
Y29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5k
ZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAgICAgOiBK
U0NlbGwodm0sIHZtLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSkKICAgICAsIG1fYmxvYih2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5hbGxvY2F0ZUlEKHRoaXMpLCBpbmRleGluZ1R5cGUsIHR5
cGVJbmZvKQpAQCAtMTk1LDkgKzI1MCwxMCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqCiAgICAgQVNTRVJUKGlubGluZUNhcGFjaXR5IDw9IEpTRmluYWxPYmplY3Q6
Om1heElubGluZUNhcGFjaXR5KCkpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxQcm9wZXJ0eU9m
ZnNldD4oaW5saW5lQ2FwYWNpdHkpIDwgZmlyc3RPdXRPZkxpbmVPZmZzZXQpOwogICAgIEFTU0VS
VCghaGFzUmFyZURhdGEoKSk7Ci0gICAgQVNTRVJUKGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSB8fCAhbV9jbGFzc0luZm8tPmhhc1N0YXRpY1NldHRl
ck9yUmVhZG9ubHlQcm9wZXJ0aWVzKCkpOwotICAgIEFTU0VSVChoYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkgfHwgIW1fY2xhc3NJbmZvLT5oYXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVy
dGllcygpKTsKLSAgICBBU1NFUlQoIXRoaXMtPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0Q2FsbERh
dGEoKSB8fCBtX2NsYXNzSW5mby0+bWV0aG9kVGFibGUuZ2V0Q2FsbERhdGEgIT0gJkpTQ2VsbDo6
Z2V0Q2FsbERhdGEpOworICAgIEFTU0VSVChoYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVy
dGllc0V4Y2x1ZGluZ1Byb3RvKCkgPT0gbV9jbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVh
ZG9ubHlQcm9wZXJ0aWVzKCkpOworICAgIEFTU0VSVChoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkgPT0gbV9jbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKCkp
OworCisgICAgdmFsaWRhdGVGbGFncygpOwogfQogCiBjb25zdCBDbGFzc0luZm8gU3RydWN0dXJl
OjpzX2luZm8gPSB7ICJTdHJ1Y3R1cmUiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFN0cnVjdHVyZSkgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAyNjI3NTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTczLDYgKzE3
Myw4IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVCghdm0uc3RydWN0dXJlU3RydWN0dXJlKTsK
ICAgICB9CiAKKyAgICB2b2lkIHZhbGlkYXRlRmxhZ3MoKTsKKwogcHVibGljOgogICAgIFN0cnVj
dHVyZUlEIGlkKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLnN0cnVjdHVyZUlEKCk7IH0KICAgICBp
bnQzMl90IG9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvYi5i
bG9iRXhjbHVkaW5nU3RydWN0dXJlSUQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMjYyNzU2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgaW5saW5lIGJvb2wgU3RydWN0dXJlOjpjYW5DYWNo
ZU93bktleXMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICh0
eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkKKyAgICBpZiAodHlwZUluZm8o
KS5vdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI2Mjc1NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM2LDcgKzUz
Niw3IEBAIHByaXZhdGU6CiBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBKU0FycmF5IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0FueUZv
cm1PZkdldFByb3BlcnR5TmFtZXM7CiAKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW51c2VkLWNv
bnN0LXZhcmlhYmxlIikKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMDYt
MDkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0
ZSB0aGUgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyBzdHJ1Y3R1cmUgZmxhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTA5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MzgyMzU1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAxLiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMgd2FzIG5vdCBkZWZpbmlu
ZyBpdHMgQmFzZS4gIEFzIGEgcmVzdWx0LCBpdHMKKyAgICAgICAgICAgU3RydWN0dXJlRmxhZ3Mg
d2FzIGluaGVyaXRpbmcgZnJvbSBKU0RPTU9iamVjdCdzIEJhc2UgaW5zdGVhZCBvZiBmcm9tIEpT
RE9NT2JqZWN0CisgICAgICAgICAgIGFzIG9uZSB3b3VsZCBleHBlY3QuICBUaGlzIHR1cm5zIG91
dCB0byBiZSBoYXJtbGVzcyBiZWNhdXNlIEpTRE9NT2JqZWN0IGRpZCBub3QKKyAgICAgICAgICAg
ZGVmaW5lIGFueSBTdHJ1Y3R1cmVGbGFncy4gIFJlZ2FyZGxlc3MsIHRoaXMgaXMgbm90IGZpeGVk
IHNvIHRoYXQgaWYgSlNET01PYmplY3QKKyAgICAgICAgICAgYWRkcyBhbnkgU3RydWN0dXJlRmxh
Z3MsIGl0IHdpbGwgYmUgaW5oZXJpdGVkIHByb3Blcmx5IGJ5IEpTRE9NV2luZG93UHJvcGVydGll
cy4KKworICAgICAgICAyLiBVcGRhdGVkIENvZGVHZW5lcmF0b3JKUy5wbSBhbmQgcmViYXNlZCB0
aGUgYmluZGluZyB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1Byb3BlcnRpZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJh
eS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorCiAyMDIwLTA2LTA4ICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHRlbmRlZCBDb2xvcjog
UmVuYW1lIENvbG9yOjpsaWdodGVuKCkgYW5kIENvbG9yOjpkYXJrZW4oKSB0byBDb2xvcjo6bGln
aHRlbmVkKCkgYW5kIENvbG9yOjpkYXJrZW5lZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuaAkocmV2aXNpb24gMjYyNzU2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9wZXJ0aWVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBKU0RPTVdpbmRvd1Byb3BlcnRpZXMgZmluYWwgOiBwdWJsaWMgSlNET01PYmplY3Qgewog
cHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTU9iamVjdDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OklzSW1tdXRhYmxlUHJvdG90
eXBlRXhvdGljT2JqZWN0OworCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSBmYWxzZTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCkBAIC01Nyw4ICs2MCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8
IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElz
Tm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJc0ltbXV0
YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdDsKLQogcHJpdmF0ZToKICAgICBKU0RPTVdpbmRvd1By
b3BlcnRpZXMoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogICAgICAgICA6IEpTRE9NT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI2Mjc1NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjg1LDcg
KzI2ODUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAKICAgICBpZiAoSW5zdGFuY2VPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBK
U0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpO1xuIik7Ci0gICAg
ICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAx
OworICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJv
cGVydHlOYW1lcyJ9ID0gMTsKICAgICB9CiAgICAgCiAgICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVz
UHV0KCRpbnRlcmZhY2UpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAkocmV2aXNpb24g
MjYyNzU2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdEV2ZW50VGFyZ2V0Jj4oQmFzZTo6d3JhcHBl
ZCgpKTsKICAgICB9CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNs
b3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlT
bG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgfCBKU0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBK
U0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RF
dmVudFRhcmdldChKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RF
dmVudFRhcmdldD4mJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZv
aWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6
Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAyNjI3NTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVh
cEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiBwcm90ZWN0ZWQ6CiAgICAg
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4m
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmgJKHJldmlzaW9uIDI2Mjc1NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5h
bHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkludGVyY2VwdHNHZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJy
aWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyPiYmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAkocmV2aXNpb24gMjYyNzU2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBK
U0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJv
cGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3du
UHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92
ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwogcHJvdGVjdGVkOgog
ICAgIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcihKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXI+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAkocmV2aXNpb24gMjYyNzU2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2Vs
bCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpH
ZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpT
Qzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0
ZWQ6CiAgICAgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24oSlND
OjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAkocmV2aXNp
b24gMjYyNzU2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFw
KEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlND
OjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6
SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
byB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBw
cm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIo
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyNjI3NTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAg
IHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclBy
b3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0
T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6
Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyPiYmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgJKHJldmlzaW9uIDI2Mjc1NikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFs
eXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJ
bXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlND
OjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24oSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYs
IFJlZjxUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+JiYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaAkocmV2aXNpb24g
MjYyNzU2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpT
Qzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9w
ZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFi
c2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMg
fCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIHByb3RlY3RlZDoKICAgICBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0JiwgUmVmPFRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4mJik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5o
CShyZXZpc2lvbiAyNjI3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhl
YXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBK
U0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVy
ZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0
UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogcHJvdGVj
dGVkOgogICAgIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyPiYmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5o
CShyZXZpc2lvbiAyNjI3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3
ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwq
LCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3du
UHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
czsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVy
dHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiBwcm90ZWN0ZWQ6CiAgICAg
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aChKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPFRlc3ROYW1lZEdldHRlckNhbGxXaXRoPiYmKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmgJKHJldmlzaW9uIDI2Mjc1NikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXpl
ciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1
cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBK
U0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0
TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmgJKHJldmlzaW9uIDI2Mjc1NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwog
ICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZv
clByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6
R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBK
U0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXI+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0
YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3Bl
cnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVu
V2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNh
Y2hpbmc7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclBy
b3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVy
dHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRTZXR0ZXJOb0lk
ZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXI+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgJKHJldmlzaW9uIDI2Mjc1NikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xv
dEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJ
c0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzQW55Rm9y
bU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPFRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiYmKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCShyZXZpc2lv
biAyNjI3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBK
U0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJv
cGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3du
UHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92
ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwogcHJvdGVjdGVkOgog
ICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4mJik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlND
OjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwg
SlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGlu
ZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXI+JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgJKHJldmlzaW9uIDI2
Mjc1NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpT
Q2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpH
ZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlND
OjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8
IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90
ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcihK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPiYmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oCShyZXZpc2lvbiAyNjI3
NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBK
U0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJv
cGVydHlTbG90SXNJbXB1cmUgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6UHJvaGliaXRzUHJv
cGVydHlDYWNoaW5nOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1
cmUgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXMgfCBK
U0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4mJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oCShyZXZp
c2lvbiAyNjI3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhl
YXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBK
U0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0
c1Byb3BlcnR5Q2FjaGluZzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElz
SW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwg
SlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGlu
ZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz4mJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgJKHJldmlzaW9uIDI2Mjc1NikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVu
TGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6
Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGlu
ZzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6
OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMoSlNDOjpTdHJ1
Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPiYmKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkocmV2
aXNpb24gMjYyNzU2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIHRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6Q2FsbEZyYW1lJiwgUmVmPERlZmVycmVkUHJvbWlzZT4m
Jik7CiAgICAgSlNDOjpKU1ZhbHVlIHRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOwogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0Q2FsbERhdGEgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1By
b3BlcnR5VGFibGUgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZl
bldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5
TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRhIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3Q7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0T2JqKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE9iaj4mJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5h
bHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0
T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8
IEpTQzo6T3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90OwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0T3ZlcnJpZGVC
dWlsdGlucz4mJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAko
cmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IFJ1bnRpbWVBcnJheSBmaW5hbCA6IHB1YmxpYyBKU0FycmF5IHsKIHB1YmxpYzoKICAgICB1c2lu
ZyBCYXNlID0gSlNBcnJheTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgT3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlO
YW1lczsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAyNjI3
NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgQmluZGluZ3MgewogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgUnVudGltZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgT3Zl
cnJpZGVzR2V0Q2FsbERhdGE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgT3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENh
bGxEYXRhOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNz
PgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mjc1NikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDYtMDkgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSB0aGUgT3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lcyBzdHJ1Y3R1cmUgZmxhZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MzgyMzU1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisKIDIwMjAt
MDYtMDggIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklERnJvbVN0cmlu
ZyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6IGJhZCBwYXJhbWV0ZXIgb3Igb3RoZXIgQVBJIG1pc3Vz
ZQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuaAkocmV2aXNpb24gMjYyNzU2KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw3ICs0NCw3IEBAIGNsYXNzIE5QUnVudGltZU9iamVjdE1hcDsKIGNsYXNzIEpTTlBPYmpl
Y3QgZmluYWwgOiBwdWJsaWMgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Q7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRhOworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNBbnlGb3JtT2ZHZXRQ
cm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRDYWxsRGF0YTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
</data>
<flag name="review"
          id="416837"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>