<?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>98717</bug_id>
          
          <creation_ts>2012-10-08 21:22:04 -0700</creation_ts>
          <short_desc>JSC: Rename RegisterFile to JSStack</short_desc>
          <delta_ts>2012-10-09 09:40:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>levin+threading</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>737387</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-10-08 21:22:04 -0700</bug_when>
    <thetext>This is just a refactoring job to rename RegisterFile to JSStack in preparation for topCallFrame changes.  The are no semantic changes in this change set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737394</commentid>
    <comment_count>1</comment_count>
      <attachid>167685</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-10-08 21:38:53 -0700</bug_when>
    <thetext>Created attachment 167685
Fix: renamed RegisterFile to JSStack, and removed the prototype of the previously deleted Interpreter::privateExecute().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737399</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-08 21:42:17 -0700</bug_when>
    <thetext>Attachment 167685 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/interpreter/JSStack.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSLock.cpp:146:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/JSLock.cpp:149:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 3 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737404</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-10-08 21:45:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Source/JavaScriptCore/interpreter/JSStack.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]

This indentation was there before.  To minimize the diff, I&apos;m leaving them as is.

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:146:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
&gt; Source/JavaScriptCore/runtime/JSLock.cpp:149:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
&gt; Total errors found: 3 in 69 files

These spaces were there before my change, and they make the comment more readable.  I&apos;m leaving them as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737425</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-08 22:44:43 -0700</bug_when>
    <thetext>Ready for review?

(I&apos;m tempted to rubber stamp. I concur with the renaming.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737435</commentid>
    <comment_count>5</comment_count>
      <attachid>167685</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-10-08 23:08:16 -0700</bug_when>
    <thetext>Comment on attachment 167685
Fix: renamed RegisterFile to JSStack, and removed the prototype of the previously deleted Interpreter::privateExecute().

Was waiting for some of the ews bots to confirm that I didn&apos;t bork their builds.  We&apos;re ready for the review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737466</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-08 23:46:55 -0700</bug_when>
    <thetext>R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737474</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-10-09 00:13:31 -0700</bug_when>
    <thetext>Landed in &lt;http://trac.webkit.org/changeset/130726&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737874</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-09 09:39:07 -0700</bug_when>
    <thetext>Makes me think that &quot;CallFrame&quot; should be renamed to &quot;StackFrame&quot; or &quot;JSStackFrame&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737875</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-10-09 09:40:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Makes me think that &quot;CallFrame&quot; should be renamed to &quot;StackFrame&quot; or &quot;JSStackFrame&quot;.

I will revisit that later.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167685</attachid>
            <date>2012-10-08 21:38:53 -0700</date>
            <delta_ts>2012-10-08 23:46:20 -0700</delta_ts>
            <desc>Fix: renamed RegisterFile to JSStack, and removed the prototype of the previously deleted Interpreter::privateExecute().</desc>
            <filename>bug-98717.patch</filename>
            <type>text/plain</type>
            <size>262689</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwNzE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NCBA
QAorMjAxMi0xMC0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1lZCBSZWdpc3RlckZpbGUgdG8gSlNTdGFjaywgYW5kIHJlbW92ZWQgcHJvdG90eXBlIG9m
IHRoZQorICAgICAgICBwcmV2aW91c2x5IGRlbGV0ZWQgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVj
dXRlKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
ODcxNy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUub3JkZXI6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmFtZUZvclJl
Z2lzdGVyKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKENvZGVC
bG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oOgorICAgICAgICAoSlND
OjpWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrKToKKyAgICAgICAgKEpTQzo6VmFsdWVS
ZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyKToKKyAgICAgICAgKEpTQzo6
VmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwpOgorICAgICAgICAo
SlNDOjpWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbik6Cisg
ICAgICAgIChKU0M6OlZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3Vi
bGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2spOgor
ICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5Ojppc0FscmVhZHlJbkpTU3RhY2spOgorICAgICAg
ICAoSlNDOjpWYWx1ZVJlY292ZXJ5Ojp2aXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpW
YWx1ZVJlY292ZXJ5OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZUNhbGxl
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OnJlZ2lzdGVyRm9yKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5oOgor
ICAgICAgICAoQWJzdHJhY3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVy
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJQdHIpOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBl
cnM6OmVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcik6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
Z2V0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZmluZEFyZ3Vt
ZW50UG9zaXRpb25Gb3JMb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5OjpyZW1hcE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKiBkZmcvREZHR2VuZXJhdGlvbklu
Zm8uaDoKKyAgICAgICAgKEdlbmVyYXRpb25JbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5l
cmF0aW9uSW5mbzo6bmVlZHNTcGlsbCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAg
ICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29t
cGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6YmVnaW5DYWxsKToKKyAgICAgICAgKiBkZmcvREZHT1NS
RW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAg
ICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpP
U1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENv
bXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGls
ZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojp0cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVK
SVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGlsbCk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbEludGVnZXIpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OnRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkRGRzo6c2xvd1BhdGhGb3IpOgorICAgICAgICAoSlNDOjpERkc6
OnZpcnR1YWxGb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR1ZhbHVlU291cmNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICog
ZGZnL0RGR1ZhbHVlU291cmNlLmg6CisgICAgICAgIChKU0M6OkRGRzo6ZGF0YUZvcm1hdFRvVmFs
dWVTb3VyY2VLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjp2YWx1ZVNvdXJjZUtpbmRUb0RhdGFG
b3JtYXQpOgorICAgICAgICAoSlNDOjpERkc6OmlzSW5KU1N0YWNrKToKKyAgICAgICAgKEpTQzo6
REZHOjpWYWx1ZVNvdXJjZTo6Zm9yU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlZh
bHVlU291cmNlOjppc0luSlNTdGFjayk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6
OnZhbHVlUmVjb3ZlcnkpOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCk6
CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RhY2spOgor
ICAgICAgICAoSlNDOjpIZWFwOjpnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJh
bWUuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnN0YWNrKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZWVBc1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpF
eGVjU3RhdGU6OmNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2NvcGUpOgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lKToKKyAgICAgICAgKEpTQzo6RXhl
Y1N0YXRlOjpyZXR1cm5QQyk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aGFzUmV0dXJuUEMp
OgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNsZWFyUmV0dXJuUEMpOgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6OmJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSk6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6c2V0Qnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKToKKyAgICAgICAgKEpT
Qzo6RXhlY1N0YXRlOjppbmxpbmVDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OmNvZGVPcmlnaW5JbmRleEZvckRGRyk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y3VycmVu
dFZQQyk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2V0Q3VycmVudFZQQyk6CisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6c2V0Q2FsbGVyRnJhbWUpOgorICAgICAgICAoSlNDOjpFeGVjU3Rh
dGU6OnNldFNjb3BlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjppbml0KToKKyAgICAgICAg
KEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisgICAgICAgIChK
U0M6OkV4ZWNTdGF0ZTo6b2Zmc2V0Rm9yKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2V0
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDb2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OnNldFJldHVyblBDKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRl
OjpzZXRJbmxpbmVDYWxsRnJhbWUpOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpz
bGlkZVJlZ2lzdGVyV2luZG93Rm9yQ2FsbCk6CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAg
ICAoSlNDOjpsb2FkVmFyYXJncyk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpkdW1wUmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9uKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2Fs
bCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjplbmRSZXBlYXRDYWxsKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
c3RhY2spOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3Rh
Y2suY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmNwcC4KKyAgICAgICAgKEpTQzo6c3RhY2tTdGF0aXN0aWNzTXV0ZXgpOgorICAg
ICAgICAoSlNDOjpKU1N0YWNrOjp+SlNTdGFjayk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6Omdy
b3dTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OmdhdGhlckNvbnNlcnZhdGl2ZVJv
b3RzKToKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6cmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KToKKyAg
ICAgICAgKEpTQzo6SlNTdGFjazo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgIChKU0M6
OkpTU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OmFk
ZFRvQ29tbWl0dGVkQnl0ZUNvdW50KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZp
bGUuaC4KKyAgICAgICAgKEpTU3RhY2spOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpKU1N0YWNr
KToKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6SlNTdGFj
azo6Z3Jvdyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHA6CisgICAgICAgIChKU0M6OlZNSW5zcGVj
dG9yOjpkdW1wRnJhbWUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OkpJVCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKSVQpOgorICAgICAgICAqIGpp
dC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlTG9hZFZhcmFyZ3MpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENh
bGwpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcmV0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3Jf
dGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAg
KEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVD
YWxsRXZhbFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAg
ICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SklU
Q29kZTo6ZXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dElt
bWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXIzMik6CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToK
KyAgICAgICAgKEpTQzo6SklUOjp1bm1hcCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVz
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5l
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9jcmVhdGVfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnRz
X2xlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFs
KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZ2V0X3Njb3BlZF92YXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHV0X3Njb3BlZF92YXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9zY29wZWRfdmFyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToKKyAgICAgICAgKiBqaXQvSklUU3R1
YnMuY3BwOgorICAgICAgICAoSlNDOjpjdGlUcmFtcG9saW5lKToKKyAgICAgICAgKEpTQzo6SklU
VGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6REVGSU5F
X1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIGppdC9KSVRTdHVicy5oOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpJVFN0YWNrRnJhbWUpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6
OlNwZWNpYWxpemVkVGh1bmtKSVQ6OlNwZWNpYWxpemVkVGh1bmtKSVQpOgorICAgICAgICAoSlND
OjpTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5KU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6U3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJuRG91YmxlKToKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmV0dXJuSW50MzIpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5r
SklUOjpyZXR1cm5KU0NlbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
IChKU0M6OkFyZ3VtZW50czo6dGVhck9mZkZvcklubGluZUNhbGxGcmFtZSk6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhz
Ojphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6CisgICAgICAgICog
cnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYyk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsT2Jq
ZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNWYXJpYWJsZU9i
amVjdCk6CisgICAgICAgICogcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAg
KEpTQzo6Z2xvYmFsTWVtb3J5U3RhdGlzdGljcyk6CisKIDIwMTItMTAtMDggIE1pY2hhZWwgU2Fi
b2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQWZ0ZXIgcjEzMDM0NCwgT3BhcXVl
SlNTdHJpbmcoKSBjcmVhdGVzIGFuIGVtcHR5IHN0cmluZyB3aGljaCBzaG91bGQgYmUgYSBudWxs
IHN0cmluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAg
ICBpbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAogICAgIGludGVycHJldGVyL0NhbGxGcmFtZS5j
cHAKICAgICBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKLSAgICBpbnRlcnByZXRlci9SZWdp
c3RlckZpbGUuY3BwCisgICAgaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAKICAgICBpbnRlcnByZXRl
ci9WTUluc3BlY3Rvci5jcHAKIAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEz
MDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjcsOCArMzY3LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBcCi0JU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAgXAotCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSlNTdGFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UmVnaXN0ZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVj
dG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9y
LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgko
cmV2aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIF9fWk4zSlNDMTBKU0Z1bmN0
aW9uQzFFTlNfNkpTQ2VsbDIwVlB0clMKIF9fWk4zV1RGMTVpbml0aWFsaXplRGF0ZXNFdgogX19a
TjNXVEYxMWN1cnJlbnRUaW1lRXYKIF9fWk4zV1RGOG1zVG9ZZWFyRWQKLV9fWk4zSlNDMTJSZWdp
c3RlckZpbGUxOWluaXRpYWxpemVUaHJlYWRpbmdFdgorX19aTjNKU0MxMkpTU3RhY2sxOWluaXRp
YWxpemVUaHJlYWRpbmdFdgogX19aTjNXVEYzOWluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNz
TWFpblRocmVhZEV2CiBfX1pOM1dURjM2bG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011
dGV4RXYKIF9fWk4zV1RGMzh1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEV2
CkBAIC0xNTgsNyArMTU4LDcgQEAgX19aTjNKU0MyNURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tj
bEV2CiBfX1pOM0pTQzExUmVnRXhwQ2FjaGVDMUVQTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pT
QzExSW50ZXJwcmV0ZXJDMUVSTlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzEwSGFuZGxlSGVh
cDEyd3JpdGVCYXJyaWVyRVBOU183SlNWYWx1ZUVSS1MxXwotX19aTjNKU0MxMlJlZ2lzdGVyRmls
ZTIzYWRkVG9Db21taXR0ZWRCeXRlQ291bnRFbAorX19aTjNKU0MxMkpTU3RhY2syM2FkZFRvQ29t
bWl0dGVkQnl0ZUNvdW50RWwKIF9fWk4zSlNDMTFNYXJrZWRTcGFjZTIxYWxsb2NhdGVGcm9tU2l6
ZUNsYXNzRVJOUzBfOVNpemVDbGFzc0UKIF9fWk4zSlNDMTFNYXJrZWRTcGFjZTEzYWxsb2NhdGVC
bG9ja0VSTlMwXzlTaXplQ2xhc3NFCiBfX1pOM0pTQzExTWFya2VkQmxvY2s2Y3JlYXRlRVBOU18x
MkpTR2xvYmFsRGF0YUVtCkBAIC0zNzAsNyArMzcwLDcgQEAgX19aTjNKU0M0SGVhcDltYXJrUm9v
dHNFdgogX19aTjNKU0MxNE1hY2hpbmVUaHJlYWRzMjNnYXRoZXJDb25zZXJ2YXRpdmVSb290c0VS
TlNfMTdDb25zZXJ2YXRpdmVSb290c0VQdgogX19aTjNKU0MxNE1hY2hpbmVUaHJlYWRzMjNnYXRo
ZXJGcm9tQ3VycmVudFRocmVhZEVSTlNfMTdDb25zZXJ2YXRpdmVSb290c0VQdgogX19aTjNKU0Mx
N0NvbnNlcnZhdGl2ZVJvb3RzM2FkZEVQdlMxXwotX19aTjNKU0MxMlJlZ2lzdGVyRmlsZTIzZ2F0
aGVyQ29uc2VydmF0aXZlUm9vdHNFUk5TXzE3Q29uc2VydmF0aXZlUm9vdHNFCitfX1pOM0pTQzEy
SlNTdGFjazIzZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHNFUk5TXzE3Q29uc2VydmF0aXZlUm9vdHNF
CiBfX1pOM0pTQzExTWFya2VkU3BhY2UxMGNsZWFyTWFya3NFdgogX19aTjNKU0M5TWFya1N0YWNr
NmFwcGVuZEVSTlNfMTdDb25zZXJ2YXRpdmVSb290c0UKIF9fWk4zSlNDOU1hcmtTdGFjazVkcmFp
bkV2CkBAIC01MTEsOSArNTExLDkgQEAgX19aTjNKU0M0SGVhcDI5cmVwb3J0RXh0cmFNZW1vcnlD
b3N0U2xvdwogX19aTjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yRDJFdgogX19aVGhuMTZfTjNKU0Mx
MVByb2dyYW1Ob2RlRDBFdgogX19aTjNKU0MxMVByb2dyYW1Ob2RlRDBFdgotX19aTjNKU0MxMlJl
Z2lzdGVyRmlsZTEyZ2xvYmFsT2JqZWN0RXYKLV9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzY29w
eUdsb2JhbHNUb0VSTlNfMTJSZWdpc3RlckZpbGVFCi1fX1pOM0pTQzEyUmVnaXN0ZXJGaWxlMTVz
ZXRHbG9iYWxPYmplY3RFUE5TXzE0SlNHbG9iYWxPYmplY3RFCitfX1pOM0pTQzEySlNTdGFjazEy
Z2xvYmFsT2JqZWN0RXYKK19fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEzY29weUdsb2JhbHNUb0VS
TlNfMTJKU1N0YWNrRQorX19aTjNKU0MxMkpTU3RhY2sxNXNldEdsb2JhbE9iamVjdEVQTlNfMTRK
U0dsb2JhbE9iamVjdEUKIF9jdGlUcmFtcG9saW5lCiBfX1pOM1dURjE1U2VnbWVudGVkVmVjdG9y
SU4zSlNDMTBJZGVudGlmaWVyRUxtNjRFRTZhcHBlbmRJUzJfRUV2UktUXwogX19aTkszSlNDOUhh
c2hUYWJsZTExY3JlYXRlVGFibGVFUE5TXzEySlNHbG9iYWxEYXRhRQpAQCAtNjgyLDcgKzY4Miw3
IEBAIF9fWk4zSlNDMThGdW5jdGlvbkV4ZWN1dGFibGUxMWRpc2NhcmRDb2QKIF9fWk4zSlNDMTdG
dW5jdGlvbkNvZGVCbG9ja0QwRXYKIF9fWk4zSlNDOUNvZGVCbG9ja0QyRXYKIF9fWk4zSlNDMTVX
ZWFrSGFuZGxlT3duZXIyNmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzRU5TXzZIYW5kbGVJTlNf
N1Vua25vd25FRUVQdlJOU185TWFya1N0YWNrRQotX19aTjNKU0MxMlJlZ2lzdGVyRmlsZTE3R2xv
YmFsT2JqZWN0T3duZXI4ZmluYWxpemVFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2CitfX1pO
M0pTQzEySlNTdGFjazE3R2xvYmFsT2JqZWN0T3duZXI4ZmluYWxpemVFTlNfNkhhbmRsZUlOU183
VW5rbm93bkVFRVB2CiBfX1pOM0pTQzEzRXJyb3JJbnN0YW5jZUQxRXYKIF9fWk4zSlNDMTJTdHJp
bmdPYmplY3REMUV2CiBfX1pOM0pTQzEyTnVtYmVyT2JqZWN0RDFFdgpAQCAtNzg0LDcgKzc4NCw3
IEBAIF9fWk4zV1RGOUhhc2hUYWJsZUlQTlNfMTBTdHJpbmdJbXBsRVMyX04KIF9fWk4zSlNDMTdC
eXRlY29kZUdlbmVyYXRvcjEyYWRkR2xvYmFsVmFyRVJLTlNfMTBJZGVudGlmaWVyRWJSUE5TXzEw
UmVnaXN0ZXJJREUKIF9fWk4zSlNDMThGdW5jdGlvbkV4ZWN1dGFibGVDMUVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVSS05TXzEwU291cmNlQ29kZUViUE5TXzE4RnVuY3Rpb25QYXJh
bWV0ZXJzRWJpaQogX19aTjNKU0MxMkZ1bmNEZWNsTm9kZTEyZW1pdEJ5dGVjb2RlRVJOU18xN0J5
dGVjb2RlR2VuZXJhdG9yRVBOU18xMFJlZ2lzdGVySURFCi1fX1pOM0pTQzE0SlNHbG9iYWxPYmpl
Y3QxNWNvcHlHbG9iYWxzRnJvbUVSTlNfMTJSZWdpc3RlckZpbGVFCitfX1pOM0pTQzE0SlNHbG9i
YWxPYmplY3QxNWNvcHlHbG9iYWxzRnJvbUVSTlNfMTJKU1N0YWNrRQogX19aTkszV1RGMTJBdG9t
aWNTdHJpbmc1bG93ZXJFdgogX19aTjNKU0M0MWNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFs
RW5hYmxlZENoZWNrRVBOU185RXhlY1N0YXRlRVBOU18xNEpTR2xvYmFsT2JqZWN0RVJLTlNfN0Fy
Z0xpc3RFUktOU18xMElkZW50aWZpZXJFUktOU183VVN0cmluZ0VpCiBfX1pOM1dURjEzU3RyaW5n
QnVpbGRlcjZhcHBlbmRFUEtjagpAQCAtODEwLDcgKzgxMCw3IEBAIF9fWk5LM0pTQzE0SlNHbG9i
YWxPYmplY3QxNGlzRHluYW1pY1Njb3AKIF9fWk4zSlNDMTZWYXJTdGF0ZW1lbnROb2RlMTJlbWl0
Qnl0ZWNvZGVFUk5TXzE3Qnl0ZWNvZGVHZW5lcmF0b3JFUE5TXzEwUmVnaXN0ZXJJREUKIF9fWk4z
SlNDMTdBc3NpZ25SZXNvbHZlTm9kZTEyZW1pdEJ5dGVjb2RlRVJOU18xN0J5dGVjb2RlR2VuZXJh
dG9yRVBOU18xMFJlZ2lzdGVySURFCiBfX1pOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3IxNWlzTG9j
YWxDb25zdGFudEVSS05TXzEwSWRlbnRpZmllckUKLV9jdGlfcmVnaXN0ZXJfZmlsZV9jaGVjawor
X2N0aV9zdGFja19jaGVjawogX19aTjNKU0MxNkpTQ2FsbGJhY2tPYmplY3RJTlNfMjRKU09iamVj
dFdpdGhHbG9iYWxPYmplY3RFRTE3c3RhdGljVmFsdWVHZXR0ZXJFUE5TXzlFeGVjU3RhdGVFTlNf
N0pTVmFsdWVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM1dURjlIYXNoVGFibGVJU3Q0cGFpcklO
U182UmVmUHRySU5TXzEwU3RyaW5nSW1wbEVFRWpFUzFfSVM1X1BOM0pTQzdKU1ZhbHVlRUVOU18x
OFBhaXJGaXJzdEV4dHJhY3RvcklTOV9FRU5TNl8yNFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTRI
YXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNDXzEwSGFzaFRyYWl0c0VOU18xMEhhc2hUcmFpdHNJ
UzhfRUVFRVNGX0U2cmVoYXNoRWkKIF9KU1ZhbHVlTWFrZVN0cmluZwpAQCAtOTc5LDcgKzk3OSw3
IEBAIF9jdGlfb3BfZXEKIF9jdGlfb3BfcmVzb2x2ZV93aXRoX2Jhc2UKIF9fWk4zSlNDMTJKU0Fj
dGl2YXRpb24xOGdldE93blByb3BlcnR5U2xvdEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRp
ZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfY3RpX29wX2NhbGxfZXZhbAotX19aTjNKU0MxMUlu
dGVycHJldGVyOGNhbGxFdmFsRVBOU185RXhlY1N0YXRlRVBOU18xMlJlZ2lzdGVyRmlsZUVQTlNf
OFJlZ2lzdGVyRWlpCitfX1pOM0pTQzExSW50ZXJwcmV0ZXI4Y2FsbEV2YWxFUE5TXzlFeGVjU3Rh
dGVFUE5TXzEySlNTdGFja0VQTlNfOFJlZ2lzdGVyRWlpCiBfX1pOM0pTQzE0RXZhbEV4ZWN1dGFi
bGVDMUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwU291cmNlQ29kZUViCiBfX1pOM0pTQzE0RXZhbEV4
ZWN1dGFibGUxNWNvbXBpbGVJbnRlcm5hbEVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRTY29wZUNoYWlu
Tm9kZUUKIF9fWk4zSlNDNlBhcnNlcjVwYXJzZUlOU184RXZhbE5vZGVFRUVOM1dURjEwUGFzc1Jl
ZlB0cklUX0VFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzhEZWJ1Z2dlckVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwU291cmNlQ29kZUVQTlNfMThGdW5jdGlvblBhcmFtZXRlcnNFTlNfMThKU1BhcnNl
clN0cmljdG5lc3NFUFBOU184SlNPYmplY3RFCkBAIC0xNzEzLDggKzE3MTMsOCBAQCBfX1pOM0pT
QzlKSVRUaHVua3MyMmNsZWFySG9zdEZ1bmN0aW9uU3R1CiBfX1pOM0pTQzExTWFya2VkU3BhY2U3
ZGVzdHJveUV2CiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhRDFFdgogX19aTjNKU0MxMkpTR2xvYmFs
RGF0YUQyRXYKLV9fWk4zSlNDMTJSZWdpc3RlckZpbGVEMUV2Ci1fX1pOM0pTQzEyUmVnaXN0ZXJG
aWxlRDJFdgorX19aTjNKU0MxMkpTU3RhY2tEMUV2CitfX1pOM0pTQzEySlNTdGFja0QyRXYKIF9f
Wk5LM0pTQzlIYXNoVGFibGUxMWRlbGV0ZVRhYmxlRXYKIF9fWk4zSlNDNUxleGVyRDFFdgogX19a
TjNXVEYyMGRlbGV0ZUFsbFBhaXJTZWNvbmRzSVAyNE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YUtO
U183SGFzaE1hcElQMTNPcGFxdWVKU0NsYXNzUzJfTlNfN1B0ckhhc2hJUzVfRUVOU18xMEhhc2hU
cmFpdHNJUzVfRUVOUzhfSVMyX0VFRUVFRXZSVDBfCkBAIC0xODM1LDcgKzE4MzUsNyBAQCBfX1pO
M0pTQ0wxOWNvbnN0cnVjdEpTQ2FsbGJhY2tFUE5TXzlFeGVjCiBfX1pOM0pTQzI0Y3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxNmNyZWF0ZVJhbmdlRXJy
b3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UKIF9jdGlfb3BfbXVsCi1fX1pOM0pTQzEy
UmVnaXN0ZXJGaWxlMjFyZWxlYXNlRXhjZXNzQ2FwYWNpdHlFdgorX19aTjNKU0MxMkpTU3RhY2sy
MXJlbGVhc2VFeGNlc3NDYXBhY2l0eUV2CiBfX1pOM0pTQzE2SlNDYWxsYmFja09iamVjdElOU18x
NEpTR2xvYmFsT2JqZWN0RUVEMUV2CiBfSlNPYmplY3RIYXNQcm9wZXJ0eQogX0pTT2JqZWN0R2V0
UHJvdG90eXBlCkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBfX1pOM0pTQzRIZWFwMTZvYmplY3RUeXBl
Q291bnRzRXYKIF9fWk4zV1RGOUhhc2hUYWJsZUlQTjNKU0M2SlNDZWxsRVMzX05TXzE3SWRlbnRp
dHlFeHRyYWN0b3JJUzNfRUVOU183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5
X0U0ZmluZElTM19OU18yMklkZW50aXR5SGFzaFRyYW5zbGF0b3JJUzNfUzNfUzdfRUVFRU5TXzE3
SGFzaFRhYmxlSXRlcmF0b3JJUzNfUzNfUzVfUzdfUzlfUzlfRUVSS1RfCiBfX1pOM1dURjIwZmFz
dE1hbGxvY1N0YXRpc3RpY3NFdgogX19aTjNKU0MyMmdsb2JhbE1lbW9yeVN0YXRpc3RpY3NFdgot
X19aTjNKU0MxMlJlZ2lzdGVyRmlsZTE4Y29tbWl0dGVkQnl0ZUNvdW50RXYKK19fWk4zSlNDMTJK
U1N0YWNrMThjb21taXR0ZWRCeXRlQ291bnRFdgogX19aTjNKU0MxOUV4ZWN1dGFibGVBbGxvY2F0
b3IxOGNvbW1pdHRlZEJ5dGVDb3VudEV2CiBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlJlZlB0cklO
U18xMFN0cmluZ0ltcGxFRUVTdDRwYWlySVMzX04zSlNDMTRPZmZzZXRMb2NhdGlvbkVFTlNfMThQ
YWlyRmlyc3RFeHRyYWN0b3JJUzdfRUVOU18xMFN0cmluZ0hhc2hFTlNfMTRQYWlySGFzaFRyYWl0
c0lOU18xMEhhc2hUcmFpdHNJUzNfRUVOU0NfSVM2X0VFRUVTRF9FNGZpbmRJUFMyX05TXzI5UmVm
UHRySGFzaE1hcFJhd0tleVRyYW5zbGF0b3JJU0lfUzdfU0ZfU0FfRUVFRU5TXzE3SGFzaFRhYmxl
SXRlcmF0b3JJUzNfUzdfUzlfU0FfU0ZfU0RfRUVSS1RfCiBfX1pOM1dURjlIYXNoVGFibGVJTlNf
NlJlZlB0cklOU18xMFN0cmluZ0ltcGxFRUVTdDRwYWlySVMzX04zSlNDMTRPZmZzZXRMb2NhdGlv
bkVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJUzdfRUVOU18xMFN0cmluZ0hhc2hFTlNfMTRQYWly
SGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzNfRUVOU0NfSVM2X0VFRUVTRF9FNGZpbmRJUzNf
TlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMzX1M3X1NBX0VFRUVOU18xN0hhc2hUYWJsZUl0
ZXJhdG9ySVMzX1M3X1M5X1NBX1NGX1NEX0VFUktUXwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rhcmdl
dC5wcmkJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgU09VUkNFUyArPSBcCiAgICAg
aW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAgXAogICAgIGludGVycHJldGVyL0NhbGxGcmFtZS5j
cHAgXAogICAgIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBcCi0gICAgaW50ZXJwcmV0ZXIv
UmVnaXN0ZXJGaWxlLmNwcCBcCisgICAgaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAgXAogICAgIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIFwKICAgICBqaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAgXAogICAgIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvagkocmV2aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTIxNDIsMTUgKzIxNDIsMTUgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caW50ZXJwcmV0ZXJcUmVnaXN0ZXIuaCIK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGludGVycHJldGVyXEpTU3RhY2suY3BwIgogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxpbnRlcnByZXRl
clxSZWdpc3RlckZpbGUuY3BwIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caW50ZXJwcmV0ZXJc
SlNTdGFjay5oIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxpbnRlcnByZXRlclxSZWdpc3RlckZpbGUuaCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXGludGVycHJldGVyXFJlZ2lzdGVyLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzA3MTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc5LDcgKzI3OSw3IEBACiAJCTE0MjgwODIzMTA3RUMw
MkMwMDEzRTdCMiAvKiBEZWJ1Z2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1ODAyNTU1OTdEMDFGRjYwRjcgLyogRGVidWdnZXIuY3Bw
ICovOyB9OwogCQkxNDI4MDgyRDEwN0VDMDU3MDAxM0U3QjIgLyogQ2FsbERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBNjJERkUwRTI4MjYy
MzAwMDRGMzBEIC8qIENhbGxEYXRhLmNwcCAqLzsgfTsKIAkJMTQyODA4MkUxMDdFQzA1NzAwMTNF
N0IyIC8qIENvbnN0cnVjdERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNBNjJERkYwRTI4MjYzMTAwMDRGMzBEIC8qIENvbnN0cnVjdERhdGEu
Y3BwICovOyB9OwotCQkxNDI4MDgzQTEwN0VDMDc1MDAxM0U3QjIgLyogUmVnaXN0ZXJGaWxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlEODVC
MEVEMjE4RTkwMEI4OTYxOSAvKiBSZWdpc3RlckZpbGUuY3BwICovOyB9OworCQkxNDI4MDgzQTEw
N0VDMDc1MDAxM0U3QjIgLyogSlNTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogSlNTdGFjay5j
cHAgKi87IH07CiAJCTE0MjgwODQxMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHAuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4N0QwMjU1NTk3
RDAxRkY2MEY3IC8qIFJlZ0V4cC5jcHAgKi87IH07CiAJCTE0MjgwODQyMTA3RUMwOTMwMDEzRTdC
MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0QyMDJCRDBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwICovOyB9OwogCQkxNDI4MDg0MzEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2
OTJBODdCMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuY3BwICovOyB9OwpAQCAtNjY2
LDcgKzY2Niw3IEBACiAJCUJDMThDNDVBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdFeHAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODdFMDI1NTU5
N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ1QjBFMTZGNUNEMDBCMzQ0NjAgLyogUmVnRXhwT2JqZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg3
QzAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0NUQwRTE2RjVDRDAwQjM0NDYwIC8q
IFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDlCMjRGRjBEOEFGNkQxMDA5Q0I4QzcgLyogUmVnaXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzE4QzQ1RTBFMTZGNUNEMDBCMzQ0
NjAgLyogUmVnaXN0ZXJGaWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEQ3OTI2NDBEQUEwM0ZCMDAxQTlGMDUgLyogUmVnaXN0ZXJGaWxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0NUUw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDc5MjY0MERBQTAzRkIwMDFBOUYwNSAvKiBKU1N0YWNrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0
NjMwRTE2RjVDRDAwQjM0NDYwIC8qIFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUU4NjZFRDBERDU5QUZBMDBBMkIyQTEgLyog
U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQzE4QzQ2NDBFMTZGNUNEMDBCMzQ0NjAgLyogU291cmNlQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFODY2RUUwREQ1OUFG
QTAwQTJCMkExIC8qIFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ2NjBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMThDM0MxMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5oICovOyB9OwpA
QCAtMTA1NSw3ICsxMDU1LDcgQEAKIAkJMTQyNzExMzgwQTQ2MEJCQjAwODBFRUVBIC8qIEpTQmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQyOUQ3N0IwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJl
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVycHJldGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MjlEN0QzMEVEMjEyODIwMEI4OTYxOSAvKiBJ
bnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRl
cnByZXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0MjlEODVCMEVEMjE4
RTkwMEI4OTYxOSAvKiBSZWdpc3RlckZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVnaXN0ZXJGaWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTQyOUQ4NUIwRUQyMThFOTAwQjg5NjE5IC8qIEpTU3RhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0MjlEODc3MEVEMjFBQ0QwMEI4OTYxOSAvKiBFeGNlcHRpb25IZWxwZXJzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbkhlbHBlcnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDI5RDg4MzBFRDIxQzNEMDBCODk2
MTkgLyogU2FtcGxpbmdUb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNhbXBsaW5nVG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MjlE
ODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdUb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTQzLDcgKzExNDMsNyBAQAogCQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vh
a0dDTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEQyRjNEODEzOUY0QkUyMDA0OTEwMzEgLyog
TWFya2VkU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFy
a2VkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEQyRjNEOTEzOUY0
QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWFya2VkU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTRENzky
NjQwREFBMDNGQjAwMUE5RjA1IC8qIFJlZ2lzdGVyRmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZWdpc3RlckZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTRENzkyNjQwREFBMDNGQjAwMUE5RjA1IC8qIEpTU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IHRlc3RhcGkuanM7IHBhdGggPSBBUEkvdGVzdHMvdGVz
dGFwaS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTREQTgxOEUwRDk5RkQyMDAw
QjBBNEZCIC8qIEpTQWN0aXZhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0FjdGl2YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTREQTgxOEYw
RDk5RkQyMDAwQjBBNEZCIC8qIEpTQWN0aXZhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0FjdGl2YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTc2Nyw4ICsxNzY3LDggQEAKIAkJCQkxNDI5RDdEMzBFRDIxMjgyMDBCODk2MTkg
LyogSW50ZXJwcmV0ZXIuY3BwICovLAogCQkJCTE0MjlENzdCMEVEMjBENzMwMEI4OTYxOSAvKiBJ
bnRlcnByZXRlci5oICovLAogCQkJCTE0OUIyNEZGMEQ4QUY2RDEwMDlDQjhDNyAvKiBSZWdpc3Rl
ci5oICovLAotCQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBSZWdpc3RlckZpbGUuY3Bw
ICovLAotCQkJCTE0RDc5MjY0MERBQTAzRkIwMDFBOUYwNSAvKiBSZWdpc3RlckZpbGUuaCAqLywK
KwkJCQkxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogSlNTdGFjay5jcHAgKi8sCisJCQkJMTRE
NzkyNjQwREFBMDNGQjAwMUE5RjA1IC8qIEpTU3RhY2suaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
aW50ZXJwcmV0ZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjcxMiw2ICsyNzEy
LDcgQEAKIAkJCQlCQzg3Q0RCOTEwNzEyQUQ0MDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTk1MzRBQUZCMEU1QjdBOTYwMEI4QTQ1QiAvKiBKU1Byb2ZpbGVy
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ1RTBFMTZGNUNEMDBCMzQ0
NjAgLyogSlNTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjcwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkU4NTUzOTExMUI5OTY4MDAx
QUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjAwQjVBNzE1
MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjc5
Myw3ICsyNzk0LDYgQEAKIAkJCQlCQzE4QzUyQzBFMTZGQ0QyMDBCMzQ0NjAgLyogUmVnRXhwT2Jq
ZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAyQzQwRTE3MDZBNzAwMkM3RTgyIC8q
IFJlZ0V4cFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NUQwRTE2RjVDRDAw
QjM0NDYwIC8qIFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzE4QzQ1RTBFMTZGNUNE
MDBCMzQ0NjAgLyogUmVnaXN0ZXJGaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDcyQjBF
RDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0Iz
QzQxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywK
QEAgLTM0MTksNiArMzQxOSw3IEBACiAJCQkJQTdGOTkzNjAwRkQ3MzI1MTAwQTBCMkQwIC8qIEpT
T05PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTVGNkU2OTUwRTVCNUY5NzAwOTFFODYw
IC8qIEpTUHJvZmlsZXJQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjdGRjZCMERB
MzA5MjIwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4MkI3NEUwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3Ry
aW5nUmVmLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzQ2OCw3ICszNDY5LDYgQEAKIAkJCQkxNDI4
MDg0MjEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQyODA4NDMxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cE9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDI4MDg0NDEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBS
ZWdpc3RlckZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhF
QjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI5RDg4NTBF
RDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDcgQEAKICNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCiAKIC8vIFJlZ2lzdGVyIG51
bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcg
YWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZG
ICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVz
IGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4ODAwMDAw
MDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRl
ciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIEpTU3RhY2suaC4KIC8vICAgICAg
MHgwMDAwMDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFt
ZSBwb2ludGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlv
bidzIGNhbGxmcmFtZS4KIC8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBp
bmRpY2VzIGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBv
b2wgb24gdGhlIENvZGVCbG9jay4KIHN0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXggPSAweDQwMDAwMDAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDE3LDcg
KzMwMTcsNyBAQCBTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoaW50IHJlCiAgICAg
fQogICAgIGlmIChyZWdpc3Rlck51bWJlciA8IDApIHsKICAgICAgICAgaW50IGFyZ3VtZW50UG9z
aXRpb24gPSAtcmVnaXN0ZXJOdW1iZXI7Ci0gICAgICAgIGFyZ3VtZW50UG9zaXRpb24gLT0gUmVn
aXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgMTsKKyAgICAgICAgYXJndW1lbnRQb3Np
dGlvbiAtPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgMTsKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6Zm9ybWF0KCJhcmd1bWVudHNbJTNkXSIsIGFyZ3VtZW50UG9zaXRpb24gLSAxKS5p
bXBsKCk7CiAgICAgfQogICAgIHJldHVybiAiIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcg
KzE1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogI2VuZGlmCi0gICAgICAgIAorCiAgICAgICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUo
U2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5o
CShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMyArMzgsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAvLyBEZXNjcmliZXMgaG93IHRvIHJlY292ZXIgYSBnaXZlbiBieXRlY29kZSB2aXJ0
dWFsIHJlZ2lzdGVyIGF0IGEgZ2l2ZW4KIC8vIGNvZGUgcG9pbnQuCiBlbnVtIFZhbHVlUmVjb3Zl
cnlUZWNobmlxdWUgewotICAgIC8vIEl0J3MgYWxyZWFkeSBpbiB0aGUgcmVnaXN0ZXIgZmlsZSBh
dCB0aGUgcmlnaHQgbG9jYXRpb24uCi0gICAgQWxyZWFkeUluUmVnaXN0ZXJGaWxlLAotICAgIC8v
IEl0J3MgYWxyZWFkeSBpbiB0aGUgcmVnaXN0ZXIgZmlsZSBidXQgdW5ib3hlZC4KLSAgICBBbHJl
YWR5SW5SZWdpc3RlckZpbGVBc1VuYm94ZWRJbnQzMiwKLSAgICBBbHJlYWR5SW5SZWdpc3RlckZp
bGVBc1VuYm94ZWRDZWxsLAotICAgIEFscmVhZHlJblJlZ2lzdGVyRmlsZUFzVW5ib3hlZEJvb2xl
YW4sCi0gICAgQWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkRG91YmxlLAorICAgIC8vIEl0
J3MgYWxyZWFkeSBpbiB0aGUgc3RhY2sgYXQgdGhlIHJpZ2h0IGxvY2F0aW9uLgorICAgIEFscmVh
ZHlJbkpTU3RhY2ssCisgICAgLy8gSXQncyBhbHJlYWR5IGluIHRoZSBzdGFjayBidXQgdW5ib3hl
ZC4KKyAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzIsCisgICAgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZENlbGwsCisgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW4s
CisgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZSwKICAgICAvLyBJdCdzIGluIGEg
cmVnaXN0ZXIuCiAgICAgSW5HUFIsCiAgICAgVW5ib3hlZEludDMySW5HUFIsCkBAIC01NCwxMyAr
NTQsMTMgQEAgZW51bSBWYWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICNlbmRpZgogICAgIEluRlBS
LAogICAgIFVJbnQzMkluR1BSLAotICAgIC8vIEl0J3MgaW4gdGhlIHJlZ2lzdGVyIGZpbGUsIGJ1
dCBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbi4KLSAgICBEaXNwbGFjZWRJblJlZ2lzdGVyRmlsZSwK
LSAgICAvLyBJdCdzIGluIHRoZSByZWdpc3RlciBmaWxlLCBhdCBhIGRpZmZlcmVudCBsb2NhdGlv
biwgYW5kIGl0J3MgdW5ib3hlZC4KLSAgICBJbnQzMkRpc3BsYWNlZEluUmVnaXN0ZXJGaWxlLAot
ICAgIERvdWJsZURpc3BsYWNlZEluUmVnaXN0ZXJGaWxlLAotICAgIENlbGxEaXNwbGFjZWRJblJl
Z2lzdGVyRmlsZSwKLSAgICBCb29sZWFuRGlzcGxhY2VkSW5SZWdpc3RlckZpbGUsCisgICAgLy8g
SXQncyBpbiB0aGUgc3RhY2ssIGJ1dCBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbi4KKyAgICBEaXNw
bGFjZWRJbkpTU3RhY2ssCisgICAgLy8gSXQncyBpbiB0aGUgc3RhY2ssIGF0IGEgZGlmZmVyZW50
IGxvY2F0aW9uLCBhbmQgaXQncyB1bmJveGVkLgorICAgIEludDMyRGlzcGxhY2VkSW5KU1N0YWNr
LAorICAgIERvdWJsZURpc3BsYWNlZEluSlNTdGFjaywKKyAgICBDZWxsRGlzcGxhY2VkSW5KU1N0
YWNrLAorICAgIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgLy8gSXQncyBhbiBBcmd1
bWVudHMgb2JqZWN0LgogICAgIEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCwKICAgICAvLyBJ
dCdzIGEgY29uc3RhbnQuCkBAIC03OSwzOCArNzksMzggQEAgcHVibGljOgogICAgIGJvb2wgaXNT
ZXQoKSBjb25zdCB7IHJldHVybiBtX3RlY2huaXF1ZSAhPSBEb250S25vdzsgfQogICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKLSAgICBzdGF0aWMg
VmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5SZWdpc3RlckZpbGUoKQorICAgIHN0YXRpYyBWYWx1ZVJl
Y292ZXJ5IGFscmVhZHlJbkpTU3RhY2soKQogICAgIHsKICAgICAgICAgVmFsdWVSZWNvdmVyeSBy
ZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEFscmVhZHlJblJlZ2lzdGVyRmls
ZTsKKyAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFjazsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFZhbHVlUmVjb3Zlcnkg
YWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkSW50MzIoKQorICAgIHN0YXRpYyBWYWx1ZVJl
Y292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMigpCiAgICAgewogICAgICAgICBW
YWx1ZVJlY292ZXJ5IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFk
eUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkSW50MzI7CisgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1
ZSA9IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFZhbHVlUmVjb3ZlcnkgYWxyZWFkeUluUmVnaXN0
ZXJGaWxlQXNVbmJveGVkQ2VsbCgpCisgICAgc3RhdGljIFZhbHVlUmVjb3ZlcnkgYWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZENlbGwoKQogICAgIHsKICAgICAgICAgVmFsdWVSZWNvdmVyeSByZXN1
bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEFscmVhZHlJblJlZ2lzdGVyRmlsZUFz
VW5ib3hlZENlbGw7CisgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWRDZWxsOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAg
ICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5SZWdpc3RlckZpbGVBc1VuYm94ZWRCb29s
ZWFuKCkKKyAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVk
Qm9vbGVhbigpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKLSAgICAgICAg
cmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkQm9vbGVh
bjsKKyAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZEJvb2xlYW47CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHN0YXRp
YyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJblJlZ2lzdGVyRmlsZUFzVW5ib3hlZERvdWJsZSgpCisg
ICAgc3RhdGljIFZhbHVlUmVjb3ZlcnkgYWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZSgp
CiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1f
dGVjaG5pcXVlID0gQWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkRG91YmxlOworICAgICAg
ICByZXN1bHQubV90ZWNobmlxdWUgPSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKQEAgLTE1OCwyOSArMTU4LDI5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IFZhbHVlUmVjb3ZlcnkgZGlzcGxhY2VkSW5SZWdpc3RlckZpbGUoVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWcsIERhdGFGb3JtYXQgZGF0YUZvcm1hdCkKKyAgICBzdGF0aWMgVmFsdWVSZWNvdmVy
eSBkaXNwbGFjZWRJbkpTU3RhY2soVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcsIERhdGFGb3Jt
YXQgZGF0YUZvcm1hdCkKICAgICB7CiAgICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVzdWx0OwogICAg
ICAgICBzd2l0Y2ggKGRhdGFGb3JtYXQpIHsKICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50ZWdl
cjoKLSAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMyRGlzcGxhY2VkSW5SZWdp
c3RlckZpbGU7CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBJbnQzMkRpc3BsYWNl
ZEluSlNTdGFjazsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IERv
dWJsZURpc3BsYWNlZEluUmVnaXN0ZXJGaWxlOworICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKLSAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1
ZSA9IENlbGxEaXNwbGFjZWRJblJlZ2lzdGVyRmlsZTsKKyAgICAgICAgICAgIHJlc3VsdC5tX3Rl
Y2huaXF1ZSA9IENlbGxEaXNwbGFjZWRJbkpTU3RhY2s7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgotICAgICAgICAgICAg
cmVzdWx0Lm1fdGVjaG5pcXVlID0gQm9vbGVhbkRpc3BsYWNlZEluUmVnaXN0ZXJGaWxlOworICAg
ICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBBU1NFUlQoZGF0YUZvcm1hdCAhPSBEYXRhRm9ybWF0Tm9uZSAmJiBkYXRhRm9ybWF0
ICE9IERhdGFGb3JtYXRTdG9yYWdlKTsKLSAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9
IERpc3BsYWNlZEluUmVnaXN0ZXJGaWxlOworICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVl
ID0gRGlzcGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgcmVzdWx0Lm1fc291cmNlLnZpcnR1YWxSZWcgPSB2aXJ0dWFsUmVnOwpAQCAtMjIyLDE0
ICsyMjIsMTQgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNB
bHJlYWR5SW5SZWdpc3RlckZpbGUoKSBjb25zdAorICAgIGJvb2wgaXNBbHJlYWR5SW5KU1N0YWNr
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKLSAgICAgICAg
Y2FzZSBBbHJlYWR5SW5SZWdpc3RlckZpbGU6Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluUmVnaXN0
ZXJGaWxlQXNVbmJveGVkSW50MzI6Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluUmVnaXN0ZXJGaWxl
QXNVbmJveGVkQ2VsbDoKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5SZWdpc3RlckZpbGVBc1VuYm94
ZWRCb29sZWFuOgotICAgICAgICBjYXNlIEFscmVhZHlJblJlZ2lzdGVyRmlsZUFzVW5ib3hlZERv
dWJsZToKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgorICAgICAgICBjYXNlIEFscmVh
ZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkQ2VsbDoKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9v
bGVhbjoKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yNjQsNyArMjY0LDcgQEAgcHVibGljOgogICAgIAogICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dGVjaG5pcXVlID09IERpc3BsYWNlZEluUmVnaXN0ZXJGaWxlIHx8IG1fdGVjaG5pcXVlID09IElu
dDMyRGlzcGxhY2VkSW5SZWdpc3RlckZpbGUgfHwgbV90ZWNobmlxdWUgPT0gRG91YmxlRGlzcGxh
Y2VkSW5SZWdpc3RlckZpbGUgfHwgbV90ZWNobmlxdWUgPT0gQ2VsbERpc3BsYWNlZEluUmVnaXN0
ZXJGaWxlIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJblJlZ2lzdGVyRmlsZSk7
CisgICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90
ZWNobmlxdWUgPT0gSW50MzJEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gRG91
YmxlRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IENlbGxEaXNwbGFjZWRJbkpT
U3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjayk7CiAgICAg
ICAgIHJldHVybiBtX3NvdXJjZS52aXJ0dWFsUmVnOwogICAgIH0KICAgICAKQEAgLTI3NywxOSAr
Mjc3LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAogICAgIHsK
ICAgICAgICAgc3dpdGNoICh0ZWNobmlxdWUoKSkgewotICAgICAgICBjYXNlIEFscmVhZHlJblJl
Z2lzdGVyRmlsZToKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgogICAgICAgICAgICAg
ZnByaW50ZihvdXQsICItIik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBbHJl
YWR5SW5SZWdpc3RlckZpbGVBc1VuYm94ZWRJbnQzMjoKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkSW50MzI6CiAgICAgICAgICAgICBmcHJpbnRmKG91dCwgIihpbnQzMiki
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFscmVhZHlJblJlZ2lzdGVyRmls
ZUFzVW5ib3hlZENlbGw6CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENl
bGw6CiAgICAgICAgICAgICBmcHJpbnRmKG91dCwgIihjZWxsKSIpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkQm9vbGVhbjoK
KyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoKICAgICAgICAg
ICAgIGZwcmludGYob3V0LCAiKGJvb2wpIik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBBbHJlYWR5SW5SZWdpc3RlckZpbGVBc1VuYm94ZWREb3VibGU6CisgICAgICAgIGNhc2Ug
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKICAgICAgICAgICAgIGZwcmludGYob3V0
LCAiKGRvdWJsZSkiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluR1BSOgpA
QCAtMzEyLDE5ICszMTIsMTkgQEAgcHVibGljOgogICAgICAgICAgICAgZnByaW50ZihvdXQsICJw
YWlyKCUlciVkLCAlJXIlZCkiLCB0YWdHUFIoKSwgcGF5bG9hZEdQUigpKTsKICAgICAgICAgICAg
IGJyZWFrOwogI2VuZGlmCi0gICAgICAgIGNhc2UgRGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6Cisg
ICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgZnByaW50ZihvdXQs
ICIqJWQiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBJbnQzMkRpc3BsYWNlZEluUmVnaXN0ZXJGaWxlOgorICAgICAgICBjYXNlIEludDMyRGlz
cGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgZnByaW50ZihvdXQsICIqaW50MzIoJWQpIiwg
dmlydHVhbFJlZ2lzdGVyKCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRG91
YmxlRGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6CisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2Vk
SW5KU1N0YWNrOgogICAgICAgICAgICAgZnByaW50ZihvdXQsICIqZG91YmxlKCVkKSIsIHZpcnR1
YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENlbGxEaXNw
bGFjZWRJblJlZ2lzdGVyRmlsZToKKyAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNr
OgogICAgICAgICAgICAgZnByaW50ZihvdXQsICIqY2VsbCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIo
KSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5S
ZWdpc3RlckZpbGU6CisgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKICAg
ICAgICAgICAgIGZwcmludGYob3V0LCAiKmJvb2woJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVh
dGVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MjksNyArNjI5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OnJlc29sdmVDYQogICAgIGlmIChmdW5jdGlvbkJvZHlOb2RlLT5pZGVudCgpLmlzTnVsbCgpIHx8
ICFmdW5jdGlvbkJvZHlOb2RlLT5mdW5jdGlvbk5hbWVJc0luU2NvcGUoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KFJlZ2lzdGVyRmlsZTo6Q2Fs
bGVlKTsKKyAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CiAK
ICAgICAvLyBJZiBub24tc3RyaWN0IGV2YWwgaXMgaW4gcGxheSwgd2UgdXNlIGEgc2VwYXJhdGUg
b2JqZWN0IGluIHRoZSBzY29wZSBjaGFpbiBmb3IgdGhlIGNhbGxlZSdzIG5hbWUuCiAgICAgaWYg
KChtX2NvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKSB7CkBAIC0yMDY1LDggKzIwNjUsOCBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgICAgIGVtaXROb2RlKGNh
bGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudCsrKSwgbik7CiAKICAgICAvLyBS
ZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgotICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJ
RD4sIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZT4gY2FsbEZyYW1lOwotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOyArK2kp
CisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZT4gY2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyU2l6ZTsgKytpKQogICAgICAgICBjYWxsRnJhbWUuYXBwZW5kKG5ld1RlbXBvcmFy
eSgpKTsKIAogICAgIGlmIChtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MpIHsKQEAgLTIxODIsOCAr
MjE4Miw4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICB9
CiAKICAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgotICAgIFZlY3RvcjxSZWZQ
dHI8UmVnaXN0ZXJJRD4sIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZT4gY2FsbEZy
YW1lOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFk
ZXJTaXplOyArK2kpCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZT4gY2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsgKytpKQogICAgICAgICBjYWxsRnJhbWUuYXBwZW5k
KG5ld1RlbXBvcmFyeSgpKTsKIAogICAgIGVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxMzA3MTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyOSwxMSArNjI5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgaWYgKGluZGV4ID49IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FsbGVl
UmVnaXN0ZXJzW2luZGV4XTsKIAotICAgICAgICAgICAgaWYgKGluZGV4ID09IFJlZ2lzdGVyRmls
ZTo6Q2FsbGVlKQorICAgICAgICAgICAgaWYgKGluZGV4ID09IEpTU3RhY2s6OkNhbGxlZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbV9jYWxsZWVSZWdpc3RlcjsKIAogICAgICAgICAgICAgQVNT
RVJUKG1fcGFyYW1ldGVycy5zaXplKCkpOwotICAgICAgICAgICAgcmV0dXJuIG1fcGFyYW1ldGVy
c1tpbmRleCArIG1fcGFyYW1ldGVycy5zaXplKCkgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhl
YWRlclNpemVdOworICAgICAgICAgICAgcmV0dXJuIG1fcGFyYW1ldGVyc1tpbmRleCArIG1fcGFy
YW1ldGVycy5zaXplKCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplXTsKICAgICAgICAg
fQogCiAgICAgICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCShyZXZp
c2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc2V0KCk7CiAgICAgCiAgICAgLy8gQWJzdHJhY3RseSBleGVjdXRlcyB0aGUgZ2l2ZW4gbm9k
ZS4gVGhlIG5ldyBhYnN0cmFjdCBzdGF0ZSBpcyBzdG9yZWQgaW50byBhbgotICAgIC8vIGFic3Ry
YWN0IHJlZ2lzdGVyIGZpbGUgc3RvcmVkIGluICp0aGlzLiBMb2FkcyBvZiBsb2NhbCB2YXJpYWJs
ZXMgKHRoYXQgc3BhbgorICAgIC8vIGFic3RyYWN0IHN0YWNrIHN0b3JlZCBpbiAqdGhpcy4gTG9h
ZHMgb2YgbG9jYWwgdmFyaWFibGVzICh0aGF0IHNwYW4KICAgICAvLyBiYXNpYyBibG9ja3MpIGlu
dGVycm9nYXRlIHRoZSBiYXNpYyBibG9jaydzIG5vdGlvbiBvZiB0aGUgc3RhdGUgYXQgdGhlIGhl
YWQuCiAgICAgLy8gU3RvcmVzIHRvIGxvY2FsIHZhcmlhYmxlcyBhcmUgaGFuZGxlZCBpbiBlbmRC
YXNpY0Jsb2NrKCkuIFRoaXMgcmV0dXJucyB0cnVlCiAgICAgLy8gaWYgZXhlY3V0aW9uIHNob3Vs
ZCBjb250aW51ZSBwYXN0IHRoaXMgbm9kZS4gTm90YWJseSwgaXQgd2lsbCByZXR1cm4gdHJ1ZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5o
CShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2Vt
Ymx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MywxNiArOTMsMTYgQEAgcHVibGljOgog
ICAgIH0KICNlbmRpZgogCi0gICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihS
ZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8pCisgICAg
dm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvKQogICAgIHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0
byk7CiAgICAgfQotICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKEdQUlJlZyBmcm9t
LCBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQorICAgIHZvaWQgZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyKEdQUlJlZyBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSBlbnRyeSkKICAgICB7CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAg
IH0KIAotICAgIHZvaWQgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZh
bHVlLCBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQorICAgIHZvaWQg
ZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKICAgICB7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIodmFsdWUpLCBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRy
eSAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTMwNzE1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGdl
dEpTQ29uc3RhbnQoY29uc3RhbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG9wZXJhbmQg
PT0gUmVnaXN0ZXJGaWxlOjpDYWxsZWUpCisgICAgICAgIGlmIChvcGVyYW5kID09IEpTU3RhY2s6
OkNhbGxlZSkKICAgICAgICAgICAgIHJldHVybiBnZXRDYWxsZWUoKTsKIAogICAgICAgICAvLyBJ
cyB0aGlzIGFuIGFyZ3VtZW50PwpAQCAtMzY5LDExICszNjksMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gc3RhY2stPm1faW5saW5l
Q2FsbEZyYW1lOwogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAob3BlcmFuZCA+PSBzdGF0aWNfY2FzdDxpbnQ+
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhl
YWRlclNpemUpKQorICAgICAgICAgICAgaWYgKG9wZXJhbmQgPj0gc3RhdGljX2Nhc3Q8aW50Pihp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IC0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAob3BlcmFuZCA9
PSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRP
ZmZzZXQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChvcGVy
YW5kIDwgc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IC0gUmVn
aXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpKSkKKyAgICAgICAgICAgIGlmIChvcGVyYW5kIDwgc3RhdGljX2Nhc3Q8aW50Pihp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IC0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZSAtIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBvcGVyYW5kVG9Bcmd1bWVudChv
cGVyYW5kIC0gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCk7CiAgICAgICAgICAgICByZXR1
cm4gc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1lbnRdOwpAQCAtNzYxLDggKzc2MSw4
IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgICAgICBpbnQgYXJnQ291bnQgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgICAgICBpZiAoUmVnaXN0ZXJGaWxlOjpD
YWxsRnJhbWVIZWFkZXJTaXplICsgKHVuc2lnbmVkKWFyZ0NvdW50ID4gbV9wYXJhbWV0ZXJTbG90
cykKLSAgICAgICAgICAgIG1fcGFyYW1ldGVyU2xvdHMgPSBSZWdpc3RlckZpbGU6OkNhbGxGcmFt
ZUhlYWRlclNpemUgKyBhcmdDb3VudDsKKyAgICAgICAgaWYgKEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemUgKyAodW5zaWduZWQpYXJnQ291bnQgPiBtX3BhcmFtZXRlclNsb3RzKQorICAgICAg
ICAgICAgbV9wYXJhbWV0ZXJTbG90cyA9IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBh
cmdDb3VudDsKIAogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOwogICAgICAgICBpbnQgZHVtbXlUaGlzQXJndW1lbnQgPSBvcCA9PSBD
YWxsID8gMCA6IDE7CkBAIC0xMTQyLDcgKzExNDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChvcGVy
YW5kID09IFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKQorICAgICAgICAgICAgaWYgKG9wZXJhbmQgPT0g
SlNTdGFjazo6Q2FsbGVlKQogICAgICAgICAgICAgICAgIHJldHVybiBtX2NhbGxlZVZSOwogCiAg
ICAgICAgICAgICByZXR1cm4gb3BlcmFuZCArIG1faW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dDsKQEAgLTEzNjQsMTQgKzEzNjQsMTQgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoYm9vbAogICAgIAogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCiAg
ICAgCi0gICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVt
YXBPcGVyYW5kKHJlZ2lzdGVyT2Zmc2V0KSAtIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZTsKKyAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5y
ZW1hcE9wZXJhbmQocmVnaXN0ZXJPZmZzZXQpIC0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZTsKICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYXJlYSB1c2VkIGJ5IHRoZSBjYWxs
IGZyYW1lIGlzIHJlc2VydmVkLgotICAgIGZvciAoaW50IGFyZyA9IGlubGluZUNhbGxGcmFtZVN0
YXJ0ICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgY29kZUJsb2NrLT5tX251
bVZhcnM7IGFyZy0tID4gaW5saW5lQ2FsbEZyYW1lU3RhcnQ7KQorICAgIGZvciAoaW50IGFyZyA9
IGlubGluZUNhbGxGcmFtZVN0YXJ0ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNv
ZGVCbG9jay0+bV9udW1WYXJzOyBhcmctLSA+IGlubGluZUNhbGxGcmFtZVN0YXJ0OykKICAgICAg
ICAgbV9wcmVzZXJ2ZWRWYXJzLnNldChhcmcpOwogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IHdlIGhhdmUgZW5vdWdoIGxvY2Fscy4KLSAgICB1bnNpZ25lZCBuZXdOdW1Mb2NhbHMgPSBpbmxp
bmVDYWxsRnJhbWVTdGFydCArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgdW5zaWduZWQgbmV3TnVtTG9jYWxz
ID0gaW5saW5lQ2FsbEZyYW1lU3RhcnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsg
Y29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsKICAgICBpZiAobmV3TnVtTG9jYWxzID4g
bV9udW1Mb2NhbHMpIHsKICAgICAgICAgbV9udW1Mb2NhbHMgPSBuZXdOdW1Mb2NhbHM7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsraSkK
QEAgLTE4NzEsNyArMTg3MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6IHsKLSAgICAg
ICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKENy
ZWF0ZVRoaXMsIGdldChSZWdpc3RlckZpbGU6OkNhbGxlZSkpKTsKKyAgICAgICAgICAgIHNldChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKENyZWF0ZVRoaXMsIGdl
dChKU1N0YWNrOjpDYWxsZWUpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVf
dGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjc1Niw4ICsyNzU2LDggQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgYWRkVG9H
cmFwaChDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICB1bnNpZ25lZCBhcmdDb3VudCA9IG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpOwotICAgICAgICAgICAgaWYgKFJlZ2lzdGVyRmlsZTo6Q2FsbEZy
YW1lSGVhZGVyU2l6ZSArIGFyZ0NvdW50ID4gbV9wYXJhbWV0ZXJTbG90cykKLSAgICAgICAgICAg
ICAgICBtX3BhcmFtZXRlclNsb3RzID0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXpl
ICsgYXJnQ291bnQ7CisgICAgICAgICAgICBpZiAoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZSArIGFyZ0NvdW50ID4gbV9wYXJhbWV0ZXJTbG90cykKKyAgICAgICAgICAgICAgICBtX3BhcmFt
ZXRlclNsb3RzID0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGFyZ0NvdW50OwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCkpOyAvLyBjYWxsZWUKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7IC8vIHRoaXMKQEAgLTMyMTAs
NyArMzIxMCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAg
ICAgICAgCiAgICAgICAgIElubGluZUNhbGxGcmFtZSBpbmxpbmVDYWxsRnJhbWU7CiAgICAgICAg
IGlubGluZUNhbGxGcmFtZS5leGVjdXRhYmxlLnNldCgqYnl0ZUNvZGVQYXJzZXItPm1fZ2xvYmFs
RGF0YSwgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSk7Ci0gICAgICAgIGlubGluZUNhbGxGcmFtZS5zdGFj
a09mZnNldCA9IGlubGluZUNhbGxGcmFtZVN0YXJ0ICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVI
ZWFkZXJTaXplOworICAgICAgICBpbmxpbmVDYWxsRnJhbWUuc3RhY2tPZmZzZXQgPSBpbmxpbmVD
YWxsRnJhbWVTdGFydCArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgICAgIGlu
bGluZUNhbGxGcmFtZS5jYWxsZWUuc2V0KCpieXRlQ29kZVBhcnNlci0+bV9nbG9iYWxEYXRhLCBi
eXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOwog
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUuY2FsbGVyID0gYnl0ZUNvZGVQYXJzZXItPmN1cnJlbnRD
b2RlT3JpZ2luKCk7CiAgICAgICAgIGlubGluZUNhbGxGcmFtZS5hcmd1bWVudHMucmVzaXplKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsgLy8gU2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRz
IGluY2x1ZGluZyB0aGlzLCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVz
LCB5ZXQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9u
SW5mby5oCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBHZXQgdGhlIGZvcm1hdCBvZiB0aGUgdmFsdWUgaW4gbWFjaGluZSByZWdp
c3RlcnMgKG9yICdub25lJykuCiAgICAgRGF0YUZvcm1hdCByZWdpc3RlckZvcm1hdCgpIHsgcmV0
dXJuIG1fcmVnaXN0ZXJGb3JtYXQ7IH0KLSAgICAvLyBHZXQgdGhlIGZvcm1hdCBvZiB0aGUgdmFs
dWUgYXMgaXQgaXMgc3BpbGxlZCBpbiB0aGUgUmVnaXN0ZXJGaWxlIChvciAnbm9uZScpLgorICAg
IC8vIEdldCB0aGUgZm9ybWF0IG9mIHRoZSB2YWx1ZSBhcyBpdCBpcyBzcGlsbGVkIGluIHRoZSBK
U1N0YWNrIChvciAnbm9uZScpLgogICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQoKSB7IHJldHVy
biBtX3NwaWxsRm9ybWF0OyB9CiAgICAgCiAgICAgYm9vbCBpc0pTRm9ybWF0KERhdGFGb3JtYXQg
ZXhwZWN0ZWRGb3JtYXQpCkBAIC0yNTUsMTEgKzI1NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIC8v
IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIHZhbHVlcyB0aGF0IGFyZSBjdXJyZW50bHkg
aW4gYSByZWdpc3Rlci4KICAgICAgICAgQVNTRVJUKG1fcmVnaXN0ZXJGb3JtYXQgIT0gRGF0YUZv
cm1hdE5vbmUpOwogICAgICAgICAvLyBDb25zdGFudHMgZG8gbm90IG5lZWQgc3BpbGxpbmcsIG5v
ciBkbyB2YWx1ZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbgotICAgICAgICAvLyBzcGlsbGVkIHRv
IHRoZSBSZWdpc3RlckZpbGUuCisgICAgICAgIC8vIHNwaWxsZWQgdG8gdGhlIEpTU3RhY2suCiAg
ICAgICAgIHJldHVybiAhbV9jYW5GaWxsOwogICAgIH0KIAotICAgIC8vIENhbGxlZCB3aGVuIGEg
VmlydHVhbFJlZ2lzdGVyIGlzIGJlaW5nIHNwaWxsZWQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmb3Ig
dGhlIGZpcnN0IHRpbWUuCisgICAgLy8gQ2FsbGVkIHdoZW4gYSBWaXJ0dWFsUmVnaXN0ZXIgaXMg
YmVpbmcgc3BpbGxlZCB0byB0aGUgSlNTdGFjayBmb3IgdGhlIGZpcnN0IHRpbWUuCiAgICAgdm9p
ZCBzcGlsbChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIsIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQpCiAgICAgewogICAgICAgICAvLyBX
ZSBzaG91bGRuJ3QgYmUgc3BpbGwgdmFsdWVzIHRoYXQgZG9uJ3QgbmVlZCBzcGlsbGluZy4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDEzMDcxNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJERkdE
b21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkpTU3RhY2suaCIK
ICNpbmNsdWRlICJNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgiCi0jaW5jbHVkZSAiUmVn
aXN0ZXJGaWxlLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OCwxNCArNjgsMTQgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KCkKIHsK
ICAgICAvLyBUaGlzIGNvZGUgY3VycmVudGx5IG1hdGNoZXMgdGhlIG9sZCBKSVQuIEluIHRoZSBm
dW5jdGlvbiBoZWFkZXIgd2UgbmVlZCB0bwogICAgIC8vIHBvcCB0aGUgcmV0dXJuIGFkZHJlc3Mg
KHNpbmNlIHdlIGRvIG5vdCBhbGxvdyBhbnkgcmVjdXJzaW9uIG9uIHRoZSBtYWNoaW5lCi0gICAg
Ly8gc3RhY2spLCBhbmQgcGVyZm9ybSBhIGZhc3QgcmVnaXN0ZXIgZmlsZSBjaGVjay4KKyAgICAv
LyBzdGFjayksIGFuZCBwZXJmb3JtIGEgZmFzdCBzdGFjayBjaGVjay4KICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjkyCi0gICAgLy8gV2Un
bGwgbmVlZCB0byBjb252ZXJ0IHRoZSByZW1haW5pbmcgY3RpXyBzdHlsZSBjYWxscyAoc3BlY2lm
aWNhbGx5IHRoZSByZWdpc3RlciBmaWxlCisgICAgLy8gV2UnbGwgbmVlZCB0byBjb252ZXJ0IHRo
ZSByZW1haW5pbmcgY3RpXyBzdHlsZSBjYWxscyAoc3BlY2lmaWNhbGx5IHRoZSBzdGFjawogICAg
IC8vIGNoZWNrKSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBvbiBzdGFjayBsYXlvdXQuIChXZSdk
IG5lZWQgdG8gYWNjb3VudCBmb3IgdGhpcyBpbgogICAgIC8vIGJvdGggbm9ybWFsIHJldHVybiBj
b2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIpLgogICAgIHByZXNl
cnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpyZWdUMik7Ci0gICAgZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKEdQUkluZm86OnJlZ1QyLCBSZWdpc3RlckZpbGU6OlJldHVyblBDKTsK
LSAgICBlbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIFJlZ2lz
dGVyRmlsZTo6Q29kZUJsb2NrKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoR1BSSW5m
bzo6cmVnVDIsIEpTU3RhY2s6OlJldHVyblBDKTsKKyAgICBlbWl0UHV0SW1tZWRpYXRlVG9DYWxs
RnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIEpTU3RhY2s6OkNvZGVCbG9jayk7CiB9CiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVCb2R5KFNwZWN1bGF0aXZlSklUJiBzcGVjdWxhdGl2ZSkKQEAg
LTI1NiwxMiArMjU2LDEyIEBAIGJvb2wgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbihKSVRD
b2QKICAgICAvLyBJZiB3ZSBuZWVkZWQgdG8gcGVyZm9ybSBhbiBhcml0eSBjaGVjayB3ZSB3aWxs
IGFscmVhZHkgaGF2ZSBtb3ZlZCB0aGUgcmV0dXJuIGFkZHJlc3MsCiAgICAgLy8gc28gZW50ZXIg
YWZ0ZXIgdGhpcy4KICAgICBMYWJlbCBmcm9tQXJpdHlDaGVjayh0aGlzKTsKLSAgICAvLyBQbGFu
dCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIFJlZ2lz
dGVyRmlsZS4KKyAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBh
dmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI5MQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobV9j
b2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgSnVtcCByZWdpc3Rl
ckZpbGVDaGVjayA9IGJyYW5jaFB0cihCZWxvdywgQWJzb2x1dGVBZGRyZXNzKG1fZ2xvYmFsRGF0
YS0+aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmFkZHJlc3NPZkVuZCgpKSwgR1BSSW5mbzo6
cmVnVDEpOwotICAgIC8vIFJldHVybiBoZXJlIGFmdGVyIHJlZ2lzdGVyIGZpbGUgY2hlY2suCi0g
ICAgTGFiZWwgZnJvbVJlZ2lzdGVyRmlsZUNoZWNrID0gbGFiZWwoKTsKKyAgICBKdW1wIHN0YWNr
Q2hlY2sgPSBicmFuY2hQdHIoQmVsb3csIEFic29sdXRlQWRkcmVzcyhtX2dsb2JhbERhdGEtPmlu
dGVycHJldGVyLT5zdGFjaygpLmFkZHJlc3NPZkVuZCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAg
IC8vIFJldHVybiBoZXJlIGFmdGVyIHN0YWNrIGNoZWNrLgorICAgIExhYmVsIGZyb21TdGFja0No
ZWNrID0gbGFiZWwoKTsKIAogCiAgICAgLy8gPT09IEZ1bmN0aW9uIGJvZHkgY29kZSBnZW5lcmF0
aW9uID09PQpAQCAtMjcxLDIxICsyNzEsMjEgQEAgYm9vbCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1
bmN0aW9uKEpJVENvZAogCiAgICAgLy8gPT09IEZ1bmN0aW9uIGZvb3RlciBjb2RlIGdlbmVyYXRp
b24gPT09CiAgICAgLy8KLSAgICAvLyBHZW5lcmF0ZSBjb2RlIHRvIHBlcmZvcm0gdGhlIHNsb3cg
cmVnaXN0ZXIgZmlsZSBjaGVjayAoaWYgdGhlIGZhc3Qgb25lIGluCisgICAgLy8gR2VuZXJhdGUg
Y29kZSB0byBwZXJmb3JtIHRoZSBzbG93IHN0YWNrIGNoZWNrIChpZiB0aGUgZmFzdCBvbmUgaW4K
ICAgICAvLyB0aGUgZnVuY3Rpb24gaGVhZGVyIGZhaWxzKSwgYW5kIGdlbmVyYXRlIHRoZSBlbnRy
eSBwb2ludCB3aXRoIGFyaXR5IGNoZWNrLgogICAgIC8vCi0gICAgLy8gR2VuZXJhdGUgdGhlIHJl
Z2lzdGVyIGZpbGUgY2hlY2s7IGlmIHRoZSBmYXN0IGNoZWNrIGluIHRoZSBmdW5jdGlvbiBoZWFk
IGZhaWxzLAorICAgIC8vIEdlbmVyYXRlIHRoZSBzdGFjayBjaGVjazsgaWYgdGhlIGZhc3QgY2hl
Y2sgaW4gdGhlIGZ1bmN0aW9uIGhlYWQgZmFpbHMsCiAgICAgLy8gd2UgbmVlZCB0byBjYWxsIG91
dCB0byBhIGhlbHBlciBmdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyIG1vcmUgc3BhY2UgaXMgYXZh
aWxhYmxlLgogICAgIC8vIEZJWE1FOiBjaGFuZ2UgdGhpcyBmcm9tIGEgY3RpIGNhbGwgdG8gYSBE
Rkcgc3R5bGUgb3BlcmF0aW9uIChub3JtYWwgQyBjYWxsaW5nIGNvbnZlbnRpb25zKS4KLSAgICBy
ZWdpc3RlckZpbGVDaGVjay5saW5rKHRoaXMpOworICAgIHN0YWNrQ2hlY2subGluayh0aGlzKTsK
ICAgICBtb3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwog
ICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihzdHJ1
Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSAvIHNpemVvZih2b2lkKikpOwogCiAgICAgQ2Fs
bEJlZ2luVG9rZW4gdG9rZW47CiAgICAgYmVnaW5DYWxsKENvZGVPcmlnaW4oMCksIHRva2VuKTsK
LSAgICBDYWxsIGNhbGxSZWdpc3RlckZpbGVDaGVjayA9IGNhbGwoKTsKLSAgICBub3RpZnlDYWxs
KGNhbGxSZWdpc3RlckZpbGVDaGVjaywgQ29kZU9yaWdpbigwKSwgdG9rZW4pOwotICAgIGp1bXAo
ZnJvbVJlZ2lzdGVyRmlsZUNoZWNrKTsKKyAgICBDYWxsIGNhbGxTdGFja0NoZWNrID0gY2FsbCgp
OworICAgIG5vdGlmeUNhbGwoY2FsbFN0YWNrQ2hlY2ssIENvZGVPcmlnaW4oMCksIHRva2VuKTsK
KyAgICBqdW1wKGZyb21TdGFja0NoZWNrKTsKICAgICAKICAgICAvLyBUaGUgZmFzdCBlbnRyeSBw
b2ludCBpbnRvIGEgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIGNvcnJlY3QgbnVtYmVyIG9m
IGFyZ3VtZW50cwogICAgIC8vIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIGNhbGwgKHdlIG9ubHkg
dXNlIHRoZSBmYXN0IGVudHJ5IHBvaW50IHdoZXJlIHdlIGNhbiBzdGF0aWNhbGx5CkBAIC0yOTUs
NyArMjk1LDcgQEAgYm9vbCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKEpJVENvZAogICAg
IExhYmVsIGFyaXR5Q2hlY2sgPSBsYWJlbCgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCi0gICAg
bG9hZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKVJlZ2lz
dGVyRmlsZTo6QXJndW1lbnRDb3VudCksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBsb2FkMzIoQXNz
ZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpSlNTdGFjazo6QXJndW1l
bnRDb3VudCksIEdQUkluZm86OnJlZ1QxKTsKICAgICBicmFuY2gzMihBYm92ZU9yRXF1YWwsIEdQ
UkluZm86OnJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkp
LmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CiAgICAgbW92ZShzdGFja1BvaW50ZXJSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBwb2tlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBPQkpFQ1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFt
ZSkgLyBzaXplb2Yodm9pZCopKTsKQEAgLTMyMiw4ICszMjIsOCBAQCBib29sIEpJVENvbXBpbGVy
Ojpjb21waWxlRnVuY3Rpb24oSklUQ29kCiAgICAgbGluayhsaW5rQnVmZmVyKTsKICAgICBzcGVj
dWxhdGl2ZS5saW5rT1NSRW50cmllcyhsaW5rQnVmZmVyKTsKICAgICAKLSAgICAvLyBGSVhNRTog
c3dpdGNoIHRoZSByZWdpc3RlciBmaWxlIGNoZWNrICYgYXJpdHkgY2hlY2sgb3ZlciB0byBERkdP
cGVydGFpb24gc3R5bGUgY2FsbHMsIG5vdCBKSVQgc3R1YnMuCi0gICAgbGlua0J1ZmZlci5saW5r
KGNhbGxSZWdpc3RlckZpbGVDaGVjaywgY3RpX3JlZ2lzdGVyX2ZpbGVfY2hlY2spOworICAgIC8v
IEZJWE1FOiBzd2l0Y2ggdGhlIHN0YWNrIGNoZWNrICYgYXJpdHkgY2hlY2sgb3ZlciB0byBERkdP
cGVydGFpb24gc3R5bGUgY2FsbHMsIG5vdCBKSVQgc3R1YnMuCisgICAgbGlua0J1ZmZlci5saW5r
KGNhbGxTdGFja0NoZWNrLCBjdGlfc3RhY2tfY2hlY2spOwogICAgIGxpbmtCdWZmZXIubGluayhj
YWxsQXJpdHlDaGVjaywgbV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IGN0aV9vcF9jb25z
dHJ1Y3RfYXJpdHlDaGVjayA6IGN0aV9vcF9jYWxsX2FyaXR5Q2hlY2spOwogICAgIAogICAgIGlm
IChtX2Rpc2Fzc2VtYmxlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGJlZ2luQ2FsbChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxCZWdp
blRva2VuJiB0b2tlbikKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gbV9leGNlcHRp
b25DaGVja3Muc2l6ZSgpOwotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpbmRleCksIHRh
Z0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRD
b3VudCkpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaW5kZXgpLCB0YWdGb3Ioc3Rh
dGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOwogICAg
ICAgICB0b2tlbi5zZXQoY29kZU9yaWdpbiwgaW5kZXgpOwogICAgIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDEzMDcxNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhl
YywgQwogICAgIC8vICAgIGl0IHNlZW1zIHNpbGx5OiB5b3UnZCBiZSBkaXZlcnRpbmcgdGhlIHBy
b2dyYW0gdG8gZXJyb3IgaGFuZGxpbmcgd2hlbiBpdAogICAgIC8vICAgIHdvdWxkIGhhdmUgb3Ro
ZXJ3aXNlIGp1c3Qga2VwdCBydW5uaW5nIGFsYmVpdCBsZXNzIHF1aWNrbHkuCiAgICAgCi0gICAg
aWYgKCFnbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+
cmVnaXN0ZXJzKClbY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSB7CisgICAgaWYg
KCFnbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+c3RhY2soKS5ncm93KCZleGVjLT5yZWdpc3RlcnMo
KVtjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpIHsKICNpZiBFTkFCTEUoSklUX1ZF
UkJPU0VfT1NSKQogICAgICAgICBkYXRhTG9nKCIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHN0YWNr
IGdyb3d0aCBmYWlsZWQuXG4iKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDEz
MDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsOSArMTI1LDkgQEAgdm9pZCBPU1JFeGl0Q29t
cGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIC8vIEludDMycywgaGF2ZSBubyBGUFJzLCBh
bmQgaGF2ZSBubyBjb25zdGFudHMuIElmIHRoZXJlIGFyZSBjb25zdGFudHMsIHdlCiAgICAgLy8g
ZXhwZWN0IG1vc3Qgb2YgdGhlbSB0byBiZSBqc1VuZGVmaW5lZCgpOyBpZiB0aGF0J3MgdHJ1ZSB0
aGVuIHdlIGhhbmRsZSB0aGF0CiAgICAgLy8gc3BlY2lhbGx5IHRvIG1pbmltaXplIGNvZGUgc2l6
ZSBhbmQgZXhlY3V0aW9uIHRpbWUuCi0gICAgYm9vbCBoYXZlVW5ib3hlZEludDMySW5SZWdpc3Rl
ckZpbGUgPSBmYWxzZTsKLSAgICBib29sIGhhdmVVbmJveGVkQ2VsbEluUmVnaXN0ZXJGaWxlID0g
ZmFsc2U7Ci0gICAgYm9vbCBoYXZlVW5ib3hlZEJvb2xlYW5JblJlZ2lzdGVyRmlsZSA9IGZhbHNl
OworICAgIGJvb2wgaGF2ZVVuYm94ZWRJbnQzMkluSlNTdGFjayA9IGZhbHNlOworICAgIGJvb2wg
aGF2ZVVuYm94ZWRDZWxsSW5KU1N0YWNrID0gZmFsc2U7CisgICAgYm9vbCBoYXZlVW5ib3hlZEJv
b2xlYW5JbkpTU3RhY2sgPSBmYWxzZTsKICAgICBib29sIGhhdmVVSW50MzJzID0gZmFsc2U7CiAg
ICAgYm9vbCBoYXZlRlBScyA9IGZhbHNlOwogICAgIGJvb2wgaGF2ZUNvbnN0YW50cyA9IGZhbHNl
OwpAQCAtMTM3LDEwICsxMzcsMTAgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0
KGNvbnN0IAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXpl
KCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBv
cGVyYW5kc1tpbmRleF07CiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsK
LSAgICAgICAgY2FzZSBEaXNwbGFjZWRJblJlZ2lzdGVyRmlsZToKLSAgICAgICAgY2FzZSBJbnQz
MkRpc3BsYWNlZEluUmVnaXN0ZXJGaWxlOgotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJblJl
Z2lzdGVyRmlsZToKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6
CisgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIEludDMyRGlz
cGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Cisg
ICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG51bWJl
ck9mRGlzcGxhY2VkVmlydHVhbFJlZ2lzdGVycysrOwogICAgICAgICAgICAgQVNTRVJUKChpbnQp
cmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkgPj0gMCk7CiAgICAgICAgICAgICAKQEAgLTE3NCwx
NiArMTc0LDE2IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAg
ICAgICAgICAgIGhhdmVVSW50MzJzID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgIGNhc2UgQWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkSW50MzI6Ci0gICAgICAgICAg
ICBoYXZlVW5ib3hlZEludDMySW5SZWdpc3RlckZpbGUgPSB0cnVlOworICAgICAgICBjYXNlIEFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAgICAgICAgIGhhdmVVbmJveGVkSW50
MzJJbkpTU3RhY2sgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBBbHJlYWR5SW5SZWdpc3RlckZpbGVBc1VuYm94ZWRDZWxsOgotICAgICAgICAg
ICAgaGF2ZVVuYm94ZWRDZWxsSW5SZWdpc3RlckZpbGUgPSB0cnVlOworICAgICAgICBjYXNlIEFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOgorICAgICAgICAgICAgaGF2ZVVuYm94ZWRDZWxs
SW5KU1N0YWNrID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAg
ICAgIGNhc2UgQWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkQm9vbGVhbjoKLSAgICAgICAg
ICAgIGhhdmVVbmJveGVkQm9vbGVhbkluUmVnaXN0ZXJGaWxlID0gdHJ1ZTsKKyAgICAgICAgY2Fz
ZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoKKyAgICAgICAgICAgIGhhdmVVbmJv
eGVkQm9vbGVhbkluSlNTdGFjayA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEluRlBSOgpAQCAtMjE0LDE5ICsyMTQsMTkgQEAgdm9pZCBPU1JF
eGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIAogICAgIC8vIDUpIFBlcmZvcm0g
YWxsIHJlYm94aW5nIG9mIGludGVnZXJzIGFuZCBjZWxscywgZXhjZXB0IGZvciB0aG9zZSBpbiBy
ZWdpc3RlcnMuCiAKLSAgICBpZiAoaGF2ZVVuYm94ZWRJbnQzMkluUmVnaXN0ZXJGaWxlIHx8IGhh
dmVVbmJveGVkQ2VsbEluUmVnaXN0ZXJGaWxlIHx8IGhhdmVVbmJveGVkQm9vbGVhbkluUmVnaXN0
ZXJGaWxlKSB7CisgICAgaWYgKGhhdmVVbmJveGVkSW50MzJJbkpTU3RhY2sgfHwgaGF2ZVVuYm94
ZWRDZWxsSW5KU1N0YWNrIHx8IGhhdmVVbmJveGVkQm9vbGVhbkluSlNTdGFjaykgewogICAgICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4
KSB7CiAgICAgICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRz
W2luZGV4XTsKICAgICAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgQWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkSW50MzI6CisgICAg
ICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAg
ICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkludDMyVGFnKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJl
Z2lzdGVyPihvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpKSkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgICAgICBjYXNlIEFscmVhZHlJblJlZ2lzdGVyRmlsZUFzVW5i
b3hlZENlbGw6CisgICAgICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxs
OgogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKHN0YXRpY19j
YXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGluZGV4KSkpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBBbHJlYWR5SW5SZWdp
c3RlckZpbGVBc1VuYm94ZWRCb29sZWFuOgorICAgICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0
YWNrQXNVbmJveGVkQm9vbGVhbjoKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLCBBc3NlbWJseUhl
bHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmRzLm9wZXJh
bmRGb3JJbmRleChpbmRleCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTMyNyw3
ICszMjcsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAg
ICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gNykgRHVtcCBhbGwgZG91YmxlcyBpbnRvIHRoZSBy
ZWdpc3RlciBmaWxlLCBvciB0byB0aGUgc2NyYXRjaCBzdG9yYWdlIGlmIHRoZQorICAgIC8vIDcp
IER1bXAgYWxsIGRvdWJsZXMgaW50byB0aGUgc3RhY2ssIG9yIHRvIHRoZSBzY3JhdGNoIHN0b3Jh
Z2UgaWYgdGhlCiAgICAgLy8gICAgZGVzdGluYXRpb24gdmlydHVhbCByZWdpc3RlciBpcyBwb2lz
b25lZC4KICAgICBpZiAoaGF2ZUZQUnMpIHsKICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgewpAQCAtMzYwLDE5ICszNjAsMTkg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFu
ZHNbaW5kZXhdOwogICAgICAgICAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluUmVnaXN0ZXJGaWxlOgorICAgICAg
ICAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHJlY292ZXJ5LnZpcnR1YWxS
ZWdpc3RlcigpKSwgR1BSSW5mbzo6dG9SZWdpc3RlcihkaXNwbGFjZW1lbnRJbmRleCsrKSk7CiAg
ICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcihy
ZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnRvUmVnaXN0ZXIoZGlzcGxhY2Vt
ZW50SW5kZXgrKykpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIEludDMyRGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6CisgICAgICAgICAgICAgICAgY2Fz
ZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIo
KSksIEdQUkluZm86OnRvUmVnaXN0ZXIoZGlzcGxhY2VtZW50SW5kZXgrKykpOwogICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkludDMyVGFnKSwgR1BSSW5mbzo6dG9SZWdpc3RlcihkaXNwbGFjZW1lbnRJbmRleCsrKSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ2VsbERp
c3BsYWNlZEluUmVnaXN0ZXJGaWxlOgorICAgICAgICAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNl
ZEluSlNTdGFjazoKICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVs
cGVyczo6cGF5bG9hZEZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnRv
UmVnaXN0ZXIoZGlzcGxhY2VtZW50SW5kZXgrKykpOwogICAgICAgICAgICAgICAgICAgICBtX2pp
dC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBH
UFJJbmZvOjp0b1JlZ2lzdGVyKGRpc3BsYWNlbWVudEluZGV4KyspKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5SZWdp
c3RlckZpbGU6CisgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNr
OgogICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXls
b2FkRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6dG9SZWdpc3Rlcihk
aXNwbGFjZW1lbnRJbmRleCsrKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksIEdQUkluZm86
OnRvUmVnaXN0ZXIoZGlzcGxhY2VtZW50SW5kZXgrKykpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTM4NSwxMCArMzg1LDEwIEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxl
RXhpdChjb25zdCAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBv
cGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgICAgICAgICBjb25zdCBWYWx1ZVJl
Y292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKICAgICAgICAgICAgICAgICBzd2l0
Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFj
ZWRJblJlZ2lzdGVyRmlsZToKLSAgICAgICAgICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5S
ZWdpc3RlckZpbGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5SZWdpc3Rl
ckZpbGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5SZWdpc3RlckZp
bGU6CisgICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAg
ICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgICAgICBjYXNl
IENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlz
cGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUklu
Zm86OnRvUmVnaXN0ZXIoZGlzcGxhY2VtZW50SW5kZXgrKyksIEFzc2VtYmx5SGVscGVyczo6cGF5
bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKW9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkp
KTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVy
KGRpc3BsYWNlbWVudEluZGV4KyspLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJl
Z2lzdGVyKW9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC00MTgsMTYgKzQxOCwxNiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6
Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
VmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07CiAgICAgICAgICAgICAg
ICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewotICAgICAgICAgICAgICAgIGNhc2Ug
RGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6CisgICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJ
bkpTU3RhY2s6CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBl
cnM6OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdU
MCk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnRh
Z0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJlZ1QxKTsKICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMCwgcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oc2NyYXRjaERhdGFCdWZmZXIgKyBzY3JhdGNoSW5kZXgpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDEsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KHNjcmF0Y2hEYXRhQnVmZmVyICsgc2NyYXRjaEluZGV4KSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHNjcmF0Y2hJbmRleCsrOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBCb29sZWFuRGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6CisgICAgICAgICAgICAgICAgY2Fz
ZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgICAgICBjYXNlIENlbGxEaXNw
bGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5K
U1N0YWNrOgogICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJz
OjpwYXlsb2FkRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6cmVnVDAp
OwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QwLCByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihzY3JhdGNoRGF0YUJ1ZmZlciArIHNjcmF0Y2hJbmRleCsrKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ0MCwyNCArNDQwLDI0IEBAIHZvaWQg
T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAg
ICAgICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4
XTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJblJlZ2lzdGVyRmlsZToKKyAgICAgICAgICAgICAg
ICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNjcmF0Y2hEYXRhQnVmZmVyICsgc2NyYXRjaElu
ZGV4KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5
bG9hZCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMy
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNjcmF0Y2hEYXRhQnVmZmVyICsgc2NyYXRjaEluZGV4
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSwg
R1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUklu
Zm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3Rlcilv
cGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDEsIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0
dWFsUmVnaXN0ZXIpb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGluZGV4KSkpOwogICAgICAgICAg
ICAgICAgICAgICBzY3JhdGNoSW5kZXgrKzsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluUmVnaXN0ZXJGaWxlOgorICAgICAg
ICAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihyZWludGVycHJldF9jYXN0PGNoYXIqPihzY3JhdGNoRGF0YUJ1ZmZl
ciArIHNjcmF0Y2hJbmRleCsrKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMucGF5bG9hZCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJ
bnQzMlRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpb3BlcmFu
ZHMub3BlcmFuZEZvckluZGV4KGluZGV4KSkpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5z
dG9yZTMyKEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1
YWxSZWdpc3RlcilvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluUmVn
aXN0ZXJGaWxlOgorICAgICAgICAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoK
ICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KHNjcmF0Y2hEYXRhQnVmZmVyICsgc2NyYXRjaEluZGV4KyspICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSwgR1BSSW5mbzo6cmVnVDApOwog
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVh
bFJlZ2lzdGVyKW9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkpKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjpw
YXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpb3BlcmFuZHMub3BlcmFuZEZvckluZGV4KGluZGV4
KSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEJv
b2xlYW5EaXNwbGFjZWRJblJlZ2lzdGVyRmlsZToKKyAgICAgICAgICAgICAgICBjYXNlIEJvb2xl
YW5EaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihy
ZWludGVycHJldF9jYXN0PGNoYXIqPihzY3JhdGNoRGF0YUJ1ZmZlciArIHNjcmF0Y2hJbmRleCsr
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9h
ZCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSwgQXNzZW1i
bHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcilvcGVyYW5kcy5vcGVyYW5kRm9ySW5k
ZXgoaW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6
cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKW9wZXJh
bmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkpKTsKQEAgLTU3NSw3ICs1NzUsNyBAQCB2b2lkIE9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgLy8gMTMpIFJlaWZ5IGlubGlu
ZWQgY2FsbCBmcmFtZXMuCiAgICAgCiAgICAgQVNTRVJUKG1faml0LmJhc2VsaW5lQ29kZUJsb2Nr
KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgbV9qaXQuc3Rv
cmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1faml0LmJhc2VsaW5lQ29kZUJs
b2NrKCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcilSZWdp
c3RlckZpbGU6OkNvZGVCbG9jaykpOworICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpSlNTdGFjazo6Q29kZUJsb2NrKSk7CiAg
ICAgCiAgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsg
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZS0+Y2FsbGVyKSB7CiAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7CkBAIC01OTcsMTUgKzU5NywxNSBA
QCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgY2FsbGVyRnJhbWVHUFIgPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cjsKICAgICAgICAgCi0gICAgICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbVB0cihiYXNlbGluZUNvZGVCbG9jayksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgUmVnaXN0
ZXJGaWxlOjpDb2RlQmxvY2spKSk7Ci0gICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFn
Rm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBSZWdp
c3RlckZpbGU6OlNjb3BlQ2hhaW4pKSk7Ci0gICAgICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZS0+c2NvcGUoKSks
IEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluKSkpOwotICAgICAg
ICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSkpKTsKLSAg
ICAgICAgbV9qaXQuc3RvcmVQdHIoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVscGVyczo6cGF5
bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
UmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSkpKTsKLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQpLCBBc3NlbWJseUhlbHBlcnM6
OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMpKSk7Ci0gICAgICAgIG1faml0LnN0b3JlMzIoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6
ZSgpKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpKSk7
Ci0gICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIp
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBSZWdpc3RlckZpbGU6OkNhbGxlZSkpKTsK
LSAgICAgICAgbV9qaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlLmdldCgpKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9y
KChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBSZWdpc3Rl
ckZpbGU6OkNhbGxlZSkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29kZUJsb2NrKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBK
U1N0YWNrOjpDb2RlQmxvY2spKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFn
Rm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0
YWNrOjpTY29wZUNoYWluKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWUtPnNjb3BlKCkpLCBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIEpTU3RhY2s6OlNjb3BlQ2hhaW4pKSk7CisgICAgICAgIG1faml0LnN0
b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZXJGcmFtZSkpKTsKKyAgICAgICAgbV9qaXQuc3Rv
cmVQdHIoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVh
bFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVy
RnJhbWUpKSk7CisgICAgICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihqdW1wVGFyZ2V0KSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFs
UmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpSZXR1cm5Q
QykpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVy
czo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyBKU1N0YWNrOjpDYWxsZWUpKSk7CisgICAgICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZS5nZXQoKSksIEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSkpOwogICAgIH0KICAgICAKICAgICAvLyAx
NCkgQ3JlYXRlIGFyZ3VtZW50cyBpZiBuZWNlc3NhcnkgYW5kIHBsYWNlIHRoZW0gaW50byB0aGUg
YXBwcm9wcmlhdGUgYWxpYXNlZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzMsOSArMTMzLDkgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0
KGNvbnN0IAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXpl
KCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBv
cGVyYW5kc1tpbmRleF07CiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsK
LSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluUmVnaXN0ZXJGaWxlOgotICAgICAgICBjYXNl
IERvdWJsZURpc3BsYWNlZEluUmVnaXN0ZXJGaWxlOgotICAgICAgICBjYXNlIERpc3BsYWNlZElu
UmVnaXN0ZXJGaWxlOgorICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAg
ICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBEaXNwbGFj
ZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBudW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3Rl
cnMrKzsKICAgICAgICAgICAgIEFTU0VSVCgoaW50KXJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rlcigp
ID49IDApOwogICAgICAgICAgICAgCkBAIC0xNjQsMTEgKzE2NCwxMSBAQCB2b2lkIE9TUkV4aXRD
b21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgotICAgICAgICBjYXNlIEFscmVh
ZHlJblJlZ2lzdGVyRmlsZUFzVW5ib3hlZEludDMyOgorICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAgIGhhdmVVbmJveGVkSW50MzJzID0gdHJ1
ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQWxyZWFk
eUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkRG91YmxlOgorICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWREb3VibGU6CiAgICAgICAgICAgICBoYXZlVW5ib3hlZERvdWJsZXMgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICAg
ICAgICAgIG1faml0Lm9yUHRyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVjb3Zl
cnkuZ3ByKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FzZSBBbHJlYWR5SW5SZWdpc3RlckZpbGVBc1VuYm94ZWRJbnQzMjoKKyAgICAg
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAgICAgICAgICAg
ICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KFRhZ1R5cGVOdW1iZXIgPj4gMzIpKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdG
b3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgo
aW5kZXgpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIApAQCAt
MzIxLDcgKzMyMSw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAK
ICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShmcHIsIGdwcik7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIC8vIDgpIER1bXAgYWxsIGRvdWJsZXMgaW50byB0aGUgcmVnaXN0ZXIgZmls
ZSwgb3IgdG8gdGhlIHNjcmF0Y2ggc3RvcmFnZSBpZgorICAgICAgICAvLyA4KSBEdW1wIGFsbCBk
b3VibGVzIGludG8gdGhlIHN0YWNrLCBvciB0byB0aGUgc2NyYXRjaCBzdG9yYWdlIGlmCiAgICAg
ICAgIC8vICAgIHRoZSBkZXN0aW5hdGlvbiB2aXJ0dWFsIHJlZ2lzdGVyIGlzIHBvaXNvbmVkLgog
ICAgICAgICAKICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRz
LnNpemUoKTsgKytpbmRleCkgewpAQCAtMzQwLDExICszNDAsMTEgQEAgdm9pZCBPU1JFeGl0Q29t
cGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIAogICAgIC8vIEF0IHRoaXMgcG9pbnQgYWxs
IEdQUnMgYW5kIEZQUnMgYXJlIGF2YWlsYWJsZSBmb3Igc2NyYXRjaCB1c2UuCiAgICAgCi0gICAg
Ly8gOSkgQm94IGFsbCB1bmJveGVkIGRvdWJsZXMgaW4gdGhlIHJlZ2lzdGVyIGZpbGUuCisgICAg
Ly8gOSkgQm94IGFsbCB1bmJveGVkIGRvdWJsZXMgaW4gdGhlIHN0YWNrLgogICAgIGlmIChoYXZl
VW5ib3hlZERvdWJsZXMpIHsKICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAgICAgY29uc3QgVmFsdWVSZWNv
dmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0gICAgICAgICAgICBpZiAocmVjb3Zl
cnkudGVjaG5pcXVlKCkgIT0gQWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkRG91YmxlKQor
ICAgICAgICAgICAgaWYgKHJlY292ZXJ5LnRlY2huaXF1ZSgpICE9IEFscmVhZHlJbkpTU3RhY2tB
c1VuYm94ZWREb3VibGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkRG91YmxlKEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lz
dGVyKW9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpbmRleCkpLCBGUFJJbmZvOjpmcFJlZ1QwKTsK
ICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMCk7CkBAIC0zNjcsMTggKzM2NywxOCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGls
ZUV4aXQoY29uc3QgCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
b3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgVmFsdWVS
ZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07CiAgICAgICAgICAgICAgICAgc3dp
dGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgRGlzcGxh
Y2VkSW5SZWdpc3RlckZpbGU6CisgICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3Rh
Y2s6CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjph
ZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6dG9SZWdpc3Rl
cihkaXNwbGFjZW1lbnRJbmRleCsrKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5S
ZWdpc3RlckZpbGU6IHsKKyAgICAgICAgICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0
YWNrOiB7CiAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBHUFJJbmZvOjp0b1JlZ2lz
dGVyKGRpc3BsYWNlbWVudEluZGV4KyspOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
MzIoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rlcigp
KSwgZ3ByKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQub3JQdHIoR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyLCBncHIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2Ug
RG91YmxlRGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6IHsKKyAgICAgICAgICAgICAgICBjYXNlIERv
dWJsZURpc3BsYWNlZEluSlNTdGFjazogewogICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZ3By
ID0gR1BSSW5mbzo6dG9SZWdpc3RlcihkaXNwbGFjZW1lbnRJbmRleCsrKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3Zl
cnkudmlydHVhbFJlZ2lzdGVyKCkpLCBncHIpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5z
dWJQdHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOwpAQCAtMzk0LDkgKzM5
NCw5IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5k
ZXgpIHsKICAgICAgICAgICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9w
ZXJhbmRzW2luZGV4XTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJblJlZ2lzdGVyRmlsZToKLSAg
ICAgICAgICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJblJlZ2lzdGVyRmlsZToKKyAgICAgICAgICAg
ICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgICAgICBjYXNlIEludDMy
RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2Vk
SW5KU1N0YWNrOgogICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjp0
b1JlZ2lzdGVyKGRpc3BsYWNlbWVudEluZGV4KyspLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3IoKFZpcnR1YWxSZWdpc3RlcilvcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTQyNywx
OSArNDI3LDE5IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAg
ICAgICAgICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2lu
ZGV4XTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5
LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJblJlZ2lzdGVy
RmlsZToKKyAgICAgICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAg
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVj
b3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICAg
ICAgICAgIG1faml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoRGF0YUJ1ZmZlciAr
IHNjcmF0Y2hJbmRleCsrKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJblJlZ2lzdGVy
RmlsZTogeworICAgICAgICAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6IHsK
ICAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQub3JQdHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKEdQ
UkluZm86OnJlZ1QwLCBzY3JhdGNoRGF0YUJ1ZmZlciArIHNjcmF0Y2hJbmRleCsrKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluUmVnaXN0ZXJGaWxl
OiB7CisgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6IHsKICAg
ICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LnN1YlB0cihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoR1BS
SW5mbzo6cmVnVDAsIHNjcmF0Y2hEYXRhQnVmZmVyICsgc2NyYXRjaEluZGV4KyspOwpAQCAtNDU1
LDkgKzQ1NSw5IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7
ICsraW5kZXgpIHsKICAgICAgICAgICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVy
eSA9IG9wZXJhbmRzW2luZGV4XTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRl
Y2huaXF1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJblJlZ2lzdGVyRmls
ZToKLSAgICAgICAgICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5SZWdpc3RlckZpbGU6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJblJlZ2lzdGVyRmlsZToKKyAgICAg
ICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgICAgICBjYXNl
IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlRGlz
cGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKHNjcmF0
Y2hEYXRhQnVmZmVyICsgc2NyYXRjaEluZGV4KyssIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKW9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChp
bmRleCkpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01NTMsNyArNTUzLDcgQEAg
dm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIC8vIDE0KSBSZWlm
eSBpbmxpbmVkIGNhbGwgZnJhbWVzLgogICAgIAogICAgIEFTU0VSVChtX2ppdC5iYXNlbGluZUNv
ZGVCbG9jaygpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwotICAgIG1f
aml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2ppdC5iYXNlbGlu
ZUNvZGVCbG9jaygpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0
ZXIpUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2spKTsKKyAgICBtX2ppdC5zdG9yZVB0cihBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKUpTU3RhY2s6OkNvZGVCbG9j
aykpOwogICAgIAogICAgIGZvciAoQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVP
cmlnaW47IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgewogICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOwpAQCAtNTc1LDEyICs1
NzUsMTIgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIGNhbGxlckZyYW1lR1BSID0gR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXI7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoYmFzZWxpbmVDb2RlQmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IFJlZ2lzdGVyRmlsZTo6Q29kZUJsb2NrKSkpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWUtPnNjb3Bl
KCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArIFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbikpKTsKLSAg
ICAgICAgbV9qaXQuc3RvcmVQdHIoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
UmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSkpKTsKLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQpLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMpKSk7Ci0gICAgICAgIG1faml0LnN0b3JlMzIoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6
ZSgpKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpKSk7
Ci0gICAgICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihp
bmxpbmVDYWxsRnJhbWUtPmNhbGxlZS5nZXQoKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgUmVnaXN0
ZXJGaWxlOjpDYWxsZWUpKSk7CisgICAgICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihiYXNlbGluZUNvZGVCbG9jayksIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
SlNTdGFjazo6Q29kZUJsb2NrKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWUtPnNjb3BlKCkpLCBB
c3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OlNjb3BlQ2hhaW4pKSk7CisgICAgICAgIG1faml0
LnN0b3JlUHRyKGNhbGxlckZyYW1lR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZp
cnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNh
bGxlckZyYW1lKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmly
dHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6UmV0
dXJuUEMpKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSwgQXNzZW1ibHlIZWxwZXJz
OjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWUuZ2V0
KCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNhbGxlZSkpKTsKICAgICB9CiAgICAg
CiAgICAgLy8gMTUpIENyZWF0ZSBhcmd1bWVudHMgaWYgbmVjZXNzYXJ5IGFuZCBwbGFjZSB0aGVt
IGludG8gdGhlIGFwcHJvcHJpYXRlIGFsaWFzZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDcgKzQ0OCw3
IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgICAg
IC8vIHJpZ2h0IG5vdyEKICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmUzMigKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGV4ZWMtPmNvZGVPcmlnaW5JbmRleEZv
ckRGRygpKSwKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2Fz
dDxWaXJ0dWFsUmVnaXN0ZXI+KFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0
ZXI+KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IG9wZXJhdGlvbkNhbGwgPSBzdHViSml0LmNhbGwoKTsKICNpZiBVU0UoSlNWQUxVRTY0KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE1LDEwICsx
MDE1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUmIG5vZGUKICAgICAv
LyByZWNlaXZlciAobWV0aG9kIGNhbGwpLiBzdWJzZXF1ZW50IGNoaWxkcmVuIGFyZSB0aGUgYXJn
dW1lbnRzLgogICAgIGludCBudW1QYXNzZWRBcmdzID0gbm9kZS5udW1DaGlsZHJlbigpIC0gMTsK
IAotICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNz
ZWRBcmdzICsgZHVtbXlUaGlzQXJndW1lbnQpLCBjYWxsRnJhbWVQYXlsb2FkU2xvdChSZWdpc3Rl
ckZpbGU6OkFyZ3VtZW50Q291bnQpKTsKLSAgICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgY2FsbEZyYW1lUGF5bG9hZFNsb3QoUmVnaXN0ZXJGaWxlOjpDYWxsZXJG
cmFtZSkpOwotICAgIG1faml0LnN0b3JlMzIoY2FsbGVlUGF5bG9hZEdQUiwgY2FsbEZyYW1lUGF5
bG9hZFNsb3QoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpKTsKLSAgICBtX2ppdC5zdG9yZTMyKGNhbGxl
ZVRhZ0dQUiwgY2FsbEZyYW1lVGFnU2xvdChSZWdpc3RlckZpbGU6OkNhbGxlZSkpOworICAgIG1f
aml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzICsg
ZHVtbXlUaGlzQXJndW1lbnQpLCBjYWxsRnJhbWVQYXlsb2FkU2xvdChKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSk7CisgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IGNhbGxGcmFtZVBheWxvYWRTbG90KEpTU3RhY2s6OkNhbGxlckZyYW1lKSk7CisgICAgbV9qaXQu
c3RvcmUzMihjYWxsZWVQYXlsb2FkR1BSLCBjYWxsRnJhbWVQYXlsb2FkU2xvdChKU1N0YWNrOjpD
YWxsZWUpKTsKKyAgICBtX2ppdC5zdG9yZTMyKGNhbGxlZVRhZ0dQUiwgY2FsbEZyYW1lVGFnU2xv
dChKU1N0YWNrOjpDYWxsZWUpKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFzc2Vk
QXJnczsgaSsrKSB7CiAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJB
cmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKSArIDEgKyBpXTsKQEAgLTEwNDksOCArMTA0OSw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUmIG5vZGUKICAgICBzbG93UGF0
aC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgY2FsbGVlUGF5bG9hZEdQUiwgdGFyZ2V0VG9DaGVjaykpOwogICAgIHNsb3dQYXRoLmFwcGVu
ZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVRhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNG
dW5jdGlvbiwgbV9zY29wZSkpLCByZXN1bHRQYXlsb2FkR1BSKTsKLSAgICBtX2ppdC5zdG9yZVB0
cihyZXN1bHRQYXlsb2FkR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAq
IFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKLSAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+
KHNpemVvZihSZWdpc3RlcikpICogUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisgICAgbV9qaXQu
c3RvcmVQdHIocmVzdWx0UGF5bG9hZEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lz
dGVyKSkgKiBKU1N0YWNrOjpTY29wZUNoYWluICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgIG1faml0LnN0b3JlMzIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZf
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKiBKU1N0YWNrOjpTY29wZUNoYWluICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAKICAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBhdChtX2NvbXBpbGVJbmRleCkuY29kZU9yaWdpbjsKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBmYXN0Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CkBAIC0yMTYxLDcgKzIx
NjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IC8vIFNldExvY2FsIGRvdWJsZXMgYXMgYSBoaW50IGFzIHRvIHdoZXJlIGEgbm9kZSB3aWxsIGJl
IHN0b3JlZCBhbmQKICAgICAgICAgLy8gYXMgYSBzcGVjdWxhdGlvbiBwb2ludC4gU28gYmVmb3Jl
IHdlIHNwZWN1bGF0ZSBtYWtlIHN1cmUgdGhhdCB3ZQogICAgICAgICAvLyBrbm93IHdoZXJlIHRo
ZSBjaGlsZCBvZiB0aGlzIG5vZGUgbmVlZHMgdG8gZ28gaW4gdGhlIHZpcnR1YWwKLSAgICAgICAg
Ly8gcmVnaXN0ZXIgZmlsZS4KKyAgICAgICAgLy8gc3RhY2suCiAgICAgICAgIGNvbXBpbGVNb3ZI
aW50KG5vZGUpOwogICAgICAgICAKICAgICAgICAgLy8gQXMgZmFyIGFzIE9TUiBpcyBjb25jZXJu
ZWQsIHdlJ3JlIG9uIHRoZSBieXRlY29kZSBpbmRleCBjb3JyZXNwb25kaW5nCkBAIC0yMTkwLDcg
KzIxOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
ICAgIC8vIHRoaXMgU2V0TG9jYWwgc2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkLiBCdXQgZm9yIG9w
X3Bvc3RfaW5jLCBpdCdzIGp1c3QKICAgICAgICAgLy8gZmluZSwgYmVjYXVzZSB0aGlzIFNldExv
Y2FsJ3MgbG9jYWwgKGkuZS4gdGhlIExIUyBpbiBhIHggPSB5KysKICAgICAgICAgLy8gc3RhdGVt
ZW50KSB3b3VsZCBiZSBkZWFkIGFueXdheSAtIHNvIHRoZSBmYWN0IHRoYXQgREZHIHdvdWxkIGhh
dmUKLSAgICAgICAgLy8gYWxyZWFkeSBtYWRlIHRoZSBhc3NpZ25tZW50LCBhbmQgYmFrZWQgaXQg
aW50byB0aGUgcmVnaXN0ZXIgZmlsZSBkdXJpbmcKKyAgICAgICAgLy8gYWxyZWFkeSBtYWRlIHRo
ZSBhc3NpZ25tZW50LCBhbmQgYmFrZWQgaXQgaW50byB0aGUgc3RhY2sgZHVyaW5nCiAgICAgICAg
IC8vIE9TUiBleGl0LCB3b3VsZCBub3QgYmUgdmlzaWJsZSB0byB0aGUgb2xkIEpJVCBpbiBhbnkg
d2F5LgogICAgICAgICBtX2NvZGVPcmlnaW5Gb3JPU1IgPSBuZXh0Tm9kZS0+Y29kZU9yaWdpbjsK
ICAgICAgICAgCkBAIC0yMjAwLDkgKzIyMDAsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWUu
ZnByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICAg
ICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgICAgICAvLyBJbmRp
Y2F0ZSB0aGF0IGl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSB0aGUgdmFsdWUg
b2YKLSAgICAgICAgICAgICAgICAvLyB0aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20gcmVnaXN0
ZXJzIG9yIG90aGVyIGxvY2F0aW9ucyBpbiB0aGUgcmVnaXN0ZXIgZmlsZSwKKyAgICAgICAgICAg
ICAgICAvLyB0aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20gcmVnaXN0ZXJzIG9yIG90aGVyIGxv
Y2F0aW9ucyBpbiB0aGUgc3RhY2ssCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoYXQgaXQgaXMg
c3RvcmVkIGFzIGEgZG91YmxlLgotICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUu
bG9jYWwoKSwgVmFsdWVTb3VyY2UoRG91YmxlSW5SZWdpc3RlckZpbGUpKTsKKyAgICAgICAgICAg
ICAgICByZWNvcmRTZXRMb2NhbChub2RlLmxvY2FsKCksIFZhbHVlU291cmNlKERvdWJsZUluSlNT
dGFjaykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGVkVHlwZSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRh
KCktPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCk7CkBAIC0yMjEwLDE0ICsyMjEwLDE0IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBE
b3VibGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlRG91YmxlKHZhbHVlLmZwcigpLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihu
b2RlLmxvY2FsKCkpKTsKICAgICAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7
Ci0gICAgICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS5sb2NhbCgpLCBWYWx1ZVNvdXJj
ZShEb3VibGVJblJlZ2lzdGVyRmlsZSkpOworICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2Fs
KG5vZGUubG9jYWwoKSwgVmFsdWVTb3VyY2UoRG91YmxlSW5KU1N0YWNrKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1
bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdl
ck9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbV9q
aXQuc3RvcmUzMih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2Nh
bCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwotICAgICAg
ICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUubG9jYWwoKSwgVmFsdWVTb3VyY2UoSW50MzJJ
blJlZ2lzdGVyRmlsZSkpOworICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUubG9j
YWwoKSwgVmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2spKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc0NlbGxTcGVjdWxhdGlvbihwcmVk
aWN0ZWRUeXBlKSkgewpAQCAtMjIyNSwxNCArMjIyNSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBj
ZWxsLmdwcigpOwogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGNlbGxHUFIsIEpJVENv
bXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICAgICAgICAgIG5vUmVz
dWx0KG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2Rl
LmxvY2FsKCksIFZhbHVlU291cmNlKENlbGxJblJlZ2lzdGVyRmlsZSkpOworICAgICAgICAgICAg
ICAgIHJlY29yZFNldExvY2FsKG5vZGUubG9jYWwoKSwgVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFj
aykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICAg
ICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21w
aWxlSW5kZXgpOwotICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUubG9jYWwoKSwg
VmFsdWVTb3VyY2UoQm9vbGVhbkluUmVnaXN0ZXJGaWxlKSk7CisgICAgICAgICAgICAgICAgcmVj
b3JkU2V0TG9jYWwobm9kZS5sb2NhbCgpLCBWYWx1ZVNvdXJjZShCb29sZWFuSW5KU1N0YWNrKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIy
NDAsNyArMjI0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5wYXlsb2FkR1BSKCksIEpJVENvbXBpbGVyOjpw
YXlsb2FkRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlLnRh
Z0dQUigpLCBKSVRDb21waWxlcjo6dGFnRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUubG9jYWwo
KSwgVmFsdWVTb3VyY2UoVmFsdWVJblJlZ2lzdGVyRmlsZSkpOworICAgICAgICByZWNvcmRTZXRM
b2NhbChub2RlLmxvY2FsKCksIFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKSk7CiAKICAgICAg
ICAgLy8gSWYgd2UncmUgc3RvcmluZyBhbiBhcmd1bWVudHMgb2JqZWN0IHRoYXQgaGFzIGJlZW4g
b3B0aW1pemVkIGF3YXksCiAgICAgICAgIC8vIG91ciB2YXJpYWJsZSBldmVudCBzdHJlYW0gZm9y
IE9TUiBleGl0IG5vdyByZWZsZWN0cyB0aGUgb3B0aW1pemVkCkBAIC0zMDUxLDkgKzMwNTEsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KLSAgICAgICAgbV9qaXQuZW1pdEdl
dEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQywgR1BSSW5mbzo6
cmVnVDIpOworICAgICAgICBtX2ppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0
YWNrOjpSZXR1cm5QQywgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAvLyBSZXN0b3JlIG91ciBj
YWxsZXIncyAiciIuCi0gICAgICAgIG1faml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRy
KFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
KyAgICAgICAgbV9qaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2Fs
bGVyRnJhbWUsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAgLy8gUmV0dXJu
LgogICAgICAgICBtX2ppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZv
OjpyZWdUMik7CiAgICAgICAgIG1faml0LnJldCgpOwpAQCAtMzM2Niw3ICszMzY2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogCiAgICAgY2FzZSBHZXRDYWxs
ZWU6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0
ZXI+KFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lz
dGVyPihKU1N0YWNrOjpDYWxsZWUpKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMzM3NSw3ICszMzc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihSZWdpc3RlckZp
bGU6OlNjb3BlQ2hhaW4pKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6YWRkcmVzc0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpTU3RhY2s6
OlNjb3BlQ2hhaW4pKSwgcmVzdWx0R1BSKTsKICAgICAgICAgYm9vbCBjaGVja1RvcExldmVsID0g
bV9qaXQuY29kZUJsb2NrKCktPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIG1faml0LmNv
ZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CiAgICAgICAgIGludCBza2lwID0gbm9k
ZS5zY29wZUNoYWluRGVwdGgoKTsKICAgICAgICAgQVNTRVJUKHNraXAgfHwgIWNoZWNrVG9wTGV2
ZWwpOwpAQCAtNDE2MSw3ICs0MTYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoIW5vZGUuY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOwotICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQpLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1t
MzIoMSksIHJlc3VsdEdQUik7CiAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0R1BSLCBtX2Nv
bXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDE4Myw3ICs0MTgzLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIEltbTMy
KG5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSwK
ICAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihSZWdpc3RlckZp
bGU6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwg
cmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIo
MSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICB9CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgcmVzdWx0VGFnR1BSKTsKQEAgLTQyMzYsNyAr
NDIzNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFib3ZlT3JFcXVhbCwKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUiwK
LSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoUmVnaXN0ZXJGaWxl
OjpBcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6cGF5
bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0FyZ3VtZW50OwpAQCAtNDMxMyw3ICs0
MzEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6QWJvdmVPckVxdWFsLAogICAgICAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSLAot
ICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihSZWdpc3RlckZpbGU6
OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsSW50ZWdlcihOb2RlSQogICAgICAgICB9CiAKICAgICAgICAgLy8gU2luY2Ug
d2Ugc3RhdGljYWxseSBrbm93IHRoYXQgd2UncmUgZmlsbGluZyBhbiBpbnRlZ2VyLCBhbmQgdmFs
dWVzCi0gICAgICAgIC8vIGluIHRoZSBSZWdpc3RlckZpbGUgYXJlIGJveGVkLCB0aGlzIG11c3Qg
YmUgRGF0YUZvcm1hdEpTSW50ZWdlci4KKyAgICAgICAgLy8gaW4gdGhlIEpTU3RhY2sgYXJlIGJv
eGVkLCB0aGlzIG11c3QgYmUgRGF0YUZvcm1hdEpTSW50ZWdlci4KICAgICAgICAgLy8gV2Ugd2ls
bCBjaGVjayB0aGlzIHdpdGggYSBqaXRBc3NlcnQgYmVsb3cuCiAgICAgICAgIGluZm8uZmlsbEpT
VmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0ludGVnZXIpOwogICAgICAgICB1bmxv
Y2soZ3ByKTsKQEAgLTEwMDUsOSArMTAwNSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKE5vZGUmIG5vZGUKICAgICAvLyBhcmd1bWVudHMuCiAgICAgaW50IG51bVBhc3NlZEFyZ3Mg
PSBub2RlLm51bUNoaWxkcmVuKCkgLSAxOwogICAgIAotICAgIG1faml0LnN0b3JlMzIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzICsgZHVtbXlUaGlzQXJndW1lbnQp
LCBjYWxsRnJhbWVQYXlsb2FkU2xvdChSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpKTsKLSAg
ICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbEZyYW1lU2xv
dChSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoY2FsbGVl
R1BSLCBjYWxsRnJhbWVTbG90KFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSk7CisgICAgbV9qaXQuc3Rv
cmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MgKyBkdW1teVRo
aXNBcmd1bWVudCksIGNhbGxGcmFtZVBheWxvYWRTbG90KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
KTsKKyAgICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbEZy
YW1lU2xvdChKU1N0YWNrOjpDYWxsZXJGcmFtZSkpOworICAgIG1faml0LnN0b3JlUHRyKGNhbGxl
ZUdQUiwgY2FsbEZyYW1lU2xvdChKU1N0YWNrOjpDYWxsZWUpKTsKICAgICAKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7IGkrKykgewogICAgICAgICBFZGdlIGFyZ0VkZ2Ug
PSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCkgKyAxICsg
aV07CkBAIC0xMDMzLDcgKzEwMzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlJiBub2RlCiAgICAgCiAgICAgc2xvd1BhdGggPSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2go
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpKSk7CiAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIE9CSkVD
VF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdEdQUik7Ci0gICAgbV9qaXQu
c3RvcmVQdHIocmVzdWx0R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAq
IFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbikpOworICAgIG1faml0LnN0b3JlUHRyKHJlc3VsdEdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0
YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKiBKU1N0YWNrOjpTY29wZUNo
YWluKSk7CiAKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBhdChtX2NvbXBpbGVJbmRleCku
Y29kZU9yaWdpbjsKICAgICBKSVRDb21waWxlcjo6Q2FsbCBmYXN0Q2FsbCA9IG1faml0Lm5lYXJD
YWxsKCk7CkBAIC0yMjAyLDcgKzIyMDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgIC8vIFNldExvY2FsIGRvdWJsZXMgYXMgYSBoaW50IGFzIHRv
IHdoZXJlIGEgbm9kZSB3aWxsIGJlIHN0b3JlZCBhbmQKICAgICAgICAgLy8gYXMgYSBzcGVjdWxh
dGlvbiBwb2ludC4gU28gYmVmb3JlIHdlIHNwZWN1bGF0ZSBtYWtlIHN1cmUgdGhhdCB3ZQogICAg
ICAgICAvLyBrbm93IHdoZXJlIHRoZSBjaGlsZCBvZiB0aGlzIG5vZGUgbmVlZHMgdG8gZ28gaW4g
dGhlIHZpcnR1YWwKLSAgICAgICAgLy8gcmVnaXN0ZXIgZmlsZS4KKyAgICAgICAgLy8gc3RhY2su
CiAgICAgICAgIGNvbXBpbGVNb3ZIaW50KG5vZGUpOwogICAgICAgICAKICAgICAgICAgLy8gQXMg
ZmFyIGFzIE9TUiBpcyBjb25jZXJuZWQsIHdlJ3JlIG9uIHRoZSBieXRlY29kZSBpbmRleCBjb3Jy
ZXNwb25kaW5nCkBAIC0yMjMxLDcgKzIyMzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIC8vIHRoaXMgU2V0TG9jYWwgc2hvdWxkIG5vdCBoYXZl
IGV4ZWN1dGVkLiBCdXQgZm9yIG9wX3Bvc3RfaW5jLCBpdCdzIGp1c3QKICAgICAgICAgLy8gZmlu
ZSwgYmVjYXVzZSB0aGlzIFNldExvY2FsJ3MgbG9jYWwgKGkuZS4gdGhlIExIUyBpbiBhIHggPSB5
KysKICAgICAgICAgLy8gc3RhdGVtZW50KSB3b3VsZCBiZSBkZWFkIGFueXdheSAtIHNvIHRoZSBm
YWN0IHRoYXQgREZHIHdvdWxkIGhhdmUKLSAgICAgICAgLy8gYWxyZWFkeSBtYWRlIHRoZSBhc3Np
Z25tZW50LCBhbmQgYmFrZWQgaXQgaW50byB0aGUgcmVnaXN0ZXIgZmlsZSBkdXJpbmcKKyAgICAg
ICAgLy8gYWxyZWFkeSBtYWRlIHRoZSBhc3NpZ25tZW50LCBhbmQgYmFrZWQgaXQgaW50byB0aGUg
c3RhY2sgZHVyaW5nCiAgICAgICAgIC8vIE9TUiBleGl0LCB3b3VsZCBub3QgYmUgdmlzaWJsZSB0
byB0aGUgb2xkIEpJVCBpbiBhbnkgd2F5LgogICAgICAgICBtX2NvZGVPcmlnaW5Gb3JPU1IgPSBu
ZXh0Tm9kZS0+Y29kZU9yaWdpbjsKICAgICAgICAgCkBAIC0yMjQxLDkgKzIyNDEsOSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgbV9q
aXQuc3RvcmVEb3VibGUodmFsdWUuZnByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUu
bG9jYWwoKSkpOwogICAgICAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAg
ICAgICAgICAgICAgICAvLyBJbmRpY2F0ZSB0aGF0IGl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0
byByZXRyaWV2ZSB0aGUgdmFsdWUgb2YKLSAgICAgICAgICAgICAgICAvLyB0aGlzIGJ5dGVjb2Rl
IHZhcmlhYmxlIGZyb20gcmVnaXN0ZXJzIG9yIG90aGVyIGxvY2F0aW9ucyBpbiB0aGUgcmVnaXN0
ZXIgZmlsZSwKKyAgICAgICAgICAgICAgICAvLyB0aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20g
cmVnaXN0ZXJzIG9yIG90aGVyIGxvY2F0aW9ucyBpbiB0aGUgc3RhY2ssCiAgICAgICAgICAgICAg
ICAgLy8gYnV0IHRoYXQgaXQgaXMgc3RvcmVkIGFzIGEgZG91YmxlLgotICAgICAgICAgICAgICAg
IHJlY29yZFNldExvY2FsKG5vZGUubG9jYWwoKSwgVmFsdWVTb3VyY2UoRG91YmxlSW5SZWdpc3Rl
ckZpbGUpKTsKKyAgICAgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLmxvY2FsKCksIFZh
bHVlU291cmNlKERvdWJsZUluSlNTdGFjaykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAKQEAgLTIyNTIsNyArMjI1Miw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVJbnRl
Z2VyT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBt
X2ppdC5zdG9yZTMyKHZhbHVlLmdwcigpLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxv
Y2FsKCkpKTsKICAgICAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7Ci0gICAg
ICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS5sb2NhbCgpLCBWYWx1ZVNvdXJjZShJbnQz
MkluUmVnaXN0ZXJGaWxlKSk7CisgICAgICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS5s
b2NhbCgpLCBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjaykpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CkBAIC0yMjYwLDE0ICsyMjYwLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9
IGNlbGwuZ3ByKCk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9S
ZXN1bHQobV9jb21waWxlSW5kZXgpOwotICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5v
ZGUubG9jYWwoKSwgVmFsdWVTb3VyY2UoQ2VsbEluUmVnaXN0ZXJGaWxlKSk7CisgICAgICAgICAg
ICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS5sb2NhbCgpLCBWYWx1ZVNvdXJjZShDZWxsSW5KU1N0
YWNrKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAg
ICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCBib29sZWFuKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OwogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGJvb2xlYW4uZ3ByKCksIEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICAgICAgICAgIG5vUmVzdWx0
KG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLmxv
Y2FsKCksIFZhbHVlU291cmNlKEJvb2xlYW5JblJlZ2lzdGVyRmlsZSkpOworICAgICAgICAgICAg
ICAgIHJlY29yZFNldExvY2FsKG5vZGUubG9jYWwoKSwgVmFsdWVTb3VyY2UoQm9vbGVhbkluSlNT
dGFjaykpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC0yMjc2LDcgKzIyNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgIG1faml0LnN0b3JlUHRyKHZhbHVlLmdwcigpLCBKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpKTsKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5k
ZXgpOwogCi0gICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUubG9jYWwoKSwgVmFsdWVTb3VyY2Uo
VmFsdWVJblJlZ2lzdGVyRmlsZSkpOworICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLmxvY2Fs
KCksIFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKSk7CiAKICAgICAgICAgLy8gSWYgd2UncmUg
c3RvcmluZyBhbiBhcmd1bWVudHMgb2JqZWN0IHRoYXQgaGFzIGJlZW4gb3B0aW1pemVkIGF3YXks
CiAgICAgICAgIC8vIG91ciB2YXJpYWJsZSBldmVudCBzdHJlYW0gZm9yIE9TUiBleGl0IG5vdyBy
ZWZsZWN0cyB0aGUgb3B0aW1pemVkCkBAIC0zMDg3LDkgKzMwODcsOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigp
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAKICAgICAgICAgLy8gR3JhYiB0aGUgcmV0dXJu
IGFkZHJlc3MuCi0gICAgICAgIG1faml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJl
Z2lzdGVyRmlsZTo6UmV0dXJuUEMsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgbV9qaXQuZW1p
dEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6UmV0dXJuUEMsIEdQUkluZm86OnJl
Z1QxKTsKICAgICAgICAgLy8gUmVzdG9yZSBvdXIgY2FsbGVyJ3MgInIiLgotICAgICAgICBtX2pp
dC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1l
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIG1faml0LmVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1lLCBHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3Rlcik7CiAgICAgICAgIC8vIFJldHVybi4KICAgICAgICAgbV9qaXQucmVzdG9yZVJl
dHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBtX2ppdC5y
ZXQoKTsKQEAgLTMzNzUsNyArMzM3NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKIAogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihSZWdpc3RlckZpbGU6OkNhbGxlZSkp
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6Q2FsbGVlKSksIHJl
c3VsdC5ncHIoKSk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJ
bmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMzODQsNyArMzM4NCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
IAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHN0YXRpY19j
YXN0PFZpcnR1YWxSZWdpc3Rlcj4oUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluKSksIHJlc3VsdEdQ
Uik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Ioc3RhdGlj
X2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpTY29wZUNoYWluKSksIHJlc3VsdEdQUik7
CiAgICAgICAgIGJvb2wgY2hlY2tUb3BMZXZlbCA9IG1faml0LmNvZGVCbG9jaygpLT5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBtX2ppdC5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpOwogICAgICAgICBpbnQgc2tpcCA9IG5vZGUuc2NvcGVDaGFpbkRlcHRoKCk7CiAgICAg
ICAgIEFTU0VSVChza2lwIHx8ICFjaGVja1RvcExldmVsKTsKQEAgLTQxMDYsNyArNDEwNiw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgQVNTRVJUKCFub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsK
LSAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKFJlZ2lzdGVyRmls
ZTo6QXJndW1lbnRDb3VudCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVzdWx0R1BSKTsK
ICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOwogICAgICAg
ICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVh
azsKQEAgLTQxMjksNyArNDEyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc051bWJlcihub2RlLmNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkpKSksCiAgICAgICAg
ICAgICAgICAgcmVzdWx0R1BSKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291
bnQpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpw
YXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRHUFIpOwogICAgICAgICAg
ICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOwogICAgICAgICAgICAg
bV9qaXQub3JQdHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZXN1bHRHUFIpOwog
ICAgICAgICB9CkBAIC00MTc4LDcgKzQxNzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOwogICAgICAg
ICB9CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dBcmd1bWVudDsKQEAgLTQy
NDMsNyArNDI0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkFib3ZlT3JFcXVhbCwKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLAot
ICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihSZWdpc3RlckZpbGU6
OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
MTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNjcsNyArMTM2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKIAogICAgIEFTU0VSVChtX2FyZ3VtZW50cy5zaXplKCkg
PT0gYmxvY2sudmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVmFs
dWVTb3VyY2UgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShWYWx1ZUluUmVnaXN0ZXJGaWxlKTsK
KyAgICAgICAgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShWYWx1ZUluSlNT
dGFjayk7CiAgICAgICAgIG1fYXJndW1lbnRzW2ldID0gdmFsdWVTb3VyY2U7CiAgICAgICAgIG1f
c3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6c2V0TG9jYWwoYXJndW1lbnRUb09w
ZXJhbmQoaSksIHZhbHVlU291cmNlLmRhdGFGb3JtYXQoKSkpOwogICAgIH0KQEAgLTEzODQsMTEg
KzEzODQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAg
ICAgICBlbHNlIGlmIChhdChub2RlSW5kZXgpLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0FyZ3Vt
ZW50c0FsaWFzKCkpCiAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKEFyZ3Vt
ZW50c1NvdXJjZSk7CiAgICAgICAgIGVsc2UgaWYgKGF0KG5vZGVJbmRleCkudmFyaWFibGVBY2Nl
c3NEYXRhKCktPmlzQ2FwdHVyZWQoKSkKLSAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVT
b3VyY2UoVmFsdWVJblJlZ2lzdGVyRmlsZSk7CisgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZh
bHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKTsKICAgICAgICAgZWxzZSBpZiAoIWF0KG5vZGVJbmRl
eCkucmVmQ291bnQoKSkKICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoU291
cmNlSXNEZWFkKTsKICAgICAgICAgZWxzZSBpZiAoYXQobm9kZUluZGV4KS52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpCi0gICAgICAgICAgICB2YWx1ZVNvdXJj
ZSA9IFZhbHVlU291cmNlKERvdWJsZUluUmVnaXN0ZXJGaWxlKTsKKyAgICAgICAgICAgIHZhbHVl
U291cmNlID0gVmFsdWVTb3VyY2UoRG91YmxlSW5KU1N0YWNrKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZTo6Zm9yU3BlY3VsYXRpb24oYXQobm9k
ZUluZGV4KS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKSk7
CiAgICAgICAgIG1fdmFyaWFibGVzW2ldID0gdmFsdWVTb3VyY2U7CkBAIC0xNDQwLDI1ICsxNDQw
LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICAgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyAr
K2kpIHsKICAgICAgICAgICAgICAgICAgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+aXNDYXB0dXJlZChhcmd1bWVudFRvT3BlcmFu
ZChpKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6
OmFscmVhZHlJblJlZ2lzdGVyRmlsZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3Zl
cnkgPSBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRQb3NpdGlvbiYgYXJn
dW1lbnRQb3NpdGlvbiA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgo
KS5tX2FyZ3VtZW50UG9zaXRpb25zW2FyZ3VtZW50UG9zaXRpb25TdGFydCArIGldOwogICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2U7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJndW1lbnRQb3NpdGlvbi5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKERv
dWJsZUluUmVnaXN0ZXJGaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNv
dXJjZSA9IFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjayk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChpc0ludDMyU3BlY3VsYXRpb24oYXJndW1lbnRQb3NpdGlvbi5wcmVkaWN0
aW9uKCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVT
b3VyY2UoSW50MzJJblJlZ2lzdGVyRmlsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChpc0NlbGxTcGVjdWxhdGlvbihhcmd1bWVudFBvc2l0aW9uLnBy
ZWRpY3Rpb24oKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBW
YWx1ZVNvdXJjZShDZWxsSW5SZWdpc3RlckZpbGUpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFjayk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihhcmd1bWVudFBvc2l0
aW9uLnByZWRpY3Rpb24oKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTb3Vy
Y2UgPSBWYWx1ZVNvdXJjZShCb29sZWFuSW5SZWdpc3RlckZpbGUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQm9vbGVhbkluSlNTdGFjayk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShWYWx1ZUluUmVnaXN0ZXJGaWxlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKFZhbHVlSW5K
U1N0YWNrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlY292ZXJ5ID0gY29tcHV0ZVZhbHVl
UmVjb3ZlcnlGb3IodmFsdWVTb3VyY2UpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSByZWNvdmVyeSBzaG91bGQgcmVmZXIgZWl0aGVyIHRvIHNvbWV0
aGluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4KLSAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmVk
IGludG8gdGhlIHJlZ2lzdGVyIGZpbGUgYXQgdGhlIHJpZ2h0IHBsYWNlLCBvciB0byBhIGNvbnN0
YW50LAorICAgICAgICAgICAgICAgICAgICAvLyBzdG9yZWQgaW50byB0aGUgc3RhY2sgYXQgdGhl
IHJpZ2h0IHBsYWNlLCBvciB0byBhIGNvbnN0YW50LAogICAgICAgICAgICAgICAgICAgICAvLyBz
aW5jZSB0aGUgQXJndW1lbnRzIGNvZGUgaXNuJ3Qgc21hcnQgZW5vdWdoIHRvIGhhbmRsZSBhbnl0
aGluZyBlbHNlLgogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZXhjZXB0aW9uIGlzIHRoZSB0
aGlzIGFyZ3VtZW50LCB3aGljaCB3ZSBkb24ndCByZWFsbHkgbmVlZCB0byBiZQogICAgICAgICAg
ICAgICAgICAgICAvLyBhYmxlIHRvIHJlY292ZXIuCkBAIC0xNTUwLDkgKzE1NTAsOSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoCiAgICAgbV9jb2RlT3JpZ2luRm9y
T1NSID0gQ29kZU9yaWdpbigwKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hcmd1
bWVudHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fYXJndW1lbnRzW2ldID0gVmFsdWVTb3VyY2Uo
VmFsdWVJblJlZ2lzdGVyRmlsZSk7CisgICAgICAgIG1fYXJndW1lbnRzW2ldID0gVmFsdWVTb3Vy
Y2UoVmFsdWVJbkpTU3RhY2spOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YXJpYWJs
ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2UoVmFs
dWVJblJlZ2lzdGVyRmlsZSk7CisgICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2Uo
VmFsdWVJbkpTU3RhY2spOwogICAgIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQuY29k
ZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7CiAgICAgICAgIE5vZGVJbmRleCBub2Rl
SW5kZXggPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOwpAQCAtMTY0OSw3ICsxNjQ5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogCiBWYWx1ZVJlY292
ZXJ5IFNwZWN1bGF0aXZlSklUOjpjb21wdXRlVmFsdWVSZWNvdmVyeUZvcihjb25zdCBWYWx1ZVNv
dXJjZSYgdmFsdWVTb3VyY2UpCiB7Ci0gICAgaWYgKHZhbHVlU291cmNlLmlzSW5SZWdpc3RlckZp
bGUoKSkKKyAgICBpZiAodmFsdWVTb3VyY2UuaXNJbkpTU3RhY2soKSkKICAgICAgICAgcmV0dXJu
IHZhbHVlU291cmNlLnZhbHVlUmVjb3ZlcnkoKTsKICAgICAgICAgCiAgICAgQVNTRVJUKHZhbHVl
U291cmNlLmtpbmQoKSA9PSBIYXZlTm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyNSw3ICszMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB3
aGVuIGdlbmVyYXRpbmcgJ3VuZXhwZWN0ZWQnCiAgICAgLy8gY2FsbHMgb3V0IGZyb20gSklUIGNv
ZGUgdG8gQysrIGhlbHBlciByb3V0aW5lcyAtCiAgICAgLy8gdGhleSBzcGlsbCBhbGwgbGl2ZSB2
YWx1ZXMgdG8gdGhlIGFwcHJvcHJpYXRlCi0gICAgLy8gc2xvdHMgaW4gdGhlIFJlZ2lzdGVyRmls
ZSB3aXRob3V0IGNoYW5naW5nIGFueSBzdGF0ZQorICAgIC8vIHNsb3RzIGluIHRoZSBKU1N0YWNr
IHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlCiAgICAgLy8gaW4gdGhlIEdlbmVyYXRpb25JbmZv
LgogICAgIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gc2lsZW50U2F2ZVBsYW5Gb3JHUFIoVmlydHVh
bFJlZ2lzdGVyIHNwaWxsTWUsIEdQUlJlZyBzb3VyY2UpCiAgICAgewpAQCAtNzA0LDcgKzcwNCw3
IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIC8vIFNwaWxsIGEgVmlydHVhbFJlZ2lz
dGVyIHRvIHRoZSBSZWdpc3RlckZpbGUuCisgICAgLy8gU3BpbGwgYSBWaXJ0dWFsUmVnaXN0ZXIg
dG8gdGhlIEpTU3RhY2suCiAgICAgdm9pZCBzcGlsbChWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSkK
ICAgICB7CiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1tz
cGlsbE1lXTsKQEAgLTcxNCw3ICs3MTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47
CiAjZW5kaWYKICAgICAgICAgLy8gQ2hlY2sgdGhlIEdlbmVyYXRpb25JbmZvIHRvIHNlZSBpZiB0
aGlzIHZhbHVlIG5lZWQgd3JpdGluZwotICAgICAgICAvLyB0byB0aGUgUmVnaXN0ZXJGaWxlIC0g
aWYgbm90LCBtYXJrIGl0IGFzIHNwaWxsZWQgJiByZXR1cm4uCisgICAgICAgIC8vIHRvIHRoZSBK
U1N0YWNrIC0gaWYgbm90LCBtYXJrIGl0IGFzIHNwaWxsZWQgJiByZXR1cm4uCiAgICAgICAgIGlm
ICghaW5mby5uZWVkc1NwaWxsKCkpIHsKICAgICAgICAgICAgIGluZm8uc2V0U3BpbGxlZCgqbV9z
dHJlYW0sIHNwaWxsTWUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODI5LDcgKzgyOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZtX2ppdC5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihp
bmRleCk7CiAgICAgfQogCi0gICAgLy8gU3BpbGwgYWxsIFZpcnR1YWxSZWdpc3RlcnMgYmFjayB0
byB0aGUgUmVnaXN0ZXJGaWxlLgorICAgIC8vIFNwaWxsIGFsbCBWaXJ0dWFsUmVnaXN0ZXJzIGJh
Y2sgdG8gdGhlIEpTU3RhY2suCiAgICAgdm9pZCBmbHVzaFJlZ2lzdGVycygpCiAgICAgewogICAg
ICAgICBmb3IgKGdwcl9pdGVyYXRvciBpdGVyID0gbV9ncHJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9n
cHJzLmVuZCgpOyArK2l0ZXIpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb20KICAgICBqaXQubG9hZFB0cigKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAogICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdp
c3RlcikpICogUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSksCisgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpICogSlNTdGFjazo6Q2FsbGVyRnJhbWUp
LAogICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgaml0LnBlZWsoR1BS
SW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSLCBKSVRTVEFDS0ZSQU1FX0FSR1NfSU5ERVgp
OwogICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSSW5mbzo6bm9uUHJlc2Vy
dmVkTm9uUmV0dXJuR1BSKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0
aEZvcigKICAgICAgICAgR1BSSW5mbzo6bm9uQXJnR1BSMiwKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKAogICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsCi0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpICogUmVnaXN0
ZXJGaWxlOjpSZXR1cm5QQykpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cHRyZGlmZl90Pihz
aXplb2YoUmVnaXN0ZXIpKSAqIEpTU3RhY2s6OlJldHVyblBDKSk7CiAgICAgaml0LnN0b3JlUHRy
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmZ2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1lKTsK
ICAgICBqaXQucG9rZShHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIsIEpJVFNUQUNL
RlJBTUVfQVJHU19JTkRFWCk7CiAgICAgaml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7CkBA
IC0xNTEsMTMgKzE1MSwxMyBAQCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICAgICBqaXQubG9h
ZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAogICAgICAgICAgICAgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+
KHNpemVvZihSZWdpc3RlcikpICogUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyksCisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpICogSlNTdGFjazo6UmV0
dXJuUEMpLAogICAgICAgICBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAg
IGppdC5zdG9yZVB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKDApLAog
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCiAgICAgICAgICAgICBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKiBSZWdpc3RlckZpbGU6OlJldHVyblBDKSk7CisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpICogSlNTdGFjazo6UmV0dXJuUEMp
KTsKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25QcmVzZXJ2ZWRO
b25SZXR1cm5HUFIpOwogICAgIGppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihH
UFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIGVtaXRQb2ludGVyVmFsaWRh
dGlvbihqaXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTI0OSwxOSArMjQ5LDE5IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbEZvclQKICAgICAgICAgR1BSSW5m
bzo6bm9uQXJnR1BSMSwKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAogICAgICAgICAg
ICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxw
dHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpICogUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluKSk7
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpICog
SlNTdGFjazo6U2NvcGVDaGFpbikpOwogI2Vsc2UKICAgICBqaXQuc3RvcmVQdHIoCiAgICAgICAg
IEdQUkluZm86Om5vbkFyZ0dQUjEsCiAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKICAg
ICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLAotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAqIFJlZ2lzdGVyRmlsZTo6U2NvcGVD
aGFpbiArCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3Rl
cikpICogSlNTdGFjazo6U2NvcGVDaGFpbiArCiAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CiAgICAgaml0LnN0b3Jl
MzIoCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
LAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCiAgICAgICAgICAgICBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgKiBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4gKworICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAqIEpTU3RhY2s6OlNjb3Bl
Q2hhaW4gKwogICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy50YWcpKSk7CiAjZW5kaWYKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksMTkgKzM5LDE5IEBAIHZvaWQgVmFsdWVTb3VyY2U6OmR1bXAoRklMRSogb3V0KSBjb25z
dAogICAgIGNhc2UgU291cmNlSXNEZWFkOgogICAgICAgICBmcHJpbnRmKG91dCwgIklzRGVhZCIp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZhbHVlSW5SZWdpc3RlckZpbGU6Ci0gICAgICAg
IGZwcmludGYob3V0LCAiSW5SZWdGaWxlIik7CisgICAgY2FzZSBWYWx1ZUluSlNTdGFjazoKKyAg
ICAgICAgZnByaW50ZihvdXQsICJJblN0YWNrIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SW50MzJJblJlZ2lzdGVyRmlsZToKKyAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICBm
cHJpbnRmKG91dCwgIkludDMyIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2VsbEluUmVn
aXN0ZXJGaWxlOgorICAgIGNhc2UgQ2VsbEluSlNTdGFjazoKICAgICAgICAgZnByaW50ZihvdXQs
ICJDZWxsIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQm9vbGVhbkluUmVnaXN0ZXJGaWxl
OgorICAgIGNhc2UgQm9vbGVhbkluSlNTdGFjazoKICAgICAgICAgZnByaW50ZihvdXQsICJCb29s
Iik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG91YmxlSW5SZWdpc3RlckZpbGU6CisgICAg
Y2FzZSBEb3VibGVJbkpTU3RhY2s6CiAgICAgICAgIGZwcmludGYob3V0LCAiRG91YmxlIik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXJndW1lbnRzU291cmNlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAkocmV2aXNpb24gMTMwNzE1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSwxMSArMzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBl
bnVtIFZhbHVlU291cmNlS2luZCB7CiAgICAgU291cmNlTm90U2V0LAotICAgIFZhbHVlSW5SZWdp
c3RlckZpbGUsCi0gICAgSW50MzJJblJlZ2lzdGVyRmlsZSwKLSAgICBDZWxsSW5SZWdpc3RlckZp
bGUsCi0gICAgQm9vbGVhbkluUmVnaXN0ZXJGaWxlLAotICAgIERvdWJsZUluUmVnaXN0ZXJGaWxl
LAorICAgIFZhbHVlSW5KU1N0YWNrLAorICAgIEludDMySW5KU1N0YWNrLAorICAgIENlbGxJbkpT
U3RhY2ssCisgICAgQm9vbGVhbkluSlNTdGFjaywKKyAgICBEb3VibGVJbkpTU3RhY2ssCiAgICAg
QXJndW1lbnRzU291cmNlLAogICAgIFNvdXJjZUlzRGVhZCwKICAgICBIYXZlTm9kZQpAQCAtNTMs
MzUgKzUzLDM1IEBAIHN0YXRpYyBpbmxpbmUgVmFsdWVTb3VyY2VLaW5kIGRhdGFGb3JtYXQKIHsK
ICAgICBzd2l0Y2ggKGRhdGFGb3JtYXQpIHsKICAgICBjYXNlIERhdGFGb3JtYXRJbnRlZ2VyOgot
ICAgICAgICByZXR1cm4gSW50MzJJblJlZ2lzdGVyRmlsZTsKKyAgICAgICAgcmV0dXJuIEludDMy
SW5KU1N0YWNrOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKLSAgICAgICAgcmV0dXJuIERv
dWJsZUluUmVnaXN0ZXJGaWxlOworICAgICAgICByZXR1cm4gRG91YmxlSW5KU1N0YWNrOwogICAg
IGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46Ci0gICAgICAgIHJldHVybiBCb29sZWFuSW5SZWdpc3Rl
ckZpbGU7CisgICAgICAgIHJldHVybiBCb29sZWFuSW5KU1N0YWNrOwogICAgIGNhc2UgRGF0YUZv
cm1hdENlbGw6Ci0gICAgICAgIHJldHVybiBDZWxsSW5SZWdpc3RlckZpbGU7CisgICAgICAgIHJl
dHVybiBDZWxsSW5KU1N0YWNrOwogICAgIGNhc2UgRGF0YUZvcm1hdERlYWQ6CiAgICAgICAgIHJl
dHVybiBTb3VyY2VJc0RlYWQ7CiAgICAgY2FzZSBEYXRhRm9ybWF0QXJndW1lbnRzOgogICAgICAg
ICByZXR1cm4gQXJndW1lbnRzU291cmNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVChk
YXRhRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgcmV0dXJuIFZhbHVlSW5SZWdpc3Rl
ckZpbGU7CisgICAgICAgIHJldHVybiBWYWx1ZUluSlNTdGFjazsKICAgICB9CiB9CiAKIHN0YXRp
YyBpbmxpbmUgRGF0YUZvcm1hdCB2YWx1ZVNvdXJjZUtpbmRUb0RhdGFGb3JtYXQoVmFsdWVTb3Vy
Y2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBWYWx1ZUluUmVn
aXN0ZXJGaWxlOgorICAgIGNhc2UgVmFsdWVJbkpTU3RhY2s6CiAgICAgICAgIHJldHVybiBEYXRh
Rm9ybWF0SlM7Ci0gICAgY2FzZSBJbnQzMkluUmVnaXN0ZXJGaWxlOgorICAgIGNhc2UgSW50MzJJ
bkpTU3RhY2s6CiAgICAgICAgIHJldHVybiBEYXRhRm9ybWF0SW50ZWdlcjsKLSAgICBjYXNlIENl
bGxJblJlZ2lzdGVyRmlsZToKKyAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgIHJldHVy
biBEYXRhRm9ybWF0Q2VsbDsKLSAgICBjYXNlIEJvb2xlYW5JblJlZ2lzdGVyRmlsZToKKyAgICBj
YXNlIEJvb2xlYW5JbkpTU3RhY2s6CiAgICAgICAgIHJldHVybiBEYXRhRm9ybWF0Qm9vbGVhbjsK
LSAgICBjYXNlIERvdWJsZUluUmVnaXN0ZXJGaWxlOgorICAgIGNhc2UgRG91YmxlSW5KU1N0YWNr
OgogICAgICAgICByZXR1cm4gRGF0YUZvcm1hdERvdWJsZTsKICAgICBjYXNlIEFyZ3VtZW50c1Nv
dXJjZToKICAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRBcmd1bWVudHM7CkBAIC05Miw3ICs5Miw3
IEBAIHN0YXRpYyBpbmxpbmUgRGF0YUZvcm1hdCB2YWx1ZVNvdXJjZUtpbmQKICAgICB9CiB9CiAK
LXN0YXRpYyBpbmxpbmUgYm9vbCBpc0luUmVnaXN0ZXJGaWxlKFZhbHVlU291cmNlS2luZCBraW5k
KQorc3RhdGljIGlubGluZSBib29sIGlzSW5KU1N0YWNrKFZhbHVlU291cmNlS2luZCBraW5kKQog
ewogICAgIERhdGFGb3JtYXQgZm9ybWF0ID0gdmFsdWVTb3VyY2VLaW5kVG9EYXRhRm9ybWF0KGtp
bmQpOwogICAgIHJldHVybiBmb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUgJiYgZm9ybWF0IDwgRGF0
YUZvcm1hdE9TUk1hcmtlcjsKQEAgLTEyOSwxMiArMTI5LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgVmFsdWVTb3VyY2UgZm9yU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikK
ICAgICB7CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCi0gICAg
ICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoSW50MzJJblJlZ2lzdGVyRmlsZSk7CisgICAgICAg
ICAgICByZXR1cm4gVmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2spOwogICAgICAgICBpZiAoaXNB
cnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3Rp
b24pKQotICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKENlbGxJblJlZ2lzdGVyRmlsZSk7
CisgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFjayk7CiAgICAgICAg
IGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAgICAgIHJldHVy
biBWYWx1ZVNvdXJjZShCb29sZWFuSW5SZWdpc3RlckZpbGUpOwotICAgICAgICByZXR1cm4gVmFs
dWVTb3VyY2UoVmFsdWVJblJlZ2lzdGVyRmlsZSk7CisgICAgICAgICAgICByZXR1cm4gVmFsdWVT
b3VyY2UoQm9vbGVhbkluSlNTdGFjayk7CisgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShWYWx1
ZUluSlNTdGFjayk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBWYWx1ZVNvdXJjZSBmb3JEYXRh
Rm9ybWF0KERhdGFGb3JtYXQgZGF0YUZvcm1hdCkKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBraW5kRnJvbU5vZGVJbmRleChtX25vZGVJbmRleCk7CiAgICAgfQog
ICAgIAotICAgIGJvb2wgaXNJblJlZ2lzdGVyRmlsZSgpIGNvbnN0IHsgcmV0dXJuIEpTQzo6REZH
Ojppc0luUmVnaXN0ZXJGaWxlKGtpbmQoKSk7IH0KKyAgICBib29sIGlzSW5KU1N0YWNrKCkgY29u
c3QgeyByZXR1cm4gSlNDOjpERkc6OmlzSW5KU1N0YWNrKGtpbmQoKSk7IH0KICAgICBib29sIGlz
VHJpdmlhbGx5UmVjb3ZlcmFibGUoKSBjb25zdCB7IHJldHVybiBKU0M6OkRGRzo6aXNUcml2aWFs
bHlSZWNvdmVyYWJsZShraW5kKCkpOyB9CiAgICAgCiAgICAgRGF0YUZvcm1hdCBkYXRhRm9ybWF0
KCkgY29uc3QKQEAgLTE2NCwyMCArMTY0LDIwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFT
U0VSVChpc1RyaXZpYWxseVJlY292ZXJhYmxlKCkpOwogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkg
ewotICAgICAgICBjYXNlIFZhbHVlSW5SZWdpc3RlckZpbGU6Ci0gICAgICAgICAgICByZXR1cm4g
VmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluUmVnaXN0ZXJGaWxlKCk7CisgICAgICAgIGNhc2UgVmFs
dWVJbkpTU3RhY2s6CisgICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUlu
SlNTdGFjaygpOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgSW50MzJJblJlZ2lzdGVyRmls
ZToKLSAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5SZWdpc3RlckZp
bGVBc1VuYm94ZWRJbnQzMigpOworICAgICAgICBjYXNlIEludDMySW5KU1N0YWNrOgorICAgICAg
ICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQz
MigpOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQ2VsbEluUmVnaXN0ZXJGaWxlOgotICAg
ICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJblJlZ2lzdGVyRmlsZUFzVW5i
b3hlZENlbGwoKTsKKyAgICAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgorICAgICAgICAgICAgcmV0
dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgY2FzZSBCb29sZWFuSW5SZWdpc3RlckZpbGU6Ci0gICAgICAgICAg
ICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkQm9v
bGVhbigpOworICAgICAgICBjYXNlIEJvb2xlYW5JbkpTU3RhY2s6CisgICAgICAgICAgICByZXR1
cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW4oKTsKICAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIERvdWJsZUluUmVnaXN0ZXJGaWxlOgotICAgICAgICAg
ICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJblJlZ2lzdGVyRmlsZUFzVW5ib3hlZERv
dWJsZSgpOworICAgICAgICBjYXNlIERvdWJsZUluSlNTdGFjazoKKyAgICAgICAgICAgIHJldHVy
biBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBTb3VyY2VJc0RlYWQ6CiAgICAgICAgICAgICByZXR1cm4g
VmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAJKHJl
dmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVF
dmVudFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBWYXJp
YWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICBpZiAoIWluZGV4KSB7CiAgICAgICAg
IHZhbHVlUmVjb3ZlcmllcyA9IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+KGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpLCBudW1WYXJpYWJsZXMpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZhbHVlUmVjb3Zlcmllcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zl
cmllc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJblJlZ2lzdGVyRmlsZSgpOworICAgICAg
ICAgICAgdmFsdWVSZWNvdmVyaWVzW2ldID0gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFj
aygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMjgwLDcgKzI4MCw3IEBAIHZv
aWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9Ci0gICAgICAgICAgICBWYWx1ZVJlY292ZXJ5
OjpkaXNwbGFjZWRJblJlZ2lzdGVyRmlsZShzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGlu
Zm8tPnUudmlydHVhbFJlZyksIGluZm8tPmZvcm1hdCk7CisgICAgICAgICAgICBWYWx1ZVJlY292
ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihpbmZv
LT51LnZpcnR1YWxSZWcpLCBpbmZvLT5mb3JtYXQpOwogICAgIH0KIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUsMTkgKzM5NSwx
OSBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplCiAgICAgbV9zbG90
VmlzaXRvci5maW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCk7CiB9CiAKLWlubGluZSBS
ZWdpc3RlckZpbGUmIEhlYXA6OnJlZ2lzdGVyRmlsZSgpCitpbmxpbmUgSlNTdGFjayYgSGVhcDo6
c3RhY2soKQogewotICAgIHJldHVybiBtX2dsb2JhbERhdGEtPmludGVycHJldGVyLT5yZWdpc3Rl
ckZpbGUoKTsKKyAgICByZXR1cm4gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+c3RhY2soKTsK
IH0KIAogdm9pZCBIZWFwOjpnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlND
ZWxsKj4mIHJvb3RzKQogewogICAgIEFTU0VSVChpc1ZhbGlkVGhyZWFkU3RhdGUobV9nbG9iYWxE
YXRhKSk7Ci0gICAgQ29uc2VydmF0aXZlUm9vdHMgcmVnaXN0ZXJGaWxlUm9vdHMoJm1fb2JqZWN0
U3BhY2UuYmxvY2tzKCksICZtX3N0b3JhZ2VTcGFjZSk7Ci0gICAgcmVnaXN0ZXJGaWxlKCkuZ2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMocmVnaXN0ZXJGaWxlUm9vdHMpOwotICAgIHNpemVfdCByZWdp
c3RlckZpbGVSb290Q291bnQgPSByZWdpc3RlckZpbGVSb290cy5zaXplKCk7Ci0gICAgSlNDZWxs
KiogcmVnaXN0ZXJSb290cyA9IHJlZ2lzdGVyRmlsZVJvb3RzLnJvb3RzKCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZWdpc3RlckZpbGVSb290Q291bnQ7IGkrKykgeworICAgIENvbnNl
cnZhdGl2ZVJvb3RzIHN0YWNrUm9vdHMoJm1fb2JqZWN0U3BhY2UuYmxvY2tzKCksICZtX3N0b3Jh
Z2VTcGFjZSk7CisgICAgc3RhY2soKS5nYXRoZXJDb25zZXJ2YXRpdmVSb290cyhzdGFja1Jvb3Rz
KTsKKyAgICBzaXplX3Qgc3RhY2tSb290Q291bnQgPSBzdGFja1Jvb3RzLnNpemUoKTsKKyAgICBK
U0NlbGwqKiByZWdpc3RlclJvb3RzID0gc3RhY2tSb290cy5yb290cygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RhY2tSb290Q291bnQ7IGkrKykgewogICAgICAgICBzZXRNYXJrZWQo
cmVnaXN0ZXJSb290c1tpXSk7CiAgICAgICAgIHJvb3RzLmFkZChyZWdpc3RlclJvb3RzW2ldKTsK
ICAgICB9CkBAIC00MzYsMTIgKzQzNiwxMiBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhib29sIGZ1
bGxHQykKICAgICAgICAgbV9tYWNoaW5lVGhyZWFkcy5nYXRoZXJDb25zZXJ2YXRpdmVSb290cyht
YWNoaW5lVGhyZWFkUm9vdHMsICZkdW1teSk7CiAgICAgfQogCi0gICAgQ29uc2VydmF0aXZlUm9v
dHMgcmVnaXN0ZXJGaWxlUm9vdHMoJm1fb2JqZWN0U3BhY2UuYmxvY2tzKCksICZtX3N0b3JhZ2VT
cGFjZSk7CisgICAgQ29uc2VydmF0aXZlUm9vdHMgc3RhY2tSb290cygmbV9vYmplY3RTcGFjZS5i
bG9ja3MoKSwgJm1fc3RvcmFnZVNwYWNlKTsKICAgICBtX2RmZ0NvZGVCbG9ja3MuY2xlYXJNYXJr
cygpOwogICAgIHsKLSAgICAgICAgR0NQSEFTRShHYXRoZXJSZWdpc3RlckZpbGVSb290cyk7Ci0g
ICAgICAgIHJlZ2lzdGVyRmlsZSgpLmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKAotICAgICAgICAg
ICAgcmVnaXN0ZXJGaWxlUm9vdHMsIG1faml0U3R1YlJvdXRpbmVzLCBtX2RmZ0NvZGVCbG9ja3Mp
OworICAgICAgICBHQ1BIQVNFKEdhdGhlclN0YWNrUm9vdHMpOworICAgICAgICBzdGFjaygpLmdh
dGhlckNvbnNlcnZhdGl2ZVJvb3RzKAorICAgICAgICAgICAgc3RhY2tSb290cywgbV9qaXRTdHVi
Um91dGluZXMsIG1fZGZnQ29kZUJsb2Nrcyk7CiAgICAgfQogCiAjaWYgRU5BQkxFKERGR19KSVQp
CkBAIC00OTYsOSArNDk2LDkgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoYm9vbCBmdWxsR0MpCiAg
ICAgICAgICAgICB2aXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiAgICAgICAgIH0KICAgICAgICAg
ewotICAgICAgICAgICAgR0NQSEFTRShWaXNpdFJlZ2lzdGVyRmlsZVJvb3RzKTsKLSAgICAgICAg
ICAgIE1BUktfTE9HX1JPT1QodmlzaXRvciwgIlJlZ2lzdGVyIEZpbGUiKTsKLSAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKHJlZ2lzdGVyRmlsZVJvb3RzKTsKKyAgICAgICAgICAgIEdDUEhBU0Uo
VmlzaXRTdGFja1Jvb3RzKTsKKyAgICAgICAgICAgIE1BUktfTE9HX1JPT1QodmlzaXRvciwgIlN0
YWNrIik7CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChzdGFja1Jvb3RzKTsKICAgICAgICAg
ICAgIHZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKICAgICAgICAgfQogI2lmIEVOQUJMRShERkdf
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTMwNzE1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSwxMSArNTUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSklUU3R1YlJvdXRpbmU7
CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKKyAgICBjbGFzcyBK
U1N0YWNrOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9y
OwogICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1
bWVudEJ1ZmZlcjsKLSAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgV2Vha0dDSGFu
ZGxlUG9vbDsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKIApAQCAtMjEwLDcgKzIxMCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHpvbWJpZnlEZWFkT2JqZWN0cygpOwogICAgICAg
ICB2b2lkIG1hcmtEZWFkT2JqZWN0cygpOwogCi0gICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0
ZXJGaWxlKCk7CisgICAgICAgIEpTU3RhY2smIHN0YWNrKCk7CiAgICAgICAgIEJsb2NrQWxsb2Nh
dG9yJiBibG9ja0FsbG9jYXRvcigpOwogCiAgICAgICAgIGNvbnN0IEhlYXBUeXBlIG1faGVhcFR5
cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAkocmV2aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDkgKzQzLDkgQEAgdm9p
ZCBDYWxsRnJhbWU6OmR1bXBDYWxsZXIoKQogICAgIGRhdGFMb2coIkNhbGxwb2ludCA9PiAlczol
ZFxuIiwgdXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCksIHNpZ25lZExpbmVOdW1iZXIpOwogfQogCi1S
ZWdpc3RlckZpbGUqIENhbGxGcmFtZTo6cmVnaXN0ZXJGaWxlKCkKK0pTU3RhY2sqIENhbGxGcmFt
ZTo6c3RhY2soKQogewotICAgIHJldHVybiAmaW50ZXJwcmV0ZXIoKS0+cmVnaXN0ZXJGaWxlKCk7
CisgICAgcmV0dXJuICZpbnRlcnByZXRlcigpLT5zdGFjaygpOwogfQogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlz
aW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogCiAjaW5jbHVkZSAiQWJzdHJh
Y3RQQy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTU3RhY2suaCIK
ICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKLSNpbmNsdWRlICJSZWdpc3RlckZp
bGUuaCIKIAogbmFtZXNwYWNlIEpTQyAgewogCkBAIC0zOSwxMyArMzksMTMgQEAgbmFtZXNwYWNl
IEpTQyAgewogICAgIC8vIFBhc3NlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gbW9zdCBmdW5j
dGlvbnMuCiAgICAgY2xhc3MgRXhlY1N0YXRlIDogcHJpdmF0ZSBSZWdpc3RlciB7CiAgICAgcHVi
bGljOgotICAgICAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUoKSBjb25zdCB7IHJldHVybiB0aGlz
W1JlZ2lzdGVyRmlsZTo6Q2FsbGVlXS5qc1ZhbHVlKCk7IH0KLSAgICAgICAgSlNPYmplY3QqIGNh
bGxlZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpDYWxsZWVdLmZ1bmN0aW9u
KCk7IH0KLSAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiB0aGlz
W1JlZ2lzdGVyRmlsZTo6Q29kZUJsb2NrXS5SZWdpc3Rlcjo6Y29kZUJsb2NrKCk7IH0KKyAgICAg
ICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gdGhpc1tKU1N0YWNrOjpD
YWxsZWVdLmpzVmFsdWUoKTsgfQorICAgICAgICBKU09iamVjdCogY2FsbGVlKCkgY29uc3QgeyBy
ZXR1cm4gdGhpc1tKU1N0YWNrOjpDYWxsZWVdLmZ1bmN0aW9uKCk7IH0KKyAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiB0aGlzW0pTU3RhY2s6OkNvZGVCbG9ja10u
UmVnaXN0ZXI6OmNvZGVCbG9jaygpOyB9CiAgICAgICAgIEpTU2NvcGUqIHNjb3BlKCkgY29uc3QK
ICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHRoaXNbUmVnaXN0ZXJGaWxlOjpTY29wZUNo
YWluXS5SZWdpc3Rlcjo6c2NvcGUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpc1tSZWdpc3Rl
ckZpbGU6OlNjb3BlQ2hhaW5dLlJlZ2lzdGVyOjpzY29wZSgpOworICAgICAgICAgICAgQVNTRVJU
KHRoaXNbSlNTdGFjazo6U2NvcGVDaGFpbl0uUmVnaXN0ZXI6OnNjb3BlKCkpOworICAgICAgICAg
ICAgcmV0dXJuIHRoaXNbSlNTdGFjazo6U2NvcGVDaGFpbl0uUmVnaXN0ZXI6OnNjb3BlKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBHbG9iYWwgb2JqZWN0IGluIHdoaWNoIGV4ZWN1dGlvbiBi
ZWdhbi4KQEAgLTEwMiwxMSArMTAyLDExIEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBD
YWxsRnJhbWUmIG9wZXJhdG9yPShjb25zdCBSZWdpc3RlciYgcikgeyAqc3RhdGljX2Nhc3Q8UmVn
aXN0ZXIqPih0aGlzKSA9IHI7IHJldHVybiAqdGhpczsgfQogCi0gICAgICAgIENhbGxGcmFtZSog
Y2FsbGVyRnJhbWUoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJh
bWVdLmNhbGxGcmFtZSgpOyB9CisgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUoKSBjb25z
dCB7IHJldHVybiB0aGlzW0pTU3RhY2s6OkNhbGxlckZyYW1lXS5jYWxsRnJhbWUoKTsgfQogI2lm
IEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKLSAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5QQygpIGNvbnN0IHsgcmV0dXJuIFJldHVybkFkZHJlc3NQdHIodGhpc1tSZWdpc3RlckZp
bGU6OlJldHVyblBDXS52UEMoKSk7IH0KLSAgICAgICAgYm9vbCBoYXNSZXR1cm5QQygpIGNvbnN0
IHsgcmV0dXJuICEhdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQotICAgICAg
ICB2b2lkIGNsZWFyUmV0dXJuUEMoKSB7IHJlZ2lzdGVycygpW1JlZ2lzdGVyRmlsZTo6UmV0dXJu
UENdID0gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigwKTsgfQorICAgICAgICBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVyblBDKCkgY29uc3QgeyByZXR1cm4gUmV0dXJuQWRkcmVzc1B0cih0aGlzW0pT
U3RhY2s6OlJldHVyblBDXS52UEMoKSk7IH0KKyAgICAgICAgYm9vbCBoYXNSZXR1cm5QQygpIGNv
bnN0IHsgcmV0dXJuICEhdGhpc1tKU1N0YWNrOjpSZXR1cm5QQ10udlBDKCk7IH0KKyAgICAgICAg
dm9pZCBjbGVhclJldHVyblBDKCkgeyByZWdpc3RlcnMoKVtKU1N0YWNrOjpSZXR1cm5QQ10gPSBz
dGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KDApOyB9CiAjZW5kaWYKICAgICAgICAgQWJzdHJhY3RQ
QyBhYnN0cmFjdFJldHVyblBDKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkgeyByZXR1cm4gQWJz
dHJhY3RQQyhnbG9iYWxEYXRhLCB0aGlzKTsgfQogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0x
MTYsMTMgKzExNiwxMyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVChjb2RlQmxvY2soKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6
OkFyZ3VtZW50Q291bnRdLnRhZygpOworICAgICAgICAgICAgcmV0dXJuIHRoaXNbSlNTdGFjazo6
QXJndW1lbnRDb3VudF0udGFnKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQg
c2V0Qnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKHVuc2lnbmVkIG9mZnNldCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKGNvZGVCbG9jaygpKTsKLSAgICAgICAgICAgIHRoaXNbUmVn
aXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XS50YWcoKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KG9m
ZnNldCk7CisgICAgICAgICAgICB0aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnRhZygpID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTEz
Niw4ICsxMzYsOCBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIFJlZ2lzdGVyKiBmcmFtZUV4
dGVudEludGVybmFsKCk7CiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgICAgIElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3Rl
ckZpbGU6OlJldHVyblBDXS5hc0lubGluZUNhbGxGcmFtZSgpOyB9Ci0gICAgICAgIHVuc2lnbmVk
IGNvZGVPcmlnaW5JbmRleEZvckRGRygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxl
OjpBcmd1bWVudENvdW50XS50YWcoKTsgfQorICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbSlNTdGFjazo6UmV0dXJuUENdLmFzSW5s
aW5lQ2FsbEZyYW1lKCk7IH0KKyAgICAgICAgdW5zaWduZWQgY29kZU9yaWdpbkluZGV4Rm9yREZH
KCkgY29uc3QgeyByZXR1cm4gdGhpc1tKU1N0YWNrOjpBcmd1bWVudENvdW50XS50YWcoKTsgfQog
I2Vsc2UKICAgICAgICAgLy8gVGhpcyB3aWxsIG5ldmVyIGJlIGNhbGxlZCBpZiAhRU5BQkxFKERG
R19KSVQpIHNpbmNlIGFsbCBjYWxscyBzaG91bGQgYmUgZ3VhcmRlZCBieQogICAgICAgICAvLyBp
c0lubGluZUNhbGxGcmFtZSgpLiBCdXQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gd3JpdGUgY29kZSB3
aXRob3V0IGhhdmluZyBhIGJ1bmNoIG9mCkBAIC0xNTEsMjUgKzE1MSwyNSBAQCBuYW1lc3BhY2Ug
SlNDICB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRWUEMoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PEluc3RydWN0aW9uKj4odGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsK
KyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW0pTU3Rh
Y2s6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIHNldEN1
cnJlbnRWUEMoSW5zdHJ1Y3Rpb24qIHZwYykKICAgICAgICAgewotICAgICAgICAgICAgdGhpc1tS
ZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+
KHZwYyk7CisgICAgICAgICAgICB0aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnRhZygpID0g
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHZwYyk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIElu
c3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0Q3VycmVudFZQ
QyhJbnN0cnVjdGlvbiogdnBjKTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJh
bWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMp
W1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0KLSAgICAgICAgdm9p
ZCBzZXRTY29wZShKU1Njb3BlKiBzY29wZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMp
W1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZTsgfQorICAgICAgICB2b2lkIHNldENh
bGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIq
Pih0aGlzKVtKU1N0YWNrOjpDYWxsZXJGcmFtZV0gPSBjYWxsZXJGcmFtZTsgfQorICAgICAgICB2
b2lkIHNldFNjb3BlKEpTU2NvcGUqIHNjb3BlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhp
cylbSlNTdGFjazo6U2NvcGVDaGFpbl0gPSBzY29wZTsgfQogCiAgICAgICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBpbml0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDLCBKU1Nj
b3BlKiBzY29wZSwKICAgICAgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIGludCBhcmdj
LCBKU09iamVjdCogY2FsbGVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY2FsbGVy
RnJhbWUpOyAvLyBVc2Ugbm9DYWxsZXIoKSByYXRoZXIgdGhhbiAwIGZvciB0aGUgb3V0ZXIgaG9z
dCBjYWxsIGZyYW1lIGNhbGxlci4KLSAgICAgICAgICAgIEFTU0VSVChjYWxsZXJGcmFtZSA9PSBu
b0NhbGxlcigpIHx8IGNhbGxlckZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpLT5yZWdp
c3RlckZpbGUoKS0+ZW5kKCkgPj0gdGhpcyk7CisgICAgICAgICAgICBBU1NFUlQoY2FsbGVyRnJh
bWUgPT0gbm9DYWxsZXIoKSB8fCBjYWxsZXJGcmFtZS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWco
KS0+c3RhY2soKS0+ZW5kKCkgPj0gdGhpcyk7CiAKICAgICAgICAgICAgIHNldENvZGVCbG9jayhj
b2RlQmxvY2spOwogICAgICAgICAgICAgc2V0U2NvcGUoc2NvcGUpOwpAQCAtMTg2LDcgKzE4Niw3
IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICAvLyBBY2Nlc3MgdG8gYXJndW1lbnRzIGFz
IHBhc3NlZC4gKEFmdGVyIGNhcHR1cmUsIGFyZ3VtZW50cyBtYXkgbW92ZSB0byBhIGRpZmZlcmVu
dCBsb2NhdGlvbi4pCiAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50KCkgY29uc3QgeyByZXR1
cm4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSAtIDE7IH0KLSAgICAgICAgc2l6ZV90IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZp
bGU6OkFyZ3VtZW50Q291bnRdLnBheWxvYWQoKTsgfQorICAgICAgICBzaXplX3QgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSBjb25zdCB7IHJldHVybiB0aGlzW0pTU3RhY2s6OkFyZ3VtZW50
Q291bnRdLnBheWxvYWQoKTsgfQogICAgICAgICBzdGF0aWMgaW50IGFyZ3VtZW50T2Zmc2V0KGlu
dCBhcmd1bWVudCkgeyByZXR1cm4gc19maXJzdEFyZ3VtZW50T2Zmc2V0IC0gYXJndW1lbnQ7IH0K
ICAgICAgICAgc3RhdGljIGludCBhcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoaW50IGFyZ3Vt
ZW50KSB7IHJldHVybiBzX3RoaXNBcmd1bWVudE9mZnNldCAtIGFyZ3VtZW50OyB9CiAKQEAgLTIx
Niw3ICsyMTYsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAgICAgICAgSlNWYWx1ZSBhcmd1bWVu
dEFmdGVyQ2FwdHVyZShzaXplX3QgYXJndW1lbnQpOwogCi0gICAgICAgIHN0YXRpYyBpbnQgb2Zm
c2V0Rm9yKHNpemVfdCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeyByZXR1cm4gYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7
IH0KKyAgICAgICAgc3RhdGljIGludCBvZmZzZXRGb3Ioc2l6ZV90IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSB7IHJldHVybiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIEpTU3RhY2s6
OkNhbGxGcmFtZUhlYWRlclNpemU7IH0KIAogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNl
LgogICAgICAgICBpbnQgaG9zdFRoaXNSZWdpc3RlcigpIHsgcmV0dXJuIHRoaXNBcmd1bWVudE9m
ZnNldCgpOyB9CkBAIC0yMjgsMTUgKzIyOCwxNSBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAg
IENhbGxGcmFtZSogYWRkSG9zdENhbGxGcmFtZUZsYWcoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PENhbGxGcmFtZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRoaXMpIHwg
SG9zdENhbGxGcmFtZUZsYWcpOyB9CiAgICAgICAgIENhbGxGcmFtZSogcmVtb3ZlSG9zdENhbGxG
cmFtZUZsYWcoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PENhbGxGcmFtZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KHRoaXMpICYgfkhvc3RDYWxsRnJhbWVGbGFnKTsgfQogCi0gICAg
ICAgIHZvaWQgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoaW50IGNvdW50KSB7IHN0YXRp
Y19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XS5wYXls
b2FkKCkgPSBjb3VudDsgfQotICAgICAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVl
KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpDYWxsZWVdID0g
UmVnaXN0ZXI6OndpdGhDYWxsZWUoY2FsbGVlKTsgfQotICAgICAgICB2b2lkIHNldENvZGVCbG9j
ayhDb2RlQmxvY2sqIGNvZGVCbG9jaykgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1Jl
Z2lzdGVyRmlsZTo6Q29kZUJsb2NrXSA9IGNvZGVCbG9jazsgfQotICAgICAgICB2b2lkIHNldFJl
dHVyblBDKHZvaWQqIHZhbHVlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0
ZXJGaWxlOjpSZXR1cm5QQ10gPSAoSW5zdHJ1Y3Rpb24qKXZhbHVlOyB9CisgICAgICAgIHZvaWQg
c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoaW50IGNvdW50KSB7IHN0YXRpY19jYXN0PFJl
Z2lzdGVyKj4odGhpcylbSlNTdGFjazo6QXJndW1lbnRDb3VudF0ucGF5bG9hZCgpID0gY291bnQ7
IH0KKyAgICAgICAgdm9pZCBzZXRDYWxsZWUoSlNPYmplY3QqIGNhbGxlZSkgeyBzdGF0aWNfY2Fz
dDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OkNhbGxlZV0gPSBSZWdpc3Rlcjo6d2l0aENhbGxl
ZShjYWxsZWUpOyB9CisgICAgICAgIHZvaWQgc2V0Q29kZUJsb2NrKENvZGVCbG9jayogY29kZUJs
b2NrKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6Q29kZUJsb2NrXSA9
IGNvZGVCbG9jazsgfQorICAgICAgICB2b2lkIHNldFJldHVyblBDKHZvaWQqIHZhbHVlKSB7IHN0
YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6UmV0dXJuUENdID0gKEluc3RydWN0
aW9uKil2YWx1ZTsgfQogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgYm9v
bCBpc0lubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRJbmxpbmVD
YWxsRnJhbWUoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpIHsgc3RhdGljX2Nhc3Q8
UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlJldHVyblBDXSA9IGlubGluZUNhbGxGcmFt
ZTsgfQorICAgICAgICB2b2lkIHNldElubGluZUNhbGxGcmFtZShJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OlJl
dHVyblBDXSA9IGlubGluZUNhbGxGcmFtZTsgfQogICAgICAgICAKICAgICAgICAgLy8gQ2FsbCB0
aGlzIHRvIGdldCB0aGUgc2VtYW50aWNhbGx5IGNvcnJlY3QgSlMgQ2FsbEZyYW1lKiBmb3IgdGhl
CiAgICAgICAgIC8vIGN1cnJlbnRseSBleGVjdXRpbmcgZnVuY3Rpb24uCkBAIC0yNjksMTEgKzI2
OSwxMSBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMg
Y29uc3QgaW50cHRyX3QgSG9zdENhbGxGcmFtZUZsYWcgPSAxOwotICAgICAgICBzdGF0aWMgY29u
c3QgaW50IHNfdGhpc0FyZ3VtZW50T2Zmc2V0ID0gLTEgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFt
ZUhlYWRlclNpemU7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc190aGlzQXJndW1lbnRPZmZz
ZXQgPSAtMSAtIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgc19maXJzdEFyZ3VtZW50T2Zmc2V0ID0gc190aGlzQXJndW1lbnRPZmZzZXQgLSAx
OwogCiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSgp
OworICAgICAgICBKU1N0YWNrKiBzdGFjaygpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgICAgIGJvb2wgaXNJbmxpbmVDYWxsRnJhbWVTbG93KCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDEwICs4OCwxMCBAQCBzdGF0aWMgaW50IGRlcHRo
KENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAgICAgcmV0dXJuIHNjLT5sb2NhbERlcHRoKCk7CiB9
CiAKLUFMV0FZU19JTkxJTkUgQ2FsbEZyYW1lKiBJbnRlcnByZXRlcjo6c2xpZGVSZWdpc3Rlcldp
bmRvd0ZvckNhbGwoQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2ssIFJlZ2lzdGVyRmlsZSogcmVnaXN0
ZXJGaWxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgc2l6ZV90IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCitBTFdBWVNfSU5MSU5FIENhbGxGcmFtZSogSW50
ZXJwcmV0ZXI6OnNsaWRlUmVnaXN0ZXJXaW5kb3dGb3JDYWxsKENvZGVCbG9jayogbmV3Q29kZUJs
b2NrLCBKU1N0YWNrKiBzdGFjaywgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHNpemVfdCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQogewogICAgIC8vIFRoaXMg
ZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8g
YXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgotICAgIGlmICghcmVnaXN0ZXJGaWxlLT5n
cm93KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyByZWdpc3Rlck9mZnNldCArIG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykp
CisgICAgaWYgKCFzdGFjay0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgcmVnaXN0ZXJP
ZmZzZXQgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA+PSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgewpA
QCAtMTYzLDE1ICsxNjMsMTUgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbGVyRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEFT
U0VSVChpc1ZhbGlkVGhpc09iamVjdCh0aGlzVmFsdWUsIGNhbGxGcmFtZSkpOwogICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
OwotICAgIHJldHVybiBpbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLCBjYWxsRnJhbWUsIHRoaXNW
YWx1ZSwgY2FsbGVyU2NvcGVDaGFpbiwgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIGludGVycHJl
dGVyLT5yZWdpc3RlckZpbGUoKS5iZWdpbigpICsgMSArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1l
SGVhZGVyU2l6ZSk7CisgICAgcmV0dXJuIGludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxG
cmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29wZUNoYWluLCBjYWxsRnJhbWUtPnJlZ2lzdGVycygp
IC0gaW50ZXJwcmV0ZXItPnN0YWNrKCkuYmVnaW4oKSArIDEgKyBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplKTsKIH0KIAotQ2FsbEZyYW1lKiBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Zh
bHVlIGFyZ3VtZW50cywgaW50IGZpcnN0RnJlZVJlZ2lzdGVyKQorQ2FsbEZyYW1lKiBsb2FkVmFy
YXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNTdGFjayogc3RhY2ssIEpTVmFsdWUgdGhpc1Zh
bHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgaW50IGZpcnN0RnJlZVJlZ2lzdGVyKQogewogICAgIGlm
ICghYXJndW1lbnRzKSB7IC8vIGYuYXBwbHkoeCwgYXJndW1lbnRzKSwgd2l0aCBhcmd1bWVudHMg
dW5tb2RpZmllZC4KICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0gICAgICAgIENhbGxG
cmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3Rl
cnMoKSArIGZpcnN0RnJlZVJlZ2lzdGVyICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBS
ZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUpOwotICAgICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyArIDEgfHwgIXJlZ2lz
dGVyRmlsZS0+Z3JvdyhuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgeworICAgICAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkgKyBmaXJzdEZyZWVSZWdpc3RlciArIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzICsgMSB8fCAhc3RhY2stPmdy
b3cobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+
Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJh
bWUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTE4NCw4ICsxODQsOCBA
QCBDYWxsRnJhbWUqIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyCiAgICAgfQogCiAgICAg
aWYgKGFyZ3VtZW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIENhbGxGcmFtZSog
bmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAr
IGZpcnN0RnJlZVJlZ2lzdGVyICsgMSArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZSk7Ci0gICAgICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KG5ld0NhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkpKSB7CisgICAgICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpj
cmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGZpcnN0RnJlZVJlZ2lzdGVyICsgMSArIEpT
U3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOworICAgICAgICBpZiAoIXN0YWNrLT5ncm93KG5l
d0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0yMDMsNyArMjAzLDcgQEAgQ2Fs
bEZyYW1lKiBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcgogICAgICAgICBBcmd1bWVudHMq
IGFyZ3NPYmplY3QgPSBhc0FyZ3VtZW50cyhhcmd1bWVudHMpOwogICAgICAgICB1bnNpZ25lZCBh
cmdDb3VudCA9IGFyZ3NPYmplY3QtPmxlbmd0aChjYWxsRnJhbWUpOwogICAgICAgICBDYWxsRnJh
bWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJz
KCkgKyBmaXJzdEZyZWVSZWdpc3RlciArIENhbGxGcmFtZTo6b2Zmc2V0Rm9yKGFyZ0NvdW50ICsg
MSkpOwotICAgICAgICBpZiAoYXJnQ291bnQgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyB8fCAh
cmVnaXN0ZXJGaWxlLT5ncm93KG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CisgICAgICAg
IGlmIChhcmdDb3VudCA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzIHx8ICFzdGFjay0+Z3Jvdyhu
ZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgewogICAgICAgICAgICAgY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMjE3LDcgKzIxNyw3IEBAIENh
bGxGcmFtZSogbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnIKICAgICAgICAgSlNBcnJheSog
YXJyYXkgPSBhc0FycmF5KGFyZ3VtZW50cyk7CiAgICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50ID0g
YXJyYXktPmxlbmd0aCgpOwogICAgICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxG
cmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBmaXJzdEZyZWVSZWdpc3RlciAr
IENhbGxGcmFtZTo6b2Zmc2V0Rm9yKGFyZ0NvdW50ICsgMSkpOwotICAgICAgICBpZiAoYXJnQ291
bnQgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyB8fCAhcmVnaXN0ZXJGaWxlLT5ncm93KG5ld0Nh
bGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CisgICAgICAgIGlmIChhcmdDb3VudCA+IEFyZ3VtZW50
czo6TWF4QXJndW1lbnRzIHx8ICFzdGFjay0+Z3JvdyhuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygp
KSkgewogICAgICAgICAgICAgY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgfQpAQCAtMjMwLDcgKzIzMCw3IEBAIENhbGxGcmFtZSogbG9hZFZhcmFyZ3MoQ2Fs
bEZyYW1lKiBjYWxsRnIKICAgICBKU09iamVjdCogYXJnT2JqZWN0ID0gYXNPYmplY3QoYXJndW1l
bnRzKTsKICAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGFyZ09iamVjdC0+Z2V0KGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihjYWxsRnJhbWUpOwog
ICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1l
LT5yZWdpc3RlcnMoKSArIGZpcnN0RnJlZVJlZ2lzdGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3Io
YXJnQ291bnQgKyAxKSk7Ci0gICAgaWYgKGFyZ0NvdW50ID4gQXJndW1lbnRzOjpNYXhBcmd1bWVu
dHMgfHwgIXJlZ2lzdGVyRmlsZS0+Z3JvdyhuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgewor
ICAgIGlmIChhcmdDb3VudCA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzIHx8ICFzdGFjay0+Z3Jv
dyhuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgewogICAgICAgICBjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMzAxLDggKzMwMSw4IEBAIHZvaWQgSW50ZXJw
cmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KICAgICBjb25zdCBSZWdpc3RlciogaXQ7CiAg
ICAgY29uc3QgUmVnaXN0ZXIqIGVuZDsKIAotICAgIGl0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMo
KSAtIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLSAgICBlbmQgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygp
IC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgIGl0ID0gY2FsbEZyYW1l
LT5yZWdpc3RlcnMoKSAtIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisgICAgZW5kID0gY2FsbEZyYW1lLT5yZWdp
c3RlcnMoKSAtIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgd2hpbGUgKGl0IDwg
ZW5kKSB7CiAgICAgICAgIEpTVmFsdWUgdiA9IGl0LT5qc1ZhbHVlKCk7CiAgICAgICAgIGludCBy
ZWdpc3Rlck51bWJlciA9IGl0IC0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKQEAgLTcxMCw3ICs3
MTAsNyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0CiAgICAgICAg
IFJlZ2lzdGVyKiBjYWxsZXJIaWdoV2F0ZXJNYXJrID0gY2FsbGVyRnJhbWUtPnJlZ2lzdGVycygp
ICsgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsKICAgICAgICAgaGlnaFdhdGVyTWFy
ayA9IG1heChoaWdoV2F0ZXJNYXJrLCBjYWxsZXJIaWdoV2F0ZXJNYXJrKTsKICAgICB9Ci0gICAg
bV9yZWdpc3RlckZpbGUuc2hyaW5rKGhpZ2hXYXRlck1hcmspOworICAgIG1fc3RhY2suc2hyaW5r
KGhpZ2hXYXRlck1hcmspOwogCiAgICAgLy8gVW53aW5kIHRoZSBzY29wZSBjaGFpbiB3aXRoaW4g
dGhlIGV4Y2VwdGlvbiBoYW5kbGVyJ3MgY2FsbCBmcmFtZS4KICAgICBKU1Njb3BlKiBzY29wZSA9
IGNhbGxGcmFtZS0+c2NvcGUoKTsKQEAgLTg2MywxMyArODYzLDEzIEBAIGZhaWxlZEpTT05QOgog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gJnByb2dyYW0tPmdlbmVyYXRlZEJ5dGVjb2RlKCk7
CiAKICAgICAvLyBSZXNlcnZlIHN0YWNrIHNwYWNlIGZvciB0aGlzIGludm9jYXRpb246Ci0gICAg
UmVnaXN0ZXIqIG9sZEVuZCA9IG1fcmVnaXN0ZXJGaWxlLmVuZCgpOwotICAgIFJlZ2lzdGVyKiBu
ZXdFbmQgPSBvbGRFbmQgKyBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIFJlZ2lzdGVyRmls
ZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7
Ci0gICAgaWYgKCFtX3JlZ2lzdGVyRmlsZS5ncm93KG5ld0VuZCkpCisgICAgUmVnaXN0ZXIqIG9s
ZEVuZCA9IG1fc3RhY2suZW5kKCk7CisgICAgUmVnaXN0ZXIqIG5ld0VuZCA9IG9sZEVuZCArIGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAr
IGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgaWYgKCFtX3N0YWNrLmdyb3co
bmV3RW5kKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93
RXJyb3IoY2FsbEZyYW1lKSk7CiAKICAgICAvLyBQdXNoIHRoZSBjYWxsIGZyYW1lIGZvciB0aGlz
IGludm9jYXRpb246Ci0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNy
ZWF0ZShvbGRFbmQgKyBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIFJlZ2lzdGVyRmlsZTo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxs
RnJhbWU6OmNyZWF0ZShvbGRFbmQgKyBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KICAgICBuZXdDYWxsRnJh
bWUtPmluaXQoY29kZUJsb2NrLCAwLCBzY29wZSwgQ2FsbEZyYW1lOjpub0NhbGxlcigpLCBjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSwgMCk7CiAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFs
dWUodGhpc09iaik7CkBAIC04ODMsMTEgKzg4MywxMSBAQCBmYWlsZWRKU09OUDoKICAgICB7CiAg
ICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQo
KSk7CiAKLSAgICAgICAgbV9yZWVudHJ5RGVwdGgrKzsgIAorICAgICAgICBtX3JlZW50cnlEZXB0
aCsrOwogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIHJlc3VsdCA9IExMSW50OjpD
TG9vcDo6ZXhlY3V0ZShuZXdDYWxsRnJhbWUsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOwogI2Vs
aWYgRU5BQkxFKEpJVCkKLSAgICAgICAgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklUQ29k
ZSgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIHNjb3BlLT5nbG9iYWxE
YXRhKCkpOworICAgICAgICByZXN1bHQgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCkuZXhl
Y3V0ZSgmbV9zdGFjaywgbmV3Q2FsbEZyYW1lLCBzY29wZS0+Z2xvYmFsRGF0YSgpKTsKICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQogCiAgICAgICAgIG1fcmVlbnRyeURlcHRoLS07CkBAIC04OTYsNyAr
ODk2LDcgQEAgZmFpbGVkSlNPTlA6CiAgICAgaWYgKFByb2ZpbGVyKiBwcm9maWxlciA9IGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+
ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIHByb2dyYW0tPnNvdXJjZVVSTCgpLCBwcm9ncmFtLT5saW5l
Tm8oKSk7CiAKLSAgICBtX3JlZ2lzdGVyRmlsZS5zaHJpbmsob2xkRW5kKTsKKyAgICBtX3N0YWNr
LnNocmluayhvbGRFbmQpOwogCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0K
QEAgLTkxMiwxMyArOTEyLDEzIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENh
bGxGcmEKICAgICBpZiAobV9yZWVudHJ5RGVwdGggPj0gTWF4U21hbGxUaHJlYWRSZWVudHJ5RGVw
dGggJiYgbV9yZWVudHJ5RGVwdGggPj0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkubWF4UmVlbnRy
eURlcHRoKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihjYWxsRnJhbWUpKTsKIAotICAgIFJlZ2lzdGVyKiBvbGRFbmQgPSBtX3JlZ2lzdGVyRmls
ZS5lbmQoKTsKKyAgICBSZWdpc3Rlciogb2xkRW5kID0gbV9zdGFjay5lbmQoKTsKICAgICBBU1NF
UlQoY2FsbEZyYW1lLT5mcmFtZUV4dGVudCgpIDw9IG9sZEVuZCB8fCBjYWxsRnJhbWUgPT0gY2Fs
bEZyYW1lLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKICAgICBpbnQg
YXJnQ291bnQgPSAxICsgYXJncy5zaXplKCk7IC8vIGltcGxpY2l0ICJ0aGlzIiBwYXJhbWV0ZXIK
LSAgICBzaXplX3QgcmVnaXN0ZXJPZmZzZXQgPSBhcmdDb3VudCArIFJlZ2lzdGVyRmlsZTo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZTsKKyAgICBzaXplX3QgcmVnaXN0ZXJPZmZzZXQgPSBhcmdDb3VudCAr
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG9sZEVuZCArIHJlZ2lzdGVyT2Zmc2V0KTsKLSAgICBp
ZiAoIW1fcmVnaXN0ZXJGaWxlLmdyb3cobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpCisgICAg
aWYgKCFtX3N0YWNrLmdyb3cobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpCiAgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwog
CiAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1ZhbHVlKTsKQEAgLTkzMiwxNCAr
OTMyLDE0IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKIAogICAg
ICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRh
YmxlLT5jb21waWxlRm9yQ2FsbChjYWxsRnJhbWUsIGNhbGxEYXRhU2NvcGUpOwogICAgICAgICBp
ZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKSB7Ci0gICAgICAgICAgICBtX3JlZ2lzdGVyRmls
ZS5zaHJpbmsob2xkRW5kKTsKKyAgICAgICAgICAgIG1fc3RhY2suc2hyaW5rKG9sZEVuZCk7CiAg
ICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0Vycm9yKGNhbGxGcmFtZSwgY29t
cGlsZUVycm9yKSk7CiAgICAgICAgIH0KIAogICAgICAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9j
ayA9ICZjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9y
Q2FsbCgpOwotICAgICAgICBuZXdDYWxsRnJhbWUgPSBzbGlkZVJlZ2lzdGVyV2luZG93Rm9yQ2Fs
bChuZXdDb2RlQmxvY2ssICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCAwLCBhcmdDb3Vu
dCk7CisgICAgICAgIG5ld0NhbGxGcmFtZSA9IHNsaWRlUmVnaXN0ZXJXaW5kb3dGb3JDYWxsKG5l
d0NvZGVCbG9jaywgJm1fc3RhY2ssIG5ld0NhbGxGcmFtZSwgMCwgYXJnQ291bnQpOwogICAgICAg
ICBpZiAoVU5MSUtFTFkoIW5ld0NhbGxGcmFtZSkpIHsKLSAgICAgICAgICAgIG1fcmVnaXN0ZXJG
aWxlLnNocmluayhvbGRFbmQpOworICAgICAgICAgICAgbV9zdGFjay5zaHJpbmsob2xkRW5kKTsK
ICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZSkpOwogICAgICAgICB9CiAKQEAgLTk1OCw3ICs5NTgsNyBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
ICAgICAgICAgICAgIHJlc3VsdCA9IExMSW50OjpDTG9vcDo6ZXhlY3V0ZShuZXdDYWxsRnJhbWUs
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKICNlbGlmIEVOQUJMRShKSVQpCi0g
ICAgICAgICAgICByZXN1bHQgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3JDYWxsKCkuZXhlY3V0ZSgmbV9yZWdpc3RlckZpbGUsIG5ld0NhbGxGcmFt
ZSwgY2FsbERhdGFTY29wZS0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNh
bGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5l
eGVjdXRlKCZtX3N0YWNrLCBuZXdDYWxsRnJhbWUsIGNhbGxEYXRhU2NvcGUtPmdsb2JhbERhdGEo
KSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgICAgICAgICAgbV9yZWVudHJ5RGVwdGgt
LTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChD
YWxsRnJhCiAgICAgICAgIGlmIChQcm9maWxlciogcHJvZmlsZXIgPSBjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVj
dXRlKGNhbGxGcmFtZSwgZnVuY3Rpb24pOwogCi0gICAgICAgIG1fcmVnaXN0ZXJGaWxlLnNocmlu
ayhvbGRFbmQpOworICAgICAgICBtX3N0YWNrLnNocmluayhvbGRFbmQpOwogICAgICAgICByZXR1
cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogICAgIH0KIApAQCAtOTkxLDcgKzk5MSw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICBpZiAoUHJvZmlsZXIq
IHByb2ZpbGVyID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZW5hYmxlZFByb2ZpbGVyKCkpCiAg
ICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZnVuY3Rpb24pOwogCi0gICAg
bV9yZWdpc3RlckZpbGUuc2hyaW5rKG9sZEVuZCk7CisgICAgbV9zdGFjay5zaHJpbmsob2xkRW5k
KTsKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCkBAIC0xMDA3LDExICsx
MDA3LDExIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICBp
ZiAobV9yZWVudHJ5RGVwdGggPj0gTWF4U21hbGxUaHJlYWRSZWVudHJ5RGVwdGggJiYgbV9yZWVu
dHJ5RGVwdGggPj0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkubWF4UmVlbnRyeURlcHRoKQogICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJh
bWUpKTsKIAotICAgIFJlZ2lzdGVyKiBvbGRFbmQgPSBtX3JlZ2lzdGVyRmlsZS5lbmQoKTsKKyAg
ICBSZWdpc3Rlciogb2xkRW5kID0gbV9zdGFjay5lbmQoKTsKICAgICBpbnQgYXJnQ291bnQgPSAx
ICsgYXJncy5zaXplKCk7IC8vIGltcGxpY2l0ICJ0aGlzIiBwYXJhbWV0ZXIKLSAgICBzaXplX3Qg
cmVnaXN0ZXJPZmZzZXQgPSBhcmdDb3VudCArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZTsKKyAgICBzaXplX3QgcmVnaXN0ZXJPZmZzZXQgPSBhcmdDb3VudCArIEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlclNpemU7CiAKLSAgICBpZiAoIW1fcmVnaXN0ZXJGaWxlLmdyb3cob2xkRW5k
ICsgcmVnaXN0ZXJPZmZzZXQpKQorICAgIGlmICghbV9zdGFjay5ncm93KG9sZEVuZCArIHJlZ2lz
dGVyT2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENh
bGxGcmFtZTo6Y3JlYXRlKG9sZEVuZCArIHJlZ2lzdGVyT2Zmc2V0KTsKQEAgLTEwMjYsMTQgKzEw
MjYsMTQgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogCiAgICAg
ICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Y29tcGlsZUZvckNvbnN0cnVjdChjYWxsRnJhbWUsIGNvbnN0cnVjdERhdGFTY29w
ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpIHsKLSAgICAgICAgICAg
IG1fcmVnaXN0ZXJGaWxlLnNocmluayhvbGRFbmQpOworICAgICAgICAgICAgbV9zdGFjay5zaHJp
bmsob2xkRW5kKTsKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93RXJyb3Io
Y2FsbEZyYW1lLCBjb21waWxlRXJyb3IpKTsKICAgICAgICAgfQogCiAgICAgICAgIENvZGVCbG9j
ayogbmV3Q29kZUJsb2NrID0gJmNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5n
ZW5lcmF0ZWRCeXRlY29kZUZvckNvbnN0cnVjdCgpOwotICAgICAgICBuZXdDYWxsRnJhbWUgPSBz
bGlkZVJlZ2lzdGVyV2luZG93Rm9yQ2FsbChuZXdDb2RlQmxvY2ssICZtX3JlZ2lzdGVyRmlsZSwg
bmV3Q2FsbEZyYW1lLCAwLCBhcmdDb3VudCk7CisgICAgICAgIG5ld0NhbGxGcmFtZSA9IHNsaWRl
UmVnaXN0ZXJXaW5kb3dGb3JDYWxsKG5ld0NvZGVCbG9jaywgJm1fc3RhY2ssIG5ld0NhbGxGcmFt
ZSwgMCwgYXJnQ291bnQpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIW5ld0NhbGxGcmFtZSkpIHsK
LSAgICAgICAgICAgIG1fcmVnaXN0ZXJGaWxlLnNocmluayhvbGRFbmQpOworICAgICAgICAgICAg
bV9zdGFjay5zaHJpbmsob2xkRW5kKTsKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogICAgICAgICB9CiAKQEAgLTEw
NTIsNyArMTA1Miw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgK
ICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICAgICAgcmVzdWx0ID0gTExJbnQ6OkNM
b29wOjpleGVjdXRlKG5ld0NhbGxGcmFtZSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9w
cm9sb2d1ZSk7CiAjZWxpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAgcmVzdWx0ID0gY29uc3Ry
dWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1
Y3QoKS5leGVjdXRlKCZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBjb25zdHJ1Y3REYXRh
U2NvcGUtPmdsb2JhbERhdGEoKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3REYXRh
LmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLmV4
ZWN1dGUoJm1fc3RhY2ssIG5ld0NhbGxGcmFtZSwgY29uc3RydWN0RGF0YVNjb3BlLT5nbG9iYWxE
YXRhKCkpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgICAgICAgICBtX3JlZW50cnlEZXB0
aC0tOwogICAgICAgICB9CkBAIC0xMDYwLDcgKzEwNjAsNyBAQCBKU09iamVjdCogSW50ZXJwcmV0
ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAgIGlmIChQcm9maWxlciogcHJvZmlsZXIgPSBj
YWxsRnJhbWUtPmdsb2JhbERhdGEoKS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgICAgIHBy
b2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgY29uc3RydWN0b3IpOwogCi0gICAgICAgIG1f
cmVnaXN0ZXJGaWxlLnNocmluayhvbGRFbmQpOworICAgICAgICBtX3N0YWNrLnNocmluayhvbGRF
bmQpOwogICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICBBU1NFUlQocmVzdWx0LmlzT2JqZWN0KCkpOwpAQCAtMTA4Nyw3
ICsxMDg3LDcgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAg
IGlmIChQcm9maWxlciogcHJvZmlsZXIgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5lbmFibGVk
UHJvZmlsZXIoKSkKICAgICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1dGUoY2FsbEZyYW1lLCBjb25z
dHJ1Y3Rvcik7CiAKLSAgICBtX3JlZ2lzdGVyRmlsZS5zaHJpbmsob2xkRW5kKTsKKyAgICBtX3N0
YWNrLnNocmluayhvbGRFbmQpOwogICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQocmVzdWx0LmlzT2JqZWN0KCkpOwpAQCAtMTEw
NiwxMSArMTEwNiwxMSBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJlRm9y
CiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7CiAgICAgfQogCi0gICAgUmVnaXN0
ZXIqIG9sZEVuZCA9IG1fcmVnaXN0ZXJGaWxlLmVuZCgpOwotICAgIHNpemVfdCByZWdpc3Rlck9m
ZnNldCA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJh
bWVIZWFkZXJTaXplOworICAgIFJlZ2lzdGVyKiBvbGRFbmQgPSBtX3N0YWNrLmVuZCgpOworICAg
IHNpemVfdCByZWdpc3Rlck9mZnNldCA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKIAogICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1l
ID0gQ2FsbEZyYW1lOjpjcmVhdGUob2xkRW5kICsgcmVnaXN0ZXJPZmZzZXQpOwotICAgIGlmICgh
bV9yZWdpc3RlckZpbGUuZ3JvdyhuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgeworICAgIGlm
ICghbV9zdGFjay5ncm93KG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CiAgICAgICAgIHRo
cm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVybiBDYWxsRnJh
bWVDbG9zdXJlKCk7CiAgICAgfQpAQCAtMTExOCwxNSArMTExOCwxNSBAQCBDYWxsRnJhbWVDbG9z
dXJlIEludGVycHJldGVyOjpwcmVwYXJlRm9yCiAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rp
b25FeGVjdXRhYmxlLT5jb21waWxlRm9yQ2FsbChjYWxsRnJhbWUsIHNjb3BlKTsKICAgICBpZiAo
ZXJyb3IpIHsKICAgICAgICAgdGhyb3dFcnJvcihjYWxsRnJhbWUsIGVycm9yKTsKLSAgICAgICAg
bV9yZWdpc3RlckZpbGUuc2hyaW5rKG9sZEVuZCk7CisgICAgICAgIG1fc3RhY2suc2hyaW5rKG9s
ZEVuZCk7CiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7CiAgICAgfQogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3JDYWxsKCk7CiAKLSAgICBuZXdDYWxsRnJhbWUgPSBzbGlkZVJlZ2lzdGVyV2luZG93Rm9y
Q2FsbChjb2RlQmxvY2ssICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCAwLCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgbmV3Q2FsbEZyYW1lID0gc2xpZGVSZWdpc3Rlcldp
bmRvd0ZvckNhbGwoY29kZUJsb2NrLCAmbV9zdGFjaywgbmV3Q2FsbEZyYW1lLCAwLCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKCFuZXdDYWxsRnJhbWUpKSB7
CiAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7Ci0gICAgICAgIG1f
cmVnaXN0ZXJGaWxlLnNocmluayhvbGRFbmQpOworICAgICAgICBtX3N0YWNrLnNocmluayhvbGRF
bmQpOwogICAgICAgICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3VyZSgpOwogICAgIH0KICAgICBuZXdD
YWxsRnJhbWUtPmluaXQoY29kZUJsb2NrLCAwLCBzY29wZSwgY2FsbEZyYW1lLT5hZGRIb3N0Q2Fs
bEZyYW1lRmxhZygpLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgZnVuY3Rpb24pOyAgCkBA
IC0xMTU0LDcgKzExNTQsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFt
ZUNsCiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgcmVzdWx0ID0gTExJbnQ6OkNM
b29wOjpleGVjdXRlKGNsb3N1cmUubmV3Q2FsbEZyYW1lLCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSk7CiAjZWxpZiBFTkFCTEUoSklUKQotICAgICAgICByZXN1bHQgPSBjbG9zdXJl
LmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5leGVjdXRlKCZt
X3JlZ2lzdGVyRmlsZSwgY2xvc3VyZS5uZXdDYWxsRnJhbWUsIGNsb3N1cmUuZ2xvYmFsRGF0YSk7
CisgICAgICAgIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRK
SVRDb2RlRm9yQ2FsbCgpLmV4ZWN1dGUoJm1fc3RhY2ssIGNsb3N1cmUubmV3Q2FsbEZyYW1lLCBj
bG9zdXJlLmdsb2JhbERhdGEpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgICAgIG1fcmVl
bnRyeURlcHRoLS07CiAgICAgfQpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbAogdm9pZCBJbnRlcnByZXRlcjo6ZW5kUmVwZWF0Q2Fs
bChDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKQogewogICAgIGNsb3N1cmUuZ2xvYmFsRGF0YS0+
dG9wQ2FsbEZyYW1lID0gY2xvc3VyZS5vbGRDYWxsRnJhbWU7Ci0gICAgbV9yZWdpc3RlckZpbGUu
c2hyaW5rKGNsb3N1cmUub2xkRW5kKTsKKyAgICBtX3N0YWNrLnNocmluayhjbG9zdXJlLm9sZEVu
ZCk7CiB9CiAKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2
YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSogc2Nv
cGUsIGludCBnbG9iYWxSZWdpc3Rlck9mZnNldCkKQEAgLTEyMjIsMTIgKzEyMjIsMTIgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgUmVnaXN0ZXIqIG9sZEVuZCA9IG1fcmVnaXN0ZXJGaWxlLmVuZCgpOwotICAgIFJlZ2lz
dGVyKiBuZXdFbmQgPSBtX3JlZ2lzdGVyRmlsZS5iZWdpbigpICsgZ2xvYmFsUmVnaXN0ZXJPZmZz
ZXQgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwotICAgIGlmICghbV9yZWdpc3Rl
ckZpbGUuZ3JvdyhuZXdFbmQpKQorICAgIFJlZ2lzdGVyKiBvbGRFbmQgPSBtX3N0YWNrLmVuZCgp
OworICAgIFJlZ2lzdGVyKiBuZXdFbmQgPSBtX3N0YWNrLmJlZ2luKCkgKyBnbG9iYWxSZWdpc3Rl
ck9mZnNldCArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CisgICAgaWYgKCFtX3N0
YWNrLmdyb3cobmV3RW5kKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFt
ZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG1fcmVnaXN0ZXJGaWxlLmJlZ2luKCkgKyBnbG9iYWxSZWdp
c3Rlck9mZnNldCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNy
ZWF0ZShtX3N0YWNrLmJlZ2luKCkgKyBnbG9iYWxSZWdpc3Rlck9mZnNldCk7CiAKICAgICBBU1NF
UlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAn
dGhpcycuCiAgICAgbmV3Q2FsbEZyYW1lLT5pbml0KGNvZGVCbG9jaywgMCwgc2NvcGUsIGNhbGxG
cmFtZS0+YWRkSG9zdENhbGxGcmFtZUZsYWcoKSwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCks
IDApOwpAQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShF
dmFsRXhlY3V0YQogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIHJlc3VsdCA9IExM
SW50OjpDTG9vcDo6ZXhlY3V0ZShuZXdDYWxsRnJhbWUsIGxsaW50X2V2YWxfcHJvbG9ndWUpOwog
I2VsaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgcmVzdWx0ID0gZXZhbC0+Z2VuZXJhdGVkSklUQ29k
ZSgpLmV4ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUsIHNjb3BlLT5nbG9iYWxE
YXRhKCkpOworICAgICAgICByZXN1bHQgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCkuZXhlY3V0
ZSgmbV9zdGFjaywgbmV3Q2FsbEZyYW1lLCBzY29wZS0+Z2xvYmFsRGF0YSgpKTsKICNlbmRpZiAv
LyBFTkFCTEUoSklUKQogICAgICAgICBtX3JlZW50cnlEZXB0aC0tOwogICAgIH0KQEAgLTEyNTUs
NyArMTI1NSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAg
ICBpZiAoUHJvZmlsZXIqIHByb2ZpbGVyID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZW5hYmxl
ZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXZh
bC0+c291cmNlVVJMKCksIGV2YWwtPmxpbmVObygpKTsKIAotICAgIG1fcmVnaXN0ZXJGaWxlLnNo
cmluayhvbGRFbmQpOworICAgIG1fc3RhY2suc2hyaW5rKG9sZEVuZCk7CiAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw5ICszNSw5IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
VmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RhY2suaCIKICNp
bmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKLSNpbmNsdWRlICJSZWdp
c3RlckZpbGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMTg5LDcgKzE4OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICAgICAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKIAotICAg
ICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxl
OyB9CisgICAgICAgIEpTU3RhY2smIHN0YWNrKCkgeyByZXR1cm4gbV9zdGFjazsgfQogICAgICAg
ICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkKICAgICAgICAgewpAQCAt
MjQ5LDE0ICsyNDksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgTkVWRVJfSU5MSU5F
IGJvb2wgdW53aW5kQ2FsbEZyYW1lKENhbGxGcmFtZSomLCBKU1ZhbHVlLCB1bnNpZ25lZCYgYnl0
ZWNvZGVPZmZzZXQsIENvZGVCbG9jayomKTsKIAotICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElO
RSBDYWxsRnJhbWUqIHNsaWRlUmVnaXN0ZXJXaW5kb3dGb3JDYWxsKENvZGVCbG9jayosIFJlZ2lz
dGVyRmlsZSosIENhbGxGcmFtZSosIHNpemVfdCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ2MpOwor
ICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBDYWxsRnJhbWUqIHNsaWRlUmVnaXN0ZXJXaW5k
b3dGb3JDYWxsKENvZGVCbG9jayosIEpTU3RhY2sqLCBDYWxsRnJhbWUqLCBzaXplX3QgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmdjKTsKIAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBmaW5kRnVu
Y3Rpb25DYWxsRnJhbWVGcm9tVk1Db2RlKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKTsKIAotI2lm
ICFFTkFCTEUoTExJTlRfQ19MT09QKQotICAgICAgICBKU1ZhbHVlIHByaXZhdGVFeGVjdXRlKEV4
ZWN1dGlvbkZsYWcsIFJlZ2lzdGVyRmlsZSosIENhbGxGcmFtZSopOwotI2VuZGlmCi0KICAgICAg
ICAgdm9pZCBkdW1wUmVnaXN0ZXJzKENhbGxGcmFtZSopOwogICAgICAgICAKICAgICAgICAgYm9v
bCBpc0NhbGxCeXRlY29kZShPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gZ2V0T3Bj
b2RlKG9wX2NhbGwpIHx8IG9wY29kZSA9PSBnZXRPcGNvZGUob3BfY29uc3RydWN0KSB8fCBvcGNv
ZGUgPT0gZ2V0T3Bjb2RlKG9wX2NhbGxfZXZhbCk7IH0KQEAgLTI2Nyw3ICsyNjMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBpbnQgbV9yZWVudHJ5RGVwdGg7CiAKLSAgICAgICAgUmVn
aXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOworICAgICAgICBKU1N0YWNrIG1fc3RhY2s7CiAgICAg
ICAgIAogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpICYmIEVOQUJMRShMTElOVCkK
ICAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29k
ZSBmb3IgY29tcGlsaW5nCkBAIC0yODcsMTEgKzI4MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGlubGluZSBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBl
dmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqIHNj
b3BlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1lLCB0aGlz
VmFsdWUsIHNjb3BlLCBtX3JlZ2lzdGVyRmlsZS5zaXplKCkgKyAxICsgUmVnaXN0ZXJGaWxlOjpD
YWxsRnJhbWVIZWFkZXJTaXplKTsKKyAgICAgICAgcmV0dXJuIGV4ZWN1dGUoZXZhbCwgY2FsbEZy
YW1lLCB0aGlzVmFsdWUsIHNjb3BlLCBtX3N0YWNrLnNpemUoKSArIDEgKyBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJTaXplKTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKik7
Ci0gICAgQ2FsbEZyYW1lKiBsb2FkVmFyYXJncyhDYWxsRnJhbWUqLCBSZWdpc3RlckZpbGUqLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1bWVudHMsIGludCBmaXJzdEZyZWVSZWdpc3Rl
cik7CisgICAgQ2FsbEZyYW1lKiBsb2FkVmFyYXJncyhDYWxsRnJhbWUqLCBKU1N0YWNrKiwgSlNW
YWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgYXJndW1lbnRzLCBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIp
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0pTU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkocmV2aXNpb24gMTMwNzE1KQkoZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcDoxMzA3MTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWdp
c3RlckZpbGUuaCIKKworI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCisjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBzaXplX3QgY29tbWl0
dGVkQnl0ZXNDb3VudCA9IDA7CisKK3N0YXRpYyBNdXRleCYgcmVnaXN0ZXJGaWxlU3RhdGlzdGlj
c011dGV4KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBzdGF0aWNNdXRleCwg
KCkpOworICAgIHJldHVybiBzdGF0aWNNdXRleDsKK30gICAgCisgICAgCitSZWdpc3RlckZpbGU6
On5SZWdpc3RlckZpbGUoKQoreworICAgIHZvaWQqIGJhc2UgPSBtX3Jlc2VydmF0aW9uLmJhc2Uo
KTsKKyAgICBtX3Jlc2VydmF0aW9uLmRlY29tbWl0KGJhc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KG1fY29tbWl0RW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGJhc2UpKTsK
KyAgICBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudCgtKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KG1fY29tbWl0RW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGJhc2UpKSk7CisgICAg
bV9yZXNlcnZhdGlvbi5kZWFsbG9jYXRlKCk7Cit9CisKK2Jvb2wgUmVnaXN0ZXJGaWxlOjpncm93
U2xvd0Nhc2UoUmVnaXN0ZXIqIG5ld0VuZCkKK3sKKyAgICBpZiAobmV3RW5kIDw9IG1fY29tbWl0
RW5kKSB7CisgICAgICAgIG1fZW5kID0gbmV3RW5kOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBsb25nIGRlbHRhID0gcm91bmRVcEFsbG9jYXRpb25TaXplKHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KG5ld0VuZCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdEVu
ZCksIGNvbW1pdFNpemUpOworICAgIGlmIChyZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1p
dEVuZCkgKyBkZWx0YSA+IHN0YXRpY19jYXN0PGNoYXIqPihtX3Jlc2VydmF0aW9uLmJhc2UoKSkg
KyBtX3Jlc2VydmF0aW9uLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9y
ZXNlcnZhdGlvbi5jb21taXQobV9jb21taXRFbmQsIGRlbHRhKTsKKyAgICBhZGRUb0NvbW1pdHRl
ZEJ5dGVDb3VudChkZWx0YSk7CisgICAgbV9jb21taXRFbmQgPSByZWludGVycHJldF9jYXN0X3B0
cjxSZWdpc3Rlcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0RW5kKSArIGRlbHRh
KTsKKyAgICBtX2VuZCA9IG5ld0VuZDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZWdp
c3RlckZpbGU6OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25z
ZXJ2YXRpdmVSb290cykKK3sKKyAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQoYmVnaW4oKSwgZW5k
KCkpOworfQorCit2b2lkIFJlZ2lzdGVyRmlsZTo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29u
c2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3RzLCBKSVRTdHViUm91dGluZVNldCYgaml0
U3R1YlJvdXRpbmVzLCBERkdDb2RlQmxvY2tzJiBkZmdDb2RlQmxvY2tzKQoreworICAgIGNvbnNl
cnZhdGl2ZVJvb3RzLmFkZChiZWdpbigpLCBlbmQoKSwgaml0U3R1YlJvdXRpbmVzLCBkZmdDb2Rl
QmxvY2tzKTsKK30KKwordm9pZCBSZWdpc3RlckZpbGU6OnJlbGVhc2VFeGNlc3NDYXBhY2l0eSgp
Cit7CisgICAgcHRyZGlmZl90IGRlbHRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1f
Y29tbWl0RW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX3Jlc2VydmF0aW9uLmJh
c2UoKSk7CisgICAgbV9yZXNlcnZhdGlvbi5kZWNvbW1pdChtX3Jlc2VydmF0aW9uLmJhc2UoKSwg
ZGVsdGEpOworICAgIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KC1kZWx0YSk7CisgICAgbV9jb21t
aXRFbmQgPSBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KG1fcmVzZXJ2YXRpb24uYmFzZSgpKTsKK30K
Kwordm9pZCBSZWdpc3RlckZpbGU6OmluaXRpYWxpemVUaHJlYWRpbmcoKQoreworICAgIHJlZ2lz
dGVyRmlsZVN0YXRpc3RpY3NNdXRleCgpOworfQorCitzaXplX3QgUmVnaXN0ZXJGaWxlOjpjb21t
aXR0ZWRCeXRlQ291bnQoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihyZWdpc3RlckZpbGVT
dGF0aXN0aWNzTXV0ZXgoKSk7CisgICAgcmV0dXJuIGNvbW1pdHRlZEJ5dGVzQ291bnQ7Cit9CisK
K3ZvaWQgUmVnaXN0ZXJGaWxlOjphZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25nIGJ5dGVDb3Vu
dCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIocmVnaXN0ZXJGaWxlU3RhdGlzdGljc011dGV4
KCkpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxsb25nPihjb21taXR0ZWRCeXRlc0NvdW50KSAr
IGJ5dGVDb3VudCA+IC0xKTsKKyAgICBjb21taXR0ZWRCeXRlc0NvdW50ICs9IGJ5dGVDb3VudDsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSlNTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0pTU3RhY2suY3BwCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVnaXN0
ZXJGaWxlLmgiCisjaW5jbHVkZSAiSlNTdGFjay5oIgogCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZl
Um9vdHMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMzYsMTMgKzM2LDEzIEBAIG5h
bWVzcGFjZSBKU0MgewogCiBzdGF0aWMgc2l6ZV90IGNvbW1pdHRlZEJ5dGVzQ291bnQgPSAwOwog
Ci1zdGF0aWMgTXV0ZXgmIHJlZ2lzdGVyRmlsZVN0YXRpc3RpY3NNdXRleCgpCitzdGF0aWMgTXV0
ZXgmIHN0YWNrU3RhdGlzdGljc011dGV4KCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11
dGV4LCBzdGF0aWNNdXRleCwgKCkpOwogICAgIHJldHVybiBzdGF0aWNNdXRleDsKIH0gICAgCiAg
ICAgCi1SZWdpc3RlckZpbGU6On5SZWdpc3RlckZpbGUoKQorSlNTdGFjazo6fkpTU3RhY2soKQog
ewogICAgIHZvaWQqIGJhc2UgPSBtX3Jlc2VydmF0aW9uLmJhc2UoKTsKICAgICBtX3Jlc2VydmF0
aW9uLmRlY29tbWl0KGJhc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fY29tbWl0RW5k
KSAtIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGJhc2UpKTsKQEAgLTUwLDcgKzUwLDcgQEAg
UmVnaXN0ZXJGaWxlOjp+UmVnaXN0ZXJGaWxlKCkKICAgICBtX3Jlc2VydmF0aW9uLmRlYWxsb2Nh
dGUoKTsKIH0KIAotYm9vbCBSZWdpc3RlckZpbGU6Omdyb3dTbG93Q2FzZShSZWdpc3RlciogbmV3
RW5kKQorYm9vbCBKU1N0YWNrOjpncm93U2xvd0Nhc2UoUmVnaXN0ZXIqIG5ld0VuZCkKIHsKICAg
ICBpZiAobmV3RW5kIDw9IG1fY29tbWl0RW5kKSB7CiAgICAgICAgIG1fZW5kID0gbmV3RW5kOwpA
QCAtNjgsMTcgKzY4LDE3IEBAIGJvb2wgUmVnaXN0ZXJGaWxlOjpncm93U2xvd0Nhc2UoUmVnaXN0
ZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZWdpc3RlckZpbGU6OmdhdGhlckNvbnNl
cnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cykKK3ZvaWQg
SlNTdGFjazo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNl
cnZhdGl2ZVJvb3RzKQogewogICAgIGNvbnNlcnZhdGl2ZVJvb3RzLmFkZChiZWdpbigpLCBlbmQo
KSk7CiB9CiAKLXZvaWQgUmVnaXN0ZXJGaWxlOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25z
ZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZlUm9vdHMsIEpJVFN0dWJSb3V0aW5lU2V0JiBqaXRT
dHViUm91dGluZXMsIERGR0NvZGVCbG9ja3MmIGRmZ0NvZGVCbG9ja3MpCit2b2lkIEpTU3RhY2s6
OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVS
b290cywgSklUU3R1YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0aW5lcywgREZHQ29kZUJsb2NrcyYg
ZGZnQ29kZUJsb2NrcykKIHsKICAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQoYmVnaW4oKSwgZW5k
KCksIGppdFN0dWJSb3V0aW5lcywgZGZnQ29kZUJsb2Nrcyk7CiB9CiAKLXZvaWQgUmVnaXN0ZXJG
aWxlOjpyZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKQordm9pZCBKU1N0YWNrOjpyZWxlYXNlRXhjZXNz
Q2FwYWNpdHkoKQogewogICAgIHB0cmRpZmZfdCBkZWx0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihtX2NvbW1pdEVuZCkgLSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9yZXNl
cnZhdGlvbi5iYXNlKCkpOwogICAgIG1fcmVzZXJ2YXRpb24uZGVjb21taXQobV9yZXNlcnZhdGlv
bi5iYXNlKCksIGRlbHRhKTsKQEAgLTg2LDIwICs4NiwyMCBAQCB2b2lkIFJlZ2lzdGVyRmlsZTo6
cmVsZWFzZUV4Y2Vzc0NhcGFjaXR5CiAgICAgbV9jb21taXRFbmQgPSBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KG1fcmVzZXJ2YXRpb24uYmFzZSgpKTsKIH0KIAotdm9pZCBSZWdpc3RlckZpbGU6Omlu
aXRpYWxpemVUaHJlYWRpbmcoKQordm9pZCBKU1N0YWNrOjppbml0aWFsaXplVGhyZWFkaW5nKCkK
IHsKLSAgICByZWdpc3RlckZpbGVTdGF0aXN0aWNzTXV0ZXgoKTsKKyAgICBzdGFja1N0YXRpc3Rp
Y3NNdXRleCgpOwogfQogCi1zaXplX3QgUmVnaXN0ZXJGaWxlOjpjb21taXR0ZWRCeXRlQ291bnQo
KQorc2l6ZV90IEpTU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCgpCiB7Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKHJlZ2lzdGVyRmlsZVN0YXRpc3RpY3NNdXRleCgpKTsKKyAgICBNdXRleExvY2tl
ciBsb2NrZXIoc3RhY2tTdGF0aXN0aWNzTXV0ZXgoKSk7CiAgICAgcmV0dXJuIGNvbW1pdHRlZEJ5
dGVzQ291bnQ7CiB9CiAKLXZvaWQgUmVnaXN0ZXJGaWxlOjphZGRUb0NvbW1pdHRlZEJ5dGVDb3Vu
dChsb25nIGJ5dGVDb3VudCkKK3ZvaWQgSlNTdGFjazo6YWRkVG9Db21taXR0ZWRCeXRlQ291bnQo
bG9uZyBieXRlQ291bnQpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHJlZ2lzdGVyRmlsZVN0
YXRpc3RpY3NNdXRleCgpKTsKKyAgICBNdXRleExvY2tlciBsb2NrZXIoc3RhY2tTdGF0aXN0aWNz
TXV0ZXgoKSk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGxvbmc+KGNvbW1pdHRlZEJ5dGVzQ291
bnQpICsgYnl0ZUNvdW50ID4gLTEpOwogICAgIGNvbW1pdHRlZEJ5dGVzQ291bnQgKz0gYnl0ZUNv
dW50OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFj
ay5oCShyZXZpc2lvbiAxMzA3MTUpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9SZWdpc3RlckZpbGUuaDoxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSlNTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFJlZ2lzdGVyRmlsZV9oCisjZGVmaW5lIFJlZ2lzdGVyRmlsZV9oCisKKyNpbmNs
dWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFnZVJlc2VydmF0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL1ZNVGFncy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIGNsYXNz
IENvbnNlcnZhdGl2ZVJvb3RzOworICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3Mg
SklUU3R1YlJvdXRpbmVTZXQ7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisg
ICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVn
aXN0ZXJGaWxlKTsKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gQ2FsbEZyYW1lSGVhZGVyRW50
cnkgeworICAgICAgICAgICAgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IDYsCisKKyAgICAgICAgICAg
IEFyZ3VtZW50Q291bnQgPSAtNiwKKyAgICAgICAgICAgIENhbGxlckZyYW1lID0gLTUsCisgICAg
ICAgICAgICBDYWxsZWUgPSAtNCwKKyAgICAgICAgICAgIFNjb3BlQ2hhaW4gPSAtMywKKyAgICAg
ICAgICAgIFJldHVyblBDID0gLTIsIC8vIFRoaXMgaXMgZWl0aGVyIGFuIEluc3RydWN0aW9uKiBv
ciBhIHBvaW50ZXIgaW50byBKSVQgZ2VuZXJhdGVkIGNvZGUgc3RvcmVkIGFzIGFuIEluc3RydWN0
aW9uKi4KKyAgICAgICAgICAgIENvZGVCbG9jayA9IC0xLAorICAgICAgICB9OworCisgICAgICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgZGVmYXVsdENhcGFjaXR5ID0gNTEyICogMTAyNDsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb21taXRTaXplID0gMTYgKiAxMDI0OworICAgICAgICAv
LyBBbGxvdyA4ayBvZiBleGNlc3MgcmVnaXN0ZXJzIGJlZm9yZSB3ZSBzdGFydCB0cnlpbmcgdG8g
cmVhcCB0aGUgcmVnaXN0ZXJmaWxlCisgICAgICAgIHN0YXRpYyBjb25zdCBwdHJkaWZmX3QgbWF4
RXhjZXNzQ2FwYWNpdHkgPSA4ICogMTAyNDsKKworICAgICAgICBSZWdpc3RlckZpbGUoc2l6ZV90
IGNhcGFjaXR5ID0gZGVmYXVsdENhcGFjaXR5KTsKKyAgICAgICAgflJlZ2lzdGVyRmlsZSgpOwor
ICAgICAgICAKKyAgICAgICAgdm9pZCBnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRp
dmVSb290cyYpOworICAgICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZh
dGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQmLCBERkdDb2RlQmxvY2tzJik7CisKKyAgICAg
ICAgUmVnaXN0ZXIqIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaXN0ZXIq
PihtX3Jlc2VydmF0aW9uLmJhc2UoKSk7IH0KKyAgICAgICAgUmVnaXN0ZXIqIGVuZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5kOyB9CisgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
ZW5kKCkgLSBiZWdpbigpOyB9CisKKyAgICAgICAgYm9vbCBncm93KFJlZ2lzdGVyKik7CisgICAg
ICAgIHZvaWQgc2hyaW5rKFJlZ2lzdGVyKik7CisgICAgICAgIAorICAgICAgICBzdGF0aWMgc2l6
ZV90IGNvbW1pdHRlZEJ5dGVDb3VudCgpOworICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
VGhyZWFkaW5nKCk7CisKKyAgICAgICAgUmVnaXN0ZXIqIGNvbnN0ICogYWRkcmVzc09mRW5kKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICZtX2VuZDsKKyAgICAgICAgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCisgICAgICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7CisgICAg
ICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CisgICAgICAgIHZvaWQgYWRkVG9Db21t
aXR0ZWRCeXRlQ291bnQobG9uZyk7CisgICAgICAgIFJlZ2lzdGVyKiBtX2VuZDsKKyAgICAgICAg
UmVnaXN0ZXIqIG1fY29tbWl0RW5kOworICAgICAgICBQYWdlUmVzZXJ2YXRpb24gbV9yZXNlcnZh
dGlvbjsKKyAgICB9OworCisgICAgaW5saW5lIFJlZ2lzdGVyRmlsZTo6UmVnaXN0ZXJGaWxlKHNp
emVfdCBjYXBhY2l0eSkKKyAgICAgICAgOiBtX2VuZCgwKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGNhcGFjaXR5ICYmIGlzUGFnZUFsaWduZWQoY2FwYWNpdHkpKTsKKworICAgICAgICBtX3Jlc2Vy
dmF0aW9uID0gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKHJvdW5kVXBBbGxvY2F0aW9uU2l6ZShj
YXBhY2l0eSAqIHNpemVvZihSZWdpc3RlciksIGNvbW1pdFNpemUpLCBPU0FsbG9jYXRvcjo6SlNW
TVN0YWNrUGFnZXMpOworICAgICAgICBtX2VuZCA9IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4obV9y
ZXNlcnZhdGlvbi5iYXNlKCkpOworICAgICAgICBtX2NvbW1pdEVuZCA9IHN0YXRpY19jYXN0PFJl
Z2lzdGVyKj4obV9yZXNlcnZhdGlvbi5iYXNlKCkpOworICAgIH0KKworICAgIGlubGluZSB2b2lk
IFJlZ2lzdGVyRmlsZTo6c2hyaW5rKFJlZ2lzdGVyKiBuZXdFbmQpCisgICAgeworICAgICAgICBp
ZiAobmV3RW5kID49IG1fZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2VuZCA9
IG5ld0VuZDsKKyAgICAgICAgaWYgKG1fZW5kID09IG1fcmVzZXJ2YXRpb24uYmFzZSgpICYmICht
X2NvbW1pdEVuZCAtIGJlZ2luKCkpID49IG1heEV4Y2Vzc0NhcGFjaXR5KQorICAgICAgICAgICAg
cmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CisgICAgfQorCisgICAgaW5saW5lIGJvb2wgUmVnaXN0
ZXJGaWxlOjpncm93KFJlZ2lzdGVyKiBuZXdFbmQpCisgICAgeworICAgICAgICBpZiAobmV3RW5k
IDw9IG1fZW5kKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBncm93
U2xvd0Nhc2UobmV3RW5kKTsKKyAgICB9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gUmVnaXN0ZXJGaWxlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9KU1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0pTU3RhY2suaAkocmV2aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0pTU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFJlZ2lzdGVyRmlsZV9oCi0jZGVmaW5lIFJlZ2lz
dGVyRmlsZV9oCisjaWZuZGVmIEpTU3RhY2tfaAorI2RlZmluZSBKU1N0YWNrX2gKIAogI2luY2x1
ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgpAQCAtNDIs
OCArNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKSVRTdHViUm91dGluZVNldDsK
ICAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBjbGFzcyBSZWdpc3RlckZp
bGUgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZpbGUpOworICAgIGNs
YXNzIEpTU3RhY2sgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU1N0YWNrKTsKICAg
ICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ2FsbEZyYW1lSGVhZGVyRW50cnkgewogICAgICAgICAg
ICAgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IDYsCkBAIC01OCwxMSArNTgsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBkZWZhdWx0Q2FwYWNpdHkgPSA1
MTIgKiAxMDI0OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbW1pdFNpemUgPSAxNiAq
IDEwMjQ7Ci0gICAgICAgIC8vIEFsbG93IDhrIG9mIGV4Y2VzcyByZWdpc3RlcnMgYmVmb3JlIHdl
IHN0YXJ0IHRyeWluZyB0byByZWFwIHRoZSByZWdpc3RlcmZpbGUKKyAgICAgICAgLy8gQWxsb3cg
OGsgb2YgZXhjZXNzIHJlZ2lzdGVycyBiZWZvcmUgd2Ugc3RhcnQgdHJ5aW5nIHRvIHJlYXAgdGhl
IHN0YWNrCiAgICAgICAgIHN0YXRpYyBjb25zdCBwdHJkaWZmX3QgbWF4RXhjZXNzQ2FwYWNpdHkg
PSA4ICogMTAyNDsKIAotICAgICAgICBSZWdpc3RlckZpbGUoc2l6ZV90IGNhcGFjaXR5ID0gZGVm
YXVsdENhcGFjaXR5KTsKLSAgICAgICAgflJlZ2lzdGVyRmlsZSgpOworICAgICAgICBKU1N0YWNr
KHNpemVfdCBjYXBhY2l0eSA9IGRlZmF1bHRDYXBhY2l0eSk7CisgICAgICAgIH5KU1N0YWNrKCk7
CiAgICAgICAgIAogICAgICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZh
dGl2ZVJvb3RzJik7CiAgICAgICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2Vy
dmF0aXZlUm9vdHMmLCBKSVRTdHViUm91dGluZVNldCYsIERGR0NvZGVCbG9ja3MmKTsKQEAgLTg0
LDcgKzg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAgICAgICAKKwogICAgICAgICBib29s
IGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBh
Y2l0eSgpOwogICAgICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpAQCAt
OTMsNyArOTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUGFnZVJlc2VydmF0aW9uIG1f
cmVzZXJ2YXRpb247CiAgICAgfTsKIAotICAgIGlubGluZSBSZWdpc3RlckZpbGU6OlJlZ2lzdGVy
RmlsZShzaXplX3QgY2FwYWNpdHkpCisgICAgaW5saW5lIEpTU3RhY2s6OkpTU3RhY2soc2l6ZV90
IGNhcGFjaXR5KQogICAgICAgICA6IG1fZW5kKDApCiAgICAgewogICAgICAgICBBU1NFUlQoY2Fw
YWNpdHkgJiYgaXNQYWdlQWxpZ25lZChjYXBhY2l0eSkpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBtX2NvbW1pdEVuZCA9IHN0YXRpY19jYXN0PFJlZ2lzdGVy
Kj4obV9yZXNlcnZhdGlvbi5iYXNlKCkpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIFJlZ2lz
dGVyRmlsZTo6c2hyaW5rKFJlZ2lzdGVyKiBuZXdFbmQpCisgICAgaW5saW5lIHZvaWQgSlNTdGFj
azo6c2hyaW5rKFJlZ2lzdGVyKiBuZXdFbmQpCiAgICAgewogICAgICAgICBpZiAobmV3RW5kID49
IG1fZW5kKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEyLDcgKzExMiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgfQogCi0g
ICAgaW5saW5lIGJvb2wgUmVnaXN0ZXJGaWxlOjpncm93KFJlZ2lzdGVyKiBuZXdFbmQpCisgICAg
aW5saW5lIGJvb2wgSlNTdGFjazo6Z3JvdyhSZWdpc3RlciogbmV3RW5kKQogICAgIHsKICAgICAg
ICAgaWYgKG5ld0VuZCA8PSBtX2VuZCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTIx
LDQgKzEyMSw0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2Vu
ZGlmIC8vIFJlZ2lzdGVyRmlsZV9oCisjZW5kaWYgLy8gSlNTdGFja19oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcAkocmV2
aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lz
dGVyRmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKLQotI2luY2x1ZGUgIkNvbnNlcnZh
dGl2ZVJvb3RzLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLXN0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0ZXNDb3VudCA9IDA7Ci0KLXN0YXRpYyBNdXRl
eCYgcmVnaXN0ZXJGaWxlU3RhdGlzdGljc011dGV4KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKE11dGV4LCBzdGF0aWNNdXRleCwgKCkpOwotICAgIHJldHVybiBzdGF0aWNNdXRleDsKLX0g
ICAgCi0gICAgCi1SZWdpc3RlckZpbGU6On5SZWdpc3RlckZpbGUoKQotewotICAgIHZvaWQqIGJh
c2UgPSBtX3Jlc2VydmF0aW9uLmJhc2UoKTsKLSAgICBtX3Jlc2VydmF0aW9uLmRlY29tbWl0KGJh
c2UsIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fY29tbWl0RW5kKSAtIHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGJhc2UpKTsKLSAgICBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudCgtKHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fY29tbWl0RW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGJhc2UpKSk7Ci0gICAgbV9yZXNlcnZhdGlvbi5kZWFsbG9jYXRlKCk7Ci19Ci0K
LWJvb2wgUmVnaXN0ZXJGaWxlOjpncm93U2xvd0Nhc2UoUmVnaXN0ZXIqIG5ld0VuZCkKLXsKLSAg
ICBpZiAobmV3RW5kIDw9IG1fY29tbWl0RW5kKSB7Ci0gICAgICAgIG1fZW5kID0gbmV3RW5kOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBsb25nIGRlbHRhID0gcm91bmRVcEFs
bG9jYXRpb25TaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG5ld0VuZCkgLSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihtX2NvbW1pdEVuZCksIGNvbW1pdFNpemUpOwotICAgIGlmIChyZWludGVy
cHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdEVuZCkgKyBkZWx0YSA+IHN0YXRpY19jYXN0PGNoYXIq
PihtX3Jlc2VydmF0aW9uLmJhc2UoKSkgKyBtX3Jlc2VydmF0aW9uLnNpemUoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgbV9yZXNlcnZhdGlvbi5jb21taXQobV9jb21taXRFbmQsIGRl
bHRhKTsKLSAgICBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChkZWx0YSk7Ci0gICAgbV9jb21taXRF
bmQgPSByZWludGVycHJldF9jYXN0X3B0cjxSZWdpc3Rlcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KG1fY29tbWl0RW5kKSArIGRlbHRhKTsKLSAgICBtX2VuZCA9IG5ld0VuZDsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotdm9pZCBSZWdpc3RlckZpbGU6OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3Rz
KENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cykKLXsKLSAgICBjb25zZXJ2YXRp
dmVSb290cy5hZGQoYmVnaW4oKSwgZW5kKCkpOwotfQotCi12b2lkIFJlZ2lzdGVyRmlsZTo6Z2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3Rz
LCBKSVRTdHViUm91dGluZVNldCYgaml0U3R1YlJvdXRpbmVzLCBERkdDb2RlQmxvY2tzJiBkZmdD
b2RlQmxvY2tzKQotewotICAgIGNvbnNlcnZhdGl2ZVJvb3RzLmFkZChiZWdpbigpLCBlbmQoKSwg
aml0U3R1YlJvdXRpbmVzLCBkZmdDb2RlQmxvY2tzKTsKLX0KLQotdm9pZCBSZWdpc3RlckZpbGU6
OnJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpCi17Ci0gICAgcHRyZGlmZl90IGRlbHRhID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tbWl0RW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihtX3Jlc2VydmF0aW9uLmJhc2UoKSk7Ci0gICAgbV9yZXNlcnZhdGlvbi5kZWNvbW1p
dChtX3Jlc2VydmF0aW9uLmJhc2UoKSwgZGVsdGEpOwotICAgIGFkZFRvQ29tbWl0dGVkQnl0ZUNv
dW50KC1kZWx0YSk7Ci0gICAgbV9jb21taXRFbmQgPSBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KG1f
cmVzZXJ2YXRpb24uYmFzZSgpKTsKLX0KLQotdm9pZCBSZWdpc3RlckZpbGU6OmluaXRpYWxpemVU
aHJlYWRpbmcoKQotewotICAgIHJlZ2lzdGVyRmlsZVN0YXRpc3RpY3NNdXRleCgpOwotfQotCi1z
aXplX3QgUmVnaXN0ZXJGaWxlOjpjb21taXR0ZWRCeXRlQ291bnQoKQotewotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihyZWdpc3RlckZpbGVTdGF0aXN0aWNzTXV0ZXgoKSk7Ci0gICAgcmV0dXJuIGNv
bW1pdHRlZEJ5dGVzQ291bnQ7Ci19Ci0KLXZvaWQgUmVnaXN0ZXJGaWxlOjphZGRUb0NvbW1pdHRl
ZEJ5dGVDb3VudChsb25nIGJ5dGVDb3VudCkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrZXIocmVn
aXN0ZXJGaWxlU3RhdGlzdGljc011dGV4KCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxsb25n
Pihjb21taXR0ZWRCeXRlc0NvdW50KSArIGJ5dGVDb3VudCA+IC0xKTsKLSAgICBjb21taXR0ZWRC
eXRlc0NvdW50ICs9IGJ5dGVDb3VudDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCShy
ZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTI0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgUmVnaXN0ZXJGaWxlX2gKLSNkZWZpbmUgUmVnaXN0ZXJGaWxlX2gKLQotI2luY2x1ZGUgIkV4
ZWN1dGFibGVBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJSZWdpc3Rlci5oIgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYWdlUmVzZXJ2YXRpb24uaD4KLSNpbmNs
dWRlIDx3dGYvVk1UYWdzLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgY2xhc3MgQ29uc2Vy
dmF0aXZlUm9vdHM7Ci0gICAgY2xhc3MgREZHQ29kZUJsb2NrczsKLSAgICBjbGFzcyBKSVRTdHVi
Um91dGluZVNldDsKLSAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLSAgICBjbGFz
cyBSZWdpc3RlckZpbGUgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZp
bGUpOwotICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBDYWxsRnJhbWVIZWFkZXJFbnRyeSB7Ci0g
ICAgICAgICAgICBDYWxsRnJhbWVIZWFkZXJTaXplID0gNiwKLQotICAgICAgICAgICAgQXJndW1l
bnRDb3VudCA9IC02LAotICAgICAgICAgICAgQ2FsbGVyRnJhbWUgPSAtNSwKLSAgICAgICAgICAg
IENhbGxlZSA9IC00LAotICAgICAgICAgICAgU2NvcGVDaGFpbiA9IC0zLAotICAgICAgICAgICAg
UmV0dXJuUEMgPSAtMiwgLy8gVGhpcyBpcyBlaXRoZXIgYW4gSW5zdHJ1Y3Rpb24qIG9yIGEgcG9p
bnRlciBpbnRvIEpJVCBnZW5lcmF0ZWQgY29kZSBzdG9yZWQgYXMgYW4gSW5zdHJ1Y3Rpb24qLgot
ICAgICAgICAgICAgQ29kZUJsb2NrID0gLTEsCi0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBkZWZhdWx0Q2FwYWNpdHkgPSA1MTIgKiAxMDI0OwotICAgICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGNvbW1pdFNpemUgPSAxNiAqIDEwMjQ7Ci0gICAgICAgIC8vIEFsbG93
IDhrIG9mIGV4Y2VzcyByZWdpc3RlcnMgYmVmb3JlIHdlIHN0YXJ0IHRyeWluZyB0byByZWFwIHRo
ZSByZWdpc3RlcmZpbGUKLSAgICAgICAgc3RhdGljIGNvbnN0IHB0cmRpZmZfdCBtYXhFeGNlc3ND
YXBhY2l0eSA9IDggKiAxMDI0OwotCi0gICAgICAgIFJlZ2lzdGVyRmlsZShzaXplX3QgY2FwYWNp
dHkgPSBkZWZhdWx0Q2FwYWNpdHkpOwotICAgICAgICB+UmVnaXN0ZXJGaWxlKCk7Ci0gICAgICAg
IAotICAgICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3Rz
Jik7Ci0gICAgICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9v
dHMmLCBKSVRTdHViUm91dGluZVNldCYsIERGR0NvZGVCbG9ja3MmKTsKLQotICAgICAgICBSZWdp
c3RlciogYmVnaW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KG1fcmVz
ZXJ2YXRpb24uYmFzZSgpKTsgfQotICAgICAgICBSZWdpc3RlciogZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9lbmQ7IH0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBlbmQoKSAt
IGJlZ2luKCk7IH0KLQotICAgICAgICBib29sIGdyb3coUmVnaXN0ZXIqKTsKLSAgICAgICAgdm9p
ZCBzaHJpbmsoUmVnaXN0ZXIqKTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBzaXplX3QgY29t
bWl0dGVkQnl0ZUNvdW50KCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRp
bmcoKTsKLQotICAgICAgICBSZWdpc3RlciogY29uc3QgKiBhZGRyZXNzT2ZFbmQoKSBjb25zdAot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJm1fZW5kOwotICAgICAgICB9Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAg
ICAgICAKLSAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKLSAgICAgICAgdm9p
ZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKLSAgICAgICAgdm9pZCBhZGRUb0NvbW1pdHRlZEJ5
dGVDb3VudChsb25nKTsKLSAgICAgICAgUmVnaXN0ZXIqIG1fZW5kOwotICAgICAgICBSZWdpc3Rl
ciogbV9jb21taXRFbmQ7Ci0gICAgICAgIFBhZ2VSZXNlcnZhdGlvbiBtX3Jlc2VydmF0aW9uOwot
ICAgIH07Ci0KLSAgICBpbmxpbmUgUmVnaXN0ZXJGaWxlOjpSZWdpc3RlckZpbGUoc2l6ZV90IGNh
cGFjaXR5KQotICAgICAgICA6IG1fZW5kKDApCi0gICAgewotICAgICAgICBBU1NFUlQoY2FwYWNp
dHkgJiYgaXNQYWdlQWxpZ25lZChjYXBhY2l0eSkpOwotCi0gICAgICAgIG1fcmVzZXJ2YXRpb24g
PSBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmUocm91bmRVcEFsbG9jYXRpb25TaXplKGNhcGFjaXR5
ICogc2l6ZW9mKFJlZ2lzdGVyKSwgY29tbWl0U2l6ZSksIE9TQWxsb2NhdG9yOjpKU1ZNU3RhY2tQ
YWdlcyk7Ci0gICAgICAgIG1fZW5kID0gc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPihtX3Jlc2VydmF0
aW9uLmJhc2UoKSk7Ci0gICAgICAgIG1fY29tbWl0RW5kID0gc3RhdGljX2Nhc3Q8UmVnaXN0ZXIq
PihtX3Jlc2VydmF0aW9uLmJhc2UoKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgUmVnaXN0
ZXJGaWxlOjpzaHJpbmsoUmVnaXN0ZXIqIG5ld0VuZCkKLSAgICB7Ci0gICAgICAgIGlmIChuZXdF
bmQgPj0gbV9lbmQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fZW5kID0gbmV3RW5k
OwotICAgICAgICBpZiAobV9lbmQgPT0gbV9yZXNlcnZhdGlvbi5iYXNlKCkgJiYgKG1fY29tbWl0
RW5kIC0gYmVnaW4oKSkgPj0gbWF4RXhjZXNzQ2FwYWNpdHkpCi0gICAgICAgICAgICByZWxlYXNl
RXhjZXNzQ2FwYWNpdHkoKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBSZWdpc3RlckZpbGU6
Omdyb3coUmVnaXN0ZXIqIG5ld0VuZCkKLSAgICB7Ci0gICAgICAgIGlmIChuZXdFbmQgPD0gbV9l
bmQpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGdyb3dTbG93Q2Fz
ZShuZXdFbmQpOwotICAgIH0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBSZWdp
c3RlckZpbGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5z
cGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvVk1JbnNwZWN0b3IuY3BwCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwy
NSArNjksMTkgQEAgdm9pZCBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKENhbGxGcmFtZSogZgogICAg
ICAgICBwcmludGYoIiVzICIsIHByZWZpeCk7CiAKICAgICBwcmludGYoImZyYW1lIFslZF0gJXAg
eyBjYiAlcDolcywgcmV0UEMgJXA6JXMsIHNjb3BlICVwOiVzLCBjYWxsZWUgJXA6JXMsIGNhbGxl
ckZyYW1lICVwOiVzLCBhcmdjICVkLCB2UEMgJXAgfSIsCi0gICAgICAgICAgIGZyYW1lQ291bnQs
IGZyYW1lLAotCi0gICAgICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW1JlZ2lzdGVyRmlsZTo6Q29k
ZUJsb2NrXS5wYXlsb2FkKCkpLAotICAgICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtSZWdpc3Rl
ckZpbGU6OkNvZGVCbG9ja10uanNWYWx1ZSgpKSwKLQotICAgICAgICAgICBDQVNUPHZvaWQqPihm
cmFtZVtSZWdpc3RlckZpbGU6OlJldHVyblBDXS5wYXlsb2FkKCkpLAotICAgICAgICAgICBnZXRU
eXBlTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OlJldHVyblBDXS5qc1ZhbHVlKCkpLAotCi0gICAg
ICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0ucGF5bG9h
ZCgpKSwKLSAgICAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVbUmVnaXN0ZXJGaWxlOjpTY29wZUNo
YWluXS5qc1ZhbHVlKCkpLAotCi0gICAgICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW1JlZ2lzdGVy
RmlsZTo6Q2FsbGVlXS5wYXlsb2FkKCkpLAotICAgICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtS
ZWdpc3RlckZpbGU6OkNhbGxlZV0uanNWYWx1ZSgpKSwKLQotICAgICAgICAgICBDQVNUPHZvaWQq
PihmcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXS5wYXlsb2FkKCkpLAotICAgICAgICAg
ICBnZXRUeXBlTmFtZShmcmFtZVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXS5qc1ZhbHVlKCkp
LAotCi0gICAgICAgICAgIGZyYW1lW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0ucGF5bG9h
ZCgpLAotICAgICAgICAgICB2UEMpOworICAgICAgICBmcmFtZUNvdW50LCBmcmFtZSwKKyAgICAg
ICAgQ0FTVDx2b2lkKj4oZnJhbWVbSlNTdGFjazo6Q29kZUJsb2NrXS5wYXlsb2FkKCkpLAorICAg
ICAgICBnZXRUeXBlTmFtZShmcmFtZVtKU1N0YWNrOjpDb2RlQmxvY2tdLmpzVmFsdWUoKSksCisg
ICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW0pTU3RhY2s6OlJldHVyblBDXS5wYXlsb2FkKCkpLAor
ICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtKU1N0YWNrOjpSZXR1cm5QQ10uanNWYWx1ZSgpKSwK
KyAgICAgICAgQ0FTVDx2b2lkKj4oZnJhbWVbSlNTdGFjazo6U2NvcGVDaGFpbl0ucGF5bG9hZCgp
KSwKKyAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVbSlNTdGFjazo6U2NvcGVDaGFpbl0uanNWYWx1
ZSgpKSwKKyAgICAgICAgQ0FTVDx2b2lkKj4oZnJhbWVbSlNTdGFjazo6Q2FsbGVlXS5wYXlsb2Fk
KCkpLAorICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtKU1N0YWNrOjpDYWxsZWVdLmpzVmFsdWUo
KSksCisgICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW0pTU3RhY2s6OkNhbGxlckZyYW1lXS5jYWxs
RnJhbWUoKSksCisgICAgICAgIGdldFR5cGVOYW1lKGZyYW1lW0pTU3RhY2s6OkNhbGxlckZyYW1l
XS5qc1ZhbHVlKCkpLAorICAgICAgICBmcmFtZVtKU1N0YWNrOjpBcmd1bWVudENvdW50XS5wYXls
b2FkKCksCisgICAgICAgIHZQQyk7CiAKICAgICBpZiAoZnVuY05hbWUgfHwgZmlsZSB8fCAobGlu
ZSA+PSAwKSkgewogICAgICAgICBwcmludGYoIiBAIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgSklUOjpKSVQoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgLCBt
X2p1bXBUYXJnZXRJbmRleCgwKQogICAgICwgbV9tYXBwZWRCeXRlY29kZU9mZnNldCgodW5zaWdu
ZWQpLTEpCi0gICAgLCBtX21hcHBlZFZpcnR1YWxSZWdpc3RlckluZGV4KFJlZ2lzdGVyRmlsZTo6
UmV0dXJuUEMpCisgICAgLCBtX21hcHBlZFZpcnR1YWxSZWdpc3RlckluZGV4KEpTU3RhY2s6OlJl
dHVyblBDKQogICAgICwgbV9tYXBwZWRUYWcoKFJlZ2lzdGVySUQpLTEpCiAgICAgLCBtX21hcHBl
ZFBheWxvYWQoKFJlZ2lzdGVySUQpLTEpCiAjZWxzZQpAQCAtNjA2LDggKzYwNiw4IEBAIEpJVENv
ZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgbm9wKCk7CiAKICAg
ICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwocmVnVDIpOwotICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihyZWdUMiwgUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyk7Ci0gICAgZW1pdFB1
dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBSZWdpc3RlckZpbGU6OkNv
ZGVCbG9jayk7CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QyLCBKU1N0YWNrOjpS
ZXR1cm5QQyk7CisgICAgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJs
b2NrLCBKU1N0YWNrOjpDb2RlQmxvY2spOwogCiAgICAgTGFiZWwgYmVnaW5MYWJlbCh0aGlzKTsK
IApAQCAtNjE2LDcgKzYxNiw3IEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRy
KiBmdW4KICAgICBzYW1wbGVJbnN0cnVjdGlvbihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSk7CiAjZW5kaWYKIAotICAgIEp1bXAgcmVnaXN0ZXJGaWxlQ2hlY2s7CisgICAgSnVt
cCBzdGFja0NoZWNrOwogICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlv
bkNvZGUpIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICNpZiBERkdfRU5BQkxFKFNVQ0NFU1NfU1RB
VFMpCkBAIC02NDYsNyArNjQ2LDcgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQ
dHIqIGZ1bgogI2VuZGlmCiAKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtX2NvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVn
aXN0ZXIsIHJlZ1QxKTsKLSAgICAgICAgcmVnaXN0ZXJGaWxlQ2hlY2sgPSBicmFuY2hQdHIoQmVs
b3csIEFic29sdXRlQWRkcmVzcyhtX2dsb2JhbERhdGEtPmludGVycHJldGVyLT5yZWdpc3RlckZp
bGUoKS5hZGRyZXNzT2ZFbmQoKSksIHJlZ1QxKTsKKyAgICAgICAgc3RhY2tDaGVjayA9IGJyYW5j
aFB0cihCZWxvdywgQWJzb2x1dGVBZGRyZXNzKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPnN0
YWNrKCkuYWRkcmVzc09mRW5kKCkpLCByZWdUMSk7CiAgICAgfQogCiAgICAgTGFiZWwgZnVuY3Rp
b25Cb2R5ID0gbGFiZWwoKTsKQEAgLTY2Miw5ICs2NjIsOSBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0
ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAKICAgICBMYWJlbCBhcml0eUNoZWNrOwogICAgIGlmICht
X2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKLSAgICAgICAgcmVnaXN0
ZXJGaWxlQ2hlY2subGluayh0aGlzKTsKKyAgICAgICAgc3RhY2tDaGVjay5saW5rKHRoaXMpOwog
ICAgICAgICBtX2J5dGVjb2RlT2Zmc2V0ID0gMDsKLSAgICAgICAgSklUU3R1YkNhbGwodGhpcywg
Y3RpX3JlZ2lzdGVyX2ZpbGVfY2hlY2spLmNhbGwoKTsKKyAgICAgICAgSklUU3R1YkNhbGwodGhp
cywgY3RpX3N0YWNrX2NoZWNrKS5jYWxsKCk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX2J5
dGVjb2RlT2Zmc2V0ID0gKHVuc2lnbmVkKS0xOyAvLyBSZXNldCB0aGlzLCBpbiBvcmRlciB0byBn
dWFyZCBpdHMgdXNlIHdpdGggQVNTRVJUcy4KICNlbmRpZgpAQCAtNjcyLDEwICs2NzIsMTAgQEAg
SklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogCiAgICAgICAgIGFyaXR5
Q2hlY2sgPSBsYWJlbCgpOwogICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwo
cmVnVDIpOwotICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVnVDIsIFJlZ2lzdGVy
RmlsZTo6UmV0dXJuUEMpOwotICAgICAgICBlbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFk
ZXIobV9jb2RlQmxvY2ssIFJlZ2lzdGVyRmlsZTo6Q29kZUJsb2NrKTsKKyAgICAgICAgZW1pdFB1
dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QyLCBKU1N0YWNrOjpSZXR1cm5QQyk7CisgICAgICAgIGVt
aXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29k
ZUJsb2NrKTsKIAotICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihSZWdpc3RlckZpbGU6OkFyZ3Vt
ZW50Q291bnQpLCByZWdUMSk7CisgICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQpLCByZWdUMSk7CiAgICAgICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlua1RvKGJl
Z2luTGFiZWwsIHRoaXMpOwogCiAgICAgICAgIG1fYnl0ZWNvZGVPZmZzZXQgPSAwOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw5ICs1OCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIEpJVDsKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOwogICAgIGNsYXNzIEludGVycHJldGVyOwotICAgIGNsYXNzIFJlZ2lzdGVyOwotICAgIGNs
YXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFzcyBKU1Njb3BlOworICAgIGNsYXNzIEpTU3RhY2s7
CisgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CiAKICAgICBz
dHJ1Y3QgQ2FsbExpbmtJbmZvOwpAQCAtNzc4LDEyICs3NzgsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgdm9pZCBlbWl0SW5pdFJlZ2lzdGVyKHVuc2lnbmVkIGRzdCk7CiAKLSAgICAg
ICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBSZWdpc3Rl
ckZpbGU6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KTsKLSAgICAgICAgdm9pZCBlbWl0UHV0
Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgUmVnaXN0ZXJGaWxlOjpDYWxs
RnJhbWVIZWFkZXJFbnRyeSk7Ci0gICAgICAgIHZvaWQgZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVh
ZGVyKFJlZ2lzdGVySUQgZnJvbSwgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSk7
Ci0gICAgICAgIHZvaWQgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZh
bHVlLCBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KTsKLSAgICAgICAg
dm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OkNhbGxGcmFt
ZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxs
RnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIz
MihSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdpc3RlcklEIHRv
LCBSZWdpc3RlcklEIGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIHZvaWQgZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1l
SGVhZGVyRW50cnkpOworICAgICAgICB2b2lkIGVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIo
UmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSk7CisgICAgICAg
IHZvaWQgZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFj
azo6Q2FsbEZyYW1lSGVhZGVyRW50cnkpOworICAgICAgICB2b2lkIGVtaXRQdXRJbW1lZGlhdGVU
b0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50
cnkpOworICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6
OkNhbGxGcmFtZUhlYWRlckVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20gPSBj
YWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFk
ZXIzMihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0
ZXJJRCBmcm9tID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwogCiAgICAgICAgIEpTVmFsdWUgZ2V0Q29u
c3RhbnRPcGVyYW5kKHVuc2lnbmVkIHNyYyk7CiAgICAgICAgIGJvb2wgaXNPcGVyYW5kQ29uc3Rh
bnRJbW1lZGlhdGVJbnQodW5zaWduZWQgc3JjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksOCAr
NTksOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgdW5z
aWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAogICAgIGVtaXRM
b2FkKGRzdCwgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0
cihSZWdpc3RlckZpbGU6OlJldHVyblBDLCByZWdUMik7Ci0gICAgZW1pdEdldEZyb21DYWxsRnJh
bWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSwgY2FsbEZyYW1lUmVnaXN0ZXIp
OworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlJldHVyblBDLCBy
ZWdUMik7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVy
RnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIAogICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVm
b3JlUmV0dXJuKHJlZ1QyKTsKICAgICByZXQoKTsKQEAgLTc2LDggKzc2LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcmV0X29iamVjdF9vcl90aGlzKElucwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBKdW1wIG5vdE9iamVj
dCA9IGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDIpOwogCi0gICAgZW1pdEdldEZyb21DYWxsRnJh
bWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQywgcmVnVDIpOwotICAgIGVtaXRHZXRG
cm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUsIGNhbGxGcmFt
ZVJlZ2lzdGVyKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpS
ZXR1cm5QQywgcmVnVDIpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3Rh
Y2s6OkNhbGxlckZyYW1lLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiAKICAgICByZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybihyZWdUMik7CiAgICAgcmV0KCk7CkBAIC04Niw4ICs4Niw4IEBA
IHZvaWQgSklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJbnMKICAgICBub3RPYmplY3Qu
bGluayh0aGlzKTsKICAgICBlbWl0TG9hZCh0aGlzUmVnLCByZWdUMSwgcmVnVDApOwogCi0gICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQywgcmVn
VDIpOwotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2Fs
bGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihKU1N0YWNrOjpSZXR1cm5QQywgcmVnVDIpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1lLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiAK
ICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdUMik7CiAgICAgcmV0KCk7
CkBAIC0xNDksMjAgKzE0OSwyMCBAQCB2b2lkIEpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKEluc3Ry
dWN0aW9uCiAgICAgICAgIGVtaXRMb2FkVGFnKGFyZ3VtZW50cywgcmVnVDEpOwogICAgICAgICBz
bG93Q2FzZS5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKIAotICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihSZWdp
c3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLCByZWdUMik7CisgICAgICAgIGxvYWQzMihwYXlsb2Fk
Rm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZWdUMik7CiAgICAgICAgIHNsb3dDYXNlLmFw
cGVuZChicmFuY2gzMihBYm92ZSwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcmd1bWVudHM6Ok1heEFy
Z3VtZW50cyArIDEpKSk7CiAgICAgICAgIC8vIHJlZ1QyOiBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcwogCiAgICAgICAgIG1vdmUocmVnVDIsIHJlZ1QzKTsKLSAgICAgICAgYWRkMzIoVHJ1c3Rl
ZEltbTMyKGZpcnN0RnJlZVJlZ2lzdGVyICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJT
aXplKSwgcmVnVDMpOworICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoZmlyc3RGcmVlUmVnaXN0
ZXIgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSwgcmVnVDMpOwogICAgICAgICBsc2hp
ZnQzMihUcnVzdGVkSW1tMzIoMyksIHJlZ1QzKTsKICAgICAgICAgYWRkUHRyKGNhbGxGcmFtZVJl
Z2lzdGVyLCByZWdUMyk7CiAgICAgICAgIC8vIHJlZ1QzOiBuZXdDYWxsRnJhbWUKIAotICAgICAg
ICBzbG93Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKEJlbG93LCBBYnNvbHV0ZUFkZHJlc3MobV9nbG9i
YWxEYXRhLT5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuYWRkcmVzc09mRW5kKCkpLCByZWdU
MykpOworICAgICAgICBzbG93Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKEJlbG93LCBBYnNvbHV0ZUFk
ZHJlc3MobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+c3RhY2soKS5hZGRyZXNzT2ZFbmQoKSks
IHJlZ1QzKSk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBBcmd1bWVudENvdW50LgotICAgICAg
ICBzdG9yZTMyKHJlZ1QyLCBwYXlsb2FkRm9yKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCwg
cmVnVDMpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMiwgcGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1
bWVudENvdW50LCByZWdUMykpOwogCiAgICAgICAgIC8vIEluaXRpYWxpemUgJ3RoaXMnLgogICAg
ICAgICBlbWl0TG9hZCh0aGlzVmFsdWUsIHJlZ1QxLCByZWdUMCk7CkBAIC0yMDIsNyArMjAyLDcg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbCgpCiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwo
dGhpcywgY3RpX29wX2NhbGxfZXZhbCk7IC8vIEluaXRpYWxpemVzIFNjb3BlQ2hhaW47IFJldHVy
blBDOyBDb2RlQmxvY2suCiAgICAgc3R1YkNhbGwuY2FsbCgpOwogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaDMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcp
KSk7Ci0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpDYWxs
ZXJGcmFtZSwgY2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVh
ZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1lLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiAKICAgICBz
YW1wbGVDb2RlQmxvY2sobV9jb2RlQmxvY2spOwogfQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQg
SklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShWZWN0b3IKIHsKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7CiAKLSAgICBlbWl0TG9hZChSZWdpc3RlckZpbGU6OkNhbGxlZSwgcmVnVDEsIHJlZ1Qw
KTsKKyAgICBlbWl0TG9hZChKU1N0YWNrOjpDYWxsZWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgZW1p
dE5ha2VkQ2FsbChtX2dsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlWaXJ0dWFsQ2FsbCgpKTsKIAog
ICAgIHNhbXBsZUNvZGVCbG9jayhtX2NvZGVCbG9jayk7CkBAIC0yNTEsMTQgKzI1MSwxNCBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgCiAgICAgICAgIGFk
ZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2Fs
bEZyYW1lUmVnaXN0ZXIsIHJlZ1QzKTsKIAotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihh
cmdDb3VudCksIHBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50LCByZWdUMykp
OworICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIHBheWxvYWRGb3IoSlNT
dGFjazo6QXJndW1lbnRDb3VudCwgcmVnVDMpKTsKICAgICB9IC8vIHJlZ1QzIGhvbGRzIG5ld0Nh
bGxGcmFtZSB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlhbGl6ZWQuCiAgICAgCi0gICAgc3RvcmVQ
dHIoVHJ1c3RlZEltbVB0cihpbnN0cnVjdGlvbiksIHRhZ0ZvcihSZWdpc3RlckZpbGU6OkFyZ3Vt
ZW50Q291bnQsIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0
cihpbnN0cnVjdGlvbiksIHRhZ0ZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50LCBjYWxsRnJhbWVS
ZWdpc3RlcikpOwogICAgIGVtaXRMb2FkKGNhbGxlZSwgcmVnVDEsIHJlZ1QwKTsgLy8gcmVnVDEs
IHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAotICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCBB
ZGRyZXNzKHJlZ1QzLCBSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSkpOwotICAgIGVtaXRTdG9yZShSZWdpc3RlckZpbGU6OkNhbGxl
ZSwgcmVnVDEsIHJlZ1QwLCByZWdUMyk7CisgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIs
IEFkZHJlc3MocmVnVDMsIEpTU3RhY2s6OkNhbGxlckZyYW1lICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSkpOworICAgIGVtaXRTdG9yZShKU1N0YWNrOjpDYWxsZWUsIHJlZ1Qx
LCByZWdUMCwgcmVnVDMpOwogICAgIG1vdmUocmVnVDMsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKIAog
ICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpIHsKQEAgLTI4MSw3ICsyODEsNyBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgbV9jYWxsU3RydWN0
dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uYnl0ZWNvZGVJbmRleCA9
IG1fYnl0ZWNvZGVPZmZzZXQ7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9P
RkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlZ1QxKTsKLSAgICBlbWl0UHV0Q2VsbFRv
Q2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4pOworICAgIGVt
aXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIocmVnVDEsIEpTU3RhY2s6OlNjb3BlQ2hhaW4pOwog
ICAgIG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhd
LmhvdFBhdGhPdGhlciA9IGVtaXROYWtlZENhbGwoKTsKIAogICAgIHNhbXBsZUNvZGVCbG9jayht
X2NvZGVCbG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJl
dmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDIwICs3NCwyMCBAQCB2b2lkIEpJVDo6Y29tcGlsZUxvYWRW
YXJhcmdzKEluc3RydWN0aW9uCiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYXJndW1l
bnRzLCByZWdUMCk7CiAgICAgICAgIHNsb3dDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWws
IHJlZ1QwLCBUcnVzdGVkSW1tUHRyKEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpKSkpOwogCi0g
ICAgICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVu
dENvdW50LCByZWdUMCk7CisgICAgICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoSlNT
dGFjazo6QXJndW1lbnRDb3VudCwgcmVnVDApOwogICAgICAgICBzbG93Q2FzZS5hcHBlbmQoYnJh
bmNoMzIoQWJvdmUsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoQXJndW1lbnRzOjpNYXhBcmd1bWVudHMg
KyAxKSkpOwogICAgICAgICAvLyByZWdUMDogYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMKIAog
ICAgICAgICBtb3ZlKHJlZ1QwLCByZWdUMSk7Ci0gICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihm
aXJzdEZyZWVSZWdpc3RlciArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIHJl
Z1QxKTsKKyAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGZpcnN0RnJlZVJlZ2lzdGVyICsgSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIHJlZ1QxKTsKICAgICAgICAgbHNoaWZ0MzIoVHJ1
c3RlZEltbTMyKDMpLCByZWdUMSk7CiAgICAgICAgIGFkZFB0cihjYWxsRnJhbWVSZWdpc3Rlciwg
cmVnVDEpOwogICAgICAgICAvLyByZWdUMTogbmV3Q2FsbEZyYW1lCiAKLSAgICAgICAgc2xvd0Nh
c2UuYXBwZW5kKGJyYW5jaFB0cihCZWxvdywgQWJzb2x1dGVBZGRyZXNzKG1fZ2xvYmFsRGF0YS0+
aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmFkZHJlc3NPZkVuZCgpKSwgcmVnVDEpKTsKKyAg
ICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihCZWxvdywgQWJzb2x1dGVBZGRyZXNzKG1f
Z2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPnN0YWNrKCkuYWRkcmVzc09mRW5kKCkpLCByZWdUMSkp
OwogCiAgICAgICAgIC8vIEluaXRpYWxpemUgQXJndW1lbnRDb3VudC4KLSAgICAgICAgc3RvcmUz
MihyZWdUMCwgQWRkcmVzcyhyZWdUMSwgUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50ICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3RvcmUzMihyZWdU
MCwgQWRkcmVzcyhyZWdUMSwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSAndGhpcycu
CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZhbHVlLCByZWdUMik7CkBAIC0x
MjUsNyArMTI1LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbCgpCiAgICAgSklUU3R1YkNh
bGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2NhbGxfZXZhbCk7IC8vIEluaXRpYWxpemVzIFNjb3Bl
Q2hhaW47IFJldHVyblBDOyBDb2RlQmxvY2suCiAgICAgc3R1YkNhbGwuY2FsbCgpOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW1QdHIoSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSkpKSk7Ci0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
UmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSwgY2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1lLCBjYWxsRnJhbWVS
ZWdpc3Rlcik7CiAKICAgICBzYW1wbGVDb2RlQmxvY2sobV9jb2RlQmxvY2spOwogfQpAQCAtMTM0
LDcgKzEzNCw3IEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShWZWN0b3IKIHsK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
clB0cihSZWdpc3RlckZpbGU6OkNhbGxlZSwgcmVnVDApOworICAgIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDApOwogICAgIGVtaXROYWtlZENhbGwo
bV9nbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpVmlydHVhbENhbGwoKSk7CiAKICAgICBzYW1wbGVD
b2RlQmxvY2sobV9jb2RlQmxvY2spOwpAQCAtMTczLDE0ICsxNzMsMTQgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgICAgICB9CiAgICAgCiAgICAgICAgIGFk
ZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2Fs
bEZyYW1lUmVnaXN0ZXIsIHJlZ1QxKTsKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJn
Q291bnQpLCBBZGRyZXNzKHJlZ1QxLCBSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3MocmVnVDEsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogICAgIH0gLy8gcmVnVDEg
aG9sZHMgbmV3Q2FsbEZyYW1lIHdpdGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KICAgICAK
LSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpbnN0cnVjdGlvbiAtIG1fY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgUmVnaXN0ZXJG
aWxlOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwor
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNrOjpB
cmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxl
ZS4KIAotICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCBBZGRyZXNzKHJlZ1QxLCBSZWdp
c3RlckZpbGU6OkNhbGxlckZyYW1lICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSkpOwotICAgIHN0b3JlUHRyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBSZWdpc3RlckZpbGU6OkNh
bGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKyAgICBzdG9yZVB0
cihjYWxsRnJhbWVSZWdpc3RlciwgQWRkcmVzcyhyZWdUMSwgSlNTdGFjazo6Q2FsbGVyRnJhbWUg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CisgICAgc3RvcmVQdHIocmVn
VDAsIEFkZHJlc3MocmVnVDEsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkpKTsKICAgICBtb3ZlKHJlZ1QxLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiAK
ICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CkBAIC0yMDEsNyArMjAxLDcgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIG1fY2FsbFN0cnVj
dHVyZVN0dWJDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmJ5dGVjb2RlSW5kZXgg
PSBtX2J5dGVjb2RlT2Zmc2V0OwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1Rf
T0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZWdUMSk7Ci0gICAgZW1pdFB1dFRvQ2Fs
bEZyYW1lSGVhZGVyKHJlZ1QxLCBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4pOworICAgIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgSlNTdGFjazo6U2NvcGVDaGFpbik7CiAgICAgbV9j
YWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uaG90UGF0
aE90aGVyID0gZW1pdE5ha2VkQ2FsbCgpOwogCiAgICAgc2FtcGxlQ29kZUJsb2NrKG1fY29kZUJs
b2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAxMzA3
MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgY2xhc3MgSlNHbG9iYWxEYXRhOwotICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKKyAgICBjbGFz
cyBKU1N0YWNrOwogI2VuZGlmCiAgICAgCiAgICAgY2xhc3MgSklUQ29kZSB7CkBAIC0xMjksOSAr
MTI5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICAvLyBF
eGVjdXRlIHRoZSBjb2RlIQotICAgICAgICBpbmxpbmUgSlNWYWx1ZSBleGVjdXRlKFJlZ2lzdGVy
RmlsZSogcmVnaXN0ZXJGaWxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQorICAgICAgICBpbmxpbmUgSlNWYWx1ZSBleGVjdXRlKEpTU3RhY2sqIHN0YWNr
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZShjdGlUcmFt
cG9saW5lKG1fcmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCByZWdpc3RlckZpbGUsIGNh
bGxGcmFtZSwgMCwgMCwgZ2xvYmFsRGF0YSkpOworICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBKU1ZhbHVlOjpkZWNvZGUoY3RpVHJhbXBvbGluZShtX3JlZi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwgc3RhY2ssIGNhbGxGcmFtZSwgMCwgMCwgZ2xvYmFsRGF0YSkpOwogICAgICAgICAg
ICAgcmV0dXJuIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiA/IGpzTnVsbCgpIDogcmVzdWx0OwogICAg
ICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
TWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lTWV0aG9kcy5oCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEyIEBA
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKSVQ6OmdldENvbnN0YW50T3AKICAgICByZXR1cm4gbV9j
b2RlQmxvY2stPmdldENvbnN0YW50KHNyYyk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6
OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIFJlZ2lzdGVyRmlsZTo6
Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJFbnRyeSBlbnRyeSkKIHsKICAgICBzdG9yZVB0cihmcm9tLCBwYXlsb2FkRm9yKGVudHJ5
LCBjYWxsRnJhbWVSZWdpc3RlcikpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0
UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgUmVnaXN0ZXJGaWxlOjpD
YWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRQ
dXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJFbnRyeSBlbnRyeSkKIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIHN0b3Jl
MzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCB0YWdGb3IoZW50cnksIGNhbGxGcmFt
ZVJlZ2lzdGVyKSk7CkBAIC02MywxOCArNjMsMTggQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6
ZW1pdFB1dENlbGxUb0NhbAogICAgIHN0b3JlUHRyKGZyb20sIHBheWxvYWRGb3IoZW50cnksIGNh
bGxGcmFtZVJlZ2lzdGVyKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRQdXRJ
bnRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIFJlZ2lzdGVyRmlsZTo6Q2FsbEZy
YW1lSGVhZGVyRW50cnkgZW50cnkpCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0UHV0SW50
VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSBlbnRyeSkKIHsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihJbnQzMlRhZyksIGlu
dFRhZ0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKICAgICBzdG9yZTMyKGZyb20sIGlu
dFBheWxvYWRGb3IoZW50cnksIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgdm9pZCBKSVQ6OmVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1
ZSwgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKK0FMV0FZU19JTkxJ
TkUgdm9pZCBKSVQ6OmVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1
ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCiB7CiAgICAgc3RvcmVQdHIo
VHJ1c3RlZEltbVB0cih2YWx1ZSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICog
c2l6ZW9mKFJlZ2lzdGVyKSkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlckVudHJ5
IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCitBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJFbnRyeSBlbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tKQogewogICAg
IGxvYWRQdHIoQWRkcmVzcyhmcm9tLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKQEAgLTEwMSw3ICsxMDEsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjplbWl0TG9hZENoYXJhY3RlCiAgICAgY29udDhCaXQubGluayh0aGlzKTsKIH0KIAotQUxX
QVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihSZWdpc3Rl
ckZpbGU6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3Rl
cklEIGZyb20pCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlcjMyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdpc3RlcklEIHRv
LCBSZWdpc3RlcklEIGZyb20pCiB7CiAgICAgbG9hZDMyKEFkZHJlc3MoZnJvbSwgZW50cnkgKiBz
aXplb2YoUmVnaXN0ZXIpKSwgdG8pOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0yNjUsOSArMjY1
LDkgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6dXBkYXRlVG9wQ2FsbEZyYQogICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxpbnQ+KG1fYnl0ZWNvZGVPZmZzZXQpID49IDApOwogICAgIGlmIChtX2J5
dGVjb2RlT2Zmc2V0KSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgc3RvcmVQdHIo
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIG1fYnl0
ZWNvZGVPZmZzZXQgKyAxKSwgaW50VGFnRm9yKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkp
OworICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpICsgbV9ieXRlY29kZU9mZnNldCArIDEpLCBpbnRUYWdGb3IoSlNTdGFjazo6
QXJndW1lbnRDb3VudCkpOwogI2Vsc2UKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobV9i
eXRlY29kZU9mZnNldCArIDEpLCBpbnRUYWdGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50
KSk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKG1fYnl0ZWNvZGVPZmZzZXQgKyAxKSwg
aW50VGFnRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKICNlbmRpZgogICAgIH0KICAgICBz
dG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgJm1fZ2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1lKTsK
QEAgLTc1Nyw3ICs3NTcsNyBAQCBpbmxpbmUgdm9pZCBKSVQ6OnVubWFwKFJlZ2lzdGVySUQgcmVn
aXN0CiBpbmxpbmUgdm9pZCBKSVQ6OnVubWFwKCkKIHsKICAgICBtX21hcHBlZEJ5dGVjb2RlT2Zm
c2V0ID0gKHVuc2lnbmVkKS0xOwotICAgIG1fbWFwcGVkVmlydHVhbFJlZ2lzdGVySW5kZXggPSBS
ZWdpc3RlckZpbGU6OlJldHVyblBDOworICAgIG1fbWFwcGVkVmlydHVhbFJlZ2lzdGVySW5kZXgg
PSBKU1N0YWNrOjpSZXR1cm5QQzsKICAgICBtX21hcHBlZFRhZyA9IChSZWdpc3RlcklEKS0xOwog
ICAgIG1fbWFwcGVkUGF5bG9hZCA9IChSZWdpc3RlcklEKS0xOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTMwNzE1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCwxMSArNzAsMTEgQEAgUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5
SGFuZGxlPiBKSVQ6OgogCiAgICAgLy8gRmluaXNoIGNhbm9uaWNhbCBpbml0aWFsaXphdGlvbiBi
ZWZvcmUgSlMgZnVuY3Rpb24gY2FsbC4KICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVD
VF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlZ1QxKTsKLSAgICBlbWl0UHV0Q2Vs
bFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4pOworICAg
IGVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIocmVnVDEsIEpTU3RhY2s6OlNjb3BlQ2hhaW4p
OwogCiAgICAgLy8gQWxzbyBpbml0aWFsaXplIFJldHVyblBDIGZvciB1c2UgYnkgbGF6eSBsaW5r
aW5nIGFuZCBleGNlcHRpb25zLgogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChy
ZWdUMyk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QzLCBSZWdpc3RlckZpbGU6
OlJldHVyblBDKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVnVDMsIEpTU3RhY2s6
OlJldHVyblBDKTsKICAgICAKICAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgJm1fZ2xv
YmFsRGF0YS0+dG9wQ2FsbEZyYW1lKTsKICAgICByZXN0b3JlQXJndW1lbnRSZWZlcmVuY2UoKTsK
QEAgLTkwLDExICs5MCwxMSBAQCBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEpJ
VDo6CiAKICAgICAvLyBGaW5pc2ggY2Fub25pY2FsIGluaXRpYWxpemF0aW9uIGJlZm9yZSBKUyBm
dW5jdGlvbiBjYWxsLgogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9G
KEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVnVDEpOwotICAgIGVtaXRQdXRDZWxsVG9DYWxsRnJh
bWVIZWFkZXIocmVnVDEsIFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbik7CisgICAgZW1pdFB1dENl
bGxUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgSlNTdGFjazo6U2NvcGVDaGFpbik7CiAKICAgICAv
LyBBbHNvIGluaXRpYWxpemUgUmV0dXJuUEMgZm9yIHVzZSBieSBsYXp5IGxpbmtpbmcgYW5kIGV4
ZXB0aW9ucy4KICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwocmVnVDMpOwotICAg
IGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMywgUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyk7
CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QzLCBKU1N0YWNrOjpSZXR1cm5QQyk7
CiAgICAgCiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsICZtX2dsb2JhbERhdGEtPnRv
cENhbGxGcmFtZSk7CiAgICAgcmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7CkBAIC0xMTAsNyAr
MTEwLDcgQEAgUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBKSVQ6OgogCiAgICAg
Ly8gRmluaXNoIGNhbm9uaWNhbCBpbml0aWFsaXphdGlvbiBiZWZvcmUgSlMgZnVuY3Rpb24gY2Fs
bC4KICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9u
LCBtX3Njb3BlKSksIHJlZ1QxKTsKLSAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJl
Z1QxLCBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4pOworICAgIGVtaXRQdXRDZWxsVG9DYWxsRnJh
bWVIZWFkZXIocmVnVDEsIEpTU3RhY2s6OlNjb3BlQ2hhaW4pOwogCiAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9leGVjdXRhYmxlKSksIHJl
Z1QyKTsKICAgICBKdW1wIGhhc0NvZGVCbG9jazEgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1
YWwsIEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4ZWN1dGFibGUsIG1f
bnVtUGFyYW1ldGVyc0ZvckNhbGwpKSwgVHJ1c3RlZEltbTMyKDApKTsKQEAgLTEzNCw3ICsxMzQs
NyBAQCBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEpJVDo6CiAKICAgICAvLyBG
aW5pc2ggY2Fub25pY2FsIGluaXRpYWxpemF0aW9uIGJlZm9yZSBKUyBmdW5jdGlvbiBjYWxsLgog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1f
c2NvcGUpKSwgcmVnVDEpOwotICAgIGVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIocmVnVDEs
IFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbik7CisgICAgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhl
YWRlcihyZWdUMSwgSlNTdGFjazo6U2NvcGVDaGFpbik7CiAKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX2V4ZWN1dGFibGUpKSwgcmVnVDIp
OwogICAgIEp1bXAgaGFzQ29kZUJsb2NrMiA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwg
QWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9udW1Q
YXJhbWV0ZXJzRm9yQ29uc3RydWN0KSksIFRydXN0ZWRJbW0zMigwKSk7CkBAIC0xNTIsMzcgKzE1
MiwzNyBAQCBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEpJVDo6CiAKICAgICBj
YWxsU2xvd0Nhc2UubGluayh0aGlzKTsKICAgICAvLyBGaW5pc2ggY2Fub25pY2FsIGluaXRpYWxp
emF0aW9uIGJlZm9yZSBKUyBmdW5jdGlvbiBjYWxsLgotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUsIHJlZ1QyKTsKLSAgICBlbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4sIHJlZ1QyLCBy
ZWdUMik7Ci0gICAgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdUMiwgUmVnaXN0ZXJG
aWxlOjpTY29wZUNoYWluKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0
YWNrOjpDYWxsZXJGcmFtZSwgcmVnVDIpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1QyLCByZWdUMik7CisgICAgZW1pdFB1dENlbGxU
b0NhbGxGcmFtZUhlYWRlcihyZWdUMiwgSlNTdGFjazo6U2NvcGVDaGFpbik7CiAKICAgICAvLyBB
bHNvIGluaXRpYWxpemUgUmV0dXJuUEMgYW5kIENvZGVCbG9jaywgbGlrZSBhIEpTIGZ1bmN0aW9u
IHdvdWxkLgogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChyZWdUMyk7Ci0gICAg
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QzLCBSZWdpc3RlckZpbGU6OlJldHVyblBDKTsK
LSAgICBlbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIoMCwgUmVnaXN0ZXJGaWxlOjpD
b2RlQmxvY2spOworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMywgSlNTdGFjazo6
UmV0dXJuUEMpOworICAgIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcigwLCBKU1N0
YWNrOjpDb2RlQmxvY2spOwogCiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsICZtX2ds
b2JhbERhdGEtPnRvcENhbGxGcmFtZSk7CiAgICAgcmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7
CiAgICAgQ2FsbCBjYWxsQ2FsbE5vdEpTRnVuY3Rpb24gPSBjYWxsKCk7Ci0gICAgZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSwgY2FsbEZyYW1l
UmVnaXN0ZXIpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNh
bGxlckZyYW1lLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4ocmVnVDMpOwogICAgIHJldCgpOwogCiAgICAgY29uc3RydWN0U2xvd0Nhc2Uu
bGluayh0aGlzKTsKICAgICAvLyBGaW5pc2ggY2Fub25pY2FsIGluaXRpYWxpemF0aW9uIGJlZm9y
ZSBKUyBmdW5jdGlvbiBjYWxsLgotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJl
Z2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUsIHJlZ1QyKTsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4sIHJlZ1QyLCByZWdUMik7Ci0gICAg
ZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdUMiwgUmVnaXN0ZXJGaWxlOjpTY29wZUNo
YWluKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZXJG
cmFtZSwgcmVnVDIpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6
OlNjb3BlQ2hhaW4sIHJlZ1QyLCByZWdUMik7CisgICAgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhl
YWRlcihyZWdUMiwgSlNTdGFjazo6U2NvcGVDaGFpbik7CiAKICAgICAvLyBBbHNvIGluaXRpYWxp
emUgUmV0dXJuUEMgYW5kIENvZGVCbG9jaywgbGlrZSBhIEpTIGZ1bmN0aW9uIHdvdWxkLgogICAg
IHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChyZWdUMyk7Ci0gICAgZW1pdFB1dFRvQ2Fs
bEZyYW1lSGVhZGVyKHJlZ1QzLCBSZWdpc3RlckZpbGU6OlJldHVyblBDKTsKLSAgICBlbWl0UHV0
SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIoMCwgUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2spOwor
ICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMywgSlNTdGFjazo6UmV0dXJuUEMpOwor
ICAgIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcigwLCBKU1N0YWNrOjpDb2RlQmxv
Y2spOwogCiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsICZtX2dsb2JhbERhdGEtPnRv
cENhbGxGcmFtZSk7CiAgICAgcmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7CiAgICAgQ2FsbCBj
YWxsQ29uc3RydWN0Tm90SlNGdW5jdGlvbiA9IGNhbGwoKTsKLSAgICBlbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lLCBjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVyRnJh
bWUsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJl
dHVybihyZWdUMyk7CiAgICAgcmV0KCk7CiAKQEAgLTIyNywxOCArMjI3LDE4IEBAIEpJVDo6TGFi
ZWwgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUMKIAogICAgIExhYmVsIG5hdGl2ZUNhbGxU
aHVuayA9IGFsaWduKCk7CiAKLSAgICBlbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIo
MCwgUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2spOworICAgIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxG
cmFtZUhlYWRlcigwLCBKU1N0YWNrOjpDb2RlQmxvY2spOwogICAgIHN0b3JlUHRyKGNhbGxGcmFt
ZVJlZ2lzdGVyLCAmbV9nbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUpOwogCiAjaWYgQ1BVKFg4NikK
ICAgICAvLyBMb2FkIGNhbGxlciBmcmFtZSdzIHNjb3BlIGNoYWluIGludG8gdGhpcyBjYWxsZnJh
bWUgc28gdGhhdCB3aGF0ZXZlciB3ZSBjYWxsIGNhbgogICAgIC8vIGdldCB0byBpdHMgZ2xvYmFs
IGRhdGEuCi0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpD
YWxsZXJGcmFtZSwgcmVnVDApOwotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJl
Z2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0UHV0Q2VsbFRv
Q2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4pOworICAgIGVt
aXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1lLCByZWdUMCk7
CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6U2NvcGVDaGFpbiwg
cmVnVDEsIHJlZ1QwKTsKKyAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBK
U1N0YWNrOjpTY29wZUNoYWluKTsKIAogICAgIHBlZWsocmVnVDEpOwotICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihyZWdUMSwgUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyk7CisgICAgZW1pdFB1
dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBKU1N0YWNrOjpSZXR1cm5QQyk7CiAKICAgICAvLyBD
YWxsaW5nIGNvbnZlbnRpb246ICAgICAgZihlY3gsIGVkeCwgLi4uKTsKICAgICAvLyBIb3N0IGZ1
bmN0aW9uIHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBKSVQ6
OkxhYmVsIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDCiAgICAgc3ViUHRyKFRydXN0ZWRJ
bW0zMigxNiAtIHNpemVvZih2b2lkKikpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7IC8vIEFsaWdu
IHN0YWNrIGFmdGVyIGNhbGwuCiAKICAgICAvLyBjYWxsIHRoZSBmdW5jdGlvbgotICAgIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlLCByZWdUMSk7Cisg
ICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdUMSk7
CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwg
bV9leGVjdXRhYmxlKSksIHJlZ1QxKTsKICAgICBtb3ZlKHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rl
cik7IC8vIEVhZ2VybHkgcmVzdG9yZSBjYWxsZXIgZnJhbWUgcmVnaXN0ZXIgdG8gYXZvaWQgbG9h
ZGluZyBmcm9tIHN0YWNrLgogICAgIGNhbGwoQWRkcmVzcyhyZWdUMSwgZXhlY3V0YWJsZU9mZnNl
dFRvRnVuY3Rpb24pKTsKQEAgLTI1NywxOSArMjU3LDE5IEBAIEpJVDo6TGFiZWwgSklUOjpwcml2
YXRlQ29tcGlsZUNUSU5hdGl2ZUMKICNlbGlmIENQVShBUk0pCiAgICAgLy8gTG9hZCBjYWxsZXIg
ZnJhbWUncyBzY29wZSBjaGFpbiBpbnRvIHRoaXMgY2FsbGZyYW1lIHNvIHRoYXQgd2hhdGV2ZXIg
d2UgY2FsbCBjYW4KICAgICAvLyBnZXQgdG8gaXRzIGdsb2JhbCBkYXRhLgotICAgIGVtaXRHZXRG
cm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUsIHJlZ1QyKTsK
LSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OlNjb3BlQ2hh
aW4sIHJlZ1QxLCByZWdUMik7Ci0gICAgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdU
MSwgUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihKU1N0YWNrOjpDYWxsZXJGcmFtZSwgcmVnVDIpOworICAgIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1QxLCByZWdUMik7CisgICAg
ZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgSlNTdGFjazo6U2NvcGVDaGFpbik7
CiAKICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwocmVnVDMpOyAvLyBDYWxsZWUg
cHJlc2VydmVkCi0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QzLCBSZWdpc3RlckZp
bGU6OlJldHVyblBDKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVnVDMsIEpTU3Rh
Y2s6OlJldHVyblBDKTsKIAogICAgIC8vIENhbGxpbmcgY29udmVudGlvbjogICAgICBmKHIwID09
IHJlZ1QwLCByMSA9PSByZWdUMSwgLi4uKTsKICAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVy
ZTogZihFeGVjU3RhdGUqKTsKICAgICBtb3ZlKGNhbGxGcmFtZVJlZ2lzdGVyLCBBUk1SZWdpc3Rl
cnM6OnIwKTsKIAogICAgIC8vIGNhbGwgdGhlIGZ1bmN0aW9uCi0gICAgZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUsIEFSTVJlZ2lzdGVyczo6cjEpOwor
ICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgQVJNUmVn
aXN0ZXJzOjpyMSk7CiAgICAgbW92ZShyZWdUMiwgY2FsbEZyYW1lUmVnaXN0ZXIpOyAvLyBFYWdl
cmx5IHJlc3RvcmUgY2FsbGVyIGZyYW1lIHJlZ2lzdGVyIHRvIGF2b2lkIGxvYWRpbmcgZnJvbSBz
dGFjay4KICAgICBsb2FkUHRyKEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpyMSwgT0JKRUNUX09GRlNF
VE9GKEpTRnVuY3Rpb24sIG1fZXhlY3V0YWJsZSkpLCByZWdUMik7CiAgICAgY2FsbChBZGRyZXNz
KHJlZ1QyLCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikpOwpAQCAtMjc4LDE4ICsyNzgsMTgg
QEAgSklUOjpMYWJlbCBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQwogI2VsaWYgQ1BVKFNI
NCkKICAgICAvLyBMb2FkIGNhbGxlciBmcmFtZSdzIHNjb3BlIGNoYWluIGludG8gdGhpcyBjYWxs
ZnJhbWUgc28gdGhhdCB3aGF0ZXZlciB3ZSBjYWxsIGNhbgogICAgIC8vIGdldCB0byBpdHMgZ2xv
YmFsIGRhdGEuCi0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxl
OjpDYWxsZXJGcmFtZSwgcmVnVDIpOwotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRy
KFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwgcmVnVDEsIHJlZ1QyKTsKLSAgICBlbWl0UHV0Q2Vs
bFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4pOworICAg
IGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1lLCByZWdU
Mik7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6U2NvcGVDaGFp
biwgcmVnVDEsIHJlZ1QyKTsKKyAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1Qx
LCBKU1N0YWNrOjpTY29wZUNoYWluKTsKIAogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChyZWdUMyk7IC8vIENhbGxlZSBwcmVzZXJ2ZWQKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIocmVnVDMsIFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMpOworICAgIGVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlcihyZWdUMywgSlNTdGFjazo6UmV0dXJuUEMpOwogCiAgICAgLy8gQ2FsbGluZyBj
b252ZW50aW9uOiBmKHIwID09IHJlZ1Q0LCByMSA9PSByZWdUNSwgLi4uKTsKICAgICAvLyBIb3N0
IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKICAgICBtb3ZlKGNhbGxGcmFtZVJl
Z2lzdGVyLCByZWdUNCk7CiAKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdp
c3RlckZpbGU6OkNhbGxlZSwgcmVnVDUpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDUpOwogICAgIG1vdmUocmVnVDIsIGNhbGxGcmFtZVJl
Z2lzdGVyKTsgLy8gRWFnZXJseSByZXN0b3JlIGNhbGxlciBmcmFtZSByZWdpc3RlciB0byBhdm9p
ZCBsb2FkaW5nIGZyb20gc3RhY2suCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Q1LCBPQkpFQ1Rf
T0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9leGVjdXRhYmxlKSksIHJlZ1QyKTsKIApAQCAtMjk4LDEy
ICsyOTgsMTIgQEAgSklUOjpMYWJlbCBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQwogI2Vs
aWYgQ1BVKE1JUFMpCiAgICAgLy8gTG9hZCBjYWxsZXIgZnJhbWUncyBzY29wZSBjaGFpbiBpbnRv
IHRoaXMgY2FsbGZyYW1lIHNvIHRoYXQgd2hhdGV2ZXIgd2UgY2FsbCBjYW4KICAgICAvLyBnZXQg
dG8gaXRzIGdsb2JhbCBkYXRhLgotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJl
Z2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUsIHJlZ1QwKTsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4sIHJlZ1QxLCByZWdUMCk7Ci0gICAg
ZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgUmVnaXN0ZXJGaWxlOjpTY29wZUNo
YWluKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZXJG
cmFtZSwgcmVnVDApOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6
OlNjb3BlQ2hhaW4sIHJlZ1QxLCByZWdUMCk7CisgICAgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhl
YWRlcihyZWdUMSwgSlNTdGFjazo6U2NvcGVDaGFpbik7CiAKICAgICBwcmVzZXJ2ZVJldHVybkFk
ZHJlc3NBZnRlckNhbGwocmVnVDMpOyAvLyBDYWxsZWUgcHJlc2VydmVkCi0gICAgZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKHJlZ1QzLCBSZWdpc3RlckZpbGU6OlJldHVyblBDKTsKKyAgICBlbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVnVDMsIEpTU3RhY2s6OlJldHVyblBDKTsKIAogICAgIC8v
IENhbGxpbmcgY29udmVudGlvbjogICAgICBmKGEwLCBhMSwgYTIsIGEzKTsKICAgICAvLyBIb3N0
IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKQEAgLTMxNiw3ICszMTYsNyBAQCBK
SVQ6OkxhYmVsIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDCiAgICAgbW92ZShjYWxsRnJh
bWVSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6YTApOwogCiAgICAgLy8gQ2FsbAotICAgIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlLCBNSVBTUmVnaXN0
ZXJzOjphMik7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2Fs
bGVlLCBNSVBTUmVnaXN0ZXJzOjphMik7CiAgICAgbG9hZFB0cihBZGRyZXNzKE1JUFNSZWdpc3Rl
cnM6OmEyLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9leGVjdXRhYmxlKSksIHJlZ1Qy
KTsKICAgICBtb3ZlKHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7IC8vIEVhZ2VybHkgcmVzdG9y
ZSBjYWxsZXIgZnJhbWUgcmVnaXN0ZXIgdG8gYXZvaWQgbG9hZGluZyBmcm9tIHN0YWNrLgogICAg
IGNhbGwoQWRkcmVzcyhyZWdUMiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pKTsKQEAgLTM2
MiwxOCArMzYyLDE4IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXYK
IHsKICAgICBDYWxsIG5hdGl2ZUNhbGw7CiAKLSAgICBlbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJh
bWVIZWFkZXIoMCwgUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2spOworICAgIGVtaXRQdXRJbW1lZGlh
dGVUb0NhbGxGcmFtZUhlYWRlcigwLCBKU1N0YWNrOjpDb2RlQmxvY2spOwogICAgIHN0b3JlUHRy
KGNhbGxGcmFtZVJlZ2lzdGVyLCAmbV9nbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUpOwogCiAjaWYg
Q1BVKFg4NikKICAgICAvLyBMb2FkIGNhbGxlciBmcmFtZSdzIHNjb3BlIGNoYWluIGludG8gdGhp
cyBjYWxsZnJhbWUgc28gdGhhdCB3aGF0ZXZlciB3ZSBjYWxsIGNhbgogICAgIC8vIGdldCB0byBp
dHMgZ2xvYmFsIGRhdGEuCi0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0
ZXJGaWxlOjpDYWxsZXJGcmFtZSwgcmVnVDApOwotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVh
ZGVyUHRyKFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0
UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4p
OworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1l
LCByZWdUMCk7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6U2Nv
cGVDaGFpbiwgcmVnVDEsIHJlZ1QwKTsKKyAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVy
KHJlZ1QxLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKIAogICAgIHBlZWsocmVnVDEpOwotICAgIGVt
aXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyk7Cisg
ICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBKU1N0YWNrOjpSZXR1cm5QQyk7CiAK
ICAgICAvLyBDYWxsaW5nIGNvbnZlbnRpb246ICAgICAgZihlY3gsIGVkeCwgLi4uKTsKICAgICAv
LyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKQEAgLTM5MSwxOCArMzkx
LDE4IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXYKICNlbGlmIENQ
VShBUk0pCiAgICAgLy8gTG9hZCBjYWxsZXIgZnJhbWUncyBzY29wZSBjaGFpbiBpbnRvIHRoaXMg
Y2FsbGZyYW1lIHNvIHRoYXQgd2hhdGV2ZXIgd2UgY2FsbCBjYW4KICAgICAvLyBnZXQgdG8gaXRz
IGdsb2JhbCBkYXRhLgotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVy
RmlsZTo6Q2FsbGVyRnJhbWUsIHJlZ1QyKTsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
clB0cihSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4sIHJlZ1QxLCByZWdUMik7Ci0gICAgZW1pdFB1
dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluKTsK
KyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZXJGcmFtZSwg
cmVnVDIpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlNjb3Bl
Q2hhaW4sIHJlZ1QxLCByZWdUMik7CisgICAgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihy
ZWdUMSwgSlNTdGFjazo6U2NvcGVDaGFpbik7CiAKICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwocmVnVDMpOyAvLyBDYWxsZWUgcHJlc2VydmVkCi0gICAgZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKHJlZ1QzLCBSZWdpc3RlckZpbGU6OlJldHVyblBDKTsKKyAgICBlbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIocmVnVDMsIEpTU3RhY2s6OlJldHVyblBDKTsKIAogICAgIC8vIENhbGxp
bmcgY29udmVudGlvbjogICAgICBmKHIwID09IHJlZ1QwLCByMSA9PSByZWdUMSwgLi4uKTsKICAg
ICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKICAgICBtb3ZlKGNh
bGxGcmFtZVJlZ2lzdGVyLCBBUk1SZWdpc3RlcnM6OnIwKTsKIAotICAgIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlLCBBUk1SZWdpc3RlcnM6OnIxKTsK
KyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIEFSTVJl
Z2lzdGVyczo6cjEpOwogICAgIG1vdmUocmVnVDIsIGNhbGxGcmFtZVJlZ2lzdGVyKTsgLy8gRWFn
ZXJseSByZXN0b3JlIGNhbGxlciBmcmFtZSByZWdpc3RlciB0byBhdm9pZCBsb2FkaW5nIGZyb20g
c3RhY2suCiAgICAgbG9hZFB0cihBZGRyZXNzKEFSTVJlZ2lzdGVyczo6cjEsIE9CSkVDVF9PRkZT
RVRPRihKU0Z1bmN0aW9uLCBtX2V4ZWN1dGFibGUpKSwgcmVnVDIpOwogCkBAIC00MTQsMTIgKzQx
NCwxMiBAQCBKSVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2CiAjZWxpZiBD
UFUoTUlQUykKICAgICAvLyBMb2FkIGNhbGxlciBmcmFtZSdzIHNjb3BlIGNoYWluIGludG8gdGhp
cyBjYWxsZnJhbWUgc28gdGhhdCB3aGF0ZXZlciB3ZSBjYWxsIGNhbgogICAgIC8vIGdldCB0byBp
dHMgZ2xvYmFsIGRhdGEuCi0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0
ZXJGaWxlOjpDYWxsZXJGcmFtZSwgcmVnVDApOwotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVh
ZGVyUHRyKFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0
UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4p
OworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1l
LCByZWdUMCk7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6U2Nv
cGVDaGFpbiwgcmVnVDEsIHJlZ1QwKTsKKyAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVy
KHJlZ1QxLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKIAogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVz
c0FmdGVyQ2FsbChyZWdUMyk7IC8vIENhbGxlZSBwcmVzZXJ2ZWQKLSAgICBlbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIocmVnVDMsIFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMpOworICAgIGVtaXRQdXRU
b0NhbGxGcmFtZUhlYWRlcihyZWdUMywgSlNTdGFjazo6UmV0dXJuUEMpOwogCiAgICAgLy8gQ2Fs
bGluZyBjb252ZW50aW9uOiAgICAgIGYoYTAsIGExLCBhMiwgYTMpOwogICAgIC8vIEhvc3QgZnVu
Y3Rpb24gc2lnbmF0dXJlOiBmKEV4ZWNTdGF0ZSopOwpAQCAtNDMyLDcgKzQzMiw3IEBAIEpJVDo6
Q29kZVJlZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXYKICAgICBtb3ZlKGNhbGxGcmFtZVJl
Z2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjphMCk7CiAKICAgICAvLyBDYWxsCi0gICAgZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUsIE1JUFNSZWdpc3RlcnM6
OmEyKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUs
IE1JUFNSZWdpc3RlcnM6OmEyKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoTUlQU1JlZ2lzdGVyczo6
YTIsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX2V4ZWN1dGFibGUpKSwgcmVnVDIpOwog
ICAgIG1vdmUocmVnVDAsIGNhbGxGcmFtZVJlZ2lzdGVyKTsgLy8gRWFnZXJseSByZXN0b3JlIGNh
bGxlciBmcmFtZSByZWdpc3RlciB0byBhdm9pZCBsb2FkaW5nIGZyb20gc3RhY2suCiAgICAgCkBA
IC00NDYsMTggKzQ0NiwxOCBAQCBKSVQ6OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5h
dGl2CiAjZWxpZiBDUFUoU0g0KQogICAgIC8vIExvYWQgY2FsbGVyIGZyYW1lJ3Mgc2NvcGUgY2hh
aW4gaW50byB0aGlzIGNhbGxmcmFtZSBzbyB0aGF0IHdoYXRldmVyIHdlIGNhbGwgY2FuCiAgICAg
Ly8gZ2V0IHRvIGl0cyBnbG9iYWwgZGF0YS4KLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
clB0cihSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lLCByZWdUMik7Ci0gICAgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluLCByZWdUMSwgcmVnVDIp
OwotICAgIGVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIocmVnVDEsIFJlZ2lzdGVyRmlsZTo6
U2NvcGVDaGFpbik7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6
Q2FsbGVyRnJhbWUsIHJlZ1QyKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihK
U1N0YWNrOjpTY29wZUNoYWluLCByZWdUMSwgcmVnVDIpOworICAgIGVtaXRQdXRDZWxsVG9DYWxs
RnJhbWVIZWFkZXIocmVnVDEsIEpTU3RhY2s6OlNjb3BlQ2hhaW4pOwogCiAgICAgcHJlc2VydmVS
ZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHJlZ1QzKTsgLy8gQ2FsbGVlIHByZXNlcnZlZAotICAgIGVt
aXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMywgUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyk7Cisg
ICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QzLCBKU1N0YWNrOjpSZXR1cm5QQyk7CiAK
ICAgICAvLyBDYWxsaW5nIGNvbnZlbnRpb246IGYocjAgPT0gcmVnVDQsIHIxID09IHJlZ1Q1LCAu
Li4pOwogICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEV4ZWNTdGF0ZSopOwogICAg
IG1vdmUoY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1Q0KTsKIAotICAgIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlLCByZWdUNSk7CisgICAgZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCByZWdUNSk7CiAgICAgbW92ZShy
ZWdUMiwgY2FsbEZyYW1lUmVnaXN0ZXIpOyAvLyBFYWdlcmx5IHJlc3RvcmUgY2FsbGVyIGZyYW1l
IHJlZ2lzdGVyIHRvIGF2b2lkIGxvYWRpbmcgZnJvbSBzdGFjay4KICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDUsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX2V4ZWN1dGFibGUpKSwgcmVn
VDIpOwogCkBAIC01MTgsNyArNTE4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKEluc3RydWN0
aW9uKiBjdXJyZQogewogICAgIEFTU0VSVChyZXR1cm5WYWx1ZVJlZ2lzdGVyICE9IGNhbGxGcmFt
ZVJlZ2lzdGVyKTsKICAgICBlbWl0TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCByZWdUMSwgcmVnVDApOwotICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFk
ZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CisgICAgcmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4oQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6UmV0dXJuUEMg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAgICAgcmV0KCk7CiB9CiAK
QEAgLTE1NDQsNyArMTU0NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luaXRfbGF6eV9yZWcoSW5z
dHJ1Y3QKIAogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdp
c3RlckZpbGU6OkNhbGxlZSwgcmVnVDApOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZDYWNoZWRJbmhlcml0b3JJRCgpKSwgcmVnVDIpOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKICAgICAKQEAgLTE2MjYsNyAr
MTYyNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKEkKICAgICBp
bnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBpbnQgYXJndW1l
bnRzUmVnaXN0ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoYXJndW1lbnRzUmVnaXN0ZXIpLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKLSAgICBsb2FkMzIocGF5bG9hZEZv
cihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLCByZWdUMCk7CisgICAgbG9hZDMyKHBheWxv
YWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHJlZ1QwKTsKICAgICBzdWIzMihUcnVzdGVk
SW1tMzIoMSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVJbnQzMihkc3QsIHJlZ1QwKTsKIH0KQEAg
LTE2NTQsNyArMTY1NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwo
SW4KICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1Qy
KTsKICAgICAvLyByZWdUMiBub3cgY29udGFpbnMgdGhlIGludGVnZXIgaW5kZXggb2YgdGhlIGFy
Z3VtZW50IHdlIHdhbnQsIGluY2x1ZGluZyB0aGlzCi0gICAgbG9hZDMyKHBheWxvYWRGb3IoUmVn
aXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KSwgcmVnVDMpOworICAgIGxvYWQzMihwYXlsb2FkRm9y
KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
MzIoQWJvdmVPckVxdWFsLCByZWdUMiwgcmVnVDMpKTsKICAgICAKICAgICBuZWczMihyZWdUMik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9u
IDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDExICs3NiwxMSBAQCBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1v
cnlIYW5kbGU+IEpJVDo6CiAKICAgICAvLyBGaW5pc2ggY2Fub25pY2FsIGluaXRpYWxpemF0aW9u
IGJlZm9yZSBKUyBmdW5jdGlvbiBjYWxsLgogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JK
RUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVnVDEpOwotICAgIGVtaXRQdXRD
ZWxsVG9DYWxsRnJhbWVIZWFkZXIocmVnVDEsIFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbik7Cisg
ICAgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgSlNTdGFjazo6U2NvcGVDaGFp
bik7CiAKICAgICAvLyBBbHNvIGluaXRpYWxpemUgUmV0dXJuUEMgZm9yIHVzZSBieSBsYXp5IGxp
bmtpbmcgYW5kIGV4Y2VwdGlvbnMuCiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KHJlZ1QzKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVnVDMsIFJlZ2lzdGVyRmls
ZTo6UmV0dXJuUEMpOworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMywgSlNTdGFj
azo6UmV0dXJuUEMpOwogICAgIAogICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCAmbV9n
bG9iYWxEYXRhLT50b3BDYWxsRnJhbWUpOwogICAgIHJlc3RvcmVBcmd1bWVudFJlZmVyZW5jZSgp
OwpAQCAtOTYsMTEgKzk2LDExIEBAIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4g
SklUOjoKIAogICAgIC8vIEZpbmlzaCBjYW5vbmljYWwgaW5pdGlhbGl6YXRpb24gYmVmb3JlIEpT
IGZ1bmN0aW9uIGNhbGwuCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VU
T0YoSlNGdW5jdGlvbiwgbV9zY29wZSkpLCByZWdUMSk7Ci0gICAgZW1pdFB1dENlbGxUb0NhbGxG
cmFtZUhlYWRlcihyZWdUMSwgUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluKTsKKyAgICBlbWl0UHV0
Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKIAogICAg
IC8vIEFsc28gaW5pdGlhbGl6ZSBSZXR1cm5QQyBmb3IgdXNlIGJ5IGxhenkgbGlua2luZyBhbmQg
ZXhlcHRpb25zLgogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChyZWdUMyk7Ci0g
ICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QzLCBSZWdpc3RlckZpbGU6OlJldHVyblBD
KTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVnVDMsIEpTU3RhY2s6OlJldHVyblBD
KTsKICAgICAKICAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgJm1fZ2xvYmFsRGF0YS0+
dG9wQ2FsbEZyYW1lKTsKICAgICByZXN0b3JlQXJndW1lbnRSZWZlcmVuY2UoKTsKQEAgLTExNiw3
ICsxMTYsNyBAQCBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEpJVDo6CiAKICAg
ICAvLyBGaW5pc2ggY2Fub25pY2FsIGluaXRpYWxpemF0aW9uIGJlZm9yZSBKUyBmdW5jdGlvbiBj
YWxsLgogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rp
b24sIG1fc2NvcGUpKSwgcmVnVDEpOwotICAgIGVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIo
cmVnVDEsIFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbik7CisgICAgZW1pdFB1dENlbGxUb0NhbGxG
cmFtZUhlYWRlcihyZWdUMSwgSlNTdGFjazo6U2NvcGVDaGFpbik7CiAKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX2V4ZWN1dGFibGUpKSwg
cmVnVDIpOwogICAgIEp1bXAgaGFzQ29kZUJsb2NrMSA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JF
cXVhbCwgQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwg
bV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCkpLCBUcnVzdGVkSW1tMzIoMCkpOwpAQCAtMTM5LDcgKzEz
OSw3IEBAIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gSklUOjoKIAogICAgIC8v
IEZpbmlzaCBjYW5vbmljYWwgaW5pdGlhbGl6YXRpb24gYmVmb3JlIEpTIGZ1bmN0aW9uIGNhbGwu
CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwg
bV9zY29wZSkpLCByZWdUMSk7Ci0gICAgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdU
MSwgUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluKTsKKyAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1l
SGVhZGVyKHJlZ1QxLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKIAogICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fZXhlY3V0YWJsZSkpLCByZWdU
Mik7CiAgICAgSnVtcCBoYXNDb2RlQmxvY2syID0gYnJhbmNoMzIoR3JlYXRlclRoYW5PckVxdWFs
LCBBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25FeGVjdXRhYmxlLCBtX251
bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QpKSwgVHJ1c3RlZEltbTMyKDApKTsKQEAgLTE1NiwzNyAr
MTU2LDM3IEBAIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gSklUOjoKIAogICAg
IGNhbGxTbG93Q2FzZS5saW5rKHRoaXMpOwogICAgIC8vIEZpbmlzaCBjYW5vbmljYWwgaW5pdGlh
bGl6YXRpb24gYmVmb3JlIEpTIGZ1bmN0aW9uIGNhbGwuCi0gICAgZW1pdEdldEZyb21DYWxsRnJh
bWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSwgcmVnVDIpOwotICAgIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwgcmVnVDIs
IHJlZ1QyKTsKLSAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QyLCBSZWdpc3Rl
ckZpbGU6OlNjb3BlQ2hhaW4pOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpT
U3RhY2s6OkNhbGxlckZyYW1lLCByZWdUMik7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFk
ZXJQdHIoSlNTdGFjazo6U2NvcGVDaGFpbiwgcmVnVDIsIHJlZ1QyKTsKKyAgICBlbWl0UHV0Q2Vs
bFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QyLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKIAogICAgIC8v
IEFsc28gaW5pdGlhbGl6ZSBSZXR1cm5QQyBhbmQgQ29kZUJsb2NrLCBsaWtlIGEgSlMgZnVuY3Rp
b24gd291bGQuCiAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHJlZ1QzKTsKLSAg
ICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVnVDMsIFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMp
OwotICAgIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcigwLCBSZWdpc3RlckZpbGU6
OkNvZGVCbG9jayk7CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QzLCBKU1N0YWNr
OjpSZXR1cm5QQyk7CisgICAgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKDAsIEpT
U3RhY2s6OkNvZGVCbG9jayk7CiAKICAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgJm1f
Z2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1lKTsKICAgICByZXN0b3JlQXJndW1lbnRSZWZlcmVuY2Uo
KTsKICAgICBDYWxsIGNhbGxDYWxsTm90SlNGdW5jdGlvbiA9IGNhbGwoKTsKLSAgICBlbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lLCBjYWxsRnJh
bWVSZWdpc3Rlcik7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6
Q2FsbGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICByZXN0b3JlUmV0dXJuQWRkcmVz
c0JlZm9yZVJldHVybihyZWdUMyk7CiAgICAgcmV0KCk7CiAKICAgICBjb25zdHJ1Y3RTbG93Q2Fz
ZS5saW5rKHRoaXMpOwogICAgIC8vIEZpbmlzaCBjYW5vbmljYWwgaW5pdGlhbGl6YXRpb24gYmVm
b3JlIEpTIGZ1bmN0aW9uIGNhbGwuCi0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
UmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSwgcmVnVDIpOwotICAgIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwgcmVnVDIsIHJlZ1QyKTsKLSAg
ICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QyLCBSZWdpc3RlckZpbGU6OlNjb3Bl
Q2hhaW4pOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxl
ckZyYW1lLCByZWdUMik7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFj
azo6U2NvcGVDaGFpbiwgcmVnVDIsIHJlZ1QyKTsKKyAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1l
SGVhZGVyKHJlZ1QyLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKIAogICAgIC8vIEFsc28gaW5pdGlh
bGl6ZSBSZXR1cm5QQyBhbmQgQ29kZUJsb2NrLCBsaWtlIGEgSlMgZnVuY3Rpb24gd291bGQuCiAg
ICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHJlZ1QzKTsKLSAgICBlbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIocmVnVDMsIFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMpOwotICAgIGVtaXRQ
dXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcigwLCBSZWdpc3RlckZpbGU6OkNvZGVCbG9jayk7
CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QzLCBKU1N0YWNrOjpSZXR1cm5QQyk7
CisgICAgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKDAsIEpTU3RhY2s6OkNvZGVC
bG9jayk7CiAKICAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgJm1fZ2xvYmFsRGF0YS0+
dG9wQ2FsbEZyYW1lKTsKICAgICByZXN0b3JlQXJndW1lbnRSZWZlcmVuY2UoKTsKICAgICBDYWxs
IGNhbGxDb25zdHJ1Y3ROb3RKU0Z1bmN0aW9uID0gY2FsbCgpOwotICAgIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lz
dGVyKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZXJG
cmFtZSwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKHJlZ1QzKTsKICAgICByZXQoKTsKIApAQCAtMjMxLDE4ICsyMzEsMTggQEAgSklUOjpM
YWJlbCBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQwogCiAgICAgTGFiZWwgbmF0aXZlQ2Fs
bFRodW5rID0gYWxpZ24oKTsKICAgICAKLSAgICBlbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVI
ZWFkZXIoMCwgUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2spOworICAgIGVtaXRQdXRJbW1lZGlhdGVU
b0NhbGxGcmFtZUhlYWRlcigwLCBKU1N0YWNrOjpDb2RlQmxvY2spOwogICAgIHN0b3JlUHRyKGNh
bGxGcmFtZVJlZ2lzdGVyLCAmbV9nbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUpOwogCiAjaWYgQ1BV
KFg4Nl82NCkKICAgICAvLyBMb2FkIGNhbGxlciBmcmFtZSdzIHNjb3BlIGNoYWluIGludG8gdGhp
cyBjYWxsZnJhbWUgc28gdGhhdCB3aGF0ZXZlciB3ZSBjYWxsIGNhbgogICAgIC8vIGdldCB0byBp
dHMgZ2xvYmFsIGRhdGEuCi0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0
ZXJGaWxlOjpDYWxsZXJGcmFtZSwgcmVnVDApOwotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVh
ZGVyUHRyKFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0
UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4p
OworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1l
LCByZWdUMCk7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6U2Nv
cGVDaGFpbiwgcmVnVDEsIHJlZ1QwKTsKKyAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVy
KHJlZ1QxLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKIAogICAgIHBlZWsocmVnVDEpOwotICAgIGVt
aXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyk7Cisg
ICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBKU1N0YWNrOjpSZXR1cm5QQyk7CiAK
ICAgICAvLyBDYWxsaW5nIGNvbnZlbnRpb246ICAgICAgZihlZGksIGVzaSwgZWR4LCBlY3gsIC4u
Lik7CiAgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYoRXhlY1N0YXRlKik7CkBAIC0y
NTAsNyArMjUwLDcgQEAgSklUOjpMYWJlbCBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQwog
CiAgICAgc3ViUHRyKFRydXN0ZWRJbW0zMigxNiAtIHNpemVvZih2b2lkKikpLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7IC8vIEFsaWduIHN0YWNrIGFmdGVyIGNhbGwuCiAKLSAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OkNhbGxlZSwgWDg2UmVnaXN0ZXJzOjpl
c2kpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwg
WDg2UmVnaXN0ZXJzOjplc2kpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhYODZSZWdpc3RlcnM6OmVz
aSwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fZXhlY3V0YWJsZSkpLCBYODZSZWdpc3Rl
cnM6OnI5KTsKICAgICBtb3ZlKHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7IC8vIEVhZ2VybHkg
cmVzdG9yZSBjYWxsZXIgZnJhbWUgcmVnaXN0ZXIgdG8gYXZvaWQgbG9hZGluZyBmcm9tIHN0YWNr
LgogICAgIGNhbGwoQWRkcmVzcyhYODZSZWdpc3RlcnM6OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9G
dW5jdGlvbikpOwpAQCAtMjYwLDE4ICsyNjAsMTggQEAgSklUOjpMYWJlbCBKSVQ6OnByaXZhdGVD
b21waWxlQ1RJTmF0aXZlQwogI2VsaWYgQ1BVKEFSTSkKICAgICAvLyBMb2FkIGNhbGxlciBmcmFt
ZSdzIHNjb3BlIGNoYWluIGludG8gdGhpcyBjYWxsZnJhbWUgc28gdGhhdCB3aGF0ZXZlciB3ZSBj
YWxsIGNhbgogICAgIC8vIGdldCB0byBpdHMgZ2xvYmFsIGRhdGEuCi0gICAgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSwgcmVnVDIpOwotICAg
IGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwg
cmVnVDEsIHJlZ1QyKTsKLSAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBS
ZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4pOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKEpTU3RhY2s6OkNhbGxlckZyYW1lLCByZWdUMik7CisgICAgZW1pdEdldEZyb21DYWxsRnJh
bWVIZWFkZXJQdHIoSlNTdGFjazo6U2NvcGVDaGFpbiwgcmVnVDEsIHJlZ1QyKTsKKyAgICBlbWl0
UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKIAog
ICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChyZWdUMyk7IC8vIENhbGxlZSBwcmVz
ZXJ2ZWQKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVnVDMsIFJlZ2lzdGVyRmlsZTo6
UmV0dXJuUEMpOworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMywgSlNTdGFjazo6
UmV0dXJuUEMpOwogCiAgICAgLy8gQ2FsbGluZyBjb252ZW50aW9uOiAgICAgIGYocjAgPT0gcmVn
VDAsIHIxID09IHJlZ1QxLCAuLi4pOwogICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBm
KEV4ZWNTdGF0ZSopOwogICAgIG1vdmUoY2FsbEZyYW1lUmVnaXN0ZXIsIEFSTVJlZ2lzdGVyczo6
cjApOwogCi0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpD
YWxsZWUsIEFSTVJlZ2lzdGVyczo6cjEpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKEpTU3RhY2s6OkNhbGxlZSwgQVJNUmVnaXN0ZXJzOjpyMSk7CiAgICAgbW92ZShyZWdUMiwg
Y2FsbEZyYW1lUmVnaXN0ZXIpOyAvLyBFYWdlcmx5IHJlc3RvcmUgY2FsbGVyIGZyYW1lIHJlZ2lz
dGVyIHRvIGF2b2lkIGxvYWRpbmcgZnJvbSBzdGFjay4KICAgICBsb2FkUHRyKEFkZHJlc3MoQVJN
UmVnaXN0ZXJzOjpyMSwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fZXhlY3V0YWJsZSkp
LCByZWdUMik7CiAgICAgY2FsbChBZGRyZXNzKHJlZ1QyLCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5j
dGlvbikpOwpAQCAtMjgxLDEyICsyODEsMTIgQEAgSklUOjpMYWJlbCBKSVQ6OnByaXZhdGVDb21w
aWxlQ1RJTmF0aXZlQwogI2VsaWYgQ1BVKE1JUFMpCiAgICAgLy8gTG9hZCBjYWxsZXIgZnJhbWUn
cyBzY29wZSBjaGFpbiBpbnRvIHRoaXMgY2FsbGZyYW1lIHNvIHRoYXQgd2hhdGV2ZXIgd2UgY2Fs
bCBjYW4KICAgICAvLyBnZXQgdG8gaXRzIGdsb2JhbCBkYXRhLgotICAgIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUsIHJlZ1QwKTsKLSAgICBl
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4sIHJl
Z1QxLCByZWdUMCk7Ci0gICAgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgUmVn
aXN0ZXJGaWxlOjpTY29wZUNoYWluKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0
cihKU1N0YWNrOjpDYWxsZXJGcmFtZSwgcmVnVDApOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1QxLCByZWdUMCk7CisgICAgZW1pdFB1
dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgSlNTdGFjazo6U2NvcGVDaGFpbik7CiAKICAg
ICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwocmVnVDMpOyAvLyBDYWxsZWUgcHJlc2Vy
dmVkCi0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QzLCBSZWdpc3RlckZpbGU6OlJl
dHVyblBDKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVnVDMsIEpTU3RhY2s6OlJl
dHVyblBDKTsKIAogICAgIC8vIENhbGxpbmcgY29udmVudGlvbjogICAgICBmKGEwLCBhMSwgYTIs
IGEzKTsKICAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVyZTogZihFeGVjU3RhdGUqKTsKQEAg
LTI5OSw3ICsyOTksNyBAQCBKSVQ6OkxhYmVsIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVD
CiAgICAgbW92ZShjYWxsRnJhbWVSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6YTApOwogCiAgICAg
Ly8gQ2FsbAotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6
Q2FsbGVlLCBNSVBTUmVnaXN0ZXJzOjphMik7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFk
ZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCBNSVBTUmVnaXN0ZXJzOjphMik7CiAgICAgbG9hZFB0cihB
ZGRyZXNzKE1JUFNSZWdpc3RlcnM6OmEyLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9l
eGVjdXRhYmxlKSksIHJlZ1QyKTsKICAgICBtb3ZlKHJlZ1QwLCBjYWxsRnJhbWVSZWdpc3Rlcik7
IC8vIEVhZ2VybHkgcmVzdG9yZSBjYWxsZXIgZnJhbWUgcmVnaXN0ZXIgdG8gYXZvaWQgbG9hZGlu
ZyBmcm9tIHN0YWNrLgogICAgIGNhbGwoQWRkcmVzcyhyZWdUMiwgZXhlY3V0YWJsZU9mZnNldFRv
RnVuY3Rpb24pKTsKQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbmQoSW5z
dHJ1Y3Rpb24qIGN1cnJlCiB7CiAgICAgQVNTRVJUKHJldHVyblZhbHVlUmVnaXN0ZXIgIT0gY2Fs
bEZyYW1lUmVnaXN0ZXIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7Ci0gICAgcmVzdG9yZVJl
dHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgUmVnaXN0
ZXJGaWxlOjpSZXR1cm5QQyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsK
KyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzKGNhbGxGcmFtZVJl
Z2lzdGVyLCBKU1N0YWNrOjpSZXR1cm5QQyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkpKTsKICAgICByZXQoKTsKIH0KIApAQCAtNTgzLDEwICs1ODMsMTAgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcmV0KEluc3RydWN0aW9uKiBjdXJyZQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7
CiAKICAgICAvLyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KLSAgICBlbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OlJldHVyblBDLCByZWdUMSk7CisgICAgZW1pdEdl
dEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6UmV0dXJuUEMsIHJlZ1QxKTsKIAogICAg
IC8vIFJlc3RvcmUgb3VyIGNhbGxlcidzICJyIi4KLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lLCBjYWxsRnJhbWVSZWdpc3Rlcik7Cisg
ICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVyRnJhbWUsIGNh
bGxGcmFtZVJlZ2lzdGVyKTsKIAogICAgIC8vIFJldHVybi4KICAgICByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihyZWdUMSk7CkBAIC02MDYsMTAgKzYwNiwxMCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zCiAgICAgSnVtcCBub3RPYmplY3QgPSBlbWl0
SnVtcElmTm90T2JqZWN0KHJlZ1QyKTsKIAogICAgIC8vIEdyYWIgdGhlIHJldHVybiBhZGRyZXNz
LgotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6UmV0dXJu
UEMsIHJlZ1QxKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpS
ZXR1cm5QQywgcmVnVDEpOwogCiAgICAgLy8gUmVzdG9yZSBvdXIgY2FsbGVyJ3MgInIiLgotICAg
IGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUs
IGNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihK
U1N0YWNrOjpDYWxsZXJGcmFtZSwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogCiAgICAgLy8gUmV0dXJu
LgogICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHJlZ1QxKTsKQEAgLTYyMSwx
MCArNjIxLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJbnMKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQs
IHJldHVyblZhbHVlUmVnaXN0ZXIpOwogCiAgICAgLy8gR3JhYiB0aGUgcmV0dXJuIGFkZHJlc3Mu
Ci0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpSZXR1cm5Q
QywgcmVnVDEpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlJl
dHVyblBDLCByZWdUMSk7CiAKICAgICAvLyBSZXN0b3JlIG91ciBjYWxsZXIncyAiciIuCi0gICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSwg
Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpT
U3RhY2s6OkNhbGxlckZyYW1lLCBjYWxsRnJhbWVSZWdpc3Rlcik7CiAKICAgICAvLyBSZXR1cm4u
CiAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4ocmVnVDEpOwpAQCAtMTI4NSw3
ICsxMjg1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKEluc3RydWN0aQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6
Q2FsbGVlLCByZWdUMCk7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFj
azo6Q2FsbGVlLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZkNhY2hlZEluaGVyaXRvcklEKCkpLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMikpOwogICAgIApAQCAtMTUwOSw3ICsxNTA5LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgoSQogICAgIGludCBkc3QgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGludCBhcmd1bWVudHNSZWdpc3Rl
ciA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoVGVzdFB0cihOb25aZXJvLCBhZGRyZXNzRm9yKGFyZ3VtZW50c1JlZ2lzdGVyKSkpOwotICAg
IGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50
LCByZWdUMCk7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihKU1N0YWNrOjpBcmd1
bWVudENvdW50LCByZWdUMCk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CiAg
ICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKHJlZ1QwLCByZWdUMCk7CiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1QwKTsKQEAgLTE1MzksNyArMTUzOSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwoSW4KICAgICBhZGRTbG93Q2FzZShlbWl0
SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMSkpOwogICAgIGFkZDMyKFRydXN0ZWRJbW0z
MigxKSwgcmVnVDEpOwogICAgIC8vIHJlZ1QxIG5vdyBjb250YWlucyB0aGUgaW50ZWdlciBpbmRl
eCBvZiB0aGUgYXJndW1lbnQgd2Ugd2FudCwgaW5jbHVkaW5nIHRoaXMKLSAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlcjMyKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCwgcmVnVDIpOwor
ICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoSlNTdGFjazo6QXJndW1lbnRDb3VudCwg
cmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIHJl
Z1QyKSk7CiAKICAgICBuZWczMihyZWdUMSk7CkBAIC0xNTc3LDcgKzE1NzcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljCiB7CiAgICAgaW50IHNraXAgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kOwogICAgIAotICAgIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwgcmVnVDApOworICAgIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1QwKTsKICAg
ICAKICAgICBib29sIGNoZWNrVG9wTGV2ZWwgPSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBG
dW5jdGlvbkNvZGUgJiYgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKICAgICBB
U1NFUlQoc2tpcCB8fCAhY2hlY2tUb3BMZXZlbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEz
MDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDEsNyArMTEwMSw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9zY29wZWRfdmFyKEluc3RydWMKICAgICBpbnQgaW5kZXggPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGludCBza2lwID0gY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKIAotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKFJlZ2lzdGVy
RmlsZTo6U2NvcGVDaGFpbiwgcmVnVDIpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1QyKTsKICAgICBib29sIGNoZWNrVG9wTGV2ZWwg
PSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgbV9jb2RlQmxvY2st
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKICAgICBBU1NFUlQoc2tpcCB8fCAhY2hlY2tUb3BMZXZl
bCk7CiAgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7CkBAIC0xMTMwLDcgKzExMzAs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2NvcGVkX3ZhcihJbnN0cnVjCiAKICAgICBlbWl0
TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIAotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVh
ZGVyUHRyKFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiwgcmVnVDIpOworICAgIGVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OlNjb3BlQ2hhaW4sIHJlZ1QyKTsKICAgICBib29s
IGNoZWNrVG9wTGV2ZWwgPSBtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUg
JiYgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKICAgICBBU1NFUlQoc2tpcCB8
fCAhY2hlY2tUb3BMZXZlbCk7CiAgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAkocmV2aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjMsNyArMTA2Myw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9zY29wZWRfdmFyKEluc3RydWMKIHsKICAgICBpbnQgc2tpcCA9IGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4sIHJlZ1QwKTsKKyAgICBlbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpTY29wZUNoYWluLCByZWdUMCk7CiAgICAg
Ym9vbCBjaGVja1RvcExldmVsID0gbV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25D
b2RlICYmIG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CiAgICAgQVNTRVJUKHNr
aXAgfHwgIWNoZWNrVG9wTGV2ZWwpOwogICAgIGlmIChjaGVja1RvcExldmVsICYmIHNraXAtLSkg
ewpAQCAtMTA4OCw3ICsxMDg4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIo
SW5zdHJ1YwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kLCByZWdUMCk7CiAKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0
cihSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4sIHJlZ1QxKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlclB0cihKU1N0YWNrOjpTY29wZUNoYWluLCByZWdUMSk7CiAgICAgYm9vbCBjaGVj
a1RvcExldmVsID0gbV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIG1f
Y29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CiAgICAgQVNTRVJUKHNraXAgfHwgIWNo
ZWNrVG9wTGV2ZWwpOwogICAgIGlmIChjaGVja1RvcExldmVsICYmIHNraXAtLSkgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEzMDcxNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjQsNyArMjI0LDcgQEAgQ09NUElMRV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNr
RgogCiBleHRlcm4gIkMiIHsKIAotICAgIF9fZGVjbHNwZWMobmFrZWQpIEVuY29kZWRKU1ZhbHVl
IGN0aVRyYW1wb2xpbmUodm9pZCogY29kZSwgUmVnaXN0ZXJGaWxlKiwgQ2FsbEZyYW1lKiwgdm9p
ZCogLyp1bnVzZWQxKi8sIHZvaWQqIC8qdW51c2VkMiovLCBKU0dsb2JhbERhdGEqKQorICAgIF9f
ZGVjbHNwZWMobmFrZWQpIEVuY29kZWRKU1ZhbHVlIGN0aVRyYW1wb2xpbmUodm9pZCogY29kZSwg
SlNTdGFjayosIENhbGxGcmFtZSosIHZvaWQqIC8qdW51c2VkMSovLCB2b2lkKiAvKnVudXNlZDIq
LywgSlNHbG9iYWxEYXRhKikKICAgICB7CiAgICAgICAgIF9fYXNtIHsKICAgICAgICAgICAgIHB1
c2ggZWJwOwpAQCAtMjg1LDcgKzI4NSw3IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBTVEFDS19M
RU5HVEggICAgICAgICAgICAgICAxMDQKICNlbGlmIENQVShTSDQpCiAjZGVmaW5lIFNZTUJPTF9T
VFJJTkcobmFtZSkgI25hbWUKLS8qIGNvZGUgKHI0KSwgUmVnaXN0ZXJGaWxlKiAocjUpLCBDYWxs
RnJhbWUqIChyNiksIHZvaWQqIHVudXNlZDEgKHI3KSwgdm9pZCogdW51c2VkMihzcCksIEpTR2xv
YmFsRGF0YSAoc3ApKi8KKy8qIGNvZGUgKHI0KSwgSlNTdGFjayogKHI1KSwgQ2FsbEZyYW1lKiAo
cjYpLCB2b2lkKiB1bnVzZWQxIChyNyksIHZvaWQqIHVudXNlZDIoc3ApLCBKU0dsb2JhbERhdGEg
KHNwKSovCiAKIGFzbSB2b2xhdGlsZSAoCiAiLnRleHRcbiIKQEAgLTQ1OCw3ICs0NTgsNyBAQCBT
WU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICI6IiAiXG4iCiAgICAgIm1vdmUgICQxNiwkNiAg
ICAgICAjIHNldCBjYWxsRnJhbWVSZWdpc3RlciIgIlxuIgogICAgICJsaSAgICAkMTcsNTEyICAg
ICAgIyBzZXQgdGltZW91dENoZWNrUmVnaXN0ZXIiICJcbiIKICAgICAibW92ZSAgJDI1LCQ0ICAg
ICAgICMgbW92ZSBleGVjdXRhYmxlQWRkcmVzcyB0byB0OSIgIlxuIgotICAgICJzdyAgICAkNSwi
IFNUUklOR0laRV9WQUxVRV9PRihSRUdJU1RFUl9GSUxFX09GRlNFVCkgIigkMjkpICMgc3RvcmUg
cmVnaXN0ZXJGaWxlIHRvIGN1cnJlbnQgc3RhY2siICJcbiIKKyAgICAic3cgICAgJDUsIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUkVHSVNURVJfRklMRV9PRkZTRVQpICIoJDI5KSAjIHN0b3JlIEpTU3Rh
Y2sgdG8gY3VycmVudCBzdGFjayIgIlxuIgogICAgICJsdyAgICAkOSwiIFNUUklOR0laRV9WQUxV
RV9PRihTVEFDS19MRU5HVEggKyAyMCkgIigkMjkpICAgICMgbG9hZCBnbG9iYWxEYXRhIGZyb20g
cHJldmlvdXMgc3RhY2siICJcbiIKICAgICAiamFsciAgJDI1IiAiXG4iCiAgICAgInN3ICAgICQ5
LCIgU1RSSU5HSVpFX1ZBTFVFX09GKEdMT0JBTF9EQVRBX09GRlNFVCkgIigkMjkpICAgIyBzdG9y
ZSBnbG9iYWxEYXRhIHRvIGN1cnJlbnQgc3RhY2siICJcbiIKQEAgLTY1OSw3ICs2NTksNyBAQCBT
WU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiCiAKICNlbGlmIENPTVBJTEVS
KFJWQ1QpICYmIENQVShBUk1fVEhVTUIyKQogCi1fX2FzbSBFbmNvZGVkSlNWYWx1ZSBjdGlUcmFt
cG9saW5lKHZvaWQqLCBSZWdpc3RlckZpbGUqLCBDYWxsRnJhbWUqLCB2b2lkKiAvKnVudXNlZDEq
Lywgdm9pZCogLyp1bnVzZWQyKi8sIEpTR2xvYmFsRGF0YSopCitfX2FzbSBFbmNvZGVkSlNWYWx1
ZSBjdGlUcmFtcG9saW5lKHZvaWQqLCBKU1N0YWNrKiwgQ2FsbEZyYW1lKiwgdm9pZCogLyp1bnVz
ZWQxKi8sIHZvaWQqIC8qdW51c2VkMiovLCBKU0dsb2JhbERhdGEqKQogewogICAgIFBSRVNFUlZF
OAogICAgIHN1YiBzcCwgc3AsICMgRklSU1RfU1RBQ0tfQVJHVU1FTlQKQEAgLTcyNyw3ICs3Mjcs
NyBAQCBfX2FzbSB2b2lkIGN0aU9wVGhyb3dOb3RDYXVnaHQoKQogCiAjZWxpZiBDT01QSUxFUihS
VkNUKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQogCi1fX2FzbSBFbmNvZGVkSlNWYWx1ZSBjdGlU
cmFtcG9saW5lKHZvaWQqLCBSZWdpc3RlckZpbGUqLCBDYWxsRnJhbWUqLCB2b2lkKiAvKnVudXNl
ZDEqLywgdm9pZCogLyp1bnVzZWQyKi8sIEpTR2xvYmFsRGF0YSopCitfX2FzbSBFbmNvZGVkSlNW
YWx1ZSBjdGlUcmFtcG9saW5lKHZvaWQqLCBKU1N0YWNrKiwgQ2FsbEZyYW1lKiwgdm9pZCogLyp1
bnVzZWQxKi8sIHZvaWQqIC8qdW51c2VkMiovLCBKU0dsb2JhbERhdGEqKQogewogICAgIEFSTQog
ICAgIHN0bWRiIHNwISwge3IxLXIzfQpAQCAtNzk2LDcgKzc5Niw3IEBAIEpJVFRodW5rczo6SklU
VGh1bmtzKEpTR2xvYmFsRGF0YSogZ2xvYmEKICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0
cnVjdCBKSVRTdGFja0ZyYW1lLCBwcmVzZXJ2ZWRSMTApID09IFBSRVNFUlZFRF9SMTBfT0ZGU0VU
KTsKICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBwcmVz
ZXJ2ZWRSMTEpID09IFBSRVNFUlZFRF9SMTFfT0ZGU0VUKTsKIAotICAgIEFTU0VSVChPQkpFQ1Rf
T0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIHJlZ2lzdGVyRmlsZSkgPT0gUkVHSVNURVJf
RklMRV9PRkZTRVQpOworICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNr
RnJhbWUsIEpTU3RhY2spID09IFJFR0lTVEVSX0ZJTEVfT0ZGU0VUKTsKICAgICAvLyBUaGUgZmlm
dGggYXJndW1lbnQgaXMgdGhlIGZpcnN0IGl0ZW0gYWxyZWFkeSBvbiB0aGUgc3RhY2suCiAgICAg
QVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgdW51c2VkMSkgPT0g
RklSU1RfU1RBQ0tfQVJHVU1FTlQpOwogCkBAIC04MTUsNyArODE1LDcgQEAgSklUVGh1bmtzOjpK
SVRUaHVua3MoSlNHbG9iYWxEYXRhKiBnbG9iYQogICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0Yo
c3RydWN0IEpJVFN0YWNrRnJhbWUsIHByZXNlcnZlZFMyKSA9PSBQUkVTRVJWRURfUzJfT0ZGU0VU
KTsKICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBwcmVz
ZXJ2ZWRSZXR1cm5BZGRyZXNzKSA9PSBQUkVTRVJWRURfUkVUVVJOX0FERFJFU1NfT0ZGU0VUKTsK
ICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCB0aHVua1Jl
dHVybkFkZHJlc3MpID09IFRIVU5LX1JFVFVSTl9BRERSRVNTX09GRlNFVCk7Ci0gICAgQVNTRVJU
KE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgcmVnaXN0ZXJGaWxlKSA9PSBS
RUdJU1RFUl9GSUxFX09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3Qg
SklUU3RhY2tGcmFtZSwgSlNTdGFjaykgPT0gUkVHSVNURVJfRklMRV9PRkZTRVQpOwogICAgIEFT
U0VSVChPQkpFQ1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGdsb2JhbERhdGEpID09
IEdMT0JBTF9EQVRBX09GRlNFVCk7CiAKICNlbmRpZgpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgc3Rh
dGljIE5FVkVSX0lOTElORSB2b2lkIHJldHVyblRvVGhyb3dUcgogICAgIH0gd2hpbGUgKDApCiAK
IC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgSklUIHN0dWJzIHRoYXQgbWF5IHRocm93IGFuIGV4Y2Vw
dGlvbiBpbiB0aGUgbWlkZGxlIG9mCi0vLyBwcm9jZXNzaW5nIGEgZnVuY3Rpb24gY2FsbC4gVGhp
cyBmdW5jdGlvbiByb2xscyBiYWNrIHRoZSByZWdpc3RlciBmaWxlIHRvCisvLyBwcm9jZXNzaW5n
IGEgZnVuY3Rpb24gY2FsbC4gVGhpcyBmdW5jdGlvbiByb2xscyBiYWNrIHRoZSBzdGFjayB0bwog
Ly8gb3VyIGNhbGxlciwgc28gZXhjZXB0aW9uIHByb2Nlc3NpbmcgY2FuIHByb2NlZWQgZnJvbSBh
IHZhbGlkIHN0YXRlLgogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQgdGhyb3dFeGNlcHRp
b25Gcm9tT3BDYWxsKEpJVFN0YWNrRnJhbWUmIGppdFN0YWNrRnJhbWUsIENhbGxGcmFtZSogbmV3
Q2FsbEZyYW1lLCBSZXR1cm5BZGRyZXNzUHRyJiByZXR1cm5BZGRyZXNzU2xvdCkKIHsKQEAgLTEz
NTksMTIgKzEzNTksMTIgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oaW50LCB0aW1lb3V0X2NoZWNr
KQogICAgIHJldHVybiB0aW1lb3V0Q2hlY2tlci50aWNrc1VudGlsTmV4dENoZWNrKCk7CiB9CiAK
LURFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCByZWdpc3Rlcl9maWxlX2NoZWNrKQorREVGSU5F
X1NUVUJfRlVOQ1RJT04odm9pZCosIHN0YWNrX2NoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFD
S19GUkFNRShzdGFja0ZyYW1lKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJh
bWUuY2FsbEZyYW1lOwogCi0gICAgaWYgKFVOTElLRUxZKCFzdGFja0ZyYW1lLnJlZ2lzdGVyRmls
ZS0+Z3JvdygmY2FsbEZyYW1lLT5yZWdpc3RlcnMoKVtjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5t
X251bUNhbGxlZVJlZ2lzdGVyc10pKSkKKyAgICBpZiAoVU5MSUtFTFkoIXN0YWNrRnJhbWUuc3Rh
Y2stPmdyb3coJmNhbGxGcmFtZS0+cmVnaXN0ZXJzKClbY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZy
b21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVT
UywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwog
CiAgICAgcmV0dXJuIGNhbGxGcmFtZTsKQEAgLTIxOTEsNyArMjE5MSw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXQKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9
IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVn
aXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBD
b21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnN0YWNr
LCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RV
Ql9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2Fs
bGVyRnJhbWUoKSkpOwogCkBAIC0yMjA0LDcgKzIyMDQsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkKiwgb3BfY29uc3RydWN0CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNr
RnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25T
bG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmls
ZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21t
b25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnN0YWNrLCBD
b2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBT
VFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5j
YWxsZXJGcmFtZSgpKSk7CiAKQEAgLTI1ODIsMTIgKzI1ODIsMTIgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04odm9pZCosIG9wX2xvYWRfdmFyYQogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFj
a0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJh
bWU7Ci0gICAgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUgPSBzdGFja0ZyYW1lLnJlZ2lzdGVy
RmlsZTsKKyAgICBKU1N0YWNrKiBzdGFjayA9IHN0YWNrRnJhbWUuc3RhY2s7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIEpTVmFsdWUg
YXJndW1lbnRzID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKICAgICBpbnQgZmlyc3RG
cmVlUmVnaXN0ZXIgPSBzdGFja0ZyYW1lLmFyZ3NbMl0uaW50MzIoKTsKIAotICAgIENhbGxGcmFt
ZSogbmV3Q2FsbEZyYW1lID0gbG9hZFZhcmFyZ3MoY2FsbEZyYW1lLCByZWdpc3RlckZpbGUsIHRo
aXNWYWx1ZSwgYXJndW1lbnRzLCBmaXJzdEZyZWVSZWdpc3Rlcik7CisgICAgQ2FsbEZyYW1lKiBu
ZXdDYWxsRnJhbWUgPSBsb2FkVmFyYXJncyhjYWxsRnJhbWUsIHN0YWNrLCB0aGlzVmFsdWUsIGFy
Z3VtZW50cywgZmlyc3RGcmVlUmVnaXN0ZXIpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAg
ICAgICBWTV9USFJPV19FWENFUFRJT04oKTsKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNpb24gMTMwNzE1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MiwxMyArNTIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsK
KyAgICBjbGFzcyBKU1N0YWNrOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgSlNWYWx1
ZUVuY29kZWRBc1BvaW50ZXI7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFz
cyBQcm9maWxlcjsKICAgICBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiAgICAgY2xhc3MgUHV0UHJvcGVy
dHlTbG90OwotICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFzcyBSZWdFeHA7CiAgICAg
Y2xhc3MgU3RydWN0dXJlOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQqIHBhZGRpbmdbMl07IC8vIE1haW50YWluIDMyLWJ5dGUgc3RhY2sgYWxpZ25t
ZW50IChwb3NzaWJseSBvdmVya2lsbCkuCiAKICAgICAgICAgdm9pZCogY29kZTsKLSAgICAgICAg
UmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGU7CisgICAgICAgIEpTU3RhY2sqIHN0YWNrOwogICAg
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZTsKICAgICAgICAgdm9pZCogdW51c2VkMTsKICAgICAg
ICAgdm9pZCogdW51c2VkMjsKQEAgLTEzNyw3ICsxMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCogc2F2ZWRFSVA7CiAKICAgICAgICAgdm9pZCogY29kZTsKLSAgICAgICAgUmVn
aXN0ZXJGaWxlKiByZWdpc3RlckZpbGU7CisgICAgICAgIEpTU3RhY2sqIHN0YWNrOwogICAgICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZTsKICAgICAgICAgdm9pZCogdW51c2VkMTsKICAgICAgICAg
dm9pZCogdW51c2VkMjsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCogcHJlc2VydmVkUjExOwogCiAgICAgICAgIC8vIFRoZXNlIGFyZ3VtZW50cyBwYXNz
ZWQgaW4gcjEuLnIzIChyMCBjb250YWluZWQgdGhlIGVudHJ5IGNvZGUgcG9pbnRlZCwgd2hpY2gg
aXMgbm90IHByZXNlcnZlZCkKLSAgICAgICAgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGU7Cisg
ICAgICAgIEpTU3RhY2sqIHN0YWNrOwogICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZTsKIAog
ICAgICAgICAvLyBUaGVzZSBhcmd1bWVudHMgcGFzc2VkIG9uIHRoZSBzdGFjay4KQEAgLTE5Niw3
ICsxOTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCogcHJlc2VydmVkUjExOwog
ICAgICAgICB2b2lkKiBwcmVzZXJ2ZWRMaW5rOwogCi0gICAgICAgIFJlZ2lzdGVyRmlsZSogcmVn
aXN0ZXJGaWxlOworICAgICAgICBKU1N0YWNrKiBzdGFjazsKICAgICAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWU7CiAgICAgICAgIHZvaWQqIHVudXNlZDE7CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciB0aHVua1JldHVybkFkZHJl
c3M7CiAKICAgICAgICAgLy8gVGhlc2UgYXJndW1lbnRzIHBhc3NlZCBpbiBhMS4uYTMgKGEwIGNv
bnRhaW5lZCB0aGUgZW50cnkgY29kZSBwb2ludGVkLCB3aGljaCBpcyBub3QgcHJlc2VydmVkKQot
ICAgICAgICBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZTsKKyAgICAgICAgSlNTdGFjayogc3Rh
Y2s7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lOwogICAgICAgICB2b2lkKiB1bnVzZWQx
OwogCkBAIC0yNTEsNyArMjUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQqIHNh
dmVkUjE0OwogICAgICAgICB2b2lkKiBzYXZlZFRpbWVvdXRSZWc7CiAKLSAgICAgICAgUmVnaXN0
ZXJGaWxlKiByZWdpc3RlckZpbGU7CisgICAgICAgIEpTU3RhY2sqIHN0YWNrOwogICAgICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZTsKICAgICAgICAgSlNWYWx1ZSogZXhjZXB0aW9uOwogICAgICAg
ICB2b2lkKiB1bnVzZWQxOwpAQCAtMjg0LDcgKzI4NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgZXh0ZXJuICJDIiB2b2lkIGN0aVZNVGhyb3dUcmFtcG9saW5lKCk7CiAgICAgZXh0ZXJuICJD
IiB2b2lkIGN0aU9wVGhyb3dOb3RDYXVnaHQoKTsKLSAgICBleHRlcm4gIkMiIEVuY29kZWRKU1Zh
bHVlIGN0aVRyYW1wb2xpbmUodm9pZCogY29kZSwgUmVnaXN0ZXJGaWxlKiwgQ2FsbEZyYW1lKiwg
dm9pZCogLyp1bnVzZWQxKi8sIHZvaWQqIC8qdW51c2VkMiovLCBKU0dsb2JhbERhdGEqKTsKKyAg
ICBleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIGN0aVRyYW1wb2xpbmUodm9pZCogY29kZSwgSlNT
dGFjayosIENhbGxGcmFtZSosIHZvaWQqIC8qdW51c2VkMSovLCB2b2lkKiAvKnVudXNlZDIqLywg
SlNHbG9iYWxEYXRhKik7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZXh0ZXJuICJDIiB2b2lk
IGN0aVRyYW1wb2xpbmVFbmQoKTsKIApAQCAtNDYyLDcgKzQ2Miw3IEBAIGV4dGVybiAiQyIgewog
ICAgIHZvaWQqIEpJVF9TVFVCIGN0aV9vcF9zd2l0Y2hfaW1tKFNUVUJfQVJHU19ERUNMQVJBVElP
TikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQqIEpJVF9TVFVCIGN0aV9vcF9zd2l0Y2hfc3RyaW5n
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQqIEpJVF9TVFVC
IGN0aV9vcF90aHJvdyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLSAgICB2
b2lkKiBKSVRfU1RVQiBjdGlfcmVnaXN0ZXJfZmlsZV9jaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJ
T04pIFdURl9JTlRFUk5BTDsKKyAgICB2b2lkKiBKSVRfU1RVQiBjdGlfc3RhY2tfY2hlY2soU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9pZCogSklUX1NUVUIgY3Rp
X3ZtX2xhenlMaW5rQ2FsbChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAg
ICB2b2lkKiBKSVRfU1RVQiBjdGlfdm1fbGF6eUxpbmtDb25zdHJ1Y3QoU1RVQl9BUkdTX0RFQ0xB
UkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9pZCogSklUX1NUVUIgY3RpX3ZtX3Rocm93KFNU
VUJfQVJHU19ERUNMQVJBVElPTikgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lv
biAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQ29u
dmVudGlvbnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIK
KyNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLSNpbmNsdWRlICJSZWdpc3Rl
ckZpbGUuaCIKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1
bmtKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxp
emVkVGh1bmtKSVQuaAkocmV2aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNwZWNpYWxpemVkVGh1bmtKSVQoaW50IGV4cGVj
dGVkQXJnQ291bnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2
ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cwotICAgICAgICAgICAgbV9mYWlsdXJl
cy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1
bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworICAgICAg
ICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHBheWxvYWRGb3IoSlNT
dGFjazo6QXJndW1lbnRDb3VudCksIFRydXN0ZWRJbW0zMihleHBlY3RlZEFyZ0NvdW50ICsgMSkp
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBsb2FkRG91YmxlQXJndW1lbnQo
aW50IGFyZ3VtZW50LCBGUFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCkBAIC04
Myw3ICs4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
c3JjICE9IHJlZ1QwKQogICAgICAgICAgICAgICAgIG1vdmUoc3JjLCByZWdUMCk7Ci0gICAgICAg
ICAgICBsb2FkUHRyKHBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSwgY2FsbEZy
YW1lUmVnaXN0ZXIpLCBjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgICAgICBsb2FkUHRyKHBh
eWxvYWRGb3IoSlNTdGFjazo6Q2FsbGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVyKSwgY2FsbEZy
YW1lUmVnaXN0ZXIpOwogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KICAgICAgICAgCkBA
IC0xMDgsNyArMTA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBsb3dOb25aZXJv
LmxpbmsodGhpcyk7CiAgICAgICAgICAgICBoaWdoTm9uWmVyby5saW5rKHRoaXMpOwogI2VuZGlm
Ci0gICAgICAgICAgICBsb2FkUHRyKHBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFt
ZSwgY2FsbEZyYW1lUmVnaXN0ZXIpLCBjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgICAgICBs
b2FkUHRyKHBheWxvYWRGb3IoSlNTdGFjazo6Q2FsbGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVy
KSwgY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KIApA
QCAtMTE3LDcgKzExNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKHNyYyAh
PSByZWdUMCkKICAgICAgICAgICAgICAgICBtb3ZlKHNyYywgcmVnVDApOwogICAgICAgICAgICAg
dGFnUmV0dXJuQXNJbnQzMigpOwotICAgICAgICAgICAgbG9hZFB0cihwYXlsb2FkRm9yKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVyKSwgY2FsbEZyYW1lUmVnaXN0
ZXIpOworICAgICAgICAgICAgbG9hZFB0cihwYXlsb2FkRm9yKEpTU3RhY2s6OkNhbGxlckZyYW1l
LCBjYWxsRnJhbWVSZWdpc3RlciksIGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAgICAgIHJl
dCgpOwogICAgICAgICB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIGlmIChzcmMgIT0gcmVnVDApCiAgICAgICAgICAgICAgICAgbW92ZShzcmMsIHJl
Z1QwKTsKICAgICAgICAgICAgIHRhZ1JldHVybkFzSlNDZWxsKCk7Ci0gICAgICAgICAgICBsb2Fk
UHRyKHBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZSwgY2FsbEZyYW1lUmVnaXN0
ZXIpLCBjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgICAgICBsb2FkUHRyKHBheWxvYWRGb3Io
SlNTdGFjazo6Q2FsbGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVyKSwgY2FsbEZyYW1lUmVnaXN0
ZXIpOwogICAgICAgICAgICAgcmV0KCk7CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMTMwNzE1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDE0ICs2OCwxNCBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKEpTR2xv
YmFsRGF0CiAgICAgCiAgICAgLy8gQXNzZXJ0aW9ucyB0byBtYXRjaCBMb3dMZXZlbEludGVycHJl
dGVyLmFzbS4gIElmIHlvdSBjaGFuZ2UgYW55IG9mIHRoaXMgY29kZSwgYmUKICAgICAvLyBwcmVw
YXJlZCB0byBjaGFuZ2UgTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYXMgd2VsbCEhCi0gICAgQVNT
RVJUKFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAqIDggPT0gNDgpOwotICAgIEFT
U0VSVChSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQgKiA4ID09IC00OCk7Ci0gICAgQVNTRVJU
KFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUgKiA4ID09IC00MCk7Ci0gICAgQVNTRVJUKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlICogOCA9PSAtMzIpOwotICAgIEFTU0VSVChSZWdpc3RlckZpbGU6OlNj
b3BlQ2hhaW4gKiA4ID09IC0yNCk7Ci0gICAgQVNTRVJUKFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMg
KiA4ID09IC0xNik7Ci0gICAgQVNTRVJUKFJlZ2lzdGVyRmlsZTo6Q29kZUJsb2NrICogOCA9PSAt
OCk7Ci0gICAgQVNTRVJUKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDAp
ID09IC1SZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSAxKTsKKyAgICBBU1NFUlQo
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAqIDggPT0gNDgpOworICAgIEFTU0VSVChKU1N0
YWNrOjpBcmd1bWVudENvdW50ICogOCA9PSAtNDgpOworICAgIEFTU0VSVChKU1N0YWNrOjpDYWxs
ZXJGcmFtZSAqIDggPT0gLTQwKTsKKyAgICBBU1NFUlQoSlNTdGFjazo6Q2FsbGVlICogOCA9PSAt
MzIpOworICAgIEFTU0VSVChKU1N0YWNrOjpTY29wZUNoYWluICogOCA9PSAtMjQpOworICAgIEFT
U0VSVChKU1N0YWNrOjpSZXR1cm5QQyAqIDggPT0gLTE2KTsKKyAgICBBU1NFUlQoSlNTdGFjazo6
Q29kZUJsb2NrICogOCA9PSAtOCk7CisgICAgQVNTRVJUKENhbGxGcmFtZTo6YXJndW1lbnRPZmZz
ZXRJbmNsdWRpbmdUaGlzKDApID09IC1KU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gMSk7
CiAjaWYgQ1BVKEJJR19FTkRJQU4pCiAgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSA9PSAwKTsKICAgICBBU1NFUlQoT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSA9PSA0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTMg
KzM4LDEzIEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0
YWNrLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAj
aW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgogI2lu
Y2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgi
Ci0jaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTYsNyArMzk2LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wocmVwbGFjZSkKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChyZWdpc3Rlcl9maWxlX2No
ZWNrKQorTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiB7CiAgICAgTExJTlRfQkVH
SU4oKTsKICNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORwpAQCAtNDA0LDEwICs0MDQsMTAgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjawogICAgIGRhdGFMb2coIkNv
ZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOwogICAgIGRhdGFMb2coIk51bSBj
YWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVS
ZWdpc3RlcnMpOwogICAgIGRhdGFMb2coIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxv
Y2soKS0+bV9udW1WYXJzKTsKLSAgICBkYXRhTG9nKCJDdXJyZW50IGVuZCBpcyBhdCAlcC5cbiIs
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOwor
ICAgIGRhdGFMb2coIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+Z2xvYmFsRGF0YSgp
LmludGVycHJldGVyLT5zdGFjaygpLmVuZCgpKTsKICNlbmRpZgotICAgIEFTU0VSVCgmZXhlYy0+
cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOwotICAg
IGlmIChVTkxJS0VMWSghZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3Jv
dygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzXSkpKSB7CisgICAgQVNTRVJUKCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2so
KS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdID4gZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
LT5zdGFjaygpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWdsb2JhbERhdGEuaW50ZXJwcmV0
ZXItPnN0YWNrKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
UEMgPSBleGVjLT5yZXR1cm5QQygpOwogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUo
KTsKICAgICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CkBAIC00MjAsNyArNDIwLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wocmVnaXN0
ZXJfZmlsZV9jaGVjawogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJpdHlD
aGVjaykKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENv
bW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZ2xvYmFsRGF0YS5pbnRlcnByZXRl
ci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMg
PSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmdsb2JhbERhdGEuaW50ZXJw
cmV0ZXItPnN0YWNrKCksIENvZGVGb3JDYWxsKTsKICAgICBpZiAoIW5ld0V4ZWMpIHsKICAgICAg
ICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5QQyA9IGV4ZWMtPnJldHVyblBDKCk7CiAgICAgICAg
IGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwpAQCAtNDM0LDcgKzQzNCw3IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXQKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAg
IEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVj
LCAmZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDb25zdHJ1
Y3QpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0ZvcihleGVjLCAmZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNvbnN0
cnVjdCk7CiAgICAgaWYgKCFuZXdFeGVjKSB7CiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuUEMgPSBleGVjLT5yZXR1cm5QQygpOwogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJh
bWUoKTsKQEAgLTE0MDgsNyArMTQwOCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2Vu
ZXJpY0NhbGwoRXgKICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5v
cGVyYW5kOwogICAgIAogICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKHBjWzJdLnUub3BlcmFuZCk7Ci0gICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3Rl
ckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tl
ZFIoSlNTdGFjazo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgZXhlY0NhbGxlZS0+c2V0
Q2FsbGVyRnJhbWUoZXhlYyk7CiAgICAgCiAgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZv
KTsKQEAgLTE0MzgsMTEgKzE0MzgsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NhbGxfdmFyYQogICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpOwogICAgIAogICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAot
ICAgICAgICBleGVjLCAmZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisg
ICAgICAgIGV4ZWMsICZnbG9iYWxEYXRhLmludGVycHJldGVyLT5zdGFjaygpLAogICAgICAgICBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUu
b3BlcmFuZCk7CiAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOwogICAg
IAotICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2Fs
bGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKEpTU3RhY2s6OkNhbGxlZSkg
PSBjYWxsZWVBc1ZhbHVlOwogICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwog
ICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJn
cykpOwogICAgIApAQCAtMTQ1OCw3ICsxNDU4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NhbGxfZXZhbAogICAgIAogICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CiAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVy
RnJhbWUoZXhlYyk7Ci0gICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNh
bGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoSlNTdGFj
azo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGUoZXhl
Yy0+c2NvcGUoKSk7CiAgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoTExJbnQ6OmdldENvZGVQ
dHIobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKICAgICBleGVjQ2FsbGVlLT5zZXRDb2Rl
QmxvY2soMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaAkocmV2aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woZW50cnlfb3NyX2Z1CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wobG9vcF9vc3IpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHJlcGxhY2UpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHJlZ2lzdGVy
X2ZpbGVfY2hlY2spOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHN0YWNrX2NoZWNrKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hl
Y2spOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYWN0aXZh
dGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICMgRmlyc3QgY29tZSB0aGUgY29tbW9uIHByb3RvY29scyB0aGF0IGJvdGgg
aW50ZXJwcmV0ZXJzIHVzZS4gTm90ZSB0aGF0IGVhY2gKICMgb2YgdGhlc2UgbXVzdCBoYXZlIGFu
IEFTU0VSVCgpIGluIExMSW50RGF0YS5jcHAKIAotIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBt
YXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11
c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvSlNTdGFjay5oLgogY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6
ZSA9IDQ4CiBjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4CiBjb25zdCBDYWxsZXJGcmFtZSA9IC00
MApAQCAtMzgsNyArMzgsNyBAQCBjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1l
SGVhCiAjIFNvbWUgcmVnaXN0ZXIgY29udmVudGlvbnMuCiBpZiBKU1ZBTFVFNjQKICAgICAjIC0g
VXNlIGEgcGFpciBvZiByZWdpc3RlcnMgdG8gcmVwcmVzZW50IHRoZSBQQzogb25lIHJlZ2lzdGVy
IGZvciB0aGUKLSAgICAjICAgYmFzZSBvZiB0aGUgcmVnaXN0ZXIgZmlsZSwgYW5kIG9uZSByZWdp
c3RlciBmb3IgdGhlIGluZGV4LgorICAgICMgICBiYXNlIG9mIHRoZSBzdGFjaywgYW5kIG9uZSBy
ZWdpc3RlciBmb3IgdGhlIGluZGV4LgogICAgICMgLSBUaGUgUEMgYmFzZSAob3IgUEIgZm9yIHNo
b3J0KSBzaG91bGQgYmUgc3RvcmVkIGluIHRoZSBjc3IuIEl0IHdpbGwKICAgICAjICAgZ2V0IGNs
b2JiZXJlZCBvbiBjYWxscyB0byBvdGhlciBKUyBjb2RlLCBidXQgd2lsbCBnZXQgc2F2ZWQgb24g
Y2FsbHMKICAgICAjICAgdG8gQyBmdW5jdGlvbnMuCkBAIC0zMTUsMTMgKzMxNSwxMyBAQCBtYWNy
byBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAgICAgIyBDaGVjayBzdGFjayBo
ZWlnaHQuCiAgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQw
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgotICAgIGxvYWRwIEpT
R2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8gdGhl
IFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbG9hZHAgSlNHbG9iYWxE
YXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAgIyBGSVhNRTogQ2FuIGdldCB0byB0aGUgSlNTdGFj
ayBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCiAgICAgbHNoaWZ0aSAzLCB0MAogICAgIGFkZHAgdDAs
IGNmciwgdDAKLSAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3Rl
ckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisgICAgYnBhZXEgSW50ZXJwcmV0
ZXI6Om1fc3RhY2sgKyBKU1N0YWNrOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSwogCiAg
ICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgc2xvd19wYXRo
LgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKyAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3N0YWNrX2NoZWNrKQogLnN0YWNrSGVpZ2h0T0s6CiBlbmQKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCShyZXZpc2lv
biAxMzA3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MDYsMTkgKzQwNiwxOSBAQCB2b2lkIEFyZ3VtZW50czo6dGVh
ck9mZkZvcklubGluZUNhbGxGcmFtCiAgICAgICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgICAgIFJl
Z2lzdGVyKiBsb2NhdGlvbiA9ICZyZWdpc3RlcnNbQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChp
KV07CiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2Fz
ZSBBbHJlYWR5SW5SZWdpc3RlckZpbGU6CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFjazoK
ICAgICAgICAgICAgIHZhbHVlID0gbG9jYXRpb24tPmpzVmFsdWUoKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEFscmVhZHlJblJlZ2lzdGVyRmlsZUFzVW5ib3hlZEludDMyOgor
ICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAg
IHZhbHVlID0ganNOdW1iZXIobG9jYXRpb24tPnVuYm94ZWRJbnQzMigpKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEFscmVhZHlJblJlZ2lzdGVyRmlsZUFzVW5ib3hlZENlbGw6
CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgICAg
ICB2YWx1ZSA9IGxvY2F0aW9uLT51bmJveGVkQ2VsbCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJveGVkQm9vbGVhbjoKKyAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoKICAgICAgICAgICAgIHZh
bHVlID0ganNCb29sZWFuKGxvY2F0aW9uLT51bmJveGVkQm9vbGVhbigpKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEFscmVhZHlJblJlZ2lzdGVyRmlsZUFzVW5ib3hlZERvdWJs
ZToKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKCpiaXR3aXNlX2Nhc3Q8
ZG91YmxlKj4obG9jYXRpb24pKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTMwNzE1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25T
bG93UGF0aHMgewogCi1BTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVj
U3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTU3RhY2sqIHN0YWNrLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CiB7CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5j
YWxsZWUoKSk7CiAgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwpAQCAtNTEs
NyArNTEsNyBAQCBBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFCiAgICAg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKTsKIAogICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3
b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVy
LgotICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKSkKKyAgICBpZiAoIXN0YWNrLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CkBAIC03MSw3ICs3MSw3IEBA
IEFMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEUKICAgICAgICAgZHN0W2ld
ID0ganNVbmRlZmluZWQoKTsKIAogICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IEV4ZWNTdGF0ZTo6
Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJUKCh2b2lkKiluZXdFeGVjIDw9IHJlZ2lzdGVyRmlsZS0+
ZW5kKCkpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSBzdGFjay0+ZW5kKCkpOwogICAg
IHJldHVybiBuZXdFeGVjOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMTMwNzE1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRo
cmVhZGluZ09uY2UoKQogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAgICAgRXhlY3V0YWJsZUFsbG9j
YXRvcjo6aW5pdGlhbGl6ZUFsbG9jYXRvcigpOwogI2VuZGlmCi0gICAgUmVnaXN0ZXJGaWxlOjpp
bml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgSlNTdGFjazo6aW5pdGlhbGl6ZVRocmVhZGluZygp
OwogI2lmIEVOQUJMRShMTElOVCkKICAgICBMTEludDo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJ
KHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBKU0FjdGl2
YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKgogICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwogICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICAvLyBObyBuZWVkIHRv
IG1hcmsgb3VyIHJlZ2lzdGVycyBpZiB0aGV5J3JlIHN0aWxsIGluIHRoZSBSZWdpc3RlckZpbGUu
CisgICAgLy8gTm8gbmVlZCB0byBtYXJrIG91ciByZWdpc3RlcnMgaWYgdGhleSdyZSBzdGlsbCBp
biB0aGUgSlNTdGFjay4KICAgICBpZiAoIXRoaXNPYmplY3QtPmlzVG9ybk9mZigpKQogICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDEzMDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEyLDcg
KzUxMiw3IEBAIEpTT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6dG9UaGlzT2JqZWN0KEoKIAogRXhl
Y1N0YXRlKiBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpCiB7Ci0gICAgcmV0dXJuIENhbGxG
cmFtZTo6Y3JlYXRlKG1fZ2xvYmFsQ2FsbEZyYW1lICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVI
ZWFkZXJTaXplKTsKKyAgICByZXR1cm4gQ2FsbEZyYW1lOjpjcmVhdGUobV9nbG9iYWxDYWxsRnJh
bWUgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9i
amVjdDo6YWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qIGdsb2JhbHMsIGludCBj
b3VudCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAkocmV2aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdl
dHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xhc3MgSlNTdGFj
azsKICAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJl
Z0V4cENvbnN0cnVjdG9yOwogICAgIGNsYXNzIFJlZ0V4cFByb3RvdHlwZTsKLSAgICBjbGFzcyBS
ZWdpc3RlckZpbGU7CiAKICAgICBzdHJ1Y3QgQWN0aXZhdGlvblN0YWNrTm9kZTsKICAgICBzdHJ1
Y3QgSGFzaFRhYmxlOwpAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHBy
b3RlY3RlZDoKIAotICAgICAgICBSZWdpc3RlciBtX2dsb2JhbENhbGxGcmFtZVtSZWdpc3RlckZp
bGU6OkNhbGxGcmFtZUhlYWRlclNpemVdOworICAgICAgICBSZWdpc3RlciBtX2dsb2JhbENhbGxG
cmFtZVtKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplXTsKIAogICAgICAgICBXcml0ZUJhcnJp
ZXI8SlNPYmplY3Q+IG1fZ2xvYmFsVGhpczsKICAgICAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0
PiBtX21ldGhvZENhbGxEdW1teTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmNwcAkocmV2aXNpb24gMTMwNzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDEzICsxNDAsMTMgQEAgYm9v
bCBKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKAogLy8gY29udGV4dCBpZiB0aGUg
dGhyZWFkIGxlYXZlcyBKU0MgYnkgbWFraW5nIGEgY2FsbCBvdXQgdG8gYW4gZXh0ZXJuYWwKIC8v
IGZ1bmN0aW9uIHRocm91Z2ggYSBjYWxsYmFjay4KIC8vCi0vLyBBbGwgdGhyZWFkcyB1c2luZyB0
aGUgY29udGV4dCBzaGFyZSB0aGUgc2FtZSBKUyBzdGFjayAodGhlIFJlZ2lzdGVyRmlsZSkuCi0v
LyBXaGVuZXZlciBhIHRocmVhZCBjYWxscyBpbnRvIEpTQyBpdCBzdGFydHMgdXNpbmcgdGhlIFJl
Z2lzdGVyRmlsZSBmcm9tIHRoZQorLy8gQWxsIHRocmVhZHMgdXNpbmcgdGhlIGNvbnRleHQgc2hh
cmUgdGhlIHNhbWUgSlMgc3RhY2sgKHRoZSBKU1N0YWNrKS4KKy8vIFdoZW5ldmVyIGEgdGhyZWFk
IGNhbGxzIGludG8gSlNDIGl0IHN0YXJ0cyB1c2luZyB0aGUgSlNTdGFjayBmcm9tIHRoZQogLy8g
cHJldmlvdXMgJ2hpZ2ggd2F0ZXIgbWFyaycgLSB0aGUgbWF4aW11bSBwb2ludCB0aGUgc3RhY2sg
aGFzIGV2ZXIgZ3Jvd24gdG8KLS8vIChyZXR1cm5lZCBieSBSZWdpc3RlckZpbGU6OmVuZCgpKS4g
IFNvIGlmIGEgZmlyc3QgdGhyZWFkIGNhbGxzIG91dCB0byBhCisvLyAocmV0dXJuZWQgYnkgSlNT
dGFjazo6ZW5kKCkpLiAgU28gaWYgYSBmaXJzdCB0aHJlYWQgY2FsbHMgb3V0IHRvIGEKIC8vIGNh
bGxiYWNrLCBhbmQgYSBzZWNvbmQgdGhyZWFkIGVudGVycyBKU0MsIHRoZW4gYWxzbyBleGl0cyBi
eSBjYWxsaW5nIG91dAogLy8gdG8gYSBjYWxsYmFjaywgd2UgY2FuIGJlIGxlZnQgd2l0aCBzdGFj
a2ZyYW1lcyBmcm9tIGJvdGggdGhyZWFkcyBpbiB0aGUKLS8vIFJlZ2lzdGVyRmlsZS4gIEFzIHN1
Y2gsIGEgcHJvYmxlbSBtYXkgb2NjdXIgc2hvdWxkIHRoZSBmaXJzdCB0aHJlYWQncworLy8gSlNT
dGFjay4gIEFzIHN1Y2gsIGEgcHJvYmxlbSBtYXkgb2NjdXIgc2hvdWxkIHRoZSBmaXJzdCB0aHJl
YWQncwogLy8gY2FsbGJhY2sgY29tcGxldGUgZmlyc3QsIGFuZCBhdHRlbXB0IHRvIHJldHVybiB0
byBKU0MuICBXZXJlIHdlIHRvIGFsbG93CiAvLyB0aGlzIHRvIGhhcHBlbiwgYW5kIHdlcmUgaXRz
IHN0YWNrIHRvIGdyb3cgZnVydGhlciwgdGhlbiBpdCBtYXkgcG90ZW50aWFsbHkKIC8vIHdyaXRl
IG92ZXIgdGhlIHNlY29uZCB0aHJlYWQncyBjYWxsIGZyYW1lcy4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEz
MDcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbV9y
ZWdpc3RlcnM7IC8vICJyIiBpbiB0aGUgcmVnaXN0ZXIgZmlsZS4KKyAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogbV9yZWdpc3RlcnM7IC8vICJyIiBpbiB0aGUgc3RhY2suCiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTMwNzE1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0
b3IuaCIKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJSZWdpc3RlckZpbGUu
aCIKKyNpbmNsdWRlICJKU1N0YWNrLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNiw3ICsz
Niw3IEBAIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdGkKIHsKICAgICBH
bG9iYWxNZW1vcnlTdGF0aXN0aWNzIHN0YXRzOwogCi0gICAgc3RhdHMuc3RhY2tCeXRlcyA9IFJl
Z2lzdGVyRmlsZTo6Y29tbWl0dGVkQnl0ZUNvdW50KCk7CisgICAgc3RhdHMuc3RhY2tCeXRlcyA9
IEpTU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCgpOwogI2lmIEVOQUJMRShFWEVDVVRBQkxFX0FM
TE9DQVRPUl9GSVhFRCkgfHwgKChQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShFRkwp
KSAmJiBFTkFCTEUoSklUKSkKICAgICBzdGF0cy5KSVRCeXRlcyA9IEV4ZWN1dGFibGVBbGxvY2F0
b3I6OmNvbW1pdHRlZEJ5dGVDb3VudCgpOwogI2Vsc2UK
</data>
<flag name="review"
          id="180439"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>