<?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>204904</bug_id>
          
          <creation_ts>2019-12-05 11:35:19 -0800</creation_ts>
          <short_desc>get_by_id ICs should have a structure history used to indicate when we should skip generating an IC</short_desc>
          <delta_ts>2019-12-07 14:26:00 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1595904</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-05 11:35:19 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595991</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-05 14:15:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/57631437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596092</commentid>
    <comment_count>2</comment_count>
      <attachid>384976</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-05 16:28:37 -0800</bug_when>
    <thetext>Created attachment 384976
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596100</commentid>
    <comment_count>3</comment_count>
      <attachid>384977</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-05 16:37:43 -0800</bug_when>
    <thetext>Created attachment 384977
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596101</commentid>
    <comment_count>4</comment_count>
      <attachid>384977</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-05 16:39:30 -0800</bug_when>
    <thetext>Comment on attachment 384977
patch

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

&gt; Source/JavaScriptCore/runtime/OptionsList.h:497
&gt; +    v(Unsigned, getByIdICMaxNumberOfStructures, 4, Normal, &quot;Number of structures we see in the LLInt that could cause us to bail on generating an IC for various get_by_id ICs.&quot;) \

I&apos;m tuning this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596118</commentid>
    <comment_count>5</comment_count>
      <attachid>384977</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-05 17:02:36 -0800</bug_when>
    <thetext>Comment on attachment 384977
patch

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

r=me with nits.

&gt; Source/JavaScriptCore/dfg/DFGGraph.h:1156
&gt; +    HashSet&lt;Node*&gt; m_shouldSkipIC;

Why not adding this information in DFGNode itself?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:999
&gt; +        jsValueResult(resultRegs, node, DataFormatJS);

`jsValueResult(resultRegs, node);` is OK.

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:509
&gt; +        callOperationWithProfile(bytecode.metadata(m_codeBlock), operationGetByIdGeneric, resultVReg, TrustedImmPtr(m_codeBlock-&gt;globalObject()), regT0, TrustedImmPtr(ident-&gt;impl()));

Don&apos;t we need to do ArrayProfile in generic path?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596121</commentid>
    <comment_count>6</comment_count>
      <attachid>384977</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-12-05 17:05:43 -0800</bug_when>
    <thetext>Comment on attachment 384977
patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/PointerHistory.h:45
&gt; +        uintptr_t implBits = bitwise_cast&lt;uintptr_t&gt;(pointer);

nit: pointerBits?

&gt; Source/JavaScriptCore/bytecode/PointerHistory.h:59
&gt; +        update(count() + 1, filter());

Was this supposed to be `Options::getByValICMaxNumberOfIdentifiers() + 1`?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:647
&gt; +    if (metadata.m_seenStructures.count() &lt;= Options::getByIdICMaxNumberOfStructures())

maybe it&apos;s worth adding a helper to PointerHistory to perform this check? It&apos;s done in many places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596154</commentid>
    <comment_count>7</comment_count>
      <attachid>384977</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-05 18:38:57 -0800</bug_when>
    <thetext>Comment on attachment 384977
patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/PointerHistory.h:59
&gt;&gt; +        update(count() + 1, filter());
&gt; 
&gt; Was this supposed to be `Options::getByValICMaxNumberOfIdentifiers() + 1`?

I changed the policy here. (I also noted it in the changelog). The idea is basically just to increment each time, which is pretty sensible for get_by_val and get_by_id.

&gt;&gt; Source/JavaScriptCore/dfg/DFGGraph.h:1156
&gt;&gt; +    HashSet&lt;Node*&gt; m_shouldSkipIC;
&gt; 
&gt; Why not adding this information in DFGNode itself?

I don&apos;t think there is room in the node for this. I could hijack a bit from the identifier number, or from the speculated type, but that feels ugly.

&gt;&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:509
&gt;&gt; +        callOperationWithProfile(bytecode.metadata(m_codeBlock), operationGetByIdGeneric, resultVReg, TrustedImmPtr(m_codeBlock-&gt;globalObject()), regT0, TrustedImmPtr(ident-&gt;impl()));
&gt; 
&gt; Don&apos;t we need to do ArrayProfile in generic path?

My reasoning was just that if we&apos;re on the slow path, it is not needed. But I guess we can observe many structures all with the same array type. I&apos;ll add it back.

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:647
&gt;&gt; +    if (metadata.m_seenStructures.count() &lt;= Options::getByIdICMaxNumberOfStructures())
&gt; 
&gt; maybe it&apos;s worth adding a helper to PointerHistory to perform this check? It&apos;s done in many places.

the different checks have different limits though. I guess I could pass in the limit, but I&apos;m not sure it&apos;s much better than how it&apos;s done now.

&gt;&gt; Source/JavaScriptCore/runtime/OptionsList.h:497
&gt;&gt; +    v(Unsigned, getByIdICMaxNumberOfStructures, 4, Normal, &quot;Number of structures we see in the LLInt that could cause us to bail on generating an IC for various get_by_id ICs.&quot;) \
&gt; 
&gt; I&apos;m tuning this now.

I&apos;m going to pick 5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596155</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-05 18:39:04 -0800</bug_when>
    <thetext>Thanks for the reviews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596164</commentid>
    <comment_count>9</comment_count>
      <attachid>384989</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-05 20:41:24 -0800</bug_when>
    <thetext>Created attachment 384989
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596171</commentid>
    <comment_count>10</comment_count>
      <attachid>384989</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-05 23:33:12 -0800</bug_when>
    <thetext>Comment on attachment 384989
patch for landing

Clearing flags on attachment: 384989

Committed r253201: &lt;https://trac.webkit.org/changeset/253201&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596172</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-05 23:33:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596633</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-07 14:26:00 -0800</bug_when>
    <thetext>rolled out in:
https://trac.webkit.org/changeset/253263/webkit

It was not a speedup on anything, and slowed down JetStream 2&apos;s ML test by ~8%.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384976</attachid>
            <date>2019-12-05 16:28:37 -0800</date>
            <delta_ts>2019-12-05 16:37:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>41482</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzMTcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDE5LTEyLTA1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IGdldF9ieV9pZCBJQ3Mgc2hvdWxkIGhhdmUgYSBzdHJ1Y3R1cmUgaGlzdG9yeSB1c2VkIHRvIGlu
ZGljYXRlIHdoZW4gd2Ugc2hvdWxkIHNraXAgZ2VuZXJhdGluZyBhbiBJQworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTA0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NzYzMTQzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJIGltcGxlbWVudGVkIGEgc2ltaWxhciBwb2xpY3kgZm9yIGdldF9ieV92
YWwgZm9yIHRoZSBudW1iZXIgb2YgdW5pcXVlIHNlZW4KKyAgICAgICAgaWRlbnRpZmllcnMuIFRo
aXMgYWxsb3dzIHVzIHRvIGNyZWF0ZSBhIGhldXJpc3RpYyB0byBkaXJlY3RseSBjYWxsIHRoZSBz
bG93CisgICAgICAgIHBhdGggd2hlbiBwcm9maWxpbmcgaW5mb3JtYXRpb24gdGVsbHMgdXMgaWYg
aW5saW5lIGNhY2hpbmcgbWlnaHQgbm90IGJlCisgICAgICAgIHByb2ZpdGFibGUuIFRoaXMgcGF0
Y2ggaW1wbGVtZW50cyBhIHNpbWlsYXIgcG9saWN5IGZvciBnZXRfYnlfaWQgd2hlcmUgd2UKKyAg
ICAgICAgcHJvZmlsZSB0aGUgc2VlbiBiYXNlIHZhbHVlIHN0cnVjdHVyZXMuIElmIHRoZSBMTElu
dCBvYnNlcnZlcyBlbm91Z2gKKyAgICAgICAgdW5pcXVlIHN0cnVjdHVyZXMsIHdlIG9taXQgZW1p
dHRpbmcgdGhlIGlubGluZSBjYWNoZSBpbiB0aGUgdXBwZXIKKyAgICAgICAgdGllcnMuCisgICAg
ICAgIAorICAgICAgICBUaGUgZ29hbCBoZXJlIHdhcyB0byB0cnkgdG8gc3BlZWQgdXAgU3BlZWRv
bWV0ZXIyLiBMb2NhbCB0ZXN0aW5nIHNob3dlZAorICAgICAgICB0aGlzIHBhdGNoIHRvIHJlcGVh
dGVkbHkgYmUgMC41JSBmYXN0ZXIsIGJ1dCBhbGwgdGhlIFAgdmFsdWVzIEkgZ290IHdlcmUKKyAg
ICAgICAgaW5zaWduaWZpY2FudC4gU28gaXQgYXBwZWFycyBpdCdzIGVpdGhlciBuZXV0cmFsIG9y
IHNsaWdodGx5IGZhc3Rlci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGp1
c3RzIHRoZSBwb2xpY3kgb2Ygc2VlaW5nIGEgbm9uLWlkZW50aWZpZXIgaW5zaWRlCisgICAgICAg
IHRoZSBQb2ludGVySGlzdG9yeSBkYXRhIHN0cnVjdHVyZS4gSW5zdGVhZCBvZiBpbmNyZWFzaW5n
IGl0IHRvIHJlYWNoIHRoZQorICAgICAgICBsaW1pdCB3aGVuIHdlIHNlZSBhIG5vbi1pZGVudGlm
aWVyLCB3ZSBqdXN0IHRyZWF0IGVhY2ggZXhlY3V0aW9uIHdpdGgKKyAgICAgICAgYSBub24taWRl
bnRpZmllciB0byBpbmNyZW1lbnQgdGhlIGNvdW50IGJ5IDEuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeVZhbEhpc3RvcnkuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9Qb2ludGVySGlzdG9yeS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlWYWxIaXN0b3J5LmguCisgICAgICAg
IChKU0M6OlBvaW50ZXJIaXN0b3J5OjpvYnNlcnZlKToKKyAgICAgICAgKEpTQzo6UG9pbnRlckhp
c3Rvcnk6Om9ic2VydmVOdWxsKToKKyAgICAgICAgKEpTQzo6R2V0QnlWYWxIaXN0b3J5OjpvYnNl
cnZlTm9uVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2V0QnlWYWxIaXN0b3J5OjpvYnNl
cnZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2V0QnlWYWxIaXN0b3J5Ojpjb3VudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdldEJ5VmFsSGlzdG9yeTo6ZmlsdGVyIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2V0QnlWYWxIaXN0b3J5Ojp1cGRhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUdldEJ5VmFsKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGpp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlf
Z2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9nZXRfYnlfaWQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnNMaXN0Lmg6CisKIDIwMTktMTItMDUgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjUzMTQwKTogV2FzbTo6RnVuY3Rpb25Q
YXJzZXIgbmVlZHMgdG8gYm91bmRzIGNoZWNrIGluIFNldExvY2FsL1RlZUxvY2FsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTg4OSw3ICs4ODksNiBAQAogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdB
QzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDUxNTM5QjgxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUg
LyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEJBQTA3Q0VCODFGNDlBMjk2RTAyMjAzIC8qIFdhc21TaWduYXR1cmVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMEE1
RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MjBEOTlGMTIzODhDQzgx
MDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MjBEOTlGMDIzODhDQzc4MDAwNTA5QTMgLyogR2V0QnlWYWxI
aXN0b3J5LmggKi87IH07CiAJCTUyMTEzMUY3MUY4MkJGMTQwMDdDQ0VFRSAvKiBQb2x5UHJvdG9B
Y2Nlc3NDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTIxMTMxRjYxRjgyQkYxMTAwN0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTIxMzIyNDYx
RUNCQ0U4MjAwRjY1NjE1IC8qIFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjEzMjI0NDFFQ0JDRTgyMDBGNjU2
MTUgLyogV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaCAqLzsgfTsKIAkJNTIyOTI3RDUyMzVGRDBC
OTAwNUNCMTY5IC8qIEdDTWVtb3J5T3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3Mjk4N0IyMzVGQzhCQTAwNUM5ODJDIC8qIEdDTWVt
b3J5T3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC05MDIsNiArOTAxLDcgQEAKIAkJNTI2QUM0QjcxRTk3N0M1RDAwMzUwMEUxIC8q
IFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyNkFDNEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI3Q0UzNTQyMjU1
NUZFNTAwQzZGMzgyIC8qIEpTVG9XYXNtSUNDYWxsZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyN0NFMzUzMjI1NTVGREQwMEM2RjM4MiAvKiBKU1Rv
V2FzbUlDQ2FsbGVlLmggKi87IH07CiAJCTUyODQ3QURDMjFGRkI4NjkwMDYxQTlEQiAvKiBXYXNt
QWlySVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyODQ3QURBMjFGRkI4NjMwMDYxQTlEQiAvKiBXYXNtQWlySVJHZW5lcmF0b3IuaCAq
LzsgfTsKKwkJNTJBRDA4MjMyMzk5QTFGQjAwQjQxMDFBIC8qIFBvaW50ZXJIaXN0b3J5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkFEMDgyMjIzOTlB
MUYyMDBCNDEwMUEgLyogUG9pbnRlckhpc3RvcnkuaCAqLzsgfTsKIAkJNTJCMzEwRkIxOTc0QUU2
MTAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCMzEwRkExOTc0QUU2MTAwODA4NTdDIC8q
IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUyQjMxMTAxMTk3NUI0NjcwMDgwODU3QyAvKiBUeXBlTG9j
YXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTJCMzExMDAxOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJDMDYxMUYxQUE1
MUUxQzAwQjRBREJBIC8qIFJ1bnRpbWVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkMwNjExRDFBQTUxRTFCMDBCNEFEQkEgLyogUnVudGltZVR5
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MzUzOCw3ICszNTM4LDYgQEAKIAkJNENFOTc4RTM4NUE4NDk4MTk5MDUyMTUzIC8qIE1vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07CiAJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlib2JqYy5k
eWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJNTIwRDk5RjAyMzg4Q0M3ODAw
MDUwOUEzIC8qIEdldEJ5VmFsSGlzdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZXRCeVZhbEhpc3Rv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIxMTMxRjUxRjgyQkYxMTAwN0ND
RUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbHlQ
cm90b0FjY2Vzc0NoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIxMTMx
RjYxRjgyQkYxMTAwN0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBvbHlQcm90b0FjY2Vzc0NoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyMTMyMjQzMUVDQkNFODIwMEY2NTYxNSAvKiBXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUZ1bmN0aW9u
QmFzZS5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTYxLDYgKzM1NjAsNyBAQAogCQk1MjdDRTM1MzIyNTU1
RkREMDBDNkYzODIgLyogSlNUb1dhc21JQ0NhbGxlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1RvV2Fz
bUlDQ2FsbGVlLmg7IHBhdGggPSBqcy9KU1RvV2FzbUlDQ2FsbGVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyODQ3QUQ5MjFGRkI4NjMwMDYxQTlEQiAvKiBXYXNtQWlySVJHZW5l
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUFpcklSR2VuZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI4NDdBREEyMUZGQjg2MzAwNjFBOURCIC8qIFdh
c21BaXJJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQWlySVJHZW5lcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJBRDA4MjIyMzk5QTFGMjAwQjQxMDFBIC8q
IFBvaW50ZXJIaXN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJIaXN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjMxMEZBMTk3NEFFNjEwMDgwODU3QyAvKiBGdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjMxMEZDMTk3NEFFODcw
MDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTJCMzEwRkUxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVMb2NhdGlvbkNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTgyNDEsNyArODI0MSw2IEBACiAJCQkJMEYwMzMyQzIxOEIwMTc2MzAw
NUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVG
M0M2IC8qIEdldEJ5U3RhdHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NjE0Q0E3REMxMDA4NUYzQzYg
LyogR2V0QnlTdGF0dXMuaCAqLywKLQkJCQk1MjBEOTlGMDIzODhDQzc4MDAwNTA5QTMgLyogR2V0
QnlWYWxIaXN0b3J5LmggKi8sCiAJCQkJMTRBRDkxMDgxRENBOTI5NDAwMTRGOUZFIC8qIEdsb2Jh
bENvZGVCbG9jay5oICovLAogCQkJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVy
SW5mby5oICovLAogCQkJCTBGNDRBN0FCMjBCRjY4NUUwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5j
cHAgKi8sCkBAIC04Mjk3LDYgKzgyOTYsNyBAQAogCQkJCUE3MDQ0N0U5MTdBMEJENDYwMEY1ODk4
RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLywKIAkJCQlFMzRFNjU3NDIwNjY4RThFMDBGQjgxQUMg
LyogUGFyc2VIYXNoLmNwcCAqLywKIAkJCQlFMzRFNjU3MzIwNjY4RThEMDBGQjgxQUMgLyogUGFy
c2VIYXNoLmggKi8sCisJCQkJNTJBRDA4MjIyMzk5QTFGMjAwQjQxMDFBIC8qIFBvaW50ZXJIaXN0
b3J5LmggKi8sCiAJCQkJMEZGOUNFNzExQjlDRDZEMDAwNEVEQ0E2IC8qIFBvbHltb3JwaGljQWNj
ZXNzLmNwcCAqLywKIAkJCQkwRkY5Q0U3MjFCOUNENkQwMDA0RURDQTYgLyogUG9seW1vcnBoaWNB
Y2Nlc3MuaCAqLywKIAkJCQk1MjExMzFGNTFGODJCRjExMDA3Q0NFRUUgLyogUG9seVByb3RvQWNj
ZXNzQ2hhaW4uY3BwICovLApAQCAtOTUyNiw3ICs5NTI2LDYgQEAKIAkJCQkxNDk4Q0FENjIxNEJG
MzZEMDA3MTA4NzkgLyogR2V0QnlJZE1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjAz
MzJDNDE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOTMzMkEwMTRDQTdEQ0QwMDg1RjNDNiAvKiBHZXRCeVN0YXR1cy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNTIwRDk5RjEyMzg4Q0M4MTAwMDUwOUEzIC8qIEdldEJ5VmFsSGlzdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzk2NDY1NkExQjk1MkZGMDAwMzA1OUVFIC8qIEdldFB1dEluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCTUzNEUwMzU4MUU1M0JGMkYwMDIxM0Y2NCAvKiBHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTFENkQ2RjIzNjI1OEZFMDA3
QTVDMjYgLyogR2V0Vk0uaCBpbiBIZWFkZXJzICovLApAQCAtMTAzMDMsNiArMTAzMDIsNyBAQAog
CQkJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0MkUzMTNDMTM0RkYwQTYwMEFGQURCNSAvKiBXZWFrLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MkFEMDgyMzIzOTlBMUZCMDBCNDEwMUEgLyogUG9pbnRlckhpc3RvcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0RTg0RjlGMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTE0QkZDRTY5MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NN
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQCB0eXBlcyBbCiAgICAgOkVycm9yVHlwZSwKICAgICA6R2V0QnlJZE1v
ZGUsCiAgICAgOkdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgOkdldEJ5VmFsSGlzdG9yeSwKKyAg
ICA6UG9pbnRlckhpc3RvcnksCiAgICAgOkdldFB1dEluZm8sCiAgICAgOkluZGV4aW5nVHlwZSwK
ICAgICA6SlNDZWxsLApAQCAtNDUxLDYgKzQ1MSw3IEBAIG9wIDpnZXRfYnlfaWQsCiAgICAgbWV0
YWRhdGE6IHsKICAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHNlZW5TdHJ1Y3R1cmVzOiBQb2lu
dGVySGlzdG9yeSwKICAgICB9CiAKIG9wIDpnZXRfYnlfaWRfd2l0aF90aGlzLApAQCAtNDYyLDYg
KzQ2Myw3IEBAIG9wIDpnZXRfYnlfaWRfd2l0aF90aGlzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6
IHsKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBzZWVuU3RydWN0dXJl
czogUG9pbnRlckhpc3RvcnksCiAgICAgfQogCiBvcCA6Z2V0X2J5X3ZhbF93aXRoX3RoaXMsCkBA
IC00ODUsNiArNDg3LDcgQEAgb3AgOmdldF9ieV9pZF9kaXJlY3QsCiAgICAgICAgIHByb2ZpbGU6
IFZhbHVlUHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAogICAgICAgICBzdHJ1Y3R1cmVJRDog
U3RydWN0dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIHNlZW5TdHJ1
Y3R1cmVzOiBQb2ludGVySGlzdG9yeSwKICAgICB9CiAKIG9wIDp0cnlfZ2V0X2J5X2lkLApAQCAt
NDk1LDYgKzQ5OCw3IEBAIG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6
IHsKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBzZWVuU3RydWN0dXJl
czogUG9pbnRlckhpc3RvcnksCiAgICAgfQogCiBvcCA6cHV0X2J5X2lkLApAQCAtNTM1LDcgKzUz
OSw3IEBAIG9wIDpnZXRfYnlfdmFsLAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIHByb2ZpbGU6
IFZhbHVlUHJvZmlsZSwKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAg
ICAgIHNlZW5JZGVudGlmaWVyczogR2V0QnlWYWxIaXN0b3J5LAorICAgICAgICBzZWVuSWRlbnRp
ZmllcnM6IFBvaW50ZXJIaXN0b3J5LAogICAgIH0KIAogb3AgOnB1dF9ieV92YWwsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlWYWxIaXN0b3J5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5VmFsSGlzdG9yeS5oCShy
ZXZpc2lvbiAyNTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlW
YWxIaXN0b3J5LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJUaW55Qmxvb21GaWx0ZXIuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1w
bC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotc3RydWN0IEdldEJ5VmFsSGlzdG9yeSB7Ci0gICAg
dm9pZCBvYnNlcnZlTm9uVUlEKCkKLSAgICB7Ci0gICAgICAgIHVpbnRwdHJfdCBjb3VudCA9IE9w
dGlvbnM6OmdldEJ5VmFsSUNNYXhOdW1iZXJPZklkZW50aWZpZXJzKCkgKyAxOwotICAgICAgICB1
cGRhdGUoY291bnQsIGZpbHRlcigpKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9ic2VydmUoY29uc3Qg
VW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCi0gICAgewotICAgICAgICBpZiAoIWltcGwpIHsKLSAg
ICAgICAgICAgIG9ic2VydmVOb25VSUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHVpbnRwdHJfdCBjb3VudCA9IHRoaXMtPmNvdW50KCk7Ci0gICAgICAgIHVp
bnRwdHJfdCBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLQotICAgICAgICBUaW55Qmxvb21GaWx0
ZXIgYmxvb21GaWx0ZXIoZmlsdGVyKTsKLSAgICAgICAgdWludHB0cl90IGltcGxCaXRzID0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW1wbCk7Ci0gICAgICAgIEFTU0VSVCgoKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihpbXBsQml0cykgPDwgOCkgPj4gOCkgPT0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGltcGxCaXRzKSk7Ci0gICAgICAgIGlmIChibG9vbUZpbHRlci5ydWxlT3V0KGltcGxCaXRzKSkg
ewotICAgICAgICAgICAgYmxvb21GaWx0ZXIuYWRkKGltcGxCaXRzKTsKLSAgICAgICAgICAgICsr
Y291bnQ7Ci0gICAgICAgICAgICB1cGRhdGUoY291bnQsIGJsb29tRmlsdGVyLmJpdHMoKSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICB1aW50cHRyX3QgY291bnQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KG1fcGF5bG9hZCA+PiA1Nik7IH0KLQotcHJpdmF0ZToKLSAg
ICB1aW50cHRyX3QgZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90
PigobV9wYXlsb2FkIDw8IDgpID4+IDgpOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZSh1aW50NjRfdCBj
b3VudCwgdWludDY0X3QgZmlsdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCgoZmlsdGVyIDw8
IDgpID4+IDgpID09IGZpbHRlcik7Ci0gICAgICAgIG1fcGF5bG9hZCA9IChjb3VudCA8PCA1Nikg
fCBmaWx0ZXI7Ci0gICAgfQotCi0gICAgdWludDY0X3QgbV9wYXlsb2FkIHsgMCB9OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9pbnRlckhpc3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9pbnRlckhpc3RvcnkuaAkocmV2aXNpb24gMjUzMTE3KQkoZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlWYWxIaXN0b3J5Lmg6MjUzMTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvaW50ZXJIaXN0b3J5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVGlueUJsb29tRmlsdGVyLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0cnVjdCBHZXRCeVZhbEhpc3RvcnkgeworICAgIHZvaWQgb2JzZXJ2ZU5vblVJRCgpCisgICAg
eworICAgICAgICB1aW50cHRyX3QgY291bnQgPSBPcHRpb25zOjpnZXRCeVZhbElDTWF4TnVtYmVy
T2ZJZGVudGlmaWVycygpICsgMTsKKyAgICAgICAgdXBkYXRlKGNvdW50LCBmaWx0ZXIoKSk7Cisg
ICAgfQorCisgICAgdm9pZCBvYnNlcnZlKGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsKQor
ICAgIHsKKyAgICAgICAgaWYgKCFpbXBsKSB7CisgICAgICAgICAgICBvYnNlcnZlTm9uVUlEKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB1aW50cHRyX3QgY291
bnQgPSB0aGlzLT5jb3VudCgpOworICAgICAgICB1aW50cHRyX3QgZmlsdGVyID0gdGhpcy0+Zmls
dGVyKCk7CisKKyAgICAgICAgVGlueUJsb29tRmlsdGVyIGJsb29tRmlsdGVyKGZpbHRlcik7Cisg
ICAgICAgIHVpbnRwdHJfdCBpbXBsQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGltcGwp
OworICAgICAgICBBU1NFUlQoKChzdGF0aWNfY2FzdDx1aW50NjRfdD4oaW1wbEJpdHMpIDw8IDgp
ID4+IDgpID09IHN0YXRpY19jYXN0PHVpbnQ2NF90PihpbXBsQml0cykpOworICAgICAgICBpZiAo
Ymxvb21GaWx0ZXIucnVsZU91dChpbXBsQml0cykpIHsKKyAgICAgICAgICAgIGJsb29tRmlsdGVy
LmFkZChpbXBsQml0cyk7CisgICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgdXBkYXRl
KGNvdW50LCBibG9vbUZpbHRlci5iaXRzKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdWlu
dHB0cl90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PihtX3Bh
eWxvYWQgPj4gNTYpOyB9CisKK3ByaXZhdGU6CisgICAgdWludHB0cl90IGZpbHRlcigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oKG1fcGF5bG9hZCA8PCA4KSA+PiA4KTsg
fQorCisgICAgdm9pZCB1cGRhdGUodWludDY0X3QgY291bnQsIHVpbnQ2NF90IGZpbHRlcikKKyAg
ICB7CisgICAgICAgIEFTU0VSVCgoKGZpbHRlciA8PCA4KSA+PiA4KSA9PSBmaWx0ZXIpOworICAg
ICAgICBtX3BheWxvYWQgPSAoY291bnQgPDwgNTYpIHwgZmlsdGVyOworICAgIH0KKworICAgIHVp
bnQ2NF90IG1fcGF5bG9hZCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvaW50ZXJIaXN0b3J5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvaW50ZXJIaXN0b3J5LmgJKHJl
dmlzaW9uIDI1MzExNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2ludGVy
SGlzdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNyArMzAsMTEgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXN0cnVjdCBHZXRCeVZhbEhpc3RvcnkgewotICAgIHZvaWQgb2JzZXJ2ZU5vblVJ
RCgpCitzdHJ1Y3QgUG9pbnRlckhpc3RvcnkgeworICAgIHZvaWQgb2JzZXJ2ZShjb25zdCB2b2lk
KiBwb2ludGVyKQogICAgIHsKLSAgICAgICAgdWludHB0cl90IGNvdW50ID0gT3B0aW9uczo6Z2V0
QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMoKSArIDE7Ci0gICAgICAgIHVwZGF0ZShjb3Vu
dCwgZmlsdGVyKCkpOwotICAgIH0KLQotICAgIHZvaWQgb2JzZXJ2ZShjb25zdCBVbmlxdWVkU3Ry
aW5nSW1wbCogaW1wbCkKLSAgICB7Ci0gICAgICAgIGlmICghaW1wbCkgewotICAgICAgICAgICAg
b2JzZXJ2ZU5vblVJRCgpOworICAgICAgICBpZiAoIXBvaW50ZXIpIHsKKyAgICAgICAgICAgIG9i
c2VydmVOdWxsKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDgsNyAr
NDIsNyBAQCBzdHJ1Y3QgR2V0QnlWYWxIaXN0b3J5IHsKICAgICAgICAgdWludHB0cl90IGZpbHRl
ciA9IHRoaXMtPmZpbHRlcigpOwogCiAgICAgICAgIFRpbnlCbG9vbUZpbHRlciBibG9vbUZpbHRl
cihmaWx0ZXIpOwotICAgICAgICB1aW50cHRyX3QgaW1wbEJpdHMgPSBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihpbXBsKTsKKyAgICAgICAgdWludHB0cl90IGltcGxCaXRzID0gYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4ocG9pbnRlcik7CiAgICAgICAgIEFTU0VSVCgoKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihpbXBsQml0cykgPDwgOCkgPj4gOCkgPT0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGltcGxC
aXRzKSk7CiAgICAgICAgIGlmIChibG9vbUZpbHRlci5ydWxlT3V0KGltcGxCaXRzKSkgewogICAg
ICAgICAgICAgYmxvb21GaWx0ZXIuYWRkKGltcGxCaXRzKTsKQEAgLTYwLDYgKzU0LDExIEBAIHN0
cnVjdCBHZXRCeVZhbEhpc3RvcnkgewogICAgIHVpbnRwdHJfdCBjb3VudCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4obV9wYXlsb2FkID4+IDU2KTsgfQogCiBwcml2YXRl
OgorICAgIHZvaWQgb2JzZXJ2ZU51bGwoKQorICAgIHsKKyAgICAgICAgdXBkYXRlKGNvdW50KCkg
KyAxLCBmaWx0ZXIoKSk7CisgICAgfQorCiAgICAgdWludHB0cl90IGZpbHRlcigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oKG1fcGF5bG9hZCA8PCA4KSA+PiA4KTsgfQog
CiAgICAgdm9pZCB1cGRhdGUodWludDY0X3QgY291bnQsIHVpbnQ2NF90IGZpbHRlcikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAyNTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcxMiwxMSArNDcxMiw2IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJZChjb25zdCAKICAgICAKICAgICBOb2RlKiBiYXNlID0g
Z2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1f
aW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwot
ICAgIAotICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVG
b3IoCi0gICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKLSAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKLSAgICAg
ICAgY3VycmVudENvZGVPcmlnaW4oKSwgR2V0QnlTdGF0dXM6OlRyYWNrSWRlbnRpZmllcnM6Ok5v
KTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CiAgICAgdW5z
aWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CkBAIC00NzI0
LDEwICs0NzE5LDI5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJZChjb25zdCAK
ICAgICAgICAgdHlwZSA9IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQ7CiAgICAgZWxzZSBpZiAoT3A6
Om9wY29kZUlEID09IG9wX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIHR5cGUgPSBBY2Nlc3NU
eXBlOjpHZXRCeUlkRGlyZWN0OworICAgIAorICAgIGlmIChieXRlY29kZS5tZXRhZGF0YShtX2lu
bGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaykubV9zZWVuU3RydWN0dXJlcy5jb3VudCgpID4gT3B0
aW9uczo6Z2V0QnlJZElDTWF4TnVtYmVyT2ZTdHJ1Y3R1cmVzKCkpIHsKKyAgICAgICAgTm9kZVR5
cGUgZ2V0QnlJZDsKKyAgICAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZCkKKyAg
ICAgICAgICAgIGdldEJ5SWQgPSBHZXRCeUlkOworICAgICAgICBlbHNlIGlmICh0eXBlID09IEFj
Y2Vzc1R5cGU6OlRyeUdldEJ5SWQpCisgICAgICAgICAgICBnZXRCeUlkID0gVHJ5R2V0QnlJZDsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2V0QnlJZCA9IEdldEJ5SWREaXJlY3Q7CisKKyAg
ICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJO
dW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpOworICAgICAgICBzZXQoYnl0ZWNvZGUu
bV9kc3QsIG5vZGUpOworICAgICAgICBtX2dyYXBoLm1fc2hvdWxkU2tpcElDLmFkZChub2RlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1
cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssCisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAs
IG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIEdldEJ5U3Rh
dHVzOjpUcmFja0lkZW50aWZpZXJzOjpObyk7CiAKICAgICBoYW5kbGVHZXRCeUlkKAogICAgICAg
ICBieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgZ2V0
QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7Ci0KIH0KIAogc3RhdGljIHVpbnQ2NF90IG1h
a2VEeW5hbWljVmFyT3BJbmZvKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIHVuc2lnbmVkIGdl
dFB1dEluZm8pCkBAIC01NjU2LDcgKzU2NzAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gR2V0
QnlWYWwgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIGl0IGNsb2JiZXJzIGV4aXQgc3RhdGUsIHNpbmNl
IEZpeHVwUGhhc2UgbWF5IG1ha2UgaXQgZ2VuZXJpYy4KICAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9kc3QsIGdldEJ5VmFsKTsKICAgICAgICAgICAgICAgICBpZiAoZ2V0QnlTdGF0dXMu
b2JzZXJ2ZWRTdHJ1Y3R1cmVTdHViSW5mb1Nsb3dQYXRoKCkgfHwgYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5tX3NlZW5JZGVudGlmaWVycy5jb3VudCgpID4gT3B0aW9uczo6Z2V0QnlWYWxJ
Q01heE51bWJlck9mSWRlbnRpZmllcnMoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X3Nsb3dHZXRCeVZhbC5hZGQoZ2V0QnlWYWwpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fc2hvdWxkU2tpcElDLmFkZChnZXRCeVZhbCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV92YWwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUzLDcgKzExNTMsNyBAQCBwdWJs
aWM6CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJpbmdTdHJ1Y3R1cmU7CiAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzeW1ib2xTdHJ1Y3R1cmU7CiAKLSAgICBIYXNoU2V0PE5vZGUqPiBtX3Ns
b3dHZXRCeVZhbDsKKyAgICBIYXNoU2V0PE5vZGUqPiBtX3Nob3VsZFNraXBJQzsKIAogcHJpdmF0
ZToKICAgICBib29sIGlzU3RyaW5nUHJvdG90eXBlTWV0aG9kU2FuZShKU0dsb2JhbE9iamVjdCos
IFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDI1MzExNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNTksNyArMjI1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQXJyYXk6OkdlbmVyaWM6IHsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc2xvd0dl
dEJ5VmFsLmNvbnRhaW5zKG5vZGUpKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3Nob3Vs
ZFNraXBJQy5jb250YWlucyhub2RlKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkudXNlS2luZCgpID09IFN0
cmluZ1VzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsRm9yT2Jq
ZWN0V2l0aFN0cmluZyhub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQwOCw3ICsyNDA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBcnJh
eTo6R2VuZXJpYzogewotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zbG93R2V0QnlWYWwuY29u
dGFpbnMobm9kZSkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc2hvdWxkU2tpcElDLmNv
bnRhaW5zKG5vZGUpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgewogICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3Ry
aW5nKG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI1MzExNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODYsNiArOTg2
LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUKIHsKICAgICBB
U1NFUlQoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkIHx8IGFjY2Vzc1R5cGUgPT0g
QWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCB8fCBhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OlRy
eUdldEJ5SWQpOwogCisgICAgc3RhdGljIGRvdWJsZSB0b3RhbDsKKyAgICBzdGF0aWMgZG91Ymxl
IGZhc3Q7CisgICAgKyt0b3RhbDsKKyAgICBpZiAobV9ncmFwaC5tX3Nob3VsZFNraXBJQy5jb250
YWlucyhub2RlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9k
ZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2Uu
anNWYWx1ZVJlZ3MoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBKU1Zh
bHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oYXBw
cm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0aW9uKGFjY2Vzc1R5cGUpLCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIFRydXN0ZWRJbW1QdHIoaWRlbnRp
ZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKSk7CisgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0
YUZvcm1hdEpTKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICArK2Zhc3Q7CisgICAgZGF0
YUxvZ0xuKCJmYXN0ICU6ICIsIGZhc3QvdG90YWwpOworCiAgICAgc3dpdGNoIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNTMxMTcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1NDYsNiArMzU0NiwxNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
QVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZCB8fCB0eXBlID09IEFjY2Vzc1R5cGU6
OlRyeUdldEJ5SWQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKworICAgICAgICBpZiAobV9ncmFwaC5tX3Nob3Vs
ZFNraXBJQy5jb250YWlucyhtX25vZGUpKSB7CisgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgICAgICAgICAgc2V0
SlNWYWx1ZSh2bUNhbGwoSW50NjQsIGFwcHJvcHJpYXRlR2VuZXJpY0dldEJ5SWRGdW5jdGlvbih0
eXBlKSwKKyAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBt
X291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVy
TnVtYmVyKCldKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAg
c3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIENlbGxV
c2U6IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCB0eXBlKSk7CkBAIC00NDUzLDcgKzQ0NjMsNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzogewotICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgubV9zbG93R2V0QnlWYWwuY29udGFpbnMobV9ub2RlKSkgeworICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgubV9zaG91bGRTa2lwSUMuY29udGFpbnMobV9ub2RlKSkgewogICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkudXNlS2luZCgp
ID09IE9iamVjdFVzZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDEpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9EU0wucmIJKHJldmlzaW9uIDI1MzExNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvRFNMLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgbW9k
dWxlIERTTAogI2luY2x1ZGUgIkJ5dGVjb2RlRHVtcGVyLmgiCiAjaW5jbHVkZSAiRml0cy5oIgog
I2luY2x1ZGUgIkdldEJ5SWRNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkdldEJ5VmFsSGlzdG9yeS5o
IgorI2luY2x1ZGUgIlBvaW50ZXJIaXN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2
aXNpb24gMjUzMTE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSwzNyArNDA5LDQ0IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW4KICAgICBpbnQgcmVzdWx0VlJlZyA9IGJ5dGVj
b2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZS5v
ZmZzZXQoKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlVlJlZywgcmVnVDApOwogCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJl
Z1QwLCBiYXNlVlJlZyk7CisgICAgaWYgKG1ldGFkYXRhLm1fc2VlblN0cnVjdHVyZXMuY291bnQo
KSA+IE9wdGlvbnM6OmdldEJ5SWRJQ01heE51bWJlck9mU3RydWN0dXJlcygpKQorICAgICAgICBj
YWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBv
cGVyYXRpb25UcnlHZXRCeUlkR2VuZXJpYywgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgVHJ1c3RlZEltbVB0cihpZGVudC0+aW1w
bCgpKSk7CisgICAgZWxzZSB7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMCwgYmFzZVZSZWcpOwogCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAotICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7Ci0gICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0gICAgbV9n
ZXRCeUlkcy5hcHBlbmQoZ2VuKTsKLSAgICAKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHRWUmVnKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworICAgICAgICAKKyAgICAg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykp
OworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcpOworICAgIH0KIH0K
IAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGlmIChoYXNBbnlTbG93Q2Fz
ZXMoaXRlcikpIHsKKyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4oKTsKLSAgICBp
bnQgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwotICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3Bl
cnR5KSk7CisgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
VHJ5R2V0QnlJZD4oKTsKKyAgICAgICAgaW50IHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdC5v
ZmZzZXQoKTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2Nr
LT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CiAKLSAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICAgICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRyeUdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIGlkZW50LT5pbXBsKCkp
OwotICAgIAotICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CisgICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHJ5R2V0QnlJZE9w
dGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CisgICAgICAgIAor
ICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAg
IH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNDQ4LDM3ICs0NTUsNDQgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdAogICAgIGludCByZXN1bHRWUmVnID0gYnl0
ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNl
Lm9mZnNldCgpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJhc2VWUmVnLCByZWdUMCk7CiAKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDAsIGJhc2VWUmVnKTsKKyAgICBpZiAobWV0YWRhdGEubV9zZWVuU3RydWN0dXJlcy5jb3Vu
dCgpID4gT3B0aW9uczo6Z2V0QnlJZElDTWF4TnVtYmVyT2ZTdHJ1Y3R1cmVzKCkpCisgICAgICAg
IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayks
IG9wZXJhdGlvbkdldEJ5SWREaXJlY3RHZW5lcmljLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKGlkZW50
LT5pbXBsKCkpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCi0gICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKLSAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
LSAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3Qp
OworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7
CiAKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnKTsKKyAgICAgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOwor
ICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcpOworICAgIH0KIH0KIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGlmIChoYXNBbnlTbG93Q2Fz
ZXMoaXRlcikpIHsKKyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKTsKLSAg
ICBpbnQgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwotICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3By
b3BlcnR5KSk7CisgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0QnlJZERpcmVjdD4oKTsKKyAgICAgICAgaW50IHJlc3VsdFZSZWcgPSBieXRlY29kZS5t
X2RzdC5vZmZzZXQoKTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29k
ZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107
CiAKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICAgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0
aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlk
RGlyZWN0T3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKKyAg
ICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplLCByZXN1bHRW
UmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHVi
SW5mbygpLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7CiAKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC00OTAsMjQg
KzUwNCw0NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1CiAgICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVj
b2RlLm1fcHJvcGVydHkpKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcs
IHJlZ1QwKTsKLSAgICAKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJh
c2VWUmVnKTsKLSAgICAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxl
bmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxl
bmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0
QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRl
V2l0aENlbGwocmVnVDAsIHJlZ1QxLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5n
dGhNb2RlLmFycmF5UHJvZmlsZSk7Ci0gICAgICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5saW5rKHRo
aXMpOworCisgICAgaWYgKG1ldGFkYXRhLm1fc2VlblN0cnVjdHVyZXMuY291bnQoKSA+IE9wdGlv
bnM6OmdldEJ5SWRJQ01heE51bWJlck9mU3RydWN0dXJlcygpKQorICAgICAgICBjYWxsT3BlcmF0
aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25H
ZXRCeUlkR2VuZXJpYywgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCByZWdUMCwgVHJ1c3RlZEltbVB0cihpZGVudC0+aW1wbCgpKSk7CisgICAg
ZWxzZSB7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZS
ZWcpOworICAgICAgICAKKyAgICAgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgICAgICBKdW1wIG5v
dEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDgoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcygmbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50
OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSk7CisgICAgICAgICAgICBlbWl0QXJyYXlQ
cm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QxLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CisgICAgICAgICAgICBub3RBcnJheUxl
bmd0aE1vZGUubGluayh0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7
CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsK
KworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7CiAg
ICAgfQorfQogCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAg
ICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
QWNjZXNzVHlwZTo6R2V0QnlJZCk7Ci0gICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwot
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0gICAgbV9nZXRCeUlkcy5hcHBl
bmQoZ2VuKTsKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKK3sKKyAgICBpZiAoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKSB7CisgICAgICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1
bHRWUmVnKTsKKyAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BHZXRCeUlkPigpOworICAgICAgICBpbnQgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0Lm9m
ZnNldCgpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworCisgICAgICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgICAgIAor
ICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBpZGVu
dC0+aW1wbCgpKTsKKworICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIGNhbGwpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNTM0LDIzICs1
NzEsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvCiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQotewotICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldEJ5SWQ+KCk7Ci0gICAgaW50IHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQo
KTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZp
ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2Vu
ID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKLQotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJv
ZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIGlkZW50LT5pbXBsKCkpOwotCi0gICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKLX0KLQogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNTMxMTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NDAsOCArNjQwLDEyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90cnlfZ2V0
X2IKIHsKICAgICBMTElOVF9CRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BU
cnlHZXRCeUlkPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29k
ZUJsb2NrKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgaWYgKG1ldGFkYXRhLm1f
c2VlblN0cnVjdHVyZXMuY291bnQoKSA8PSBPcHRpb25zOjpnZXRCeUlkSUNNYXhOdW1iZXJPZlN0
cnVjdHVyZXMoKSkKKyAgICAgICAgbWV0YWRhdGEubV9zZWVuU3RydWN0dXJlcy5vYnNlcnZlKGJh
c2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOwogCiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlk
ZW50LCBzbG90KTsKQEAgLTY1NCw4ICs2NTgsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9ieV9pZAogewogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0g
Y29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAg
aWYgKG1ldGFkYXRhLm1fc2VlblN0cnVjdHVyZXMuY291bnQoKSA8PSBPcHRpb25zOjpnZXRCeUlk
SUNNYXhOdW1iZXJPZlN0cnVjdHVyZXMoKSkKKyAgICAgICAgbWV0YWRhdGEubV9zZWVuU3RydWN0
dXJlcy5vYnNlcnZlKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSk7CiAgICAgUHJvcGVydHlT
bG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CiAKICAgICBib29sIGZvdW5kID0gYmFzZVZhbHVl
LmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKQEAgLTY2NCw3
ICs2NzEsNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKICAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1Nf
U0xPVyAmJiBzbG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgpKSB7Ci0gICAgICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAgICAg
ewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0
cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7CkBAIC03NjUsNiAr
NzcxLDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9w
ZXJ0eSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0
ZWNvZGUubV9iYXNlKTsKKworICAgIGlmIChtZXRhZGF0YS5tX3NlZW5TdHJ1Y3R1cmVzLmNvdW50
KCkgPD0gT3B0aW9uczo6Z2V0QnlJZElDTWF4TnVtYmVyT2ZTdHJ1Y3R1cmVzKCkpCisgICAgICAg
IG1ldGFkYXRhLm1fc2VlblN0cnVjdHVyZXMub2JzZXJ2ZShiYXNlVmFsdWUuc3RydWN0dXJlT3JO
dWxsKCkpOworCiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6
OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCShyZXZpc2lvbiAy
NTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OTQsNiArNDk0LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2Vi
QXNzZW1ibHlTdHJlYW1pbgogICAgIHYoQm9vbCwgdXNlVW5saW5rZWRDb2RlQmxvY2tKZXR0aXNv
bmluZywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIFVubGlua2VkQ29kZUJsb2NrIGNhbiBiZSBq
ZXR0aXNvbmVkLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlT1NSRXhpdFRvTExJbnQsIGZhbHNlLCBO
b3JtYWwsICJJZiB0cnVlLCB3ZSBhbHdheXMgZXhpdCB0byB0aGUgTExJbnQuIElmIGZhbHNlLCB3
ZSBleGl0IHRvIHdoYXRldmVyIGlzIG1vc3QgY29udmVuaWVudC4iKSBcCiAgICAgdihVbnNpZ25l
ZCwgZ2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMsIDQsIE5vcm1hbCwgIk51bWJlciBv
ZiBpZGVudGlmaWVycyB3ZSBzZWUgaW4gdGhlIExMSW50IHRoYXQgY291bGQgY2F1c2UgdXMgdG8g
YmFpbCBvbiBnZW5lcmF0aW5nIGFuIElDIGZvciBnZXRfYnlfdmFsLiIpIFwKKyAgICB2KFVuc2ln
bmVkLCBnZXRCeUlkSUNNYXhOdW1iZXJPZlN0cnVjdHVyZXMsIDYsIE5vcm1hbCwgIk51bWJlciBv
ZiBzdHJ1Y3R1cmVzIHdlIHNlZSBpbiB0aGUgTExJbnQgdGhhdCBjb3VsZCBjYXVzZSB1cyB0byBi
YWlsIG9uIGdlbmVyYXRpbmcgYW4gSUMgZm9yIHZhcmlvdXMgZ2V0X2J5X2lkIElDcy4iKSBcCiAK
IGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCg==
</data>
<flag name="review"
          id="400815"
          type_id="1"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384977</attachid>
            <date>2019-12-05 16:37:43 -0800</date>
            <delta_ts>2019-12-05 20:41:24 -0800</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>41364</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzMTcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDE5LTEyLTA1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IGdldF9ieV9pZCBJQ3Mgc2hvdWxkIGhhdmUgYSBzdHJ1Y3R1cmUgaGlzdG9yeSB1c2VkIHRvIGlu
ZGljYXRlIHdoZW4gd2Ugc2hvdWxkIHNraXAgZ2VuZXJhdGluZyBhbiBJQworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTA0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NzYzMTQzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJIGltcGxlbWVudGVkIGEgc2ltaWxhciBwb2xpY3kgZm9yIGdldF9ieV92
YWwgZm9yIHRoZSBudW1iZXIgb2YgdW5pcXVlIHNlZW4KKyAgICAgICAgaWRlbnRpZmllcnMuIFRo
aXMgYWxsb3dzIHVzIHRvIGNyZWF0ZSBhIGhldXJpc3RpYyB0byBkaXJlY3RseSBjYWxsIHRoZSBz
bG93CisgICAgICAgIHBhdGggd2hlbiBwcm9maWxpbmcgaW5mb3JtYXRpb24gdGVsbHMgdXMgaWYg
aW5saW5lIGNhY2hpbmcgbWlnaHQgbm90IGJlCisgICAgICAgIHByb2ZpdGFibGUuIFRoaXMgcGF0
Y2ggaW1wbGVtZW50cyBhIHNpbWlsYXIgcG9saWN5IGZvciBnZXRfYnlfaWQgd2hlcmUgd2UKKyAg
ICAgICAgcHJvZmlsZSB0aGUgc2VlbiBiYXNlIHZhbHVlIHN0cnVjdHVyZXMuIElmIHRoZSBMTElu
dCBvYnNlcnZlcyBlbm91Z2gKKyAgICAgICAgdW5pcXVlIHN0cnVjdHVyZXMsIHdlIG9taXQgZW1p
dHRpbmcgdGhlIGlubGluZSBjYWNoZSBpbiB0aGUgdXBwZXIKKyAgICAgICAgdGllcnMuCisgICAg
ICAgIAorICAgICAgICBUaGUgZ29hbCBoZXJlIHdhcyB0byB0cnkgdG8gc3BlZWQgdXAgU3BlZWRv
bWV0ZXIyLiBMb2NhbCB0ZXN0aW5nIHNob3dlZAorICAgICAgICB0aGlzIHBhdGNoIHRvIHJlcGVh
dGVkbHkgYmUgMC41JSBmYXN0ZXIsIGJ1dCBhbGwgdGhlIFAgdmFsdWVzIEkgZ290IHdlcmUKKyAg
ICAgICAgaW5zaWduaWZpY2FudC4gU28gaXQgYXBwZWFycyBpdCdzIGVpdGhlciBuZXV0cmFsIG9y
IHNsaWdodGx5IGZhc3Rlci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGp1
c3RzIHRoZSBwb2xpY3kgb2Ygc2VlaW5nIGEgbm9uLWlkZW50aWZpZXIgaW5zaWRlCisgICAgICAg
IHRoZSBQb2ludGVySGlzdG9yeSBkYXRhIHN0cnVjdHVyZS4gSW5zdGVhZCBvZiBpbmNyZWFzaW5n
IGl0IHRvIHJlYWNoIHRoZQorICAgICAgICBsaW1pdCB3aGVuIHdlIHNlZSBhIG5vbi1pZGVudGlm
aWVyLCB3ZSBqdXN0IHRyZWF0IGVhY2ggZXhlY3V0aW9uIHdpdGgKKyAgICAgICAgYSBub24taWRl
bnRpZmllciB0byBpbmNyZW1lbnQgdGhlIGNvdW50IGJ5IDEuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeVZhbEhpc3RvcnkuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9Qb2ludGVySGlzdG9yeS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlWYWxIaXN0b3J5LmguCisgICAgICAg
IChKU0M6OlBvaW50ZXJIaXN0b3J5OjpvYnNlcnZlKToKKyAgICAgICAgKEpTQzo6UG9pbnRlckhp
c3Rvcnk6Om9ic2VydmVOdWxsKToKKyAgICAgICAgKEpTQzo6R2V0QnlWYWxIaXN0b3J5OjpvYnNl
cnZlTm9uVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2V0QnlWYWxIaXN0b3J5OjpvYnNl
cnZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2V0QnlWYWxIaXN0b3J5Ojpjb3VudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdldEJ5VmFsSGlzdG9yeTo6ZmlsdGVyIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2V0QnlWYWxIaXN0b3J5Ojp1cGRhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUdldEJ5VmFsKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGpp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlf
Z2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9nZXRfYnlfaWQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnNMaXN0Lmg6CisKIDIwMTktMTItMDUgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjUzMTQwKTogV2FzbTo6RnVuY3Rpb25Q
YXJzZXIgbmVlZHMgdG8gYm91bmRzIGNoZWNrIGluIFNldExvY2FsL1RlZUxvY2FsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTg4OSw3ICs4ODksNiBAQAogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdB
QzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDUxNTM5QjgxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUg
LyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEJBQTA3Q0VCODFGNDlBMjk2RTAyMjAzIC8qIFdhc21TaWduYXR1cmVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMEE1
RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MjBEOTlGMTIzODhDQzgx
MDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MjBEOTlGMDIzODhDQzc4MDAwNTA5QTMgLyogR2V0QnlWYWxI
aXN0b3J5LmggKi87IH07CiAJCTUyMTEzMUY3MUY4MkJGMTQwMDdDQ0VFRSAvKiBQb2x5UHJvdG9B
Y2Nlc3NDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTIxMTMxRjYxRjgyQkYxMTAwN0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTIxMzIyNDYx
RUNCQ0U4MjAwRjY1NjE1IC8qIFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjEzMjI0NDFFQ0JDRTgyMDBGNjU2
MTUgLyogV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaCAqLzsgfTsKIAkJNTIyOTI3RDUyMzVGRDBC
OTAwNUNCMTY5IC8qIEdDTWVtb3J5T3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3Mjk4N0IyMzVGQzhCQTAwNUM5ODJDIC8qIEdDTWVt
b3J5T3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC05MDIsNiArOTAxLDcgQEAKIAkJNTI2QUM0QjcxRTk3N0M1RDAwMzUwMEUxIC8q
IFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyNkFDNEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI3Q0UzNTQyMjU1
NUZFNTAwQzZGMzgyIC8qIEpTVG9XYXNtSUNDYWxsZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyN0NFMzUzMjI1NTVGREQwMEM2RjM4MiAvKiBKU1Rv
V2FzbUlDQ2FsbGVlLmggKi87IH07CiAJCTUyODQ3QURDMjFGRkI4NjkwMDYxQTlEQiAvKiBXYXNt
QWlySVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyODQ3QURBMjFGRkI4NjMwMDYxQTlEQiAvKiBXYXNtQWlySVJHZW5lcmF0b3IuaCAq
LzsgfTsKKwkJNTJBRDA4MjMyMzk5QTFGQjAwQjQxMDFBIC8qIFBvaW50ZXJIaXN0b3J5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkFEMDgyMjIzOTlB
MUYyMDBCNDEwMUEgLyogUG9pbnRlckhpc3RvcnkuaCAqLzsgfTsKIAkJNTJCMzEwRkIxOTc0QUU2
MTAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCMzEwRkExOTc0QUU2MTAwODA4NTdDIC8q
IEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUyQjMxMTAxMTk3NUI0NjcwMDgwODU3QyAvKiBUeXBlTG9j
YXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTJCMzExMDAxOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJDMDYxMUYxQUE1
MUUxQzAwQjRBREJBIC8qIFJ1bnRpbWVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkMwNjExRDFBQTUxRTFCMDBCNEFEQkEgLyogUnVudGltZVR5
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MzUzOCw3ICszNTM4LDYgQEAKIAkJNENFOTc4RTM4NUE4NDk4MTk5MDUyMTUzIC8qIE1vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07CiAJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlib2JqYy5k
eWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJNTIwRDk5RjAyMzg4Q0M3ODAw
MDUwOUEzIC8qIEdldEJ5VmFsSGlzdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZXRCeVZhbEhpc3Rv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIxMTMxRjUxRjgyQkYxMTAwN0ND
RUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbHlQ
cm90b0FjY2Vzc0NoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIxMTMx
RjYxRjgyQkYxMTAwN0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBvbHlQcm90b0FjY2Vzc0NoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyMTMyMjQzMUVDQkNFODIwMEY2NTYxNSAvKiBXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUZ1bmN0aW9u
QmFzZS5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTYxLDYgKzM1NjAsNyBAQAogCQk1MjdDRTM1MzIyNTU1
RkREMDBDNkYzODIgLyogSlNUb1dhc21JQ0NhbGxlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1RvV2Fz
bUlDQ2FsbGVlLmg7IHBhdGggPSBqcy9KU1RvV2FzbUlDQ2FsbGVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyODQ3QUQ5MjFGRkI4NjMwMDYxQTlEQiAvKiBXYXNtQWlySVJHZW5l
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUFpcklSR2VuZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI4NDdBREEyMUZGQjg2MzAwNjFBOURCIC8qIFdh
c21BaXJJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQWlySVJHZW5lcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJBRDA4MjIyMzk5QTFGMjAwQjQxMDFBIC8q
IFBvaW50ZXJIaXN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJIaXN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjMxMEZBMTk3NEFFNjEwMDgwODU3QyAvKiBGdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjMxMEZDMTk3NEFFODcw
MDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTJCMzEwRkUxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVMb2NhdGlvbkNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTgyNDEsNyArODI0MSw2IEBACiAJCQkJMEYwMzMyQzIxOEIwMTc2MzAw
NUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVG
M0M2IC8qIEdldEJ5U3RhdHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NjE0Q0E3REMxMDA4NUYzQzYg
LyogR2V0QnlTdGF0dXMuaCAqLywKLQkJCQk1MjBEOTlGMDIzODhDQzc4MDAwNTA5QTMgLyogR2V0
QnlWYWxIaXN0b3J5LmggKi8sCiAJCQkJMTRBRDkxMDgxRENBOTI5NDAwMTRGOUZFIC8qIEdsb2Jh
bENvZGVCbG9jay5oICovLAogCQkJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVy
SW5mby5oICovLAogCQkJCTBGNDRBN0FCMjBCRjY4NUUwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5j
cHAgKi8sCkBAIC04Mjk3LDYgKzgyOTYsNyBAQAogCQkJCUE3MDQ0N0U5MTdBMEJENDYwMEY1ODk4
RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLywKIAkJCQlFMzRFNjU3NDIwNjY4RThFMDBGQjgxQUMg
LyogUGFyc2VIYXNoLmNwcCAqLywKIAkJCQlFMzRFNjU3MzIwNjY4RThEMDBGQjgxQUMgLyogUGFy
c2VIYXNoLmggKi8sCisJCQkJNTJBRDA4MjIyMzk5QTFGMjAwQjQxMDFBIC8qIFBvaW50ZXJIaXN0
b3J5LmggKi8sCiAJCQkJMEZGOUNFNzExQjlDRDZEMDAwNEVEQ0E2IC8qIFBvbHltb3JwaGljQWNj
ZXNzLmNwcCAqLywKIAkJCQkwRkY5Q0U3MjFCOUNENkQwMDA0RURDQTYgLyogUG9seW1vcnBoaWNB
Y2Nlc3MuaCAqLywKIAkJCQk1MjExMzFGNTFGODJCRjExMDA3Q0NFRUUgLyogUG9seVByb3RvQWNj
ZXNzQ2hhaW4uY3BwICovLApAQCAtOTUyNiw3ICs5NTI2LDYgQEAKIAkJCQkxNDk4Q0FENjIxNEJG
MzZEMDA3MTA4NzkgLyogR2V0QnlJZE1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjAz
MzJDNDE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOTMzMkEwMTRDQTdEQ0QwMDg1RjNDNiAvKiBHZXRCeVN0YXR1cy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNTIwRDk5RjEyMzg4Q0M4MTAwMDUwOUEzIC8qIEdldEJ5VmFsSGlzdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzk2NDY1NkExQjk1MkZGMDAwMzA1OUVFIC8qIEdldFB1dEluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCTUzNEUwMzU4MUU1M0JGMkYwMDIxM0Y2NCAvKiBHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTFENkQ2RjIzNjI1OEZFMDA3
QTVDMjYgLyogR2V0Vk0uaCBpbiBIZWFkZXJzICovLApAQCAtMTAzMDMsNiArMTAzMDIsNyBAQAog
CQkJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0MkUzMTNDMTM0RkYwQTYwMEFGQURCNSAvKiBXZWFrLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MkFEMDgyMzIzOTlBMUZCMDBCNDEwMUEgLyogUG9pbnRlckhpc3RvcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0RTg0RjlGMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTE0QkZDRTY5MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NN
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQCB0eXBlcyBbCiAgICAgOkVycm9yVHlwZSwKICAgICA6R2V0QnlJZE1v
ZGUsCiAgICAgOkdldEJ5SWRNb2RlTWV0YWRhdGEsCi0gICAgOkdldEJ5VmFsSGlzdG9yeSwKKyAg
ICA6UG9pbnRlckhpc3RvcnksCiAgICAgOkdldFB1dEluZm8sCiAgICAgOkluZGV4aW5nVHlwZSwK
ICAgICA6SlNDZWxsLApAQCAtNDUxLDYgKzQ1MSw3IEBAIG9wIDpnZXRfYnlfaWQsCiAgICAgbWV0
YWRhdGE6IHsKICAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHNlZW5TdHJ1Y3R1cmVzOiBQb2lu
dGVySGlzdG9yeSwKICAgICB9CiAKIG9wIDpnZXRfYnlfaWRfd2l0aF90aGlzLApAQCAtNDYyLDYg
KzQ2Myw3IEBAIG9wIDpnZXRfYnlfaWRfd2l0aF90aGlzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6
IHsKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBzZWVuU3RydWN0dXJl
czogUG9pbnRlckhpc3RvcnksCiAgICAgfQogCiBvcCA6Z2V0X2J5X3ZhbF93aXRoX3RoaXMsCkBA
IC00ODUsNiArNDg3LDcgQEAgb3AgOmdldF9ieV9pZF9kaXJlY3QsCiAgICAgICAgIHByb2ZpbGU6
IFZhbHVlUHJvZmlsZSwgIyBub3QgdXNlZCBpbiBsbGludAogICAgICAgICBzdHJ1Y3R1cmVJRDog
U3RydWN0dXJlSUQsCiAgICAgICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIHNlZW5TdHJ1
Y3R1cmVzOiBQb2ludGVySGlzdG9yeSwKICAgICB9CiAKIG9wIDp0cnlfZ2V0X2J5X2lkLApAQCAt
NDk1LDYgKzQ5OCw3IEBAIG9wIDp0cnlfZ2V0X2J5X2lkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6
IHsKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBzZWVuU3RydWN0dXJl
czogUG9pbnRlckhpc3RvcnksCiAgICAgfQogCiBvcCA6cHV0X2J5X2lkLApAQCAtNTM1LDcgKzUz
OSw3IEBAIG9wIDpnZXRfYnlfdmFsLAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIHByb2ZpbGU6
IFZhbHVlUHJvZmlsZSwKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAg
ICAgIHNlZW5JZGVudGlmaWVyczogR2V0QnlWYWxIaXN0b3J5LAorICAgICAgICBzZWVuSWRlbnRp
ZmllcnM6IFBvaW50ZXJIaXN0b3J5LAogICAgIH0KIAogb3AgOnB1dF9ieV92YWwsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlWYWxIaXN0b3J5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5VmFsSGlzdG9yeS5oCShy
ZXZpc2lvbiAyNTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlW
YWxIaXN0b3J5LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJUaW55Qmxvb21GaWx0ZXIuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1w
bC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotc3RydWN0IEdldEJ5VmFsSGlzdG9yeSB7Ci0gICAg
dm9pZCBvYnNlcnZlTm9uVUlEKCkKLSAgICB7Ci0gICAgICAgIHVpbnRwdHJfdCBjb3VudCA9IE9w
dGlvbnM6OmdldEJ5VmFsSUNNYXhOdW1iZXJPZklkZW50aWZpZXJzKCkgKyAxOwotICAgICAgICB1
cGRhdGUoY291bnQsIGZpbHRlcigpKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9ic2VydmUoY29uc3Qg
VW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCi0gICAgewotICAgICAgICBpZiAoIWltcGwpIHsKLSAg
ICAgICAgICAgIG9ic2VydmVOb25VSUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHVpbnRwdHJfdCBjb3VudCA9IHRoaXMtPmNvdW50KCk7Ci0gICAgICAgIHVp
bnRwdHJfdCBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLQotICAgICAgICBUaW55Qmxvb21GaWx0
ZXIgYmxvb21GaWx0ZXIoZmlsdGVyKTsKLSAgICAgICAgdWludHB0cl90IGltcGxCaXRzID0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW1wbCk7Ci0gICAgICAgIEFTU0VSVCgoKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihpbXBsQml0cykgPDwgOCkgPj4gOCkgPT0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGltcGxCaXRzKSk7Ci0gICAgICAgIGlmIChibG9vbUZpbHRlci5ydWxlT3V0KGltcGxCaXRzKSkg
ewotICAgICAgICAgICAgYmxvb21GaWx0ZXIuYWRkKGltcGxCaXRzKTsKLSAgICAgICAgICAgICsr
Y291bnQ7Ci0gICAgICAgICAgICB1cGRhdGUoY291bnQsIGJsb29tRmlsdGVyLmJpdHMoKSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICB1aW50cHRyX3QgY291bnQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KG1fcGF5bG9hZCA+PiA1Nik7IH0KLQotcHJpdmF0ZToKLSAg
ICB1aW50cHRyX3QgZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90
PigobV9wYXlsb2FkIDw8IDgpID4+IDgpOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZSh1aW50NjRfdCBj
b3VudCwgdWludDY0X3QgZmlsdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCgoZmlsdGVyIDw8
IDgpID4+IDgpID09IGZpbHRlcik7Ci0gICAgICAgIG1fcGF5bG9hZCA9IChjb3VudCA8PCA1Nikg
fCBmaWx0ZXI7Ci0gICAgfQotCi0gICAgdWludDY0X3QgbV9wYXlsb2FkIHsgMCB9OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9pbnRlckhpc3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9pbnRlckhpc3RvcnkuaAkocmV2aXNpb24gMjUzMTE3KQkoZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlWYWxIaXN0b3J5Lmg6MjUzMTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvaW50ZXJIaXN0b3J5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVGlueUJsb29tRmlsdGVyLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0cnVjdCBHZXRCeVZhbEhpc3RvcnkgeworICAgIHZvaWQgb2JzZXJ2ZU5vblVJRCgpCisgICAg
eworICAgICAgICB1aW50cHRyX3QgY291bnQgPSBPcHRpb25zOjpnZXRCeVZhbElDTWF4TnVtYmVy
T2ZJZGVudGlmaWVycygpICsgMTsKKyAgICAgICAgdXBkYXRlKGNvdW50LCBmaWx0ZXIoKSk7Cisg
ICAgfQorCisgICAgdm9pZCBvYnNlcnZlKGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsKQor
ICAgIHsKKyAgICAgICAgaWYgKCFpbXBsKSB7CisgICAgICAgICAgICBvYnNlcnZlTm9uVUlEKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB1aW50cHRyX3QgY291
bnQgPSB0aGlzLT5jb3VudCgpOworICAgICAgICB1aW50cHRyX3QgZmlsdGVyID0gdGhpcy0+Zmls
dGVyKCk7CisKKyAgICAgICAgVGlueUJsb29tRmlsdGVyIGJsb29tRmlsdGVyKGZpbHRlcik7Cisg
ICAgICAgIHVpbnRwdHJfdCBpbXBsQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGltcGwp
OworICAgICAgICBBU1NFUlQoKChzdGF0aWNfY2FzdDx1aW50NjRfdD4oaW1wbEJpdHMpIDw8IDgp
ID4+IDgpID09IHN0YXRpY19jYXN0PHVpbnQ2NF90PihpbXBsQml0cykpOworICAgICAgICBpZiAo
Ymxvb21GaWx0ZXIucnVsZU91dChpbXBsQml0cykpIHsKKyAgICAgICAgICAgIGJsb29tRmlsdGVy
LmFkZChpbXBsQml0cyk7CisgICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgdXBkYXRl
KGNvdW50LCBibG9vbUZpbHRlci5iaXRzKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdWlu
dHB0cl90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PihtX3Bh
eWxvYWQgPj4gNTYpOyB9CisKK3ByaXZhdGU6CisgICAgdWludHB0cl90IGZpbHRlcigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oKG1fcGF5bG9hZCA8PCA4KSA+PiA4KTsg
fQorCisgICAgdm9pZCB1cGRhdGUodWludDY0X3QgY291bnQsIHVpbnQ2NF90IGZpbHRlcikKKyAg
ICB7CisgICAgICAgIEFTU0VSVCgoKGZpbHRlciA8PCA4KSA+PiA4KSA9PSBmaWx0ZXIpOworICAg
ICAgICBtX3BheWxvYWQgPSAoY291bnQgPDwgNTYpIHwgZmlsdGVyOworICAgIH0KKworICAgIHVp
bnQ2NF90IG1fcGF5bG9hZCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvaW50ZXJIaXN0b3J5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvaW50ZXJIaXN0b3J5LmgJKHJl
dmlzaW9uIDI1MzExNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2ludGVy
SGlzdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNyArMzAsMTEgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXN0cnVjdCBHZXRCeVZhbEhpc3RvcnkgewotICAgIHZvaWQgb2JzZXJ2ZU5vblVJ
RCgpCitzdHJ1Y3QgUG9pbnRlckhpc3RvcnkgeworICAgIHZvaWQgb2JzZXJ2ZShjb25zdCB2b2lk
KiBwb2ludGVyKQogICAgIHsKLSAgICAgICAgdWludHB0cl90IGNvdW50ID0gT3B0aW9uczo6Z2V0
QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMoKSArIDE7Ci0gICAgICAgIHVwZGF0ZShjb3Vu
dCwgZmlsdGVyKCkpOwotICAgIH0KLQotICAgIHZvaWQgb2JzZXJ2ZShjb25zdCBVbmlxdWVkU3Ry
aW5nSW1wbCogaW1wbCkKLSAgICB7Ci0gICAgICAgIGlmICghaW1wbCkgewotICAgICAgICAgICAg
b2JzZXJ2ZU5vblVJRCgpOworICAgICAgICBpZiAoIXBvaW50ZXIpIHsKKyAgICAgICAgICAgIG9i
c2VydmVOdWxsKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDgsNyAr
NDIsNyBAQCBzdHJ1Y3QgR2V0QnlWYWxIaXN0b3J5IHsKICAgICAgICAgdWludHB0cl90IGZpbHRl
ciA9IHRoaXMtPmZpbHRlcigpOwogCiAgICAgICAgIFRpbnlCbG9vbUZpbHRlciBibG9vbUZpbHRl
cihmaWx0ZXIpOwotICAgICAgICB1aW50cHRyX3QgaW1wbEJpdHMgPSBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihpbXBsKTsKKyAgICAgICAgdWludHB0cl90IGltcGxCaXRzID0gYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4ocG9pbnRlcik7CiAgICAgICAgIEFTU0VSVCgoKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihpbXBsQml0cykgPDwgOCkgPj4gOCkgPT0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGltcGxC
aXRzKSk7CiAgICAgICAgIGlmIChibG9vbUZpbHRlci5ydWxlT3V0KGltcGxCaXRzKSkgewogICAg
ICAgICAgICAgYmxvb21GaWx0ZXIuYWRkKGltcGxCaXRzKTsKQEAgLTYwLDYgKzU0LDExIEBAIHN0
cnVjdCBHZXRCeVZhbEhpc3RvcnkgewogICAgIHVpbnRwdHJfdCBjb3VudCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4obV9wYXlsb2FkID4+IDU2KTsgfQogCiBwcml2YXRl
OgorICAgIHZvaWQgb2JzZXJ2ZU51bGwoKQorICAgIHsKKyAgICAgICAgdXBkYXRlKGNvdW50KCkg
KyAxLCBmaWx0ZXIoKSk7CisgICAgfQorCiAgICAgdWludHB0cl90IGZpbHRlcigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oKG1fcGF5bG9hZCA8PCA4KSA+PiA4KTsgfQog
CiAgICAgdm9pZCB1cGRhdGUodWludDY0X3QgY291bnQsIHVpbnQ2NF90IGZpbHRlcikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAyNTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcxMiwxMSArNDcxMiw2IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJZChjb25zdCAKICAgICAKICAgICBOb2RlKiBiYXNlID0g
Z2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1f
aW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwot
ICAgIAotICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVG
b3IoCi0gICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKLSAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKLSAgICAg
ICAgY3VycmVudENvZGVPcmlnaW4oKSwgR2V0QnlTdGF0dXM6OlRyYWNrSWRlbnRpZmllcnM6Ok5v
KTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldEJ5SWQ7CiAgICAgdW5z
aWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5zaXplKCk7CkBAIC00NzI0
LDEwICs0NzE5LDI5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJZChjb25zdCAK
ICAgICAgICAgdHlwZSA9IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQ7CiAgICAgZWxzZSBpZiAoT3A6
Om9wY29kZUlEID09IG9wX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIHR5cGUgPSBBY2Nlc3NU
eXBlOjpHZXRCeUlkRGlyZWN0OworICAgIAorICAgIGlmIChieXRlY29kZS5tZXRhZGF0YShtX2lu
bGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaykubV9zZWVuU3RydWN0dXJlcy5jb3VudCgpID4gT3B0
aW9uczo6Z2V0QnlJZElDTWF4TnVtYmVyT2ZTdHJ1Y3R1cmVzKCkpIHsKKyAgICAgICAgTm9kZVR5
cGUgZ2V0QnlJZDsKKyAgICAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZCkKKyAg
ICAgICAgICAgIGdldEJ5SWQgPSBHZXRCeUlkOworICAgICAgICBlbHNlIGlmICh0eXBlID09IEFj
Y2Vzc1R5cGU6OlRyeUdldEJ5SWQpCisgICAgICAgICAgICBnZXRCeUlkID0gVHJ5R2V0QnlJZDsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2V0QnlJZCA9IEdldEJ5SWREaXJlY3Q7CisKKyAg
ICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJO
dW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpOworICAgICAgICBzZXQoYnl0ZWNvZGUu
bV9kc3QsIG5vZGUpOworICAgICAgICBtX2dyYXBoLm1fc2hvdWxkU2tpcElDLmFkZChub2RlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBHZXRCeVN0YXR1cyBnZXRCeVN0YXR1
cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssCisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAs
IG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIEdldEJ5U3Rh
dHVzOjpUcmFja0lkZW50aWZpZXJzOjpObyk7CiAKICAgICBoYW5kbGVHZXRCeUlkKAogICAgICAg
ICBieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgZ2V0
QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7Ci0KIH0KIAogc3RhdGljIHVpbnQ2NF90IG1h
a2VEeW5hbWljVmFyT3BJbmZvKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIHVuc2lnbmVkIGdl
dFB1dEluZm8pCkBAIC01NjU2LDcgKzU2NzAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gR2V0
QnlWYWwgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIGl0IGNsb2JiZXJzIGV4aXQgc3RhdGUsIHNpbmNl
IEZpeHVwUGhhc2UgbWF5IG1ha2UgaXQgZ2VuZXJpYy4KICAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9kc3QsIGdldEJ5VmFsKTsKICAgICAgICAgICAgICAgICBpZiAoZ2V0QnlTdGF0dXMu
b2JzZXJ2ZWRTdHJ1Y3R1cmVTdHViSW5mb1Nsb3dQYXRoKCkgfHwgYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKS5tX3NlZW5JZGVudGlmaWVycy5jb3VudCgpID4gT3B0aW9uczo6Z2V0QnlWYWxJ
Q01heE51bWJlck9mSWRlbnRpZmllcnMoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X3Nsb3dHZXRCeVZhbC5hZGQoZ2V0QnlWYWwpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fc2hvdWxkU2tpcElDLmFkZChnZXRCeVZhbCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV92YWwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUzLDcgKzExNTMsNyBAQCBwdWJs
aWM6CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJpbmdTdHJ1Y3R1cmU7CiAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzeW1ib2xTdHJ1Y3R1cmU7CiAKLSAgICBIYXNoU2V0PE5vZGUqPiBtX3Ns
b3dHZXRCeVZhbDsKKyAgICBIYXNoU2V0PE5vZGUqPiBtX3Nob3VsZFNraXBJQzsKIAogcHJpdmF0
ZToKICAgICBib29sIGlzU3RyaW5nUHJvdG90eXBlTWV0aG9kU2FuZShKU0dsb2JhbE9iamVjdCos
IFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDI1MzExNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNTksNyArMjI1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQXJyYXk6OkdlbmVyaWM6IHsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc2xvd0dl
dEJ5VmFsLmNvbnRhaW5zKG5vZGUpKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3Nob3Vs
ZFNraXBJQy5jb250YWlucyhub2RlKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkudXNlS2luZCgpID09IFN0
cmluZ1VzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsRm9yT2Jq
ZWN0V2l0aFN0cmluZyhub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQwOCw3ICsyNDA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBcnJh
eTo6R2VuZXJpYzogewotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zbG93R2V0QnlWYWwuY29u
dGFpbnMobm9kZSkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc2hvdWxkU2tpcElDLmNv
bnRhaW5zKG5vZGUpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgewogICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3Ry
aW5nKG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI1MzExNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODYsNiArOTg2
LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUKIHsKICAgICBB
U1NFUlQoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkIHx8IGFjY2Vzc1R5cGUgPT0g
QWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCB8fCBhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OlRy
eUdldEJ5SWQpOwogCisgICAgaWYgKG1fZ3JhcGgubV9zaG91bGRTa2lwSUMuY29udGFpbnMobm9k
ZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVS
ZWdzKCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKGFwcHJvcHJpYXRl
R2VuZXJpY0dldEJ5SWRGdW5jdGlvbihhY2Nlc3NUeXBlKSwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXJVSUQo
bm9kZS0+aWRlbnRpZmllck51bWJlcigpKSkpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRK
Uyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTogewogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI1MzExNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzU0Niw2ICszNTQ2LDE2IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NF
UlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkIHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6VHJ5
R2V0QnlJZCB8fCB0eXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIGlmIChtX2dyYXBoLm1fc2hvdWxkU2tp
cElDLmNvbnRhaW5zKG1fbm9kZSkpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAgICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChJbnQ2NCwgYXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0aW9uKHR5cGUp
LAorICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIG1fb3V0
LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKV0pKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBzd2l0
Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgQ2VsbFVzZTog
ewogICAgICAgICAgICAgc2V0SlNWYWx1ZShnZXRCeUlkKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIHR5cGUpKTsKQEAgLTQ0NTMsNyArNDQ2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIEFycmF5OjpHZW5lcmljOiB7Ci0gICAgICAgICAgICBp
ZiAobV9ncmFwaC5tX3Nsb3dHZXRCeVZhbC5jb250YWlucyhtX25vZGUpKSB7CisgICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX3Nob3VsZFNraXBJQy5jb250YWlucyhtX25vZGUpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKS51c2VLaW5kKCkgPT0g
T2JqZWN0VXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMSkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL0RTTC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL0RTTC5yYgkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9EU0wucmIJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBtb2R1bGUg
RFNMCiAjaW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRlICJGaXRzLmgiCiAjaW5j
bHVkZSAiR2V0QnlJZE1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiR2V0QnlWYWxIaXN0b3J5LmgiCisj
aW5jbHVkZSAiUG9pbnRlckhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lv
biAyNTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA5LDM3ICs0MDksNDQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbgogICAgIGludCByZXN1bHRWUmVnID0gYnl0ZWNvZGUu
bV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNl
dCgpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2VWUmVnLCByZWdUMCk7CiAKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAs
IGJhc2VWUmVnKTsKKyAgICBpZiAobWV0YWRhdGEubV9zZWVuU3RydWN0dXJlcy5jb3VudCgpID4g
T3B0aW9uczo6Z2V0QnlJZElDTWF4TnVtYmVyT2ZTdHJ1Y3R1cmVzKCkpCisgICAgICAgIGNhbGxP
cGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJh
dGlvblRyeUdldEJ5SWRHZW5lcmljLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKGlkZW50LT5pbXBsKCkp
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
LCBiYXNlVlJlZyk7CiAKLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0g
ICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKLSAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLSAgICBtX2dldEJ5
SWRzLmFwcGVuZChnZW4pOwotICAgIAotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJl
c3VsdFZSZWcpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisgICAgICAgIAorICAgICAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Cisg
ICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7CisgICAgfQogfQogCiB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgaWYgKGhhc0FueVNsb3dDYXNlcyhp
dGVyKSkgeworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOwotICAgIGludCBy
ZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKKyAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlH
ZXRCeUlkPigpOworICAgICAgICBpbnQgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNl
dCgpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgSklUR2V0QnlJZEdlbmVyYXRv
ciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKIAotICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHJ5
R2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7Ci0g
ICAgCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAg
ICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1p
emUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKKyAgICAgICAgCisgICAg
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgfQog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC00NDgsMzcgKzQ1NSw0NCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0CiAgICAgaW50IHJlc3VsdFZSZWcgPSBieXRlY29k
ZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2Uub2Zm
c2V0KCk7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZVZSZWcsIHJlZ1QwKTsKIAotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MCwgYmFzZVZSZWcpOworICAgIGlmIChtZXRhZGF0YS5tX3NlZW5TdHJ1Y3R1cmVzLmNvdW50KCkg
PiBPcHRpb25zOjpnZXRCeUlkSUNNYXhOdW1iZXJPZlN0cnVjdHVyZXMoKSkKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3Bl
cmF0aW9uR2V0QnlJZERpcmVjdEdlbmVyaWMsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIFRydXN0ZWRJbW1QdHIoaWRlbnQtPmlt
cGwoKSkpOworICAgIGVsc2UgeworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDAsIGJhc2VWUmVnKTsKIAotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwotICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwotICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2Vu
KAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7Cisg
ICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKIAot
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
KTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcpOworICAgICAgICBlbWl0
VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAg
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7CisgICAgfQogfQogCiB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgaWYgKGhhc0FueVNsb3dDYXNlcyhp
dGVyKSkgeworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwotICAgIGlu
dCByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKTsKKyAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRCeUlkRGlyZWN0PigpOworICAgICAgICBpbnQgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0
Lm9mZnNldCgpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgSklUR2V0QnlJZEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKIAot
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgICAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJv
ZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWREaXJl
Y3RPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIGlkZW50LT5pbXBsKCkpOworICAgICAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUsIHJlc3VsdFZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKIAotICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTQ5MCwyNCArNTA0
LDQ3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnUKICAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSkpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgcmVn
VDApOwotICAgIAotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZS
ZWcpOwotICAgIAotICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3Ro
ICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAgICBKdW1wIG5vdEFycmF5TGVuZ3Ro
TW9kZSA9IGJyYW5jaDgoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEubW9kZSksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihHZXRCeUlk
TW9kZTo6QXJyYXlMZW5ndGgpKSk7Ci0gICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRo
Q2VsbChyZWdUMCwgcmVnVDEsICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1v
ZGUuYXJyYXlQcm9maWxlKTsKLSAgICAgICAgbm90QXJyYXlMZW5ndGhNb2RlLmxpbmsodGhpcyk7
CisKKyAgICBpZiAobWV0YWRhdGEubV9zZWVuU3RydWN0dXJlcy5jb3VudCgpID4gT3B0aW9uczo6
Z2V0QnlJZElDTWF4TnVtYmVyT2ZTdHJ1Y3R1cmVzKCkpCisgICAgICAgIGNhbGxPcGVyYXRpb25X
aXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5
SWRHZW5lcmljLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKGlkZW50LT5pbXBsKCkpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7
CisgICAgICAgIAorICAgICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxl
bmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgICAgIEp1bXAgbm90QXJy
YXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsKKyAgICAgICAgICAgIGVtaXRBcnJheVByb2Zp
bGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDEsICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5h
cnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKKyAgICAgICAgICAgIG5vdEFycmF5TGVuZ3Ro
TW9kZS5saW5rKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciBnZW4oCisgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAg
ICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisg
ICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnKTsKICAgICB9
Cit9CiAKLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGlk
ZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nl
c3NUeXBlOjpHZXRCeUlkKTsKLSAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLSAgICBtX2dldEJ5SWRzLmFwcGVuZChn
ZW4pOwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQoreworICAgIGlmIChoYXNBbnlTbG93Q2FzZXMoaXRlcikpIHsKKyAgICAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZS
ZWcpOworICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdl
dEJ5SWQ+KCk7CisgICAgICAgIGludCByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0
KCk7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisKKyAgICAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAgCisgICAg
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayks
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIGlkZW50LT5p
bXBsKCkpOworCisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Y2FsbCk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlz
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC01MzQsMjMgKzU3MSw2
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY28KICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0
QnlJZD4oKTsKLSAgICBpbnQgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwot
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotICAgIAotICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwotCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCByZWdUMCwgaWRlbnQtPmltcGwoKSk7Ci0KLSAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotfQotCiB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI1MzExNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
MCw4ICs2NDAsMTIgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYgog
ewogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFRyeUdl
dEJ5SWQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOworCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZp
ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVy
YW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBpZiAobWV0YWRhdGEubV9zZWVu
U3RydWN0dXJlcy5jb3VudCgpIDw9IE9wdGlvbnM6OmdldEJ5SWRJQ01heE51bWJlck9mU3RydWN0
dXJlcygpKQorICAgICAgICBtZXRhZGF0YS5tX3NlZW5TdHJ1Y3R1cmVzLm9ic2VydmUoYmFzZVZh
bHVlLnN0cnVjdHVyZU9yTnVsbCgpKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUs
IFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSk7CiAKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQs
IHNsb3QpOwpAQCAtNjU0LDggKzY1OCwxMSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZ2V0X2J5X2lkCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wR2V0QnlJZERpcmVjdD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBpZiAo
bWV0YWRhdGEubV9zZWVuU3RydWN0dXJlcy5jb3VudCgpIDw9IE9wdGlvbnM6OmdldEJ5SWRJQ01h
eE51bWJlck9mU3RydWN0dXJlcygpKQorICAgICAgICBtZXRhZGF0YS5tX3NlZW5TdHJ1Y3R1cmVz
Lm9ic2VydmUoYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKTsKICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldE93blByb3BlcnR5KTsKIAogICAgIGJvb2wgZm91bmQgPSBiYXNlVmFsdWUuZ2V0
T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwpAQCAtNjY0LDcgKzY3
MSw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKIAogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9X
ICYmIHNsb3QuaXNDYWNoZWFibGUoKSAmJiAhc2xvdC5pc1Vuc2V0KCkpIHsKLSAgICAgICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgICAgICB7CiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0
dXJlSUQ7CiAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKQEAgLTc2NSw2ICs3NzEs
MTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX2Jhc2UpOworCisgICAgaWYgKG1ldGFkYXRhLm1fc2VlblN0cnVjdHVyZXMuY291bnQoKSA8
PSBPcHRpb25zOjpnZXRCeUlkSUNNYXhOdW1iZXJPZlN0cnVjdHVyZXMoKSkKKyAgICAgICAgbWV0
YWRhdGEubV9zZWVuU3RydWN0dXJlcy5vYnNlcnZlKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KSk7CisKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHJldmlzaW9uIDI1MzEx
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5NCw2ICs0OTQsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3Nl
bWJseVN0cmVhbWluCiAgICAgdihCb29sLCB1c2VVbmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5n
LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgVW5saW5rZWRDb2RlQmxvY2sgY2FuIGJlIGpldHRp
c29uZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VPU1JFeGl0VG9MTEludCwgZmFsc2UsIE5vcm1h
bCwgIklmIHRydWUsIHdlIGFsd2F5cyBleGl0IHRvIHRoZSBMTEludC4gSWYgZmFsc2UsIHdlIGV4
aXQgdG8gd2hhdGV2ZXIgaXMgbW9zdCBjb252ZW5pZW50LiIpIFwKICAgICB2KFVuc2lnbmVkLCBn
ZXRCeVZhbElDTWF4TnVtYmVyT2ZJZGVudGlmaWVycywgNCwgTm9ybWFsLCAiTnVtYmVyIG9mIGlk
ZW50aWZpZXJzIHdlIHNlZSBpbiB0aGUgTExJbnQgdGhhdCBjb3VsZCBjYXVzZSB1cyB0byBiYWls
IG9uIGdlbmVyYXRpbmcgYW4gSUMgZm9yIGdldF9ieV92YWwuIikgXAorICAgIHYoVW5zaWduZWQs
IGdldEJ5SWRJQ01heE51bWJlck9mU3RydWN0dXJlcywgNCwgTm9ybWFsLCAiTnVtYmVyIG9mIHN0
cnVjdHVyZXMgd2Ugc2VlIGluIHRoZSBMTEludCB0aGF0IGNvdWxkIGNhdXNlIHVzIHRvIGJhaWwg
b24gZ2VuZXJhdGluZyBhbiBJQyBmb3IgdmFyaW91cyBnZXRfYnlfaWQgSUNzLiIpIFwKIAogZW51
bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwK
</data>
<flag name="review"
          id="400816"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384989</attachid>
            <date>2019-12-05 20:41:24 -0800</date>
            <delta_ts>2019-12-05 23:33:12 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>42169</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUzMTcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDE5LTEyLTA1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IGdldF9ieV9pZCBJQ3Mgc2hvdWxkIGhhdmUgYSBzdHJ1Y3R1cmUgaGlzdG9yeSB1c2VkIHRvIGlu
ZGljYXRlIHdoZW4gd2Ugc2hvdWxkIHNraXAgZ2VuZXJhdGluZyBhbiBJQworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTA0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NzYzMTQzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtp
IGFuZCBUYWRldSBaYWdhbGxvLgorCisgICAgICAgIEkgaW1wbGVtZW50ZWQgYSBzaW1pbGFyIHBv
bGljeSBmb3IgZ2V0X2J5X3ZhbCBmb3IgdGhlIG51bWJlciBvZiB1bmlxdWUgc2VlbgorICAgICAg
ICBpZGVudGlmaWVycy4gVGhpcyBhbGxvd3MgdXMgdG8gY3JlYXRlIGEgaGV1cmlzdGljIHRvIGRp
cmVjdGx5IGNhbGwgdGhlIHNsb3cKKyAgICAgICAgcGF0aCB3aGVuIHByb2ZpbGluZyBpbmZvcm1h
dGlvbiB0ZWxscyB1cyBpZiBpbmxpbmUgY2FjaGluZyBtaWdodCBub3QgYmUKKyAgICAgICAgcHJv
Zml0YWJsZS4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2ltaWxhciBwb2xpY3kgZm9yIGdldF9i
eV9pZCB3aGVyZSB3ZQorICAgICAgICBwcm9maWxlIHRoZSBzZWVuIGJhc2UgdmFsdWUgc3RydWN0
dXJlcy4gSWYgdGhlIExMSW50IG9ic2VydmVzIGVub3VnaAorICAgICAgICB1bmlxdWUgc3RydWN0
dXJlcywgd2Ugb21pdCBlbWl0dGluZyB0aGUgaW5saW5lIGNhY2hlIGluIHRoZSB1cHBlcgorICAg
ICAgICB0aWVycy4KKyAgICAgICAgCisgICAgICAgIFRoZSBnb2FsIGhlcmUgd2FzIHRvIHRyeSB0
byBzcGVlZCB1cCBTcGVlZG9tZXRlcjIuIExvY2FsIHRlc3Rpbmcgc2hvd2VkCisgICAgICAgIHRo
aXMgcGF0Y2ggdG8gcmVwZWF0ZWRseSBiZSAwLjUlIGZhc3RlciwgYnV0IGFsbCB0aGUgUCB2YWx1
ZXMgSSBnb3Qgd2VyZQorICAgICAgICBpbnNpZ25pZmljYW50LiBTbyBpdCBhcHBlYXJzIGl0J3Mg
ZWl0aGVyIG5ldXRyYWwgb3Igc2xpZ2h0bHkgZmFzdGVyLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBwYXRjaCBhbHNvIGFkanVzdHMgdGhlIHBvbGljeSBvZiBzZWVpbmcgYSBub24taWRlbnRpZmll
ciBpbnNpZGUKKyAgICAgICAgdGhlIFBvaW50ZXJIaXN0b3J5IGRhdGEgc3RydWN0dXJlLiBJbnN0
ZWFkIG9mIGluY3JlYXNpbmcgaXQgdG8gcmVhY2ggdGhlCisgICAgICAgIGxpbWl0IHdoZW4gd2Ug
c2VlIGEgbm9uLWlkZW50aWZpZXIsIHdlIGp1c3QgdHJlYXQgZWFjaCBleGVjdXRpb24gd2l0aAor
ICAgICAgICBhIG5vbi1pZGVudGlmaWVyIHRvIGluY3JlbWVudCB0aGUgY291bnQgYnkgMS4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5
VmFsSGlzdG9yeS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1BvaW50ZXJIaXN0b3J5
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVZhbEhp
c3RvcnkuaC4KKyAgICAgICAgKEpTQzo6UG9pbnRlckhpc3Rvcnk6Om9ic2VydmUpOgorICAgICAg
ICAoSlNDOjpQb2ludGVySGlzdG9yeTo6b2JzZXJ2ZU51bGwpOgorICAgICAgICAoSlNDOjpHZXRC
eVZhbEhpc3Rvcnk6Om9ic2VydmVOb25VSUQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZXRC
eVZhbEhpc3Rvcnk6Om9ic2VydmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZXRCeVZhbEhp
c3Rvcnk6OmNvdW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2V0QnlWYWxIaXN0
b3J5OjpmaWx0ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZXRCeVZhbEhpc3Rv
cnk6OnVwZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VHZXRCeUlkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wu
cmI6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lk
X2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVj
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKwogMjAxOS0xMi0wNSAgVGFkZXUgWmFn
YWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNTMxNDAp
OiBXYXNtOjpGdW5jdGlvblBhcnNlciBuZWVkcyB0byBib3VuZHMgY2hlY2sgaW4gU2V0TG9jYWwv
VGVlTG9jYWwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTMx
MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODg5LDcgKzg4OSw2IEBACiAJCTQ1MTUz
OUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ3M0RBNEE0
NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE2OTk0OEVERTY4RDQwNTRCMDFF
Rjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QkFBMDdDRUI4MUY0OUEyOTZFMDIyMDMgLyog
V2FzbVNpZ25hdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5s
aW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTUyMEQ5OUYxMjM4OENDODEwMDA1MDlBMyAvKiBHZXRCeVZhbEhpc3RvcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMEQ5OUYwMjM4OENDNzgwMDA1
MDlBMyAvKiBHZXRCeVZhbEhpc3RvcnkuaCAqLzsgfTsKIAkJNTIxMTMxRjcxRjgyQkYxNDAwN0ND
RUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MjExMzFGNjFGODJCRjExMDA3Q0NFRUUgLyogUG9seVByb3Rv
QWNjZXNzQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MjEzMjI0NjFFQ0JDRTgyMDBGNjU2MTUgLyogV2ViQXNzZW1ibHlGdW5jdGlvbkJh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMTMy
MjQ0MUVDQkNFODIwMEY2NTYxNSAvKiBXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oICovOyB9Owog
CQk1MjI5MjdENTIzNUZEMEI5MDA1Q0IxNjkgLyogR0NNZW1vcnlPcGVyYXRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjcyOTg3QjIzNUZDOEJB
MDA1Qzk4MkMgLyogR0NNZW1vcnlPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkwMiw2ICs5MDEsNyBAQAogCQk1MjZBQzRCNzFF
OTc3QzVEMDAzNTAwRTEgLyogV2FzbUNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2QUM0QjUxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21D
b2RlQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MjdDRTM1NDIyNTU1RkU1MDBDNkYzODIgLyogSlNUb1dhc21JQ0NhbGxlZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3Q0UzNTMyMjU1NUZE
RDAwQzZGMzgyIC8qIEpTVG9XYXNtSUNDYWxsZWUuaCAqLzsgfTsKIAkJNTI4NDdBREMyMUZGQjg2
OTAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI4NDdBREEyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21B
aXJJUkdlbmVyYXRvci5oICovOyB9OworCQk1MkFEMDgyMzIzOTlBMUZCMDBCNDEwMUEgLyogUG9p
bnRlckhpc3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUyQUQwODIyMjM5OUExRjIwMEI0MTAxQSAvKiBQb2ludGVySGlzdG9yeS5oICovOyB9Owog
CQk1MkIzMTBGQjE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQTE5
NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJCMzExMDExOTc1QjQ2NzAw
ODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0
aW9uQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MkMwNjExRjFBQTUxRTFDMDBCNEFEQkEgLyogUnVudGltZVR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQzA2MTFEMUFBNTFFMUIwMEI0
QURCQSAvKiBSdW50aW1lVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zNTM4LDcgKzM1MzgsNiBAQAogCQk0Q0U5NzhFMzg1QTg0OTgxOTkw
NTIxNTMgLyogTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJNTFGMEVDMDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9i
amMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAv
dXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwotCQk1
MjBEOTlGMDIzODhDQzc4MDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdldEJ5VmFsSGlzdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjEx
MzFGNTFGODJCRjExMDA3Q0NFRUUgLyogUG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MjExMzFGNjFGODJCRjExMDA3Q0NFRUUgLyogUG9seVByb3RvQWNjZXNzQ2hh
aW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUG9seVByb3RvQWNjZXNzQ2hhaW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTIxMzIyNDMxRUNCQ0U4MjAwRjY1NjE1IC8qIFdlYkFzc2VtYmx5
RnVuY3Rpb25CYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YkFzc2VtYmx5RnVuY3Rpb25CYXNlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5RnVuY3Rpb25C
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1NjEsNiArMzU2MCw3IEBA
CiAJCTUyN0NFMzUzMjI1NTVGREQwMEM2RjM4MiAvKiBKU1RvV2FzbUlDQ2FsbGVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEpTVG9XYXNtSUNDYWxsZWUuaDsgcGF0aCA9IGpzL0pTVG9XYXNtSUNDYWxsZWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI4NDdBRDkyMUZGQjg2MzAwNjFBOURC
IC8qIFdhc21BaXJJUkdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQWlySVJH
ZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Mjg0N0FEQTIxRkZC
ODYzMDA2MUE5REIgLyogV2FzbUFpcklSR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21B
aXJJUkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkFEMDgyMjIz
OTlBMUYyMDBCNDEwMUEgLyogUG9pbnRlckhpc3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRl
ckhpc3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMzEwRkExOTc0QUU2
MTAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTJCMzEwRkMxOTc0QUU4NzAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MkIzMTBGRTE5NzVCNDI0MDA4MDg1N0MgLyogVHlwZUxv
Y2F0aW9uQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZUxvY2F0aW9uQ2FjaGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI0MSw3ICs4MjQxLDYgQEAKIAkJCQkw
RjAzMzJDMjE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkwRjkz
MzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlTdGF0dXMuY3BwICovLAogCQkJCTBGOTMzMjk2
MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeVN0YXR1cy5oICovLAotCQkJCTUyMEQ5OUYwMjM4OEND
NzgwMDA1MDlBMyAvKiBHZXRCeVZhbEhpc3RvcnkuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5Mjk0
MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1RTAw
ODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCiAJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJCMTcx
IC8qIElDU3RhdHVzTWFwLmNwcCAqLywKQEAgLTgyOTcsNiArODI5Niw3IEBACiAJCQkJQTcwNDQ3
RTkxN0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRzSW5saW5lcy5oICovLAogCQkJCUUzNEU2NTc0
MjA2NjhFOEUwMEZCODFBQyAvKiBQYXJzZUhhc2guY3BwICovLAogCQkJCUUzNEU2NTczMjA2NjhF
OEQwMEZCODFBQyAvKiBQYXJzZUhhc2guaCAqLywKKwkJCQk1MkFEMDgyMjIzOTlBMUYyMDBCNDEw
MUEgLyogUG9pbnRlckhpc3RvcnkuaCAqLywKIAkJCQkwRkY5Q0U3MTFCOUNENkQwMDA0RURDQTYg
LyogUG9seW1vcnBoaWNBY2Nlc3MuY3BwICovLAogCQkJCTBGRjlDRTcyMUI5Q0Q2RDAwMDRFRENB
NiAvKiBQb2x5bW9ycGhpY0FjY2Vzcy5oICovLAogCQkJCTUyMTEzMUY1MUY4MkJGMTEwMDdDQ0VF
RSAvKiBQb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAgKi8sCkBAIC05NTI2LDcgKzk1MjYsNiBAQAog
CQkJCTE0OThDQUQ2MjE0QkYzNkQwMDcxMDg3OSAvKiBHZXRCeUlkTWV0YWRhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMDMzMkM0MThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTAxNENBN0RDRDAwODVGM0M2IC8qIEdldEJ5U3Rh
dHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MjBEOTlGMTIzODhDQzgxMDAwNTA5QTMgLyogR2V0
QnlWYWxIaXN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTY0NjU2QTFCOTUyRkYwMDAzMDU5
RUUgLyogR2V0UHV0SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0RTAzNTgxRTUzQkYyRjAw
MjEzRjY0IC8qIEdldHRlclNldHRlckFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
MUQ2RDZGMjM2MjU4RkUwMDdBNUMyNiAvKiBHZXRWTS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDMw
Myw2ICsxMDMwMiw3IEBACiAJCQkJRkVEOTRGMkYxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9n
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0QgLyogV2F0Y2hw
b2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0MxMzRGRjBBNjAwQUZBREI1IC8qIFdl
YWsuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyQUQwODIzMjM5OUExRkIwMEI0MTAxQSAvKiBQb2lu
dGVySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRGOUYxNEVFMUFDQzAwRDZENUQ0
IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCRkNFNjkxMENEQjFGQzAwMzY0
Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ4NkE5M0UxQUE0RDg4RDAw
MkZFNzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShyZXZpc2lvbiAy
NTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIHR5cGVzIFsKICAgICA6RXJyb3JUeXBl
LAogICAgIDpHZXRCeUlkTW9kZSwKICAgICA6R2V0QnlJZE1vZGVNZXRhZGF0YSwKLSAgICA6R2V0
QnlWYWxIaXN0b3J5LAorICAgIDpQb2ludGVySGlzdG9yeSwKICAgICA6R2V0UHV0SW5mbywKICAg
ICA6SW5kZXhpbmdUeXBlLAogICAgIDpKU0NlbGwsCkBAIC00NTEsNiArNDUxLDcgQEAgb3AgOmdl
dF9ieV9pZCwKICAgICBtZXRhZGF0YTogewogICAgICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRN
b2RlTWV0YWRhdGEsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgc2Vl
blN0cnVjdHVyZXM6IFBvaW50ZXJIaXN0b3J5LAogICAgIH0KIAogb3AgOmdldF9ieV9pZF93aXRo
X3RoaXMsCkBAIC00NjIsNiArNDYzLDcgQEAgb3AgOmdldF9ieV9pZF93aXRoX3RoaXMsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAg
ICAgIHNlZW5TdHJ1Y3R1cmVzOiBQb2ludGVySGlzdG9yeSwKICAgICB9CiAKIG9wIDpnZXRfYnlf
dmFsX3dpdGhfdGhpcywKQEAgLTQ4NSw2ICs0ODcsNyBAQCBvcCA6Z2V0X2J5X2lkX2RpcmVjdCwK
ICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLCAjIG5vdCB1c2VkIGluIGxsaW50CiAgICAg
ICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwK
KyAgICAgICAgc2VlblN0cnVjdHVyZXM6IFBvaW50ZXJIaXN0b3J5LAogICAgIH0KIAogb3AgOnRy
eV9nZXRfYnlfaWQsCkBAIC00OTUsNiArNDk4LDcgQEAgb3AgOnRyeV9nZXRfYnlfaWQsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAg
ICAgIHNlZW5TdHJ1Y3R1cmVzOiBQb2ludGVySGlzdG9yeSwKICAgICB9CiAKIG9wIDpwdXRfYnlf
aWQsCkBAIC01MzUsNyArNTM5LDcgQEAgb3AgOmdldF9ieV92YWwsCiAgICAgbWV0YWRhdGE6IHsK
ICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgICAgICBhcnJheVByb2ZpbGU6IEFy
cmF5UHJvZmlsZSwKLSAgICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCisg
ICAgICAgIHNlZW5JZGVudGlmaWVyczogUG9pbnRlckhpc3RvcnksCiAgICAgfQogCiBvcCA6cHV0
X2J5X3ZhbCwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVZhbEhp
c3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlWYWxIaXN0b3J5LmgJKHJldmlzaW9uIDI1MzExNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeVZhbEhpc3RvcnkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDc0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIlRpbnlCbG9vbUZpbHRlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1VuaXF1ZWRTdHJpbmdJbXBsLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1zdHJ1Y3QgR2V0QnlW
YWxIaXN0b3J5IHsKLSAgICB2b2lkIG9ic2VydmVOb25VSUQoKQotICAgIHsKLSAgICAgICAgdWlu
dHB0cl90IGNvdW50ID0gT3B0aW9uczo6Z2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMo
KSArIDE7Ci0gICAgICAgIHVwZGF0ZShjb3VudCwgZmlsdGVyKCkpOwotICAgIH0KLQotICAgIHZv
aWQgb2JzZXJ2ZShjb25zdCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkKLSAgICB7Ci0gICAgICAg
IGlmICghaW1wbCkgewotICAgICAgICAgICAgb2JzZXJ2ZU5vblVJRCgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludHB0cl90IGNvdW50ID0gdGhpcy0+Y291
bnQoKTsKLSAgICAgICAgdWludHB0cl90IGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwotCi0gICAg
ICAgIFRpbnlCbG9vbUZpbHRlciBibG9vbUZpbHRlcihmaWx0ZXIpOwotICAgICAgICB1aW50cHRy
X3QgaW1wbEJpdHMgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbXBsKTsKLSAgICAgICAgQVNT
RVJUKCgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGltcGxCaXRzKSA8PCA4KSA+PiA4KSA9PSBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oaW1wbEJpdHMpKTsKLSAgICAgICAgaWYgKGJsb29tRmlsdGVyLnJ1
bGVPdXQoaW1wbEJpdHMpKSB7Ci0gICAgICAgICAgICBibG9vbUZpbHRlci5hZGQoaW1wbEJpdHMp
OwotICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICAgIHVwZGF0ZShjb3VudCwgYmxvb21G
aWx0ZXIuYml0cygpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHVpbnRwdHJfdCBjb3VudCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4obV9wYXlsb2FkID4+IDU2KTsg
fQotCi1wcml2YXRlOgotICAgIHVpbnRwdHJfdCBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KChtX3BheWxvYWQgPDwgOCkgPj4gOCk7IH0KLQotICAgIHZvaWQg
dXBkYXRlKHVpbnQ2NF90IGNvdW50LCB1aW50NjRfdCBmaWx0ZXIpCi0gICAgewotICAgICAgICBB
U1NFUlQoKChmaWx0ZXIgPDwgOCkgPj4gOCkgPT0gZmlsdGVyKTsKLSAgICAgICAgbV9wYXlsb2Fk
ID0gKGNvdW50IDw8IDU2KSB8IGZpbHRlcjsKLSAgICB9Ci0KLSAgICB1aW50NjRfdCBtX3BheWxv
YWQgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2ludGVySGlzdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2ludGVySGlzdG9yeS5oCShyZXZpc2lvbiAyNTMxMTcp
CShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVZhbEhpc3RvcnkuaDoy
NTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9pbnRlckhpc3Rvcnku
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJUaW55Qmxv
b21GaWx0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEdldEJ5VmFsSGlzdG9yeSB7CisgICAgdm9pZCBvYnNl
cnZlTm9uVUlEKCkKKyAgICB7CisgICAgICAgIHVpbnRwdHJfdCBjb3VudCA9IE9wdGlvbnM6Omdl
dEJ5VmFsSUNNYXhOdW1iZXJPZklkZW50aWZpZXJzKCkgKyAxOworICAgICAgICB1cGRhdGUoY291
bnQsIGZpbHRlcigpKTsKKyAgICB9CisKKyAgICB2b2lkIG9ic2VydmUoY29uc3QgVW5pcXVlZFN0
cmluZ0ltcGwqIGltcGwpCisgICAgeworICAgICAgICBpZiAoIWltcGwpIHsKKyAgICAgICAgICAg
IG9ic2VydmVOb25VSUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHVpbnRwdHJfdCBjb3VudCA9IHRoaXMtPmNvdW50KCk7CisgICAgICAgIHVpbnRwdHJfdCBm
aWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKKworICAgICAgICBUaW55Qmxvb21GaWx0ZXIgYmxvb21G
aWx0ZXIoZmlsdGVyKTsKKyAgICAgICAgdWludHB0cl90IGltcGxCaXRzID0gYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oaW1wbCk7CisgICAgICAgIEFTU0VSVCgoKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihpbXBsQml0cykgPDwgOCkgPj4gOCkgPT0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGltcGxCaXRz
KSk7CisgICAgICAgIGlmIChibG9vbUZpbHRlci5ydWxlT3V0KGltcGxCaXRzKSkgeworICAgICAg
ICAgICAgYmxvb21GaWx0ZXIuYWRkKGltcGxCaXRzKTsKKyAgICAgICAgICAgICsrY291bnQ7Cisg
ICAgICAgICAgICB1cGRhdGUoY291bnQsIGJsb29tRmlsdGVyLmJpdHMoKSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB1aW50cHRyX3QgY291bnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KG1fcGF5bG9hZCA+PiA1Nik7IH0KKworcHJpdmF0ZToKKyAgICB1aW50cHRy
X3QgZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PigobV9wYXls
b2FkIDw8IDgpID4+IDgpOyB9CisKKyAgICB2b2lkIHVwZGF0ZSh1aW50NjRfdCBjb3VudCwgdWlu
dDY0X3QgZmlsdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCgoZmlsdGVyIDw8IDgpID4+IDgp
ID09IGZpbHRlcik7CisgICAgICAgIG1fcGF5bG9hZCA9IChjb3VudCA8PCA1NikgfCBmaWx0ZXI7
CisgICAgfQorCisgICAgdWludDY0X3QgbV9wYXlsb2FkIHsgMCB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9pbnRlckhp
c3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9p
bnRlckhpc3RvcnkuaAkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvaW50ZXJIaXN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE3ICszMCwx
MSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IEdldEJ5VmFsSGlzdG9yeSB7Ci0gICAg
dm9pZCBvYnNlcnZlTm9uVUlEKCkKK3N0cnVjdCBQb2ludGVySGlzdG9yeSB7CisgICAgdm9pZCBv
YnNlcnZlKGNvbnN0IHZvaWQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICB1aW50cHRyX3QgY291
bnQgPSBPcHRpb25zOjpnZXRCeVZhbElDTWF4TnVtYmVyT2ZJZGVudGlmaWVycygpICsgMTsKLSAg
ICAgICAgdXBkYXRlKGNvdW50LCBmaWx0ZXIoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBvYnNlcnZl
KGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsKQotICAgIHsKLSAgICAgICAgaWYgKCFpbXBs
KSB7Ci0gICAgICAgICAgICBvYnNlcnZlTm9uVUlEKCk7CisgICAgICAgIGlmICghcG9pbnRlcikg
eworICAgICAgICAgICAgb2JzZXJ2ZU51bGwoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC00OCwxMCArNDIsMTAgQEAgc3RydWN0IEdldEJ5VmFsSGlzdG9yeSB7CiAgICAg
ICAgIHVpbnRwdHJfdCBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKIAogICAgICAgICBUaW55Qmxv
b21GaWx0ZXIgYmxvb21GaWx0ZXIoZmlsdGVyKTsKLSAgICAgICAgdWludHB0cl90IGltcGxCaXRz
ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW1wbCk7Ci0gICAgICAgIEFTU0VSVCgoKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihpbXBsQml0cykgPDwgOCkgPj4gOCkgPT0gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGltcGxCaXRzKSk7Ci0gICAgICAgIGlmIChibG9vbUZpbHRlci5ydWxlT3V0KGltcGxC
aXRzKSkgewotICAgICAgICAgICAgYmxvb21GaWx0ZXIuYWRkKGltcGxCaXRzKTsKKyAgICAgICAg
dWludHB0cl90IHBvaW50ZXJCaXRzID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocG9pbnRlcik7
CisgICAgICAgIEFTU0VSVCgoKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihwb2ludGVyQml0cykgPDwg
OCkgPj4gOCkgPT0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBvaW50ZXJCaXRzKSk7CisgICAgICAg
IGlmIChibG9vbUZpbHRlci5ydWxlT3V0KHBvaW50ZXJCaXRzKSkgeworICAgICAgICAgICAgYmxv
b21GaWx0ZXIuYWRkKHBvaW50ZXJCaXRzKTsKICAgICAgICAgICAgICsrY291bnQ7CiAgICAgICAg
ICAgICB1cGRhdGUoY291bnQsIGJsb29tRmlsdGVyLmJpdHMoKSk7CiAgICAgICAgIH0KQEAgLTYw
LDYgKzU0LDExIEBAIHN0cnVjdCBHZXRCeVZhbEhpc3RvcnkgewogICAgIHVpbnRwdHJfdCBjb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4obV9wYXlsb2FkID4+IDU2
KTsgfQogCiBwcml2YXRlOgorICAgIHZvaWQgb2JzZXJ2ZU51bGwoKQorICAgIHsKKyAgICAgICAg
dXBkYXRlKGNvdW50KCkgKyAxLCBmaWx0ZXIoKSk7CisgICAgfQorCiAgICAgdWludHB0cl90IGZp
bHRlcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oKG1fcGF5bG9hZCA8
PCA4KSA+PiA4KTsgfQogCiAgICAgdm9pZCB1cGRhdGUodWludDY0X3QgY291bnQsIHVpbnQ2NF90
IGZpbHRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyNTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcxMiwxMSArNDcx
Miw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlR2V0QnlJZChjb25zdCAKICAgICAKICAg
ICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2Rl
Lm1fcHJvcGVydHldOwotICAgIAotICAgIEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlT
dGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRl
eHRTdGFjaywKLSAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgR2V0QnlTdGF0dXM6OlRyYWNr
SWRlbnRpZmllcnM6Ok5vKTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6Okdl
dEJ5SWQ7CiAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gY3VycmVudEluc3RydWN0aW9uLT5z
aXplKCk7CkBAIC00NzI0LDEwICs0NzE5LDI5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
R2V0QnlJZChjb25zdCAKICAgICAgICAgdHlwZSA9IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQ7CiAg
ICAgZWxzZSBpZiAoT3A6Om9wY29kZUlEID09IG9wX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAg
IHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0OworICAgIAorICAgIGlmIChieXRlY29k
ZS5tZXRhZGF0YShtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaykubV9zZWVuU3RydWN0dXJl
cy5jb3VudCgpID4gT3B0aW9uczo6Z2V0QnlJZElDTWF4TnVtYmVyT2ZTdHJ1Y3R1cmVzKCkpIHsK
KyAgICAgICAgTm9kZVR5cGUgZ2V0QnlJZDsKKyAgICAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlw
ZTo6R2V0QnlJZCkKKyAgICAgICAgICAgIGdldEJ5SWQgPSBHZXRCeUlkOworICAgICAgICBlbHNl
IGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpCisgICAgICAgICAgICBnZXRCeUlk
ID0gVHJ5R2V0QnlJZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2V0QnlJZCA9IEdldEJ5
SWREaXJlY3Q7CisKKyAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJ
bmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpOworICAgICAg
ICBzZXQoYnl0ZWNvZGUubV9kc3QsIG5vZGUpOworICAgICAgICBtX2dyYXBoLm1fc2hvdWxkU2tp
cElDLmFkZChub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBHZXRCeVN0
YXR1cyBnZXRCeVN0YXR1cyA9IEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgIGN1cnJlbnRDb2RlT3Jp
Z2luKCksIEdldEJ5U3RhdHVzOjpUcmFja0lkZW50aWZpZXJzOjpObyk7CiAKICAgICBoYW5kbGVH
ZXRCeUlkKAogICAgICAgICBieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRp
Zmllck51bWJlciwgZ2V0QnlTdGF0dXMsIHR5cGUsIG9wY29kZUxlbmd0aCk7Ci0KIH0KIAogc3Rh
dGljIHVpbnQ2NF90IG1ha2VEeW5hbWljVmFyT3BJbmZvKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIHVuc2lnbmVkIGdldFB1dEluZm8pCkBAIC01NjU2LDcgKzU2NzAsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9leGl0T0sg
PSBmYWxzZTsgLy8gR2V0QnlWYWwgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIGl0IGNsb2JiZXJzIGV4
aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgaXQgZ2VuZXJpYy4KICAgICAgICAg
ICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGdldEJ5VmFsKTsKICAgICAgICAgICAgICAgICBp
ZiAoZ2V0QnlTdGF0dXMub2JzZXJ2ZWRTdHJ1Y3R1cmVTdHViSW5mb1Nsb3dQYXRoKCkgfHwgYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX3NlZW5JZGVudGlmaWVycy5jb3VudCgpID4gT3B0
aW9uczo6Z2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMoKSkKLSAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3Nsb3dHZXRCeVZhbC5hZGQoZ2V0QnlWYWwpOworICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fc2hvdWxkU2tpcElDLmFkZChnZXRCeVZhbCk7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV92YWwpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUzLDcg
KzExNTMsNyBAQCBwdWJsaWM6CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJpbmdTdHJ1Y3R1
cmU7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzeW1ib2xTdHJ1Y3R1cmU7CiAKLSAgICBIYXNo
U2V0PE5vZGUqPiBtX3Nsb3dHZXRCeVZhbDsKKyAgICBIYXNoU2V0PE5vZGUqPiBtX3Nob3VsZFNr
aXBJQzsKIAogcHJpdmF0ZToKICAgICBib29sIGlzU3RyaW5nUHJvdG90eXBlTWV0aG9kU2FuZShK
U0dsb2JhbE9iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlz
aW9uIDI1MzExNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNTksNyArMjI1OSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQXJyYXk6OkdlbmVyaWM6IHsKLSAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fc2xvd0dldEJ5VmFsLmNvbnRhaW5zKG5vZGUpKSB7CisgICAgICAgICAgICBpZiAo
bV9ncmFwaC5tX3Nob3VsZFNraXBJQy5jb250YWlucyhub2RlKSkgewogICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSA9PSBPYmplY3RVc2Up
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSku
dXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY29tcGls
ZUdldEJ5VmFsRm9yT2JqZWN0V2l0aFN0cmluZyhub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjUz
MTE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQwOCw3ICsyNDA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzogewotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9z
bG93R2V0QnlWYWwuY29udGFpbnMobm9kZSkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1f
c2hvdWxkU2tpcElDLmNvbnRhaW5zKG5vZGUpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS51c2VLaW5kKCkg
PT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxG
b3JPYmplY3RXaXRoU3RyaW5nKG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI1MzExNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05ODYsNiArOTg2LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlk
KE5vZGUKIHsKICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkIHx8
IGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCB8fCBhY2Nlc3NUeXBlID09
IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogCisgICAgaWYgKG1fZ3JhcGgubV9zaG91bGRTa2lw
SUMuY29udGFpbnMobm9kZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3Mg
PSBiYXNlLmpzVmFsdWVSZWdzKCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKGFwcHJvcHJpYXRlR2VuZXJpY0dldEJ5SWRGdW5jdGlvbihhY2Nlc3NUeXBlKSwgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBUcnVzdGVkSW1tUHRy
KGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSkpOworICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTogewogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDI1MzExNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0Niw2ICszNTQ2LDE2IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkIHx8IHR5cGUgPT0g
QWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCB8fCB0eXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJl
Y3QpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIGlmIChtX2dy
YXBoLm1fc2hvdWxkU2tpcElDLmNvbnRhaW5zKG1fbm9kZSkpIHsKKyAgICAgICAgICAgIHNwZWN1
bGF0ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAg
ICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgYXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJ
ZEZ1bmN0aW9uKHR5cGUpLAorICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUt
PmlkZW50aWZpZXJOdW1iZXIoKV0pKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KwogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAg
IGNhc2UgQ2VsbFVzZTogewogICAgICAgICAgICAgc2V0SlNWYWx1ZShnZXRCeUlkKGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSksIHR5cGUpKTsKQEAgLTQ0NTMsNyArNDQ2Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFycmF5OjpHZW5lcmljOiB7
Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX3Nsb3dHZXRCeVZhbC5jb250YWlucyhtX25vZGUp
KSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3Nob3VsZFNraXBJQy5jb250YWlucyhtX25v
ZGUpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAw
KS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkocmV2aXNpb24gMjUzMTE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsx
MzYsNyBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRl
ICJGaXRzLmgiCiAjaW5jbHVkZSAiR2V0QnlJZE1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiR2V0QnlW
YWxIaXN0b3J5LmgiCisjaW5jbHVkZSAiUG9pbnRlckhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnN0
cnVjdGlvbi5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMu
aCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCShyZXZpc2lvbiAyNTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA5LDM3ICs0MDksNDQgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbgogICAgIGludCByZXN1bHRW
UmVnID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IGJhc2VWUmVnID0gYnl0ZWNv
ZGUubV9iYXNlLm9mZnNldCgpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2Nv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7CiAKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKKyAgICBpZiAobWV0YWRhdGEubV9zZWVuU3RydWN0
dXJlcy5jb3VudCgpID4gT3B0aW9uczo6Z2V0QnlJZElDTWF4TnVtYmVyT2ZTdHJ1Y3R1cmVzKCkp
CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayksIG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmljLCByZXN1bHRWUmVnLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCBUcnVzdGVkSW1tUHRy
KGlkZW50LT5pbXBsKCkpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCi0gICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKLSAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKLSAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwotICAgIAotICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spKTsKLSAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdl
bigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOworICAg
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisgICAg
ICAgIAorICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7
CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgaWYgKGhh
c0FueVNsb3dDYXNlcyhpdGVyKSkgeworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlk
PigpOwotICAgIGludCByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVj
b2RlLm1fcHJvcGVydHkpKTsKKyAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOworICAgICAgICBpbnQgcmVzdWx0VlJlZyA9IGJ5dGVj
b2RlLm1fZHN0Lm9mZnNldCgpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYo
bV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgSklU
R2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAg
ICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRl
eCsrXTsKIAotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgaWRl
bnQtPmltcGwoKSk7Ci0gICAgCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25U
cnlHZXRCeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsK
KyAgICAgICAgCisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Y2FsbCk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC00NDgsMzcgKzQ1NSw0NCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0CiAgICAgaW50IHJlc3Vs
dFZSZWcgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgYmFzZVZSZWcgPSBieXRl
Y29kZS5tX2Jhc2Uub2Zmc2V0KCk7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1f
Y29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIHJlZ1QwKTsKIAotICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOworICAgIGlmIChtZXRhZGF0YS5tX3NlZW5TdHJ1
Y3R1cmVzLmNvdW50KCkgPiBPcHRpb25zOjpnZXRCeUlkSUNNYXhOdW1iZXJPZlN0cnVjdHVyZXMo
KSkKKyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZERpcmVjdEdlbmVyaWMsIHJlc3VsdFZSZWcsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIFRydXN0ZWRJ
bW1QdHIoaWRlbnQtPmltcGwoKSkpOworICAgIGVsc2UgeworICAgICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAotICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwotICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOwotICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisgICAgICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBpZGVudC0+aW1wbCgp
LCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0
QnlJZERpcmVjdCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeUlkcy5h
cHBlbmQoZ2VuKTsKIAotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcp
OworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7Cisg
ICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgaWYgKGhh
c0FueVNsb3dDYXNlcyhpdGVyKSkgeworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGly
ZWN0PigpOwotICAgIGludCByZXN1bHRWUmVnID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0g
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5
dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOworICAgICAgICBpbnQgcmVzdWx0VlJlZyA9
IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0g
ICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsr
XTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5
SWRJbmRleCsrXTsKIAotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgICAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJh
dGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIGlkZW50LT5p
bXBsKCkpOworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1p
emUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBpZGVudC0+aW1wbCgpKTsKIAotICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
QEAgLTQ5MCwyNCArNTA0LDU0IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJ
bnN0cnUKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlVlJlZywgcmVnVDApOwotICAgIAotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCwgYmFzZVZSZWcpOwotICAgIAotICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAgICBKdW1w
IG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDgoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcygm
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1
aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSk7Ci0gICAgICAgIGVtaXRBcnJheVBy
b2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDEsICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKLSAgICAgICAgbm90QXJyYXlMZW5ndGhN
b2RlLmxpbmsodGhpcyk7CisKKyAgICBpZiAobWV0YWRhdGEubV9zZWVuU3RydWN0dXJlcy5jb3Vu
dCgpID4gT3B0aW9uczo6Z2V0QnlJZElDTWF4TnVtYmVyT2ZTdHJ1Y3R1cmVzKCkpIHsKKyAgICAg
ICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1p
dFByb2ZpbGluZygpKSB7CisgICAgICAgICAgICBhdXRvIG5vdENlbGwgPSBicmFuY2hJZk5vdENl
bGwocmVnVDApOworICAgICAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4
KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUp
LCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVu
Z3RoKSkpOworICAgICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1Qw
LCByZWdUMSwgJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVBy
b2ZpbGUpOworICAgICAgICAgICAgbm90QXJyYXlMZW5ndGhNb2RlLmxpbmsodGhpcyk7CisgICAg
ICAgICAgICBub3RDZWxsLmxpbmsodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgY2FsbE9wZXJh
dGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9u
R2V0QnlJZEdlbmVyaWMsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgcmVnVDAsIFRydXN0ZWRJbW1QdHIoaWRlbnQtPmltcGwoKSkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFz
ZVZSZWcpOworICAgICAgICAKKyAgICAgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgICAgICBKdW1w
IG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDgoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcygm
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1
aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSk7CisgICAgICAgICAgICBlbWl0QXJy
YXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QxLCAmbWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CisgICAgICAgICAgICBub3RBcnJh
eUxlbmd0aE1vZGUubGluayh0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBpZGVudC0+aW1wbCgpLCBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJ
ZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2Vu
KTsKKworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7
CiAgICAgfQorfQogCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAg
ICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7Ci0gICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0gICAgbV9nZXRCeUlkcy5h
cHBlbmQoZ2VuKTsKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3sKKyAgICBpZiAoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKSB7CisgICAgICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRWUmVnKTsKKyAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BHZXRCeUlkPigpOworICAgICAgICBpbnQgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0
Lm9mZnNldCgpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworCisgICAgICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgICAg
IAorICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBp
ZGVudC0+aW1wbCgpKTsKKworICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIGNhbGwpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNTM0LDIz
ICs1NzgsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvCiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQotewotICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldEJ5SWQ+KCk7Ci0gICAgaW50IHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdC5vZmZz
ZXQoKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKLQotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRo
UHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIGlkZW50LT5pbXBsKCkpOwotCi0gICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKLX0KLQogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNTMxMTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NDAsOCArNjQwLDEyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90cnlf
Z2V0X2IKIHsKICAgICBMTElOVF9CRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BUcnlHZXRCeUlkPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
Y29kZUJsb2NrKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
Z2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgaWYgKG1ldGFkYXRh
Lm1fc2VlblN0cnVjdHVyZXMuY291bnQoKSA8PSBPcHRpb25zOjpnZXRCeUlkSUNNYXhOdW1iZXJP
ZlN0cnVjdHVyZXMoKSkKKyAgICAgICAgbWV0YWRhdGEubV9zZWVuU3RydWN0dXJlcy5vYnNlcnZl
KGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkpOwogCiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3Qs
IGlkZW50LCBzbG90KTsKQEAgLTY1NCw4ICs2NTgsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV9pZAogewogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7Cisg
ICAgaWYgKG1ldGFkYXRhLm1fc2VlblN0cnVjdHVyZXMuY291bnQoKSA8PSBPcHRpb25zOjpnZXRC
eUlkSUNNYXhOdW1iZXJPZlN0cnVjdHVyZXMoKSkKKyAgICAgICAgbWV0YWRhdGEubV9zZWVuU3Ry
dWN0dXJlcy5vYnNlcnZlKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSk7CiAgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CiAKICAgICBib29sIGZvdW5kID0gYmFzZVZh
bHVlLmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKQEAgLTY2
NCw3ICs2NzEsNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKICAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NF
U1NfU0xPVyAmJiBzbG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgpKSB7Ci0gICAg
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAg
ICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5t
X3N0cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7CkBAIC03NjUs
NiArNzcxLDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQKICAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9w
cm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV9iYXNlKTsKKworICAgIGlmIChtZXRhZGF0YS5tX3NlZW5TdHJ1Y3R1cmVzLmNv
dW50KCkgPD0gT3B0aW9uczo6Z2V0QnlJZElDTWF4TnVtYmVyT2ZTdHJ1Y3R1cmVzKCkpCisgICAg
ICAgIG1ldGFkYXRhLm1fc2VlblN0cnVjdHVyZXMub2JzZXJ2ZShiYXNlVmFsdWUuc3RydWN0dXJl
T3JOdWxsKCkpOworCiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNs
b3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCShyZXZpc2lv
biAyNTMxMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNiArNDk0LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxl
V2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYoQm9vbCwgdXNlVW5saW5rZWRDb2RlQmxvY2tKZXR0
aXNvbmluZywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIFVubGlua2VkQ29kZUJsb2NrIGNhbiBi
ZSBqZXR0aXNvbmVkLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlT1NSRXhpdFRvTExJbnQsIGZhbHNl
LCBOb3JtYWwsICJJZiB0cnVlLCB3ZSBhbHdheXMgZXhpdCB0byB0aGUgTExJbnQuIElmIGZhbHNl
LCB3ZSBleGl0IHRvIHdoYXRldmVyIGlzIG1vc3QgY29udmVuaWVudC4iKSBcCiAgICAgdihVbnNp
Z25lZCwgZ2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMsIDQsIE5vcm1hbCwgIk51bWJl
ciBvZiBpZGVudGlmaWVycyB3ZSBzZWUgaW4gdGhlIExMSW50IHRoYXQgY291bGQgY2F1c2UgdXMg
dG8gYmFpbCBvbiBnZW5lcmF0aW5nIGFuIElDIGZvciBnZXRfYnlfdmFsLiIpIFwKKyAgICB2KFVu
c2lnbmVkLCBnZXRCeUlkSUNNYXhOdW1iZXJPZlN0cnVjdHVyZXMsIDUsIE5vcm1hbCwgIk51bWJl
ciBvZiBzdHJ1Y3R1cmVzIHdlIHNlZSBpbiB0aGUgTExJbnQgdGhhdCBjb3VsZCBjYXVzZSB1cyB0
byBiYWlsIG9uIGdlbmVyYXRpbmcgYW4gSUMgZm9yIHZhcmlvdXMgZ2V0X2J5X2lkIElDcy4iKSBc
CiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>