<?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>139106</bug_id>
          
          <creation_ts>2014-11-29 16:20:06 -0800</creation_ts>
          <short_desc>Generalize PageActivityAssertionToken</short_desc>
          <delta_ts>2014-12-04 21:00:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>139108</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1051337</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-11-29 16:20:06 -0800</bug_when>
    <thetext>PageActivityAssertionToken is a RAII mechanism implementing a counter, used by PageThrottler to count user visible activity in progress on the page (currently page load and media playback). Use of an RAII type is prevents a number of possible errors, including double counting a single media element, or failing to decrement the count after a media element has been deallocated.

Generalizing the mechanism would both make it available for new uses (currently I want to track page load separately from media playback in PageThrottler, and track processes with active pages in WK2), and also may provide a better implementation for some existing accounting mechanisms (tracking processes suppression state across processes/contexts/globally in WK2, tracking outstanding user visible resource requests).

The current implementation has a number of drawbacks that have been addressed by this refactoring:
 - specific to single use in PageThrottler class - not reusable.
 - incomplete encapsulation - the counter and WeakPtrFactory that comprise the current implementation are not encapsulated (are in the client type, PageThrottler).
 - tokens are not shared - PageActivityAssertionToken instances are managed by std::unique, every increment requires an object allocation.
 - redundancy - the current implementation uses a WeakPtr to safely reference the PageThrottler, this is internally implemented using a reference counted type, resulting in two counters being incremented (one in the PageActivityAssertionToken, one in the PageThrottler).

In the reimplementation:
 - a callback is provided via a lambda function, which allows for easy reuse without a lot of boilerplate code.
 - the counter, callback and ownership of the otherwise weakly-owned token is encapsulated within the RefCounter type.
 - a single count within RefCounter::Counter stores the counter value, and also manage the lifetime of this object.
 - standard RefPtrs are used to manage references to the RefCounter::Counter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051340</commentid>
    <comment_count>1</comment_count>
      <attachid>242285</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-11-29 16:45:35 -0800</bug_when>
    <thetext>Created attachment 242285
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051341</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-29 16:47:51 -0800</bug_when>
    <thetext>Attachment 242285 did not pass style-queue:


ERROR: Source/WebCore/page/PageThrottler.cpp:34:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/RefCounter.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/RefCounter.h:39:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/RefCounter.h:60:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/RefCounter.h:60:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 5 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051347</commentid>
    <comment_count>3</comment_count>
      <attachid>242287</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-11-29 18:08:40 -0800</bug_when>
    <thetext>Created attachment 242287
Speculative build / style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051350</commentid>
    <comment_count>4</comment_count>
      <attachid>242287</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-11-29 18:37:58 -0800</bug_when>
    <thetext>Comment on attachment 242287
Speculative build / style fixes

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

&gt; Source/WTF/wtf/RefCounter.h:57
&gt; +    typedef std::function&lt;void()&gt; ValueDidChangeCallback;

ValueDidChangeCallback is actually more characters than std::function&lt;void()&gt; and I am not sure it aids the clarity here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051357</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-11-30 00:00:16 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 242287 [details]
&gt; Speculative build / style fixes
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=242287&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/RefCounter.h:57
&gt; &gt; +    typedef std::function&lt;void()&gt; ValueDidChangeCallback;
&gt; 
&gt; ValueDidChangeCallback is actually more characters than
&gt; std::function&lt;void()&gt; and I am not sure it aids the clarity here.

No strong opinion on my behalf here.

I found:
    RefCounter::RefCounter(ValueDidChangeCallback valueDidChange)
to be more easily readable than:
    RefCounter::RefCounter(std::function&lt;void()&gt; valueDidChange)

If the code needs to be refactored it can easier if the set of members holding or parameters passing std::functions that are being used for this purpose are typed, and if any code is using lambdas for a mix of these purposes and other it might provide clarity.

On this set of grounds I felt a typedef helped on balance, but I could be convinced otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051645</commentid>
    <comment_count>6</comment_count>
      <attachid>242287</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-01 15:55:13 -0800</bug_when>
    <thetext>Comment on attachment 242287
Speculative build / style fixes

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

I like the direction of this change, but think we are loosing a lot of clarity by using the low level RefPtr&lt;RefCounter::Counter&gt; directly everywhere.  I think this could be fixed by wrapping it in a PageActivityAssertionToken class (doesn&apos;t have to be unique_ptr anymore, which is nice).

&gt; Source/WTF/wtf/RefCounter.cpp:62
&gt; +    // The Counter object has a is kept alive so long as either the RefCounter that created

Wat?

&gt; Source/WTF/wtf/RefCounter.cpp:74
&gt; +} // namespace WebCore
&gt; +
&gt; +

This has an extra newline.

&gt; Source/WTF/wtf/RefCounter.h:62
&gt; +    PassRefPtr&lt;Counter&gt; counter() const

This should probably return a RefPtr&lt;Counter&gt;, as is our current style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051653</commentid>
    <comment_count>7</comment_count>
      <attachid>242287</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-12-01 16:04:05 -0800</bug_when>
    <thetext>Comment on attachment 242287
Speculative build / style fixes

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

&gt;&gt; Source/WTF/wtf/RefCounter.h:62
&gt;&gt; +    PassRefPtr&lt;Counter&gt; counter() const
&gt; 
&gt; This should probably return a RefPtr&lt;Counter&gt;, as is our current style.

Since we are not passing ownership to the caller, wouldn&apos;t it make sense to return a raw pointer instead (or even a reference instead in this case since it cannot be null it seems).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051689</commentid>
    <comment_count>8</comment_count>
      <attachid>242368</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-12-01 17:41:20 -0800</bug_when>
    <thetext>Created attachment 242368
Review comment fixes. Not for re-review yet; needs an API test.

Per conversation with Sam &amp; Chris switched to PassRef for now. (Open debate on using a plain reference.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051867</commentid>
    <comment_count>9</comment_count>
      <attachid>242421</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-12-02 09:52:32 -0800</bug_when>
    <thetext>Created attachment 242421
With API test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051868</commentid>
    <comment_count>10</comment_count>
      <attachid>242422</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-12-02 09:57:04 -0800</bug_when>
    <thetext>Created attachment 242422
With API test, minus non-ascii character in API test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051883</commentid>
    <comment_count>11</comment_count>
      <attachid>242427</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-12-02 10:48:07 -0800</bug_when>
    <thetext>Created attachment 242427
EWS bot has an issue with the API test that my machine didn&apos;t. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051930</commentid>
    <comment_count>12</comment_count>
      <attachid>242427</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-02 12:24:41 -0800</bug_when>
    <thetext>Comment on attachment 242427
EWS bot has an issue with the API test that my machine didn&apos;t. :-/

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

&gt; Source/WTF/wtf/RefCounter.cpp:44
&gt; +    // The Counter object is kept alive so long as either the RefCounter that created it remains

Counter -&gt; Count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051935</commentid>
    <comment_count>13</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-12-02 12:40:46 -0800</bug_when>
    <thetext>Committed revision 176683.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052662</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-12-04 21:00:23 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Committed revision 176683.

Committed r176683: &lt;http://trac.webkit.org/r176683&gt;

Follow-up build fix in r176832:  &lt;http://trac.webkit.org/r176832&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242285</attachid>
            <date>2014-11-29 16:45:35 -0800</date>
            <delta_ts>2014-11-29 18:08:40 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>139106.1.patch</filename>
            <type>text/plain</type>
            <size>35496</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzY1NzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE0LTExLTI5ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmFsaXplIFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkxMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBpcyBhIFJBSUkgbWVjaGFuaXNtIGlt
cGxlbWVudGluZyBhIGNvdW50ZXIsIHVzZWQgYnkgUGFnZVRocm90dGxlcgorICAgICAgICB0byBj
b3VudCB1c2VyIHZpc2libGUgYWN0aXZpdHkgaW4gcHJvZ3Jlc3Mgb24gdGhlIHBhZ2UgKGN1cnJl
bnRseSBwYWdlIGxvYWQgYW5kIG1lZGlhIHBsYXliYWNrKS4KKyAgICAgICAgVXNlIG9mIGFuIFJB
SUkgdHlwZSBpcyBwcmV2ZW50cyBhIG51bWJlciBvZiBwb3NzaWJsZSBlcnJvcnMsIGluY2x1ZGlu
ZyBkb3VibGUgY291bnRpbmcgYSBzaW5nbGUKKyAgICAgICAgbWVkaWEgZWxlbWVudCwgb3IgZmFp
bGluZyB0byBkZWNyZW1lbnQgdGhlIGNvdW50IGFmdGVyIGEgbWVkaWEgZWxlbWVudCBoYXMgYmVl
biBkZWFsbG9jYXRlZC4KKworICAgICAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBoYXMg
YSBudW1iZXIgb2YgZHJhd2JhY2tzIHRoYXQgaGF2ZSBiZWVuIGFkZHJlc3NlZCBieSB0aGlzIHJl
ZmFjdG9yaW5nOgorICAgICAgICAgLSBzcGVjaWZpYyB0byBzaW5nbGUgdXNlIGluIFBhZ2VUaHJv
dHRsZXIgY2xhc3MgLSBub3QgcmV1c2FibGUuCisgICAgICAgICAtIGluY29tcGxldGUgZW5jYXBz
dWxhdGlvbiAtIHRoZSBjb3VudGVyIGFuZCBXZWFrUHRyRmFjdG9yeSB0aGF0IGNvbXByaXNlIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgIGFyZSBub3QgZW5jYXBzdWxhdGVk
IChhcmUgaW4gdGhlIGNsaWVudCB0eXBlLCBQYWdlVGhyb3R0bGVyKS4KKyAgICAgICAgIC0gdG9r
ZW5zIGFyZSBub3Qgc2hhcmVkIC0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gaW5zdGFuY2Vz
IGFyZSBtYW5hZ2VkIGJ5IHN0ZDo6dW5pcXVlLCBldmVyeQorICAgICAgICAgICBpbmNyZW1lbnQg
cmVxdWlyZXMgYW4gb2JqZWN0IGFsbG9jYXRpb24uCisgICAgICAgICAtIHJlZHVuZGFuY3kgLSB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgV2Vha1B0ciB0byBzYWZlbHkgcmVmZXJl
bmNlIHRoZSBQYWdlVGhyb3R0bGVyLCB0aGlzCisgICAgICAgICAgIGlzIGludGVybmFsbHkgaW1w
bGVtZW50ZWQgdXNpbmcgYSByZWZlcmVuY2UgY291bnRlZCB0eXBlLCByZXN1bHRpbmcgaW4gdHdv
IGNvdW50ZXJzIGJlaW5nCisgICAgICAgICAgIGluY3JlbWVudGVkIChvbmUgaW4gdGhlIFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuLCBvbmUgaW4gdGhlIFBhZ2VUaHJvdHRsZXIpLgorCisgICAg
ICAgIEluIHRoZSByZWltcGxlbWVudGF0aW9uOgorICAgICAgICAgLSBhIGNhbGxiYWNrIGlzIHBy
b3ZpZGVkIHZpYSBhIGxhbWJkYSBmdW5jdGlvbiwgd2hpY2ggYWxsb3dzIGZvciBlYXN5IHJldXNl
IHdpdGhvdXQgYSBsb3Qgb2YKKyAgICAgICAgICAgYm9pbGVycGxhdGUgY29kZS4KKyAgICAgICAg
IC0gdGhlIGNvdW50ZXIsIGNhbGxiYWNrIGFuZCBvd25lcnNoaXAgb2YgdGhlIG90aGVyd2lzZSB3
ZWFrbHktb3duZWQgdG9rZW4gaXMgZW5jYXBzdWxhdGVkIHdpdGhpbiB0aGUKKyAgICAgICAgICAg
UmVmQ291bnRlciB0eXBlLgorICAgICAgICAgLSBhIHNpbmdsZSBjb3VudCB3aXRoaW4gUmVmQ291
bnRlcjo6Q291bnRlciBzdG9yZXMgdGhlIGNvdW50ZXIgdmFsdWUsIGFuZCBhbHNvIG1hbmFnZSB0
aGUgbGlmZXRpbWUKKyAgICAgICAgICAgb2YgdGhpcyBvYmplY3QuCisgICAgICAgICAtIHN0YW5k
YXJkIFJlZlB0cnMgYXJlIHVzZWQgdG8gbWFuYWdlIHJlZmVyZW5jZXMgdG8gdGhlIFJlZkNvdW50
ZXI6OkNvdW50ZXIuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgICAgIC0gYWRkZWQgUmVmQ291bnRlci5jcHAvLmgKKyAgICAgICAgKiB3dGYvUmVm
Q291bnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpDb3VudGVyOjpy
ZWYpOgorICAgICAgICAgICAgLSBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuCisgICAgICAgIChXVEY6
OlJlZkNvdW50ZXI6OkNvdW50ZXI6OmRlcmVmKToKKyAgICAgICAgICAgIC0gZGVjcmVtZW50IHRo
ZSBjb3VudGVyLCBhbmQgZGVsZXRlIGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdURjo6UmVmQ291
bnRlcjo6UmVmQ291bnRlcik6CisgICAgICAgICAgICAtIGNyZWF0ZSBhIFJlZkNvdW50ZXI6OkNv
dW50ZXIuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6On5SZWZDb3VudGVyKToKKyAgICAgICAg
ICAgIC0gZWFnZXJseSBkZWxldGUgdGhlIENvdW50ZXIgaWYgaXQgaGFzIG5vIHJlZmVyZW5jZXMs
IG90aGVyd2lzZSBsZXQgaXQgYmUgZGVsZXRlZCBvbiBsYXN0IGRlcmVmLgorICAgICAgICAqIHd0
Zi9SZWZDb3VudGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpDb3VudGVy
OjpDb3VudGVyKToKKyAgICAgICAgICAgIC0gaW5pdGlhbGl6ZSBjb3VudCB0byAwLgorICAgICAg
ICAoV1RGOjpSZWZDb3VudGVyOjpSZWZDb3VudGVyKToKKyAgICAgICAgICAgIC0gdGFrZXMgYSBs
YW1iZGEgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuCisgICAgICAgIChXVEY6
OlJlZkNvdW50ZXI6OmNvdW50ZXIpOgorICAgICAgICAgICAgLSByZWZlcmVuY2UgdGhlIGNvdW50
ZXIgKGFuZCBpbiBkb2luZyBzbyBpbmNyZW1lbnQgdGhlIGNvdW50KS4KKyAgICAgICAgKFdURjo6
UmVmQ291bnRlcjo6dmFsdWUpOgorICAgICAgICAgICAgLSBhY2Nlc3MgdGhlIGN1cnJlbnQgdmFs
dWUgb2YgdGhlIGNvdW50ZXIuCisKIDIwMTQtMTEtMjEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFRpbWVyIHBhcmFtZXRlcnMgZnJv
bSB0aW1lciBjYWxsYmFja3MKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQAogCQk4MTM0MDEz
ODE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQu
Y3BwICovOyB9OwogCQk4MTM0MDEzOTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNzE1QjA5MkZE
MDAxRkYwQjggLyogQmFzZTY0LmggKi87IH07CiAJCTgzRkJBOTMyMTlERjQ1OTcwMEYzMEFEQiAv
KiBUeXBlQ2FzdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLzsgfTsKKwkJODZG
NDZGNjAxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGNDZGNUUxQTI4NDBFRTAwQ0NCRjIyIC8q
IFJlZkNvdW50ZXIuY3BwICovOyB9OworCQk4NkY0NkY2MTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVm
Q291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2
QTEgLyogU3RyaW5nVmlld09iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMu
bW0gKi87IH07CiAJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDQx
OEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi87IH07CiAJCTkzQUM5MUE4MTg5
NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggKi87IH07
CkBAIC0zNzEsNiArMzczLDggQEAKIAkJODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2
NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlNjQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyog
QmFzZTY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlw
ZUNhc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkY0NkY1RTFBMjg0MEVFMDBDQ0JGMjIgLyog
UmVmQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZD
b3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZGNDZGNUYxQTI4NDBF
RTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVmQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJEMjE4
QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBTdHJpbmdWaWV3T2JqQy5tbTsgcGF0aCA9IG1hYy9TdHJpbmdW
aWV3T2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MzRCRDQxOEExRjE2
OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBTdHJpbmdWaWV3Q0YuY3BwOyBwYXRoID0gY2YvU3RyaW5nVmlld0NGLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8q
IExDaGFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExDaGFyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzQsNiArODM4LDggQEAKIAkJCQlBOEE0NzMwMDE1
MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZEFycmF5LmggKi8sCiAJCQkJQThBNDczMDExNTFB
ODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgKi8sCiAJCQkJQThBNDcz
MDIxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oICovLAorCQkJCTg2
RjQ2RjVFMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmNwcCAqLywKKwkJCQk4NkY0NkY1
RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovLAogCQkJCUE4QTQ3MzAzMTUxQTgy
NUIwMDQxMjNGRiAvKiBSZWZQdHIuaCAqLywKIAkJCQlBOEE0NzMwNTE1MUE4MjVCMDA0MTIzRkYg
LyogUmV0YWluUHRyLmggKi8sCiAJCQkJMkNERUQwRjExODExNUM4NTAwNERCQTcwIC8qIFJ1bkxv
b3AuY3BwICovLApAQCAtMTE2Miw2ICsxMTY4LDcgQEAKIAkJCQlBOEE0NzQxQzE1MUE4MjVCMDA0
MTIzRkYgLyogUmVmUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQxRTE1MUE4MjVCMDA0
MTIzRkYgLyogUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQ0RFRDBGNDE4MTE1Qzg1
MDA0REJBNzAgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZGNDZGNjExQTI4NDBF
RTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Njk0MTkyMTZF
QUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RjNC
MEY3MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDY5NDE5NjE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEzMzUsNiArMTM0Miw3IEBACiAJCQkJQThBNDczOUExNTFBODI1QjAwNDEy
M0ZGIC8qIENyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3NDM5MTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4QTQ3MzlDMTUxQTgyNUIwMDQxMjNGRiAvKiBDdXJyZW50VGltZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk4NkY0NkY2MDFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzM5RTE1MUE4MjVCMDA0MTIzRkYgLyogRGF0YUxvZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNBMDE1MUE4MjVCMDA0MTIzRkYgLyogRGF0ZU1h
dGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQTIxNTFBODI1QjAwNDEyM0ZGIC8qIERl
Y2ltYWxOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZD
b3VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVmQ291bnRlci5oIgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBSZWZDb3Vu
dGVyOjpDb3VudGVyOjpyZWYoKQoreworICAgICsrbV92YWx1ZTsKKworICAgIGlmIChtX3JlZkNv
dW50ZXIpCisgICAgICAgIG1fcmVmQ291bnRlci0+bV92YWx1ZURpZENoYW5nZSgpOworfQorCit2
b2lkIFJlZkNvdW50ZXI6OkNvdW50ZXI6OmRlcmVmKCkKK3sKKyAgICBBU1NFUlQobV92YWx1ZSk7
CisgICAgLS1tX3ZhbHVlOworCisgICAgLy8gVGhlIENvdW50ZXIgb2JqZWN0IGhhcyBhIGlzIGtl
cHQgYWxpdmUgc28gbG9uZyBhcyBlaXRoZXIgdGhlIFJlZkNvdW50ZXIgdGhhdCBjcmVhdGVkCisg
ICAgLy8gaXQgcmVtYWlucyBhbGxvY2F0ZWQsIG9yIHNvIGxvbmcgYXMgaXRzIHJlZmVyZW5jZSBj
b3VudCBpcyBub24temVyby4KKyAgICAvLyBJZiB0aGUgUmVmQ291bnRlciBoYXMgYWxyZWFkeSBi
ZWVuIGRlYWxsb2N0ZWQgdGhlbiBkZWxldGUgdGhlIENvdW50ZXIgd2hlbiBpdHMgcmVmZXJlbmNl
CisgICAgLy8gY291bnQgcmVhY2hlcyB6ZXJvLgorICAgIGlmIChtX3JlZkNvdW50ZXIpCisgICAg
ICAgIG1fcmVmQ291bnRlci0+bV92YWx1ZURpZENoYW5nZSgpOworICAgIGVsc2UgaWYgKCFtX3Zh
bHVlKQorICAgICAgICBkZWxldGUgdGhpczsKK30KKworUmVmQ291bnRlcjo6UmVmQ291bnRlcihW
YWx1ZURpZENoYW5nZUNhbGxiYWNrIHZhbHVlRGlkQ2hhbmdlKQorICAgIDogbV92YWx1ZURpZENo
YW5nZSh2YWx1ZURpZENoYW5nZSkKKyAgICAsIG1fY291bnRlcihuZXcgQ291bnRlcigqdGhpcykp
Cit7Cit9CisKK1JlZkNvdW50ZXI6On5SZWZDb3VudGVyKCkKK3sKKyAgICAvLyBUaGUgQ291bnRl
ciBvYmplY3QgaGFzIGEgaXMga2VwdCBhbGl2ZSBzbyBsb25nIGFzIGVpdGhlciB0aGUgUmVmQ291
bnRlciB0aGF0IGNyZWF0ZWQKKyAgICAvLyBpdCByZW1haW5zIGFsbG9jYXRlZCwgb3Igc28gbG9u
ZyBhcyBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIG5vbi16ZXJvLgorICAgIC8vIElmIHRoZSByZWZl
cmVuY2UgY291bnQgb2YgdGhlIENvdW50ZXIgaXMgYWxyZWFkeSB6ZXJvIHRoZW4gZGVsZXRlIGl0
IG5vdywgb3RoZXJ3aXNlCisgICAgLy8gY2xlYXIgaXRzIG1fcmVmQ291bnRlciBwb2ludGVyLgor
ICAgIGlmIChtX2NvdW50ZXItPm1fdmFsdWUpCisgICAgICAgIG1fY291bnRlci0+bV9yZWZDb3Vu
dGVyID0gbnVsbHB0cjsKKyAgICBlbHNlCisgICAgICAgIGRlbGV0ZSBtX2NvdW50ZXI7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZDb3Vu
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dURi93dGYvUmVmQ291bnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlZkNvdW50ZXJfaAorI2RlZmluZSBS
ZWZDb3VudGVyX2gKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKworbmFtZXNwYWNlIFdURiB7
CisKK2NsYXNzIFJlZkNvdW50ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZkNvdW50
ZXIpOworcHVibGljOgorICAgIGNsYXNzIENvdW50ZXIKKyAgICB7CisgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENvdW50ZXIpOworICAgIHB1YmxpYzoKKyAgICAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcmVmKCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlcmVm
KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgUmVmQ291bnRlcjsKKwor
ICAgICAgICBDb3VudGVyKFJlZkNvdW50ZXImIHJlZkNvdW50ZXIpCisgICAgICAgICAgICA6IG1f
cmVmQ291bnRlcigmcmVmQ291bnRlcikKKyAgICAgICAgICAgICwgbV92YWx1ZSgwKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICBSZWZDb3VudGVyKiBtX3JlZkNvdW50ZXI7CisgICAg
ICAgIHVuc2lnbmVkIG1fdmFsdWU7CisgICAgfTsKKworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IFZhbHVlRGlkQ2hhbmdlQ2FsbGJhY2s7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgUmVmQ291bnRlcihWYWx1ZURpZENoYW5nZUNhbGxiYWNrID0gW10oKXt9KTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgflJlZkNvdW50ZXIoKTsKKworICAgIFBhc3NSZWZQdHI8Q291bnRlcj4g
Y291bnRlcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jb3VudGVyOworICAgIH0K
KworICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Nv
dW50ZXItPm1fdmFsdWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZhbHVlRGlkQ2hhbmdlQ2Fs
bGJhY2sgbV92YWx1ZURpZENoYW5nZTsKKyAgICBDb3VudGVyKiBtX2NvdW50ZXI7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpSZWZDb3VudGVyOworCisjZW5kaWYgLy8g
UmVmQ291bnRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzY1NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NCBAQAorMjAxNC0x
MS0yOSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgR2VuZXJhbGl6ZSBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5MTA2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9r
ZW4gaXMgYSBSQUlJIG1lY2hhbmlzbSBpbXBsZW1lbnRpbmcgYSBjb3VudGVyLCB1c2VkIGJ5IFBh
Z2VUaHJvdHRsZXIKKyAgICAgICAgdG8gY291bnQgdXNlciB2aXNpYmxlIGFjdGl2aXR5IGluIHBy
b2dyZXNzIG9uIHRoZSBwYWdlIChjdXJyZW50bHkgcGFnZSBsb2FkIGFuZCBtZWRpYSBwbGF5YmFj
aykuCisgICAgICAgIFVzZSBvZiBhbiBSQUlJIHR5cGUgaXMgcHJldmVudHMgYSBudW1iZXIgb2Yg
cG9zc2libGUgZXJyb3JzLCBpbmNsdWRpbmcgZG91YmxlIGNvdW50aW5nIGEgc2luZ2xlCisgICAg
ICAgIG1lZGlhIGVsZW1lbnQsIG9yIGZhaWxpbmcgdG8gZGVjcmVtZW50IHRoZSBjb3VudCBhZnRl
ciBhIG1lZGlhIGVsZW1lbnQgaGFzIGJlZW4gZGVhbGxvY2F0ZWQuCisKKyAgICAgICAgVGhlIGN1
cnJlbnQgaW1wbGVtZW50YXRpb24gaGFzIGEgbnVtYmVyIG9mIGRyYXdiYWNrcyB0aGF0IGhhdmUg
YmVlbiBhZGRyZXNzZWQgYnkgdGhpcyByZWZhY3RvcmluZzoKKyAgICAgICAgIC0gc3BlY2lmaWMg
dG8gc2luZ2xlIHVzZSBpbiBQYWdlVGhyb3R0bGVyIGNsYXNzIC0gbm90IHJldXNhYmxlLgorICAg
ICAgICAgLSBpbmNvbXBsZXRlIGVuY2Fwc3VsYXRpb24gLSB0aGUgY291bnRlciBhbmQgV2Vha1B0
ckZhY3RvcnkgdGhhdCBjb21wcmlzZSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICAgICBhcmUgbm90IGVuY2Fwc3VsYXRlZCAoYXJlIGluIHRoZSBjbGllbnQgdHlwZSwgUGFnZVRo
cm90dGxlcikuCisgICAgICAgICAtIHRva2VucyBhcmUgbm90IHNoYXJlZCAtIFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuIGluc3RhbmNlcyBhcmUgbWFuYWdlZCBieSBzdGQ6OnVuaXF1ZSwgZXZl
cnkKKyAgICAgICAgICAgaW5jcmVtZW50IHJlcXVpcmVzIGFuIG9iamVjdCBhbGxvY2F0aW9uLgor
ICAgICAgICAgLSByZWR1bmRhbmN5IC0gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gdXNlcyBh
IFdlYWtQdHIgdG8gc2FmZWx5IHJlZmVyZW5jZSB0aGUgUGFnZVRocm90dGxlciwgdGhpcworICAg
ICAgICAgICBpcyBpbnRlcm5hbGx5IGltcGxlbWVudGVkIHVzaW5nIGEgcmVmZXJlbmNlIGNvdW50
ZWQgdHlwZSwgcmVzdWx0aW5nIGluIHR3byBjb3VudGVycyBiZWluZworICAgICAgICAgICBpbmNy
ZW1lbnRlZCAob25lIGluIHRoZSBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiwgb25lIGluIHRo
ZSBQYWdlVGhyb3R0bGVyKS4KKworICAgICAgICBJbiB0aGUgcmVpbXBsZW1lbnRhdGlvbjoKKyAg
ICAgICAgIC0gYSBjYWxsYmFjayBpcyBwcm92aWRlZCB2aWEgYSBsYW1iZGEgZnVuY3Rpb24sIHdo
aWNoIGFsbG93cyBmb3IgZWFzeSByZXVzZSB3aXRob3V0IGEgbG90IG9mCisgICAgICAgICAgIGJv
aWxlcnBsYXRlIGNvZGUuCisgICAgICAgICAtIHRoZSBjb3VudGVyLCBjYWxsYmFjayBhbmQgb3du
ZXJzaGlwIG9mIHRoZSBvdGhlcndpc2Ugd2Vha2x5LW93bmVkIHRva2VuIGlzIGVuY2Fwc3VsYXRl
ZCB3aXRoaW4gdGhlCisgICAgICAgICAgIFJlZkNvdW50ZXIgdHlwZS4KKyAgICAgICAgIC0gYSBz
aW5nbGUgY291bnQgd2l0aGluIFJlZkNvdW50ZXI6OkNvdW50ZXIgc3RvcmVzIHRoZSBjb3VudGVy
IHZhbHVlLCBhbmQgYWxzbyBtYW5hZ2UgdGhlIGxpZmV0aW1lCisgICAgICAgICAgIG9mIHRoaXMg
b2JqZWN0LgorICAgICAgICAgLSBzdGFuZGFyZCBSZWZQdHJzIGFyZSB1c2VkIHRvIG1hbmFnZSBy
ZWZlcmVuY2VzIHRvIHRoZSBSZWZDb3VudGVyOjpDb3VudGVyLgorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAgICAgLSByZW1vdmVkIFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuLmNwcC8uaAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgICAgICAtIHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9r
ZW4uaAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAgICAgLSBz
dGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFJlZlB0cjxSZWZD
b3VudGVyOjpDb3VudGVyPgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAg
ICAgICAgICAtIHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaAorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAgICAgLSBzdGQ6OnVuaXF1ZV9wdHI8UGFn
ZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFJlZlB0cjxSZWZDb3VudGVyOjpDb3VudGVyPgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICAgICAtIHJl
bW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaAorICAgICAgICAqIGxvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAgICAgLSByZW1vdmVkIGNsYXNzIFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgICAgIC0g
cmVtb3ZlZCBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oCisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpQYWdlKToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBQYWdlKiBwYXJhbWV0ZXIgdG8gUGFn
ZVRocm90dGxlcgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAgICAgLSByZW1vdmVk
IGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuCisgICAgICAgICogcGFnZS9QYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9QYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbi5oOiBSZW1vdmVkLgorICAgICAgICAgICAgLSByZW1vdmVkIFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcC8uaAorICAgICAgICAqIHBhZ2UvUGFnZVRocm90
dGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpQYWdlVGhyb3R0bGVy
KToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBtX3BhZ2UsIG1fd2Vha1B0ckZhY3RvcnksIG1fYWN0
aXZpdHlDb3VudDsgYWRkZWQgbV9wYWdlQWN0aXZpdHlDb3VudGVyLgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZVRocm90dGxlcjo6bWVkaWFBY3Rpdml0eVRva2VuKToKKyAgICAgICAgICAgIC0gc3Rk
Ojp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiAtPiBQYXNzUmVmUHRyPFJl
ZkNvdW50ZXI6OkNvdW50ZXI+CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpwYWdl
TG9hZEFjdGl2aXR5VG9rZW4pOgorICAgICAgICAgICAgLSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFBhc3NSZWZQdHI8UmVmQ291bnRlcjo6Q291bnRlcj4K
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnBhZ2VBY3Rpdml0eUNvdW50ZXJWYWx1
ZURpZENoYW5nZSk6CisgICAgICAgICAgICAtIG1lcmdlZCBmdW5jdGlvbmFsaXR5IG9mIGluY3Jl
bWVudEFjdGl2aXR5Q291bnQvZGVjcmVtZW50QWN0aXZpdHlDb3VudAorICAgICAgICAoV2ViQ29y
ZTo6UGFnZVRocm90dGxlcjo6aW5jcmVtZW50QWN0aXZpdHlDb3VudCk6IERlbGV0ZWQuCisgICAg
ICAgICAgICAtIHNlZSBwYWdlQWN0aXZpdHlDb3VudGVyVmFsdWVEaWRDaGFuZ2UKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OmRlY3JlbWVudEFjdGl2aXR5Q291bnQpOiBEZWxldGVk
LgorICAgICAgICAgICAgLSBzZWUgcGFnZUFjdGl2aXR5Q291bnRlclZhbHVlRGlkQ2hhbmdlCisg
ICAgICAgICogcGFnZS9QYWdlVGhyb3R0bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhy
b3R0bGVyOjp3ZWFrUHRyKTogRGVsZXRlZC4KKyAgICAgICAgICAgIC0gbm8gbG9uZ2VyIHJlcXVp
cmVkOyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm93IGVuY2Fwc3VsYXRlZCB3aXRoaW4gUmVmQ291
bnRlci4KKwogMjAxNC0xMS0yOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIE1vdmUgdGhlICctd2Via2l0LWluaXRpYWwtbGV0dGVyJywgJy13ZWJraXQtbGluZS1ib3gt
Y29udGFpbicgYW5kICctd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoJyBDU1MgcHJvcGVydGllcyB0
byB0aGUgbmV3IFN0eWxlQnVpbGRlcgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC01NTk1LDcgKzU1OTUsNiBAQAogCQlDQ0MyQjUxNDE1RjYxMzA2MDA0OENERDYgLyogRGV2
aWNlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDQ0MyQjUxMDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0NDMkI1MTUxNUY2MTMwNjAw
NDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTExNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuY3BwICovOyB9OwogCQlDQ0MyQjUxNjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNl
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDRDA4Mjg1QzE3NTcy
NTBGMDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwODI4NUExNzU3MjUwODAwRUM1
RkI3IC8qIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcCAqLzsgfTsKIAkJQ0QwRUVFMEUx
NDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEy
IC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwICovOyB9OwogCQlDRDEyN0RFRDE0RjMwOTdEMDBF
ODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQjE0RjMwOTc5MDBFODQ3NzkgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gKi87IH07CiAJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3
OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVG
dWxsU2NyZWVuV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEzMDU1LDggKzEzMDU0LDYgQEAKIAkJQ0NDMkI1MTAxNUY2MTMwNjAwNDhD
REQ2IC8qIERldmljZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZXZpY2VDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0NDMkI1MTExNUY2
MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGV2aWNlQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNDQzJCNTEyMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZUNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0QwODI4NUExNzU3MjUwODAwRUM1RkI3IC8q
IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
Q0QwODI4NUIxNzU3MjUwODAwRUM1RkI3IC8qIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEMEVFRTBBMTQ3NDNFMzQwMDNFQUZBMiAvKiBBdWRpb0Rlc3Rp
bmF0aW9uSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF1ZGlvRGVzdGlu
YXRpb25JT1MuaDsgcGF0aCA9IGlvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3Rp
bmF0aW9uSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1ZGlv
RGVzdGluYXRpb25JT1MuY3BwOyBwYXRoID0gaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE2Njc3LDggKzE2Njc0LDYgQEAKIAkJCQkwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyog
T3JpZ2luQWNjZXNzRW50cnkuaCAqLywKIAkJCQk2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyog
UGFnZS5jcHAgKi8sCiAJCQkJNjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLywK
LQkJCQlDRDA4Mjg1QTE3NTcyNTA4MDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9r
ZW4uY3BwICovLAotCQkJCUNEMDgyODVCMTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlB
c3NlcnRpb25Ub2tlbi5oICovLAogCQkJCUNENUU1QjYwMUExNUYxNTYwMDBDNjA5RSAvKiBQYWdl
Q29uZmlndXJhdGlvbi5jcHAgKi8sCiAJCQkJQ0Q1RTVCNUUxQTE1Q0U1NDAwMEM2MDlFIC8qIFBh
Z2VDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBh
Z2VDb25zb2xlQ2xpZW50LmNwcCAqLywKQEAgLTI5MTE4LDcgKzI5MTEzLDYgQEAKIAkJCQlGRDU4
MUZBRTE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxsYXRvck5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUEwRDU3MzYwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQ0QwODI4NUMxNzU3MjUwRjAwRUM1RkI3IC8qIFBhZ2VBY3Rpdml0eUFz
c2VydGlvblRva2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzdFNzc2MEJGNDEzNEEwMDE1
Mjg3MiAvKiBQYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM4MjA4OTIxNDdEMzVG
OTAwMTBCQzA2IC8qIFBhZ2VDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREFF
RDIwMzAxNkYyNDQyQjAwNzBFQzBGIC8qIFBhZ2VDb25zb2xlQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw2IEBACiAjaW5jbHVkZSAiTWVkaWFSZXNvdXJj
ZUxvYWRlci5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JraW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2Vu
LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgog
I2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDE3NjUwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVy
SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlci5oPgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIkF1ZGlvVHJh
Y2suaCIKQEAgLTY1LDcgKzY2LDYgQEAgY2xhc3MgTWVkaWFDb250cm9sbGVyOwogY2xhc3MgTWVk
aWFDb250cm9sczsKIGNsYXNzIE1lZGlhQ29udHJvbHNIb3N0OwogY2xhc3MgTWVkaWFFcnJvcjsK
LWNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwogY2xhc3MgVGltZVJhbmdlczsKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogY2xhc3MgTWVkaWFLZXlzOwpAQCAtODk5LDcg
Kzg5OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxIVE1MTWVk
aWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW4+IG1fYWN0aXZpdHlUb2tlbjsKKyAgICBSZWZQdHI8UmVmQ291bnRl
cjo6Q291bnRlcj4gbV9hY3Rpdml0eVRva2VuOwogICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFN
ZW1vcnlDb3N0OwogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTc2NTA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUs
NyArODUsNiBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hl
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRv
a2VuLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5o
IgogI2luY2x1ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNjYsNyArNjcsNiBAQCBjbGFzcyBJY29uQ29udHJvbGxlcjsKIGNsYXNzIE5hdmln
YXRpb25BY3Rpb247CiBjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKIGNsYXNzIFBhZ2U7Ci1jbGFz
cyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjsKIGNsYXNzIFBvbGljeUNoZWNrZXI7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNDQzLDcgKzQ0Myw3
IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9wcmV2aW91c1VSTDsKICAgICBSZWZQdHI8SGlzdG9y
eUl0ZW0+IG1fcmVxdWVzdGVkSGlzdG9yeUl0ZW07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuPiBtX2FjdGl2aXR5QXNzZXJ0aW9uOworICAgIFJlZlB0cjxS
ZWZDb3VudGVyOjpDb3VudGVyPiBtX2FjdGl2aXR5QXNzZXJ0aW9uOwogfTsKIAogLy8gVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgYnkgY3JlYXRlV2luZG93KCkgaW4gSlNET01XaW5kb3dCYXNlLmNw
cCwgZm9yIGV4YW1wbGUsIGZvcgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBA
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgUGFnZUFjdGl2aXR5
QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGNsYXNzIFN1YnJlc291
cmNlTG9hZGVyIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQAogI2luY2x1ZGUgIk1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5ldHdvcmtT
dGF0ZU5vdGlmaWVyLmgiCi0jaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIK
ICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgog
I2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCkBAIC0xOTUsNyArMTk0LDcgQEAgUGFnZTo6
UGFnZShQYWdlQ29uZmlndXJhdGlvbiYgcGFnZUNvbmZpZwogI2VuZGlmCiAgICAgLCBtX2FsdGVy
bmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQp
CiAgICAgLCBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZChmYWxzZSkKLSAgICAsIG1fcGFn
ZVRocm90dGxlcigqdGhpcywgbV92aWV3U3RhdGUpCisgICAgLCBtX3BhZ2VUaHJvdHRsZXIobV92
aWV3U3RhdGUpCiAgICAgLCBtX2NvbnNvbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29u
c29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwg
bV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0
aGlzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNiBAQCBjbGFzcyBJ
bnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgTWFpbkZy
YW1lOwogY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwotY2xhc3MgUGFnZUFjdGl2aXR5QXNz
ZXJ0aW9uVG9rZW47CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFBhZ2VDb25zb2xl
Q2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcAkocmV2aXNpb24gMTc2NTA3
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgotCi0jaW5j
bHVkZSAiUGFnZVRocm90dGxlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuOjpQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbihQYWdlVGhyb3R0
bGVyJiB0aHJvdHRsZXIpCi0gICAgOiBtX3Rocm90dGxlcih0aHJvdHRsZXIud2Vha1B0cigpKQot
ewotICAgIHRocm90dGxlci5pbmNyZW1lbnRBY3Rpdml0eUNvdW50KCk7Ci19Ci0KLVBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuOjp+UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4oKQotewotICAg
IGlmIChQYWdlVGhyb3R0bGVyKiB0aHJvdHRsZXIgPSBtX3Rocm90dGxlci5nZXQoKSkKLSAgICAg
ICAgdGhyb3R0bGVyLT5kZWNyZW1lbnRBY3Rpdml0eUNvdW50KCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFz
c2VydGlvblRva2VuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbi5oCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9r
ZW5faAotI2RlZmluZSBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbl9oCi0KLSNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFBhZ2VUaHJvdHRsZXI7Ci0KLWNsYXNzIFBhZ2VBY3Rpdml0eUFz
c2VydGlvblRva2VuIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbik7Ci1wdWJsaWM6Ci0gICAgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4oUGFn
ZVRocm90dGxlciYpOwotICAgIH5QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbigpOwotCi1wcml2
YXRlOgotICAgIFdlYWtQdHI8UGFnZVRocm90dGxlcj4gbV90aHJvdHRsZXI7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tl
bl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5jcHAJKHJldmlzaW9uIDE3
NjUwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDE2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlBhZ2VUaHJvdHRsZXIuaCIKIAotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2Vu
LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZVRocm90dGxlcjo6UGFnZVRocm90dGxl
cihQYWdlJiBwYWdlLCBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKLSAgICA6IG1fcGFnZShw
YWdlKQotICAgICwgbV92aWV3U3RhdGUodmlld1N0YXRlKQotICAgICwgbV93ZWFrUHRyRmFjdG9y
eSh0aGlzKQorUGFnZVRocm90dGxlcjo6UGFnZVRocm90dGxlcihWaWV3U3RhdGU6OkZsYWdzIHZp
ZXdTdGF0ZSkKKyAgICA6IG1fdmlld1N0YXRlKHZpZXdTdGF0ZSkKICAgICAsIG1faHlzdGVyZXNp
cygqdGhpcykKLSAgICAsIG1fYWN0aXZpdHlDb3VudCgwKQorICAgICwgbV9wYWdlQWN0aXZpdHlD
b3VudGVyKFt0aGlzXSgpeyBwYWdlQWN0aXZpdHlDb3VudGVyVmFsdWVEaWRDaGFuZ2UoKTsgfSkK
IHsKICAgICB1cGRhdGVVc2VyQWN0aXZpdHkoKTsKIH0KQEAgLTQ3LDM2ICs0MywyNSBAQCB2b2lk
IFBhZ2VUaHJvdHRsZXI6OmNyZWF0ZVVzZXJBY3Rpdml0eSgpCiAgICAgdXBkYXRlVXNlckFjdGl2
aXR5KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4g
UGFnZVRocm90dGxlcjo6bWVkaWFBY3Rpdml0eVRva2VuKCkKK1Bhc3NSZWZQdHI8UmVmQ291bnRl
cjo6Q291bnRlcj4gUGFnZVRocm90dGxlcjo6bWVkaWFBY3Rpdml0eVRva2VuKCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4oKnRoaXMp
OworICAgIHJldHVybiBtX3BhZ2VBY3Rpdml0eUNvdW50ZXIuY291bnRlcigpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IFBhZ2VUaHJvdHRsZXI6OnBh
Z2VMb2FkQWN0aXZpdHlUb2tlbigpCitQYXNzUmVmUHRyPFJlZkNvdW50ZXI6OkNvdW50ZXI+IFBh
Z2VUaHJvdHRsZXI6OnBhZ2VMb2FkQWN0aXZpdHlUb2tlbigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+KCp0aGlzKTsKKyAgICByZXR1
cm4gbV9wYWdlQWN0aXZpdHlDb3VudGVyLmNvdW50ZXIoKTsKIH0KIAotdm9pZCBQYWdlVGhyb3R0
bGVyOjppbmNyZW1lbnRBY3Rpdml0eUNvdW50KCkKK3ZvaWQgUGFnZVRocm90dGxlcjo6cGFnZUFj
dGl2aXR5Q291bnRlclZhbHVlRGlkQ2hhbmdlKCkKIHsKLSAgICAvLyBJZiBtX2FjdGl2aXR5Q291
bnQgaXMgbm9uemVybywgc3RhdGUgbXVzdCBiZSBTdGFydGVkOyBpZiBtX2FjdGl2aXR5Q291bnQg
aXMgemVybywgc3RhdGUgbWF5IGJlIFdhaXRpbmcgb3IgU3RvcHBlZC4KLSAgICBBU1NFUlQoISFt
X2FjdGl2aXR5Q291bnQgPT0gKG1faHlzdGVyZXNpcy5zdGF0ZSgpID09IEh5c3RlcmVzaXNTdGF0
ZTo6U3RhcnRlZCkpOwotCi0gICAgaWYgKCFtX2FjdGl2aXR5Q291bnQrKykKKyAgICBpZiAobV9w
YWdlQWN0aXZpdHlDb3VudGVyLnZhbHVlKCkpCiAgICAgICAgIG1faHlzdGVyZXNpcy5zdGFydCgp
OwotCi0gICAgQVNTRVJUKG1fYWN0aXZpdHlDb3VudCAmJiBtX2h5c3RlcmVzaXMuc3RhdGUoKSA9
PSBIeXN0ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQpOwotfQotCi12b2lkIFBhZ2VUaHJvdHRsZXI6OmRl
Y3JlbWVudEFjdGl2aXR5Q291bnQoKQotewotICAgIEFTU0VSVChtX2FjdGl2aXR5Q291bnQgJiYg
bV9oeXN0ZXJlc2lzLnN0YXRlKCkgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdGFydGVkKTsKLQotICAg
IGlmICghLS1tX2FjdGl2aXR5Q291bnQpCisgICAgZWxzZQogICAgICAgICBtX2h5c3RlcmVzaXMu
c3RvcCgpOwogCi0gICAgLy8gSWYgbV9hY3Rpdml0eUNvdW50IGlzIG5vbnplcm8sIHN0YXRlIG11
c3QgYmUgU3RhcnRlZDsgaWYgbV9hY3Rpdml0eUNvdW50IGlzIHplcm8sIHN0YXRlIG1heSBiZSBX
YWl0aW5nIG9yIFN0b3BwZWQuCi0gICAgQVNTRVJUKCEhbV9hY3Rpdml0eUNvdW50ID09IChtX2h5
c3RlcmVzaXMuc3RhdGUoKSA9PSBIeXN0ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQpKTsKKyAgICAvLyBJ
ZiB0aGUgY291bnRlciBpcyBub256ZXJvLCBzdGF0ZSBtdXN0IGJlIFN0YXJ0ZWQ7IGlmIHRoZSBj
b3VudGVyIGlzIHplcm8sIHN0YXRlIG1heSBiZSBXYWl0aW5nIG9yIFN0b3BwZWQuCisgICAgQVNT
RVJUKCEhbV9wYWdlQWN0aXZpdHlDb3VudGVyLnZhbHVlKCkgPT0gKG1faHlzdGVyZXNpcy5zdGF0
ZSgpID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCkpOwogfQogCiB2b2lkIFBhZ2VUaHJvdHRs
ZXI6OnVwZGF0ZVVzZXJBY3Rpdml0eSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VU
aHJvdHRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRs
ZXIuaAkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDMxICszMCwyNyBAQAogCiAjaW5jbHVkZSAiVXNl
ckFjdGl2aXR5LmgiCiAjaW5jbHVkZSAiVmlld1N0YXRlLmgiCi0jaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjsKIAogY2xh
c3MgUGFnZVRocm90dGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgUGFnZVRocm90dGxlcihQYWdlJiwgVmlld1N0YXRlOjpGbGFncyk7CisgICAgUGFnZVRo
cm90dGxlcihWaWV3U3RhdGU6OkZsYWdzKTsKIAogICAgIHZvaWQgY3JlYXRlVXNlckFjdGl2aXR5
KCk7CiAgICAgdm9pZCBzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFncyk7CiAKICAgICB2b2lk
IGRpZFJlY2VpdmVVc2VySW5wdXQoKSB7IG1faHlzdGVyZXNpcy5pbXB1bHNlKCk7IH0KICAgICB2
b2lkIHBsdWdpbkRpZEV2YWx1YXRlV2hpbGVBdWRpb0lzUGxheWluZygpIHsgbV9oeXN0ZXJlc2lz
LmltcHVsc2UoKTsgfQotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25U
b2tlbj4gbWVkaWFBY3Rpdml0eVRva2VuKCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuPiBwYWdlTG9hZEFjdGl2aXR5VG9rZW4oKTsKKyAgICBQYXNzUmVm
UHRyPFJlZkNvdW50ZXI6OkNvdW50ZXI+IG1lZGlhQWN0aXZpdHlUb2tlbigpOworICAgIFBhc3NS
ZWZQdHI8UmVmQ291bnRlcjo6Q291bnRlcj4gcGFnZUxvYWRBY3Rpdml0eVRva2VuKCk7CiAKIHBy
aXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwotICAg
IFdlYWtQdHI8UGFnZVRocm90dGxlcj4gd2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3Rv
cnkuY3JlYXRlV2Vha1B0cigpOyB9Ci0gICAgdm9pZCBpbmNyZW1lbnRBY3Rpdml0eUNvdW50KCk7
Ci0gICAgdm9pZCBkZWNyZW1lbnRBY3Rpdml0eUNvdW50KCk7CisgICAgdm9pZCBwYWdlQWN0aXZp
dHlDb3VudGVyVmFsdWVEaWRDaGFuZ2UoKTsKIAogICAgIHZvaWQgdXBkYXRlVXNlckFjdGl2aXR5
KCk7CiAKQEAgLTYyLDEyICs1OCwxMCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRlZCgpOwogICAgIHZvaWQgc3RvcHBlZCgpOwogCi0gICAgUGFnZSYgbV9wYWdlOwog
ICAgIFZpZXdTdGF0ZTo6RmxhZ3MgbV92aWV3U3RhdGU7Ci0gICAgV2Vha1B0ckZhY3Rvcnk8UGFn
ZVRocm90dGxlcj4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBIeXN0ZXJlc2lzQWN0aXZpdHk8UGFn
ZVRocm90dGxlcj4gbV9oeXN0ZXJlc2lzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyQWN0aXZp
dHk6OkltcGw+IG1fYWN0aXZpdHk7Ci0gICAgc2l6ZV90IG1fYWN0aXZpdHlDb3VudDsKKyAgICBS
ZWZDb3VudGVyIG1fcGFnZUFjdGl2aXR5Q291bnRlcjsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242287</attachid>
            <date>2014-11-29 18:08:40 -0800</date>
            <delta_ts>2014-12-01 17:41:20 -0800</delta_ts>
            <desc>Speculative build / style fixes</desc>
            <filename>139106.2.patch</filename>
            <type>text/plain</type>
            <size>38144</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzY1NzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE0LTExLTI5ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmFsaXplIFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkxMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBpcyBhIFJBSUkgbWVjaGFuaXNtIGlt
cGxlbWVudGluZyBhIGNvdW50ZXIsIHVzZWQgYnkgUGFnZVRocm90dGxlcgorICAgICAgICB0byBj
b3VudCB1c2VyIHZpc2libGUgYWN0aXZpdHkgaW4gcHJvZ3Jlc3Mgb24gdGhlIHBhZ2UgKGN1cnJl
bnRseSBwYWdlIGxvYWQgYW5kIG1lZGlhIHBsYXliYWNrKS4KKyAgICAgICAgVXNlIG9mIGFuIFJB
SUkgdHlwZSBpcyBwcmV2ZW50cyBhIG51bWJlciBvZiBwb3NzaWJsZSBlcnJvcnMsIGluY2x1ZGlu
ZyBkb3VibGUgY291bnRpbmcgYSBzaW5nbGUKKyAgICAgICAgbWVkaWEgZWxlbWVudCwgb3IgZmFp
bGluZyB0byBkZWNyZW1lbnQgdGhlIGNvdW50IGFmdGVyIGEgbWVkaWEgZWxlbWVudCBoYXMgYmVl
biBkZWFsbG9jYXRlZC4KKworICAgICAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBoYXMg
YSBudW1iZXIgb2YgZHJhd2JhY2tzIHRoYXQgaGF2ZSBiZWVuIGFkZHJlc3NlZCBieSB0aGlzIHJl
ZmFjdG9yaW5nOgorICAgICAgICAgLSBzcGVjaWZpYyB0byBzaW5nbGUgdXNlIGluIFBhZ2VUaHJv
dHRsZXIgY2xhc3MgLSBub3QgcmV1c2FibGUuCisgICAgICAgICAtIGluY29tcGxldGUgZW5jYXBz
dWxhdGlvbiAtIHRoZSBjb3VudGVyIGFuZCBXZWFrUHRyRmFjdG9yeSB0aGF0IGNvbXByaXNlIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgIGFyZSBub3QgZW5jYXBzdWxhdGVk
IChhcmUgaW4gdGhlIGNsaWVudCB0eXBlLCBQYWdlVGhyb3R0bGVyKS4KKyAgICAgICAgIC0gdG9r
ZW5zIGFyZSBub3Qgc2hhcmVkIC0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gaW5zdGFuY2Vz
IGFyZSBtYW5hZ2VkIGJ5IHN0ZDo6dW5pcXVlLCBldmVyeQorICAgICAgICAgICBpbmNyZW1lbnQg
cmVxdWlyZXMgYW4gb2JqZWN0IGFsbG9jYXRpb24uCisgICAgICAgICAtIHJlZHVuZGFuY3kgLSB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgV2Vha1B0ciB0byBzYWZlbHkgcmVmZXJl
bmNlIHRoZSBQYWdlVGhyb3R0bGVyLCB0aGlzCisgICAgICAgICAgIGlzIGludGVybmFsbHkgaW1w
bGVtZW50ZWQgdXNpbmcgYSByZWZlcmVuY2UgY291bnRlZCB0eXBlLCByZXN1bHRpbmcgaW4gdHdv
IGNvdW50ZXJzIGJlaW5nCisgICAgICAgICAgIGluY3JlbWVudGVkIChvbmUgaW4gdGhlIFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuLCBvbmUgaW4gdGhlIFBhZ2VUaHJvdHRsZXIpLgorCisgICAg
ICAgIEluIHRoZSByZWltcGxlbWVudGF0aW9uOgorICAgICAgICAgLSBhIGNhbGxiYWNrIGlzIHBy
b3ZpZGVkIHZpYSBhIGxhbWJkYSBmdW5jdGlvbiwgd2hpY2ggYWxsb3dzIGZvciBlYXN5IHJldXNl
IHdpdGhvdXQgYSBsb3Qgb2YKKyAgICAgICAgICAgYm9pbGVycGxhdGUgY29kZS4KKyAgICAgICAg
IC0gdGhlIGNvdW50ZXIsIGNhbGxiYWNrIGFuZCBvd25lcnNoaXAgb2YgdGhlIG90aGVyd2lzZSB3
ZWFrbHktb3duZWQgdG9rZW4gaXMgZW5jYXBzdWxhdGVkIHdpdGhpbiB0aGUKKyAgICAgICAgICAg
UmVmQ291bnRlciB0eXBlLgorICAgICAgICAgLSBhIHNpbmdsZSBjb3VudCB3aXRoaW4gUmVmQ291
bnRlcjo6Q291bnRlciBzdG9yZXMgdGhlIGNvdW50ZXIgdmFsdWUsIGFuZCBhbHNvIG1hbmFnZSB0
aGUgbGlmZXRpbWUKKyAgICAgICAgICAgb2YgdGhpcyBvYmplY3QuCisgICAgICAgICAtIHN0YW5k
YXJkIFJlZlB0cnMgYXJlIHVzZWQgdG8gbWFuYWdlIHJlZmVyZW5jZXMgdG8gdGhlIFJlZkNvdW50
ZXI6OkNvdW50ZXIuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgICAgIC0gYWRkZWQgUmVmQ291bnRlci5jcHAvLmgKKyAgICAgICAgKiB3dGYvUmVm
Q291bnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpDb3VudGVyOjpy
ZWYpOgorICAgICAgICAgICAgLSBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuCisgICAgICAgIChXVEY6
OlJlZkNvdW50ZXI6OkNvdW50ZXI6OmRlcmVmKToKKyAgICAgICAgICAgIC0gZGVjcmVtZW50IHRo
ZSBjb3VudGVyLCBhbmQgZGVsZXRlIGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdURjo6UmVmQ291
bnRlcjo6UmVmQ291bnRlcik6CisgICAgICAgICAgICAtIGNyZWF0ZSBhIFJlZkNvdW50ZXI6OkNv
dW50ZXIuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6On5SZWZDb3VudGVyKToKKyAgICAgICAg
ICAgIC0gZWFnZXJseSBkZWxldGUgdGhlIENvdW50ZXIgaWYgaXQgaGFzIG5vIHJlZmVyZW5jZXMs
IG90aGVyd2lzZSBsZXQgaXQgYmUgZGVsZXRlZCBvbiBsYXN0IGRlcmVmLgorICAgICAgICAqIHd0
Zi9SZWZDb3VudGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpDb3VudGVy
OjpDb3VudGVyKToKKyAgICAgICAgICAgIC0gaW5pdGlhbGl6ZSBjb3VudCB0byAwLgorICAgICAg
ICAoV1RGOjpSZWZDb3VudGVyOjpSZWZDb3VudGVyKToKKyAgICAgICAgICAgIC0gdGFrZXMgYSBs
YW1iZGEgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuCisgICAgICAgIChXVEY6
OlJlZkNvdW50ZXI6OmNvdW50ZXIpOgorICAgICAgICAgICAgLSByZWZlcmVuY2UgdGhlIGNvdW50
ZXIgKGFuZCBpbiBkb2luZyBzbyBpbmNyZW1lbnQgdGhlIGNvdW50KS4KKyAgICAgICAgKFdURjo6
UmVmQ291bnRlcjo6dmFsdWUpOgorICAgICAgICAgICAgLSBhY2Nlc3MgdGhlIGN1cnJlbnQgdmFs
dWUgb2YgdGhlIGNvdW50ZXIuCisKIDIwMTQtMTEtMjEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFRpbWVyIHBhcmFtZXRlcnMgZnJv
bSB0aW1lciBjYWxsYmFja3MKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagkocmV2
aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llx3dGZcUkFNU2l6ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcUmFu
ZG9tTnVtYmVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxSZWZDb3Vu
dGVkTGVha0NvdW50ZXIuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFJl
ZkNvdW50ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFJ1bkxvb3Au
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFNIQTEuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFNpeENoYXJhY3Rlckhhc2guY3BwIiAvPgpAQCAt
MjU3LDYgKzI1OCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUmVkQmxhY2tU
cmVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUmVmQ291bnRlZC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFJlZkNvdW50ZWRMZWFrQ291bnRlci5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFJlZkNvdW50ZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxSZWZQdHIuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHd0ZlxSZXRhaW5QdHIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0ZlxSdW5Mb29wLmgiIC8+CkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDE3NjUwNykKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDggQEAKIAkJODEz
NDAxMzgxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFz
ZTY0LmNwcCAqLzsgfTsKIAkJODEzNDAxMzkxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzcxNUIw
OTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovOyB9OwogCQk4M0ZCQTkzMjE5REY0NTk3MDBGMzBB
REIgLyogVHlwZUNhc3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi87IH07CisJ
CTg2RjQ2RjYwMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjQ2RjVFMUEyODQwRUUwMENDQkYy
MiAvKiBSZWZDb3VudGVyLmNwcCAqLzsgfTsKKwkJODZGNDZGNjExQTI4NDBFRTAwQ0NCRjIyIC8q
IFJlZkNvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2RjQ2RjVGMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM5MzRCRDMxOEExRThDMzAw
RDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdP
YmpDLm1tICovOyB9OwogCQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NG
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0
QkQ0MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovOyB9OwogCQk5M0FDOTFB
ODE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUM5MUE3MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5oICov
OyB9OwpAQCAtMzcxLDYgKzM3Myw4IEBACiAJCTgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBC
YXNlNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZTY0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4
IC8qIEJhc2U2NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlNjQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8q
IFR5cGVDYXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlQ2FzdHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZGNDZGNUUxQTI4NDBFRTAwQ0NCRjIy
IC8qIFJlZkNvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVmQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RjQ2RjVGMUEy
ODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZkNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MzRC
RDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gU3RyaW5nVmlld09iakMubW07IHBhdGggPSBtYWMvU3Ry
aW5nVmlld09iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTM0QkQ0MThB
MUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gU3RyaW5nVmlld0NGLmNwcDsgcGF0aCA9IGNmL1N0cmluZ1ZpZXdDRi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUM5MUE3MTg5NDJGQzQwMDI0NDkz
OSAvKiBMQ2hhci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMQ2hhci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM0LDYgKzgzOCw4IEBACiAJCQkJQThBNDcz
MDAxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRBcnJheS5oICovLAogCQkJCUE4QTQ3MzAx
MTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwICovLAogCQkJCUE4
QTQ3MzAyMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuaCAqLywKKwkJ
CQk4NkY0NkY1RTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5jcHAgKi8sCisJCQkJODZG
NDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLywKIAkJCQlBOEE0NzMwMzE1
MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8sCiAJCQkJQThBNDczMDUxNTFBODI1QjAwNDEy
M0ZGIC8qIFJldGFpblB0ci5oICovLAogCQkJCTJDREVEMEYxMTgxMTVDODUwMDREQkE3MCAvKiBS
dW5Mb29wLmNwcCAqLywKQEAgLTExNjIsNiArMTE2OCw3IEBACiAJCQkJQThBNDc0MUMxNTFBODI1
QjAwNDEyM0ZGIC8qIFJlZlB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MUUxNTFBODI1
QjAwNDEyM0ZGIC8qIFJldGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkNERUQwRjQxODEx
NUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2RjQ2RjYxMUEy
ODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDY5NDE5
MjE2RUFBRjZEMDAyNEUxNDYgLyogUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NEYzQjBGNzE1RTQ1RTQ2MDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ2OTQxOTYxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMzM1LDYgKzEzNDIsNyBAQAogCQkJCUE4QTQ3MzlBMTUxQTgyNUIw
MDQxMjNGRiAvKiBDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEE0NzQzOTE1MUE4MjVCMDA0MTIzRkYgLyogQ1N0cmluZy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzM5QzE1MUE4MjVCMDA0MTIzRkYgLyogQ3VycmVudFRpbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJODZGNDZGNjAxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczOUUxNTFBODI1QjAwNDEyM0ZGIC8qIERhdGFM
b2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQTAxNTFBODI1QjAwNDEyM0ZGIC8qIERh
dGVNYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0EyMTUxQTgyNUIwMDQxMjNGRiAv
KiBEZWNpbWFsTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDE3NjUwNykKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFJlZi5o
CiAgICAgUmVmQ291bnRlZC5oCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmgKKyAgICBSZWZD
b3VudGVyLmgKICAgICBSZWZQdHIuaAogICAgIFJldGFpblB0ci5oCiAgICAgUnVuTG9vcC5oCkBA
IC0xNzUsNiArMTc2LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgUkFNU2l6ZS5jcHAKICAgICBS
YW5kb21OdW1iZXIuY3BwCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAorICAgIFJlZkNv
dW50ZXIuY3BwCiAgICAgUnVuTG9vcC5jcHAKICAgICBTSEExLmNwcAogICAgIFNpeENoYXJhY3Rl
ckhhc2guY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XVEYvd3RmL1JlZkNvdW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVmQ291bnRlci5o
IgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBSZWZDb3VudGVyOjpDb3VudGVyOjpyZWYoKQor
eworICAgICsrbV92YWx1ZTsKKworICAgIGlmIChtX3JlZkNvdW50ZXIpCisgICAgICAgIG1fcmVm
Q291bnRlci0+bV92YWx1ZURpZENoYW5nZSgpOworfQorCit2b2lkIFJlZkNvdW50ZXI6OkNvdW50
ZXI6OmRlcmVmKCkKK3sKKyAgICBBU1NFUlQobV92YWx1ZSk7CisgICAgLS1tX3ZhbHVlOworCisg
ICAgLy8gVGhlIENvdW50ZXIgb2JqZWN0IGhhcyBhIGlzIGtlcHQgYWxpdmUgc28gbG9uZyBhcyBl
aXRoZXIgdGhlIFJlZkNvdW50ZXIgdGhhdCBjcmVhdGVkCisgICAgLy8gaXQgcmVtYWlucyBhbGxv
Y2F0ZWQsIG9yIHNvIGxvbmcgYXMgaXRzIHJlZmVyZW5jZSBjb3VudCBpcyBub24temVyby4KKyAg
ICAvLyBJZiB0aGUgUmVmQ291bnRlciBoYXMgYWxyZWFkeSBiZWVuIGRlYWxsb2N0ZWQgdGhlbiBk
ZWxldGUgdGhlIENvdW50ZXIgd2hlbiBpdHMgcmVmZXJlbmNlCisgICAgLy8gY291bnQgcmVhY2hl
cyB6ZXJvLgorICAgIGlmIChtX3JlZkNvdW50ZXIpCisgICAgICAgIG1fcmVmQ291bnRlci0+bV92
YWx1ZURpZENoYW5nZSgpOworICAgIGVsc2UgaWYgKCFtX3ZhbHVlKQorICAgICAgICBkZWxldGUg
dGhpczsKK30KKworUmVmQ291bnRlcjo6UmVmQ291bnRlcihWYWx1ZURpZENoYW5nZUNhbGxiYWNr
IHZhbHVlRGlkQ2hhbmdlKQorICAgIDogbV92YWx1ZURpZENoYW5nZSh2YWx1ZURpZENoYW5nZSkK
KyAgICAsIG1fY291bnRlcihuZXcgQ291bnRlcigqdGhpcykpCit7Cit9CisKK1JlZkNvdW50ZXI6
On5SZWZDb3VudGVyKCkKK3sKKyAgICAvLyBUaGUgQ291bnRlciBvYmplY3QgaGFzIGEgaXMga2Vw
dCBhbGl2ZSBzbyBsb25nIGFzIGVpdGhlciB0aGUgUmVmQ291bnRlciB0aGF0IGNyZWF0ZWQKKyAg
ICAvLyBpdCByZW1haW5zIGFsbG9jYXRlZCwgb3Igc28gbG9uZyBhcyBpdHMgcmVmZXJlbmNlIGNv
dW50IGlzIG5vbi16ZXJvLgorICAgIC8vIElmIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIENv
dW50ZXIgaXMgYWxyZWFkeSB6ZXJvIHRoZW4gZGVsZXRlIGl0IG5vdywgb3RoZXJ3aXNlCisgICAg
Ly8gY2xlYXIgaXRzIG1fcmVmQ291bnRlciBwb2ludGVyLgorICAgIGlmIChtX2NvdW50ZXItPm1f
dmFsdWUpCisgICAgICAgIG1fY291bnRlci0+bV9yZWZDb3VudGVyID0gbnVsbHB0cjsKKyAgICBl
bHNlCisgICAgICAgIGRlbGV0ZSBtX2NvdW50ZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUmVmQ291bnRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93
dGYvUmVmQ291bnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFJlZkNvdW50ZXJfaAorI2RlZmluZSBSZWZDb3VudGVyX2gKKworI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFJlZkNvdW50ZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZkNvdW50ZXIpOworcHVibGljOgorICAgIGNs
YXNzIENvdW50ZXIgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb3VudGVyKTsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlZigpOworICAgICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXJlZigpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIFJlZkNvdW50ZXI7CisKKyAgICAgICAgQ291bnRlcihSZWZDb3VudGVy
JiByZWZDb3VudGVyKQorICAgICAgICAgICAgOiBtX3JlZkNvdW50ZXIoJnJlZkNvdW50ZXIpCisg
ICAgICAgICAgICAsIG1fdmFsdWUoMCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
UmVmQ291bnRlciogbV9yZWZDb3VudGVyOworICAgICAgICB1bnNpZ25lZCBtX3ZhbHVlOworICAg
IH07CisKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBWYWx1ZURpZENoYW5nZUNh
bGxiYWNrOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZkNvdW50ZXIoVmFsdWVEaWRDaGFu
Z2VDYWxsYmFjayA9IFtdKCkgeyB9KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflJlZkNvdW50
ZXIoKTsKKworICAgIFBhc3NSZWZQdHI8Q291bnRlcj4gY291bnRlcigpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9jb3VudGVyOworICAgIH0KKworICAgIHVuc2lnbmVkIHZhbHVlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvdW50ZXItPm1fdmFsdWU7CisgICAgfQor
Citwcml2YXRlOgorICAgIFZhbHVlRGlkQ2hhbmdlQ2FsbGJhY2sgbV92YWx1ZURpZENoYW5nZTsK
KyAgICBDb3VudGVyKiBtX2NvdW50ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNp
bmcgV1RGOjpSZWZDb3VudGVyOworCisjZW5kaWYgLy8gUmVmQ291bnRlcl9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzY1NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw3NCBAQAorMjAxNC0xMS0yOSAgR2F2aW4gQmFycmFjbG91Z2gg
IDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSBQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM5MTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gaXMgYSBSQUlJIG1lY2hhbmlzbSBp
bXBsZW1lbnRpbmcgYSBjb3VudGVyLCB1c2VkIGJ5IFBhZ2VUaHJvdHRsZXIKKyAgICAgICAgdG8g
Y291bnQgdXNlciB2aXNpYmxlIGFjdGl2aXR5IGluIHByb2dyZXNzIG9uIHRoZSBwYWdlIChjdXJy
ZW50bHkgcGFnZSBsb2FkIGFuZCBtZWRpYSBwbGF5YmFjaykuCisgICAgICAgIFVzZSBvZiBhbiBS
QUlJIHR5cGUgaXMgcHJldmVudHMgYSBudW1iZXIgb2YgcG9zc2libGUgZXJyb3JzLCBpbmNsdWRp
bmcgZG91YmxlIGNvdW50aW5nIGEgc2luZ2xlCisgICAgICAgIG1lZGlhIGVsZW1lbnQsIG9yIGZh
aWxpbmcgdG8gZGVjcmVtZW50IHRoZSBjb3VudCBhZnRlciBhIG1lZGlhIGVsZW1lbnQgaGFzIGJl
ZW4gZGVhbGxvY2F0ZWQuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaGFz
IGEgbnVtYmVyIG9mIGRyYXdiYWNrcyB0aGF0IGhhdmUgYmVlbiBhZGRyZXNzZWQgYnkgdGhpcyBy
ZWZhY3RvcmluZzoKKyAgICAgICAgIC0gc3BlY2lmaWMgdG8gc2luZ2xlIHVzZSBpbiBQYWdlVGhy
b3R0bGVyIGNsYXNzIC0gbm90IHJldXNhYmxlLgorICAgICAgICAgLSBpbmNvbXBsZXRlIGVuY2Fw
c3VsYXRpb24gLSB0aGUgY291bnRlciBhbmQgV2Vha1B0ckZhY3RvcnkgdGhhdCBjb21wcmlzZSB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICBhcmUgbm90IGVuY2Fwc3VsYXRl
ZCAoYXJlIGluIHRoZSBjbGllbnQgdHlwZSwgUGFnZVRocm90dGxlcikuCisgICAgICAgICAtIHRv
a2VucyBhcmUgbm90IHNoYXJlZCAtIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIGluc3RhbmNl
cyBhcmUgbWFuYWdlZCBieSBzdGQ6OnVuaXF1ZSwgZXZlcnkKKyAgICAgICAgICAgaW5jcmVtZW50
IHJlcXVpcmVzIGFuIG9iamVjdCBhbGxvY2F0aW9uLgorICAgICAgICAgLSByZWR1bmRhbmN5IC0g
dGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gdXNlcyBhIFdlYWtQdHIgdG8gc2FmZWx5IHJlZmVy
ZW5jZSB0aGUgUGFnZVRocm90dGxlciwgdGhpcworICAgICAgICAgICBpcyBpbnRlcm5hbGx5IGlt
cGxlbWVudGVkIHVzaW5nIGEgcmVmZXJlbmNlIGNvdW50ZWQgdHlwZSwgcmVzdWx0aW5nIGluIHR3
byBjb3VudGVycyBiZWluZworICAgICAgICAgICBpbmNyZW1lbnRlZCAob25lIGluIHRoZSBQYWdl
QWN0aXZpdHlBc3NlcnRpb25Ub2tlbiwgb25lIGluIHRoZSBQYWdlVGhyb3R0bGVyKS4KKworICAg
ICAgICBJbiB0aGUgcmVpbXBsZW1lbnRhdGlvbjoKKyAgICAgICAgIC0gYSBjYWxsYmFjayBpcyBw
cm92aWRlZCB2aWEgYSBsYW1iZGEgZnVuY3Rpb24sIHdoaWNoIGFsbG93cyBmb3IgZWFzeSByZXVz
ZSB3aXRob3V0IGEgbG90IG9mCisgICAgICAgICAgIGJvaWxlcnBsYXRlIGNvZGUuCisgICAgICAg
ICAtIHRoZSBjb3VudGVyLCBjYWxsYmFjayBhbmQgb3duZXJzaGlwIG9mIHRoZSBvdGhlcndpc2Ug
d2Vha2x5LW93bmVkIHRva2VuIGlzIGVuY2Fwc3VsYXRlZCB3aXRoaW4gdGhlCisgICAgICAgICAg
IFJlZkNvdW50ZXIgdHlwZS4KKyAgICAgICAgIC0gYSBzaW5nbGUgY291bnQgd2l0aGluIFJlZkNv
dW50ZXI6OkNvdW50ZXIgc3RvcmVzIHRoZSBjb3VudGVyIHZhbHVlLCBhbmQgYWxzbyBtYW5hZ2Ug
dGhlIGxpZmV0aW1lCisgICAgICAgICAgIG9mIHRoaXMgb2JqZWN0LgorICAgICAgICAgLSBzdGFu
ZGFyZCBSZWZQdHJzIGFyZSB1c2VkIHRvIG1hbmFnZSByZWZlcmVuY2VzIHRvIHRoZSBSZWZDb3Vu
dGVyOjpDb3VudGVyLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAgICAgLSByZW1vdmVkIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNw
cC8uaAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICAgICAt
IHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaAorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5oOgorICAgICAgICAgICAgLSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFJlZlB0cjxSZWZDb3VudGVyOjpDb3VudGVyPgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICAgICAtIHJlbW92ZWQgUGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW4uaAorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgor
ICAgICAgICAgICAgLSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+
IC0+IFJlZlB0cjxSZWZDb3VudGVyOjpDb3VudGVyPgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgICAgICAtIHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW4uaAorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAgICAgLSByZW1vdmVkIGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuCisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBQYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbi5oCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgICAg
IC0gcmVtb3ZlZCBQYWdlKiBwYXJhbWV0ZXIgdG8gUGFnZVRocm90dGxlcgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAgICAgLSByZW1vdmVkIGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2Vy
dGlvblRva2VuCisgICAgICAgICogcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oOiBS
ZW1vdmVkLgorICAgICAgICAgICAgLSByZW1vdmVkIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2Vu
LmNwcC8uaAorICAgICAgICAqIHBhZ2UvUGFnZVRocm90dGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlVGhyb3R0bGVyOjpQYWdlVGhyb3R0bGVyKToKKyAgICAgICAgICAgIC0gcmVtb3Zl
ZCBtX3BhZ2UsIG1fd2Vha1B0ckZhY3RvcnksIG1fYWN0aXZpdHlDb3VudDsgYWRkZWQgbV9wYWdl
QWN0aXZpdHlDb3VudGVyLgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6bWVkaWFB
Y3Rpdml0eVRva2VuKToKKyAgICAgICAgICAgIC0gc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuPiAtPiBQYXNzUmVmUHRyPFJlZkNvdW50ZXI6OkNvdW50ZXI+CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpwYWdlTG9hZEFjdGl2aXR5VG9rZW4pOgorICAg
ICAgICAgICAgLSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+
IFBhc3NSZWZQdHI8UmVmQ291bnRlcjo6Q291bnRlcj4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VU
aHJvdHRsZXI6OnBhZ2VBY3Rpdml0eUNvdW50ZXJWYWx1ZURpZENoYW5nZSk6CisgICAgICAgICAg
ICAtIG1lcmdlZCBmdW5jdGlvbmFsaXR5IG9mIGluY3JlbWVudEFjdGl2aXR5Q291bnQvZGVjcmVt
ZW50QWN0aXZpdHlDb3VudAorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6aW5jcmVt
ZW50QWN0aXZpdHlDb3VudCk6IERlbGV0ZWQuCisgICAgICAgICAgICAtIHNlZSBwYWdlQWN0aXZp
dHlDb3VudGVyVmFsdWVEaWRDaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6
OmRlY3JlbWVudEFjdGl2aXR5Q291bnQpOiBEZWxldGVkLgorICAgICAgICAgICAgLSBzZWUgcGFn
ZUFjdGl2aXR5Q291bnRlclZhbHVlRGlkQ2hhbmdlCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0
bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjp3ZWFrUHRyKTogRGVsZXRl
ZC4KKyAgICAgICAgICAgIC0gbm8gbG9uZ2VyIHJlcXVpcmVkOyB0aGlzIGZ1bmN0aW9uYWxpdHkg
aXMgbm93IGVuY2Fwc3VsYXRlZCB3aXRoaW4gUmVmQ291bnRlci4KKwogMjAxNC0xMS0yOCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgdGhlICctd2Via2l0LWlu
aXRpYWwtbGV0dGVyJywgJy13ZWJraXQtbGluZS1ib3gtY29udGFpbicgYW5kICctd2Via2l0LXRl
eHQtc3Ryb2tlLXdpZHRoJyBDU1MgcHJvcGVydGllcyB0byB0aGUgbmV3IFN0eWxlQnVpbGRlcgpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3NjUwNykKKysrIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTExLDcgKzE5MTEsNiBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAogICAgIHBhZ2Uv
T3JpZ2luQWNjZXNzRW50cnkuY3BwCiAgICAgcGFnZS9QYWdlLmNwcAotICAgIHBhZ2UvUGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwCiAgICAgcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAK
ICAgICBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAogICAgIHBhZ2UvUGFnZUdyb3VwLmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MTg5LDcgKzcxODksNiBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxOYXZpZ2F0b3JCYXNlLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcT3JpZ2luQWNjZXNzRW50cnkuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxQYWdlLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBhZ2VcUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxQYWdlQ29uZmlndXJhdGlvbi5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXFBhZ2VDb25zb2xlQ2xpZW50LmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcUGFnZUdyb3VwLmNwcCIgLz4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE3NjUwNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTU5NSw3ICs1NTk1LDYgQEAKIAkJQ0NDMkI1
MTQxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTAxNUY2MTMwNjAwNDhDREQ2IC8qIERl
dmljZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNDQzJCNTE1MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTExMTVG
NjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0NDMkI1MTYx
NUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTEyMTVGNjEzMDYwMDQ4Q0RENiAvKiBE
ZXZpY2VDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJQ0QwODI4NUMxNzU3MjUwRjAwRUM1RkI3IC8qIFBhZ2VBY3Rpdml0eUFzc2Vy
dGlvblRva2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMDgyODVBMTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tl
bi5jcHAgKi87IH07CiAJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0
aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCAqLzsg
fTsKIAkJQ0QxMjdERUQxNEYzMDk3RDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxMjdE
RUIxNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tICovOyB9Owog
CQlDRDEyN0RFRTE0RjMwOTg0MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVBMTRG
MzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzA1NSw4ICsxMzA1NCw2IEBA
CiAJCUNDQzJCNTEwMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNDQzJCNTExMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldmljZUNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQ0MyQjUxMjE1RjYxMzA2MDA0
OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEZXZpY2VDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNE
MDgyODVBMTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEMDgyODVCMTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdl
QWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBFRUUwQTE0NzQz
RTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHBhdGggPSBpb3MvQXVkaW9EZXN0
aW5hdGlvbklPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBFRUUwQjE0NzQz
RTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDsgcGF0aCA9IGlvcy9B
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Qx
MjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjY3Nyw4ICsxNjY3NCw2IEBACiAJCQkJMDAx
NDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggKi8sCiAJCQkJNjVG
RUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovLAogCQkJCTY1QTIxNDY3MDk3QTMy
OTEwMEI5MDUwQSAvKiBQYWdlLmggKi8sCi0JCQkJQ0QwODI4NUExNzU3MjUwODAwRUM1RkI3IC8q
IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcCAqLywKLQkJCQlDRDA4Mjg1QjE3NTcyNTA4
MDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCAqLywKIAkJCQlDRDVFNUI2
MDFBMTVGMTU2MDAwQzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovLAogCQkJCUNENUU1
QjVFMUExNUNFNTQwMDBDNjA5RSAvKiBQYWdlQ29uZmlndXJhdGlvbi5oICovLAogCQkJCURBQUNC
M0Q5MTZGMjQxNjQwMDY2NjEzNSAvKiBQYWdlQ29uc29sZUNsaWVudC5jcHAgKi8sCkBAIC0yOTEx
OCw3ICsyOTExMyw2IEBACiAJCQkJRkQ1ODFGQUUxNTIwRjkxRjAwM0E3QTc1IC8qIE9zY2lsbGF0
b3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMEQ1NzM2MEE1Qzc3RkUwMDdFREQ0QyAv
KiBPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1RkVBODY5MDk4MzNBREUw
MEJFRDRBQiAvKiBQYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNEMDgyODVDMTc1NzI1MEYw
MEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDc3RTc3NjBCRjQxMzRBMDAxNTI4NzIgLyogUGFnZUNhY2hlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUYzODIwODkyMTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlQ29uc29sZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCURBRUQyMDMwMTZGMjQ0MkIwMDcwRUMwRiAvKiBQYWdlQ29u
c29sZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNiBA
QAogI2luY2x1ZGUgIk1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Np
b25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2lu
Y2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxNzY1MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZXIuaD4KIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKICNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCkBAIC02NSw3ICs2Niw2IEBAIGNsYXNzIE1l
ZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUNvbnRyb2xz
SG9zdDsKIGNsYXNzIE1lZGlhRXJyb3I7Ci1jbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tl
bjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIGNs
YXNzIE1lZGlhS2V5czsKQEAgLTg5OSw3ICs4OTksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SFRNTE1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBtX2FjdGl2aXR5VG9r
ZW47CisgICAgUmVmUHRyPFJlZkNvdW50ZXI6OkNvdW50ZXI+IG1fYWN0aXZpdHlUb2tlbjsKICAg
ICBzaXplX3QgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsKIAogI2lmIEVOQUJMRShNRURJQV9D
T05UUk9MU19TQ1JJUFQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDE3NjUwNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJNYWluRnJhbWUu
aCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRl
ICJQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgog
I2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMTc2NTA3
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDcgKzY3LDYgQEAgY2xhc3MgSWNv
bkNvbnRyb2xsZXI7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgTmV0d29ya2luZ0Nv
bnRleHQ7CiBjbGFzcyBQYWdlOwotY2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBj
bGFzcyBQb2xpY3lDaGVja2VyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKQEAgLTQ0Myw3ICs0NDMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1fcHJldmlv
dXNVUkw7CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rpdml0
eUFzc2VydGlvbjsKKyAgICBSZWZQdHI8UmVmQ291bnRlcjo6Q291bnRlcj4gbV9hY3Rpdml0eUFz
c2VydGlvbjsKIH07CiAKIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGNyZWF0ZVdpbmRv
dygpIGluIEpTRE9NV2luZG93QmFzZS5jcHAsIGZvciBleGFtcGxlLCBmb3IKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTc2NTA3
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9u
IDE3NjUwNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBEb2N1
bWVudDsKLWNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogCiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlciBmaW5hbCA6IHB1YmxpYyBSZXNvdXJj
ZUxvYWRlciB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDE3NjUwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDYg
QEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0
b3IuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgotI2luY2x1ZGUgIlBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVk
ZSAiUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgpA
QCAtMTk1LDcgKzE5NCw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mIHBhZ2VDb25m
aWcKICNlbmRpZgogICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQocGFnZUNvbmZpZ3VyYXRp
b24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KQogICAgICwgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNw
ZW5kZWQoZmFsc2UpCi0gICAgLCBtX3BhZ2VUaHJvdHRsZXIoKnRoaXMsIG1fdmlld1N0YXRlKQor
ICAgICwgbV9wYWdlVGhyb3R0bGVyKG1fdmlld1N0YXRlKQogICAgICwgbV9jb25zb2xlQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVDbGllbnQ+KCp0aGlzKSkKICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKICAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNp
b24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDcgKzgwLDYgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9y
Q29udHJvbGxlcjsKIGNsYXNzIE1haW5GcmFtZTsKIGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
cjsKLWNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwogY2xhc3MgUGFnZUNvbmZpZ3Vy
YXRpb247CiBjbGFzcyBQYWdlQ29uc29sZUNsaWVudDsKIGNsYXNzIFBhZ2VEZWJ1Z2dhYmxlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25U
b2tlbi5jcHAJKHJldmlzaW9uIDE3NjUwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGFnZUFjdGl2aXR5
QXNzZXJ0aW9uVG9rZW4uaCIKLQotI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjo6UGFnZUFjdGl2aXR5
QXNzZXJ0aW9uVG9rZW4oUGFnZVRocm90dGxlciYgdGhyb3R0bGVyKQotICAgIDogbV90aHJvdHRs
ZXIodGhyb3R0bGVyLndlYWtQdHIoKSkKLXsKLSAgICB0aHJvdHRsZXIuaW5jcmVtZW50QWN0aXZp
dHlDb3VudCgpOwotfQotCi1QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjo6flBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuKCkKLXsKLSAgICBpZiAoUGFnZVRocm90dGxlciogdGhyb3R0bGVyID0g
bV90aHJvdHRsZXIuZ2V0KCkpCi0gICAgICAgIHRocm90dGxlci0+ZGVjcmVtZW50QWN0aXZpdHlD
b3VudCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaAkocmV2aXNpb24g
MTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tl
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuX2gKLSNkZWZpbmUgUGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW5faAotCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQYWdlVGhyb3R0bGVy
OwotCi1jbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4pOwotcHVibGljOgotICAgIFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuKFBhZ2VUaHJvdHRsZXImKTsKLSAgICB+UGFnZUFjdGl2aXR5
QXNzZXJ0aW9uVG9rZW4oKTsKLQotcHJpdmF0ZToKLSAgICBXZWFrUHRyPFBhZ2VUaHJvdHRsZXI+
IG1fdGhyb3R0bGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW5faApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlVGhyb3R0bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VU
aHJvdHRsZXIuY3BwCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VUaHJvdHRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNiArMjYsMTIgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAKLSNpbmNsdWRlICJQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBh
Z2VUaHJvdHRsZXI6OlBhZ2VUaHJvdHRsZXIoUGFnZSYgcGFnZSwgVmlld1N0YXRlOjpGbGFncyB2
aWV3U3RhdGUpCi0gICAgOiBtX3BhZ2UocGFnZSkKLSAgICAsIG1fdmlld1N0YXRlKHZpZXdTdGF0
ZSkKLSAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKK1BhZ2VUaHJvdHRsZXI6OlBhZ2VUaHJv
dHRsZXIoVmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUpCisgICAgOiBtX3ZpZXdTdGF0ZSh2aWV3
U3RhdGUpCiAgICAgLCBtX2h5c3RlcmVzaXMoKnRoaXMpCi0gICAgLCBtX2FjdGl2aXR5Q291bnQo
MCkKKyAgICAsIG1fcGFnZUFjdGl2aXR5Q291bnRlcihbdGhpc10oKSB7IHBhZ2VBY3Rpdml0eUNv
dW50ZXJWYWx1ZURpZENoYW5nZSgpOyB9KQogewogICAgIHVwZGF0ZVVzZXJBY3Rpdml0eSgpOwog
fQpAQCAtNDcsMzYgKzQzLDI1IEBAIHZvaWQgUGFnZVRocm90dGxlcjo6Y3JlYXRlVXNlckFjdGl2
aXR5KCkKICAgICB1cGRhdGVVc2VyQWN0aXZpdHkoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBQYWdlVGhyb3R0bGVyOjptZWRpYUFjdGl2aXR5VG9r
ZW4oKQorUGFzc1JlZlB0cjxSZWZDb3VudGVyOjpDb3VudGVyPiBQYWdlVGhyb3R0bGVyOjptZWRp
YUFjdGl2aXR5VG9rZW4oKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuPigqdGhpcyk7CisgICAgcmV0dXJuIG1fcGFnZUFjdGl2aXR5Q291
bnRlci5jb3VudGVyKCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRp
b25Ub2tlbj4gUGFnZVRocm90dGxlcjo6cGFnZUxvYWRBY3Rpdml0eVRva2VuKCkKK1Bhc3NSZWZQ
dHI8UmVmQ291bnRlcjo6Q291bnRlcj4gUGFnZVRocm90dGxlcjo6cGFnZUxvYWRBY3Rpdml0eVRv
a2VuKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQWN0aXZpdHlBc3NlcnRp
b25Ub2tlbj4oKnRoaXMpOworICAgIHJldHVybiBtX3BhZ2VBY3Rpdml0eUNvdW50ZXIuY291bnRl
cigpOwogfQogCi12b2lkIFBhZ2VUaHJvdHRsZXI6OmluY3JlbWVudEFjdGl2aXR5Q291bnQoKQor
dm9pZCBQYWdlVGhyb3R0bGVyOjpwYWdlQWN0aXZpdHlDb3VudGVyVmFsdWVEaWRDaGFuZ2UoKQog
ewotICAgIC8vIElmIG1fYWN0aXZpdHlDb3VudCBpcyBub256ZXJvLCBzdGF0ZSBtdXN0IGJlIFN0
YXJ0ZWQ7IGlmIG1fYWN0aXZpdHlDb3VudCBpcyB6ZXJvLCBzdGF0ZSBtYXkgYmUgV2FpdGluZyBv
ciBTdG9wcGVkLgotICAgIEFTU0VSVCghIW1fYWN0aXZpdHlDb3VudCA9PSAobV9oeXN0ZXJlc2lz
LnN0YXRlKCkgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdGFydGVkKSk7Ci0KLSAgICBpZiAoIW1fYWN0
aXZpdHlDb3VudCsrKQorICAgIGlmIChtX3BhZ2VBY3Rpdml0eUNvdW50ZXIudmFsdWUoKSkKICAg
ICAgICAgbV9oeXN0ZXJlc2lzLnN0YXJ0KCk7Ci0KLSAgICBBU1NFUlQobV9hY3Rpdml0eUNvdW50
ICYmIG1faHlzdGVyZXNpcy5zdGF0ZSgpID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCk7Ci19
Ci0KLXZvaWQgUGFnZVRocm90dGxlcjo6ZGVjcmVtZW50QWN0aXZpdHlDb3VudCgpCi17Ci0gICAg
QVNTRVJUKG1fYWN0aXZpdHlDb3VudCAmJiBtX2h5c3RlcmVzaXMuc3RhdGUoKSA9PSBIeXN0ZXJl
c2lzU3RhdGU6OlN0YXJ0ZWQpOwotCi0gICAgaWYgKCEtLW1fYWN0aXZpdHlDb3VudCkKKyAgICBl
bHNlCiAgICAgICAgIG1faHlzdGVyZXNpcy5zdG9wKCk7CiAKLSAgICAvLyBJZiBtX2FjdGl2aXR5
Q291bnQgaXMgbm9uemVybywgc3RhdGUgbXVzdCBiZSBTdGFydGVkOyBpZiBtX2FjdGl2aXR5Q291
bnQgaXMgemVybywgc3RhdGUgbWF5IGJlIFdhaXRpbmcgb3IgU3RvcHBlZC4KLSAgICBBU1NFUlQo
ISFtX2FjdGl2aXR5Q291bnQgPT0gKG1faHlzdGVyZXNpcy5zdGF0ZSgpID09IEh5c3RlcmVzaXNT
dGF0ZTo6U3RhcnRlZCkpOworICAgIC8vIElmIHRoZSBjb3VudGVyIGlzIG5vbnplcm8sIHN0YXRl
IG11c3QgYmUgU3RhcnRlZDsgaWYgdGhlIGNvdW50ZXIgaXMgemVybywgc3RhdGUgbWF5IGJlIFdh
aXRpbmcgb3IgU3RvcHBlZC4KKyAgICBBU1NFUlQoISFtX3BhZ2VBY3Rpdml0eUNvdW50ZXIudmFs
dWUoKSA9PSAobV9oeXN0ZXJlc2lzLnN0YXRlKCkgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdGFydGVk
KSk7CiB9CiAKIHZvaWQgUGFnZVRocm90dGxlcjo6dXBkYXRlVXNlckFjdGl2aXR5KCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5oCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMzEg
KzMwLDI3IEBACiAKICNpbmNsdWRlICJVc2VyQWN0aXZpdHkuaCIKICNpbmNsdWRlICJWaWV3U3Rh
dGUuaCIKLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuOwogCiBjbGFzcyBQYWdlVGhyb3R0bGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlVGhyb3R0bGVyKFBhZ2UmLCBWaWV3
U3RhdGU6OkZsYWdzKTsKKyAgICBQYWdlVGhyb3R0bGVyKFZpZXdTdGF0ZTo6RmxhZ3MpOwogCiAg
ICAgdm9pZCBjcmVhdGVVc2VyQWN0aXZpdHkoKTsKICAgICB2b2lkIHNldFZpZXdTdGF0ZShWaWV3
U3RhdGU6OkZsYWdzKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnB1dCgpIHsgbV9oeXN0
ZXJlc2lzLmltcHVsc2UoKTsgfQogICAgIHZvaWQgcGx1Z2luRGlkRXZhbHVhdGVXaGlsZUF1ZGlv
SXNQbGF5aW5nKCkgeyBtX2h5c3RlcmVzaXMuaW1wdWxzZSgpOyB9Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBtZWRpYUFjdGl2aXR5VG9rZW4oKTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IHBhZ2VMb2FkQWN0
aXZpdHlUb2tlbigpOworICAgIFBhc3NSZWZQdHI8UmVmQ291bnRlcjo6Q291bnRlcj4gbWVkaWFB
Y3Rpdml0eVRva2VuKCk7CisgICAgUGFzc1JlZlB0cjxSZWZDb3VudGVyOjpDb3VudGVyPiBwYWdl
TG9hZEFjdGl2aXR5VG9rZW4oKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgUGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW47Ci0gICAgV2Vha1B0cjxQYWdlVGhyb3R0bGVyPiB3ZWFrUHRy
KCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KLSAgICB2b2lk
IGluY3JlbWVudEFjdGl2aXR5Q291bnQoKTsKLSAgICB2b2lkIGRlY3JlbWVudEFjdGl2aXR5Q291
bnQoKTsKKyAgICB2b2lkIHBhZ2VBY3Rpdml0eUNvdW50ZXJWYWx1ZURpZENoYW5nZSgpOwogCiAg
ICAgdm9pZCB1cGRhdGVVc2VyQWN0aXZpdHkoKTsKIApAQCAtNjIsMTIgKzU4LDEwIEBAIHByaXZh
dGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydGVkKCk7CiAgICAgdm9pZCBzdG9wcGVk
KCk7CiAKLSAgICBQYWdlJiBtX3BhZ2U7CiAgICAgVmlld1N0YXRlOjpGbGFncyBtX3ZpZXdTdGF0
ZTsKLSAgICBXZWFrUHRyRmFjdG9yeTxQYWdlVGhyb3R0bGVyPiBtX3dlYWtQdHJGYWN0b3J5Owog
ICAgIEh5c3RlcmVzaXNBY3Rpdml0eTxQYWdlVGhyb3R0bGVyPiBtX2h5c3RlcmVzaXM7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFVzZXJBY3Rpdml0eTo6SW1wbD4gbV9hY3Rpdml0eTsKLSAgICBzaXpl
X3QgbV9hY3Rpdml0eUNvdW50OworICAgIFJlZkNvdW50ZXIgbV9wYWdlQWN0aXZpdHlDb3VudGVy
OwogfTsKIAogfQo=
</data>
<flag name="review"
          id="267168"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242368</attachid>
            <date>2014-12-01 17:41:20 -0800</date>
            <delta_ts>2014-12-02 09:52:32 -0800</delta_ts>
            <desc>Review comment fixes. Not for re-review yet; needs an API test.</desc>
            <filename>139106.3.patch</filename>
            <type>text/plain</type>
            <size>38086</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE0LTEyLTAxICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmFsaXplIFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkxMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBpcyBhIFJBSUkgbWVjaGFuaXNtIGlt
cGxlbWVudGluZyBhIGNvdW50ZXIsIHVzZWQgYnkgUGFnZVRocm90dGxlcgorICAgICAgICB0byBj
b3VudCB1c2VyIHZpc2libGUgYWN0aXZpdHkgaW4gcHJvZ3Jlc3Mgb24gdGhlIHBhZ2UgKGN1cnJl
bnRseSBwYWdlIGxvYWQgYW5kIG1lZGlhIHBsYXliYWNrKS4KKyAgICAgICAgVXNlIG9mIGFuIFJB
SUkgdHlwZSBpcyBwcmV2ZW50cyBhIG51bWJlciBvZiBwb3NzaWJsZSBlcnJvcnMsIGluY2x1ZGlu
ZyBkb3VibGUgY291bnRpbmcgYSBzaW5nbGUKKyAgICAgICAgbWVkaWEgZWxlbWVudCwgb3IgZmFp
bGluZyB0byBkZWNyZW1lbnQgdGhlIGNvdW50IGFmdGVyIGEgbWVkaWEgZWxlbWVudCBoYXMgYmVl
biBkZWFsbG9jYXRlZC4KKworICAgICAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBoYXMg
YSBudW1iZXIgb2YgZHJhd2JhY2tzIHRoYXQgaGF2ZSBiZWVuIGFkZHJlc3NlZCBieSB0aGlzIHJl
ZmFjdG9yaW5nOgorICAgICAgICAgLSBzcGVjaWZpYyB0byBzaW5nbGUgdXNlIGluIFBhZ2VUaHJv
dHRsZXIgY2xhc3MgLSBub3QgcmV1c2FibGUuCisgICAgICAgICAtIGluY29tcGxldGUgZW5jYXBz
dWxhdGlvbiAtIHRoZSBjb3VudGVyIGFuZCBXZWFrUHRyRmFjdG9yeSB0aGF0IGNvbXByaXNlIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgIGFyZSBub3QgZW5jYXBzdWxhdGVk
IChhcmUgaW4gdGhlIGNsaWVudCB0eXBlLCBQYWdlVGhyb3R0bGVyKS4KKyAgICAgICAgIC0gdG9r
ZW5zIGFyZSBub3Qgc2hhcmVkIC0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gaW5zdGFuY2Vz
IGFyZSBtYW5hZ2VkIGJ5IHN0ZDo6dW5pcXVlLCBldmVyeQorICAgICAgICAgICBpbmNyZW1lbnQg
cmVxdWlyZXMgYW4gb2JqZWN0IGFsbG9jYXRpb24uCisgICAgICAgICAtIHJlZHVuZGFuY3kgLSB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgV2Vha1B0ciB0byBzYWZlbHkgcmVmZXJl
bmNlIHRoZSBQYWdlVGhyb3R0bGVyLCB0aGlzCisgICAgICAgICAgIGlzIGludGVybmFsbHkgaW1w
bGVtZW50ZWQgdXNpbmcgYSByZWZlcmVuY2UgY291bnRlZCB0eXBlLCByZXN1bHRpbmcgaW4gdHdv
IGNvdW50ZXJzIGJlaW5nCisgICAgICAgICAgIGluY3JlbWVudGVkIChvbmUgaW4gdGhlIFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuLCBvbmUgaW4gdGhlIFBhZ2VUaHJvdHRsZXIpLgorCisgICAg
ICAgIEluIHRoZSByZWltcGxlbWVudGF0aW9uOgorICAgICAgICAgLSBhIGNhbGxiYWNrIGlzIHBy
b3ZpZGVkIHZpYSBhIGxhbWJkYSBmdW5jdGlvbiwgd2hpY2ggYWxsb3dzIGZvciBlYXN5IHJldXNl
IHdpdGhvdXQgYSBsb3Qgb2YKKyAgICAgICAgICAgYm9pbGVycGxhdGUgY29kZS4KKyAgICAgICAg
IC0gdGhlIGNvdW50ZXIsIGNhbGxiYWNrIGFuZCBvd25lcnNoaXAgb2YgdGhlIG90aGVyd2lzZSB3
ZWFrbHktb3duZWQgdG9rZW4gaXMgZW5jYXBzdWxhdGVkIHdpdGhpbiB0aGUKKyAgICAgICAgICAg
UmVmQ291bnRlciB0eXBlLgorICAgICAgICAgLSBhIHNpbmdsZSBjb3VudCB3aXRoaW4gUmVmQ291
bnRlcjo6Q291bnRlciBzdG9yZXMgdGhlIGNvdW50ZXIgdmFsdWUsIGFuZCBhbHNvIG1hbmFnZSB0
aGUgbGlmZXRpbWUKKyAgICAgICAgICAgb2YgdGhpcyBvYmplY3QuCisgICAgICAgICAtIHN0YW5k
YXJkIFJlZlB0cnMgYXJlIHVzZWQgdG8gbWFuYWdlIHJlZmVyZW5jZXMgdG8gdGhlIFJlZkNvdW50
ZXI6OkNvdW50ZXIuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgICAgIC0gYWRkZWQgUmVmQ291bnRlci5jcHAvLmgKKyAgICAgICAgKiB3dGYvUmVm
Q291bnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpDb3VudGVyOjpy
ZWYpOgorICAgICAgICAgICAgLSBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuCisgICAgICAgIChXVEY6
OlJlZkNvdW50ZXI6OkNvdW50ZXI6OmRlcmVmKToKKyAgICAgICAgICAgIC0gZGVjcmVtZW50IHRo
ZSBjb3VudGVyLCBhbmQgZGVsZXRlIGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdURjo6UmVmQ291
bnRlcjo6UmVmQ291bnRlcik6CisgICAgICAgICAgICAtIGNyZWF0ZSBhIFJlZkNvdW50ZXI6OkNv
dW50ZXIuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6On5SZWZDb3VudGVyKToKKyAgICAgICAg
ICAgIC0gZWFnZXJseSBkZWxldGUgdGhlIENvdW50ZXIgaWYgaXQgaGFzIG5vIHJlZmVyZW5jZXMs
IG90aGVyd2lzZSBsZXQgaXQgYmUgZGVsZXRlZCBvbiBsYXN0IGRlcmVmLgorICAgICAgICAqIHd0
Zi9SZWZDb3VudGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpDb3VudGVy
OjpDb3VudGVyKToKKyAgICAgICAgICAgIC0gaW5pdGlhbGl6ZSBjb3VudCB0byAwLgorICAgICAg
ICAoV1RGOjpSZWZDb3VudGVyOjpSZWZDb3VudGVyKToKKyAgICAgICAgICAgIC0gdGFrZXMgYSBs
YW1iZGEgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuCisgICAgICAgIChXVEY6
OlJlZkNvdW50ZXI6OmNvdW50ZXIpOgorICAgICAgICAgICAgLSByZWZlcmVuY2UgdGhlIGNvdW50
ZXIgKGFuZCBpbiBkb2luZyBzbyBpbmNyZW1lbnQgdGhlIGNvdW50KS4KKyAgICAgICAgKFdURjo6
UmVmQ291bnRlcjo6dmFsdWUpOgorICAgICAgICAgICAgLSBhY2Nlc3MgdGhlIGN1cnJlbnQgdmFs
dWUgb2YgdGhlIGNvdW50ZXIuCisKIDIwMTQtMTItMDEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggMzItYml0IGJ1aWxkLgpJbmRleDogU291cmNlL1dURi9X
VEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3hw
cm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV1RGL1dURi52Y3hw
cm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDcgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxSQU1TaXplLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHd0ZlxSYW5kb21OdW1iZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cd3RmXFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlx3dGZcUmVmQ291bnRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlx3dGZcUnVuTG9vcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3
dGZcU0hBMS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcU2l4Q2hhcmFj
dGVySGFzaC5jcHAiIC8+CkBAIC0yNTgsNiArMjU5LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0ZlxSZWRCbGFja1RyZWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHd0ZlxSZWZDb3VudGVkLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUmVm
Q291bnRlZExlYWtDb3VudGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
UmVmQ291bnRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFJlZlB0ci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFJldGFpblB0ci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFJ1bkxvb3AuaCIgLz4KSW5kZXg6IFNvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTc2NjExKQorKysgU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
ODAsNiArODAsOCBAQAogCQk4MTM0MDEzODE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM2MTVC
MDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICovOyB9OwogCQk4MTM0MDEzOTE1QjA5MkZEMDAx
RkYwQjggLyogQmFzZTY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggKi87IH07CiAJCTgz
RkJBOTMyMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBU
eXBlQ2FzdHMuaCAqLzsgfTsKKwkJODZGNDZGNjAxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZG
NDZGNUUxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuY3BwICovOyB9OworCQk4NkY0NkY2
MTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNv
dW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkzNEJEMjE4QTFFOEMzMDBE
MEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gKi87IH07CiAJCTkzOTM0QkQ1MThBMUYxNjkwMEQw
RDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5j
cHAgKi87IH07CiAJCTkzQUM5MUE4MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBQzkxQTcxODk0MkZDNDAw
MjQ0OTM5IC8qIExDaGFyLmggKi87IH07CkBAIC0zNzIsNiArMzc0LDggQEAKIAkJODEzNDAxMzYx
NUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCYXNlNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MTM0
MDEzNzE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJhc2U2NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0ZCQTkz
MTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFR5cGVDYXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkY0
NkY1RTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWZDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBTdHJpbmdWaWV3T2Jq
Qy5tbTsgcGF0aCA9IG1hYy9TdHJpbmdWaWV3T2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHJpbmdWaWV3Q0YuY3BwOyBwYXRo
ID0gY2YvU3RyaW5nVmlld0NGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNB
QzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExDaGFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzYsNiAr
ODQwLDggQEAKIAkJCQlBOEE0NzMwMDE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZEFycmF5
LmggKi8sCiAJCQkJQThBNDczMDExNTFBODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRMZWFrQ291
bnRlci5jcHAgKi8sCiAJCQkJQThBNDczMDIxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRM
ZWFrQ291bnRlci5oICovLAorCQkJCTg2RjQ2RjVFMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3Vu
dGVyLmNwcCAqLywKKwkJCQk4NkY0NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5o
ICovLAogCQkJCUE4QTQ3MzAzMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZQdHIuaCAqLywKIAkJCQlB
OEE0NzMwNTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRyLmggKi8sCiAJCQkJMkNERUQwRjEx
ODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwICovLApAQCAtMTE2Niw2ICsxMTcyLDcgQEAK
IAkJCQlBOEE0NzQxQzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzQxRTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyQ0RFRDBGNDE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODZGNDZGNjExQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0Njk0MTkyMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0RjNCMEY3MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRB
cml0aG1ldGljLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDY5NDE5NjE2RUFBRkY4MDAyNEUxNDYg
LyogU2NoZWR1bGVQYWlyLmggaW4gSGVhZGVycyAqLywKQEAgLTEzMzksNiArMTM0Niw3IEBACiAJ
CQkJQThBNDczOUExNTFBODI1QjAwNDEyM0ZGIC8qIENyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDM5MTUxQTgyNUIwMDQxMjNGRiAvKiBD
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3MzlDMTUxQTgyNUIwMDQxMjNGRiAv
KiBDdXJyZW50VGltZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NkY0NkY2MDFBMjg0MEVFMDBD
Q0JGMjIgLyogUmVmQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzM5RTE1MUE4
MjVCMDA0MTIzRkYgLyogRGF0YUxvZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNBMDE1
MUE4MjVCMDA0MTIzRkYgLyogRGF0ZU1hdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDcz
QTIxNTFBODI1QjAwNDEyM0ZGIC8qIERlY2ltYWxOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTc2NjExKQorKysgU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgc2V0KFdU
Rl9IRUFERVJTCiAgICAgUmVmLmgKICAgICBSZWZDb3VudGVkLmgKICAgICBSZWZDb3VudGVkTGVh
a0NvdW50ZXIuaAorICAgIFJlZkNvdW50ZXIuaAogICAgIFJlZlB0ci5oCiAgICAgUmV0YWluUHRy
LmgKICAgICBSdW5Mb29wLmgKQEAgLTE3NSw2ICsxNzYsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAg
ICBSQU1TaXplLmNwcAogICAgIFJhbmRvbU51bWJlci5jcHAKICAgICBSZWZDb3VudGVkTGVha0Nv
dW50ZXIuY3BwCisgICAgUmVmQ291bnRlci5jcHAKICAgICBSdW5Mb29wLmNwcAogICAgIFNIQTEu
Y3BwCiAgICAgU2l4Q2hhcmFjdGVySGFzaC5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZkNv
dW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvUmVmQ291bnRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZWZDb3VudGVyLmgiCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIFJlZkNvdW50
ZXI6OkNvdW50ZXI6OnJlZigpCit7CisgICAgKyttX3ZhbHVlOworCisgICAgaWYgKG1fcmVmQ291
bnRlcikKKyAgICAgICAgbV9yZWZDb3VudGVyLT5tX3ZhbHVlRGlkQ2hhbmdlKCk7Cit9CisKK3Zv
aWQgUmVmQ291bnRlcjo6Q291bnRlcjo6ZGVyZWYoKQoreworICAgIEFTU0VSVChtX3ZhbHVlKTsK
KyAgICAtLW1fdmFsdWU7CisKKyAgICAvLyBUaGUgQ291bnRlciBvYmplY3QgaXMga2VwdCBhbGl2
ZSBzbyBsb25nIGFzIGVpdGhlciB0aGUgUmVmQ291bnRlciB0aGF0IGNyZWF0ZWQgaXQgcmVtYWlu
cworICAgIC8vIGFsbG9jYXRlZCwgb3Igc28gbG9uZyBhcyBpdHMgcmVmZXJlbmNlIGNvdW50IGlz
IG5vbi16ZXJvLgorICAgIC8vIElmIHRoZSBSZWZDb3VudGVyIGhhcyBhbHJlYWR5IGJlZW4gZGVh
bGxvY3RlZCB0aGVuIGRlbGV0ZSB0aGUgQ291bnRlciB3aGVuIGl0cyByZWZlcmVuY2UKKyAgICAv
LyBjb3VudCByZWFjaGVzIHplcm8uCisgICAgaWYgKG1fcmVmQ291bnRlcikKKyAgICAgICAgbV9y
ZWZDb3VudGVyLT5tX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgZWxzZSBpZiAoIW1fdmFsdWUpCisg
ICAgICAgIGRlbGV0ZSB0aGlzOworfQorCitSZWZDb3VudGVyOjpSZWZDb3VudGVyKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiB2YWx1ZURpZENoYW5nZSkKKyAgICA6IG1fdmFsdWVEaWRDaGFuZ2UodmFs
dWVEaWRDaGFuZ2UpCisgICAgLCBtX2NvdW50ZXIobmV3IENvdW50ZXIoKnRoaXMpKQoreworfQor
CitSZWZDb3VudGVyOjp+UmVmQ291bnRlcigpCit7CisgICAgLy8gVGhlIENvdW50ZXIgb2JqZWN0
IGlzIGtlcHQgYWxpdmUgc28gbG9uZyBhcyBlaXRoZXIgdGhlIFJlZkNvdW50ZXIgdGhhdCBjcmVh
dGVkIGl0IHJlbWFpbnMKKyAgICAvLyBhbGxvY2F0ZWQsIG9yIHNvIGxvbmcgYXMgaXRzIHJlZmVy
ZW5jZSBjb3VudCBpcyBub24temVyby4KKyAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGNvdW50IG9m
IHRoZSBDb3VudGVyIGlzIGFscmVhZHkgemVybyB0aGVuIGRlbGV0ZSBpdCBub3csIG90aGVyd2lz
ZQorICAgIC8vIGNsZWFyIGl0cyBtX3JlZkNvdW50ZXIgcG9pbnRlci4KKyAgICBpZiAobV9jb3Vu
dGVyLT5tX3ZhbHVlKQorICAgICAgICBtX2NvdW50ZXItPm1fcmVmQ291bnRlciA9IG51bGxwdHI7
CisgICAgZWxzZQorICAgICAgICBkZWxldGUgbV9jb3VudGVyOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dU
Ri93dGYvUmVmQ291bnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFJlZkNvdW50ZXJfaAorI2RlZmluZSBSZWZDb3VudGVyX2gKKworI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUmVmQ291bnRlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVmQ291bnRlcik7CitwdWJsaWM6CisgICAgY2xh
c3MgQ291bnRlciB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvdW50ZXIpOworICAg
IHB1YmxpYzoKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVmKCk7CisgICAgICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlcmVmKCk7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgUmVmQ291bnRlcjsKKworICAgICAgICBDb3VudGVyKFJlZkNvdW50ZXIm
IHJlZkNvdW50ZXIpCisgICAgICAgICAgICA6IG1fcmVmQ291bnRlcigmcmVmQ291bnRlcikKKyAg
ICAgICAgICAgICwgbV92YWx1ZSgwKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBS
ZWZDb3VudGVyKiBtX3JlZkNvdW50ZXI7CisgICAgICAgIHVuc2lnbmVkIG1fdmFsdWU7CisgICAg
fTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWZDb3VudGVyKHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiA9IFtdKCkgeyB9KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflJlZkNvdW50ZXIoKTsK
KworICAgIFBhc3NSZWY8Q291bnRlcj4gY291bnRlcigpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gKm1fY291bnRlcjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCB2YWx1ZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9jb3VudGVyLT5tX3ZhbHVlOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV92YWx1ZURpZENoYW5nZTsKKyAgICBDb3Vu
dGVyKiBtX2NvdW50ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpS
ZWZDb3VudGVyOworCisjZW5kaWYgLy8gUmVmQ291bnRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw3NCBAQAorMjAxNC0xMi0wMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNs
b3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSBQYWdlQWN0aXZpdHlBc3NlcnRp
b25Ub2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM5MTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gaXMgYSBSQUlJIG1lY2hhbmlzbSBpbXBsZW1lbnRp
bmcgYSBjb3VudGVyLCB1c2VkIGJ5IFBhZ2VUaHJvdHRsZXIKKyAgICAgICAgdG8gY291bnQgdXNl
ciB2aXNpYmxlIGFjdGl2aXR5IGluIHByb2dyZXNzIG9uIHRoZSBwYWdlIChjdXJyZW50bHkgcGFn
ZSBsb2FkIGFuZCBtZWRpYSBwbGF5YmFjaykuCisgICAgICAgIFVzZSBvZiBhbiBSQUlJIHR5cGUg
aXMgcHJldmVudHMgYSBudW1iZXIgb2YgcG9zc2libGUgZXJyb3JzLCBpbmNsdWRpbmcgZG91Ymxl
IGNvdW50aW5nIGEgc2luZ2xlCisgICAgICAgIG1lZGlhIGVsZW1lbnQsIG9yIGZhaWxpbmcgdG8g
ZGVjcmVtZW50IHRoZSBjb3VudCBhZnRlciBhIG1lZGlhIGVsZW1lbnQgaGFzIGJlZW4gZGVhbGxv
Y2F0ZWQuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaGFzIGEgbnVtYmVy
IG9mIGRyYXdiYWNrcyB0aGF0IGhhdmUgYmVlbiBhZGRyZXNzZWQgYnkgdGhpcyByZWZhY3Rvcmlu
ZzoKKyAgICAgICAgIC0gc3BlY2lmaWMgdG8gc2luZ2xlIHVzZSBpbiBQYWdlVGhyb3R0bGVyIGNs
YXNzIC0gbm90IHJldXNhYmxlLgorICAgICAgICAgLSBpbmNvbXBsZXRlIGVuY2Fwc3VsYXRpb24g
LSB0aGUgY291bnRlciBhbmQgV2Vha1B0ckZhY3RvcnkgdGhhdCBjb21wcmlzZSB0aGUgY3VycmVu
dCBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICBhcmUgbm90IGVuY2Fwc3VsYXRlZCAoYXJlIGlu
IHRoZSBjbGllbnQgdHlwZSwgUGFnZVRocm90dGxlcikuCisgICAgICAgICAtIHRva2VucyBhcmUg
bm90IHNoYXJlZCAtIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIGluc3RhbmNlcyBhcmUgbWFu
YWdlZCBieSBzdGQ6OnVuaXF1ZSwgZXZlcnkKKyAgICAgICAgICAgaW5jcmVtZW50IHJlcXVpcmVz
IGFuIG9iamVjdCBhbGxvY2F0aW9uLgorICAgICAgICAgLSByZWR1bmRhbmN5IC0gdGhlIGN1cnJl
bnQgaW1wbGVtZW50YXRpb24gdXNlcyBhIFdlYWtQdHIgdG8gc2FmZWx5IHJlZmVyZW5jZSB0aGUg
UGFnZVRocm90dGxlciwgdGhpcworICAgICAgICAgICBpcyBpbnRlcm5hbGx5IGltcGxlbWVudGVk
IHVzaW5nIGEgcmVmZXJlbmNlIGNvdW50ZWQgdHlwZSwgcmVzdWx0aW5nIGluIHR3byBjb3VudGVy
cyBiZWluZworICAgICAgICAgICBpbmNyZW1lbnRlZCAob25lIGluIHRoZSBQYWdlQWN0aXZpdHlB
c3NlcnRpb25Ub2tlbiwgb25lIGluIHRoZSBQYWdlVGhyb3R0bGVyKS4KKworICAgICAgICBJbiB0
aGUgcmVpbXBsZW1lbnRhdGlvbjoKKyAgICAgICAgIC0gYSBjYWxsYmFjayBpcyBwcm92aWRlZCB2
aWEgYSBsYW1iZGEgZnVuY3Rpb24sIHdoaWNoIGFsbG93cyBmb3IgZWFzeSByZXVzZSB3aXRob3V0
IGEgbG90IG9mCisgICAgICAgICAgIGJvaWxlcnBsYXRlIGNvZGUuCisgICAgICAgICAtIHRoZSBj
b3VudGVyLCBjYWxsYmFjayBhbmQgb3duZXJzaGlwIG9mIHRoZSBvdGhlcndpc2Ugd2Vha2x5LW93
bmVkIHRva2VuIGlzIGVuY2Fwc3VsYXRlZCB3aXRoaW4gdGhlCisgICAgICAgICAgIFJlZkNvdW50
ZXIgdHlwZS4KKyAgICAgICAgIC0gYSBzaW5nbGUgY291bnQgd2l0aGluIFJlZkNvdW50ZXI6OkNv
dW50ZXIgc3RvcmVzIHRoZSBjb3VudGVyIHZhbHVlLCBhbmQgYWxzbyBtYW5hZ2UgdGhlIGxpZmV0
aW1lCisgICAgICAgICAgIG9mIHRoaXMgb2JqZWN0LgorICAgICAgICAgLSBzdGFuZGFyZCBSZWZQ
dHJzIGFyZSB1c2VkIHRvIG1hbmFnZSByZWZlcmVuY2VzIHRvIHRoZSBSZWZDb3VudGVyOjpDb3Vu
dGVyLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAgICAgLSByZW1vdmVkIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcC8uaAorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICAgICAtIHJlbW92ZWQg
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAgICAgLSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW4+IC0+IFJlZlB0cjxSZWZDb3VudGVyOjpDb3VudGVyPgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICAgICAtIHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNz
ZXJ0aW9uVG9rZW4uaAorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAg
ICAgLSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFJlZlB0
cjxSZWZDb3VudGVyOjpDb3VudGVyPgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgICAgICAtIHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4u
aAorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAgICAgLSBy
ZW1vdmVkIGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuCisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tl
bi5oCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgICAgIC0gcmVtb3Zl
ZCBQYWdlKiBwYXJhbWV0ZXIgdG8gUGFnZVRocm90dGxlcgorICAgICAgICAqIHBhZ2UvUGFnZS5o
OgorICAgICAgICAgICAgLSByZW1vdmVkIGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2Vu
CisgICAgICAgICogcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oOiBSZW1vdmVkLgor
ICAgICAgICAgICAgLSByZW1vdmVkIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcC8uaAor
ICAgICAgICAqIHBhZ2UvUGFnZVRocm90dGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
VGhyb3R0bGVyOjpQYWdlVGhyb3R0bGVyKToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBtX3BhZ2Us
IG1fd2Vha1B0ckZhY3RvcnksIG1fYWN0aXZpdHlDb3VudDsgYWRkZWQgbV9wYWdlQWN0aXZpdHlD
b3VudGVyLgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6bWVkaWFBY3Rpdml0eVRv
a2VuKToKKyAgICAgICAgICAgIC0gc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlv
blRva2VuPiAtPiBQYXNzUmVmUHRyPFJlZkNvdW50ZXI6OkNvdW50ZXI+CisgICAgICAgIChXZWJD
b3JlOjpQYWdlVGhyb3R0bGVyOjpwYWdlTG9hZEFjdGl2aXR5VG9rZW4pOgorICAgICAgICAgICAg
LSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFBhc3NSZWZQ
dHI8UmVmQ291bnRlcjo6Q291bnRlcj4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6
OnBhZ2VBY3Rpdml0eUNvdW50ZXJWYWx1ZURpZENoYW5nZSk6CisgICAgICAgICAgICAtIG1lcmdl
ZCBmdW5jdGlvbmFsaXR5IG9mIGluY3JlbWVudEFjdGl2aXR5Q291bnQvZGVjcmVtZW50QWN0aXZp
dHlDb3VudAorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6aW5jcmVtZW50QWN0aXZp
dHlDb3VudCk6IERlbGV0ZWQuCisgICAgICAgICAgICAtIHNlZSBwYWdlQWN0aXZpdHlDb3VudGVy
VmFsdWVEaWRDaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OmRlY3JlbWVu
dEFjdGl2aXR5Q291bnQpOiBEZWxldGVkLgorICAgICAgICAgICAgLSBzZWUgcGFnZUFjdGl2aXR5
Q291bnRlclZhbHVlRGlkQ2hhbmdlCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0bGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjp3ZWFrUHRyKTogRGVsZXRlZC4KKyAgICAg
ICAgICAgIC0gbm8gbG9uZ2VyIHJlcXVpcmVkOyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm93IGVu
Y2Fwc3VsYXRlZCB3aXRoaW4gUmVmQ291bnRlci4KKwogMjAxNC0xMi0wMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRha2UgaW50byBjb25zaWRlcmF0aW9uIGNh
bnZhcyBkcmF3aW5nIGZvciB0aHJvdHRsaW5nIERPTSB0aW1lcnMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTkxMCw3ICsxOTEwLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKICAgICBwYWdlL09yaWdpbkFjY2Vzc0VudHJ5
LmNwcAogICAgIHBhZ2UvUGFnZS5jcHAKLSAgICBwYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRv
a2VuLmNwcAogICAgIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCiAgICAgcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5jcHAKICAgICBwYWdlL1BhZ2VHcm91cC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTc2NjEx
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNzE4OSw3ICs3MTg5LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhZ2VcTmF2aWdhdG9yQmFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwYWdlXE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhZ2VcUGFnZS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhZ2VcUGFnZUNvbmZpZ3VyYXRpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGFnZVxQYWdlQ29uc29sZUNsaWVudC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwYWdlXFBhZ2VHcm91cC5jcHAiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzY2MTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTU1OTUsNyArNTU5NSw2IEBACiAJCUNDQzJCNTE0MTVGNjEzMDYwMDQ4Q0RE
NiAvKiBEZXZpY2VDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENDQzJCNTEwMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQ0MyQjUxNTE1
RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMTE1RjYxMzA2MDA0OENERDYgLyog
RGV2aWNlQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUNDQzJCNTE2MTVGNjEzMDYwMDQ4Q0RENiAv
KiBEZXZpY2VDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDQ0MyQjUxMjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUNEMDgy
ODVDMTc1NzI1MEYwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA4Mjg1QTE3NTcy
NTA4MDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwICovOyB9OwogCQlD
RDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1
MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgKi87IH07CiAJCUNEMTI3REVEMTRG
MzA5N0QwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVCMTRGMzA5NzkwMEU4NDc3
OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4
NDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTMwNTUsOCArMTMwNTQsNiBAQAogCQlDQ0MyQjUxMDE1RjYx
MzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERldmljZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQ0My
QjUxMTE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VDb250cm9sbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlQ29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDA4Mjg1QTE3NTcyNTA4MDBF
QzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDRDA4Mjg1QjE3NTcyNTA4MDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9u
VG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwRUVFMEExNDc0M0UzNDAwM0VBRkEyIC8qIEF1
ZGlvRGVzdGluYXRpb25JT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVk
aW9EZXN0aW5hdGlvbklPUy5oOyBwYXRoID0gaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1
ZGlvRGVzdGluYXRpb25JT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA7IHBhdGggPSBpb3MvQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3REVBMTRGMzA5NzkwMEU4
NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTY2NzcsOCArMTY2NzQsNiBAQAogCQkJCTAwMTQ2Mjg5MTAzQ0QxREUwMDBC
MjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5oICovLAogCQkJCTY1RkVBODY4MDk4MzNBREUwMEJF
RDRBQiAvKiBQYWdlLmNwcCAqLywKIAkJCQk2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFn
ZS5oICovLAotCQkJCUNEMDgyODVBMTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbi5jcHAgKi8sCi0JCQkJQ0QwODI4NUIxNzU3MjUwODAwRUM1RkI3IC8qIFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuLmggKi8sCiAJCQkJQ0Q1RTVCNjAxQTE1RjE1NjAwMEM2MDlF
IC8qIFBhZ2VDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQlDRDVFNUI1RTFBMTVDRTU0MDAwQzYw
OUUgLyogUGFnZUNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQlEQUFDQjNEOTE2RjI0MTY0MDA2NjYx
MzUgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwICovLApAQCAtMjkxMTgsNyArMjkxMTMsNiBAQAog
CQkJCUZENTgxRkFFMTUyMEY5MUYwMDNBN0E3NSAvKiBPc2NpbGxhdG9yTm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTBENTczNjBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlDRDA4Mjg1QzE3NTcyNTBGMDBFQzVGQjcgLyogUGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3N0U3NzYwQkY0
MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzgyMDg5
MjE0N0QzNUY5MDAxMEJDMDYgLyogUGFnZUNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlEQUVEMjAzMDE2RjI0NDJCMDA3MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE3NjYxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDYgQEAKICNpbmNsdWRlICJNZWRp
YVJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlVGhyb3R0
bGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTc2NjExKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNv
bnRyb2xsZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUg
IlBhZ2VUaHJvdHRsZXIuaCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICNpbmNsdWRlICJB
dWRpb1RyYWNrLmgiCkBAIC02NSw3ICs2Niw2IEBAIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKIGNs
YXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdDsKIGNsYXNzIE1lZGlh
RXJyb3I7Ci1jbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjsKIGNsYXNzIFRpbWVSYW5n
ZXM7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIGNsYXNzIE1lZGlhS2V5czsKQEAg
LTg5OSw3ICs4OTksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SFRNTE1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBtX2FjdGl2aXR5VG9rZW47CisgICAgUGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW4gbV9hY3Rpdml0eVRva2VuOwogICAgIHNpemVfdCBtX3JlcG9ydGVk
RXh0cmFNZW1vcnlDb3N0OwogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTc2NjExKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNiBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9y
eUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2Vy
dGlvblRva2VuLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90
dGxlci5oIgogI2luY2x1ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5j
bHVkZSAiTWl4ZWRDb250ZW50Q2hlY2tlci5oIgorI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZVR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKQEAgLTY2LDcgKzY3LDYg
QEAgY2xhc3MgSWNvbkNvbnRyb2xsZXI7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3Mg
TmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBQYWdlOwotY2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW47CiBjbGFzcyBQb2xpY3lDaGVja2VyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTQ0Myw3ICs0NDMsNyBAQCBwcml2YXRlOgogCiAgICAg
VVJMIG1fcHJldmlvdXNVUkw7CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3JlcXVlc3RlZEhp
c3RvcnlJdGVtOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tl
bj4gbV9hY3Rpdml0eUFzc2VydGlvbjsKKyAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBt
X2FjdGl2aXR5QXNzZXJ0aW9uOwogfTsKIAogLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkg
Y3JlYXRlV2luZG93KCkgaW4gSlNET01XaW5kb3dCYXNlLmNwcCwgZm9yIGV4YW1wbGUsIGZvcgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUg
IlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMTc2NjExKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIERvY3VtZW50OwotY2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyIGZpbmFsIDogcHVi
bGljIFJlc291cmNlTG9hZGVyIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTc2
NjExKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNyArNTUsNiBAQAogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCi0jaW5j
bHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUu
aCIKICNpbmNsdWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xl
Q2xpZW50LmgiCkBAIC0xOTUsNyArMTk0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlv
biYgcGFnZUNvbmZpZwogI2VuZGlmCiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdl
Q29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQpCiAgICAgLCBtX3NjcmlwdGVkQW5p
bWF0aW9uc1N1c3BlbmRlZChmYWxzZSkKLSAgICAsIG1fcGFnZVRocm90dGxlcigqdGhpcywgbV92
aWV3U3RhdGUpCisgICAgLCBtX3BhZ2VUaHJvdHRsZXIobV92aWV3U3RhdGUpCiAgICAgLCBtX2Nv
bnNvbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQog
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxl
KHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtODAsNyArODAsNiBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFz
cyBJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgTWFpbkZyYW1lOwogY2xhc3MgTWVkaWFDYW5T
dGFydExpc3RlbmVyOwotY2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQ
YWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURl
YnVnZ2FibGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlv
blRva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuLmNwcAkocmV2aXNpb24gMTc2NjExKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgotCi0jaW5jbHVkZSAiUGFnZVRocm90dGxlci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOjpQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbihQYWdlVGhyb3R0bGVyJiB0aHJvdHRsZXIpCi0gICAg
OiBtX3Rocm90dGxlcih0aHJvdHRsZXIud2Vha1B0cigpKQotewotICAgIHRocm90dGxlci5pbmNy
ZW1lbnRBY3Rpdml0eUNvdW50KCk7Ci19Ci0KLVBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOjp+
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4oKQotewotICAgIGlmIChQYWdlVGhyb3R0bGVyKiB0
aHJvdHRsZXIgPSBtX3Rocm90dGxlci5nZXQoKSkKLSAgICAgICAgdGhyb3R0bGVyLT5kZWNyZW1l
bnRBY3Rpdml0eUNvdW50KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5o
CShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFz
c2VydGlvblRva2VuLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW5faAotI2RlZmluZSBQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbl9oCi0KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBh
Z2VUaHJvdHRsZXI7Ci0KLWNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbik7Ci1wdWJsaWM6
Ci0gICAgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4oUGFnZVRocm90dGxlciYpOwotICAgIH5Q
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbigpOwotCi1wcml2YXRlOgotICAgIFdlYWtQdHI8UGFn
ZVRocm90dGxlcj4gbV90aHJvdHRsZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbl9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVRocm90dGxlci5jcHAJKHJldmlzaW9uIDE3NjYxMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVRocm90dGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE2ICsyNiwx
MiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKIAot
I2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFnZVRocm90dGxlcjo6UGFnZVRocm90dGxlcihQYWdlJiBwYWdlLCBWaWV3U3Rh
dGU6OkZsYWdzIHZpZXdTdGF0ZSkKLSAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV92aWV3U3Rh
dGUodmlld1N0YXRlKQotICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQorUGFnZVRocm90dGxl
cjo6UGFnZVRocm90dGxlcihWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKKyAgICA6IG1fdmll
d1N0YXRlKHZpZXdTdGF0ZSkKICAgICAsIG1faHlzdGVyZXNpcygqdGhpcykKLSAgICAsIG1fYWN0
aXZpdHlDb3VudCgwKQorICAgICwgbV9wYWdlQWN0aXZpdHlDb3VudGVyKFt0aGlzXSgpIHsgcGFn
ZUFjdGl2aXR5Q291bnRlclZhbHVlRGlkQ2hhbmdlKCk7IH0pCiB7CiAgICAgdXBkYXRlVXNlckFj
dGl2aXR5KCk7CiB9CkBAIC00NywzNiArNDMsMjUgQEAgdm9pZCBQYWdlVGhyb3R0bGVyOjpjcmVh
dGVVc2VyQWN0aXZpdHkoKQogICAgIHVwZGF0ZVVzZXJBY3Rpdml0eSgpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IFBhZ2VUaHJvdHRsZXI6Om1lZGlh
QWN0aXZpdHlUb2tlbigpCitQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBQYWdlVGhyb3R0bGVy
OjptZWRpYUFjdGl2aXR5VG9rZW4oKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuPigqdGhpcyk7CisgICAgcmV0dXJuIG1fcGFnZUFjdGl2
aXR5Q291bnRlci5jb3VudGVyKCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlB
c3NlcnRpb25Ub2tlbj4gUGFnZVRocm90dGxlcjo6cGFnZUxvYWRBY3Rpdml0eVRva2VuKCkKK1Bh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuIFBhZ2VUaHJvdHRsZXI6OnBhZ2VMb2FkQWN0aXZpdHlU
b2tlbigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW4+KCp0aGlzKTsKKyAgICByZXR1cm4gbV9wYWdlQWN0aXZpdHlDb3VudGVyLmNvdW50
ZXIoKTsKIH0KIAotdm9pZCBQYWdlVGhyb3R0bGVyOjppbmNyZW1lbnRBY3Rpdml0eUNvdW50KCkK
K3ZvaWQgUGFnZVRocm90dGxlcjo6cGFnZUFjdGl2aXR5Q291bnRlclZhbHVlRGlkQ2hhbmdlKCkK
IHsKLSAgICAvLyBJZiBtX2FjdGl2aXR5Q291bnQgaXMgbm9uemVybywgc3RhdGUgbXVzdCBiZSBT
dGFydGVkOyBpZiBtX2FjdGl2aXR5Q291bnQgaXMgemVybywgc3RhdGUgbWF5IGJlIFdhaXRpbmcg
b3IgU3RvcHBlZC4KLSAgICBBU1NFUlQoISFtX2FjdGl2aXR5Q291bnQgPT0gKG1faHlzdGVyZXNp
cy5zdGF0ZSgpID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCkpOwotCi0gICAgaWYgKCFtX2Fj
dGl2aXR5Q291bnQrKykKKyAgICBpZiAobV9wYWdlQWN0aXZpdHlDb3VudGVyLnZhbHVlKCkpCiAg
ICAgICAgIG1faHlzdGVyZXNpcy5zdGFydCgpOwotCi0gICAgQVNTRVJUKG1fYWN0aXZpdHlDb3Vu
dCAmJiBtX2h5c3RlcmVzaXMuc3RhdGUoKSA9PSBIeXN0ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQpOwot
fQotCi12b2lkIFBhZ2VUaHJvdHRsZXI6OmRlY3JlbWVudEFjdGl2aXR5Q291bnQoKQotewotICAg
IEFTU0VSVChtX2FjdGl2aXR5Q291bnQgJiYgbV9oeXN0ZXJlc2lzLnN0YXRlKCkgPT0gSHlzdGVy
ZXNpc1N0YXRlOjpTdGFydGVkKTsKLQotICAgIGlmICghLS1tX2FjdGl2aXR5Q291bnQpCisgICAg
ZWxzZQogICAgICAgICBtX2h5c3RlcmVzaXMuc3RvcCgpOwogCi0gICAgLy8gSWYgbV9hY3Rpdml0
eUNvdW50IGlzIG5vbnplcm8sIHN0YXRlIG11c3QgYmUgU3RhcnRlZDsgaWYgbV9hY3Rpdml0eUNv
dW50IGlzIHplcm8sIHN0YXRlIG1heSBiZSBXYWl0aW5nIG9yIFN0b3BwZWQuCi0gICAgQVNTRVJU
KCEhbV9hY3Rpdml0eUNvdW50ID09IChtX2h5c3RlcmVzaXMuc3RhdGUoKSA9PSBIeXN0ZXJlc2lz
U3RhdGU6OlN0YXJ0ZWQpKTsKKyAgICAvLyBJZiB0aGUgY291bnRlciBpcyBub256ZXJvLCBzdGF0
ZSBtdXN0IGJlIFN0YXJ0ZWQ7IGlmIHRoZSBjb3VudGVyIGlzIHplcm8sIHN0YXRlIG1heSBiZSBX
YWl0aW5nIG9yIFN0b3BwZWQuCisgICAgQVNTRVJUKCEhbV9wYWdlQWN0aXZpdHlDb3VudGVyLnZh
bHVlKCkgPT0gKG1faHlzdGVyZXNpcy5zdGF0ZSgpID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRl
ZCkpOwogfQogCiB2b2lkIFBhZ2VUaHJvdHRsZXI6OnVwZGF0ZVVzZXJBY3Rpdml0eSgpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkocmV2aXNpb24gMTc2NjExKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDMx
ICszMCwyNyBAQAogCiAjaW5jbHVkZSAiVXNlckFjdGl2aXR5LmgiCiAjaW5jbHVkZSAiVmlld1N0
YXRlLmgiCi0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBhZ2U7Ci1jbGFzcyBQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbjsKK3R5cGVkZWYgUmVmUHRyPFJlZkNvdW50ZXI6OkNvdW50ZXI+
IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwogCiBjbGFzcyBQYWdlVGhyb3R0bGVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlVGhyb3R0bGVyKFBh
Z2UmLCBWaWV3U3RhdGU6OkZsYWdzKTsKKyAgICBQYWdlVGhyb3R0bGVyKFZpZXdTdGF0ZTo6Rmxh
Z3MpOwogCiAgICAgdm9pZCBjcmVhdGVVc2VyQWN0aXZpdHkoKTsKICAgICB2b2lkIHNldFZpZXdT
dGF0ZShWaWV3U3RhdGU6OkZsYWdzKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnB1dCgp
IHsgbV9oeXN0ZXJlc2lzLmltcHVsc2UoKTsgfQogICAgIHZvaWQgcGx1Z2luRGlkRXZhbHVhdGVX
aGlsZUF1ZGlvSXNQbGF5aW5nKCkgeyBtX2h5c3RlcmVzaXMuaW1wdWxzZSgpOyB9Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBtZWRpYUFjdGl2aXR5VG9r
ZW4oKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IHBh
Z2VMb2FkQWN0aXZpdHlUb2tlbigpOworICAgIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIG1l
ZGlhQWN0aXZpdHlUb2tlbigpOworICAgIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIHBhZ2VM
b2FkQWN0aXZpdHlUb2tlbigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbjsKLSAgICBXZWFrUHRyPFBhZ2VUaHJvdHRsZXI+IHdlYWtQdHIo
KSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQotICAgIHZvaWQg
aW5jcmVtZW50QWN0aXZpdHlDb3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50QWN0aXZpdHlDb3Vu
dCgpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5Q291bnRlclZhbHVlRGlkQ2hhbmdlKCk7CiAKICAg
ICB2b2lkIHVwZGF0ZVVzZXJBY3Rpdml0eSgpOwogCkBAIC02MiwxMiArNTgsMTAgQEAgcHJpdmF0
ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0ZWQoKTsKICAgICB2b2lkIHN0b3BwZWQo
KTsKIAotICAgIFBhZ2UmIG1fcGFnZTsKICAgICBWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRl
OwotICAgIFdlYWtQdHJGYWN0b3J5PFBhZ2VUaHJvdHRsZXI+IG1fd2Vha1B0ckZhY3Rvcnk7CiAg
ICAgSHlzdGVyZXNpc0FjdGl2aXR5PFBhZ2VUaHJvdHRsZXI+IG1faHlzdGVyZXNpczsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VXNlckFjdGl2aXR5OjpJbXBsPiBtX2FjdGl2aXR5OwotICAgIHNpemVf
dCBtX2FjdGl2aXR5Q291bnQ7CisgICAgUmVmQ291bnRlciBtX3BhZ2VBY3Rpdml0eUNvdW50ZXI7
CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242421</attachid>
            <date>2014-12-02 09:52:32 -0800</date>
            <delta_ts>2014-12-02 09:57:04 -0800</delta_ts>
            <desc>With API test</desc>
            <filename>139106.4.patch</filename>
            <type>text/plain</type>
            <size>50007</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzY1NzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE0LTEyLTAxICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmFsaXplIFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkxMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBpcyBhIFJBSUkgbWVjaGFuaXNtIGlt
cGxlbWVudGluZyBhIGNvdW50ZXIsIHVzZWQgYnkgUGFnZVRocm90dGxlcgorICAgICAgICB0byBj
b3VudCB1c2VyIHZpc2libGUgYWN0aXZpdHkgaW4gcHJvZ3Jlc3Mgb24gdGhlIHBhZ2UgKGN1cnJl
bnRseSBwYWdlIGxvYWQgYW5kIG1lZGlhIHBsYXliYWNrKS4KKyAgICAgICAgVXNlIG9mIGFuIFJB
SUkgdHlwZSBpcyBwcmV2ZW50cyBhIG51bWJlciBvZiBwb3NzaWJsZSBlcnJvcnMsIGluY2x1ZGlu
ZyBkb3VibGUgY291bnRpbmcgYSBzaW5nbGUKKyAgICAgICAgbWVkaWEgZWxlbWVudCwgb3IgZmFp
bGluZyB0byBkZWNyZW1lbnQgdGhlIGNvdW50IGFmdGVyIGEgbWVkaWEgZWxlbWVudCBoYXMgYmVl
biBkZWFsbG9jYXRlZC4KKworICAgICAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBoYXMg
YSBudW1iZXIgb2YgZHJhd2JhY2tzIHRoYXQgaGF2ZSBiZWVuIGFkZHJlc3NlZCBieSB0aGlzIHJl
ZmFjdG9yaW5nOgorICAgICAgICAgLSBzcGVjaWZpYyB0byBzaW5nbGUgdXNlIGluIFBhZ2VUaHJv
dHRsZXIgY2xhc3MgLSBub3QgcmV1c2FibGUuCisgICAgICAgICAtIGluY29tcGxldGUgZW5jYXBz
dWxhdGlvbiAtIHRoZSBjb3VudGVyIGFuZCBXZWFrUHRyRmFjdG9yeSB0aGF0IGNvbXByaXNlIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgIGFyZSBub3QgZW5jYXBzdWxhdGVk
IChhcmUgaW4gdGhlIGNsaWVudCB0eXBlLCBQYWdlVGhyb3R0bGVyKS4KKyAgICAgICAgIC0gdG9r
ZW5zIGFyZSBub3Qgc2hhcmVkIC0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gaW5zdGFuY2Vz
IGFyZSBtYW5hZ2VkIGJ5IHN0ZDo6dW5pcXVlLCBldmVyeQorICAgICAgICAgICBpbmNyZW1lbnQg
cmVxdWlyZXMgYW4gb2JqZWN0IGFsbG9jYXRpb24uCisgICAgICAgICAtIHJlZHVuZGFuY3kgLSB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgV2Vha1B0ciB0byBzYWZlbHkgcmVmZXJl
bmNlIHRoZSBQYWdlVGhyb3R0bGVyLCB0aGlzCisgICAgICAgICAgIGlzIGludGVybmFsbHkgaW1w
bGVtZW50ZWQgdXNpbmcgYSByZWZlcmVuY2UgY291bnRlZCB0eXBlLCByZXN1bHRpbmcgaW4gdHdv
IGNvdW50ZXJzIGJlaW5nCisgICAgICAgICAgIGluY3JlbWVudGVkIChvbmUgaW4gdGhlIFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuLCBvbmUgaW4gdGhlIFBhZ2VUaHJvdHRsZXIpLgorCisgICAg
ICAgIEluIHRoZSByZWltcGxlbWVudGF0aW9uOgorICAgICAgICAgLSBhIGNhbGxiYWNrIGlzIHBy
b3ZpZGVkIHZpYSBhIGxhbWJkYSBmdW5jdGlvbiwgd2hpY2ggYWxsb3dzIGZvciBlYXN5IHJldXNl
IHdpdGhvdXQgYSBsb3Qgb2YKKyAgICAgICAgICAgYm9pbGVycGxhdGUgY29kZS4KKyAgICAgICAg
IC0gdGhlIGNvdW50ZXIsIGNhbGxiYWNrIGFuZCBvd25lcnNoaXAgb2YgdGhlIG90aGVyd2lzZSB3
ZWFrbHktb3duZWQgdG9rZW4gaXMgZW5jYXBzdWxhdGVkIHdpdGhpbiB0aGUKKyAgICAgICAgICAg
UmVmQ291bnRlciB0eXBlLgorICAgICAgICAgLSBhIHNpbmdsZSBjb3VudCB3aXRoaW4gUmVmQ291
bnRlcjo6Q291bnQgc3RvcmVzIHRoZSBjb3VudGVyIHZhbHVlLCBhbmQgYWxzbyBtYW5hZ2UgdGhl
IGxpZmV0aW1lCisgICAgICAgICAgIG9mIHRoaXMgb2JqZWN0LgorICAgICAgICAgLSBzdGFuZGFy
ZCBSZWZQdHJzIGFyZSB1c2VkIHRvIG1hbmFnZSByZWZlcmVuY2VzIHRvIHRoZSBSZWZDb3VudGVy
OjpDb3VudC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAgICAgLSBhZGRlZCBSZWZDb3VudGVyLmNwcC8uaAorICAgICAgICAqIHd0Zi9SZWZDb3Vu
dGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6OkNvdW50OjpyZWYpOgor
ICAgICAgICAgICAgLSBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuCisgICAgICAgIChXVEY6OlJlZkNv
dW50ZXI6OkNvdW50OjpkZXJlZik6CisgICAgICAgICAgICAtIGRlY3JlbWVudCB0aGUgY291bnRl
ciwgYW5kIGRlbGV0ZSBhcyBuZWNlc3NhcnkuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6OlJl
ZkNvdW50ZXIpOgorICAgICAgICAgICAgLSBjcmVhdGUgYSBSZWZDb3VudGVyOjpDb3VudC4KKyAg
ICAgICAgKFdURjo6UmVmQ291bnRlcjo6flJlZkNvdW50ZXIpOgorICAgICAgICAgICAgLSBlYWdl
cmx5IGRlbGV0ZSB0aGUgQ291bnRlciBpZiBpdCBoYXMgbm8gcmVmZXJlbmNlcywgb3RoZXJ3aXNl
IGxldCBpdCBiZSBkZWxldGVkIG9uIGxhc3QgZGVyZWYuCisgICAgICAgICogd3RmL1JlZkNvdW50
ZXIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6OkNvdW50OjpDb3VudCk6Cisg
ICAgICAgICAgICAtIGluaXRpYWxpemUgY291bnQgdG8gMC4KKyAgICAgICAgKFdURjo6UmVmQ291
bnRlcjo6UmVmQ291bnRlcik6CisgICAgICAgICAgICAtIHRha2VzIGEgbGFtYmRhIHRvIGJlIGNh
bGxlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpj
b3VudCk6CisgICAgICAgICAgICAtIHJlZmVyZW5jZSB0aGUgY291bnRlciAoYW5kIGluIGRvaW5n
IHNvIGluY3JlbWVudCB0aGUgY291bnQpLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjp2YWx1
ZSk6CisgICAgICAgICAgICAtIGFjY2VzcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY291bnRl
ci4KKwogMjAxNC0xMS0yMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSB0aGUgVGltZXIgcGFyYW1ldGVycyBmcm9tIHRpbWVyIGNhbGxiYWNr
cwpJbmRleDogU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxNzY1MDcpCisr
KyBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsNiArMTIwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxSQU1TaXplLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxSYW5kb21OdW1iZXIuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFJlZkNvdW50ZWRMZWFrQ291bnRlci5j
cHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcUmVmQ291bnRlci5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcUnVuTG9vcC5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcU0hBMS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlx3dGZcU2l4Q2hhcmFjdGVySGFzaC5jcHAiIC8+CkBAIC0yNTcsNiArMjU4LDcgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxSZWRCbGFja1RyZWUuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxSZWZDb3VudGVkLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcUmVmQ291bnRlZExlYWtDb3VudGVyLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3dGZcUmVmQ291bnRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cd3RmXFJlZlB0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3Rm
XFJldGFpblB0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFJ1bkxvb3Au
aCIgLz4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQAogCQk4MTM0MDEzODE1QjA5MkZEMDAx
RkYwQjggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICovOyB9Owog
CQk4MTM0MDEzOTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyog
QmFzZTY0LmggKi87IH07CiAJCTgzRkJBOTMyMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkJBOTMx
MTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLzsgfTsKKwkJODZGNDZGNjAxQTI4NDBF
RTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZGNDZGNUUxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIu
Y3BwICovOyB9OworCQk4NkY0NkY2MTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGNDZGNUYxQTI4
NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5n
Vmlld09iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gKi87IH07CiAJ
CTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDQxOEExRjE2OTAwRDBE
NkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi87IH07CiAJCTkzQUM5MUE4MTg5NDJGQzQwMDI0NDkz
OSAvKiBMQ2hhci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggKi87IH07CkBAIC0zNzEsNiAr
MzczLDggQEAKIAkJODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NkY0NkY1RTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZDb3VudGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8q
IFJlZkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291bnRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2
QTEgLyogU3RyaW5nVmlld09iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBTdHJpbmdWaWV3T2JqQy5tbTsgcGF0aCA9IG1hYy9TdHJpbmdWaWV3T2JqQy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8q
IFN0cmluZ1ZpZXdDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBT
dHJpbmdWaWV3Q0YuY3BwOyBwYXRoID0gY2YvU3RyaW5nVmlld0NGLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExDaGFyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04MzQsNiArODM4LDggQEAKIAkJCQlBOEE0NzMwMDE1MUE4MjVCMDA0MTIz
RkYgLyogUmVmQ291bnRlZEFycmF5LmggKi8sCiAJCQkJQThBNDczMDExNTFBODI1QjAwNDEyM0ZG
IC8qIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgKi8sCiAJCQkJQThBNDczMDIxNTFBODI1QjAw
NDEyM0ZGIC8qIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oICovLAorCQkJCTg2RjQ2RjVFMUEyODQw
RUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmNwcCAqLywKKwkJCQk4NkY0NkY1RjFBMjg0MEVFMDBD
Q0JGMjIgLyogUmVmQ291bnRlci5oICovLAogCQkJCUE4QTQ3MzAzMTUxQTgyNUIwMDQxMjNGRiAv
KiBSZWZQdHIuaCAqLywKIAkJCQlBOEE0NzMwNTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRy
LmggKi8sCiAJCQkJMkNERUQwRjExODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwICovLApA
QCAtMTE2Miw2ICsxMTY4LDcgQEAKIAkJCQlBOEE0NzQxQzE1MUE4MjVCMDA0MTIzRkYgLyogUmVm
UHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQxRTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0
YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQ0RFRDBGNDE4MTE1Qzg1MDA0REJBNzAgLyog
UnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZGNDZGNjExQTI4NDBFRTAwQ0NCRjIyIC8q
IFJlZkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Njk0MTkyMTZFQUFGNkQwMDI0RTE0
NiAvKiBSdW5Mb29wVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RjNCMEY3MTVFNDVFNDYw
MDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDY5
NDE5NjE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggaW4gSGVhZGVycyAqLywKQEAg
LTEzMzUsNiArMTM0Miw3IEBACiAJCQkJQThBNDczOUExNTFBODI1QjAwNDEyM0ZGIC8qIENyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDM5
MTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
MzlDMTUxQTgyNUIwMDQxMjNGRiAvKiBDdXJyZW50VGltZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk4NkY0NkY2MDFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEE0NzM5RTE1MUE4MjVCMDA0MTIzRkYgLyogRGF0YUxvZy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzNBMDE1MUE4MjVCMDA0MTIzRkYgLyogRGF0ZU1hdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczQTIxNTFBODI1QjAwNDEyM0ZGIC8qIERlY2ltYWxOdW1iZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTc2
NTA3KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDYgKzgyLDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgUmVmLmgKICAgICBSZWZDb3VudGVk
LmgKICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaAorICAgIFJlZkNvdW50ZXIuaAogICAgIFJl
ZlB0ci5oCiAgICAgUmV0YWluUHRyLmgKICAgICBSdW5Mb29wLmgKQEAgLTE3NSw2ICsxNzYsNyBA
QCBzZXQoV1RGX1NPVVJDRVMKICAgICBSQU1TaXplLmNwcAogICAgIFJhbmRvbU51bWJlci5jcHAK
ICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwCisgICAgUmVmQ291bnRlci5jcHAKICAgICBS
dW5Mb29wLmNwcAogICAgIFNIQTEuY3BwCiAgICAgU2l4Q2hhcmFjdGVySGFzaC5jcHAKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1JlZkNvdW50ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvUmVmQ291
bnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWZDb3VudGVyLmgiCisKK25hbWVzcGFjZSBX
VEYgeworCit2b2lkIFJlZkNvdW50ZXI6OkNvdW50OjpyZWYoKQoreworICAgICsrbV92YWx1ZTsK
KworICAgIGlmIChtX3JlZkNvdW50ZXIpCisgICAgICAgIG1fcmVmQ291bnRlci0+bV92YWx1ZURp
ZENoYW5nZSgpOworfQorCit2b2lkIFJlZkNvdW50ZXI6OkNvdW50OjpkZXJlZigpCit7CisgICAg
QVNTRVJUKG1fdmFsdWUpOworICAgIC0tbV92YWx1ZTsKKworICAgIC8vIFRoZSBDb3VudGVyIG9i
amVjdCBpcyBrZXB0IGFsaXZlIHNvIGxvbmcgYXMgZWl0aGVyIHRoZSBSZWZDb3VudGVyIHRoYXQg
Y3JlYXRlZCBpdCByZW1haW5zCisgICAgLy8gYWxsb2NhdGVkLCBvciBzbyBsb25nIGFzIGl0cyBy
ZWZlcmVuY2UgY291bnQgaXMgbm9uLXplcm8uCisgICAgLy8gSWYgdGhlIFJlZkNvdW50ZXIgaGFz
IGFscmVhZHkgYmVlbiBkZWFsbG9jdGVkIHRoZW4gZGVsZXRlIHRoZSBDb3VudCB3aGVuIGl0cyBy
ZWZlcmVuY2UKKyAgICAvLyBjb3VudCByZWFjaGVzIHplcm8uCisgICAgaWYgKG1fcmVmQ291bnRl
cikKKyAgICAgICAgbV9yZWZDb3VudGVyLT5tX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgZWxzZSBp
ZiAoIW1fdmFsdWUpCisgICAgICAgIGRlbGV0ZSB0aGlzOworfQorCitSZWZDb3VudGVyOjpSZWZD
b3VudGVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiB2YWx1ZURpZENoYW5nZSkKKyAgICA6IG1fdmFs
dWVEaWRDaGFuZ2UodmFsdWVEaWRDaGFuZ2UpCisgICAgLCBtX2NvdW50KG5ldyBDb3VudCgqdGhp
cykpCit7Cit9CisKK1JlZkNvdW50ZXI6On5SZWZDb3VudGVyKCkKK3sKKyAgICAvLyBUaGUgQ291
bnQgb2JqZWN0IGlzIGtlcHQgYWxpdmUgc28gbG9uZyBhcyBlaXRoZXIgdGhlIFJlZkNvdW50ZXIg
dGhhdCBjcmVhdGVkIGl0IHJlbWFpbnMKKyAgICAvLyBhbGxvY2F0ZWQsIG9yIHNvIGxvbmcgYXMg
aXRzIHJlZmVyZW5jZSBjb3VudCBpcyBub24temVyby4KKyAgICAvLyBJZiB0aGUgcmVmZXJlbmNl
IGNvdW50IG9mIHRoZSBDb3VudCBpcyBhbHJlYWR5IHplcm8gdGhlbiBkZWxldGUgaXQgbm93LCBv
dGhlcndpc2UKKyAgICAvLyBjbGVhciBpdHMgbV9yZWZDb3VudGVyIHBvaW50ZXIuCisgICAgaWYg
KG1fY291bnQtPm1fdmFsdWUpCisgICAgICAgIG1fY291bnQtPm1fcmVmQ291bnRlciA9IG51bGxw
dHI7CisgICAgZWxzZQorICAgICAgICBkZWxldGUgbV9jb3VudDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dURi93dGYvUmVmQ291bnRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
VEYvd3RmL1JlZkNvdW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBSZWZDb3VudGVyX2gKKyNkZWZpbmUgUmVmQ291bnRlcl9oCisKKyNp
bmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFJlZkNvdW50ZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZkNvdW50ZXIpOworcHVibGljOgorICAgIGNs
YXNzIENvdW50IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ291bnQpOworICAgIHB1
YmxpYzoKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVmKCk7CisgICAgICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlcmVmKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgUmVmQ291bnRlcjsKKworICAgICAgICBDb3VudChSZWZDb3VudGVyJiByZWZD
b3VudGVyKQorICAgICAgICAgICAgOiBtX3JlZkNvdW50ZXIoJnJlZkNvdW50ZXIpCisgICAgICAg
ICAgICAsIG1fdmFsdWUoMCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVmQ291
bnRlciogbV9yZWZDb3VudGVyOworICAgICAgICB1bnNpZ25lZCBtX3ZhbHVlOworICAgIH07CisK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmQ291bnRlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
PSBbXSgpIHsgfSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5SZWZDb3VudGVyKCk7CisKKyAg
ICBQYXNzUmVmPENvdW50PiBjb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKm1f
Y291bnQ7CisgICAgfQorCisgICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fY291bnQtPm1fdmFsdWU7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBtX3ZhbHVlRGlkQ2hhbmdlOworICAgIENvdW50KiBtX2NvdW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UmVmQ291bnRlcjsKKworI2Vu
ZGlmIC8vIFJlZkNvdW50ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc2NTczKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzQgQEAK
KzIwMTQtMTItMDEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIEdlbmVyYWxpemUgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTEwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhZ2VBY3Rpdml0eUFzc2Vy
dGlvblRva2VuIGlzIGEgUkFJSSBtZWNoYW5pc20gaW1wbGVtZW50aW5nIGEgY291bnRlciwgdXNl
ZCBieSBQYWdlVGhyb3R0bGVyCisgICAgICAgIHRvIGNvdW50IHVzZXIgdmlzaWJsZSBhY3Rpdml0
eSBpbiBwcm9ncmVzcyBvbiB0aGUgcGFnZSAoY3VycmVudGx5IHBhZ2UgbG9hZCBhbmQgbWVkaWEg
cGxheWJhY2spLgorICAgICAgICBVc2Ugb2YgYW4gUkFJSSB0eXBlIGlzIHByZXZlbnRzIGEgbnVt
YmVyIG9mIHBvc3NpYmxlIGVycm9ycywgaW5jbHVkaW5nIGRvdWJsZSBjb3VudGluZyBhIHNpbmds
ZQorICAgICAgICBtZWRpYSBlbGVtZW50LCBvciBmYWlsaW5nIHRvIGRlY3JlbWVudCB0aGUgY291
bnQgYWZ0ZXIgYSBtZWRpYSBlbGVtZW50IGhhcyBiZWVuIGRlYWxsb2NhdGVkLgorCisgICAgICAg
IFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGhhcyBhIG51bWJlciBvZiBkcmF3YmFja3MgdGhh
dCBoYXZlIGJlZW4gYWRkcmVzc2VkIGJ5IHRoaXMgcmVmYWN0b3Jpbmc6CisgICAgICAgICAtIHNw
ZWNpZmljIHRvIHNpbmdsZSB1c2UgaW4gUGFnZVRocm90dGxlciBjbGFzcyAtIG5vdCByZXVzYWJs
ZS4KKyAgICAgICAgIC0gaW5jb21wbGV0ZSBlbmNhcHN1bGF0aW9uIC0gdGhlIGNvdW50ZXIgYW5k
IFdlYWtQdHJGYWN0b3J5IHRoYXQgY29tcHJpc2UgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgICAgYXJlIG5vdCBlbmNhcHN1bGF0ZWQgKGFyZSBpbiB0aGUgY2xpZW50IHR5cGUs
IFBhZ2VUaHJvdHRsZXIpLgorICAgICAgICAgLSB0b2tlbnMgYXJlIG5vdCBzaGFyZWQgLSBQYWdl
QWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBpbnN0YW5jZXMgYXJlIG1hbmFnZWQgYnkgc3RkOjp1bmlx
dWUsIGV2ZXJ5CisgICAgICAgICAgIGluY3JlbWVudCByZXF1aXJlcyBhbiBvYmplY3QgYWxsb2Nh
dGlvbi4KKyAgICAgICAgIC0gcmVkdW5kYW5jeSAtIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9u
IHVzZXMgYSBXZWFrUHRyIHRvIHNhZmVseSByZWZlcmVuY2UgdGhlIFBhZ2VUaHJvdHRsZXIsIHRo
aXMKKyAgICAgICAgICAgaXMgaW50ZXJuYWxseSBpbXBsZW1lbnRlZCB1c2luZyBhIHJlZmVyZW5j
ZSBjb3VudGVkIHR5cGUsIHJlc3VsdGluZyBpbiB0d28gY291bnRlcnMgYmVpbmcKKyAgICAgICAg
ICAgaW5jcmVtZW50ZWQgKG9uZSBpbiB0aGUgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4sIG9u
ZSBpbiB0aGUgUGFnZVRocm90dGxlcikuCisKKyAgICAgICAgSW4gdGhlIHJlaW1wbGVtZW50YXRp
b246CisgICAgICAgICAtIGEgY2FsbGJhY2sgaXMgcHJvdmlkZWQgdmlhIGEgbGFtYmRhIGZ1bmN0
aW9uLCB3aGljaCBhbGxvd3MgZm9yIGVhc3kgcmV1c2Ugd2l0aG91dCBhIGxvdCBvZgorICAgICAg
ICAgICBib2lsZXJwbGF0ZSBjb2RlLgorICAgICAgICAgLSB0aGUgY291bnRlciwgY2FsbGJhY2sg
YW5kIG93bmVyc2hpcCBvZiB0aGUgb3RoZXJ3aXNlIHdlYWtseS1vd25lZCB0b2tlbiBpcyBlbmNh
cHN1bGF0ZWQgd2l0aGluIHRoZQorICAgICAgICAgICBSZWZDb3VudGVyIHR5cGUuCisgICAgICAg
ICAtIGEgc2luZ2xlIGNvdW50IHdpdGhpbiBSZWZDb3VudGVyOjpDb3VudCBzdG9yZXMgdGhlIGNv
dW50ZXIgdmFsdWUsIGFuZCBhbHNvIG1hbmFnZSB0aGUgbGlmZXRpbWUKKyAgICAgICAgICAgb2Yg
dGhpcyBvYmplY3QuCisgICAgICAgICAtIHN0YW5kYXJkIFJlZlB0cnMgYXJlIHVzZWQgdG8gbWFu
YWdlIHJlZmVyZW5jZXMgdG8gdGhlIFJlZkNvdW50ZXI6OkNvdW50LgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAgICAgLSByZW1vdmVkIFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcC8uaAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgICAgICAtIHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0aW9u
VG9rZW4uaAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAgICAg
LSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFJlZlB0cjxS
ZWZDb3VudGVyOjpDb3VudD4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAgICAgLSByZW1vdmVkIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgICAgIC0gc3RkOjp1bmlxdWVfcHRyPFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiAtPiBSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgICAgIC0gcmVt
b3ZlZCBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oCisgICAgICAgICogbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICAgICAtIHJlbW92ZWQgY2xhc3MgUGFnZUFjdGl2aXR5
QXNzZXJ0aW9uVG9rZW4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAgICAgLSBy
ZW1vdmVkIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OlBhZ2UpOgorICAgICAgICAgICAgLSByZW1vdmVkIFBhZ2UqIHBhcmFtZXRlciB0byBQYWdl
VGhyb3R0bGVyCisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICAgICAtIHJlbW92ZWQg
Y2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4KKyAgICAgICAgKiBwYWdlL1BhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuLmg6IFJlbW92ZWQuCisgICAgICAgICAgICAtIHJlbW92ZWQgUGFn
ZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwLy5oCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OlBhZ2VUaHJvdHRsZXIp
OgorICAgICAgICAgICAgLSByZW1vdmVkIG1fcGFnZSwgbV93ZWFrUHRyRmFjdG9yeSwgbV9hY3Rp
dml0eUNvdW50OyBhZGRlZCBtX3BhZ2VBY3Rpdml0eUNvdW50ZXIuCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlVGhyb3R0bGVyOjptZWRpYUFjdGl2aXR5VG9rZW4pOgorICAgICAgICAgICAgLSBzdGQ6
OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFBhc3NSZWZQdHI8UmVm
Q291bnRlcjo6Q291bnQ+CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpwYWdlTG9h
ZEFjdGl2aXR5VG9rZW4pOgorICAgICAgICAgICAgLSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFBhc3NSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpwYWdlQWN0aXZpdHlDb3VudGVyVmFsdWVEaWRD
aGFuZ2UpOgorICAgICAgICAgICAgLSBtZXJnZWQgZnVuY3Rpb25hbGl0eSBvZiBpbmNyZW1lbnRB
Y3Rpdml0eUNvdW50L2RlY3JlbWVudEFjdGl2aXR5Q291bnQKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VUaHJvdHRsZXI6OmluY3JlbWVudEFjdGl2aXR5Q291bnQpOiBEZWxldGVkLgorICAgICAgICAg
ICAgLSBzZWUgcGFnZUFjdGl2aXR5Q291bnRlclZhbHVlRGlkQ2hhbmdlCisgICAgICAgIChXZWJD
b3JlOjpQYWdlVGhyb3R0bGVyOjpkZWNyZW1lbnRBY3Rpdml0eUNvdW50KTogRGVsZXRlZC4KKyAg
ICAgICAgICAgIC0gc2VlIHBhZ2VBY3Rpdml0eUNvdW50ZXJWYWx1ZURpZENoYW5nZQorICAgICAg
ICAqIHBhZ2UvUGFnZVRocm90dGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxl
cjo6d2Vha1B0cik6IERlbGV0ZWQuCisgICAgICAgICAgICAtIG5vIGxvbmdlciByZXF1aXJlZDsg
dGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdyBlbmNhcHN1bGF0ZWQgd2l0aGluIFJlZkNvdW50ZXIu
CisKIDIwMTQtMTEtMjggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBN
b3ZlIHRoZSAnLXdlYmtpdC1pbml0aWFsLWxldHRlcicsICctd2Via2l0LWxpbmUtYm94LWNvbnRh
aW4nIGFuZCAnLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCcgQ1NTIHByb3BlcnRpZXMgdG8gdGhl
IG5ldyBTdHlsZUJ1aWxkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNzY1
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTkxMSw3ICsxOTExLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2UvTmF2aWdhdG9y
QmFzZS5jcHAKICAgICBwYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmNwcAogICAgIHBhZ2UvUGFnZS5j
cHAKLSAgICBwYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcAogICAgIHBhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwCiAgICAgcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKICAgICBw
YWdlL1BhZ2VHcm91cC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzE4OSw3
ICs3MTg5LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcTmF2aWdhdG9yQmFz
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXE9yaWdpbkFjY2Vzc0Vu
dHJ5LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcUGFnZS5jcHAiIC8+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXFBhZ2VBY3Rpdml0eUFzc2VydGlvblRv
a2VuLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxQYWdlQ29uc29s
ZUNsaWVudC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXFBhZ2VHcm91
cC5jcHAiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1OTUsNyAr
NTU5NSw2IEBACiAJCUNDQzJCNTE0MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTEwMTVG
NjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQ0MyQjUxNTE1RjYxMzA2MDA0OENERDYgLyogRGV2
aWNlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDQ0MyQjUxMTE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAg
Ki87IH07CiAJCUNDQzJCNTE2MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMjE1
RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUNEMDgyODVDMTc1NzI1MEYwMEVDNUZCNyAv
KiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA4Mjg1QTE3NTcyNTA4MDBFQzVGQjcgLyogUGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwICovOyB9OwogCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFG
QTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0
aW5hdGlvbklPUy5jcHAgKi87IH07CiAJCUNEMTI3REVEMTRGMzA5N0QwMEU4NDc3OSAvKiBXZWJD
b3JlRnVsbFNjcmVlbldpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMTI3REVCMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVl
bldpbmRvdy5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8qIFdlYkNvcmVG
dWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTMwNTUsOCArMTMwNTQsNiBAQAogCQlDQ0MyQjUxMDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNl
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZUNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQ0MyQjUxMTE1RjYxMzA2MDA0OENERDYg
LyogRGV2aWNlQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEZXZpY2VDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDRDA4Mjg1QTE3NTcyNTA4MDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5
QXNzZXJ0aW9uVG9rZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDA4Mjg1QjE3NTcy
NTA4MDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0QwRUVFMEExNDc0M0UzNDAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9EZXN0aW5hdGlvbklPUy5oOyBw
YXRoID0gaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHA7IHBhdGggPSBpb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNj
cmVlbldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVs
bFNjcmVlbldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2NzcsOCAr
MTY2NzQsNiBAQAogCQkJCTAwMTQ2Mjg5MTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NF
bnRyeS5oICovLAogCQkJCTY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLywK
IAkJCQk2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovLAotCQkJCUNEMDgyODVB
MTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAgKi8sCi0J
CQkJQ0QwODI4NUIxNzU3MjUwODAwRUM1RkI3IC8qIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2Vu
LmggKi8sCiAJCQkJQ0Q1RTVCNjAxQTE1RjE1NjAwMEM2MDlFIC8qIFBhZ2VDb25maWd1cmF0aW9u
LmNwcCAqLywKIAkJCQlDRDVFNUI1RTFBMTVDRTU0MDAwQzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRp
b24uaCAqLywKIAkJCQlEQUFDQjNEOTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGVDbGll
bnQuY3BwICovLApAQCAtMjkxMTgsNyArMjkxMTMsNiBAQAogCQkJCUZENTgxRkFFMTUyMEY5MUYw
MDNBN0E3NSAvKiBPc2NpbGxhdG9yTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTBENTcz
NjBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlDRDA4Mjg1QzE3NTcyNTBGMDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3N0U3NzYwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VD
YWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzgyMDg5MjE0N0QzNUY5MDAxMEJDMDYgLyog
UGFnZUNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQUVEMjAzMDE2RjI0NDJC
MDA3MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NjUwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDYgQEAKICNpbmNsdWRlICJNZWRpYVJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250
ZXh0LmgiCi0jaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRl
ICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJNZWRpYUNh
blN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCkBAIC02NSw3
ICs2Niw2IEBAIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBj
bGFzcyBNZWRpYUNvbnRyb2xzSG9zdDsKIGNsYXNzIE1lZGlhRXJyb3I7Ci1jbGFzcyBQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKIGNsYXNzIE1lZGlhS2V5czsKQEAgLTg5OSw3ICs4OTksNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SFRNTE1lZGlhU2Vzc2lvbj4gbV9t
ZWRpYVNlc3Npb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRv
a2VuPiBtX2FjdGl2aXR5VG9rZW47CisgICAgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gbV9h
Y3Rpdml0eVRva2VuOwogICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0OwogCiAj
aWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNiBAQAogI2lu
Y2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCiAjaW5jbHVk
ZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgogI2luY2x1ZGUgIlBh
Z2VUcmFuc2l0aW9uRXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkljb25VUkwuaCIK
ICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5jbHVkZSAiTWl4ZWRDb250ZW50Q2hl
Y2tlci5oIgorI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZVR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkTm90aWZpZXIuaCIKICNpbmNsdWRl
ICJTZWN1cml0eUNvbnRleHQuaCIKQEAgLTY2LDcgKzY3LDYgQEAgY2xhc3MgSWNvbkNvbnRyb2xs
ZXI7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBj
bGFzcyBQYWdlOwotY2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQb2xp
Y3lDaGVja2VyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
QEAgLTQ0Myw3ICs0NDMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1fcHJldmlvdXNVUkw7CiAg
ICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rpdml0eUFzc2VydGlv
bjsKKyAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBtX2FjdGl2aXR5QXNzZXJ0aW9uOwog
fTsKIAogLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgY3JlYXRlV2luZG93KCkgaW4gSlNE
T01XaW5kb3dCYXNlLmNwcCwgZm9yIGV4YW1wbGUsIGZvcgpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNh
Y2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlv
blRva2VuLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTc2NTA3KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmVz
b3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIERvY3VtZW50OwotY2xh
c3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAK
IGNsYXNzIFN1YnJlc291cmNlTG9hZGVyIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQAogI2luY2x1
ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCi0jaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNz
ZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJQYWdlQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCkBAIC0xOTUsNyAr
MTk0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYgcGFnZUNvbmZpZwogI2VuZGlm
CiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5h
dGl2ZVRleHRDbGllbnQpCiAgICAgLCBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZChmYWxz
ZSkKLSAgICAsIG1fcGFnZVRocm90dGxlcigqdGhpcywgbV92aWV3U3RhdGUpCisgICAgLCBtX3Bh
Z2VUaHJvdHRsZXIobV92aWV3U3RhdGUpCiAgICAgLCBtX2NvbnNvbGVDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQogICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZURlYnVnZ2FibGU+KCp0aGlzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxNzY1MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyAr
ODAsNiBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVy
OwogY2xhc3MgTWFpbkZyYW1lOwogY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwotY2xhc3Mg
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNs
YXNzIFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcAko
cmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQYWdlQWN0aXZpdHlBc3NlcnRpb25U
b2tlbi5oIgotCi0jaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOjpQYWdlQWN0aXZpdHlBc3NlcnRpb25U
b2tlbihQYWdlVGhyb3R0bGVyJiB0aHJvdHRsZXIpCi0gICAgOiBtX3Rocm90dGxlcih0aHJvdHRs
ZXIud2Vha1B0cigpKQotewotICAgIHRocm90dGxlci5pbmNyZW1lbnRBY3Rpdml0eUNvdW50KCk7
Ci19Ci0KLVBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOjp+UGFnZUFjdGl2aXR5QXNzZXJ0aW9u
VG9rZW4oKQotewotICAgIGlmIChQYWdlVGhyb3R0bGVyKiB0aHJvdHRsZXIgPSBtX3Rocm90dGxl
ci5nZXQoKSkKLSAgICAgICAgdGhyb3R0bGVyLT5kZWNyZW1lbnRBY3Rpdml0eUNvdW50KCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oCShyZXZpc2lvbiAxNzY1MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW5faAotI2RlZmluZSBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbl9o
Ci0KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBhZ2VUaHJvdHRsZXI7Ci0KLWNsYXNz
IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbik7Ci1wdWJsaWM6Ci0gICAgUGFnZUFjdGl2aXR5QXNz
ZXJ0aW9uVG9rZW4oUGFnZVRocm90dGxlciYpOwotICAgIH5QYWdlQWN0aXZpdHlBc3NlcnRpb25U
b2tlbigpOwotCi1wcml2YXRlOgotICAgIFdlYWtQdHI8UGFnZVRocm90dGxlcj4gbV90aHJvdHRs
ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5j
cHAJKHJldmlzaW9uIDE3NjUwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKIAotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZVRocm90dGxl
cjo6UGFnZVRocm90dGxlcihQYWdlJiBwYWdlLCBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkK
LSAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV92aWV3U3RhdGUodmlld1N0YXRlKQotICAgICwg
bV93ZWFrUHRyRmFjdG9yeSh0aGlzKQorUGFnZVRocm90dGxlcjo6UGFnZVRocm90dGxlcihWaWV3
U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKKyAgICA6IG1fdmlld1N0YXRlKHZpZXdTdGF0ZSkKICAg
ICAsIG1faHlzdGVyZXNpcygqdGhpcykKLSAgICAsIG1fYWN0aXZpdHlDb3VudCgwKQorICAgICwg
bV9wYWdlQWN0aXZpdHlDb3VudGVyKFt0aGlzXSgpIHsgcGFnZUFjdGl2aXR5Q291bnRlclZhbHVl
RGlkQ2hhbmdlKCk7IH0pCiB7CiAgICAgdXBkYXRlVXNlckFjdGl2aXR5KCk7CiB9CkBAIC00Nywz
NiArNDMsMjUgQEAgdm9pZCBQYWdlVGhyb3R0bGVyOjpjcmVhdGVVc2VyQWN0aXZpdHkoKQogICAg
IHVwZGF0ZVVzZXJBY3Rpdml0eSgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5
QXNzZXJ0aW9uVG9rZW4+IFBhZ2VUaHJvdHRsZXI6Om1lZGlhQWN0aXZpdHlUb2tlbigpCitQYWdl
QWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBQYWdlVGhyb3R0bGVyOjptZWRpYUFjdGl2aXR5VG9rZW4o
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRv
a2VuPigqdGhpcyk7CisgICAgcmV0dXJuIG1fcGFnZUFjdGl2aXR5Q291bnRlci5jb3VudCgpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IFBhZ2VUaHJv
dHRsZXI6OnBhZ2VMb2FkQWN0aXZpdHlUb2tlbigpCitQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tl
biBQYWdlVGhyb3R0bGVyOjpwYWdlTG9hZEFjdGl2aXR5VG9rZW4oKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuPigqdGhpcyk7CisgICAg
cmV0dXJuIG1fcGFnZUFjdGl2aXR5Q291bnRlci5jb3VudCgpOwogfQogCi12b2lkIFBhZ2VUaHJv
dHRsZXI6OmluY3JlbWVudEFjdGl2aXR5Q291bnQoKQordm9pZCBQYWdlVGhyb3R0bGVyOjpwYWdl
QWN0aXZpdHlDb3VudGVyVmFsdWVEaWRDaGFuZ2UoKQogewotICAgIC8vIElmIG1fYWN0aXZpdHlD
b3VudCBpcyBub256ZXJvLCBzdGF0ZSBtdXN0IGJlIFN0YXJ0ZWQ7IGlmIG1fYWN0aXZpdHlDb3Vu
dCBpcyB6ZXJvLCBzdGF0ZSBtYXkgYmUgV2FpdGluZyBvciBTdG9wcGVkLgotICAgIEFTU0VSVCgh
IW1fYWN0aXZpdHlDb3VudCA9PSAobV9oeXN0ZXJlc2lzLnN0YXRlKCkgPT0gSHlzdGVyZXNpc1N0
YXRlOjpTdGFydGVkKSk7Ci0KLSAgICBpZiAoIW1fYWN0aXZpdHlDb3VudCsrKQorICAgIGlmICht
X3BhZ2VBY3Rpdml0eUNvdW50ZXIudmFsdWUoKSkKICAgICAgICAgbV9oeXN0ZXJlc2lzLnN0YXJ0
KCk7Ci0KLSAgICBBU1NFUlQobV9hY3Rpdml0eUNvdW50ICYmIG1faHlzdGVyZXNpcy5zdGF0ZSgp
ID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCk7Ci19Ci0KLXZvaWQgUGFnZVRocm90dGxlcjo6
ZGVjcmVtZW50QWN0aXZpdHlDb3VudCgpCi17Ci0gICAgQVNTRVJUKG1fYWN0aXZpdHlDb3VudCAm
JiBtX2h5c3RlcmVzaXMuc3RhdGUoKSA9PSBIeXN0ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQpOwotCi0g
ICAgaWYgKCEtLW1fYWN0aXZpdHlDb3VudCkKKyAgICBlbHNlCiAgICAgICAgIG1faHlzdGVyZXNp
cy5zdG9wKCk7CiAKLSAgICAvLyBJZiBtX2FjdGl2aXR5Q291bnQgaXMgbm9uemVybywgc3RhdGUg
bXVzdCBiZSBTdGFydGVkOyBpZiBtX2FjdGl2aXR5Q291bnQgaXMgemVybywgc3RhdGUgbWF5IGJl
IFdhaXRpbmcgb3IgU3RvcHBlZC4KLSAgICBBU1NFUlQoISFtX2FjdGl2aXR5Q291bnQgPT0gKG1f
aHlzdGVyZXNpcy5zdGF0ZSgpID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCkpOworICAgIC8v
IElmIHRoZSBjb3VudGVyIGlzIG5vbnplcm8sIHN0YXRlIG11c3QgYmUgU3RhcnRlZDsgaWYgdGhl
IGNvdW50ZXIgaXMgemVybywgc3RhdGUgbWF5IGJlIFdhaXRpbmcgb3IgU3RvcHBlZC4KKyAgICBB
U1NFUlQoISFtX3BhZ2VBY3Rpdml0eUNvdW50ZXIudmFsdWUoKSA9PSAobV9oeXN0ZXJlc2lzLnN0
YXRlKCkgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdGFydGVkKSk7CiB9CiAKIHZvaWQgUGFnZVRocm90
dGxlcjo6dXBkYXRlVXNlckFjdGl2aXR5KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVRocm90dGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90
dGxlci5oCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJv
dHRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMzEgKzMwLDI3IEBACiAKICNpbmNsdWRlICJV
c2VyQWN0aXZpdHkuaCIKICNpbmNsdWRlICJWaWV3U3RhdGUuaCIKLSNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwordHlw
ZWRlZiBSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2Vu
OwogCiBjbGFzcyBQYWdlVGhyb3R0bGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBQYWdlVGhyb3R0bGVyKFBhZ2UmLCBWaWV3U3RhdGU6OkZsYWdzKTsKKyAg
ICBQYWdlVGhyb3R0bGVyKFZpZXdTdGF0ZTo6RmxhZ3MpOwogCiAgICAgdm9pZCBjcmVhdGVVc2Vy
QWN0aXZpdHkoKTsKICAgICB2b2lkIHNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzKTsKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnB1dCgpIHsgbV9oeXN0ZXJlc2lzLmltcHVsc2UoKTsg
fQogICAgIHZvaWQgcGx1Z2luRGlkRXZhbHVhdGVXaGlsZUF1ZGlvSXNQbGF5aW5nKCkgeyBtX2h5
c3RlcmVzaXMuaW1wdWxzZSgpOyB9Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFz
c2VydGlvblRva2VuPiBtZWRpYUFjdGl2aXR5VG9rZW4oKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IHBhZ2VMb2FkQWN0aXZpdHlUb2tlbigpOworICAg
IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIG1lZGlhQWN0aXZpdHlUb2tlbigpOworICAgIFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuIHBhZ2VMb2FkQWN0aXZpdHlUb2tlbigpOwogCiBwcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjsKLSAgICBX
ZWFrUHRyPFBhZ2VUaHJvdHRsZXI+IHdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5
LmNyZWF0ZVdlYWtQdHIoKTsgfQotICAgIHZvaWQgaW5jcmVtZW50QWN0aXZpdHlDb3VudCgpOwot
ICAgIHZvaWQgZGVjcmVtZW50QWN0aXZpdHlDb3VudCgpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5
Q291bnRlclZhbHVlRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHVwZGF0ZVVzZXJBY3Rpdml0eSgp
OwogCkBAIC02MiwxMiArNTgsMTAgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0YXJ0ZWQoKTsKICAgICB2b2lkIHN0b3BwZWQoKTsKIAotICAgIFBhZ2UmIG1fcGFnZTsKICAg
ICBWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlOwotICAgIFdlYWtQdHJGYWN0b3J5PFBhZ2VU
aHJvdHRsZXI+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgSHlzdGVyZXNpc0FjdGl2aXR5PFBhZ2VU
aHJvdHRsZXI+IG1faHlzdGVyZXNpczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlckFjdGl2aXR5
OjpJbXBsPiBtX2FjdGl2aXR5OwotICAgIHNpemVfdCBtX2FjdGl2aXR5Q291bnQ7CisgICAgUmVm
Q291bnRlciBtX3BhZ2VBY3Rpdml0eUNvdW50ZXI7CiB9OwogCiB9CkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzY2NTUpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0x
Mi0wMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgR2VuZXJhbGl6ZSBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5MTA2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IGZvciBXVEY6
OlJlZkNvdW50ZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SZWZDb3VudGVyLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgICAgIC0gYWRkZWQgUmVmQ291bnRlciB0ZXN0LgorCiAyMDE0LTEyLTAyICBFdmEg
QmFsYXpzZmFsdmkgIDxldmFiLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0VGTF0gUmVtb3ZlIGVkYnVzIGRlcGVuZGVuY3kgZnJvbSBqaGJ1aWxkCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTc2NTA3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEzMiw2ICsxMzIsNyBAQAogCQk3Q0ZCQ0FERjE3NDMyMzRGMDBCMkJGQ0YgLyogV2lsbExv
YWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NG
QkNBREQxNzQzMjM0RjAwQjJCRkNGIC8qIFdpbGxMb2FkLmNwcCAqLzsgfTsKIAkJN0NGQkNBRTUx
NzQzMjM4RjAwQjJCRkNGIC8qIFdpbGxMb2FkX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZCQ0FFMzE3NDMyMzhFMDBCMkJGQ0YgLyog
V2lsbExvYWRfQnVuZGxlLmNwcCAqLzsgfTsKIAkJODFCNTAxOTMxNDBGMjMyMzAwRDlFQjU4IC8q
IFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxkZXIuY3BwICov
OyB9OworCQk4NkJEMTk5ODFBMkRCMDVCMDA2RENGMEEgLyogUmVmQ291bnRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJEMTk5NzFBMkRCMDVC
MDA2RENGMEEgLyogUmVmQ291bnRlci5jcHAgKi87IH07CiAJCThBMkM3NTBFMTZDRUQ5NTUwMDI0
RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNp
emVXaW5kb3dBZnRlckNyYXNoLmNwcCAqLzsgfTsKIAkJOEEzQUY5M0IxNkM5RUQyNzAwRDI0OEMx
IC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDhBM0FGOTNBMTZDOUVEMjcwMEQyNDhDMSAvKiBSZWxvYWRQYWdl
QWZ0ZXJDcmFzaC5jcHAgKi87IH07CiAJCThBQTI4QzFBMTZEMkZBN0IwMDJGRjREQiAvKiBMb2Fk
UGFnZU9uQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEFBMjhDMTkxNkQyRkE3QjAwMkZGNERCIC8qIExvYWRQYWdlT25DcmFzaC5jcHAgKi87
IH07CkBAIC00OTMsNiArNDk0LDcgQEAKIAkJN0NGQkNBREQxNzQzMjM0RjAwQjJCRkNGIC8qIFdp
bGxMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbGxMb2Fk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGQkNBRTMxNzQzMjM4RTAwQjJC
RkNGIC8qIFdpbGxMb2FkX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXaWxsTG9hZF9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MUI1MDE5MjE0MEYyMzIzMDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCRDE5OTcxQTJEQjA1QjAwNkRDRjBBIC8qIFJlZkNvdW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmQ291bnRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1
MiAvKiBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlc2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4QTNBRjkzQTE2QzlFRDI3MDBEMjQ4QzEgLyogUmVsb2FkUGFnZUFmdGVy
Q3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVsb2FkUGFn
ZUFmdGVyQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUEyOEMxOTE2
RDJGQTdCMDAyRkY0REIgLyogTG9hZFBhZ2VPbkNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRQYWdlT25DcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NTcsNiArOTU5LDcgQEAKIAkJCQkxQUZERTY1NDE5NTNCMkMwMDBDNDhG
RkEgLyogT3B0aW9uYWwuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBS
ZWRCbGFja1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAvKiBSZWYu
Y3BwICovLAorCQkJCTg2QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNwcCAq
LywKIAkJCQk5M0E0MjdBRDE4MERBNjBGMDBDRDI0RDcgLyogUmVmTG9nZ2VyLmggKi8sCiAJCQkJ
OTNBNDI3QTgxODBEOUIwNzAwQ0QyNEQ3IC8qIFJlZlB0ci5jcHAgKi8sCiAJCQkJQ0Q1MzkzQzkx
NzU3QkFDNDAwQzA3MTIzIC8qIFNIQTEuY3BwICovLApAQCAtMTM4NCw2ICsxMzg3LDcgQEAKIAkJ
CQlDREMyQzcxNTE3OTcwRERCMDBFNjI3RkIgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUZDRjc5QTE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NTYxOTUzQjJDMDAwQzQ4RkZB
IC8qIE9wdGlvbmFsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2QkQxOTk4MUEyREIwNUIwMDZE
Q0YwQSAvKiBSZWZDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1NDBGNzc2MTUyRTRE
QTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTRBNDEw
RjRDMTlBRjdCRDYwMDJFQkFCNSAvKiBVc2VyTWVkaWEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzAyQjc3RjIxMjY2MTIxNDAwMjZCRjBGIC8qIFNwYWNlYmFyU2Nyb2xsaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRl
ci5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZD
b3VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBjb25zdCBpbnQgQ2FsbGJhY2tFeHBlY3Rl
ZCA9IDB4QzBGRkVFOworc3RhdGljIGNvbnN0IGludCBDYWxsYmFja05vdEV4cGVjdGVkID0gMHhE
RUNBRjsKKworVEVTVChXVEYsIFJlZkNvdW50ZXIpCit7CisgICAgLy8gUmVmQ291bnRlciBBUEkg
aXMgcHJldHR5IHNpbXBsZSwgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIDQgbWV0aG9kcyB0byB0
ZXN0OgorICAgIC8vCisgICAgLy8gMSkgUmVmQ291bnRlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4p
OworICAgIC8vIDIpIH5SZWZDb3VudGVyKCk7CisgICAgLy8gMykgUGFzc1JlZjxDb3VudD4gY291
bnQoKSBjb25zdDsKKyAgICAvLyA0KSB1bnNpZ25lZCB2YWx1ZSgpIGNvbnN0OworICAgIC8vCisg
ICAgLy8gV2UnbGwgdGVzdDoKKyAgICAvLyAxKSBDb25zdHJ1Y3Rpb246CisgICAgLy8gICAxYSkg
d2l0aCBhIGNhbGxiYWNrCisgICAgLy8gICAxYikgd2l0aG91dCBhIGNhbGxiYWNrCisgICAgLy8g
MikgRGVzdHJ1Y3Rpb24gd2hlcmUgdGhlIFJlZkNvdW50ZXI6OkNvdW50IGhhczoKKyAgICAvLyAg
IDJhKSBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCAoQ291bnQgb3V0bGl2ZXMgUmVmQ291bnRl
cikuCisgICAgLy8gICAyYikgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCAoQ291bnQgaXMgZGVsZXRl
ZCBieSBSZWZDb3VudGVyJ3MgZGVzdHJ1Y3RvcikuCisgICAgLy8gMykgQ2FsbCBjb3VudCB0byBy
ZWYvZGVyZWYgdGhlIENvdW50IG9iamVjdCwgd2hlcmU6CisgICAgLy8gICAzYSkgcmVmIHdpdGgg
Y2FsbGJhY2sgZnJvbSAwIC0+IDEuCisgICAgLy8gICAzYikgcmVmIHdpdGggY2FsbGJhY2sgZnJv
bSAxIC0+ID4xLgorICAgIC8vICAgM2MpIGRlcmVmIHdpdGggY2FsbGJhY2sgZnJvbSA+MSAtPiAx
LgorICAgIC8vICAgM2QpIGRlcmVmIHdpdGggY2FsbGJhY2sgZnJvbSAxIC0+IDAuCisgICAgLy8g
ICAzZCkgZGVyZWYgd2l0aCBjYWxsYmFjayBmcm9tIDEgLT4gMC4KKyAgICAvLyAgIDNlKSByZWYg
d2l0aCBjYWxsYmFjayBmcm9tIDEgLT4gPjEgQUZURVIgUmVmQ291bnRlciBoYXMgYmVlbiBkZXN0
cm95ZWQuCisgICAgLy8gICAzZikgZGVyZWYgd2l0aCBjYWxsYmFjayBmcm9tID4xIC0+IDEgQUZU
RVIgUmVmQ291bnRlciBoYXMgYmVlbiBkZXN0cm95ZWQuCisgICAgLy8gICAzZykgZGVyZWYgd2l0
aCBjYWxsYmFjayBmcm9tIDEgLT4gMCBBRlRFUiBSZWZDb3VudGVyIGhhcyBiZWVuIGRlc3Ryb3ll
ZC4KKyAgICAvLyAgIDNoKSByZWYgd2l0aG91dCBjYWxsYmFjaworICAgIC8vICAgM2kpIGRlcmVm
IHdpdGhvdXQgY2FsbGJhY2sKKyAgICAvLyAgIDNqKSByZWYgdXNpbmcgYSBSZWYgcmF0aGVyIHRo
YW4gYSBSZWZQdHIgKG1ha2Ugc3VyZSB0aGVyZSBpcyBubyB1bm5lY2Vzc2FyeSByZWZlcmVuY2Ug
Y291bnQgY2h1cm4pLgorICAgIC8vICAgM2spIGRlcmVmIHVzaW5nIGEgUmVmIHJhdGhlciB0aGFu
IGEgUmVmUHRyIChtYWtlIHN1cmUgdGhlcmUgaXMgbm8gdW5uZWNlc3NhcnkgcmVmZXJlbmNlIGNv
dW50IGNodXJuKS4KKyAgICAvLyA0KSBUZXN0IHRoZSB2YWx1ZSBvZiB0aGUgY291bnRlcjoKKyAg
ICAvLyAgIDRhKSBhdCBjb25zdHJ1Y3Rpb24uCisgICAgLy8gICA0YikgYXMgcmVhZCB3aXRoaW4g
dGhlIGNhbGxiYWNrLgorICAgIC8vICAgNGMpIGFzIHJlYWQgYWZ0ZXIgdGhlIHJlZi9kZXJlZi4K
KworICAgIC8vIFRoZXNlIHZhbHVlcyB3aWxsIG91dGxpdmUgdGhlIGZvbGxvd2luZyBibG9jay4K
KyAgICBpbnQgY2FsbGJhY2tWYWx1ZSA9IENhbGxiYWNrTm90RXhwZWN0ZWQ7CisgICAgUmVmUHRy
PFJlZkNvdW50ZXI6OkNvdW50PiBpbmNUbzFBZ2FpbjsKKworICAgIHsKKyAgICAgICAgLy8gVGVz
dGluZyAoMWEpIC0gQ29uc3RydWN0aW9uIHdpdGggYSBjYWxsYmFjay4KKyAgICAgICAgUmVmQ291
bnRlciBjb3VudGVyKFsmXSgpIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNhbGxi
YWNrIGlzIGNhbGxlZCBhdCB0aGUgZXhwZWN0ZWQgdGltZXMsIGFuZCB0aGUgY29ycmVjdCBudW1i
ZXIgb2YgdGltZXMuCisgICAgICAgICAgICBFWFBFQ1RfRVEoY2FsbGJhY2tWYWx1ZSwgQ2FsbGJh
Y2tFeHBlY3RlZCk7CisgICAgICAgICAgICAvLyByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBjb3Vu
dGVyIGluIHRoZSBjYWxsYmFjay4KKyAgICAgICAgICAgIGNhbGxiYWNrVmFsdWUgPSBjb3VudGVy
LnZhbHVlKCk7CisgICAgICAgIH0pOworICAgICAgICAvLyBUZXN0aW5nICg0YSkgLSBhZnRlciBj
b25zdHJ1Y3Rpb24gdmFsdWUoKSBpcyAwLgorICAgICAgICBFWFBFQ1RfRVEoMCwgc3RhdGljX2Nh
c3Q8aW50Pihjb3VudGVyLnZhbHVlKCkpKTsKKworICAgICAgICAvLyBUZXN0aW5nICgzYSkgLSBy
ZWYgd2l0aCBjYWxsYmFjayBmcm9tIDAgLT4gMS4KKyAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IENh
bGxiYWNrRXhwZWN0ZWQ7CisgICAgICAgIFJlZlB0cjxSZWZDb3VudGVyOjpDb3VudD4gaW5jVG8x
KGNvdW50ZXIuY291bnQoKSk7CisgICAgICAgIC8vIFRlc3RpbmcgKDRiKSAmICg0YykgLSB2YWx1
ZXMgd2l0aGluICYgYWZ0ZXIgY2FsbGJhY2suCisgICAgICAgIEVYUEVDVF9FUSgxLCBjYWxsYmFj
a1ZhbHVlKTsKKyAgICAgICAgRVhQRUNUX0VRKDEsIHN0YXRpY19jYXN0PGludD4oY291bnRlci52
YWx1ZSgpKSk7CisKKyAgICAgICAgLy8gVGVzdGluZyAoM2IpIC0gcmVmIHdpdGggY2FsbGJhY2sg
ZnJvbSAxIC0+IDIuCisgICAgICAgIGNhbGxiYWNrVmFsdWUgPSBDYWxsYmFja0V4cGVjdGVkOwor
ICAgICAgICBSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+IGluY1RvMihpbmNUbzEpOworICAgICAg
ICAvLyBUZXN0aW5nICg0YikgJiAoNGMpIC0gdmFsdWVzIHdpdGhpbiAmIGFmdGVyIGNhbGxiYWNr
LgorICAgICAgICBFWFBFQ1RfRVEoMiwgY2FsbGJhY2tWYWx1ZSk7CisgICAgICAgIEVYUEVDVF9F
USgyLCBzdGF0aWNfY2FzdDxpbnQ+KGNvdW50ZXIudmFsdWUoKSkpOworCisgICAgICAgIC8vIFRl
c3RpbmcgKDNjKSAtIGRlcmVmIHdpdGggY2FsbGJhY2sgZnJvbSA+MSAtPiAxLgorICAgICAgICBj
YWxsYmFja1ZhbHVlID0gQ2FsbGJhY2tFeHBlY3RlZDsKKyAgICAgICAgaW5jVG8xLmNsZWFyKCk7
CisgICAgICAgIC8vIFRlc3RpbmcgKDRiKSAmICg0YykgLSB2YWx1ZXMgd2l0aGluICYgYWZ0ZXIg
Y2FsbGJhY2suCisgICAgICAgIEVYUEVDVF9FUSgxLCBjYWxsYmFja1ZhbHVlKTsKKyAgICAgICAg
RVhQRUNUX0VRKDEsIHN0YXRpY19jYXN0PGludD4oY291bnRlci52YWx1ZSgpKSk7CisKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gVGVzdGluZyAoM2opIC0gcmVmIHVzaW5nIGEgUmVmIHJhdGhl
ciB0aGFuIGEgUmVmUHRyLgorICAgICAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IENhbGxiYWNrRXhw
ZWN0ZWQ7CisgICAgICAgICAgICBSZWY8UmVmQ291bnRlcjo6Q291bnQ+IGluY1RvMkFnYWluKGNv
dW50ZXIuY291bnQoKSk7CisgICAgICAgICAgICAvLyBUZXN0aW5nICg0YikgJiAoNGMpIC0gdmFs
dWVzIHdpdGhpbiAmIGFmdGVyIGNhbGxiYWNrLgorICAgICAgICAgICAgRVhQRUNUX0VRKDIsIGNh
bGxiYWNrVmFsdWUpOworICAgICAgICAgICAgRVhQRUNUX0VRKDIsIHN0YXRpY19jYXN0PGludD4o
Y291bnRlci52YWx1ZSgpKSk7CisgICAgICAgICAgICAvLyBUZXN0aW5nICgzaykgLSBkZXJlZiB1
c2luZyBhIFJlZiByYXRoZXIgdGhhbiBhIFJlZlB0ci4KKyAgICAgICAgICAgIGNhbGxiYWNrVmFs
dWUgPSBDYWxsYmFja0V4cGVjdGVkOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUSgxLCBj
YWxsYmFja1ZhbHVlKTsKKyAgICAgICAgRVhQRUNUX0VRKDEsIHN0YXRpY19jYXN0PGludD4oY291
bnRlci52YWx1ZSgpKSk7CisgICAgICAgIC8vIFRlc3RpbmcgKDRiKSAmICg0YykgLSB2YWx1ZXMg
d2l0aGluICYgYWZ0ZXIgY2FsbGJhY2suCisKKyAgICAgICAgLy8gVGVzdGluZyAoM2QpIC0gZGVy
ZWYgd2l0aCBjYWxsYmFjayBmcm9tIDEgLT4gMC4KKyAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IENh
bGxiYWNrRXhwZWN0ZWQ7CisgICAgICAgIGluY1RvMi5jbGVhcigpOworICAgICAgICAvLyBUZXN0
aW5nICg0YikgJiAoNGMpIC0gdmFsdWVzIHdpdGhpbiAmIGFmdGVyIGNhbGxiYWNrLgorICAgICAg
ICBFWFBFQ1RfRVEoMCwgY2FsbGJhY2tWYWx1ZSk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBzdGF0
aWNfY2FzdDxpbnQ+KGNvdW50ZXIudmFsdWUoKSkpOworCisgICAgICAgIC8vIFRlc3RpbmcgKDJh
KSAtIERlc3RydWN0aW9uIHdoZXJlIHRoZSBSZWZDb3VudGVyOjpDb3VudCBoYXMgYSBub24temVy
byByZWZlcmVuY2UgY291bnQuCisgICAgICAgIGNhbGxiYWNrVmFsdWUgPSBDYWxsYmFja0V4cGVj
dGVkOworICAgICAgICBpbmNUbzFBZ2FpbiA9IGNvdW50ZXIuY291bnQoKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDEsIGNhbGxiYWNrVmFsdWUpOworICAgICAgICBFWFBFQ1RfRVEoMSwgc3RhdGljX2Nh
c3Q8aW50Pihjb3VudGVyLnZhbHVlKCkpKTsKKyAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IENhbGxi
YWNrTm90RXhwZWN0ZWQ7CisgICAgfQorCisgICAgLy8gVGVzdGluZyAoM2UpIC0gcmVmIHdpdGgg
Y2FsbGJhY2sgZnJvbSAxIC0+ID4xIEFGVEVSIFJlZkNvdW50ZXIgaGFzIGJlZW4gZGVzdHJveWVk
LgorICAgIFJlZlB0cjxSZWZDb3VudGVyOjpDb3VudD4gaW5jVG8yQWdhaW4gPSBpbmNUbzFBZ2Fp
bjsKKyAgICAvLyBUZXN0aW5nICgzZikgLSBkZXJlZiB3aXRoIGNhbGxiYWNrIGZyb20gPjEgLT4g
MSBBRlRFUiBSZWZDb3VudGVyIGhhcyBiZWVuIGRlc3Ryb3llZC4KKyAgICBpbmNUbzFBZ2Fpbi5j
bGVhcigpOworICAgIC8vIFRlc3RpbmcgKDNnKSAtIGRlcmVmIHdpdGggY2FsbGJhY2sgZnJvbSAx
IC0+IDAgQUZURVIgUmVmQ291bnRlciBoYXMgYmVlbiBkZXN0cm95ZWQuCisgICAgaW5jVG8yQWdh
aW4uY2xlYXIoKTsKKworICAgIC8vIFRlc3RpbmcgKDFiKSAtIENvbnN0cnVjdGlvbiB3aXRob3V0
IGEgY2FsbGJhY2suCisgICAgUmVmQ291bnRlciBjb3VudGVyOworICAgIC8vIFRlc3RpbmcgKDRh
KSAtIGFmdGVyIGNvbnN0cnVjdGlvbiB2YWx1ZSgpIGlzIDAuCisgICAgRVhQRUNUX0VRKDAsIHN0
YXRpY19jYXN0PGludD4oY291bnRlci52YWx1ZSgpKSk7CisgICAgLy8gVGVzdGluZyAoM2gpIC0g
cmVmIHdpdGhvdXQgY2FsbGJhY2sKKyAgICBSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+IGluY1Rv
MShjb3VudGVyLmNvdW50KCkpOworICAgIC8vIFRlc3RpbmcgKDRjKSAtIHZhbHVlIGFzIHJlYWQg
YWZ0ZXIgdGhlIHJlZi4KKyAgICBFWFBFQ1RfRVEoMSwgc3RhdGljX2Nhc3Q8aW50Pihjb3VudGVy
LnZhbHVlKCkpKTsKKyAgICAvLyBUZXN0aW5nICgzaSkgLSBkZXJlZiB3aXRob3V0IGNhbGxiYWNr
CisgICAgaW5jVG8xLmNsZWFyKCk7CisgICAgLy8gVGVzdGluZyAoNGMpIC0gdmFsdWUgYXMgcmVh
ZCBhZnRlciB0aGUgZGVyZWYuCisgICAgRVhQRUNUX0VRKDAsIHN0YXRpY19jYXN0PGludD4oY291
bnRlci52YWx1ZSgpKSk7CisgICAgLy8gVGVzdGluZyAoMmIpIC0gRGVzdHJ1Y3Rpb24gd2hlcmUg
dGhlIFJlZkNvdW50ZXI6OkNvdW50IGhhcyBhIHplcm8gcmVmZXJlbmNlIGNvdW50LgorICAgIC8v
IC4uLiBub3QgYSBsb3QgdG8gdGVzdCBoZXJlISDigJPCoHdlIGNhbiBhdCBsZWFzdCBlbnN1cmUg
dGhpcyBjb2RlIHBhdGggaXMgcnVuICYgd2UgZG9uJ3QgY3Jhc2ghCit9CisKK30gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242422</attachid>
            <date>2014-12-02 09:57:04 -0800</date>
            <delta_ts>2014-12-02 10:48:07 -0800</delta_ts>
            <desc>With API test, minus non-ascii character in API test</desc>
            <filename>139106.4a.patch</filename>
            <type>text/plain</type>
            <size>50005</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzY1NzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE0LTEyLTAxICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmFsaXplIFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkxMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBpcyBhIFJBSUkgbWVjaGFuaXNtIGlt
cGxlbWVudGluZyBhIGNvdW50ZXIsIHVzZWQgYnkgUGFnZVRocm90dGxlcgorICAgICAgICB0byBj
b3VudCB1c2VyIHZpc2libGUgYWN0aXZpdHkgaW4gcHJvZ3Jlc3Mgb24gdGhlIHBhZ2UgKGN1cnJl
bnRseSBwYWdlIGxvYWQgYW5kIG1lZGlhIHBsYXliYWNrKS4KKyAgICAgICAgVXNlIG9mIGFuIFJB
SUkgdHlwZSBpcyBwcmV2ZW50cyBhIG51bWJlciBvZiBwb3NzaWJsZSBlcnJvcnMsIGluY2x1ZGlu
ZyBkb3VibGUgY291bnRpbmcgYSBzaW5nbGUKKyAgICAgICAgbWVkaWEgZWxlbWVudCwgb3IgZmFp
bGluZyB0byBkZWNyZW1lbnQgdGhlIGNvdW50IGFmdGVyIGEgbWVkaWEgZWxlbWVudCBoYXMgYmVl
biBkZWFsbG9jYXRlZC4KKworICAgICAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBoYXMg
YSBudW1iZXIgb2YgZHJhd2JhY2tzIHRoYXQgaGF2ZSBiZWVuIGFkZHJlc3NlZCBieSB0aGlzIHJl
ZmFjdG9yaW5nOgorICAgICAgICAgLSBzcGVjaWZpYyB0byBzaW5nbGUgdXNlIGluIFBhZ2VUaHJv
dHRsZXIgY2xhc3MgLSBub3QgcmV1c2FibGUuCisgICAgICAgICAtIGluY29tcGxldGUgZW5jYXBz
dWxhdGlvbiAtIHRoZSBjb3VudGVyIGFuZCBXZWFrUHRyRmFjdG9yeSB0aGF0IGNvbXByaXNlIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgIGFyZSBub3QgZW5jYXBzdWxhdGVk
IChhcmUgaW4gdGhlIGNsaWVudCB0eXBlLCBQYWdlVGhyb3R0bGVyKS4KKyAgICAgICAgIC0gdG9r
ZW5zIGFyZSBub3Qgc2hhcmVkIC0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gaW5zdGFuY2Vz
IGFyZSBtYW5hZ2VkIGJ5IHN0ZDo6dW5pcXVlLCBldmVyeQorICAgICAgICAgICBpbmNyZW1lbnQg
cmVxdWlyZXMgYW4gb2JqZWN0IGFsbG9jYXRpb24uCisgICAgICAgICAtIHJlZHVuZGFuY3kgLSB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgV2Vha1B0ciB0byBzYWZlbHkgcmVmZXJl
bmNlIHRoZSBQYWdlVGhyb3R0bGVyLCB0aGlzCisgICAgICAgICAgIGlzIGludGVybmFsbHkgaW1w
bGVtZW50ZWQgdXNpbmcgYSByZWZlcmVuY2UgY291bnRlZCB0eXBlLCByZXN1bHRpbmcgaW4gdHdv
IGNvdW50ZXJzIGJlaW5nCisgICAgICAgICAgIGluY3JlbWVudGVkIChvbmUgaW4gdGhlIFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuLCBvbmUgaW4gdGhlIFBhZ2VUaHJvdHRsZXIpLgorCisgICAg
ICAgIEluIHRoZSByZWltcGxlbWVudGF0aW9uOgorICAgICAgICAgLSBhIGNhbGxiYWNrIGlzIHBy
b3ZpZGVkIHZpYSBhIGxhbWJkYSBmdW5jdGlvbiwgd2hpY2ggYWxsb3dzIGZvciBlYXN5IHJldXNl
IHdpdGhvdXQgYSBsb3Qgb2YKKyAgICAgICAgICAgYm9pbGVycGxhdGUgY29kZS4KKyAgICAgICAg
IC0gdGhlIGNvdW50ZXIsIGNhbGxiYWNrIGFuZCBvd25lcnNoaXAgb2YgdGhlIG90aGVyd2lzZSB3
ZWFrbHktb3duZWQgdG9rZW4gaXMgZW5jYXBzdWxhdGVkIHdpdGhpbiB0aGUKKyAgICAgICAgICAg
UmVmQ291bnRlciB0eXBlLgorICAgICAgICAgLSBhIHNpbmdsZSBjb3VudCB3aXRoaW4gUmVmQ291
bnRlcjo6Q291bnQgc3RvcmVzIHRoZSBjb3VudGVyIHZhbHVlLCBhbmQgYWxzbyBtYW5hZ2UgdGhl
IGxpZmV0aW1lCisgICAgICAgICAgIG9mIHRoaXMgb2JqZWN0LgorICAgICAgICAgLSBzdGFuZGFy
ZCBSZWZQdHJzIGFyZSB1c2VkIHRvIG1hbmFnZSByZWZlcmVuY2VzIHRvIHRoZSBSZWZDb3VudGVy
OjpDb3VudC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAgICAgLSBhZGRlZCBSZWZDb3VudGVyLmNwcC8uaAorICAgICAgICAqIHd0Zi9SZWZDb3Vu
dGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6OkNvdW50OjpyZWYpOgor
ICAgICAgICAgICAgLSBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuCisgICAgICAgIChXVEY6OlJlZkNv
dW50ZXI6OkNvdW50OjpkZXJlZik6CisgICAgICAgICAgICAtIGRlY3JlbWVudCB0aGUgY291bnRl
ciwgYW5kIGRlbGV0ZSBhcyBuZWNlc3NhcnkuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6OlJl
ZkNvdW50ZXIpOgorICAgICAgICAgICAgLSBjcmVhdGUgYSBSZWZDb3VudGVyOjpDb3VudC4KKyAg
ICAgICAgKFdURjo6UmVmQ291bnRlcjo6flJlZkNvdW50ZXIpOgorICAgICAgICAgICAgLSBlYWdl
cmx5IGRlbGV0ZSB0aGUgQ291bnRlciBpZiBpdCBoYXMgbm8gcmVmZXJlbmNlcywgb3RoZXJ3aXNl
IGxldCBpdCBiZSBkZWxldGVkIG9uIGxhc3QgZGVyZWYuCisgICAgICAgICogd3RmL1JlZkNvdW50
ZXIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6OkNvdW50OjpDb3VudCk6Cisg
ICAgICAgICAgICAtIGluaXRpYWxpemUgY291bnQgdG8gMC4KKyAgICAgICAgKFdURjo6UmVmQ291
bnRlcjo6UmVmQ291bnRlcik6CisgICAgICAgICAgICAtIHRha2VzIGEgbGFtYmRhIHRvIGJlIGNh
bGxlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpj
b3VudCk6CisgICAgICAgICAgICAtIHJlZmVyZW5jZSB0aGUgY291bnRlciAoYW5kIGluIGRvaW5n
IHNvIGluY3JlbWVudCB0aGUgY291bnQpLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjp2YWx1
ZSk6CisgICAgICAgICAgICAtIGFjY2VzcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY291bnRl
ci4KKwogMjAxNC0xMS0yMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSB0aGUgVGltZXIgcGFyYW1ldGVycyBmcm9tIHRpbWVyIGNhbGxiYWNr
cwpJbmRleDogU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxNzY1MDcpCisr
KyBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsNiArMTIwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxSQU1TaXplLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxSYW5kb21OdW1iZXIuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFJlZkNvdW50ZWRMZWFrQ291bnRlci5j
cHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcUmVmQ291bnRlci5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcUnVuTG9vcC5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcU0hBMS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlx3dGZcU2l4Q2hhcmFjdGVySGFzaC5jcHAiIC8+CkBAIC0yNTcsNiArMjU4LDcgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxSZWRCbGFja1RyZWUuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxSZWZDb3VudGVkLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcUmVmQ291bnRlZExlYWtDb3VudGVyLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3dGZcUmVmQ291bnRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cd3RmXFJlZlB0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3Rm
XFJldGFpblB0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFJ1bkxvb3Au
aCIgLz4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQAogCQk4MTM0MDEzODE1QjA5MkZEMDAx
RkYwQjggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICovOyB9Owog
CQk4MTM0MDEzOTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyog
QmFzZTY0LmggKi87IH07CiAJCTgzRkJBOTMyMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkJBOTMx
MTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLzsgfTsKKwkJODZGNDZGNjAxQTI4NDBF
RTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZGNDZGNUUxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIu
Y3BwICovOyB9OworCQk4NkY0NkY2MTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGNDZGNUYxQTI4
NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5n
Vmlld09iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld09iakMubW0gKi87IH07CiAJ
CTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDQxOEExRjE2OTAwRDBE
NkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi87IH07CiAJCTkzQUM5MUE4MTg5NDJGQzQwMDI0NDkz
OSAvKiBMQ2hhci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggKi87IH07CkBAIC0zNzEsNiAr
MzczLDggQEAKIAkJODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NkY0NkY1RTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZDb3VudGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8q
IFJlZkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291bnRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2
QTEgLyogU3RyaW5nVmlld09iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBTdHJpbmdWaWV3T2JqQy5tbTsgcGF0aCA9IG1hYy9TdHJpbmdWaWV3T2JqQy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8q
IFN0cmluZ1ZpZXdDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBT
dHJpbmdWaWV3Q0YuY3BwOyBwYXRoID0gY2YvU3RyaW5nVmlld0NGLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExDaGFyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04MzQsNiArODM4LDggQEAKIAkJCQlBOEE0NzMwMDE1MUE4MjVCMDA0MTIz
RkYgLyogUmVmQ291bnRlZEFycmF5LmggKi8sCiAJCQkJQThBNDczMDExNTFBODI1QjAwNDEyM0ZG
IC8qIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgKi8sCiAJCQkJQThBNDczMDIxNTFBODI1QjAw
NDEyM0ZGIC8qIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oICovLAorCQkJCTg2RjQ2RjVFMUEyODQw
RUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmNwcCAqLywKKwkJCQk4NkY0NkY1RjFBMjg0MEVFMDBD
Q0JGMjIgLyogUmVmQ291bnRlci5oICovLAogCQkJCUE4QTQ3MzAzMTUxQTgyNUIwMDQxMjNGRiAv
KiBSZWZQdHIuaCAqLywKIAkJCQlBOEE0NzMwNTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRy
LmggKi8sCiAJCQkJMkNERUQwRjExODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwICovLApA
QCAtMTE2Miw2ICsxMTY4LDcgQEAKIAkJCQlBOEE0NzQxQzE1MUE4MjVCMDA0MTIzRkYgLyogUmVm
UHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQxRTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0
YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQ0RFRDBGNDE4MTE1Qzg1MDA0REJBNzAgLyog
UnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZGNDZGNjExQTI4NDBFRTAwQ0NCRjIyIC8q
IFJlZkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Njk0MTkyMTZFQUFGNkQwMDI0RTE0
NiAvKiBSdW5Mb29wVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RjNCMEY3MTVFNDVFNDYw
MDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDY5
NDE5NjE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggaW4gSGVhZGVycyAqLywKQEAg
LTEzMzUsNiArMTM0Miw3IEBACiAJCQkJQThBNDczOUExNTFBODI1QjAwNDEyM0ZGIC8qIENyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDM5
MTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
MzlDMTUxQTgyNUIwMDQxMjNGRiAvKiBDdXJyZW50VGltZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk4NkY0NkY2MDFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEE0NzM5RTE1MUE4MjVCMDA0MTIzRkYgLyogRGF0YUxvZy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzNBMDE1MUE4MjVCMDA0MTIzRkYgLyogRGF0ZU1hdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczQTIxNTFBODI1QjAwNDEyM0ZGIC8qIERlY2ltYWxOdW1iZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTc2
NTA3KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDYgKzgyLDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgUmVmLmgKICAgICBSZWZDb3VudGVk
LmgKICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaAorICAgIFJlZkNvdW50ZXIuaAogICAgIFJl
ZlB0ci5oCiAgICAgUmV0YWluUHRyLmgKICAgICBSdW5Mb29wLmgKQEAgLTE3NSw2ICsxNzYsNyBA
QCBzZXQoV1RGX1NPVVJDRVMKICAgICBSQU1TaXplLmNwcAogICAgIFJhbmRvbU51bWJlci5jcHAK
ICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwCisgICAgUmVmQ291bnRlci5jcHAKICAgICBS
dW5Mb29wLmNwcAogICAgIFNIQTEuY3BwCiAgICAgU2l4Q2hhcmFjdGVySGFzaC5jcHAKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1JlZkNvdW50ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvUmVmQ291
bnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWZDb3VudGVyLmgiCisKK25hbWVzcGFjZSBX
VEYgeworCit2b2lkIFJlZkNvdW50ZXI6OkNvdW50OjpyZWYoKQoreworICAgICsrbV92YWx1ZTsK
KworICAgIGlmIChtX3JlZkNvdW50ZXIpCisgICAgICAgIG1fcmVmQ291bnRlci0+bV92YWx1ZURp
ZENoYW5nZSgpOworfQorCit2b2lkIFJlZkNvdW50ZXI6OkNvdW50OjpkZXJlZigpCit7CisgICAg
QVNTRVJUKG1fdmFsdWUpOworICAgIC0tbV92YWx1ZTsKKworICAgIC8vIFRoZSBDb3VudGVyIG9i
amVjdCBpcyBrZXB0IGFsaXZlIHNvIGxvbmcgYXMgZWl0aGVyIHRoZSBSZWZDb3VudGVyIHRoYXQg
Y3JlYXRlZCBpdCByZW1haW5zCisgICAgLy8gYWxsb2NhdGVkLCBvciBzbyBsb25nIGFzIGl0cyBy
ZWZlcmVuY2UgY291bnQgaXMgbm9uLXplcm8uCisgICAgLy8gSWYgdGhlIFJlZkNvdW50ZXIgaGFz
IGFscmVhZHkgYmVlbiBkZWFsbG9jdGVkIHRoZW4gZGVsZXRlIHRoZSBDb3VudCB3aGVuIGl0cyBy
ZWZlcmVuY2UKKyAgICAvLyBjb3VudCByZWFjaGVzIHplcm8uCisgICAgaWYgKG1fcmVmQ291bnRl
cikKKyAgICAgICAgbV9yZWZDb3VudGVyLT5tX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgZWxzZSBp
ZiAoIW1fdmFsdWUpCisgICAgICAgIGRlbGV0ZSB0aGlzOworfQorCitSZWZDb3VudGVyOjpSZWZD
b3VudGVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiB2YWx1ZURpZENoYW5nZSkKKyAgICA6IG1fdmFs
dWVEaWRDaGFuZ2UodmFsdWVEaWRDaGFuZ2UpCisgICAgLCBtX2NvdW50KG5ldyBDb3VudCgqdGhp
cykpCit7Cit9CisKK1JlZkNvdW50ZXI6On5SZWZDb3VudGVyKCkKK3sKKyAgICAvLyBUaGUgQ291
bnQgb2JqZWN0IGlzIGtlcHQgYWxpdmUgc28gbG9uZyBhcyBlaXRoZXIgdGhlIFJlZkNvdW50ZXIg
dGhhdCBjcmVhdGVkIGl0IHJlbWFpbnMKKyAgICAvLyBhbGxvY2F0ZWQsIG9yIHNvIGxvbmcgYXMg
aXRzIHJlZmVyZW5jZSBjb3VudCBpcyBub24temVyby4KKyAgICAvLyBJZiB0aGUgcmVmZXJlbmNl
IGNvdW50IG9mIHRoZSBDb3VudCBpcyBhbHJlYWR5IHplcm8gdGhlbiBkZWxldGUgaXQgbm93LCBv
dGhlcndpc2UKKyAgICAvLyBjbGVhciBpdHMgbV9yZWZDb3VudGVyIHBvaW50ZXIuCisgICAgaWYg
KG1fY291bnQtPm1fdmFsdWUpCisgICAgICAgIG1fY291bnQtPm1fcmVmQ291bnRlciA9IG51bGxw
dHI7CisgICAgZWxzZQorICAgICAgICBkZWxldGUgbV9jb3VudDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dURi93dGYvUmVmQ291bnRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
VEYvd3RmL1JlZkNvdW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBSZWZDb3VudGVyX2gKKyNkZWZpbmUgUmVmQ291bnRlcl9oCisKKyNp
bmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFJlZkNvdW50ZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZkNvdW50ZXIpOworcHVibGljOgorICAgIGNs
YXNzIENvdW50IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ291bnQpOworICAgIHB1
YmxpYzoKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVmKCk7CisgICAgICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlcmVmKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgUmVmQ291bnRlcjsKKworICAgICAgICBDb3VudChSZWZDb3VudGVyJiByZWZD
b3VudGVyKQorICAgICAgICAgICAgOiBtX3JlZkNvdW50ZXIoJnJlZkNvdW50ZXIpCisgICAgICAg
ICAgICAsIG1fdmFsdWUoMCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVmQ291
bnRlciogbV9yZWZDb3VudGVyOworICAgICAgICB1bnNpZ25lZCBtX3ZhbHVlOworICAgIH07CisK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmQ291bnRlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
PSBbXSgpIHsgfSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5SZWZDb3VudGVyKCk7CisKKyAg
ICBQYXNzUmVmPENvdW50PiBjb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKm1f
Y291bnQ7CisgICAgfQorCisgICAgdW5zaWduZWQgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fY291bnQtPm1fdmFsdWU7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBtX3ZhbHVlRGlkQ2hhbmdlOworICAgIENvdW50KiBtX2NvdW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UmVmQ291bnRlcjsKKworI2Vu
ZGlmIC8vIFJlZkNvdW50ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc2NTczKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzQgQEAK
KzIwMTQtMTItMDEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIEdlbmVyYWxpemUgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTEwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhZ2VBY3Rpdml0eUFzc2Vy
dGlvblRva2VuIGlzIGEgUkFJSSBtZWNoYW5pc20gaW1wbGVtZW50aW5nIGEgY291bnRlciwgdXNl
ZCBieSBQYWdlVGhyb3R0bGVyCisgICAgICAgIHRvIGNvdW50IHVzZXIgdmlzaWJsZSBhY3Rpdml0
eSBpbiBwcm9ncmVzcyBvbiB0aGUgcGFnZSAoY3VycmVudGx5IHBhZ2UgbG9hZCBhbmQgbWVkaWEg
cGxheWJhY2spLgorICAgICAgICBVc2Ugb2YgYW4gUkFJSSB0eXBlIGlzIHByZXZlbnRzIGEgbnVt
YmVyIG9mIHBvc3NpYmxlIGVycm9ycywgaW5jbHVkaW5nIGRvdWJsZSBjb3VudGluZyBhIHNpbmds
ZQorICAgICAgICBtZWRpYSBlbGVtZW50LCBvciBmYWlsaW5nIHRvIGRlY3JlbWVudCB0aGUgY291
bnQgYWZ0ZXIgYSBtZWRpYSBlbGVtZW50IGhhcyBiZWVuIGRlYWxsb2NhdGVkLgorCisgICAgICAg
IFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGhhcyBhIG51bWJlciBvZiBkcmF3YmFja3MgdGhh
dCBoYXZlIGJlZW4gYWRkcmVzc2VkIGJ5IHRoaXMgcmVmYWN0b3Jpbmc6CisgICAgICAgICAtIHNw
ZWNpZmljIHRvIHNpbmdsZSB1c2UgaW4gUGFnZVRocm90dGxlciBjbGFzcyAtIG5vdCByZXVzYWJs
ZS4KKyAgICAgICAgIC0gaW5jb21wbGV0ZSBlbmNhcHN1bGF0aW9uIC0gdGhlIGNvdW50ZXIgYW5k
IFdlYWtQdHJGYWN0b3J5IHRoYXQgY29tcHJpc2UgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgICAgYXJlIG5vdCBlbmNhcHN1bGF0ZWQgKGFyZSBpbiB0aGUgY2xpZW50IHR5cGUs
IFBhZ2VUaHJvdHRsZXIpLgorICAgICAgICAgLSB0b2tlbnMgYXJlIG5vdCBzaGFyZWQgLSBQYWdl
QWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBpbnN0YW5jZXMgYXJlIG1hbmFnZWQgYnkgc3RkOjp1bmlx
dWUsIGV2ZXJ5CisgICAgICAgICAgIGluY3JlbWVudCByZXF1aXJlcyBhbiBvYmplY3QgYWxsb2Nh
dGlvbi4KKyAgICAgICAgIC0gcmVkdW5kYW5jeSAtIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9u
IHVzZXMgYSBXZWFrUHRyIHRvIHNhZmVseSByZWZlcmVuY2UgdGhlIFBhZ2VUaHJvdHRsZXIsIHRo
aXMKKyAgICAgICAgICAgaXMgaW50ZXJuYWxseSBpbXBsZW1lbnRlZCB1c2luZyBhIHJlZmVyZW5j
ZSBjb3VudGVkIHR5cGUsIHJlc3VsdGluZyBpbiB0d28gY291bnRlcnMgYmVpbmcKKyAgICAgICAg
ICAgaW5jcmVtZW50ZWQgKG9uZSBpbiB0aGUgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4sIG9u
ZSBpbiB0aGUgUGFnZVRocm90dGxlcikuCisKKyAgICAgICAgSW4gdGhlIHJlaW1wbGVtZW50YXRp
b246CisgICAgICAgICAtIGEgY2FsbGJhY2sgaXMgcHJvdmlkZWQgdmlhIGEgbGFtYmRhIGZ1bmN0
aW9uLCB3aGljaCBhbGxvd3MgZm9yIGVhc3kgcmV1c2Ugd2l0aG91dCBhIGxvdCBvZgorICAgICAg
ICAgICBib2lsZXJwbGF0ZSBjb2RlLgorICAgICAgICAgLSB0aGUgY291bnRlciwgY2FsbGJhY2sg
YW5kIG93bmVyc2hpcCBvZiB0aGUgb3RoZXJ3aXNlIHdlYWtseS1vd25lZCB0b2tlbiBpcyBlbmNh
cHN1bGF0ZWQgd2l0aGluIHRoZQorICAgICAgICAgICBSZWZDb3VudGVyIHR5cGUuCisgICAgICAg
ICAtIGEgc2luZ2xlIGNvdW50IHdpdGhpbiBSZWZDb3VudGVyOjpDb3VudCBzdG9yZXMgdGhlIGNv
dW50ZXIgdmFsdWUsIGFuZCBhbHNvIG1hbmFnZSB0aGUgbGlmZXRpbWUKKyAgICAgICAgICAgb2Yg
dGhpcyBvYmplY3QuCisgICAgICAgICAtIHN0YW5kYXJkIFJlZlB0cnMgYXJlIHVzZWQgdG8gbWFu
YWdlIHJlZmVyZW5jZXMgdG8gdGhlIFJlZkNvdW50ZXI6OkNvdW50LgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAgICAgLSByZW1vdmVkIFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcC8uaAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgICAgICAtIHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0aW9u
VG9rZW4uaAorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAgICAg
LSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFJlZlB0cjxS
ZWZDb3VudGVyOjpDb3VudD4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAgICAgLSByZW1vdmVkIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgICAgIC0gc3RkOjp1bmlxdWVfcHRyPFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiAtPiBSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgICAgIC0gcmVt
b3ZlZCBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oCisgICAgICAgICogbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICAgICAtIHJlbW92ZWQgY2xhc3MgUGFnZUFjdGl2aXR5
QXNzZXJ0aW9uVG9rZW4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAgICAgLSBy
ZW1vdmVkIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OlBhZ2UpOgorICAgICAgICAgICAgLSByZW1vdmVkIFBhZ2UqIHBhcmFtZXRlciB0byBQYWdl
VGhyb3R0bGVyCisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICAgICAtIHJlbW92ZWQg
Y2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4KKyAgICAgICAgKiBwYWdlL1BhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuLmg6IFJlbW92ZWQuCisgICAgICAgICAgICAtIHJlbW92ZWQgUGFn
ZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwLy5oCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OlBhZ2VUaHJvdHRsZXIp
OgorICAgICAgICAgICAgLSByZW1vdmVkIG1fcGFnZSwgbV93ZWFrUHRyRmFjdG9yeSwgbV9hY3Rp
dml0eUNvdW50OyBhZGRlZCBtX3BhZ2VBY3Rpdml0eUNvdW50ZXIuCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlVGhyb3R0bGVyOjptZWRpYUFjdGl2aXR5VG9rZW4pOgorICAgICAgICAgICAgLSBzdGQ6
OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFBhc3NSZWZQdHI8UmVm
Q291bnRlcjo6Q291bnQ+CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpwYWdlTG9h
ZEFjdGl2aXR5VG9rZW4pOgorICAgICAgICAgICAgLSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFBhc3NSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpwYWdlQWN0aXZpdHlDb3VudGVyVmFsdWVEaWRD
aGFuZ2UpOgorICAgICAgICAgICAgLSBtZXJnZWQgZnVuY3Rpb25hbGl0eSBvZiBpbmNyZW1lbnRB
Y3Rpdml0eUNvdW50L2RlY3JlbWVudEFjdGl2aXR5Q291bnQKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VUaHJvdHRsZXI6OmluY3JlbWVudEFjdGl2aXR5Q291bnQpOiBEZWxldGVkLgorICAgICAgICAg
ICAgLSBzZWUgcGFnZUFjdGl2aXR5Q291bnRlclZhbHVlRGlkQ2hhbmdlCisgICAgICAgIChXZWJD
b3JlOjpQYWdlVGhyb3R0bGVyOjpkZWNyZW1lbnRBY3Rpdml0eUNvdW50KTogRGVsZXRlZC4KKyAg
ICAgICAgICAgIC0gc2VlIHBhZ2VBY3Rpdml0eUNvdW50ZXJWYWx1ZURpZENoYW5nZQorICAgICAg
ICAqIHBhZ2UvUGFnZVRocm90dGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxl
cjo6d2Vha1B0cik6IERlbGV0ZWQuCisgICAgICAgICAgICAtIG5vIGxvbmdlciByZXF1aXJlZDsg
dGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdyBlbmNhcHN1bGF0ZWQgd2l0aGluIFJlZkNvdW50ZXIu
CisKIDIwMTQtMTEtMjggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBN
b3ZlIHRoZSAnLXdlYmtpdC1pbml0aWFsLWxldHRlcicsICctd2Via2l0LWxpbmUtYm94LWNvbnRh
aW4nIGFuZCAnLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCcgQ1NTIHByb3BlcnRpZXMgdG8gdGhl
IG5ldyBTdHlsZUJ1aWxkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNzY1
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTkxMSw3ICsxOTExLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2UvTmF2aWdhdG9y
QmFzZS5jcHAKICAgICBwYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmNwcAogICAgIHBhZ2UvUGFnZS5j
cHAKLSAgICBwYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcAogICAgIHBhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwCiAgICAgcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKICAgICBw
YWdlL1BhZ2VHcm91cC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzE4OSw3
ICs3MTg5LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcTmF2aWdhdG9yQmFz
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXE9yaWdpbkFjY2Vzc0Vu
dHJ5LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcUGFnZS5jcHAiIC8+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXFBhZ2VBY3Rpdml0eUFzc2VydGlvblRv
a2VuLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxQYWdlQ29uc29s
ZUNsaWVudC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXFBhZ2VHcm91
cC5jcHAiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1OTUsNyAr
NTU5NSw2IEBACiAJCUNDQzJCNTE0MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTEwMTVG
NjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQ0MyQjUxNTE1RjYxMzA2MDA0OENERDYgLyogRGV2
aWNlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDQ0MyQjUxMTE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAg
Ki87IH07CiAJCUNDQzJCNTE2MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMjE1
RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUNEMDgyODVDMTc1NzI1MEYwMEVDNUZCNyAv
KiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA4Mjg1QTE3NTcyNTA4MDBFQzVGQjcgLyogUGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwICovOyB9OwogCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFG
QTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0
aW5hdGlvbklPUy5jcHAgKi87IH07CiAJCUNEMTI3REVEMTRGMzA5N0QwMEU4NDc3OSAvKiBXZWJD
b3JlRnVsbFNjcmVlbldpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMTI3REVCMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVl
bldpbmRvdy5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8qIFdlYkNvcmVG
dWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTMwNTUsOCArMTMwNTQsNiBAQAogCQlDQ0MyQjUxMDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNl
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZUNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQ0MyQjUxMTE1RjYxMzA2MDA0OENERDYg
LyogRGV2aWNlQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEZXZpY2VDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDRDA4Mjg1QTE3NTcyNTA4MDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5
QXNzZXJ0aW9uVG9rZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDA4Mjg1QjE3NTcy
NTA4MDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0QwRUVFMEExNDc0M0UzNDAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9EZXN0aW5hdGlvbklPUy5oOyBw
YXRoID0gaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHA7IHBhdGggPSBpb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNj
cmVlbldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVs
bFNjcmVlbldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY2NzcsOCAr
MTY2NzQsNiBAQAogCQkJCTAwMTQ2Mjg5MTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NF
bnRyeS5oICovLAogCQkJCTY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLywK
IAkJCQk2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovLAotCQkJCUNEMDgyODVB
MTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAgKi8sCi0J
CQkJQ0QwODI4NUIxNzU3MjUwODAwRUM1RkI3IC8qIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2Vu
LmggKi8sCiAJCQkJQ0Q1RTVCNjAxQTE1RjE1NjAwMEM2MDlFIC8qIFBhZ2VDb25maWd1cmF0aW9u
LmNwcCAqLywKIAkJCQlDRDVFNUI1RTFBMTVDRTU0MDAwQzYwOUUgLyogUGFnZUNvbmZpZ3VyYXRp
b24uaCAqLywKIAkJCQlEQUFDQjNEOTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGVDbGll
bnQuY3BwICovLApAQCAtMjkxMTgsNyArMjkxMTMsNiBAQAogCQkJCUZENTgxRkFFMTUyMEY5MUYw
MDNBN0E3NSAvKiBPc2NpbGxhdG9yTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTBENTcz
NjBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlDRDA4Mjg1QzE3NTcyNTBGMDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3N0U3NzYwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VD
YWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzgyMDg5MjE0N0QzNUY5MDAxMEJDMDYgLyog
UGFnZUNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQUVEMjAzMDE2RjI0NDJC
MDA3MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NjUwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDYgQEAKICNpbmNsdWRlICJNZWRpYVJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250
ZXh0LmgiCi0jaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRl
ICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJNZWRpYUNh
blN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCkBAIC02NSw3
ICs2Niw2IEBAIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBj
bGFzcyBNZWRpYUNvbnRyb2xzSG9zdDsKIGNsYXNzIE1lZGlhRXJyb3I7Ci1jbGFzcyBQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKIGNsYXNzIE1lZGlhS2V5czsKQEAgLTg5OSw3ICs4OTksNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SFRNTE1lZGlhU2Vzc2lvbj4gbV9t
ZWRpYVNlc3Npb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRv
a2VuPiBtX2FjdGl2aXR5VG9rZW47CisgICAgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gbV9h
Y3Rpdml0eVRva2VuOwogICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0OwogCiAj
aWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNiBAQAogI2lu
Y2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCiAjaW5jbHVk
ZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgogI2luY2x1ZGUgIlBh
Z2VUcmFuc2l0aW9uRXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkljb25VUkwuaCIK
ICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5jbHVkZSAiTWl4ZWRDb250ZW50Q2hl
Y2tlci5oIgorI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZVR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkTm90aWZpZXIuaCIKICNpbmNsdWRl
ICJTZWN1cml0eUNvbnRleHQuaCIKQEAgLTY2LDcgKzY3LDYgQEAgY2xhc3MgSWNvbkNvbnRyb2xs
ZXI7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBj
bGFzcyBQYWdlOwotY2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQb2xp
Y3lDaGVja2VyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
QEAgLTQ0Myw3ICs0NDMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1fcHJldmlvdXNVUkw7CiAg
ICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rpdml0eUFzc2VydGlv
bjsKKyAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBtX2FjdGl2aXR5QXNzZXJ0aW9uOwog
fTsKIAogLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgY3JlYXRlV2luZG93KCkgaW4gSlNE
T01XaW5kb3dCYXNlLmNwcCwgZm9yIGV4YW1wbGUsIGZvcgpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNh
Y2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlv
blRva2VuLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTc2NTA3KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmVz
b3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIERvY3VtZW50OwotY2xh
c3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAK
IGNsYXNzIFN1YnJlc291cmNlTG9hZGVyIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQAogI2luY2x1
ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCi0jaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNz
ZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJQYWdlQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCkBAIC0xOTUsNyAr
MTk0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYgcGFnZUNvbmZpZwogI2VuZGlm
CiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5h
dGl2ZVRleHRDbGllbnQpCiAgICAgLCBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZChmYWxz
ZSkKLSAgICAsIG1fcGFnZVRocm90dGxlcigqdGhpcywgbV92aWV3U3RhdGUpCisgICAgLCBtX3Bh
Z2VUaHJvdHRsZXIobV92aWV3U3RhdGUpCiAgICAgLCBtX2NvbnNvbGVDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQogICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZURlYnVnZ2FibGU+KCp0aGlzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxNzY1MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyAr
ODAsNiBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVy
OwogY2xhc3MgTWFpbkZyYW1lOwogY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwotY2xhc3Mg
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNs
YXNzIFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcAko
cmV2aXNpb24gMTc2NTA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQYWdlQWN0aXZpdHlBc3NlcnRpb25U
b2tlbi5oIgotCi0jaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOjpQYWdlQWN0aXZpdHlBc3NlcnRpb25U
b2tlbihQYWdlVGhyb3R0bGVyJiB0aHJvdHRsZXIpCi0gICAgOiBtX3Rocm90dGxlcih0aHJvdHRs
ZXIud2Vha1B0cigpKQotewotICAgIHRocm90dGxlci5pbmNyZW1lbnRBY3Rpdml0eUNvdW50KCk7
Ci19Ci0KLVBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOjp+UGFnZUFjdGl2aXR5QXNzZXJ0aW9u
VG9rZW4oKQotewotICAgIGlmIChQYWdlVGhyb3R0bGVyKiB0aHJvdHRsZXIgPSBtX3Rocm90dGxl
ci5nZXQoKSkKLSAgICAgICAgdGhyb3R0bGVyLT5kZWNyZW1lbnRBY3Rpdml0eUNvdW50KCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oCShyZXZpc2lvbiAxNzY1MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW5faAotI2RlZmluZSBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbl9o
Ci0KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBhZ2VUaHJvdHRsZXI7Ci0KLWNsYXNz
IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbik7Ci1wdWJsaWM6Ci0gICAgUGFnZUFjdGl2aXR5QXNz
ZXJ0aW9uVG9rZW4oUGFnZVRocm90dGxlciYpOwotICAgIH5QYWdlQWN0aXZpdHlBc3NlcnRpb25U
b2tlbigpOwotCi1wcml2YXRlOgotICAgIFdlYWtQdHI8UGFnZVRocm90dGxlcj4gbV90aHJvdHRs
ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5j
cHAJKHJldmlzaW9uIDE3NjUwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKIAotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZVRocm90dGxl
cjo6UGFnZVRocm90dGxlcihQYWdlJiBwYWdlLCBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkK
LSAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV92aWV3U3RhdGUodmlld1N0YXRlKQotICAgICwg
bV93ZWFrUHRyRmFjdG9yeSh0aGlzKQorUGFnZVRocm90dGxlcjo6UGFnZVRocm90dGxlcihWaWV3
U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKKyAgICA6IG1fdmlld1N0YXRlKHZpZXdTdGF0ZSkKICAg
ICAsIG1faHlzdGVyZXNpcygqdGhpcykKLSAgICAsIG1fYWN0aXZpdHlDb3VudCgwKQorICAgICwg
bV9wYWdlQWN0aXZpdHlDb3VudGVyKFt0aGlzXSgpIHsgcGFnZUFjdGl2aXR5Q291bnRlclZhbHVl
RGlkQ2hhbmdlKCk7IH0pCiB7CiAgICAgdXBkYXRlVXNlckFjdGl2aXR5KCk7CiB9CkBAIC00Nywz
NiArNDMsMjUgQEAgdm9pZCBQYWdlVGhyb3R0bGVyOjpjcmVhdGVVc2VyQWN0aXZpdHkoKQogICAg
IHVwZGF0ZVVzZXJBY3Rpdml0eSgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5
QXNzZXJ0aW9uVG9rZW4+IFBhZ2VUaHJvdHRsZXI6Om1lZGlhQWN0aXZpdHlUb2tlbigpCitQYWdl
QWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBQYWdlVGhyb3R0bGVyOjptZWRpYUFjdGl2aXR5VG9rZW4o
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRv
a2VuPigqdGhpcyk7CisgICAgcmV0dXJuIG1fcGFnZUFjdGl2aXR5Q291bnRlci5jb3VudCgpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IFBhZ2VUaHJv
dHRsZXI6OnBhZ2VMb2FkQWN0aXZpdHlUb2tlbigpCitQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tl
biBQYWdlVGhyb3R0bGVyOjpwYWdlTG9hZEFjdGl2aXR5VG9rZW4oKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuPigqdGhpcyk7CisgICAg
cmV0dXJuIG1fcGFnZUFjdGl2aXR5Q291bnRlci5jb3VudCgpOwogfQogCi12b2lkIFBhZ2VUaHJv
dHRsZXI6OmluY3JlbWVudEFjdGl2aXR5Q291bnQoKQordm9pZCBQYWdlVGhyb3R0bGVyOjpwYWdl
QWN0aXZpdHlDb3VudGVyVmFsdWVEaWRDaGFuZ2UoKQogewotICAgIC8vIElmIG1fYWN0aXZpdHlD
b3VudCBpcyBub256ZXJvLCBzdGF0ZSBtdXN0IGJlIFN0YXJ0ZWQ7IGlmIG1fYWN0aXZpdHlDb3Vu
dCBpcyB6ZXJvLCBzdGF0ZSBtYXkgYmUgV2FpdGluZyBvciBTdG9wcGVkLgotICAgIEFTU0VSVCgh
IW1fYWN0aXZpdHlDb3VudCA9PSAobV9oeXN0ZXJlc2lzLnN0YXRlKCkgPT0gSHlzdGVyZXNpc1N0
YXRlOjpTdGFydGVkKSk7Ci0KLSAgICBpZiAoIW1fYWN0aXZpdHlDb3VudCsrKQorICAgIGlmICht
X3BhZ2VBY3Rpdml0eUNvdW50ZXIudmFsdWUoKSkKICAgICAgICAgbV9oeXN0ZXJlc2lzLnN0YXJ0
KCk7Ci0KLSAgICBBU1NFUlQobV9hY3Rpdml0eUNvdW50ICYmIG1faHlzdGVyZXNpcy5zdGF0ZSgp
ID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCk7Ci19Ci0KLXZvaWQgUGFnZVRocm90dGxlcjo6
ZGVjcmVtZW50QWN0aXZpdHlDb3VudCgpCi17Ci0gICAgQVNTRVJUKG1fYWN0aXZpdHlDb3VudCAm
JiBtX2h5c3RlcmVzaXMuc3RhdGUoKSA9PSBIeXN0ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQpOwotCi0g
ICAgaWYgKCEtLW1fYWN0aXZpdHlDb3VudCkKKyAgICBlbHNlCiAgICAgICAgIG1faHlzdGVyZXNp
cy5zdG9wKCk7CiAKLSAgICAvLyBJZiBtX2FjdGl2aXR5Q291bnQgaXMgbm9uemVybywgc3RhdGUg
bXVzdCBiZSBTdGFydGVkOyBpZiBtX2FjdGl2aXR5Q291bnQgaXMgemVybywgc3RhdGUgbWF5IGJl
IFdhaXRpbmcgb3IgU3RvcHBlZC4KLSAgICBBU1NFUlQoISFtX2FjdGl2aXR5Q291bnQgPT0gKG1f
aHlzdGVyZXNpcy5zdGF0ZSgpID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCkpOworICAgIC8v
IElmIHRoZSBjb3VudGVyIGlzIG5vbnplcm8sIHN0YXRlIG11c3QgYmUgU3RhcnRlZDsgaWYgdGhl
IGNvdW50ZXIgaXMgemVybywgc3RhdGUgbWF5IGJlIFdhaXRpbmcgb3IgU3RvcHBlZC4KKyAgICBB
U1NFUlQoISFtX3BhZ2VBY3Rpdml0eUNvdW50ZXIudmFsdWUoKSA9PSAobV9oeXN0ZXJlc2lzLnN0
YXRlKCkgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdGFydGVkKSk7CiB9CiAKIHZvaWQgUGFnZVRocm90
dGxlcjo6dXBkYXRlVXNlckFjdGl2aXR5KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVRocm90dGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90
dGxlci5oCShyZXZpc2lvbiAxNzY1MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJv
dHRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMzEgKzMwLDI3IEBACiAKICNpbmNsdWRlICJV
c2VyQWN0aXZpdHkuaCIKICNpbmNsdWRlICJWaWV3U3RhdGUuaCIKLSNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwordHlw
ZWRlZiBSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2Vu
OwogCiBjbGFzcyBQYWdlVGhyb3R0bGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBQYWdlVGhyb3R0bGVyKFBhZ2UmLCBWaWV3U3RhdGU6OkZsYWdzKTsKKyAg
ICBQYWdlVGhyb3R0bGVyKFZpZXdTdGF0ZTo6RmxhZ3MpOwogCiAgICAgdm9pZCBjcmVhdGVVc2Vy
QWN0aXZpdHkoKTsKICAgICB2b2lkIHNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzKTsKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnB1dCgpIHsgbV9oeXN0ZXJlc2lzLmltcHVsc2UoKTsg
fQogICAgIHZvaWQgcGx1Z2luRGlkRXZhbHVhdGVXaGlsZUF1ZGlvSXNQbGF5aW5nKCkgeyBtX2h5
c3RlcmVzaXMuaW1wdWxzZSgpOyB9Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFz
c2VydGlvblRva2VuPiBtZWRpYUFjdGl2aXR5VG9rZW4oKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IHBhZ2VMb2FkQWN0aXZpdHlUb2tlbigpOworICAg
IFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIG1lZGlhQWN0aXZpdHlUb2tlbigpOworICAgIFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuIHBhZ2VMb2FkQWN0aXZpdHlUb2tlbigpOwogCiBwcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjsKLSAgICBX
ZWFrUHRyPFBhZ2VUaHJvdHRsZXI+IHdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5
LmNyZWF0ZVdlYWtQdHIoKTsgfQotICAgIHZvaWQgaW5jcmVtZW50QWN0aXZpdHlDb3VudCgpOwot
ICAgIHZvaWQgZGVjcmVtZW50QWN0aXZpdHlDb3VudCgpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5
Q291bnRlclZhbHVlRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHVwZGF0ZVVzZXJBY3Rpdml0eSgp
OwogCkBAIC02MiwxMiArNTgsMTAgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0YXJ0ZWQoKTsKICAgICB2b2lkIHN0b3BwZWQoKTsKIAotICAgIFBhZ2UmIG1fcGFnZTsKICAg
ICBWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlOwotICAgIFdlYWtQdHJGYWN0b3J5PFBhZ2VU
aHJvdHRsZXI+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgSHlzdGVyZXNpc0FjdGl2aXR5PFBhZ2VU
aHJvdHRsZXI+IG1faHlzdGVyZXNpczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlckFjdGl2aXR5
OjpJbXBsPiBtX2FjdGl2aXR5OwotICAgIHNpemVfdCBtX2FjdGl2aXR5Q291bnQ7CisgICAgUmVm
Q291bnRlciBtX3BhZ2VBY3Rpdml0eUNvdW50ZXI7CiB9OwogCiB9CkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzY2NTUpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0x
Mi0wMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgR2VuZXJhbGl6ZSBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5MTA2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IGZvciBXVEY6
OlJlZkNvdW50ZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SZWZDb3VudGVyLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgICAgIC0gYWRkZWQgUmVmQ291bnRlciB0ZXN0LgorCiAyMDE0LTEyLTAyICBFdmEg
QmFsYXpzZmFsdmkgIDxldmFiLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0VGTF0gUmVtb3ZlIGVkYnVzIGRlcGVuZGVuY3kgZnJvbSBqaGJ1aWxkCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTc2NTA3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEzMiw2ICsxMzIsNyBAQAogCQk3Q0ZCQ0FERjE3NDMyMzRGMDBCMkJGQ0YgLyogV2lsbExv
YWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NG
QkNBREQxNzQzMjM0RjAwQjJCRkNGIC8qIFdpbGxMb2FkLmNwcCAqLzsgfTsKIAkJN0NGQkNBRTUx
NzQzMjM4RjAwQjJCRkNGIC8qIFdpbGxMb2FkX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZCQ0FFMzE3NDMyMzhFMDBCMkJGQ0YgLyog
V2lsbExvYWRfQnVuZGxlLmNwcCAqLzsgfTsKIAkJODFCNTAxOTMxNDBGMjMyMzAwRDlFQjU4IC8q
IFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxkZXIuY3BwICov
OyB9OworCQk4NkJEMTk5ODFBMkRCMDVCMDA2RENGMEEgLyogUmVmQ291bnRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJEMTk5NzFBMkRCMDVC
MDA2RENGMEEgLyogUmVmQ291bnRlci5jcHAgKi87IH07CiAJCThBMkM3NTBFMTZDRUQ5NTUwMDI0
RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNp
emVXaW5kb3dBZnRlckNyYXNoLmNwcCAqLzsgfTsKIAkJOEEzQUY5M0IxNkM5RUQyNzAwRDI0OEMx
IC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDhBM0FGOTNBMTZDOUVEMjcwMEQyNDhDMSAvKiBSZWxvYWRQYWdl
QWZ0ZXJDcmFzaC5jcHAgKi87IH07CiAJCThBQTI4QzFBMTZEMkZBN0IwMDJGRjREQiAvKiBMb2Fk
UGFnZU9uQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEFBMjhDMTkxNkQyRkE3QjAwMkZGNERCIC8qIExvYWRQYWdlT25DcmFzaC5jcHAgKi87
IH07CkBAIC00OTMsNiArNDk0LDcgQEAKIAkJN0NGQkNBREQxNzQzMjM0RjAwQjJCRkNGIC8qIFdp
bGxMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbGxMb2Fk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGQkNBRTMxNzQzMjM4RTAwQjJC
RkNGIC8qIFdpbGxMb2FkX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXaWxsTG9hZF9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MUI1MDE5MjE0MEYyMzIzMDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCRDE5OTcxQTJEQjA1QjAwNkRDRjBBIC8qIFJlZkNvdW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmQ291bnRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1
MiAvKiBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlc2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4QTNBRjkzQTE2QzlFRDI3MDBEMjQ4QzEgLyogUmVsb2FkUGFnZUFmdGVy
Q3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVsb2FkUGFn
ZUFmdGVyQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUEyOEMxOTE2
RDJGQTdCMDAyRkY0REIgLyogTG9hZFBhZ2VPbkNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRQYWdlT25DcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NTcsNiArOTU5LDcgQEAKIAkJCQkxQUZERTY1NDE5NTNCMkMwMDBDNDhG
RkEgLyogT3B0aW9uYWwuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBS
ZWRCbGFja1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAvKiBSZWYu
Y3BwICovLAorCQkJCTg2QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNwcCAq
LywKIAkJCQk5M0E0MjdBRDE4MERBNjBGMDBDRDI0RDcgLyogUmVmTG9nZ2VyLmggKi8sCiAJCQkJ
OTNBNDI3QTgxODBEOUIwNzAwQ0QyNEQ3IC8qIFJlZlB0ci5jcHAgKi8sCiAJCQkJQ0Q1MzkzQzkx
NzU3QkFDNDAwQzA3MTIzIC8qIFNIQTEuY3BwICovLApAQCAtMTM4NCw2ICsxMzg3LDcgQEAKIAkJ
CQlDREMyQzcxNTE3OTcwRERCMDBFNjI3RkIgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUZDRjc5QTE1MzRBQzZEMDAxMDQ0OTEgLyogU2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NTYxOTUzQjJDMDAwQzQ4RkZB
IC8qIE9wdGlvbmFsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2QkQxOTk4MUEyREIwNUIwMDZE
Q0YwQSAvKiBSZWZDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1NDBGNzc2MTUyRTRE
QTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTRBNDEw
RjRDMTlBRjdCRDYwMDJFQkFCNSAvKiBVc2VyTWVkaWEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzAyQjc3RjIxMjY2MTIxNDAwMjZCRjBGIC8qIFNwYWNlYmFyU2Nyb2xsaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRl
ci5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZD
b3VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBjb25zdCBpbnQgQ2FsbGJhY2tFeHBlY3Rl
ZCA9IDB4QzBGRkVFOworc3RhdGljIGNvbnN0IGludCBDYWxsYmFja05vdEV4cGVjdGVkID0gMHhE
RUNBRjsKKworVEVTVChXVEYsIFJlZkNvdW50ZXIpCit7CisgICAgLy8gUmVmQ291bnRlciBBUEkg
aXMgcHJldHR5IHNpbXBsZSwgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIDQgbWV0aG9kcyB0byB0
ZXN0OgorICAgIC8vCisgICAgLy8gMSkgUmVmQ291bnRlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4p
OworICAgIC8vIDIpIH5SZWZDb3VudGVyKCk7CisgICAgLy8gMykgUGFzc1JlZjxDb3VudD4gY291
bnQoKSBjb25zdDsKKyAgICAvLyA0KSB1bnNpZ25lZCB2YWx1ZSgpIGNvbnN0OworICAgIC8vCisg
ICAgLy8gV2UnbGwgdGVzdDoKKyAgICAvLyAxKSBDb25zdHJ1Y3Rpb246CisgICAgLy8gICAxYSkg
d2l0aCBhIGNhbGxiYWNrCisgICAgLy8gICAxYikgd2l0aG91dCBhIGNhbGxiYWNrCisgICAgLy8g
MikgRGVzdHJ1Y3Rpb24gd2hlcmUgdGhlIFJlZkNvdW50ZXI6OkNvdW50IGhhczoKKyAgICAvLyAg
IDJhKSBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCAoQ291bnQgb3V0bGl2ZXMgUmVmQ291bnRl
cikuCisgICAgLy8gICAyYikgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCAoQ291bnQgaXMgZGVsZXRl
ZCBieSBSZWZDb3VudGVyJ3MgZGVzdHJ1Y3RvcikuCisgICAgLy8gMykgQ2FsbCBjb3VudCB0byBy
ZWYvZGVyZWYgdGhlIENvdW50IG9iamVjdCwgd2hlcmU6CisgICAgLy8gICAzYSkgcmVmIHdpdGgg
Y2FsbGJhY2sgZnJvbSAwIC0+IDEuCisgICAgLy8gICAzYikgcmVmIHdpdGggY2FsbGJhY2sgZnJv
bSAxIC0+ID4xLgorICAgIC8vICAgM2MpIGRlcmVmIHdpdGggY2FsbGJhY2sgZnJvbSA+MSAtPiAx
LgorICAgIC8vICAgM2QpIGRlcmVmIHdpdGggY2FsbGJhY2sgZnJvbSAxIC0+IDAuCisgICAgLy8g
ICAzZCkgZGVyZWYgd2l0aCBjYWxsYmFjayBmcm9tIDEgLT4gMC4KKyAgICAvLyAgIDNlKSByZWYg
d2l0aCBjYWxsYmFjayBmcm9tIDEgLT4gPjEgQUZURVIgUmVmQ291bnRlciBoYXMgYmVlbiBkZXN0
cm95ZWQuCisgICAgLy8gICAzZikgZGVyZWYgd2l0aCBjYWxsYmFjayBmcm9tID4xIC0+IDEgQUZU
RVIgUmVmQ291bnRlciBoYXMgYmVlbiBkZXN0cm95ZWQuCisgICAgLy8gICAzZykgZGVyZWYgd2l0
aCBjYWxsYmFjayBmcm9tIDEgLT4gMCBBRlRFUiBSZWZDb3VudGVyIGhhcyBiZWVuIGRlc3Ryb3ll
ZC4KKyAgICAvLyAgIDNoKSByZWYgd2l0aG91dCBjYWxsYmFjaworICAgIC8vICAgM2kpIGRlcmVm
IHdpdGhvdXQgY2FsbGJhY2sKKyAgICAvLyAgIDNqKSByZWYgdXNpbmcgYSBSZWYgcmF0aGVyIHRo
YW4gYSBSZWZQdHIgKG1ha2Ugc3VyZSB0aGVyZSBpcyBubyB1bm5lY2Vzc2FyeSByZWZlcmVuY2Ug
Y291bnQgY2h1cm4pLgorICAgIC8vICAgM2spIGRlcmVmIHVzaW5nIGEgUmVmIHJhdGhlciB0aGFu
IGEgUmVmUHRyIChtYWtlIHN1cmUgdGhlcmUgaXMgbm8gdW5uZWNlc3NhcnkgcmVmZXJlbmNlIGNv
dW50IGNodXJuKS4KKyAgICAvLyA0KSBUZXN0IHRoZSB2YWx1ZSBvZiB0aGUgY291bnRlcjoKKyAg
ICAvLyAgIDRhKSBhdCBjb25zdHJ1Y3Rpb24uCisgICAgLy8gICA0YikgYXMgcmVhZCB3aXRoaW4g
dGhlIGNhbGxiYWNrLgorICAgIC8vICAgNGMpIGFzIHJlYWQgYWZ0ZXIgdGhlIHJlZi9kZXJlZi4K
KworICAgIC8vIFRoZXNlIHZhbHVlcyB3aWxsIG91dGxpdmUgdGhlIGZvbGxvd2luZyBibG9jay4K
KyAgICBpbnQgY2FsbGJhY2tWYWx1ZSA9IENhbGxiYWNrTm90RXhwZWN0ZWQ7CisgICAgUmVmUHRy
PFJlZkNvdW50ZXI6OkNvdW50PiBpbmNUbzFBZ2FpbjsKKworICAgIHsKKyAgICAgICAgLy8gVGVz
dGluZyAoMWEpIC0gQ29uc3RydWN0aW9uIHdpdGggYSBjYWxsYmFjay4KKyAgICAgICAgUmVmQ291
bnRlciBjb3VudGVyKFsmXSgpIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNhbGxi
YWNrIGlzIGNhbGxlZCBhdCB0aGUgZXhwZWN0ZWQgdGltZXMsIGFuZCB0aGUgY29ycmVjdCBudW1i
ZXIgb2YgdGltZXMuCisgICAgICAgICAgICBFWFBFQ1RfRVEoY2FsbGJhY2tWYWx1ZSwgQ2FsbGJh
Y2tFeHBlY3RlZCk7CisgICAgICAgICAgICAvLyByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBjb3Vu
dGVyIGluIHRoZSBjYWxsYmFjay4KKyAgICAgICAgICAgIGNhbGxiYWNrVmFsdWUgPSBjb3VudGVy
LnZhbHVlKCk7CisgICAgICAgIH0pOworICAgICAgICAvLyBUZXN0aW5nICg0YSkgLSBhZnRlciBj
b25zdHJ1Y3Rpb24gdmFsdWUoKSBpcyAwLgorICAgICAgICBFWFBFQ1RfRVEoMCwgc3RhdGljX2Nh
c3Q8aW50Pihjb3VudGVyLnZhbHVlKCkpKTsKKworICAgICAgICAvLyBUZXN0aW5nICgzYSkgLSBy
ZWYgd2l0aCBjYWxsYmFjayBmcm9tIDAgLT4gMS4KKyAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IENh
bGxiYWNrRXhwZWN0ZWQ7CisgICAgICAgIFJlZlB0cjxSZWZDb3VudGVyOjpDb3VudD4gaW5jVG8x
KGNvdW50ZXIuY291bnQoKSk7CisgICAgICAgIC8vIFRlc3RpbmcgKDRiKSAmICg0YykgLSB2YWx1
ZXMgd2l0aGluICYgYWZ0ZXIgY2FsbGJhY2suCisgICAgICAgIEVYUEVDVF9FUSgxLCBjYWxsYmFj
a1ZhbHVlKTsKKyAgICAgICAgRVhQRUNUX0VRKDEsIHN0YXRpY19jYXN0PGludD4oY291bnRlci52
YWx1ZSgpKSk7CisKKyAgICAgICAgLy8gVGVzdGluZyAoM2IpIC0gcmVmIHdpdGggY2FsbGJhY2sg
ZnJvbSAxIC0+IDIuCisgICAgICAgIGNhbGxiYWNrVmFsdWUgPSBDYWxsYmFja0V4cGVjdGVkOwor
ICAgICAgICBSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+IGluY1RvMihpbmNUbzEpOworICAgICAg
ICAvLyBUZXN0aW5nICg0YikgJiAoNGMpIC0gdmFsdWVzIHdpdGhpbiAmIGFmdGVyIGNhbGxiYWNr
LgorICAgICAgICBFWFBFQ1RfRVEoMiwgY2FsbGJhY2tWYWx1ZSk7CisgICAgICAgIEVYUEVDVF9F
USgyLCBzdGF0aWNfY2FzdDxpbnQ+KGNvdW50ZXIudmFsdWUoKSkpOworCisgICAgICAgIC8vIFRl
c3RpbmcgKDNjKSAtIGRlcmVmIHdpdGggY2FsbGJhY2sgZnJvbSA+MSAtPiAxLgorICAgICAgICBj
YWxsYmFja1ZhbHVlID0gQ2FsbGJhY2tFeHBlY3RlZDsKKyAgICAgICAgaW5jVG8xLmNsZWFyKCk7
CisgICAgICAgIC8vIFRlc3RpbmcgKDRiKSAmICg0YykgLSB2YWx1ZXMgd2l0aGluICYgYWZ0ZXIg
Y2FsbGJhY2suCisgICAgICAgIEVYUEVDVF9FUSgxLCBjYWxsYmFja1ZhbHVlKTsKKyAgICAgICAg
RVhQRUNUX0VRKDEsIHN0YXRpY19jYXN0PGludD4oY291bnRlci52YWx1ZSgpKSk7CisKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gVGVzdGluZyAoM2opIC0gcmVmIHVzaW5nIGEgUmVmIHJhdGhl
ciB0aGFuIGEgUmVmUHRyLgorICAgICAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IENhbGxiYWNrRXhw
ZWN0ZWQ7CisgICAgICAgICAgICBSZWY8UmVmQ291bnRlcjo6Q291bnQ+IGluY1RvMkFnYWluKGNv
dW50ZXIuY291bnQoKSk7CisgICAgICAgICAgICAvLyBUZXN0aW5nICg0YikgJiAoNGMpIC0gdmFs
dWVzIHdpdGhpbiAmIGFmdGVyIGNhbGxiYWNrLgorICAgICAgICAgICAgRVhQRUNUX0VRKDIsIGNh
bGxiYWNrVmFsdWUpOworICAgICAgICAgICAgRVhQRUNUX0VRKDIsIHN0YXRpY19jYXN0PGludD4o
Y291bnRlci52YWx1ZSgpKSk7CisgICAgICAgICAgICAvLyBUZXN0aW5nICgzaykgLSBkZXJlZiB1
c2luZyBhIFJlZiByYXRoZXIgdGhhbiBhIFJlZlB0ci4KKyAgICAgICAgICAgIGNhbGxiYWNrVmFs
dWUgPSBDYWxsYmFja0V4cGVjdGVkOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9FUSgxLCBj
YWxsYmFja1ZhbHVlKTsKKyAgICAgICAgRVhQRUNUX0VRKDEsIHN0YXRpY19jYXN0PGludD4oY291
bnRlci52YWx1ZSgpKSk7CisgICAgICAgIC8vIFRlc3RpbmcgKDRiKSAmICg0YykgLSB2YWx1ZXMg
d2l0aGluICYgYWZ0ZXIgY2FsbGJhY2suCisKKyAgICAgICAgLy8gVGVzdGluZyAoM2QpIC0gZGVy
ZWYgd2l0aCBjYWxsYmFjayBmcm9tIDEgLT4gMC4KKyAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IENh
bGxiYWNrRXhwZWN0ZWQ7CisgICAgICAgIGluY1RvMi5jbGVhcigpOworICAgICAgICAvLyBUZXN0
aW5nICg0YikgJiAoNGMpIC0gdmFsdWVzIHdpdGhpbiAmIGFmdGVyIGNhbGxiYWNrLgorICAgICAg
ICBFWFBFQ1RfRVEoMCwgY2FsbGJhY2tWYWx1ZSk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBzdGF0
aWNfY2FzdDxpbnQ+KGNvdW50ZXIudmFsdWUoKSkpOworCisgICAgICAgIC8vIFRlc3RpbmcgKDJh
KSAtIERlc3RydWN0aW9uIHdoZXJlIHRoZSBSZWZDb3VudGVyOjpDb3VudCBoYXMgYSBub24temVy
byByZWZlcmVuY2UgY291bnQuCisgICAgICAgIGNhbGxiYWNrVmFsdWUgPSBDYWxsYmFja0V4cGVj
dGVkOworICAgICAgICBpbmNUbzFBZ2FpbiA9IGNvdW50ZXIuY291bnQoKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDEsIGNhbGxiYWNrVmFsdWUpOworICAgICAgICBFWFBFQ1RfRVEoMSwgc3RhdGljX2Nh
c3Q8aW50Pihjb3VudGVyLnZhbHVlKCkpKTsKKyAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IENhbGxi
YWNrTm90RXhwZWN0ZWQ7CisgICAgfQorCisgICAgLy8gVGVzdGluZyAoM2UpIC0gcmVmIHdpdGgg
Y2FsbGJhY2sgZnJvbSAxIC0+ID4xIEFGVEVSIFJlZkNvdW50ZXIgaGFzIGJlZW4gZGVzdHJveWVk
LgorICAgIFJlZlB0cjxSZWZDb3VudGVyOjpDb3VudD4gaW5jVG8yQWdhaW4gPSBpbmNUbzFBZ2Fp
bjsKKyAgICAvLyBUZXN0aW5nICgzZikgLSBkZXJlZiB3aXRoIGNhbGxiYWNrIGZyb20gPjEgLT4g
MSBBRlRFUiBSZWZDb3VudGVyIGhhcyBiZWVuIGRlc3Ryb3llZC4KKyAgICBpbmNUbzFBZ2Fpbi5j
bGVhcigpOworICAgIC8vIFRlc3RpbmcgKDNnKSAtIGRlcmVmIHdpdGggY2FsbGJhY2sgZnJvbSAx
IC0+IDAgQUZURVIgUmVmQ291bnRlciBoYXMgYmVlbiBkZXN0cm95ZWQuCisgICAgaW5jVG8yQWdh
aW4uY2xlYXIoKTsKKworICAgIC8vIFRlc3RpbmcgKDFiKSAtIENvbnN0cnVjdGlvbiB3aXRob3V0
IGEgY2FsbGJhY2suCisgICAgUmVmQ291bnRlciBjb3VudGVyOworICAgIC8vIFRlc3RpbmcgKDRh
KSAtIGFmdGVyIGNvbnN0cnVjdGlvbiB2YWx1ZSgpIGlzIDAuCisgICAgRVhQRUNUX0VRKDAsIHN0
YXRpY19jYXN0PGludD4oY291bnRlci52YWx1ZSgpKSk7CisgICAgLy8gVGVzdGluZyAoM2gpIC0g
cmVmIHdpdGhvdXQgY2FsbGJhY2sKKyAgICBSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+IGluY1Rv
MShjb3VudGVyLmNvdW50KCkpOworICAgIC8vIFRlc3RpbmcgKDRjKSAtIHZhbHVlIGFzIHJlYWQg
YWZ0ZXIgdGhlIHJlZi4KKyAgICBFWFBFQ1RfRVEoMSwgc3RhdGljX2Nhc3Q8aW50Pihjb3VudGVy
LnZhbHVlKCkpKTsKKyAgICAvLyBUZXN0aW5nICgzaSkgLSBkZXJlZiB3aXRob3V0IGNhbGxiYWNr
CisgICAgaW5jVG8xLmNsZWFyKCk7CisgICAgLy8gVGVzdGluZyAoNGMpIC0gdmFsdWUgYXMgcmVh
ZCBhZnRlciB0aGUgZGVyZWYuCisgICAgRVhQRUNUX0VRKDAsIHN0YXRpY19jYXN0PGludD4oY291
bnRlci52YWx1ZSgpKSk7CisgICAgLy8gVGVzdGluZyAoMmIpIC0gRGVzdHJ1Y3Rpb24gd2hlcmUg
dGhlIFJlZkNvdW50ZXI6OkNvdW50IGhhcyBhIHplcm8gcmVmZXJlbmNlIGNvdW50LgorICAgIC8v
IC4uLiBub3QgYSBsb3QgdG8gdGVzdCBoZXJlISAtwqB3ZSBjYW4gYXQgbGVhc3QgZW5zdXJlIHRo
aXMgY29kZSBwYXRoIGlzIHJ1biAmIHdlIGRvbid0IGNyYXNoIQorfQorCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242427</attachid>
            <date>2014-12-02 10:48:07 -0800</date>
            <delta_ts>2014-12-02 12:24:41 -0800</delta_ts>
            <desc>EWS bot has an issue with the API test that my machine didn&apos;t. :-/</desc>
            <filename>139106.4b.patch</filename>
            <type>text/plain</type>
            <size>49959</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE0LTEyLTAyICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmFsaXplIFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkxMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBpcyBhIFJBSUkgbWVjaGFuaXNtIGlt
cGxlbWVudGluZyBhIGNvdW50ZXIsIHVzZWQgYnkgUGFnZVRocm90dGxlcgorICAgICAgICB0byBj
b3VudCB1c2VyIHZpc2libGUgYWN0aXZpdHkgaW4gcHJvZ3Jlc3Mgb24gdGhlIHBhZ2UgKGN1cnJl
bnRseSBwYWdlIGxvYWQgYW5kIG1lZGlhIHBsYXliYWNrKS4KKyAgICAgICAgVXNlIG9mIGFuIFJB
SUkgdHlwZSBpcyBwcmV2ZW50cyBhIG51bWJlciBvZiBwb3NzaWJsZSBlcnJvcnMsIGluY2x1ZGlu
ZyBkb3VibGUgY291bnRpbmcgYSBzaW5nbGUKKyAgICAgICAgbWVkaWEgZWxlbWVudCwgb3IgZmFp
bGluZyB0byBkZWNyZW1lbnQgdGhlIGNvdW50IGFmdGVyIGEgbWVkaWEgZWxlbWVudCBoYXMgYmVl
biBkZWFsbG9jYXRlZC4KKworICAgICAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBoYXMg
YSBudW1iZXIgb2YgZHJhd2JhY2tzIHRoYXQgaGF2ZSBiZWVuIGFkZHJlc3NlZCBieSB0aGlzIHJl
ZmFjdG9yaW5nOgorICAgICAgICAgLSBzcGVjaWZpYyB0byBzaW5nbGUgdXNlIGluIFBhZ2VUaHJv
dHRsZXIgY2xhc3MgLSBub3QgcmV1c2FibGUuCisgICAgICAgICAtIGluY29tcGxldGUgZW5jYXBz
dWxhdGlvbiAtIHRoZSBjb3VudGVyIGFuZCBXZWFrUHRyRmFjdG9yeSB0aGF0IGNvbXByaXNlIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgIGFyZSBub3QgZW5jYXBzdWxhdGVk
IChhcmUgaW4gdGhlIGNsaWVudCB0eXBlLCBQYWdlVGhyb3R0bGVyKS4KKyAgICAgICAgIC0gdG9r
ZW5zIGFyZSBub3Qgc2hhcmVkIC0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gaW5zdGFuY2Vz
IGFyZSBtYW5hZ2VkIGJ5IHN0ZDo6dW5pcXVlLCBldmVyeQorICAgICAgICAgICBpbmNyZW1lbnQg
cmVxdWlyZXMgYW4gb2JqZWN0IGFsbG9jYXRpb24uCisgICAgICAgICAtIHJlZHVuZGFuY3kgLSB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgV2Vha1B0ciB0byBzYWZlbHkgcmVmZXJl
bmNlIHRoZSBQYWdlVGhyb3R0bGVyLCB0aGlzCisgICAgICAgICAgIGlzIGludGVybmFsbHkgaW1w
bGVtZW50ZWQgdXNpbmcgYSByZWZlcmVuY2UgY291bnRlZCB0eXBlLCByZXN1bHRpbmcgaW4gdHdv
IGNvdW50ZXJzIGJlaW5nCisgICAgICAgICAgIGluY3JlbWVudGVkIChvbmUgaW4gdGhlIFBhZ2VB
Y3Rpdml0eUFzc2VydGlvblRva2VuLCBvbmUgaW4gdGhlIFBhZ2VUaHJvdHRsZXIpLgorCisgICAg
ICAgIEluIHRoZSByZWltcGxlbWVudGF0aW9uOgorICAgICAgICAgLSBhIGNhbGxiYWNrIGlzIHBy
b3ZpZGVkIHZpYSBhIGxhbWJkYSBmdW5jdGlvbiwgd2hpY2ggYWxsb3dzIGZvciBlYXN5IHJldXNl
IHdpdGhvdXQgYSBsb3Qgb2YKKyAgICAgICAgICAgYm9pbGVycGxhdGUgY29kZS4KKyAgICAgICAg
IC0gdGhlIGNvdW50ZXIsIGNhbGxiYWNrIGFuZCBvd25lcnNoaXAgb2YgdGhlIG90aGVyd2lzZSB3
ZWFrbHktb3duZWQgdG9rZW4gaXMgZW5jYXBzdWxhdGVkIHdpdGhpbiB0aGUKKyAgICAgICAgICAg
UmVmQ291bnRlciB0eXBlLgorICAgICAgICAgLSBhIHNpbmdsZSBjb3VudCB3aXRoaW4gUmVmQ291
bnRlcjo6Q291bnQgc3RvcmVzIHRoZSBjb3VudGVyIHZhbHVlLCBhbmQgYWxzbyBtYW5hZ2UgdGhl
IGxpZmV0aW1lCisgICAgICAgICAgIG9mIHRoaXMgb2JqZWN0LgorICAgICAgICAgLSBzdGFuZGFy
ZCBSZWZQdHJzIGFyZSB1c2VkIHRvIG1hbmFnZSByZWZlcmVuY2VzIHRvIHRoZSBSZWZDb3VudGVy
OjpDb3VudC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAgICAgLSBhZGRlZCBSZWZDb3VudGVyLmNwcC8uaAorICAgICAgICAqIHd0Zi9SZWZDb3Vu
dGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6OkNvdW50OjpyZWYpOgor
ICAgICAgICAgICAgLSBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuCisgICAgICAgIChXVEY6OlJlZkNv
dW50ZXI6OkNvdW50OjpkZXJlZik6CisgICAgICAgICAgICAtIGRlY3JlbWVudCB0aGUgY291bnRl
ciwgYW5kIGRlbGV0ZSBhcyBuZWNlc3NhcnkuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6OlJl
ZkNvdW50ZXIpOgorICAgICAgICAgICAgLSBjcmVhdGUgYSBSZWZDb3VudGVyOjpDb3VudC4KKyAg
ICAgICAgKFdURjo6UmVmQ291bnRlcjo6flJlZkNvdW50ZXIpOgorICAgICAgICAgICAgLSBlYWdl
cmx5IGRlbGV0ZSB0aGUgQ291bnRlciBpZiBpdCBoYXMgbm8gcmVmZXJlbmNlcywgb3RoZXJ3aXNl
IGxldCBpdCBiZSBkZWxldGVkIG9uIGxhc3QgZGVyZWYuCisgICAgICAgICogd3RmL1JlZkNvdW50
ZXIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6OkNvdW50OjpDb3VudCk6Cisg
ICAgICAgICAgICAtIGluaXRpYWxpemUgY291bnQgdG8gMC4KKyAgICAgICAgKFdURjo6UmVmQ291
bnRlcjo6UmVmQ291bnRlcik6CisgICAgICAgICAgICAtIHRha2VzIGEgbGFtYmRhIHRvIGJlIGNh
bGxlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpj
b3VudCk6CisgICAgICAgICAgICAtIHJlZmVyZW5jZSB0aGUgY291bnRlciAoYW5kIGluIGRvaW5n
IHNvIGluY3JlbWVudCB0aGUgY291bnQpLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjp2YWx1
ZSk6CisgICAgICAgICAgICAtIGFjY2VzcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY291bnRl
ci4KKwogMjAxNC0xMi0wMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCAzMi1iaXQgYnVpbGQuCkluZGV4OiBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52
Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oJ
KHJldmlzaW9uIDE3NjYxMSkKKysrIFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cd3RmXFJBTVNpemUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3Rm
XFJhbmRvbU51bWJlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcUmVm
Q291bnRlZExlYWtDb3VudGVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0
ZlxSZWZDb3VudGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxSdW5M
b29wLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxTSEExLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxTaXhDaGFyYWN0ZXJIYXNoLmNwcCIgLz4K
QEAgLTI1OCw2ICsyNTksNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFJlZEJs
YWNrVHJlZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFJlZkNvdW50ZWQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxSZWZDb3VudGVkTGVha0NvdW50
ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxSZWZDb3VudGVyLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUmVmUHRyLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3dGZcUmV0YWluUHRyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlx3dGZcUnVuTG9vcC5oIiAvPgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw4IEBACiAJ
CTgxMzQwMTM4MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8q
IEJhc2U2NC5jcHAgKi87IH07CiAJCTgxMzQwMTM5MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM3
MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLzsgfTsKIAkJODNGQkE5MzIxOURGNDU5NzAw
RjMwQURCIC8qIFR5cGVDYXN0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovOyB9
OworCQk4NkY0NkY2MDFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkY0NkY1RTFBMjg0MEVFMDBD
Q0JGMjIgLyogUmVmQ291bnRlci5jcHAgKi87IH07CisJCTg2RjQ2RjYxMUEyODQwRUUwMENDQkYy
MiAvKiBSZWZDb3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkY0NkY1RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzOTM0QkQzMThBMUU4
QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdW
aWV3T2JqQy5tbSAqLzsgfTsKIAkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1Zp
ZXdDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzkzNEJENDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCAqLzsgfTsKIAkJOTNB
QzkxQTgxODk0MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FDOTFBNzE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIu
aCAqLzsgfTsKQEAgLTM3Miw2ICszNzQsOCBAQAogCQk4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjgg
LyogQmFzZTY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2U2
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxMzQwMTM3MTVCMDkyRkQwMDFG
RjBCOCAvKiBCYXNlNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZTY0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFE
QiAvKiBUeXBlQ2FzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUNh
c3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RjQ2RjVFMUEyODQwRUUwMEND
QkYyMiAvKiBSZWZDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZkNvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkY0NkY1
RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWZDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
OTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFN0cmluZ1ZpZXdPYmpDLm1tOyBwYXRoID0gbWFj
L1N0cmluZ1ZpZXdPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJE
NDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFN0cmluZ1ZpZXdDRi5jcHA7IHBhdGggPSBjZi9TdHJpbmdWaWV3
Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FDOTFBNzE4OTQyRkM0MDAy
NDQ5MzkgLyogTENoYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTENoYXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNiw2ICs4NDAsOCBAQAogCQkJCUE4
QTQ3MzAwMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkQXJyYXkuaCAqLywKIAkJCQlBOEE0
NzMwMTE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCAqLywKIAkJ
CQlBOEE0NzMwMjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmggKi8s
CisJCQkJODZGNDZGNUUxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuY3BwICovLAorCQkJ
CTg2RjQ2RjVGMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi8sCiAJCQkJQThBNDcz
MDMxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZlB0ci5oICovLAogCQkJCUE4QTQ3MzA1MTUxQTgyNUIw
MDQxMjNGRiAvKiBSZXRhaW5QdHIuaCAqLywKIAkJCQkyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAg
LyogUnVuTG9vcC5jcHAgKi8sCkBAIC0xMTY2LDYgKzExNzIsNyBAQAogCQkJCUE4QTQ3NDFDMTUx
QTgyNUIwMDQxMjNGRiAvKiBSZWZQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDFFMTUx
QTgyNUIwMDQxMjNGRiAvKiBSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJDREVEMEY0
MTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkY0NkY2
MTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ2
OTQxOTIxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTRGM0IwRjcxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0Njk0MTk2MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMTMzOSw2ICsxMzQ2LDcgQEAKIAkJCQlBOEE0NzM5QTE1MUE4
MjVCMDA0MTIzRkYgLyogQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDc0MzkxNTFBODI1QjAwNDEyM0ZGIC8qIENTdHJpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczOUMxNTFBODI1QjAwNDEyM0ZGIC8qIEN1cnJlbnRUaW1lLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTg2RjQ2RjYwMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3Vu
dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3MzlFMTUxQTgyNUIwMDQxMjNGRiAvKiBE
YXRhTG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0EwMTUxQTgyNUIwMDQxMjNGRiAv
KiBEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNBMjE1MUE4MjVCMDA0MTIz
RkYgLyogRGVjaW1hbE51bWJlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBS
ZWYuaAogICAgIFJlZkNvdW50ZWQuaAogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oCisgICAg
UmVmQ291bnRlci5oCiAgICAgUmVmUHRyLmgKICAgICBSZXRhaW5QdHIuaAogICAgIFJ1bkxvb3Au
aApAQCAtMTc1LDYgKzE3Niw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFJBTVNpemUuY3BwCiAg
ICAgUmFuZG9tTnVtYmVyLmNwcAogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKKyAgICBS
ZWZDb3VudGVyLmNwcAogICAgIFJ1bkxvb3AuY3BwCiAgICAgU0hBMS5jcHAKICAgICBTaXhDaGFy
YWN0ZXJIYXNoLmNwcApJbmRleDogU291cmNlL1dURi93dGYvUmVmQ291bnRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlZkNvdW50
ZXIuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgUmVmQ291bnRlcjo6Q291bnQ6OnJlZigp
Cit7CisgICAgKyttX3ZhbHVlOworCisgICAgaWYgKG1fcmVmQ291bnRlcikKKyAgICAgICAgbV9y
ZWZDb3VudGVyLT5tX3ZhbHVlRGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgUmVmQ291bnRlcjo6Q291
bnQ6OmRlcmVmKCkKK3sKKyAgICBBU1NFUlQobV92YWx1ZSk7CisgICAgLS1tX3ZhbHVlOworCisg
ICAgLy8gVGhlIENvdW50ZXIgb2JqZWN0IGlzIGtlcHQgYWxpdmUgc28gbG9uZyBhcyBlaXRoZXIg
dGhlIFJlZkNvdW50ZXIgdGhhdCBjcmVhdGVkIGl0IHJlbWFpbnMKKyAgICAvLyBhbGxvY2F0ZWQs
IG9yIHNvIGxvbmcgYXMgaXRzIHJlZmVyZW5jZSBjb3VudCBpcyBub24temVyby4KKyAgICAvLyBJ
ZiB0aGUgUmVmQ291bnRlciBoYXMgYWxyZWFkeSBiZWVuIGRlYWxsb2N0ZWQgdGhlbiBkZWxldGUg
dGhlIENvdW50IHdoZW4gaXRzIHJlZmVyZW5jZQorICAgIC8vIGNvdW50IHJlYWNoZXMgemVyby4K
KyAgICBpZiAobV9yZWZDb3VudGVyKQorICAgICAgICBtX3JlZkNvdW50ZXItPm1fdmFsdWVEaWRD
aGFuZ2UoKTsKKyAgICBlbHNlIGlmICghbV92YWx1ZSkKKyAgICAgICAgZGVsZXRlIHRoaXM7Cit9
CisKK1JlZkNvdW50ZXI6OlJlZkNvdW50ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHZhbHVlRGlk
Q2hhbmdlKQorICAgIDogbV92YWx1ZURpZENoYW5nZSh2YWx1ZURpZENoYW5nZSkKKyAgICAsIG1f
Y291bnQobmV3IENvdW50KCp0aGlzKSkKK3sKK30KKworUmVmQ291bnRlcjo6flJlZkNvdW50ZXIo
KQoreworICAgIC8vIFRoZSBDb3VudCBvYmplY3QgaXMga2VwdCBhbGl2ZSBzbyBsb25nIGFzIGVp
dGhlciB0aGUgUmVmQ291bnRlciB0aGF0IGNyZWF0ZWQgaXQgcmVtYWlucworICAgIC8vIGFsbG9j
YXRlZCwgb3Igc28gbG9uZyBhcyBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIG5vbi16ZXJvLgorICAg
IC8vIElmIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIENvdW50IGlzIGFscmVhZHkgemVybyB0
aGVuIGRlbGV0ZSBpdCBub3csIG90aGVyd2lzZQorICAgIC8vIGNsZWFyIGl0cyBtX3JlZkNvdW50
ZXIgcG9pbnRlci4KKyAgICBpZiAobV9jb3VudC0+bV92YWx1ZSkKKyAgICAgICAgbV9jb3VudC0+
bV9yZWZDb3VudGVyID0gbnVsbHB0cjsKKyAgICBlbHNlCisgICAgICAgIGRlbGV0ZSBtX2NvdW50
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZD
b3VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlci5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dURi93dGYvUmVmQ291bnRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlZkNvdW50ZXJfaAorI2RlZmlu
ZSBSZWZDb3VudGVyX2gKKworI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworY2xhc3MgUmVmQ291bnRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVmQ291bnRl
cik7CitwdWJsaWM6CisgICAgY2xhc3MgQ291bnQgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShDb3VudCk7CisgICAgcHVibGljOgorICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCByZWYoKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVyZWYoKTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBSZWZDb3VudGVyOworCisgICAgICAgIENv
dW50KFJlZkNvdW50ZXImIHJlZkNvdW50ZXIpCisgICAgICAgICAgICA6IG1fcmVmQ291bnRlcigm
cmVmQ291bnRlcikKKyAgICAgICAgICAgICwgbV92YWx1ZSgwKQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBSZWZDb3VudGVyKiBtX3JlZkNvdW50ZXI7CisgICAgICAgIHVuc2lnbmVk
IG1fdmFsdWU7CisgICAgfTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWZDb3VudGVyKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiA9IFtdKCkgeyB9KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
flJlZkNvdW50ZXIoKTsKKworICAgIFBhc3NSZWY8Q291bnQ+IGNvdW50KCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAqbV9jb3VudDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCB2YWx1ZSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jb3VudC0+bV92YWx1ZTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fdmFsdWVEaWRDaGFuZ2U7Cisg
ICAgQ291bnQqIG1fY291bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RG
OjpSZWZDb3VudGVyOworCisjZW5kaWYgLy8gUmVmQ291bnRlcl9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw3NCBAQAorMjAxNC0xMi0wMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJy
YWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSBQYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM5MTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gaXMgYSBSQUlJIG1lY2hhbmlzbSBpbXBsZW1l
bnRpbmcgYSBjb3VudGVyLCB1c2VkIGJ5IFBhZ2VUaHJvdHRsZXIKKyAgICAgICAgdG8gY291bnQg
dXNlciB2aXNpYmxlIGFjdGl2aXR5IGluIHByb2dyZXNzIG9uIHRoZSBwYWdlIChjdXJyZW50bHkg
cGFnZSBsb2FkIGFuZCBtZWRpYSBwbGF5YmFjaykuCisgICAgICAgIFVzZSBvZiBhbiBSQUlJIHR5
cGUgaXMgcHJldmVudHMgYSBudW1iZXIgb2YgcG9zc2libGUgZXJyb3JzLCBpbmNsdWRpbmcgZG91
YmxlIGNvdW50aW5nIGEgc2luZ2xlCisgICAgICAgIG1lZGlhIGVsZW1lbnQsIG9yIGZhaWxpbmcg
dG8gZGVjcmVtZW50IHRoZSBjb3VudCBhZnRlciBhIG1lZGlhIGVsZW1lbnQgaGFzIGJlZW4gZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaGFzIGEgbnVt
YmVyIG9mIGRyYXdiYWNrcyB0aGF0IGhhdmUgYmVlbiBhZGRyZXNzZWQgYnkgdGhpcyByZWZhY3Rv
cmluZzoKKyAgICAgICAgIC0gc3BlY2lmaWMgdG8gc2luZ2xlIHVzZSBpbiBQYWdlVGhyb3R0bGVy
IGNsYXNzIC0gbm90IHJldXNhYmxlLgorICAgICAgICAgLSBpbmNvbXBsZXRlIGVuY2Fwc3VsYXRp
b24gLSB0aGUgY291bnRlciBhbmQgV2Vha1B0ckZhY3RvcnkgdGhhdCBjb21wcmlzZSB0aGUgY3Vy
cmVudCBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICBhcmUgbm90IGVuY2Fwc3VsYXRlZCAoYXJl
IGluIHRoZSBjbGllbnQgdHlwZSwgUGFnZVRocm90dGxlcikuCisgICAgICAgICAtIHRva2VucyBh
cmUgbm90IHNoYXJlZCAtIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIGluc3RhbmNlcyBhcmUg
bWFuYWdlZCBieSBzdGQ6OnVuaXF1ZSwgZXZlcnkKKyAgICAgICAgICAgaW5jcmVtZW50IHJlcXVp
cmVzIGFuIG9iamVjdCBhbGxvY2F0aW9uLgorICAgICAgICAgLSByZWR1bmRhbmN5IC0gdGhlIGN1
cnJlbnQgaW1wbGVtZW50YXRpb24gdXNlcyBhIFdlYWtQdHIgdG8gc2FmZWx5IHJlZmVyZW5jZSB0
aGUgUGFnZVRocm90dGxlciwgdGhpcworICAgICAgICAgICBpcyBpbnRlcm5hbGx5IGltcGxlbWVu
dGVkIHVzaW5nIGEgcmVmZXJlbmNlIGNvdW50ZWQgdHlwZSwgcmVzdWx0aW5nIGluIHR3byBjb3Vu
dGVycyBiZWluZworICAgICAgICAgICBpbmNyZW1lbnRlZCAob25lIGluIHRoZSBQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbiwgb25lIGluIHRoZSBQYWdlVGhyb3R0bGVyKS4KKworICAgICAgICBJ
biB0aGUgcmVpbXBsZW1lbnRhdGlvbjoKKyAgICAgICAgIC0gYSBjYWxsYmFjayBpcyBwcm92aWRl
ZCB2aWEgYSBsYW1iZGEgZnVuY3Rpb24sIHdoaWNoIGFsbG93cyBmb3IgZWFzeSByZXVzZSB3aXRo
b3V0IGEgbG90IG9mCisgICAgICAgICAgIGJvaWxlcnBsYXRlIGNvZGUuCisgICAgICAgICAtIHRo
ZSBjb3VudGVyLCBjYWxsYmFjayBhbmQgb3duZXJzaGlwIG9mIHRoZSBvdGhlcndpc2Ugd2Vha2x5
LW93bmVkIHRva2VuIGlzIGVuY2Fwc3VsYXRlZCB3aXRoaW4gdGhlCisgICAgICAgICAgIFJlZkNv
dW50ZXIgdHlwZS4KKyAgICAgICAgIC0gYSBzaW5nbGUgY291bnQgd2l0aGluIFJlZkNvdW50ZXI6
OkNvdW50IHN0b3JlcyB0aGUgY291bnRlciB2YWx1ZSwgYW5kIGFsc28gbWFuYWdlIHRoZSBsaWZl
dGltZQorICAgICAgICAgICBvZiB0aGlzIG9iamVjdC4KKyAgICAgICAgIC0gc3RhbmRhcmQgUmVm
UHRycyBhcmUgdXNlZCB0byBtYW5hZ2UgcmVmZXJlbmNlcyB0byB0aGUgUmVmQ291bnRlcjo6Q291
bnQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICAgICAtIHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwLy5oCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50Lmg6CisgICAgICAgICAgICAtIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRp
b25Ub2tlbj4gLT4gUmVmUHRyPFJlZkNvdW50ZXI6OkNvdW50PgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5jcHA6CisgICAgICAgICAgICAtIHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW4uaAorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAgICAg
LSBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IC0+IFJlZlB0cjxS
ZWZDb3VudGVyOjpDb3VudD4KKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAgICAgLSByZW1vdmVkIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgKKyAg
ICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgICAgIC0gcmVtb3Zl
ZCBjbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbgorICAgICAgICAqIHBhZ2UvUGFnZS5j
cHA6CisgICAgICAgICAgICAtIHJlbW92ZWQgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaAor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgICAgICAtIHJlbW92ZWQgUGFn
ZSogcGFyYW1ldGVyIHRvIFBhZ2VUaHJvdHRsZXIKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAg
ICAgICAgICAgIC0gcmVtb3ZlZCBjbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbgorICAg
ICAgICAqIHBhZ2UvUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBhZ2UvUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaDogUmVtb3ZlZC4KKyAgICAg
ICAgICAgIC0gcmVtb3ZlZCBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAvLmgKKyAgICAg
ICAgKiBwYWdlL1BhZ2VUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90
dGxlcjo6UGFnZVRocm90dGxlcik6CisgICAgICAgICAgICAtIHJlbW92ZWQgbV9wYWdlLCBtX3dl
YWtQdHJGYWN0b3J5LCBtX2FjdGl2aXR5Q291bnQ7IGFkZGVkIG1fcGFnZUFjdGl2aXR5Q291bnRl
ci4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6Om1lZGlhQWN0aXZpdHlUb2tlbik6
CisgICAgICAgICAgICAtIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tl
bj4gLT4gUGFzc1JlZlB0cjxSZWZDb3VudGVyOjpDb3VudD4KKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VUaHJvdHRsZXI6OnBhZ2VMb2FkQWN0aXZpdHlUb2tlbik6CisgICAgICAgICAgICAtIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gLT4gUGFzc1JlZlB0cjxSZWZD
b3VudGVyOjpDb3VudD4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnBhZ2VBY3Rp
dml0eUNvdW50ZXJWYWx1ZURpZENoYW5nZSk6CisgICAgICAgICAgICAtIG1lcmdlZCBmdW5jdGlv
bmFsaXR5IG9mIGluY3JlbWVudEFjdGl2aXR5Q291bnQvZGVjcmVtZW50QWN0aXZpdHlDb3VudAor
ICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6aW5jcmVtZW50QWN0aXZpdHlDb3VudCk6
IERlbGV0ZWQuCisgICAgICAgICAgICAtIHNlZSBwYWdlQWN0aXZpdHlDb3VudGVyVmFsdWVEaWRD
aGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OmRlY3JlbWVudEFjdGl2aXR5
Q291bnQpOiBEZWxldGVkLgorICAgICAgICAgICAgLSBzZWUgcGFnZUFjdGl2aXR5Q291bnRlclZh
bHVlRGlkQ2hhbmdlCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0bGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjp3ZWFrUHRyKTogRGVsZXRlZC4KKyAgICAgICAgICAgIC0g
bm8gbG9uZ2VyIHJlcXVpcmVkOyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm93IGVuY2Fwc3VsYXRl
ZCB3aXRoaW4gUmVmQ291bnRlci4KKwogMjAxNC0xMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFRha2UgaW50byBjb25zaWRlcmF0aW9uIGNhbnZhcyBkcmF3
aW5nIGZvciB0aHJvdHRsaW5nIERPTSB0aW1lcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkxMCw3ICsxOTEwLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBh
Z2UvTmF2aWdhdG9yQmFzZS5jcHAKICAgICBwYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmNwcAogICAg
IHBhZ2UvUGFnZS5jcHAKLSAgICBwYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNwcAog
ICAgIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCiAgICAgcGFnZS9QYWdlQ29uc29sZUNsaWVu
dC5jcHAKICAgICBwYWdlL1BhZ2VHcm91cC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTc2NjExKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzE4OSw3ICs3MTg5LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2Vc
TmF2aWdhdG9yQmFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXE9y
aWdpbkFjY2Vzc0VudHJ5LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2Vc
UGFnZS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2Vc
UGFnZUNvbmZpZ3VyYXRpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFn
ZVxQYWdlQ29uc29sZUNsaWVudC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
YWdlXFBhZ2VHcm91cC5jcHAiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTU1OTUsNyArNTU5NSw2IEBACiAJCUNDQzJCNTE0MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZp
Y2VDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENDQzJCNTEwMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQ0MyQjUxNTE1RjYxMzA2MDA0
OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMTE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29u
dHJvbGxlci5jcHAgKi87IH07CiAJCUNDQzJCNTE2MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDQ0MyQjUxMjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUNEMDgyODVDMTc1NzI1
MEYwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA4Mjg1QTE3NTcyNTA4MDBFQzVG
QjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwICovOyB9OwogCQlDRDBFRUUwRTE0
NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIg
LyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgKi87IH07CiAJCUNEMTI3REVEMTRGMzA5N0QwMEU4
NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVCMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJD
b3JlRnVsbFNjcmVlbldpbmRvdy5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5
IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTMwNTUsOCArMTMwNTQsNiBAQAogCQlDQ0MyQjUxMDE1RjYxMzA2MDA0OENE
RDYgLyogRGV2aWNlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
dmljZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQ0MyQjUxMTE1RjYx
MzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEZXZpY2VDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDA4Mjg1QTE3NTcyNTA4MDBFQzVGQjcgLyog
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
RDA4Mjg1QjE3NTcyNTA4MDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwRUVFMEExNDc0M0UzNDAwM0VBRkEyIC8qIEF1ZGlvRGVzdGlu
YXRpb25JT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9EZXN0aW5h
dGlvbklPUy5oOyBwYXRoID0gaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGlu
YXRpb25JT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHA7IHBhdGggPSBpb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBX
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTY2NzcsOCArMTY2NzQsNiBAQAogCQkJCTAwMTQ2Mjg5MTAzQ0QxREUwMDBCMjBEQiAvKiBP
cmlnaW5BY2Nlc3NFbnRyeS5oICovLAogCQkJCTY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQ
YWdlLmNwcCAqLywKIAkJCQk2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovLAot
CQkJCUNEMDgyODVBMTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tl
bi5jcHAgKi8sCi0JCQkJQ0QwODI4NUIxNzU3MjUwODAwRUM1RkI3IC8qIFBhZ2VBY3Rpdml0eUFz
c2VydGlvblRva2VuLmggKi8sCiAJCQkJQ0Q1RTVCNjAxQTE1RjE1NjAwMEM2MDlFIC8qIFBhZ2VD
b25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQlDRDVFNUI1RTFBMTVDRTU0MDAwQzYwOUUgLyogUGFn
ZUNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQlEQUFDQjNEOTE2RjI0MTY0MDA2NjYxMzUgLyogUGFn
ZUNvbnNvbGVDbGllbnQuY3BwICovLApAQCAtMjkxMTgsNyArMjkxMTMsNiBAQAogCQkJCUZENTgx
RkFFMTUyMEY5MUYwMDNBN0E3NSAvKiBPc2NpbGxhdG9yTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTBENTczNjBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlDRDA4Mjg1QzE3NTcyNTBGMDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNz
ZXJ0aW9uVG9rZW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3N0U3NzYwQkY0MTM0QTAwMTUy
ODcyIC8qIFBhZ2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzgyMDg5MjE0N0QzNUY5
MDAxMEJDMDYgLyogUGFnZUNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQUVE
MjAzMDE2RjI0NDJCMDA3MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE3NjYxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDYgQEAKICNpbmNsdWRlICJNZWRpYVJlc291cmNl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4u
aCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAj
aW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMTc2NjExKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIlBhZ2VUaHJv
dHRsZXIuaCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICNpbmNsdWRlICJBdWRpb1RyYWNr
LmgiCkBAIC02NSw3ICs2Niw2IEBAIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlh
Q29udHJvbHM7CiBjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdDsKIGNsYXNzIE1lZGlhRXJyb3I7Ci1j
bGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIGNsYXNzIE1lZGlhS2V5czsKQEAgLTg5OSw3ICs4
OTksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SFRNTE1lZGlh
U2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuPiBtX2FjdGl2aXR5VG9rZW47CisgICAgUGFnZUFjdGl2aXR5QXNzZXJ0
aW9uVG9rZW4gbV9hY3Rpdml0eVRva2VuOwogICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFNZW1v
cnlDb3N0OwogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTc2NjExKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyAr
ODUsNiBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2Vu
LmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgog
I2luY2x1ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
Ikljb25VUkwuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5jbHVkZSAiTWl4
ZWRDb250ZW50Q2hlY2tlci5oIgorI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZVR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkTm90aWZpZXIu
aCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKQEAgLTY2LDcgKzY3LDYgQEAgY2xhc3Mg
SWNvbkNvbnRyb2xsZXI7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgTmV0d29ya2lu
Z0NvbnRleHQ7CiBjbGFzcyBQYWdlOwotY2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47
CiBjbGFzcyBQb2xpY3lDaGVja2VyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKQEAgLTQ0Myw3ICs0NDMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1fcHJl
dmlvdXNVUkw7CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3JlcXVlc3RlZEhpc3RvcnlJdGVt
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rp
dml0eUFzc2VydGlvbjsKKyAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBtX2FjdGl2aXR5
QXNzZXJ0aW9uOwogfTsKIAogLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgY3JlYXRlV2lu
ZG93KCkgaW4gSlNET01XaW5kb3dCYXNlLmNwcCwgZm9yIGV4YW1wbGUsIGZvcgpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNzY2
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNp
b24gMTc2NjExKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIERv
Y3VtZW50OwotY2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiAKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyIGZpbmFsIDogcHVibGljIFJlc291
cmNlTG9hZGVyIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTc2NjExKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUs
NiBAQAogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5hdmln
YXRvci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCi0jaW5jbHVkZSAiUGFn
ZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNs
dWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50Lmgi
CkBAIC0xOTUsNyArMTk0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYgcGFnZUNv
bmZpZwogI2VuZGlmCiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmlndXJh
dGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQpCiAgICAgLCBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1
c3BlbmRlZChmYWxzZSkKLSAgICAsIG1fcGFnZVRocm90dGxlcigqdGhpcywgbV92aWV3U3RhdGUp
CisgICAgLCBtX3BhZ2VUaHJvdHRsZXIobV92aWV3U3RhdGUpCiAgICAgLCBtX2NvbnNvbGVDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZp
c2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtODAsNyArODAsNiBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0
b3JDb250cm9sbGVyOwogY2xhc3MgTWFpbkZyYW1lOwogY2xhc3MgTWVkaWFDYW5TdGFydExpc3Rl
bmVyOwotY2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQYWdlQ29uZmln
dXJhdGlvbjsKIGNsYXNzIFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlv
blRva2VuLmNwcAkocmV2aXNpb24gMTc2NjExKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
QWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbi5oIgotCi0jaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOjpQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbihQYWdlVGhyb3R0bGVyJiB0aHJvdHRsZXIpCi0gICAgOiBtX3Rocm90
dGxlcih0aHJvdHRsZXIud2Vha1B0cigpKQotewotICAgIHRocm90dGxlci5pbmNyZW1lbnRBY3Rp
dml0eUNvdW50KCk7Ci19Ci0KLVBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOjp+UGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW4oKQotewotICAgIGlmIChQYWdlVGhyb3R0bGVyKiB0aHJvdHRsZXIg
PSBtX3Rocm90dGxlci5nZXQoKSkKLSAgICAgICAgdGhyb3R0bGVyLT5kZWNyZW1lbnRBY3Rpdml0
eUNvdW50KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oCShyZXZpc2lv
biAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VBY3Rpdml0eUFzc2VydGlvblRv
a2VuLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW5faAotI2RlZmluZSBQYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbl9oCi0KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBhZ2VUaHJvdHRs
ZXI7Ci0KLWNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbik7Ci1wdWJsaWM6Ci0gICAgUGFn
ZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4oUGFnZVRocm90dGxlciYpOwotICAgIH5QYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbigpOwotCi1wcml2YXRlOgotICAgIFdlYWtQdHI8UGFnZVRocm90dGxl
cj4gbV90aHJvdHRsZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VUaHJvdHRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVRocm90dGxlci5jcHAJKHJldmlzaW9uIDE3NjYxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVRocm90dGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE2ICsyNiwxMiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKIAotI2luY2x1ZGUg
IlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UGFnZVRocm90dGxlcjo6UGFnZVRocm90dGxlcihQYWdlJiBwYWdlLCBWaWV3U3RhdGU6OkZsYWdz
IHZpZXdTdGF0ZSkKLSAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV92aWV3U3RhdGUodmlld1N0
YXRlKQotICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQorUGFnZVRocm90dGxlcjo6UGFnZVRo
cm90dGxlcihWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKKyAgICA6IG1fdmlld1N0YXRlKHZp
ZXdTdGF0ZSkKICAgICAsIG1faHlzdGVyZXNpcygqdGhpcykKLSAgICAsIG1fYWN0aXZpdHlDb3Vu
dCgwKQorICAgICwgbV9wYWdlQWN0aXZpdHlDb3VudGVyKFt0aGlzXSgpIHsgcGFnZUFjdGl2aXR5
Q291bnRlclZhbHVlRGlkQ2hhbmdlKCk7IH0pCiB7CiAgICAgdXBkYXRlVXNlckFjdGl2aXR5KCk7
CiB9CkBAIC00NywzNiArNDMsMjUgQEAgdm9pZCBQYWdlVGhyb3R0bGVyOjpjcmVhdGVVc2VyQWN0
aXZpdHkoKQogICAgIHVwZGF0ZVVzZXJBY3Rpdml0eSgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IFBhZ2VUaHJvdHRsZXI6Om1lZGlhQWN0aXZpdHlU
b2tlbigpCitQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBQYWdlVGhyb3R0bGVyOjptZWRpYUFj
dGl2aXR5VG9rZW4oKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuPigqdGhpcyk7CisgICAgcmV0dXJuIG1fcGFnZUFjdGl2aXR5Q291bnRl
ci5jb3VudCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9r
ZW4+IFBhZ2VUaHJvdHRsZXI6OnBhZ2VMb2FkQWN0aXZpdHlUb2tlbigpCitQYWdlQWN0aXZpdHlB
c3NlcnRpb25Ub2tlbiBQYWdlVGhyb3R0bGVyOjpwYWdlTG9hZEFjdGl2aXR5VG9rZW4oKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuPigq
dGhpcyk7CisgICAgcmV0dXJuIG1fcGFnZUFjdGl2aXR5Q291bnRlci5jb3VudCgpOwogfQogCi12
b2lkIFBhZ2VUaHJvdHRsZXI6OmluY3JlbWVudEFjdGl2aXR5Q291bnQoKQordm9pZCBQYWdlVGhy
b3R0bGVyOjpwYWdlQWN0aXZpdHlDb3VudGVyVmFsdWVEaWRDaGFuZ2UoKQogewotICAgIC8vIElm
IG1fYWN0aXZpdHlDb3VudCBpcyBub256ZXJvLCBzdGF0ZSBtdXN0IGJlIFN0YXJ0ZWQ7IGlmIG1f
YWN0aXZpdHlDb3VudCBpcyB6ZXJvLCBzdGF0ZSBtYXkgYmUgV2FpdGluZyBvciBTdG9wcGVkLgot
ICAgIEFTU0VSVCghIW1fYWN0aXZpdHlDb3VudCA9PSAobV9oeXN0ZXJlc2lzLnN0YXRlKCkgPT0g
SHlzdGVyZXNpc1N0YXRlOjpTdGFydGVkKSk7Ci0KLSAgICBpZiAoIW1fYWN0aXZpdHlDb3VudCsr
KQorICAgIGlmIChtX3BhZ2VBY3Rpdml0eUNvdW50ZXIudmFsdWUoKSkKICAgICAgICAgbV9oeXN0
ZXJlc2lzLnN0YXJ0KCk7Ci0KLSAgICBBU1NFUlQobV9hY3Rpdml0eUNvdW50ICYmIG1faHlzdGVy
ZXNpcy5zdGF0ZSgpID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCk7Ci19Ci0KLXZvaWQgUGFn
ZVRocm90dGxlcjo6ZGVjcmVtZW50QWN0aXZpdHlDb3VudCgpCi17Ci0gICAgQVNTRVJUKG1fYWN0
aXZpdHlDb3VudCAmJiBtX2h5c3RlcmVzaXMuc3RhdGUoKSA9PSBIeXN0ZXJlc2lzU3RhdGU6OlN0
YXJ0ZWQpOwotCi0gICAgaWYgKCEtLW1fYWN0aXZpdHlDb3VudCkKKyAgICBlbHNlCiAgICAgICAg
IG1faHlzdGVyZXNpcy5zdG9wKCk7CiAKLSAgICAvLyBJZiBtX2FjdGl2aXR5Q291bnQgaXMgbm9u
emVybywgc3RhdGUgbXVzdCBiZSBTdGFydGVkOyBpZiBtX2FjdGl2aXR5Q291bnQgaXMgemVybywg
c3RhdGUgbWF5IGJlIFdhaXRpbmcgb3IgU3RvcHBlZC4KLSAgICBBU1NFUlQoISFtX2FjdGl2aXR5
Q291bnQgPT0gKG1faHlzdGVyZXNpcy5zdGF0ZSgpID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRl
ZCkpOworICAgIC8vIElmIHRoZSBjb3VudGVyIGlzIG5vbnplcm8sIHN0YXRlIG11c3QgYmUgU3Rh
cnRlZDsgaWYgdGhlIGNvdW50ZXIgaXMgemVybywgc3RhdGUgbWF5IGJlIFdhaXRpbmcgb3IgU3Rv
cHBlZC4KKyAgICBBU1NFUlQoISFtX3BhZ2VBY3Rpdml0eUNvdW50ZXIudmFsdWUoKSA9PSAobV9o
eXN0ZXJlc2lzLnN0YXRlKCkgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdGFydGVkKSk7CiB9CiAKIHZv
aWQgUGFnZVRocm90dGxlcjo6dXBkYXRlVXNlckFjdGl2aXR5KCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVRocm90dGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVRocm90dGxlci5oCShyZXZpc2lvbiAxNzY2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VUaHJvdHRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMzEgKzMwLDI3IEBACiAK
ICNpbmNsdWRlICJVc2VyQWN0aXZpdHkuaCIKICNpbmNsdWRlICJWaWV3U3RhdGUuaCIKLSNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUGFnZTsKLWNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlv
blRva2VuOwordHlwZWRlZiBSZWZQdHI8UmVmQ291bnRlcjo6Q291bnQ+IFBhZ2VBY3Rpdml0eUFz
c2VydGlvblRva2VuOwogCiBjbGFzcyBQYWdlVGhyb3R0bGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlVGhyb3R0bGVyKFBhZ2UmLCBWaWV3U3RhdGU6
OkZsYWdzKTsKKyAgICBQYWdlVGhyb3R0bGVyKFZpZXdTdGF0ZTo6RmxhZ3MpOwogCiAgICAgdm9p
ZCBjcmVhdGVVc2VyQWN0aXZpdHkoKTsKICAgICB2b2lkIHNldFZpZXdTdGF0ZShWaWV3U3RhdGU6
OkZsYWdzKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnB1dCgpIHsgbV9oeXN0ZXJlc2lz
LmltcHVsc2UoKTsgfQogICAgIHZvaWQgcGx1Z2luRGlkRXZhbHVhdGVXaGlsZUF1ZGlvSXNQbGF5
aW5nKCkgeyBtX2h5c3RlcmVzaXMuaW1wdWxzZSgpOyB9Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBtZWRpYUFjdGl2aXR5VG9rZW4oKTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IHBhZ2VMb2FkQWN0aXZpdHlU
b2tlbigpOworICAgIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIG1lZGlhQWN0aXZpdHlUb2tl
bigpOworICAgIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIHBhZ2VMb2FkQWN0aXZpdHlUb2tl
bigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25U
b2tlbjsKLSAgICBXZWFrUHRyPFBhZ2VUaHJvdHRsZXI+IHdlYWtQdHIoKSB7IHJldHVybiBtX3dl
YWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQotICAgIHZvaWQgaW5jcmVtZW50QWN0aXZp
dHlDb3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50QWN0aXZpdHlDb3VudCgpOworICAgIHZvaWQg
cGFnZUFjdGl2aXR5Q291bnRlclZhbHVlRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHVwZGF0ZVVz
ZXJBY3Rpdml0eSgpOwogCkBAIC02MiwxMiArNTgsMTAgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0ZWQoKTsKICAgICB2b2lkIHN0b3BwZWQoKTsKIAotICAgIFBhZ2Um
IG1fcGFnZTsKICAgICBWaWV3U3RhdGU6OkZsYWdzIG1fdmlld1N0YXRlOwotICAgIFdlYWtQdHJG
YWN0b3J5PFBhZ2VUaHJvdHRsZXI+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgSHlzdGVyZXNpc0Fj
dGl2aXR5PFBhZ2VUaHJvdHRsZXI+IG1faHlzdGVyZXNpczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VXNlckFjdGl2aXR5OjpJbXBsPiBtX2FjdGl2aXR5OwotICAgIHNpemVfdCBtX2FjdGl2aXR5Q291
bnQ7CisgICAgUmVmQ291bnRlciBtX3BhZ2VBY3Rpdml0eUNvdW50ZXI7CiB9OwogCiB9CkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNzY2MTEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxNC0xMi0wMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5j
b20+CisKKyAgICAgICAgR2VuZXJhbGl6ZSBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5MTA2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0
ZXN0IGZvciBXVEY6OlJlZkNvdW50ZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgICAgIC0gYWRkZWQgUmVmQ291bnRlciB0ZXN0LgorCiAyMDE0
LTEyLTAxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTc2NTY2LgpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE3NjYxMSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiAr
MTM0LDcgQEAKIAkJN0NGQkNBREYxNzQzMjM0RjAwQjJCRkNGIC8qIFdpbGxMb2FkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkJDQUREMTc0MzIz
NEYwMEIyQkZDRiAvKiBXaWxsTG9hZC5jcHAgKi87IH07CiAJCTdDRkJDQUU1MTc0MzIzOEYwMEIy
QkZDRiAvKiBXaWxsTG9hZF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0NGQkNBRTMxNzQzMjM4RTAwQjJCRkNGIC8qIFdpbGxMb2FkX0J1
bmRsZS5jcHAgKi87IH07CiAJCTgxQjUwMTkzMTQwRjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWls
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgx
QjUwMTkyMTQwRjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLzsgfTsKKwkJODZC
RDE5OTgxQTJEQjA1QjAwNkRDRjBBIC8qIFJlZkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCRDE5OTcxQTJEQjA1QjAwNkRDRjBBIC8q
IFJlZkNvdW50ZXIuY3BwICovOyB9OwogCQk4QTJDNzUwRTE2Q0VEOTU1MDAyNEYzNTIgLyogUmVz
aXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4QTJDNzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0
ZXJDcmFzaC5jcHAgKi87IH07CiAJCThBM0FGOTNCMTZDOUVEMjcwMEQyNDhDMSAvKiBSZWxvYWRQ
YWdlQWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4QTNBRjkzQTE2QzlFRDI3MDBEMjQ4QzEgLyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2gu
Y3BwICovOyB9OwogCQk4QUEyOEMxQTE2RDJGQTdCMDAyRkY0REIgLyogTG9hZFBhZ2VPbkNyYXNo
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBQTI4
QzE5MTZEMkZBN0IwMDJGRjREQiAvKiBMb2FkUGFnZU9uQ3Jhc2guY3BwICovOyB9OwpAQCAtNDk2
LDYgKzQ5Nyw3IEBACiAJCTdDRkJDQUREMTc0MzIzNEYwMEIyQkZDRiAvKiBXaWxsTG9hZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxsTG9hZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkJDQUUzMTc0MzIzOEUwMEIyQkZDRiAvKiBXaWxs
TG9hZF9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ls
bExvYWRfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFCNTAxOTIx
NDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg2QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4QTJDNzUwRDE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXpl
V2luZG93QWZ0ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOEEzQUY5M0ExNkM5RUQyNzAwRDI0OEMxIC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNoLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbG9hZFBhZ2VBZnRlckNyYXNo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFBMjhDMTkxNkQyRkE3QjAwMkZG
NERCIC8qIExvYWRQYWdlT25DcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBMb2FkUGFnZU9uQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTYxLDYgKzk2Myw3IEBACiAJCQkJMUFGREU2NTQxOTUzQjJDMDAwQzQ4RkZBIC8qIE9wdGlv
bmFsLmNwcCAqLywKIAkJCQkwRkM2QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVl
LmNwcCAqLywKIAkJCQk5M0E0MjdBQTE4MERBMjY0MDBDRDI0RDcgLyogUmVmLmNwcCAqLywKKwkJ
CQk4NkJEMTk5NzFBMkRCMDVCMDA2RENGMEEgLyogUmVmQ291bnRlci5jcHAgKi8sCiAJCQkJOTNB
NDI3QUQxODBEQTYwRjAwQ0QyNEQ3IC8qIFJlZkxvZ2dlci5oICovLAogCQkJCTkzQTQyN0E4MTgw
RDlCMDcwMENEMjRENyAvKiBSZWZQdHIuY3BwICovLAogCQkJCUNENTM5M0M5MTc1N0JBQzQwMEMw
NzEyMyAvKiBTSEExLmNwcCAqLywKQEAgLTEzODcsNiArMTM5MCw3IEBACiAJCQkJQ0RDMkM3MTUx
Nzk3MEREQjAwRTYyN0ZCIC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFG
Q0Y3OUExNTM0QUM2RDAwMTA0NDkxIC8qIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBRkRFNjU2MTk1M0IyQzAwMEM0OEZGQSAvKiBPcHRpb25h
bC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NkJEMTk5ODFBMkRCMDVCMDA2RENGMEEgLyogUmVm
Q291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTQwRjc3NjE1MkU0REEwMDBBNDBDOEMg
LyogU2ltcGxpZnlNYXJrdXAubW0gaW4gU291cmNlcyAqLywKIAkJCQk0QTQxMEY0QzE5QUY3QkQ2
MDAyRUJBQjUgLyogVXNlck1lZGlhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwMkI3N0YyMTI2
NjEyMTQwMDI2QkYwRiAvKiBTcGFjZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCShyZXZp
c2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgeworCitzdGF0aWMgY29uc3QgaW50IENhbGxiYWNrRXhwZWN0ZWQgPSAweEMwRkZF
RTsKK3N0YXRpYyBjb25zdCBpbnQgQ2FsbGJhY2tOb3RFeHBlY3RlZCA9IDB4REVDQUY7CisKK1RF
U1QoV1RGLCBSZWZDb3VudGVyKQoreworICAgIC8vIFJlZkNvdW50ZXIgQVBJIGlzIHByZXR0eSBz
aW1wbGUsIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyA0IG1ldGhvZHMgdG8gdGVzdDoKKyAgICAv
LworICAgIC8vIDEpIFJlZkNvdW50ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKyAgICAvLyAy
KSB+UmVmQ291bnRlcigpOworICAgIC8vIDMpIFBhc3NSZWY8Q291bnQ+IGNvdW50KCkgY29uc3Q7
CisgICAgLy8gNCkgdW5zaWduZWQgdmFsdWUoKSBjb25zdDsKKyAgICAvLworICAgIC8vIFdlJ2xs
IHRlc3Q6CisgICAgLy8gMSkgQ29uc3RydWN0aW9uOgorICAgIC8vICAgMWEpIHdpdGggYSBjYWxs
YmFjaworICAgIC8vICAgMWIpIHdpdGhvdXQgYSBjYWxsYmFjaworICAgIC8vIDIpIERlc3RydWN0
aW9uIHdoZXJlIHRoZSBSZWZDb3VudGVyOjpDb3VudCBoYXM6CisgICAgLy8gICAyYSkgYSBub24t
emVybyByZWZlcmVuY2UgY291bnQgKENvdW50IG91dGxpdmVzIFJlZkNvdW50ZXIpLgorICAgIC8v
ICAgMmIpIGEgemVybyByZWZlcmVuY2UgY291bnQgKENvdW50IGlzIGRlbGV0ZWQgYnkgUmVmQ291
bnRlcidzIGRlc3RydWN0b3IpLgorICAgIC8vIDMpIENhbGwgY291bnQgdG8gcmVmL2RlcmVmIHRo
ZSBDb3VudCBvYmplY3QsIHdoZXJlOgorICAgIC8vICAgM2EpIHJlZiB3aXRoIGNhbGxiYWNrIGZy
b20gMCAtPiAxLgorICAgIC8vICAgM2IpIHJlZiB3aXRoIGNhbGxiYWNrIGZyb20gMSAtPiA+MS4K
KyAgICAvLyAgIDNjKSBkZXJlZiB3aXRoIGNhbGxiYWNrIGZyb20gPjEgLT4gMS4KKyAgICAvLyAg
IDNkKSBkZXJlZiB3aXRoIGNhbGxiYWNrIGZyb20gMSAtPiAwLgorICAgIC8vICAgM2QpIGRlcmVm
IHdpdGggY2FsbGJhY2sgZnJvbSAxIC0+IDAuCisgICAgLy8gICAzZSkgcmVmIHdpdGggY2FsbGJh
Y2sgZnJvbSAxIC0+ID4xIEFGVEVSIFJlZkNvdW50ZXIgaGFzIGJlZW4gZGVzdHJveWVkLgorICAg
IC8vICAgM2YpIGRlcmVmIHdpdGggY2FsbGJhY2sgZnJvbSA+MSAtPiAxIEFGVEVSIFJlZkNvdW50
ZXIgaGFzIGJlZW4gZGVzdHJveWVkLgorICAgIC8vICAgM2cpIGRlcmVmIHdpdGggY2FsbGJhY2sg
ZnJvbSAxIC0+IDAgQUZURVIgUmVmQ291bnRlciBoYXMgYmVlbiBkZXN0cm95ZWQuCisgICAgLy8g
ICAzaCkgcmVmIHdpdGhvdXQgY2FsbGJhY2sKKyAgICAvLyAgIDNpKSBkZXJlZiB3aXRob3V0IGNh
bGxiYWNrCisgICAgLy8gICAzaikgcmVmIHVzaW5nIGEgUmVmIHJhdGhlciB0aGFuIGEgUmVmUHRy
IChtYWtlIHN1cmUgdGhlcmUgaXMgbm8gdW5uZWNlc3NhcnkgcmVmZXJlbmNlIGNvdW50IGNodXJu
KS4KKyAgICAvLyAgIDNrKSBkZXJlZiB1c2luZyBhIFJlZiByYXRoZXIgdGhhbiBhIFJlZlB0ciAo
bWFrZSBzdXJlIHRoZXJlIGlzIG5vIHVubmVjZXNzYXJ5IHJlZmVyZW5jZSBjb3VudCBjaHVybiku
CisgICAgLy8gNCkgVGVzdCB0aGUgdmFsdWUgb2YgdGhlIGNvdW50ZXI6CisgICAgLy8gICA0YSkg
YXQgY29uc3RydWN0aW9uLgorICAgIC8vICAgNGIpIGFzIHJlYWQgd2l0aGluIHRoZSBjYWxsYmFj
ay4KKyAgICAvLyAgIDRjKSBhcyByZWFkIGFmdGVyIHRoZSByZWYvZGVyZWYuCisKKyAgICAvLyBU
aGVzZSB2YWx1ZXMgd2lsbCBvdXRsaXZlIHRoZSBmb2xsb3dpbmcgYmxvY2suCisgICAgaW50IGNh
bGxiYWNrVmFsdWUgPSBDYWxsYmFja05vdEV4cGVjdGVkOworICAgIFJlZlB0cjxSZWZDb3VudGVy
OjpDb3VudD4gaW5jVG8xQWdhaW47CisKKyAgICB7CisgICAgICAgIC8vIFRlc3RpbmcgKDFhKSAt
IENvbnN0cnVjdGlvbiB3aXRoIGEgY2FsbGJhY2suCisgICAgICAgIFJlZkNvdW50ZXIqIGNvdW50
ZXJQdHIgPSBudWxscHRyOworICAgICAgICBSZWZDb3VudGVyIGNvdW50ZXIoWyZdKCkgeworICAg
ICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIGF0IHRoZSBleHBl
Y3RlZCB0aW1lcywgYW5kIHRoZSBjb3JyZWN0IG51bWJlciBvZiB0aW1lcy4KKyAgICAgICAgICAg
IEVYUEVDVF9FUShjYWxsYmFja1ZhbHVlLCBDYWxsYmFja0V4cGVjdGVkKTsKKyAgICAgICAgICAg
IC8vIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGNvdW50ZXIgaW4gdGhlIGNhbGxiYWNrLgorICAg
ICAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IGNvdW50ZXJQdHItPnZhbHVlKCk7CisgICAgICAgIH0p
OworICAgICAgICBjb3VudGVyUHRyID0gJmNvdW50ZXI7CisgICAgICAgIC8vIFRlc3RpbmcgKDRh
KSAtIGFmdGVyIGNvbnN0cnVjdGlvbiB2YWx1ZSgpIGlzIDAuCisgICAgICAgIEVYUEVDVF9FUSgw
LCBzdGF0aWNfY2FzdDxpbnQ+KGNvdW50ZXIudmFsdWUoKSkpOworCisgICAgICAgIC8vIFRlc3Rp
bmcgKDNhKSAtIHJlZiB3aXRoIGNhbGxiYWNrIGZyb20gMCAtPiAxLgorICAgICAgICBjYWxsYmFj
a1ZhbHVlID0gQ2FsbGJhY2tFeHBlY3RlZDsKKyAgICAgICAgUmVmUHRyPFJlZkNvdW50ZXI6OkNv
dW50PiBpbmNUbzEoY291bnRlci5jb3VudCgpKTsKKyAgICAgICAgLy8gVGVzdGluZyAoNGIpICYg
KDRjKSAtIHZhbHVlcyB3aXRoaW4gJiBhZnRlciBjYWxsYmFjay4KKyAgICAgICAgRVhQRUNUX0VR
KDEsIGNhbGxiYWNrVmFsdWUpOworICAgICAgICBFWFBFQ1RfRVEoMSwgc3RhdGljX2Nhc3Q8aW50
Pihjb3VudGVyLnZhbHVlKCkpKTsKKworICAgICAgICAvLyBUZXN0aW5nICgzYikgLSByZWYgd2l0
aCBjYWxsYmFjayBmcm9tIDEgLT4gMi4KKyAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IENhbGxiYWNr
RXhwZWN0ZWQ7CisgICAgICAgIFJlZlB0cjxSZWZDb3VudGVyOjpDb3VudD4gaW5jVG8yKGluY1Rv
MSk7CisgICAgICAgIC8vIFRlc3RpbmcgKDRiKSAmICg0YykgLSB2YWx1ZXMgd2l0aGluICYgYWZ0
ZXIgY2FsbGJhY2suCisgICAgICAgIEVYUEVDVF9FUSgyLCBjYWxsYmFja1ZhbHVlKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDIsIHN0YXRpY19jYXN0PGludD4oY291bnRlci52YWx1ZSgpKSk7CisKKyAg
ICAgICAgLy8gVGVzdGluZyAoM2MpIC0gZGVyZWYgd2l0aCBjYWxsYmFjayBmcm9tID4xIC0+IDEu
CisgICAgICAgIGNhbGxiYWNrVmFsdWUgPSBDYWxsYmFja0V4cGVjdGVkOworICAgICAgICBpbmNU
bzEuY2xlYXIoKTsKKyAgICAgICAgLy8gVGVzdGluZyAoNGIpICYgKDRjKSAtIHZhbHVlcyB3aXRo
aW4gJiBhZnRlciBjYWxsYmFjay4KKyAgICAgICAgRVhQRUNUX0VRKDEsIGNhbGxiYWNrVmFsdWUp
OworICAgICAgICBFWFBFQ1RfRVEoMSwgc3RhdGljX2Nhc3Q8aW50Pihjb3VudGVyLnZhbHVlKCkp
KTsKKworICAgICAgICB7CisgICAgICAgICAgICAvLyBUZXN0aW5nICgzaikgLSByZWYgdXNpbmcg
YSBSZWYgcmF0aGVyIHRoYW4gYSBSZWZQdHIuCisgICAgICAgICAgICBjYWxsYmFja1ZhbHVlID0g
Q2FsbGJhY2tFeHBlY3RlZDsKKyAgICAgICAgICAgIFJlZjxSZWZDb3VudGVyOjpDb3VudD4gaW5j
VG8yQWdhaW4oY291bnRlci5jb3VudCgpKTsKKyAgICAgICAgICAgIC8vIFRlc3RpbmcgKDRiKSAm
ICg0YykgLSB2YWx1ZXMgd2l0aGluICYgYWZ0ZXIgY2FsbGJhY2suCisgICAgICAgICAgICBFWFBF
Q1RfRVEoMiwgY2FsbGJhY2tWYWx1ZSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoMiwgc3RhdGlj
X2Nhc3Q8aW50Pihjb3VudGVyLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIC8vIFRlc3RpbmcgKDNr
KSAtIGRlcmVmIHVzaW5nIGEgUmVmIHJhdGhlciB0aGFuIGEgUmVmUHRyLgorICAgICAgICAgICAg
Y2FsbGJhY2tWYWx1ZSA9IENhbGxiYWNrRXhwZWN0ZWQ7CisgICAgICAgIH0KKyAgICAgICAgRVhQ
RUNUX0VRKDEsIGNhbGxiYWNrVmFsdWUpOworICAgICAgICBFWFBFQ1RfRVEoMSwgc3RhdGljX2Nh
c3Q8aW50Pihjb3VudGVyLnZhbHVlKCkpKTsKKyAgICAgICAgLy8gVGVzdGluZyAoNGIpICYgKDRj
KSAtIHZhbHVlcyB3aXRoaW4gJiBhZnRlciBjYWxsYmFjay4KKworICAgICAgICAvLyBUZXN0aW5n
ICgzZCkgLSBkZXJlZiB3aXRoIGNhbGxiYWNrIGZyb20gMSAtPiAwLgorICAgICAgICBjYWxsYmFj
a1ZhbHVlID0gQ2FsbGJhY2tFeHBlY3RlZDsKKyAgICAgICAgaW5jVG8yLmNsZWFyKCk7CisgICAg
ICAgIC8vIFRlc3RpbmcgKDRiKSAmICg0YykgLSB2YWx1ZXMgd2l0aGluICYgYWZ0ZXIgY2FsbGJh
Y2suCisgICAgICAgIEVYUEVDVF9FUSgwLCBjYWxsYmFja1ZhbHVlKTsKKyAgICAgICAgRVhQRUNU
X0VRKDAsIHN0YXRpY19jYXN0PGludD4oY291bnRlci52YWx1ZSgpKSk7CisKKyAgICAgICAgLy8g
VGVzdGluZyAoMmEpIC0gRGVzdHJ1Y3Rpb24gd2hlcmUgdGhlIFJlZkNvdW50ZXI6OkNvdW50IGhh
cyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudC4KKyAgICAgICAgY2FsbGJhY2tWYWx1ZSA9IENh
bGxiYWNrRXhwZWN0ZWQ7CisgICAgICAgIGluY1RvMUFnYWluID0gY291bnRlci5jb3VudCgpOwor
ICAgICAgICBFWFBFQ1RfRVEoMSwgY2FsbGJhY2tWYWx1ZSk7CisgICAgICAgIEVYUEVDVF9FUSgx
LCBzdGF0aWNfY2FzdDxpbnQ+KGNvdW50ZXIudmFsdWUoKSkpOworICAgICAgICBjYWxsYmFja1Zh
bHVlID0gQ2FsbGJhY2tOb3RFeHBlY3RlZDsKKyAgICB9CisKKyAgICAvLyBUZXN0aW5nICgzZSkg
LSByZWYgd2l0aCBjYWxsYmFjayBmcm9tIDEgLT4gPjEgQUZURVIgUmVmQ291bnRlciBoYXMgYmVl
biBkZXN0cm95ZWQuCisgICAgUmVmUHRyPFJlZkNvdW50ZXI6OkNvdW50PiBpbmNUbzJBZ2FpbiA9
IGluY1RvMUFnYWluOworICAgIC8vIFRlc3RpbmcgKDNmKSAtIGRlcmVmIHdpdGggY2FsbGJhY2sg
ZnJvbSA+MSAtPiAxIEFGVEVSIFJlZkNvdW50ZXIgaGFzIGJlZW4gZGVzdHJveWVkLgorICAgIGlu
Y1RvMUFnYWluLmNsZWFyKCk7CisgICAgLy8gVGVzdGluZyAoM2cpIC0gZGVyZWYgd2l0aCBjYWxs
YmFjayBmcm9tIDEgLT4gMCBBRlRFUiBSZWZDb3VudGVyIGhhcyBiZWVuIGRlc3Ryb3llZC4KKyAg
ICBpbmNUbzJBZ2Fpbi5jbGVhcigpOworCisgICAgLy8gVGVzdGluZyAoMWIpIC0gQ29uc3RydWN0
aW9uIHdpdGhvdXQgYSBjYWxsYmFjay4KKyAgICBSZWZDb3VudGVyIGNvdW50ZXI7CisgICAgLy8g
VGVzdGluZyAoNGEpIC0gYWZ0ZXIgY29uc3RydWN0aW9uIHZhbHVlKCkgaXMgMC4KKyAgICBFWFBF
Q1RfRVEoMCwgc3RhdGljX2Nhc3Q8aW50Pihjb3VudGVyLnZhbHVlKCkpKTsKKyAgICAvLyBUZXN0
aW5nICgzaCkgLSByZWYgd2l0aG91dCBjYWxsYmFjaworICAgIFJlZlB0cjxSZWZDb3VudGVyOjpD
b3VudD4gaW5jVG8xKGNvdW50ZXIuY291bnQoKSk7CisgICAgLy8gVGVzdGluZyAoNGMpIC0gdmFs
dWUgYXMgcmVhZCBhZnRlciB0aGUgcmVmLgorICAgIEVYUEVDVF9FUSgxLCBzdGF0aWNfY2FzdDxp
bnQ+KGNvdW50ZXIudmFsdWUoKSkpOworICAgIC8vIFRlc3RpbmcgKDNpKSAtIGRlcmVmIHdpdGhv
dXQgY2FsbGJhY2sKKyAgICBpbmNUbzEuY2xlYXIoKTsKKyAgICAvLyBUZXN0aW5nICg0YykgLSB2
YWx1ZSBhcyByZWFkIGFmdGVyIHRoZSBkZXJlZi4KKyAgICBFWFBFQ1RfRVEoMCwgc3RhdGljX2Nh
c3Q8aW50Pihjb3VudGVyLnZhbHVlKCkpKTsKKyAgICAvLyBUZXN0aW5nICgyYikgLSBEZXN0cnVj
dGlvbiB3aGVyZSB0aGUgUmVmQ291bnRlcjo6Q291bnQgaGFzIGEgemVybyByZWZlcmVuY2UgY291
bnQuCisgICAgLy8gLi4uIG5vdCBhIGxvdCB0byB0ZXN0IGhlcmUhIC3CoHdlIGNhbiBhdCBsZWFz
dCBlbnN1cmUgdGhpcyBjb2RlIHBhdGggaXMgcnVuICYgd2UgZG9uJ3QgY3Jhc2ghCit9CisKK30g
Ly8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="267302"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>