<?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>205327</bug_id>
          
          <creation_ts>2019-12-17 00:45:21 -0800</creation_ts>
          <short_desc>[JSC] Improve our bound function implementation</short_desc>
          <delta_ts>2019-12-22 04:10:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>205481</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1599305</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-17 00:45:21 -0800</bug_when>
    <thetext>I think there are bunch of things to do.

1. We should not look up JIT thunks every time we create JSBoundFunction.
2. We should have fast path for bound args. (I think it is easy).

And more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600628</commentid>
    <comment_count>1</comment_count>
      <attachid>386181</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-19 21:48:23 -0800</bug_when>
    <thetext>Created attachment 386181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600634</commentid>
    <comment_count>2</comment_count>
      <attachid>386183</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-19 22:31:16 -0800</bug_when>
    <thetext>Created attachment 386183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600855</commentid>
    <comment_count>3</comment_count>
      <attachid>386234</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-20 12:00:04 -0800</bug_when>
    <thetext>Created attachment 386234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600863</commentid>
    <comment_count>4</comment_count>
      <attachid>386238</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-20 12:22:52 -0800</bug_when>
    <thetext>Created attachment 386238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601100</commentid>
    <comment_count>5</comment_count>
      <attachid>386238</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-12-21 11:49:27 -0800</bug_when>
    <thetext>Comment on attachment 386238
Patch

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

r=me.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        1. Rename CallFrameSlot::argumentCount to CallFrameSlot::argumentCountIncludingThis.

Nooo, the merge conflicts! :P

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        3. Cache NativeExecutable for JSBoundFunction in VM. Using hash-map in JITThunk for NativeExecutable is assuming that host-function creation is not done by
&gt; +           user program: each function is pre-defined one by the environment, and there is no case creating host-functions repeatedly from user-program. This is not
&gt; +           true for JSBoundFunction. We should cache NativeExecutable in VM to look up fast.

If I&apos;m understanding what you are trying to say correctly I think I would phrase this as:

Cache NativeExecutable for JSBoundFunction in the VM. We use a hash-map in JITThunk for NativeExecutables because we assume that host-function creation cannot not done by
the user program: each executable is pre-defined to exactly one object by the environment, and there is no way to create host-functions repeatedly from the user-program. The only exception to this is
JSBoundFunction so caching it on the VM avoids the hash-map lookup.
true for JSBoundFunction.

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +           bound arguments. And it is used as event listener. This is really bad: when dispatching an event, we first call this function from C++, entering JS world,

nit: And it is used =&gt; Additionally, it is used. And isn&apos;t normally used to start a sentence.

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +           calling bound JS Executable from thunk. Previously, bound arguments are stored in JSArray. But it is difficult to access them from thunk since we need to consider

nit: calling the* bound JSExecutable from the* thunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601132</commentid>
    <comment_count>6</comment_count>
      <attachid>386238</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-21 19:11:12 -0800</bug_when>
    <thetext>Comment on attachment 386238
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        1. Rename CallFrameSlot::argumentCount to CallFrameSlot::argumentCountIncludingThis.
&gt; 
&gt; Nooo, the merge conflicts! :P

Lol, oops, sorry :P

&gt;&gt; Source/JavaScriptCore/ChangeLog:15
&gt;&gt; +           true for JSBoundFunction. We should cache NativeExecutable in VM to look up fast.
&gt; 
&gt; If I&apos;m understanding what you are trying to say correctly I think I would phrase this as:
&gt; 
&gt; Cache NativeExecutable for JSBoundFunction in the VM. We use a hash-map in JITThunk for NativeExecutables because we assume that host-function creation cannot not done by
&gt; the user program: each executable is pre-defined to exactly one object by the environment, and there is no way to create host-functions repeatedly from the user-program. The only exception to this is
&gt; JSBoundFunction so caching it on the VM avoids the hash-map lookup.
&gt; true for JSBoundFunction.

Right. Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt;&gt; +           bound arguments. And it is used as event listener. This is really bad: when dispatching an event, we first call this function from C++, entering JS world,
&gt; 
&gt; nit: And it is used =&gt; Additionally, it is used. And isn&apos;t normally used to start a sentence.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:19
&gt;&gt; +           calling bound JS Executable from thunk. Previously, bound arguments are stored in JSArray. But it is difficult to access them from thunk since we need to consider
&gt; 
&gt; nit: calling the* bound JSExecutable from the* thunk.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601134</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-21 19:12:08 -0800</bug_when>
    <thetext>Committed r253867: &lt;https://trac.webkit.org/changeset/253867&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601135</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-21 19:13:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58139617&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601150</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-22 01:57:09 -0800</bug_when>
    <thetext>Committed r253869: &lt;https://trac.webkit.org/changeset/253869&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601152</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-22 04:10:08 -0800</bug_when>
    <thetext>Committed r253870: &lt;https://trac.webkit.org/changeset/253870&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386181</attachid>
            <date>2019-12-19 21:48:23 -0800</date>
            <delta_ts>2019-12-19 22:31:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205327-20191219214822.patch</filename>
            <type>text/plain</type>
            <size>171647</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZTA5NTY0ZjcwYmZmMDYyODFmODQzZDU0OWEwZGI3YzNhYzNkYmRlLi5iOTYyMzliMDQ3MDU1N2Ex
NDJlZGIyZTAxZGZhMDhmYjA4ZmZkYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTQgQEAKKzIwMTktMTItMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIG91ciBib3VuZCBmdW5jdGlvbiBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1
MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBi
dWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAgKGJpbmQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5l
cmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNw
cDoKKyAgICAgICAgKEpTQzo6U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czo6Z2Vu
ZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5jcHA6CisgICAgICAg
IChKU0M6OlZpcnR1YWxSZWdpc3Rlcjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdElzSlNGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
aXNKU0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19jcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmFyZ3VtZW50c0lu
dm9sdmVTdGFja1Nsb3QpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmZsdXNoSW1wbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6
CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9i
YmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmlzTGl2ZUluQnl0ZWNvZGUpOgorICAgICAg
ICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpmb3JBbGxMb2Nh
bHNMaXZlSW5CeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
ZW1pdFN0b3JlQ2FsbFNpdGVJbmRleCk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6Cisg
ICAgICAgICogZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkxvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5vZGUp
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjplbWl0
UmVzdG9yZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZy
YW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMp
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAo
SlNDOjpERkc6OnJlaWZ5SW5saW5lZENhbGxGcmFtZXMpOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJlY2lz
ZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdGFj
a0xheW91dFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdGFja0xheW91dFBoYXNlOjpy
dW4pOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVNldEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVEaXJlY3RDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25z
dHJ1Y3RWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUNhbGxFdmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0
QXJndW1lbnRzTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y2FsbFByZWZsaWdodCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Y2FsbFNpdGVBc1Jhd0JpdHMgY29u
c3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnVuc2FmZUNhbGxTaXRlQXNSYXdCaXRzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6
c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydEFyZ3Vt
ZW50Q291bnRTYW5lKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YXJndW1lbnRDb3VudCk6CisgICAgICAgICogaml0L0ND
YWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnByZXBhcmVGb3JUYWls
Q2FsbFNsb3cpOgorICAgICAgICAqIGppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHA6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fs
bEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxG
cmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlV2l0aG91dExpbmtpbmcpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJ
VDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9hcmd1bWVudF9jb3VudCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2FyZ3VtZW50KToKKyAgICAgICAgKiBqaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjplbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZSk6CisgICAgICAgICog
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVu
a0pJVDo6U3BlY2lhbGl6ZWRUaHVua0pJVCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9y
cy5jcHA6CisgICAgICAgIChKU0M6OmFyaXR5Rml4dXBHZW5lcmF0b3IpOgorICAgICAgICAoSlND
Ojpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05v
QXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogaml0L1RodW5r
R2VuZXJhdG9ycy5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRE
YXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19Q
QVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25S
YXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUmFyZURhdGE6OkZ1bmN0aW9uUmFy
ZURhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENv
bGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVHZXR0ZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAg
ICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmJv
dW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25D
YWxsKToKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpOgor
ICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SlNC
b3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OkpT
Qm91bmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdz
Q29weSk6CisgICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om5hbWUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQp
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6cmVpZnlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpyZWlmeUxhenlQ
cm9wZXJ0eUlmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cmVpZnlMYXp5UHJv
cGVydHlGb3JIb3N0T3JCdWlsdGluSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpyZWlmeUxhenlCb3VuZE5hbWVJZk5lZWRlZCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU0Z1bmN0aW9uOjphcmVOYW1lQW5kTGVuZ3RoT3JpZ2luYWwpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYWtlQm91bmRGdW5jdGlv
bik6CisgICAgICAgIChKU0M6Omhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmdldEpTRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpnZXRDYWxsRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmdldENvbnN0cnVjdERh
dGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6Z2V0Q29uc3RydWN0RGF0YSk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OnRodW5rR2VuZXJhdG9y
Rm9ySW50cmluc2ljKToKKyAgICAgICAgKEpTQzo6Vk06OmdldEJvdW5kRnVuY3Rpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2Fs
bEVudHJ5cG9pbnRTbG93KToKKwogMjAxOS0xMi0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIDhCaXQgSlNSb3BlU3RyaW5nIGNhbiBjb250YWlu
IDE2Qml0IHN0cmluZyBpbiBpdHMgcm9wZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCmluZGV4IGU0MGE2OTYzMDAyZmI4NjI2NzQ4
NmVlNGQ2MzZiMjhhMDc4YzRlZTYuLmY1OTM1MjdkYzNjNDdiM2FhMTZkYzMwN2ZmMGFkYzUzYzVm
NzUzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlv
blByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rp
b25Qcm90b3R5cGUuanMKQEAgLTYxLDIzICs2MSwyMSBAQCBmdW5jdGlvbiBiaW5kKHRoaXNWYWx1
ZSkKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBsZXQgdGFyZ2V0ID0gdGhpczsKKyAgICB2
YXIgdGFyZ2V0ID0gdGhpczsKICAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gImZ1bmN0aW9uIikK
ICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ8dGhpc3wgaXMgbm90IGEgZnVuY3Rpb24gaW5zaWRl
IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIik7CiAKLSAgICBsZXQgYXJndW1lbnRDb3VudCA9IGFy
Z3VtZW50cy5sZW5ndGg7Ci0gICAgbGV0IGJvdW5kQXJncyA9IG51bGw7Ci0gICAgbGV0IG51bUJv
dW5kQXJncyA9IDA7CisgICAgdmFyIGFyZ3VtZW50Q291bnQgPSBAYXJndW1lbnRDb3VudCgpOwor
ICAgIHZhciBib3VuZEFyZ3MgPSBudWxsOworICAgIHZhciBudW1Cb3VuZEFyZ3MgPSAwOwogICAg
IGlmIChhcmd1bWVudENvdW50ID4gMSkgewogICAgICAgICBudW1Cb3VuZEFyZ3MgPSBhcmd1bWVu
dENvdW50IC0gMTsKLSAgICAgICAgYm91bmRBcmdzID0gQG5ld0FycmF5V2l0aFNpemUobnVtQm91
bmRBcmdzKTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Cb3VuZEFyZ3M7IGkrKykK
LSAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChib3VuZEFyZ3MsIGksIGFyZ3VtZW50c1tpICsg
MV0pOworICAgICAgICBib3VuZEFyZ3MgPSBAY3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KCk7CiAg
ICAgfQogCi0gICAgbGV0IGxlbmd0aCA9IDA7CisgICAgdmFyIGxlbmd0aCA9IDA7CiAgICAgaWYg
KEBoYXNPd25MZW5ndGhQcm9wZXJ0eSh0YXJnZXQpKSB7Ci0gICAgICAgIGxldCBsZW5ndGhWYWx1
ZSA9IHRhcmdldC5sZW5ndGg7CisgICAgICAgIHZhciBsZW5ndGhWYWx1ZSA9IHRhcmdldC5sZW5n
dGg7CiAgICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsdWUgPT09ICJudW1iZXIiKSB7CiAgICAg
ICAgICAgICBsZW5ndGhWYWx1ZSA9IGxlbmd0aFZhbHVlIHwgMDsKICAgICAgICAgICAgIC8vIE5v
dGUgdGhhdCB3ZSBvbmx5IGNhcmUgYWJvdXQgcG9zaXRpdmUgbGVuZ3RoVmFsdWVzLCBob3dldmVy
LCB0aGlzIGNvbXBhcmlzaW9uCkBAIC04Nyw5ICs4NSw5IEBAIGZ1bmN0aW9uIGJpbmQodGhpc1Zh
bHVlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbGV0IG5hbWUgPSB0YXJnZXQubmFtZTsKKyAg
ICB2YXIgbmFtZSA9IHRhcmdldC5uYW1lOwogICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gInN0cmlu
ZyIpCiAgICAgICAgIG5hbWUgPSAiIjsKIAotICAgIHJldHVybiBAbWFrZUJvdW5kRnVuY3Rpb24o
dGFyZ2V0LCBhcmd1bWVudHNbMF0sIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lKTsKKyAgICByZXR1
cm4gQG1ha2VCb3VuZEZ1bmN0aW9uKHRhcmdldCwgdGhpc1ZhbHVlLCBib3VuZEFyZ3MsIGxlbmd0
aCwgbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAKaW5kZXggNjAwNjJmOWQ0ODA2Zjc5MjNiZDM5M2QzYTc1OTJlYjhiNTA1ODgzOC4uZGQ5
YWNjYTlhZGM5MDI5YTBhZTFiY2FlOWIyMDYyNmFkZDY1MjQ4OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtMTUwOCw3ICsxNTA4LDcgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSkKIAogICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZ09yT3JpZ2lu
YWwoKS5iaXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nh
c3Q8VmlydHVhbFJlZ2lzdGVyPihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVy
PihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAogICAgICAg
ICBpZiAobV90eXBlID09IEdldHRlciB8fCBtX3R5cGUgPT0gU2V0dGVyKSB7CiAgICAgICAgICAg
ICBhdXRvJiBhY2Nlc3MgPSB0aGlzLT5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpOwpAQCAt
MTU4NSw3ICsxNTg1LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSkKIAogICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0ZXJzKSwK
LSAgICAgICAgICAgICAgICBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCkpOworICAgICAg
ICAgICAgICAgIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgKiBzaXplb2YoUmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCkpOwog
CiAgICAgICAgICAgICBqaXQuc3RvcmVDZWxsKAogICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVl
R1BSLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHNpemVv
ZihSZWdpc3RlcikpKTsKQEAgLTE3OTcsNyArMTc5Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAg
aml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKAogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2Vw
dGlvbkhhbmRsaW5nT3JPcmlnaW5hbCgpLmJpdHMoKSksCi0gICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
Ojp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBqaXQubWFrZVNwYWNlT25TdGFja0ZvckNDYWxsKCk7CiAgICAgICAgICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBw
ZXRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VT
bmlwcGV0UGFyYW1zLmNwcAppbmRleCBhMTc0ZTI0NzNmNzUzMGNjNzc3MTUzYzYzYjEzMTMzMGVl
NThmNTg4Li5iMWQ0MDRhMTQ1YmQyMTQxYjNhMGE5YzQzMTkxOGE1OGY5YWYxODlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJh
bXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25p
cHBldFBhcmFtcy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJh
dG9yV2l0aEFyZ3VtZW50cyA6IHB1YmxpYyBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6U2xvd1AK
IAogICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZ09yT3JpZ2luYWwo
KS5iaXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8
VmlydHVhbFJlZ2lzdGVyPihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAogICAgICAgICBq
aXQubWFrZVNwYWNlT25TdGFja0ZvckNDYWxsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4
IGY3NmY3ODViZTFiYTA0MmRhZjhkYTMzM2QyYjEzOWQzYTE4MzAzOWMuLjRhYjBjNTQzZjFlODIx
OGFhMzZiYmM2NDdlNGZlMjUxNTNiNDU4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaApAQCAtNDgs
NiArNDgsNyBAQCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90OwogICAgIG1h
Y3JvKGlkV2l0aFByb2ZpbGUpIFwKICAgICBtYWNybyhpc09iamVjdCkgXAogICAgIG1hY3JvKGlz
SlNBcnJheSkgXAorICAgIG1hY3JvKGlzSlNGdW5jdGlvbikgXAogICAgIG1hY3JvKGlzUHJveHlP
YmplY3QpIFwKICAgICBtYWNybyhpc0Rlcml2ZWRBcnJheSkgXAogICAgIG1hY3JvKGlzR2VuZXJh
dG9yKSBcCkBAIC03NCw2ICs3NSw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGlu
dDMyX3Q7CiAgICAgbWFjcm8obmV3QXJyYXlXaXRoU2l6ZSkgXAogICAgIG1hY3JvKG5ld1Byb21p
c2UpIFwKICAgICBtYWNybyhjcmVhdGVQcm9taXNlKSBcCisgICAgbWFjcm8oY3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5KSBcCiAgICAgbWFjcm8oZGVmaW5lRW51bWVyYWJsZVdyaXRhYmxlQ29uZmln
dXJhYmxlRGF0YVByb3BlcnR5KSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRS
SU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShtYWNybykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggNzFiZjZiMDZjYzdlZjQ5MGY3YjM2
YWEzZTIwMDY1MTc3ODdhZmZhNC4uYTliZDQ4MzcxYjRlMzBkYWY2MDQ0ZDA5NDlhMDcxZDE0YTFh
ZDA3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCkBAIC0xMDgsNiArMTA4LDExIEBACiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAog
ICAgIH0KIAorb3AgOmNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5LAorICAgIGFyZ3M6IHsKKyAg
ICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBvcCA6Y3JlYXRlX3RoaXMsCiAg
ICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGViNjMyOTM0
ZWI2YzFmYzVjY2FhNzFiMGU0MjkzYWE5YWQ2NjJlOTUuLmMwMThkZGZiOGIwMzk4MjNlMDYwOWNm
NjU3NzgzMjBjMzI5YTIzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtODEsNiArODEsNyBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0
IEluc3RydQogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9j
cmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1l
bnRzOgorICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBv
cF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9jaGVja190cmFwczoKICAgICBjYXNlIG9w
X2dldF9hcmd1bWVudDoKQEAgLTQ3MSw2ICs0NzIsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dQogICAgIERFRlMoT3BDcmVhdGVEaXJlY3RBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wQ3Jl
YXRlU2NvcGVkQXJndW1lbnRzLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZUNsb25lZEFyZ3VtZW50
cywgZHN0KQorICAgIERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIGRzdCkKICAgICBE
RUZTKE9wRGVsQnlJZCwgZHN0KQogICAgIERFRlMoT3BEZWxCeVZhbCwgZHN0KQogICAgIERFRlMo
T3BVbnNpZ25lZCwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZpcnR1YWxSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmlydHVhbFJlZ2lzdGVyLmNwcAppbmRleCA0NWM2YmExY2EwMjgyODJmYmRhZjZiYjJhODAzMDYx
MWNmNTM0ODcyLi4xYTEyYWNlMjY5Yjk0YzU1NGJhNzZmNTFlYzU0MjFiZjY4ZWJjZDBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmNw
cApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFZpcnR1YWxSZWdpc3Rlcjo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogICAgICAgICAgICAgb3V0LnByaW50KCJjb2RlQmxvY2siKTsKICAgICAg
ICAgZWxzZSBpZiAobV92aXJ0dWFsUmVnaXN0ZXIgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKQog
ICAgICAgICAgICAgb3V0LnByaW50KCJjYWxsZWUiKTsKLSAgICAgICAgZWxzZSBpZiAobV92aXJ0
dWFsUmVnaXN0ZXIgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkKKyAgICAgICAgZWxz
ZSBpZiAobV92aXJ0dWFsUmVnaXN0ZXIgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpCiAgICAgICAgICAgICBvdXQucHJpbnQoImFyZ3VtZW50Q291bnQiKTsKICNp
ZiBDUFUoQUREUkVTUzY0KQogICAgICAgICBlbHNlIGlmICghbV92aXJ0dWFsUmVnaXN0ZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IGY4MGE3YzRmNjA4MTk1NWUxZTI0Y2UyMDU0YzAxM2FkY2JkNzg3
ZTMuLmI1MmZjNjIzNTQzYjRjMWMzN2YyMTRlNzIxNzRiOTJlMjlhNTQ1NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0yNzI2LDYgKzI3MjYsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDcmVhdGVBc3luY0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGUKICAg
ICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENy
ZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShSZWdpc3RlcklEKiBkc3QpCit7CisgICAgT3BDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHk6OmVtaXQodGhpcywgZHN0KTsKKyAgICByZXR1cm4gZHN0OworfQor
CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0
KQogewogICAgIE9wQ2hlY2tUZHo6OmVtaXQodGhpcywgdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCA5M2IxM2Y2ZGE4MTllMzFmZTA3YTA0NWZmZWYwZWYyNmNiNTFlNmY5Li45OWJhMzQ5MDVhMjQ3
YmI5ZDJhMWViYWI0OWQ5NzM3M2ZiNzhjYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03MjYsNiArNzI2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVQcm9t
aXNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0LCBib29sIGlzSW50ZXJu
YWxQcm9taXNlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUdlbmVyYXRvcihSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRDcmVhdGVBc3luY0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5l
d1RhcmdldCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHkoUmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0ZXJJ
RCogdGFyZ2V0KTsKICAgICAgICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxlJik7
CiAgICAgICAgIHZvaWQgZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUmLCBS
ZWdpc3RlcklEKiB0YXJnZXQsIFJlZ2lzdGVySUQqIHNjb3BlKTsKQEAgLTg3Miw2ICs4NzMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzR2VuZXJhdG9yKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5
cGUoZHN0LCBzcmMsIEpTR2VuZXJhdG9yVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dElzQXN5bmNHZW5lcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0
dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNBc3luY0dlbmVyYXRvclR5cGUpOyB9
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0pTQXJyYXkoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgQXJyYXlU
eXBlKTsgfQorICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNKU0Z1bmN0aW9uKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBz
cmMsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNQcm9taXNl
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0
aFR5cGUoZHN0LCBzcmMsIEpTUHJvbWlzZVR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJc1Byb3h5T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVy
biBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFByb3h5T2JqZWN0VHlwZSk7IH0KICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdElzUmVnRXhwT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFJlZ0V4cE9i
amVjdFR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNWE5MzAxM2MzN2NiMmQ4MDJhZWZlNDZkMDNiMzQwMDhl
ODk5NmI2NC4uNmEwYWUxNzRmMDNjYjk5ODkxZGY2NDQ1YjNjNzE2NjA4ZTI0NDk1YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMTM2MCw2ICsxMzYwLDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfaXNKU0FycmF5KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0CiAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRJc0pTQXJyYXkoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCkpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19pc0pTRnVuY3Rpb24oSlNDOjpCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBB
cmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgQVNTRVJUKCFu
b2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9y
LmVtaXRJc0pTRnVuY3Rpb24oZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0
KCkpKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19pc1Byb21pc2UoSlNDOjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJl
Z2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5t
X2xpc3ROb2RlOwpAQCAtMTQ2Myw2ICsxNDcyLDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfbmV3UHJvbWlzZShKU0M6OkJ5dGVjb2RlR2VuZXJh
CiAgICAgcmV0dXJuIGZpbmFsRGVzdGluYXRpb24uZ2V0KCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfY3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgSlNDOjpSZWdpc3RlcklEKiBk
c3QpCit7CisgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUpOworICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19kZWZpbmVFbnVtZXJhYmxlV3JpdGFibGVDb25maWd1cmFibGVEYXRhUHJvcGVy
dHkoSlNDOjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRz
dCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IDY0YWNiNTQwZDQwYWUxNzk4ZjdjMjIzNmQ4MWRmZTFjODQw
OGQ1MzAuLmRjMWM2NGVlNGU3NmU4ZjExYjM2MTZhNTliNTM3MmMxNzRhNjdlN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKQEAgLTI5NjQsNiArMjk2NCwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpOwogICAg
ICAgICBicmVhazsKIAorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgorICAgICAg
ICBzZXRGb3JOb2RlKG5vZGUsIG1fdm0uaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJlc1thcnJh
eUluZGV4RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpIC0g
TnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uZ2V0KCkpOworICAgICAgICBicmVhazsKKwogICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgCiAgICAg
ICAgICAgICBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5k
ZXggYWYyZWRhNGFkODhlOWI5N2FhZDVmNGY5MzkyMzc2MjE5NTJhZWY4NC4uNzEzZTc5OTlhN2Jm
Y2EyMWRkY2VhOGUzNDYyNjBmMzQzMWU0ZDk0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC01
NjAsNyArNTYwLDcgQEAgY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdz
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDbG9iYmVyZWRCeUJsb2Nr
IHw9IGNsb2JiZXJlZEJ5VGhpc0Jsb2NrLm9wZXJhbmQoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNDbG9iYmVyZWRCeUJsb2NrIHx8IGlubGluZUNh
bGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCmluZGV4IDYyNjExMjNjYmZlYzNlYmExOTVk
MDliOTMxMDI2ZjI2YzcyNTg0NzYuLmZmMWQ1NjgwZmFlMGEyMDAxNGQxZjFlMTNkYzNlNDhkOGM1
NDMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRz
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c1V0aWxpdGllcy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgYm9vbCBhcmd1bWVudHNJbnZvbHZlU3Rh
Y2tTbG90KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNW
YXJhcmdzKCkKLSAgICAgICAgJiYgcmVnID09IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpCisgICAgICAg
ICYmIHJlZyA9PSBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgCiAgICAgLy8gV2UgZG8gbm90IGluY2x1ZGUgZml4dXBzIGhlcmUgc2lu
Y2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gfGFyZ3VtZW50c3wsIHJlc3QgcGFyYW1ldGVycywgYW5k
IHZhcmFyZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IDdlNGE5ZmU2MjMzYjc0NDllODI4NjYyYzFlNDk5ZGM5ZTg0NDA4YjcuLjAz
MGZhYmZhMzA3ZjE5YTI2N2MwY2Q1ZmMzYWU1OTgzY2RhY2E3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01NTIsNyArNTUyLDcg
QEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICBhZGRGbHVzaERpcmVjdChpbmxpbmVD
YWxsRnJhbWUsIHJlbWFwT3BlcmFuZChpbmxpbmVDYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcihD
YWxsRnJhbWVTbG90OjpjYWxsZWUpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
LT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgICAgICBhZGRGbHVzaERpcmVjdChpbmxpbmVDYWxs
RnJhbWUsIHJlbWFwT3BlcmFuZChpbmxpbmVDYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgIGFkZEZsdXNoRGly
ZWN0KGlubGluZUNhbGxGcmFtZSwgcmVtYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwgVmlydHVh
bFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG51bUFyZ3VtZW50cyA9IG1fZ3JhcGguYmFzZWxp
bmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1lKS0+bnVtUGFyYW1ldGVycygpOwogCkBAIC0x
OTAyLDcgKzE5MDIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVWYXJhcmdzSW5saW5p
bmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIFZpcnR1YWxSZWdpc3RlcgogICAgICAgICAKICAgICAg
ICAgTG9hZFZhcmFyZ3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX2xvYWRWYXJhcmdzRGF0YS5hZGQo
KTsKICAgICAgICAgZGF0YS0+c3RhcnQgPSBWaXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRBcmd1bWVu
dFN0YXJ0ICsgMSk7Ci0gICAgICAgIGRhdGEtPmNvdW50ID0gVmlydHVhbFJlZ2lzdGVyKHJlbWFw
cGVkUmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAg
ICAgZGF0YS0+Y291bnQgPSBWaXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCAr
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgZGF0
YS0+b2Zmc2V0ID0gYXJndW1lbnRzT2Zmc2V0OwogICAgICAgICBkYXRhLT5saW1pdCA9IG1heEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogICAgICAgICBkYXRhLT5tYW5kYXRvcnlNaW5pbXVt
ID0gbWFuZGF0b3J5TWluaW11bTsKQEAgLTE5MjIsNyArMTkyMiw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVh
bFJlZ2lzdGVyCiAgICAgICAgIC8vIFNTQS4gRm9ydHVuYXRlbHksIHdlIGFsc28gaGF2ZSBvdGhl
ciByZWFzb25zIGZvciBub3QgaW5zZXJ0aW5nIGNvbnRyb2wgZmxvdwogICAgICAgICAvLyBiZWZv
cmUgU1NBLgogICAgICAgICAKLSAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjb3VudFZhcmlh
YmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKFZpcnR1YWxSZWdpc3RlcihyZW1hcHBlZFJlZ2lz
dGVyT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIGNvdW50VmFyaWFibGUgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEoVmly
dHVhbFJlZ2lzdGVyKHJlbWFwcGVkUmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSBsYW1l
LCBidXQgaXQgd2lsbCBmb3JjZSB0aGUgY291bnQgdG8gYmUgZmx1c2hlZCBhcyBhbiBpbnQuIFRo
aXMgZG9lc24ndAogICAgICAgICAvLyBtYXR0ZXIgdmVyeSBtdWNoLCBzaW5jZSBvdXIgdXNlIG9m
IGEgU2V0QXJndW1lbnREZWZpbml0ZWx5IGFuZCBGbHVzaGVzIGZvciB0aGlzIGxvY2FsIHNsb3Qg
aXMKICAgICAgICAgLy8gbW9zdGx5IGp1c3QgYSBmb3JtYWxpdHkuCkBAIC02ODk3LDYgKzY4OTcs
MTMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgY3JlYXRlQXJndW1lbnRzKTsKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKTsKICAgICAgICAgfQor
CisgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6IHsKKyAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlQXJndW1l
bnRzQnV0dGVyZmx5PigpOworICAgICAgICAgICAgbm90aWNlQXJndW1lbnRzVXNlKCk7CisgICAg
ICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5KSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJndW1lbnRzX2J1
dHRlcmZseSk7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2dldF9m
cm9tX2FyZ3VtZW50czogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRGcm9tQXJndW1lbnRzPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGZkMGI2ZDc0ZGE2NzdiYzQ1MDhjYWM0
OWZjNGVlMWM5OGRhNGU3YWQuLjI0NzdhZjBlNTdmNGRlZmFmMjliMmY4MGMwNDc1ZjUzZWUxMTVm
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
QEAgLTIzNCw2ICsyMzQsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29k
ZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3Bf
Y3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2FyZ3Vt
ZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgorICAgIGNhc2Ugb3Bf
Y3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVu
dHM6CiAgICAgY2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X2FyZ3Vt
ZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA4OWJj
NjQxZjUyNmJiNTNmZjAzN2Y3M2NmOTUwYmFjNjQ2ZDQ5OTU0Li41ZjAyYWMwZGY5M2EyYWY4ZDc0
M2UxZjJlNzhkMWFkYzkzOTJlN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICBy
ZWFkKEFic3RyYWN0SGVhcChTdGFjaywgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1Zh
cmFyZ3MoKSkKLSAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFN0YWNrLCBpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAg
ICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAg
IH0KIAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc3BlY2lmaWNhbGx5IGFjY291bnQgd2hpY2gg
bm9kZXMgY2FuIHJlYWQgZnJvbSB0aGUgc2NvcGUKQEAgLTUyNCw2ICs1MjQsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNh
c2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
OgorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgICAgICByZWFkKFN0YWNr
KTsKICAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICB3cml0ZShIZWFwT2Jq
ZWN0Q291bnQpOwpAQCAtNzczLDE0ICs3NzQsMTQgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOiB7Ci0gICAgICAgIGF1dG8gaGVhcCA9IEFic3RyYWN0SGVhcChTdGFjaywgcmVt
YXBPcGVyYW5kKG5vZGUtPmFyZ3VtZW50c0lubGluZUNhbGxGcmFtZSgpLCBWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgYXV0byBoZWFwID0g
QWJzdHJhY3RIZWFwKFN0YWNrLCByZW1hcE9wZXJhbmQobm9kZS0+YXJndW1lbnRzSW5saW5lQ2Fs
bEZyYW1lKCksIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpKTsKICAgICAgICAgcmVhZChoZWFwKTsKICAgICAgICAgZGVmKEhlYXBMb2Nh
dGlvbihTdGFja1BheWxvYWRMb2MsIGhlYXApLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgot
ICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpKTsKKyAgICAgICAgd3JpdGUoQWJzdHJhY3RIZWFwKFN0YWNrLCBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICByZXR1cm47CiAKICAgICBj
YXNlIEdldFJlc3RMZW5ndGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
aW5kZXggODU0MTIzMTQ3NDFlNmYxMTI2MWYyZTk3YzQ5ZmU2NDRkYWU3YmFmNy4uOGI1Mzk0M2Uy
NGEzMzZiZGUxMDljYTZjMzQwMjk0ZjYyYWFhN2YzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcApAQCAtMjU3LDYgKzI1Nyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICBj
YXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50
czoKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKICAgICBjYXNlIENhbGw6CiAg
ICAgY2FzZSBDYWxsRXZhbDoKICAgICBjYXNlIENhbGxGb3J3YXJkVmFyYXJnczoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGFlZTFmMDA3M2IwZjRi
YmNjNDczNGViNjQxZTQ2NDhjMzA1NWEyNDQuLjhhYjg4Y2M3ZjE2NmNjNDdiN2I0ODg3MGRjYWM3
MjVmNjJjOGZhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcApAQCAtMjUyMSw2ICsyNTIxLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CisgICAgICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgICAgICAgICAgYnJlYWs7CiAjZWxz
ZQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApp
bmRleCBiMzIwZjcwN2M5NWYxMjM5Mzg1MWJjM2IyYjJiNDJiOTU2ZGQwYmY1Li43ZDBmYTM2NGQ1
YmJlM2MyMjAzMzkzODhjZmE1NWFkNjhjYTlmZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcApAQCAtMTE2Miw3ICsxMTYyLDcgQEAgYm9vbCBHcmFwaDo6aXNMaXZlSW5C
eXRlY29kZShWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKQotICAgICAgICAgICAgICAgICAgICAmJiByZWcu
b2Zmc2V0KCkgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkgeworICAgICAgICAgICAg
ICAgICAgICAmJiByZWcub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMb29rcyBsaWtlIHRoZSBhcmd1bWVudCBjb3VudC5c
biIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAppbmRleCBmYWI5Y2YwMmEyNTk3NmVmNDdkMTc5MDViYWQ5Y2UwM2UzODJi
Y2U1Li5lYzRmMjJiZWU1NWYxYjI5MDQyYmZiMjNlMTI2NGZhMjAzY2FkZGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC04NjUsNyArODY1LDcgQEAgY2xhc3MgR3JhcGgg
OiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0b3Ioc3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOwogICAgICAgICAgICAgICAgIGlmIChp
bmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICAgICAgICAgICAgICBmdW5jdG9y
KHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0b3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2Fs
bEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAK
aW5kZXggM2Q4NDNjZTU4ZjIwYjQxMTYzMzlmY2RhOTU4OGFlYmE2YjdhOGMyZS4uNzBlZWY4ODZi
NGE4ZmUyOTQzZjQ2YmFlNzZlYzZiNjM3MGU0NTJkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgICAgICBhcml0eUNoZWNrID0gbGFiZWwoKTsK
ICAgICAgICAgY29tcGlsZUVudHJ5KCk7CiAKLSAgICAgICAgbG9hZDMyKEFzc2VtYmx5SGVscGVy
czo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKUNhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIGxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyksIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCBHUFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOwogICAgICAgICBlbWl0U3RvcmVD
b2RlT3JpZ2luKENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRleCgwKSkpOwogICAgICAgICBpZiAobWF4
RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgKaW5kZXggNjhjYTk4ZGY2ZjVjNGI3YjYzNzJjYzE1ODE4ZWMyNTcyODJm
ODlkOS4uZDFiZDdkYTlkZmZkYzM2YzI2MGU2MzVjYjYwMGE5YjJmMTkxOWQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMTM1LDcgKzEzNSw3IEBA
IGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7CiAKICAgICB2b2lkIGVt
aXRTdG9yZUNhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSkKICAgICB7Ci0gICAg
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGNhbGxTaXRlLmJpdHMoKSksIHRhZ0ZvcihzdGF0aWNf
Y2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7Cisg
ICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGNhbGxTaXRlLmJpdHMoKSksIHRhZ0ZvcihzdGF0
aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSkpOwogICAgIH0KIAogICAgIC8vIEFkZCBhIGNhbGwgb3V0IGZyb20gSklUIGNv
ZGUsIHdpdGhvdXQgYW4gZXhjZXB0aW9uIGNoZWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCmluZGV4IDI0YzczM2QzODcwMjc5ZjRhNTZiNGU2ODhiZjBiZjA2YWMyNGMx
ZDQuLjgxOTEzZWQwNWM4Y2EyNjkzNDBhZjUxODdmYWE2N2M0MTc1ZjI4OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTQyNiw2ICs0MjYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ3JlYXRlU2NvcGVkQXJndW1lbnRz
LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhDcmVhdGVDbG9uZWRBcmd1bWVudHMsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKFBoYW50b21DbG9uZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHksIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEZyb21Bcmd1bWVudHMsIE5vZGVSZXN1
bHRKUykgXAogICAgIG1hY3JvKFB1dFRvQXJndW1lbnRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oR2V0QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFz
ZS5jcHAKaW5kZXggMzI4MGY4N2E2MjY3ZGYwMzRjODRlMzMxODUzMGM3NDE5ZTU1ZTk3ZS4uNzli
Yzc5NjgzMTEzMGMwMzdkNTQ3MGMwZTc5ZDViMGQ5OTU2MjYzZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lz
UGhhc2UuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNh
bGN1bGF0b3I6OmV4ZWN1dGVOb2RlKE5vZGUqIG5vZGUpCiAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAvLyBSZWNvcmQgaG93IHRvIHJlYWQg
ZWFjaCBhcmd1bWVudCBhbmQgdGhlIGFyZ3VtZW50IGNvdW50LgogICAgICAgICAgICAgQXZhaWxh
YmlsaXR5IGFyZ3VtZW50Q291bnQgPQotICAgICAgICAgICAgICAgIG1fYXZhaWxhYmlsaXR5Lm1f
bG9jYWxzLm9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgICAgIG1fYXZhaWxhYmlsaXR5Lm1fbG9j
YWxzLm9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9hdmFpbGFiaWxpdHkubV9oZWFwLnNldChQcm9tb3RlZEhlYXBMb2NhdGlvbihBcmd1bWVudENv
dW50UExvYywgbm9kZSksIGFyZ3VtZW50Q291bnQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCAxOGM2NDE0NzkzNDI0NjliNDFjYThmOThm
MzA4YjNhNGM5MzNiYTk4Li42ZmVkYjE5YjFhZWJmNDUzNGEwNGRiZjAwOGVhOGQ0OTI5ZDI4OTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTI5NSw3ICsy
OTUsNyBAQCBzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50cyhDb250ZXh0JiBjb250ZXh0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgREZHOjpKSQogCiAgICAgICAgIGludDMyX3QgYXJndW1l
bnRDb3VudDsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1l
LT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBmcmFtZS5vcGVyYW5k
PGludDMyX3Q+KHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgUGF5
bG9hZE9mZnNldCk7CisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gZnJhbWUub3BlcmFuZDxp
bnQzMl90PihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBQYXlsb2FkT2Zmc2V0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJndW1l
bnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAK
QEAgLTgxNSwxOCArODE1LDE4IEBAIHN0YXRpYyB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMo
Q29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBvdXRlcm1vc3RCYXNlbGluCiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAg
ICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgUGF5bG9hZE9mZnNldCwgaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgICAgICBmcmFtZS5z
ZXRPcGVyYW5kPHVpbnQzMl90PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFBheWxvYWRPZmZzZXQsIGlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICBBU1NFUlQo
Y2FsbGVyRnJhbWUpOwogICAgICAgICBmcmFtZS5zZXQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+
Y2FsbGVyRnJhbWVPZmZzZXQoKSwgY2FsbGVyRnJhbWUpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+
Ynl0ZWNvZGVJbmRleCgpKS5iaXRzKCk7Ci0gICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMy
X3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgICAgIGZyYW1lLnNldE9wZXJh
bmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVGFnT2Zmc2V0LCBsb2NhdGlvbkJpdHMpOwog
ICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSwgSlNWYWx1ZShpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZUNvbnN0YW50KCkp
KTsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIC8vIHNvIHRoaXMgaXMgdGhlIDMyLWJpdCBwYXJ0
CiAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCkpLnB0cigp
OwogICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KEJ5dGVjb2Rl
SW5kZXgoYml0d2lzZV9jYXN0PHVpbnQzMl90PihpbnN0cnVjdGlvbikpKS5iaXRzKCk7Ci0gICAg
ICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0
cyk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
VGFnT2Zmc2V0LCBsb2NhdGlvbkJpdHMpOwogICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQz
Ml90PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
LCBUYWdPZmZzZXQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAg
ICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQogICAgICAgICAgICAg
ZnJhbWUuc2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlLCBQYXlsb2FkT2Zmc2V0LCBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZUNvbnN0
YW50KCkpOwpAQCAtODQxLDcgKzg0MSw3IEBAIHN0YXRpYyB2b2lkIHJlaWZ5SW5saW5lZENhbGxG
cmFtZXMoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBvdXRlcm1vc3RCYXNlbGluCiAgICAg
ICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IG91dGVybW9zdEJhc2VsaW5lQ29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCkpLnB0
cigpOwogICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KEJ5dGVj
b2RlSW5kZXgoYml0d2lzZV9jYXN0PHVpbnQzMl90PihpbnN0cnVjdGlvbikpKS5iaXRzKCk7CiAj
ZW5kaWYKLSAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCwgVGFnT2Zmc2V0LCBsb2NhdGlvbkJpdHMpOworICAgICAgICBmcmFtZS5z
ZXRPcGVyYW5kPHVpbnQzMl90PihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgVGFnT2Zmc2V0LCBsb2NhdGlvbkJpdHMpOwogICAgIH0KIH0KIApAQCAtOTk3LDcgKzk5
Nyw3IEBAIHZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBq
aXQsIFZNJiB2bSwgY29uc3QgT3BlcmFuZHM8VmFsCiAKICAgICAgICAgaWYgKCFpbmxpbmVDYWxs
RnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewogICAgICAgICAgICAgaml0
LmxvYWQzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Ioc3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwKKyAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6
cmVnVDEpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaml0Lm1vdmUoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAKaW5kZXggMmZmM2VhOGI1ZmJiNmYzZjI3MjFkNTAyNDQ1NjI5OGIwODRkNTExNS4uOWIwMjFi
YjcxMWJhMDJkOWJjMTAwM2Q3NzQxNDMxNzJhNWI2MzE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMzA1
LDE4ICszMDUsMTggQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgfQogCiAgICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdp
c3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwg
QXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBqaXQuc3RvcmVQdHIoY2FsbGVy
RnJhbWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2Fs
bEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpKSk7CiAgICAgICAgIHVpbnQzMl90IGxvY2F0aW9u
Qml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpKS5iaXRzKCk7
Ci0gICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0
aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkp
OworICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2Nh
dGlvbkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKSk7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVD
YWxsKQogICAgICAgICAgICAgaml0LnN0b3JlNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFu
dCgpKSkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpKTsKICNl
bHNlIC8vIFVTRShKU1ZBTFVFNjQpIC8vIHNvIHRoaXMgaXMgdGhlIDMyLWJpdCBwYXJ0CiAgICAg
ICAgIGppdC5zdG9yZVB0cihjYWxsZXJGcmFtZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yQnl0ZU9mZnNldChpbmxpbmVDYWxsRnJhbWUtPmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKICAg
ICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CiAg
ICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRl
eChiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGluc3RydWN0aW9uKSkpLmJpdHMoKTsKLSAgICAgICAg
aml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwg
QXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAg
IGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyks
IEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpKTsKICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0
ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUp
KSk7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQogICAgICAg
ICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVD
YWxsRnJhbWUtPmNhbGxlZUNvbnN0YW50KCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Io
KFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpKTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENh
bGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAg
ICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBqaXQuYmFzZWxpbmVDb2RlQmxv
Y2soKS0+aW5zdHJ1Y3Rpb25zKCkuYXQoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpKS5wdHIo
KTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChCeXRlY29k
ZUluZGV4KGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oaW5zdHJ1Y3Rpb24pKSkuYml0cygpOwogI2Vu
ZGlmCi0gICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxv
Y2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6
dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggNTBjYTAwYjAwYjk0ODhhMTAzMjg3MjYyOGE5ZTJlZTg3M2Yy
YzM3OS4uYjRhMDgwZDgyN2EyYjZlNjhiNTc1YmU3ODAzOGYzNmVmNzlkZTMxNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yMTM0LDYgKzIxMzQs
MjMgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICAgICAgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGFyZ3VtZW50U3RhcnQsIGxlbmd0aCwgY2FsbGVlKTsKIH0KIAorSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1l
bnRDb3VudCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU0ltbXV0YWJsZUJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gSlNJbW11dGFibGVCdXR0ZXJmbHk6OnRyeUNyZWF0ZSh2bSwgdm0u
aW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShD
b3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10u
Z2V0KCksIGFyZ3VtZW50Q291bnQpOworICAgIGlmICghYnV0dGVyZmx5KSB7CisgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGFy
Z3VtZW50Q291bnQ7ICsraW5kZXgpCisgICAgICAgIGJ1dHRlcmZseS0+c2V0SW5kZXgodm0sIGlu
ZGV4LCBhcmd1bWVudFN0YXJ0W2luZGV4XS5qc1ZhbHVlKCkpOworICAgIHJldHVybiBidXR0ZXJm
bHk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1
bWVudHNEdXJpbmdFeGl0KFZNKiB2bVBvaW50ZXIsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQpCiB7CiAg
ICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKaW5kZXggN2QyNGQwNmEwODM4YjQ3OGVkYjdiYmMzMjA2Y2YxYTIyNzFlMjJhZC4u
MzM5ZjkxOGE0OWU2NTg4OTFiMjcyYzlmOGFmZGM5NGVhMDA2M2I3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTE5Nyw2ICsxOTcsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChW
TSosIElubGluZUNhbGxGcgogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVNj
b3BlZEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZ2lzdGVyKiBhcmd1
bWVudFN0YXJ0LCB1aW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxlZSwgSlNMZXhpY2Fs
RW52aXJvbm1lbnQqKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVDbG9u
ZWRBcmd1bWVudHNEdXJpbmdFeGl0KFZNKiwgSW5saW5lQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbios
IHVpbnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZUNsb25lZEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZ2lz
dGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxlZSk7
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
KEpTR2xvYmFsT2JqZWN0KiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGFyZ3Vt
ZW50Q291bnQpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoSlNH
bG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZB
cmd1bWVudHNUb1NraXAsIHVuc2lnbmVkIGFycmF5U2l6ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIoVk0qLCBTdHJ1Y3R1cmUqLCBKU0NlbGwqKSBXVEZf
SU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0QWRkKEpTR2xvYmFs
T2JqZWN0KiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5BTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9i
YmVyaXplLmgKaW5kZXggYTU4ZTE3OTY1NjBmYzZkOTRiYjQ2M2QxNDI5ODg2ZTA3OGYwYWZjYy4u
MTI4Yzg0MWYwYWM3ZjlkZWI2MmY3ZTZmYzQ2M2E1Mjg3MzRjNzU1OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKQEAg
LTExMCwxNCArMTEwLDE0IEBAIGNsYXNzIFByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yIHsK
ICAgICAgICAgICAgICAgICAvLyBSZWFkIHRoZSBvdXRlcm1vc3QgYXJndW1lbnRzIGFuZCBhcmd1
bWVudCBjb3VudC4KICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcDsgaSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2dyYXBoLm1fY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkpOyBpKyspCiAgICAgICAgICAgICAgICAgICAgIG1fcmVhZCh2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7Ci0gICAgICAgICAgICAgICAgbV9yZWFkKFZp
cnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgICAg
ICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXpl
KCk7IGkrKykKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZz
ZXQoKSkpOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0g
ICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAg
ICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIH07
CiAKICAgICAgICAgYXV0byByZWFkU3ByZWFkID0gWyZdIChOb2RlKiBzcHJlYWQpIHsKQEAgLTE1
OCw2ICsxNTgsNyBAQCBjbGFzcyBQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAg
ICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIENyZWF0ZVNjb3Bl
ZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CisgICAgICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgICAgICBjYXNlIFBoYW50b21EaXJl
Y3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAg
ICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgpAQCAtMjI1LDE0ICsyMjYsMTQgQEAgY2xhc3MgUHJlY2lz
ZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJh
bWUpIHsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXhJbmNsdWRpbmdUaGlzIDwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fZ3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCiAgICAg
ICAgICAgICAgICAgICAgIG1fcmVhZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpbmRleElu
Y2x1ZGluZ1RoaXMpKTsKLSAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgICAgICBtX3JlYWQoVmly
dHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSwgIkdldEFyZ3Vt
ZW50IGlzIG9ubHkgdXNlZCBmb3IgSW5saW5lQ2FsbEZyYW1lIGlmIHRoZSBjYWxsIGZyYW1lIGlz
IHZhcmFyZ3MuIik7CiAgICAgICAgICAgICBpZiAoaW5kZXhJbmNsdWRpbmdUaGlzIDwgaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpKQogICAgICAgICAgICAgICAgIG1f
cmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4SW5jbHVkaW5nVGhpcykub2Zmc2V0KCkpKTsKLSAg
ICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgIG1fcmVh
ZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yNTYsNyArMjU3LDcgQEAgY2xhc3MgUHJlY2lz
ZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFs
UmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkpOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygp
KQotICAgICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCmluZGV4IDgwNTA1MTZjYmZlY2M4NGZlMTk1ODQyOGEwY2Y4N2NkNTRlZTEx
N2IuLmVjZTk0NzA2ZWU4NGMyNmUxOWExOThlMjM1Y2E3NGZiNzg1MTkzMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCkBAIC0xMTI1LDYgKzExMjUsMTEgQEAgY2xhc3MgUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihT
cGVjT2JqZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAg
ICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTogeworICAgICAgICAgICAgc2V0UHJlZGlj
dGlvbihTcGVjQ2VsbE90aGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBGaWF0SW50NTI6IHsKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGVuYWJsZUludDUyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAppbmRleCAxNWJlNDJhYzNiNjlhZjRkYzU4MzhhMThkZjM5ZDA3OGNhMzE2
OTE5Li5iOWE0NmJlYjAyNTgxNjI0ODg4ZGQxODEwMmIyYzZkMThiYTZkZDc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzc3LDYgKzM3Nyw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVu
dHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgY2Fz
ZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgY2FzZSBQdXRU
b0FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggYjVhMTFjNTFlZjEwY2Y3YTZiMjMxNzJkMmQ4YmY4ZjY3NWUwNTJiZC4u
NjI5M2QwNDcyNzM5OTQ1ZTM1ZmRiNzdjZGE5ZDU2ZjIyMTIwM2IzYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTc4MDksNiArNzgw
OSwyOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
KE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KE5vZGUqIG5v
ZGUpCit7CisgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKworICAgIC8vIFdlIHNldCB1cCB0aGUgYXJndW1lbnRzIG91
cnNlbHZlcywgYmVjYXVzZSB3ZSBoYXZlIHRoZSB3aG9sZSByZWdpc3RlciBmaWxlIGFuZCB3ZSBj
YW4KKyAgICAvLyBzZXQgdGhlbSB1cCBkaXJlY3RseSBpbnRvIHRoZSBhcmd1bWVudCByZWdpc3Rl
cnMuCisKKyAgICAvLyBBcmd1bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0LCAzOmxl
bmd0aAorICAgIG1faml0LnNldHVwQXJndW1lbnQoMiwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBl
bWl0R2V0TGVuZ3RoKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOworICAgIG1f
aml0LnNldHVwQXJndW1lbnQoMSwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBlbWl0R2V0QXJndW1l
bnRTdGFydChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKKyAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBkZXN0R1BSKTsgfSk7
CisKKyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRl
cmZseSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ3JlYXRlUmVzdChOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlLT5vcCgpID09IENy
ZWF0ZVJlc3QpOwpAQCAtMTI0NDcsMTQgKzEyNDY5LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhOb2RlKiBub2RlKQogICAgIGlm
IChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPmFyZ3VtZW50c0lubGlu
ZUNhbGxGcmFtZSgpKQogICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICBlbHNlCi0gICAgICAgIGFyZ3VtZW50
Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KTsKKyAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICBtX2ppdC5sb2Fk
MzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoYXJndW1lbnRDb3VudFJlZ2lzdGVyKSwgcmVzdWx0
LmdwcigpKTsKICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoTm9k
ZSogbm9kZSkKIHsKLSAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihub2RlLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpKSwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG5v
ZGUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpLCBKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIG5vUmVz
dWx0KG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggYzY0Zjk3OGFkZjg1ZmJmMjc3YmJhNzkyMTYwNjRmNDI4MWI4ZDVhOS4u
MjJhZDQ2ZjkwNWY5NzdiOTBmODViOTFhYzkzY2RmY2RmNjAwZWY0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTQwMSw2ICsxNDAxLDcg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50KE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVTY29wZWRBcmd1bWVudHMoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyhOb2RlKik7CisgICAgdm9pZCBjb21w
aWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVh
dGVSZXN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTcHJlYWQoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZU5ld0FycmF5KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDY3YjBlMGIzNzA0Y2E1OWE4OTBh
YzU5Yzg2ZGJkMGQyYTA1NmRiODEuLjhjODU2Yzg3OWU2ZjNhMWQ3ZGIyOTExNWFiOGQzNTNjYWYx
YmUxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1Q
YXNzZWRBcmdzOyBpIDwgbnVtQWxsb2NhdGVkQXJnczsgKytpKQogICAgICAgICAgICAgICAgIHNo
dWZmbGVEYXRhLmFyZ3NbaV0gPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChqc1VuZGVmaW5lZCgp
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgbV9qaXQuY2FsbGVlRnJhbWVQYXls
b2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICBtX2pp
dC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobnVtUGFzc2VkQXJncyksIG1f
aml0LmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtUGFzc2VkQXJnczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgRWRnZSBhcmdFZGdl
ID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQoKSArIDEg
KyBpXTsKQEAgLTM4NzQsNiArMzg3NCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5OiB7CisgICAgICAgIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHkobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ3JlYXRlUmVzdDog
ewogICAgICAgICBjb21waWxlQ3JlYXRlUmVzdChub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRl
eCAzZTYzOGM5Yjk0OWViNWVhMjZhMzEwNWRkYjhhZmU3NjYyMTYzMzQ0Li4xNzdhODEzMmFjM2Iz
ZjM3Yzk2MTY1YTM3NjE1ZTMwN2NhZDI0NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBzaHVm
ZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMobV9qaXQuY29kZUJsb2NrKCkpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXls
b2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICBtX2pp
dC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobnVtUGFzc2VkQXJncyksIEpJ
VENvbXBpbGVyOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1QYXNzZWRBcmdzOyBpKyspIHsKICAgICAgICAgICAgICAgICBFZGdlIGFyZ0VkZ2Ug
PSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgMSAr
IGldOwpAQCAtNDUxMyw2ICs0NTEzLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyhub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJm
bHk6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDcmVhdGVSZXN0OiB7CiAgICAgICAgIGNv
bXBpbGVDcmVhdGVSZXN0KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCmluZGV4IGJlZWM4NmFjN2E3
ZDMzM2UzOTY3OWUyNjc1NTkwNzRlNDY0YzliODIuLjE2OGIzZGY0MzM0NjU3ZTZhYWRiNjRiYmY2
MzNlZWM1YWZhMWIwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RhY2tMYXlvdXRQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGFja0xheW91dFBoYXNlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewogICAgICAgICAgICAgICAgIHVzZWRMb2NhbHMu
c2V0KFZpcnR1YWxSZWdpc3RlcigKLSAgICAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7
CisgICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVu
dCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgYXJndW1lbnQt
LTspIHsKQEAgLTE3NSw3ICsxNzUsNyBAQCBjbGFzcyBTdGFja0xheW91dFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+
aXNWYXJhcmdzKCkpIHsKICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRSZWdpc3RlciA9IGFzc2lnbigKLSAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbiwg
VmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb24sIFZp
cnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgYXJndW1lbnQtLTspIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKaW5kZXggNzU4NjdiZjc3NWY5NTJkZTA5ZTU1ZTI5MzM0NTJhOTZmYjQyNDk2MS4u
NjllNjhjY2I4ZGQzOGViN2E3ZmU5NjdkM2MxMmVlNGJhZDQ0NjI1MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKQEAgLTMzOCw2ICszMzgsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3Vt
ZW50czoKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAgICAg
ICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CisgICAgICAgICAgICBjYXNlIENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseToKICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAg
ICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCBmOWI5NWE2MDA5NWYwNDAwOTg0ZWNm
ZTA3N2RiZTU2YmNkOWY1NzI4Li4yYWE5MjcwMzhlYTY4NTM5N2U3MmQ5ZjM4NTZkZmE0ZTdjNTBj
NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaApAQCAtODMsOCArODMsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEZUTCB7CiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9pbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblByb2ZpbGVfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkludGVy
bmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSgpICsgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRp
b25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJl
RGF0YV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkJv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxs
b2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKSkgXAotICAgIG1hY3JvKEZ1
bmN0aW9uUmFyZURhdGFfaGFzUmVpZmllZExlbmd0aCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0
T2ZIYXNSZWlmaWVkTGVuZ3RoKCkpIFwKLSAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2hhc1Jl
aWZpZWROYW1lLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkhhc1JlaWZpZWROYW1lKCkpIFwK
ICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0
dGVyKCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9m
ZnNldE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNzgxYjcxZTY5MjQzODI4NjQ4OTdl
ZmY3ZjlkZTY4ZTRlZTRlYmYxZC4uYzE1MWYyMTdkZWVjMTg2N2U2OGY1NWUyY2I0YTA3Zjk1MTk2
MjBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cApAQCAtMTUyLDYgKzE1Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3Jl
YXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgorICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50
czoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgR2V0QXJndW1lbnQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCBkNDg3MzE4ZjI5ZmUzNjFjNjdhYTg1
ODkxY2E5MTIwOThlNmU1NjEwLi5lMzA3YjA5Yjc4NjkxOGQwN2MwOWU1MzJmZjBmM2I0MjRhNzgw
MjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTEzMyw3ICsxMzMs
NyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBtYWluUGF0aEp1bXBzOwogICAgIAogICAgICAgICAgICAgaml0LmxvYWQzMigKLSAg
ICAgICAgICAgICAgICBmcmFtZS53aXRoT2Zmc2V0KHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KSwKKyAgICAgICAgICAgICAgICBmcmFtZS53aXRoT2Zmc2V0
KHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyksCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgbWFp
blBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBHUFJJbmZvOjpyZWdUMSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA5
NDU2NTc3NTVhMGVjYjc4MWNmYjg5YjExYzM5Zjk4ZjdhOWFiYTNkLi4yNzc5MzIxZGUwYWJmZjMw
MmY1NTE3NDEyNTJjNzJjNDY0OGU0NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsK
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKHZtLT50b3BFbnRyeUZyYW1lKTsKIAogICAgICAgICAgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKQEAgLTEwNDYsNiArMTA0Niw5IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICAgICAg
Y29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgorICAgICAgICAgICAgY29tcGlsZUNy
ZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgT2JqZWN0Q3JlYXRlOgogICAgICAgICAgICAgY29tcGlsZU9iamVjdENyZWF0ZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC01OTM2LDYgKzU5MzksMTMgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGls
ZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSgpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRp
b25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGdl
dEFyZ3VtZW50c1N0YXJ0KCksIGdldEFyZ3VtZW50c0xlbmd0aCgpLnZhbHVlKTsKKyAgICAgICAg
c2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVJlc3Qo
KQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKQEAgLTc5NDEsMTMgKzc5
NTEsMTMgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgaWYgKElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lID0gbV9ub2RlLT5hcmd1bWVudHNJbmxpbmVDYWxsRnJhbWUoKSkK
ICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudFJlZ2lzdGVyOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcmd1bWVudENv
dW50UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCk7CisgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICBzZXRJ
bnQzMihtX291dC5sb2FkMzIocGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpKSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb21waWxlU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKQog
ICAgIHsKLSAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKG1fbm9kZS0+YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSksIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCkpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIobV9u
b2RlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKSwgcGF5bG9hZEZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIH0KICAgICAKICAgICB2b2lk
IGNvbXBpbGVHZXRTY29wZSgpCkBAIC04NDY5LDcgKzg0NzksNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICB9OwogCiAgICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVlLCBWaXJ0dWFs
UmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgMCk7Ci0gICAgICAgIGFkZEFyZ3VtZW50
KG1fb3V0LmNvbnN0SW50MzIobnVtQXJncyksIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50KSwgUGF5bG9hZE9mZnNldCk7CisgICAgICAgIGFkZEFyZ3VtZW50KG1f
b3V0LmNvbnN0SW50MzIobnVtQXJncyksIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIFBheWxvYWRPZmZzZXQpOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQogICAgICAgICAgICAgYWRkQXJndW1l
bnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKIApAQCAtODQ5Nyw3ICs4NTA3LDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMo
KSksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdp
c3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKICAgICAgICAgICAgICAgICBDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAK
QEAgLTg1NzksNyArODU4OSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICB9
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBhZGRBcmd1bWVudChqc0NhbGxlZSwgVmlydHVh
bFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIDApOwotICAgICAgICAgICAgYWRkQXJn
dW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKKyAgICAgICAgICAg
IGFkZEFyZ3VtZW50KG1fb3V0LmNvbnN0SW50MzIobnVtUGFzc2VkQXJncyksIFZpcnR1YWxSZWdp
c3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIFBheWxvYWRP
ZmZzZXQpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3NlZEFy
Z3M7ICsraSkKICAgICAgICAgICAgICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVlKG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSks
IDApOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtUGFzc2VkQXJnczsgaSA8IG51
bUFsbG9jYXRlZEFyZ3M7ICsraSkKQEAgLTg2NDcsNyArODY1Nyw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBqaXQuc3Rv
cmUzMigKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGNhbGxTaXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVh
bFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEZy
YW1lU2h1ZmZsZURhdGEoc2h1ZmZsZURhdGEpOwogICAgICAgICAgICAgICAgICAgICBDYWxsRnJh
bWVTaHVmZmxlcihqaXQsIHNodWZmbGVEYXRhKS5wcmVwYXJlRm9yVGFpbENhbGwoKTsKQEAgLTg2
OTAsNyArODcwMCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICBq
aXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0
Lm5lYXJDYWxsKCk7CiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cigKQEAgLTg4MDYsNyArODgx
Niw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gd2l0aCB0aGUg
Y2FsbCBzaXRlIGluZGV4IG9mIG91ciBmcmFtZS4gQmFkIHRoaW5ncyBoYXBwZW4gaWYgaXQncyBu
b3Qgc2V0LgogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKSk7CiAKICAgICAgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlRGF0
YSBzaHVmZmxlRGF0YTsKICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPSBz
dGF0ZS0+aml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0ZXJDb3VudDsKQEAgLTg5NTIsNyArODk2
Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICBqaXQuc3RvcmUz
MigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNp
dGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogCiAgICAgICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxM
aW5rSW5mbygpOwogCkBAIC05MDE2LDcgKzkwMjYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgICAgICAvLyBCZWZvcmUgdG91Y2hpbmcgc3RhY2sgdmFsdWVzLCB3ZSBz
aG91bGQgdXBkYXRlIHRoZSBzdGFjayBwb2ludGVyIHRvIHByb3RlY3QgdGhlbSBmcm9tIHNpZ25h
bCBzdGFjay4KICAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBzY3JhdGNoR1BSMSwgQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICAgICAgICAgICAgICAgICAgaml0
LnN0b3JlMzIoc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSMSwg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTMyKHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUjEsIENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKIAogICAgICAgICAgICAgICAgICAg
ICBpbnQgc3RvcmVPZmZzZXQgPSBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKIApAQCAtOTI1NCw3ICs5MjY0LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4
LmJpdHMoKSksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKICAgICAgICAgICAgICAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZv
KCk7CiAgICAgICAgICAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRhID0gbm9kZS0+Y2FsbFZh
cmFyZ3NEYXRhKCk7CkBAIC05NDc3LDcgKzk0ODcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgYWRkQXJndW1lbnQoanNDYWxsZWUsIFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCAwKTsKLSAgICAgICAgYWRkQXJndW1l
bnQobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKKyAgICAgICAgYWRkQXJndW1lbnQo
bV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgUGF5bG9hZE9mZnNldCk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpCiAgICAgICAgICAgICBhZGRBcmd1
bWVudChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIDApOwogICAgICAgICAKQEAgLTk1MDcsNyArOTUxNyw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxS
ZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
byA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAgICAgICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIEdQUkluZm86OnJlZ1QwKTsKQEAgLTEyMzI1LDcgKzEyMzM1LDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1l
KQotICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICBhcmd1bWVu
dENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGFy
Z3VtZW50Q291bnRSZWdpc3RlciA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lz
dGVyOwogICAgICAgICAgICAgbGVuZ3RoLnZhbHVlID0gbV9vdXQuc3ViKG1fb3V0LmxvYWQzMihw
YXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpLCBtX291dC5pbnQzMk9uZSk7CkBAIC0x
NzYxMSw3ICsxNzYyMSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCA9IG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9uLmFkZENvZGVP
cmlnaW4oY29kZU9yaWdpbik7CiAgICAgICAgIG1fb3V0LnN0b3JlMzIoCiAgICAgICAgICAgICBt
X291dC5jb25zdEludDMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICNpZiAhVVNFKEJVSUxU
SU5fRlJBTUVfQUREUkVTUykgfHwgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBtX291dC5zdG9y
ZVB0cihtX2NhbGxGcmFtZSwgbV9vdXQuYWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhD
YWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCmluZGV4
IDY5MzRjM2YwZDM3OTFmNjRiYTQyOTYzZTA1NTYzZGJiYzdkZGE1YTQuLmZlMmE0ZWM3MjZjZWNl
ZDM0MTMwOTM5OTQ5NGVhOWViN2U2YjRiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGwuaApAQCAtMTAwLDcgKzEwMCw3IEBAIFNsb3dQYXRoQ2FsbCBjYWxs
T3BlcmF0aW9uKAogICAgIGlmIChjYWxsU2l0ZUluZGV4KSB7CiAgICAgICAgIGppdC5zdG9yZTMy
KAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5i
aXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICB9CiAgICAgcmV0dXJu
IGNhbGxPcGVyYXRpb24odm0sIHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBm
dW5jdGlvbiwgcmVzdWx0R1BSLCBhcmd1bWVudHMuLi4pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCBmNjM5NGFjNzEwNzEyNWI3
Y2FiMjFhZDJiOTExM2MwNzk1MzZhNjAwLi4xYTRkZTNmOTM2MjkwZTYyZjYzODllZjVmZmEwN2Y4
OTczNmNlNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmNwcApAQCAtOTAsMTIgKzkwLDEyIEBAIGJvb2wgQ2FsbEZyYW1lOjpjYWxsU2l0ZUJp
dHNBcmVDb2RlT3JpZ2luSW5kZXgoKSBjb25zdAogCiB1bnNpZ25lZCBDYWxsRnJhbWU6OmNhbGxT
aXRlQXNSYXdCaXRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhpc1tDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50XS50YWcoKTsKKyAgICByZXR1cm4gdGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc10udGFnKCk7CiB9CiAKIFNVUFBSRVNTX0FTQU4gdW5zaWdu
ZWQgQ2FsbEZyYW1lOjp1bnNhZmVDYWxsU2l0ZUFzUmF3Qml0cygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudF0udW5zYWZlVGFnKCk7CisgICAg
cmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNdLnVu
c2FmZVRhZygpOwogfQogCiBDYWxsU2l0ZUluZGV4IENhbGxGcmFtZTo6Y2FsbFNpdGVJbmRleCgp
IGNvbnN0CkBAIC0xMTcsNyArMTE3LDcgQEAgY29uc3QgSW5zdHJ1Y3Rpb24qIENhbGxGcmFtZTo6
Y3VycmVudFZQQygpIGNvbnN0CiB2b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQQyhjb25zdCBJ
bnN0cnVjdGlvbiogdnBjKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUoQnl0ZWNvZGVJ
bmRleChiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHZwYykpKTsKLSAgICB0aGlzW0NhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRdLnRhZygpID0gY2FsbFNpdGUuYml0cygpOworICAgIHRoaXNbQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNdLnRhZygpID0gY2FsbFNpdGUu
Yml0cygpOwogfQogCiB1bnNpZ25lZCBDYWxsRnJhbWU6OmNhbGxTaXRlQml0c0FzQnl0ZWNvZGVP
ZmZzZXQoKSBjb25zdApAQCAtMTM3LDcgKzEzNyw3IEBAIGNvbnN0IEluc3RydWN0aW9uKiBDYWxs
RnJhbWU6OmN1cnJlbnRWUEMoKSBjb25zdAogdm9pZCBDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMo
Y29uc3QgSW5zdHJ1Y3Rpb24qIHZwYykKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlKGNv
ZGVCbG9jaygpLT5ieXRlY29kZUluZGV4KHZwYykpOwotICAgIHRoaXNbQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudF0udGFnKCkgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihjYWxsU2l0ZS5iaXRz
KCkpOworICAgIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNd
LnRhZygpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oY2FsbFNpdGUuYml0cygpKTsKIH0KIAogdW5z
aWduZWQgQ2FsbEZyYW1lOjpjYWxsU2l0ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAppbmRleCBjZmI3
NzE4NTYwMzk5MzM5MTAwNGZjMTMyMTE4Mzg0MjNjNWRjNmE5Li44YWJkZGI4MTA2YjQxYjFhZTAz
ZDc1NzZhODAxZDdiZjkxZjIxNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCkBAIC04Niw4ICs4Niw4IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAg
ICBzdHJ1Y3QgQ2FsbEZyYW1lU2xvdCB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGNv
ZGVCbG9jayA9IENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lzdGVyczsKICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgY2FsbGVlID0gY29kZUJsb2NrICsgMTsKLSAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgYXJndW1lbnRDb3VudCA9IGNhbGxlZSArIDE7Ci0gICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IHRoaXNBcmd1bWVudCA9IGFyZ3VtZW50Q291bnQgKyAxOworICAgICAg
ICBzdGF0aWMgY29uc3RleHByIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxl
ZSArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHRoaXNBcmd1bWVudCA9IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICsgMTsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
Zmlyc3RBcmd1bWVudCA9IHRoaXNBcmd1bWVudCArIDE7CiAgICAgfTsKIApAQCAtOTUsNyArOTUs
NyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgLy8gUGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVu
dCB0byBtb3N0IGZ1bmN0aW9ucy4KICAgICBjbGFzcyBDYWxsRnJhbWUgOiBwcml2YXRlIFJlZ2lz
dGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGhlYWRlclNp
emVJblJlZ2lzdGVycyA9IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKyAxOworICAgICAg
ICBzdGF0aWMgY29uc3RleHByIGludCBoZWFkZXJTaXplSW5SZWdpc3RlcnMgPSBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIDE7CiAKICAgICAgICAgLy8gVGhpcyBm
dW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgaW4gdmVyeSBzcGVjaWZpYyBjaXJjdW1zdGFu
Y2VzCiAgICAgICAgIC8vIHdoZW4geW91J3ZlIGd1YXJhbnRlZWQgdGhlIGNhbGxlZSBjYW4ndCBi
ZSBhIFdhc20gY2FsbGVlLCBhbmQgY2FuCkBAIC0xOTAsNyArMTkwLDcgQEAgbmFtZXNwYWNlIEpT
QyAgewogCiAgICAgICAgIC8vIEFjY2VzcyB0byBhcmd1bWVudHMgYXMgcGFzc2VkLiAoQWZ0ZXIg
Y2FwdHVyZSwgYXJndW1lbnRzIG1heSBtb3ZlIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uLikKICAg
ICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQoKSBjb25zdCB7IHJldHVybiBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpIC0gMTsgfQotICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKSBjb25zdCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRdLnBheWxvYWQoKTsgfQorICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKSBjb25zdCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzXS5wYXlsb2FkKCk7IH0KICAgICAgICAgc3RhdGljIGludCBhcmd1bWVudE9mZnNl
dChpbnQgYXJndW1lbnQpIHsgcmV0dXJuIChDYWxsRnJhbWVTbG90OjpmaXJzdEFyZ3VtZW50ICsg
YXJndW1lbnQpOyB9CiAgICAgICAgIHN0YXRpYyBpbnQgYXJndW1lbnRPZmZzZXRJbmNsdWRpbmdU
aGlzKGludCBhcmd1bWVudCkgeyByZXR1cm4gKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAr
IGFyZ3VtZW50KTsgfQogCkBAIC0yNTEsNyArMjUxLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAg
ICAgICBib29sIGlzU3RhY2tPdmVyZmxvd0ZyYW1lKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNX
YXNtRnJhbWUoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKGludCBjb3VudCkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0NhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRdLnBheWxvYWQoKSA9IGNvdW50OyB9CisgICAgICAgIHZvaWQg
c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoaW50IGNvdW50KSB7IHN0YXRpY19jYXN0PFJl
Z2lzdGVyKj4odGhpcylbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNd
LnBheWxvYWQoKSA9IGNvdW50OyB9CiAgICAgICAgIGlubGluZSB2b2lkIHNldENhbGxlZShKU09i
amVjdCopOwogICAgICAgICBpbmxpbmUgdm9pZCBzZXRDb2RlQmxvY2soQ29kZUJsb2NrKik7CiAg
ICAgICAgIHZvaWQgc2V0UmV0dXJuUEModm9pZCogdmFsdWUpIHsgY2FsbGVyRnJhbWVBbmRQQygp
LnJldHVyblBDID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KHZhbHVlKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4
IGM4ZGYyMDBiOTgxZmY4MjZhNTJlZjA2NzBlYzdkZWVkY2JmZjY5NmUuLjllZTkxNjMyOGQ5Yjhj
YTNlOTE0N2EyNDZkNWIwMzQyMjM5NDFhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6aml0QXNzZXJ0SXNOdWxsKEdQUlJlZyBncHIpCiAKIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjpqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpCiB7Ci0gICAgSnVtcCBvayA9IGJyYW5j
aDMyKEJlbG93LCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBUcnVz
dGVkSW1tMzIoMTAwMDAwMDApKTsKKyAgICBKdW1wIG9rID0gYnJhbmNoMzIoQmVsb3csIHBheWxv
YWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBUcnVzdGVk
SW1tMzIoMTAwMDAwMDApKTsKICAgICBhYm9ydFdpdGhSZWFzb24oQUhJbnNhbmVBcmd1bWVudENv
dW50KTsKICAgICBvay5saW5rKHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggMjIwMDljNWZkMmJhMjI3ZDQ3Y2ZlODU0OTM5ZjUyZGVm
MmQ3MWJjMi4uMzRkOTBjOGExYWNkOGVhYzJmZmI2ZTBlNmJmOWRhYTI4ZGU1MWUzMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNTI3LDcgKzE1
MjcsNyBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewog
ICAgIHsKICAgICAgICAgQVNTRVJUKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1l
LT5pc1ZhcmFyZ3MoKSk7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsK
KyAgICAgICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudENvdW50UmVnaXN0ZXI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuaAppbmRleCAwMTVmMDNiNzViNjdjOWY3NTdjYmU3NDA0ZDRlMWE1NjkzNGEy
ODFiLi4xMWZlMzdhN2E4MjFiMTc1ZmVmOWJiMmQwY2ZlODdlNTEyOTQ3NWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTcyNCw3ICs3MjQsNyBAQCBjbGFz
cyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIEdQ
UlJlZyBvbGRGcmFtZVNpemVHUFIgPSB0ZW1wMjsKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBHUFJSZWcgYXJnQ291bnRHUFIgPSBvbGRGcmFtZVNpemVHUFI7Ci0gICAgICAgICAgICAg
ICAgbG9hZDMyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9h
ZE9mZnNldCksIGFyZ0NvdW50R1BSKTsKKyAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhm
cmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNl
dCksIGFyZ0NvdW50R1BSKTsKIAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgR1BSUmVnIG51bVBhcmFtZXRlcnNHUFIgPSB0ZW1wMTsKQEAgLTc1Myw3ICs3NTMsNyBAQCBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAg
IC8vIFRoZSBuZXcgZnJhbWUgc2l6ZSBpcyBqdXN0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBs
dXMgdGhlCiAgICAgICAgICAgICAvLyBmcmFtZSBoZWFkZXIgc2l6ZSwgYWxpZ25lZAogICAgICAg
ICAgICAgQVNTRVJUKG5ld0ZyYW1lU2l6ZUdQUiAhPSBuZXdGcmFtZVBvaW50ZXIpOwotICAgICAg
ICAgICAgbG9hZDMyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksCisgICAgICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsg
UGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksCiAgICAgICAgICAgICAg
ICAgbmV3RnJhbWVTaXplR1BSKTsKICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMg
LSAxKSwgbmV3RnJhbWVTaXplR1BSKTsKICAgICAgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMigt
c3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSksIG5ld0ZyYW1lU2l6ZUdQUik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCmluZGV4IDk2OTBlMDlj
OGI1NzI3MGRlZjdmODdhNDZjYzJiNTdlNGY3NjIwM2UuLmJmNDNkN2I4M2I5YTk5MDllODUyMjU5
YzMwOGIwODgzNmQ3OWY3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q2FsbEZyYW1lU2h1ZmZsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2Fs
bEZyYW1lU2h1ZmZsZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBDYWxsRnJhbWVTaHVm
Zmxlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICAgICAgICAgICAgICBv
dXQucHJpbnRmKCIgJWMlOHMgPC0gJTE4cyAlYyAiLCBkLCBzdHIuZGF0YSgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgcmVjb3ZlcnlTdHIuZGF0YSgpLCBkKTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5ld1JlZyA9PSBWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pCisgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld1Jl
ZyA9PSBWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyB9KQogICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiAlYyU4cyA8LSAlMTh6dSAl
YyAiLCBkLCBzdHIuZGF0YSgpLCBhcmdDb3VudCgpLCBkKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgJWMlMzBzICVjICIsIGQsICIiLCBkKTsKQEAgLTQx
OCw3ICs0MTgsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlRm9yVGFpbENhbGwo
KQogICAgIC8vIG9sZCBmcmFtZSAodGFraW5nIGludG8gYWNjb3VudCBhbiBhcmd1bWVudCBjb3Vu
dCBoaWdoZXIgdGhhbgogICAgIC8vIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyksIHRoZW4gc3Vi
c3RyYWN0aW5nIHRvIGl0IHRoZSBhbGlnbmVkCiAgICAgLy8gbmV3IGZyYW1lIHNpemUgKGFkanVz
dGVkKS4KLSAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCksIG1fbmV3RnJhbWVC
YXNlKTsKKyAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQp
LCBtX25ld0ZyYW1lQmFzZSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYXJndW1lbnRDb3Vu
dE9LID0KICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVh
bCwgbV9uZXdGcmFtZUJhc2UsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpKTsKQEAgLTczOCwxMiArNzM4
LDEyIEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogICAgIC8vIFdlIG5l
ZWQgdG8gaGFuZGxlIDQpIGZpcnN0IGJlY2F1c2UgaXQgaW1wbGllcyByZWxlYXNpbmcKICAgICAv
LyBtX25ld0ZyYW1lQmFzZSwgd2hpY2ggY291bGQgYmUgYSB3YW50ZWQgcmVnaXN0ZXIuCiAgICAg
aWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIiAgICogU3RvcmluZyB0aGUgYXJndW1lbnQg
Y291bnQgaW50byAiLCBWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50IH0sICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAqIFN0b3JpbmcgdGhlIGFyZ3VtZW50
IGNvdW50IGludG8gIiwgVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgfSwgIlxuIik7CiAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKDApLAotICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdp
c3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNldChUYWdPZmZz
ZXQpKTsKKyAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyB9KS53aXRoT2Zmc2V0KFRhZ09mZnNldCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKG1fbnVtUGFzc2VkQXJncyAhPSBVSU5UX01BWCk7CiAgICAg
bV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG1fbnVtUGFzc2VkQXJn
cyksCi0gICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKKyAgICAgICAg
YWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyB9KS53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKIAogICAgIGlm
ICghaXNTbG93UGF0aCgpKSB7CiAgICAgICAgIEFTU0VSVChtX25ld0ZyYW1lQmFzZSAhPSBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IDE3YzBlZGFhODJiOWY5NGY1NzQxMzExMDYxYTY1MTI5NGE1MTZmODUuLmVmYTc4
YmNkNzk4YTQ4YjVkMjBlN2MxNDU4MTQ0ODUxZWZmOTBkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKQEAgLTMwNyw2ICszMDcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKQog
ICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfc2NvcGVkX2FyZ3VtZW50cykKICAgICAgICAg
REVGSU5FX1NMT1dfT1AoY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpCisgICAgICAgIERFRklORV9T
TE9XX09QKGNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5KQogICAgICAgICBERUZJTkVfU0xPV19P
UChjcmVhdGVfcmVzdCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX3Byb21pc2UpCiAg
ICAgICAgIERFRklORV9TTE9XX09QKG5ld19wcm9taXNlKQpAQCAtNzU1LDcgKzc1Niw3IEBAIHZv
aWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0
KQogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICBlbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CiAKLSAg
ICAgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJl
Z1QxKTsKKyAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMSk7CiAgICAgICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVh
bCwgcmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlu
a1RvKGJlZ2luTGFiZWwsIHRoaXMpOwogCiAgICAgICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVj
b2RlSW5kZXgoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBiZjIz
MDZiY2U0ZDU2ZjEwOWEwMzYxOGIzNDA3MmZjNTdjMGU1YWMzLi5jM2Y4YWEwYzdmYWY0ZWFkNDM0
NjdkNTQyNzI2YWU4YWM5MjU4N2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5j
cHAKQEAgLTc0LDcgKzc0LDcgQEAgSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0
ZWNvZGUsIENhbGxMaW5rSW5mbyopCiAgICAgfQogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihy
ZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIHN0b3Jl
MzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7Cisg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSk7CiB9CiAKIApAQCAtMTEwLDcgKzExMCw3IEBAIEpJVDo6Y29tcGls
ZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qIGluZm8pCiAgICAg
bW92ZShyZXR1cm5WYWx1ZUdQUiwgcmVnVDEpOwogCiAgICAgLy8gUHJvZmlsZSB0aGUgYXJndW1l
bnQgY291bnQuCi0gICAgbG9hZDMyKEFkZHJlc3MocmVnVDEsIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9m
ZnNldCksIHJlZ1QyKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpICsgUGF5bG9hZE9mZnNldCksIHJlZ1QyKTsKICAgICBsb2FkMzIoaW5mby0+YWRkcmVz
c09mTWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSwgcmVnVDApOwogICAgIEp1bXAgbm90
QmlnZ2VzdCA9IGJyYW5jaDMyKEFib3ZlLCByZWdUMCwgcmVnVDIpOwogICAgIHN0b3JlMzIocmVn
VDIsIGluZm8tPmFkZHJlc3NPZk1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOwpAQCAt
MjI4LDcgKzIyOCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgLy8gU1AgaG9sZHMg
bmV3Q2FsbEZyYW1lICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291
bnQgaW5pdGlhbGl6ZWQuCiAgICAgYXV0byBieXRlY29kZUluZGV4ID0gbV9jb2RlQmxvY2stPmJ5
dGVjb2RlSW5kZXgoaW5zdHJ1Y3Rpb24pOwogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENh
bGxTaXRlSW5kZXgoYnl0ZWNvZGVJbmRleCkuYml0cygpOwotICAgIHN0b3JlMzIoVHJ1c3RlZElt
bTMyKGxvY2F0aW9uQml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsg
VGFnT2Zmc2V0KSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQWRk
cmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0
KSk7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgcmVnVDApOyAvLyByZWdU
MCBob2xkcyBjYWxsZWUuCiAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IDdmNmM5MTA4OTA3OThlZjYxMWI4N2Vi
NDQxZGYwNTVkNGIxM2IwZDEuLmQ2ZGJlMDkwOGU0ZThhZGFlYWU2MjRkNjA1NGI5OGE3Y2MxNTEy
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTE2
NSw3ICsxNjUsNyBAQCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwg
Q2FsbExpbmtJbmZvKikKICAgICB9CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVy
T2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNh
bGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgc3RvcmUzMihUcnVz
dGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBzdG9y
ZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC0yMDEsNyArMjAxLDcg
QEAgSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5m
byogaW5mbykKICAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMSk7CiAKICAgICAvLyBQcm9m
aWxlIHRoZSBhcmd1bWVudCBjb3VudC4KLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwogICAgIGxvYWQz
MihpbmZvLT5hZGRyZXNzT2ZNYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCByZWdUMCk7
CiAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1QwLCByZWdUMik7CiAg
ICAgc3RvcmUzMihyZWdUMiwgaW5mby0+YWRkcmVzc09mTWF4QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKSk7CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAg
ICAvLyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyksIHdp
dGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KICAgICAKICAgICB1aW50MzJfdCBsb2NhdGlv
bkJpdHMgPSBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgoYml0d2lzZV9jYXN0PHVpbnQzMl90
PihpbnN0cnVjdGlvbikpKS5iaXRzKCk7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRp
b25CaXRzKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICBzdG9y
ZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBlbWl0TG9hZChjYWxsZWUsIHJlZ1QxLCBy
ZWdUMCk7IC8vIHJlZ1QxLCByZWdUMCBob2xkcyBjYWxsZWUuCiAKICAgICBzdG9yZTMyKHJlZ1Qw
LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAppbmRleCAyMjE0OWM5YmQxYjhlYzExODEyY2JlMGI4NTQxYmVlOTNiMTBhYjM0Li5mY2U4YmI3
NDc2NjM3ODM3OThjOTk3NTZlOGRmN2Y4OWUwOWJiODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaApAQCAtMTA5LDcgKzEwOSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBK
SVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSgpCiAjZWxzZQogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0
cyA9IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KS5iaXRzKCk7CiAjZW5kaWYKLSAgICBz
dG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyks
IHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAg
IAogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGF0IHRoaXMgaXMgbmVlZGVkLiBKSVRP
cGVyYXRpb25zIHRlbmQgdG8gdXBkYXRlIHRoZSB0b3AgY2FsbCBmcmFtZSBvbgogICAgIC8vIHRo
ZSBDKysgc2lkZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4
IDdjZmEwOTVmMDBkMTdlMTQxMWJlOWNmYjgwZjgwODA2Zjc4OGY2YzEuLjhlMzkxYzU2OWU2ZTFj
NTcxNTA2NDA2MDRiYmQxMTQ0NWE3MzUxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcApAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYXJn
dW1lbnRfY291bnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEFyZ3VtZW50Q291bnQ+
KCk7CiAgICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwotICAgIGxvYWQzMihw
YXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCByZWdUMCk7CisgICAgbG9h
ZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
LCByZWdUMCk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CiAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0ID0gSlNWYWx1ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKHJlZ1QwLCBy
ZWdUMSk7CiAgICAgYm94SW50MzIocmVnVDAsIHJlc3VsdCk7CkBAIC0xNTU4LDcgKzE1NTgsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldFJlc3RMZW5ndGg+KCk7CiAgICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9m
ZnNldCgpOwogICAgIHVuc2lnbmVkIG51bVBhcmFtc1RvU2tpcCA9IGJ5dGVjb2RlLm1fbnVtUGFy
YW1ldGVyc1RvU2tpcDsKLSAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KSwgcmVnVDApOworICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgcmVnVDApOwogICAgIHN1YjMyKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAgemVyb0xlbmd0aCA9IGJyYW5jaDMyKExlc3NUaGFu
T3JFcXVhbCwgcmVnVDAsIEltbTMyKG51bVBhcmFtc1RvU2tpcCkpOwogICAgIHN1YjMyKEltbTMy
KG51bVBhcmFtc1RvU2tpcCksIHJlZ1QwKTsKQEAgLTE1OTQsNyArMTU5NCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9hcmd1bWVudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MocmVnVDEsIHJlZ1QwKTsKICNlbmRpZgog
Ci0gICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJl
Z1QyKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyksIHJlZ1QyKTsKICAgICBKdW1wIGFyZ3VtZW50T3V0T2ZCb3VuZHMgPSBi
cmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXgpKTsKICAg
ICBsb2FkVmFsdWUoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBpbmRl
eCksIHJlc3VsdFJlZ3MpOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAKaW5kZXggMzg4NzMwNTJkMTI4
NTJmYzZiYjkxNDJkNDU2MDdhZThlMTlhNjcwYS4uMDk1MjU5MWVlOWY3ZDVkNGZjMjE3MGM3MTY5
M2NlYjY2OTc3NGI0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1
cFZhcmFyZ3NGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZh
cmFyZ3NGcmFtZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHZvaWQgZW1pdFNldHVwVmFy
YXJnc0ZyYW1lRmFzdENhc2UoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG51bVUK
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSksIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKIAogICAgIC8vIEluaXRpYWxpemUgQXJndW1lbnRDb3VudC4KLSAgICBqaXQuc3RvcmUz
MihzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIyLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQpKTsKKyAgICBqaXQuc3RvcmUzMihzY3JhdGNoR1BSMSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXls
b2FkT2Zmc2V0KSk7CiAKICAgICAvLyBDb3B5IGFyZ3VtZW50cy4KICAgICBqaXQuc2lnbkV4dGVu
ZDMyVG9QdHIoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2
b2lkIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBq
aXQsIEdQUlJlZyBudW1Vc2VkU2xvdAogICAgICAgICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IFZp
cnR1YWxSZWdpc3RlcigwKTsKICAgICB9IGVsc2UgewogICAgICAgICBhcmd1bWVudENvdW50UmVj
b3ZlcnkgPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCi0gICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIERhdGFGb3JtYXRJ
bnQzMik7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpLCBEYXRhRm9ybWF0SW50MzIpOwogICAgICAgICBmaXJzdEFy
Z3VtZW50UmVnID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCkp
OwogICAgIH0KICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZSh2bSwgaml0LCBudW1V
c2VkU2xvdHNHUFIsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIGFyZ3Vt
ZW50Q291bnRSZWNvdmVyeSwgZmlyc3RBcmd1bWVudFJlZywgZmlyc3RWYXJBcmdPZmZzZXQsIHNs
b3dDYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6
ZWRUaHVua0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5r
SklULmgKaW5kZXggNGY1NjdkMDZhZWE1NDRhYjI2NzE1NWMxM2RmMzZhNzI0OWI2YzM0My4uYTEx
NjIyZWViZGJlNDc4NWVmMDZhZGMzOTM0NzFmNWMyMWY3MjQwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKQEAgLTQzLDcgKzQzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAg
ICAgICAgICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdpc3RlcnMoKTsKICAgICAgICAg
ICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50
cwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHBheWxv
YWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFRydXN0ZWRJbW0zMihleHBlY3Rl
ZEFyZ0NvdW50ICsgMSkpKTsKKyAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMy
KE5vdEVxdWFsLCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBTcGVjaWFsaXplZFRodW5rSklUKFZNJiB2bSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA1
MjQxZTVmN2NjMzMyYTY0ZTBkZTZkYjQ0YmRhZjllOGU4MGYyMmFhLi4xNDQwYzYwYmQ0YTI1ZDUx
YTcwY2Y5YmNjNTY2MzY1NDdjYmMxZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhcml0eUZpeHVwR2VuZXJhdG9yKFZNJiB2bSkKICAgICBq
aXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDMsIEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpKTsKICNl
bmRpZgogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJ
bnRlcmZhY2VKSVQ6OnJlZ1QzKTsKLSAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjphZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBKU0ludGVyZmFjZUpJVDo6YXJn
dW1lbnRHUFIyKTsKKyAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjphZGRyZXNzRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgSlNJbnRlcmZhY2VKSVQ6
OmFyZ3VtZW50R1BSMik7CiAgICAgaml0LmFkZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1t
MzIoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpLCBKU0ludGVyZmFjZUpJVDo6YXJn
dW1lbnRHUFIyKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGV4dHJhIHNsb3Rz
IHdlIGNhbiB1c2UKQEAgLTQ2Miw3ICs0NjIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGFyaXR5Rml4dXBHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5yZXQoKTsK
ICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIHNlY3Rpb24gYWJvdmUsIFVTRShKU1ZBTFVFMzJfNjQp
IHNlY3Rpb24gYmVsb3cuCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJl
Z2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwotICAgIGppdC5sb2FkMzIoSlNJbnRlcmZh
Y2VKSVQ6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEpTSW50ZXJm
YWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OmFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBKU0lu
dGVyZmFjZUpJVDo6YXJndW1lbnRHUFIyKTsKICAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6
OlRydXN0ZWRJbW0zMihDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyksIEpTSW50ZXJm
YWNlSklUOjphcmd1bWVudEdQUjIpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUg
ZXh0cmEgc2xvdHMgd2UgY2FuIHVzZQpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByYW5kb21UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAj
ZW5kaWYKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZFRo
aXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiB7
CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKICAgICAKQEAgLTExMzcsNyArMTEzNyw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25D
YWxsR2VuZXJhdG9yKFZNJiB2CiAgICAgCiAgICAgLy8gU2V0IHVwIG91ciBjYWxsIGZyYW1lLgog
ICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIEND
YWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKLSAgICBq
aXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJzOjp0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgIGppdC5zdG9yZTMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCiAgICAgdW5zaWduZWQgZXh0
cmFTdGFja05lZWRlZCA9IDA7CiAgICAgaWYgKHVuc2lnbmVkIHN0YWNrTWlzYWxpZ25tZW50ID0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICUgc3RhY2tBbGlnbm1lbnRCeXRlcygpKQpAQCAtMTE1
OCw3ICsxMTU4LDE1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91
bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2CiAgICAgLy8KICAgICAvLyBU
aGF0J3MgcmVhbGx5IGFsbCB0aGVyZSBpcyB0byB0aGlzLiBXZSBoYXZlIGFsbCB0aGUgcmVnaXN0
ZXJzIHdlIG5lZWQgdG8gZG8gaXQuCiAgICAgCi0gICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6
OnBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICBqaXQubG9hZENlbGwoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZCb3Vu
ZEFyZ3MoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6
cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIEdQ
UkluZm86OnJlZ1QxKTsKKyAgICBqaXQubW92ZShHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVn
VDMpOworICAgIGF1dG8gbm9BcmdzID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpa
ZXJvLCBHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDIsIEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xl
bmd0aCgpKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5hZGQzMihHUFJJbmZvOjpyZWdUMiwg
R1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigxKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIG5vQXJncy5saW5rKCZqaXQpOwogICAgIGppdC5h
ZGQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWU6OmhlYWRlclNpemVJblJl
Z2lzdGVycyAtIENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lzdGVycyksIEdQUkluZm86OnJl
Z1QxLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgaml0LmxzaGlmdDMyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKDMpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgaml0LmFkZDMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSAtIDEpLCBHUFJJbmZvOjpyZWdU
Mik7CkBAIC0xMTY3LDE3ICsxMTc1LDE2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2CiAgICAg
aWYgKGV4dHJhU3RhY2tOZWVkZWQpCiAgICAgICAgIGppdC5hZGQzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihleHRyYVN0YWNrTmVlZGVkKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIAotICAg
IC8vIEF0IHRoaXMgcG9pbnQgcmVnVDEgaGFzIHRoZSBhY3R1YWwgYXJndW1lbnQgY291bnQgYW5k
IHJlZ1QyIGhhcyB0aGUgYW1vdW50IG9mIHN0YWNrIHdlIHdpbGwgbmVlZC4KKyAgICAvLyBBdCB0
aGlzIHBvaW50IHJlZ1QxIGhhcyB0aGUgYWN0dWFsIGFyZ3VtZW50IGNvdW50LCByZWdUMiBoYXMg
dGhlIGFtb3VudCBvZiBzdGFjayB3ZSB3aWxsIG5lZWQsIGFuZCByZWdUMyBoYXMgdGhlIHBhc3Nl
ZCBhcmd1bWVudCBjb3VudC4KICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBlbm91Z2gg
c3RhY2sgc3BhY2UuCiAgICAgCiAgICAgaml0Lm5lZ1B0cihHUFJJbmZvOjpyZWdUMik7CiAgICAg
aml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpy
ZWdUMik7Ci0gICAgaml0LmxvYWRDZWxsKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IGhhdmVTdGFja1NwYWNlID0gaml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkJlbG93T3JFcXVh
bCwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Modm0uYWRkcmVzc09mU29mdFN0YWNrTGlt
aXQoKSksIEdQUkluZm86OnJlZ1QyKTsKIAogICAgIC8vIFRocm93IFN0YWNrIE92ZXJmbG93IGV4
Y2VwdGlvbgogICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1
ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6cmVnVDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspPihHUFJJbmZvOjpyZWdU
Myk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CkBAIC0xMTkwLDMxICsxMTk3LDQ0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2
CiAKICAgICAvLyBEbyBiYXNpYyBjYWxsZWUgZnJhbWUgc2V0dXAsIGluY2x1ZGluZyAndGhpcycu
CiAgICAgCi0gICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6Y2Fs
bGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAg
aml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVQYXls
b2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAg
IAotICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IEpTVmFsdWVSZWdzOjp3aXRoVHdvQXZhaWxh
YmxlUmVncyhHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDIpOwotICAgIGppdC5sb2FkVmFs
dWUoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QzLCBKU0JvdW5kRnVuY3Rpb246
Om9mZnNldE9mQm91bmRUaGlzKCkpLCB2YWx1ZVJlZ3MpOworICAgIEpTVmFsdWVSZWdzIHZhbHVl
UmVncyA9IEpTVmFsdWVSZWdzOjp3aXRoVHdvQXZhaWxhYmxlUmVncyhHUFJJbmZvOjpyZWdUNCwg
R1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwLCBKU0JvdW5kRnVuY3Rpb246Om9mZnNldE9mQm91bmRUaGlzKCkpLCB2
YWx1ZVJlZ3MpOwogICAgIGppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpj
YWxsZWVBcmd1bWVudFNsb3QoMCkpOwogCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OnJlZ1QzLCBKU0JvdW5kRnVuY3Rpb246Om9mZnNldE9mVGFyZ2V0RnVu
Y3Rpb24oKSksIEdQUkluZm86OnJlZ1QzKTsKLSAgICBqaXQuc3RvcmVDZWxsKEdQUkluZm86OnJl
Z1QzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90OjpjYWxsZWUp
KTsKLSAgICAKICAgICAvLyBPSywgbm93IHdlIGNhbiBzdGFydCBjb3B5aW5nLiBUaGlzIGlzIGEg
c2ltcGxlIG1hdHRlciBvZiBjb3B5aW5nIHBhcmFtZXRlcnMgZnJvbSB0aGUgY2FsbGVyJ3MKLSAg
ICAvLyBmcmFtZSB0byB0aGUgY2FsbGVlJ3MgZnJhbWUuIE5vdGUgdGhhdCB3ZSBrbm93IHRoYXQg
cmVnVDEgKHRoZSBhcmd1bWVudCBjb3VudCkgbXVzdCBiZSBhdAorICAgIC8vIGZyYW1lIHRvIHRo
ZSBjYWxsZWUncyBmcmFtZS4gTm90ZSB0aGF0IHdlIGtub3cgdGhhdCByZWdUMyAodGhlIGFyZ3Vt
ZW50IGNvdW50KSBtdXN0IGJlIGF0CiAgICAgLy8gbGVhc3QgMS4KKyAgICBqaXQuc3ViMzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuc3Vi
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpa
ZXJvLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQu
YnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDMpOwogICAgIAog
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgbG9vcCA9IGppdC5sYWJlbCgpOworICAgIGppdC5zdWIz
MihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgIGpp
dC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEpOwot
ICAgIGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KDEpKS5pbmRleGVkQnkoR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6
VGltZXNFaWdodCksIHZhbHVlUmVncyk7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSkpLmluZGV4ZWRCeShHUFJJ
bmZvOjpyZWdUMywgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0KSwgdmFsdWVSZWdzKTsKICAgICBq
aXQuc3RvcmVWYWx1ZSh2YWx1ZVJlZ3MsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1lbnRTbG90
KDEpLmluZGV4ZWRCeShHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0KSk7
Ci0gICAgaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJl
Z1QxKS5saW5rVG8obG9vcCwgJmppdCk7CisgICAgaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBl
cnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QzKS5saW5rVG8obG9vcCwgJmppdCk7CiAgICAgCiAg
ICAgZG9uZS5saW5rKCZqaXQpOworICAgIGF1dG8gbm9BcmdzMiA9IGppdC5icmFuY2hUZXN0MzIo
Q0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMSk7CisKKyAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTQm91bmRGdW5jdGlvbjo6b2Zm
c2V0T2ZCb3VuZEFyZ3MoKSksIEdQUkluZm86OnJlZ1QzKTsKKworICAgIENDYWxsSGVscGVyczo6
TGFiZWwgbG9vcEJvdW5kID0gaml0LmxhYmVsKCk7CisgICAgaml0LnN1YjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0LmxvYWRWYWx1ZShD
Q2FsbEhlbHBlcnM6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDEsIEND
YWxsSGVscGVyczo6VGltZXNFaWdodCwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mRGF0
YSgpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCB2YWx1ZVJlZ3MpOworICAgIGpp
dC5zdG9yZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3Qo
MSkuaW5kZXhlZEJ5KEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQpKTsK
KyAgICBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVn
VDEpLmxpbmtUbyhsb29wQm91bmQsICZqaXQpOworCisgICAgbm9BcmdzMi5saW5rKCZqaXQpOwor
CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBK
U0JvdW5kRnVuY3Rpb246Om9mZnNldE9mVGFyZ2V0RnVuY3Rpb24oKSksIEdQUkluZm86OnJlZ1Qy
KTsKKyAgICBqaXQuc3RvcmVDZWxsKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OmNhbGxl
ZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKICAgICAKICAgICBqaXQubG9hZFB0
cigKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QzLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLAogICAg
ICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQdHIoCiAgICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcygKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5oCmluZGV4IGY4NjFlZTg4NDliYzFkZWUxYzM1NmZhZGYwNDFkMzU0NjVhMTczYmIuLjdiMTA4
M2JmNzEyMDZkYWI2YzY2Nzc0ZmYzMWI1MDFhZDQ3MTZlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaApAQCAtNjgsNiArNjgsNiBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGltdWxUaHVua0dlbmVyYXRvcihWTSYpOwogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByYW5kb21UaHVua0dlbmVyYXRvcihW
TSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0cnVuY1RodW5rR2Vu
ZXJhdG9yKFZNJik7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91
bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJik7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMWNlMjdjNTIy
ZmM0ZjViYzYxYjA1YmZmMTAzNGJmYzRjOTA2YTNlZC4uMjA3ZjY2YWUzOGM4OTFmZDYyNGI4MWE4
MDM3OWIwMWJlZDBhMzc4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTUxLDYgKzUxLDcgQEAK
ICNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNp
bmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCmluZGV4IDJmZGUxMDdhOTg2Y2U1YzVmYjMzODJjNjFiOWEwODBiNjUyOWE3ZWEu
LmY1MGExN2I5YWY2YTdiOGE1OWZiZDYyNmMyNzI0MzFlYmFiOWFmOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xMTIsOCArMTEyLDggQEAgdm9pZCBE
YXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKENhbGxGcmFtZTo6cmV0
dXJuUENPZmZzZXQoKSA9PSBDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkgKyBNYWNoaW5l
UmVnaXN0ZXJTaXplKTsKICAgICBBU1NFUlQoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc2l6
ZW9mKFJlZ2lzdGVyKSA9PSBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkgKyBNYWNoaW5lUmVn
aXN0ZXJTaXplKTsKICAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHNp
emVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc2l6ZW9mKFJlZ2lz
dGVyKSArIFNsb3RTaXplKTsKLSAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHNp
emVvZihSZWdpc3RlcikgKyBTbG90U2l6ZSk7Ci0gICAgU1RBVElDX0FTU0VSVChDYWxsRnJhbWVT
bG90Ojp0aGlzQXJndW1lbnQgKiBzaXplb2YoUmVnaXN0ZXIpID09IENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpICsgU2xvdFNpemUpOworICAgIFNUQVRJQ19B
U1NFUlQoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzaXplb2Yo
UmVnaXN0ZXIpID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHNpemVvZihSZWdpc3RlcikgKyBT
bG90U2l6ZSk7CisgICAgU1RBVElDX0FTU0VSVChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQg
KiBzaXplb2YoUmVnaXN0ZXIpID09IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICogc2l6ZW9mKFJlZ2lzdGVyKSArIFNsb3RTaXplKTsKICAgICBTVEFUSUNfQVNTRVJU
KENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzID09IENhbGxGcmFtZVNsb3Q6OnRoaXNB
cmd1bWVudCk7CiAKICAgICBBU1NFUlQoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGlu
Z1RoaXMoMCkgPT0gQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBlMTcz
NGRjZjYxYjRjZmM1NTEyZmEyODU2MDFiY2FiMzBjODhmMmU0Li5jOGEwN2YwMGVmYzI0ODUwNDYw
OGVkYTY5NWIwODgyNWNmMmE2YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNzcsOCArMTc3LDggQEAgY29uc3Qg
Q2FsbGVyRnJhbWUgPSAwCiBjb25zdCBSZXR1cm5QQyA9IENhbGxlckZyYW1lICsgTWFjaGluZVJl
Z2lzdGVyU2l6ZQogY29uc3QgQ29kZUJsb2NrID0gUmV0dXJuUEMgKyBNYWNoaW5lUmVnaXN0ZXJT
aXplCiBjb25zdCBDYWxsZWUgPSBDb2RlQmxvY2sgKyBTbG90U2l6ZQotY29uc3QgQXJndW1lbnRD
b3VudCA9IENhbGxlZSArIFNsb3RTaXplCi1jb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSBBcmd1
bWVudENvdW50ICsgU2xvdFNpemUKK2NvbnN0IEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0g
Q2FsbGVlICsgU2xvdFNpemUKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICsgU2xvdFNpemUKIGNvbnN0IEZpcnN0QXJndW1lbnRPZmZzZXQgPSBU
aGlzQXJndW1lbnRPZmZzZXQgKyBTbG90U2l6ZQogY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9
IFRoaXNBcmd1bWVudE9mZnNldAogCkBAIC01MzAsNyArNTMwLDcgQEAgY29uc3QgRnVuY3Rpb25D
b2RlID0gY29uc3RleHByIEZ1bmN0aW9uQ29kZQogY29uc3QgTW9kdWxlQ29kZSA9IGNvbnN0ZXhw
ciBNb2R1bGVDb2RlCiAKICMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2Yg
dGhlIGFyZ3VtZW50IGNvdW50LgotY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXQKK2NvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyArIFRhZ09mZnNldAogCiAjIFN0cmluZyBmbGFncy4KIGNvbnN0IGlzUm9wZUluUG9pbnRl
ciA9IGNvbnN0ZXhwciBKU1N0cmluZzo6aXNSb3BlSW5Qb2ludGVyCkBAIC0xMDE1LDcgKzEwMTUs
NyBAQCBlbmQKIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwg
dGVtcDMsIGNhbGxQdHJUYWcpCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQog
Ci0gICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdGVtcDIKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwg
dGVtcDIKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGVtcDEKICAgICBsb2FkaSBDb2RlQmxv
Y2s6Om1fbnVtUGFyYW1ldGVyc1t0ZW1wMV0sIHRlbXAxCiAgICAgYmlsdGVxIHRlbXAxLCB0ZW1w
MiwgLm5vQXJpdHlGaXh1cApAQCAtMTAzMCw3ICsxMDMwLDcgQEAgbWFjcm8gcHJlcGFyZUZvclRh
aWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBtb3Zl
IGNmciwgdGVtcDEKICAgICBhZGRwIHRlbXAyLCB0ZW1wMQogCi0gICAgbG9hZGkgUGF5bG9hZE9m
ZnNldCArIEFyZ3VtZW50Q291bnRbc3BdLCB0ZW1wMgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQg
KyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tzcF0sIHRlbXAyCiAgICAgIyBXZSBhc3N1bWUg
PCAyXjI4IGFyZ3VtZW50cwogICAgIG11bGkgU2xvdFNpemUsIHRlbXAyCiAgICAgYWRkaSBTdGFj
a0FsaWdubWVudCAtIDEgKyBDYWxsRnJhbWVIZWFkZXJTaXplLCB0ZW1wMgpAQCAtMTA5MSw3ICsx
MDkxLDcgQEAgbWFjcm8gZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTmFtZSwgc2l6
ZSkKICAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3BOYW1lLCBzaXplKQogCiAgICAgcmVz
dG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRh
Z09mZnNldFtjZnJdLCBQQworICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
VGFnT2Zmc2V0W2Nmcl0sIFBDCiBlbmQKIAogbWFjcm8gYXJyYXlQcm9maWxlKG9mZnNldCwgY2Vs
bEFuZEluZGV4aW5nVHlwZSwgbWV0YWRhdGEsIHNjcmF0Y2gpCkBAIC0xNTg4LDYgKzE1ODgsNyBA
QCBtYWNybyBzbG93UGF0aE9wKG9wY29kZU5hbWUpCiBlbmQKIAogc2xvd1BhdGhPcChjcmVhdGVf
Y2xvbmVkX2FyZ3VtZW50cykKK3Nsb3dQYXRoT3AoY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkp
CiBzbG93UGF0aE9wKGNyZWF0ZV9kaXJlY3RfYXJndW1lbnRzKQogc2xvd1BhdGhPcChjcmVhdGVf
bGV4aWNhbF9lbnZpcm9ubWVudCkKIHNsb3dQYXRoT3AoY3JlYXRlX3Jlc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCmluZGV4IDAzMDgxMWZhYzEyODhjNDY0ZmUyOGEzYmNhMDFiNTIyZDRhY2Y0MDYuLmQwNmE0
YTJhZGQ1MGU4NzljZWVjY2RiOTY4ZmVkMWE0MDU1ZTg2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBA
IC05Myw3ICs5Myw3IEBAIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0ZWNvZGUg
aXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KIG1hY3JvIGRpc3BhdGNo
QWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCi0gICAgbG9hZGkgQXJndW1l
bnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgZ2V0KHNpemUsIG9wY29kZVN0cnVj
dCwgbV9kc3QsIHQzKQogICAgIHN0b3JlaSByMSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAg
c3RvcmVpIHIwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCkBAIC00MzMsNyArNDMzLDcgQEAg
ZW5kCiAKICMgQ2FsbCBhIHNsb3dQYXRoIGZvciBjYWxsIG9wY29kZXMuCiBtYWNybyBjYWxsQ2Fs
bFNsb3dQYXRoKHNsb3dQYXRoLCBhY3Rpb24pCi0gICAgc3RvcmVwIFBDLCBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9yZXAgUEMsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgVGFnT2Zmc2V0W2Nmcl0KICAgICBtb3ZlIGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQog
ICAgIGNDYWxsMihzbG93UGF0aCkKQEAgLTQ0MSwxOSArNDQxLDE5IEBAIG1hY3JvIGNhbGxDYWxs
U2xvd1BhdGgoc2xvd1BhdGgsIGFjdGlvbikKIGVuZAogCiBtYWNybyBjYWxsVHJhcEhhbmRsZXIo
dGhyb3dIYW5kbGVyKQotICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNl
dFtjZnJdCiAgICAgbW92ZSBjZnIsIGEwCiAgICAgbW92ZSBQQywgYTEKICAgICBjQ2FsbDIoX2xs
aW50X3Nsb3dfcGF0aF9oYW5kbGVfdHJhcHMpCiAgICAgYnRwbnogcjAsIHRocm93SGFuZGxlcgot
ICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBsb2FkaSBB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQQwogZW5kCiAKIG1h
Y3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKICAgICBjaGVja1N3aXRjaFRvSklUKAogICAg
ICAgICAxLAogICAgICAgICBtYWNybyAoKQotICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQogICAgICAgICAgICAgbW92ZSBjZnIs
IGEwCiAgICAgICAgICAgICBtb3ZlIFBDLCBhMQogICAgICAgICAgICAgY0NhbGwyKF9sbGludF9s
b29wX29zcikKQEAgLTQ2MSw3ICs0NjEsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9v
cCgpCiAgICAgICAgICAgICBtb3ZlIHIxLCBzcAogICAgICAgICAgICAgam1wIHIwCiAgICAgICAg
IC5yZWNvdmVyOgotICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdLCBQQworICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBU
YWdPZmZzZXRbY2ZyXSwgUEMKICAgICAgICAgZW5kKQogZW5kCiAKQEAgLTYzNyw3ICs2MzcsNyBA
QCBlbmQKIAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0
IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25l
TGFiZWwsIHNsb3dQYXRoKQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50
W2Nmcl0sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzW2Nmcl0sIHQwCiAgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJz
W3QxXSwgZG9uZUxhYmVsCiAgICAgbW92ZSBjZnIsIGEwCiAgICAgbW92ZSBQQywgYTEKQEAgLTY1
NSw3ICs2NTUsNyBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0
aCkKIC5ub0Vycm9yOgogICAgIG1vdmUgcjEsIHQxICMgcjEgY29udGFpbnMgc2xvdHNUb0FkZC4K
ICAgICBidGl6IHQxLCAuY29udGludWUKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1l
bnRDb3VudFtjZnJdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpc1tjZnJdLCB0MgogICAgIGFkZGkgQ2FsbEZyYW1lSGVhZGVyU2xvdHMsIHQy
CiAKICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgc29tZSB1bmFsaWduZWQgc2xvdHMgd2UgY2Fu
IHVzZQpAQCAtNzMzLDcgKzczMyw3IEBAIF9sbGludF9vcF9lbnRlcjoKIAogbGxpbnRPcFdpdGhQ
cm9maWxlKG9wX2dldF9hcmd1bWVudCwgT3BHZXRBcmd1bWVudCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQobV9pbmRleCwgdDIpCi0gICAgbG9hZGkgUGF5bG9h
ZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBiaWx0ZXEgdDAsIHQy
LCAub3BHZXRBcmd1bWVudE91dE9mQm91bmRzCiAgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0
ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAogICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNl
dCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQzCkBAIC03NDUsNyArNzQ1LDcgQEAgZW5k
KQogCiAKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2FyZ3VtZW50X2NvdW50LCBPcEFyZ3VtZW50Q291
bnQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgbG9hZGkgUGF5bG9h
ZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBzdWJpIDEsIHQwCiAg
ICAgcmV0dXJuKEludDMyVGFnLCB0MCkKIGVuZCkKQEAgLTE5MjUsOCArMTkyNSw4IEBAIG1hY3Jv
IGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJl
Q2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUg
bmV3IHZhbHVlIG9mIGNmcgogICAgICAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZz
ZXRbdDNdCiAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIHQyKQotICAg
ICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQotICAgICAgICBz
dG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgICAgICBzdG9y
ZWkgUEMsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAg
ICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRb
dDNdCiAgICAgICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCiAgICAg
ICAgIG1vdmUgdDMsIHNwCiAgICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQs
IEpTRW50cnlQdHJUYWcpCkBAIC0yNTM0LDcgKzI1MzQsNyBAQCBlbmQpCiAKIAogbGxpbnRPcFdp
dGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3Vt
ZW50Q291bnRbY2ZyXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBzdWJpIDEsIHQwCiAgICAgZ2V0dShzaXplLCBP
cEdldFJlc3RMZW5ndGgsIG1fbnVtUGFyYW1ldGVyc1RvU2tpcCwgdDEpCiAgICAgYmlsdGVxIHQw
LCB0MSwgLnN0b3JlWmVybwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAzZGQyZWI0OGNiYmE2ZWY1Y2Q5ODg2Mzlj
NzkxMWUyMmE3MTMzMTQ4Li41MTljNjY5ODlkZGU0NTIzZDc3ZTYwMjQ1N2M5MDU2NDFiNjlmNGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQpAQCAtOTIsNyArOTIsNyBAQCBlbmQKIAogIyBBZnRlciBjYWxsaW5nLCBj
YWxsaW5nIGJ5dGVjb2RlIGlzIGNsYWltaW5nIGlucHV0IHJlZ2lzdGVycyBhcmUgbm90IHVzZWQu
CiBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQot
ICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBsb2FkaSBB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNS
YXdQb2ludGVyW1BCXSwgUEIKICAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2RzdCwgdDEp
CkBAIC0yMTcsNyArMjE3LDcgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgIG1vdmUg
KGNvbnN0ZXhwciBQcm90b0NhbGxGcmFtZTo6bnVtYmVyT2ZSZWdpc3RlcnMpLCB0MwogCiAuY29w
eUhlYWRlckxvb3A6Ci0gICAgIyBDb3B5IHRoZSBDb2RlQmxvY2svQ2FsbGVlL0FyZ3VtZW50Q291
bnQvfHRoaXN8IGZyb20gcHJvdG9DYWxsRnJhbWUgaW50byB0aGUgY2FsbGVlIGZyYW1lLgorICAg
ICMgQ29weSB0aGUgQ29kZUJsb2NrL0NhbGxlZS9Bcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcy98
dGhpc3wgZnJvbSBwcm90b0NhbGxGcmFtZSBpbnRvIHRoZSBjYWxsZWUgZnJhbWUuCiAgICAgc3Vi
aSAxLCB0MwogICAgIGxvYWRxIFtwcm90b0NhbGxGcmFtZSwgdDMsIDhdLCBleHRyYVRlbXBSZWcK
ICAgICBzdG9yZXEgZXh0cmFUZW1wUmVnLCBDb2RlQmxvY2tbc3AsIHQzLCA4XQpAQCAtMzkwLDcg
KzM5MCw3IEBAIGVuZAogCiAjIENhbGwgYSBzbG93IHBhdGggZm9yIGNhbGwgb3Bjb2Rlcy4KIG1h
Y3JvIGNhbGxDYWxsU2xvd1BhdGgoc2xvd1BhdGgsIGFjdGlvbikKLSAgICBzdG9yZWkgUEMsIEFy
Z3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxs
KCkKICAgICBtb3ZlIGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQpAQCAtMzk5LDIwICszOTksMjAg
QEAgbWFjcm8gY2FsbENhbGxTbG93UGF0aChzbG93UGF0aCwgYWN0aW9uKQogZW5kCiAKIG1hY3Jv
IGNhbGxUcmFwSGFuZGxlcih0aHJvd0hhbmRsZXIpCi0gICAgc3RvcmVpIFBDLCBBcmd1bWVudENv
dW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0KICAgICBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCiAgICAg
bW92ZSBjZnIsIGEwCiAgICAgbW92ZSBQQywgYTEKICAgICBjQ2FsbDIoX2xsaW50X3Nsb3dfcGF0
aF9oYW5kbGVfdHJhcHMpCiAgICAgYnRwbnogcjAsIHRocm93SGFuZGxlcgotICAgIGxvYWRpIEFy
Z3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBsb2FkaSBBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQQwogZW5kCiAKIG1hY3JvIGNoZWNrU3dp
dGNoVG9KSVRGb3JMb29wKCkKICAgICBjaGVja1N3aXRjaFRvSklUKAogICAgICAgICAxLAogICAg
ICAgICBtYWNybygpCi0gICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyArIFRhZ09mZnNldFtjZnJdCiAgICAgICAgICAgICBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgp
CiAgICAgICAgICAgICBtb3ZlIGNmciwgYTAKICAgICAgICAgICAgIG1vdmUgUEMsIGExCkBAIC00
MjEsNyArNDIxLDcgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgICAgICAg
ICAgbW92ZSByMSwgc3AKICAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZwogICAgICAg
ICAucmVjb3ZlcjoKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRb
Y2ZyXSwgUEMKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
VGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgICAgIGVuZCkKIGVuZAogCkBAIC02MTksNyArNjE5LDcg
QEAgZW5kCiAKICMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hh
dCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCiBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9u
ZUxhYmVsLCBzbG93UGF0aCkKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3Vu
dFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpc1tjZnJdLCB0MAogICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVy
c1t0MV0sIGRvbmVMYWJlbAogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKICAgICBtb3ZlIGNm
ciwgYTAKQEAgLTYzOCw3ICs2MzgsNyBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxh
YmVsLCBzbG93UGF0aCkKIC5ub0Vycm9yOgogICAgIG1vdmUgcjEsIHQxICMgcjEgY29udGFpbnMg
c2xvdHNUb0FkZC4KICAgICBidGl6IHQxLCAuY29udGludWUKLSAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MgogICAgIGFkZGkgQ2FsbEZyYW1lSGVh
ZGVyU2xvdHMsIHQyCiAKICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgc29tZSB1bmFsaWduZWQg
c2xvdHMgd2UgY2FuIHVzZQpAQCAtNzIzLDcgKzcyMyw3IEBAIF9sbGludF9vcF9lbnRlcjoKIAog
bGxpbnRPcFdpdGhQcm9maWxlKG9wX2dldF9hcmd1bWVudCwgT3BHZXRBcmd1bWVudCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQobV9pbmRleCwgdDIpCi0gICAg
bG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBi
aWx0ZXEgdDAsIHQyLCAub3BHZXRBcmd1bWVudE91dE9mQm91bmRzCiAgICAgbG9hZHEgVGhpc0Fy
Z3VtZW50T2Zmc2V0W2NmciwgdDIsIDhdLCB0MAogICAgIHJldHVybih0MCkKQEAgLTczNCw3ICs3
MzQsNyBAQCBlbmQpCiAKIAogbGxpbnRPcFdpdGhSZXR1cm4ob3BfYXJndW1lbnRfY291bnQsIE9w
QXJndW1lbnRDb3VudCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1
YmkgMSwgdDAKICAgICBvcnEgVGFnTnVtYmVyLCB0MAogICAgIHJldHVybih0MCkKQEAgLTIwNTcs
OCArMjA1Nyw4IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bj
b2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIGFkZHAgY2ZyLCB0Mwog
ICAgICAgICBzdG9yZXEgdDIsIENhbGxlZVt0M10KICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVT
dHJ1Y3QsIG1fYXJnYywgdDIpCi0gICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRh
Z09mZnNldFtjZnJdCi0gICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRP
ZmZzZXRbdDNdCisgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KICAgICAgICAgbW92ZSB0Mywgc3AKICAgICAgICAg
cHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21h
Y2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKICAgICAgICAg
Y2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0
Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCkBAIC0yNjI0LDcgKzI2MjQsNyBAQCBlbmQpCiAK
IAogbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCi0gICAgbG9hZGkgUGF5bG9hZE9m
ZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsg
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBzdWJpIDEsIHQwCiAgICAg
Z2V0dShzaXplLCBPcEdldFJlc3RMZW5ndGgsIG1fbnVtUGFyYW1ldGVyc1RvU2tpcCwgdDEpCiAg
ICAgYmlsdGVxIHQwLCB0MSwgLnN0b3JlWmVybwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9XZWJBc3NlbWJseS5hc20KaW5kZXggMDk4ZmFiOGU1NzE5OTFhYWY3MjNkZDA3OGVmMmQ2ZDVh
MzQ0YjEwOC4uNjU3NjhmYTZiZmIwZmJjMTE1YThjNzhhNzliYTk1MzM3NjU0MjUzYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCkBAIC0xNTAsNyArMTUw
LDcgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgIGNoZWNrU3dpdGNoVG9K
SVQoCiAgICAgICAgIDEsCiAgICAgICAgIG1hY3JvKCkKLSAgICAgICAgICAgIHN0b3JlaSBQQywg
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0KICAgICAgICAgICAgIHBy
ZXBhcmVTdGF0ZUZvckNDYWxsKCkKICAgICAgICAgICAgIG1vdmUgY2ZyLCBhMAogICAgICAgICAg
ICAgbW92ZSBQQywgYTEKQEAgLTE2Myw3ICsxNjMsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklU
Rm9yTG9vcCgpCiAgICAgICAgICAgICBtb3ZlIHIwLCBhMAogICAgICAgICAgICAgam1wIHIxLCBX
YXNtRW50cnlQdHJUYWcKICAgICAgICAgLnJlY292ZXI6Ci0gICAgICAgICAgICBsb2FkaSBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgICAgICBsb2FkaSBBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgICAgICBlbmQpCiBl
bmQKIApAQCAtMjI5LDcgKzIyOSw3IEBAIG1hY3JvIHJlbG9hZE1lbW9yeVJlZ2lzdGVyc0Zyb21J
bnN0YW5jZShpbnN0YW5jZSwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogZW5kCiAKIG1hY3JvIHRocm93
RXhjZXB0aW9uKGV4Y2VwdGlvbikKLSAgICBzdG9yZWkgY29uc3RleHByIFdhc206OkV4Y2VwdGlv
blR5cGU6OiVleGNlcHRpb24lLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdCisg
ICAgc3RvcmVpIGNvbnN0ZXhwciBXYXNtOjpFeGNlcHRpb25UeXBlOjolZXhjZXB0aW9uJSwgQXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0KICAgICBqbXAgX3dh
c21fdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQogZW5kCiAKQEAgLTI0Myw3ICsyNDMs
NyBAQCBtYWNybyBjYWxsV2FzbVNsb3dQYXRoKHNsb3dQYXRoKQogZW5kCiAKIG1hY3JvIGNhbGxX
YXNtQ2FsbFNsb3dQYXRoKHNsb3dQYXRoLCBhY3Rpb24pCi0gICAgc3RvcmVpIFBDLCBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0KICAgICBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCiAg
ICAgbW92ZSBjZnIsIGEwCiAgICAgbW92ZSBQQywgYTEKQEAgLTQ5NCw4ICs0OTQsOCBAQCBvcCh3
YXNtX3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUsIG1hY3JvICgpCiAgICAgbW92ZSBj
ZnIsIGEwCiAgICAgYWRkcCBQQiwgUEMsIGExCiAgICAgbW92ZSB3YXNtSW5zdGFuY2UsIGEyCi0g
ICAgIyBTbG93IHBhdGhzIGFuZCB0aGUgdGhyb3dFeGNlcHRpb24gbWFjcm8gc3RvcmUgdGhlIGV4
Y2VwdGlvbiBjb2RlIGluIHRoZSBBcmd1bWVudENvdW50IHNsb3QKLSAgICBsb2FkaSBBcmd1bWVu
dENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMworICAgICMgU2xvdyBwYXRocyBhbmQgdGhl
IHRocm93RXhjZXB0aW9uIG1hY3JvIHN0b3JlIHRoZSBleGNlcHRpb24gY29kZSBpbiB0aGUgQXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgc2xvdAorICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMwogICAgIGNDYWxsNChfc2xvd19wYXRo
X3dhc21fdGhyb3dfZXhjZXB0aW9uKQogCiAgICAgam1wIHIwLCBFeGNlcHRpb25IYW5kbGVyUHRy
VGFnCkBAIC02NzksNyArNjc5LDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIHNs
b3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgbWFjcm8gKGNhbGxlZSwgdGFyZ2V0
V2FzbUluc3RhbmNlKQogICAgICAgICAgICAgbW92ZSBjYWxsZWUsIHdzMAogCi0gICAgICAgICAg
ICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgICAgICBs
b2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQQwogCiAg
ICAgICAgICAgICAjIHRoZSBjYWxsIG1pZ2h0IHRocm93IChlLmcuIGluZGlyZWN0IGNhbGwgd2l0
aCBiYWQgc2lnbmF0dXJlKQogICAgICAgICAgICAgYnRweiB0YXJnZXRXYXNtSW5zdGFuY2UsIC50
aHJvdwpAQCAtNzE4LDcgKzcxOCw3IEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBz
bG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAgICAgICAjIG5lZWQgdG8gcHJlc2Vy
dmUgaXRzIGN1cnJlbnQgdmFsdWUgc2luY2UgaXQgbWlnaHQgY29udGFpbiBhIHJldHVybiB2YWx1
ZQogICAgICAgICAgICAgbW92ZSBQQywgbWVtb3J5QmFzZQogICAgICAgICAgICAgbW92ZSBQQiwg
d2FzbUluc3RhbmNlCi0gICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0sIFBDCisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAr
IFRhZ09mZnNldFtjZnJdLCBQQwogICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBC
CiAgICAgICAgICAgICBsb2FkcCBXYXNtOjpGdW5jdGlvbkNvZGVCbG9jazo6bV9pbnN0cnVjdGlv
bnNSYXdQb2ludGVyW1BCXSwgUEIKIApAQCAtNzQwLDcgKzc0MCw3IEBAIG1hY3JvIHNsb3dQYXRo
Rm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAgICAg
ICAgICAgc3RvcmVkIGZwciwgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIG9mZnNldFt3czEsIHdzMCwg
OF0KICAgICAgICAgICAgIGVuZCkKIAotICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldFtjZnJdLCBQQworICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKIAogICAgICAgICAgICAgc3RvcmVXYXNtSW5z
dGFuY2Uod2FzbUluc3RhbmNlKQogICAgICAgICAgICAgcmVsb2FkTWVtb3J5UmVnaXN0ZXJzRnJv
bUluc3RhbmNlKHdhc21JbnN0YW5jZSwgd3MwLCB3czEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBmMzU4ZDQ4YTUwZGU3M2Vh
YjM4NTY5OWIzYTZmNTExM2JiYmU5YmJhLi44NzcxNmQyNzdhMGViYzJkYjRlMTU5Y2Y2OWY5YjJl
MmI1Y2E5Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKQEAgLTIyMiw2ICsyMjIsMTkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKQogICAgIFJFVFVSTihDbG9uZWRBcmd1bWVudHM6
OmNyZWF0ZVdpdGhNYWNoaW5lRnJhbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIEFyZ3VtZW50
c01vZGU6OkNsb25lZCkpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2Fy
Z3VtZW50c19idXR0ZXJmbHkpCit7CisgICAgQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5PigpOworICAgIGludDMyX3QgYXJndW1l
bnRDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOworICAgIEpTSW1tdXRhYmxlQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2
bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBl
KENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVz
XS5nZXQoKSwgYXJndW1lbnRDb3VudCk7CisgICAgaWYgKCFidXR0ZXJmbHkpCisgICAgICAgIFRI
Uk9XKGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgZm9yIChpbnQz
Ml90IGluZGV4ID0gMDsgaW5kZXggPCBhcmd1bWVudENvdW50OyArK2luZGV4KQorICAgICAgICBi
dXR0ZXJmbHktPnNldEluZGV4KHZtLCBpbmRleCwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dChpbmRleCkpOworICAgIFJFVFVSTihidXR0ZXJmbHkpOworfQorCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY3JlYXRlX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggNDZiZmUxNTI0Y2U1Yjc1
MzFlYmIzMDczOTFhZjc3MGNlNTA3ZDhiMS4uNzFlNzg1ZTkwYzZjZDBmYzI2NDlmZmE4YjdiYzhj
NjQ5MmRhOTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKQEAgLTMyMCw2ICszMjAsNyBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKTsKK1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2VudGVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2NhbGxl
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
QmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaApp
bmRleCA4MDYyZjFlMDYxYWYxODdkOTRiZDNmYjg0MDFhYzc2OWQwMGU5NmIwLi45NTgxMDVkMzI2
NmRkZmY4NWJlNWQ3NmQ4N2NkZTVjYjMzMTMxNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgKQEAgLTU3LDcgKzU3LDcgQEAgaW5saW5lIGJv
b2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIAogY2xhc3MgRXhlY3V0YWJs
ZUJhc2UgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBmcmllbmQgY2xhc3MgSklUOwotICAgIGZyaWVu
ZCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kVGhpc05vQXJnc0Z1
bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSopOworICAgIGZyaWVuZCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNKik7CiAKIHBy
b3RlY3RlZDoKICAgICBFeGVjdXRhYmxlQmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRh
LmNwcAppbmRleCAwMjFiOGNjNTczMTI4ZTk0NDIwMThkMGRjMDgzNmNjNTQzNmQ5ZjI2Li40Zjc0
OWE4NTExY2UwMTk0YjExM2M3ZWE3NjkwMTliMDJjZGRkZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcApAQCAtNjksNyArNjks
MTAgQEAgRnVuY3Rpb25SYXJlRGF0YTo6RnVuY3Rpb25SYXJlRGF0YShWTSYgdm0pCiAgICAgLy8g
dGhlIGZpcnN0IGFsbG9jYXRpb24gZG9uJ3QgZGlzYWJsZSBvcHRpbWl6YXRpb25zLiBUaGlzIGlz
bid0IHN1cGVyIGltcG9ydGFudCwgc2luY2UgdGhlCiAgICAgLy8gZnVuY3Rpb24gaXMgdW5saWtl
bHkgdG8gYWxsb2NhdGUgYSByYXJlIGRhdGEgdW50aWwgdGhlIGZpcnN0IGFsbG9jYXRpb24gYW55
d2F5LgogICAgICwgbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoQ2xlYXJXYXRjaHBv
aW50KQorICAgICwgbV9oYXNSZWlmaWVkTGVuZ3RoKGZhbHNlKQogICAgICwgbV9oYXNSZWlmaWVk
TmFtZShmYWxzZSkKKyAgICAsIG1faGFzTW9kaWZpZWRMZW5ndGgoZmFsc2UpCisgICAgLCBtX2hh
c01vZGlmaWVkTmFtZShmYWxzZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCmluZGV4IDFmMzJhM2NiYmM0NmFlNTAwYTJjZGRl
YzRmYTI3ODU1MTUwMjEwNjUuLmJkYTVkN2E2OWJiZjczYzdkZWUzOGZlZTNjMjkzY2MyODZiYWY1
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmgKQEAgLTczLDggKzczLDYgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YSBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mSW50ZXJu
YWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1
bmN0aW9uUmFyZURhdGEsIG1faW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlKTsgfQog
ICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mQm91bmRGdW5jdGlvblN0cnVjdHVy
ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvblJhcmVEYXRhLCBtX2JvdW5kRnVu
Y3Rpb25TdHJ1Y3R1cmUpOyB9CiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZB
bGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihGdW5jdGlvblJhcmVEYXRhLCBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBv
aW50KTsgfQotICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mSGFzUmVpZmllZExl
bmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvblJhcmVEYXRhLCBtX2hhc1Jl
aWZpZWRMZW5ndGgpOyB9Ci0gICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZIYXNS
ZWlmaWVkTmFtZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvblJhcmVEYXRhLCBt
X2hhc1JlaWZpZWROYW1lKTsgfQogCiAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJv
dG90eXBlKiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCiAgICAgewpAQCAtMTIxLDYgKzExOSwx
NyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
Ym9vbCBoYXNSZWlmaWVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVpZmllZE5hbWU7IH0K
ICAgICB2b2lkIHNldEhhc1JlaWZpZWROYW1lKCkgeyBtX2hhc1JlaWZpZWROYW1lID0gdHJ1ZTsg
fQogCisgICAgYm9vbCBoYXNNb2RpZmllZExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTW9k
aWZpZWRMZW5ndGg7IH0KKyAgICB2b2lkIHNldEhhc01vZGlmaWVkTGVuZ3RoKCkKKyAgICB7Cisg
ICAgICAgIG1faGFzTW9kaWZpZWRMZW5ndGggPSB0cnVlOworICAgIH0KKyAgICBib29sIGhhc01v
ZGlmaWVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTW9kaWZpZWROYW1lOyB9CisgICAgdm9p
ZCBzZXRIYXNNb2RpZmllZE5hbWUoKQorICAgIHsKKyAgICAgICAgbV9oYXNNb2RpZmllZE5hbWUg
PSB0cnVlOworICAgIH0KKwogICAgIGJvb2wgaGFzQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dh
dGNocG9pbnQoKSBjb25zdCB7IHJldHVybiAhIW1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dh
dGNocG9pbnQ7IH0KICAgICBXYXRjaHBvaW50KiBjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUNsZWFy
aW5nV2F0Y2hwb2ludCgpOwogICAgIGNsYXNzIEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRj
aHBvaW50OwpAQCAtMTUwLDggKzE1OSwxMCBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhIGZpbmFs
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
IG1faW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+IG1fYWxsb2NhdGlvblByb2ZpbGVD
bGVhcmluZ1dhdGNocG9pbnQ7Ci0gICAgYm9vbCBtX2hhc1JlaWZpZWRMZW5ndGggeyBmYWxzZSB9
OwotICAgIGJvb2wgbV9oYXNSZWlmaWVkTmFtZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1Jl
aWZpZWRMZW5ndGggOiAxOworICAgIGJvb2wgbV9oYXNSZWlmaWVkTmFtZSA6IDE7CisgICAgYm9v
bCBtX2hhc01vZGlmaWVkTGVuZ3RoIDogMTsKKyAgICBib29sIG1faGFzTW9kaWZpZWROYW1lIDog
MTsKIH07CiAKIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGE6OkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJp
bmdXYXRjaHBvaW50IGZpbmFsIDogcHVibGljIFdhdGNocG9pbnQgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKaW5k
ZXggMjM3NzBlY2EzYmVlMDBjMzhjNTQ1MjVhYWZkYzE2ZmM4MWUwZjE5NC4uMzEzZjFhMDdhNTRk
M2YyNjhiYTIyNTFlMjEyNTdjYmJjYzRlODQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0xMjcsNyAr
MTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5
cGVHZXR0ZXJDb21wYXJlKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJn
ZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMiwgImNvbXBh
cmUiX3MsIEludGxDb2xsYXRvckZ1bmNDb21wYXJlLCBOb0ludHJpbnNpYyk7CiAKICAgICAgICAg
Ly8gYy4gTGV0IGJjIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgot
ICAgICAgICBib3VuZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCB0YXJnZXRPYmplY3QsIGNvbGxhdG9yLCBudWxscHRyLCAyLCBTdHJpbmcoKSk7Cisg
ICAgICAgIGJvdW5kQ29tcGFyZSA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3IsIG51bGxwdHIsIDIsIGpzRW1wdHlTdHJpbmco
dm0pKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgICAgIC8vIGQuIFNldCBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIHRvIGJjLgog
ICAgICAgICBjb2xsYXRvci0+c2V0Qm91bmRDb21wYXJlKHZtLCBib3VuZENvbXBhcmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggZDA0M2VmN2ZmZDYwMDViZDE4NzUzYTRkMjJhMjE3
YjdjODBjY2Q1NC4uOWNkOTJmZGIyMzVlMzFmYTI5NjNmMTg5ZmUwN2VmZGUwN2E1OWIxNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQo
SlNHbG9iYWxPYmoKICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9w
ZXJ0eSBpcyAxLiAoTm90ZTogRuKAmXMgbGVuZ3RoIHByb3BlcnR5IHdhcyAwIGluIEVDTUEtNDAy
IDEuMCkKICAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJmb3JtYXQiX3MsIEludGxEYXRlVGltZUZvcm1hdEZ1
bmNGb3JtYXREYXRlVGltZSwgTm9JbnRyaW5zaWMpOwogICAgICAgICAvLyBjLiBMZXQgYmYgYmUg
Qm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAgICAgIGJvdW5kRm9y
bWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2Jq
ZWN0LCBkdGYsIG51bGxwdHIsIDEsIFN0cmluZygpKTsKKyAgICAgICAgYm91bmRGb3JtYXQgPSBK
U0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0
ZiwgbnVsbHB0ciwgMSwganNFbXB0eVN0cmluZyh2bSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IGR0Zi5b
W2JvdW5kRm9ybWF0XV0gdG8gYmYuCiAgICAgICAgIGR0Zi0+c2V0Qm91bmRGb3JtYXQodm0sIGJv
dW5kRm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggOTFiNDgzZjI5YjNlZjU5NjBh
ZDM1MmFlZmE2ZmUzNDkwMjMzODA3ZC4uMjBmYTk0OTA0NjkyYmJhM2UwYjYwYWYzY2NmZThmOTY1
YjgxMzA1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJG
b3JtYXQoSlNHbG9iYWxPYmplYwogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVu
Z3RoIHByb3BlcnR5IGlzIDEuCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAiZm9ybWF0Il9zLCBJbnRsTnVt
YmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlciwgTm9JbnRyaW5zaWMpOwogICAgICAgICAvLyBjLiBM
ZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAgICAg
IGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
dGFyZ2V0T2JqZWN0LCBuZiwgbnVsbHB0ciwgMSwgU3RyaW5nKCkpOworICAgICAgICBib3VuZEZv
cm1hdCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9i
amVjdCwgbmYsIG51bGxwdHIsIDEsIGpzRW1wdHlTdHJpbmcodm0pKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIC8vIGQuIFNl
dCBuZi5bW2JvdW5kRm9ybWF0XV0gdG8gYmYuCiAgICAgICAgIG5mLT5zZXRCb3VuZEZvcm1hdCh2
bSwgYm91bmRGb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50cmluc2ljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5jcHAKaW5kZXggYTQxYjU3YjJjYmNiYjFjMmQ1ZDVmNmNhOTliNmFkNjBiNGVjMmE5YS4uN2Y4
NjdmMTM5NDk1YTkzMGY2ZmViYmE4MmI4ZTZlN2E0MzcwN2YxZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCkBAIC0xODcsOCArMTg3LDggQEAgY29uc3Qg
Y2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4g
IlRydW5jSW50cmluc2ljIjsKICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXdJbnRyaW5zaWM6CiAg
ICAgICAgIHJldHVybiAiSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYyI7Ci0gICAgY2FzZSBCb3Vu
ZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJbnRyaW5zaWM6Ci0gICAgICAgIHJldHVybiAiQm91bmRU
aGlzTm9BcmdzRnVuY3Rpb25DYWxsSW50cmluc2ljIjsKKyAgICBjYXNlIEJvdW5kRnVuY3Rpb25D
YWxsSW50cmluc2ljOgorICAgICAgICByZXR1cm4gIkJvdW5kRnVuY3Rpb25DYWxsSW50cmluc2lj
IjsKICAgICBjYXNlIEpTTWFwR2V0SW50cmluc2ljOgogICAgICAgICByZXR1cm4gIkpTTWFwR2V0
SW50cmluc2ljIjsKICAgICBjYXNlIEpTTWFwSGFzSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCBmZTJlOTEwZjkxZWRlYWVkMjYwOWY0MjQ3
NGUyODA0YmI2ZmZjY2U4Li5iYjJmZWUyZTI4OTE0MTM1YTkyMzkxYzRlMDk1NGZhYmE4OGE5ZWJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtMTA2LDcg
KzEwNiw3IEBAIGVudW0gSW50cmluc2ljIDogdWludDhfdCB7CiAgICAgRlJvdW5kSW50cmluc2lj
LAogICAgIFRydW5jSW50cmluc2ljLAogICAgIElzVHlwZWRBcnJheVZpZXdJbnRyaW5zaWMsCi0g
ICAgQm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsSW50cmluc2ljLAorICAgIEJvdW5kRnVuY3Rp
b25DYWxsSW50cmluc2ljLAogICAgIEpTTWFwR2V0SW50cmluc2ljLAogICAgIEpTTWFwSGFzSW50
cmluc2ljLAogICAgIEpTTWFwU2V0SW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5kZXggNzViZTVmZWE2YWMwMGRlYjg4
YTg1MzlkNjJmMjc1MTIwNTI5MzUxOS4uNDE4NjU5YWEyZTRkZWEzY2YzYzk0NDZlMDJiNTNiYmM5
NWM5MmYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uY3BwCkBAIC0zOSw3ICszOSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
ewogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVu
Y3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCisgICAgSlNJbW11dGFibGVCdXR0ZXJm
bHkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOworCiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBpZiAoYm91bmRBcmdzKSB7CisgICAgICAgIC8vIFN0
YXJ0cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAg
ICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldChpKSk7CisgICAgfQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBh
cmdzLmFwcGVuZChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBSRUxFQVNF
X0FTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwpAQCAtNjIsMTIgKzY5LDEzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5k
RnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCi0gICAgSlNBcnJheSogYm91bmRB
cmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAgSlNJbW11dGFibGVCdXR0ZXJm
bHkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOwogCiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAg
ICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldEluZGV4UXVpY2tseShpKSk7CisgICAgICAgIC8v
IFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAg
ICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAg
ICBhcmdzLmFwcGVuZChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKQEAgLTg3LDcg
Kzk1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVu
Y3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsCiB7CiAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+anND
YWxsZWUoKSk7CiAKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRG
dW5jdGlvbi0+Ym91bmRBcmdzKCk7CisKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwor
ICAgIGlmIChib3VuZEFyZ3MpIHsKKyAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUg
Zmlyc3Qgb25lIGlzIHx0aGlzfC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGJv
dW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJn
cy0+Z2V0KGkpKTsKKyAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdzLmhhc092ZXJm
bG93ZWQoKSk7CkBAIC0xMDUsMTIgKzEyMCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0JvdW5kRnVu
Y3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oY2FsbEZyYW1l
LT5qc0NhbGxlZSgpKTsKIAotICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rpb24t
PmJvdW5kQXJncygpOworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3Vu
ZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7
CiAgICAgaWYgKGJvdW5kQXJncykgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Ym91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQotICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRB
cmdzLT5nZXRJbmRleFF1aWNrbHkoaSkpOworICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNl
IHRoZSBmaXJzdCBvbmUgaXMgfHRoaXN8LgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp
IDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91
bmRBcmdzLT5nZXQoaSkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYXJncy5hcHBlbmQoY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CkBAIC0xNzEsMjMgKzE4NywyMiBAQCBpbmxpbmUg
U3RydWN0dXJlKiBnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQm91bmRGdW5jdGlv
biogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0Fy
cmF5KiBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSkKK0pTQm91bmRG
dW5jdGlvbiogSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlz
LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBpbnQgbGVuZ3RoLCBKU1N0cmluZyog
bmFtZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBuYW1lLT52YWx1ZShnbG9iYWxPYmplY3QpOyAvLyBSZXNvbHZpbmcgcm9wZS4KKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGJvb2wgaXNKU0Z1bmN0aW9u
ID0gZ2V0SlNGdW5jdGlvbih0YXJnZXRGdW5jdGlvbik7CiAgICAgQ29uc3RydWN0RGF0YSBjb25z
dHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IEpTQzo6Z2V0Q29u
c3RydWN0RGF0YSh2bSwgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdERhdGEpOwogICAgIGJvb2wg
Y2FuQ29uc3RydWN0ID0gY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lOwotICAg
IAotICAgIGJvb2wgc2xvd0Nhc2UgPSBib3VuZEFyZ3MgfHwgIWdldEpTRnVuY3Rpb24odGFyZ2V0
RnVuY3Rpb24pOwotICAgIAotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5n
ZXRIb3N0RnVuY3Rpb24oCi0gICAgICAgIHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNhbGwgOiBi
b3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwsCi0gICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5z
aWMgOiBCb3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCi0gICAgICAgIGNhbkNv
bnN0cnVjdCA/IChzbG93Q2FzZSA/IGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QgOiBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNvbnN0cnVjdCkgOiBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwg
bnVsbHB0ciwKLSAgICAgICAgbmFtZSk7CisKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gdm0uZ2V0Qm91bmRGdW5jdGlvbihpc0pTRnVuY3Rpb24sIGNhbkNvbnN0cnVjdCk7CiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QsIHRhcmdldEZ1bmN0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKLSAgICBKU0JvdW5kRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNCb3VuZEZ1bmN0aW9uPih2bS5oZWFwKSkgSlNCb3VuZEZ1bmN0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdGFyZ2V0RnVuY3Rpb24sIGJvdW5kVGhp
cywgYm91bmRBcmdzKTsKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNCb3VuZEZ1bmN0aW9uPih2bS5oZWFwKSkgSlNCb3VuZEZ1bmN0
aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdGFyZ2V0RnVuY3Rpb24sIGJvdW5kVGhp
cywgYm91bmRBcmdzLCBuYW1lLCBsZW5ndGgpOwogCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0
aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgpOwogICAgIHJldHVybiBmdW5jdGlvbjsKQEAgLTE5
OCwxMiArMjEzLDE1IEBAIGJvb2wgSlNCb3VuZEZ1bmN0aW9uOjpjdXN0b21IYXNJbnN0YW5jZShK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgcmV0dXJuIGpzQ2Fz
dDxKU0JvdW5kRnVuY3Rpb24qPihvYmplY3QpLT5tX3RhcmdldEZ1bmN0aW9uLT5oYXNJbnN0YW5j
ZShnbG9iYWxPYmplY3QsIHZhbHVlKTsKIH0KIAotSlNCb3VuZEZ1bmN0aW9uOjpKU0JvdW5kRnVu
Y3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNB
cnJheSogYm91bmRBcmdzKQorSlNCb3VuZEZ1bmN0aW9uOjpKU0JvdW5kRnVuY3Rpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNP
YmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNJbW11dGFibGVCdXR0
ZXJmbHkqIGJvdW5kQXJncywgSlNTdHJpbmcqIG5hbWUsIGludCBsZW5ndGgpCiAgICAgOiBCYXNl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fdGFyZ2V0RnVuY3Rpb24odm0s
IHRoaXMsIHRhcmdldEZ1bmN0aW9uKQogICAgICwgbV9ib3VuZFRoaXModm0sIHRoaXMsIGJvdW5k
VGhpcykKLSAgICAsIG1fYm91bmRBcmdzKHZtLCB0aGlzLCBib3VuZEFyZ3MsIFdyaXRlQmFycmll
cjxKU0FycmF5Pjo6TWF5QmVOdWxsKQorICAgICwgbV9ib3VuZEFyZ3Modm0sIHRoaXMsIGJvdW5k
QXJncywgV3JpdGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0dGVyZmx5Pjo6TWF5QmVOdWxsKQorICAg
ICwgbV9uYW1lKHZtLCB0aGlzLCBuYW1lKQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQogeworICAg
IEFTU0VSVCghbV9uYW1lLT5pc1JvcGUoKSk7CiB9CiAKIEpTQXJyYXkqIEpTQm91bmRGdW5jdGlv
bjo6Ym91bmRBcmdzQ29weShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtMjEyLDkg
KzIzMCwxMiBAQCBKU0FycmF5KiBKU0JvdW5kRnVuY3Rpb246OmJvdW5kQXJnc0NvcHkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheSh0aGlz
LT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYm91bmRBcmdzLT5s
ZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIHJlc3VsdC0+cHVzaChnbG9iYWxPYmplY3QsIG1fYm91
bmRBcmdzLT5nZXRJbmRleFF1aWNrbHkoaSkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKKyAgICBpZiAobV9ib3VuZEFyZ3MpIHsKKyAgICAgICAgLy8gU3Rh
cnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIGJvdW5kIHx0aGlzfC4KKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1fYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKSB7Cisg
ICAgICAgICAgICByZXN1bHQtPnB1c2goZ2xvYmFsT2JqZWN0LCBtX2JvdW5kQXJncy0+Z2V0KGkp
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMzUsNiArMjU2LDcgQEAg
dm9pZCBKU0JvdW5kRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3RhcmdldEZ1
bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kVGhpcyk7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9ib3VuZEFyZ3MpOworICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fbmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAppbmRleCA3
Njc3YzZhNDkyMzI1ZjU4MmFkN2NhZDMxMWQzZTRmOTdhNmM2YTgzLi43M2IwMTQ1ZmRiZTA2M2Fk
MGI2NmRiNzg3ZTFmNTcxZjI5YjJmMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaApAQCAtNDgsMTQgKzQ4LDIzIEBAIGNsYXNzIEpTQm91
bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAgICAgICAgcmV0dXJuIHZt
LmJvdW5kRnVuY3Rpb25TcGFjZTxtb2RlPigpOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0JvdW5k
RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1
bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNBcnJheSogYm91bmRBcmdzLCBpbnQsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRU
aGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBpbnQsIEpTU3RyaW5nKiBuYW1l
KTsKICAgICAKICAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24o
KSB7IHJldHVybiBtX3RhcmdldEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNWYWx1ZSBib3VuZFRo
aXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQotICAgIEpTQXJyYXkqIGJvdW5kQXJn
cygpIHsgcmV0dXJuIG1fYm91bmRBcmdzLmdldCgpOyB9IC8vIERPIE5PVCBhbGxvdyB0aGlzIGFy
cmF5IHRvIGJlIG11dGF0ZWQhCisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncygp
IHsgcmV0dXJuIG1fYm91bmRBcmdzLmdldCgpOyB9IC8vIERPIE5PVCBhbGxvdyB0aGlzIGFycmF5
IHRvIGJlIG11dGF0ZWQhCiAgICAgSlNBcnJheSogYm91bmRBcmdzQ29weShKU0dsb2JhbE9iamVj
dCopOworICAgIEpTU3RyaW5nKiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lLmdldCgpOyB9CisgICAg
Y29uc3QgU3RyaW5nJiBuYW1lU3RyaW5nKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9uYW1l
LT5pc1JvcGUoKSk7CisgICAgICAgIGJvb2wgYWxsb2NhdGlvbkFsbG93ZWQgPSBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIG1fbmFtZS0+dHJ5R2V0VmFsdWUoYWxsb2NhdGlvbkFsbG93ZWQpOworICAg
IH0KKworICAgIGludDMyX3QgbGVuZ3RoKFZNJikgeyByZXR1cm4gbV9sZW5ndGg7IH0KIAogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTY1LDYgKzc0LDcg
QEAgY2xhc3MgSlNCb3VuZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogICAg
IAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihKU0JvdW5kRnVuY3Rpb24sIG1fdGFyZ2V0RnVuY3Rpb24pOyB9CiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkJvdW5kVGhpcygpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihKU0JvdW5kRnVuY3Rpb24sIG1fYm91bmRUaGlzKTsgfQorICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZCb3VuZEFyZ3MoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCb3Vu
ZEZ1bmN0aW9uLCBtX2JvdW5kQXJncyk7IH0KIAogICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNzIs
MTMgKzgyLDIwIEBAIGNsYXNzIEpTQm91bmRGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0
aW9uIHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAKIHByaXZhdGU6Ci0gICAgSlNCb3VuZEZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlz
LCBKU0FycmF5KiBib3VuZEFyZ3MpOworICAgIEpTQm91bmRGdW5jdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJv
dW5kVGhpcywgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncywgSlNTdHJpbmcqIG5hbWUs
IGludCBsZW5ndGgpOwogICAgIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVF
eGVjdXRhYmxlKiwgaW50IGxlbmd0aCk7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1f
dGFyZ2V0RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fYm91bmRUaGlzOwot
ICAgIFdyaXRlQmFycmllcjxKU0FycmF5PiBtX2JvdW5kQXJnczsKKyAgICBXcml0ZUJhcnJpZXI8
SlNJbW11dGFibGVCdXR0ZXJmbHk+IG1fYm91bmRBcmdzOworICAgIFdyaXRlQmFycmllcjxKU1N0
cmluZz4gbV9uYW1lOworICAgIGludCBtX2xlbmd0aDsKIH07CiAKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25D
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4
IDYyZTU1OGZmYTQ2NDRlODQ3OGM2ODEwOTcyNzI1ODBjZjBkNmIwZjcuLjM3YjJjMTNiMThkOGZj
OGYwOTYzOTg1NzUyN2U5OTczOTgxZWZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMjYsNiArMTI2LDggQEAgdm9pZCBKU0Z1bmN0aW9u
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGhpcykpOwogICAgIEFT
U0VSVCh0eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpOworICAgIEFTU0VSVChtZXRob2RUYWJsZSh2
bSktPmdldENvbnN0cnVjdERhdGEgPT0gJkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOwor
ICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhID09ICZKU0Z1bmN0aW9uOjpn
ZXRDYWxsRGF0YSk7CiB9CiAKIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcm
IG5hbWUpCkBAIC0xMzMsOCArMTM1LDE0IEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoCiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7CiAgICAgQVNTRVJUKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSk7CisgICAgQVNTRVJUKG1l
dGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q29uc3Ry
dWN0RGF0YSk7CisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEgPT0gJkpT
RnVuY3Rpb246OmdldENhbGxEYXRhKTsKICAgICBtX2V4ZWN1dGFibGUuc2V0KHZtLCB0aGlzLCBl
eGVjdXRhYmxlKTsKLSAgICAvLyBTb21lIE5hdGl2ZUV4ZWN1dGFibGUgZnVuY3Rpb25zLCBsaWtl
IEpTQm91bmRGdW5jdGlvbiwgZGVjaWRlIHRvIGxhemlseSBhbGxvY2F0ZSB0aGVpciBuYW1lIHN0
cmluZy4KKworICAgIC8vIFNvbWUgTmF0aXZlRXhlY3V0YWJsZSBmdW5jdGlvbnMsIGxpa2UgSlNC
b3VuZEZ1bmN0aW9uLCBkZWNpZGUgdG8gbGF6aWx5IGFsbG9jYXRlIHRoZWlyIG5hbWUgc3RyaW5n
IC8gbGVuZ3RoLgorICAgIGlmICh0aGlzLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFuYW1lLmlzTnVsbCgpKQogICAgICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKHZtLCBuYW1lKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobGVu
Z3RoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKQEAgLTIwNyw2ICsyMTUsOCBAQCBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9u
Ojppbml0aWFsaXplUmFyZURhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgcwogU3Ry
aW5nIEpTRnVuY3Rpb246Om5hbWUoVk0mIHZtKQogewogICAgIGlmIChpc0hvc3RGdW5jdGlvbigp
KSB7CisgICAgICAgIGlmICh0aGlzLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkKKyAg
ICAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGhpcyktPm5hbWVTdHJp
bmcoKTsKICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxOYXRp
dmVFeGVjdXRhYmxlKj4odGhpcy0+ZXhlY3V0YWJsZSgpKTsKICAgICAgICAgcmV0dXJuIGV4ZWN1
dGFibGUtPm5hbWUoKTsKICAgICB9CkBAIC00MjEsMTAgKzQzMSwxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVgogYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwog
ICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAg
IHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5Rm9ySG9zdE9yQnVpbHRpbklmTmVlZGVkKHZt
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7CiAgICAgfQogCiAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUgJiYgdGhpc09i
amVjdC0+anNFeGVjdXRhYmxlKCktPmhhc1Byb3RvdHlwZVByb3BlcnR5KCkgJiYgIXRoaXNPYmpl
Y3QtPmpzRXhlY3V0YWJsZSgpLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpKSB7CkBAIC00
NjAsMjIgKzQ3MywyMyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogCiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpIHsKICAgICAgICAgaWYgKCF0
aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGll
cygpKQotICAgICAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwogICAgICAgICAKICAgICAgICAg
c2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUsIGFyZ3VtZW50c0dldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyKSB7
CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhhc0NhbGxlckFuZEFy
Z3VtZW50c1Byb3BlcnRpZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIAog
ICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSwgY2FsbGVyR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCiAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKIAotICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7CiB9CiAKIHZvaWQgSlNGdW5jdGlvbjo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSkKQEAgLTQ5NywxMCArNTExLDEyIEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0
KiBnCiAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmhhc1JlaWZpZWROYW1lKCkpCiAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bmFtZSk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAodGhpc09iamVjdC0+aXNCdWlsdGluRnVu
Y3Rpb24oKSAmJiAhdGhpc09iamVjdC0+aGFzUmVpZmllZExlbmd0aCgpKQotICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7Ci0gICAgICAg
ICAgICBpZiAoKHRoaXNPYmplY3QtPmlzQnVpbHRpbkZ1bmN0aW9uKCkgfHwgdGhpc09iamVjdC0+
aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpICYmICF0aGlzT2JqZWN0LT5oYXNSZWlmaWVk
TmFtZSgpKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUpOworICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmlzQnVpbHRpbkZ1bmN0aW9u
KCkgfHwgdGhpc09iamVjdC0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmhhc1JlaWZpZWRMZW5ndGgoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmhhc1JlaWZpZWROYW1lKCkpCisgICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPm5hbWUp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIEJhc2U6OmdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOwpAQCAtNTEzLDEyICs1MjksMjEgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHIKIAog
ICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwog
CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggfHwgcHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpIHsKKyAgICAgICAgRnVuY3Rpb25S
YXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSh2bSk7CisgICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQorICAgICAgICAgICAg
cmFyZURhdGEtPnNldEhhc01vZGlmaWVkTGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJhcmVEYXRhLT5zZXRIYXNNb2RpZmllZE5hbWUoKTsKKyAgICB9CisKICAgICBpZiAoVU5M
SUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkKICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvcmRpbmFyeVNldFNsb3coZ2xvYmFsT2JqZWN0LCB0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3Ry
aWN0TW9kZSgpKSk7CiAKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5j
dGlvbigpKSB7CiAgICAgICAgIFByb3BlcnR5U3RhdHVzIHByb3BlcnR5VHlwZSA9IHRoaXNPYmpl
Y3QtPnJlaWZ5TGF6eVByb3BlcnR5Rm9ySG9zdE9yQnVpbHRpbklmTmVlZGVkKHZtLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICAgICAgaWYgKGlzTGF6eShwcm9wZXJ0eVR5cGUpKQogICAgICAgICAgICAg
c2xvdC5kaXNhYmxlQ2FjaGluZygpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpKTsKQEAgLTU1MSwxMCArNTc2LDIxIEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByCiBi
b29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGNlbGwpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
KQorCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggfHwg
cHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpIHsKKyAgICAgICAgRnVuY3Rp
b25SYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSh2bSk7CisgICAgICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQorICAgICAgICAg
ICAgcmFyZURhdGEtPnNldEhhc01vZGlmaWVkTGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJhcmVEYXRhLT5zZXRIYXNNb2RpZmllZE5hbWUoKTsKKyAgICB9CisKKyAgICBpZiAo
dGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICB0aGlzT2Jq
ZWN0LT5yZWlmeUxhenlQcm9wZXJ0eUZvckhvc3RPckJ1aWx0aW5JZk5lZWRlZCh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotICAgIGVsc2UgaWYgKHZtLmRlbGV0ZVByb3BlcnR5TW9k
ZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSkgeworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgfSBlbHNlIGlmICh2
bS5kZWxldGVQcm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpIHsKICAgICAgICAgLy8gRm9yIG5vbi1ob3N0IGZ1bmN0aW9ucywgZG9uJ3Qg
bGV0IHRoZXNlIHByb3BlcnRpZXMgYnkgZGVsZXRlZCAtIGV4Y2VwdCBieSBEZWZpbmVPd25Qcm9w
ZXJ0eS4KICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdGhpc09iamVj
dC0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIApAQCAtNTY1LDkgKzYwMSwxMCBAQCBib29sIEpT
RnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHRo
aXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQodm0sIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwog
ICAgIH0KICAgICAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKTsKIH0KIAogYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhy
b3dFeGNlcHRpb24pCkBAIC01NzYsOCArNjEzLDE4IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNGdW5j
dGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKKworICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoIHx8IHByb3BlcnR5TmFt
ZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSB7CisgICAgICAgIEZ1bmN0aW9uUmFyZURhdGEq
IHJhcmVEYXRhID0gdGhpc09iamVjdC0+cmFyZURhdGEodm0pOworICAgICAgICBpZiAocHJvcGVy
dHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKKyAgICAgICAgICAgIHJhcmVEYXRh
LT5zZXRIYXNNb2RpZmllZExlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByYXJl
RGF0YS0+c2V0SGFzTW9kaWZpZWROYW1lKCk7CisgICAgfQorCiAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlM
YXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZOZWVkZWQodm0sIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwog
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhj
ZXB0aW9uKSk7CiAgICAgfQogCkBAIC03MTcsOCArNzY0LDE0IEBAIHZvaWQgSlNGdW5jdGlvbjo6
cmVpZnlMZW5ndGgoVk0mIHZtKQogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gdGhp
cy0+cmFyZURhdGEodm0pOwogCiAgICAgQVNTRVJUKCFoYXNSZWlmaWVkTGVuZ3RoKCkpOwotICAg
IEFTU0VSVCghaXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgSlNWYWx1ZSBpbml0aWFsVmFsdWUgPSBq
c051bWJlcihqc0V4ZWN1dGFibGUoKS0+cGFyYW1ldGVyQ291bnQoKSk7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gMDsKKyAgICBpZiAodGhpcy0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkp
CisgICAgICAgIGxlbmd0aCA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0aGlzKS0+bGVuZ3Ro
KHZtKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbigpKTsKKyAg
ICAgICAgbGVuZ3RoID0ganNFeGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCk7CisgICAgfQor
ICAgIEpTVmFsdWUgaW5pdGlhbFZhbHVlID0ganNOdW1iZXIobGVuZ3RoKTsKICAgICB1bnNpZ25l
ZCBpbml0aWFsQXR0cmlidXRlcyA9IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seTsKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
ID0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoOwogICAgIHJhcmVEYXRhLT5zZXRIYXNSZWlmaWVk
TGVuZ3RoKCk7CkBAIC03NjcsNyArODIwLDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpyZWlmeU5hbWUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmcgbmFtZSkKIAogSlNG
dW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5jdGlvbjo6cmVpZnlMYXp5UHJvcGVydHlJZk5l
ZWRlZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCisgICAg
aWYgKGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYgIXRoaXMtPmluaGVyaXRzPEpTQm91bmRG
dW5jdGlvbj4odm0pKQogICAgICAgICByZXR1cm4gUHJvcGVydHlTdGF0dXM6OkVhZ2VyOwogICAg
IFByb3BlcnR5U3RhdHVzIGxhenlMZW5ndGggPSByZWlmeUxhenlMZW5ndGhJZk5lZWRlZCh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpc0xhenkobGF6eUxlbmd0aCkp
CkBAIC03ODEsNyArODM0LDcgQEAgSlNGdW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5jdGlv
bjo6cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZChWTSYgdm0sIEpTR2xvYmEKIEpTRnVuY3Rpb246
OlByb3BlcnR5U3RhdHVzIEpTRnVuY3Rpb246OnJlaWZ5TGF6eVByb3BlcnR5Rm9ySG9zdE9yQnVp
bHRpbklmTmVlZGVkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlQoaXNIb3N0T3JCdWlsdGluRnVuY3Rp
b24oKSk7Ci0gICAgaWYgKGlzQnVpbHRpbkZ1bmN0aW9uKCkpIHsKKyAgICBpZiAoaXNCdWlsdGlu
RnVuY3Rpb24oKSB8fCB0aGlzLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgewogICAg
ICAgICBQcm9wZXJ0eVN0YXR1cyBsYXp5TGVuZ3RoID0gcmVpZnlMYXp5TGVuZ3RoSWZOZWVkZWQo
dm0sIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgaWYgKGlzTGF6eShsYXp5
TGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVybiBsYXp5TGVuZ3RoOwpAQCAtODE1LDYgKzg2OCw4
IEBAIEpTRnVuY3Rpb246OlByb3BlcnR5U3RhdHVzIEpTRnVuY3Rpb246OnJlaWZ5TGF6eU5hbWVJ
Zk5lZWRlZChWTSYgdm0sIEpTR2xvYmFsT2JqCiAKIEpTRnVuY3Rpb246OlByb3BlcnR5U3RhdHVz
IEpTRnVuY3Rpb246OnJlaWZ5TGF6eUJvdW5kTmFtZUlmTmVlZGVkKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lSWRlbnQgPSB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lOwogICAgIGlmIChwcm9wZXJ0
eU5hbWUgIT0gbmFtZUlkZW50KQogICAgICAgICByZXR1cm4gUHJvcGVydHlTdGF0dXM6OkVhZ2Vy
OwpAQCAtODI2LDggKzg4MSwxMyBAQCBKU0Z1bmN0aW9uOjpQcm9wZXJ0eVN0YXR1cyBKU0Z1bmN0
aW9uOjpyZWlmeUxhenlCb3VuZE5hbWVJZk5lZWRlZChWTSYgdm0sIEpTR2xvYgogICAgICAgICBy
ZWlmeU5hbWUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgZWxzZSBpZiAodGhpcy0+aW5oZXJpdHM8
SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKICAgICAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURh
dGEgPSB0aGlzLT5yYXJlRGF0YSh2bSk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IHN0
YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5uYW1lKCk7
Ci0gICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSAhbmFtZSA/IGpzRW1wdHlTdHJpbmcodm0pIDog
anNTdHJpbmcodm0sIG1ha2VTdHJpbmcoImJvdW5kICIsIG5hbWUpKTsKKyAgICAgICAgSlNTdHJp
bmcqIG5hbWUgPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGhpcyktPm5hbWUoKTsKKyAgICAg
ICAgSlNTdHJpbmcqIHN0cmluZyA9IG51bGxwdHI7CisgICAgICAgIGlmIChuYW1lLT5sZW5ndGgo
KSAhPSAwKSB7CisgICAgICAgICAgICBzdHJpbmcgPSBqc1N0cmluZyhnbG9iYWxPYmplY3QsIGpz
U3RyaW5nKHZtLCAiYm91bmQgIl9zKSwgbmFtZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBQcm9wZXJ0eVN0YXR1czo6TGF6eSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgc3RyaW5nID0ganNTdHJpbmcodm0sICJib3VuZCAiX3MpOwogICAgICAgICB1bnNp
Z25lZCBpbml0aWFsQXR0cmlidXRlcyA9IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsKICAgICAgICAgcmFyZURhdGEtPnNldEhhc1JlaWZp
ZWROYW1lKCk7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgbmFtZUlkZW50LCBzdHJpbmcsIGluaXRp
YWxBdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAppbmRleCAyNjg0NDVjOWVkY2YyNWQ1YzRiYmQzOTFkOTViMWJkNjIzN2YyZDljLi5jNjBiY2Y5
NDgwMTk4ZDc5OTAzNDVmYTk1Y2RhOTgxODg5Yjc3MjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xMTEsOCArMTExLDggQEAgY2xhc3MgSlNGdW5j
dGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbmF0aXZl
RnVuY3Rpb24oKTsKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3Rvcigp
OwogCi0gICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJik7Ci0gICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7
CiAKICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkV4ZWN1dGFibGUoKQogICAg
IHsKQEAgLTE3MSw2ICsxNzEsOCBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2FsbGVl
IHsKICAgICB9OwogICAgIFByb3BlcnR5U3RhdHVzIHJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CiAKKyAgICBib29sIGFyZU5hbWVB
bmRMZW5ndGhPcmlnaW5hbChWTSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgSlNG
dW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25Jbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5o
CmluZGV4IDdkYzhkZTYyNTdmN2FiYmVhODE5ZWYyOTdmNmNmZDliZTFhMDNkYjYuLjNlNDg1NTdh
MGNjZDgzZWJkYWUwY2RmNThlYzc4OTA4Njc0YzA4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaApAQCAtMTA5LDYgKzEwOSwxNyBA
QCBpbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjpoYXNSZWlmaWVkTmFtZSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJlRGF0YS0+aGFzUmVpZmllZE5hbWUoKTsKIH0KIAoraW5s
aW5lIGJvb2wgSlNGdW5jdGlvbjo6YXJlTmFtZUFuZExlbmd0aE9yaWdpbmFsKFZNJikKK3sKKyAg
ICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtX3JhcmVE
YXRhLT5oYXNNb2RpZmllZE5hbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICht
X3JhcmVEYXRhLT5oYXNNb2RpZmllZExlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIGlubGluZSBib29sIEpTRnVuY3Rpb246OmNhblVzZUFsbG9j
YXRpb25Qcm9maWxlKCkKIHsKICAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGY1OWM3YWMwMTNlOGQ5MmFmZDZkYTMyYTY4YWNjN2UzNjZhYTQ3ZDkuLjI0NzYwN2MyODQ5
OGYyZTcyMWYxZWYyMDJlODhhYjc3MmE2NmJjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI4NSwxNiArMjg1LDE3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VCb3VuZEZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgQVNTRVJUKGxlbmd0aFZhbHVlLmlzSW50MzJBc0Fu
eUludCgpKTsKICAgICBpbnQzMl90IGxlbmd0aCA9IGxlbmd0aFZhbHVlLmFzSW50MzJBc0FueUlu
dCgpOwogCi0gICAgU3RyaW5nIG5hbWUgPSBuYW1lU3RyaW5nLT52YWx1ZShnbG9iYWxPYmplY3Qp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXQsIGJvdW5kVGhpcywgYm91bmRBcmdzLmlzQ2VsbCgpID8g
anNDYXN0PEpTQXJyYXkqPihib3VuZEFyZ3MpIDogbnVsbHB0ciwgbGVuZ3RoLCBXVEZNb3ZlKG5h
bWUpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpT
Qm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlz
LCBib3VuZEFyZ3MuaXNDZWxsKCkgPyBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihib3Vu
ZEFyZ3MpIDogbnVsbHB0ciwgbGVuZ3RoLCBuYW1lU3RyaW5nKSkpOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisKICAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3Qo
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGFyZ2V0KTsKKyAgICBpZiAoZnVu
Y3Rpb24pCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZ1bmN0aW9u
LT5hcmVOYW1lQW5kTGVuZ3RoT3JpZ2luYWwodm0pKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKaW5kZXggYjdkYjQ1NDYxMjI5ZWUyZjJjMzE0MzE3MGMyNjk0MzhhOGUwNmUw
MC4uZmYwNGY1OWNhODI1MjA1NjA0YTFkYjVmMjc1ZjRlMzllNDhkZWVhNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC01NSw3ICs1NSw3IEBAIGlubGluZSBK
U0NlbGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXND
ZWxsKCkgJiYgKHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpKQogICAg
ICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKIGNsYXNzIEV4Y2VwdGlvbjsKQEAgLTEyOTIsMjAgKzEyOTIsNiBAQCBpbmxp
bmUgdm9pZCBKU09iamVjdDo6bnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseShWTSYgdm0sIFN0
cnVjdHVyZUlEIG9sZFN0cnVjdAogICAgIG1fYnV0dGVyZmx5LnNldCh2bSwgdGhpcywgYnV0dGVy
Zmx5KTsKIH0KIAotaW5saW5lIENhbGxUeXBlIGdldENhbGxEYXRhKFZNJiB2bSwgSlNWYWx1ZSB2
YWx1ZSwgQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIENhbGxUeXBlIHJlc3VsdCA9IHZhbHVl
LmlzQ2VsbCgpID8gdmFsdWUuYXNDZWxsKCktPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEo
dmFsdWUuYXNDZWxsKCksIGNhbGxEYXRhKSA6IENhbGxUeXBlOjpOb25lOwotICAgIEFTU0VSVChy
ZXN1bHQgPT0gQ2FsbFR5cGU6Ok5vbmUgfHwgdmFsdWUuaXNWYWxpZENhbGxlZSgpKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1pbmxpbmUgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKLXsK
LSAgICBDb25zdHJ1Y3RUeXBlIHJlc3VsdCA9IHZhbHVlLmlzQ2VsbCgpID8gdmFsdWUuYXNDZWxs
KCktPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh2YWx1ZS5hc0NlbGwoKSwgY29u
c3RydWN0RGF0YSkgOiBDb25zdHJ1Y3RUeXBlOjpOb25lOwotICAgIEFTU0VSVChyZXN1bHQgPT0g
Q29uc3RydWN0VHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KIGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNDZWxsKiBjZWxsKQog
ewogICAgIEFTU0VSVChjZWxsLT5pc09iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggMDdmNjA2NDI1NGE3YmEzNzY4OWFi
YzE3NmViNjQzNzRhMGNhYWU2NS4uM2E5YTRkOGQ4Y2EzOWE4ZDNiNjY4NGE3ZmI1YmJjOTYwMTBm
Yjg5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUg
IkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKQEAgLTUxMCw0ICs1MTEsMjgg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOwogfQogCitpbmxp
bmUgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCit7CisgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIENh
bGxUeXBlOjpOb25lOworICAgIEpTQ2VsbCogY2VsbCA9IGpzQ2FzdDxKU0NlbGwqPih2YWx1ZSk7
CisgICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgcmV0dXJu
IEpTRnVuY3Rpb246OmdldENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBy
ZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGNlbGwsIGNhbGxEYXRh
KTsKKyAgICBBU1NFUlQocmVzdWx0ID09IENhbGxUeXBlOjpOb25lIHx8IHZhbHVlLmlzVmFsaWRD
YWxsZWUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIENvbnN0cnVjdERhdGEmIGNv
bnN0cnVjdERhdGEpCit7CisgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJu
IENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgSlNDZWxsKiBjZWxsID0ganNDYXN0PEpTQ2VsbCo+
KHZhbHVlKTsKKyAgICBpZiAoY2VsbC0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgICAg
ICByZXR1cm4gSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShjZWxsLCBjb25zdHJ1Y3REYXRh
KTsKKyAgICBDb25zdHJ1Y3RUeXBlIHJlc3VsdCA9IGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
Q29uc3RydWN0RGF0YShjZWxsLCBjb25zdHJ1Y3REYXRhKTsKKyAgICBBU1NFUlQocmVzdWx0ID09
IENvbnN0cnVjdFR5cGU6Ok5vbmUgfHwgdmFsdWUuaXNWYWxpZENhbGxlZSgpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAppbmRleCA2NGRkZmNiMWEyNTYwZTZmZTFiNDU0ZTRmZWUxNDg5MmFkYzA4YTlm
Li5lYTNiNDkzNDJiYWM5YjY4OGE4ZGZkODFlM2UzNTExZDcxZjM1OTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC03NjYsOCArNzY2LDggQEAgc3RhdGljIFRodW5rR2Vu
ZXJhdG9yIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiAg
ICAgICAgIHJldHVybiBpbXVsVGh1bmtHZW5lcmF0b3I7CiAgICAgY2FzZSBSYW5kb21JbnRyaW5z
aWM6CiAgICAgICAgIHJldHVybiByYW5kb21UaHVua0dlbmVyYXRvcjsKLSAgICBjYXNlIEJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYzoKLSAgICAgICAgcmV0dXJuIGJvdW5kVGhp
c05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcjsKKyAgICBjYXNlIEJvdW5kRnVuY3Rpb25DYWxs
SW50cmluc2ljOgorICAgICAgICByZXR1cm4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3I7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtODE1LDYgKzgx
NSwzMSBAQCBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlucwogICAgIHJldHVybiBOYXRpdmVFeGVjdXRh
YmxlOjpjcmVhdGUoKnRoaXMsIGppdENvZGVGb3JDYWxsVHJhbXBvbGluZSgpLCBmdW5jdGlvbiwg
aml0Q29kZUZvckNvbnN0cnVjdFRyYW1wb2xpbmUoKSwgY29uc3RydWN0b3IsIG5hbWUpOwogfQog
CitOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0Qm91bmRGdW5jdGlvbihib29sIGlzSlNGdW5jdGlv
biwgYm9vbCBjYW5Db25zdHJ1Y3QpCit7CisgICAgYm9vbCBzbG93Q2FzZSA9ICFpc0pTRnVuY3Rp
b247CisKKyAgICBhdXRvIGdldE9yQ3JlYXRlID0gWyZdIChXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+
JiBzbG90KSAtPiBOYXRpdmVFeGVjdXRhYmxlKiB7CisgICAgICAgIGlmIChhdXRvKiBjYWNoZWQg
PSBzbG90LmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDsKKyAgICAgICAgTmF0aXZl
RXhlY3V0YWJsZSogcmVzdWx0ID0gZ2V0SG9zdEZ1bmN0aW9uKAorICAgICAgICAgICAgc2xvd0Nh
c2UgPyBib3VuZEZ1bmN0aW9uQ2FsbCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKKyAg
ICAgICAgICAgIHNsb3dDYXNlID8gTm9JbnRyaW5zaWMgOiBCb3VuZEZ1bmN0aW9uQ2FsbEludHJp
bnNpYywKKyAgICAgICAgICAgIGNhbkNvbnN0cnVjdCA/IChzbG93Q2FzZSA/IGJvdW5kRnVuY3Rp
b25Db25zdHJ1Y3QgOiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdCkgOiBjYWxsSG9z
dEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgbnVsbHB0ciwgU3RyaW5nKCkpOworICAgICAgICBzbG90
ID0gV2VhazxOYXRpdmVFeGVjdXRhYmxlPihyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH07CisKKyAgICBpZiAoc2xvd0Nhc2UpIHsKKyAgICAgICAgaWYgKGNhbkNvbnN0cnVj
dCkKKyAgICAgICAgICAgIHJldHVybiBnZXRPckNyZWF0ZShtX3Nsb3dDYW5Db25zdHJ1Y3RCb3Vu
ZEV4ZWN1dGFibGUpOworICAgICAgICByZXR1cm4gZ2V0T3JDcmVhdGUobV9zbG93Qm91bmRFeGVj
dXRhYmxlKTsKKyAgICB9CisgICAgaWYgKGNhbkNvbnN0cnVjdCkKKyAgICAgICAgcmV0dXJuIGdl
dE9yQ3JlYXRlKG1fZmFzdENhbkNvbnN0cnVjdEJvdW5kRXhlY3V0YWJsZSk7CisgICAgcmV0dXJu
IGdldE9yQ3JlYXRlKG1fZmFzdEJvdW5kRXhlY3V0YWJsZSk7Cit9CisKIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBWTTo6Z2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xp
bmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogI2lmIEVOQUJMRShKSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAyODA4NmM0ZWQ5MTYwNmMyODFiMWExZDVi
N2ExZGFiMDYwODgwNzBhLi41Mzk1MTNiZTA5NTYwMzkyMzk0Y2M0MjQ5YWE1MjczNmRjYjgwZjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY5NCw2ICs2OTQsMTEgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8Vk0+IHsKICAgICBTdHJvbmc8SlNDZWxsPiBtX3NlbnRpbmVsU2V0QnVja2V0
OwogICAgIFN0cm9uZzxKU0NlbGw+IG1fc2VudGluZWxNYXBCdWNrZXQ7CiAKKyAgICBXZWFrPE5h
dGl2ZUV4ZWN1dGFibGU+IG1fZmFzdEJvdW5kRXhlY3V0YWJsZTsKKyAgICBXZWFrPE5hdGl2ZUV4
ZWN1dGFibGU+IG1fZmFzdENhbkNvbnN0cnVjdEJvdW5kRXhlY3V0YWJsZTsKKyAgICBXZWFrPE5h
dGl2ZUV4ZWN1dGFibGU+IG1fc2xvd0JvdW5kRXhlY3V0YWJsZTsKKyAgICBXZWFrPE5hdGl2ZUV4
ZWN1dGFibGU+IG1fc2xvd0NhbkNvbnN0cnVjdEJvdW5kRXhlY3V0YWJsZTsKKwogICAgIFJlZjxQ
cm9taXNlVGltZXI+IHByb21pc2VUaW1lcjsKICAgICAKICAgICBKU0NlbGwqIGN1cnJlbnRseURl
c3RydWN0aW5nQ2FsbGJhY2tPYmplY3Q7CkBAIC04MzEsNiArODM2LDggQEAgY2xhc3MgVk0gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5v
ZGU8Vk0+IHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVu
Y3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwog
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50
cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCisgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0Qm91
bmRGdW5jdGlvbihib29sIGlzSlNGdW5jdGlvbiwgYm9vbCBjYW5Db25zdHJ1Y3QpOworCiAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGdldENUSUludGVybmFsRnVuY3Rp
b25UcmFtcG9saW5lRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBleGNlcHRpb25PZmZzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2FzbVRvSlMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2FzbVRvSlMuY3BwCmluZGV4IGIyNjdkNTFlNDk0ZGI1MjM3ZmZjN2VkYWMyNzNlYmJjZTJkZTFj
MWQuLjY3N2U4ODVhMGVhMjAyNzg4NDllODQ1OWZlZTllZDA4OGU1YzRkNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBF
eHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0Zh
aWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgIG1hdGVyaWFsaXplSW1wb3J0SlNDZWxsKGppdCwg
aW1wb3J0SW5kZXgsIGltcG9ydEpTQ2VsbEdQUlJlZyk7CiAKICAgICBqaXQuc3RvcmU2NChpbXBv
cnRKU0NlbGxHUFJSZWcsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwotICAgIGppdC5zdG9y
ZTMyKEpJVDo6VHJ1c3RlZEltbTMyKG51bWJlck9mUGFyYW1ldGVycyksIGNhbGxlZUZyYW1lLndp
dGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSk7CisgICAgaml0LnN0b3JlMzIoSklU
OjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0ZXJzKSwgY2FsbGVlRnJhbWUud2l0aE9mZnNl
dChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSk7CiAgICAgaml0LnN0b3Jl
NjQoSklUOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6VmFsdWVVbmRlZmluZWQpLCBjYWxsZWVGcmFt
ZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIAogICAgIC8vIEZJWE1FIFRhaWwgY2FsbCBpZiB0aGUg
d2FzbSByZXR1cm4gdHlwZSBpcyB2b2lkIGFuZCBubyByZWdpc3RlcnMgd2VyZSBzcGlsbGVkLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NDg4CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmlu
ZGV4IGE0OTczZWJiYTA0NjhhNjVkYjk1YzhiYTgzMjY0YWQ4ZmE4NmRkZDkuLjUyYjk5YzQyNjEw
OGY3M2Y0YThiNDM5NTdkMWVhYjM5ODg2ZWM4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0yNDMsNyArMjQz
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVu
Y3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhh
bmRsZSBtaXNtYXRjaGVkIGFyaXR5CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NjU2NAogICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpCZWxvdywKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpwYXlsb2FkRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaWdu
YXR1cmUuYXJndW1lbnRDb3VudCgpICsgMSkpKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpwYXls
b2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDEpKSk7CiAK
ICAgICBpZiAodXNlVGFnUmVnaXN0ZXJzKCkpCiAgICAgICAgIGppdC5lbWl0TWF0ZXJpYWxpemVU
YWdDaGVja1JlZ2lzdGVycygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGJlZmRiZmE5ODRiMjMzYmYwYjhiNmJkMjhhZjMxZDJhODBmMDRjZjMu
LmM5MTliMDQ0ZmE0NWQzYmZjMmIzMjc1NTVlNjk5NjZhODZhNDY0ZDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
OS0xMi0xOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtK
U0NdIEltcHJvdmUgb3VyIGJvdW5kIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1i
ZW5jaG1hcmtzOgorCiAyMDE5LTEyLTE4ICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+
CiAKICAgICAgICAgVXBkYXRlIFdlYkdMIGJvdCBob3N0bmFtZQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2ht
YXJrcwppbmRleCAyY2NmZTkyM2QzMGU1MGI3YjIwOWEyNDgwNDMyZTY3MmY2Y2IzZWQwLi5mNDMw
NmRjYmZlNDc4NGM0NTAxZWIwYmM2Njg2YzhhOTcwNDFkYzA4IDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrcworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVu
Y2htYXJrcwpAQCAtNTEsNiArNTEsNyBAQCBWOF9QQVRIID0gUEVSRk9STUFOQ0VURVNUU19QQVRI
ICsgIlN1blNwaWRlciIgKyAidGVzdHMiICsgInY4LXY2IgogVEFJTEJFTkNIX1BBVEggPSBQRVJG
T1JNQU5DRVRFU1RTX1BBVEggKyAiVGFpbEJlbmNoOTAwMCIKIEJJR0lOVEJFTkNIX1BBVEggPSBQ
RVJGT1JNQU5DRVRFU1RTX1BBVEggKyAiQmlnSW50QmVuY2giCiBNSUNST0JFTkNITUFSS1NfUEFU
SCA9IE9QRU5TT1VSQ0VfUEFUSCArICJKU1Rlc3RzIiArICJtaWNyb2JlbmNobWFya3MiCitTTE9X
X01JQ1JPQkVOQ0hNQVJLU19QQVRIID0gT1BFTlNPVVJDRV9QQVRIICsgIkpTVGVzdHMiICsgInNs
b3dNaWNyb2JlbmNobWFya3MiCiBPUEVOU09VUkNFX09DVEFORV9QQVRIID0gUEVSRk9STUFOQ0VU
RVNUU19QQVRIICsgIk9jdGFuZSIKIE9DVEFORV9XUkFQUEVSX1BBVEggPSBPUEVOU09VUkNFX09D
VEFORV9QQVRIICsgIndyYXBwZXJzIgogSlNCRU5DSF9QQVRIID0gUEVSRk9STUFOQ0VURVNUU19Q
QVRIICsgIkpTQmVuY2giCkBAIC0yMjQsNiArMjI1LDcgQEAgJGluY2x1ZGVWOENvbXBpbGVUaW1l
PXRydWUKICRpbmNsdWRlS3Jha2VuPXRydWUKICRpbmNsdWRlSlNCZW5jaD10cnVlCiAkaW5jbHVk
ZU1pY3JvYmVuY2htYXJrcz10cnVlCiskaW5jbHVkZVNsb3dNaWNyb2JlbmNobWFya3M9dHJ1ZQog
JGluY2x1ZGVBc21CZW5jaD10cnVlCiAkaW5jbHVkZURTUEpTPXRydWUKICRpbmNsdWRlQnJvd3Nl
cm1hcmtKUz1mYWxzZQpAQCAtMzIzLDYgKzMyNSw4IEBAIGRlZiB1c2FnZQogICBwdXRzICItLWty
YWtlbiAgICAgICAgICAgICBPbmx5IHJ1biBLcmFrZW4uIgogICBwdXRzICItLWpzLWJlbmNoICAg
ICAgICAgICBPbmx5IHJ1biBKU0JlbmNoLiIKICAgcHV0cyAiLS1taWNyb2JlbmNobWFya3MgICAg
T25seSBydW4gbWljcm9iZW5jaG1hcmtzLiIKKyAgcHV0cyAiLS1zbG93LW1pY3JvYmVuY2htYXJr
cyIKKyAgcHV0cyAiICAgICAgICAgICAgICAgICAgICAgT25seSBydW4gc2xvdy1taWNyb2JlbmNo
bWFya3MuIgogICBwdXRzICItLWRzcCAgICAgICAgICAgICAgICBPbmx5IHJ1biBEU1AuIgogICBw
dXRzICItLWFzbS1iZW5jaCAgICAgICAgICBPbmx5IHJ1biBBc21CZW5jaC4iCiAgIHB1dHMgIi0t
YnJvd3Nlcm1hcmstanMgICAgIE9ubHkgcnVuIGJyb3dzZXJtYXJrLWpzLiIKQEAgLTE3NzYsNiAr
MTc4MCwxOCBAQCBjbGFzcyBNaWNyb2JlbmNobWFya3NCZW5jaG1hcmsKICAgZW5kCiBlbmQKIAor
Y2xhc3MgU2xvd01pY3JvYmVuY2htYXJrc0JlbmNobWFyaworICBpbmNsdWRlIEJlbmNobWFyawor
ICAKKyAgZGVmIGluaXRpYWxpemUobmFtZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAor
ICBkZWYgZW1pdFJ1bkNvZGUocGxhbikKKyAgICBlbWl0QmVuY2hSdW5Db2RlKGZ1bGxuYW1lLCBw
bGFuLCBTaW5nbGVGaWxlVGltZWRCZW5jaG1hcmtQYXJhbWV0ZXJzLm5ldyhlbnN1cmVGaWxlKCJT
bG93TWljcm9iZW5jaG1hcmtzLSN7QG5hbWV9IiwgIiN7U0xPV19NSUNST0JFTkNITUFSS1NfUEFU
SH0vI3tAbmFtZX0uanMiKSkpCisgIGVuZAorZW5kCisKIGNsYXNzIEFzbUJlbmNoQmVuY2htYXJr
CiAgIGluY2x1ZGUgQmVuY2htYXJrCiAgIApAQCAtMjgxMSw2ICsyODI3LDcgQEAgYmVnaW4KICAg
ICAgICRpbmNsdWRlS3Jha2VuID0gZmFsc2UKICAgICAgICRpbmNsdWRlSlNCZW5jaCA9IGZhbHNl
CiAgICAgICAkaW5jbHVkZU1pY3JvYmVuY2htYXJrcyA9IGZhbHNlCisgICAgICAkaW5jbHVkZVNs
b3dNaWNyb2JlbmNobWFya3MgPSBmYWxzZQogICAgICAgJGluY2x1ZGVBc21CZW5jaCA9IGZhbHNl
CiAgICAgICAkaW5jbHVkZURTUEpTID0gZmFsc2UKICAgICAgICRpbmNsdWRlQnJvd3Nlcm1hcmtK
UyA9IGZhbHNlCkBAIC0yODM5LDYgKzI4NTYsNyBAQCBiZWdpbgogICAgICAgICAgICAgICAgICBb
Jy0ta3Jha2VuJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgICBb
Jy0tanMtYmVuY2gnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICAg
IFsnLS1taWNyb2JlbmNobWFya3MnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAg
ICAgICAgICAgIFsnLS1zbG93LW1pY3JvYmVuY2htYXJrcycsIEdldG9wdExvbmc6Ok5PX0FSR1VN
RU5UXSwKICAgICAgICAgICAgICAgICAgWyctLWFzbS1iZW5jaCcsIEdldG9wdExvbmc6Ok5PX0FS
R1VNRU5UXSwKICAgICAgICAgICAgICAgICAgWyctLWRzcCcsIEdldG9wdExvbmc6Ok5PX0FSR1VN
RU5UXSwKICAgICAgICAgICAgICAgICAgWyctLWJyb3dzZXJtYXJrLWpzJywgR2V0b3B0TG9uZzo6
Tk9fQVJHVU1FTlRdLApAQCAtMjkzOSw2ICsyOTU3LDkgQEAgYmVnaW4KICAgICB3aGVuICctLW1p
Y3JvYmVuY2htYXJrcycKICAgICAgIHJlc2V0QmVuY2hPcHRpb25zSWZOZWNlc3NhcnkKICAgICAg
ICRpbmNsdWRlTWljcm9iZW5jaG1hcmtzID0gdHJ1ZQorICAgIHdoZW4gJy0tc2xvdy1taWNyb2Jl
bmNobWFya3MnCisgICAgICByZXNldEJlbmNoT3B0aW9uc0lmTmVjZXNzYXJ5CisgICAgICAkaW5j
bHVkZVNsb3dNaWNyb2JlbmNobWFya3MgPSB0cnVlCiAgICAgd2hlbiAnLS1hc20tYmVuY2gnCiAg
ICAgICByZXNldEJlbmNoT3B0aW9uc0lmTmVjZXNzYXJ5CiAgICAgICAkaW5jbHVkZUFzbUJlbmNo
ID0gdHJ1ZQpAQCAtMzIwOCw2ICszMjI5LDE1IEBAIGJlZ2luCiAgICAgICBNSUNST0JFTkNITUFS
S1MuYWRkIE1pY3JvYmVuY2htYXJrc0JlbmNobWFyay5uZXcobmFtZSkKICAgICBlbmQKICAgfQor
CisgIFNMT1dfTUlDUk9CRU5DSE1BUktTID0gQmVuY2htYXJrU3VpdGUubmV3KCJTbG93TWljcm9i
ZW5jaG1hcmtzIiwgOmdlb21ldHJpY01lYW4sIDApCisgIERpci5mb3JlYWNoKFNMT1dfTUlDUk9C
RU5DSE1BUktTX1BBVEgpIHsKKyAgICB8IGZpbGVuYW1lIHwKKyAgICBpZiBmaWxlbmFtZSA9fiAv
XC5qcyQvCisgICAgICBuYW1lID0gJH4ucHJlX21hdGNoCisgICAgICBTTE9XX01JQ1JPQkVOQ0hN
QVJLUy5hZGQgU2xvd01pY3JvYmVuY2htYXJrc0JlbmNobWFyay5uZXcobmFtZSkKKyAgICBlbmQK
KyAgfQogICAKICAgQVNNQkVOQ0ggPSBCZW5jaG1hcmtTdWl0ZS5uZXcoIkFzbUJlbmNoIiwgOmdl
b21ldHJpY01lYW4sIDApCiAgIGlmIEFTTUJFTkNIX1BBVEgKQEAgLTMzNTQsNiArMzM4NCwxMCBA
QCBiZWdpbgogICAgICRzdWl0ZXMgPDwgTUlDUk9CRU5DSE1BUktTCiAgIGVuZAogCisgIGlmICRp
bmNsdWRlU2xvd01pY3JvYmVuY2htYXJrcyBhbmQgbm90IFNMT1dfTUlDUk9CRU5DSE1BUktTLmVt
cHR5PworICAgICRzdWl0ZXMgPDwgU0xPV19NSUNST0JFTkNITUFSS1MKKyAgZW5kCisKICAgaWYg
JGluY2x1ZGVCaWdJbnRCZW5jaCBhbmQgbm90IEJJR0lOVEJFTkNILmVtcHR5PwogICAgICRzdWl0
ZXMgPDwgQklHSU5UQkVOQ0gKICAgZW5kCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFlN2YxNmI4ZTM1NDA4NmIwYmQ2ZTU4NGI3ZTNkMjYz
NjdlYjc3YjguLjE4OTg0Y2E1ZjA3NzYwZWE3MWY0ZTljNTM3MDM5OTY2YTkzY2U1OTUgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTktMTItMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbSlNDXSBJbXByb3ZlIG91ciBib3VuZCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MzI3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvZnVuY3Rpb24tYmluZC1uby1pbmxpbmluZy1yZXBlYXQtY2FsbC5qczogQWRk
ZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0Mik6
CisgICAgICAgIChmb28pOgorICAgICAgICAobGV0LnN0YXJ0LkRhdGUubm93KToKKyAgICAgICAg
KiBzdHJlc3MvYmluZC1hcmdzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAodGVzdDIpOgorCiAyMDE5LTEyLTE3ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gOEJpdCBKU1JvcGVTdHJpbmcg
Y2FuIGNvbnRhaW4gMTZCaXQgc3RyaW5nIGluIGl0cyByb3BlCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1iaW5kLW5vLWlubGluaW5nLXJlcGVhdC1jYWxsLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tYmluZC1uby1pbmxpbmluZy1yZXBl
YXQtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODI4Zjc0OTc2M2E5MmMzNTliNWFhN2Q2YTk4N2NmN2I4
ZTdiM2EzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rp
b24tYmluZC1uby1pbmxpbmluZy1yZXBlYXQtY2FsbC5qcwpAQCAtMCwwICsxLDM2IEBACisKK2Z1
bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkJhZCIpCit9Citub0lubGluZShhc3NlcnQpOworCitmdW5jdGlvbiB0ZXN0KGYsIHYsIGMsIGQp
IHsKKyAgICByZXR1cm4gZi5iaW5kKHYsIGMsIGQpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Z1
bmN0aW9uIHRlc3QyKGYsIHYpIHsKKyAgICByZXR1cm4gZi5iaW5kKHYpOworfQorbm9JbmxpbmUo
dGVzdCk7CisKK2Z1bmN0aW9uIGZvbyhhLGIsYyxkLGUsZikgeyByZXR1cm4gdGhpczsgfQorbGV0
IHRoaXNWYWx1ZSA9IHt9OworbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKKworeworICAgIGxldCBm
ID0gdGVzdChmb28sIHRoaXNWYWx1ZSwgMjAsIDMwKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoZihmb28sIHRoaXNWYWx1ZSwgMjAsIDMw
KSA9PT0gdGhpc1ZhbHVlKTsKKyAgICB9Cit9Cit7CisgICAgbGV0IGYgPSB0ZXN0Mihmb28sIHRo
aXNWYWx1ZSk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHsKKyAgICAg
ICAgYXNzZXJ0KGYoZm9vLCB0aGlzVmFsdWUsIDIwLCAzMCkgPT09IHRoaXNWYWx1ZSk7CisgICAg
fQorfQorY29uc3QgdmVyYm9zZSA9IGZhbHNlOworaWYgKHZlcmJvc2UpCisgICAgcHJpbnQoRGF0
ZS5ub3coKSAtIHN0YXJ0KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpbmQtYXJncy5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpbmQtYXJncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzdkNmZiYzQ0ODJm
ZjkxMzJhNjkwMmI3NWMwN2FhMzNmOGRkOWM3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvYmluZC1hcmdzLmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hv
dWxkQmUpOworCitmdW5jdGlvbiB0ZXN0KGEsIGIsIGMsIGQsIGUpCit7CisgICAgcmV0dXJuIGEg
KyBiICsgYyArIGQgKyBlOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Z1bmN0aW9uIHRlc3QyKGEs
IGIsIGMsIGQsIGUsIGYpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBlICsgZjsKK30K
K25vSW5saW5lKHRlc3QyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAzZTQ7ICsraSkgeworICAg
IHNob3VsZEJlKHRlc3QuYmluZCh1bmRlZmluZWQpKDEsIDIsIDMsIDQsIDUpLCAxNSk7CisgICAg
c2hvdWxkQmUodGVzdC5iaW5kKHVuZGVmaW5lZCwgMSkoMiwgMywgNCwgNSksIDE1KTsKKyAgICBz
aG91bGRCZSh0ZXN0LmJpbmQodW5kZWZpbmVkLCAyLCAzKSg0LCA1LCA2KSwgMjApOworICAgIHNo
b3VsZEJlKHRlc3QuYmluZCh1bmRlZmluZWQsIDIsIDMsIDQpKDUsIDYpLCAyMCk7CisgICAgc2hv
dWxkQmUodGVzdC5iaW5kKHVuZGVmaW5lZCwgMiwgMywgNCwgNSkoNiksIDIwKTsKKyAgICBzaG91
bGRCZSh0ZXN0LmJpbmQodW5kZWZpbmVkLCAyLCAzLCA0LCA1LCA2KSgpLCAyMCk7CisKKyAgICBz
aG91bGRCZSh0ZXN0Mi5iaW5kKHVuZGVmaW5lZCkoMSwgMSwgMiwgMywgNCwgNSksIDE2KTsKKyAg
ICBzaG91bGRCZSh0ZXN0Mi5iaW5kKHVuZGVmaW5lZCwgMSkoMSwgMiwgMywgNCwgNSksIDE2KTsK
KyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMSkoMiwgMywgNCwgNSksIDE2
KTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMykoNCwgNSwgNiks
IDIxKTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMywgNCkoNSwg
NiksIDIxKTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMywgNCwg
NSkoNiksIDIxKTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMywg
NCwgNSwgNikoKSwgMjEpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386183</attachid>
            <date>2019-12-19 22:31:16 -0800</date>
            <delta_ts>2019-12-20 12:00:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205327-20191219223115.patch</filename>
            <type>text/plain</type>
            <size>172150</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZTA5NTY0ZjcwYmZmMDYyODFmODQzZDU0OWEwZGI3YzNhYzNkYmRlLi5hNTA2MWVmODIzZDNhMmVk
N2I3MTRiMThlMDQwY2JlZGUzYjlhM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzIgQEAKKzIwMTktMTItMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIG91ciBib3VuZCBmdW5jdGlvbiBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1
MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXByb3ZlcyBGdW5jdGlvbiNiaW5kLCBhbmQgY2FsbGluZyBib3VuZCBmdW5jdGlv
biB3aXRoIGJvdW5kIGFyZ3VtZW50cy4KKworICAgICAgICAxLiBSZW5hbWUgQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCB0byBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcy4KKyAgICAgICAgMi4gRG8gbm90IGluY2x1ZGUgbmFtZSBpbiBOYXRpdmVFeGVjdXRhYmxl
IGZvciBKU0JvdW5kRnVuY3Rpb24uIFB1dHRpbmcgbmFtZSBpbiBOYXRpdmVFeGVjdXRhYmxlIGlz
IGFzc3VtaW5nIHRoYXQgZnVuY3Rpb24gKyBuYW1lIHBhaXIgaXMgYWxtb3N0IGlkZW50aWNhbC4K
KyAgICAgICAgICAgVGhpcyBpcyB0cnVlIGluIGhvc3QgZnVuY3Rpb25zIGV4Y2VwdCBmb3IgSlNC
b3VuZEZ1bmN0aW9uLiBKU0JvdW5kRnVuY3Rpb24gc2hvdWxkIGhvbGQgaXRzIG5hbWUgaW4gSlNC
b3VuZEZ1bmN0aW9uLgorICAgICAgICAzLiBDYWNoZSBOYXRpdmVFeGVjdXRhYmxlIGZvciBKU0Jv
dW5kRnVuY3Rpb24gaW4gVk0uIFVzaW5nIGhhc2gtbWFwIGluIEpJVFRodW5rIGZvciBOYXRpdmVF
eGVjdXRhYmxlIGlzIGFzc3VtaW5nIHRoYXQgaG9zdC1mdW5jdGlvbiBjcmVhdGlvbiBpcyBub3Qg
ZG9uZSBieQorICAgICAgICAgICB1c2VyIHByb2dyYW06IGVhY2ggZnVuY3Rpb24gaXMgcHJlLWRl
ZmluZWQgb25lIGJ5IHRoZSBlbnZpcm9ubWVudCwgYW5kIHRoZXJlIGlzIG5vIGNhc2UgY3JlYXRp
bmcgaG9zdC1mdW5jdGlvbnMgcmVwZWF0ZWRseSBmcm9tIHVzZXItcHJvZ3JhbS4gVGhpcyBpcyBu
b3QKKyAgICAgICAgICAgdHJ1ZSBmb3IgSlNCb3VuZEZ1bmN0aW9uLiBXZSBzaG91bGQgY2FjaGUg
TmF0aXZlRXhlY3V0YWJsZSBpbiBWTSB0byBsb29rIHVwIGZhc3QuCisgICAgICAgIDQuIFRodW5r
R2VuZXJhdG9yIHNob3VsZCBzdXBwb3J0IEpTQm91bmRGdW5jdGlvbiBjYWxsIHdpdGggYm91bmQg
YXJndW1lbnRzLiBJdCB0dXJucyBvdXQgdGhhdCBTcGVlZG9tZXRlcjIvUmVhY3QtUmVkdXgtVG9k
b01WQyBpcyB1c2luZyBib3VuZCBmdW5jdGlvbiB3aXRoCisgICAgICAgICAgIGJvdW5kIGFyZ3Vt
ZW50cy4gQW5kIGl0IGlzIHVzZWQgYXMgZXZlbnQgbGlzdGVuZXIuIFRoaXMgaXMgcmVhbGx5IGJh
ZDogd2hlbiBkaXNwYXRjaGluZyBhbiBldmVudCwgd2UgZmlyc3QgY2FsbCB0aGlzIGZ1bmN0aW9u
IGZyb20gQysrLCBlbnRlcmluZyBKUyB3b3JsZCwKKyAgICAgICAgICAgZ29pbmcgYmFjayB0byBD
Kysgd29ybGQgYWdhaW4sIGFuZCBlbnRlcmluZyBKUyB3b3JsZCB0byBjYWxsIGJvdW5kIGZ1bmN0
aW9uIGFnYWluLiBCeSB1c2luZyBUaHVua0dlbmVyYXRvciwgd2UgY2FuIGVsaW1pbmF0ZSB0aGlz
IGJhY2sgYW5kIGZvcnRoIGJ5IGRpcmVjdGx5CisgICAgICAgICAgIGNhbGxpbmcgYm91bmQgSlMg
RXhlY3V0YWJsZSBmcm9tIHRodW5rLiBQcmV2aW91c2x5LCBib3VuZCBhcmd1bWVudHMgYXJlIHN0
b3JlZCBpbiBKU0FycmF5LiBCdXQgaXQgaXMgZGlmZmljdWx0IHRvIGFjY2VzcyB0aGVtIGZyb20g
dGh1bmsgc2luY2Ugd2UgbmVlZCB0byBjb25zaWRlcgorICAgICAgICAgICBoYXZlLWEtYmFkLXRp
bWUgY2FzZS4gSW5zdGVhZCwgd2UgdXNlIEpTSW1tdXRhYmxlQnV0dGVyZmx5IHRvIHNhdmUgYm91
bmQgYXJndW1lbnRzIHNvIHRoYXQgSklUIHRodW5rIGNhbiBxdWlja2x5IGFjY2VzcyBhcmd1bWVu
dHMuIFRvIGNhcHR1cmUgYXJndW1lbnRzIGFzCisgICAgICAgICAgIEpTSW1tdXRhYmxlQnV0dGVy
Zmx5IGluIEpTIHdvcmxkLCB3ZSBpbnRyb2R1Y2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJm
bHksIGFuZCBoYW5kbGUgaXQgaW4gYWxsIHRpZXJzLgorICAgICAgICA1LiBJdCB0dXJucyBvdXQg
dGhhdCBlYWdlciBtYXRlcmlhbGl6YXRpb24gb2YgImxlbmd0aCIgaW4gSlNCb3VuZEZ1bmN0aW9u
IHRha2VzIGxvbmcgdGltZSB3aGlsZSBpdCBpcyByYXJlbHkgdXNlZC4gVGhpcyBwYXRjaCBtYWtl
cyBsZW5ndGggbGF6aWx5IHJlaWZpZWQgZm9yIEpTQm91bmRGdW5jdGlvbi4KKyAgICAgICAgNi4g
VG8gbWFrZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBmYXN0ZXIsIHdlIHRyYWNrIHdoZXRoZXIg
Im5hbWUiIGFuZCAibGVuZ3RoIiBwcm9wZXJ0aWVzIG9mIEpTRnVuY3Rpb24gaXMgbW9kaWZpZWQg
b3Igbm90LiBUaGlzIHNraXBzIGhhcy1vd24tbGVuZ3RoLXByb3BlcnR5IGNoZWNrLCB3aGljaAor
ICAgICAgICAgICBtYWtlcyBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAxMX4lIGZhc3Rlci4KKwor
ICAgICAgICBDb21iaW5pbmcgdGhpbmdzIGFib3ZlLCBjcmVhdGlvbiBvZiBKU0JvdW5kRnVuY3Rp
b24gaXMgODB+JSBmYXN0ZXIuIEFuZCBjYWxsaW5nIGJvdW5kIGZ1bmN0aW9uIHdpdGggYm91bmQg
YXJndW1lbnRzIGlzIDN+eCBmYXN0ZXIuCisKKyAgICAgICAgKiBidWlsdGlucy9GdW5jdGlvblBy
b3RvdHlwZS5qczoKKyAgICAgICAgKGJpbmQpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKEpTQzo6
U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czo6Z2VuZXJhdGVJbXBsKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5jcHA6CisgICAgICAgIChKU0M6OlZpcnR1YWxSZWdp
c3Rlcjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHkpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2NyZWF0ZUFyZ3VtZW50
c0J1dHRlcmZseSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6YXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdCk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6Zmx1c2hJbXBsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlVmFyYXJnc0lubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9E
RkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
Tm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6aXNMaXZlSW5CeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6R3JhcGg6OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgor
ICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0U3RvcmVDYWxsU2l0ZUluZGV4KToK
KyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXNQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TG9jYWxPU1JBdmFp
bGFiaWxpdHlDYWxjdWxhdG9yOjpleGVjdXRlTm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRSZXN0b3JlQXJndW1lbnRzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXRDb21waWxlckNvbW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2Fs
bEZyYW1lcyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6
cmVhZFRvcCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93ZXIpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURpcmVjdENhbGxP
ckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRBcmd1bWVudHNMZW5ndGgpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjYWxsUHJlZmxpZ2h0KToKKyAgICAgICAg
KiBmdGwvRlRMU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6OkZUTDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6
Q2FsbEZyYW1lOjpjYWxsU2l0ZUFzUmF3Qml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxG
cmFtZTo6dW5zYWZlQ2FsbFNpdGVBc1Jhd0JpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWU6OnNldEN1cnJlbnRWUEMpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5o
OgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUpOgorICAgICAgICAq
IGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjph
cmd1bWVudENvdW50KToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6cHJlcGFyZUZvclRhaWxDYWxsU2xvdyk6CisgICAgICAgICogaml0
L0NhbGxGcmFtZVNodWZmbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6
OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUZv
clRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyk6
CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVT
ZXR1cEZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAg
KiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBG
cmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0
L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjp1cGRhdGVUb3BDYWxsRnJhbWUpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2FyZ3VtZW50X2NvdW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9yZXN0X2xl
bmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnQpOgorICAgICAg
ICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OmVtaXRTZXR1cFZh
cmFyZ3NGcmFtZUZhc3RDYXNlKToKKyAgICAgICAgKiBqaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5o
OgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpTcGVjaWFsaXplZFRodW5rSklU
KToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6YXJp
dHlGaXh1cEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmg6CisgICAgICAgICog
anNjLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpM
TEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGVCYXNl
Lmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25SYXJlRGF0YTo6RnVuY3Rpb25SYXJlRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21w
YXJlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6
CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAg
ICogcnVudGltZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAoSlNDOjppbnRyaW5zaWNOYW1lKToK
KyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxs
KToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpib3Vu
ZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rp
b25Db25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6SlNCb3VuZEZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpib3VuZEFyZ3NDb3B5KToKKyAgICAgICAgKEpTQzo6SlNC
b3VuZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6bmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnB1dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rp
b246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3du
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpyZWlmeUxlbmd0aCk6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpyZWlmeUxhenlQcm9wZXJ0eUZvckhvc3RPckJ1aWx0aW5JZk5l
ZWRlZCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnJlaWZ5TGF6eUJvdW5kTmFtZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb25JbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFyZU5hbWVB
bmRMZW5ndGhPcmlnaW5hbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6Om1ha2VCb3VuZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6aGFzT3du
TGVuZ3RoUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6Z2V0SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmdldENhbGxEYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Z2V0Q29uc3RydWN0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbERhdGEpOgor
ICAgICAgICAoSlNDOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNw
cDoKKyAgICAgICAgKEpTQzo6dGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMpOgorICAgICAgICAo
SlNDOjpWTTo6Z2V0Qm91bmRGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAqIHdhc20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9K
Uyk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3cpOgorCiAyMDE5
LTEyLTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pT
Q10gOEJpdCBKU1JvcGVTdHJpbmcgY2FuIGNvbnRhaW4gMTZCaXQgc3RyaW5nIGluIGl0cyByb3Bl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90
b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5
cGUuanMKaW5kZXggZTQwYTY5NjMwMDJmYjg2MjY3NDg2ZWU0ZDYzNmIyOGEwNzhjNGVlNi4uZjU5
MzUyN2RjM2M0N2IzYWExNmRjMzA3ZmYwYWRjNTNjNWY3NTNiNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtNjEsMjMg
KzYxLDIxIEBAIGZ1bmN0aW9uIGJpbmQodGhpc1ZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsK
IAotICAgIGxldCB0YXJnZXQgPSB0aGlzOworICAgIHZhciB0YXJnZXQgPSB0aGlzOwogICAgIGlm
ICh0eXBlb2YgdGFyZ2V0ICE9PSAiZnVuY3Rpb24iKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
Inx0aGlzfCBpcyBub3QgYSBmdW5jdGlvbiBpbnNpZGUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQi
KTsKIAotICAgIGxldCBhcmd1bWVudENvdW50ID0gYXJndW1lbnRzLmxlbmd0aDsKLSAgICBsZXQg
Ym91bmRBcmdzID0gbnVsbDsKLSAgICBsZXQgbnVtQm91bmRBcmdzID0gMDsKKyAgICB2YXIgYXJn
dW1lbnRDb3VudCA9IEBhcmd1bWVudENvdW50KCk7CisgICAgdmFyIGJvdW5kQXJncyA9IG51bGw7
CisgICAgdmFyIG51bUJvdW5kQXJncyA9IDA7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPiAxKSB7
CiAgICAgICAgIG51bUJvdW5kQXJncyA9IGFyZ3VtZW50Q291bnQgLSAxOwotICAgICAgICBib3Vu
ZEFyZ3MgPSBAbmV3QXJyYXlXaXRoU2l6ZShudW1Cb3VuZEFyZ3MpOwotICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IG51bUJvdW5kQXJnczsgaSsrKQotICAgICAgICAgICAgQHB1dEJ5VmFsRGly
ZWN0KGJvdW5kQXJncywgaSwgYXJndW1lbnRzW2kgKyAxXSk7CisgICAgICAgIGJvdW5kQXJncyA9
IEBjcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoKTsKICAgICB9CiAKLSAgICBsZXQgbGVuZ3RoID0g
MDsKKyAgICB2YXIgbGVuZ3RoID0gMDsKICAgICBpZiAoQGhhc093bkxlbmd0aFByb3BlcnR5KHRh
cmdldCkpIHsKLSAgICAgICAgbGV0IGxlbmd0aFZhbHVlID0gdGFyZ2V0Lmxlbmd0aDsKKyAgICAg
ICAgdmFyIGxlbmd0aFZhbHVlID0gdGFyZ2V0Lmxlbmd0aDsKICAgICAgICAgaWYgKHR5cGVvZiBs
ZW5ndGhWYWx1ZSA9PT0gIm51bWJlciIpIHsKICAgICAgICAgICAgIGxlbmd0aFZhbHVlID0gbGVu
Z3RoVmFsdWUgfCAwOwogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIG9ubHkgY2FyZSBhYm91
dCBwb3NpdGl2ZSBsZW5ndGhWYWx1ZXMsIGhvd2V2ZXIsIHRoaXMgY29tcGFyaXNpb24KQEAgLTg3
LDkgKzg1LDkgQEAgZnVuY3Rpb24gYmluZCh0aGlzVmFsdWUpCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBsZXQgbmFtZSA9IHRhcmdldC5uYW1lOworICAgIHZhciBuYW1lID0gdGFyZ2V0Lm5hbWU7
CiAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAic3RyaW5nIikKICAgICAgICAgbmFtZSA9ICIiOwog
Ci0gICAgcmV0dXJuIEBtYWtlQm91bmRGdW5jdGlvbih0YXJnZXQsIGFyZ3VtZW50c1swXSwgYm91
bmRBcmdzLCBsZW5ndGgsIG5hbWUpOworICAgIHJldHVybiBAbWFrZUJvdW5kRnVuY3Rpb24odGFy
Z2V0LCB0aGlzVmFsdWUsIGJvdW5kQXJncywgbGVuZ3RoLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCA2MDA2MmY5ZDQ4MDZm
NzkyM2JkMzkzZDNhNzU5MmViOGI1MDU4ODM4Li5kZDlhY2NhOWFkYzkwMjlhMGFlMWJjYWU5YjIw
NjI2YWRkNjUyNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCkBAIC0xNTA4LDcgKzE1MDgsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgIGppdC5zdG9yZTMy
KAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGUuY2FsbFNpdGVJ
bmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nT3JPcmlnaW5hbCgpLmJpdHMoKSksCi0gICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRh
Z0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogCiAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyIHx8
IG1fdHlwZSA9PSBTZXR0ZXIpIHsKICAgICAgICAgICAgIGF1dG8mIGFjY2VzcyA9IHRoaXMtPmFz
PEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCk7CkBAIC0xNTg1LDcgKzE1ODUsNyBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAg
ICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihudW1iZXJPZlBhcmFtZXRlcnMpLAotICAgICAgICAgICAgICAgIGNhbGxlZUZy
YW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdp
c3RlcikgKyBQYXlsb2FkT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWUud2l0
aE9mZnNldChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHNpemVv
ZihSZWdpc3RlcikgKyBQYXlsb2FkT2Zmc2V0KSk7CiAKICAgICAgICAgICAgIGppdC5zdG9yZUNl
bGwoCiAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZz
ZXQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwpAQCAtMTc5Nyw3
ICsxNzk3LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKCku
Yml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGlj
X2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwor
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0
dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5tYWtlU3BhY2VPblN0YWNr
Rm9yQ0NhbGwoKTsKICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCmluZGV4IGEx
NzRlMjQ3M2Y3NTMwY2M3NzcxNTNjNjNiMTMxMzMwZWU1OGY1ODguLmIxZDQwNGExNDViZDIxNDFi
M2EwYTljNDMxOTE4YTU4ZjlhZjE4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVibGlj
IEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zOjpTbG93UAogCiAgICAgICAgIGppdC5zdG9yZTMyKAog
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGUuY2FsbFNpdGVJbmRl
eEZvckV4Y2VwdGlvbkhhbmRsaW5nT3JPcmlnaW5hbCgpLmJpdHMoKSksCi0gICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSkpOwogCiAgICAgICAgIGppdC5tYWtlU3BhY2VPblN0YWNrRm9yQ0Nh
bGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggZjc2Zjc4NWJlMWJhMDQyZGFmOGRhMzMz
ZDJiMTM5ZDNhMTgzMDM5Yy4uODQ5ZTM0YjE4OGE1OTc5ZjU1MTQyZTA1MzAyZDVlMjdhYTdmZDNk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC03NCw2ICs3NCw3IEBAIGVudW0gY2xhc3MgTGlu
a1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAgICAgbWFjcm8obmV3QXJyYXlXaXRoU2l6ZSkgXAog
ICAgIG1hY3JvKG5ld1Byb21pc2UpIFwKICAgICBtYWNybyhjcmVhdGVQcm9taXNlKSBcCisgICAg
bWFjcm8oY3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KSBcCiAgICAgbWFjcm8oZGVmaW5lRW51bWVy
YWJsZVdyaXRhYmxlQ29uZmlndXJhYmxlRGF0YVByb3BlcnR5KSBcCiAKICNkZWZpbmUgSlNDX0NP
TU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShtYWNybykgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggNzFi
ZjZiMDZjYzdlZjQ5MGY3YjM2YWEzZTIwMDY1MTc3ODdhZmZhNC4uYTliZDQ4MzcxYjRlMzBkYWY2
MDQ0ZDA5NDlhMDcxZDE0YTFhZDA3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMDgsNiArMTA4LDExIEBACiAgICAgICAgIGRzdDog
VmlydHVhbFJlZ2lzdGVyLAogICAgIH0KIAorb3AgOmNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5
LAorICAgIGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBv
cCA6Y3JlYXRlX3RoaXMsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3Rl
ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwCmluZGV4IGViNjMyOTM0ZWI2YzFmYzVjY2FhNzFiMGU0MjkzYWE5YWQ2NjJlOTUuLmMwMThk
ZGZiOGIwMzk4MjNlMDYwOWNmNjU3NzgzMjBjMzI5YTIzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtODEsNiArODEsNyBA
QCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNj
b3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zs
b3c6CiAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2Ny
ZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0
ZXJmbHk6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9jaGVja190
cmFwczoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKQEAgLTQ3MSw2ICs0NzIsNyBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BDcmVhdGVEaXJlY3RBcmd1bWVudHMsIGRz
dCkKICAgICBERUZTKE9wQ3JlYXRlU2NvcGVkQXJndW1lbnRzLCBkc3QpCiAgICAgREVGUyhPcENy
ZWF0ZUNsb25lZEFyZ3VtZW50cywgZHN0KQorICAgIERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHksIGRzdCkKICAgICBERUZTKE9wRGVsQnlJZCwgZHN0KQogICAgIERFRlMoT3BEZWxCeVZh
bCwgZHN0KQogICAgIERFRlMoT3BVbnNpZ25lZCwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmNwcAppbmRleCA0NWM2YmExY2EwMjgy
ODJmYmRhZjZiYjJhODAzMDYxMWNmNTM0ODcyLi5jNjJkOTUxM2VhNTUzMzBlMGI0MWViM2ZlOGEw
MzVjODVmNjM4NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmlydHVhbFJlZ2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmlydHVhbFJlZ2lzdGVyLmNwcApAQCAtNDIsOCArNDIsOCBAQCB2b2lkIFZpcnR1YWxSZWdpc3Rl
cjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICAgICAgb3V0LnByaW50KCJj
b2RlQmxvY2siKTsKICAgICAgICAgZWxzZSBpZiAobV92aXJ0dWFsUmVnaXN0ZXIgPT0gQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlKQogICAgICAgICAgICAgb3V0LnByaW50KCJjYWxsZWUiKTsKLSAgICAg
ICAgZWxzZSBpZiAobV92aXJ0dWFsUmVnaXN0ZXIgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCkKLSAgICAgICAgICAgIG91dC5wcmludCgiYXJndW1lbnRDb3VudCIpOworICAgICAgICBl
bHNlIGlmIChtX3ZpcnR1YWxSZWdpc3RlciA9PSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykKKyAgICAgICAgICAgIG91dC5wcmludCgiYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMiKTsKICNpZiBDUFUoQUREUkVTUzY0KQogICAgICAgICBlbHNlIGlmICghbV92aXJ0
dWFsUmVnaXN0ZXIpCiAgICAgICAgICAgICBvdXQucHJpbnQoImNhbGxlckZyYW1lIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCmluZGV4IGY4MGE3YzRmNjA4MTk1NWUxZTI0Y2UyMDU0YzAxM2FkY2JkNzg3ZTMu
LmI1MmZjNjIzNTQzYjRjMWMzN2YyMTRlNzIxNzRiOTJlMjlhNTQ1NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCkBAIC0yNzI2LDYgKzI3MjYsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDcmVhdGVBc3luY0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGUKICAgICBy
ZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseShSZWdpc3RlcklEKiBkc3QpCit7CisgICAgT3BDcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHk6OmVtaXQodGhpcywgZHN0KTsKKyAgICByZXR1cm4gZHN0OworfQorCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KQog
ewogICAgIE9wQ2hlY2tUZHo6OmVtaXQodGhpcywgdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA5
M2IxM2Y2ZGE4MTllMzFmZTA3YTA0NWZmZWYwZWYyNmNiNTFlNmY5Li5lMTRhYTE2NTYyODEwZmQ5
NjM3ZTAwYWVlN2NlYmZlZDQ1NjEwNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03MjYsNiArNzI2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVQcm9taXNl
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogbmV3VGFyZ2V0LCBib29sIGlzSW50ZXJuYWxQ
cm9taXNlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENyZWF0ZUdlbmVyYXRvcihSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRDcmVhdGVBc3luY0dlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1Rh
cmdldCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHko
UmVnaXN0ZXJJRCogZHN0KTsKICAgICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCog
dGFyZ2V0KTsKICAgICAgICAgYm9vbCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxlJik7CiAg
ICAgICAgIHZvaWQgZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUmLCBSZWdp
c3RlcklEKiB0YXJnZXQsIFJlZ2lzdGVySUQqIHNjb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA1YTkzMDEzYzM3
Y2IyZDgwMmFlZmU0NmQwM2IzNDAwOGU4OTk2YjY0Li5lNGYyYWVhY2RiYjE3NDJmY2I5NzU2ZGJj
Njk2M2NjNDU2MWI1Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xNDYzLDYgKzE0NjMsMTIgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19uZXdQcm9taXNlKEpTQzo6
Qnl0ZWNvZGVHZW5lcmEKICAgICByZXR1cm4gZmluYWxEZXN0aW5hdGlvbi5nZXQoKTsKIH0KIAor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19jcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHkoSlNDOjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6
OlJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZSk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2RlZmluZUVudW1lcmFibGVXcml0YWJsZUNvbmZpZ3Vy
YWJsZURhdGFQcm9wZXJ0eShKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIEpTQzo6
UmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNjRhY2I1NDBkNDBhZTE3OThmN2My
MjM2ZDgxZGZlMWM4NDA4ZDUzMC4uZGMxYzY0ZWU0ZTc2ZThmMTFiMzYxNmE1OWI1MzcyYzE3NGE2
N2U3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjk2NCw2ICsyOTY0LDEwIEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIHNldEZvck5vZGUobm9kZSwgbV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1bWVudHNTdHJ1
Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHk6CisgICAgICAgIHNldEZvck5vZGUobm9kZSwgbV92bS5pbW11dGFibGVCdXR0ZXJmbHlT
dHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRo
Q29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSk7CisgICAgICAgIGJy
ZWFrOworCiAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgc2V0Rm9yTm9k
ZShub2RlLCAKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcAppbmRleCBhZjJlZGE0YWQ4OGU5Yjk3YWFkNWY0ZjkzOTIzNzYyMTk1MmFlZjg0
Li43MTNlNzk5OWE3YmZjYTIxZGRjZWE4ZTM0NjI2MGYzNDMxZTRkOTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5jcHAKQEAgLTU2MCw3ICs1NjAsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZy
YW1lLT5pc1ZhcmFyZ3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Ns
b2JiZXJlZEJ5QmxvY2sgfD0gY2xvYmJlcmVkQnlUaGlzQmxvY2sub3BlcmFuZCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJlZEJ5Qmxv
Y2sgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKaW5kZXggNjI2MTEy
M2NiZmVjM2ViYTE5NWQwOWI5MzEwMjZmMjZjNzI1ODQ3Ni4uZmYxZDU2ODBmYWUwYTIwMDE0ZDFm
MWUxM2RjM2U0OGQ4YzU0MzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcApAQCAtNDIsNyArNDIsNyBAQCBib29sIGFyZ3Vt
ZW50c0ludm9sdmVTdGFja1Nsb3QoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIFZp
cnR1YWxSZWdpc3RlcgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKQotICAgICAgICAmJiByZWcgPT0gVmlydHVhbFJlZ2lzdGVy
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KSkKKyAgICAgICAgJiYgcmVnID09IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBXZSBkbyBub3QgaW5jbHVkZSBm
aXh1cHMgaGVyZSBzaW5jZSBpdCBpcyBub3QgcmVsYXRlZCB0byB8YXJndW1lbnRzfCwgcmVzdCBw
YXJhbWV0ZXJzLCBhbmQgdmFyYXJncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggN2U0YTlmZTYyMzNiNzQ0OWU4Mjg2NjJjMWU0OTlk
YzllODQ0MDhiNy4uMDMwZmFiZmEzMDdmMTlhMjY3YzBjZDVmYzNhZTU5ODNjZGFjYTdlMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAg
LTU1Miw3ICs1NTIsNyBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQogICAgICAgICAgICAgICAgIGFkZEZsdXNo
RGlyZWN0KGlubGluZUNhbGxGcmFtZSwgcmVtYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwgVmly
dHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpKTsKICAgICAgICAgICAgIGlmIChp
bmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICAgICAgICAgIGFkZEZsdXNoRGly
ZWN0KGlubGluZUNhbGxGcmFtZSwgcmVtYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwgVmlydHVh
bFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAg
ICAgYWRkRmx1c2hEaXJlY3QoaW5saW5lQ2FsbEZyYW1lLCByZW1hcE9wZXJhbmQoaW5saW5lQ2Fs
bEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbnVtQXJndW1lbnRzID0g
bV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpLT5udW1QYXJhbWV0
ZXJzKCk7CiAKQEAgLTE5MDIsNyArMTkwMiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVZhcmFyZ3NJbmxpbmluZyhOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyCiAg
ICAgICAgIAogICAgICAgICBMb2FkVmFyYXJnc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbG9hZFZh
cmFyZ3NEYXRhLmFkZCgpOwogICAgICAgICBkYXRhLT5zdGFydCA9IFZpcnR1YWxSZWdpc3Rlcihy
ZW1hcHBlZEFyZ3VtZW50U3RhcnQgKyAxKTsKLSAgICAgICAgZGF0YS0+Y291bnQgPSBWaXJ0dWFs
UmVnaXN0ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpOworICAgICAgICBkYXRhLT5jb3VudCA9IFZpcnR1YWxSZWdpc3RlcihyZW1hcHBlZFJl
Z2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
OwogICAgICAgICBkYXRhLT5vZmZzZXQgPSBhcmd1bWVudHNPZmZzZXQ7CiAgICAgICAgIGRhdGEt
PmxpbWl0ID0gbWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIGRhdGEtPm1h
bmRhdG9yeU1pbmltdW0gPSBtYW5kYXRvcnlNaW5pbXVtOwpAQCAtMTkyMiw3ICsxOTIyLDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJn
ZXROb2RlLCBWaXJ0dWFsUmVnaXN0ZXIKICAgICAgICAgLy8gU1NBLiBGb3J0dW5hdGVseSwgd2Ug
YWxzbyBoYXZlIG90aGVyIHJlYXNvbnMgZm9yIG5vdCBpbnNlcnRpbmcgY29udHJvbCBmbG93CiAg
ICAgICAgIC8vIGJlZm9yZSBTU0EuCiAgICAgICAgIAotICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIGNvdW50VmFyaWFibGUgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEoVmlydHVhbFJlZ2lzdGVy
KHJlbWFwcGVkUmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7
CisgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY291bnRWYXJpYWJsZSA9IG5ld1ZhcmlhYmxl
QWNjZXNzRGF0YShWaXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCArIENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIC8vIFRoaXMg
aXMgcHJldHR5IGxhbWUsIGJ1dCBpdCB3aWxsIGZvcmNlIHRoZSBjb3VudCB0byBiZSBmbHVzaGVk
IGFzIGFuIGludC4gVGhpcyBkb2Vzbid0CiAgICAgICAgIC8vIG1hdHRlciB2ZXJ5IG11Y2gsIHNp
bmNlIG91ciB1c2Ugb2YgYSBTZXRBcmd1bWVudERlZmluaXRlbHkgYW5kIEZsdXNoZXMgZm9yIHRo
aXMgbG9jYWwgc2xvdCBpcwogICAgICAgICAvLyBtb3N0bHkganVzdCBhIGZvcm1hbGl0eS4KQEAg
LTY4OTcsNiArNjg5NywxMyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBjcmVhdGVBcmd1bWVu
dHMpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMp
OwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZs
eTogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk+KCk7CisgICAgICAgICAgICBub3RpY2VBcmd1bWVu
dHNVc2UoKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0
ZV9hcmd1bWVudHNfYnV0dGVyZmx5KTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEZyb21Bcmd1bWVudHM+KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZmQwYjZkNzRk
YTY3N2JjNDUwOGNhYzQ5ZmM0ZWUxYzk4ZGE0ZTdhZC4uMjQ3N2FmMGU1N2Y0ZGVmYWYyOWIyZjgw
YzA0NzVmNTNlZTExNWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMjM0LDYgKzIzNCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
CiAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0
ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHM6
CisgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseToKICAgICBjYXNlIG9wX2dl
dF9mcm9tX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2Fz
ZSBvcF9nZXRfYXJndW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCmluZGV4IDg5YmM2NDFmNTI2YmI1M2ZmMDM3ZjczY2Y5NTBiYWM2NDZkNDk5NTQuLjVmMDJh
YzBkZjkzYTJhZjhkNzQzZTFmMmU3OGQxYWRjOTM5MmU3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNv
bnN0IFdyaXRlRnUKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkK
ICAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFN0YWNrLCBpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CiAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3Rh
Y2ssIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSk7CisgICAgICAgICAgICByZWFkKEFic3RyYWN0SGVhcChTdGFjaywgaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CiAgICAgfQogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzcGVjaWZpY2FsbHkg
YWNjb3VudCB3aGljaCBub2RlcyBjYW4gcmVhZCBmcm9tIHRoZSBzY29wZQpAQCAtNTI0LDYgKzUy
NCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1
bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVD
bG9uZWRBcmd1bWVudHM6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAg
ICAgIHJlYWQoU3RhY2spOwogICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAg
IHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CkBAIC03NzMsMTQgKzc3NCwxNCBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwg
Y29uc3QgV3JpdGVGdQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6IHsKLSAgICAgICAgYXV0byBoZWFwID0gQWJzdHJhY3RI
ZWFwKFN0YWNrLCByZW1hcE9wZXJhbmQobm9kZS0+YXJndW1lbnRzSW5saW5lQ2FsbEZyYW1lKCks
IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAg
ICBhdXRvIGhlYXAgPSBBYnN0cmFjdEhlYXAoU3RhY2ssIHJlbWFwT3BlcmFuZChub2RlLT5hcmd1
bWVudHNJbmxpbmVDYWxsRnJhbWUoKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAgICByZWFkKGhlYXApOwogICAgICAg
ICBkZWYoSGVhcExvY2F0aW9uKFN0YWNrUGF5bG9hZExvYywgaGVhcCksIExhenlOb2RlKG5vZGUp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM6Ci0gICAgICAgIHdyaXRlKEFic3RyYWN0SGVhcChTdGFjaywgQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoU3RhY2ss
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAppbmRleCA4NTQxMjMxNDc0MWU2ZjExMjYxZjJlOTdjNDlmZTY0NGRhZTdi
YWY3Li44YjUzOTQzZTI0YTMzNmJkZTEwOWNhNmMzNDAyOTRmNjJhYWE3ZjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yNTcsNiArMjU3LDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJn
dW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzOgorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAg
IGNhc2UgQ2FsbDoKICAgICBjYXNlIENhbGxFdmFsOgogICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJh
cmdzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXgg
YWVlMWYwMDczYjBmNGJiY2M0NzM0ZWI2NDFlNDY0OGMzMDU1YTI0NC4uOGFiODhjYzdmMTY2Y2M0
N2I3YjQ4ODcwZGNhYzcyNWY2MmM4ZmExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yNTIxLDYgKzI1MjEsNyBAQCBjbGFzcyBGaXh1cFBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAg
ICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Q
b2ludDoKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgICAg
ICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCmluZGV4IGIzMjBmNzA3Yzk1ZjEyMzkzODUxYmMzYjJiMmI0MmI5NTZkZDBi
ZjUuLjdkMGZhMzY0ZDViYmUzYzIyMDMzOTM4OGNmYTU1YWQ2OGNhOWZkNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xMTYyLDcgKzExNjIsNyBAQCBib29sIEdy
YXBoOjppc0xpdmVJbkJ5dGVjb2RlKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpCi0gICAgICAgICAgICAg
ICAgICAgICYmIHJlZy5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSB7
CisgICAgICAgICAgICAgICAgICAgICYmIHJlZy5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewogICAgICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvb2tzIGxpa2UgdGhlIGFy
Z3VtZW50IGNvdW50LlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IGZhYjljZjAyYTI1OTc2ZWY0N2QxNzkw
NWJhZDljZTAzZTM4MmJjZTUuLmVjNGYyMmJlZTU1ZjFiMjkwNDJiZmIyM2UxMjY0ZmEyMDNjYWRk
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTg2NSw3ICs4NjUsNyBA
QCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICAg
ICAgZnVuY3RvcihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGZ1bmN0b3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3RvcihzdGFja09mZnNldCArIENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9j
a0ZvcihpbmxpbmVDYWxsRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAppbmRleCAzZDg0M2NlNThmMjBiNDExNjMzOWZjZGE5NTg4YWViYTZiN2E4
YzJlLi43MGVlZjg4NmI0YThmZTI5NDNmNDZiYWU3NmVjNmI2MzcwZTQ1MmQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNDcwLDcgKzQ3MCw3
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgICAgIGFyaXR5Q2hl
Y2sgPSBsYWJlbCgpOwogICAgICAgICBjb21waWxlRW50cnkoKTsKIAotICAgICAgICBsb2FkMzIo
QXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgbG9hZDMyKEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKUNhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBicmFu
Y2gzMihBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSkpLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CiAgICAg
ICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAg
ICAgICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA2OGNhOThkZjZmNWM0YjdiNjM3MmNj
MTU4MThlYzI1NzI4MmY4OWQ5Li5kMWJkN2RhOWRmZmRjMzZjMjYwZTYzNWNiNjAwYTliMmYxOTE5
ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0x
MzUsNyArMTM1LDcgQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsK
IAogICAgIHZvaWQgZW1pdFN0b3JlQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
KQogICAgIHsKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoY2FsbFNpdGUuYml0cygpKSwg
dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCkpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoY2FsbFNpdGUuYml0cygp
KSwgdGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgfQogCiAgICAgLy8gQWRkIGEgY2FsbCBv
dXQgZnJvbSBKSVQgY29kZSwgd2l0aG91dCBhbiBleGNlcHRpb24gY2hlY2suCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMjRjNzMzZDM4NzAyNzlmNGE1NmI0ZTY4
OGJmMGJmMDZhYzI0YzFkNC4uODE5MTNlZDA1YzhjYTI2OTM0MGFmNTE4N2ZhYTY3YzQxNzVmMjg4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDI2LDYgKzQy
Niw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVT
Y29wZWRBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENyZWF0ZUNsb25lZEFy
Z3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUGhhbnRvbUNsb25lZEFyZ3VtZW50
cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0RnJvbUFyZ3Vt
ZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0VG9Bcmd1bWVudHMsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRBcmd1bWVudCwgTm9kZVJlc3VsdEpTKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxp
dHlBbmFseXNpc1BoYXNlLmNwcAppbmRleCAzMjgwZjg3YTYyNjdkZjAzNGM4NGUzMzE4NTMwYzc0
MTllNTVlOTdlLi43OWJjNzk2ODMxMTMwYzAzN2Q1NDcwYzBlNzlkNWIwZDk5NTYyNjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIExvY2FsT1NS
QXZhaWxhYmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAgICAgIC8vIFJlY29y
ZCBob3cgdG8gcmVhZCBlYWNoIGFyZ3VtZW50IGFuZCB0aGUgYXJndW1lbnQgY291bnQuCiAgICAg
ICAgICAgICBBdmFpbGFiaWxpdHkgYXJndW1lbnRDb3VudCA9Ci0gICAgICAgICAgICAgICAgbV9h
dmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgbV9hdmFp
bGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX2F2YWlsYWJpbGl0eS5tX2hlYXAuc2V0KFByb21vdGVkSGVhcExvY2F0
aW9uKEFyZ3VtZW50Q291bnRQTG9jLCBub2RlKSwgYXJndW1lbnRDb3VudCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDE4YzY0MTQ3OTM0
MjQ2OWI0MWNhOGY5OGYzMDhiM2E0YzkzM2JhOTguLjZmZWRiMTliMWFlYmY0NTM0YTA0ZGJmMDA4
ZWE4ZDQ5MjlkMjg5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNw
cApAQCAtMjk1LDcgKzI5NSw3IEBAIHN0YXRpYyB2b2lkIGVtaXRSZXN0b3JlQXJndW1lbnRzKENv
bnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrLCBERkc6OkpJCiAKICAgICAgICAg
aW50MzJfdCBhcmd1bWVudENvdW50OwogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8fCBp
bmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9
IGZyYW1lLm9wZXJhbmQ8aW50MzJfdD4oc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50LCBQYXlsb2FkT2Zmc2V0KTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBm
cmFtZS5vcGVyYW5kPGludDMyX3Q+KHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFBheWxvYWRPZmZzZXQpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBhcmd1bWVudENvdW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpczsKIApAQCAtODE1LDE4ICs4MTUsMTggQEAgc3RhdGljIHZvaWQgcmVpZnlJbmxp
bmVkQ2FsbEZyYW1lcyhDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9zdEJhc2Vs
aW4KICAgICAgICAgfQogCiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3Mo
KSkKLSAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBQYXlsb2FkT2Zm
c2V0LCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICAg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgUGF5bG9h
ZE9mZnNldCwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAg
ICAgICAgIEFTU0VSVChjYWxsZXJGcmFtZSk7CiAgICAgICAgIGZyYW1lLnNldDx2b2lkKj4oaW5s
aW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBjYWxsZXJGcmFtZSk7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRl
eChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCkpLmJpdHMoKTsKLSAgICAgICAgZnJhbWUuc2V0
T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAgICAgICAg
ZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUYWdPZmZzZXQsIGxv
Y2F0aW9uQml0cyk7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxs
KQogICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2Fs
bGVlQ29uc3RhbnQoKSkpOwogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0
aGUgMzItYml0IHBhcnQKICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0g
YmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4tPmJ5dGVjb2Rl
SW5kZXgoKSkucHRyKCk7CiAgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRl
SW5kZXgoQnl0ZWNvZGVJbmRleChiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGluc3RydWN0aW9uKSkp
LmJpdHMoKTsKLSAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNl
dCwgbG9jYXRpb25CaXRzKTsKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CiAgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJh
bWVTbG90OjpjYWxsZWUsIFRhZ09mZnNldCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTVmFsdWU6
OkNlbGxUYWcpKTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwp
CiAgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFBheWxvYWRPZmZzZXQsIGlubGluZUNhbGxGcmFt
ZS0+Y2FsbGVlQ29uc3RhbnQoKSk7CkBAIC04NDEsNyArODQxLDcgQEAgc3RhdGljIHZvaWQgcmVp
ZnlJbmxpbmVkQ2FsbEZyYW1lcyhDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9z
dEJhc2VsaW4KICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gb3V0ZXJt
b3N0QmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4tPmJ5dGVj
b2RlSW5kZXgoKSkucHRyKCk7CiAgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxT
aXRlSW5kZXgoQnl0ZWNvZGVJbmRleChiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGluc3RydWN0aW9u
KSkpLmJpdHMoKTsKICNlbmRpZgotICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7Cisg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CiAgICAgfQogfQog
CkBAIC05OTcsNyArOTk3LDcgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhD
Q2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPcGVyYW5kczxWYWwKIAogICAgICAgICBp
ZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAg
ICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
cGF5bG9hZEZvcihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLAor
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihzdGFja09mZnNldCAr
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwKICAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBqaXQu
bW92ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmNwcAppbmRleCAyZmYzZWE4YjVmYmI2ZjNmMjcyMWQ1MDI0NDU2Mjk4YjA4
NGQ1MTE1Li45YjAyMWJiNzExYmEwMmQ5YmMxMDAzZDc3NDE0MzE3MmE1YjYzMTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uY3BwCkBAIC0zMDUsMTggKzMwNSwxOCBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICAgICAg
aml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3Rl
cikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGppdC5z
dG9yZVB0cihjYWxsZXJGcmFtZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9m
ZnNldChpbmxpbmVDYWxsRnJhbWUtPmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKICAgICAgICAgdWlu
dDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUlu
ZGV4KCkpLmJpdHMoKTsKLSAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxS
ZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpKSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFs
UmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJh
bWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICBqaXQuc3RvcmU2NChBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlZUNvbnN0YW50KCkpKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVh
bFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlKSkpOwogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzIt
Yml0IHBhcnQKICAgICAgICAgaml0LnN0b3JlUHRyKGNhbGxlckZyYW1lR1BSLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVP
ZmZzZXQoKSkpOwogICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNl
bGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRl
eCgpKS5wdHIoKTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRl
eChCeXRlY29kZUluZGV4KGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oaW5zdHJ1Y3Rpb24pKSkuYml0
cygpOwotICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihs
b2NhdGlvbkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3Rlciko
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Io
KFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpKTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3Vy
ZUNhbGwpCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSksIEFzc2VtYmx5SGVscGVy
czo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQg
cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJh
c2UmIGV4aXQpCiAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGppdC5i
YXNlbGluZUNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLT5ieXRlY29k
ZUluZGV4KCkpLnB0cigpOwogICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0
ZUluZGV4KEJ5dGVjb2RlSW5kZXgoYml0d2lzZV9jYXN0PHVpbnQzMl90PihpbnN0cnVjdGlvbikp
KS5iaXRzKCk7CiAjZW5kaWYKLSAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1
YWxSZWdpc3RlcikoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgaml0
LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNz
ZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA1MGNhMDBiMDBiOTQ4OGExMDMyODcy
NjI4YTllMmVlODczZjJjMzc5Li5iNGEwODBkODI3YTJiNmU2OGI1NzViZTc4MDM4ZjM2ZWY3OWRl
MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAg
LTIxMzQsNiArMjEzNCwyMyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgICAgICBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgYXJndW1lbnRTdGFydCwgbGVuZ3RoLCBjYWxsZWUpOwogfQog
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1
aW50MzJfdCBhcmd1bWVudENvdW50KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5
Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9t
SW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZklu
ZGV4aW5nU2hhcGVzXS5nZXQoKSwgYXJndW1lbnRDb3VudCk7CisgICAgaWYgKCFidXR0ZXJmbHkp
IHsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IGluZGV4IDwgYXJndW1lbnRDb3VudDsgKytpbmRleCkKKyAgICAgICAgYnV0dGVyZmx5LT5z
ZXRJbmRleCh2bSwgaW5kZXgsIGFyZ3VtZW50U3RhcnRbaW5kZXhdLmpzVmFsdWUoKSk7CisgICAg
cmV0dXJuIGJ1dHRlcmZseTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNy
ZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQoVk0qIHZtUG9pbnRlciwgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGNhbGxlZSwgdWludDMyX3QgYXJndW1l
bnRDb3VudCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA3ZDI0ZDA2YTA4MzhiNDc4ZWRiN2JiYzMyMDZj
ZjFhMjI3MWUyMmFkLi4zMzlmOTE4YTQ5ZTY1ODg5MWIyNzJjOWY4YWZkYzk0ZWEwMDYzYjdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTk3LDYgKzE5
Nyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVu
dHNEdXJpbmdFeGl0KFZNKiwgSW5saW5lQ2FsbEZyCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ3JlYXRlU2NvcGVkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
UmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwgSlNGdW5jdGlvbiogY2Fs
bGVlLCBKU0xleGljYWxFbnZpcm9ubWVudCopOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoVk0qLCBJbmxpbmVDYWxsRnJhbWUq
LCBKU0Z1bmN0aW9uKiwgdWludDMyX3QgYXJndW1lbnRDb3VudCk7CiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwgSlNGdW5j
dGlvbiogY2FsbGVlKTsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBcmd1
bWVudHNCdXR0ZXJmbHkoSlNHbG9iYWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwg
dWludDMyX3QgYXJndW1lbnRDb3VudCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q3JlYXRlUmVzdChKU0dsb2JhbE9iamVjdCosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1bnNp
Z25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgdW5zaWduZWQgYXJyYXlTaXplKTsKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcihWTSosIFN0cnVjdHVyZSos
IEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25T
ZXRBZGQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWNpc2VMb2NhbENsb2JiZXJpemUuaAppbmRleCBhNThlMTc5NjU2MGZjNmQ5NGJiNDYzZDE0Mjk4
ODZlMDc4ZjBhZmNjLi4xMjhjODQxZjBhYzdmOWRlYjYyZjdlNmZjNDYzYTUyODczNGM3NTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2Ji
ZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENs
b2JiZXJpemUuaApAQCAtMTEwLDE0ICsxMTAsMTQgQEAgY2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJl
cml6ZUFkYXB0b3IgewogICAgICAgICAgICAgICAgIC8vIFJlYWQgdGhlIG91dGVybW9zdCBhcmd1
bWVudHMgYW5kIGFyZ3VtZW50IGNvdW50LgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
Z3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7IGkrKykKICAgICAgICAgICAgICAg
ICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKLSAgICAgICAgICAg
ICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
KTsKKyAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
V2l0aEZpeHVwLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVn
aXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpLm9mZnNldCgpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5p
c1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7
CisgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKICAgICAgICAgfTsKIAogICAgICAgICBhdXRvIHJlYWRTcHJlYWQgPSBbJl0gKE5vZGUqIHNw
cmVhZCkgewpAQCAtMTU4LDYgKzE1OCw3IEBAIGNsYXNzIFByZWNpc2VMb2NhbENsb2JiZXJpemVB
ZGFwdG9yIHsKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNh
c2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3Vt
ZW50czoKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgIGNh
c2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJn
dW1lbnRzOgogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CkBAIC0yMjUsMTQgKzIyNiwxNCBA
QCBjbGFzcyBQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICBpZiAo
IWlubGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAgICAgIGlmIChpbmRleEluY2x1ZGluZ1Ro
aXMgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ncmFwaC5tX2NvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpKSkKICAgICAgICAgICAgICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGluZGV4SW5jbHVkaW5nVGhpcykpOwotICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0
dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAg
ICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJn
cygpLCAiR2V0QXJndW1lbnQgaXMgb25seSB1c2VkIGZvciBJbmxpbmVDYWxsRnJhbWUgaWYgdGhl
IGNhbGwgZnJhbWUgaXMgdmFyYXJncy4iKTsKICAgICAgICAgICAgIGlmIChpbmRleEluY2x1ZGlu
Z1RoaXMgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkpCiAgICAg
ICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXhJbmNsdWRpbmdUaGlzKS5v
ZmZzZXQoKSkpOwotICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAg
ICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTI1Niw3ICsyNTcsNyBA
QCBjbGFzcyBQcmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICAgICAg
bV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0
ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3Rlcihpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggODA1MDUxNmNiZmVjYzg0ZmUxOTU4NDI4
YTBjZjg3Y2Q1NGVlMTE3Yi4uZWNlOTQ3MDZlZTg0YzI2ZTE5YTE5OGUyMzVjYTc0ZmI3ODUxOTMx
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTExMjUsNiArMTEyNSwxMSBAQCBjbGFzcyBQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OiB7CisgICAgICAg
ICAgICBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEZpYXRJbnQ1MjogewogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZW5hYmxlSW50NTIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDE1YmU0MmFjM2I2OWFmNGRjNTgzOGEx
OGRmMzlkMDc4Y2EzMTY5MTkuLmI5YTQ2YmViMDI1ODE2MjQ4ODhkZDE4MTAyYjJjNmQxOGJhNmRk
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBA
IC0zNzcsNiArMzc3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIENyZWF0
ZURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICBj
YXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRl
cmZseToKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBHZXRBcmd1bWVudDoK
ICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBiNWExMWM1MWVmMTBjZjdhNmIyMzE3MmQyZDhi
ZjhmNjc1ZTA1MmJkLi42MjkzZDA0NzI3Mzk5NDVlMzVmZGI3N2NkYTlkNTZmMjIxMjAzYjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtNzgwOSw2ICs3ODA5LDI4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVD
bG9uZWRBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHkoTm9kZSogbm9kZSkKK3sKKyAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBmbHVzaFJlZ2lz
dGVycygpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgLy8gV2Ugc2V0IHVwIHRo
ZSBhcmd1bWVudHMgb3Vyc2VsdmVzLCBiZWNhdXNlIHdlIGhhdmUgdGhlIHdob2xlIHJlZ2lzdGVy
IGZpbGUgYW5kIHdlIGNhbgorICAgIC8vIHNldCB0aGVtIHVwIGRpcmVjdGx5IGludG8gdGhlIGFy
Z3VtZW50IHJlZ2lzdGVycy4KKworICAgIC8vIEFyZ3VtZW50czogMDpKU0dsb2JhbE9iamVjdCos
IDE6c3RhcnQsIDM6bGVuZ3RoCisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgyLCBbJl0gKEdQUlJl
ZyBkZXN0R1BSKSB7IGVtaXRHZXRMZW5ndGgobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BS
KTsgfSk7CisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7
IGVtaXRHZXRBcmd1bWVudFN0YXJ0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0p
OworICAgIG1faml0LnNldHVwQXJndW1lbnQoMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCks
IGRlc3RHUFIpOyB9KTsKKworICAgIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5LCByZXN1bHRHUFIpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVSZXN0KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5v
ZGUtPm9wKCkgPT0gQ3JlYXRlUmVzdCk7CkBAIC0xMjQ0NywxNCArMTI0NjksMTQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKE5vZGUq
IG5vZGUpCiAgICAgaWYgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+
YXJndW1lbnRzSW5saW5lQ2FsbEZyYW1lKCkpCiAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3Rl
ciA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyOwogICAgIGVsc2UKLSAg
ICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpOworICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0
dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwog
ICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVn
aXN0ZXIpLCByZXN1bHQuZ3ByKCkpOwogICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9k
ZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyhOb2RlKiBub2RlKQogewotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMy
KG5vZGUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpLCBKSVRDb21waWxlcjo6cGF5bG9h
ZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgbV9qaXQuc3RvcmUzMihU
cnVzdGVkSW1tMzIobm9kZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSksIEpJVENvbXBp
bGVyOjpwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBjNjRmOTc4YWRmODVmYmYyNzdiYmE3OTIxNjA2
NGY0MjgxYjhkNWE5Li4yMmFkNDZmOTA1Zjk3N2I5MGY4NWI5MWFjOTNjZGZjZGY2MDBlZjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0x
NDAxLDYgKzE0MDEsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxl
R2V0QXJndW1lbnQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50
cyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKE5vZGUqKTsK
KyAgICB2b2lkIGNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUNyZWF0ZVJlc3QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNwcmVhZChOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXkoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNjdiMGUw
YjM3MDRjYTU5YTg5MGFjNTljODZkYmQwZDJhMDU2ZGI4MS4uOGM4NTZjODc5ZTZmM2ExZDdkYjI5
MTE1YWI4ZDM1M2NhZjFiZTE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC03MzUsNyArNzM1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bVBhc3NlZEFyZ3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCiAgICAg
ICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50
KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBtX2ppdC5j
YWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAg
ICAgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1Q
YXNzZWRBcmdzKSwgbV9qaXQuY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICAKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyBpKyspIHsKICAgICAgICAgICAgICAg
ICBFZGdlIGFyZ0VkZ2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmly
c3RDaGlsZCgpICsgMSArIGldOwpAQCAtMzg3NCw2ICszODc0LDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2Fz
ZSBDcmVhdGVSZXN0OiB7CiAgICAgICAgIGNvbXBpbGVDcmVhdGVSZXN0KG5vZGUpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IDNlNjM4YzliOTQ5ZWI1ZWEyNmEzMTA1ZGRiOGFmZTc2NjIxNjMzNDQu
LjE3N2E4MTMyYWMzYjNmMzdjOTYxNjVhMzc2MTVlMzA3Y2FkMjQ0MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNjkzLDcg
KzY5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAKICAg
ICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2ppdC5jb2Rl
QmxvY2soKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobnVtUGFzc2VkQXJncyksIEpJVENvbXBpbGVyOjpj
YWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAg
ICAgICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1Q
YXNzZWRBcmdzKSwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bVBhc3NlZEFyZ3M7IGkrKykgewogICAgICAgICAgICAgICAg
IEVkZ2UgYXJnRWRnZSA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJz
dENoaWxkKCkgKyAxICsgaV07CkBAIC00NTEzLDYgKzQ1MTMsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJn
dW1lbnRzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIENyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseTogeworICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIENyZWF0ZVJlc3Q6
IHsKICAgICAgICAgY29tcGlsZUNyZWF0ZVJlc3Qobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKaW5k
ZXggYmVlYzg2YWM3YTdkMzMzZTM5Njc5ZTI2NzU1OTA3NGU0NjRjOWI4Mi4uMTY4YjNkZjQzMzQ2
NTdlNmFhZGI2NGJiZjYzM2VlYzVhZmExYjA0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgY2xh
c3MgU3RhY2tMYXlvdXRQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAg
ICAgdXNlZExvY2Fscy5zZXQoVmlydHVhbFJlZ2lzdGVyKAotICAgICAgICAgICAgICAgICAgICBD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCkudG9Mb2NhbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xv
Y2FsKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6
ZSgpOyBhcmd1bWVudC0tOykgewpAQCAtMTc1LDcgKzE3NSw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewogICAgICAgICAgICAgICAgIGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudFJlZ2lzdGVyID0gYXNzaWduKAotICAgICAgICAgICAgICAgICAg
ICBhbGxvY2F0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgICAgICAgICAg
YWxsb2NhdGlvbiwgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tOykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA3NTg2N2JmNzc1Zjk1MmRlMDllNTVlMjkzMzQ1
MmE5NmZiNDI0OTYxLi42OWU2OGNjYjhkZDM4ZWI3YTdmZTk2N2QzYzEyZWU0YmFkNDQ2MjUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMzM4LDYgKzMzOCw3IEBAIGNsYXNzIFN0b3JlQmFy
cmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgQ3Jl
YXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVu
dHM6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKKyAgICAgICAgICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgICAgICAgICAgY2FzZSBOZXdGdW5j
dGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAg
ICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IGY5Yjk1YTYw
MDk1ZjA0MDA5ODRlY2ZlMDc3ZGJlNTZiY2Q5ZjU3MjguLjJhYTkyNzAzOGVhNjg1Mzk3ZTcyZDlm
Mzg1NmRmYTRlN2M1MGM2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC04Myw4ICs4Myw2IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2ludGVy
bmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6
Om9mZnNldE9mSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgKyBJbnRlcm5hbEZ1
bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAgICBtYWNy
byhGdW5jdGlvblJhcmVEYXRhX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mQm91bmRGdW5jdGlvblN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oRnVuY3Rp
b25SYXJlRGF0YV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCwgRnVuY3Rpb25S
YXJlRGF0YTo6b2Zmc2V0T2ZBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpKSBc
Ci0gICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9oYXNSZWlmaWVkTGVuZ3RoLCBGdW5jdGlvblJh
cmVEYXRhOjpvZmZzZXRPZkhhc1JlaWZpZWRMZW5ndGgoKSkgXAotICAgIG1hY3JvKEZ1bmN0aW9u
UmFyZURhdGFfaGFzUmVpZmllZE5hbWUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSGFzUmVp
ZmllZE5hbWUoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9nZXR0ZXIsIEdldHRlclNldHRl
cjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9zZXR0ZXIsIEdl
dHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3ODFiNzFl
NjkyNDM4Mjg2NDg5N2VmZjdmOWRlNjhlNGVlNGViZjFkLi5jMTUxZjIxN2RlZWMxODY3ZTY4ZjU1
ZTJjYjRhMDdmOTUxOTYyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCkBAIC0xNTIsNiArMTUyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6
CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRB
cmd1bWVudHM6CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgY2FzZSBH
ZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBHZXRB
cmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IGQ0ODczMThm
MjlmZTM2MWM2N2FhODU4OTFjYTkxMjA5OGU2ZTU2MTAuLmUzMDdiMDliNzg2OTE4ZDA3YzA5ZTUz
MmZmMGYzYjQyNGE3ODAyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApA
QCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1haW5QYXRoSnVtcHM7CiAgICAgCiAgICAgICAgICAgICBq
aXQubG9hZDMyKAotICAgICAgICAgICAgICAgIGZyYW1lLndpdGhPZmZzZXQoc2l6ZW9mKFJlZ2lz
dGVyKSAqIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLAorICAgICAgICAgICAgICAgIGZy
YW1lLndpdGhPZmZzZXQoc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7CiAg
ICAgICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQuYnJhbmNoMzIoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIEdQ
UkluZm86OnJlZ1QxLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IDk0NTY1Nzc1NWEwZWNiNzgxY2ZiODliMTFjMzlmOThmN2E5YWJhM2QuLjI3
NzkzMjFkZTBhYmZmMzAyZjU1MTc0MTI1MmM3MmM0NjQ4ZTQ3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
Ojp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSkpOwogICAgICAgICAgICAgICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0tPnRvcEVudHJ5RnJhbWUpOwogCiAgICAgICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29k
ZUJsb2NrKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwpAQCAtMTA0Niw2ICsxMDQ2LDkgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6
CiAgICAgICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgICAg
ICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KCk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgICAgICAgICBjb21waWxlT2JqZWN0
Q3JlYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU5MzYsNiArNTkzOSwxMyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCisg
ICAgdm9pZCBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KCkKKyAgICB7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwo
SW50NjQsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFs
dWUpOworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21w
aWxlQ3JlYXRlUmVzdCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpA
QCAtNzk0MSwxMyArNzk1MSwxMyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBpZiAo
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPmFyZ3VtZW50c0lubGlu
ZUNhbGxGcmFtZSgpKQogICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXI7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZp
cnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7
CiAgICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRS
ZWdpc3RlcikpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcygpCiAgICAgewotICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50
MzIobV9ub2RlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKSwgcGF5bG9hZEZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQu
Y29uc3RJbnQzMihtX25vZGUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpLCBwYXlsb2Fk
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKCkKQEAgLTg0NjksNyArODQ3OSw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIH07CiAKICAgICAgICAgYWRkQXJndW1lbnQoanND
YWxsZWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCAwKTsKLSAgICAg
ICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKKyAgICAgICAg
YWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgUGF5bG9hZE9mZnNldCk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpCiAgICAgICAg
ICAgICBhZGRBcmd1bWVudChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSAr
IGkpKSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIDApOwogCkBAIC04NDk3LDcgKzg1
MDcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdG
b3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAogICAgICAgICAgICAg
ICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxs
TGlua0luZm8oKTsKIApAQCAtODU3OSw3ICs4NTg5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGpz
Q2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgMCk7Ci0gICAg
ICAgICAgICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDMyKG51bVBhc3NlZEFyZ3MpLCBWaXJ0
dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQp
OworICAgICAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdz
KSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSwgUGF5bG9hZE9mZnNldCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtUGFzc2VkQXJnczsgKytpKQogICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGxvd0pT
VmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSwgMCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNz
ZWRBcmdzOyBpIDwgbnVtQWxsb2NhdGVkQXJnczsgKytpKQpAQCAtODY0Nyw3ICs4NjU3LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGNhbGxM
aW5rSW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CiAgICAgICAgICAgICAg
ICAgICAgIENhbGxGcmFtZVNodWZmbGVyKGppdCwgc2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWls
Q2FsbCgpOwpAQCAtODY5MCw3ICs4NzAwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAg
ICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIGNhbGwgPSBqaXQubmVhckNhbGwoKTsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKApA
QCAtODgwNiw3ICs4ODE2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAg
ICAvLyB3aXRoIHRoZSBjYWxsIHNpdGUgaW5kZXggb2Ygb3VyIGZyYW1lLiBCYWQgdGhpbmdzIGhh
cHBlbiBpZiBpdCdzIG5vdCBzZXQuCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXgu
Yml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVh
bFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAogICAgICAgICAgICAgICAgIENhbGxG
cmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRhOwogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRh
Lm51bUxvY2FscyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50OwpA
QCAtODk1Miw3ICs4OTYyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAg
ICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFs
UmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAK
ICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxv
Y2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAKQEAgLTkwMTYsNyArOTAyNiw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEJlZm9yZSB0b3VjaGluZyBzdGFj
ayB2YWx1ZXMsIHdlIHNob3VsZCB1cGRhdGUgdGhlIHN0YWNrIHBvaW50ZXIgdG8gcHJvdGVjdCB0
aGVtIGZyb20gc2lnbmFsIHN0YWNrLgogICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIHNjcmF0
Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgICAgICAg
ICAgICAgICAgICBqaXQuc3RvcmUzMihzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHNjcmF0Y2hHUFIxLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoR1BSMSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwogCiAgICAg
ICAgICAgICAgICAgICAgIGludCBzdG9yZU9mZnNldCA9IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwogCkBAIC05MjU0
LDcgKzkyNjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgaml0
LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGNhbGxTaXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
Ojp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7
CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAogICAgICAg
ICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5h
ZGRDYWxsTGlua0luZm8oKTsKICAgICAgICAgICAgICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEg
PSBub2RlLT5jYWxsVmFyYXJnc0RhdGEoKTsKQEAgLTk0NzcsNyArOTQ4Nyw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBhZGRBcmd1bWVudChq
c0NhbGxlZSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIDApOwotICAg
ICAgICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDMyKG51bUFyZ3MpLCBWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOworICAgICAg
ICBhZGRBcmd1bWVudChtX291dC5jb25zdEludDMyKG51bUFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBQYXlsb2FkT2Zmc2V0
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKICAgICAg
ICAgICAgIGFkZEFyZ3VtZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
ICsgaSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CiAgICAgICAgIApAQCAt
OTUwNyw3ICs5NTE3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0
YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGws
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgR1BSSW5mbzo6cmVnVDApOwpAQCAtMTIzMjUsNyArMTIz
MzUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lzdGVyOwogICAgICAgICAgICAgaWYgKCFp
bmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0g
VmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOworICAgICAgICAg
ICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudENvdW50UmVnaXN0ZXI7CiAgICAgICAgICAgICBsZW5ndGgudmFsdWUgPSBtX291dC5zdWIo
bV9vdXQubG9hZDMyKHBheWxvYWRGb3IoYXJndW1lbnRDb3VudFJlZ2lzdGVyKSksIG1fb3V0Lmlu
dDMyT25lKTsKQEAgLTE3NjExLDcgKzE3NjIxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gbV9mdGxTdGF0ZS5qaXRDb2RlLT5j
b21tb24uYWRkQ29kZU9yaWdpbihjb2RlT3JpZ2luKTsKICAgICAgICAgbV9vdXQuc3RvcmUzMigK
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAg
ICAgICAgICAgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAg
ICAgIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwog
I2lmICFVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAg
ICAgIG1fb3V0LnN0b3JlUHRyKG1fY2FsbEZyYW1lLCBtX291dC5hYnNvbHV0ZSgmdm0oKS50b3BD
YWxsRnJhbWUpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1Bh
dGhDYWxsLmgKaW5kZXggNjkzNGMzZjBkMzc5MWY2NGJhNDI5NjNlMDU1NjNkYmJjN2RkYTVhNC4u
ZmUyYTRlYzcyNmNlY2VkMzQxMzA5Mzk5NDk0ZWE5ZWI3ZTZiNGI1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgU2xv
d1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgaWYgKGNhbGxTaXRlSW5kZXgpIHsKICAgICAg
ICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihj
YWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAg
IH0KICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbih2bSwgdXNlZFJlZ2lzdGVycywgaml0LCBleGNl
cHRpb25UYXJnZXQsIGZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZ3VtZW50cy4uLik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCmluZGV4IGY2
Mzk0YWM3MTA3MTI1YjdjYWIyMWFkMmI5MTEzYzA3OTUzNmE2MDAuLjFhNGRlM2Y5MzYyOTBlNjJm
NjM4OWVmNWZmYTA3Zjg5NzM2Y2U1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBAIC05MCwxMiArOTAsMTIgQEAgYm9vbCBDYWxsRnJh
bWU6OmNhbGxTaXRlQml0c0FyZUNvZGVPcmlnaW5JbmRleCgpIGNvbnN0CiAKIHVuc2lnbmVkIENh
bGxGcmFtZTo6Y2FsbFNpdGVBc1Jhd0JpdHMoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzW0Nh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRdLnRhZygpOworICAgIHJldHVybiB0aGlzW0NhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzXS50YWcoKTsKIH0KIAogU1VQUFJF
U1NfQVNBTiB1bnNpZ25lZCBDYWxsRnJhbWU6OnVuc2FmZUNhbGxTaXRlQXNSYXdCaXRzKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gdGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50XS51bnNh
ZmVUYWcoKTsKKyAgICByZXR1cm4gdGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpc10udW5zYWZlVGFnKCk7CiB9CiAKIENhbGxTaXRlSW5kZXggQ2FsbEZyYW1lOjpj
YWxsU2l0ZUluZGV4KCkgY29uc3QKQEAgLTExNyw3ICsxMTcsNyBAQCBjb25zdCBJbnN0cnVjdGlv
biogQ2FsbEZyYW1lOjpjdXJyZW50VlBDKCkgY29uc3QKIHZvaWQgQ2FsbEZyYW1lOjpzZXRDdXJy
ZW50VlBDKGNvbnN0IEluc3RydWN0aW9uKiB2cGMpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZShCeXRlY29kZUluZGV4KGJpdHdpc2VfY2FzdDx1aW50MzJfdD4odnBjKSkpOwotICAgIHRo
aXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudF0udGFnKCkgPSBjYWxsU2l0ZS5iaXRzKCk7
CisgICAgdGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc10udGFn
KCkgPSBjYWxsU2l0ZS5iaXRzKCk7CiB9CiAKIHVuc2lnbmVkIENhbGxGcmFtZTo6Y2FsbFNpdGVC
aXRzQXNCeXRlY29kZU9mZnNldCgpIGNvbnN0CkBAIC0xMzcsNyArMTM3LDcgQEAgY29uc3QgSW5z
dHJ1Y3Rpb24qIENhbGxGcmFtZTo6Y3VycmVudFZQQygpIGNvbnN0CiB2b2lkIENhbGxGcmFtZTo6
c2V0Q3VycmVudFZQQyhjb25zdCBJbnN0cnVjdGlvbiogdnBjKQogewogICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUoY29kZUJsb2NrKCktPmJ5dGVjb2RlSW5kZXgodnBjKSk7Ci0gICAgdGhpc1tD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50XS50YWcoKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KGNhbGxTaXRlLmJpdHMoKSk7CisgICAgdGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpc10udGFnKCkgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihjYWxsU2l0ZS5iaXRz
KCkpOwogfQogCiB1bnNpZ25lZCBDYWxsRnJhbWU6OmNhbGxTaXRlQml0c0FzQnl0ZWNvZGVPZmZz
ZXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCmluZGV4IGNmYjc3MTg1NjAzOTkzMzkxMDA0ZmMxMzIxMTgzODQyM2M1ZGM2YTkuLjhhYmRk
YjgxMDZiNDFiMWFlMDNkNzU3NmE4MDFkN2JmOTFmMjE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKQEAgLTg2LDggKzg2LDggQEAgbmFtZXNw
YWNlIEpTQyAgewogICAgIHN0cnVjdCBDYWxsRnJhbWVTbG90IHsKICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgY29kZUJsb2NrID0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJz
OwogICAgICAgICBzdGF0aWMgY29uc3RleHByIGludCBjYWxsZWUgPSBjb2RlQmxvY2sgKyAxOwot
ICAgICAgICBzdGF0aWMgY29uc3RleHByIGludCBhcmd1bWVudENvdW50ID0gY2FsbGVlICsgMTsK
LSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgdGhpc0FyZ3VtZW50ID0gYXJndW1lbnRDb3Vu
dCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzID0gY2FsbGVlICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgdGhpc0Fy
Z3VtZW50ID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyAxOwogICAgICAgICBzdGF0aWMg
Y29uc3RleHByIGludCBmaXJzdEFyZ3VtZW50ID0gdGhpc0FyZ3VtZW50ICsgMTsKICAgICB9Owog
CkBAIC05NSw3ICs5NSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAvLyBQYXNzZWQgYXMgdGhl
IGZpcnN0IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rpb25zLgogICAgIGNsYXNzIENhbGxGcmFtZSA6
IHByaXZhdGUgUmVnaXN0ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgaGVhZGVyU2l6ZUluUmVnaXN0ZXJzID0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGhlYWRlclNpemVJblJlZ2lzdGVy
cyA9IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgMTsKIAogICAg
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiB2ZXJ5IHNwZWNp
ZmljIGNpcmN1bXN0YW5jZXMKICAgICAgICAgLy8gd2hlbiB5b3UndmUgZ3VhcmFudGVlZCB0aGUg
Y2FsbGVlIGNhbid0IGJlIGEgV2FzbSBjYWxsZWUsIGFuZCBjYW4KQEAgLTE5MCw3ICsxOTAsNyBA
QCBuYW1lc3BhY2UgSlNDICB7CiAKICAgICAgICAgLy8gQWNjZXNzIHRvIGFyZ3VtZW50cyBhcyBw
YXNzZWQuIChBZnRlciBjYXB0dXJlLCBhcmd1bWVudHMgbWF5IG1vdmUgdG8gYSBkaWZmZXJlbnQg
bG9jYXRpb24uKQogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgLSAxOyB9Ci0gICAgICAgIHNpemVfdCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudF0ucGF5bG9hZCgpOyB9CisgICAgICAgIHNpemVfdCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXNdLnBheWxvYWQoKTsgfQogICAgICAgICBzdGF0aWMgaW50
IGFyZ3VtZW50T2Zmc2V0KGludCBhcmd1bWVudCkgeyByZXR1cm4gKENhbGxGcmFtZVNsb3Q6OmZp
cnN0QXJndW1lbnQgKyBhcmd1bWVudCk7IH0KICAgICAgICAgc3RhdGljIGludCBhcmd1bWVudE9m
ZnNldEluY2x1ZGluZ1RoaXMoaW50IGFyZ3VtZW50KSB7IHJldHVybiAoQ2FsbEZyYW1lU2xvdDo6
dGhpc0FyZ3VtZW50ICsgYXJndW1lbnQpOyB9CiAKQEAgLTI1MSw3ICsyNTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDICB7CiAgICAgICAgIGJvb2wgaXNTdGFja092ZXJmbG93RnJhbWUoKSBjb25zdDsKICAg
ICAgICAgYm9vbCBpc1dhc21GcmFtZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoaW50IGNvdW50KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4o
dGhpcylbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudF0ucGF5bG9hZCgpID0gY291bnQ7IH0K
KyAgICAgICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsg
c3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpc10ucGF5bG9hZCgpID0gY291bnQ7IH0KICAgICAgICAgaW5saW5lIHZvaWQg
c2V0Q2FsbGVlKEpTT2JqZWN0Kik7CiAgICAgICAgIGlubGluZSB2b2lkIHNldENvZGVCbG9jayhD
b2RlQmxvY2sqKTsKICAgICAgICAgdm9pZCBzZXRSZXR1cm5QQyh2b2lkKiB2YWx1ZSkgeyBjYWxs
ZXJGcmFtZUFuZFBDKCkucmV0dXJuUEMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0
aW9uKj4odmFsdWUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAKaW5kZXggYzhkZjIwMGI5ODFmZjgyNmE1MmVmMDY3MGVjN2RlZWRjYmZmNjk2ZS4u
OWVlOTE2MzI4ZDliOGNhM2U5MTQ3YTI0NmQ1YjAzNDIyMzk0MWEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMjExLDcgKzIxMSw3IEBA
IHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc051bGwoR1BSUmVnIGdwcikKIAogdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKCkKIHsKLSAgICBK
dW1wIG9rID0gYnJhbmNoMzIoQmVsb3csIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCksIFRydXN0ZWRJbW0zMigxMDAwMDAwMCkpOworICAgIEp1bXAgb2sgPSBicmFuY2gz
MihCZWxvdywgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyksIFRydXN0ZWRJbW0zMigxMDAwMDAwMCkpOwogICAgIGFib3J0V2l0aFJlYXNvbihBSElu
c2FuZUFyZ3VtZW50Q291bnQpOwogICAgIG9rLmxpbmsodGhpcyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAyMjAwOWM1ZmQyYmEyMjdkNDdj
ZmU4NTQ5MzlmNTJkZWYyZDcxYmMyLi4zNGQ5MGM4YTFhY2Q4ZWFjMmZmYjZlMGU2YmY5ZGFhMjhk
ZTUxZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgK
QEAgLTE1MjcsNyArMTUyNyw3IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgewogICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxGcmFtZSB8fCBp
bmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJh
bWUpCi0gICAgICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpOworICAgICAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgIHJldHVybiBpbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IDAxNWYwM2I3NWI2N2M5Zjc1N2NiZTc0
MDRkNGUxYTU2OTM0YTI4MWIuLjExZmUzN2E3YTgyMWIxNzVmZWY5YmIyZDBjZmU4N2U1MTI5NDc1
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtNzI0LDcg
KzcyNCw3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewog
ICAgICAgICAgICAgR1BSUmVnIG9sZEZyYW1lU2l6ZUdQUiA9IHRlbXAyOwogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIEdQUlJlZyBhcmdDb3VudEdQUiA9IG9sZEZyYW1lU2l6ZUdQUjsK
LSAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgYXJnQ291bnRHUFIpOworICAgICAgICAgICAgICAgIGxv
YWQzMihBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBQYXlsb2FkT2Zmc2V0KSwgYXJnQ291bnRHUFIpOwogCiAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICBHUFJSZWcgbnVtUGFyYW1ldGVyc0dQUiA9IHRlbXAxOwpAQCAtNzUz
LDcgKzc1Myw3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMg
ewogICAgICAgICAgICAgLy8gVGhlIG5ldyBmcmFtZSBzaXplIGlzIGp1c3QgdGhlIG51bWJlciBv
ZiBhcmd1bWVudHMgcGx1cyB0aGUKICAgICAgICAgICAgIC8vIGZyYW1lIGhlYWRlciBzaXplLCBh
bGlnbmVkCiAgICAgICAgICAgICBBU1NFUlQobmV3RnJhbWVTaXplR1BSICE9IG5ld0ZyYW1lUG9p
bnRlcik7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwKKyAg
ICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwK
ICAgICAgICAgICAgICAgICBuZXdGcmFtZVNpemVHUFIpOwogICAgICAgICAgICAgYWRkMzIoVHJ1
c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgKyBDYWxsRnJhbWU6OmhlYWRlclNp
emVJblJlZ2lzdGVycyAtIDEpLCBuZXdGcmFtZVNpemVHUFIpOwogICAgICAgICAgICAgYW5kMzIo
VHJ1c3RlZEltbTMyKC1zdGFja0FsaWdubWVudFJlZ2lzdGVycygpKSwgbmV3RnJhbWVTaXplR1BS
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAK
aW5kZXggOTY5MGUwOWM4YjU3MjcwZGVmN2Y4N2E0NmNjMmI1N2U0Zjc2MjAzZS4uYmY0M2Q3Yjgz
YjlhOTkwOWU4NTIyNTljMzA4YjA4ODM2ZDc5ZjczNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lk
IENhbGxGcmFtZVNodWZmbGVyOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAg
ICAgICAgICAgICAgIG91dC5wcmludGYoIiAlYyU4cyA8LSAlMThzICVjICIsIGQsIHN0ci5kYXRh
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICByZWNvdmVyeVN0ci5kYXRhKCksIGQpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3UmVnID09IFZpcnR1YWxS
ZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSkKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAobmV3UmVnID09IFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzIH0pCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiICVj
JThzIDwtICUxOHp1ICVjICIsIGQsIHN0ci5kYXRhKCksIGFyZ0NvdW50KCksIGQpOwogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiAlYyUzMHMgJWMgIiwgZCwg
IiIsIGQpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBh
cmVGb3JUYWlsQ2FsbCgpCiAgICAgLy8gb2xkIGZyYW1lICh0YWtpbmcgaW50byBhY2NvdW50IGFu
IGFyZ3VtZW50IGNvdW50IGhpZ2hlciB0aGFuCiAgICAgLy8gdGhlIG51bWJlciBvZiBwYXJhbWV0
ZXJzKSwgdGhlbiBzdWJzdHJhY3RpbmcgdG8gaXQgdGhlIGFsaWduZWQKICAgICAvLyBuZXcgZnJh
bWUgc2l6ZSAoYWRqdXN0ZWQpLgotICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0
KSwgbV9uZXdGcmFtZUJhc2UpOworICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsg
UGF5bG9hZE9mZnNldCksIG1fbmV3RnJhbWVCYXNlKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBhcmd1bWVudENvdW50T0sgPQogICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QmVsb3dPckVxdWFsLCBtX25ld0ZyYW1lQmFzZSwKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIobV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSkpOwpA
QCAtNzM4LDEyICs3MzgsMTIgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgp
CiAgICAgLy8gV2UgbmVlZCB0byBoYW5kbGUgNCkgZmlyc3QgYmVjYXVzZSBpdCBpbXBsaWVzIHJl
bGVhc2luZwogICAgIC8vIG1fbmV3RnJhbWVCYXNlLCB3aGljaCBjb3VsZCBiZSBhIHdhbnRlZCBy
ZWdpc3Rlci4KICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiICAgKiBTdG9yaW5n
IHRoZSBhcmd1bWVudCBjb3VudCBpbnRvICIsIFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQgfSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICogU3Rvcmlu
ZyB0aGUgYXJndW1lbnQgY291bnQgaW50byAiLCBWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyB9LCAiXG4iKTsKICAgICBtX2ppdC5zdG9y
ZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksCi0gICAgICAgIGFkZHJlc3NGb3JO
ZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRo
T2Zmc2V0KFRhZ09mZnNldCkpOworICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdpc3Rl
ciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIH0pLndpdGhPZmZz
ZXQoVGFnT2Zmc2V0KSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9udW1QYXNzZWRBcmdzICE9IFVJ
TlRfTUFYKTsKICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
bV9udW1QYXNzZWRBcmdzKSwKLSAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIg
eyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNl
dCkpOworICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIH0pLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNl
dCkpOwogCiAgICAgaWYgKCFpc1Nsb3dQYXRoKCkpIHsKICAgICAgICAgQVNTRVJUKG1fbmV3RnJh
bWVCYXNlICE9IE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggMTdjMGVkYWE4MmI5Zjk0ZjU3NDEzMTEwNjFhNjUxMjk0
YTUxNmY4NS4uZWZhNzhiY2Q3OThhNDhiNWQyMGU3YzE0NTgxNDQ4NTFlZmY5MGQyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzA3LDYgKzMwNyw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2RpcmVj
dF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9zY29wZWRfYXJndW1l
bnRzKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfY2xvbmVkX2FyZ3VtZW50cykKKyAg
ICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpCiAgICAgICAg
IERFRklORV9TTE9XX09QKGNyZWF0ZV9yZXN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVh
dGVfcHJvbWlzZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AobmV3X3Byb21pc2UpCkBAIC03NTUs
NyArNzU2LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlv
bkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAg
IGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKTsKIAotICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KSwgcmVnVDEpOworICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIHJlZ1QxKTsKICAgICAgICAgYnJhbmNo
MzIoQWJvdmVPckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5tX251bVBh
cmFtZXRlcnMpKS5saW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CiAKICAgICAgICAgbV9ieXRlY29k
ZUluZGV4ID0gQnl0ZWNvZGVJbmRleCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwCmluZGV4IGJmMjMwNmJjZTRkNTZmMTA5YTAzNjE4YjM0MDcyZmM1N2MwZTVhYzMuLmMzZjhh
YTBjN2ZhZjRlYWQ0MzQ2N2Q1NDI3MjZhZThhYzkyNTg3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcApAQCAtNzQsNyArNzQsNyBAQCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1l
KGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKikKICAgICB9CiAKICAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Mo
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZz
ZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIH0KIAogCkBAIC0xMTAsNyArMTEwLDcg
QEAgSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5m
byogaW5mbykKICAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMSk7CiAKICAgICAvLyBQcm9m
aWxlIHRoZSBhcmd1bWVudCBjb3VudC4KLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwogICAgIGxvYWQz
MihpbmZvLT5hZGRyZXNzT2ZNYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCByZWdUMCk7
CiAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1QwLCByZWdUMik7CiAg
ICAgc3RvcmUzMihyZWdUMiwgaW5mby0+YWRkcmVzc09mTWF4QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKSk7CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAg
ICAvLyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyksIHdp
dGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KICAgICBhdXRvIGJ5dGVjb2RlSW5kZXggPSBt
X2NvZGVCbG9jay0+Ynl0ZWNvZGVJbmRleChpbnN0cnVjdGlvbik7CiAgICAgdWludDMyX3QgbG9j
YXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChieXRlY29kZUluZGV4KS5iaXRzKCk7Ci0gICAgc3Rv
cmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rl
ciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2Nh
dGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgKyBUYWdPZmZzZXQpKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBy
ZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNz
KHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggN2Y2YzkxMDg5
MDc5OGVmNjExYjg3ZWI0NDFkZjA1NWQ0YjEzYjBkMS4uZDZkYmUwOTA4ZTRlOGFkYWVhZTYyNGQ2
MDU0Yjk4YTdjYzE1MTI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3Qg
T3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qKQogICAgIH0KIAogICAgIGFkZFB0cihUcnVzdGVk
SW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZy
YW1lQW5kUEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAg
ICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1Bv
aW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KQEAg
LTIwMSw3ICsyMDEsNyBAQCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29k
ZSwgQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QxKTsK
IAogICAgIC8vIFByb2ZpbGUgdGhlIGFyZ3VtZW50IGNvdW50LgotICAgIGxvYWQzMihBZGRyZXNz
KHJlZ1QxLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCByZWdUMik7CisgICAgbG9hZDMyKEFk
ZHJlc3MocmVnVDEsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCByZWdU
Mik7CiAgICAgbG9hZDMyKGluZm8tPmFkZHJlc3NPZk1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKCksIHJlZ1QwKTsKICAgICBKdW1wIG5vdEJpZ2dlc3QgPSBicmFuY2gzMihBYm92ZSwgcmVn
VDAsIHJlZ1QyKTsKICAgICBzdG9yZTMyKHJlZ1QyLCBpbmZvLT5hZGRyZXNzT2ZNYXhBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpKTsKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEpJVDo6Y29t
cGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxM
aW5rSW5mb0luZAogICAgIC8vIFNQIGhvbGRzIG5ld0NhbGxGcmFtZSArIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSwgd2l0aCBBcmd1bWVudENvdW50IGluaXRpYWxpemVkLgogICAgIAogICAgIHVp
bnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KGluc3RydWN0aW9uKSkpLmJpdHMoKTsKLSAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIGVtaXRMb2FkKGNh
bGxlZSwgcmVnVDEsIHJlZ1QwKTsgLy8gcmVnVDEsIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAg
IHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2Fk
T2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCmluZGV4IDIyMTQ5YzliZDFiOGVjMTE4MTJjYmUwYjg1NDFiZWU5M2Ix
MGFiMzQuLmZjZThiYjc0NzY2Mzc4Mzc5OGM5OTc1NmU4ZGY3Zjg5ZTA5YmI4NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0xMDksNyArMTA5LDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIEpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKCkKICNlbHNlCiAgICAgdWludDMy
X3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLmJpdHMoKTsK
ICNlbmRpZgotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIo
bG9jYXRpb25CaXRzKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoYXQgdGhpcyBp
cyBuZWVkZWQuIEpJVE9wZXJhdGlvbnMgdGVuZCB0byB1cGRhdGUgdGhlIHRvcCBjYWxsIGZyYW1l
IG9uCiAgICAgLy8gdGhlIEMrKyBzaWRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKaW5kZXggN2NmYTA5NWYwMGQxN2UxNDExYmU5Y2ZiODBmODA4MDZmNzg4ZjZjMS4u
OGUzOTFjNTY5ZTZlMWM1NzE1MDY0MDYwNGJiZDExNDQ1YTczNTE1YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xNTQ2LDcgKzE1NDYsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9hcmd1bWVudF9jb3VudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
QXJndW1lbnRDb3VudD4oKTsKICAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7
Ci0gICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJl
Z1QwKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyksIHJlZ1QwKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1Qw
KTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJs
ZVJlZ3MocmVnVDAsIHJlZ1QxKTsKICAgICBib3hJbnQzMihyZWdUMCwgcmVzdWx0KTsKQEAgLTE1
NTgsNyArMTU1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UmVzdExlbmd0aD4oKTsKICAgICBpbnQgZHN0ID0gYnl0
ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgdW5zaWduZWQgbnVtUGFyYW1zVG9Ta2lwID0gYnl0
ZWNvZGUubV9udW1QYXJhbWV0ZXJzVG9Ta2lwOwotICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCByZWdUMCk7CisgICAgbG9hZDMyKHBheWxvYWRGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMCk7CiAgICAg
c3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CiAgICAgSnVtcCB6ZXJvTGVuZ3RoID0gYnJh
bmNoMzIoTGVzc1RoYW5PckVxdWFsLCByZWdUMCwgSW1tMzIobnVtUGFyYW1zVG9Ta2lwKSk7CiAg
ICAgc3ViMzIoSW1tMzIobnVtUGFyYW1zVG9Ta2lwKSwgcmVnVDApOwpAQCAtMTU5NCw3ICsxNTk0
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyhyZWdUMSwgcmVn
VDApOwogI2VuZGlmCiAKLSAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KSwgcmVnVDIpOworICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgcmVnVDIpOwogICAgIEp1bXAgYXJndW1lbnRP
dXRPZkJvdW5kcyA9IGJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0z
MihpbmRleCkpOwogICAgIGxvYWRWYWx1ZShhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OnRoaXNB
cmd1bWVudCArIGluZGV4KSwgcmVzdWx0UmVncyk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAppbmRl
eCAzODg3MzA1MmQxMjg1MmZjNmJiOTE0MmQ0NTYwN2FlOGUxOWE2NzBhLi4wOTUyNTkxZWU5Zjdk
NWQ0ZmMyMTcwYzcxNjkzY2ViNjY5Nzc0YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9p
ZCBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShWTSYgdm0sIENDYWxsSGVscGVycyYgaml0
LCBHUFJSZWcgbnVtVQogICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBBcmd1bWVudENvdW50Lgot
ICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRj
aEdQUjIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOworICAgIGppdC5zdG9yZTMyKHNjcmF0
Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUjIsIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKIAogICAgIC8vIENvcHkgYXJndW1lbnRzLgogICAg
IGppdC5zaWduRXh0ZW5kMzJUb1B0cihzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjEpOwpAQCAtMTI4
LDcgKzEyOCw3IEBAIHZvaWQgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoVk0mIHZtLCBD
Q2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG51bVVzZWRTbG90CiAgICAgICAgICAgICBmaXJzdEFy
Z3VtZW50UmVnID0gVmlydHVhbFJlZ2lzdGVyKDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFy
Z3VtZW50Q291bnRSZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygK
LSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSwgRGF0YUZvcm1hdEludDMyKTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIERhdGFGb3JtYXRJbnQzMik7CiAg
ICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lOjphcmd1
bWVudE9mZnNldCgwKSk7CiAgICAgfQogICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNl
KHZtLCBqaXQsIG51bVVzZWRTbG90c0dQUiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3Jh
dGNoR1BSMywgYXJndW1lbnRDb3VudFJlY292ZXJ5LCBmaXJzdEFyZ3VtZW50UmVnLCBmaXJzdFZh
ckFyZ09mZnNldCwgc2xvd0Nhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TcGVjaWFsaXplZFRodW5rSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nw
ZWNpYWxpemVkVGh1bmtKSVQuaAppbmRleCA0ZjU2N2QwNmFlYTU0NGFiMjY3MTU1YzEzZGYzNmE3
MjQ5YjZjMzQzLi5hMTE2MjJlZWJkYmU0Nzg1ZWYwNmFkYzM5MzQ3MWY1YzIxZjcyNDAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApAQCAt
NDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7CiAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVy
cygpOwogICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1i
ZXIgb2YgYXJndW1lbnRzCi0gICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihO
b3RFcXVhbCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3Rl
ZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5h
cHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEp
KSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IFNwZWNpYWxpemVkVGh1
bmtKSVQoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCmluZGV4IDUyNDFlNWY3Y2MzMzJhNjRlMGRlNmRiNDRiZGFmOWU4ZTgwZjIyYWEuLjE0
NDBjNjBiZDRhMjVkNTFhNzBjZjliY2M1NjYzNjU0N2NiYzFmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGFyaXR5Rml4dXBHZW5lcmF0b3Io
Vk0mIHZtKQogICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6
OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENP
ZmZzZXQoKSkpOwogI2VuZGlmCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwotICAgIGppdC5sb2FkMzIoSlNJbnRl
cmZhY2VKSVQ6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEpTSW50
ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6
OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBK
U0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIyKTsKICAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VK
SVQ6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyksIEpTSW50
ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhh
dmUgZXh0cmEgc2xvdHMgd2UgY2FuIHVzZQpAQCAtNDYyLDcgKzQ2Miw3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYXJpdHlGaXh1cEdlbmVyYXRvcihWTSYgdm0pCiAg
ICAgaml0LnJldCgpOwogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkgc2VjdGlvbiBhYm92ZSwgVVNF
KEpTVkFMVUUzMl82NCkgc2VjdGlvbiBiZWxvdy4KICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJ
VDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7Ci0gICAgaml0Lmxv
YWQzMihKU0ludGVyZmFjZUpJVDo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CisgICAgaml0LmxvYWQzMihKU0lu
dGVyZmFjZUpJVDo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5hZGQzMihK
U0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0
ZXJzKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CiAKICAgICAvLyBDaGVjayB0byBz
ZWUgaWYgd2UgaGF2ZSBleHRyYSBzbG90cyB3ZSBjYW4gdXNlCkBAIC0xMTI5LDcgKzExMjksNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJhbmRvbVRodW5rR2VuZXJh
dG9yKFZNJiB2bSkKICNlbmRpZgogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJh
dG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogICAgIApAQCAtMTEzNyw3ICsx
MTM3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHYKICAgICAKICAgICAvLyBTZXQgdXAgb3Vy
IGNhbGwgZnJhbWUuCiAgICAgaml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihudWxscHRyKSwgQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jaykpOwotICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBD
Q2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAg
aml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6
dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKICAg
ICB1bnNpZ25lZCBleHRyYVN0YWNrTmVlZGVkID0gMDsKICAgICBpZiAodW5zaWduZWQgc3RhY2tN
aXNhbGlnbm1lbnQgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgJSBzdGFja0FsaWdubWVudEJ5
dGVzKCkpCkBAIC0xMTU4LDcgKzExNTgsMTUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHYKICAg
ICAvLwogICAgIC8vIFRoYXQncyByZWFsbHkgYWxsIHRoZXJlIGlzIHRvIHRoaXMuIFdlIGhhdmUg
YWxsIHRoZSByZWdpc3RlcnMgd2UgbmVlZCB0byBkbyBpdC4KICAgICAKLSAgICBqaXQubG9hZDMy
KENDYWxsSGVscGVyczo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwg
R1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5sb2FkQ2VsbChDQ2FsbEhlbHBlcnM6OmFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgR1BSSW5mbzo6cmVnVDApOworICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9u
OjpvZmZzZXRPZkJvdW5kQXJncygpKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5sb2FkMzIo
Q0NhbGxIZWxwZXJzOjpwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1Qx
LCBHUFJJbmZvOjpyZWdUMyk7CisgICAgYXV0byBub0FyZ3MgPSBqaXQuYnJhbmNoVGVzdFB0cihD
Q2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9m
ZnNldE9mUHVibGljTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LmFkZDMyKEdQ
UkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0LnN1YjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgbm9BcmdzLmxpbmsoJmpp
dCk7CiAgICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzIC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJz
KSwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQubHNoaWZ0MzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMyksIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQuYWRk
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRlcygpIC0gMSks
IEdQUkluZm86OnJlZ1QyKTsKQEAgLTExNjcsMTcgKzExNzUsMTYgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0
b3IoVk0mIHYKICAgICBpZiAoZXh0cmFTdGFja05lZWRlZCkKICAgICAgICAgaml0LmFkZDMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGV4dHJhU3RhY2tOZWVkZWQpLCBHUFJJbmZvOjpyZWdU
Mik7CiAgICAgCi0gICAgLy8gQXQgdGhpcyBwb2ludCByZWdUMSBoYXMgdGhlIGFjdHVhbCBhcmd1
bWVudCBjb3VudCBhbmQgcmVnVDIgaGFzIHRoZSBhbW91bnQgb2Ygc3RhY2sgd2Ugd2lsbCBuZWVk
LgorICAgIC8vIEF0IHRoaXMgcG9pbnQgcmVnVDEgaGFzIHRoZSBhY3R1YWwgYXJndW1lbnQgY291
bnQsIHJlZ1QyIGhhcyB0aGUgYW1vdW50IG9mIHN0YWNrIHdlIHdpbGwgbmVlZCwgYW5kIHJlZ1Qz
IGhhcyB0aGUgcGFzc2VkIGFyZ3VtZW50IGNvdW50LgogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3
ZSBoYXZlIGVub3VnaCBzdGFjayBzcGFjZS4KICAgICAKICAgICBqaXQubmVnUHRyKEdQUkluZm86
OnJlZ1QyKTsKICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIEdQUkluZm86OnJlZ1QyKTsKLSAgICBqaXQubG9hZENlbGwoQ0NhbGxIZWxwZXJzOjphZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgaGF2ZVN0YWNrU3BhY2UgPSBqaXQuYnJhbmNoUHRyKENDYWxsSGVscGVy
czo6QmVsb3dPckVxdWFsLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyh2bS5hZGRyZXNz
T2ZTb2Z0U3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6cmVnVDIpOwogCiAgICAgLy8gVGhyb3cgU3Rh
Y2sgT3ZlcmZsb3cgZXhjZXB0aW9uCiAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwotICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMywgSlNCb3VuZEZ1bmN0aW9uOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9uOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayk+
KEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuaykp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKQEAgLTExOTAsMzEgKzExOTcsNDQgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxH
ZW5lcmF0b3IoVk0mIHYKIAogICAgIC8vIERvIGJhc2ljIGNhbGxlZSBmcmFtZSBzZXR1cCwgaW5j
bHVkaW5nICd0aGlzJy4KICAgICAKLSAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMSwgQ0Nh
bGxIZWxwZXJzOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQpKTsKKyAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpj
YWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CiAgICAgCi0gICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gSlNWYWx1ZVJlZ3M6
OndpdGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMik7Ci0g
ICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDMsIEpT
Qm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZCb3VuZFRoaXMoKSksIHZhbHVlUmVncyk7CisgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gSlNWYWx1ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKEdQ
UkluZm86OnJlZ1Q0LCBHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZC
b3VuZFRoaXMoKSksIHZhbHVlUmVncyk7CiAgICAgaml0LnN0b3JlVmFsdWUodmFsdWVSZWdzLCBD
Q2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdCgwKSk7CiAKLSAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zm
c2V0T2ZUYXJnZXRGdW5jdGlvbigpKSwgR1BSSW5mbzo6cmVnVDMpOwotICAgIGppdC5zdG9yZUNl
bGwoR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpOwotICAgIAogICAgIC8vIE9LLCBub3cgd2UgY2FuIHN0YXJ0IGNvcHlp
bmcuIFRoaXMgaXMgYSBzaW1wbGUgbWF0dGVyIG9mIGNvcHlpbmcgcGFyYW1ldGVycyBmcm9tIHRo
ZSBjYWxsZXIncwotICAgIC8vIGZyYW1lIHRvIHRoZSBjYWxsZWUncyBmcmFtZS4gTm90ZSB0aGF0
IHdlIGtub3cgdGhhdCByZWdUMSAodGhlIGFyZ3VtZW50IGNvdW50KSBtdXN0IGJlIGF0CisgICAg
Ly8gZnJhbWUgdG8gdGhlIGNhbGxlZSdzIGZyYW1lLiBOb3RlIHRoYXQgd2Uga25vdyB0aGF0IHJl
Z1QzICh0aGUgYXJndW1lbnQgY291bnQpIG11c3QgYmUgYXQKICAgICAvLyBsZWFzdCAxLgorICAg
IGppdC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDMp
OwogICAgIGppdC5zdWIzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6
cmVnVDEpOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0LmJyYW5jaFRlc3QzMihD
Q2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QxKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgZG9uZSA9IGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpy
ZWdUMyk7CiAgICAgCiAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBsb29wID0gaml0LmxhYmVsKCk7
CisgICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpy
ZWdUMyk7CiAgICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJ
bmZvOjpyZWdUMSk7Ci0gICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSkpLmluZGV4ZWRCeShHUFJJbmZvOjpyZWdUMSwg
Q0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0KSwgdmFsdWVSZWdzKTsKKyAgICBqaXQubG9hZFZhbHVl
KENDYWxsSGVscGVyczo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxKSku
aW5kZXhlZEJ5KEdQUkluZm86OnJlZ1QzLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQpLCB2YWx1
ZVJlZ3MpOwogICAgIGppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxs
ZWVBcmd1bWVudFNsb3QoMSkuaW5kZXhlZEJ5KEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6
OlRpbWVzRWlnaHQpKTsKLSAgICBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVy
bywgR1BSSW5mbzo6cmVnVDEpLmxpbmtUbyhsb29wLCAmaml0KTsKKyAgICBqaXQuYnJhbmNoVGVz
dDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDMpLmxpbmtUbyhsb29wLCAm
aml0KTsKICAgICAKICAgICBkb25lLmxpbmsoJmppdCk7CisgICAgYXV0byBub0FyZ3MyID0gaml0
LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QxKTsKKworICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNCb3Vu
ZEZ1bmN0aW9uOjpvZmZzZXRPZkJvdW5kQXJncygpKSwgR1BSSW5mbzo6cmVnVDMpOworCisgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBsb29wQm91bmQgPSBqaXQubGFiZWwoKTsKKyAgICBqaXQuc3Vi
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBq
aXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1QzLCBHUFJJ
bmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBKU0ltbXV0YWJsZUJ1dHRlcmZs
eTo6b2Zmc2V0T2ZEYXRhKCkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHZhbHVl
UmVncyk7CisgICAgaml0LnN0b3JlVmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxl
ZUFyZ3VtZW50U2xvdCgxKS5pbmRleGVkQnkoR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6
VGltZXNFaWdodCkpOworICAgIGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpOb25aZXJv
LCBHUFJJbmZvOjpyZWdUMSkubGlua1RvKGxvb3BCb3VuZCwgJmppdCk7CisKKyAgICBub0FyZ3My
LmxpbmsoJmppdCk7CisKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDAsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigpKSwg
R1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmVnVDIsIENDYWxs
SGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwogICAgIAog
ICAgIGppdC5sb2FkUHRyKAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
cmVnVDMsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwKKyAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1
dGFibGUoKSksCiAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cigKICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmgKaW5kZXggZjg2MWVlODg0OWJjMWRlZTFjMzU2ZmFkZjA0MWQzNTQ2
NWExNzNiYi4uN2IxMDgzYmY3MTIwNmRhYjZjNjY3NzRmZjMxYjUwMWFkNDcxNmU4YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCkBAIC02OCw2ICs2OCw2
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaW11bFRodW5rR2VuZXJh
dG9yKFZNJik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJhbmRvbVRo
dW5rR2VuZXJhdG9yKFZNJik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHRydW5jVGh1bmtHZW5lcmF0b3IoVk0mKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5l
cmF0b3IoVk0mKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApp
bmRleCAxY2UyN2M1MjJmYzRmNWJjNjFiMDViZmYxMDM0YmZjNGM5MDZhM2VkLi4yMDdmNjZhZTM4
Yzg5MWZkNjI0YjgxYTgwMzc5YjAxYmVkMGEzNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAt
NTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNO
YXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJK
U09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU1NvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJK
U1N0cmluZy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggMmZkZTEwN2E5ODZjZTVjNWZiMzM4MmM2MWI5
YTA4MGI2NTI5YTdlYS4uZjUwYTE3YjlhZjZhN2I4YTU5ZmJkNjI2YzI3MjQzMWViYWI5YWY5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTExMiw4ICsx
MTIsOCBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQo
Q2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpID09IENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZz
ZXQoKSArIE1hY2hpbmVSZWdpc3RlclNpemUpOwogICAgIEFTU0VSVChDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2sgKiBzaXplb2YoUmVnaXN0ZXIpID09IENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQo
KSArIE1hY2hpbmVSZWdpc3RlclNpemUpOwogICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSA9PSBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sg
KiBzaXplb2YoUmVnaXN0ZXIpICsgU2xvdFNpemUpOwotICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSArIFNsb3RTaXplKTsKLSAgICBTVEFUSUNfQVNT
RVJUKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikgKyBTbG90U2l6ZSk7
CisgICAgU1RBVElDX0FTU0VSVChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc2l6ZW9m
KFJlZ2lzdGVyKSArIFNsb3RTaXplKTsKKyAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZVNsb3Q6
OnRoaXNBcmd1bWVudCAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzaXplb2YoUmVnaXN0ZXIpICsgU2xvdFNpemUpOwogICAg
IFNUQVRJQ19BU1NFUlQoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgPT0gQ2FsbEZy
YW1lU2xvdDo6dGhpc0FyZ3VtZW50KTsKIAogICAgIEFTU0VSVChDYWxsRnJhbWU6OmFyZ3VtZW50
T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSA9PSBDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCmluZGV4IGUxNzM0ZGNmNjFiNGNmYzU1MTJmYTI4NTYwMWJjYWIzMGM4OGYyZTQuLmM4YTA3
ZjAwZWZjMjQ4NTA0NjA4ZWRhNjk1YjA4ODI1Y2YyYTZhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE3Nyw4ICsx
NzcsOCBAQCBjb25zdCBDYWxsZXJGcmFtZSA9IDAKIGNvbnN0IFJldHVyblBDID0gQ2FsbGVyRnJh
bWUgKyBNYWNoaW5lUmVnaXN0ZXJTaXplCiBjb25zdCBDb2RlQmxvY2sgPSBSZXR1cm5QQyArIE1h
Y2hpbmVSZWdpc3RlclNpemUKIGNvbnN0IENhbGxlZSA9IENvZGVCbG9jayArIFNsb3RTaXplCi1j
b25zdCBBcmd1bWVudENvdW50ID0gQ2FsbGVlICsgU2xvdFNpemUKLWNvbnN0IFRoaXNBcmd1bWVu
dE9mZnNldCA9IEFyZ3VtZW50Q291bnQgKyBTbG90U2l6ZQorY29uc3QgQXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPSBDYWxsZWUgKyBTbG90U2l6ZQorY29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0
ID0gQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBTbG90U2l6ZQogY29uc3QgRmlyc3RBcmd1
bWVudE9mZnNldCA9IFRoaXNBcmd1bWVudE9mZnNldCArIFNsb3RTaXplCiBjb25zdCBDYWxsRnJh
bWVIZWFkZXJTaXplID0gVGhpc0FyZ3VtZW50T2Zmc2V0CiAKQEAgLTUzMCw3ICs1MzAsNyBAQCBj
b25zdCBGdW5jdGlvbkNvZGUgPSBjb25zdGV4cHIgRnVuY3Rpb25Db2RlCiBjb25zdCBNb2R1bGVD
b2RlID0gY29uc3RleHByIE1vZHVsZUNvZGUKIAogIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRo
ZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCi1jb25zdCBMTEludFJldHVyblBDID0g
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldAorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0CiAKICMgU3RyaW5nIGZsYWdzLgogY29uc3Qg
aXNSb3BlSW5Qb2ludGVyID0gY29uc3RleHByIEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIKQEAg
LTEwMTUsNyArMTAxNSw3IEBAIGVuZAogbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwg
dGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNV
c2VkQnlMTEludCgpCiAKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtj
ZnJdLCB0ZW1wMgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpc1tjZnJdLCB0ZW1wMgogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0ZW1wMQogICAg
IGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3RlbXAxXSwgdGVtcDEKICAgICBiaWx0
ZXEgdGVtcDEsIHRlbXAyLCAubm9Bcml0eUZpeHVwCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCBtYWNy
byBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRy
VGFnKQogICAgIG1vdmUgY2ZyLCB0ZW1wMQogICAgIGFkZHAgdGVtcDIsIHRlbXAxCiAKLSAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtzcF0sIHRlbXAyCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW3NwXSwgdGVtcDIKICAg
ICAjIFdlIGFzc3VtZSA8IDJeMjggYXJndW1lbnRzCiAgICAgbXVsaSBTbG90U2l6ZSwgdGVtcDIK
ICAgICBhZGRpIFN0YWNrQWxpZ25tZW50IC0gMSArIENhbGxGcmFtZUhlYWRlclNpemUsIHRlbXAy
CkBAIC0xMDkxLDcgKzEwOTEsNyBAQCBtYWNybyBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9p
bnQob3BOYW1lLCBzaXplKQogICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcE5hbWUsIHNp
emUpCiAKICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICBsb2FkaSBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgbG9hZGkgQXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKIGVuZAogCiBtYWNybyBhcnJheVByb2Zp
bGUob2Zmc2V0LCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkKQEAgLTE1
ODgsNiArMTU4OCw3IEBAIG1hY3JvIHNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKIGVuZAogCiBzbG93
UGF0aE9wKGNyZWF0ZV9jbG9uZWRfYXJndW1lbnRzKQorc2xvd1BhdGhPcChjcmVhdGVfYXJndW1l
bnRzX2J1dHRlcmZseSkKIHNsb3dQYXRoT3AoY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMpCiBzbG93
UGF0aE9wKGNyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogc2xvd1BhdGhPcChjcmVhdGVfcmVz
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggMDMwODExZmFjMTI4OGM0NjRmZTI4YTNiY2EwMWI1MjJk
NGFjZjQwNi4uZDA2YTRhMmFkZDUwZTg3OWNlZWNjZGI5NjhmZWQxYTQwNTVlODY3MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTkzLDcgKzkzLDcgQEAgZW5kCiAKICMgQWZ0ZXIgY2FsbGluZywgY2Fs
bGluZyBieXRlY29kZSBpcyBjbGFpbWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgog
bWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKLSAg
ICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgbG9hZGkgQXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKICAgICBnZXQoc2l6
ZSwgb3Bjb2RlU3RydWN0LCBtX2RzdCwgdDMpCiAgICAgc3RvcmVpIHIxLCBUYWdPZmZzZXRbY2Zy
LCB0MywgOF0KICAgICBzdG9yZWkgcjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KQEAgLTQz
Myw3ICs0MzMsNyBAQCBlbmQKIAogIyBDYWxsIGEgc2xvd1BhdGggZm9yIGNhbGwgb3Bjb2Rlcy4K
IG1hY3JvIGNhbGxDYWxsU2xvd1BhdGgoc2xvd1BhdGgsIGFjdGlvbikKLSAgICBzdG9yZXAgUEMs
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBQQywgQXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQogICAgIG1vdmUgY2ZyLCBhMAogICAg
IG1vdmUgUEMsIGExCiAgICAgY0NhbGwyKHNsb3dQYXRoKQpAQCAtNDQxLDE5ICs0NDEsMTkgQEAg
bWFjcm8gY2FsbENhbGxTbG93UGF0aChzbG93UGF0aCwgYWN0aW9uKQogZW5kCiAKIG1hY3JvIGNh
bGxUcmFwSGFuZGxlcih0aHJvd0hhbmRsZXIpCi0gICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzICsgVGFnT2Zmc2V0W2Nmcl0KICAgICBtb3ZlIGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQog
ICAgIGNDYWxsMihfbGxpbnRfc2xvd19wYXRoX2hhbmRsZV90cmFwcykKICAgICBidHBueiByMCwg
dGhyb3dIYW5kbGVyCi0gICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQ
QworICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0s
IFBDCiBlbmQKIAogbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgIGNoZWNrU3dp
dGNoVG9KSVQoCiAgICAgICAgIDEsCiAgICAgICAgIG1hY3JvICgpCi0gICAgICAgICAgICBzdG9y
ZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgc3RvcmVp
IFBDLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdCiAgICAgICAg
ICAgICBtb3ZlIGNmciwgYTAKICAgICAgICAgICAgIG1vdmUgUEMsIGExCiAgICAgICAgICAgICBj
Q2FsbDIoX2xsaW50X2xvb3Bfb3NyKQpAQCAtNDYxLDcgKzQ2MSw3IEBAIG1hY3JvIGNoZWNrU3dp
dGNoVG9KSVRGb3JMb29wKCkKICAgICAgICAgICAgIG1vdmUgcjEsIHNwCiAgICAgICAgICAgICBq
bXAgcjAKICAgICAgICAgLnJlY292ZXI6Ci0gICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgICAgICBlbmQpCiBlbmQKIApAQCAt
NjM3LDcgKzYzNyw3IEBAIGVuZAogCiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEs
IHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgogbWFjcm8gZnVuY3Rpb25B
cml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldCAr
IEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjpt
X251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKICAgICBtb3ZlIGNmciwgYTAKICAgICBtb3Zl
IFBDLCBhMQpAQCAtNjU1LDcgKzY1NSw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25l
TGFiZWwsIHNsb3dQYXRoKQogLm5vRXJyb3I6CiAgICAgbW92ZSByMSwgdDEgIyByMSBjb250YWlu
cyBzbG90c1RvQWRkLgogICAgIGJ0aXogdDEsIC5jb250aW51ZQotICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCAr
IEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQyCiAgICAgYWRkaSBDYWxsRnJhbWVI
ZWFkZXJTbG90cywgdDIKIAogICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBzb21lIHVuYWxpZ25l
ZCBzbG90cyB3ZSBjYW4gdXNlCkBAIC03MzMsNyArNzMzLDcgQEAgX2xsaW50X29wX2VudGVyOgog
CiBsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2FyZ3VtZW50LCBPcEdldEFyZ3VtZW50LCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX2luZGV4LCB0MikKLSAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAg
IGJpbHRlcSB0MCwgdDIsIC5vcEdldEFyZ3VtZW50T3V0T2ZCb3VuZHMKICAgICBsb2FkaSBUaGlz
QXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCiAgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDMKQEAgLTc0NSw3
ICs3NDUsNyBAQCBlbmQpCiAKIAogbGxpbnRPcFdpdGhSZXR1cm4ob3BfYXJndW1lbnRfY291bnQs
IE9wQXJndW1lbnRDb3VudCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAg
IHN1YmkgMSwgdDAKICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogZW5kKQpAQCAtMTkyNSw4ICsx
OTI1LDggQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVT
dHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgYWRkcCBjZnIsIHQzICAjIHQz
IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCiAgICAgICAgIHN0b3JlaSB0MiwgQ2FsbGVl
ICsgUGF5bG9hZE9mZnNldFt0M10KICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1f
YXJnYywgdDIpCi0gICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCi0gICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZz
ZXRbY2ZyXQorICAgICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
UGF5bG9hZE9mZnNldFt0M10KICAgICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09m
ZnNldFt0M10KICAgICAgICAgbW92ZSB0Mywgc3AKICAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1
XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKQEAgLTI1MzQsNyArMjUzNCw3IEBAIGVuZCkK
IAogCiBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0
aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQg
KyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKICAg
ICBnZXR1KHNpemUsIE9wR2V0UmVzdExlbmd0aCwgbV9udW1QYXJhbWV0ZXJzVG9Ta2lwLCB0MSkK
ICAgICBiaWx0ZXEgdDAsIHQxLCAuc3RvcmVaZXJvCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDNkZDJlYjQ4Y2Ji
YTZlZjVjZDk4ODYzOWM3OTExZTIyYTcxMzMxNDguLjUxOWM2Njk4OWRkZTQ1MjNkNzdlNjAyNDU3
YzkwNTY0MWI2OWY0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC05Miw3ICs5Miw3IEBAIGVuZAogCiAjIEFm
dGVyIGNhbGxpbmcsIGNhbGxpbmcgYnl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJz
IGFyZSBub3QgdXNlZC4KIG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVj
dCwgZGlzcGF0Y2gpCi0gICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQ
QworICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0s
IFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJdLCBQQgogICAgIGdldChzaXplLCBvcGNvZGVTdHJ1
Y3QsIG1fZHN0LCB0MSkKQEAgLTIxNyw3ICsyMTcsNyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNh
bGwpCiAgICAgbW92ZSAoY29uc3RleHByIFByb3RvQ2FsbEZyYW1lOjpudW1iZXJPZlJlZ2lzdGVy
cyksIHQzCiAKIC5jb3B5SGVhZGVyTG9vcDoKLSAgICAjIENvcHkgdGhlIENvZGVCbG9jay9DYWxs
ZWUvQXJndW1lbnRDb3VudC98dGhpc3wgZnJvbSBwcm90b0NhbGxGcmFtZSBpbnRvIHRoZSBjYWxs
ZWUgZnJhbWUuCisgICAgIyBDb3B5IHRoZSBDb2RlQmxvY2svQ2FsbGVlL0FyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzL3x0aGlzfCBmcm9tIHByb3RvQ2FsbEZyYW1lIGludG8gdGhlIGNhbGxlZSBm
cmFtZS4KICAgICBzdWJpIDEsIHQzCiAgICAgbG9hZHEgW3Byb3RvQ2FsbEZyYW1lLCB0MywgOF0s
IGV4dHJhVGVtcFJlZwogICAgIHN0b3JlcSBleHRyYVRlbXBSZWcsIENvZGVCbG9ja1tzcCwgdDMs
IDhdCkBAIC0zOTAsNyArMzkwLDcgQEAgZW5kCiAKICMgQ2FsbCBhIHNsb3cgcGF0aCBmb3IgY2Fs
bCBvcGNvZGVzLgogbWFjcm8gY2FsbENhbGxTbG93UGF0aChzbG93UGF0aCwgYWN0aW9uKQotICAg
IHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVpIFBD
LCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdCiAgICAgcHJlcGFy
ZVN0YXRlRm9yQ0NhbGwoKQogICAgIG1vdmUgY2ZyLCBhMAogICAgIG1vdmUgUEMsIGExCkBAIC0z
OTksMjAgKzM5OSwyMCBAQCBtYWNybyBjYWxsQ2FsbFNsb3dQYXRoKHNsb3dQYXRoLCBhY3Rpb24p
CiBlbmQKIAogbWFjcm8gY2FsbFRyYXBIYW5kbGVyKHRocm93SGFuZGxlcikKLSAgICBzdG9yZWkg
UEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlaSBQQywgQXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQogICAgIHByZXBhcmVTdGF0ZUZv
ckNDYWxsKCkKICAgICBtb3ZlIGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQogICAgIGNDYWxsMihf
bGxpbnRfc2xvd19wYXRoX2hhbmRsZV90cmFwcykKICAgICBidHBueiByMCwgdGhyb3dIYW5kbGVy
Ci0gICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGxvYWRp
IEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiBlbmQKIAog
bWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgIGNoZWNrU3dpdGNoVG9KSVQoCiAg
ICAgICAgIDEsCiAgICAgICAgIG1hY3JvKCkKLSAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1l
bnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0KICAgICAgICAgICAgIHByZXBhcmVT
dGF0ZUZvckNDYWxsKCkKICAgICAgICAgICAgIG1vdmUgY2ZyLCBhMAogICAgICAgICAgICAgbW92
ZSBQQywgYTEKQEAgLTQyMSw3ICs0MjEsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9v
cCgpCiAgICAgICAgICAgICBtb3ZlIHIxLCBzcAogICAgICAgICAgICAgam1wIHIwLCBKU0VudHJ5
UHRyVGFnCiAgICAgICAgIC5yZWNvdmVyOgotICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKICAgICAgICAgZW5kKQogZW5kCiAKQEAg
LTYxOSw3ICs2MTksNyBAQCBlbmQKIAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQx
LCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KIG1hY3JvIGZ1bmN0aW9u
QXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQg
KyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6
bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwo
KQogICAgIG1vdmUgY2ZyLCBhMApAQCAtNjM4LDcgKzYzOCw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJp
dHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQogLm5vRXJyb3I6CiAgICAgbW92ZSByMSwgdDEg
IyByMSBjb250YWlucyBzbG90c1RvQWRkLgogICAgIGJ0aXogdDEsIC5jb250aW51ZQotICAgIGxv
YWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQyCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQyCiAgICAgYWRk
aSBDYWxsRnJhbWVIZWFkZXJTbG90cywgdDIKIAogICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBz
b21lIHVuYWxpZ25lZCBzbG90cyB3ZSBjYW4gdXNlCkBAIC03MjMsNyArNzIzLDcgQEAgX2xsaW50
X29wX2VudGVyOgogCiBsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2FyZ3VtZW50LCBPcEdldEFy
Z3VtZW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX2lu
ZGV4LCB0MikKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0
MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tj
ZnJdLCB0MAogICAgIGJpbHRlcSB0MCwgdDIsIC5vcEdldEFyZ3VtZW50T3V0T2ZCb3VuZHMKICAg
ICBsb2FkcSBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCiAgICAgcmV0dXJuKHQw
KQpAQCAtNzM0LDcgKzczNCw3IEBAIGVuZCkKIAogCiBsbGludE9wV2l0aFJldHVybihvcF9hcmd1
bWVudF9jb3VudCwgT3BBcmd1bWVudENvdW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuKQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQw
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nm
cl0sIHQwCiAgICAgc3ViaSAxLCB0MAogICAgIG9ycSBUYWdOdW1iZXIsIHQwCiAgICAgcmV0dXJu
KHQwKQpAQCAtMjA1Nyw4ICsyMDU3LDggQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUs
IHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAg
YWRkcCBjZnIsIHQzCiAgICAgICAgIHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQogICAgICAgICBnZXR1
KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCB0MikKLSAgICAgICAgc3RvcmVpIFBDLCBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KLSAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENv
dW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdCisgICAgICAgIHN0b3JlaSB0MiwgQXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQz
LCBzcAogICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2Fs
bExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRy
VGFnKQogICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5m
by5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKQEAgLTI2MjQsNyArMjYy
NCw3IEBAIGVuZCkKIAogCiBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9w
R2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1
YmkgMSwgdDAKICAgICBnZXR1KHNpemUsIE9wR2V0UmVzdExlbmd0aCwgbV9udW1QYXJhbWV0ZXJz
VG9Ta2lwLCB0MSkKICAgICBiaWx0ZXEgdDAsIHQxLCAuc3RvcmVaZXJvCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCAwOThmYWI4ZTU3MTk5MWFhZjcy
M2RkMDc4ZWYyZDZkNWEzNDRiMTA4Li42NTc2OGZhNmJmYjBmYmMxMTVhOGM3OGE3OWJhOTUzMzc2
NTQyNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20K
QEAgLTE1MCw3ICsxNTAsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAg
Y2hlY2tTd2l0Y2hUb0pJVCgKICAgICAgICAgMSwKICAgICAgICAgbWFjcm8oKQotICAgICAgICAg
ICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAg
IHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQog
ICAgICAgICAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQogICAgICAgICAgICAgbW92ZSBjZnIs
IGEwCiAgICAgICAgICAgICBtb3ZlIFBDLCBhMQpAQCAtMTYzLDcgKzE2Myw3IEBAIG1hY3JvIGNo
ZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKICAgICAgICAgICAgIG1vdmUgcjAsIGEwCiAgICAgICAg
ICAgICBqbXAgcjEsIFdhc21FbnRyeVB0clRhZwogICAgICAgICAucmVjb3ZlcjoKLSAgICAgICAg
ICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgICAg
IGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAg
ICAgICAgIGVuZCkKIGVuZAogCkBAIC0yMjksNyArMjI5LDcgQEAgbWFjcm8gcmVsb2FkTWVtb3J5
UmVnaXN0ZXJzRnJvbUluc3RhbmNlKGluc3RhbmNlLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiBlbmQK
IAogbWFjcm8gdGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uKQotICAgIHN0b3JlaSBjb25zdGV4cHIg
V2FzbTo6RXhjZXB0aW9uVHlwZTo6JWV4Y2VwdGlvbiUsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2Fk
T2Zmc2V0W2Nmcl0KKyAgICBzdG9yZWkgY29uc3RleHByIFdhc206OkV4Y2VwdGlvblR5cGU6OiVl
eGNlcHRpb24lLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbY2Zy
XQogICAgIGptcCBfd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lCiBlbmQKIApA
QCAtMjQzLDcgKzI0Myw3IEBAIG1hY3JvIGNhbGxXYXNtU2xvd1BhdGgoc2xvd1BhdGgpCiBlbmQK
IAogbWFjcm8gY2FsbFdhc21DYWxsU2xvd1BhdGgoc2xvd1BhdGgsIGFjdGlvbikKLSAgICBzdG9y
ZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlaSBQQywgQXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQogICAgIHByZXBhcmVTdGF0
ZUZvckNDYWxsKCkKICAgICBtb3ZlIGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQpAQCAtNDk0LDgg
KzQ5NCw4IEBAIG9wKHdhc21fdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSwgbWFjcm8g
KCkKICAgICBtb3ZlIGNmciwgYTAKICAgICBhZGRwIFBCLCBQQywgYTEKICAgICBtb3ZlIHdhc21J
bnN0YW5jZSwgYTIKLSAgICAjIFNsb3cgcGF0aHMgYW5kIHRoZSB0aHJvd0V4Y2VwdGlvbiBtYWNy
byBzdG9yZSB0aGUgZXhjZXB0aW9uIGNvZGUgaW4gdGhlIEFyZ3VtZW50Q291bnQgc2xvdAotICAg
IGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEzCisgICAgIyBTbG93
IHBhdGhzIGFuZCB0aGUgdGhyb3dFeGNlcHRpb24gbWFjcm8gc3RvcmUgdGhlIGV4Y2VwdGlvbiBj
b2RlIGluIHRoZSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyBzbG90CisgICAgbG9hZGkgQXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEzCiAgICAgY0Nh
bGw0KF9zbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24pCiAKICAgICBqbXAgcjAsIEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWcKQEAgLTY3OSw3ICs2NzksNyBAQCBtYWNybyBzbG93UGF0aEZvcldh
c21DYWxsKGN0eCwgc2xvd1BhdGgsIHN0b3JlV2FzbUluc3RhbmNlKQogICAgICAgICBtYWNybyAo
Y2FsbGVlLCB0YXJnZXRXYXNtSW5zdGFuY2UpCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZSwgd3Mw
CiAKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMK
KyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0
W2Nmcl0sIFBDCiAKICAgICAgICAgICAgICMgdGhlIGNhbGwgbWlnaHQgdGhyb3cgKGUuZy4gaW5k
aXJlY3QgY2FsbCB3aXRoIGJhZCBzaWduYXR1cmUpCiAgICAgICAgICAgICBidHB6IHRhcmdldFdh
c21JbnN0YW5jZSwgLnRocm93CkBAIC03MTgsNyArNzE4LDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JX
YXNtQ2FsbChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgICAgICMg
bmVlZCB0byBwcmVzZXJ2ZSBpdHMgY3VycmVudCB2YWx1ZSBzaW5jZSBpdCBtaWdodCBjb250YWlu
IGEgcmV0dXJuIHZhbHVlCiAgICAgICAgICAgICBtb3ZlIFBDLCBtZW1vcnlCYXNlCiAgICAgICAg
ICAgICBtb3ZlIFBCLCB3YXNtSW5zdGFuY2UKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgICAgICAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgUEIKICAgICAgICAgICAgIGxvYWRwIFdhc206OkZ1bmN0aW9uQ29kZUJsb2Nr
OjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJdLCBQQgogCkBAIC03NDAsNyArNzQwLDcgQEAg
bWFjcm8gc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5j
ZSkKICAgICAgICAgICAgICAgICBzdG9yZWQgZnByLCBDYWxsRnJhbWVIZWFkZXJTaXplICsgb2Zm
c2V0W3dzMSwgd3MwLCA4XQogICAgICAgICAgICAgZW5kKQogCi0gICAgICAgICAgICBsb2FkaSBB
cmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgICAgICBsb2FkaSBBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQQwogCiAgICAgICAgICAg
ICBzdG9yZVdhc21JbnN0YW5jZSh3YXNtSW5zdGFuY2UpCiAgICAgICAgICAgICByZWxvYWRNZW1v
cnlSZWdpc3RlcnNGcm9tSW5zdGFuY2Uod2FzbUluc3RhbmNlLCB3czAsIHdzMSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGYz
NThkNDhhNTBkZTczZWFiMzg1Njk5YjNhNmY1MTEzYmJiZTliYmEuLjg3NzE2ZDI3N2EwZWJjMmRi
NGUxNTljZjY5ZjliMmUyYjVjYTlmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMjIyLDYgKzIyMiwxOSBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpCiAgICAgUkVUVVJOKENs
b25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aE1hY2hpbmVGcmFtZShnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgQXJndW1lbnRzTW9kZTo6Q2xvbmVkKSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKK3sKKyAgICBCRUdJTigpOworICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk+KCk7CisgICAg
aW50MzJfdCBhcmd1bWVudENvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CisgICAg
SlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojp0
cnlDcmVhdGUodm0sIHZtLmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZy
b21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9m
SW5kZXhpbmdTaGFwZXNdLmdldCgpLCBhcmd1bWVudENvdW50KTsKKyAgICBpZiAoIWJ1dHRlcmZs
eSkKKyAgICAgICAgVEhST1coY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsK
KyAgICBmb3IgKGludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Q291bnQ7ICsraW5k
ZXgpCisgICAgICAgIGJ1dHRlcmZseS0+c2V0SW5kZXgodm0sIGluZGV4LCBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KGluZGV4KSk7CisgICAgUkVUVVJOKGJ1dHRlcmZseSk7Cit9CisKIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA0
NmJmZTE1MjRjZTViNzUzMWViYjMwNzM5MWFmNzcwY2U1MDdkOGIxLi43MWU3ODVlOTBjNmNkMGZj
MjY0OWZmYThiN2JjOGM2NDkyZGE5MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzIwLDYgKzMyMCw3IEBAIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cyk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfZW50ZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9nZXRfY2FsbGVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGVCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlQmFzZS5oCmluZGV4IDgwNjJmMWUwNjFhZjE4N2Q5NGJkM2ZiODQwMWFjNzY5ZDAwZTk2
YjAuLjk1ODEwNWQzMjY2ZGRmZjg1YmU1ZDc2ZDg3Y2RlNWNiMzMxMzE0YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZUJhc2UuaApAQCAtNTcsNyArNTcs
NyBAQCBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogCiBj
bGFzcyBFeGVjdXRhYmxlQmFzZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBjbGFzcyBK
SVQ7Ci0gICAgZnJpZW5kIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91
bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNKik7CisgICAgZnJpZW5kIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0
b3IoVk0qKTsKIAogcHJvdGVjdGVkOgogICAgIEV4ZWN1dGFibGVCYXNlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUmFyZURhdGEuY3BwCmluZGV4IDAyMWI4Y2M1NzMxMjhlOTQ0MjAxOGQwZGMwODM2Y2M1
NDM2ZDlmMjYuLjRmNzQ5YTg1MTFjZTAxOTRiMTEzYzdlYTc2OTAxOWIwMmNkZGRkNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3Bw
CkBAIC02OSw3ICs2OSwxMCBAQCBGdW5jdGlvblJhcmVEYXRhOjpGdW5jdGlvblJhcmVEYXRhKFZN
JiB2bSkKICAgICAvLyB0aGUgZmlyc3QgYWxsb2NhdGlvbiBkb24ndCBkaXNhYmxlIG9wdGltaXph
dGlvbnMuIFRoaXMgaXNuJ3Qgc3VwZXIgaW1wb3J0YW50LCBzaW5jZSB0aGUKICAgICAvLyBmdW5j
dGlvbiBpcyB1bmxpa2VseSB0byBhbGxvY2F0ZSBhIHJhcmUgZGF0YSB1bnRpbCB0aGUgZmlyc3Qg
YWxsb2NhdGlvbiBhbnl3YXkuCiAgICAgLCBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNl
dChDbGVhcldhdGNocG9pbnQpCisgICAgLCBtX2hhc1JlaWZpZWRMZW5ndGgoZmFsc2UpCiAgICAg
LCBtX2hhc1JlaWZpZWROYW1lKGZhbHNlKQorICAgICwgbV9oYXNNb2RpZmllZExlbmd0aChmYWxz
ZSkKKyAgICAsIG1faGFzTW9kaWZpZWROYW1lKGZhbHNlKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKaW5kZXggMWYzMmEzY2Ji
YzQ2YWU1MDBhMmNkZGVjNGZhMjc4NTUxNTAyMTA2NS4uYmRhNWQ3YTY5YmJmNzNjN2RlZTM4ZmVl
M2MyOTNjYzI4NmJhZjU5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuaApAQCAtNzMsOCArNzMsNiBAQCBjbGFzcyBGdW5jdGlvblJhcmVE
YXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qg
b2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoRnVuY3Rpb25SYXJlRGF0YSwgbV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlv
blByb2ZpbGUpOyB9CiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZCb3VuZEZ1
bmN0aW9uU3RydWN0dXJlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURh
dGEsIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSk7IH0KICAgICBzdGF0aWMgaW5saW5lIHB0cmRp
ZmZfdCBvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1fYWxsb2NhdGlvblByb2ZpbGVD
bGVhcmluZ1dhdGNocG9pbnQpOyB9Ci0gICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0
T2ZIYXNSZWlmaWVkTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFy
ZURhdGEsIG1faGFzUmVpZmllZExlbmd0aCk7IH0KLSAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZf
dCBvZmZzZXRPZkhhc1JlaWZpZWROYW1lKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0
aW9uUmFyZURhdGEsIG1faGFzUmVpZmllZE5hbWUpOyB9CiAKICAgICBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZVdpdGhQcm90b3R5cGUqIG9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkKICAgICB7CkBA
IC0xMjEsNiArMTE5LDE3IEBAIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGEgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBib29sIGhhc1JlaWZpZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9oYXNS
ZWlmaWVkTmFtZTsgfQogICAgIHZvaWQgc2V0SGFzUmVpZmllZE5hbWUoKSB7IG1faGFzUmVpZmll
ZE5hbWUgPSB0cnVlOyB9CiAKKyAgICBib29sIGhhc01vZGlmaWVkTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNNb2RpZmllZExlbmd0aDsgfQorICAgIHZvaWQgc2V0SGFzTW9kaWZpZWRMZW5n
dGgoKQorICAgIHsKKyAgICAgICAgbV9oYXNNb2RpZmllZExlbmd0aCA9IHRydWU7CisgICAgfQor
ICAgIGJvb2wgaGFzTW9kaWZpZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNb2RpZmllZE5h
bWU7IH0KKyAgICB2b2lkIHNldEhhc01vZGlmaWVkTmFtZSgpCisgICAgeworICAgICAgICBtX2hh
c01vZGlmaWVkTmFtZSA9IHRydWU7CisgICAgfQorCiAgICAgYm9vbCBoYXNBbGxvY2F0aW9uUHJv
ZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpIGNvbnN0IHsgcmV0dXJuICEhbV9hbGxvY2F0aW9uUHJv
ZmlsZUNsZWFyaW5nV2F0Y2hwb2ludDsgfQogICAgIFdhdGNocG9pbnQqIGNyZWF0ZUFsbG9jYXRp
b25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KCk7CiAgICAgY2xhc3MgQWxsb2NhdGlvblByb2Zp
bGVDbGVhcmluZ1dhdGNocG9pbnQ7CkBAIC0xNTAsOCArMTU5LDEwIEBAIGNsYXNzIEZ1bmN0aW9u
UmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBJbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblByb2ZpbGUgbV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4gbV9hbGxv
Y2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludDsKLSAgICBib29sIG1faGFzUmVpZmllZExl
bmd0aCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc1JlaWZpZWROYW1lIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faGFzUmVpZmllZExlbmd0aCA6IDE7CisgICAgYm9vbCBtX2hhc1JlaWZpZWROYW1l
IDogMTsKKyAgICBib29sIG1faGFzTW9kaWZpZWRMZW5ndGggOiAxOworICAgIGJvb2wgbV9oYXNN
b2RpZmllZE5hbWUgOiAxOwogfTsKIAogY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlv
blByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJv
dG90eXBlLmNwcAppbmRleCAyMzc3MGVjYTNiZWUwMGMzOGM1NDUyNWFhZmRjMTZmYzgxZTBmMTk0
Li4zMTNmMWEwN2E1NGQzZjI2OGJhMjI1MWUyMTI1N2NiYmNjNGU4NDQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5j
cHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxD
b2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIEpT
RnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAyLCAiY29tcGFyZSJfcywgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUsIE5vSW50cmluc2lj
KTsKIAogICAgICAgICAvLyBjLiBMZXQgYmMgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3Ro
aXMgdmFsdWXCuykuCi0gICAgICAgIGJvdW5kQ29tcGFyZSA9IEpTQm91bmRGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3IsIG51bGxwdHIsIDIs
IFN0cmluZygpKTsKKyAgICAgICAgYm91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgbnVsbHB0ciwgMiwg
anNFbXB0eVN0cmluZyh2bSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IGNvbGxhdG9yLltbYm91bmRDb21w
YXJlXV0gdG8gYmMuCiAgICAgICAgIGNvbGxhdG9yLT5zZXRCb3VuZENvbXBhcmUodm0sIGJvdW5k
Q29tcGFyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCBkMDQzZWY3ZmZkNjAwNWJk
MTg3NTNhNGQyMmEyMTdiN2M4MGNjZDU0Li45Y2Q5MmZkYjIzNWUzMWZhMjk2M2YxODlmZTA3ZWZk
ZTA3YTU5YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZUdldHRlckZvcm1hdChKU0dsb2JhbE9iagogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKA
mXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkgd2Fz
IDAgaW4gRUNNQS00MDIgMS4wKQogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgImZvcm1hdCJfcywgSW50bERh
dGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIC8v
IGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KLSAg
ICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgbnVsbHB0ciwgMSwgU3RyaW5nKCkpOworICAgICAgICBi
b3VuZEZvcm1hdCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRh
cmdldE9iamVjdCwgZHRmLCBudWxscHRyLCAxLCBqc0VtcHR5U3RyaW5nKHZtKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAv
LyBkLiBTZXQgZHRmLltbYm91bmRGb3JtYXRdXSB0byBiZi4KICAgICAgICAgZHRmLT5zZXRCb3Vu
ZEZvcm1hdCh2bSwgYm91bmRGb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCA5MWI0
ODNmMjliM2VmNTk2MGFkMzUyYWVmYTZmZTM0OTAyMzM4MDdkLi4yMGZhOTQ5MDQ2OTJiYmEzZTBi
NjBhZjNjY2ZlOGY5NjViODEzMDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMTM2LDcg
KzEzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVjCiAgICAgICAgIC8vIGIuIFRoZSB2YWx1
ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4KICAgICAgICAgSlNGdW5jdGlvbiogdGFy
Z2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJmb3Jt
YXQiX3MsIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyLCBOb0ludHJpbnNpYyk7CiAg
ICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1
ZcK7KS4KLSAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBudWxscHRyLCAxLCBTdHJpbmcoKSk7Cisg
ICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgbnVsbHB0ciwgMSwganNFbXB0eVN0cmluZyh2bSkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAgICAgLy8gZC4gU2V0IG5mLltbYm91bmRGb3JtYXRdXSB0byBiZi4KICAgICAgICAgbmYtPnNl
dEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmNwcAppbmRleCBhNDFiNTdiMmNiY2JiMWMyZDVkNWY2Y2E5OWI2YWQ2
MGI0ZWMyYTlhLi43Zjg2N2YxMzk0OTVhOTMwZjZmZWJiYTgyYjhlNmU3YTQzNzA3ZjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTE4Nyw4ICsx
ODcsOCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAg
ICAgICAgIHJldHVybiAiVHJ1bmNJbnRyaW5zaWMiOwogICAgIGNhc2UgSXNUeXBlZEFycmF5Vmll
d0ludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljIjsK
LSAgICBjYXNlIEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYzoKLSAgICAgICAg
cmV0dXJuICJCb3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJbnRyaW5zaWMiOworICAgIGNhc2Ug
Qm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiQm91bmRGdW5jdGlv
bkNhbGxJbnRyaW5zaWMiOwogICAgIGNhc2UgSlNNYXBHZXRJbnRyaW5zaWM6CiAgICAgICAgIHJl
dHVybiAiSlNNYXBHZXRJbnRyaW5zaWMiOwogICAgIGNhc2UgSlNNYXBIYXNJbnRyaW5zaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IGZlMmU5MTBmOTFl
ZGVhZWQyNjA5ZjQyNDc0ZTI4MDRiYjZmZmNjZTguLmJiMmZlZTJlMjg5MTQxMzVhOTIzOTFjNGUw
OTU0ZmFiYTg4YTllYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oCkBAIC0xMDYsNyArMTA2LDcgQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBG
Um91bmRJbnRyaW5zaWMsCiAgICAgVHJ1bmNJbnRyaW5zaWMsCiAgICAgSXNUeXBlZEFycmF5Vmll
d0ludHJpbnNpYywKLSAgICBCb3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCisg
ICAgQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCiAgICAgSlNNYXBHZXRJbnRyaW5zaWMsCiAg
ICAgSlNNYXBIYXNJbnRyaW5zaWMsCiAgICAgSlNNYXBTZXRJbnRyaW5zaWMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCA3NWJl
NWZlYTZhYzAwZGViODhhODUzOWQ2MmYyNzUxMjA1MjkzNTE5Li40MTg2NTlhYTJlNGRlYTNjZjNj
OTQ0NmUwMmI1M2JiYzk1YzkyZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDE0IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPCiB7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganND
YXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKKyAgICBKU0lt
bXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7
CisKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGlmIChib3VuZEFyZ3MpIHsK
KyAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4K
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsr
aSkKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKKyAgICB9CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyAr
K2kpCiAgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CkBAIC02MiwxMiAr
NjksMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0g
anNDYXN0PEpTQm91bmRGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKLSAgICBK
U0FycmF5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICBKU0lt
bXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7
CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3MpIHsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsr
aSkKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0SW5kZXhRdWlja2x5KGkp
KTsKKyAgICAgICAgLy8gU3RhcnRzIHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlz
fC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7
ICsraSkKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAgICB9
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
OyArK2kpCiAgICAgICAgIGFyZ3MuYXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
aSkpOwpAQCAtODcsNyArOTUsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3Vu
ZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2wKIHsKICAgICBK
U0JvdW5kRnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4o
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKIAorICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3Vu
ZEFyZ3MgPSBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKwogICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3M7CisgICAgaWYgKGJvdW5kQXJncykgeworICAgICAgICAvLyBTdGFydHMgd2l0
aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgfHRoaXN8LgorICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDwgYm91bmRBcmdzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgYXJncy5h
cHBlbmQoYm91bmRBcmdzLT5nZXQoaSkpOworICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYXJncy5hcHBl
bmQoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
IWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKQEAgLTEwNSwxMiArMTIwLDEzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rp
b24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogCi0gICAgSlNBcnJheSogYm91bmRBcmdzID0g
Ym91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJv
dW5kQXJncyA9IGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpOwogCiAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJnczsKICAgICBpZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAgICBhcmdz
LmFwcGVuZChib3VuZEFyZ3MtPmdldEluZGV4UXVpY2tseShpKSk7CisgICAgICAgIC8vIFN0YXJ0
cyB3aXRoIDEgc2luY2UgdGhlIGZpcnN0IG9uZSBpcyB8dGhpc3wuCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBh
cmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhcmdz
LmFwcGVuZChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKQEAgLTE3MSwyMyArMTg3
LDIyIEBAIGlubGluZSBTdHJ1Y3R1cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
SlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBi
b3VuZFRoaXMsIEpTQXJyYXkqIGJvdW5kQXJncywgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBu
YW1lKQorSlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNW
YWx1ZSBib3VuZFRoaXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MsIGludCBsZW5n
dGgsIEpTU3RyaW5nKiBuYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIG5hbWUtPnZhbHVlKGdsb2JhbE9iamVjdCk7IC8vIFJlc29sdmluZyBy
b3BlLgorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgYm9v
bCBpc0pTRnVuY3Rpb24gPSBnZXRKU0Z1bmN0aW9uKHRhcmdldEZ1bmN0aW9uKTsKICAgICBDb25z
dHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBl
ID0gSlNDOjpnZXRDb25zdHJ1Y3REYXRhKHZtLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0
YSk7CiAgICAgYm9vbCBjYW5Db25zdHJ1Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5
cGU6Ok5vbmU7Ci0gICAgCi0gICAgYm9vbCBzbG93Q2FzZSA9IGJvdW5kQXJncyB8fCAhZ2V0SlNG
dW5jdGlvbih0YXJnZXRGdW5jdGlvbik7Ci0gICAgCi0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbigKLSAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1
bmN0aW9uQ2FsbCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbCwKLSAgICAgICAgc2xvd0Nh
c2UgPyBOb0ludHJpbnNpYyA6IEJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywK
LSAgICAgICAgY2FuQ29uc3RydWN0ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVj
dCA6IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yLCBudWxscHRyLAotICAgICAgICBuYW1lKTsKKworICAgIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRCb3VuZEZ1bmN0aW9uKGlzSlNGdW5jdGlvbiwgY2Fu
Q29uc3RydWN0KTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rpb25T
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0RnVuY3Rpb24pOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU0JvdW5kRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB0YXJnZXRGdW5j
dGlvbiwgYm91bmRUaGlzLCBib3VuZEFyZ3MpOworICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU0JvdW5kRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB0YXJnZXRGdW5j
dGlvbiwgYm91bmRUaGlzLCBib3VuZEFyZ3MsIG5hbWUsIGxlbmd0aCk7CiAKICAgICBmdW5jdGlv
bi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCk7CiAgICAgcmV0dXJuIGZ1
bmN0aW9uOwpAQCAtMTk4LDEyICsyMTMsMTUgQEAgYm9vbCBKU0JvdW5kRnVuY3Rpb246OmN1c3Rv
bUhhc0luc3RhbmNlKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAg
ICByZXR1cm4ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KG9iamVjdCktPm1fdGFyZ2V0RnVuY3Rp
b24tPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdmFsdWUpOwogfQogCi1KU0JvdW5kRnVuY3Rp
b246OkpTQm91bmRGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUg
Ym91bmRUaGlzLCBKU0FycmF5KiBib3VuZEFyZ3MpCitKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRG
dW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBK
U0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBKU1N0cmluZyogbmFtZSwgaW50IGxlbmd0
aCkKICAgICA6IEJhc2Uodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV90YXJn
ZXRGdW5jdGlvbih2bSwgdGhpcywgdGFyZ2V0RnVuY3Rpb24pCiAgICAgLCBtX2JvdW5kVGhpcyh2
bSwgdGhpcywgYm91bmRUaGlzKQotICAgICwgbV9ib3VuZEFyZ3Modm0sIHRoaXMsIGJvdW5kQXJn
cywgV3JpdGVCYXJyaWVyPEpTQXJyYXk+OjpNYXlCZU51bGwpCisgICAgLCBtX2JvdW5kQXJncyh2
bSwgdGhpcywgYm91bmRBcmdzLCBXcml0ZUJhcnJpZXI8SlNJbW11dGFibGVCdXR0ZXJmbHk+OjpN
YXlCZU51bGwpCisgICAgLCBtX25hbWUodm0sIHRoaXMsIG5hbWUpCisgICAgLCBtX2xlbmd0aChs
ZW5ndGgpCiB7CisgICAgQVNTRVJUKCFtX25hbWUtPmlzUm9wZSgpKTsKIH0KIAogSlNBcnJheSog
SlNCb3VuZEZ1bmN0aW9uOjpib3VuZEFyZ3NDb3B5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCkBAIC0yMTIsOSArMjMwLDEyIEBAIEpTQXJyYXkqIEpTQm91bmRGdW5jdGlvbjo6Ym91bmRB
cmdzQ29weShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RF
bXB0eUFycmF5KHRoaXMtPmdsb2JhbE9iamVjdCgpLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9ib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgcmVzdWx0LT5wdXNoKGdsb2Jh
bE9iamVjdCwgbV9ib3VuZEFyZ3MtPmdldEluZGV4UXVpY2tseShpKSk7Ci0gICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIGlmIChtX2JvdW5kQXJncykgewor
ICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgYm91bmQgfHRo
aXN8LgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9ib3VuZEFyZ3MtPmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3VsdC0+cHVzaChnbG9iYWxPYmplY3QsIG1fYm91
bmRBcmdzLT5nZXQoaSkpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIz
NSw2ICsyNTYsNyBAQCB2b2lkIEpTQm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fdGFyZ2V0RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
Ym91bmRUaGlzKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kQXJncyk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9uYW1lKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5oCmluZGV4IDc2NzdjNmE0OTIzMjVmNTgyYWQ3Y2FkMzExZDNlNGY5N2E2YzZhODMuLjcz
YjAxNDVmZGJlMDYzYWQwYjY2ZGI3ODdlMWY1NzFmMjliMmYzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCkBAIC00OCwxNCArNDgsMjMg
QEAgY2xhc3MgSlNCb3VuZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogICAg
ICAgICByZXR1cm4gdm0uYm91bmRGdW5jdGlvblNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAg
c3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU09i
amVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0FycmF5KiBib3VuZEFy
Z3MsIGludCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9u
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwg
SlNWYWx1ZSBib3VuZFRoaXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MsIGludCwg
SlNTdHJpbmcqIG5hbWUpOwogICAgIAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNl
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIEpTT2JqZWN0KiB0
YXJnZXRGdW5jdGlvbigpIHsgcmV0dXJuIG1fdGFyZ2V0RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBK
U1ZhbHVlIGJvdW5kVGhpcygpIHsgcmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9Ci0gICAgSlNB
cnJheSogYm91bmRBcmdzKCkgeyByZXR1cm4gbV9ib3VuZEFyZ3MuZ2V0KCk7IH0gLy8gRE8gTk9U
IGFsbG93IHRoaXMgYXJyYXkgdG8gYmUgbXV0YXRlZCEKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZs
eSogYm91bmRBcmdzKCkgeyByZXR1cm4gbV9ib3VuZEFyZ3MuZ2V0KCk7IH0gLy8gRE8gTk9UIGFs
bG93IHRoaXMgYXJyYXkgdG8gYmUgbXV0YXRlZCEKICAgICBKU0FycmF5KiBib3VuZEFyZ3NDb3B5
KEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNTdHJpbmcqIG5hbWUoKSB7IHJldHVybiBtX25hbWUu
Z2V0KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIG5hbWVTdHJpbmcoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKCFtX25hbWUtPmlzUm9wZSgpKTsKKyAgICAgICAgYm9vbCBhbGxvY2F0aW9uQWxsb3dl
ZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gbV9uYW1lLT50cnlHZXRWYWx1ZShhbGxvY2F0aW9u
QWxsb3dlZCk7CisgICAgfQorCisgICAgaW50MzJfdCBsZW5ndGgoVk0mKSB7IHJldHVybiBtX2xl
bmd0aDsgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtNjUsNiArNzQsNyBAQCBjbGFzcyBKU0JvdW5kRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNG
dW5jdGlvbiB7CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhcmdldEZ1bmN0
aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQm91bmRGdW5jdGlvbiwgbV90YXJnZXRG
dW5jdGlvbik7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQm91bmRUaGlzKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQm91bmRGdW5jdGlvbiwgbV9ib3VuZFRoaXMpOyB9Cisg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkJvdW5kQXJncygpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihKU0JvdW5kRnVuY3Rpb24sIG1fYm91bmRBcmdzKTsgfQogCiAgICAgREVDTEFSRV9J
TkZPOwogCkBAIC03MiwxMyArODIsMjAgQEAgY2xhc3MgSlNCb3VuZEZ1bmN0aW9uIGZpbmFsIDog
cHVibGljIEpTRnVuY3Rpb24gewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIAogcHJpdmF0ZToKLSAgICBKU0JvdW5kRnVuY3Rpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNW
YWx1ZSBib3VuZFRoaXMsIEpTQXJyYXkqIGJvdW5kQXJncyk7CisgICAgSlNCb3VuZEZ1bmN0aW9u
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rp
b24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBK
U1N0cmluZyogbmFtZSwgaW50IGxlbmd0aCk7CiAgICAgCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoKTsKIAogICAgIFdyaXRlQmFycmll
cjxKU09iamVjdD4gbV90YXJnZXRGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4g
bV9ib3VuZFRoaXM7Ci0gICAgV3JpdGVCYXJyaWVyPEpTQXJyYXk+IG1fYm91bmRBcmdzOworICAg
IFdyaXRlQmFycmllcjxKU0ltbXV0YWJsZUJ1dHRlcmZseT4gbV9ib3VuZEFyZ3M7CisgICAgV3Jp
dGVCYXJyaWVyPEpTU3RyaW5nPiBtX25hbWU7CisgICAgaW50IG1fbGVuZ3RoOwogfTsKIAorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0
aW9uQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKaW5kZXggNjJlNTU4ZmZhNDY0NGU4NDc4YzY4MTA5NzI3MjU4MGNmMGQ2YjBmNy4u
MzdiMmMxM2IxOGQ4ZmM4ZjA5NjM5ODU3NTI3ZTk5NzM5ODFlZmYxNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTEyNiw2ICsxMjYsOCBAQCB2
b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0
aGlzKSk7CiAgICAgQVNTRVJUKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSk7CisgICAgQVNTRVJU
KG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q29u
c3RydWN0RGF0YSk7CisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEgPT0g
JkpTRnVuY3Rpb246OmdldENhbGxEYXRhKTsKIH0KIAogdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgs
IGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTEzMyw4ICsxMzUsMTQgQEAgdm9pZCBKU0Z1bmN0aW9u
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGlu
dCBsZW5ndGgKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVy
aXRzKHZtLCBpbmZvKCkpKTsKICAgICBBU1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKTsK
KyAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhID09ICZKU0Z1bmN0
aW9uOjpnZXRDb25zdHJ1Y3REYXRhKTsKKyAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRD
YWxsRGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOwogICAgIG1fZXhlY3V0YWJsZS5z
ZXQodm0sIHRoaXMsIGV4ZWN1dGFibGUpOwotICAgIC8vIFNvbWUgTmF0aXZlRXhlY3V0YWJsZSBm
dW5jdGlvbnMsIGxpa2UgSlNCb3VuZEZ1bmN0aW9uLCBkZWNpZGUgdG8gbGF6aWx5IGFsbG9jYXRl
IHRoZWlyIG5hbWUgc3RyaW5nLgorCisgICAgLy8gU29tZSBOYXRpdmVFeGVjdXRhYmxlIGZ1bmN0
aW9ucywgbGlrZSBKU0JvdW5kRnVuY3Rpb24sIGRlY2lkZSB0byBsYXppbHkgYWxsb2NhdGUgdGhl
aXIgbmFtZSBzdHJpbmcgLyBsZW5ndGguCisgICAgaWYgKHRoaXMtPmluaGVyaXRzPEpTQm91bmRG
dW5jdGlvbj4odm0pKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW5hbWUuaXNOdWxsKCkp
CiAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmco
dm0sIG5hbWUpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcihsZW5ndGgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwpAQCAtMjA3LDYgKzIxNSw4IEBAIEZ1bmN0aW9uUmFyZURh
dGEqIEpTRnVuY3Rpb246OmluaXRpYWxpemVSYXJlRGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBzCiBTdHJpbmcgSlNGdW5jdGlvbjo6bmFtZShWTSYgdm0pCiB7CiAgICAgaWYgKGlz
SG9zdEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgaWYgKHRoaXMtPmluaGVyaXRzPEpTQm91bmRGdW5j
dGlvbj4odm0pKQorICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0
aGlzKS0+bmFtZVN0cmluZygpOwogICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0ganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPih0aGlzLT5leGVjdXRhYmxlKCkpOwogICAgICAg
ICByZXR1cm4gZXhlY3V0YWJsZS0+bmFtZSgpOwogICAgIH0KQEAgLTQyMSwxMCArNDMxLDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KG9iamVjdCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9u
KCkpIHsKICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWls
dGluSWZOZWVkZWQodm0sIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsK
ICAgICB9CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSAmJiB0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFzUHJvdG90eXBlUHJvcGVydHko
KSAmJiAhdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0
aW9uKCkpIHsKQEAgLTQ2MCwyMiArNDczLDIzIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykgewog
ICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1
bWVudHNQcm9wZXJ0aWVzKCkpCi0gICAgICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7CiAgICAg
ICAgIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSwgYXJndW1lbnRzR2V0dGVyKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT5jYWxsZXIpIHsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+
aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKQotICAgICAgICAgICAgcmV0dXJuIEJh
c2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpOwogCiAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3Qs
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlLCBjYWxsZXJHZXR0ZXIpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0
eUlmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCi0gICAgcmV0dXJuIEJhc2U6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAogdm9pZCBK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpAQCAtNDk3LDEwICs1MTEsMTIgQEAgdm9pZCBK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGcKICAgICAgICAgICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmll
ZE5hbWUoKSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0
LT5pc0J1aWx0aW5GdW5jdGlvbigpICYmICF0aGlzT2JqZWN0LT5oYXNSZWlmaWVkTGVuZ3RoKCkp
Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKTsKLSAgICAgICAgICAgIGlmICgodGhpc09iamVjdC0+aXNCdWlsdGluRnVuY3Rpb24oKSB8
fCB0aGlzT2JqZWN0LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgJiYgIXRoaXNPYmpl
Y3QtPmhhc1JlaWZpZWROYW1lKCkpCi0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSk7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+aXNC
dWlsdGluRnVuY3Rpb24oKSB8fCB0aGlzT2JqZWN0LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+
KHZtKSkgeworICAgICAgICAgICAgICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZExlbmd0
aCgpKQorICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgpOworICAgICAgICAgICAgICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmll
ZE5hbWUoKSkKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgQmFz
ZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lcywgbW9kZSk7CkBAIC01MTMsMTIgKzUyOSwyMSBAQCBib29sIEpTRnVuY3Rp
b246OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcgogCiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2VsbCk7CiAKKyAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bmFtZSkgeworICAg
ICAgICBGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRhKHZt
KTsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgp
CisgICAgICAgICAgICByYXJlRGF0YS0+c2V0SGFzTW9kaWZpZWRMZW5ndGgoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmFyZURhdGEtPnNldEhhc01vZGlmaWVkTmFtZSgpOworICAgIH0K
KwogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkp
KQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xvdyhnbG9i
YWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVl
KCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKIAogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgUHJvcGVydHlTdGF0dXMgcHJvcGVydHlU
eXBlID0gdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZOZWVk
ZWQodm0sIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoaXNMYXp5KHByb3BlcnR5VHlwZSkp
CiAgICAgICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7CiAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwpAQCAtNTUxLDEwICs1NzYsMjEgQEAgYm9vbCBKU0Z1bmN0
aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHIKIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpCisKKyAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bmFtZSkgewor
ICAgICAgICBGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRh
KHZtKTsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgpCisgICAgICAgICAgICByYXJlRGF0YS0+c2V0SGFzTW9kaWZpZWRMZW5ndGgoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmFyZURhdGEtPnNldEhhc01vZGlmaWVkTmFtZSgpOworICAg
IH0KKworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAg
ICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5Rm9ySG9zdE9yQnVpbHRpbklmTmVl
ZGVkKHZtLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci0gICAgZWxzZSBpZiAodm0uZGVs
ZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKSB7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAg
ICB9IGVsc2UgaWYgKHZtLmRlbGV0ZVByb3BlcnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSkgewogICAgICAgICAvLyBGb3Igbm9uLWhvc3QgZnVu
Y3Rpb25zLCBkb24ndCBsZXQgdGhlc2UgcHJvcGVydGllcyBieSBkZWxldGVkIC0gZXhjZXB0IGJ5
IERlZmluZU93blByb3BlcnR5LgogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSB0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKTsKICAgICAgICAgCkBAIC01NjUsOSArNjAx
LDEwIEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSkpOwogfQogCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKQEAgLTU3Niw4ICs2MTMsMTggQEAgYm9vbCBKU0Z1
bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWMKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmpl
Y3QpOworCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgg
fHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpIHsKKyAgICAgICAgRnVu
Y3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSh2bSk7CisgICAg
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQorICAgICAg
ICAgICAgcmFyZURhdGEtPnNldEhhc01vZGlmaWVkTGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJhcmVEYXRhLT5zZXRIYXNNb2RpZmllZE5hbWUoKTsKKyAgICB9CisKICAgICBp
ZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICB0aGlz
T2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0eUZvckhvc3RPckJ1aWx0aW5JZk5lZWRlZCh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVm
aW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pKTsKICAgICB9CiAKQEAgLTcxNyw4ICs3NjQsMTQgQEAgdm9p
ZCBKU0Z1bmN0aW9uOjpyZWlmeUxlbmd0aChWTSYgdm0pCiAgICAgRnVuY3Rpb25SYXJlRGF0YSog
cmFyZURhdGEgPSB0aGlzLT5yYXJlRGF0YSh2bSk7CiAKICAgICBBU1NFUlQoIWhhc1JlaWZpZWRM
ZW5ndGgoKSk7Ci0gICAgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbigpKTsKLSAgICBKU1ZhbHVlIGlu
aXRpYWxWYWx1ZSA9IGpzTnVtYmVyKGpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKTsK
KyAgICB1bnNpZ25lZCBsZW5ndGggPSAwOworICAgIGlmICh0aGlzLT5pbmhlcml0czxKU0JvdW5k
RnVuY3Rpb24+KHZtKSkKKyAgICAgICAgbGVuZ3RoID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+
KHRoaXMpLT5sZW5ndGgodm0pOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoIWlzSG9zdEZ1
bmN0aW9uKCkpOworICAgICAgICBsZW5ndGggPSBqc0V4ZWN1dGFibGUoKS0+cGFyYW1ldGVyQ291
bnQoKTsKKyAgICB9CisgICAgSlNWYWx1ZSBpbml0aWFsVmFsdWUgPSBqc051bWJlcihsZW5ndGgp
OwogICAgIHVuc2lnbmVkIGluaXRpYWxBdHRyaWJ1dGVzID0gUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5OwogICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIgPSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGg7CiAgICAgcmFyZURhdGEt
PnNldEhhc1JlaWZpZWRMZW5ndGgoKTsKQEAgLTc2Nyw3ICs4MjAsNyBAQCB2b2lkIEpTRnVuY3Rp
b246OnJlaWZ5TmFtZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmlu
ZyBuYW1lKQogCiBKU0Z1bmN0aW9uOjpQcm9wZXJ0eVN0YXR1cyBKU0Z1bmN0aW9uOjpyZWlmeUxh
enlQcm9wZXJ0eUlmTmVlZGVkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAhdGhpcy0+aW5o
ZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpCiAgICAgICAgIHJldHVybiBQcm9wZXJ0eVN0YXR1
czo6RWFnZXI7CiAgICAgUHJvcGVydHlTdGF0dXMgbGF6eUxlbmd0aCA9IHJlaWZ5TGF6eUxlbmd0
aElmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGlzTGF6
eShsYXp5TGVuZ3RoKSkKQEAgLTc4MSw3ICs4MzQsNyBAQCBKU0Z1bmN0aW9uOjpQcm9wZXJ0eVN0
YXR1cyBKU0Z1bmN0aW9uOjpyZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKFZNJiB2bSwgSlNHbG9i
YQogSlNGdW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5jdGlvbjo6cmVpZnlMYXp5UHJvcGVy
dHlGb3JIb3N0T3JCdWlsdGluSWZOZWVkZWQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEFTU0VSVChpc0hvc3RP
ckJ1aWx0aW5GdW5jdGlvbigpKTsKLSAgICBpZiAoaXNCdWlsdGluRnVuY3Rpb24oKSkgeworICAg
IGlmIChpc0J1aWx0aW5GdW5jdGlvbigpIHx8IHRoaXMtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlv
bj4odm0pKSB7CiAgICAgICAgIFByb3BlcnR5U3RhdHVzIGxhenlMZW5ndGggPSByZWlmeUxhenlM
ZW5ndGhJZk5lZWRlZCh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBp
ZiAoaXNMYXp5KGxhenlMZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGxhenlMZW5ndGg7CkBA
IC04MTUsNiArODY4LDggQEAgSlNGdW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5jdGlvbjo6
cmVpZnlMYXp5TmFtZUlmTmVlZGVkKFZNJiB2bSwgSlNHbG9iYWxPYmoKIAogSlNGdW5jdGlvbjo6
UHJvcGVydHlTdGF0dXMgSlNGdW5jdGlvbjo6cmVpZnlMYXp5Qm91bmROYW1lSWZOZWVkZWQoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IGNvbnN0IElkZW50aWZpZXImIG5hbWVJZGVudCA9IHZtLnByb3BlcnR5TmFtZXMtPm5hbWU7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSAhPSBuYW1lSWRlbnQpCiAgICAgICAgIHJldHVybiBQcm9wZXJ0
eVN0YXR1czo6RWFnZXI7CkBAIC04MjYsOCArODgxLDEzIEBAIEpTRnVuY3Rpb246OlByb3BlcnR5
U3RhdHVzIEpTRnVuY3Rpb246OnJlaWZ5TGF6eUJvdW5kTmFtZUlmTmVlZGVkKFZNJiB2bSwgSlNH
bG9iCiAgICAgICAgIHJlaWZ5TmFtZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBlbHNlIGlmICh0
aGlzLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgewogICAgICAgICBGdW5jdGlvblJh
cmVEYXRhKiByYXJlRGF0YSA9IHRoaXMtPnJhcmVEYXRhKHZtKTsKLSAgICAgICAgY29uc3QgU3Ry
aW5nJiBuYW1lID0gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5n
ZXQoKSktPm5hbWUoKTsKLSAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9ICFuYW1lID8ganNFbXB0
eVN0cmluZyh2bSkgOiBqc1N0cmluZyh2bSwgbWFrZVN0cmluZygiYm91bmQgIiwgbmFtZSkpOwor
ICAgICAgICBKU1N0cmluZyogbmFtZSA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0aGlzKS0+
bmFtZSgpOworICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gbnVsbHB0cjsKKyAgICAgICAgaWYg
KG5hbWUtPmxlbmd0aCgpICE9IDApIHsKKyAgICAgICAgICAgIHN0cmluZyA9IGpzU3RyaW5nKGds
b2JhbE9iamVjdCwganNTdHJpbmcodm0sICJib3VuZCAiX3MpLCBuYW1lKTsKKyAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFByb3BlcnR5U3RhdHVzOjpMYXp5KTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBzdHJpbmcgPSBqc1N0cmluZyh2bSwgImJvdW5kICJfcyk7
CiAgICAgICAgIHVuc2lnbmVkIGluaXRpYWxBdHRyaWJ1dGVzID0gUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5OwogICAgICAgICByYXJlRGF0
YS0+c2V0SGFzUmVpZmllZE5hbWUoKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBuYW1lSWRlbnQs
IHN0cmluZywgaW5pdGlhbEF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCmluZGV4IDI2ODQ0NWM5ZWRjZjI1ZDVjNGJiZDM5MWQ5NWIxYmQ2MjM3
ZjJkOWMuLmM2MGJjZjk0ODAxOThkNzk5MDM0NWZhOTVjZGE5ODE4ODliNzcyM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTExMSw4ICsxMTEsOCBA
QCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2FsbGVlIHsKICAgICBUYWdnZWROYXRpdmVG
dW5jdGlvbiBuYXRpdmVGdW5jdGlvbigpOwogICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG5hdGl2
ZUNvbnN0cnVjdG9yKCk7CiAKLSAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmKTsKIAogICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mRXhl
Y3V0YWJsZSgpCiAgICAgewpAQCAtMTcxLDYgKzE3MSw4IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBw
dWJsaWMgSlNDYWxsZWUgewogICAgIH07CiAgICAgUHJvcGVydHlTdGF0dXMgcmVpZnlMYXp5UHJv
cGVydHlJZk5lZWRlZChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKIAorICAg
IGJvb2wgYXJlTmFtZUFuZExlbmd0aE9yaWdpbmFsKFZNJik7CisKIHByb3RlY3RlZDoKICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKICAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSos
IFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb25JbmxpbmVzLmgKaW5kZXggN2RjOGRlNjI1N2Y3YWJiZWE4MTllZjI5N2Y2Y2ZkOWJlMWEw
M2RiNi4uM2U0ODU1N2EwY2NkODNlYmRhZTBjZGY1OGVjNzg5MDg2NzRjMDgwZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC0x
MDksNiArMTA5LDE3IEBAIGlubGluZSBib29sIEpTRnVuY3Rpb246Omhhc1JlaWZpZWROYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gbV9yYXJlRGF0YSAmJiBtX3JhcmVEYXRhLT5oYXNSZWlmaWVkTmFt
ZSgpOwogfQogCitpbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjphcmVOYW1lQW5kTGVuZ3RoT3JpZ2lu
YWwoVk0mKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKG1fcmFyZURhdGEtPmhhc01vZGlmaWVkTmFtZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKG1fcmFyZURhdGEtPmhhc01vZGlmaWVkTGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogaW5saW5lIGJvb2wgSlNGdW5jdGlv
bjo6Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKQogewogICAgIGlmIChpc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggZjU5YzdhYzAxM2U4ZDkyYWZkNmRhMzJhNjhhY2M3ZTM2NmFhNDdk
OS4uMjQ3NjA3YzI4NDk4ZjJlNzIxZjFlZjIwMmU4OGFiNzcyYTY2YmM3MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjg1LDE2
ICsyODUsMTcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUJvdW5k
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBBU1NFUlQobGVuZ3RoVmFs
dWUuaXNJbnQzMkFzQW55SW50KCkpOwogICAgIGludDMyX3QgbGVuZ3RoID0gbGVuZ3RoVmFsdWUu
YXNJbnQzMkFzQW55SW50KCk7CiAKLSAgICBTdHJpbmcgbmFtZSA9IG5hbWVTdHJpbmctPnZhbHVl
KGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBib3VuZEFy
Z3MuaXNDZWxsKCkgPyBqc0Nhc3Q8SlNBcnJheSo+KGJvdW5kQXJncykgOiBudWxscHRyLCBsZW5n
dGgsIFdURk1vdmUobmFtZSkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFy
Z2V0LCBib3VuZFRoaXMsIGJvdW5kQXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1
dHRlcmZseSo+KGJvdW5kQXJncykgOiBudWxscHRyLCBsZW5ndGgsIG5hbWVTdHJpbmcpKSk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3Bl
cnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKwogICAgIEpTT2JqZWN0KiB0YXJn
ZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0YXJnZXQp
OworICAgIGlmIChmdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZnVuY3Rpb24tPmFyZU5hbWVBbmRMZW5ndGhPcmlnaW5hbCh2bSkpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBiN2RiNDU0NjEyMjllZTJmMmMzMTQzMTcw
YzI2OTQzOGE4ZTA2ZTAwLi5mZjA0ZjU5Y2E4MjUyMDU2MDRhMWRiNWYyNzVmNGUzOWU0OGRlZWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTU1LDcgKzU1
LDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAodmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBKU0Z1bmN0
aW9uVHlwZSkpCiAgICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKTsKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogY2xhc3MgRXhjZXB0aW9uOwpAQCAtMTI5MiwyMCAr
MTI5Miw2IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVy
Zmx5KFZNJiB2bSwgU3RydWN0dXJlSUQgb2xkU3RydWN0CiAgICAgbV9idXR0ZXJmbHkuc2V0KHZt
LCB0aGlzLCBidXR0ZXJmbHkpOwogfQogCi1pbmxpbmUgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlLCBDYWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgQ2FsbFR5cGUg
cmVzdWx0ID0gdmFsdWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+bWV0aG9kVGFibGUodm0p
LT5nZXRDYWxsRGF0YSh2YWx1ZS5hc0NlbGwoKSwgY2FsbERhdGEpIDogQ2FsbFR5cGU6Ok5vbmU7
Ci0gICAgQVNTRVJUKHJlc3VsdCA9PSBDYWxsVHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2Fs
bGVlKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWlubGluZSBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKQotewotICAgIENvbnN0cnVjdFR5cGUgcmVzdWx0ID0gdmFsdWUuaXNDZWxsKCkg
PyB2YWx1ZS5hc0NlbGwoKS0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKHZhbHVl
LmFzQ2VsbCgpLCBjb25zdHJ1Y3REYXRhKSA6IENvbnN0cnVjdFR5cGU6Ok5vbmU7Ci0gICAgQVNT
RVJUKHJlc3VsdCA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUo
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogaW5saW5lIEpTT2JqZWN0KiBhc09iamVjdChK
U0NlbGwqIGNlbGwpCiB7CiAgICAgQVNTRVJUKGNlbGwtPmlzT2JqZWN0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCAwN2Y2MDY0
MjU0YTdiYTM3Njg5YWJjMTc2ZWI2NDM3NGEwY2FhZTY1Li4wNmE3MTRmNzRmMzU5NDhiMzlhMTFi
OGFjOGM5MTY5MjkyM2RiOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdElubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkF1eGlsaWFy
eUJhcnJpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgpAQCAt
NTEwLDQgKzUxMSwyOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5
TWF5QmVJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBwdXRE
aXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xv
dCk7CiB9CiAKK2lubGluZSBDYWxsVHlwZSBnZXRDYWxsRGF0YShWTSYgdm0sIEpTVmFsdWUgdmFs
dWUsIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAg
ICAgICByZXR1cm4gQ2FsbFR5cGU6Ok5vbmU7CisgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXND
ZWxsKCk7CisgICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAg
cmV0dXJuIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKTsKKyAgICBDYWxs
VHlwZSByZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGNlbGwsIGNh
bGxEYXRhKTsKKyAgICBBU1NFUlQocmVzdWx0ID09IENhbGxUeXBlOjpOb25lIHx8IHZhbHVlLmlz
VmFsaWRDYWxsZWUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIENvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIENvbnN0cnVjdERh
dGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAg
cmV0dXJuIENvbnN0cnVjdFR5cGU6Ok5vbmU7CisgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXND
ZWxsKCk7CisgICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAg
cmV0dXJuIEpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoY2VsbCwgY29uc3RydWN0RGF0YSk7
CisgICAgQ29uc3RydWN0VHlwZSByZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENv
bnN0cnVjdERhdGEoY2VsbCwgY29uc3RydWN0RGF0YSk7CisgICAgQVNTRVJUKHJlc3VsdCA9PSBD
b25zdHJ1Y3RUeXBlOjpOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggNjRkZGZjYjFhMjU2MGU2ZmUxYjQ1NGU0ZmVlMTQ4OTJhZGMwOGE5Zi4u
ZWEzYjQ5MzQyYmFjOWI2ODhhOGRmZDgxZTNlMzUxMWQ3MWYzNTk4MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNzY2LDggKzc2Niw4IEBAIHN0YXRpYyBUaHVua0dlbmVy
YXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogICAg
ICAgICByZXR1cm4gaW11bFRodW5rR2VuZXJhdG9yOwogICAgIGNhc2UgUmFuZG9tSW50cmluc2lj
OgogICAgICAgICByZXR1cm4gcmFuZG9tVGh1bmtHZW5lcmF0b3I7Ci0gICAgY2FzZSBCb3VuZFRo
aXNOb0FyZ3NGdW5jdGlvbkNhbGxJbnRyaW5zaWM6Ci0gICAgICAgIHJldHVybiBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3I7CisgICAgY2FzZSBCb3VuZEZ1bmN0aW9uQ2FsbElu
dHJpbnNpYzoKKyAgICAgICAgcmV0dXJuIGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTgxNSw2ICs4MTUs
MzEgQEAgTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnMKICAgICByZXR1cm4gTmF0aXZlRXhlY3V0YWJs
ZTo6Y3JlYXRlKCp0aGlzLCBqaXRDb2RlRm9yQ2FsbFRyYW1wb2xpbmUoKSwgZnVuY3Rpb24sIGpp
dENvZGVGb3JDb25zdHJ1Y3RUcmFtcG9saW5lKCksIGNvbnN0cnVjdG9yLCBuYW1lKTsKIH0KIAor
TmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEJvdW5kRnVuY3Rpb24oYm9vbCBpc0pTRnVuY3Rpb24s
IGJvb2wgY2FuQ29uc3RydWN0KQoreworICAgIGJvb2wgc2xvd0Nhc2UgPSAhaXNKU0Z1bmN0aW9u
OworCisgICAgYXV0byBnZXRPckNyZWF0ZSA9IFsmXSAoV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYg
c2xvdCkgLT4gTmF0aXZlRXhlY3V0YWJsZSogeworICAgICAgICBpZiAoYXV0byogY2FjaGVkID0g
c2xvdC5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWNoZWQ7CisgICAgICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIHJlc3VsdCA9IGdldEhvc3RGdW5jdGlvbigKKyAgICAgICAgICAgIHNsb3dDYXNl
ID8gYm91bmRGdW5jdGlvbkNhbGwgOiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwsCisgICAg
ICAgICAgICBzbG93Q2FzZSA/IE5vSW50cmluc2ljIDogQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5z
aWMsCisgICAgICAgICAgICBjYW5Db25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9u
Q29uc3RydWN0IDogYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IsIG51bGxwdHIsIFN0cmluZygpKTsKKyAgICAgICAgc2xvdCA9
IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4ocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9OworCisgICAgaWYgKHNsb3dDYXNlKSB7CisgICAgICAgIGlmIChjYW5Db25zdHJ1Y3Qp
CisgICAgICAgICAgICByZXR1cm4gZ2V0T3JDcmVhdGUobV9zbG93Q2FuQ29uc3RydWN0Qm91bmRF
eGVjdXRhYmxlKTsKKyAgICAgICAgcmV0dXJuIGdldE9yQ3JlYXRlKG1fc2xvd0JvdW5kRXhlY3V0
YWJsZSk7CisgICAgfQorICAgIGlmIChjYW5Db25zdHJ1Y3QpCisgICAgICAgIHJldHVybiBnZXRP
ckNyZWF0ZShtX2Zhc3RDYW5Db25zdHJ1Y3RCb3VuZEV4ZWN1dGFibGUpOworICAgIHJldHVybiBn
ZXRPckNyZWF0ZShtX2Zhc3RCb3VuZEV4ZWN1dGFibGUpOworfQorCiBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNFbnRyeVB0clRhZz4gVk06OmdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5l
Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICNpZiBFTkFCTEUoSklUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMjgwODZjNGVkOTE2MDZjMjgxYjFhMWQ1Yjdh
MWRhYjA2MDg4MDcwYS4uNTM5NTEzYmUwOTU2MDM5MjM5NGNjNDI0OWFhNTI3MzZkY2I4MGYzMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02OTQsNiArNjk0LDExIEBAIGNsYXNz
IFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtl
ZExpc3ROb2RlPFZNPiB7CiAgICAgU3Ryb25nPEpTQ2VsbD4gbV9zZW50aW5lbFNldEJ1Y2tldDsK
ICAgICBTdHJvbmc8SlNDZWxsPiBtX3NlbnRpbmVsTWFwQnVja2V0OwogCisgICAgV2VhazxOYXRp
dmVFeGVjdXRhYmxlPiBtX2Zhc3RCb3VuZEV4ZWN1dGFibGU7CisgICAgV2VhazxOYXRpdmVFeGVj
dXRhYmxlPiBtX2Zhc3RDYW5Db25zdHJ1Y3RCb3VuZEV4ZWN1dGFibGU7CisgICAgV2VhazxOYXRp
dmVFeGVjdXRhYmxlPiBtX3Nsb3dCb3VuZEV4ZWN1dGFibGU7CisgICAgV2VhazxOYXRpdmVFeGVj
dXRhYmxlPiBtX3Nsb3dDYW5Db25zdHJ1Y3RCb3VuZEV4ZWN1dGFibGU7CisKICAgICBSZWY8UHJv
bWlzZVRpbWVyPiBwcm9taXNlVGltZXI7CiAgICAgCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0
cnVjdGluZ0NhbGxiYWNrT2JqZWN0OwpAQCAtODMxLDYgKzgzNiw4IEBAIGNsYXNzIFZNIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2Rl
PFZNPiB7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0
aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAg
ICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEJvdW5k
RnVuY3Rpb24oYm9vbCBpc0pTRnVuY3Rpb24sIGJvb2wgY2FuQ29uc3RydWN0KTsKKwogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBnZXRDVElJbnRlcm5hbEZ1bmN0aW9u
VHJhbXBvbGluZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKIAogICAgIHN0YXRpYyBwdHJk
aWZmX3QgZXhjZXB0aW9uT2Zmc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dh
c21Ub0pTLmNwcAppbmRleCBiMjY3ZDUxZTQ5NGRiNTIzN2ZmYzdlZGFjMjczZWJiY2UyZGUxYzFk
Li42NzdlODg1YTBlYTIwMjc4ODQ5ZTg0NTlmZWU5ZWQwODhlNWM0ZDRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgRXhw
ZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWls
dXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChqaXQsIGlt
cG9ydEluZGV4LCBpbXBvcnRKU0NlbGxHUFJSZWcpOwogCiAgICAgaml0LnN0b3JlNjQoaW1wb3J0
SlNDZWxsR1BSUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKLSAgICBqaXQuc3RvcmUz
MihKSVQ6OlRydXN0ZWRJbW0zMihudW1iZXJPZlBhcmFtZXRlcnMpLCBjYWxsZWVGcmFtZS53aXRo
T2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOworICAgIGppdC5zdG9yZTMyKEpJVDo6
VHJ1c3RlZEltbTMyKG51bWJlck9mUGFyYW1ldGVycyksIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQo
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwogICAgIGppdC5zdG9yZTY0
KEpJVDo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSwgY2FsbGVlRnJhbWUu
d2l0aE9mZnNldChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpKSk7CiAKICAgICAvLyBGSVhNRSBUYWlsIGNhbGwgaWYgdGhlIHdh
c20gcmV0dXJuIHR5cGUgaXMgdm9pZCBhbmQgbm8gcmVnaXN0ZXJzIHdlcmUgc3BpbGxlZC4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTQ4OApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRl
eCBhNDk3M2ViYmEwNDY4YTY1ZGI5NWM4YmE4MzI2NGFkOGZhODZkZGQ5Li41MmI5OWM0MjYxMDhm
NzNmNGE4YjQzOTU3ZDFlYWIzOTg4NmVjOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMjQzLDcgKzI0Myw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0
aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5k
bGUgbWlzbWF0Y2hlZCBhcml0eQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTY1NjQKICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxs
SGVscGVyczo6QmVsb3csCi0gICAgICAgIENDYWxsSGVscGVyczo6cGF5bG9hZEZvcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2lnbmF0
dXJlLmFyZ3VtZW50Q291bnQoKSArIDEpKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6cGF5bG9h
ZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxKSkpOwogCiAg
ICAgaWYgKHVzZVRhZ1JlZ2lzdGVycygpKQogICAgICAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFn
Q2hlY2tSZWdpc3RlcnMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBiZWZkYmZhOTg0YjIzM2JmMGI4YjZiZDI4YWYzMWQyYTgwZjA0Y2YzLi42
ZmZiNjE3ZWNhMzAyYTFjZTAwYmFhYmNjNzU2MTk0N2NiNGFmNGMyIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTkt
MTItMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlND
XSBJbXByb3ZlIG91ciBib3VuZCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MzI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBydW5uaW5nIHNsb3ct
bWljcm9iZW5jaG1hcmtzLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3M6
CisKIDIwMTktMTItMTggIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVcGRhdGUgV2ViR0wgYm90IGhvc3RuYW1lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1
bi1qc2MtYmVuY2htYXJrcyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzCmluZGV4
IDJjY2ZlOTIzZDMwZTUwYjdiMjA5YTI0ODA0MzJlNjcyZjZjYjNlZDAuLmY0MzA2ZGNiZmU0Nzg0
YzQ1MDFlYjBiYzY2ODZjOGE5NzA0MWRjMDggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVu
LWpzYy1iZW5jaG1hcmtzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzCkBA
IC01MSw2ICs1MSw3IEBAIFY4X1BBVEggPSBQRVJGT1JNQU5DRVRFU1RTX1BBVEggKyAiU3VuU3Bp
ZGVyIiArICJ0ZXN0cyIgKyAidjgtdjYiCiBUQUlMQkVOQ0hfUEFUSCA9IFBFUkZPUk1BTkNFVEVT
VFNfUEFUSCArICJUYWlsQmVuY2g5MDAwIgogQklHSU5UQkVOQ0hfUEFUSCA9IFBFUkZPUk1BTkNF
VEVTVFNfUEFUSCArICJCaWdJbnRCZW5jaCIKIE1JQ1JPQkVOQ0hNQVJLU19QQVRIID0gT1BFTlNP
VVJDRV9QQVRIICsgIkpTVGVzdHMiICsgIm1pY3JvYmVuY2htYXJrcyIKK1NMT1dfTUlDUk9CRU5D
SE1BUktTX1BBVEggPSBPUEVOU09VUkNFX1BBVEggKyAiSlNUZXN0cyIgKyAic2xvd01pY3JvYmVu
Y2htYXJrcyIKIE9QRU5TT1VSQ0VfT0NUQU5FX1BBVEggPSBQRVJGT1JNQU5DRVRFU1RTX1BBVEgg
KyAiT2N0YW5lIgogT0NUQU5FX1dSQVBQRVJfUEFUSCA9IE9QRU5TT1VSQ0VfT0NUQU5FX1BBVEgg
KyAid3JhcHBlcnMiCiBKU0JFTkNIX1BBVEggPSBQRVJGT1JNQU5DRVRFU1RTX1BBVEggKyAiSlNC
ZW5jaCIKQEAgLTIyNCw2ICsyMjUsNyBAQCAkaW5jbHVkZVY4Q29tcGlsZVRpbWU9dHJ1ZQogJGlu
Y2x1ZGVLcmFrZW49dHJ1ZQogJGluY2x1ZGVKU0JlbmNoPXRydWUKICRpbmNsdWRlTWljcm9iZW5j
aG1hcmtzPXRydWUKKyRpbmNsdWRlU2xvd01pY3JvYmVuY2htYXJrcz10cnVlCiAkaW5jbHVkZUFz
bUJlbmNoPXRydWUKICRpbmNsdWRlRFNQSlM9dHJ1ZQogJGluY2x1ZGVCcm93c2VybWFya0pTPWZh
bHNlCkBAIC0zMjMsNiArMzI1LDggQEAgZGVmIHVzYWdlCiAgIHB1dHMgIi0ta3Jha2VuICAgICAg
ICAgICAgIE9ubHkgcnVuIEtyYWtlbi4iCiAgIHB1dHMgIi0tanMtYmVuY2ggICAgICAgICAgIE9u
bHkgcnVuIEpTQmVuY2guIgogICBwdXRzICItLW1pY3JvYmVuY2htYXJrcyAgICBPbmx5IHJ1biBt
aWNyb2JlbmNobWFya3MuIgorICBwdXRzICItLXNsb3ctbWljcm9iZW5jaG1hcmtzIgorICBwdXRz
ICIgICAgICAgICAgICAgICAgICAgICBPbmx5IHJ1biBzbG93LW1pY3JvYmVuY2htYXJrcy4iCiAg
IHB1dHMgIi0tZHNwICAgICAgICAgICAgICAgIE9ubHkgcnVuIERTUC4iCiAgIHB1dHMgIi0tYXNt
LWJlbmNoICAgICAgICAgIE9ubHkgcnVuIEFzbUJlbmNoLiIKICAgcHV0cyAiLS1icm93c2VybWFy
ay1qcyAgICAgT25seSBydW4gYnJvd3Nlcm1hcmstanMuIgpAQCAtMTc3Niw2ICsxNzgwLDE4IEBA
IGNsYXNzIE1pY3JvYmVuY2htYXJrc0JlbmNobWFyawogICBlbmQKIGVuZAogCitjbGFzcyBTbG93
TWljcm9iZW5jaG1hcmtzQmVuY2htYXJrCisgIGluY2x1ZGUgQmVuY2htYXJrCisgIAorICBkZWYg
aW5pdGlhbGl6ZShuYW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBlbWl0
UnVuQ29kZShwbGFuKQorICAgIGVtaXRCZW5jaFJ1bkNvZGUoZnVsbG5hbWUsIHBsYW4sIFNpbmds
ZUZpbGVUaW1lZEJlbmNobWFya1BhcmFtZXRlcnMubmV3KGVuc3VyZUZpbGUoIlNsb3dNaWNyb2Jl
bmNobWFya3MtI3tAbmFtZX0iLCAiI3tTTE9XX01JQ1JPQkVOQ0hNQVJLU19QQVRIfS8je0BuYW1l
fS5qcyIpKSkKKyAgZW5kCitlbmQKKwogY2xhc3MgQXNtQmVuY2hCZW5jaG1hcmsKICAgaW5jbHVk
ZSBCZW5jaG1hcmsKICAgCkBAIC0yODExLDYgKzI4MjcsNyBAQCBiZWdpbgogICAgICAgJGluY2x1
ZGVLcmFrZW4gPSBmYWxzZQogICAgICAgJGluY2x1ZGVKU0JlbmNoID0gZmFsc2UKICAgICAgICRp
bmNsdWRlTWljcm9iZW5jaG1hcmtzID0gZmFsc2UKKyAgICAgICRpbmNsdWRlU2xvd01pY3JvYmVu
Y2htYXJrcyA9IGZhbHNlCiAgICAgICAkaW5jbHVkZUFzbUJlbmNoID0gZmFsc2UKICAgICAgICRp
bmNsdWRlRFNQSlMgPSBmYWxzZQogICAgICAgJGluY2x1ZGVCcm93c2VybWFya0pTID0gZmFsc2UK
QEAgLTI4MzksNiArMjg1Niw3IEBAIGJlZ2luCiAgICAgICAgICAgICAgICAgIFsnLS1rcmFrZW4n
LCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICAgIFsnLS1qcy1iZW5j
aCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgICAgWyctLW1pY3Jv
YmVuY2htYXJrcycsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgICAg
WyctLXNsb3ctbWljcm9iZW5jaG1hcmtzJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAg
ICAgICAgICAgICAgICBbJy0tYXNtLWJlbmNoJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAog
ICAgICAgICAgICAgICAgICBbJy0tZHNwJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAg
ICAgICAgICAgICAgICBbJy0tYnJvd3Nlcm1hcmstanMnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVO
VF0sCkBAIC0yOTM5LDYgKzI5NTcsOSBAQCBiZWdpbgogICAgIHdoZW4gJy0tbWljcm9iZW5jaG1h
cmtzJwogICAgICAgcmVzZXRCZW5jaE9wdGlvbnNJZk5lY2Vzc2FyeQogICAgICAgJGluY2x1ZGVN
aWNyb2JlbmNobWFya3MgPSB0cnVlCisgICAgd2hlbiAnLS1zbG93LW1pY3JvYmVuY2htYXJrcycK
KyAgICAgIHJlc2V0QmVuY2hPcHRpb25zSWZOZWNlc3NhcnkKKyAgICAgICRpbmNsdWRlU2xvd01p
Y3JvYmVuY2htYXJrcyA9IHRydWUKICAgICB3aGVuICctLWFzbS1iZW5jaCcKICAgICAgIHJlc2V0
QmVuY2hPcHRpb25zSWZOZWNlc3NhcnkKICAgICAgICRpbmNsdWRlQXNtQmVuY2ggPSB0cnVlCkBA
IC0zMjA4LDYgKzMyMjksMTUgQEAgYmVnaW4KICAgICAgIE1JQ1JPQkVOQ0hNQVJLUy5hZGQgTWlj
cm9iZW5jaG1hcmtzQmVuY2htYXJrLm5ldyhuYW1lKQogICAgIGVuZAogICB9CisKKyAgU0xPV19N
SUNST0JFTkNITUFSS1MgPSBCZW5jaG1hcmtTdWl0ZS5uZXcoIlNsb3dNaWNyb2JlbmNobWFya3Mi
LCA6Z2VvbWV0cmljTWVhbiwgMCkKKyAgRGlyLmZvcmVhY2goU0xPV19NSUNST0JFTkNITUFSS1Nf
UEFUSCkgeworICAgIHwgZmlsZW5hbWUgfAorICAgIGlmIGZpbGVuYW1lID1+IC9cLmpzJC8KKyAg
ICAgIG5hbWUgPSAkfi5wcmVfbWF0Y2gKKyAgICAgIFNMT1dfTUlDUk9CRU5DSE1BUktTLmFkZCBT
bG93TWljcm9iZW5jaG1hcmtzQmVuY2htYXJrLm5ldyhuYW1lKQorICAgIGVuZAorICB9CiAgIAog
ICBBU01CRU5DSCA9IEJlbmNobWFya1N1aXRlLm5ldygiQXNtQmVuY2giLCA6Z2VvbWV0cmljTWVh
biwgMCkKICAgaWYgQVNNQkVOQ0hfUEFUSApAQCAtMzM1NCw2ICszMzg0LDEwIEBAIGJlZ2luCiAg
ICAgJHN1aXRlcyA8PCBNSUNST0JFTkNITUFSS1MKICAgZW5kCiAKKyAgaWYgJGluY2x1ZGVTbG93
TWljcm9iZW5jaG1hcmtzIGFuZCBub3QgU0xPV19NSUNST0JFTkNITUFSS1MuZW1wdHk/CisgICAg
JHN1aXRlcyA8PCBTTE9XX01JQ1JPQkVOQ0hNQVJLUworICBlbmQKKwogICBpZiAkaW5jbHVkZUJp
Z0ludEJlbmNoIGFuZCBub3QgQklHSU5UQkVOQ0guZW1wdHk/CiAgICAgJHN1aXRlcyA8PCBCSUdJ
TlRCRU5DSAogICBlbmQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYWU3ZjE2YjhlMzU0MDg2YjBiZDZlNTg0YjdlM2QyNjM2N2ViNzdiOC4u
MTg5ODRjYTVmMDc3NjBlYTcxZjRlOWM1MzcwMzk5NjZhOTNjZTU5NSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxOS0xMi0xOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtKU0NdIEltcHJvdmUgb3VyIGJvdW5kIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJr
cy9mdW5jdGlvbi1iaW5kLW5vLWlubGluaW5nLXJlcGVhdC1jYWxsLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGFzc2VydCk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAg
KGZvbyk6CisgICAgICAgIChsZXQuc3RhcnQuRGF0ZS5ub3cpOgorICAgICAgICAqIHN0cmVzcy9i
aW5kLWFyZ3MuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6
CisgICAgICAgICh0ZXN0Mik6CisKIDIwMTktMTItMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSA4Qml0IEpTUm9wZVN0cmluZyBjYW4gY29udGFp
biAxNkJpdCBzdHJpbmcgaW4gaXRzIHJvcGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2Z1bmN0aW9uLWJpbmQtbm8taW5saW5pbmctcmVwZWF0LWNhbGwuanMgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1iaW5kLW5vLWlubGluaW5nLXJlcGVhdC1jYWxsLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM4MjhmNzQ5NzYzYTkyYzM1OWI1YWE3ZDZhOTg3Y2Y3YjhlN2IzYTMKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1iaW5kLW5v
LWlubGluaW5nLXJlcGVhdC1jYWxsLmpzCkBAIC0wLDAgKzEsMzYgQEAKKworZnVuY3Rpb24gYXNz
ZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIikKK30K
K25vSW5saW5lKGFzc2VydCk7CisKK2Z1bmN0aW9uIHRlc3QoZiwgdiwgYywgZCkgeworICAgIHJl
dHVybiBmLmJpbmQodiwgYywgZCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZnVuY3Rpb24gdGVz
dDIoZiwgdikgeworICAgIHJldHVybiBmLmJpbmQodik7Cit9Citub0lubGluZSh0ZXN0KTsKKwor
ZnVuY3Rpb24gZm9vKGEsYixjLGQsZSxmKSB7IHJldHVybiB0aGlzOyB9CitsZXQgdGhpc1ZhbHVl
ID0ge307CitsZXQgc3RhcnQgPSBEYXRlLm5vdygpOworCit7CisgICAgbGV0IGYgPSB0ZXN0KGZv
bywgdGhpc1ZhbHVlLCAyMCwgMzApOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsg
aSsrKSB7CisgICAgICAgIGFzc2VydChmKGZvbywgdGhpc1ZhbHVlLCAyMCwgMzApID09PSB0aGlz
VmFsdWUpOworICAgIH0KK30KK3sKKyAgICBsZXQgZiA9IHRlc3QyKGZvbywgdGhpc1ZhbHVlKTsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQo
Zihmb28sIHRoaXNWYWx1ZSwgMjAsIDMwKSA9PT0gdGhpc1ZhbHVlKTsKKyAgICB9Cit9Citjb25z
dCB2ZXJib3NlID0gZmFsc2U7CitpZiAodmVyYm9zZSkKKyAgICBwcmludChEYXRlLm5vdygpIC0g
c3RhcnQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmluZC1hcmdzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvYmluZC1hcmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3N2Q2ZmJjNDQ4MmZmOTEzMmE2OTAy
Yjc1YzA3YWEzM2Y4ZGQ5YzcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaW5k
LWFyZ3MuanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Citub0lubGluZShzaG91bGRCZSk7CisK
K2Z1bmN0aW9uIHRlc3QoYSwgYiwgYywgZCwgZSkKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjICsg
ZCArIGU7Cit9Citub0lubGluZSh0ZXN0KTsKKworZnVuY3Rpb24gdGVzdDIoYSwgYiwgYywgZCwg
ZSwgZikKK3sKKyAgICByZXR1cm4gYSArIGIgKyBjICsgZCArIGUgKyBmOworfQorbm9JbmxpbmUo
dGVzdDIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDNlNDsgKytpKSB7CisgICAgc2hvdWxkQmUo
dGVzdC5iaW5kKHVuZGVmaW5lZCkoMSwgMiwgMywgNCwgNSksIDE1KTsKKyAgICBzaG91bGRCZSh0
ZXN0LmJpbmQodW5kZWZpbmVkLCAxKSgyLCAzLCA0LCA1KSwgMTUpOworICAgIHNob3VsZEJlKHRl
c3QuYmluZCh1bmRlZmluZWQsIDIsIDMpKDQsIDUsIDYpLCAyMCk7CisgICAgc2hvdWxkQmUodGVz
dC5iaW5kKHVuZGVmaW5lZCwgMiwgMywgNCkoNSwgNiksIDIwKTsKKyAgICBzaG91bGRCZSh0ZXN0
LmJpbmQodW5kZWZpbmVkLCAyLCAzLCA0LCA1KSg2KSwgMjApOworICAgIHNob3VsZEJlKHRlc3Qu
YmluZCh1bmRlZmluZWQsIDIsIDMsIDQsIDUsIDYpKCksIDIwKTsKKworICAgIHNob3VsZEJlKHRl
c3QyLmJpbmQodW5kZWZpbmVkKSgxLCAxLCAyLCAzLCA0LCA1KSwgMTYpOworICAgIHNob3VsZEJl
KHRlc3QyLmJpbmQodW5kZWZpbmVkLCAxKSgxLCAyLCAzLCA0LCA1KSwgMTYpOworICAgIHNob3Vs
ZEJlKHRlc3QyLmJpbmQodW5kZWZpbmVkLCAxLCAxKSgyLCAzLCA0LCA1KSwgMTYpOworICAgIHNo
b3VsZEJlKHRlc3QyLmJpbmQodW5kZWZpbmVkLCAxLCAyLCAzKSg0LCA1LCA2KSwgMjEpOworICAg
IHNob3VsZEJlKHRlc3QyLmJpbmQodW5kZWZpbmVkLCAxLCAyLCAzLCA0KSg1LCA2KSwgMjEpOwor
ICAgIHNob3VsZEJlKHRlc3QyLmJpbmQodW5kZWZpbmVkLCAxLCAyLCAzLCA0LCA1KSg2KSwgMjEp
OworICAgIHNob3VsZEJlKHRlc3QyLmJpbmQodW5kZWZpbmVkLCAxLCAyLCAzLCA0LCA1LCA2KSgp
LCAyMSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386234</attachid>
            <date>2019-12-20 12:00:04 -0800</date>
            <delta_ts>2019-12-20 12:22:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205327-20191220120003.patch</filename>
            <type>text/plain</type>
            <size>181199</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjQ3MmNjNGJlMzExMzY2MDhjY2U3NzRlNWVlYjkxY2EwMDM4Y2Y1Li42M2UyZWYwNDI4OTNhOGU1
OTNhMTc3NzMyZTIyYmU4NWMyMjU1MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzMgQEAKKzIwMTktMTItMjAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIG91ciBib3VuZCBmdW5jdGlvbiBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1
MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXByb3ZlcyBGdW5jdGlvbiNiaW5kLCBhbmQgY2FsbGluZyBib3VuZCBmdW5jdGlv
biB3aXRoIGJvdW5kIGFyZ3VtZW50cy4KKworICAgICAgICAxLiBSZW5hbWUgQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCB0byBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcy4KKyAgICAgICAgMi4gRG8gbm90IGluY2x1ZGUgbmFtZSBpbiBOYXRpdmVFeGVjdXRhYmxl
IGZvciBKU0JvdW5kRnVuY3Rpb24uIFB1dHRpbmcgbmFtZSBpbiBOYXRpdmVFeGVjdXRhYmxlIGlz
IGFzc3VtaW5nIHRoYXQgZnVuY3Rpb24gKyBuYW1lIHBhaXIgaXMgYWxtb3N0IGlkZW50aWNhbC4K
KyAgICAgICAgICAgVGhpcyBpcyB0cnVlIGluIGhvc3QgZnVuY3Rpb25zIGV4Y2VwdCBmb3IgSlNC
b3VuZEZ1bmN0aW9uLiBKU0JvdW5kRnVuY3Rpb24gc2hvdWxkIGhvbGQgaXRzIG5hbWUgaW4gSlNC
b3VuZEZ1bmN0aW9uLgorICAgICAgICAzLiBDYWNoZSBOYXRpdmVFeGVjdXRhYmxlIGZvciBKU0Jv
dW5kRnVuY3Rpb24gaW4gVk0uIFVzaW5nIGhhc2gtbWFwIGluIEpJVFRodW5rIGZvciBOYXRpdmVF
eGVjdXRhYmxlIGlzIGFzc3VtaW5nIHRoYXQgaG9zdC1mdW5jdGlvbiBjcmVhdGlvbiBpcyBub3Qg
ZG9uZSBieQorICAgICAgICAgICB1c2VyIHByb2dyYW06IGVhY2ggZnVuY3Rpb24gaXMgcHJlLWRl
ZmluZWQgb25lIGJ5IHRoZSBlbnZpcm9ubWVudCwgYW5kIHRoZXJlIGlzIG5vIGNhc2UgY3JlYXRp
bmcgaG9zdC1mdW5jdGlvbnMgcmVwZWF0ZWRseSBmcm9tIHVzZXItcHJvZ3JhbS4gVGhpcyBpcyBu
b3QKKyAgICAgICAgICAgdHJ1ZSBmb3IgSlNCb3VuZEZ1bmN0aW9uLiBXZSBzaG91bGQgY2FjaGUg
TmF0aXZlRXhlY3V0YWJsZSBpbiBWTSB0byBsb29rIHVwIGZhc3QuCisgICAgICAgIDQuIFRodW5r
R2VuZXJhdG9yIHNob3VsZCBzdXBwb3J0IEpTQm91bmRGdW5jdGlvbiBjYWxsIHdpdGggYm91bmQg
YXJndW1lbnRzLiBJdCB0dXJucyBvdXQgdGhhdCBTcGVlZG9tZXRlcjIvUmVhY3QtUmVkdXgtVG9k
b01WQyBpcyB1c2luZyBib3VuZCBmdW5jdGlvbiB3aXRoCisgICAgICAgICAgIGJvdW5kIGFyZ3Vt
ZW50cy4gQW5kIGl0IGlzIHVzZWQgYXMgZXZlbnQgbGlzdGVuZXIuIFRoaXMgaXMgcmVhbGx5IGJh
ZDogd2hlbiBkaXNwYXRjaGluZyBhbiBldmVudCwgd2UgZmlyc3QgY2FsbCB0aGlzIGZ1bmN0aW9u
IGZyb20gQysrLCBlbnRlcmluZyBKUyB3b3JsZCwKKyAgICAgICAgICAgZ29pbmcgYmFjayB0byBD
Kysgd29ybGQgYWdhaW4sIGFuZCBlbnRlcmluZyBKUyB3b3JsZCB0byBjYWxsIGJvdW5kIGZ1bmN0
aW9uIGFnYWluLiBCeSB1c2luZyBUaHVua0dlbmVyYXRvciwgd2UgY2FuIGVsaW1pbmF0ZSB0aGlz
IGJhY2sgYW5kIGZvcnRoIGJ5IGRpcmVjdGx5CisgICAgICAgICAgIGNhbGxpbmcgYm91bmQgSlMg
RXhlY3V0YWJsZSBmcm9tIHRodW5rLiBQcmV2aW91c2x5LCBib3VuZCBhcmd1bWVudHMgYXJlIHN0
b3JlZCBpbiBKU0FycmF5LiBCdXQgaXQgaXMgZGlmZmljdWx0IHRvIGFjY2VzcyB0aGVtIGZyb20g
dGh1bmsgc2luY2Ugd2UgbmVlZCB0byBjb25zaWRlcgorICAgICAgICAgICBoYXZlLWEtYmFkLXRp
bWUgY2FzZS4gSW5zdGVhZCwgd2UgdXNlIEpTSW1tdXRhYmxlQnV0dGVyZmx5IHRvIHNhdmUgYm91
bmQgYXJndW1lbnRzIHNvIHRoYXQgSklUIHRodW5rIGNhbiBxdWlja2x5IGFjY2VzcyBhcmd1bWVu
dHMuIFRvIGNhcHR1cmUgYXJndW1lbnRzIGFzCisgICAgICAgICAgIEpTSW1tdXRhYmxlQnV0dGVy
Zmx5IGluIEpTIHdvcmxkLCB3ZSBpbnRyb2R1Y2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJm
bHksIGFuZCBoYW5kbGUgaXQgaW4gYWxsIHRpZXJzLgorICAgICAgICA1LiBJdCB0dXJucyBvdXQg
dGhhdCBlYWdlciBtYXRlcmlhbGl6YXRpb24gb2YgImxlbmd0aCIgaW4gSlNCb3VuZEZ1bmN0aW9u
IHRha2VzIGxvbmcgdGltZSB3aGlsZSBpdCBpcyByYXJlbHkgdXNlZC4gVGhpcyBwYXRjaCBtYWtl
cyBsZW5ndGggbGF6aWx5IHJlaWZpZWQgZm9yIEpTQm91bmRGdW5jdGlvbi4KKyAgICAgICAgNi4g
VG8gbWFrZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBmYXN0ZXIsIHdlIHRyYWNrIHdoZXRoZXIg
Im5hbWUiIGFuZCAibGVuZ3RoIiBwcm9wZXJ0aWVzIG9mIEpTRnVuY3Rpb24gaXMgbW9kaWZpZWQg
b3Igbm90LiBUaGlzIHNraXBzIGhhcy1vd24tbGVuZ3RoLXByb3BlcnR5IGNoZWNrLCB3aGljaAor
ICAgICAgICAgICBtYWtlcyBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAxMX4lIGZhc3Rlci4KKwor
ICAgICAgICBDb21iaW5pbmcgdGhpbmdzIGFib3ZlLCBjcmVhdGlvbiBvZiBKU0JvdW5kRnVuY3Rp
b24gaXMgODB+JSBmYXN0ZXIuIEFuZCBjYWxsaW5nIGJvdW5kIGZ1bmN0aW9uIHdpdGggYm91bmQg
YXJndW1lbnRzIGlzIDN+eCBmYXN0ZXIuCisgICAgICAgIFRoaXMgaW1wcm92ZXMgU3BlZWRvbWV0
ZXIyL1JlYWN0LVRvZG9NVkMgYnkgfjMlLgorCisgICAgICAgICogYnVpbHRpbnMvRnVuY3Rpb25Q
cm90b3R5cGUuanM6CisgICAgICAgIChiaW5kKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAg
ICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHA6CisgICAgICAgIChKU0M6
OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHM6OmdlbmVyYXRlSW1wbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgor
ICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAg
KiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuY3BwOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVn
aXN0ZXI6OmR1bXAgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19jcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHkpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1p
bmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3QpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmZsdXNoSW1wbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2Ji
ZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcv
REZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRm
Zy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmlzTGl2ZUluQnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjpmb3JBbGxMb2NhbHNMaXZlSW5CeXRlY29kZSk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZW1pdFN0b3JlQ2FsbFNpdGVJbmRleCk6
CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkxvY2FsT1NSQXZh
aWxhYmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UmVzdG9yZUFyZ3VtZW50cyk6CisgICAg
ICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlaWZ5SW5saW5lZENh
bGxGcmFtZXMpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVy
aXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3I6
OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTdGFja0xheW91dFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd2VyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEaXJlY3RDYWxs
T3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxFdmFsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FsbFByZWZsaWdodCk6CisgICAgICAg
ICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxPcGVyYXRp
b24pOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkNhbGxGcmFtZTo6Y2FsbFNpdGVBc1Jhd0JpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWU6OnVuc2FmZUNhbGxTaXRlQXNSYXdCaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fs
bEZyYW1lOjpzZXRDdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUu
aDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6c2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKToKKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
YXJndW1lbnRDb3VudCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnByZXBhcmVGb3JUYWlsQ2FsbFNsb3cpOgorICAgICAgICAqIGpp
dC9DYWxsRnJhbWVTaHVmZmxlci5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVy
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVG
b3JUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55
KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlV2l0aG91dExpbmtpbmcp
OgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxl
U2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVw
RnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGpp
dC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9hcmd1bWVudF9jb3VudCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9s
ZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KToKKyAgICAg
ICAgKiBqaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjplbWl0U2V0dXBW
YXJhcmdzRnJhbWVGYXN0Q2FzZSk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQu
aDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6U3BlY2lhbGl6ZWRUaHVua0pJ
VCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmFy
aXR5Rml4dXBHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRv
cik6IERlbGV0ZWQuCisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAg
ICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlQmFz
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uUmFyZURhdGE6OkZ1bmN0aW9uUmFyZURhdGEpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29t
cGFyZSk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6
CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2Fs
bCk6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Ym91
bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0
aW9uQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6CisgICAgICAgIChKU0M6OkpT
Qm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAo
SlNDOjpKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rp
b246Om5hbWUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93
blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cmVpZnlMZW5ndGgpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpyZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6cmVpZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZO
ZWVkZWQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpyZWlmeUxhenlCb3VuZE5hbWVJZk5l
ZWRlZCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphcmVOYW1l
QW5kTGVuZ3RoT3JpZ2luYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjptYWtlQm91bmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6Omhhc093
bkxlbmd0aFByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OmdldEpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpnZXRDYWxsRGF0YSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OmdldENvbnN0cnVjdERhdGEpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmdldENhbGxEYXRhKToK
KyAgICAgICAgKEpTQzo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OnRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKToKKyAgICAgICAg
KEpTQzo6Vk06OmdldEJvdW5kRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAg
ICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRv
SlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KToKKwogMjAx
OS0xMi0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24n
dCBjYWNoZSBzZWxmIGN1c3RvbXMgb24gZGljdGlvbmFyaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMKaW5kZXggZTQwYTY5NjMw
MDJmYjg2MjY3NDg2ZWU0ZDYzNmIyOGEwNzhjNGVlNi4uZjU5MzUyN2RjM2M0N2IzYWExNmRjMzA3
ZmYwYWRjNTNjNWY3NTNiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtNjEsMjMgKzYxLDIxIEBAIGZ1bmN0aW9uIGJp
bmQodGhpc1ZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGxldCB0YXJnZXQgPSB0
aGlzOworICAgIHZhciB0YXJnZXQgPSB0aGlzOwogICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAi
ZnVuY3Rpb24iKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBpcyBub3QgYSBmdW5j
dGlvbiBpbnNpZGUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQiKTsKIAotICAgIGxldCBhcmd1bWVu
dENvdW50ID0gYXJndW1lbnRzLmxlbmd0aDsKLSAgICBsZXQgYm91bmRBcmdzID0gbnVsbDsKLSAg
ICBsZXQgbnVtQm91bmRBcmdzID0gMDsKKyAgICB2YXIgYXJndW1lbnRDb3VudCA9IEBhcmd1bWVu
dENvdW50KCk7CisgICAgdmFyIGJvdW5kQXJncyA9IG51bGw7CisgICAgdmFyIG51bUJvdW5kQXJn
cyA9IDA7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPiAxKSB7CiAgICAgICAgIG51bUJvdW5kQXJn
cyA9IGFyZ3VtZW50Q291bnQgLSAxOwotICAgICAgICBib3VuZEFyZ3MgPSBAbmV3QXJyYXlXaXRo
U2l6ZShudW1Cb3VuZEFyZ3MpOwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUJvdW5k
QXJnczsgaSsrKQotICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGJvdW5kQXJncywgaSwgYXJn
dW1lbnRzW2kgKyAxXSk7CisgICAgICAgIGJvdW5kQXJncyA9IEBjcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHkoKTsKICAgICB9CiAKLSAgICBsZXQgbGVuZ3RoID0gMDsKKyAgICB2YXIgbGVuZ3RoID0g
MDsKICAgICBpZiAoQGhhc093bkxlbmd0aFByb3BlcnR5KHRhcmdldCkpIHsKLSAgICAgICAgbGV0
IGxlbmd0aFZhbHVlID0gdGFyZ2V0Lmxlbmd0aDsKKyAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0g
dGFyZ2V0Lmxlbmd0aDsKICAgICAgICAgaWYgKHR5cGVvZiBsZW5ndGhWYWx1ZSA9PT0gIm51bWJl
ciIpIHsKICAgICAgICAgICAgIGxlbmd0aFZhbHVlID0gbGVuZ3RoVmFsdWUgfCAwOwogICAgICAg
ICAgICAgLy8gTm90ZSB0aGF0IHdlIG9ubHkgY2FyZSBhYm91dCBwb3NpdGl2ZSBsZW5ndGhWYWx1
ZXMsIGhvd2V2ZXIsIHRoaXMgY29tcGFyaXNpb24KQEAgLTg3LDkgKzg1LDkgQEAgZnVuY3Rpb24g
YmluZCh0aGlzVmFsdWUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsZXQgbmFtZSA9IHRhcmdl
dC5uYW1lOworICAgIHZhciBuYW1lID0gdGFyZ2V0Lm5hbWU7CiAgICAgaWYgKHR5cGVvZiBuYW1l
ICE9PSAic3RyaW5nIikKICAgICAgICAgbmFtZSA9ICIiOwogCi0gICAgcmV0dXJuIEBtYWtlQm91
bmRGdW5jdGlvbih0YXJnZXQsIGFyZ3VtZW50c1swXSwgYm91bmRBcmdzLCBsZW5ndGgsIG5hbWUp
OworICAgIHJldHVybiBAbWFrZUJvdW5kRnVuY3Rpb24odGFyZ2V0LCB0aGlzVmFsdWUsIGJvdW5k
QXJncywgbGVuZ3RoLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcAppbmRleCA2MDA2MmY5ZDQ4MDZmNzkyM2JkMzkzZDNhNzU5MmViOGI1
MDU4ODM4Li5kZDlhY2NhOWFkYzkwMjlhMGFlMWJjYWU5YjIwNjI2YWRkNjUyNDg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC0xNTA4LDcg
KzE1MDgsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogCiAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRs
aW5nT3JPcmlnaW5hbCgpLmJpdHMoKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpKSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0
dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkp
OwogCiAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyIHx8IG1fdHlwZSA9PSBTZXR0ZXIpIHsK
ICAgICAgICAgICAgIGF1dG8mIGFjY2VzcyA9IHRoaXMtPmFzPEdldHRlclNldHRlckFjY2Vzc0Nh
c2U+KCk7CkBAIC0xNTg1LDcgKzE1ODUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1w
bChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgICAgICBqaXQuc3RvcmUz
MigKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihudW1iZXJPZlBh
cmFtZXRlcnMpLAotICAgICAgICAgICAgICAgIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikgKyBQYXlsb2FkT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWUud2l0aE9mZnNldChDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHNpemVvZihSZWdpc3RlcikgKyBQYXlsb2Fk
T2Zmc2V0KSk7CiAKICAgICAgICAgICAgIGppdC5zdG9yZUNlbGwoCiAgICAgICAgICAgICAgICAg
bG9hZGVkVmFsdWVHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwpAQCAtMTc5Nyw3ICsxNzk3LDcgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAg
ICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jYWxsU2l0ZUlu
ZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVy
PihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGppdC5tYWtlU3BhY2VPblN0YWNrRm9yQ0NhbGwoKTsKICAgICAgICAg
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlU25pcHBldFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCmluZGV4IGExNzRlMjQ3M2Y3NTMwY2M3NzcxNTNj
NjNiMTMxMzMwZWU1OGY1ODguLmIxZDQwNGExNDViZDIxNDFiM2EwYTljNDMxOTE4YTU4ZjlhZjE4
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
U25pcHBldFBhcmFtcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBTbG93UGF0
aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVibGljIEFjY2Vzc0Nhc2VTbmlwcGV0UGFy
YW1zOjpTbG93UAogCiAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5n
T3JPcmlnaW5hbCgpLmJpdHMoKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zvcihz
dGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
KSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFs
UmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwog
CiAgICAgICAgIGppdC5tYWtlU3BhY2VPblN0YWNrRm9yQ0NhbGwoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmgKaW5kZXggZjc2Zjc4NWJlMWJhMDQyZGFmOGRhMzMzZDJiMTM5ZDNhMTgzMDM5Yy4uODQ5
ZTM0YjE4OGE1OTc5ZjU1MTQyZTA1MzAyZDVlMjdhYTdmZDNkZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oCkBAIC03NCw2ICs3NCw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMy
X3Q7CiAgICAgbWFjcm8obmV3QXJyYXlXaXRoU2l6ZSkgXAogICAgIG1hY3JvKG5ld1Byb21pc2Up
IFwKICAgICBtYWNybyhjcmVhdGVQcm9taXNlKSBcCisgICAgbWFjcm8oY3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5KSBcCiAgICAgbWFjcm8oZGVmaW5lRW51bWVyYWJsZVdyaXRhYmxlQ29uZmlndXJh
YmxlRGF0YVByb3BlcnR5KSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5T
SUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShtYWNybykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggNzFiZjZiMDZjYzdlZjQ5MGY3YjM2YWEz
ZTIwMDY1MTc3ODdhZmZhNC4uYTliZDQ4MzcxYjRlMzBkYWY2MDQ0ZDA5NDlhMDcxZDE0YTFhZDA3
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CkBAIC0xMDgsNiArMTA4LDExIEBACiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAg
IH0KIAorb3AgOmNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5LAorICAgIGFyZ3M6IHsKKyAgICAg
ICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBvcCA6Y3JlYXRlX3RoaXMsCiAgICAg
YXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGViNjMyOTM0ZWI2
YzFmYzVjY2FhNzFiMGU0MjkzYWE5YWQ2NjJlOTUuLmMwMThkZGZiOGIwMzk4MjNlMDYwOWNmNjU3
NzgzMjBjMzI5YTIzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtODEsNiArODEsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IElu
c3RydQogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRz
OgorICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBvcF9n
ZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9jaGVja190cmFwczoKICAgICBjYXNlIG9wX2dl
dF9hcmd1bWVudDoKQEAgLTQ3MSw2ICs0NzIsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQog
ICAgIERFRlMoT3BDcmVhdGVEaXJlY3RBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRl
U2NvcGVkQXJndW1lbnRzLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZUNsb25lZEFyZ3VtZW50cywg
ZHN0KQorICAgIERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIGRzdCkKICAgICBERUZT
KE9wRGVsQnlJZCwgZHN0KQogICAgIERFRlMoT3BEZWxCeVZhbCwgZHN0KQogICAgIERFRlMoT3BV
bnNpZ25lZCwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZpcnR1YWxSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmly
dHVhbFJlZ2lzdGVyLmNwcAppbmRleCA0NWM2YmExY2EwMjgyODJmYmRhZjZiYjJhODAzMDYxMWNm
NTM0ODcyLi5jNjJkOTUxM2VhNTUzMzBlMGI0MWViM2ZlOGEwMzVjODVmNjM4NTQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmNwcApA
QCAtNDIsOCArNDIsOCBAQCB2b2lkIFZpcnR1YWxSZWdpc3Rlcjo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogICAgICAgICAgICAgb3V0LnByaW50KCJjb2RlQmxvY2siKTsKICAgICAgICAg
ZWxzZSBpZiAobV92aXJ0dWFsUmVnaXN0ZXIgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKQogICAg
ICAgICAgICAgb3V0LnByaW50KCJjYWxsZWUiKTsKLSAgICAgICAgZWxzZSBpZiAobV92aXJ0dWFs
UmVnaXN0ZXIgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkKLSAgICAgICAgICAgIG91
dC5wcmludCgiYXJndW1lbnRDb3VudCIpOworICAgICAgICBlbHNlIGlmIChtX3ZpcnR1YWxSZWdp
c3RlciA9PSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKKyAgICAg
ICAgICAgIG91dC5wcmludCgiYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMiKTsKICNpZiBDUFUo
QUREUkVTUzY0KQogICAgICAgICBlbHNlIGlmICghbV92aXJ0dWFsUmVnaXN0ZXIpCiAgICAgICAg
ICAgICBvdXQucHJpbnQoImNhbGxlckZyYW1lIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGY4MGE3
YzRmNjA4MTk1NWUxZTI0Y2UyMDU0YzAxM2FkY2JkNzg3ZTMuLmI1MmZjNjIzNTQzYjRjMWMzN2Yy
MTRlNzIxNzRiOTJlMjlhNTQ1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNzI2LDYgKzI3MjYs
MTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBc3luY0dlbmVy
YXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGUKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShS
ZWdpc3RlcklEKiBkc3QpCit7CisgICAgT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6OmVtaXQo
dGhpcywgZHN0KTsKKyAgICByZXR1cm4gZHN0OworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KQogewogICAgIE9wQ2hlY2tUZHo6OmVt
aXQodGhpcywgdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA5M2IxM2Y2ZGE4MTllMzFmZTA3YTA0
NWZmZWYwZWYyNmNiNTFlNmY5Li5lMTRhYTE2NTYyODEwZmQ5NjM3ZTAwYWVlN2NlYmZlZDQ1NjEw
NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCkBAIC03MjYsNiArNzI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVQcm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogbmV3VGFyZ2V0LCBib29sIGlzSW50ZXJuYWxQcm9taXNlKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdENyZWF0ZUdlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IG5ld1RhcmdldCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVBc3luY0dlbmVyYXRv
cihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoUmVnaXN0ZXJJRCogZHN0KTsKICAg
ICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KTsKICAgICAgICAgYm9v
bCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIHZvaWQgZW1pdFREWkNo
ZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB0YXJnZXQsIFJlZ2lz
dGVySUQqIHNjb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA1YTkzMDEzYzM3Y2IyZDgwMmFlZmU0NmQwM2IzNDAw
OGU4OTk2YjY0Li5lNGYyYWVhY2RiYjE3NDJmY2I5NzU2ZGJjNjk2M2NjNDU2MWI1Mzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0xNDYzLDYgKzE0NjMsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19uZXdQcm9taXNlKEpTQzo6Qnl0ZWNvZGVHZW5lcmEKICAgICBy
ZXR1cm4gZmluYWxEZXN0aW5hdGlvbi5nZXQoKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19jcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoSlND
OjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkKK3sK
KyAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2RlZmluZUVudW1lcmFibGVXcml0YWJsZUNvbmZpZ3VyYWJsZURhdGFQcm9wZXJ0eShKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIEpTQzo6UmVnaXN0ZXJJRCogZHN0KQogewog
ICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggNjRhY2I1NDBkNDBhZTE3OThmN2MyMjM2ZDgxZGZlMWM4NDA4ZDUzMC4u
ZGMxYzY0ZWU0ZTc2ZThmMTFiMzYxNmE1OWI1MzcyYzE3NGE2N2U3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMjk2NCw2ICsyOTY0LDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgIHNldEZvck5vZGUobm9kZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJy
ZWFrOwogCisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgICAgIHNldEZv
ck5vZGUobm9kZSwgbV92bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhG
cm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJP
ZkluZGV4aW5nU2hhcGVzXS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCAKICAgICAgICAgICAg
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCBhZjJl
ZGE0YWQ4OGU5Yjk3YWFkNWY0ZjkzOTIzNzYyMTk1MmFlZjg0Li43MTNlNzk5OWE3YmZjYTIxZGRj
ZWE4ZTM0NjI2MGYzNDMxZTRkOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTU2MCw3ICs1
NjAsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Nsb2JiZXJlZEJ5QmxvY2sgfD0gY2xv
YmJlcmVkQnlUaGlzQmxvY2sub3BlcmFuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJlZEJ5QmxvY2sgfHwgaW5saW5lQ2FsbEZyYW1l
LT5pc0Nsb3N1cmVDYWxsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKaW5kZXggNjI2MTEyM2NiZmVjM2ViYTE5NWQwOWI5MzEw
MjZmMjZjNzI1ODQ3Ni4uZmYxZDU2ODBmYWUwYTIwMDE0ZDFmMWUxM2RjM2U0OGQ4YzU0MzMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0
aWVzLmNwcApAQCAtNDIsNyArNDIsNyBAQCBib29sIGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3Qo
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3Mo
KQotICAgICAgICAmJiByZWcgPT0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkKKyAgICAgICAgJiYgcmVn
ID09IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKICAgICAvLyBXZSBkbyBub3QgaW5jbHVkZSBmaXh1cHMgaGVyZSBzaW5jZSBpdCBp
cyBub3QgcmVsYXRlZCB0byB8YXJndW1lbnRzfCwgcmVzdCBwYXJhbWV0ZXJzLCBhbmQgdmFyYXJn
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggN2U0YTlmZTYyMzNiNzQ0OWU4Mjg2NjJjMWU0OTlkYzllODQ0MDhiNy4uMDMwZmFiZmEz
MDdmMTlhMjY3YzBjZDVmYzNhZTU5ODNjZGFjYTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU1Miw3ICs1NTIsNyBAQCBjbGFz
cyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Ns
b3N1cmVDYWxsKQogICAgICAgICAgICAgICAgIGFkZEZsdXNoRGlyZWN0KGlubGluZUNhbGxGcmFt
ZSwgcmVtYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKQotICAgICAgICAgICAgICAgIGFkZEZsdXNoRGlyZWN0KGlubGluZUNhbGxGcmFtZSwg
cmVtYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgYWRkRmx1c2hEaXJlY3QoaW5s
aW5lQ2FsbEZyYW1lLCByZW1hcE9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gbV9ncmFwaC5iYXNlbGluZUNvZGVC
bG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpLT5udW1QYXJhbWV0ZXJzKCk7CiAKQEAgLTE5MDIsNyAr
MTkwMiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyCiAgICAgICAgIAogICAgICAgICBMb2Fk
VmFyYXJnc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbG9hZFZhcmFyZ3NEYXRhLmFkZCgpOwogICAg
ICAgICBkYXRhLT5zdGFydCA9IFZpcnR1YWxSZWdpc3RlcihyZW1hcHBlZEFyZ3VtZW50U3RhcnQg
KyAxKTsKLSAgICAgICAgZGF0YS0+Y291bnQgPSBWaXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRSZWdp
c3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOworICAgICAgICBkYXRh
LT5jb3VudCA9IFZpcnR1YWxSZWdpc3RlcihyZW1hcHBlZFJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICBkYXRhLT5vZmZz
ZXQgPSBhcmd1bWVudHNPZmZzZXQ7CiAgICAgICAgIGRhdGEtPmxpbWl0ID0gbWF4QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIGRhdGEtPm1hbmRhdG9yeU1pbmltdW0gPSBtYW5k
YXRvcnlNaW5pbXVtOwpAQCAtMTkyMiw3ICsxOTIyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0
ZXIKICAgICAgICAgLy8gU1NBLiBGb3J0dW5hdGVseSwgd2UgYWxzbyBoYXZlIG90aGVyIHJlYXNv
bnMgZm9yIG5vdCBpbnNlcnRpbmcgY29udHJvbCBmbG93CiAgICAgICAgIC8vIGJlZm9yZSBTU0Eu
CiAgICAgICAgIAotICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNvdW50VmFyaWFibGUgPSBu
ZXdWYXJpYWJsZUFjY2Vzc0RhdGEoVmlydHVhbFJlZ2lzdGVyKHJlbWFwcGVkUmVnaXN0ZXJPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YSogY291bnRWYXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShWaXJ0dWFsUmVn
aXN0ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIC8vIFRoaXMgaXMgcHJldHR5IGxhbWUsIGJ1dCBp
dCB3aWxsIGZvcmNlIHRoZSBjb3VudCB0byBiZSBmbHVzaGVkIGFzIGFuIGludC4gVGhpcyBkb2Vz
bid0CiAgICAgICAgIC8vIG1hdHRlciB2ZXJ5IG11Y2gsIHNpbmNlIG91ciB1c2Ugb2YgYSBTZXRB
cmd1bWVudERlZmluaXRlbHkgYW5kIEZsdXNoZXMgZm9yIHRoaXMgbG9jYWwgc2xvdCBpcwogICAg
ICAgICAvLyBtb3N0bHkganVzdCBhIGZvcm1hbGl0eS4KQEAgLTY4OTcsNiArNjg5NywxMyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBjcmVhdGVBcmd1bWVudHMpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpOwogICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseTogeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHk+KCk7CisgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKKyAgICAgICAgICAg
IHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkp
KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5
KTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldEZyb21Bcmd1bWVudHM+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZmQwYjZkNzRkYTY3N2JjNDUwOGNhYzQ5ZmM0ZWUx
Yzk4ZGE0ZTdhZC4uMjQ3N2FmMGU1N2Y0ZGVmYWYyOWIyZjgwYzA0NzVmNTNlZTExNWZkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjM0
LDYgKzIzNCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bj
b2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9jcmVhdGVf
ZGlyZWN0X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgog
ICAgIGNhc2Ugb3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHM6CisgICAgY2FzZSBvcF9jcmVhdGVf
YXJndW1lbnRzX2J1dHRlcmZseToKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAg
ICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDg5YmM2NDFmNTI2
YmI1M2ZmMDM3ZjczY2Y5NTBiYWM2NDZkNDk5NTQuLjVmMDJhYzBkZjkzYTJhZjhkNzQzZTFmMmU3
OGQxYWRjOTM5MmU3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgIHJlYWQoQWJz
dHJhY3RIZWFwKFN0YWNrLCBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlKSk7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygp
KQotICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgICAg
ICByZWFkKEFic3RyYWN0SGVhcChTdGFjaywgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgfQogCiAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzcGVjaWZpY2FsbHkgYWNjb3VudCB3aGljaCBub2RlcyBj
YW4gcmVhZCBmcm9tIHRoZSBzY29wZQpAQCAtNTI0LDYgKzUyNCw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVh
dGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CisgICAg
Y2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgIHJlYWQoU3RhY2spOwogICAg
ICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3Vu
dCk7CkBAIC03NzMsMTQgKzc3NCwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM6IHsKLSAgICAgICAgYXV0byBoZWFwID0gQWJzdHJhY3RIZWFwKFN0YWNrLCByZW1hcE9wZXJh
bmQobm9kZS0+YXJndW1lbnRzSW5saW5lQ2FsbEZyYW1lKCksIFZpcnR1YWxSZWdpc3RlcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICBhdXRvIGhlYXAgPSBBYnN0cmFj
dEhlYXAoU3RhY2ssIHJlbWFwT3BlcmFuZChub2RlLT5hcmd1bWVudHNJbmxpbmVDYWxsRnJhbWUo
KSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSkpOwogICAgICAgICByZWFkKGhlYXApOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFN0
YWNrUGF5bG9hZExvYywgaGVhcCksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6Ci0gICAgICAg
IHdyaXRlKEFic3RyYWN0SGVhcChTdGFjaywgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkp
OworICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgR2V0
UmVzdExlbmd0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA4
NTQxMjMxNDc0MWU2ZjExMjYxZjJlOTdjNDlmZTY0NGRhZTdiYWY3Li44YjUzOTQzZTI0YTMzNmJk
ZTEwOWNhNmMzNDAyOTRmNjJhYWE3ZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCkBAIC0yNTcsNiArMjU3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3Jl
YXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgorICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNl
IENhbGxFdmFsOgogICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJhcmdzOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYWVlMWYwMDczYjBmNGJiY2M0NzM0
ZWI2NDFlNDY0OGMzMDU1YTI0NC4uOGFiODhjYzdmMTY2Y2M0N2I3YjQ4ODcwZGNhYzcyNWY2MmM4
ZmExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBA
IC0yNTIxLDYgKzI1MjEsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJ
ZFN0YXR1czoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKKyAgICAgICAgY2FzZSBD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAg
ICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGIz
MjBmNzA3Yzk1ZjEyMzkzODUxYmMzYjJiMmI0MmI5NTZkZDBiZjUuLjdkMGZhMzY0ZDViYmUzYzIy
MDMzOTM4OGNmYTU1YWQ2OGNhOWZkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCkBAIC0xMTYyLDcgKzExNjIsNyBAQCBib29sIEdyYXBoOjppc0xpdmVJbkJ5dGVjb2Rl
KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUtPmlzVmFyYXJncygpCi0gICAgICAgICAgICAgICAgICAgICYmIHJlZy5vZmZzZXQo
KSA9PSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSB7CisgICAgICAgICAgICAgICAgICAg
ICYmIHJlZy5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykgewogICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkxvb2tzIGxpa2UgdGhlIGFyZ3VtZW50IGNvdW50LlxuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCmluZGV4IGZhYjljZjAyYTI1OTc2ZWY0N2QxNzkwNWJhZDljZTAzZTM4MmJjZTUuLmVj
NGYyMmJlZTU1ZjFiMjkwNDJiZmIyM2UxMjY0ZmEyMDNjYWRkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKQEAgLTg2NSw3ICs4NjUsNyBAQCBjbGFzcyBHcmFwaCA6IHB1Ymxp
YyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgZnVuY3RvcihzdGFja09mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICAgICAgICAgIGZ1bmN0b3Ioc3RhY2tP
ZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgZnVuY3RvcihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCAz
ZDg0M2NlNThmMjBiNDExNjMzOWZjZGE5NTg4YWViYTZiN2E4YzJlLi43MGVlZjg4NmI0YThmZTI5
NDNmNDZiYWU3NmVjNmI2MzcwZTQ1MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgICAgIGFyaXR5Q2hlY2sgPSBsYWJlbCgpOwogICAgICAg
ICBjb21waWxlRW50cnkoKTsKIAotICAgICAgICBsb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXls
b2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEdQ
UkluZm86OnJlZ1QxKTsKKyAgICAgICAgbG9hZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cigoVmlydHVhbFJlZ2lzdGVyKUNhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBicmFuY2gzMihBYm92ZU9yRXF1YWwsIEdQ
UkluZm86OnJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkp
LmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CiAgICAgICAgIGVtaXRTdG9yZUNvZGVPcmln
aW4oQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAgICAgICAgIGlmIChtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAppbmRleCA2OGNhOThkZjZmNWM0YjdiNjM3MmNjMTU4MThlYzI1NzI4MmY4OWQ5Li5k
MWJkN2RhOWRmZmRjMzZjMjYwZTYzNWNiNjAwYTliMmYxOTE5ZDM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xMzUsNyArMTM1LDcgQEAgY2xhc3Mg
SklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKIAogICAgIHZvaWQgZW1pdFN0b3Jl
Q2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IGNhbGxTaXRlKQogICAgIHsKLSAgICAgICAgc3Rv
cmUzMihUcnVzdGVkSW1tMzIoY2FsbFNpdGUuYml0cygpKSwgdGFnRm9yKHN0YXRpY19jYXN0PFZp
cnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAg
c3RvcmUzMihUcnVzdGVkSW1tMzIoY2FsbFNpdGUuYml0cygpKSwgdGFnRm9yKHN0YXRpY19jYXN0
PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKSk7CiAgICAgfQogCiAgICAgLy8gQWRkIGEgY2FsbCBvdXQgZnJvbSBKSVQgY29kZSwgd2l0
aG91dCBhbiBleGNlcHRpb24gY2hlY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKaW5kZXggMjRjNzMzZDM4NzAyNzlmNGE1NmI0ZTY4OGJmMGJmMDZhYzI0YzFkNC4uODE5
MTNlZDA1YzhjYTI2OTM0MGFmNTE4N2ZhYTY3YzQxNzVmMjg4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDI2LDYgKzQyNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVTY29wZWRBcmd1bWVudHMsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKENyZWF0ZUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oUGhhbnRvbUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0RnJvbUFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oUHV0VG9Bcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhHZXRBcmd1bWVudCwgTm9kZVJlc3VsdEpTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcApp
bmRleCAzMjgwZjg3YTYyNjdkZjAzNGM4NGUzMzE4NTMwYzc0MTllNTVlOTdlLi43OWJjNzk2ODMx
MTMwYzAzN2Q1NDcwYzBlNzlkNWIwZDk5NTYyNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5j
cHAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIExvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRv
cjo6ZXhlY3V0ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+
aXNWYXJhcmdzKCkpIHsKICAgICAgICAgICAgIC8vIFJlY29yZCBob3cgdG8gcmVhZCBlYWNoIGFy
Z3VtZW50IGFuZCB0aGUgYXJndW1lbnQgY291bnQuCiAgICAgICAgICAgICBBdmFpbGFiaWxpdHkg
YXJndW1lbnRDb3VudCA9Ci0gICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMu
b3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3Bl
cmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2F2YWls
YWJpbGl0eS5tX2hlYXAuc2V0KFByb21vdGVkSGVhcExvY2F0aW9uKEFyZ3VtZW50Q291bnRQTG9j
LCBub2RlKSwgYXJndW1lbnRDb3VudCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDE4YzY0MTQ3OTM0MjQ2OWI0MWNhOGY5OGYzMDhiM2E0
YzkzM2JhOTguLjZmZWRiMTliMWFlYmY0NTM0YTA0ZGJmMDA4ZWE4ZDQ5MjlkMjg5MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtMjk1LDcgKzI5NSw3IEBA
IHN0YXRpYyB2b2lkIGVtaXRSZXN0b3JlQXJndW1lbnRzKENvbnRleHQmIGNvbnRleHQsIENvZGVC
bG9jayogY29kZUJsb2NrLCBERkc6OkpJCiAKICAgICAgICAgaW50MzJfdCBhcmd1bWVudENvdW50
OwogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKQotICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGZyYW1lLm9wZXJhbmQ8aW50MzJf
dD4oc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBQYXlsb2FkT2Zm
c2V0KTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBmcmFtZS5vcGVyYW5kPGludDMyX3Q+
KHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IFBheWxvYWRPZmZzZXQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcmd1bWVudENvdW50
ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKIApAQCAtODE1
LDE4ICs4MTUsMTggQEAgc3RhdGljIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDb250ZXh0
JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9zdEJhc2VsaW4KICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGZyYW1l
LnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBQYXlsb2FkT2Zmc2V0LCBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJh
bmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgUGF5bG9hZE9mZnNldCwgaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgIEFTU0VSVChjYWxsZXJG
cmFtZSk7CiAgICAgICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJG
cmFtZU9mZnNldCgpLCBjYWxsZXJGcmFtZSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAg
dWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29k
ZUluZGV4KCkpLmJpdHMoKTsKLSAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQs
IFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50
MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CiAgICAgICAg
IGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQogICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlLCBKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpOwogI2Vs
c2UgLy8gVVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKICAgICAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CiAgICAg
ICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChi
aXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGluc3RydWN0aW9uKSkpLmJpdHMoKTsKLSAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUYWdPZmZz
ZXQsIGxvY2F0aW9uQml0cyk7CiAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFRhZ09m
ZnNldCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAg
aWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICBmcmFtZS5z
ZXRPcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUsIFBheWxvYWRPZmZzZXQsIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSk7
CkBAIC04NDEsNyArODQxLDcgQEAgc3RhdGljIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhD
b250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9zdEJhc2VsaW4KICAgICAgICAgY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CiAg
ICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRl
eChiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGluc3RydWN0aW9uKSkpLmJpdHMoKTsKICNlbmRpZgot
ICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgICAgIGZyYW1lLnNldE9wZXJh
bmQ8dWludDMyX3Q+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBU
YWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CiAgICAgfQogfQogCkBAIC05OTcsNyArOTk3LDcgQEAg
dm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgVk0m
IHZtLCBjb25zdCBPcGVyYW5kczxWYWwKIAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8
fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICBqaXQubG9hZDMy
KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihzdGFja09mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLAorICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBqaXQubW92ZSgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRl
eCAyZmYzZWE4YjVmYmI2ZjNmMjcyMWQ1MDI0NDU2Mjk4YjA4NGQ1MTE1Li45YjAyMWJiNzExYmEw
MmQ5YmMxMDAzZDc3NDE0MzE3MmE1YjYzMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0zMDUsMTggKzMw
NSwxOCBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFpbmxpbmVD
YWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBBc3NlbWJs
eUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkp
OwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGppdC5zdG9yZVB0cihjYWxsZXJGcmFtZUdQ
UiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0g
Q2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCkpLmJpdHMoKTsKLSAgICAg
ICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRz
KSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAg
ICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0
cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpKTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAg
ICAgICAgICAgICBqaXQuc3RvcmU2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZShpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZUNvbnN0YW50KCkpKSks
IEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkpOwogI2Vsc2UgLy8g
VVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKICAgICAgICAgaml0
LnN0b3JlUHRyKGNhbGxlckZyYW1lR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRl
T2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwogICAgICAgICBj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYXQoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKICAgICAgICAg
dWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KGJpdHdp
c2VfY2FzdDx1aW50MzJfdD4oaW5zdHJ1Y3Rpb24pKSkuYml0cygpOwotICAgICAgICBqaXQuc3Rv
cmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJs
eUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgaml0LnN0
b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1i
bHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwog
ICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpKTsKICAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICBq
aXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFt
ZS0+Y2FsbGVlQ29uc3RhbnQoKSksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVh
bFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlKSkpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1l
cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCkpLnB0cigpOwogICAg
ICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgo
Yml0d2lzZV9jYXN0PHVpbnQzMl90PihpbnN0cnVjdGlvbikpKS5iaXRzKCk7CiAjZW5kaWYKLSAg
ICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25C
aXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Io
KFZpcnR1YWxSZWdpc3RlcikoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAppbmRleCA1MGNhMDBiMDBiOTQ4OGExMDMyODcyNjI4YTllMmVlODczZjJjMzc5Li5i
NGEwODBkODI3YTJiNmU2OGI1NzViZTc4MDM4ZjM2ZWY3OWRlMzE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTIxMzQsNiArMjEzNCwyMyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgICAgICBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
YXJndW1lbnRTdGFydCwgbGVuZ3RoLCBjYWxsZWUpOwogfQogCitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBhcmd1bWVudENvdW50
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFi
bGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldy
aXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwg
YXJndW1lbnRDb3VudCk7CisgICAgaWYgKCFidXR0ZXJmbHkpIHsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYXJndW1lbnRD
b3VudDsgKytpbmRleCkKKyAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXgsIGFy
Z3VtZW50U3RhcnRbaW5kZXhdLmpzVmFsdWUoKSk7CisgICAgcmV0dXJuIGJ1dHRlcmZseTsKK30K
KwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1
cmluZ0V4aXQoVk0qIHZtUG9pbnRlciwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUs
IEpTRnVuY3Rpb24qIGNhbGxlZSwgdWludDMyX3QgYXJndW1lbnRDb3VudCkKIHsKICAgICBWTSYg
dm0gPSAqdm1Qb2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAppbmRleCA3ZDI0ZDA2YTA4MzhiNDc4ZWRiN2JiYzMyMDZjZjFhMjI3MWUyMmFkLi4zMzlmOTE4
YTQ5ZTY1ODg5MWIyNzJjOWY4YWZkYzk0ZWEwMDYzYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTk3LDYgKzE5Nyw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KFZNKiwgSW5s
aW5lQ2FsbEZyCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlU2NvcGVkQXJn
dW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3Rh
cnQsIHVpbnQzMl90IGxlbmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlLCBKU0xleGljYWxFbnZpcm9u
bWVudCopOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3Vt
ZW50c0R1cmluZ0V4aXQoVk0qLCBJbmxpbmVDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgdWludDMy
X3QgYXJndW1lbnRDb3VudCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFy
Z3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlKTsKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoSlNHbG9i
YWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1lbnRDb3Vu
dCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUmVzdChKU0dsb2JhbE9i
amVjdCosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCwgdW5zaWduZWQgYXJyYXlTaXplKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJheUJ1ZmZlcihWTSosIFN0cnVjdHVyZSosIEpTQ2VsbCopIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRBZGQoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUu
aAppbmRleCBhNThlMTc5NjU2MGZjNmQ5NGJiNDYzZDE0Mjk4ODZlMDc4ZjBhZmNjLi4xMjhjODQx
ZjBhYzdmOWRlYjYyZjdlNmZjNDYzYTUyODczNGM3NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMTEwLDE0
ICsxMTAsMTQgQEAgY2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAg
ICAgICAgICAgIC8vIFJlYWQgdGhlIG91dGVybW9zdCBhcmd1bWVudHMgYW5kIGFyZ3VtZW50IGNv
dW50LgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mQXJndW1lbnRz
VG9Ta2lwOyBpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZ3JhcGgubV9jb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSk7IGkrKykKICAgICAgICAgICAgICAgICAgICAgbV9yZWFkKHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKLSAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgICAgICBt
X3JlYWQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaSsr
KQogICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgpKSk7
CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAg
ICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgbV9y
ZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgfTsKIAogICAg
ICAgICBhdXRvIHJlYWRTcHJlYWQgPSBbJl0gKE5vZGUqIHNwcmVhZCkgewpAQCAtMTU4LDYgKzE1
OCw3IEBAIGNsYXNzIFByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgY2Fz
ZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1l
bnRzOgogICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKKyAgICAgICAgY2FzZSBD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3Vt
ZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNl
IEdldFJlc3RMZW5ndGg6CkBAIC0yMjUsMTQgKzIyNiwxNCBAQCBjbGFzcyBQcmVjaXNlTG9jYWxD
bG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkgewog
ICAgICAgICAgICAgICAgIGlmIChpbmRleEluY2x1ZGluZ1RoaXMgPCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9ncmFwaC5tX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKICAgICAgICAgICAg
ICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4SW5jbHVkaW5n
VGhpcykpOwotICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpLCAiR2V0QXJndW1lbnQgaXMg
b25seSB1c2VkIGZvciBJbmxpbmVDYWxsRnJhbWUgaWYgdGhlIGNhbGwgZnJhbWUgaXMgdmFyYXJn
cy4iKTsKICAgICAgICAgICAgIGlmIChpbmRleEluY2x1ZGluZ1RoaXMgPCBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkpCiAgICAgICAgICAgICAgICAgbV9yZWFkKFZp
cnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoaW5kZXhJbmNsdWRpbmdUaGlzKS5vZmZzZXQoKSkpOwotICAgICAgICAg
ICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgbV9yZWFkKFZpcnR1
YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKQEAgLTI1Niw3ICsyNTcsNyBAQCBjbGFzcyBQcmVjaXNlTG9jYWxD
bG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+
aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3Rl
cihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7
CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAg
ICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKaW5kZXggODA1MDUxNmNiZmVjYzg0ZmUxOTU4NDI4YTBjZjg3Y2Q1NGVlMTE3Yi4uZWNl
OTQ3MDZlZTg0YzI2ZTE5YTE5OGUyMzVjYTc0ZmI3ODUxOTMxMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKQEAgLTExMjUsNiArMTEyNSwxMSBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmpl
Y3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNw
ZWNDZWxsT3RoZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIEZpYXRJbnQ1MjogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZW5hYmxlSW50NTIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDE1YmU0MmFjM2I2OWFmNGRjNTgzOGExOGRmMzlkMDc4Y2EzMTY5MTkuLmI5
YTQ2YmViMDI1ODE2MjQ4ODhkZDE4MTAyYjJjNmQxOGJhNmRkNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zNzcsNiArMzc3LDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAg
ICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3Vt
ZW50czoKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKICAgICBjYXNlIEdldEZy
b21Bcmd1bWVudHM6CiAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICBjYXNlIFB1dFRvQXJndW1l
bnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCBiNWExMWM1MWVmMTBjZjdhNmIyMzE3MmQyZDhiZjhmNjc1ZTA1MmJkLi42MjkzZDA0
NzI3Mzk5NDVlMzVmZGI3N2NkYTlkNTZmMjIxMjAzYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNzgwOSw2ICs3ODA5LDI4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSog
bm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSogbm9kZSkKK3sK
KyAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBmbHVzaFJlZ2lzdGVycygpOworCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOworCisgICAgLy8gV2Ugc2V0IHVwIHRoZSBhcmd1bWVudHMgb3Vyc2VsdmVz
LCBiZWNhdXNlIHdlIGhhdmUgdGhlIHdob2xlIHJlZ2lzdGVyIGZpbGUgYW5kIHdlIGNhbgorICAg
IC8vIHNldCB0aGVtIHVwIGRpcmVjdGx5IGludG8gdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KKwor
ICAgIC8vIEFyZ3VtZW50czogMDpKU0dsb2JhbE9iamVjdCosIDE6c3RhcnQsIDM6bGVuZ3RoCisg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudCgyLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVtaXRHZXRM
ZW5ndGgobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CisgICAgbV9qaXQuc2V0
dXBBcmd1bWVudCgxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVtaXRHZXRBcmd1bWVudFN0YXJ0
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOworICAgIG1faml0LnNldHVwQXJn
dW1lbnQoMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGRlc3RHUFIpOyB9KTsKKworICAg
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCBy
ZXN1bHRHUFIpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVh
dGVSZXN0KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ3JlYXRlUmVz
dCk7CkBAIC0xMjQ0NywxNCArMTI0NjksMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKE5vZGUqIG5vZGUpCiAgICAgaWYgKElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+YXJndW1lbnRzSW5saW5lQ2FsbEZy
YW1lKCkpCiAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudFJlZ2lzdGVyOwogICAgIGVsc2UKLSAgICAgICAgYXJndW1lbnRDb3VudFJl
Z2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOwor
ICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpLCByZXN1bHQuZ3ByKCkp
OwogICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhOb2RlKiBub2Rl
KQogewotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG5vZGUtPmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCkpLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobm9kZS0+YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgbm9SZXN1bHQobm9k
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAppbmRleCBjNjRmOTc4YWRmODVmYmYyNzdiYmE3OTIxNjA2NGY0MjgxYjhkNWE5Li4yMmFkNDZm
OTA1Zjk3N2I5MGY4NWI5MWFjOTNjZGZjZGY2MDBlZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDAxLDYgKzE0MDEsNyBAQCBjbGFz
cyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnQoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVJlc3Qo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNwcmVhZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
TmV3QXJyYXkoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNjdiMGUwYjM3MDRjYTU5YTg5MGFjNTljODZk
YmQwZDJhMDU2ZGI4MS4uOGM4NTZjODc5ZTZmM2ExZDdkYjI5MTE1YWI4ZDM1M2NhZjFiZTE5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCkBAIC03MzUsNyArNzM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFy
Z3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgc2h1ZmZsZURh
dGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBtX2ppdC5jYWxsZWVGcmFtZVBheWxvYWRTbG90
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
MzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgbV9qaXQuY2Fs
bGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpOwogICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1QYXNzZWRBcmdzOyBpKyspIHsKICAgICAgICAgICAgICAgICBFZGdlIGFyZ0VkZ2UgPSBtX2pp
dC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgMSArIGldOwpA
QCAtMzg3NCw2ICszODc0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHk6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDcmVhdGVSZXN0OiB7CiAgICAg
ICAgIGNvbXBpbGVDcmVhdGVSZXN0KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDNlNjM4
YzliOTQ5ZWI1ZWEyNmEzMTA1ZGRiOGFmZTc2NjIxNjMzNDQuLjE3N2E4MTMyYWMzYjNmMzdjOTYx
NjVhMzc2MTVlMzA3Y2FkMjQ0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIHNodWZmbGVEYXRh
LnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2ppdC5jb2RlQmxvY2soKSk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIobnVtUGFzc2VkQXJncyksIEpJVENvbXBpbGVyOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
MzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgSklUQ29tcGls
ZXI6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bVBhc3NlZEFyZ3M7IGkrKykgewogICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1faml0
LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07CkBA
IC00NTEzLDYgKzQ1MTMsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTogewor
ICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBjYXNlIENyZWF0ZVJlc3Q6IHsKICAgICAgICAgY29tcGlsZUNy
ZWF0ZVJlc3Qobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKaW5kZXggYmVlYzg2YWM3YTdkMzMzZTM5
Njc5ZTI2NzU1OTA3NGU0NjRjOWI4Mi4uMTY4YjNkZjQzMzQ2NTdlNmFhZGI2NGJiZjYzM2VlYzVh
ZmExYjA0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xh
eW91dFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5
b3V0UGhhc2UuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgdXNlZExvY2Fscy5zZXQoVmly
dHVhbFJlZ2lzdGVyKAotICAgICAgICAgICAgICAgICAgICBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50ICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tOykgewpA
QCAtMTc1LDcgKzE3NSw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkgewogICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJl
Z2lzdGVyID0gYXNzaWduKAotICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLCBWaXJ0dWFs
UmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbiwgVmlydHVhbFJl
Z2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tOykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cAppbmRleCA3NTg2N2JmNzc1Zjk1MmRlMDllNTVlMjkzMzQ1MmE5NmZiNDI0OTYxLi42OWU2OGNj
YjhkZDM4ZWI3YTdmZTk2N2QzYzEyZWU0YmFkNDQ2MjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cApAQCAtMzM4LDYgKzMzOCw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgog
ICAgICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNl
IENyZWF0ZUNsb25lZEFyZ3VtZW50czoKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5OgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJh
dG9yRnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IGY5Yjk1YTYwMDk1ZjA0MDA5ODRlY2ZlMDc3ZGJl
NTZiY2Q5ZjU3MjguLjJhYTkyNzAzOGVhNjg1Mzk3ZTcyZDlmMzg1NmRmYTRlN2M1MGM2ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCkBAIC04Myw4ICs4Myw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9u
UHJvZmlsZV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgKyBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2Jv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQm91bmRGdW5j
dGlvblN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0aW9u
UHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxv
Y2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpKSBcCi0gICAgbWFjcm8oRnVuY3Rpb25S
YXJlRGF0YV9oYXNSZWlmaWVkTGVuZ3RoLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkhhc1Jl
aWZpZWRMZW5ndGgoKSkgXAotICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfaGFzUmVpZmllZE5h
bWUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSGFzUmVpZmllZE5hbWUoKSkgXAogICAgIG1h
Y3JvKEdldHRlclNldHRlcl9nZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkg
XAogICAgIG1hY3JvKEdldHRlclNldHRlcl9zZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZT
ZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3ODFiNzFlNjkyNDM4Mjg2NDg5N2VmZjdmOWRl
NjhlNGVlNGViZjFkLi5jMTUxZjIxN2RlZWMxODY3ZTY4ZjU1ZTJjYjRhMDdmOTUxOTYyMGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
NTIsNiArMTUyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29w
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CisgICAgY2FzZSBD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAg
IGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBHZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IGQ0ODczMThmMjlmZTM2MWM2N2FhODU4OTFjYTkx
MjA5OGU2ZTU2MTAuLmUzMDdiMDliNzg2OTE4ZDA3YzA5ZTUzMmZmMGYzYjQyNGE3ODAyNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZv
aWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IG1haW5QYXRoSnVtcHM7CiAgICAgCiAgICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAg
ICAgICAgIGZyYW1lLndpdGhPZmZzZXQoc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQpLAorICAgICAgICAgICAgICAgIGZyYW1lLndpdGhPZmZzZXQoc2l6ZW9m
KFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwK
ICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICBtYWluUGF0aEp1
bXBzLmFwcGVuZChqaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDk0NTY1Nzc1
NWEwZWNiNzgxY2ZiODliMTFjMzlmOThmN2E5YWJhM2QuLjI3NzkzMjFkZTBhYmZmMzAyZjU1MTc0
MTI1MmM3MmM0NjQ4ZTQ3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAg
ICAgICAgICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0tPnRvcEVudHJ5RnJhbWUpOwogCiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCkpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwpAQCAtMTA0Niw2ICsxMDQ2LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjb21waWxl
Q3JlYXRlQ2xvbmVkQXJndW1lbnRzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgICAgICAgICBjb21waWxlQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBPYmpl
Y3RDcmVhdGU6CiAgICAgICAgICAgICBjb21waWxlT2JqZWN0Q3JlYXRlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTU5MzYsNiArNTkzOSwxMyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5KCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkNyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgZ2V0QXJndW1l
bnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUpOworICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ3JlYXRlUmVzdCgpCiAgICAg
ewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpAQCAtNzk0MSwxMyArNzk1MSwxMyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBtX25vZGUtPmFyZ3VtZW50c0lubGluZUNhbGxGcmFtZSgpKQogICAgICAg
ICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50UmVnaXN0ZXI7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdp
c3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAg
ICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgIHNldEludDMyKG1f
b3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpKTsKICAgICB9CiAK
ICAgICB2b2lkIGNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpCiAgICAgewot
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpKSwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KSk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpLCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGls
ZUdldFNjb3BlKCkKQEAgLTg0NjksNyArODQ3OSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIH07CiAKICAgICAgICAgYWRkQXJndW1lbnQoanNDYWxsZWUsIFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCAwKTsKLSAgICAgICAgYWRkQXJndW1lbnQobV9vdXQu
Y29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKKyAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29u
c3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSwgUGF5bG9hZE9mZnNldCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpCiAgICAgICAgICAgICBhZGRBcmd1bWVudChsb3dK
U1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaSksIDApOwogCkBAIC04NDk3LDcgKzg1MDcsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKLSAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpKTsKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKIApAQCAtODU3
OSw3ICs4NTg5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIH07CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVlLCBWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgMCk7Ci0gICAgICAgICAgICBhZGRBcmd1bWVudCht
X291dC5jb25zdEludDMyKG51bVBhc3NlZEFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOworICAgICAgICAgICAgYWRkQXJn
dW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgUGF5bG9hZE9mZnNldCk7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytp
KQogICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpIDwgbnVtQWxsb2Nh
dGVkQXJnczsgKytpKQpAQCAtODY0Nyw3ICs4NjU3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAog
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNp
dGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0
YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0RnJhbWVTaHVm
ZmxlRGF0YShzaHVmZmxlRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZm
bGVyKGppdCwgc2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwpAQCAtODY5MCw3ICs4
NzAwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxs
U2l0ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFn
Rm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQubmVhckNh
bGwoKTsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKApAQCAtODgwNiw3ICs4ODE2LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSBjYWxsIHNp
dGUgaW5kZXggb2Ygb3VyIGZyYW1lLiBCYWQgdGhpbmdzIGhhcHBlbiBpZiBpdCdzIG5vdCBzZXQu
CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpKTsKIAogICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZm
bGVEYXRhOwogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2FscyA9IHN0YXRlLT5q
aXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50OwpAQCAtODk1Miw3ICs4OTYyLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4
LmJpdHMoKSksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKICAgICAgICAgICAgICAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZv
KCk7CiAKQEAgLTkwMTYsNyArOTAyNiw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIEJlZm9yZSB0b3VjaGluZyBzdGFjayB2YWx1ZXMsIHdlIHNob3VsZCB1
cGRhdGUgdGhlIHN0YWNrIHBvaW50ZXIgdG8gcHJvdGVjdCB0aGVtIGZyb20gc2lnbmFsIHN0YWNr
LgogICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmUz
MihzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIxLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoc2Ny
YXRjaEdQUjIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSMSwgQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwogCiAgICAgICAgICAgICAgICAgICAgIGludCBz
dG9yZU9mZnNldCA9IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwogCkBAIC05MjU0LDcgKzkyNjQsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygp
KSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAg
ICAgICAgICAgICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0Rh
dGEoKTsKQEAgLTk0NzcsNyArOTQ4Nyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IH07CiAgICAgICAgIAogICAgICAgICBhZGRBcmd1bWVudChqc0NhbGxlZSwgVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIDApOwotICAgICAgICBhZGRBcmd1bWVudChtX291
dC5jb25zdEludDMyKG51bUFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOworICAgICAgICBhZGRBcmd1bWVudChtX291dC5j
b25zdEludDMyKG51bUFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpLCBQYXlsb2FkT2Zmc2V0KTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGxv
d0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChpKSwgMCk7CiAgICAgICAgIApAQCAtOTUwNyw3ICs5NTE3LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQu
c3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
Y2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0
LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgR1BSSW5mbzo6cmVnVDApOwpAQCAtMTIzMjUsNyArMTIzMzUsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1l
bnRDb3VudFJlZ2lzdGVyOwogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAg
ICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRS
ZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYXJndW1lbnRD
b3VudFJlZ2lzdGVyID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXI7CiAg
ICAgICAgICAgICBsZW5ndGgudmFsdWUgPSBtX291dC5zdWIobV9vdXQubG9hZDMyKHBheWxvYWRG
b3IoYXJndW1lbnRDb3VudFJlZ2lzdGVyKSksIG1fb3V0LmludDMyT25lKTsKQEAgLTE3NjExLDcg
KzE3NjIxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4ID0gbV9mdGxTdGF0ZS5qaXRDb2RlLT5jb21tb24uYWRkQ29kZU9yaWdpbihj
b2RlT3JpZ2luKTsKICAgICAgICAgbV9vdXQuc3RvcmUzMigKICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50MzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogI2lmICFVU0UoQlVJTFRJTl9GUkFN
RV9BRERSRVNTKSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1f
Y2FsbEZyYW1lLCBtX291dC5hYnNvbHV0ZSgmdm0oKS50b3BDYWxsRnJhbWUpKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKaW5kZXggNjkzNGMz
ZjBkMzc5MWY2NGJhNDI5NjNlMDU1NjNkYmJjN2RkYTVhNC4uZmUyYTRlYzcyNmNlY2VkMzQxMzA5
Mzk5NDk0ZWE5ZWI3ZTZiNGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRp
b24oCiAgICAgaWYgKGNhbGxTaXRlSW5kZXgpIHsKICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSks
Ci0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIH0KICAgICByZXR1cm4gY2FsbE9w
ZXJhdGlvbih2bSwgdXNlZFJlZ2lzdGVycywgaml0LCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9u
LCByZXN1bHRHUFIsIGFyZ3VtZW50cy4uLik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCmluZGV4IGY2Mzk0YWM3MTA3MTI1YjdjYWIyMWFk
MmI5MTEzYzA3OTUzNmE2MDAuLjFhNGRlM2Y5MzYyOTBlNjJmNjM4OWVmNWZmYTA3Zjg5NzM2Y2U1
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
Y3BwCkBAIC05MCwxMiArOTAsMTIgQEAgYm9vbCBDYWxsRnJhbWU6OmNhbGxTaXRlQml0c0FyZUNv
ZGVPcmlnaW5JbmRleCgpIGNvbnN0CiAKIHVuc2lnbmVkIENhbGxGcmFtZTo6Y2FsbFNpdGVBc1Jh
d0JpdHMoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRdLnRhZygpOworICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzXS50YWcoKTsKIH0KIAogU1VQUFJFU1NfQVNBTiB1bnNpZ25lZCBDYWxs
RnJhbWU6OnVuc2FmZUNhbGxTaXRlQXNSYXdCaXRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhp
c1tDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50XS51bnNhZmVUYWcoKTsKKyAgICByZXR1cm4g
dGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc10udW5zYWZlVGFn
KCk7CiB9CiAKIENhbGxTaXRlSW5kZXggQ2FsbEZyYW1lOjpjYWxsU2l0ZUluZGV4KCkgY29uc3QK
QEAgLTExNyw3ICsxMTcsNyBAQCBjb25zdCBJbnN0cnVjdGlvbiogQ2FsbEZyYW1lOjpjdXJyZW50
VlBDKCkgY29uc3QKIHZvaWQgQ2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKGNvbnN0IEluc3RydWN0
aW9uKiB2cGMpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZShCeXRlY29kZUluZGV4KGJp
dHdpc2VfY2FzdDx1aW50MzJfdD4odnBjKSkpOwotICAgIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudF0udGFnKCkgPSBjYWxsU2l0ZS5iaXRzKCk7CisgICAgdGhpc1tDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc10udGFnKCkgPSBjYWxsU2l0ZS5iaXRzKCk7
CiB9CiAKIHVuc2lnbmVkIENhbGxGcmFtZTo6Y2FsbFNpdGVCaXRzQXNCeXRlY29kZU9mZnNldCgp
IGNvbnN0CkBAIC0xMzcsNyArMTM3LDcgQEAgY29uc3QgSW5zdHJ1Y3Rpb24qIENhbGxGcmFtZTo6
Y3VycmVudFZQQygpIGNvbnN0CiB2b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQQyhjb25zdCBJ
bnN0cnVjdGlvbiogdnBjKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUoY29kZUJsb2Nr
KCktPmJ5dGVjb2RlSW5kZXgodnBjKSk7Ci0gICAgdGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50XS50YWcoKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGNhbGxTaXRlLmJpdHMoKSk7Cisg
ICAgdGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc10udGFnKCkg
PSBzdGF0aWNfY2FzdDxpbnQzMl90PihjYWxsU2l0ZS5iaXRzKCkpOwogfQogCiB1bnNpZ25lZCBD
YWxsRnJhbWU6OmNhbGxTaXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IGNmYjc3MTg1NjAz
OTkzMzkxMDA0ZmMxMzIxMTgzODQyM2M1ZGM2YTkuLjhhYmRkYjgxMDZiNDFiMWFlMDNkNzU3NmE4
MDFkN2JmOTFmMjE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmgKQEAgLTg2LDggKzg2LDggQEAgbmFtZXNwYWNlIEpTQyAgewogICAgIHN0cnVj
dCBDYWxsRnJhbWVTbG90IHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgY29kZUJsb2Nr
ID0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzOwogICAgICAgICBzdGF0aWMgY29u
c3RleHByIGludCBjYWxsZWUgPSBjb2RlQmxvY2sgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBhcmd1bWVudENvdW50ID0gY2FsbGVlICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgdGhpc0FyZ3VtZW50ID0gYXJndW1lbnRDb3VudCArIDE7CisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbGVlICsgMTsK
KyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgdGhpc0FyZ3VtZW50ID0gYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyAxOwogICAgICAgICBzdGF0aWMgY29uc3RleHByIGludCBmaXJzdEFy
Z3VtZW50ID0gdGhpc0FyZ3VtZW50ICsgMTsKICAgICB9OwogCkBAIC05NSw3ICs5NSw3IEBAIG5h
bWVzcGFjZSBKU0MgIHsKICAgICAvLyBQYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1v
c3QgZnVuY3Rpb25zLgogICAgIGNsYXNzIENhbGxGcmFtZSA6IHByaXZhdGUgUmVnaXN0ZXIgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgaGVhZGVyU2l6ZUluUmVn
aXN0ZXJzID0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCArIDE7CisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IGhlYWRlclNpemVJblJlZ2lzdGVycyA9IENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgMTsKIAogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9u
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiB2ZXJ5IHNwZWNpZmljIGNpcmN1bXN0YW5jZXMKICAg
ICAgICAgLy8gd2hlbiB5b3UndmUgZ3VhcmFudGVlZCB0aGUgY2FsbGVlIGNhbid0IGJlIGEgV2Fz
bSBjYWxsZWUsIGFuZCBjYW4KQEAgLTE5MCw3ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAK
ICAgICAgICAgLy8gQWNjZXNzIHRvIGFyZ3VtZW50cyBhcyBwYXNzZWQuIChBZnRlciBjYXB0dXJl
LCBhcmd1bWVudHMgbWF5IG1vdmUgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24uKQogICAgICAgICBz
aXplX3QgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCkgLSAxOyB9Ci0gICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudF0ucGF5
bG9hZCgpOyB9CisgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIGNv
bnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXNdLnBheWxvYWQoKTsgfQogICAgICAgICBzdGF0aWMgaW50IGFyZ3VtZW50T2Zmc2V0KGludCBh
cmd1bWVudCkgeyByZXR1cm4gKENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJndW1lbnQgKyBhcmd1bWVu
dCk7IH0KICAgICAgICAgc3RhdGljIGludCBhcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoaW50
IGFyZ3VtZW50KSB7IHJldHVybiAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJndW1l
bnQpOyB9CiAKQEAgLTI1MSw3ICsyNTEsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIGJv
b2wgaXNTdGFja092ZXJmbG93RnJhbWUoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1dhc21GcmFt
ZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
aW50IGNvdW50KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudF0ucGF5bG9hZCgpID0gY291bnQ7IH0KKyAgICAgICAgdm9pZCBzZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIq
Pih0aGlzKVtDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc10ucGF5bG9h
ZCgpID0gY291bnQ7IH0KICAgICAgICAgaW5saW5lIHZvaWQgc2V0Q2FsbGVlKEpTT2JqZWN0Kik7
CiAgICAgICAgIGlubGluZSB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqKTsKICAgICAgICAg
dm9pZCBzZXRSZXR1cm5QQyh2b2lkKiB2YWx1ZSkgeyBjYWxsZXJGcmFtZUFuZFBDKCkucmV0dXJu
UEMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4odmFsdWUpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggYzhkZjIw
MGI5ODFmZjgyNmE1MmVmMDY3MGVjN2RlZWRjYmZmNjk2ZS4uOWVlOTE2MzI4ZDliOGNhM2U5MTQ3
YTI0NmQ1YjAzNDIyMzk0MWEzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpqaXRBc3NlcnRJc051bGwoR1BSUmVnIGdwcikKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6Ompp
dEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKCkKIHsKLSAgICBKdW1wIG9rID0gYnJhbmNoMzIoQmVs
b3csIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFRydXN0ZWRJbW0z
MigxMDAwMDAwMCkpOworICAgIEp1bXAgb2sgPSBicmFuY2gzMihCZWxvdywgcGF5bG9hZEZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIFRydXN0ZWRJbW0zMigx
MDAwMDAwMCkpOwogICAgIGFib3J0V2l0aFJlYXNvbihBSEluc2FuZUFyZ3VtZW50Q291bnQpOwog
ICAgIG9rLmxpbmsodGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAppbmRleCAyMjAwOWM1ZmQyYmEyMjdkNDdjZmU4NTQ5MzlmNTJkZWYyZDcxYmMy
Li4zNGQ5MGM4YTFhY2Q4ZWFjMmZmYjZlMGU2YmY5ZGFhMjhkZTUxZTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE1MjcsNyArMTUyNyw3IEBA
IGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgewog
ICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1
cm4gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOworICAgICAg
ICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRSZWdpc3RlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCmluZGV4IDAxNWYwM2I3NWI2N2M5Zjc1N2NiZTc0MDRkNGUxYTU2OTM0YTI4MWIuLjEx
ZmUzN2E3YTgyMWIxNzVmZWY5YmIyZDBjZmU4N2U1MTI5NDc1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtNzI0LDcgKzcyNCw3IEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgR1BSUmVnIG9s
ZEZyYW1lU2l6ZUdQUiA9IHRlbXAyOwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEdQ
UlJlZyBhcmdDb3VudEdQUiA9IG9sZEZyYW1lU2l6ZUdQUjsKLSAgICAgICAgICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0
KSwgYXJnQ291bnRHUFIpOworICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKGZyYW1lUG9p
bnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgYXJn
Q291bnRHUFIpOwogCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBHUFJS
ZWcgbnVtUGFyYW1ldGVyc0dQUiA9IHRlbXAxOwpAQCAtNzUzLDcgKzc1Myw3IEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgLy8gVGhl
IG5ldyBmcmFtZSBzaXplIGlzIGp1c3QgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGx1cyB0aGUK
ICAgICAgICAgICAgIC8vIGZyYW1lIGhlYWRlciBzaXplLCBhbGlnbmVkCiAgICAgICAgICAgICBB
U1NFUlQobmV3RnJhbWVTaXplR1BSICE9IG5ld0ZyYW1lUG9pbnRlcik7Ci0gICAgICAgICAgICBs
b2FkMzIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zm
c2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwKKyAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2Fk
T2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwKICAgICAgICAgICAgICAgICBuZXdG
cmFtZVNpemVHUFIpOwogICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25t
ZW50UmVnaXN0ZXJzKCkgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIDEpLCBu
ZXdGcmFtZVNpemVHUFIpOwogICAgICAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKC1zdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpKSwgbmV3RnJhbWVTaXplR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKaW5kZXggOTY5MGUwOWM4YjU3Mjcw
ZGVmN2Y4N2E0NmNjMmI1N2U0Zjc2MjAzZS4uYmY0M2Q3YjgzYjlhOTkwOWU4NTIyNTljMzA4YjA4
ODM2ZDc5ZjczNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJh
bWVTaHVmZmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIG91dC5wcmlu
dGYoIiAlYyU4cyA8LSAlMThzICVjICIsIGQsIHN0ci5kYXRhKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZWNvdmVyeVN0ci5kYXRhKCksIGQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAobmV3UmVnID09IFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQgfSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3UmVnID09IFZp
cnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
IH0pCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiICVjJThzIDwtICUxOHp1ICVjICIsIGQs
IHN0ci5kYXRhKCksIGFyZ0NvdW50KCksIGQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIG91dC5wcmludGYoIiAlYyUzMHMgJWMgIiwgZCwgIiIsIGQpOwpAQCAtNDE4LDcgKzQx
OCw3IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JUYWlsQ2FsbCgpCiAgICAg
Ly8gb2xkIGZyYW1lICh0YWtpbmcgaW50byBhY2NvdW50IGFuIGFyZ3VtZW50IGNvdW50IGhpZ2hl
ciB0aGFuCiAgICAgLy8gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzKSwgdGhlbiBzdWJzdHJhY3Rp
bmcgdG8gaXQgdGhlIGFsaWduZWQKICAgICAvLyBuZXcgZnJhbWUgc2l6ZSAoYWRqdXN0ZWQpLgot
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgbV9uZXdGcmFtZUJhc2UpOwor
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCksIG1fbmV3
RnJhbWVCYXNlKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhcmd1bWVudENvdW50T0sgPQog
ICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBtX25l
d0ZyYW1lQmFzZSwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobV9q
aXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSkpOwpAQCAtNzM4LDEyICs3MzgsMTIgQEAg
dm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgLy8gV2UgbmVlZCB0byBo
YW5kbGUgNCkgZmlyc3QgYmVjYXVzZSBpdCBpbXBsaWVzIHJlbGVhc2luZwogICAgIC8vIG1fbmV3
RnJhbWVCYXNlLCB3aGljaCBjb3VsZCBiZSBhIHdhbnRlZCByZWdpc3Rlci4KICAgICBpZiAodmVy
Ym9zZSkKLSAgICAgICAgZGF0YUxvZygiICAgKiBTdG9yaW5nIHRoZSBhcmd1bWVudCBjb3VudCBp
bnRvICIsIFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSwg
IlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICogU3RvcmluZyB0aGUgYXJndW1lbnQgY291bnQg
aW50byAiLCBWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyB9LCAiXG4iKTsKICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoMCksCi0gICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFRhZ09mZnNldCkpOwor
ICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIH0pLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQobV9udW1QYXNzZWRBcmdzICE9IFVJTlRfTUFYKTsKICAgICBtX2ppdC5z
dG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobV9udW1QYXNzZWRBcmdzKSwKLSAg
ICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50IH0pLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOworICAgICAgICBhZGRyZXNz
Rm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIH0pLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOwogCiAgICAgaWYgKCFpc1Ns
b3dQYXRoKCkpIHsKICAgICAgICAgQVNTRVJUKG1fbmV3RnJhbWVCYXNlICE9IE1hY3JvQXNzZW1i
bGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggMTdjMGVkYWE4MmI5Zjk0ZjU3NDEzMTEwNjFhNjUxMjk0YTUxNmY4NS4uZWZhNzhiY2Q3OThh
NDhiNWQyMGU3YzE0NTgxNDQ4NTFlZmY5MGQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtMzA3LDYgKzMwNyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMpCiAgICAgICAg
IERFRklORV9TTE9XX09QKGNyZWF0ZV9zY29wZWRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVf
U0xPV19PUChjcmVhdGVfY2xvbmVkX2FyZ3VtZW50cykKKyAgICAgICAgREVGSU5FX1NMT1dfT1Ao
Y3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0
ZV9yZXN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAg
REVGSU5FX1NMT1dfT1AobmV3X3Byb21pc2UpCkBAIC03NTUsNyArNzU2LDcgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAg
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhl
YWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKIAotICAgICAgICBs
b2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgcmVnVDEpOwor
ICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyksIHJlZ1QxKTsKICAgICAgICAgYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpKS5saW5rVG8oYmVn
aW5MYWJlbCwgdGhpcyk7CiAKICAgICAgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRl
eCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGJmMjMwNmJjZTRk
NTZmMTA5YTAzNjE4YjM0MDcyZmM1N2MwZTVhYzMuLmMzZjhhYTBjN2ZhZjRlYWQ0MzQ2N2Q1NDI3
MjZhZThhYzkyNTg3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAt
NzQsNyArNzQsNyBAQCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwg
Q2FsbExpbmtJbmZvKikKICAgICB9CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVy
T2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNh
bGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgc3RvcmUzMihUcnVz
dGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBzdG9y
ZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpKTsKIH0KIAogCkBAIC0xMTAsNyArMTEwLDcgQEAgSklUOjpjb21waWxlU2V0dXBG
cmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5mbyogaW5mbykKICAgICBtb3ZlKHJl
dHVyblZhbHVlR1BSLCByZWdUMSk7CiAKICAgICAvLyBQcm9maWxlIHRoZSBhcmd1bWVudCBjb3Vu
dC4KLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwg
cmVnVDIpOworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwogICAgIGxvYWQzMihpbmZvLT5hZGRyZXNzT2ZNYXhB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCByZWdUMCk7CiAgICAgSnVtcCBub3RCaWdnZXN0
ID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1QwLCByZWdUMik7CiAgICAgc3RvcmUzMihyZWdUMiwgaW5m
by0+YWRkcmVzc09mTWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7CkBAIC0yMjgsNyAr
MjI4LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAgICAvLyBTUCBob2xkcyBuZXdDYWxs
RnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyksIHdpdGggQXJndW1lbnRDb3VudCBpbml0
aWFsaXplZC4KICAgICBhdXRvIGJ5dGVjb2RlSW5kZXggPSBtX2NvZGVCbG9jay0+Ynl0ZWNvZGVJ
bmRleChpbnN0cnVjdGlvbik7CiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJ
bmRleChieXRlY29kZUluZGV4KS5iaXRzKCk7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9j
YXRpb25CaXRzKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZz
ZXQpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNh
bGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQpKTsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRz
IGNhbGxlZS4KICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggN2Y2YzkxMDg5MDc5OGVmNjExYjg3ZWI0NDFkZjA1
NWQ0YjEzYjBkMS4uZDZkYmUwOTA4ZTRlOGFkYWVhZTYyNGQ2MDU0Yjk4YTdjYzE1MTI4NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMTY1LDcgKzE2
NSw3IEBAIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlu
a0luZm8qKQogICAgIH0KIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQg
KiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2FsbEZyYW1l
UmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
MihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KQEAgLTIwMSw3ICsyMDEsNyBAQCBKSVQ6
OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKiBpbmZv
KQogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QxKTsKIAogICAgIC8vIFByb2ZpbGUgdGhl
IGFyZ3VtZW50IGNvdW50LgotICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBh
eWxvYWRPZmZzZXQpLCByZWdUMik7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDEsIENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCByZWdUMik7CiAgICAgbG9hZDMyKGluZm8t
PmFkZHJlc3NPZk1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCksIHJlZ1QwKTsKICAgICBK
dW1wIG5vdEJpZ2dlc3QgPSBicmFuY2gzMihBYm92ZSwgcmVnVDAsIHJlZ1QyKTsKICAgICBzdG9y
ZTMyKHJlZ1QyLCBpbmZvLT5hZGRyZXNzT2ZNYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
KTsKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgIC8vIFNQ
IGhvbGRzIG5ld0NhbGxGcmFtZSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSwgd2l0aCBBcmd1
bWVudENvdW50IGluaXRpYWxpemVkLgogICAgIAogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGluc3Ry
dWN0aW9uKSkpLmJpdHMoKTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMp
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpOwogICAgIGVtaXRMb2FkKGNhbGxlZSwgcmVnVDEsIHJlZ1QwKTsg
Ly8gcmVnVDEsIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJl
c3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4
IDIyMTQ5YzliZDFiOGVjMTE4MTJjYmUwYjg1NDFiZWU5M2IxMGFiMzQuLmZjZThiYjc0NzY2Mzc4
Mzc5OGM5OTc1NmU4ZGY3Zjg5ZTA5YmI4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCkBAIC0xMDksNyArMTA5LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6dXBk
YXRlVG9wQ2FsbEZyYW1lKCkKICNlbHNlCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLmJpdHMoKTsKICNlbmRpZgotICAgIHN0b3JlMzIo
VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgdGFnRm9y
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgCiAgICAg
Ly8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoYXQgdGhpcyBpcyBuZWVkZWQuIEpJVE9wZXJhdGlv
bnMgdGVuZCB0byB1cGRhdGUgdGhlIHRvcCBjYWxsIGZyYW1lIG9uCiAgICAgLy8gdGhlIEMrKyBz
aWRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggN2NmYTA5
NWYwMGQxN2UxNDExYmU5Y2ZiODBmODA4MDZmNzg4ZjZjMS4uOGUzOTFjNTY5ZTZlMWM1NzE1MDY0
MDYwNGJiZDExNDQ1YTczNTE1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCkBAIC0xNTQ2LDcgKzE1NDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hcmd1bWVudF9j
b3VudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQXJndW1lbnRDb3VudD4oKTsKICAg
ICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAgbG9hZDMyKHBheWxvYWRG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlZ1QwKTsKKyAgICBsb2FkMzIocGF5
bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIHJlZ1Qw
KTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHQgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJlZ3MocmVnVDAsIHJlZ1QxKTsK
ICAgICBib3hJbnQzMihyZWdUMCwgcmVzdWx0KTsKQEAgLTE1NTgsNyArMTU1OCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0UmVzdExlbmd0aD4oKTsKICAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7
CiAgICAgdW5zaWduZWQgbnVtUGFyYW1zVG9Ta2lwID0gYnl0ZWNvZGUubV9udW1QYXJhbWV0ZXJz
VG9Ta2lwOwotICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpLCByZWdUMCk7CisgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMCk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEp
LCByZWdUMCk7CiAgICAgSnVtcCB6ZXJvTGVuZ3RoID0gYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFs
LCByZWdUMCwgSW1tMzIobnVtUGFyYW1zVG9Ta2lwKSk7CiAgICAgc3ViMzIoSW1tMzIobnVtUGFy
YW1zVG9Ta2lwKSwgcmVnVDApOwpAQCAtMTU5NCw3ICsxNTk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyhyZWdUMSwgcmVnVDApOwogI2VuZGlmCiAKLSAgICBs
b2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgcmVnVDIpOwor
ICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSwgcmVnVDIpOwogICAgIEp1bXAgYXJndW1lbnRPdXRPZkJvdW5kcyA9IGJyYW5jaDMy
KExlc3NUaGFuT3JFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleCkpOwogICAgIGxvYWRW
YWx1ZShhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGluZGV4KSwgcmVz
dWx0UmVncyk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAppbmRleCAzODg3MzA1MmQxMjg1MmZjNmJi
OTE0MmQ0NTYwN2FlOGUxOWE2NzBhLi4wOTUyNTkxZWU5ZjdkNWQ0ZmMyMTcwYzcxNjkzY2ViNjY5
Nzc0YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJn
c0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0Zy
YW1lLmNwcApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJh
bWVGYXN0Q2FzZShWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgbnVtVQogICAgIGpp
dC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
CiAgICAgLy8gSW5pdGlhbGl6ZSBBcmd1bWVudENvdW50LgotICAgIGppdC5zdG9yZTMyKHNjcmF0
Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUjIsIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCkpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaEdQUjIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZz
ZXQpKTsKIAogICAgIC8vIENvcHkgYXJndW1lbnRzLgogICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0
cihzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjEpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgZW1p
dFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BS
UmVnIG51bVVzZWRTbG90CiAgICAgICAgICAgICBmaXJzdEFyZ3VtZW50UmVnID0gVmlydHVhbFJl
Z2lzdGVyKDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFyZ3VtZW50Q291bnRSZWNvdmVyeSA9
IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKLSAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgRGF0YUZvcm1hdEludDMyKTsK
KyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyksIERhdGFGb3JtYXRJbnQzMik7CiAgICAgICAgIGZpcnN0QXJndW1lbnRS
ZWcgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKSk7CiAgICAg
fQogICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKHZtLCBqaXQsIG51bVVzZWRTbG90
c0dQUiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgYXJndW1lbnRDb3Vu
dFJlY292ZXJ5LCBmaXJzdEFyZ3VtZW50UmVnLCBmaXJzdFZhckFyZ09mZnNldCwgc2xvd0Nhc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5r
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApp
bmRleCA0ZjU2N2QwNmFlYTU0NGFiMjY3MTU1YzEzZGYzNmE3MjQ5YjZjMzQzLi5hMTE2MjJlZWJk
YmU0Nzg1ZWYwNmFkYzM5MzQ3MWY1YzIxZjcyNDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgICAg
ICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwogICAgICAgICAgICAgLy8g
Q2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAg
ICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291
bnQgKyAxKSkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1
YWwsIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
LCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGV4cGxpY2l0IFNwZWNpYWxpemVkVGh1bmtKSVQoVk0mIHZtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDUyNDFlNWY3
Y2MzMzJhNjRlMGRlNmRiNDRiZGFmOWU4ZTgwZjIyYWEuLjE0NDBjNjBiZDRhMjVkNTFhNzBjZjli
Y2M1NjYzNjU0N2NiYzFmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGFyaXR5Rml4dXBHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5zdG9y
ZVB0cihHUFJJbmZvOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOwogI2VuZGlmCiAg
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDMpOwotICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OmFkZHJlc3NGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQ
UjIpOworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OmFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1l
bnRHUFIyKTsKICAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMihDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQ
UjIpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgZXh0cmEgc2xvdHMgd2UgY2Fu
IHVzZQpAQCAtNDYyLDcgKzQ2Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gYXJpdHlGaXh1cEdlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LnJldCgpOwogI2Vsc2Ug
Ly8gVVNFKEpTVkFMVUU2NCkgc2VjdGlvbiBhYm92ZSwgVVNFKEpTVkFMVUUzMl82NCkgc2VjdGlv
biBiZWxvdy4KICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7Ci0gICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgSlNJbnRlcmZhY2VKSVQ6
OmFyZ3VtZW50R1BSMik7CisgICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6YWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIEpTSW50ZXJmYWNl
SklUOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3Rl
ZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSwgSlNJbnRlcmZhY2VKSVQ6
OmFyZ3VtZW50R1BSMik7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBleHRyYSBz
bG90cyB3ZSBjYW4gdXNlCkBAIC0xMTI5LDcgKzExMjksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKICNlbmRpZgog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBD
Q2FsbEhlbHBlcnMgaml0OwogICAgIApAQCAtMTEzNyw3ICsxMTM3LDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5l
cmF0b3IoVk0mIHYKICAgICAKICAgICAvLyBTZXQgdXAgb3VyIGNhbGwgZnJhbWUuCiAgICAgaml0
LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxw
ZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOwotICAgIGppdC5zdG9y
ZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKICAgICB1bnNpZ25lZCBleHRyYVN0YWNr
TmVlZGVkID0gMDsKICAgICBpZiAodW5zaWduZWQgc3RhY2tNaXNhbGlnbm1lbnQgPSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykgJSBzdGFja0FsaWdubWVudEJ5dGVzKCkpCkBAIC0xMTU4LDcgKzEx
NTgsMTUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHYKICAgICAvLwogICAgIC8vIFRoYXQncyBy
ZWFsbHkgYWxsIHRoZXJlIGlzIHRvIHRoaXMuIFdlIGhhdmUgYWxsIHRoZSByZWdpc3RlcnMgd2Ug
bmVlZCB0byBkbyBpdC4KICAgICAKLSAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6cGF5bG9h
ZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgR1BSSW5mbzo6cmVnVDEpOworICAg
IGppdC5sb2FkQ2VsbChDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlKSwgR1BSSW5mbzo6cmVnVDApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkJvdW5kQXJncygp
KSwgR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpwYXlsb2Fk
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgR1BSSW5mbzo6
cmVnVDEpOworICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMyk7Cisg
ICAgYXV0byBub0FyZ3MgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQ
UkluZm86OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMiwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkp
LCBHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LmFkZDMyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZv
OjpyZWdUMSk7CisgICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBH
UFJJbmZvOjpyZWdUMSk7CisgICAgbm9BcmdzLmxpbmsoJmppdCk7CiAgICAgaml0LmFkZDMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
IC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzKSwgR1BSSW5mbzo6cmVnVDEsIEdQ
UkluZm86OnJlZ1QyKTsKICAgICBqaXQubHNoaWZ0MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMyksIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQuYWRkMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRlcygpIC0gMSksIEdQUkluZm86OnJlZ1QyKTsKQEAg
LTExNjcsMTcgKzExNzUsMTYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHYKICAgICBpZiAoZXh0
cmFTdGFja05lZWRlZCkKICAgICAgICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGV4dHJhU3RhY2tOZWVkZWQpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgCi0gICAgLy8gQXQg
dGhpcyBwb2ludCByZWdUMSBoYXMgdGhlIGFjdHVhbCBhcmd1bWVudCBjb3VudCBhbmQgcmVnVDIg
aGFzIHRoZSBhbW91bnQgb2Ygc3RhY2sgd2Ugd2lsbCBuZWVkLgorICAgIC8vIEF0IHRoaXMgcG9p
bnQgcmVnVDEgaGFzIHRoZSBhY3R1YWwgYXJndW1lbnQgY291bnQsIHJlZ1QyIGhhcyB0aGUgYW1v
dW50IG9mIHN0YWNrIHdlIHdpbGwgbmVlZCwgYW5kIHJlZ1QzIGhhcyB0aGUgcGFzc2VkIGFyZ3Vt
ZW50IGNvdW50LgogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGVub3VnaCBzdGFjayBz
cGFjZS4KICAgICAKICAgICBqaXQubmVnUHRyKEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQuYWRk
UHRyKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QyKTsK
LSAgICBqaXQubG9hZENlbGwoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaGF2ZVN0
YWNrU3BhY2UgPSBqaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6QmVsb3dPckVxdWFsLCBDQ2Fs
bEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyh2bS5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwg
R1BSSW5mbzo6cmVnVDIpOwogCiAgICAgLy8gVGhyb3cgU3RhY2sgT3ZlcmZsb3cgZXhjZXB0aW9u
CiAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZt
LnRvcEVudHJ5RnJhbWUpOwotICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMywgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
R1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
R1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayk+KEdQUkluZm86OnJlZ1QzKTsKICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuaykpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKQEAgLTExOTAsMzEgKzExOTcsNDQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHYKIAogICAg
IC8vIERvIGJhc2ljIGNhbGxlZSBmcmFtZSBzZXR1cCwgaW5jbHVkaW5nICd0aGlzJy4KICAgICAK
LSAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFt
ZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICBqaXQuc3Rv
cmUzMihHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgCi0gICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gSlNWYWx1ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdz
KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgaml0LmxvYWRWYWx1ZShDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0
T2ZCb3VuZFRoaXMoKSksIHZhbHVlUmVncyk7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0g
SlNWYWx1ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1Q0LCBHUFJJbmZv
OjpyZWdUMik7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6cmVnVDAsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZCb3VuZFRoaXMoKSksIHZhbHVlUmVn
cyk7CiAgICAgaml0LnN0b3JlVmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFy
Z3VtZW50U2xvdCgwKSk7CiAKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigp
KSwgR1BSSW5mbzo6cmVnVDMpOwotICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmVnVDMsIEND
YWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwotICAg
IAogICAgIC8vIE9LLCBub3cgd2UgY2FuIHN0YXJ0IGNvcHlpbmcuIFRoaXMgaXMgYSBzaW1wbGUg
bWF0dGVyIG9mIGNvcHlpbmcgcGFyYW1ldGVycyBmcm9tIHRoZSBjYWxsZXIncwotICAgIC8vIGZy
YW1lIHRvIHRoZSBjYWxsZWUncyBmcmFtZS4gTm90ZSB0aGF0IHdlIGtub3cgdGhhdCByZWdUMSAo
dGhlIGFyZ3VtZW50IGNvdW50KSBtdXN0IGJlIGF0CisgICAgLy8gZnJhbWUgdG8gdGhlIGNhbGxl
ZSdzIGZyYW1lLiBOb3RlIHRoYXQgd2Uga25vdyB0aGF0IHJlZ1QzICh0aGUgYXJndW1lbnQgY291
bnQpIG11c3QgYmUgYXQKICAgICAvLyBsZWFzdCAxLgorICAgIGppdC5zdWIzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5zdWIzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIENDYWxsSGVs
cGVyczo6SnVtcCBkb25lID0gaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQ
UkluZm86OnJlZ1QxKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5icmFuY2hU
ZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgCiAgICAgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCBsb29wID0gaml0LmxhYmVsKCk7CisgICAgaml0LnN1YjMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgaml0LnN1YjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0
LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoMSkpLmluZGV4ZWRCeShHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0Vp
Z2h0KSwgdmFsdWVSZWdzKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6YWRkcmVz
c0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxKSkuaW5kZXhlZEJ5KEdQUkluZm86OnJl
Z1QzLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQpLCB2YWx1ZVJlZ3MpOwogICAgIGppdC5zdG9y
ZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoMSkuaW5k
ZXhlZEJ5KEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQpKTsKLSAgICBq
aXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDEpLmxp
bmtUbyhsb29wLCAmaml0KTsKKyAgICBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9u
WmVybywgR1BSSW5mbzo6cmVnVDMpLmxpbmtUbyhsb29wLCAmaml0KTsKICAgICAKICAgICBkb25l
LmxpbmsoJmppdCk7CisgICAgYXV0byBub0FyZ3MyID0gaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhl
bHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QxKTsKKworICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkJv
dW5kQXJncygpKSwgR1BSSW5mbzo6cmVnVDMpOworCisgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBs
b29wQm91bmQgPSBqaXQubGFiZWwoKTsKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVs
cGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxw
ZXJzOjpUaW1lc0VpZ2h0LCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkgKyBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHZhbHVlUmVncyk7CisgICAgaml0LnN0b3Jl
VmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdCgxKS5pbmRl
eGVkQnkoR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCkpOworICAgIGpp
dC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMSkubGlu
a1RvKGxvb3BCb3VuZCwgJmppdCk7CisKKyAgICBub0FyZ3MyLmxpbmsoJmppdCk7CisKKyAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTQm91bmRG
dW5jdGlvbjo6b2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigpKSwgR1BSSW5mbzo6cmVnVDIpOworICAg
IGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVT
bG90KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwogICAgIAogICAgIGppdC5sb2FkUHRyKAotICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDMsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZSgpKSwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86OnJlZ1QyLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCiAgICAgICAgIEdQ
UkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKaW5k
ZXggZjg2MWVlODg0OWJjMWRlZTFjMzU2ZmFkZjA0MWQzNTQ2NWExNzNiYi4uN2IxMDgzYmY3MTIw
NmRhYjZjNjY3NzRmZjMxYjUwMWFkNDcxNmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5oCkBAIC02OCw2ICs2OCw2IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gaW11bFRodW5rR2VuZXJhdG9yKFZNJik7CiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNJik7CiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRydW5jVGh1bmtHZW5lcmF0b3Io
Vk0mKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAxY2UyN2M1MjJmYzRmNWJj
NjFiMDViZmYxMDM0YmZjNGM5MDZhM2VkLi4yMDdmNjZhZTM4Yzg5MWZkNjI0YjgxYTgwMzc5YjAx
YmVkMGEzNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1
ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNp
bmNsdWRlICJKU1NvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUg
IkpTVHlwZWRBcnJheXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKaW5kZXggMmZkZTEwN2E5ODZjZTVjNWZiMzM4MmM2MWI5YTA4MGI2NTI5YTdlYS4uZjUwYTE3
YjlhZjZhN2I4YTU5ZmJkNjI2YzI3MjQzMWViYWI5YWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTExMiw4ICsxMTIsOCBAQCB2b2lkIERhdGE6OnBl
cmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoQ2FsbEZyYW1lOjpyZXR1cm5QQ09m
ZnNldCgpID09IENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSArIE1hY2hpbmVSZWdpc3Rl
clNpemUpOwogICAgIEFTU0VSVChDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzaXplb2YoUmVn
aXN0ZXIpID09IENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSArIE1hY2hpbmVSZWdpc3RlclNp
emUpOwogICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc2l6ZW9mKFJl
Z2lzdGVyKSA9PSBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzaXplb2YoUmVnaXN0ZXIpICsg
U2xvdFNpemUpOwotICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc2l6ZW9mKFJl
Z2lzdGVyKSArIFNsb3RTaXplKTsKLSAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZVNsb3Q6OnRo
aXNBcmd1bWVudCAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCAqIHNpemVvZihSZWdpc3RlcikgKyBTbG90U2l6ZSk7CisgICAgU1RBVElDX0FTU0VSVChD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHNpemVvZihSZWdpc3Rl
cikgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSArIFNsb3RTaXpl
KTsKKyAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAqIHNpemVv
ZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KiBzaXplb2YoUmVnaXN0ZXIpICsgU2xvdFNpemUpOwogICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgPT0gQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50
KTsKIAogICAgIEFTU0VSVChDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygw
KSA9PSBDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGUxNzM0ZGNmNjFi
NGNmYzU1MTJmYTI4NTYwMWJjYWIzMGM4OGYyZTQuLmM4YTA3ZjAwZWZjMjQ4NTA0NjA4ZWRhNjk1
YjA4ODI1Y2YyYTZhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE3Nyw4ICsxNzcsOCBAQCBjb25zdCBDYWxsZXJG
cmFtZSA9IDAKIGNvbnN0IFJldHVyblBDID0gQ2FsbGVyRnJhbWUgKyBNYWNoaW5lUmVnaXN0ZXJT
aXplCiBjb25zdCBDb2RlQmxvY2sgPSBSZXR1cm5QQyArIE1hY2hpbmVSZWdpc3RlclNpemUKIGNv
bnN0IENhbGxlZSA9IENvZGVCbG9jayArIFNsb3RTaXplCi1jb25zdCBBcmd1bWVudENvdW50ID0g
Q2FsbGVlICsgU2xvdFNpemUKLWNvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IEFyZ3VtZW50Q291
bnQgKyBTbG90U2l6ZQorY29uc3QgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBDYWxsZWUg
KyBTbG90U2l6ZQorY29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0ID0gQXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgKyBTbG90U2l6ZQogY29uc3QgRmlyc3RBcmd1bWVudE9mZnNldCA9IFRoaXNBcmd1
bWVudE9mZnNldCArIFNsb3RTaXplCiBjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gVGhpc0Fy
Z3VtZW50T2Zmc2V0CiAKQEAgLTUzMCw3ICs1MzAsNyBAQCBjb25zdCBGdW5jdGlvbkNvZGUgPSBj
b25zdGV4cHIgRnVuY3Rpb25Db2RlCiBjb25zdCBNb2R1bGVDb2RlID0gY29uc3RleHByIE1vZHVs
ZUNvZGUKIAogIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJn
dW1lbnQgY291bnQuCi1jb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09m
ZnNldAorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
VGFnT2Zmc2V0CiAKICMgU3RyaW5nIGZsYWdzLgogY29uc3QgaXNSb3BlSW5Qb2ludGVyID0gY29u
c3RleHByIEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIKQEAgLTEwMTUsNyArMTAxNSw3IEBAIGVu
ZAogbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywg
Y2FsbFB0clRhZykKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgpCiAKLSAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0ZW1wMgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0ZW1wMgog
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0ZW1wMQogICAgIGxvYWRpIENvZGVCbG9jazo6bV9u
dW1QYXJhbWV0ZXJzW3RlbXAxXSwgdGVtcDEKICAgICBiaWx0ZXEgdGVtcDEsIHRlbXAyLCAubm9B
cml0eUZpeHVwCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwo
Y2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIG1vdmUgY2ZyLCB0
ZW1wMQogICAgIGFkZHAgdGVtcDIsIHRlbXAxCiAKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsg
QXJndW1lbnRDb3VudFtzcF0sIHRlbXAyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzW3NwXSwgdGVtcDIKICAgICAjIFdlIGFzc3VtZSA8IDJeMjgg
YXJndW1lbnRzCiAgICAgbXVsaSBTbG90U2l6ZSwgdGVtcDIKICAgICBhZGRpIFN0YWNrQWxpZ25t
ZW50IC0gMSArIENhbGxGcmFtZUhlYWRlclNpemUsIHRlbXAyCkBAIC0xMDkxLDcgKzEwOTEsNyBA
QCBtYWNybyBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOYW1lLCBzaXplKQogICAg
IGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcE5hbWUsIHNpemUpCiAKICAgICByZXN0b3JlU3Rh
Y2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0sIFBDCisgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZz
ZXRbY2ZyXSwgUEMKIGVuZAogCiBtYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5k
ZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkKQEAgLTE1ODgsNiArMTU4OCw3IEBAIG1hY3Jv
IHNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKIGVuZAogCiBzbG93UGF0aE9wKGNyZWF0ZV9jbG9uZWRf
YXJndW1lbnRzKQorc2xvd1BhdGhPcChjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKIHNsb3dQ
YXRoT3AoY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMpCiBzbG93UGF0aE9wKGNyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50KQogc2xvd1BhdGhPcChjcmVhdGVfcmVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5k
ZXggMDMwODExZmFjMTI4OGM0NjRmZTI4YTNiY2EwMWI1MjJkNGFjZjQwNi4uZDA2YTRhMmFkZDUw
ZTg3OWNlZWNjZGI5NjhmZWQxYTQwNTVlODY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTkzLDcg
KzkzLDcgQEAgZW5kCiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFp
bWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgogbWFjcm8gZGlzcGF0Y2hBZnRlckNh
bGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKLSAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKICAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2Rz
dCwgdDMpCiAgICAgc3RvcmVpIHIxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkg
cjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KQEAgLTQzMyw3ICs0MzMsNyBAQCBlbmQKIAog
IyBDYWxsIGEgc2xvd1BhdGggZm9yIGNhbGwgb3Bjb2Rlcy4KIG1hY3JvIGNhbGxDYWxsU2xvd1Bh
dGgoc2xvd1BhdGgsIGFjdGlvbikKLSAgICBzdG9yZXAgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBU
YWdPZmZzZXRbY2ZyXQogICAgIG1vdmUgY2ZyLCBhMAogICAgIG1vdmUgUEMsIGExCiAgICAgY0Nh
bGwyKHNsb3dQYXRoKQpAQCAtNDQxLDE5ICs0NDEsMTkgQEAgbWFjcm8gY2FsbENhbGxTbG93UGF0
aChzbG93UGF0aCwgYWN0aW9uKQogZW5kCiAKIG1hY3JvIGNhbGxUcmFwSGFuZGxlcih0aHJvd0hh
bmRsZXIpCi0gICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAg
ICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0K
ICAgICBtb3ZlIGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQogICAgIGNDYWxsMihfbGxpbnRfc2xv
d19wYXRoX2hhbmRsZV90cmFwcykKICAgICBidHBueiByMCwgdGhyb3dIYW5kbGVyCi0gICAgbG9h
ZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGxvYWRpIEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiBlbmQKIAogbWFjcm8gY2hl
Y2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgIGNoZWNrU3dpdGNoVG9KSVQoCiAgICAgICAgIDEs
CiAgICAgICAgIG1hY3JvICgpCi0gICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdCiAgICAgICAgICAgICBtb3ZlIGNmciwgYTAKICAg
ICAgICAgICAgIG1vdmUgUEMsIGExCiAgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3Ny
KQpAQCAtNDYxLDcgKzQ2MSw3IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKICAg
ICAgICAgICAgIG1vdmUgcjEsIHNwCiAgICAgICAgICAgICBqbXAgcjAKICAgICAgICAgLnJlY292
ZXI6Ci0gICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBD
CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNl
dFtjZnJdLCBQQwogICAgICAgICBlbmQpCiBlbmQKIApAQCAtNjM3LDcgKzYzNyw3IEBAIGVuZAog
CiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9n
dWUoKSBsZWF2ZXMgYmVoaW5kLgogbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwg
c2xvd1BhdGgpCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwg
dDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNb
Y2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBk
b25lTGFiZWwKICAgICBtb3ZlIGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQpAQCAtNjU1LDcgKzY1
NSw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQogLm5v
RXJyb3I6CiAgICAgbW92ZSByMSwgdDEgIyByMSBjb250YWlucyBzbG90c1RvQWRkLgogICAgIGJ0
aXogdDEsIC5jb250aW51ZQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50
W2Nmcl0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzW2Nmcl0sIHQyCiAgICAgYWRkaSBDYWxsRnJhbWVIZWFkZXJTbG90cywgdDIKIAogICAg
IC8vIENoZWNrIGlmIHRoZXJlIGFyZSBzb21lIHVuYWxpZ25lZCBzbG90cyB3ZSBjYW4gdXNlCkBA
IC03MzMsNyArNzMzLDcgQEAgX2xsaW50X29wX2VudGVyOgogCiBsbGludE9wV2l0aFByb2ZpbGUo
b3BfZ2V0X2FyZ3VtZW50LCBPcEdldEFyZ3VtZW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgcmV0dXJuKQogICAgIGdldChtX2luZGV4LCB0MikKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIGJpbHRlcSB0MCwgdDIsIC5vcEdl
dEFyZ3VtZW50T3V0T2ZCb3VuZHMKICAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCiAgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDMKQEAgLTc0NSw3ICs3NDUsNyBAQCBlbmQpCiAKIAog
bGxpbnRPcFdpdGhSZXR1cm4ob3BfYXJndW1lbnRfY291bnQsIE9wQXJndW1lbnRDb3VudCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKICAgICByZXR1
cm4oSW50MzJUYWcsIHQwKQogZW5kKQpAQCAtMTkyNSw4ICsxOTI1LDggQEAgbWFjcm8gY29tbW9u
Q2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBw
cm9sb2d1ZSkKICAgICAgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFs
dWUgb2YgY2ZyCiAgICAgICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10K
ICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgdDIpCi0gICAgICAgIHN0
b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCi0gICAgICAgIHN0b3JlaSB0
MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgICAgIHN0b3JlaSBQQywg
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICBzdG9y
ZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KICAg
ICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KICAgICAgICAgbW92
ZSB0Mywgc3AKICAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRy
eVB0clRhZykKQEAgLTI1MzQsNyArMjUzNCw3IEBAIGVuZCkKIAogCiBsbGludE9wV2l0aFJldHVy
bihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIHJldHVybikKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3Vu
dFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKICAgICBnZXR1KHNpemUsIE9wR2V0UmVz
dExlbmd0aCwgbV9udW1QYXJhbWV0ZXJzVG9Ta2lwLCB0MSkKICAgICBiaWx0ZXEgdDAsIHQxLCAu
c3RvcmVaZXJvCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCmluZGV4IDNkZDJlYjQ4Y2JiYTZlZjVjZDk4ODYzOWM3OTExZTIy
YTcxMzMxNDguLjUxOWM2Njk4OWRkZTQ1MjNkNzdlNjAyNDU3YzkwNTY0MWI2OWY0YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCkBAIC05Miw3ICs5Miw3IEBAIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcg
Ynl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KIG1hY3Jv
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCi0gICAgbG9h
ZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGxvYWRpIEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50
ZXJbUEJdLCBQQgogICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0LCB0MSkKQEAgLTIx
Nyw3ICsyMTcsNyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgbW92ZSAoY29uc3Rl
eHByIFByb3RvQ2FsbEZyYW1lOjpudW1iZXJPZlJlZ2lzdGVycyksIHQzCiAKIC5jb3B5SGVhZGVy
TG9vcDoKLSAgICAjIENvcHkgdGhlIENvZGVCbG9jay9DYWxsZWUvQXJndW1lbnRDb3VudC98dGhp
c3wgZnJvbSBwcm90b0NhbGxGcmFtZSBpbnRvIHRoZSBjYWxsZWUgZnJhbWUuCisgICAgIyBDb3B5
IHRoZSBDb2RlQmxvY2svQ2FsbGVlL0FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzL3x0aGlzfCBm
cm9tIHByb3RvQ2FsbEZyYW1lIGludG8gdGhlIGNhbGxlZSBmcmFtZS4KICAgICBzdWJpIDEsIHQz
CiAgICAgbG9hZHEgW3Byb3RvQ2FsbEZyYW1lLCB0MywgOF0sIGV4dHJhVGVtcFJlZwogICAgIHN0
b3JlcSBleHRyYVRlbXBSZWcsIENvZGVCbG9ja1tzcCwgdDMsIDhdCkBAIC0zOTAsNyArMzkwLDcg
QEAgZW5kCiAKICMgQ2FsbCBhIHNsb3cgcGF0aCBmb3IgY2FsbCBvcGNvZGVzLgogbWFjcm8gY2Fs
bENhbGxTbG93UGF0aChzbG93UGF0aCwgYWN0aW9uKQotICAgIHN0b3JlaSBQQywgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyArIFRhZ09mZnNldFtjZnJdCiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQogICAg
IG1vdmUgY2ZyLCBhMAogICAgIG1vdmUgUEMsIGExCkBAIC0zOTksMjAgKzM5OSwyMCBAQCBtYWNy
byBjYWxsQ2FsbFNsb3dQYXRoKHNsb3dQYXRoLCBhY3Rpb24pCiBlbmQKIAogbWFjcm8gY2FsbFRy
YXBIYW5kbGVyKHRocm93SGFuZGxlcikKLSAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBUYWdPZmZzZXRbY2ZyXQogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKICAgICBtb3ZlIGNm
ciwgYTAKICAgICBtb3ZlIFBDLCBhMQogICAgIGNDYWxsMihfbGxpbnRfc2xvd19wYXRoX2hhbmRs
ZV90cmFwcykKICAgICBidHBueiByMCwgdGhyb3dIYW5kbGVyCi0gICAgbG9hZGkgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiBlbmQKIAogbWFjcm8gY2hlY2tTd2l0Y2hUb0pJ
VEZvckxvb3AoKQogICAgIGNoZWNrU3dpdGNoVG9KSVQoCiAgICAgICAgIDEsCiAgICAgICAgIG1h
Y3JvKCkKLSAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
VGFnT2Zmc2V0W2Nmcl0KICAgICAgICAgICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKICAgICAg
ICAgICAgIG1vdmUgY2ZyLCBhMAogICAgICAgICAgICAgbW92ZSBQQywgYTEKQEAgLTQyMSw3ICs0
MjEsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAgICAgICBtb3Zl
IHIxLCBzcAogICAgICAgICAgICAgam1wIHIwLCBKU0VudHJ5UHRyVGFnCiAgICAgICAgIC5yZWNv
dmVyOgotICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQ
QworICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZz
ZXRbY2ZyXSwgUEMKICAgICAgICAgZW5kKQogZW5kCiAKQEAgLTYxOSw3ICs2MTksNyBAQCBlbmQK
IAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xv
Z3VlKCkgbGVhdmVzIGJlaGluZC4KIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWws
IHNsb3dQYXRoKQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0s
IHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
W2Nmcl0sIHQwCiAgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwg
ZG9uZUxhYmVsCiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQogICAgIG1vdmUgY2ZyLCBhMApA
QCAtNjM4LDcgKzYzOCw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNs
b3dQYXRoKQogLm5vRXJyb3I6CiAgICAgbW92ZSByMSwgdDEgIyByMSBjb250YWlucyBzbG90c1Rv
QWRkLgogICAgIGJ0aXogdDEsIC5jb250aW51ZQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBB
cmd1bWVudENvdW50W2Nmcl0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQyCiAgICAgYWRkaSBDYWxsRnJhbWVIZWFkZXJTbG90
cywgdDIKIAogICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBzb21lIHVuYWxpZ25lZCBzbG90cyB3
ZSBjYW4gdXNlCkBAIC03MjMsNyArNzIzLDcgQEAgX2xsaW50X29wX2VudGVyOgogCiBsbGludE9w
V2l0aFByb2ZpbGUob3BfZ2V0X2FyZ3VtZW50LCBPcEdldEFyZ3VtZW50LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX2luZGV4LCB0MikKLSAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIGJpbHRlcSB0
MCwgdDIsIC5vcEdldEFyZ3VtZW50T3V0T2ZCb3VuZHMKICAgICBsb2FkcSBUaGlzQXJndW1lbnRP
ZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCiAgICAgcmV0dXJuKHQwKQpAQCAtNzM0LDcgKzczNCw3IEBA
IGVuZCkKIAogCiBsbGludE9wV2l0aFJldHVybihvcF9hcmd1bWVudF9jb3VudCwgT3BBcmd1bWVu
dENvdW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0
MAogICAgIG9ycSBUYWdOdW1iZXIsIHQwCiAgICAgcmV0dXJuKHQwKQpAQCAtMjA1Nyw4ICsyMDU3
LDggQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1
Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgYWRkcCBjZnIsIHQzCiAgICAgICAg
IHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQogICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwg
bV9hcmdjLCB0MikKLSAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0KLSAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0
M10KKyAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09m
ZnNldFtjZnJdCisgICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBzcAogICAgICAgICBwcmVwYXJl
Q2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNv
ZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQogICAgICAgICBjYWxsVGFy
Z2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0
W3Q1XSwgSlNFbnRyeVB0clRhZykKQEAgLTI2MjQsNyArMjYyNCw3IEBAIGVuZCkKIAogCiBsbGlu
dE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsg
QXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKICAgICBnZXR1KHNp
emUsIE9wR2V0UmVzdExlbmd0aCwgbV9udW1QYXJhbWV0ZXJzVG9Ta2lwLCB0MSkKICAgICBiaWx0
ZXEgdDAsIHQxLCAuc3RvcmVaZXJvCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFz
c2VtYmx5LmFzbQppbmRleCAwOThmYWI4ZTU3MTk5MWFhZjcyM2RkMDc4ZWYyZDZkNWEzNDRiMTA4
Li42NTc2OGZhNmJmYjBmYmMxMTVhOGM3OGE3OWJhOTUzMzc2NTQyNTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTE1MCw3ICsxNTAsNyBAQCBt
YWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVCgKICAg
ICAgICAgMSwKICAgICAgICAgbWFjcm8oKQotICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQogICAgICAgICAgICAgcHJlcGFyZVN0
YXRlRm9yQ0NhbGwoKQogICAgICAgICAgICAgbW92ZSBjZnIsIGEwCiAgICAgICAgICAgICBtb3Zl
IFBDLCBhMQpAQCAtMTYzLDcgKzE2Myw3IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29w
KCkKICAgICAgICAgICAgIG1vdmUgcjAsIGEwCiAgICAgICAgICAgICBqbXAgcjEsIFdhc21FbnRy
eVB0clRhZwogICAgICAgICAucmVjb3ZlcjoKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgICAgIGVuZCkKIGVuZAogCkBA
IC0yMjksNyArMjI5LDcgQEAgbWFjcm8gcmVsb2FkTWVtb3J5UmVnaXN0ZXJzRnJvbUluc3RhbmNl
KGluc3RhbmNlLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiBlbmQKIAogbWFjcm8gdGhyb3dFeGNlcHRp
b24oZXhjZXB0aW9uKQotICAgIHN0b3JlaSBjb25zdGV4cHIgV2FzbTo6RXhjZXB0aW9uVHlwZTo6
JWV4Y2VwdGlvbiUsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0KKyAgICBzdG9y
ZWkgY29uc3RleHByIFdhc206OkV4Y2VwdGlvblR5cGU6OiVleGNlcHRpb24lLCBBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbY2ZyXQogICAgIGptcCBfd2FzbV90aHJv
d19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lCiBlbmQKIApAQCAtMjQzLDcgKzI0Myw3IEBAIG1h
Y3JvIGNhbGxXYXNtU2xvd1BhdGgoc2xvd1BhdGgpCiBlbmQKIAogbWFjcm8gY2FsbFdhc21DYWxs
U2xvd1BhdGgoc2xvd1BhdGgsIGFjdGlvbikKLSAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBUYWdPZmZzZXRbY2ZyXQogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKICAgICBtb3Zl
IGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQpAQCAtNDk0LDggKzQ5NCw4IEBAIG9wKHdhc21fdGhy
b3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSwgbWFjcm8gKCkKICAgICBtb3ZlIGNmciwgYTAK
ICAgICBhZGRwIFBCLCBQQywgYTEKICAgICBtb3ZlIHdhc21JbnN0YW5jZSwgYTIKLSAgICAjIFNs
b3cgcGF0aHMgYW5kIHRoZSB0aHJvd0V4Y2VwdGlvbiBtYWNybyBzdG9yZSB0aGUgZXhjZXB0aW9u
IGNvZGUgaW4gdGhlIEFyZ3VtZW50Q291bnQgc2xvdAotICAgIGxvYWRpIEFyZ3VtZW50Q291bnQg
KyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEzCisgICAgIyBTbG93IHBhdGhzIGFuZCB0aGUgdGhyb3dF
eGNlcHRpb24gbWFjcm8gc3RvcmUgdGhlIGV4Y2VwdGlvbiBjb2RlIGluIHRoZSBBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyBzbG90CisgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEzCiAgICAgY0NhbGw0KF9zbG93X3BhdGhfd2FzbV90
aHJvd19leGNlcHRpb24pCiAKICAgICBqbXAgcjAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKQEAg
LTY3OSw3ICs2NzksNyBAQCBtYWNybyBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgc2xvd1BhdGgs
IHN0b3JlV2FzbUluc3RhbmNlKQogICAgICAgICBtYWNybyAoY2FsbGVlLCB0YXJnZXRXYXNtSW5z
dGFuY2UpCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZSwgd3MwCiAKLSAgICAgICAgICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgICAgIGxvYWRpIEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAKICAgICAgICAg
ICAgICMgdGhlIGNhbGwgbWlnaHQgdGhyb3cgKGUuZy4gaW5kaXJlY3QgY2FsbCB3aXRoIGJhZCBz
aWduYXR1cmUpCiAgICAgICAgICAgICBidHB6IHRhcmdldFdhc21JbnN0YW5jZSwgLnRocm93CkBA
IC03MTgsNyArNzE4LDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIHNsb3dQYXRo
LCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgICAgICMgbmVlZCB0byBwcmVzZXJ2ZSBpdHMg
Y3VycmVudCB2YWx1ZSBzaW5jZSBpdCBtaWdodCBjb250YWluIGEgcmV0dXJuIHZhbHVlCiAgICAg
ICAgICAgICBtb3ZlIFBDLCBtZW1vcnlCYXNlCiAgICAgICAgICAgICBtb3ZlIFBCLCB3YXNtSW5z
dGFuY2UKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwg
UEMKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zm
c2V0W2Nmcl0sIFBDCiAgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICAg
ICAgICAgIGxvYWRwIFdhc206OkZ1bmN0aW9uQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1Bv
aW50ZXJbUEJdLCBQQgogCkBAIC03NDAsNyArNzQwLDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JXYXNt
Q2FsbChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgICAgICAgICBz
dG9yZWQgZnByLCBDYWxsRnJhbWVIZWFkZXJTaXplICsgb2Zmc2V0W3dzMSwgd3MwLCA4XQogICAg
ICAgICAgICAgZW5kKQogCi0gICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zm
c2V0W2Nmcl0sIFBDCisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyArIFRhZ09mZnNldFtjZnJdLCBQQwogCiAgICAgICAgICAgICBzdG9yZVdhc21JbnN0YW5jZSh3
YXNtSW5zdGFuY2UpCiAgICAgICAgICAgICByZWxvYWRNZW1vcnlSZWdpc3RlcnNGcm9tSW5zdGFu
Y2Uod2FzbUluc3RhbmNlLCB3czAsIHdzMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGYzNThkNDhhNTBkZTczZWFiMzg1Njk5
YjNhNmY1MTEzYmJiZTliYmEuLjg3NzE2ZDI3N2EwZWJjMmRiNGUxNTljZjY5ZjliMmUyYjVjYTlm
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtMjIyLDYgKzIyMiwxOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3Jl
YXRlX2Nsb25lZF9hcmd1bWVudHMpCiAgICAgUkVUVVJOKENsb25lZEFyZ3VtZW50czo6Y3JlYXRl
V2l0aE1hY2hpbmVGcmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgQXJndW1lbnRzTW9kZTo6
Q2xvbmVkKSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRz
X2J1dHRlcmZseSkKK3sKKyAgICBCRUdJTigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk+KCk7CisgICAgaW50MzJfdCBhcmd1bWVudENvdW50
ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkq
IGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVhdGUodm0sIHZtLmltbXV0
YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9u
V3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgp
LCBhcmd1bWVudENvdW50KTsKKyAgICBpZiAoIWJ1dHRlcmZseSkKKyAgICAgICAgVEhST1coY3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICBmb3IgKGludDMyX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Q291bnQ7ICsraW5kZXgpCisgICAgICAgIGJ1dHRlcmZs
eS0+c2V0SW5kZXgodm0sIGluZGV4LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGluZGV4
KSk7CisgICAgUkVUVVJOKGJ1dHRlcmZseSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9jcmVhdGVfdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA0NmJmZTE1MjRjZTViNzUzMWViYjMw
NzM5MWFmNzcwY2U1MDdkOGIxLi43MWU3ODVlOTBjNmNkMGZjMjY0OWZmYThiN2JjOGM2NDkyZGE5
MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaApAQCAtMzIwLDYgKzMyMCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Y29uc3RydWN0X2FyaXR5Q2hlY2spOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
cmVhdGVfZGlyZWN0X2FyZ3VtZW50cyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2NyZWF0ZV90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
ZW50ZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfY2FsbGVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCmluZGV4IDgw
NjJmMWUwNjFhZjE4N2Q5NGJkM2ZiODQwMWFjNzY5ZDAwZTk2YjAuLjk1ODEwNWQzMjY2ZGRmZjg1
YmU1ZDc2ZDg3Y2RlNWNiMzMxMzE0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZUJhc2UuaApAQCAtNTcsNyArNTcsNyBAQCBpbmxpbmUgYm9vbCBpc0Nh
bGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogCiBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6
IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0gICAgZnJpZW5kIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25D
YWxsR2VuZXJhdG9yKFZNKik7CisgICAgZnJpZW5kIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qKTsKIAogcHJvdGVjdGVk
OgogICAgIEV4ZWN1dGFibGVCYXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCmlu
ZGV4IDAyMWI4Y2M1NzMxMjhlOTQ0MjAxOGQwZGMwODM2Y2M1NDM2ZDlmMjYuLjRmNzQ5YTg1MTFj
ZTAxOTRiMTEzYzdlYTc2OTAxOWIwMmNkZGRkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCkBAIC02OSw3ICs2OSwxMCBAQCBG
dW5jdGlvblJhcmVEYXRhOjpGdW5jdGlvblJhcmVEYXRhKFZNJiB2bSkKICAgICAvLyB0aGUgZmly
c3QgYWxsb2NhdGlvbiBkb24ndCBkaXNhYmxlIG9wdGltaXphdGlvbnMuIFRoaXMgaXNuJ3Qgc3Vw
ZXIgaW1wb3J0YW50LCBzaW5jZSB0aGUKICAgICAvLyBmdW5jdGlvbiBpcyB1bmxpa2VseSB0byBh
bGxvY2F0ZSBhIHJhcmUgZGF0YSB1bnRpbCB0aGUgZmlyc3QgYWxsb2NhdGlvbiBhbnl3YXkuCiAg
ICAgLCBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldChDbGVhcldhdGNocG9pbnQpCisg
ICAgLCBtX2hhc1JlaWZpZWRMZW5ndGgoZmFsc2UpCiAgICAgLCBtX2hhc1JlaWZpZWROYW1lKGZh
bHNlKQorICAgICwgbV9oYXNNb2RpZmllZExlbmd0aChmYWxzZSkKKyAgICAsIG1faGFzTW9kaWZp
ZWROYW1lKGZhbHNlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmgKaW5kZXggMWYzMmEzY2JiYzQ2YWU1MDBhMmNkZGVjNGZhMjc4
NTUxNTAyMTA2NS4uYmRhNWQ3YTY5YmJmNzNjN2RlZTM4ZmVlM2MyOTNjYzI4NmJhZjU5OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApA
QCAtNzMsOCArNzMsNiBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0
aW9uQWxsb2NhdGlvblByb2ZpbGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25S
YXJlRGF0YSwgbV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUpOyB9CiAgICAgc3Rh
dGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZSk7IH0KICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRp
b25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1
bmN0aW9uUmFyZURhdGEsIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOyB9
Ci0gICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZIYXNSZWlmaWVkTGVuZ3RoKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1faGFzUmVpZmllZExl
bmd0aCk7IH0KLSAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkhhc1JlaWZpZWRO
YW1lKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1faGFzUmVp
ZmllZE5hbWUpOyB9CiAKICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGUq
IG9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkKICAgICB7CkBAIC0xMjEsNiArMTE5LDE3IEBAIGNs
YXNzIEZ1bmN0aW9uUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGhh
c1JlaWZpZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWlmaWVkTmFtZTsgfQogICAgIHZv
aWQgc2V0SGFzUmVpZmllZE5hbWUoKSB7IG1faGFzUmVpZmllZE5hbWUgPSB0cnVlOyB9CiAKKyAg
ICBib29sIGhhc01vZGlmaWVkTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNb2RpZmllZExl
bmd0aDsgfQorICAgIHZvaWQgc2V0SGFzTW9kaWZpZWRMZW5ndGgoKQorICAgIHsKKyAgICAgICAg
bV9oYXNNb2RpZmllZExlbmd0aCA9IHRydWU7CisgICAgfQorICAgIGJvb2wgaGFzTW9kaWZpZWRO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNb2RpZmllZE5hbWU7IH0KKyAgICB2b2lkIHNldEhh
c01vZGlmaWVkTmFtZSgpCisgICAgeworICAgICAgICBtX2hhc01vZGlmaWVkTmFtZSA9IHRydWU7
CisgICAgfQorCiAgICAgYm9vbCBoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dCgpIGNvbnN0IHsgcmV0dXJuICEhbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dDsgfQogICAgIFdhdGNocG9pbnQqIGNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRj
aHBvaW50KCk7CiAgICAgY2xhc3MgQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ7
CkBAIC0xNTAsOCArMTU5LDEwIEBAIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGEgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUgbV9pbnRl
cm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbGxvY2F0
aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4gbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5n
V2F0Y2hwb2ludDsKLSAgICBib29sIG1faGFzUmVpZmllZExlbmd0aCB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX2hhc1JlaWZpZWROYW1lIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzUmVpZmllZExl
bmd0aCA6IDE7CisgICAgYm9vbCBtX2hhc1JlaWZpZWROYW1lIDogMTsKKyAgICBib29sIG1faGFz
TW9kaWZpZWRMZW5ndGggOiAxOworICAgIGJvb2wgbV9oYXNNb2RpZmllZE5hbWUgOiAxOwogfTsK
IAogY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNo
cG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAppbmRleCAyMzc3
MGVjYTNiZWUwMGMzOGM1NDUyNWFhZmRjMTZmYzgxZTBmMTk0Li4zMTNmMWEwN2E1NGQzZjI2OGJh
MjI1MWUyMTI1N2NiYmNjNGU4NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKQEAgLTEyNyw3ICsxMjcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRl
ckNvbXBhcmUoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVj
dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAyLCAiY29tcGFyZSJfcywg
SW50bENvbGxhdG9yRnVuY0NvbXBhcmUsIE5vSW50cmluc2ljKTsKIAogICAgICAgICAvLyBjLiBM
ZXQgYmMgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAgICAg
IGJvdW5kQ29tcGFyZSA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHRhcmdldE9iamVjdCwgY29sbGF0b3IsIG51bGxwdHIsIDIsIFN0cmluZygpKTsKKyAgICAgICAg
Ym91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
dGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgbnVsbHB0ciwgMiwganNFbXB0eVN0cmluZyh2bSkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAgICAgLy8gZC4gU2V0IGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0gdG8gYmMuCiAgICAgICAg
IGNvbGxhdG9yLT5zZXRCb3VuZENvbXBhcmUodm0sIGJvdW5kQ29tcGFyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAppbmRleCBkMDQzZWY3ZmZkNjAwNWJkMTg3NTNhNGQyMmEyMTdiN2M4MGNj
ZDU0Li45Y2Q5MmZkYjIzNWUzMWZhMjk2M2YxODlmZTA3ZWZkZTA3YTU5YjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2Jh
bE9iagogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlz
IDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00MDIgMS4wKQog
ICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgMSwgImZvcm1hdCJfcywgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1h
dERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1
bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KLSAgICAgICAgYm91bmRGb3JtYXQgPSBK
U0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0
ZiwgbnVsbHB0ciwgMSwgU3RyaW5nKCkpOworICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBudWxs
cHRyLCAxLCBqc0VtcHR5U3RyaW5nKHZtKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQgZHRmLltbYm91bmRG
b3JtYXRdXSB0byBiZi4KICAgICAgICAgZHRmLT5zZXRCb3VuZEZvcm1hdCh2bSwgYm91bmRGb3Jt
YXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCA5MWI0ODNmMjliM2VmNTk2MGFkMzUyYWVm
YTZmZTM0OTAyMzM4MDdkLi4yMGZhOTQ5MDQ2OTJiYmEzZTBiNjBhZjNjY2ZlOGY5NjViODEzMDUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChK
U0dsb2JhbE9iamVjCiAgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJv
cGVydHkgaXMgMS4KICAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJmb3JtYXQiX3MsIEludGxOdW1iZXJGb3Jt
YXRGdW5jRm9ybWF0TnVtYmVyLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBi
ZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KLSAgICAgICAgYm91bmRG
b3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRP
YmplY3QsIG5mLCBudWxscHRyLCAxLCBTdHJpbmcoKSk7CisgICAgICAgIGJvdW5kRm9ybWF0ID0g
SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBu
ZiwgbnVsbHB0ciwgMSwganNFbXB0eVN0cmluZyh2bSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IG5mLltb
Ym91bmRGb3JtYXRdXSB0byBiZi4KICAgICAgICAgbmYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3Vu
ZEZvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApp
bmRleCBhNDFiNTdiMmNiY2JiMWMyZDVkNWY2Y2E5OWI2YWQ2MGI0ZWMyYTlhLi43Zjg2N2YxMzk0
OTVhOTMwZjZmZWJiYTgyYjhlNmU3YTQzNzA3ZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTE4Nyw4ICsxODcsOCBAQCBjb25zdCBjaGFyKiBp
bnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAiVHJ1bmNJ
bnRyaW5zaWMiOwogICAgIGNhc2UgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYzoKICAgICAgICAg
cmV0dXJuICJJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljIjsKLSAgICBjYXNlIEJvdW5kVGhpc05v
QXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYzoKLSAgICAgICAgcmV0dXJuICJCb3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNhbGxJbnRyaW5zaWMiOworICAgIGNhc2UgQm91bmRGdW5jdGlvbkNhbGxJbnRy
aW5zaWM6CisgICAgICAgIHJldHVybiAiQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMiOwogICAg
IGNhc2UgSlNNYXBHZXRJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiSlNNYXBHZXRJbnRyaW5z
aWMiOwogICAgIGNhc2UgSlNNYXBIYXNJbnRyaW5zaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5oCmluZGV4IGZlMmU5MTBmOTFlZGVhZWQyNjA5ZjQyNDc0ZTI4MDRi
YjZmZmNjZTguLmJiMmZlZTJlMjg5MTQxMzVhOTIzOTFjNGUwOTU0ZmFiYTg4YTllYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC0xMDYsNyArMTA2LDcg
QEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBGUm91bmRJbnRyaW5zaWMsCiAgICAg
VHJ1bmNJbnRyaW5zaWMsCiAgICAgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYywKLSAgICBCb3Vu
ZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCisgICAgQm91bmRGdW5jdGlvbkNhbGxJ
bnRyaW5zaWMsCiAgICAgSlNNYXBHZXRJbnRyaW5zaWMsCiAgICAgSlNNYXBIYXNJbnRyaW5zaWMs
CiAgICAgSlNNYXBTZXRJbnRyaW5zaWMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCA3NWJlNWZlYTZhYzAwZGViODhhODUzOWQ2
MmYyNzUxMjA1MjkzNTE5Li40MTg2NTlhYTJlNGRlYTNjZjNjOTQ0NmUwMmI1M2JiYzk1YzkyZjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlv
bi5jcHAKQEAgLTM5LDcgKzM5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91
bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAg
SlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+
KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91
bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOworICAgIGlmIChib3VuZEFyZ3MpIHsKKyAgICAgICAgLy8gU3RhcnRzIHdp
dGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4KKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKKyAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFyZ3MuYXBw
ZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CkBAIC02MiwxMiArNjksMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlv
bio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKLSAgICBKU0FycmF5KiBib3VuZEFyZ3MgPSBi
b3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91
bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CiAKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3MpIHsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKGJvdW5kQXJncy0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKKyAgICAgICAgLy8gU3RhcnRz
IHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIGFy
Z3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFyZ3Mu
YXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwpAQCAtODcsNyArOTUsMTQg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNv
bnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2wKIHsKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5k
RnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgp
KTsKIAorICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9u
LT5ib3VuZEFyZ3MoKTsKKwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgaWYg
KGJvdW5kQXJncykgeworICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBv
bmUgaXMgfHRoaXN8LgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdz
LT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXQo
aSkpOworICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1
bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYXJncy5hcHBlbmQoY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudChpKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgp
KTsKQEAgLTEwNSwxMiArMTIwLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91
bmRGdW5jdGlvbkNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCkpOwogCi0gICAgSlNBcnJheSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRB
cmdzKCk7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rp
b24tPmJvdW5kQXJncygpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBp
ZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFy
Z3MtPmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdl
dEluZGV4UXVpY2tseShpKSk7CisgICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhlIGZp
cnN0IG9uZSBpcyB8dGhpc3wuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBib3Vu
ZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3Mt
PmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhcmdzLmFwcGVuZChjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpKTsKQEAgLTE3MSwyMyArMTg3LDIyIEBAIGlubGluZSBTdHJ1Y3R1
cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNCb3VuZEZ1bmN0aW9uKiBKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTQXJyYXkqIGJv
dW5kQXJncywgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQorSlNCb3VuZEZ1bmN0aW9u
KiBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTSW1t
dXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MsIGludCBsZW5ndGgsIEpTU3RyaW5nKiBuYW1lKQog
ewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIG5hbWUt
PnZhbHVlKGdsb2JhbE9iamVjdCk7IC8vIFJlc29sdmluZyByb3BlLgorICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgYm9vbCBpc0pTRnVuY3Rpb24gPSBnZXRK
U0Z1bmN0aW9uKHRhcmdldEZ1bmN0aW9uKTsKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERh
dGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gSlNDOjpnZXRDb25zdHJ1Y3RE
YXRhKHZtLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgYm9vbCBjYW5Db25z
dHJ1Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7Ci0gICAgCi0gICAg
Ym9vbCBzbG93Q2FzZSA9IGJvdW5kQXJncyB8fCAhZ2V0SlNGdW5jdGlvbih0YXJnZXRGdW5jdGlv
bik7Ci0gICAgCi0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RG
dW5jdGlvbigKLSAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2FsbCA6IGJvdW5kVGhp
c05vQXJnc0Z1bmN0aW9uQ2FsbCwKLSAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6IEJv
dW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAgY2FuQ29uc3RydWN0
ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05vQXJnc0Z1
bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxscHRy
LAotICAgICAgICBuYW1lKTsKKworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2
bS5nZXRCb3VuZEZ1bmN0aW9uKGlzSlNGdW5jdGlvbiwgY2FuQ29uc3RydWN0KTsKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgdGFyZ2V0RnVuY3Rpb24pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwotICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KHZtLmhlYXApKSBKU0JvdW5kRnVuY3Rpb24odm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB0YXJnZXRGdW5jdGlvbiwgYm91bmRUaGlzLCBib3Vu
ZEFyZ3MpOworICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KHZtLmhlYXApKSBKU0JvdW5kRnVuY3Rpb24odm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB0YXJnZXRGdW5jdGlvbiwgYm91bmRUaGlzLCBib3Vu
ZEFyZ3MsIG5hbWUsIGxlbmd0aCk7CiAKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0s
IGV4ZWN1dGFibGUsIGxlbmd0aCk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwpAQCAtMTk4LDEyICsy
MTMsMTUgQEAgYm9vbCBKU0JvdW5kRnVuY3Rpb246OmN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICByZXR1cm4ganNDYXN0PEpTQm91
bmRGdW5jdGlvbio+KG9iamVjdCktPm1fdGFyZ2V0RnVuY3Rpb24tPmhhc0luc3RhbmNlKGdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogfQogCi1KU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0FycmF5KiBi
b3VuZEFyZ3MpCitKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCog
dGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSog
Ym91bmRBcmdzLCBKU1N0cmluZyogbmFtZSwgaW50IGxlbmd0aCkKICAgICA6IEJhc2Uodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV90YXJnZXRGdW5jdGlvbih2bSwgdGhpcywg
dGFyZ2V0RnVuY3Rpb24pCiAgICAgLCBtX2JvdW5kVGhpcyh2bSwgdGhpcywgYm91bmRUaGlzKQot
ICAgICwgbV9ib3VuZEFyZ3Modm0sIHRoaXMsIGJvdW5kQXJncywgV3JpdGVCYXJyaWVyPEpTQXJy
YXk+OjpNYXlCZU51bGwpCisgICAgLCBtX2JvdW5kQXJncyh2bSwgdGhpcywgYm91bmRBcmdzLCBX
cml0ZUJhcnJpZXI8SlNJbW11dGFibGVCdXR0ZXJmbHk+OjpNYXlCZU51bGwpCisgICAgLCBtX25h
bWUodm0sIHRoaXMsIG5hbWUpCisgICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CisgICAgQVNTRVJU
KCFtX25hbWUtPmlzUm9wZSgpKTsKIH0KIAogSlNBcnJheSogSlNCb3VuZEZ1bmN0aW9uOjpib3Vu
ZEFyZ3NDb3B5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0yMTIsOSArMjMwLDEy
IEBAIEpTQXJyYXkqIEpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KHRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ib3VuZEFyZ3MtPmxlbmd0aCgp
OyArK2kpIHsKLSAgICAgICAgcmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwgbV9ib3VuZEFyZ3Mt
PmdldEluZGV4UXVpY2tseShpKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOworICAgIGlmIChtX2JvdW5kQXJncykgeworICAgICAgICAvLyBTdGFydHMgd2l0
aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgYm91bmQgfHRoaXN8LgorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgbV9ib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC0+cHVzaChnbG9iYWxPYmplY3QsIG1fYm91bmRBcmdzLT5nZXQoaSkpOworICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgIH0K
ICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIzNSw2ICsyNTYsNyBAQCB2b2lkIEpT
Qm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFyZ2V0RnVuY3Rpb24p
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kQXJncyk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9uYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCmluZGV4IDc2NzdjNmE0
OTIzMjVmNTgyYWQ3Y2FkMzExZDNlNGY5N2E2YzZhODMuLjczYjAxNDVmZGJlMDYzYWQwYjY2ZGI3
ODdlMWY1NzFmMjliMmYzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5oCkBAIC00OCwxNCArNDgsMjMgQEAgY2xhc3MgSlNCb3VuZEZ1bmN0
aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogICAgICAgICByZXR1cm4gdm0uYm91bmRG
dW5jdGlvblNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlv
biogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24s
IEpTVmFsdWUgYm91bmRUaGlzLCBKU0FycmF5KiBib3VuZEFyZ3MsIGludCwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKKyAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MsIGludCwgSlNTdHJpbmcqIG5hbWUpOwogICAg
IAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbigpIHsgcmV0
dXJuIG1fdGFyZ2V0RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsg
cmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9Ci0gICAgSlNBcnJheSogYm91bmRBcmdzKCkgeyBy
ZXR1cm4gbV9ib3VuZEFyZ3MuZ2V0KCk7IH0gLy8gRE8gTk9UIGFsbG93IHRoaXMgYXJyYXkgdG8g
YmUgbXV0YXRlZCEKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzKCkgeyByZXR1
cm4gbV9ib3VuZEFyZ3MuZ2V0KCk7IH0gLy8gRE8gTk9UIGFsbG93IHRoaXMgYXJyYXkgdG8gYmUg
bXV0YXRlZCEKICAgICBKU0FycmF5KiBib3VuZEFyZ3NDb3B5KEpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgSlNTdHJpbmcqIG5hbWUoKSB7IHJldHVybiBtX25hbWUuZ2V0KCk7IH0KKyAgICBjb25zdCBT
dHJpbmcmIG5hbWVTdHJpbmcoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX25hbWUtPmlzUm9w
ZSgpKTsKKyAgICAgICAgYm9vbCBhbGxvY2F0aW9uQWxsb3dlZCA9IGZhbHNlOworICAgICAgICBy
ZXR1cm4gbV9uYW1lLT50cnlHZXRWYWx1ZShhbGxvY2F0aW9uQWxsb3dlZCk7CisgICAgfQorCisg
ICAgaW50MzJfdCBsZW5ndGgoVk0mKSB7IHJldHVybiBtX2xlbmd0aDsgfQogCiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNjUsNiArNzQsNyBAQCBjbGFz
cyBKU0JvdW5kRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgCiAgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhcmdldEZ1bmN0aW9uKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTQm91bmRGdW5jdGlvbiwgbV90YXJnZXRGdW5jdGlvbik7IH0KICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mQm91bmRUaGlzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEpTQm91bmRGdW5jdGlvbiwgbV9ib3VuZFRoaXMpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkJvdW5kQXJncygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0JvdW5kRnVuY3Rp
b24sIG1fYm91bmRBcmdzKTsgfQogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC03MiwxMyArODIs
MjAgQEAgY2xhc3MgSlNCb3VuZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewog
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAog
cHJpdmF0ZToKLSAgICBKU0JvdW5kRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTQXJy
YXkqIGJvdW5kQXJncyk7CisgICAgSlNCb3VuZEZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlz
LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBKU1N0cmluZyogbmFtZSwgaW50IGxl
bmd0aCk7CiAgICAgCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFi
bGUqLCBpbnQgbGVuZ3RoKTsKIAogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV90YXJnZXRG
dW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9ib3VuZFRoaXM7Ci0gICAgV3Jp
dGVCYXJyaWVyPEpTQXJyYXk+IG1fYm91bmRBcmdzOworICAgIFdyaXRlQmFycmllcjxKU0ltbXV0
YWJsZUJ1dHRlcmZseT4gbV9ib3VuZEFyZ3M7CisgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBt
X25hbWU7CisgICAgaW50IG1fbGVuZ3RoOwogfTsKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVj
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNjJlNTU4
ZmZhNDY0NGU4NDc4YzY4MTA5NzI3MjU4MGNmMGQ2YjBmNy4uMzdiMmMxM2IxOGQ4ZmM4ZjA5NjM5
ODU3NTI3ZTk5NzM5ODFlZmYxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKQEAgLTEyNiw2ICsxMjYsOCBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNT
RVJUKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0aGlzKSk7CiAgICAgQVNTRVJUKHR5
cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSk7CisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0
Q29uc3RydWN0RGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YSk7CisgICAgQVNT
RVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEgPT0gJkpTRnVuY3Rpb246OmdldENhbGxE
YXRhKTsKIH0KIAogdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2
ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSkK
QEAgLTEzMyw4ICsxMzUsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKICAg
ICBBU1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKTsKKyAgICBBU1NFUlQobWV0aG9kVGFi
bGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRh
KTsKKyAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSA9PSAmSlNGdW5jdGlv
bjo6Z2V0Q2FsbERhdGEpOwogICAgIG1fZXhlY3V0YWJsZS5zZXQodm0sIHRoaXMsIGV4ZWN1dGFi
bGUpOwotICAgIC8vIFNvbWUgTmF0aXZlRXhlY3V0YWJsZSBmdW5jdGlvbnMsIGxpa2UgSlNCb3Vu
ZEZ1bmN0aW9uLCBkZWNpZGUgdG8gbGF6aWx5IGFsbG9jYXRlIHRoZWlyIG5hbWUgc3RyaW5nLgor
CisgICAgLy8gU29tZSBOYXRpdmVFeGVjdXRhYmxlIGZ1bmN0aW9ucywgbGlrZSBKU0JvdW5kRnVu
Y3Rpb24sIGRlY2lkZSB0byBsYXppbHkgYWxsb2NhdGUgdGhlaXIgbmFtZSBzdHJpbmcgLyBsZW5n
dGguCisgICAgaWYgKHRoaXMtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKQorICAgICAg
ICByZXR1cm47CisKICAgICBpZiAoIW5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcodm0sIG5hbWUpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwpAQCAtMjA3LDYgKzIxNSw4IEBAIEZ1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmluaXRp
YWxpemVSYXJlRGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzCiBTdHJpbmcgSlNG
dW5jdGlvbjo6bmFtZShWTSYgdm0pCiB7CiAgICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAg
ICAgICAgaWYgKHRoaXMtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKQorICAgICAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0aGlzKS0+bmFtZVN0cmluZygpOwog
ICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1
dGFibGUqPih0aGlzLT5leGVjdXRhYmxlKCkpOwogICAgICAgICByZXR1cm4gZXhlY3V0YWJsZS0+
bmFtZSgpOwogICAgIH0KQEAgLTQyMSwxMCArNDMxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVu
Y3Rpb246OmNhbGxlckdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRnVu
Y3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgdGhpc09i
amVjdC0+cmVpZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZOZWVkZWQodm0sIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKICAgICB9CiAKICAgICBpZiAocHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSAmJiB0aGlzT2JqZWN0LT5q
c0V4ZWN1dGFibGUoKS0+aGFzUHJvdG90eXBlUHJvcGVydHkoKSAmJiAhdGhpc09iamVjdC0+anNF
eGVjdXRhYmxlKCktPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkpIHsKQEAgLTQ2MCwyMiAr
NDczLDIzIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykgewogICAgICAgICBpZiAoIXRoaXNPYmpl
Y3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9wZXJ0aWVzKCkpCi0g
ICAgICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7CiAgICAgICAgIAogICAgICAgICBzbG90LnNl
dENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSwgYXJndW1lbnRzR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9IGVs
c2UgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIpIHsKICAgICAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRz
UHJvcGVydGllcygpKQotICAgICAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwogCiAgICAgICAg
IHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlLCBjYWxsZXJHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICAgICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKHZtLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogCi0gICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQpAQCAtNDk3LDEwICs1MTEsMTIgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGcKICAg
ICAgICAgICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZE5hbWUoKSkKICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5pc0J1aWx0aW5GdW5jdGlvbigp
ICYmICF0aGlzT2JqZWN0LT5oYXNSZWlmaWVkTGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGlm
ICgodGhpc09iamVjdC0+aXNCdWlsdGluRnVuY3Rpb24oKSB8fCB0aGlzT2JqZWN0LT5pbmhlcml0
czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgJiYgIXRoaXNPYmplY3QtPmhhc1JlaWZpZWROYW1lKCkp
Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSk7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+aXNCdWlsdGluRnVuY3Rpb24oKSB8fCB0
aGlzT2JqZWN0LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgeworICAgICAgICAgICAg
ICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZExlbmd0aCgpKQorICAgICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOworICAgICAg
ICAgICAgICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZE5hbWUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bmFtZSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7
CkBAIC01MTMsMTIgKzUyOSwyMSBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogCiAgICAgSlNG
dW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAKKyAgICBp
ZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCB8fCBwcm9wZXJ0eU5h
bWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bmFtZSkgeworICAgICAgICBGdW5jdGlvblJhcmVEYXRh
KiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRhKHZtKTsKKyAgICAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCisgICAgICAgICAgICByYXJlRGF0
YS0+c2V0SGFzTW9kaWZpZWRMZW5ndGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFy
ZURhdGEtPnNldEhhc01vZGlmaWVkTmFtZSgpOworICAgIH0KKwogICAgIGlmIChVTkxJS0VMWShp
c1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQogICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xvdyhnbG9iYWxPYmplY3QsIHRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2Rl
KCkpKTsKIAogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkp
IHsKICAgICAgICAgUHJvcGVydHlTdGF0dXMgcHJvcGVydHlUeXBlID0gdGhpc09iamVjdC0+cmVp
ZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZOZWVkZWQodm0sIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgICAgICBpZiAoaXNMYXp5KHByb3BlcnR5VHlwZSkpCiAgICAgICAgICAgICBzbG90LmRp
c2FibGVDYWNoaW5nKCk7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkp
OwpAQCAtNTUxLDEwICs1NzYsMjEgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHIKIGJvb2wgSlNG
dW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Vs
bCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCisKKyAg
ICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCB8fCBwcm9wZXJ0
eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bmFtZSkgeworICAgICAgICBGdW5jdGlvblJhcmVE
YXRhKiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRhKHZtKTsKKyAgICAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCisgICAgICAgICAgICByYXJl
RGF0YS0+c2V0SGFzTW9kaWZpZWRMZW5ndGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmFyZURhdGEtPnNldEhhc01vZGlmaWVkTmFtZSgpOworICAgIH0KKworICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnJl
aWZ5TGF6eVByb3BlcnR5Rm9ySG9zdE9yQnVpbHRpbklmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7Ci0gICAgZWxzZSBpZiAodm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0g
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICB9IGVsc2UgaWYgKHZtLmRlbGV0
ZVByb3BlcnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSkgewogICAgICAgICAvLyBGb3Igbm9uLWhvc3QgZnVuY3Rpb25zLCBkb24ndCBsZXQgdGhl
c2UgcHJvcGVydGllcyBieSBkZWxldGVkIC0gZXhjZXB0IGJ5IERlZmluZU93blByb3BlcnR5Lgog
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB0aGlzT2JqZWN0LT5qc0V4
ZWN1dGFibGUoKTsKICAgICAgICAgCkBAIC01NjUsOSArNjAxLDEwIEBAIGJvb2wgSlNGdW5jdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdGhpc09iamVj
dC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQog
ICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkp
OwogfQogCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2Vw
dGlvbikKQEAgLTU3Niw4ICs2MTMsMTggQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOworCisgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggfHwgcHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUpIHsKKyAgICAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURh
dGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSh2bSk7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQorICAgICAgICAgICAgcmFyZURhdGEtPnNldEhh
c01vZGlmaWVkTGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhcmVEYXRhLT5z
ZXRIYXNNb2RpZmllZE5hbWUoKTsKKyAgICB9CisKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0
T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9w
ZXJ0eUZvckhvc3RPckJ1aWx0aW5JZk5lZWRlZCh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24p
KTsKICAgICB9CiAKQEAgLTcxNyw4ICs3NjQsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpyZWlmeUxl
bmd0aChWTSYgdm0pCiAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzLT5yYXJl
RGF0YSh2bSk7CiAKICAgICBBU1NFUlQoIWhhc1JlaWZpZWRMZW5ndGgoKSk7Ci0gICAgQVNTRVJU
KCFpc0hvc3RGdW5jdGlvbigpKTsKLSAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IGpzTnVtYmVy
KGpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSAwOworICAgIGlmICh0aGlzLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkKKyAgICAg
ICAgbGVuZ3RoID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRoaXMpLT5sZW5ndGgodm0pOwor
ICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoIWlzSG9zdEZ1bmN0aW9uKCkpOworICAgICAgICBs
ZW5ndGggPSBqc0V4ZWN1dGFibGUoKS0+cGFyYW1ldGVyQ291bnQoKTsKKyAgICB9CisgICAgSlNW
YWx1ZSBpbml0aWFsVmFsdWUgPSBqc051bWJlcihsZW5ndGgpOwogICAgIHVuc2lnbmVkIGluaXRp
YWxBdHRyaWJ1dGVzID0gUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5OwogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIgPSB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGg7CiAgICAgcmFyZURhdGEtPnNldEhhc1JlaWZpZWRMZW5ndGgo
KTsKQEAgLTc2Nyw3ICs4MjAsNyBAQCB2b2lkIEpTRnVuY3Rpb246OnJlaWZ5TmFtZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZyBuYW1lKQogCiBKU0Z1bmN0aW9u
OjpQcm9wZXJ0eVN0YXR1cyBKU0Z1bmN0aW9uOjpyZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKLSAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKKyAgICBpZiAoaXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAhdGhpcy0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9u
Pih2bSkpCiAgICAgICAgIHJldHVybiBQcm9wZXJ0eVN0YXR1czo6RWFnZXI7CiAgICAgUHJvcGVy
dHlTdGF0dXMgbGF6eUxlbmd0aCA9IHJlaWZ5TGF6eUxlbmd0aElmTmVlZGVkKHZtLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGlzTGF6eShsYXp5TGVuZ3RoKSkKQEAgLTc4
MSw3ICs4MzQsNyBAQCBKU0Z1bmN0aW9uOjpQcm9wZXJ0eVN0YXR1cyBKU0Z1bmN0aW9uOjpyZWlm
eUxhenlQcm9wZXJ0eUlmTmVlZGVkKFZNJiB2bSwgSlNHbG9iYQogSlNGdW5jdGlvbjo6UHJvcGVy
dHlTdGF0dXMgSlNGdW5jdGlvbjo6cmVpZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZO
ZWVkZWQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIEFTU0VSVChpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKTsK
LSAgICBpZiAoaXNCdWlsdGluRnVuY3Rpb24oKSkgeworICAgIGlmIChpc0J1aWx0aW5GdW5jdGlv
bigpIHx8IHRoaXMtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKSB7CiAgICAgICAgIFBy
b3BlcnR5U3RhdHVzIGxhenlMZW5ndGggPSByZWlmeUxhenlMZW5ndGhJZk5lZWRlZCh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAoaXNMYXp5KGxhenlMZW5ndGgp
KQogICAgICAgICAgICAgcmV0dXJuIGxhenlMZW5ndGg7CkBAIC04MTUsNiArODY4LDggQEAgSlNG
dW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5jdGlvbjo6cmVpZnlMYXp5TmFtZUlmTmVlZGVk
KFZNJiB2bSwgSlNHbG9iYWxPYmoKIAogSlNGdW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5j
dGlvbjo6cmVpZnlMYXp5Qm91bmROYW1lSWZOZWVkZWQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXImIG5h
bWVJZGVudCA9IHZtLnByb3BlcnR5TmFtZXMtPm5hbWU7CiAgICAgaWYgKHByb3BlcnR5TmFtZSAh
PSBuYW1lSWRlbnQpCiAgICAgICAgIHJldHVybiBQcm9wZXJ0eVN0YXR1czo6RWFnZXI7CkBAIC04
MjYsOCArODgxLDEzIEBAIEpTRnVuY3Rpb246OlByb3BlcnR5U3RhdHVzIEpTRnVuY3Rpb246OnJl
aWZ5TGF6eUJvdW5kTmFtZUlmTmVlZGVkKFZNJiB2bSwgSlNHbG9iCiAgICAgICAgIHJlaWZ5TmFt
ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBlbHNlIGlmICh0aGlzLT5pbmhlcml0czxKU0JvdW5k
RnVuY3Rpb24+KHZtKSkgewogICAgICAgICBGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRo
aXMtPnJhcmVEYXRhKHZtKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gc3RhdGljX2Nh
c3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPm5hbWUoKTsKLSAgICAg
ICAgSlNTdHJpbmcqIHN0cmluZyA9ICFuYW1lID8ganNFbXB0eVN0cmluZyh2bSkgOiBqc1N0cmlu
Zyh2bSwgbWFrZVN0cmluZygiYm91bmQgIiwgbmFtZSkpOworICAgICAgICBKU1N0cmluZyogbmFt
ZSA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0aGlzKS0+bmFtZSgpOworICAgICAgICBKU1N0
cmluZyogc3RyaW5nID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKG5hbWUtPmxlbmd0aCgpICE9IDAp
IHsKKyAgICAgICAgICAgIHN0cmluZyA9IGpzU3RyaW5nKGdsb2JhbE9iamVjdCwganNTdHJpbmco
dm0sICJib3VuZCAiX3MpLCBuYW1lKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIFByb3BlcnR5U3RhdHVzOjpMYXp5KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBzdHJpbmcgPSBqc1N0cmluZyh2bSwgImJvdW5kICJfcyk7CiAgICAgICAgIHVuc2lnbmVkIGlu
aXRpYWxBdHRyaWJ1dGVzID0gUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5OwogICAgICAgICByYXJlRGF0YS0+c2V0SGFzUmVpZmllZE5hbWUo
KTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBuYW1lSWRlbnQsIHN0cmluZywgaW5pdGlhbEF0dHJp
YnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4
IDI2ODQ0NWM5ZWRjZjI1ZDVjNGJiZDM5MWQ5NWIxYmQ2MjM3ZjJkOWMuLmM2MGJjZjk0ODAxOThk
Nzk5MDM0NWZhOTVjZGE5ODE4ODliNzcyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKQEAgLTExMSw4ICsxMTEsOCBAQCBjbGFzcyBKU0Z1bmN0aW9uIDog
cHVibGljIEpTQ2FsbGVlIHsKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlv
bigpOwogICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKCk7CiAKLSAg
ICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVj
dERhdGEmKTsKLSAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAogICAg
IHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSgpCiAgICAgewpAQCAt
MTcxLDYgKzE3MSw4IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAg
IH07CiAgICAgUHJvcGVydHlTdGF0dXMgcmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZChWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKIAorICAgIGJvb2wgYXJlTmFtZUFuZExlbmd0
aE9yaWdpbmFsKFZNJik7CisKIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1
bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBKU0Z1bmN0aW9u
KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXgg
N2RjOGRlNjI1N2Y3YWJiZWE4MTllZjI5N2Y2Y2ZkOWJlMWEwM2RiNi4uM2U0ODU1N2EwY2NkODNl
YmRhZTBjZGY1OGVjNzg5MDg2NzRjMDgwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC0xMDksNiArMTA5LDE3IEBAIGlubGlu
ZSBib29sIEpTRnVuY3Rpb246Omhhc1JlaWZpZWROYW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9y
YXJlRGF0YSAmJiBtX3JhcmVEYXRhLT5oYXNSZWlmaWVkTmFtZSgpOwogfQogCitpbmxpbmUgYm9v
bCBKU0Z1bmN0aW9uOjphcmVOYW1lQW5kTGVuZ3RoT3JpZ2luYWwoVk0mKQoreworICAgIGlmICgh
bV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1fcmFyZURhdGEtPmhh
c01vZGlmaWVkTmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fcmFyZURh
dGEtPmhhc01vZGlmaWVkTGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6Y2FuVXNlQWxsb2NhdGlvblBy
b2ZpbGUoKQogewogICAgIGlmIChpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZjU5
YzdhYzAxM2U4ZDkyYWZkNmRhMzJhNjhhY2M3ZTM2NmFhNDdkOS4uMjQ3NjA3YzI4NDk4ZjJlNzIx
ZjFlZjIwMmU4OGFiNzcyYTY2YmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjg1LDE2ICsyODUsMTcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUJvdW5kRnVuY3Rpb24oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamUKICAgICBBU1NFUlQobGVuZ3RoVmFsdWUuaXNJbnQzMkFzQW55SW50KCkp
OwogICAgIGludDMyX3QgbGVuZ3RoID0gbGVuZ3RoVmFsdWUuYXNJbnQzMkFzQW55SW50KCk7CiAK
LSAgICBTdHJpbmcgbmFtZSA9IG5hbWVTdHJpbmctPnZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBib3VuZEFyZ3MuaXNDZWxsKCkgPyBqc0Nhc3Q8
SlNBcnJheSo+KGJvdW5kQXJncykgOiBudWxscHRyLCBsZW5ndGgsIFdURk1vdmUobmFtZSkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCb3VuZEZ1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBib3VuZFRoaXMsIGJvdW5k
QXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KGJvdW5kQXJncykg
OiBudWxscHRyLCBsZW5ndGgsIG5hbWVTdHJpbmcpKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0YXJnZXQpOworICAgIGlmIChmdW5jdGlvbikK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rpb24tPmFyZU5h
bWVBbmRMZW5ndGhPcmlnaW5hbCh2bSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAppbmRleCBiN2RiNDU0NjEyMjllZTJmMmMzMTQzMTcwYzI2OTQzOGE4ZTA2ZTAwLi5mZjA0
ZjU5Y2E4MjUyMDU2MDRhMWRiNWYyNzVmNGUzOWU0OGRlZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTU1LDcgKzU1LDcgQEAgaW5saW5lIEpTQ2VsbCog
Z2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAm
JiAodmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkpCiAgICAgICAgIHJl
dHVybiB2YWx1ZS5hc0NlbGwoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogY2xhc3MgRXhjZXB0aW9uOwpAQCAtMTI5MiwyMCArMTI5Miw2IEBAIGlubGluZSB2b2lk
IEpTT2JqZWN0OjpudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KFZNJiB2bSwgU3RydWN0dXJl
SUQgb2xkU3RydWN0CiAgICAgbV9idXR0ZXJmbHkuc2V0KHZtLCB0aGlzLCBidXR0ZXJmbHkpOwog
fQogCi1pbmxpbmUgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlLCBD
YWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgQ2FsbFR5cGUgcmVzdWx0ID0gdmFsdWUuaXNDZWxs
KCkgPyB2YWx1ZS5hc0NlbGwoKS0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSh2YWx1ZS5h
c0NlbGwoKSwgY2FsbERhdGEpIDogQ2FsbFR5cGU6Ok5vbmU7Ci0gICAgQVNTRVJUKHJlc3VsdCA9
PSBDYWxsVHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLWlubGluZSBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoVk0mIHZt
LCBKU1ZhbHVlIHZhbHVlLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQotewotICAgIENv
bnN0cnVjdFR5cGUgcmVzdWx0ID0gdmFsdWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+bWV0
aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKHZhbHVlLmFzQ2VsbCgpLCBjb25zdHJ1Y3RE
YXRhKSA6IENvbnN0cnVjdFR5cGU6Ok5vbmU7Ci0gICAgQVNTRVJUKHJlc3VsdCA9PSBDb25zdHJ1
Y3RUeXBlOjpOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQogaW5saW5lIEpTT2JqZWN0KiBhc09iamVjdChKU0NlbGwqIGNlbGwpCiB7CiAgICAg
QVNTRVJUKGNlbGwtPmlzT2JqZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdElubGluZXMuaAppbmRleCAwN2Y2MDY0MjU0YTdiYTM3Njg5YWJjMTc2ZWI2
NDM3NGEwY2FhZTY1Li4wNmE3MTRmNzRmMzU5NDhiMzlhMTFiOGFjOGM5MTY5MjkyM2RiOTZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNUeXBl
ZEFycmF5cy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgpAQCAtNTEwLDQgKzUxMSwyOCBAQCBpbmxp
bmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5TWF5QmVJbmRleChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2Rl
UHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CiB9CiAKK2lubGluZSBDYWxs
VHlwZSBnZXRDYWxsRGF0YShWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIENhbGxEYXRhJiBjYWxsRGF0
YSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gQ2FsbFR5cGU6
Ok5vbmU7CisgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CisgICAgaWYgKGNlbGwt
PnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246Omdl
dENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSByZXN1bHQgPSBjZWxsLT5t
ZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQo
cmVzdWx0ID09IENhbGxUeXBlOjpOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7
CisgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6
Ok5vbmU7CisgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CisgICAgaWYgKGNlbGwt
PnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246Omdl
dENvbnN0cnVjdERhdGEoY2VsbCwgY29uc3RydWN0RGF0YSk7CisgICAgQ29uc3RydWN0VHlwZSBy
ZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoY2VsbCwgY29u
c3RydWN0RGF0YSk7CisgICAgQVNTRVJUKHJlc3VsdCA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lIHx8
IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNjRkZGZj
YjFhMjU2MGU2ZmUxYjQ1NGU0ZmVlMTQ4OTJhZGMwOGE5Zi4uZWEzYjQ5MzQyYmFjOWI2ODhhOGRm
ZDgxZTNlMzUxMWQ3MWYzNTk4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtNzY2LDggKzc2Niw4IEBAIHN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZv
ckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gaW11bFRodW5r
R2VuZXJhdG9yOwogICAgIGNhc2UgUmFuZG9tSW50cmluc2ljOgogICAgICAgICByZXR1cm4gcmFu
ZG9tVGh1bmtHZW5lcmF0b3I7Ci0gICAgY2FzZSBCb3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJ
bnRyaW5zaWM6Ci0gICAgICAgIHJldHVybiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5l
cmF0b3I7CisgICAgY2FzZSBCb3VuZEZ1bmN0aW9uQ2FsbEludHJpbnNpYzoKKyAgICAgICAgcmV0
dXJuIGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KQEAgLTgxNSw2ICs4MTUsMzEgQEAgTmF0aXZlRXhlY3V0YWJs
ZSogVk06OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSW50cmluc2lj
IGludHJpbnMKICAgICByZXR1cm4gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp0aGlzLCBqaXRD
b2RlRm9yQ2FsbFRyYW1wb2xpbmUoKSwgZnVuY3Rpb24sIGppdENvZGVGb3JDb25zdHJ1Y3RUcmFt
cG9saW5lKCksIGNvbnN0cnVjdG9yLCBuYW1lKTsKIH0KIAorTmF0aXZlRXhlY3V0YWJsZSogVk06
OmdldEJvdW5kRnVuY3Rpb24oYm9vbCBpc0pTRnVuY3Rpb24sIGJvb2wgY2FuQ29uc3RydWN0KQor
eworICAgIGJvb2wgc2xvd0Nhc2UgPSAhaXNKU0Z1bmN0aW9uOworCisgICAgYXV0byBnZXRPckNy
ZWF0ZSA9IFsmXSAoV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgc2xvdCkgLT4gTmF0aXZlRXhlY3V0
YWJsZSogeworICAgICAgICBpZiAoYXV0byogY2FjaGVkID0gc2xvdC5nZXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBjYWNoZWQ7CisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIHJlc3VsdCA9IGdl
dEhvc3RGdW5jdGlvbigKKyAgICAgICAgICAgIHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNhbGwg
OiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwsCisgICAgICAgICAgICBzbG93Q2FzZSA/IE5v
SW50cmluc2ljIDogQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCisgICAgICAgICAgICBjYW5D
b25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogYm91bmRUaGlz
Tm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3Is
IG51bGxwdHIsIFN0cmluZygpKTsKKyAgICAgICAgc2xvdCA9IFdlYWs8TmF0aXZlRXhlY3V0YWJs
ZT4ocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9OworCisgICAgaWYgKHNs
b3dDYXNlKSB7CisgICAgICAgIGlmIChjYW5Db25zdHJ1Y3QpCisgICAgICAgICAgICByZXR1cm4g
Z2V0T3JDcmVhdGUobV9zbG93Q2FuQ29uc3RydWN0Qm91bmRFeGVjdXRhYmxlKTsKKyAgICAgICAg
cmV0dXJuIGdldE9yQ3JlYXRlKG1fc2xvd0JvdW5kRXhlY3V0YWJsZSk7CisgICAgfQorICAgIGlm
IChjYW5Db25zdHJ1Y3QpCisgICAgICAgIHJldHVybiBnZXRPckNyZWF0ZShtX2Zhc3RDYW5Db25z
dHJ1Y3RCb3VuZEV4ZWN1dGFibGUpOworICAgIHJldHVybiBnZXRPckNyZWF0ZShtX2Zhc3RCb3Vu
ZEV4ZWN1dGFibGUpOworfQorCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4g
Vk06OmdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKIHsKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggMjgwODZjNGVkOTE2MDZjMjgxYjFhMWQ1YjdhMWRhYjA2MDg4MDcwYS4uNTM5NTEz
YmUwOTU2MDM5MjM5NGNjNDI0OWFhNTI3MzZkY2I4MGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC02OTQsNiArNjk0LDExIEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAg
U3Ryb25nPEpTQ2VsbD4gbV9zZW50aW5lbFNldEJ1Y2tldDsKICAgICBTdHJvbmc8SlNDZWxsPiBt
X3NlbnRpbmVsTWFwQnVja2V0OwogCisgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX2Zhc3RC
b3VuZEV4ZWN1dGFibGU7CisgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX2Zhc3RDYW5Db25z
dHJ1Y3RCb3VuZEV4ZWN1dGFibGU7CisgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dC
b3VuZEV4ZWN1dGFibGU7CisgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dDYW5Db25z
dHJ1Y3RCb3VuZEV4ZWN1dGFibGU7CisKICAgICBSZWY8UHJvbWlzZVRpbWVyPiBwcm9taXNlVGlt
ZXI7CiAgICAgCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0
OwpAQCAtODMxLDYgKzgzNiw4IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBn
ZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAorICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEJvdW5kRnVuY3Rpb24oYm9vbCBpc0pTRnVu
Y3Rpb24sIGJvb2wgY2FuQ29uc3RydWN0KTsKKwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPiBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kKTsKIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgZXhjZXB0aW9uT2Zmc2V0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCBiMjY3
ZDUxZTQ5NGRiNTIzN2ZmYzdlZGFjMjczZWJiY2UyZGUxYzFkLi42NzdlODg1YTBlYTIwMjc4ODQ5
ZTg0NTlmZWU5ZWQwODhlNWM0ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XYXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2FzbVRvSlMuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0K
ICAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChqaXQsIGltcG9ydEluZGV4LCBpbXBvcnRKU0Nl
bGxHUFJSZWcpOwogCiAgICAgaml0LnN0b3JlNjQoaW1wb3J0SlNDZWxsR1BSUmVnLCBjYWxsZWVG
cmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkpKTsKLSAgICBqaXQuc3RvcmUzMihKSVQ6OlRydXN0ZWRJbW0zMihu
dW1iZXJPZlBhcmFtZXRlcnMpLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCkpOworICAgIGppdC5zdG9yZTMyKEpJVDo6VHJ1c3RlZEltbTMyKG51bWJlck9m
UGFyYW1ldGVycyksIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCkpOwogICAgIGppdC5zdG9yZTY0KEpJVDo6VHJ1c3RlZEltbTY0KEpT
VmFsdWU6OlZhbHVlVW5kZWZpbmVkKSwgY2FsbGVlRnJhbWUud2l0aE9mZnNldChDYWxsRnJhbWVT
bG90Ojp0aGlzQXJndW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7
CiAKICAgICAvLyBGSVhNRSBUYWlsIGNhbGwgaWYgdGhlIHdhc20gcmV0dXJuIHR5cGUgaXMgdm9p
ZCBhbmQgbm8gcmVnaXN0ZXJzIHdlcmUgc3BpbGxlZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTQ4OApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBhNDk3M2ViYmEwNDY4YTY1ZGI5
NWM4YmE4MzI2NGFkOGZhODZkZGQ5Li41MmI5OWM0MjYxMDhmNzNmNGE4YjQzOTU3ZDFlYWIzOTg4
NmVjOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50
U2xvdygpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5kbGUgbWlzbWF0Y2hlZCBhcml0eQog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY1NjQKICAg
ICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QmVsb3csCi0gICAg
ICAgIENDYWxsSGVscGVyczo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSAr
IDEpKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNp
Z25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxKSkpOwogCiAgICAgaWYgKHVzZVRhZ1JlZ2lzdGVy
cygpKQogICAgICAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYmE0Y2E0
NDFhYWZmYmJkOWExMmFhY2JmMDkzYTJkMWQ4MjgzY2JiLi42NGEzMGYyM2I0YzkxYzAwNzRhNzQ5
ZThjMWJiYjI5M2Q5NDQwOTIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTItMjAgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIG91ciBib3VuZCBm
dW5jdGlvbiBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA1MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3VwcG9ydCBydW5uaW5nIHNsb3ctbWljcm9iZW5jaG1hcmtzLgorCisg
ICAgICAgICogU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3M6CisKIDIwMTktMTItMjAgIEppZXdl
biBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEltcGxl
bWVudCBjb2RlcnMgZm9yIENUQVAgQ2xpZW50UElOIHJlcXVlc3RzIGFuZCByZXNwb25zZXMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzIGIvVG9vbHMvU2NyaXB0
cy9ydW4tanNjLWJlbmNobWFya3MKaW5kZXggMmNjZmU5MjNkMzBlNTBiN2IyMDlhMjQ4MDQzMmU2
NzJmNmNiM2VkMC4uZjQzMDZkY2JmZTQ3ODRjNDUwMWViMGJjNjY4NmM4YTk3MDQxZGMwOCAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MKKysrIGIvVG9vbHMvU2Ny
aXB0cy9ydW4tanNjLWJlbmNobWFya3MKQEAgLTUxLDYgKzUxLDcgQEAgVjhfUEFUSCA9IFBFUkZP
Uk1BTkNFVEVTVFNfUEFUSCArICJTdW5TcGlkZXIiICsgInRlc3RzIiArICJ2OC12NiIKIFRBSUxC
RU5DSF9QQVRIID0gUEVSRk9STUFOQ0VURVNUU19QQVRIICsgIlRhaWxCZW5jaDkwMDAiCiBCSUdJ
TlRCRU5DSF9QQVRIID0gUEVSRk9STUFOQ0VURVNUU19QQVRIICsgIkJpZ0ludEJlbmNoIgogTUlD
Uk9CRU5DSE1BUktTX1BBVEggPSBPUEVOU09VUkNFX1BBVEggKyAiSlNUZXN0cyIgKyAibWljcm9i
ZW5jaG1hcmtzIgorU0xPV19NSUNST0JFTkNITUFSS1NfUEFUSCA9IE9QRU5TT1VSQ0VfUEFUSCAr
ICJKU1Rlc3RzIiArICJzbG93TWljcm9iZW5jaG1hcmtzIgogT1BFTlNPVVJDRV9PQ1RBTkVfUEFU
SCA9IFBFUkZPUk1BTkNFVEVTVFNfUEFUSCArICJPY3RhbmUiCiBPQ1RBTkVfV1JBUFBFUl9QQVRI
ID0gT1BFTlNPVVJDRV9PQ1RBTkVfUEFUSCArICJ3cmFwcGVycyIKIEpTQkVOQ0hfUEFUSCA9IFBF
UkZPUk1BTkNFVEVTVFNfUEFUSCArICJKU0JlbmNoIgpAQCAtMjI0LDYgKzIyNSw3IEBAICRpbmNs
dWRlVjhDb21waWxlVGltZT10cnVlCiAkaW5jbHVkZUtyYWtlbj10cnVlCiAkaW5jbHVkZUpTQmVu
Y2g9dHJ1ZQogJGluY2x1ZGVNaWNyb2JlbmNobWFya3M9dHJ1ZQorJGluY2x1ZGVTbG93TWljcm9i
ZW5jaG1hcmtzPXRydWUKICRpbmNsdWRlQXNtQmVuY2g9dHJ1ZQogJGluY2x1ZGVEU1BKUz10cnVl
CiAkaW5jbHVkZUJyb3dzZXJtYXJrSlM9ZmFsc2UKQEAgLTMyMyw2ICszMjUsOCBAQCBkZWYgdXNh
Z2UKICAgcHV0cyAiLS1rcmFrZW4gICAgICAgICAgICAgT25seSBydW4gS3Jha2VuLiIKICAgcHV0
cyAiLS1qcy1iZW5jaCAgICAgICAgICAgT25seSBydW4gSlNCZW5jaC4iCiAgIHB1dHMgIi0tbWlj
cm9iZW5jaG1hcmtzICAgIE9ubHkgcnVuIG1pY3JvYmVuY2htYXJrcy4iCisgIHB1dHMgIi0tc2xv
dy1taWNyb2JlbmNobWFya3MiCisgIHB1dHMgIiAgICAgICAgICAgICAgICAgICAgIE9ubHkgcnVu
IHNsb3ctbWljcm9iZW5jaG1hcmtzLiIKICAgcHV0cyAiLS1kc3AgICAgICAgICAgICAgICAgT25s
eSBydW4gRFNQLiIKICAgcHV0cyAiLS1hc20tYmVuY2ggICAgICAgICAgT25seSBydW4gQXNtQmVu
Y2guIgogICBwdXRzICItLWJyb3dzZXJtYXJrLWpzICAgICBPbmx5IHJ1biBicm93c2VybWFyay1q
cy4iCkBAIC0xNzc2LDYgKzE3ODAsMTggQEAgY2xhc3MgTWljcm9iZW5jaG1hcmtzQmVuY2htYXJr
CiAgIGVuZAogZW5kCiAKK2NsYXNzIFNsb3dNaWNyb2JlbmNobWFya3NCZW5jaG1hcmsKKyAgaW5j
bHVkZSBCZW5jaG1hcmsKKyAgCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBu
YW1lCisgIGVuZAorICAKKyAgZGVmIGVtaXRSdW5Db2RlKHBsYW4pCisgICAgZW1pdEJlbmNoUnVu
Q29kZShmdWxsbmFtZSwgcGxhbiwgU2luZ2xlRmlsZVRpbWVkQmVuY2htYXJrUGFyYW1ldGVycy5u
ZXcoZW5zdXJlRmlsZSgiU2xvd01pY3JvYmVuY2htYXJrcy0je0BuYW1lfSIsICIje1NMT1dfTUlD
Uk9CRU5DSE1BUktTX1BBVEh9LyN7QG5hbWV9LmpzIikpKQorICBlbmQKK2VuZAorCiBjbGFzcyBB
c21CZW5jaEJlbmNobWFyawogICBpbmNsdWRlIEJlbmNobWFyawogICAKQEAgLTI4MTEsNiArMjgy
Nyw3IEBAIGJlZ2luCiAgICAgICAkaW5jbHVkZUtyYWtlbiA9IGZhbHNlCiAgICAgICAkaW5jbHVk
ZUpTQmVuY2ggPSBmYWxzZQogICAgICAgJGluY2x1ZGVNaWNyb2JlbmNobWFya3MgPSBmYWxzZQor
ICAgICAgJGluY2x1ZGVTbG93TWljcm9iZW5jaG1hcmtzID0gZmFsc2UKICAgICAgICRpbmNsdWRl
QXNtQmVuY2ggPSBmYWxzZQogICAgICAgJGluY2x1ZGVEU1BKUyA9IGZhbHNlCiAgICAgICAkaW5j
bHVkZUJyb3dzZXJtYXJrSlMgPSBmYWxzZQpAQCAtMjgzOSw2ICsyODU2LDcgQEAgYmVnaW4KICAg
ICAgICAgICAgICAgICAgWyctLWtyYWtlbicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAg
ICAgICAgICAgICAgICAgWyctLWpzLWJlbmNoJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAog
ICAgICAgICAgICAgICAgICBbJy0tbWljcm9iZW5jaG1hcmtzJywgR2V0b3B0TG9uZzo6Tk9fQVJH
VU1FTlRdLAorICAgICAgICAgICAgICAgICBbJy0tc2xvdy1taWNyb2JlbmNobWFya3MnLCBHZXRv
cHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICAgIFsnLS1hc20tYmVuY2gnLCBH
ZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICAgIFsnLS1kc3AnLCBHZXRv
cHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICAgIFsnLS1icm93c2VybWFyay1q
cycsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKQEAgLTI5MzksNiArMjk1Nyw5IEBAIGJlZ2lu
CiAgICAgd2hlbiAnLS1taWNyb2JlbmNobWFya3MnCiAgICAgICByZXNldEJlbmNoT3B0aW9uc0lm
TmVjZXNzYXJ5CiAgICAgICAkaW5jbHVkZU1pY3JvYmVuY2htYXJrcyA9IHRydWUKKyAgICB3aGVu
ICctLXNsb3ctbWljcm9iZW5jaG1hcmtzJworICAgICAgcmVzZXRCZW5jaE9wdGlvbnNJZk5lY2Vz
c2FyeQorICAgICAgJGluY2x1ZGVTbG93TWljcm9iZW5jaG1hcmtzID0gdHJ1ZQogICAgIHdoZW4g
Jy0tYXNtLWJlbmNoJwogICAgICAgcmVzZXRCZW5jaE9wdGlvbnNJZk5lY2Vzc2FyeQogICAgICAg
JGluY2x1ZGVBc21CZW5jaCA9IHRydWUKQEAgLTMyMDgsNiArMzIyOSwxNSBAQCBiZWdpbgogICAg
ICAgTUlDUk9CRU5DSE1BUktTLmFkZCBNaWNyb2JlbmNobWFya3NCZW5jaG1hcmsubmV3KG5hbWUp
CiAgICAgZW5kCiAgIH0KKworICBTTE9XX01JQ1JPQkVOQ0hNQVJLUyA9IEJlbmNobWFya1N1aXRl
Lm5ldygiU2xvd01pY3JvYmVuY2htYXJrcyIsIDpnZW9tZXRyaWNNZWFuLCAwKQorICBEaXIuZm9y
ZWFjaChTTE9XX01JQ1JPQkVOQ0hNQVJLU19QQVRIKSB7CisgICAgfCBmaWxlbmFtZSB8CisgICAg
aWYgZmlsZW5hbWUgPX4gL1wuanMkLworICAgICAgbmFtZSA9ICR+LnByZV9tYXRjaAorICAgICAg
U0xPV19NSUNST0JFTkNITUFSS1MuYWRkIFNsb3dNaWNyb2JlbmNobWFya3NCZW5jaG1hcmsubmV3
KG5hbWUpCisgICAgZW5kCisgIH0KICAgCiAgIEFTTUJFTkNIID0gQmVuY2htYXJrU3VpdGUubmV3
KCJBc21CZW5jaCIsIDpnZW9tZXRyaWNNZWFuLCAwKQogICBpZiBBU01CRU5DSF9QQVRICkBAIC0z
MzU0LDYgKzMzODQsMTAgQEAgYmVnaW4KICAgICAkc3VpdGVzIDw8IE1JQ1JPQkVOQ0hNQVJLUwog
ICBlbmQKIAorICBpZiAkaW5jbHVkZVNsb3dNaWNyb2JlbmNobWFya3MgYW5kIG5vdCBTTE9XX01J
Q1JPQkVOQ0hNQVJLUy5lbXB0eT8KKyAgICAkc3VpdGVzIDw8IFNMT1dfTUlDUk9CRU5DSE1BUktT
CisgIGVuZAorCiAgIGlmICRpbmNsdWRlQmlnSW50QmVuY2ggYW5kIG5vdCBCSUdJTlRCRU5DSC5l
bXB0eT8KICAgICAkc3VpdGVzIDw8IEJJR0lOVEJFTkNICiAgIGVuZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxMzAwOTNm
YTdhODQ4NjU5MDNlZGViNGEzZjIyNDM2MTFmMDA3OWEuLjNkODJkZjU5NTFlZTM1NWNhNWY3MGFj
ODYxYWE3ZGI5NmJlMGI1MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMi0yMCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcHJvdmUg
b3VyIGJvdW5kIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0
LWdldC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcnVudGlt
ZS9nZXREaXNwbGF5YWJsZVByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9ydW50aW1lL2dldFByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTEyLTIwICBU
cnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjI1MzgzMS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9t
b2RlbC9yZW1vdGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAppbmRleCBkN2M5YWI2YzM1MmE2ZWZiNWVlMWNjNWEwZWRlMDAxMjYwN2E2YjVhLi44ZTBl
MmQ3ZWZlNTVkNzkyMzgxNWNlMGVhNzY3ZjM5OGZhOGVkNmI3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC1nZXQtcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QtZ2V0
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC00MDcsOCArNDA3LDggQEAgZGVzY3JpcHRpb246
IGZ1bmN0aW9uIHVuYm91bmRGdW5jdGlvbigpIHsKIH0KIAogT1dOIFBST1BFUlRJRVM6Ci0gICAg
bmFtZQogICAgIGxlbmd0aAorICAgIG5hbWUKICAgICBfX3Byb3RvX18KICAgICB0YXJnZXRGdW5j
dGlvbgogICAgIGJvdW5kVGhpcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1
bnRpbWUvZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9ydW50aW1lL2dldERpc3BsYXlhYmxlUHJvcGVydGllcy1leHBlY3RlZC50eHQK
aW5kZXggZDkzYTVjNDI1NTU3YTE1YWMzNzEwZmUwNmZkMTg1ZWZmODJjYzk5Mi4uMTYzMzc5ZDQ2
OGZkNmZmMzg5OGEzN2E4YmVjOWQzZGVhYjExMWFjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3J1bnRpbWUvZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVudGltZS9nZXREaXNwbGF5YWJsZVByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0CkBAIC0zMyw4ICszMyw4IEBAIFByb3BlcnRpZXM6CiBFdmFsdWF0aW5n
IGV4cHJlc3Npb24uLi4KIEdldHRpbmcgZGlzcGxheWFibGUgcHJvcGVydGllcy4uLgogUHJvcGVy
dGllczoKLSAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCBUZXN0IiAoc3RyaW5nKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQogICAgICJsZW5ndGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQorICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5kIFRlc3QiIChzdHJp
bmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgImNhbGxlciIgICAgID0+ICAiVHlwZUVy
cm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNz
ZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgImFy
Z3VtZW50cyIgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2Fs
bGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikg
IFt3YXNUaHJvd25dCiAgICAgIl9fcHJvdG9fXyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtu
YXRpdmUgY29kZV1cbn0iIChmdW5jdGlvbikgIFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlz
T3duXQpAQCAtNDYsOCArNDYsOCBAQCBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogRXZhbHVhdGluZyBl
eHByZXNzaW9uLi4uCiBHZXR0aW5nIGRpc3BsYXlhYmxlIHByb3BlcnRpZXMuLi4KIFByb3BlcnRp
ZXM6Ci0gICAgIm5hbWUiICAgICAgID0+ICAiYm91bmQgVGVzdCIgKHN0cmluZykgIFtjb25maWd1
cmFibGUgfCBpc093bl0KICAgICAibGVuZ3RoIiAgICAgPT4gIDAgKG51bWJlcikgIFtjb25maWd1
cmFibGUgfCBpc093bl0KKyAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCBUZXN0IiAoc3RyaW5n
KSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJjYWxsZXIiICAgICA9PiAgIlR5cGVFcnJv
cjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2Vk
IGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3duXQogICAgICJhcmd1
bWVudHMiICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxl
cicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBb
d2FzVGhyb3duXQogICAgICJfX3Byb3RvX18iICA9PiAgImZ1bmN0aW9uICgpIHtcbiAgICBbbmF0
aXZlIGNvZGVdXG59IiAoZnVuY3Rpb24pICBbd3JpdGFibGUgfCBjb25maWd1cmFibGUgfCBpc093
bl0KQEAgLTgyLDggKzgyLDggQEAgUHJvcGVydGllczoKIEV2YWx1YXRpbmcgZXhwcmVzc2lvbi4u
LgogR2V0dGluZyBkaXNwbGF5YWJsZSBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgotICAgICJu
YW1lIiAgICAgICA9PiAgImJvdW5kICIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0K
ICAgICAibGVuZ3RoIiAgICAgPT4gIDMgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0K
KyAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCAiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwg
aXNPd25dCiAgICAgImNhbGxlciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2Nh
bGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIg
KG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgImFyZ3VtZW50cyIgID0+ICAiVHlwZUVy
cm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNz
ZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgIl9f
cHJvdG9fXyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iIChmdW5j
dGlvbikgIFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlzT3duXQpAQCAtOTUsOCArOTUsOCBA
QCBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogRXZhbHVhdGluZyBleHByZXNzaW9uLi4uCiBHZXR0aW5n
IGRpc3BsYXlhYmxlIHByb3BlcnRpZXMuLi4KIFByb3BlcnRpZXM6Ci0gICAgIm5hbWUiICAgICAg
ID0+ICAiYm91bmQgIiAoc3RyaW5nKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJsZW5n
dGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQorICAgICJuYW1l
IiAgICAgICA9PiAgImJvdW5kICIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAg
ICAiY2FsbGVyIiAgICAgPT4gICJUeXBlRXJyb3I6ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5k
ICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIiAob2JqZWN0IGVy
cm9yKSAgW3dhc1Rocm93bl0KICAgICAiYXJndW1lbnRzIiAgPT4gICJUeXBlRXJyb3I6ICdhcmd1
bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlz
IGNvbnRleHQuIiAob2JqZWN0IGVycm9yKSAgW3dhc1Rocm93bl0KICAgICAiX19wcm90b19fIiAg
PT4gICJmdW5jdGlvbiAoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dy
aXRhYmxlIHwgY29uZmlndXJhYmxlIHwgaXNPd25dCkBAIC0xMDksOCArMTA5LDggQEAgSW50ZXJu
YWwgUHJvcGVydGllczoKIEV2YWx1YXRpbmcgZXhwcmVzc2lvbi4uLgogR2V0dGluZyBkaXNwbGF5
YWJsZSBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgotICAgICJuYW1lIiAgICAgICA9PiAgImJv
dW5kICIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAibGVuZ3RoIiAgICAg
PT4gIDAgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0KKyAgICAibmFtZSIgICAgICAg
PT4gICJib3VuZCAiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgImNhbGxl
ciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVy
JyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3
YXNUaHJvd25dCiAgICAgImFyZ3VtZW50cyIgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywg
J2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0
LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgIl9fcHJvdG9fXyIgID0+ICAiZnVu
Y3Rpb24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iIChmdW5jdGlvbikgIFt3cml0YWJsZSB8
IGNvbmZpZ3VyYWJsZSB8IGlzT3duXQpAQCAtMTIyLDggKzEyMiw4IEBAIEludGVybmFsIFByb3Bl
cnRpZXM6CiBFdmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdldHRpbmcgZGlzcGxheWFibGUgcHJv
cGVydGllcy4uLgogUHJvcGVydGllczoKLSAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCAiIChz
dHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgImxlbmd0aCIgICAgID0+ICAwIChu
dW1iZXIpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCisgICAgIm5hbWUiICAgICAgID0+ICAiYm91
bmQgIiAoc3RyaW5nKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJjYWxsZXIiICAgICA9
PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90
IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3du
XQogICAgICJhcmd1bWVudHMiICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUn
LCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmpl
Y3QgZXJyb3IpICBbd2FzVGhyb3duXQogICAgICJfX3Byb3RvX18iICA9PiAgImZ1bmN0aW9uICgp
IHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IiAoZnVuY3Rpb24pICBbd3JpdGFibGUgfCBjb25maWd1
cmFibGUgfCBpc093bl0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9ydW50aW1l
L2dldFByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRp
bWUvZ2V0UHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMjE4MGJkM2IyYzNiMGU2YjZmNDBi
Y2IwZWNkNzZlM2MwNzY0MGQxMi4uZTA0MzNlY2U0Yzc2M2Y3YzVmOGE5YTg4ODhiNWViZWJmZmFk
YTQyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZ2V0UHJvcGVy
dGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZ2V0
UHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTMxLDggKzMxLDggQEAgUHJvcGVydGllczoKIEV2
YWx1YXRpbmcgZXhwcmVzc2lvbi4uLgogR2V0dGluZyBvd24gcHJvcGVydGllcy4uLgogUHJvcGVy
dGllczoKLSAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCBUZXN0IiAoc3RyaW5nKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQogICAgICJsZW5ndGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQorICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5kIFRlc3QiIChzdHJp
bmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgIl9fcHJvdG9fXyIgID0+ICAiZnVuY3Rp
b24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iIChmdW5jdGlvbikgIFt3cml0YWJsZSB8IGNv
bmZpZ3VyYWJsZSB8IGlzT3duXQogSW50ZXJuYWwgUHJvcGVydGllczoKICAgICAidGFyZ2V0RnVu
Y3Rpb24iICA9PiAgImNsYXNzIFRlc3QgeyB9IiAoZnVuY3Rpb24gY2xhc3MpICBbXQpAQCAtNDIs
OCArNDIsOCBAQCBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogRXZhbHVhdGluZyBleHByZXNzaW9uLi4u
CiBHZXR0aW5nIG93biBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgotICAgICJuYW1lIiAgICAg
ICA9PiAgImJvdW5kIFRlc3QiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAg
Imxlbmd0aCIgICAgID0+ICAwIChudW1iZXIpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCisgICAg
Im5hbWUiICAgICAgID0+ICAiYm91bmQgVGVzdCIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBp
c093bl0KICAgICAiX19wcm90b19fIiAgPT4gICJmdW5jdGlvbiAoKSB7XG4gICAgW25hdGl2ZSBj
b2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29uZmlndXJhYmxlIHwgaXNPd25dCiBJ
bnRlcm5hbCBQcm9wZXJ0aWVzOgogICAgICJ0YXJnZXRGdW5jdGlvbiIgID0+ICAiY2xhc3MgVGVz
dCB7IH0iIChmdW5jdGlvbiBjbGFzcykgIFtdCkBAIC03Niw4ICs3Niw4IEBAIFByb3BlcnRpZXM6
CiBFdmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdldHRpbmcgb3duIHByb3BlcnRpZXMuLi4KIFBy
b3BlcnRpZXM6Ci0gICAgIm5hbWUiICAgICAgID0+ICAiYm91bmQgIiAoc3RyaW5nKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQogICAgICJsZW5ndGgiICAgICA9PiAgMyAobnVtYmVyKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQorICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5kICIgKHN0cmluZykg
IFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAiX19wcm90b19fIiAgPT4gICJmdW5jdGlvbiAo
KSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29uZmln
dXJhYmxlIHwgaXNPd25dCiBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogICAgICJ0YXJnZXRGdW5jdGlv
biIgID0+ICAiZnVuY3Rpb24gKGEsIGIsIGMpe30iIChmdW5jdGlvbikgIFtdCkBAIC04Nyw4ICs4
Nyw4IEBAIEludGVybmFsIFByb3BlcnRpZXM6CiBFdmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdl
dHRpbmcgb3duIHByb3BlcnRpZXMuLi4KIFByb3BlcnRpZXM6Ci0gICAgIm5hbWUiICAgICAgID0+
ICAiYm91bmQgIiAoc3RyaW5nKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJsZW5ndGgi
ICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQorICAgICJuYW1lIiAg
ICAgICA9PiAgImJvdW5kICIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAi
X19wcm90b19fIiAgPT4gICJmdW5jdGlvbiAoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1
bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29uZmlndXJhYmxlIHwgaXNPd25dCiBJbnRlcm5hbCBQcm9w
ZXJ0aWVzOgogICAgICJ0YXJnZXRGdW5jdGlvbiIgID0+ICAiZnVuY3Rpb24gKGEsIGIsIGMpe30i
IChmdW5jdGlvbikgIFtdCkBAIC05OSw4ICs5OSw4IEBAIEludGVybmFsIFByb3BlcnRpZXM6CiBF
dmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdldHRpbmcgb3duIHByb3BlcnRpZXMuLi4KIFByb3Bl
cnRpZXM6Ci0gICAgIm5hbWUiICAgICAgID0+ICAiYm91bmQgIiAoc3RyaW5nKSAgW2NvbmZpZ3Vy
YWJsZSB8IGlzT3duXQogICAgICJsZW5ndGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZpZ3Vy
YWJsZSB8IGlzT3duXQorICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5kICIgKHN0cmluZykgIFtj
b25maWd1cmFibGUgfCBpc093bl0KICAgICAiX19wcm90b19fIiAgPT4gICJmdW5jdGlvbiAoKSB7
XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29uZmlndXJh
YmxlIHwgaXNPd25dCiBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogICAgICJ0YXJnZXRGdW5jdGlvbiIg
ID0+ICAiZnVuY3Rpb24gKCl7fSIgKGZ1bmN0aW9uKSAgW10KQEAgLTExMCw4ICsxMTAsOCBAQCBJ
bnRlcm5hbCBQcm9wZXJ0aWVzOgogRXZhbHVhdGluZyBleHByZXNzaW9uLi4uCiBHZXR0aW5nIG93
biBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgotICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5k
ICIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAibGVuZ3RoIiAgICAgPT4g
IDAgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0KKyAgICAibmFtZSIgICAgICAgPT4g
ICJib3VuZCAiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgIl9fcHJvdG9f
XyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iIChmdW5jdGlvbikg
IFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlzT3duXQogSW50ZXJuYWwgUHJvcGVydGllczoK
ICAgICAidGFyZ2V0RnVuY3Rpb24iICA9PiAgImZ1bmN0aW9uICgpe30iIChmdW5jdGlvbikgIFtd
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGFlN2YxNmI4ZTM1NDA4NmIwYmQ2ZTU4NGI3ZTNkMjYzNjdlYjc3YjguLjkyNjdlODQ4NmU2MDQx
ZGEwNTRmMjE2M2ZhMjg0MGJlOGFhMTgzYTggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMjAgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3Zl
IG91ciBib3VuZCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZnVuY3Rpb24tYmlu
ZC1uby1pbmxpbmluZy1yZXBlYXQtY2FsbC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgIChmb28pOgorICAgICAg
ICAobGV0LnN0YXJ0LkRhdGUubm93KToKKyAgICAgICAgKiBzdHJlc3MvYmluZC1hcmdzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodGVz
dDIpOgorCiAyMDE5LTEyLTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gOEJpdCBKU1JvcGVTdHJpbmcgY2FuIGNvbnRhaW4gMTZCaXQgc3RyaW5n
IGluIGl0cyByb3BlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlv
bi1iaW5kLW5vLWlubGluaW5nLXJlcGVhdC1jYWxsLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvZnVuY3Rpb24tYmluZC1uby1pbmxpbmluZy1yZXBlYXQtY2FsbC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ODI4Zjc0OTc2M2E5MmMzNTliNWFhN2Q2YTk4N2NmN2I4ZTdiM2EzCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tYmluZC1uby1pbmxpbmluZy1yZXBl
YXQtY2FsbC5qcwpAQCAtMCwwICsxLDM2IEBACisKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAg
aWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCIpCit9Citub0lubGluZShhc3Nl
cnQpOworCitmdW5jdGlvbiB0ZXN0KGYsIHYsIGMsIGQpIHsKKyAgICByZXR1cm4gZi5iaW5kKHYs
IGMsIGQpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Z1bmN0aW9uIHRlc3QyKGYsIHYpIHsKKyAg
ICByZXR1cm4gZi5iaW5kKHYpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Z1bmN0aW9uIGZvbyhh
LGIsYyxkLGUsZikgeyByZXR1cm4gdGhpczsgfQorbGV0IHRoaXNWYWx1ZSA9IHt9OworbGV0IHN0
YXJ0ID0gRGF0ZS5ub3coKTsKKworeworICAgIGxldCBmID0gdGVzdChmb28sIHRoaXNWYWx1ZSwg
MjAsIDMwKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgeworICAgICAg
ICBhc3NlcnQoZihmb28sIHRoaXNWYWx1ZSwgMjAsIDMwKSA9PT0gdGhpc1ZhbHVlKTsKKyAgICB9
Cit9Cit7CisgICAgbGV0IGYgPSB0ZXN0Mihmb28sIHRoaXNWYWx1ZSk7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGYoZm9vLCB0aGlzVmFs
dWUsIDIwLCAzMCkgPT09IHRoaXNWYWx1ZSk7CisgICAgfQorfQorY29uc3QgdmVyYm9zZSA9IGZh
bHNlOworaWYgKHZlcmJvc2UpCisgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0KTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpbmQtYXJncy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpbmQt
YXJncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NzdkNmZiYzQ0ODJmZjkxMzJhNjkwMmI3NWMwN2FhMzNmOGRk
OWM3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmluZC1hcmdzLmpzCkBAIC0w
LDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCitmdW5jdGlvbiB0ZXN0
KGEsIGIsIGMsIGQsIGUpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBlOworfQorbm9J
bmxpbmUodGVzdCk7CisKK2Z1bmN0aW9uIHRlc3QyKGEsIGIsIGMsIGQsIGUsIGYpCit7CisgICAg
cmV0dXJuIGEgKyBiICsgYyArIGQgKyBlICsgZjsKK30KK25vSW5saW5lKHRlc3QyKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAzZTQ7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3QuYmluZCh1bmRl
ZmluZWQpKDEsIDIsIDMsIDQsIDUpLCAxNSk7CisgICAgc2hvdWxkQmUodGVzdC5iaW5kKHVuZGVm
aW5lZCwgMSkoMiwgMywgNCwgNSksIDE1KTsKKyAgICBzaG91bGRCZSh0ZXN0LmJpbmQodW5kZWZp
bmVkLCAyLCAzKSg0LCA1LCA2KSwgMjApOworICAgIHNob3VsZEJlKHRlc3QuYmluZCh1bmRlZmlu
ZWQsIDIsIDMsIDQpKDUsIDYpLCAyMCk7CisgICAgc2hvdWxkQmUodGVzdC5iaW5kKHVuZGVmaW5l
ZCwgMiwgMywgNCwgNSkoNiksIDIwKTsKKyAgICBzaG91bGRCZSh0ZXN0LmJpbmQodW5kZWZpbmVk
LCAyLCAzLCA0LCA1LCA2KSgpLCAyMCk7CisKKyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5kKHVuZGVm
aW5lZCkoMSwgMSwgMiwgMywgNCwgNSksIDE2KTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5kKHVu
ZGVmaW5lZCwgMSkoMSwgMiwgMywgNCwgNSksIDE2KTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5k
KHVuZGVmaW5lZCwgMSwgMSkoMiwgMywgNCwgNSksIDE2KTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5i
aW5kKHVuZGVmaW5lZCwgMSwgMiwgMykoNCwgNSwgNiksIDIxKTsKKyAgICBzaG91bGRCZSh0ZXN0
Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMywgNCkoNSwgNiksIDIxKTsKKyAgICBzaG91bGRCZSh0
ZXN0Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMywgNCwgNSkoNiksIDIxKTsKKyAgICBzaG91bGRC
ZSh0ZXN0Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMywgNCwgNSwgNikoKSwgMjEpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386238</attachid>
            <date>2019-12-20 12:22:52 -0800</date>
            <delta_ts>2019-12-21 11:49:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205327-20191220122251.patch</filename>
            <type>text/plain</type>
            <size>181199</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjQ3MmNjNGJlMzExMzY2MDhjY2U3NzRlNWVlYjkxY2EwMDM4Y2Y1Li42M2UyZWYwNDI4OTNhOGU1
OTNhMTc3NzMyZTIyYmU4NWMyMjU1MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzMgQEAKKzIwMTktMTItMjAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIG91ciBib3VuZCBmdW5jdGlvbiBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1
MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXByb3ZlcyBGdW5jdGlvbiNiaW5kLCBhbmQgY2FsbGluZyBib3VuZCBmdW5jdGlv
biB3aXRoIGJvdW5kIGFyZ3VtZW50cy4KKworICAgICAgICAxLiBSZW5hbWUgQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCB0byBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcy4KKyAgICAgICAgMi4gRG8gbm90IGluY2x1ZGUgbmFtZSBpbiBOYXRpdmVFeGVjdXRhYmxl
IGZvciBKU0JvdW5kRnVuY3Rpb24uIFB1dHRpbmcgbmFtZSBpbiBOYXRpdmVFeGVjdXRhYmxlIGlz
IGFzc3VtaW5nIHRoYXQgZnVuY3Rpb24gKyBuYW1lIHBhaXIgaXMgYWxtb3N0IGlkZW50aWNhbC4K
KyAgICAgICAgICAgVGhpcyBpcyB0cnVlIGluIGhvc3QgZnVuY3Rpb25zIGV4Y2VwdCBmb3IgSlNC
b3VuZEZ1bmN0aW9uLiBKU0JvdW5kRnVuY3Rpb24gc2hvdWxkIGhvbGQgaXRzIG5hbWUgaW4gSlNC
b3VuZEZ1bmN0aW9uLgorICAgICAgICAzLiBDYWNoZSBOYXRpdmVFeGVjdXRhYmxlIGZvciBKU0Jv
dW5kRnVuY3Rpb24gaW4gVk0uIFVzaW5nIGhhc2gtbWFwIGluIEpJVFRodW5rIGZvciBOYXRpdmVF
eGVjdXRhYmxlIGlzIGFzc3VtaW5nIHRoYXQgaG9zdC1mdW5jdGlvbiBjcmVhdGlvbiBpcyBub3Qg
ZG9uZSBieQorICAgICAgICAgICB1c2VyIHByb2dyYW06IGVhY2ggZnVuY3Rpb24gaXMgcHJlLWRl
ZmluZWQgb25lIGJ5IHRoZSBlbnZpcm9ubWVudCwgYW5kIHRoZXJlIGlzIG5vIGNhc2UgY3JlYXRp
bmcgaG9zdC1mdW5jdGlvbnMgcmVwZWF0ZWRseSBmcm9tIHVzZXItcHJvZ3JhbS4gVGhpcyBpcyBu
b3QKKyAgICAgICAgICAgdHJ1ZSBmb3IgSlNCb3VuZEZ1bmN0aW9uLiBXZSBzaG91bGQgY2FjaGUg
TmF0aXZlRXhlY3V0YWJsZSBpbiBWTSB0byBsb29rIHVwIGZhc3QuCisgICAgICAgIDQuIFRodW5r
R2VuZXJhdG9yIHNob3VsZCBzdXBwb3J0IEpTQm91bmRGdW5jdGlvbiBjYWxsIHdpdGggYm91bmQg
YXJndW1lbnRzLiBJdCB0dXJucyBvdXQgdGhhdCBTcGVlZG9tZXRlcjIvUmVhY3QtUmVkdXgtVG9k
b01WQyBpcyB1c2luZyBib3VuZCBmdW5jdGlvbiB3aXRoCisgICAgICAgICAgIGJvdW5kIGFyZ3Vt
ZW50cy4gQW5kIGl0IGlzIHVzZWQgYXMgZXZlbnQgbGlzdGVuZXIuIFRoaXMgaXMgcmVhbGx5IGJh
ZDogd2hlbiBkaXNwYXRjaGluZyBhbiBldmVudCwgd2UgZmlyc3QgY2FsbCB0aGlzIGZ1bmN0aW9u
IGZyb20gQysrLCBlbnRlcmluZyBKUyB3b3JsZCwKKyAgICAgICAgICAgZ29pbmcgYmFjayB0byBD
Kysgd29ybGQgYWdhaW4sIGFuZCBlbnRlcmluZyBKUyB3b3JsZCB0byBjYWxsIGJvdW5kIGZ1bmN0
aW9uIGFnYWluLiBCeSB1c2luZyBUaHVua0dlbmVyYXRvciwgd2UgY2FuIGVsaW1pbmF0ZSB0aGlz
IGJhY2sgYW5kIGZvcnRoIGJ5IGRpcmVjdGx5CisgICAgICAgICAgIGNhbGxpbmcgYm91bmQgSlMg
RXhlY3V0YWJsZSBmcm9tIHRodW5rLiBQcmV2aW91c2x5LCBib3VuZCBhcmd1bWVudHMgYXJlIHN0
b3JlZCBpbiBKU0FycmF5LiBCdXQgaXQgaXMgZGlmZmljdWx0IHRvIGFjY2VzcyB0aGVtIGZyb20g
dGh1bmsgc2luY2Ugd2UgbmVlZCB0byBjb25zaWRlcgorICAgICAgICAgICBoYXZlLWEtYmFkLXRp
bWUgY2FzZS4gSW5zdGVhZCwgd2UgdXNlIEpTSW1tdXRhYmxlQnV0dGVyZmx5IHRvIHNhdmUgYm91
bmQgYXJndW1lbnRzIHNvIHRoYXQgSklUIHRodW5rIGNhbiBxdWlja2x5IGFjY2VzcyBhcmd1bWVu
dHMuIFRvIGNhcHR1cmUgYXJndW1lbnRzIGFzCisgICAgICAgICAgIEpTSW1tdXRhYmxlQnV0dGVy
Zmx5IGluIEpTIHdvcmxkLCB3ZSBpbnRyb2R1Y2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJm
bHksIGFuZCBoYW5kbGUgaXQgaW4gYWxsIHRpZXJzLgorICAgICAgICA1LiBJdCB0dXJucyBvdXQg
dGhhdCBlYWdlciBtYXRlcmlhbGl6YXRpb24gb2YgImxlbmd0aCIgaW4gSlNCb3VuZEZ1bmN0aW9u
IHRha2VzIGxvbmcgdGltZSB3aGlsZSBpdCBpcyByYXJlbHkgdXNlZC4gVGhpcyBwYXRjaCBtYWtl
cyBsZW5ndGggbGF6aWx5IHJlaWZpZWQgZm9yIEpTQm91bmRGdW5jdGlvbi4KKyAgICAgICAgNi4g
VG8gbWFrZSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBmYXN0ZXIsIHdlIHRyYWNrIHdoZXRoZXIg
Im5hbWUiIGFuZCAibGVuZ3RoIiBwcm9wZXJ0aWVzIG9mIEpTRnVuY3Rpb24gaXMgbW9kaWZpZWQg
b3Igbm90LiBUaGlzIHNraXBzIGhhcy1vd24tbGVuZ3RoLXByb3BlcnR5IGNoZWNrLCB3aGljaAor
ICAgICAgICAgICBtYWtlcyBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAxMX4lIGZhc3Rlci4KKwor
ICAgICAgICBDb21iaW5pbmcgdGhpbmdzIGFib3ZlLCBjcmVhdGlvbiBvZiBKU0JvdW5kRnVuY3Rp
b24gaXMgODB+JSBmYXN0ZXIuIEFuZCBjYWxsaW5nIGJvdW5kIGZ1bmN0aW9uIHdpdGggYm91bmQg
YXJndW1lbnRzIGlzIDN+eCBmYXN0ZXIuCisgICAgICAgIFRoaXMgaW1wcm92ZXMgU3BlZWRvbWV0
ZXIyL1JlYWN0LVRvZG9NVkMgYnkgfjMlLgorCisgICAgICAgICogYnVpbHRpbnMvRnVuY3Rpb25Q
cm90b3R5cGUuanM6CisgICAgICAgIChiaW5kKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAg
ICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHA6CisgICAgICAgIChKU0M6
OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHM6OmdlbmVyYXRlSW1wbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgor
ICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAg
KiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuY3BwOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVn
aXN0ZXI6OmR1bXAgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19jcmVhdGVBcmd1bWVu
dHNCdXR0ZXJmbHkpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1p
bmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3QpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmZsdXNoSW1wbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2Ji
ZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcv
REZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRm
Zy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmlzTGl2ZUluQnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjpmb3JBbGxMb2NhbHNMaXZlSW5CeXRlY29kZSk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZW1pdFN0b3JlQ2FsbFNpdGVJbmRleCk6
CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkxvY2FsT1NSQXZh
aWxhYmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UmVzdG9yZUFyZ3VtZW50cyk6CisgICAg
ICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlaWZ5SW5saW5lZENh
bGxGcmFtZXMpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVy
aXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3I6
OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTdGFja0xheW91dFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd2VyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0
dGVyZmx5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEaXJlY3RDYWxs
T3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxFdmFsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FsbFByZWZsaWdodCk6CisgICAgICAg
ICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxPcGVyYXRp
b24pOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkNhbGxGcmFtZTo6Y2FsbFNpdGVBc1Jhd0JpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWU6OnVuc2FmZUNhbGxTaXRlQXNSYXdCaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fs
bEZyYW1lOjpzZXRDdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUu
aDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyBj
b25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6c2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKToKKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
YXJndW1lbnRDb3VudCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnByZXBhcmVGb3JUYWlsQ2FsbFNsb3cpOgorICAgICAgICAqIGpp
dC9DYWxsRnJhbWVTaHVmZmxlci5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVy
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVG
b3JUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55
KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlV2l0aG91dExpbmtpbmcp
OgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxl
U2V0dXBGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVw
RnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGpp
dC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9hcmd1bWVudF9jb3VudCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9s
ZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50KToKKyAgICAg
ICAgKiBqaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjplbWl0U2V0dXBW
YXJhcmdzRnJhbWVGYXN0Q2FzZSk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQu
aDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6U3BlY2lhbGl6ZWRUaHVua0pJ
VCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmFy
aXR5Rml4dXBHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRv
cik6IERlbGV0ZWQuCisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAg
ICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlQmFz
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uUmFyZURhdGE6OkZ1bmN0aW9uUmFyZURhdGEpOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29t
cGFyZSk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6
CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2Fs
bCk6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Ym91
bmRUaGlzTm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0
aW9uQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weSk6CisgICAgICAgIChKU0M6OkpT
Qm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAo
SlNDOjpKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rp
b246Om5hbWUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93
blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cmVpZnlMZW5ndGgpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpyZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6cmVpZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZO
ZWVkZWQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpyZWlmeUxhenlCb3VuZE5hbWVJZk5l
ZWRlZCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphcmVOYW1l
QW5kTGVuZ3RoT3JpZ2luYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjptYWtlQm91bmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6Omhhc093
bkxlbmd0aFByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OmdldEpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpnZXRDYWxsRGF0YSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OmdldENvbnN0cnVjdERhdGEpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmdldENhbGxEYXRhKToK
KyAgICAgICAgKEpTQzo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OnRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKToKKyAgICAgICAg
KEpTQzo6Vk06OmdldEJvdW5kRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAg
ICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRv
SlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KToKKwogMjAx
OS0xMi0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24n
dCBjYWNoZSBzZWxmIGN1c3RvbXMgb24gZGljdGlvbmFyaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMKaW5kZXggZTQwYTY5NjMw
MDJmYjg2MjY3NDg2ZWU0ZDYzNmIyOGEwNzhjNGVlNi4uZjU5MzUyN2RjM2M0N2IzYWExNmRjMzA3
ZmYwYWRjNTNjNWY3NTNiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtNjEsMjMgKzYxLDIxIEBAIGZ1bmN0aW9uIGJp
bmQodGhpc1ZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGxldCB0YXJnZXQgPSB0
aGlzOworICAgIHZhciB0YXJnZXQgPSB0aGlzOwogICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAi
ZnVuY3Rpb24iKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBpcyBub3QgYSBmdW5j
dGlvbiBpbnNpZGUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQiKTsKIAotICAgIGxldCBhcmd1bWVu
dENvdW50ID0gYXJndW1lbnRzLmxlbmd0aDsKLSAgICBsZXQgYm91bmRBcmdzID0gbnVsbDsKLSAg
ICBsZXQgbnVtQm91bmRBcmdzID0gMDsKKyAgICB2YXIgYXJndW1lbnRDb3VudCA9IEBhcmd1bWVu
dENvdW50KCk7CisgICAgdmFyIGJvdW5kQXJncyA9IG51bGw7CisgICAgdmFyIG51bUJvdW5kQXJn
cyA9IDA7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPiAxKSB7CiAgICAgICAgIG51bUJvdW5kQXJn
cyA9IGFyZ3VtZW50Q291bnQgLSAxOwotICAgICAgICBib3VuZEFyZ3MgPSBAbmV3QXJyYXlXaXRo
U2l6ZShudW1Cb3VuZEFyZ3MpOwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUJvdW5k
QXJnczsgaSsrKQotICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGJvdW5kQXJncywgaSwgYXJn
dW1lbnRzW2kgKyAxXSk7CisgICAgICAgIGJvdW5kQXJncyA9IEBjcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHkoKTsKICAgICB9CiAKLSAgICBsZXQgbGVuZ3RoID0gMDsKKyAgICB2YXIgbGVuZ3RoID0g
MDsKICAgICBpZiAoQGhhc093bkxlbmd0aFByb3BlcnR5KHRhcmdldCkpIHsKLSAgICAgICAgbGV0
IGxlbmd0aFZhbHVlID0gdGFyZ2V0Lmxlbmd0aDsKKyAgICAgICAgdmFyIGxlbmd0aFZhbHVlID0g
dGFyZ2V0Lmxlbmd0aDsKICAgICAgICAgaWYgKHR5cGVvZiBsZW5ndGhWYWx1ZSA9PT0gIm51bWJl
ciIpIHsKICAgICAgICAgICAgIGxlbmd0aFZhbHVlID0gbGVuZ3RoVmFsdWUgfCAwOwogICAgICAg
ICAgICAgLy8gTm90ZSB0aGF0IHdlIG9ubHkgY2FyZSBhYm91dCBwb3NpdGl2ZSBsZW5ndGhWYWx1
ZXMsIGhvd2V2ZXIsIHRoaXMgY29tcGFyaXNpb24KQEAgLTg3LDkgKzg1LDkgQEAgZnVuY3Rpb24g
YmluZCh0aGlzVmFsdWUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsZXQgbmFtZSA9IHRhcmdl
dC5uYW1lOworICAgIHZhciBuYW1lID0gdGFyZ2V0Lm5hbWU7CiAgICAgaWYgKHR5cGVvZiBuYW1l
ICE9PSAic3RyaW5nIikKICAgICAgICAgbmFtZSA9ICIiOwogCi0gICAgcmV0dXJuIEBtYWtlQm91
bmRGdW5jdGlvbih0YXJnZXQsIGFyZ3VtZW50c1swXSwgYm91bmRBcmdzLCBsZW5ndGgsIG5hbWUp
OworICAgIHJldHVybiBAbWFrZUJvdW5kRnVuY3Rpb24odGFyZ2V0LCB0aGlzVmFsdWUsIGJvdW5k
QXJncywgbGVuZ3RoLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcAppbmRleCA2MDA2MmY5ZDQ4MDZmNzkyM2JkMzkzZDNhNzU5MmViOGI1
MDU4ODM4Li5kZDlhY2NhOWFkYzkwMjlhMGFlMWJjYWU5YjIwNjI2YWRkNjUyNDg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC0xNTA4LDcg
KzE1MDgsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogCiAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRs
aW5nT3JPcmlnaW5hbCgpLmJpdHMoKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpKSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0
dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkp
OwogCiAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyIHx8IG1fdHlwZSA9PSBTZXR0ZXIpIHsK
ICAgICAgICAgICAgIGF1dG8mIGFjY2VzcyA9IHRoaXMtPmFzPEdldHRlclNldHRlckFjY2Vzc0Nh
c2U+KCk7CkBAIC0xNTg1LDcgKzE1ODUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1w
bChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgICAgICBqaXQuc3RvcmUz
MigKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihudW1iZXJPZlBh
cmFtZXRlcnMpLAotICAgICAgICAgICAgICAgIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikgKyBQYXlsb2FkT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWUud2l0aE9mZnNldChDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHNpemVvZihSZWdpc3RlcikgKyBQYXlsb2Fk
T2Zmc2V0KSk7CiAKICAgICAgICAgICAgIGppdC5zdG9yZUNlbGwoCiAgICAgICAgICAgICAgICAg
bG9hZGVkVmFsdWVHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwpAQCAtMTc5Nyw3ICsxNzk3LDcgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAg
ICAgICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jYWxsU2l0ZUlu
ZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVy
PihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGppdC5tYWtlU3BhY2VPblN0YWNrRm9yQ0NhbGwoKTsKICAgICAgICAg
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlU25pcHBldFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCmluZGV4IGExNzRlMjQ3M2Y3NTMwY2M3NzcxNTNj
NjNiMTMxMzMwZWU1OGY1ODguLmIxZDQwNGExNDViZDIxNDFiM2EwYTljNDMxOTE4YTU4ZjlhZjE4
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
U25pcHBldFBhcmFtcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBTbG93UGF0
aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVibGljIEFjY2Vzc0Nhc2VTbmlwcGV0UGFy
YW1zOjpTbG93UAogCiAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5n
T3JPcmlnaW5hbCgpLmJpdHMoKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zvcihz
dGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
KSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFs
UmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwog
CiAgICAgICAgIGppdC5tYWtlU3BhY2VPblN0YWNrRm9yQ0NhbGwoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmgKaW5kZXggZjc2Zjc4NWJlMWJhMDQyZGFmOGRhMzMzZDJiMTM5ZDNhMTgzMDM5Yy4uODQ5
ZTM0YjE4OGE1OTc5ZjU1MTQyZTA1MzAyZDVlMjdhYTdmZDNkZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oCkBAIC03NCw2ICs3NCw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMy
X3Q7CiAgICAgbWFjcm8obmV3QXJyYXlXaXRoU2l6ZSkgXAogICAgIG1hY3JvKG5ld1Byb21pc2Up
IFwKICAgICBtYWNybyhjcmVhdGVQcm9taXNlKSBcCisgICAgbWFjcm8oY3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5KSBcCiAgICAgbWFjcm8oZGVmaW5lRW51bWVyYWJsZVdyaXRhYmxlQ29uZmlndXJh
YmxlRGF0YVByb3BlcnR5KSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5T
SUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShtYWNybykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggNzFiZjZiMDZjYzdlZjQ5MGY3YjM2YWEz
ZTIwMDY1MTc3ODdhZmZhNC4uYTliZDQ4MzcxYjRlMzBkYWY2MDQ0ZDA5NDlhMDcxZDE0YTFhZDA3
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CkBAIC0xMDgsNiArMTA4LDExIEBACiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAg
IH0KIAorb3AgOmNyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5LAorICAgIGFyZ3M6IHsKKyAgICAg
ICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBvcCA6Y3JlYXRlX3RoaXMsCiAgICAg
YXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGViNjMyOTM0ZWI2
YzFmYzVjY2FhNzFiMGU0MjkzYWE5YWQ2NjJlOTUuLmMwMThkZGZiOGIwMzk4MjNlMDYwOWNmNjU3
NzgzMjBjMzI5YTIzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtODEsNiArODEsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IElu
c3RydQogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9jcmVh
dGVfZGlyZWN0X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRz
OgorICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHk6CiAgICAgY2FzZSBvcF9n
ZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9jaGVja190cmFwczoKICAgICBjYXNlIG9wX2dl
dF9hcmd1bWVudDoKQEAgLTQ3MSw2ICs0NzIsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQog
ICAgIERFRlMoT3BDcmVhdGVEaXJlY3RBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wQ3JlYXRl
U2NvcGVkQXJndW1lbnRzLCBkc3QpCiAgICAgREVGUyhPcENyZWF0ZUNsb25lZEFyZ3VtZW50cywg
ZHN0KQorICAgIERFRlMoT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIGRzdCkKICAgICBERUZT
KE9wRGVsQnlJZCwgZHN0KQogICAgIERFRlMoT3BEZWxCeVZhbCwgZHN0KQogICAgIERFRlMoT3BV
bnNpZ25lZCwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZpcnR1YWxSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmly
dHVhbFJlZ2lzdGVyLmNwcAppbmRleCA0NWM2YmExY2EwMjgyODJmYmRhZjZiYjJhODAzMDYxMWNm
NTM0ODcyLi5jNjJkOTUxM2VhNTUzMzBlMGI0MWViM2ZlOGEwMzVjODVmNjM4NTQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmNwcApA
QCAtNDIsOCArNDIsOCBAQCB2b2lkIFZpcnR1YWxSZWdpc3Rlcjo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogICAgICAgICAgICAgb3V0LnByaW50KCJjb2RlQmxvY2siKTsKICAgICAgICAg
ZWxzZSBpZiAobV92aXJ0dWFsUmVnaXN0ZXIgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKQogICAg
ICAgICAgICAgb3V0LnByaW50KCJjYWxsZWUiKTsKLSAgICAgICAgZWxzZSBpZiAobV92aXJ0dWFs
UmVnaXN0ZXIgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkKLSAgICAgICAgICAgIG91
dC5wcmludCgiYXJndW1lbnRDb3VudCIpOworICAgICAgICBlbHNlIGlmIChtX3ZpcnR1YWxSZWdp
c3RlciA9PSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKKyAgICAg
ICAgICAgIG91dC5wcmludCgiYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMiKTsKICNpZiBDUFUo
QUREUkVTUzY0KQogICAgICAgICBlbHNlIGlmICghbV92aXJ0dWFsUmVnaXN0ZXIpCiAgICAgICAg
ICAgICBvdXQucHJpbnQoImNhbGxlckZyYW1lIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGY4MGE3
YzRmNjA4MTk1NWUxZTI0Y2UyMDU0YzAxM2FkY2JkNzg3ZTMuLmI1MmZjNjIzNTQzYjRjMWMzN2Yy
MTRlNzIxNzRiOTJlMjlhNTQ1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNzI2LDYgKzI3MjYs
MTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVBc3luY0dlbmVy
YXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGUKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShS
ZWdpc3RlcklEKiBkc3QpCit7CisgICAgT3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6OmVtaXQo
dGhpcywgZHN0KTsKKyAgICByZXR1cm4gZHN0OworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KQogewogICAgIE9wQ2hlY2tUZHo6OmVt
aXQodGhpcywgdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA5M2IxM2Y2ZGE4MTllMzFmZTA3YTA0
NWZmZWYwZWYyNmNiNTFlNmY5Li5lMTRhYTE2NTYyODEwZmQ5NjM3ZTAwYWVlN2NlYmZlZDQ1NjEw
NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCkBAIC03MjYsNiArNzI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVQcm9taXNlKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogbmV3VGFyZ2V0LCBib29sIGlzSW50ZXJuYWxQcm9taXNlKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdENyZWF0ZUdlbmVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IG5ld1RhcmdldCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDcmVhdGVBc3luY0dlbmVyYXRv
cihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5ld1RhcmdldCk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoUmVnaXN0ZXJJRCogZHN0KTsKICAg
ICAgICAgdm9pZCBlbWl0VERaQ2hlY2soUmVnaXN0ZXJJRCogdGFyZ2V0KTsKICAgICAgICAgYm9v
bCBuZWVkc1REWkNoZWNrKGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIHZvaWQgZW1pdFREWkNo
ZWNrSWZOZWNlc3NhcnkoY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB0YXJnZXQsIFJlZ2lz
dGVySUQqIHNjb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA1YTkzMDEzYzM3Y2IyZDgwMmFlZmU0NmQwM2IzNDAw
OGU4OTk2YjY0Li5lNGYyYWVhY2RiYjE3NDJmY2I5NzU2ZGJjNjk2M2NjNDU2MWI1Mzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0xNDYzLDYgKzE0NjMsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19uZXdQcm9taXNlKEpTQzo6Qnl0ZWNvZGVHZW5lcmEKICAgICBy
ZXR1cm4gZmluYWxEZXN0aW5hdGlvbi5nZXQoKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19jcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoSlND
OjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkKK3sK
KyAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2RlZmluZUVudW1lcmFibGVXcml0YWJsZUNvbmZpZ3VyYWJsZURhdGFQcm9wZXJ0eShKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIEpTQzo6UmVnaXN0ZXJJRCogZHN0KQogewog
ICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggNjRhY2I1NDBkNDBhZTE3OThmN2MyMjM2ZDgxZGZlMWM4NDA4ZDUzMC4u
ZGMxYzY0ZWU0ZTc2ZThmMTFiMzYxNmE1OWI1MzcyYzE3NGE2N2U3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMjk2NCw2ICsyOTY0LDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgIHNldEZvck5vZGUobm9kZSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJy
ZWFrOwogCisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgICAgIHNldEZv
ck5vZGUobm9kZSwgbV92bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhG
cm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJP
ZkluZGV4aW5nU2hhcGVzXS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCAKICAgICAgICAgICAg
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCBhZjJl
ZGE0YWQ4OGU5Yjk3YWFkNWY0ZjkzOTIzNzYyMTk1MmFlZjg0Li43MTNlNzk5OWE3YmZjYTIxZGRj
ZWE4ZTM0NjI2MGYzNDMxZTRkOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTU2MCw3ICs1
NjAsNyBAQCBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Nsb2JiZXJlZEJ5QmxvY2sgfD0gY2xv
YmJlcmVkQnlUaGlzQmxvY2sub3BlcmFuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJlZEJ5QmxvY2sgfHwgaW5saW5lQ2FsbEZyYW1l
LT5pc0Nsb3N1cmVDYWxsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKaW5kZXggNjI2MTEyM2NiZmVjM2ViYTE5NWQwOWI5MzEw
MjZmMjZjNzI1ODQ3Ni4uZmYxZDU2ODBmYWUwYTIwMDE0ZDFmMWUxM2RjM2U0OGQ4YzU0MzMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0
aWVzLmNwcApAQCAtNDIsNyArNDIsNyBAQCBib29sIGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3Qo
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3Mo
KQotICAgICAgICAmJiByZWcgPT0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkKKyAgICAgICAgJiYgcmVn
ID09IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKICAgICAvLyBXZSBkbyBub3QgaW5jbHVkZSBmaXh1cHMgaGVyZSBzaW5jZSBpdCBp
cyBub3QgcmVsYXRlZCB0byB8YXJndW1lbnRzfCwgcmVzdCBwYXJhbWV0ZXJzLCBhbmQgdmFyYXJn
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggN2U0YTlmZTYyMzNiNzQ0OWU4Mjg2NjJjMWU0OTlkYzllODQ0MDhiNy4uMDMwZmFiZmEz
MDdmMTlhMjY3YzBjZDVmYzNhZTU5ODNjZGFjYTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU1Miw3ICs1NTIsNyBAQCBjbGFz
cyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Ns
b3N1cmVDYWxsKQogICAgICAgICAgICAgICAgIGFkZEZsdXNoRGlyZWN0KGlubGluZUNhbGxGcmFt
ZSwgcmVtYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKQotICAgICAgICAgICAgICAgIGFkZEZsdXNoRGlyZWN0KGlubGluZUNhbGxGcmFtZSwg
cmVtYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgYWRkRmx1c2hEaXJlY3QoaW5s
aW5lQ2FsbEZyYW1lLCByZW1hcE9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gbV9ncmFwaC5iYXNlbGluZUNvZGVC
bG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpLT5udW1QYXJhbWV0ZXJzKCk7CiAKQEAgLTE5MDIsNyAr
MTkwMiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NJbmxpbmluZyhOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgVmlydHVhbFJlZ2lzdGVyCiAgICAgICAgIAogICAgICAgICBMb2Fk
VmFyYXJnc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbG9hZFZhcmFyZ3NEYXRhLmFkZCgpOwogICAg
ICAgICBkYXRhLT5zdGFydCA9IFZpcnR1YWxSZWdpc3RlcihyZW1hcHBlZEFyZ3VtZW50U3RhcnQg
KyAxKTsKLSAgICAgICAgZGF0YS0+Y291bnQgPSBWaXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRSZWdp
c3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOworICAgICAgICBkYXRh
LT5jb3VudCA9IFZpcnR1YWxSZWdpc3RlcihyZW1hcHBlZFJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICBkYXRhLT5vZmZz
ZXQgPSBhcmd1bWVudHNPZmZzZXQ7CiAgICAgICAgIGRhdGEtPmxpbWl0ID0gbWF4QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgIGRhdGEtPm1hbmRhdG9yeU1pbmltdW0gPSBtYW5k
YXRvcnlNaW5pbXVtOwpAQCAtMTkyMiw3ICsxOTIyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlVmFyYXJnc0lubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBWaXJ0dWFsUmVnaXN0
ZXIKICAgICAgICAgLy8gU1NBLiBGb3J0dW5hdGVseSwgd2UgYWxzbyBoYXZlIG90aGVyIHJlYXNv
bnMgZm9yIG5vdCBpbnNlcnRpbmcgY29udHJvbCBmbG93CiAgICAgICAgIC8vIGJlZm9yZSBTU0Eu
CiAgICAgICAgIAotICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNvdW50VmFyaWFibGUgPSBu
ZXdWYXJpYWJsZUFjY2Vzc0RhdGEoVmlydHVhbFJlZ2lzdGVyKHJlbWFwcGVkUmVnaXN0ZXJPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YSogY291bnRWYXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShWaXJ0dWFsUmVn
aXN0ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIC8vIFRoaXMgaXMgcHJldHR5IGxhbWUsIGJ1dCBp
dCB3aWxsIGZvcmNlIHRoZSBjb3VudCB0byBiZSBmbHVzaGVkIGFzIGFuIGludC4gVGhpcyBkb2Vz
bid0CiAgICAgICAgIC8vIG1hdHRlciB2ZXJ5IG11Y2gsIHNpbmNlIG91ciB1c2Ugb2YgYSBTZXRB
cmd1bWVudERlZmluaXRlbHkgYW5kIEZsdXNoZXMgZm9yIHRoaXMgbG9jYWwgc2xvdCBpcwogICAg
ICAgICAvLyBtb3N0bHkganVzdCBhIGZvcm1hbGl0eS4KQEAgLTY4OTcsNiArNjg5NywxMyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBjcmVhdGVBcmd1bWVudHMpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpOwogICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseTogeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVBcmd1bWVudHNCdXR0
ZXJmbHk+KCk7CisgICAgICAgICAgICBub3RpY2VBcmd1bWVudHNVc2UoKTsKKyAgICAgICAgICAg
IHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkp
KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NyZWF0ZV9hcmd1bWVudHNfYnV0dGVyZmx5
KTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldEZyb21Bcmd1bWVudHM+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZmQwYjZkNzRkYTY3N2JjNDUwOGNhYzQ5ZmM0ZWUx
Yzk4ZGE0ZTdhZC4uMjQ3N2FmMGU1N2Y0ZGVmYWYyOWIyZjgwYzA0NzVmNTNlZTExNWZkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjM0
LDYgKzIzNCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bj
b2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9jcmVhdGVf
ZGlyZWN0X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgog
ICAgIGNhc2Ugb3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHM6CisgICAgY2FzZSBvcF9jcmVhdGVf
YXJndW1lbnRzX2J1dHRlcmZseToKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAg
ICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDg5YmM2NDFmNTI2
YmI1M2ZmMDM3ZjczY2Y5NTBiYWM2NDZkNDk5NTQuLjVmMDJhYzBkZjkzYTJhZjhkNzQzZTFmMmU3
OGQxYWRjOTM5MmU3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgIHJlYWQoQWJz
dHJhY3RIZWFwKFN0YWNrLCBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlKSk7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygp
KQotICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgICAg
ICByZWFkKEFic3RyYWN0SGVhcChTdGFjaywgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgfQogCiAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzcGVjaWZpY2FsbHkgYWNjb3VudCB3aGljaCBub2RlcyBj
YW4gcmVhZCBmcm9tIHRoZSBzY29wZQpAQCAtNTI0LDYgKzUyNCw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVh
dGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CisgICAg
Y2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgIHJlYWQoU3RhY2spOwogICAg
ICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3Vu
dCk7CkBAIC03NzMsMTQgKzc3NCwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM6IHsKLSAgICAgICAgYXV0byBoZWFwID0gQWJzdHJhY3RIZWFwKFN0YWNrLCByZW1hcE9wZXJh
bmQobm9kZS0+YXJndW1lbnRzSW5saW5lQ2FsbEZyYW1lKCksIFZpcnR1YWxSZWdpc3RlcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICBhdXRvIGhlYXAgPSBBYnN0cmFj
dEhlYXAoU3RhY2ssIHJlbWFwT3BlcmFuZChub2RlLT5hcmd1bWVudHNJbmxpbmVDYWxsRnJhbWUo
KSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSkpOwogICAgICAgICByZWFkKGhlYXApOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFN0
YWNrUGF5bG9hZExvYywgaGVhcCksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6Ci0gICAgICAg
IHdyaXRlKEFic3RyYWN0SGVhcChTdGFjaywgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkp
OworICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgR2V0
UmVzdExlbmd0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA4
NTQxMjMxNDc0MWU2ZjExMjYxZjJlOTdjNDlmZTY0NGRhZTdiYWY3Li44YjUzOTQzZTI0YTMzNmJk
ZTEwOWNhNmMzNDAyOTRmNjJhYWE3ZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCkBAIC0yNTcsNiArMjU3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3Jl
YXRlU2NvcGVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgorICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNl
IENhbGxFdmFsOgogICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJhcmdzOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYWVlMWYwMDczYjBmNGJiY2M0NzM0
ZWI2NDFlNDY0OGMzMDU1YTI0NC4uOGFiODhjYzdmMTY2Y2M0N2I3YjQ4ODcwZGNhYzcyNWY2MmM4
ZmExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBA
IC0yNTIxLDYgKzI1MjEsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJ
ZFN0YXR1czoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKKyAgICAgICAgY2FzZSBD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAg
ICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGIz
MjBmNzA3Yzk1ZjEyMzkzODUxYmMzYjJiMmI0MmI5NTZkZDBiZjUuLjdkMGZhMzY0ZDViYmUzYzIy
MDMzOTM4OGNmYTU1YWQ2OGNhOWZkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCkBAIC0xMTYyLDcgKzExNjIsNyBAQCBib29sIEdyYXBoOjppc0xpdmVJbkJ5dGVjb2Rl
KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUtPmlzVmFyYXJncygpCi0gICAgICAgICAgICAgICAgICAgICYmIHJlZy5vZmZzZXQo
KSA9PSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSB7CisgICAgICAgICAgICAgICAgICAg
ICYmIHJlZy5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykgewogICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkxvb2tzIGxpa2UgdGhlIGFyZ3VtZW50IGNvdW50LlxuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCmluZGV4IGZhYjljZjAyYTI1OTc2ZWY0N2QxNzkwNWJhZDljZTAzZTM4MmJjZTUuLmVj
NGYyMmJlZTU1ZjFiMjkwNDJiZmIyM2UxMjY0ZmEyMDNjYWRkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKQEAgLTg2NSw3ICs4NjUsNyBAQCBjbGFzcyBHcmFwaCA6IHB1Ymxp
YyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZS0+aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgZnVuY3RvcihzdGFja09mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICAgICAgICAgIGZ1bmN0b3Ioc3RhY2tP
ZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgZnVuY3RvcihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCAz
ZDg0M2NlNThmMjBiNDExNjMzOWZjZGE5NTg4YWViYTZiN2E4YzJlLi43MGVlZjg4NmI0YThmZTI5
NDNmNDZiYWU3NmVjNmI2MzcwZTQ1MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgICAgIGFyaXR5Q2hlY2sgPSBsYWJlbCgpOwogICAgICAg
ICBjb21waWxlRW50cnkoKTsKIAotICAgICAgICBsb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXls
b2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEdQ
UkluZm86OnJlZ1QxKTsKKyAgICAgICAgbG9hZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cigoVmlydHVhbFJlZ2lzdGVyKUNhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBicmFuY2gzMihBYm92ZU9yRXF1YWwsIEdQ
UkluZm86OnJlZ1QxLCBUcnVzdGVkSW1tMzIobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkp
LmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CiAgICAgICAgIGVtaXRTdG9yZUNvZGVPcmln
aW4oQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAgICAgICAgIGlmIChtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAppbmRleCA2OGNhOThkZjZmNWM0YjdiNjM3MmNjMTU4MThlYzI1NzI4MmY4OWQ5Li5k
MWJkN2RhOWRmZmRjMzZjMjYwZTYzNWNiNjAwYTliMmYxOTE5ZDM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xMzUsNyArMTM1LDcgQEAgY2xhc3Mg
SklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKIAogICAgIHZvaWQgZW1pdFN0b3Jl
Q2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IGNhbGxTaXRlKQogICAgIHsKLSAgICAgICAgc3Rv
cmUzMihUcnVzdGVkSW1tMzIoY2FsbFNpdGUuYml0cygpKSwgdGFnRm9yKHN0YXRpY19jYXN0PFZp
cnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAg
c3RvcmUzMihUcnVzdGVkSW1tMzIoY2FsbFNpdGUuYml0cygpKSwgdGFnRm9yKHN0YXRpY19jYXN0
PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKSk7CiAgICAgfQogCiAgICAgLy8gQWRkIGEgY2FsbCBvdXQgZnJvbSBKSVQgY29kZSwgd2l0
aG91dCBhbiBleGNlcHRpb24gY2hlY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKaW5kZXggMjRjNzMzZDM4NzAyNzlmNGE1NmI0ZTY4OGJmMGJmMDZhYzI0YzFkNC4uODE5
MTNlZDA1YzhjYTI2OTM0MGFmNTE4N2ZhYTY3YzQxNzVmMjg4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNDI2LDYgKzQyNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVTY29wZWRBcmd1bWVudHMsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKENyZWF0ZUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oUGhhbnRvbUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseSwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0RnJvbUFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBc
CiAgICAgbWFjcm8oUHV0VG9Bcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhHZXRBcmd1bWVudCwgTm9kZVJlc3VsdEpTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcApp
bmRleCAzMjgwZjg3YTYyNjdkZjAzNGM4NGUzMzE4NTMwYzc0MTllNTVlOTdlLi43OWJjNzk2ODMx
MTMwYzAzN2Q1NDcwYzBlNzlkNWIwZDk5NTYyNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5j
cHAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIExvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRv
cjo6ZXhlY3V0ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+
aXNWYXJhcmdzKCkpIHsKICAgICAgICAgICAgIC8vIFJlY29yZCBob3cgdG8gcmVhZCBlYWNoIGFy
Z3VtZW50IGFuZCB0aGUgYXJndW1lbnQgY291bnQuCiAgICAgICAgICAgICBBdmFpbGFiaWxpdHkg
YXJndW1lbnRDb3VudCA9Ci0gICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMu
b3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3Bl
cmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2F2YWls
YWJpbGl0eS5tX2hlYXAuc2V0KFByb21vdGVkSGVhcExvY2F0aW9uKEFyZ3VtZW50Q291bnRQTG9j
LCBub2RlKSwgYXJndW1lbnRDb3VudCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDE4YzY0MTQ3OTM0MjQ2OWI0MWNhOGY5OGYzMDhiM2E0
YzkzM2JhOTguLjZmZWRiMTliMWFlYmY0NTM0YTA0ZGJmMDA4ZWE4ZDQ5MjlkMjg5MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtMjk1LDcgKzI5NSw3IEBA
IHN0YXRpYyB2b2lkIGVtaXRSZXN0b3JlQXJndW1lbnRzKENvbnRleHQmIGNvbnRleHQsIENvZGVC
bG9jayogY29kZUJsb2NrLCBERkc6OkpJCiAKICAgICAgICAgaW50MzJfdCBhcmd1bWVudENvdW50
OwogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKQotICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGZyYW1lLm9wZXJhbmQ8aW50MzJf
dD4oc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBQYXlsb2FkT2Zm
c2V0KTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBmcmFtZS5vcGVyYW5kPGludDMyX3Q+
KHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IFBheWxvYWRPZmZzZXQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcmd1bWVudENvdW50
ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKIApAQCAtODE1
LDE4ICs4MTUsMTggQEAgc3RhdGljIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDb250ZXh0
JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9zdEJhc2VsaW4KICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGZyYW1l
LnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBQYXlsb2FkT2Zmc2V0LCBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJh
bmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgUGF5bG9hZE9mZnNldCwgaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgIEFTU0VSVChjYWxsZXJG
cmFtZSk7CiAgICAgICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJG
cmFtZU9mZnNldCgpLCBjYWxsZXJGcmFtZSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAg
dWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29k
ZUluZGV4KCkpLmJpdHMoKTsKLSAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQs
IFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50
MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CiAgICAgICAg
IGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQogICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlLCBKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpOwogI2Vs
c2UgLy8gVVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKICAgICAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CiAgICAg
ICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChi
aXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGluc3RydWN0aW9uKSkpLmJpdHMoKTsKLSAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBUYWdPZmZz
ZXQsIGxvY2F0aW9uQml0cyk7CiAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFRhZ09m
ZnNldCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAg
aWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICBmcmFtZS5z
ZXRPcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUsIFBheWxvYWRPZmZzZXQsIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSk7
CkBAIC04NDEsNyArODQxLDcgQEAgc3RhdGljIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhD
b250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9zdEJhc2VsaW4KICAgICAgICAgY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmF0KGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKSkucHRyKCk7CiAg
ICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRl
eChiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGluc3RydWN0aW9uKSkpLmJpdHMoKTsKICNlbmRpZgot
ICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgICAgIGZyYW1lLnNldE9wZXJh
bmQ8dWludDMyX3Q+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBU
YWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CiAgICAgfQogfQogCkBAIC05OTcsNyArOTk3LDcgQEAg
dm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgVk0m
IHZtLCBjb25zdCBPcGVyYW5kczxWYWwKIAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8
fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICBqaXQubG9hZDMy
KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihzdGFja09mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLAorICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBqaXQubW92ZSgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRl
eCAyZmYzZWE4YjVmYmI2ZjNmMjcyMWQ1MDI0NDU2Mjk4YjA4NGQ1MTE1Li45YjAyMWJiNzExYmEw
MmQ5YmMxMDAzZDc3NDE0MzE3MmE1YjYzMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0zMDUsMTggKzMw
NSwxOCBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFpbmxpbmVD
YWxsRnJhbWUtPmlzVmFyYXJncygpKQotICAgICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBBc3NlbWJs
eUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkp
OwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGppdC5zdG9yZVB0cihjYWxsZXJGcmFtZUdQ
UiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlckZyYW1lT2Zmc2V0KCkpKTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0g
Q2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCkpLmJpdHMoKTsKLSAgICAg
ICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRz
KSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAg
ICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0
cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpKTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAg
ICAgICAgICAgICBqaXQuc3RvcmU2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZShpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZUNvbnN0YW50KCkpKSks
IEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkpOwogI2Vsc2UgLy8g
VVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKICAgICAgICAgaml0
LnN0b3JlUHRyKGNhbGxlckZyYW1lR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRl
T2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOwogICAgICAgICBj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYXQoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpKS5wdHIoKTsKICAgICAgICAg
dWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KGJpdHdp
c2VfY2FzdDx1aW50MzJfdD4oaW5zdHJ1Y3Rpb24pKSkuYml0cygpOwotICAgICAgICBqaXQuc3Rv
cmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJs
eUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgaml0LnN0
b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1i
bHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwog
ICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpKTsKICAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICBq
aXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFt
ZS0+Y2FsbGVlQ29uc3RhbnQoKSksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVh
bFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlKSkpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1l
cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKS5hdChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCkpLnB0cigpOwogICAg
ICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgo
Yml0d2lzZV9jYXN0PHVpbnQzMl90PihpbnN0cnVjdGlvbikpKS5iaXRzKCk7CiAjZW5kaWYKLSAg
ICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25C
aXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Io
KFZpcnR1YWxSZWdpc3RlcikoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAppbmRleCA1MGNhMDBiMDBiOTQ4OGExMDMyODcyNjI4YTllMmVlODczZjJjMzc5Li5i
NGEwODBkODI3YTJiNmU2OGI1NzViZTc4MDM4ZjM2ZWY3OWRlMzE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTIxMzQsNiArMjEzNCwyMyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgICAgICBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
YXJndW1lbnRTdGFydCwgbGVuZ3RoLCBjYWxsZWUpOwogfQogCitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1aW50MzJfdCBhcmd1bWVudENvdW50
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFi
bGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldy
aXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwg
YXJndW1lbnRDb3VudCk7CisgICAgaWYgKCFidXR0ZXJmbHkpIHsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYXJndW1lbnRD
b3VudDsgKytpbmRleCkKKyAgICAgICAgYnV0dGVyZmx5LT5zZXRJbmRleCh2bSwgaW5kZXgsIGFy
Z3VtZW50U3RhcnRbaW5kZXhdLmpzVmFsdWUoKSk7CisgICAgcmV0dXJuIGJ1dHRlcmZseTsKK30K
KwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1
cmluZ0V4aXQoVk0qIHZtUG9pbnRlciwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUs
IEpTRnVuY3Rpb24qIGNhbGxlZSwgdWludDMyX3QgYXJndW1lbnRDb3VudCkKIHsKICAgICBWTSYg
dm0gPSAqdm1Qb2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAppbmRleCA3ZDI0ZDA2YTA4MzhiNDc4ZWRiN2JiYzMyMDZjZjFhMjI3MWUyMmFkLi4zMzlmOTE4
YTQ5ZTY1ODg5MWIyNzJjOWY4YWZkYzk0ZWEwMDYzYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTk3LDYgKzE5Nyw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KFZNKiwgSW5s
aW5lQ2FsbEZyCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlU2NvcGVkQXJn
dW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3Rh
cnQsIHVpbnQzMl90IGxlbmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlLCBKU0xleGljYWxFbnZpcm9u
bWVudCopOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3Vt
ZW50c0R1cmluZ0V4aXQoVk0qLCBJbmxpbmVDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgdWludDMy
X3QgYXJndW1lbnRDb3VudCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFy
Z3VtZW50U3RhcnQsIHVpbnQzMl90IGxlbmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlKTsKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoSlNHbG9i
YWxPYmplY3QqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdWludDMyX3QgYXJndW1lbnRDb3Vu
dCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUmVzdChKU0dsb2JhbE9i
amVjdCosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCwgdW5zaWduZWQgYXJyYXlTaXplKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJheUJ1ZmZlcihWTSosIFN0cnVjdHVyZSosIEpTQ2VsbCopIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRBZGQoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUu
aAppbmRleCBhNThlMTc5NjU2MGZjNmQ5NGJiNDYzZDE0Mjk4ODZlMDc4ZjBhZmNjLi4xMjhjODQx
ZjBhYzdmOWRlYjYyZjdlNmZjNDYzYTUyODczNGM3NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMTEwLDE0
ICsxMTAsMTQgQEAgY2xhc3MgUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3IgewogICAgICAg
ICAgICAgICAgIC8vIFJlYWQgdGhlIG91dGVybW9zdCBhcmd1bWVudHMgYW5kIGFyZ3VtZW50IGNv
dW50LgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mQXJndW1lbnRz
VG9Ta2lwOyBpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZ3JhcGgubV9jb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSk7IGkrKykKICAgICAgICAgICAgICAgICAgICAgbV9yZWFkKHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKLSAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgICAgICBt
X3JlYWQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsgaSsr
KQogICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgpKSk7
CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAg
ICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgbV9y
ZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgfTsKIAogICAg
ICAgICBhdXRvIHJlYWRTcHJlYWQgPSBbJl0gKE5vZGUqIHNwcmVhZCkgewpAQCAtMTU4LDYgKzE1
OCw3IEBAIGNsYXNzIFByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yIHsKICAgICAgICAgY2Fz
ZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1l
bnRzOgogICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKKyAgICAgICAgY2FzZSBD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3Vt
ZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNl
IEdldFJlc3RMZW5ndGg6CkBAIC0yMjUsMTQgKzIyNiwxNCBAQCBjbGFzcyBQcmVjaXNlTG9jYWxD
bG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkgewog
ICAgICAgICAgICAgICAgIGlmIChpbmRleEluY2x1ZGluZ1RoaXMgPCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9ncmFwaC5tX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKICAgICAgICAgICAg
ICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4SW5jbHVkaW5n
VGhpcykpOwotICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpLCAiR2V0QXJndW1lbnQgaXMg
b25seSB1c2VkIGZvciBJbmxpbmVDYWxsRnJhbWUgaWYgdGhlIGNhbGwgZnJhbWUgaXMgdmFyYXJn
cy4iKTsKICAgICAgICAgICAgIGlmIChpbmRleEluY2x1ZGluZ1RoaXMgPCBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkpCiAgICAgICAgICAgICAgICAgbV9yZWFkKFZp
cnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoaW5kZXhJbmNsdWRpbmdUaGlzKS5vZmZzZXQoKSkpOwotICAgICAgICAg
ICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgbV9yZWFkKFZpcnR1
YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKQEAgLTI1Niw3ICsyNTcsNyBAQCBjbGFzcyBQcmVjaXNlTG9jYWxD
bG9iYmVyaXplQWRhcHRvciB7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+
aXNDbG9zdXJlQ2FsbCkKICAgICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3Rl
cihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7
CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAg
ICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKaW5kZXggODA1MDUxNmNiZmVjYzg0ZmUxOTU4NDI4YTBjZjg3Y2Q1NGVlMTE3Yi4uZWNl
OTQ3MDZlZTg0YzI2ZTE5YTE5OGUyMzVjYTc0ZmI3ODUxOTMxMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKQEAgLTExMjUsNiArMTEyNSwxMSBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmpl
Y3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNw
ZWNDZWxsT3RoZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIEZpYXRJbnQ1MjogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZW5hYmxlSW50NTIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IDE1YmU0MmFjM2I2OWFmNGRjNTgzOGExOGRmMzlkMDc4Y2EzMTY5MTkuLmI5
YTQ2YmViMDI1ODE2MjQ4ODhkZDE4MTAyYjJjNmQxOGJhNmRkNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zNzcsNiArMzc3LDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAg
ICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3Vt
ZW50czoKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKICAgICBjYXNlIEdldEZy
b21Bcmd1bWVudHM6CiAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICBjYXNlIFB1dFRvQXJndW1l
bnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCBiNWExMWM1MWVmMTBjZjdhNmIyMzE3MmQyZDhiZjhmNjc1ZTA1MmJkLi42MjkzZDA0
NzI3Mzk5NDVlMzVmZGI3N2NkYTlkNTZmMjIxMjAzYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNzgwOSw2ICs3ODA5LDI4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSog
bm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSogbm9kZSkKK3sK
KyAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBmbHVzaFJlZ2lzdGVycygpOworCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOworCisgICAgLy8gV2Ugc2V0IHVwIHRoZSBhcmd1bWVudHMgb3Vyc2VsdmVz
LCBiZWNhdXNlIHdlIGhhdmUgdGhlIHdob2xlIHJlZ2lzdGVyIGZpbGUgYW5kIHdlIGNhbgorICAg
IC8vIHNldCB0aGVtIHVwIGRpcmVjdGx5IGludG8gdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KKwor
ICAgIC8vIEFyZ3VtZW50czogMDpKU0dsb2JhbE9iamVjdCosIDE6c3RhcnQsIDM6bGVuZ3RoCisg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudCgyLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVtaXRHZXRM
ZW5ndGgobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CisgICAgbV9qaXQuc2V0
dXBBcmd1bWVudCgxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVtaXRHZXRBcmd1bWVudFN0YXJ0
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOworICAgIG1faml0LnNldHVwQXJn
dW1lbnQoMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGRlc3RHUFIpOyB9KTsKKworICAg
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCBy
ZXN1bHRHUFIpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVh
dGVSZXN0KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ3JlYXRlUmVz
dCk7CkBAIC0xMjQ0NywxNCArMTI0NjksMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKE5vZGUqIG5vZGUpCiAgICAgaWYgKElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+YXJndW1lbnRzSW5saW5lQ2FsbEZy
YW1lKCkpCiAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudFJlZ2lzdGVyOwogICAgIGVsc2UKLSAgICAgICAgYXJndW1lbnRDb3VudFJl
Z2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOwor
ICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpLCByZXN1bHQuZ3ByKCkp
OwogICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhOb2RlKiBub2Rl
KQogewotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG5vZGUtPmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCkpLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobm9kZS0+YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgbm9SZXN1bHQobm9k
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAppbmRleCBjNjRmOTc4YWRmODVmYmYyNzdiYmE3OTIxNjA2NGY0MjgxYjhkNWE5Li4yMmFkNDZm
OTA1Zjk3N2I5MGY4NWI5MWFjOTNjZGZjZGY2MDBlZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDAxLDYgKzE0MDEsNyBAQCBjbGFz
cyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnQoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVJlc3Qo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNwcmVhZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
TmV3QXJyYXkoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNjdiMGUwYjM3MDRjYTU5YTg5MGFjNTljODZk
YmQwZDJhMDU2ZGI4MS4uOGM4NTZjODc5ZTZmM2ExZDdkYjI5MTE1YWI4ZDM1M2NhZjFiZTE5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCkBAIC03MzUsNyArNzM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVBhc3NlZEFy
Z3M7IGkgPCBudW1BbGxvY2F0ZWRBcmdzOyArK2kpCiAgICAgICAgICAgICAgICAgc2h1ZmZsZURh
dGEuYXJnc1tpXSA9IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGpzVW5kZWZpbmVkKCkpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBtX2ppdC5jYWxsZWVGcmFtZVBheWxvYWRTbG90
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
MzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgbV9qaXQuY2Fs
bGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpOwogICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1QYXNzZWRBcmdzOyBpKyspIHsKICAgICAgICAgICAgICAgICBFZGdlIGFyZ0VkZ2UgPSBtX2pp
dC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGlsZCgpICsgMSArIGldOwpA
QCAtMzg3NCw2ICszODc0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNC
dXR0ZXJmbHk6IHsKKyAgICAgICAgY29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDcmVhdGVSZXN0OiB7CiAgICAg
ICAgIGNvbXBpbGVDcmVhdGVSZXN0KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDNlNjM4
YzliOTQ5ZWI1ZWEyNmEzMTA1ZGRiOGFmZTc2NjIxNjMzNDQuLjE3N2E4MTMyYWMzYjNmMzdjOTYx
NjVhMzc2MTVlMzA3Y2FkMjQ0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIHNodWZmbGVEYXRh
LnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2ppdC5jb2RlQmxvY2soKSk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIobnVtUGFzc2VkQXJncyksIEpJVENvbXBpbGVyOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
MzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdzKSwgSklUQ29tcGls
ZXI6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bVBhc3NlZEFyZ3M7IGkrKykgewogICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1faml0
LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07CkBA
IC00NTEzLDYgKzQ1MTMsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKG5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseTogewor
ICAgICAgICBjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBjYXNlIENyZWF0ZVJlc3Q6IHsKICAgICAgICAgY29tcGlsZUNy
ZWF0ZVJlc3Qobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKaW5kZXggYmVlYzg2YWM3YTdkMzMzZTM5
Njc5ZTI2NzU1OTA3NGU0NjRjOWI4Mi4uMTY4YjNkZjQzMzQ2NTdlNmFhZGI2NGJiZjYzM2VlYzVh
ZmExYjA0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xh
eW91dFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5
b3V0UGhhc2UuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgY2xhc3MgU3RhY2tMYXlvdXRQaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgdXNlZExvY2Fscy5zZXQoVmly
dHVhbFJlZ2lzdGVyKAotICAgICAgICAgICAgICAgICAgICBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50ICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9Mb2NhbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tOykgewpA
QCAtMTc1LDcgKzE3NSw3IEBAIGNsYXNzIFN0YWNrTGF5b3V0UGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkgewogICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudFJl
Z2lzdGVyID0gYXNzaWduKAotICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLCBWaXJ0dWFs
UmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbiwgVmlydHVhbFJl
Z2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHNXaXRoRml4dXAuc2l6ZSgpOyBhcmd1bWVudC0tOykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cAppbmRleCA3NTg2N2JmNzc1Zjk1MmRlMDllNTVlMjkzMzQ1MmE5NmZiNDI0OTYxLi42OWU2OGNj
YjhkZDM4ZWI3YTdmZTk2N2QzYzEyZWU0YmFkNDQ2MjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cApAQCAtMzM4LDYgKzMzOCw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgog
ICAgICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNl
IENyZWF0ZUNsb25lZEFyZ3VtZW50czoKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRz
QnV0dGVyZmx5OgogICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAgICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJh
dG9yRnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IGY5Yjk1YTYwMDk1ZjA0MDA5ODRlY2ZlMDc3ZGJl
NTZiY2Q5ZjU3MjguLjJhYTkyNzAzOGVhNjg1Mzk3ZTcyZDlmMzg1NmRmYTRlN2M1MGM2ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCkBAIC04Myw4ICs4Myw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9u
UHJvZmlsZV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlKCkgKyBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2Jv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQm91bmRGdW5j
dGlvblN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0aW9u
UHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZBbGxv
Y2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpKSBcCi0gICAgbWFjcm8oRnVuY3Rpb25S
YXJlRGF0YV9oYXNSZWlmaWVkTGVuZ3RoLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkhhc1Jl
aWZpZWRMZW5ndGgoKSkgXAotICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfaGFzUmVpZmllZE5h
bWUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mSGFzUmVpZmllZE5hbWUoKSkgXAogICAgIG1h
Y3JvKEdldHRlclNldHRlcl9nZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkg
XAogICAgIG1hY3JvKEdldHRlclNldHRlcl9zZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZT
ZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3ODFiNzFlNjkyNDM4Mjg2NDg5N2VmZjdmOWRl
NjhlNGVlNGViZjFkLi5jMTUxZjIxN2RlZWMxODY3ZTY4ZjU1ZTJjYjRhMDdmOTUxOTYyMGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
NTIsNiArMTUyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29w
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CisgICAgY2FzZSBD
cmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAg
IGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBHZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IGQ0ODczMThmMjlmZTM2MWM2N2FhODU4OTFjYTkx
MjA5OGU2ZTU2MTAuLmUzMDdiMDliNzg2OTE4ZDA3YzA5ZTUzMmZmMGYzYjQyNGE3ODAyNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZv
aWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IG1haW5QYXRoSnVtcHM7CiAgICAgCiAgICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAg
ICAgICAgIGZyYW1lLndpdGhPZmZzZXQoc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQpLAorICAgICAgICAgICAgICAgIGZyYW1lLndpdGhPZmZzZXQoc2l6ZW9m
KFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwK
ICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICBtYWluUGF0aEp1
bXBzLmFwcGVuZChqaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDk0NTY1Nzc1
NWEwZWNiNzgxY2ZiODliMTFjMzlmOThmN2E5YWJhM2QuLjI3NzkzMjFkZTBhYmZmMzAyZjU1MTc0
MTI1MmM3MmM0NjQ4ZTQ3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAg
ICAgICAgICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0tPnRvcEVudHJ5RnJhbWUpOwogCiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCkpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwpAQCAtMTA0Niw2ICsxMDQ2LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CiAgICAgICAgICAgICBjb21waWxl
Q3JlYXRlQ2xvbmVkQXJndW1lbnRzKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CisgICAgICAgICAgICBjb21waWxlQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBPYmpl
Y3RDcmVhdGU6CiAgICAgICAgICAgICBjb21waWxlT2JqZWN0Q3JlYXRlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTU5MzYsNiArNTkzOSwxMyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlQ3JlYXRl
QXJndW1lbnRzQnV0dGVyZmx5KCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkNyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgZ2V0QXJndW1l
bnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUpOworICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ3JlYXRlUmVzdCgpCiAgICAg
ewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpAQCAtNzk0MSwxMyArNzk1MSwxMyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBtX25vZGUtPmFyZ3VtZW50c0lubGluZUNhbGxGcmFtZSgpKQogICAgICAg
ICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50UmVnaXN0ZXI7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdp
c3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKKyAg
ICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgIHNldEludDMyKG1f
b3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpKTsKICAgICB9CiAK
ICAgICB2b2lkIGNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpCiAgICAgewot
ICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpKSwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KSk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpLCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGls
ZUdldFNjb3BlKCkKQEAgLTg0NjksNyArODQ3OSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIH07CiAKICAgICAgICAgYWRkQXJndW1lbnQoanNDYWxsZWUsIFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCAwKTsKLSAgICAgICAgYWRkQXJndW1lbnQobV9vdXQu
Y29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQpLCBQYXlsb2FkT2Zmc2V0KTsKKyAgICAgICAgYWRkQXJndW1lbnQobV9vdXQuY29u
c3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSwgUGF5bG9hZE9mZnNldCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpCiAgICAgICAgICAgICBhZGRBcmd1bWVudChsb3dK
U1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaSksIDApOwogCkBAIC04NDk3LDcgKzg1MDcsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKLSAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpKTsKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKIApAQCAtODU3
OSw3ICs4NTg5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIH07CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVlLCBWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgMCk7Ci0gICAgICAgICAgICBhZGRBcmd1bWVudCht
X291dC5jb25zdEludDMyKG51bVBhc3NlZEFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOworICAgICAgICAgICAgYWRkQXJn
dW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1QYXNzZWRBcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgUGF5bG9hZE9mZnNldCk7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgKytp
KQogICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSwgMCk7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1QYXNzZWRBcmdzOyBpIDwgbnVtQWxsb2Nh
dGVkQXJnczsgKytpKQpAQCAtODY0Nyw3ICs4NjU3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAog
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNp
dGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0
YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0RnJhbWVTaHVm
ZmxlRGF0YShzaHVmZmxlRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZm
bGVyKGppdCwgc2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwpAQCAtODY5MCw3ICs4
NzAwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxs
U2l0ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFn
Rm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQubmVhckNh
bGwoKTsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKApAQCAtODgwNiw3ICs4ODE2LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSBjYWxsIHNp
dGUgaW5kZXggb2Ygb3VyIGZyYW1lLiBCYWQgdGhpbmdzIGhhcHBlbiBpZiBpdCdzIG5vdCBzZXQu
CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpKTsKIAogICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZm
bGVEYXRhOwogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2FscyA9IHN0YXRlLT5q
aXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50OwpAQCAtODk1Miw3ICs4OTYyLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4
LmJpdHMoKSksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKICAgICAgICAgICAgICAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZv
KCk7CiAKQEAgLTkwMTYsNyArOTAyNiw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIEJlZm9yZSB0b3VjaGluZyBzdGFjayB2YWx1ZXMsIHdlIHNob3VsZCB1
cGRhdGUgdGhlIHN0YWNrIHBvaW50ZXIgdG8gcHJvdGVjdCB0aGVtIGZyb20gc2lnbmFsIHN0YWNr
LgogICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmUz
MihzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIxLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoc2Ny
YXRjaEdQUjIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSMSwgQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwogCiAgICAgICAgICAgICAgICAgICAgIGludCBz
dG9yZU9mZnNldCA9IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwogCkBAIC05MjU0LDcgKzkyNjQsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygp
KSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAg
ICAgICAgICAgICAgICBDYWxsVmFyYXJnc0RhdGEqIGRhdGEgPSBub2RlLT5jYWxsVmFyYXJnc0Rh
dGEoKTsKQEAgLTk0NzcsNyArOTQ4Nyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IH07CiAgICAgICAgIAogICAgICAgICBhZGRBcmd1bWVudChqc0NhbGxlZSwgVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIDApOwotICAgICAgICBhZGRBcmd1bWVudChtX291
dC5jb25zdEludDMyKG51bUFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOworICAgICAgICBhZGRBcmd1bWVudChtX291dC5j
b25zdEludDMyKG51bUFyZ3MpLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpLCBQYXlsb2FkT2Zmc2V0KTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bUFyZ3M7ICsraSkKICAgICAgICAgICAgIGFkZEFyZ3VtZW50KGxv
d0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSkpLCB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChpKSwgMCk7CiAgICAgICAgIApAQCAtOTUwNyw3ICs5NTE3LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQu
c3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
Y2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0
LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgR1BSSW5mbzo6cmVnVDApOwpAQCAtMTIzMjUsNyArMTIzMzUsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1l
bnRDb3VudFJlZ2lzdGVyOwogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAg
ICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRS
ZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYXJndW1lbnRD
b3VudFJlZ2lzdGVyID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXI7CiAg
ICAgICAgICAgICBsZW5ndGgudmFsdWUgPSBtX291dC5zdWIobV9vdXQubG9hZDMyKHBheWxvYWRG
b3IoYXJndW1lbnRDb3VudFJlZ2lzdGVyKSksIG1fb3V0LmludDMyT25lKTsKQEAgLTE3NjExLDcg
KzE3NjIxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4ID0gbV9mdGxTdGF0ZS5qaXRDb2RlLT5jb21tb24uYWRkQ29kZU9yaWdpbihj
b2RlT3JpZ2luKTsKICAgICAgICAgbV9vdXQuc3RvcmUzMigKICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50MzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAgIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogI2lmICFVU0UoQlVJTFRJTl9GUkFN
RV9BRERSRVNTKSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1f
Y2FsbEZyYW1lLCBtX291dC5hYnNvbHV0ZSgmdm0oKS50b3BDYWxsRnJhbWUpKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKaW5kZXggNjkzNGMz
ZjBkMzc5MWY2NGJhNDI5NjNlMDU1NjNkYmJjN2RkYTVhNC4uZmUyYTRlYzcyNmNlY2VkMzQxMzA5
Mzk5NDk0ZWE5ZWI3ZTZiNGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRp
b24oCiAgICAgaWYgKGNhbGxTaXRlSW5kZXgpIHsKICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSks
Ci0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIH0KICAgICByZXR1cm4gY2FsbE9w
ZXJhdGlvbih2bSwgdXNlZFJlZ2lzdGVycywgaml0LCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9u
LCByZXN1bHRHUFIsIGFyZ3VtZW50cy4uLik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCmluZGV4IGY2Mzk0YWM3MTA3MTI1YjdjYWIyMWFk
MmI5MTEzYzA3OTUzNmE2MDAuLjFhNGRlM2Y5MzYyOTBlNjJmNjM4OWVmNWZmYTA3Zjg5NzM2Y2U1
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
Y3BwCkBAIC05MCwxMiArOTAsMTIgQEAgYm9vbCBDYWxsRnJhbWU6OmNhbGxTaXRlQml0c0FyZUNv
ZGVPcmlnaW5JbmRleCgpIGNvbnN0CiAKIHVuc2lnbmVkIENhbGxGcmFtZTo6Y2FsbFNpdGVBc1Jh
d0JpdHMoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRdLnRhZygpOworICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzXS50YWcoKTsKIH0KIAogU1VQUFJFU1NfQVNBTiB1bnNpZ25lZCBDYWxs
RnJhbWU6OnVuc2FmZUNhbGxTaXRlQXNSYXdCaXRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhp
c1tDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50XS51bnNhZmVUYWcoKTsKKyAgICByZXR1cm4g
dGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc10udW5zYWZlVGFn
KCk7CiB9CiAKIENhbGxTaXRlSW5kZXggQ2FsbEZyYW1lOjpjYWxsU2l0ZUluZGV4KCkgY29uc3QK
QEAgLTExNyw3ICsxMTcsNyBAQCBjb25zdCBJbnN0cnVjdGlvbiogQ2FsbEZyYW1lOjpjdXJyZW50
VlBDKCkgY29uc3QKIHZvaWQgQ2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKGNvbnN0IEluc3RydWN0
aW9uKiB2cGMpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZShCeXRlY29kZUluZGV4KGJp
dHdpc2VfY2FzdDx1aW50MzJfdD4odnBjKSkpOwotICAgIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudF0udGFnKCkgPSBjYWxsU2l0ZS5iaXRzKCk7CisgICAgdGhpc1tDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc10udGFnKCkgPSBjYWxsU2l0ZS5iaXRzKCk7
CiB9CiAKIHVuc2lnbmVkIENhbGxGcmFtZTo6Y2FsbFNpdGVCaXRzQXNCeXRlY29kZU9mZnNldCgp
IGNvbnN0CkBAIC0xMzcsNyArMTM3LDcgQEAgY29uc3QgSW5zdHJ1Y3Rpb24qIENhbGxGcmFtZTo6
Y3VycmVudFZQQygpIGNvbnN0CiB2b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQQyhjb25zdCBJ
bnN0cnVjdGlvbiogdnBjKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUoY29kZUJsb2Nr
KCktPmJ5dGVjb2RlSW5kZXgodnBjKSk7Ci0gICAgdGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50XS50YWcoKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGNhbGxTaXRlLmJpdHMoKSk7Cisg
ICAgdGhpc1tDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc10udGFnKCkg
PSBzdGF0aWNfY2FzdDxpbnQzMl90PihjYWxsU2l0ZS5iaXRzKCkpOwogfQogCiB1bnNpZ25lZCBD
YWxsRnJhbWU6OmNhbGxTaXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IGNmYjc3MTg1NjAz
OTkzMzkxMDA0ZmMxMzIxMTgzODQyM2M1ZGM2YTkuLjhhYmRkYjgxMDZiNDFiMWFlMDNkNzU3NmE4
MDFkN2JmOTFmMjE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmgKQEAgLTg2LDggKzg2LDggQEAgbmFtZXNwYWNlIEpTQyAgewogICAgIHN0cnVj
dCBDYWxsRnJhbWVTbG90IHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgY29kZUJsb2Nr
ID0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzOwogICAgICAgICBzdGF0aWMgY29u
c3RleHByIGludCBjYWxsZWUgPSBjb2RlQmxvY2sgKyAxOwotICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBhcmd1bWVudENvdW50ID0gY2FsbGVlICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgdGhpc0FyZ3VtZW50ID0gYXJndW1lbnRDb3VudCArIDE7CisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbGVlICsgMTsK
KyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgdGhpc0FyZ3VtZW50ID0gYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyAxOwogICAgICAgICBzdGF0aWMgY29uc3RleHByIGludCBmaXJzdEFy
Z3VtZW50ID0gdGhpc0FyZ3VtZW50ICsgMTsKICAgICB9OwogCkBAIC05NSw3ICs5NSw3IEBAIG5h
bWVzcGFjZSBKU0MgIHsKICAgICAvLyBQYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1v
c3QgZnVuY3Rpb25zLgogICAgIGNsYXNzIENhbGxGcmFtZSA6IHByaXZhdGUgUmVnaXN0ZXIgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgaGVhZGVyU2l6ZUluUmVn
aXN0ZXJzID0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCArIDE7CisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IGhlYWRlclNpemVJblJlZ2lzdGVycyA9IENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgMTsKIAogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9u
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiB2ZXJ5IHNwZWNpZmljIGNpcmN1bXN0YW5jZXMKICAg
ICAgICAgLy8gd2hlbiB5b3UndmUgZ3VhcmFudGVlZCB0aGUgY2FsbGVlIGNhbid0IGJlIGEgV2Fz
bSBjYWxsZWUsIGFuZCBjYW4KQEAgLTE5MCw3ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAK
ICAgICAgICAgLy8gQWNjZXNzIHRvIGFyZ3VtZW50cyBhcyBwYXNzZWQuIChBZnRlciBjYXB0dXJl
LCBhcmd1bWVudHMgbWF5IG1vdmUgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24uKQogICAgICAgICBz
aXplX3QgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCkgLSAxOyB9Ci0gICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudF0ucGF5
bG9hZCgpOyB9CisgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIGNv
bnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXNdLnBheWxvYWQoKTsgfQogICAgICAgICBzdGF0aWMgaW50IGFyZ3VtZW50T2Zmc2V0KGludCBh
cmd1bWVudCkgeyByZXR1cm4gKENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJndW1lbnQgKyBhcmd1bWVu
dCk7IH0KICAgICAgICAgc3RhdGljIGludCBhcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoaW50
IGFyZ3VtZW50KSB7IHJldHVybiAoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICsgYXJndW1l
bnQpOyB9CiAKQEAgLTI1MSw3ICsyNTEsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIGJv
b2wgaXNTdGFja092ZXJmbG93RnJhbWUoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1dhc21GcmFt
ZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
aW50IGNvdW50KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudF0ucGF5bG9hZCgpID0gY291bnQ7IH0KKyAgICAgICAgdm9pZCBzZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIq
Pih0aGlzKVtDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc10ucGF5bG9h
ZCgpID0gY291bnQ7IH0KICAgICAgICAgaW5saW5lIHZvaWQgc2V0Q2FsbGVlKEpTT2JqZWN0Kik7
CiAgICAgICAgIGlubGluZSB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqKTsKICAgICAgICAg
dm9pZCBzZXRSZXR1cm5QQyh2b2lkKiB2YWx1ZSkgeyBjYWxsZXJGcmFtZUFuZFBDKCkucmV0dXJu
UEMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEluc3RydWN0aW9uKj4odmFsdWUpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggYzhkZjIw
MGI5ODFmZjgyNmE1MmVmMDY3MGVjN2RlZWRjYmZmNjk2ZS4uOWVlOTE2MzI4ZDliOGNhM2U5MTQ3
YTI0NmQ1YjAzNDIyMzk0MWEzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpqaXRBc3NlcnRJc051bGwoR1BSUmVnIGdwcikKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6Ompp
dEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKCkKIHsKLSAgICBKdW1wIG9rID0gYnJhbmNoMzIoQmVs
b3csIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIFRydXN0ZWRJbW0z
MigxMDAwMDAwMCkpOworICAgIEp1bXAgb2sgPSBicmFuY2gzMihCZWxvdywgcGF5bG9hZEZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIFRydXN0ZWRJbW0zMigx
MDAwMDAwMCkpOwogICAgIGFib3J0V2l0aFJlYXNvbihBSEluc2FuZUFyZ3VtZW50Q291bnQpOwog
ICAgIG9rLmxpbmsodGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAppbmRleCAyMjAwOWM1ZmQyYmEyMjdkNDdjZmU4NTQ5MzlmNTJkZWYyZDcxYmMy
Li4zNGQ5MGM4YTFhY2Q4ZWFjMmZmYjZlMGU2YmY5ZGFhMjhkZTUxZTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE1MjcsNyArMTUyNyw3IEBA
IGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgewog
ICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1
cm4gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOworICAgICAg
ICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRSZWdpc3RlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCmluZGV4IDAxNWYwM2I3NWI2N2M5Zjc1N2NiZTc0MDRkNGUxYTU2OTM0YTI4MWIuLjEx
ZmUzN2E3YTgyMWIxNzVmZWY5YmIyZDBjZmU4N2U1MTI5NDc1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtNzI0LDcgKzcyNCw3IEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgR1BSUmVnIG9s
ZEZyYW1lU2l6ZUdQUiA9IHRlbXAyOwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEdQ
UlJlZyBhcmdDb3VudEdQUiA9IG9sZEZyYW1lU2l6ZUdQUjsKLSAgICAgICAgICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0
KSwgYXJnQ291bnRHUFIpOworICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKGZyYW1lUG9p
bnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgYXJn
Q291bnRHUFIpOwogCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBHUFJS
ZWcgbnVtUGFyYW1ldGVyc0dQUiA9IHRlbXAxOwpAQCAtNzUzLDcgKzc1Myw3IEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgLy8gVGhl
IG5ldyBmcmFtZSBzaXplIGlzIGp1c3QgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGx1cyB0aGUK
ICAgICAgICAgICAgIC8vIGZyYW1lIGhlYWRlciBzaXplLCBhbGlnbmVkCiAgICAgICAgICAgICBB
U1NFUlQobmV3RnJhbWVTaXplR1BSICE9IG5ld0ZyYW1lUG9pbnRlcik7Ci0gICAgICAgICAgICBs
b2FkMzIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zm
c2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwKKyAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2Fk
T2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwKICAgICAgICAgICAgICAgICBuZXdG
cmFtZVNpemVHUFIpOwogICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25t
ZW50UmVnaXN0ZXJzKCkgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAtIDEpLCBu
ZXdGcmFtZVNpemVHUFIpOwogICAgICAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKC1zdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpKSwgbmV3RnJhbWVTaXplR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKaW5kZXggOTY5MGUwOWM4YjU3Mjcw
ZGVmN2Y4N2E0NmNjMmI1N2U0Zjc2MjAzZS4uYmY0M2Q3YjgzYjlhOTkwOWU4NTIyNTljMzA4YjA4
ODM2ZDc5ZjczNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJh
bWVTaHVmZmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIG91dC5wcmlu
dGYoIiAlYyU4cyA8LSAlMThzICVjICIsIGQsIHN0ci5kYXRhKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZWNvdmVyeVN0ci5kYXRhKCksIGQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAobmV3UmVnID09IFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQgfSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3UmVnID09IFZp
cnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
IH0pCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiICVjJThzIDwtICUxOHp1ICVjICIsIGQs
IHN0ci5kYXRhKCksIGFyZ0NvdW50KCksIGQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIG91dC5wcmludGYoIiAlYyUzMHMgJWMgIiwgZCwgIiIsIGQpOwpAQCAtNDE4LDcgKzQx
OCw3IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JUYWlsQ2FsbCgpCiAgICAg
Ly8gb2xkIGZyYW1lICh0YWtpbmcgaW50byBhY2NvdW50IGFuIGFyZ3VtZW50IGNvdW50IGhpZ2hl
ciB0aGFuCiAgICAgLy8gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzKSwgdGhlbiBzdWJzdHJhY3Rp
bmcgdG8gaXQgdGhlIGFsaWduZWQKICAgICAvLyBuZXcgZnJhbWUgc2l6ZSAoYWRqdXN0ZWQpLgot
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgbV9uZXdGcmFtZUJhc2UpOwor
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCksIG1fbmV3
RnJhbWVCYXNlKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhcmd1bWVudENvdW50T0sgPQog
ICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBtX25l
d0ZyYW1lQmFzZSwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobV9q
aXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSkpOwpAQCAtNzM4LDEyICs3MzgsMTIgQEAg
dm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgLy8gV2UgbmVlZCB0byBo
YW5kbGUgNCkgZmlyc3QgYmVjYXVzZSBpdCBpbXBsaWVzIHJlbGVhc2luZwogICAgIC8vIG1fbmV3
RnJhbWVCYXNlLCB3aGljaCBjb3VsZCBiZSBhIHdhbnRlZCByZWdpc3Rlci4KICAgICBpZiAodmVy
Ym9zZSkKLSAgICAgICAgZGF0YUxvZygiICAgKiBTdG9yaW5nIHRoZSBhcmd1bWVudCBjb3VudCBp
bnRvICIsIFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSwg
IlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICogU3RvcmluZyB0aGUgYXJndW1lbnQgY291bnQg
aW50byAiLCBWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyB9LCAiXG4iKTsKICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoMCksCi0gICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJlZ2lzdGVyIHsg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFRhZ09mZnNldCkpOwor
ICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIH0pLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQobV9udW1QYXNzZWRBcmdzICE9IFVJTlRfTUFYKTsKICAgICBtX2ppdC5z
dG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobV9udW1QYXNzZWRBcmdzKSwKLSAg
ICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50IH0pLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOworICAgICAgICBhZGRyZXNz
Rm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIH0pLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOwogCiAgICAgaWYgKCFpc1Ns
b3dQYXRoKCkpIHsKICAgICAgICAgQVNTRVJUKG1fbmV3RnJhbWVCYXNlICE9IE1hY3JvQXNzZW1i
bGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggMTdjMGVkYWE4MmI5Zjk0ZjU3NDEzMTEwNjFhNjUxMjk0YTUxNmY4NS4uZWZhNzhiY2Q3OThh
NDhiNWQyMGU3YzE0NTgxNDQ4NTFlZmY5MGQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtMzA3LDYgKzMwNyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMpCiAgICAgICAg
IERFRklORV9TTE9XX09QKGNyZWF0ZV9zY29wZWRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVf
U0xPV19PUChjcmVhdGVfY2xvbmVkX2FyZ3VtZW50cykKKyAgICAgICAgREVGSU5FX1NMT1dfT1Ao
Y3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0
ZV9yZXN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfcHJvbWlzZSkKICAgICAgICAg
REVGSU5FX1NMT1dfT1AobmV3X3Byb21pc2UpCkBAIC03NTUsNyArNzU2LDcgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAg
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhl
YWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKIAotICAgICAgICBs
b2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgcmVnVDEpOwor
ICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyksIHJlZ1QxKTsKICAgICAgICAgYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpKS5saW5rVG8oYmVn
aW5MYWJlbCwgdGhpcyk7CiAKICAgICAgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRl
eCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGJmMjMwNmJjZTRk
NTZmMTA5YTAzNjE4YjM0MDcyZmM1N2MwZTVhYzMuLmMzZjhhYTBjN2ZhZjRlYWQ0MzQ2N2Q1NDI3
MjZhZThhYzkyNTg3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAt
NzQsNyArNzQsNyBAQCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwg
Q2FsbExpbmtJbmZvKikKICAgICB9CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVy
T2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNh
bGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgc3RvcmUzMihUcnVz
dGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBzdG9y
ZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpKTsKIH0KIAogCkBAIC0xMTAsNyArMTEwLDcgQEAgSklUOjpjb21waWxlU2V0dXBG
cmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5mbyogaW5mbykKICAgICBtb3ZlKHJl
dHVyblZhbHVlR1BSLCByZWdUMSk7CiAKICAgICAvLyBQcm9maWxlIHRoZSBhcmd1bWVudCBjb3Vu
dC4KLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwg
cmVnVDIpOworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwogICAgIGxvYWQzMihpbmZvLT5hZGRyZXNzT2ZNYXhB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCByZWdUMCk7CiAgICAgSnVtcCBub3RCaWdnZXN0
ID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1QwLCByZWdUMik7CiAgICAgc3RvcmUzMihyZWdUMiwgaW5m
by0+YWRkcmVzc09mTWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7CkBAIC0yMjgsNyAr
MjI4LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAgICAvLyBTUCBob2xkcyBuZXdDYWxs
RnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyksIHdpdGggQXJndW1lbnRDb3VudCBpbml0
aWFsaXplZC4KICAgICBhdXRvIGJ5dGVjb2RlSW5kZXggPSBtX2NvZGVCbG9jay0+Ynl0ZWNvZGVJ
bmRleChpbnN0cnVjdGlvbik7CiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJ
bmRleChieXRlY29kZUluZGV4KS5iaXRzKCk7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9j
YXRpb25CaXRzKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZz
ZXQpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNh
bGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQpKTsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRz
IGNhbGxlZS4KICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggN2Y2YzkxMDg5MDc5OGVmNjExYjg3ZWI0NDFkZjA1
NWQ0YjEzYjBkMS4uZDZkYmUwOTA4ZTRlOGFkYWVhZTYyNGQ2MDU0Yjk4YTdjYzE1MTI4NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMTY1LDcgKzE2
NSw3IEBAIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlu
a0luZm8qKQogICAgIH0KIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQg
KiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2FsbEZyYW1l
UmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
MihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KQEAgLTIwMSw3ICsyMDEsNyBAQCBKSVQ6
OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKiBpbmZv
KQogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QxKTsKIAogICAgIC8vIFByb2ZpbGUgdGhl
IGFyZ3VtZW50IGNvdW50LgotICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBh
eWxvYWRPZmZzZXQpLCByZWdUMik7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDEsIENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCByZWdUMik7CiAgICAgbG9hZDMyKGluZm8t
PmFkZHJlc3NPZk1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCksIHJlZ1QwKTsKICAgICBK
dW1wIG5vdEJpZ2dlc3QgPSBicmFuY2gzMihBYm92ZSwgcmVnVDAsIHJlZ1QyKTsKICAgICBzdG9y
ZTMyKHJlZ1QyLCBpbmZvLT5hZGRyZXNzT2ZNYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
KTsKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgIC8vIFNQ
IGhvbGRzIG5ld0NhbGxGcmFtZSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSwgd2l0aCBBcmd1
bWVudENvdW50IGluaXRpYWxpemVkLgogICAgIAogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGluc3Ry
dWN0aW9uKSkpLmJpdHMoKTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMp
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpOwogICAgIGVtaXRMb2FkKGNhbGxlZSwgcmVnVDEsIHJlZ1QwKTsg
Ly8gcmVnVDEsIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJl
c3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4
IDIyMTQ5YzliZDFiOGVjMTE4MTJjYmUwYjg1NDFiZWU5M2IxMGFiMzQuLmZjZThiYjc0NzY2Mzc4
Mzc5OGM5OTc1NmU4ZGY3Zjg5ZTA5YmI4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCkBAIC0xMDksNyArMTA5LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6dXBk
YXRlVG9wQ2FsbEZyYW1lKCkKICNlbHNlCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLmJpdHMoKTsKICNlbmRpZgotICAgIHN0b3JlMzIo
VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgdGFnRm9y
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgCiAgICAg
Ly8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoYXQgdGhpcyBpcyBuZWVkZWQuIEpJVE9wZXJhdGlv
bnMgdGVuZCB0byB1cGRhdGUgdGhlIHRvcCBjYWxsIGZyYW1lIG9uCiAgICAgLy8gdGhlIEMrKyBz
aWRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggN2NmYTA5
NWYwMGQxN2UxNDExYmU5Y2ZiODBmODA4MDZmNzg4ZjZjMS4uOGUzOTFjNTY5ZTZlMWM1NzE1MDY0
MDYwNGJiZDExNDQ1YTczNTE1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCkBAIC0xNTQ2LDcgKzE1NDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hcmd1bWVudF9j
b3VudChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQXJndW1lbnRDb3VudD4oKTsKICAg
ICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAgbG9hZDMyKHBheWxvYWRG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIHJlZ1QwKTsKKyAgICBsb2FkMzIocGF5
bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIHJlZ1Qw
KTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHQgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJlZ3MocmVnVDAsIHJlZ1QxKTsK
ICAgICBib3hJbnQzMihyZWdUMCwgcmVzdWx0KTsKQEAgLTE1NTgsNyArMTU1OCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0UmVzdExlbmd0aD4oKTsKICAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7
CiAgICAgdW5zaWduZWQgbnVtUGFyYW1zVG9Ta2lwID0gYnl0ZWNvZGUubV9udW1QYXJhbWV0ZXJz
VG9Ta2lwOwotICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpLCByZWdUMCk7CisgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpLCByZWdUMCk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEp
LCByZWdUMCk7CiAgICAgSnVtcCB6ZXJvTGVuZ3RoID0gYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFs
LCByZWdUMCwgSW1tMzIobnVtUGFyYW1zVG9Ta2lwKSk7CiAgICAgc3ViMzIoSW1tMzIobnVtUGFy
YW1zVG9Ta2lwKSwgcmVnVDApOwpAQCAtMTU5NCw3ICsxNTk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2FyZ3VtZW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyhyZWdUMSwgcmVnVDApOwogI2VuZGlmCiAKLSAgICBs
b2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgcmVnVDIpOwor
ICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSwgcmVnVDIpOwogICAgIEp1bXAgYXJndW1lbnRPdXRPZkJvdW5kcyA9IGJyYW5jaDMy
KExlc3NUaGFuT3JFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleCkpOwogICAgIGxvYWRW
YWx1ZShhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGluZGV4KSwgcmVz
dWx0UmVncyk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAppbmRleCAzODg3MzA1MmQxMjg1MmZjNmJi
OTE0MmQ0NTYwN2FlOGUxOWE2NzBhLi4wOTUyNTkxZWU5ZjdkNWQ0ZmMyMTcwYzcxNjkzY2ViNjY5
Nzc0YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJn
c0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0Zy
YW1lLmNwcApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJh
bWVGYXN0Q2FzZShWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgbnVtVQogICAgIGpp
dC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
CiAgICAgLy8gSW5pdGlhbGl6ZSBBcmd1bWVudENvdW50LgotICAgIGppdC5zdG9yZTMyKHNjcmF0
Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUjIsIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCkpOworICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaEdQUjIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZz
ZXQpKTsKIAogICAgIC8vIENvcHkgYXJndW1lbnRzLgogICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0
cihzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjEpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgZW1p
dFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BS
UmVnIG51bVVzZWRTbG90CiAgICAgICAgICAgICBmaXJzdEFyZ3VtZW50UmVnID0gVmlydHVhbFJl
Z2lzdGVyKDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFyZ3VtZW50Q291bnRSZWNvdmVyeSA9
IFZhbHVlUmVjb3Zlcnk6OmRpc3BsYWNlZEluSlNTdGFjaygKLSAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgRGF0YUZvcm1hdEludDMyKTsK
KyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyksIERhdGFGb3JtYXRJbnQzMik7CiAgICAgICAgIGZpcnN0QXJndW1lbnRS
ZWcgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKSk7CiAgICAg
fQogICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKHZtLCBqaXQsIG51bVVzZWRTbG90
c0dQUiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgYXJndW1lbnRDb3Vu
dFJlY292ZXJ5LCBmaXJzdEFyZ3VtZW50UmVnLCBmaXJzdFZhckFyZ09mZnNldCwgc2xvd0Nhc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5r
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApp
bmRleCA0ZjU2N2QwNmFlYTU0NGFiMjY3MTU1YzEzZGYzNmE3MjQ5YjZjMzQzLi5hMTE2MjJlZWJk
YmU0Nzg1ZWYwNmFkYzM5MzQ3MWY1YzIxZjcyNDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgICAg
ICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwogICAgICAgICAgICAgLy8g
Q2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAg
ICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291
bnQgKyAxKSkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1
YWwsIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
LCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCArIDEpKSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGV4cGxpY2l0IFNwZWNpYWxpemVkVGh1bmtKSVQoVk0mIHZtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDUyNDFlNWY3
Y2MzMzJhNjRlMGRlNmRiNDRiZGFmOWU4ZTgwZjIyYWEuLjE0NDBjNjBiZDRhMjVkNTFhNzBjZjli
Y2M1NjYzNjU0N2NiYzFmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGFyaXR5Rml4dXBHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5zdG9y
ZVB0cihHUFJJbmZvOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOwogI2VuZGlmCiAg
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDMpOwotICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OmFkZHJlc3NGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQ
UjIpOworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OmFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1l
bnRHUFIyKTsKICAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMihDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQ
UjIpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgZXh0cmEgc2xvdHMgd2UgY2Fu
IHVzZQpAQCAtNDYyLDcgKzQ2Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gYXJpdHlGaXh1cEdlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LnJldCgpOwogI2Vsc2Ug
Ly8gVVNFKEpTVkFMVUU2NCkgc2VjdGlvbiBhYm92ZSwgVVNFKEpTVkFMVUUzMl82NCkgc2VjdGlv
biBiZWxvdy4KICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7Ci0gICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgSlNJbnRlcmZhY2VKSVQ6
OmFyZ3VtZW50R1BSMik7CisgICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6YWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIEpTSW50ZXJmYWNl
SklUOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3Rl
ZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSwgSlNJbnRlcmZhY2VKSVQ6
OmFyZ3VtZW50R1BSMik7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBleHRyYSBz
bG90cyB3ZSBjYW4gdXNlCkBAIC0xMTI5LDcgKzExMjksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKICNlbmRpZgog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kVGhpc05vQXJn
c0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBD
Q2FsbEhlbHBlcnMgaml0OwogICAgIApAQCAtMTEzNyw3ICsxMTM3LDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5l
cmF0b3IoVk0mIHYKICAgICAKICAgICAvLyBTZXQgdXAgb3VyIGNhbGwgZnJhbWUuCiAgICAgaml0
LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgQ0NhbGxIZWxw
ZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOwotICAgIGppdC5zdG9y
ZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKICAgICB1bnNpZ25lZCBleHRyYVN0YWNr
TmVlZGVkID0gMDsKICAgICBpZiAodW5zaWduZWQgc3RhY2tNaXNhbGlnbm1lbnQgPSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykgJSBzdGFja0FsaWdubWVudEJ5dGVzKCkpCkBAIC0xMTU4LDcgKzEx
NTgsMTUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHYKICAgICAvLwogICAgIC8vIFRoYXQncyBy
ZWFsbHkgYWxsIHRoZXJlIGlzIHRvIHRoaXMuIFdlIGhhdmUgYWxsIHRoZSByZWdpc3RlcnMgd2Ug
bmVlZCB0byBkbyBpdC4KICAgICAKLSAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6cGF5bG9h
ZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgR1BSSW5mbzo6cmVnVDEpOworICAg
IGppdC5sb2FkQ2VsbChDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlKSwgR1BSSW5mbzo6cmVnVDApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkJvdW5kQXJncygp
KSwgR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpwYXlsb2Fk
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwgR1BSSW5mbzo6
cmVnVDEpOworICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMyk7Cisg
ICAgYXV0byBub0FyZ3MgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQ
UkluZm86OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMiwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkp
LCBHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LmFkZDMyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZv
OjpyZWdUMSk7CisgICAgaml0LnN1YjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBH
UFJJbmZvOjpyZWdUMSk7CisgICAgbm9BcmdzLmxpbmsoJmppdCk7CiAgICAgaml0LmFkZDMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
IC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzKSwgR1BSSW5mbzo6cmVnVDEsIEdQ
UkluZm86OnJlZ1QyKTsKICAgICBqaXQubHNoaWZ0MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMyksIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQuYWRkMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRCeXRlcygpIC0gMSksIEdQUkluZm86OnJlZ1QyKTsKQEAg
LTExNjcsMTcgKzExNzUsMTYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHYKICAgICBpZiAoZXh0
cmFTdGFja05lZWRlZCkKICAgICAgICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGV4dHJhU3RhY2tOZWVkZWQpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgCi0gICAgLy8gQXQg
dGhpcyBwb2ludCByZWdUMSBoYXMgdGhlIGFjdHVhbCBhcmd1bWVudCBjb3VudCBhbmQgcmVnVDIg
aGFzIHRoZSBhbW91bnQgb2Ygc3RhY2sgd2Ugd2lsbCBuZWVkLgorICAgIC8vIEF0IHRoaXMgcG9p
bnQgcmVnVDEgaGFzIHRoZSBhY3R1YWwgYXJndW1lbnQgY291bnQsIHJlZ1QyIGhhcyB0aGUgYW1v
dW50IG9mIHN0YWNrIHdlIHdpbGwgbmVlZCwgYW5kIHJlZ1QzIGhhcyB0aGUgcGFzc2VkIGFyZ3Vt
ZW50IGNvdW50LgogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGVub3VnaCBzdGFjayBz
cGFjZS4KICAgICAKICAgICBqaXQubmVnUHRyKEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQuYWRk
UHRyKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QyKTsK
LSAgICBqaXQubG9hZENlbGwoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaGF2ZVN0
YWNrU3BhY2UgPSBqaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6QmVsb3dPckVxdWFsLCBDQ2Fs
bEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyh2bS5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgpKSwg
R1BSSW5mbzo6cmVnVDIpOwogCiAgICAgLy8gVGhyb3cgU3RhY2sgT3ZlcmZsb3cgZXhjZXB0aW9u
CiAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZt
LnRvcEVudHJ5RnJhbWUpOwotICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMywgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
R1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
R1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayk+KEdQUkluZm86OnJlZ1QzKTsKICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuaykpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKQEAgLTExOTAsMzEgKzExOTcsNDQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHYKIAogICAg
IC8vIERvIGJhc2ljIGNhbGxlZSBmcmFtZSBzZXR1cCwgaW5jbHVkaW5nICd0aGlzJy4KICAgICAK
LSAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFt
ZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICBqaXQuc3Rv
cmUzMihHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgCi0gICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gSlNWYWx1ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdz
KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgaml0LmxvYWRWYWx1ZShDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0
T2ZCb3VuZFRoaXMoKSksIHZhbHVlUmVncyk7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0g
SlNWYWx1ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1Q0LCBHUFJJbmZv
OjpyZWdUMik7CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6cmVnVDAsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZCb3VuZFRoaXMoKSksIHZhbHVlUmVn
cyk7CiAgICAgaml0LnN0b3JlVmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFy
Z3VtZW50U2xvdCgwKSk7CiAKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigp
KSwgR1BSSW5mbzo6cmVnVDMpOwotICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmVnVDMsIEND
YWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwotICAg
IAogICAgIC8vIE9LLCBub3cgd2UgY2FuIHN0YXJ0IGNvcHlpbmcuIFRoaXMgaXMgYSBzaW1wbGUg
bWF0dGVyIG9mIGNvcHlpbmcgcGFyYW1ldGVycyBmcm9tIHRoZSBjYWxsZXIncwotICAgIC8vIGZy
YW1lIHRvIHRoZSBjYWxsZWUncyBmcmFtZS4gTm90ZSB0aGF0IHdlIGtub3cgdGhhdCByZWdUMSAo
dGhlIGFyZ3VtZW50IGNvdW50KSBtdXN0IGJlIGF0CisgICAgLy8gZnJhbWUgdG8gdGhlIGNhbGxl
ZSdzIGZyYW1lLiBOb3RlIHRoYXQgd2Uga25vdyB0aGF0IHJlZ1QzICh0aGUgYXJndW1lbnQgY291
bnQpIG11c3QgYmUgYXQKICAgICAvLyBsZWFzdCAxLgorICAgIGppdC5zdWIzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5zdWIzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIENDYWxsSGVs
cGVyczo6SnVtcCBkb25lID0gaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQ
UkluZm86OnJlZ1QxKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5icmFuY2hU
ZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgCiAgICAgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCBsb29wID0gaml0LmxhYmVsKCk7CisgICAgaml0LnN1YjMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgaml0LnN1YjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0
LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoMSkpLmluZGV4ZWRCeShHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpUaW1lc0Vp
Z2h0KSwgdmFsdWVSZWdzKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6YWRkcmVz
c0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxKSkuaW5kZXhlZEJ5KEdQUkluZm86OnJl
Z1QzLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQpLCB2YWx1ZVJlZ3MpOwogICAgIGppdC5zdG9y
ZVZhbHVlKHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVBcmd1bWVudFNsb3QoMSkuaW5k
ZXhlZEJ5KEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQpKTsKLSAgICBq
aXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDEpLmxp
bmtUbyhsb29wLCAmaml0KTsKKyAgICBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9u
WmVybywgR1BSSW5mbzo6cmVnVDMpLmxpbmtUbyhsb29wLCAmaml0KTsKICAgICAKICAgICBkb25l
LmxpbmsoJmppdCk7CisgICAgYXV0byBub0FyZ3MyID0gaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhl
bHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QxKTsKKworICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkJv
dW5kQXJncygpKSwgR1BSSW5mbzo6cmVnVDMpOworCisgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBs
b29wQm91bmQgPSBqaXQubGFiZWwoKTsKKyAgICBqaXQuc3ViMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVs
cGVyczo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxw
ZXJzOjpUaW1lc0VpZ2h0LCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkgKyBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIHZhbHVlUmVncyk7CisgICAgaml0LnN0b3Jl
VmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50U2xvdCgxKS5pbmRl
eGVkQnkoR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCkpOworICAgIGpp
dC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZWdUMSkubGlu
a1RvKGxvb3BCb3VuZCwgJmppdCk7CisKKyAgICBub0FyZ3MyLmxpbmsoJmppdCk7CisKKyAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTQm91bmRG
dW5jdGlvbjo6b2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigpKSwgR1BSSW5mbzo6cmVnVDIpOworICAg
IGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVT
bG90KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwogICAgIAogICAgIGppdC5sb2FkUHRyKAotICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDMsIEpTRnVuY3Rpb246Om9m
ZnNldE9mRXhlY3V0YWJsZSgpKSwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86OnJlZ1QyLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCiAgICAgICAgIEdQ
UkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKaW5k
ZXggZjg2MWVlODg0OWJjMWRlZTFjMzU2ZmFkZjA0MWQzNTQ2NWExNzNiYi4uN2IxMDgzYmY3MTIw
NmRhYjZjNjY3NzRmZjMxYjUwMWFkNDcxNmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5oCkBAIC02OCw2ICs2OCw2IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gaW11bFRodW5rR2VuZXJhdG9yKFZNJik7CiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNJik7CiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRydW5jVGh1bmtHZW5lcmF0b3Io
Vk0mKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZFRoaXNO
b0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAxY2UyN2M1MjJmYzRmNWJj
NjFiMDViZmYxMDM0YmZjNGM5MDZhM2VkLi4yMDdmNjZhZTM4Yzg5MWZkNjI0YjgxYTgwMzc5YjAx
YmVkMGEzNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1
ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNp
bmNsdWRlICJKU1NvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUg
IkpTVHlwZWRBcnJheXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKaW5kZXggMmZkZTEwN2E5ODZjZTVjNWZiMzM4MmM2MWI5YTA4MGI2NTI5YTdlYS4uZjUwYTE3
YjlhZjZhN2I4YTU5ZmJkNjI2YzI3MjQzMWViYWI5YWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTExMiw4ICsxMTIsOCBAQCB2b2lkIERhdGE6OnBl
cmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoQ2FsbEZyYW1lOjpyZXR1cm5QQ09m
ZnNldCgpID09IENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSArIE1hY2hpbmVSZWdpc3Rl
clNpemUpOwogICAgIEFTU0VSVChDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzaXplb2YoUmVn
aXN0ZXIpID09IENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSArIE1hY2hpbmVSZWdpc3RlclNp
emUpOwogICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc2l6ZW9mKFJl
Z2lzdGVyKSA9PSBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzaXplb2YoUmVnaXN0ZXIpICsg
U2xvdFNpemUpOwotICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc2l6ZW9mKFJl
Z2lzdGVyKSArIFNsb3RTaXplKTsKLSAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZVNsb3Q6OnRo
aXNBcmd1bWVudCAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCAqIHNpemVvZihSZWdpc3RlcikgKyBTbG90U2l6ZSk7CisgICAgU1RBVElDX0FTU0VSVChD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHNpemVvZihSZWdpc3Rl
cikgPT0gQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSArIFNsb3RTaXpl
KTsKKyAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAqIHNpemVv
ZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KiBzaXplb2YoUmVnaXN0ZXIpICsgU2xvdFNpemUpOwogICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgPT0gQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50
KTsKIAogICAgIEFTU0VSVChDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygw
KSA9PSBDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGUxNzM0ZGNmNjFi
NGNmYzU1MTJmYTI4NTYwMWJjYWIzMGM4OGYyZTQuLmM4YTA3ZjAwZWZjMjQ4NTA0NjA4ZWRhNjk1
YjA4ODI1Y2YyYTZhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE3Nyw4ICsxNzcsOCBAQCBjb25zdCBDYWxsZXJG
cmFtZSA9IDAKIGNvbnN0IFJldHVyblBDID0gQ2FsbGVyRnJhbWUgKyBNYWNoaW5lUmVnaXN0ZXJT
aXplCiBjb25zdCBDb2RlQmxvY2sgPSBSZXR1cm5QQyArIE1hY2hpbmVSZWdpc3RlclNpemUKIGNv
bnN0IENhbGxlZSA9IENvZGVCbG9jayArIFNsb3RTaXplCi1jb25zdCBBcmd1bWVudENvdW50ID0g
Q2FsbGVlICsgU2xvdFNpemUKLWNvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IEFyZ3VtZW50Q291
bnQgKyBTbG90U2l6ZQorY29uc3QgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBDYWxsZWUg
KyBTbG90U2l6ZQorY29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0ID0gQXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgKyBTbG90U2l6ZQogY29uc3QgRmlyc3RBcmd1bWVudE9mZnNldCA9IFRoaXNBcmd1
bWVudE9mZnNldCArIFNsb3RTaXplCiBjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gVGhpc0Fy
Z3VtZW50T2Zmc2V0CiAKQEAgLTUzMCw3ICs1MzAsNyBAQCBjb25zdCBGdW5jdGlvbkNvZGUgPSBj
b25zdGV4cHIgRnVuY3Rpb25Db2RlCiBjb25zdCBNb2R1bGVDb2RlID0gY29uc3RleHByIE1vZHVs
ZUNvZGUKIAogIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJn
dW1lbnQgY291bnQuCi1jb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09m
ZnNldAorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
VGFnT2Zmc2V0CiAKICMgU3RyaW5nIGZsYWdzLgogY29uc3QgaXNSb3BlSW5Qb2ludGVyID0gY29u
c3RleHByIEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIKQEAgLTEwMTUsNyArMTAxNSw3IEBAIGVu
ZAogbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywg
Y2FsbFB0clRhZykKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgpCiAKLSAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0ZW1wMgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0ZW1wMgog
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0ZW1wMQogICAgIGxvYWRpIENvZGVCbG9jazo6bV9u
dW1QYXJhbWV0ZXJzW3RlbXAxXSwgdGVtcDEKICAgICBiaWx0ZXEgdGVtcDEsIHRlbXAyLCAubm9B
cml0eUZpeHVwCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwo
Y2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIG1vdmUgY2ZyLCB0
ZW1wMQogICAgIGFkZHAgdGVtcDIsIHRlbXAxCiAKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsg
QXJndW1lbnRDb3VudFtzcF0sIHRlbXAyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzW3NwXSwgdGVtcDIKICAgICAjIFdlIGFzc3VtZSA8IDJeMjgg
YXJndW1lbnRzCiAgICAgbXVsaSBTbG90U2l6ZSwgdGVtcDIKICAgICBhZGRpIFN0YWNrQWxpZ25t
ZW50IC0gMSArIENhbGxGcmFtZUhlYWRlclNpemUsIHRlbXAyCkBAIC0xMDkxLDcgKzEwOTEsNyBA
QCBtYWNybyBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOYW1lLCBzaXplKQogICAg
IGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcE5hbWUsIHNpemUpCiAKICAgICByZXN0b3JlU3Rh
Y2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0sIFBDCisgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZz
ZXRbY2ZyXSwgUEMKIGVuZAogCiBtYWNybyBhcnJheVByb2ZpbGUob2Zmc2V0LCBjZWxsQW5kSW5k
ZXhpbmdUeXBlLCBtZXRhZGF0YSwgc2NyYXRjaCkKQEAgLTE1ODgsNiArMTU4OCw3IEBAIG1hY3Jv
IHNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKIGVuZAogCiBzbG93UGF0aE9wKGNyZWF0ZV9jbG9uZWRf
YXJndW1lbnRzKQorc2xvd1BhdGhPcChjcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSkKIHNsb3dQ
YXRoT3AoY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMpCiBzbG93UGF0aE9wKGNyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50KQogc2xvd1BhdGhPcChjcmVhdGVfcmVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5k
ZXggMDMwODExZmFjMTI4OGM0NjRmZTI4YTNiY2EwMWI1MjJkNGFjZjQwNi4uZDA2YTRhMmFkZDUw
ZTg3OWNlZWNjZGI5NjhmZWQxYTQwNTVlODY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTkzLDcg
KzkzLDcgQEAgZW5kCiAKICMgQWZ0ZXIgY2FsbGluZywgY2FsbGluZyBieXRlY29kZSBpcyBjbGFp
bWluZyBpbnB1dCByZWdpc3RlcnMgYXJlIG5vdCB1c2VkLgogbWFjcm8gZGlzcGF0Y2hBZnRlckNh
bGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKLSAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKICAgICBnZXQoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2Rz
dCwgdDMpCiAgICAgc3RvcmVpIHIxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkg
cjAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KQEAgLTQzMyw3ICs0MzMsNyBAQCBlbmQKIAog
IyBDYWxsIGEgc2xvd1BhdGggZm9yIGNhbGwgb3Bjb2Rlcy4KIG1hY3JvIGNhbGxDYWxsU2xvd1Bh
dGgoc2xvd1BhdGgsIGFjdGlvbikKLSAgICBzdG9yZXAgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBU
YWdPZmZzZXRbY2ZyXQogICAgIG1vdmUgY2ZyLCBhMAogICAgIG1vdmUgUEMsIGExCiAgICAgY0Nh
bGwyKHNsb3dQYXRoKQpAQCAtNDQxLDE5ICs0NDEsMTkgQEAgbWFjcm8gY2FsbENhbGxTbG93UGF0
aChzbG93UGF0aCwgYWN0aW9uKQogZW5kCiAKIG1hY3JvIGNhbGxUcmFwSGFuZGxlcih0aHJvd0hh
bmRsZXIpCi0gICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAg
ICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0K
ICAgICBtb3ZlIGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQogICAgIGNDYWxsMihfbGxpbnRfc2xv
d19wYXRoX2hhbmRsZV90cmFwcykKICAgICBidHBueiByMCwgdGhyb3dIYW5kbGVyCi0gICAgbG9h
ZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGxvYWRpIEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiBlbmQKIAogbWFjcm8gY2hl
Y2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgIGNoZWNrU3dpdGNoVG9KSVQoCiAgICAgICAgIDEs
CiAgICAgICAgIG1hY3JvICgpCi0gICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdCiAgICAgICAgICAgICBtb3ZlIGNmciwgYTAKICAg
ICAgICAgICAgIG1vdmUgUEMsIGExCiAgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3Ny
KQpAQCAtNDYxLDcgKzQ2MSw3IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKICAg
ICAgICAgICAgIG1vdmUgcjEsIHNwCiAgICAgICAgICAgICBqbXAgcjAKICAgICAgICAgLnJlY292
ZXI6Ci0gICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBD
CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNl
dFtjZnJdLCBQQwogICAgICAgICBlbmQpCiBlbmQKIApAQCAtNjM3LDcgKzYzNyw3IEBAIGVuZAog
CiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9n
dWUoKSBsZWF2ZXMgYmVoaW5kLgogbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwg
c2xvd1BhdGgpCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwg
dDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNb
Y2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBk
b25lTGFiZWwKICAgICBtb3ZlIGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQpAQCAtNjU1LDcgKzY1
NSw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQogLm5v
RXJyb3I6CiAgICAgbW92ZSByMSwgdDEgIyByMSBjb250YWlucyBzbG90c1RvQWRkLgogICAgIGJ0
aXogdDEsIC5jb250aW51ZQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50
W2Nmcl0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzW2Nmcl0sIHQyCiAgICAgYWRkaSBDYWxsRnJhbWVIZWFkZXJTbG90cywgdDIKIAogICAg
IC8vIENoZWNrIGlmIHRoZXJlIGFyZSBzb21lIHVuYWxpZ25lZCBzbG90cyB3ZSBjYW4gdXNlCkBA
IC03MzMsNyArNzMzLDcgQEAgX2xsaW50X29wX2VudGVyOgogCiBsbGludE9wV2l0aFByb2ZpbGUo
b3BfZ2V0X2FyZ3VtZW50LCBPcEdldEFyZ3VtZW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgcmV0dXJuKQogICAgIGdldChtX2luZGV4LCB0MikKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIGJpbHRlcSB0MCwgdDIsIC5vcEdl
dEFyZ3VtZW50T3V0T2ZCb3VuZHMKICAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCiAgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDMKQEAgLTc0NSw3ICs3NDUsNyBAQCBlbmQpCiAKIAog
bGxpbnRPcFdpdGhSZXR1cm4ob3BfYXJndW1lbnRfY291bnQsIE9wQXJndW1lbnRDb3VudCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKICAgICByZXR1
cm4oSW50MzJUYWcsIHQwKQogZW5kKQpAQCAtMTkyNSw4ICsxOTI1LDggQEAgbWFjcm8gY29tbW9u
Q2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBw
cm9sb2d1ZSkKICAgICAgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFs
dWUgb2YgY2ZyCiAgICAgICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10K
ICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgdDIpCi0gICAgICAgIHN0
b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCi0gICAgICAgIHN0b3JlaSB0
MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgICAgIHN0b3JlaSBQQywg
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICBzdG9y
ZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KICAg
ICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KICAgICAgICAgbW92
ZSB0Mywgc3AKICAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRy
eVB0clRhZykKQEAgLTI1MzQsNyArMjUzNCw3IEBAIGVuZCkKIAogCiBsbGludE9wV2l0aFJldHVy
bihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIHJldHVybikKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3Vu
dFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKICAgICBnZXR1KHNpemUsIE9wR2V0UmVz
dExlbmd0aCwgbV9udW1QYXJhbWV0ZXJzVG9Ta2lwLCB0MSkKICAgICBiaWx0ZXEgdDAsIHQxLCAu
c3RvcmVaZXJvCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCmluZGV4IDNkZDJlYjQ4Y2JiYTZlZjVjZDk4ODYzOWM3OTExZTIy
YTcxMzMxNDguLjUxOWM2Njk4OWRkZTQ1MjNkNzdlNjAyNDU3YzkwNTY0MWI2OWY0YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCkBAIC05Miw3ICs5Miw3IEBAIGVuZAogCiAjIEFmdGVyIGNhbGxpbmcsIGNhbGxpbmcg
Ynl0ZWNvZGUgaXMgY2xhaW1pbmcgaW5wdXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZC4KIG1hY3Jv
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gpCi0gICAgbG9h
ZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGxvYWRpIEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50
ZXJbUEJdLCBQQgogICAgIGdldChzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fZHN0LCB0MSkKQEAgLTIx
Nyw3ICsyMTcsNyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgbW92ZSAoY29uc3Rl
eHByIFByb3RvQ2FsbEZyYW1lOjpudW1iZXJPZlJlZ2lzdGVycyksIHQzCiAKIC5jb3B5SGVhZGVy
TG9vcDoKLSAgICAjIENvcHkgdGhlIENvZGVCbG9jay9DYWxsZWUvQXJndW1lbnRDb3VudC98dGhp
c3wgZnJvbSBwcm90b0NhbGxGcmFtZSBpbnRvIHRoZSBjYWxsZWUgZnJhbWUuCisgICAgIyBDb3B5
IHRoZSBDb2RlQmxvY2svQ2FsbGVlL0FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzL3x0aGlzfCBm
cm9tIHByb3RvQ2FsbEZyYW1lIGludG8gdGhlIGNhbGxlZSBmcmFtZS4KICAgICBzdWJpIDEsIHQz
CiAgICAgbG9hZHEgW3Byb3RvQ2FsbEZyYW1lLCB0MywgOF0sIGV4dHJhVGVtcFJlZwogICAgIHN0
b3JlcSBleHRyYVRlbXBSZWcsIENvZGVCbG9ja1tzcCwgdDMsIDhdCkBAIC0zOTAsNyArMzkwLDcg
QEAgZW5kCiAKICMgQ2FsbCBhIHNsb3cgcGF0aCBmb3IgY2FsbCBvcGNvZGVzLgogbWFjcm8gY2Fs
bENhbGxTbG93UGF0aChzbG93UGF0aCwgYWN0aW9uKQotICAgIHN0b3JlaSBQQywgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyArIFRhZ09mZnNldFtjZnJdCiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQogICAg
IG1vdmUgY2ZyLCBhMAogICAgIG1vdmUgUEMsIGExCkBAIC0zOTksMjAgKzM5OSwyMCBAQCBtYWNy
byBjYWxsQ2FsbFNsb3dQYXRoKHNsb3dQYXRoLCBhY3Rpb24pCiBlbmQKIAogbWFjcm8gY2FsbFRy
YXBIYW5kbGVyKHRocm93SGFuZGxlcikKLSAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBUYWdPZmZzZXRbY2ZyXQogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKICAgICBtb3ZlIGNm
ciwgYTAKICAgICBtb3ZlIFBDLCBhMQogICAgIGNDYWxsMihfbGxpbnRfc2xvd19wYXRoX2hhbmRs
ZV90cmFwcykKICAgICBidHBueiByMCwgdGhyb3dIYW5kbGVyCi0gICAgbG9hZGkgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiBlbmQKIAogbWFjcm8gY2hlY2tTd2l0Y2hUb0pJ
VEZvckxvb3AoKQogICAgIGNoZWNrU3dpdGNoVG9KSVQoCiAgICAgICAgIDEsCiAgICAgICAgIG1h
Y3JvKCkKLSAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
VGFnT2Zmc2V0W2Nmcl0KICAgICAgICAgICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKICAgICAg
ICAgICAgIG1vdmUgY2ZyLCBhMAogICAgICAgICAgICAgbW92ZSBQQywgYTEKQEAgLTQyMSw3ICs0
MjEsNyBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAgICAgICBtb3Zl
IHIxLCBzcAogICAgICAgICAgICAgam1wIHIwLCBKU0VudHJ5UHRyVGFnCiAgICAgICAgIC5yZWNv
dmVyOgotICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQ
QworICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZz
ZXRbY2ZyXSwgUEMKICAgICAgICAgZW5kKQogZW5kCiAKQEAgLTYxOSw3ICs2MTksNyBAQCBlbmQK
IAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xv
Z3VlKCkgbGVhdmVzIGJlaGluZC4KIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWws
IHNsb3dQYXRoKQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0s
IHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
W2Nmcl0sIHQwCiAgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwg
ZG9uZUxhYmVsCiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQogICAgIG1vdmUgY2ZyLCBhMApA
QCAtNjM4LDcgKzYzOCw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNs
b3dQYXRoKQogLm5vRXJyb3I6CiAgICAgbW92ZSByMSwgdDEgIyByMSBjb250YWlucyBzbG90c1Rv
QWRkLgogICAgIGJ0aXogdDEsIC5jb250aW51ZQotICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBB
cmd1bWVudENvdW50W2Nmcl0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQyCiAgICAgYWRkaSBDYWxsRnJhbWVIZWFkZXJTbG90
cywgdDIKIAogICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBzb21lIHVuYWxpZ25lZCBzbG90cyB3
ZSBjYW4gdXNlCkBAIC03MjMsNyArNzIzLDcgQEAgX2xsaW50X29wX2VudGVyOgogCiBsbGludE9w
V2l0aFByb2ZpbGUob3BfZ2V0X2FyZ3VtZW50LCBPcEdldEFyZ3VtZW50LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX2luZGV4LCB0MikKLSAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIGJpbHRlcSB0
MCwgdDIsIC5vcEdldEFyZ3VtZW50T3V0T2ZCb3VuZHMKICAgICBsb2FkcSBUaGlzQXJndW1lbnRP
ZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCiAgICAgcmV0dXJuKHQwKQpAQCAtNzM0LDcgKzczNCw3IEBA
IGVuZCkKIAogCiBsbGludE9wV2l0aFJldHVybihvcF9hcmd1bWVudF9jb3VudCwgT3BBcmd1bWVu
dENvdW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQotICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0
MAogICAgIG9ycSBUYWdOdW1iZXIsIHQwCiAgICAgcmV0dXJuKHQwKQpAQCAtMjA1Nyw4ICsyMDU3
LDggQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1
Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgYWRkcCBjZnIsIHQzCiAgICAgICAg
IHN0b3JlcSB0MiwgQ2FsbGVlW3QzXQogICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwg
bV9hcmdjLCB0MikKLSAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0KLSAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0
M10KKyAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09m
ZnNldFtjZnJdCisgICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBzcAogICAgICAgICBwcmVwYXJl
Q2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNv
ZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQogICAgICAgICBjYWxsVGFy
Z2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0
W3Q1XSwgSlNFbnRyeVB0clRhZykKQEAgLTI2MjQsNyArMjYyNCw3IEBAIGVuZCkKIAogCiBsbGlu
dE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsg
QXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIHN1YmkgMSwgdDAKICAgICBnZXR1KHNp
emUsIE9wR2V0UmVzdExlbmd0aCwgbV9udW1QYXJhbWV0ZXJzVG9Ta2lwLCB0MSkKICAgICBiaWx0
ZXEgdDAsIHQxLCAuc3RvcmVaZXJvCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFz
c2VtYmx5LmFzbQppbmRleCAwOThmYWI4ZTU3MTk5MWFhZjcyM2RkMDc4ZWYyZDZkNWEzNDRiMTA4
Li42NTc2OGZhNmJmYjBmYmMxMTVhOGM3OGE3OWJhOTUzMzc2NTQyNTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTE1MCw3ICsxNTAsNyBAQCBt
YWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVCgKICAg
ICAgICAgMSwKICAgICAgICAgbWFjcm8oKQotICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQogICAgICAgICAgICAgcHJlcGFyZVN0
YXRlRm9yQ0NhbGwoKQogICAgICAgICAgICAgbW92ZSBjZnIsIGEwCiAgICAgICAgICAgICBtb3Zl
IFBDLCBhMQpAQCAtMTYzLDcgKzE2Myw3IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29w
KCkKICAgICAgICAgICAgIG1vdmUgcjAsIGEwCiAgICAgICAgICAgICBqbXAgcjEsIFdhc21FbnRy
eVB0clRhZwogICAgICAgICAucmVjb3ZlcjoKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgICAgIGVuZCkKIGVuZAogCkBA
IC0yMjksNyArMjI5LDcgQEAgbWFjcm8gcmVsb2FkTWVtb3J5UmVnaXN0ZXJzRnJvbUluc3RhbmNl
KGluc3RhbmNlLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiBlbmQKIAogbWFjcm8gdGhyb3dFeGNlcHRp
b24oZXhjZXB0aW9uKQotICAgIHN0b3JlaSBjb25zdGV4cHIgV2FzbTo6RXhjZXB0aW9uVHlwZTo6
JWV4Y2VwdGlvbiUsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0KKyAgICBzdG9y
ZWkgY29uc3RleHByIFdhc206OkV4Y2VwdGlvblR5cGU6OiVleGNlcHRpb24lLCBBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbY2ZyXQogICAgIGptcCBfd2FzbV90aHJv
d19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lCiBlbmQKIApAQCAtMjQzLDcgKzI0Myw3IEBAIG1h
Y3JvIGNhbGxXYXNtU2xvd1BhdGgoc2xvd1BhdGgpCiBlbmQKIAogbWFjcm8gY2FsbFdhc21DYWxs
U2xvd1BhdGgoc2xvd1BhdGgsIGFjdGlvbikKLSAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBUYWdPZmZzZXRbY2ZyXQogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKICAgICBtb3Zl
IGNmciwgYTAKICAgICBtb3ZlIFBDLCBhMQpAQCAtNDk0LDggKzQ5NCw4IEBAIG9wKHdhc21fdGhy
b3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSwgbWFjcm8gKCkKICAgICBtb3ZlIGNmciwgYTAK
ICAgICBhZGRwIFBCLCBQQywgYTEKICAgICBtb3ZlIHdhc21JbnN0YW5jZSwgYTIKLSAgICAjIFNs
b3cgcGF0aHMgYW5kIHRoZSB0aHJvd0V4Y2VwdGlvbiBtYWNybyBzdG9yZSB0aGUgZXhjZXB0aW9u
IGNvZGUgaW4gdGhlIEFyZ3VtZW50Q291bnQgc2xvdAotICAgIGxvYWRpIEFyZ3VtZW50Q291bnQg
KyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEzCisgICAgIyBTbG93IHBhdGhzIGFuZCB0aGUgdGhyb3dF
eGNlcHRpb24gbWFjcm8gc3RvcmUgdGhlIGV4Y2VwdGlvbiBjb2RlIGluIHRoZSBBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyBzbG90CisgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEzCiAgICAgY0NhbGw0KF9zbG93X3BhdGhfd2FzbV90
aHJvd19leGNlcHRpb24pCiAKICAgICBqbXAgcjAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKQEAg
LTY3OSw3ICs2NzksNyBAQCBtYWNybyBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgc2xvd1BhdGgs
IHN0b3JlV2FzbUluc3RhbmNlKQogICAgICAgICBtYWNybyAoY2FsbGVlLCB0YXJnZXRXYXNtSW5z
dGFuY2UpCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZSwgd3MwCiAKLSAgICAgICAgICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgICAgIGxvYWRpIEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAKICAgICAgICAg
ICAgICMgdGhlIGNhbGwgbWlnaHQgdGhyb3cgKGUuZy4gaW5kaXJlY3QgY2FsbCB3aXRoIGJhZCBz
aWduYXR1cmUpCiAgICAgICAgICAgICBidHB6IHRhcmdldFdhc21JbnN0YW5jZSwgLnRocm93CkBA
IC03MTgsNyArNzE4LDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIHNsb3dQYXRo
LCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgICAgICMgbmVlZCB0byBwcmVzZXJ2ZSBpdHMg
Y3VycmVudCB2YWx1ZSBzaW5jZSBpdCBtaWdodCBjb250YWluIGEgcmV0dXJuIHZhbHVlCiAgICAg
ICAgICAgICBtb3ZlIFBDLCBtZW1vcnlCYXNlCiAgICAgICAgICAgICBtb3ZlIFBCLCB3YXNtSW5z
dGFuY2UKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwg
UEMKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zm
c2V0W2Nmcl0sIFBDCiAgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICAg
ICAgICAgIGxvYWRwIFdhc206OkZ1bmN0aW9uQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1Bv
aW50ZXJbUEJdLCBQQgogCkBAIC03NDAsNyArNzQwLDcgQEAgbWFjcm8gc2xvd1BhdGhGb3JXYXNt
Q2FsbChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgICAgICAgICBz
dG9yZWQgZnByLCBDYWxsRnJhbWVIZWFkZXJTaXplICsgb2Zmc2V0W3dzMSwgd3MwLCA4XQogICAg
ICAgICAgICAgZW5kKQogCi0gICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zm
c2V0W2Nmcl0sIFBDCisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyArIFRhZ09mZnNldFtjZnJdLCBQQwogCiAgICAgICAgICAgICBzdG9yZVdhc21JbnN0YW5jZSh3
YXNtSW5zdGFuY2UpCiAgICAgICAgICAgICByZWxvYWRNZW1vcnlSZWdpc3RlcnNGcm9tSW5zdGFu
Y2Uod2FzbUluc3RhbmNlLCB3czAsIHdzMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGYzNThkNDhhNTBkZTczZWFiMzg1Njk5
YjNhNmY1MTEzYmJiZTliYmEuLjg3NzE2ZDI3N2EwZWJjMmRiNGUxNTljZjY5ZjliMmUyYjVjYTlm
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtMjIyLDYgKzIyMiwxOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3Jl
YXRlX2Nsb25lZF9hcmd1bWVudHMpCiAgICAgUkVUVVJOKENsb25lZEFyZ3VtZW50czo6Y3JlYXRl
V2l0aE1hY2hpbmVGcmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgQXJndW1lbnRzTW9kZTo6
Q2xvbmVkKSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRz
X2J1dHRlcmZseSkKK3sKKyAgICBCRUdJTigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk+KCk7CisgICAgaW50MzJfdCBhcmd1bWVudENvdW50
ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkq
IGJ1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojp0cnlDcmVhdGUodm0sIHZtLmltbXV0
YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9u
V3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgp
LCBhcmd1bWVudENvdW50KTsKKyAgICBpZiAoIWJ1dHRlcmZseSkKKyAgICAgICAgVEhST1coY3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICBmb3IgKGludDMyX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Q291bnQ7ICsraW5kZXgpCisgICAgICAgIGJ1dHRlcmZs
eS0+c2V0SW5kZXgodm0sIGluZGV4LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGluZGV4
KSk7CisgICAgUkVUVVJOKGJ1dHRlcmZseSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9jcmVhdGVfdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA0NmJmZTE1MjRjZTViNzUzMWViYjMw
NzM5MWFmNzcwY2U1MDdkOGIxLi43MWU3ODVlOTBjNmNkMGZjMjY0OWZmYThiN2JjOGM2NDkyZGE5
MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaApAQCAtMzIwLDYgKzMyMCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Y29uc3RydWN0X2FyaXR5Q2hlY2spOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
cmVhdGVfZGlyZWN0X2FyZ3VtZW50cyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2NyZWF0ZV90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
ZW50ZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfY2FsbGVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlQmFzZS5oCmluZGV4IDgw
NjJmMWUwNjFhZjE4N2Q5NGJkM2ZiODQwMWFjNzY5ZDAwZTk2YjAuLjk1ODEwNWQzMjY2ZGRmZjg1
YmU1ZDc2ZDg3Y2RlNWNiMzMxMzE0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGVCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZUJhc2UuaApAQCAtNTcsNyArNTcsNyBAQCBpbmxpbmUgYm9vbCBpc0Nh
bGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogCiBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6
IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0gICAgZnJpZW5kIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25D
YWxsR2VuZXJhdG9yKFZNKik7CisgICAgZnJpZW5kIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0qKTsKIAogcHJvdGVjdGVk
OgogICAgIEV4ZWN1dGFibGVCYXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCmlu
ZGV4IDAyMWI4Y2M1NzMxMjhlOTQ0MjAxOGQwZGMwODM2Y2M1NDM2ZDlmMjYuLjRmNzQ5YTg1MTFj
ZTAxOTRiMTEzYzdlYTc2OTAxOWIwMmNkZGRkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCkBAIC02OSw3ICs2OSwxMCBAQCBG
dW5jdGlvblJhcmVEYXRhOjpGdW5jdGlvblJhcmVEYXRhKFZNJiB2bSkKICAgICAvLyB0aGUgZmly
c3QgYWxsb2NhdGlvbiBkb24ndCBkaXNhYmxlIG9wdGltaXphdGlvbnMuIFRoaXMgaXNuJ3Qgc3Vw
ZXIgaW1wb3J0YW50LCBzaW5jZSB0aGUKICAgICAvLyBmdW5jdGlvbiBpcyB1bmxpa2VseSB0byBh
bGxvY2F0ZSBhIHJhcmUgZGF0YSB1bnRpbCB0aGUgZmlyc3QgYWxsb2NhdGlvbiBhbnl3YXkuCiAg
ICAgLCBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldChDbGVhcldhdGNocG9pbnQpCisg
ICAgLCBtX2hhc1JlaWZpZWRMZW5ndGgoZmFsc2UpCiAgICAgLCBtX2hhc1JlaWZpZWROYW1lKGZh
bHNlKQorICAgICwgbV9oYXNNb2RpZmllZExlbmd0aChmYWxzZSkKKyAgICAsIG1faGFzTW9kaWZp
ZWROYW1lKGZhbHNlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmgKaW5kZXggMWYzMmEzY2JiYzQ2YWU1MDBhMmNkZGVjNGZhMjc4
NTUxNTAyMTA2NS4uYmRhNWQ3YTY5YmJmNzNjN2RlZTM4ZmVlM2MyOTNjYzI4NmJhZjU5OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApA
QCAtNzMsOCArNzMsNiBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbnRlcm5hbEZ1bmN0
aW9uQWxsb2NhdGlvblByb2ZpbGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25S
YXJlRGF0YSwgbV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUpOyB9CiAgICAgc3Rh
dGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZSk7IH0KICAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRp
b25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1
bmN0aW9uUmFyZURhdGEsIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOyB9
Ci0gICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZIYXNSZWlmaWVkTGVuZ3RoKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1faGFzUmVpZmllZExl
bmd0aCk7IH0KLSAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkhhc1JlaWZpZWRO
YW1lKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1faGFzUmVp
ZmllZE5hbWUpOyB9CiAKICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGUq
IG9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkKICAgICB7CkBAIC0xMjEsNiArMTE5LDE3IEBAIGNs
YXNzIEZ1bmN0aW9uUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBib29sIGhh
c1JlaWZpZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWlmaWVkTmFtZTsgfQogICAgIHZv
aWQgc2V0SGFzUmVpZmllZE5hbWUoKSB7IG1faGFzUmVpZmllZE5hbWUgPSB0cnVlOyB9CiAKKyAg
ICBib29sIGhhc01vZGlmaWVkTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNb2RpZmllZExl
bmd0aDsgfQorICAgIHZvaWQgc2V0SGFzTW9kaWZpZWRMZW5ndGgoKQorICAgIHsKKyAgICAgICAg
bV9oYXNNb2RpZmllZExlbmd0aCA9IHRydWU7CisgICAgfQorICAgIGJvb2wgaGFzTW9kaWZpZWRO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNb2RpZmllZE5hbWU7IH0KKyAgICB2b2lkIHNldEhh
c01vZGlmaWVkTmFtZSgpCisgICAgeworICAgICAgICBtX2hhc01vZGlmaWVkTmFtZSA9IHRydWU7
CisgICAgfQorCiAgICAgYm9vbCBoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dCgpIGNvbnN0IHsgcmV0dXJuICEhbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dDsgfQogICAgIFdhdGNocG9pbnQqIGNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRj
aHBvaW50KCk7CiAgICAgY2xhc3MgQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ7
CkBAIC0xNTAsOCArMTU5LDEwIEBAIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGEgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUgbV9pbnRl
cm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbGxvY2F0
aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4gbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5n
V2F0Y2hwb2ludDsKLSAgICBib29sIG1faGFzUmVpZmllZExlbmd0aCB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX2hhc1JlaWZpZWROYW1lIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzUmVpZmllZExl
bmd0aCA6IDE7CisgICAgYm9vbCBtX2hhc1JlaWZpZWROYW1lIDogMTsKKyAgICBib29sIG1faGFz
TW9kaWZpZWRMZW5ndGggOiAxOworICAgIGJvb2wgbV9oYXNNb2RpZmllZE5hbWUgOiAxOwogfTsK
IAogY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNo
cG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAppbmRleCAyMzc3
MGVjYTNiZWUwMGMzOGM1NDUyNWFhZmRjMTZmYzgxZTBmMTk0Li4zMTNmMWEwN2E1NGQzZjI2OGJh
MjI1MWUyMTI1N2NiYmNjNGU4NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKQEAgLTEyNyw3ICsxMjcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRl
ckNvbXBhcmUoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVj
dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAyLCAiY29tcGFyZSJfcywg
SW50bENvbGxhdG9yRnVuY0NvbXBhcmUsIE5vSW50cmluc2ljKTsKIAogICAgICAgICAvLyBjLiBM
ZXQgYmMgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCi0gICAgICAg
IGJvdW5kQ29tcGFyZSA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHRhcmdldE9iamVjdCwgY29sbGF0b3IsIG51bGxwdHIsIDIsIFN0cmluZygpKTsKKyAgICAgICAg
Ym91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
dGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgbnVsbHB0ciwgMiwganNFbXB0eVN0cmluZyh2bSkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICAgICAgLy8gZC4gU2V0IGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0gdG8gYmMuCiAgICAgICAg
IGNvbGxhdG9yLT5zZXRCb3VuZENvbXBhcmUodm0sIGJvdW5kQ29tcGFyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAppbmRleCBkMDQzZWY3ZmZkNjAwNWJkMTg3NTNhNGQyMmEyMTdiN2M4MGNj
ZDU0Li45Y2Q5MmZkYjIzNWUzMWZhMjk2M2YxODlmZTA3ZWZkZTA3YTU5YjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2Jh
bE9iagogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlz
IDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00MDIgMS4wKQog
ICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgMSwgImZvcm1hdCJfcywgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1h
dERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1
bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KLSAgICAgICAgYm91bmRGb3JtYXQgPSBK
U0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0
ZiwgbnVsbHB0ciwgMSwgU3RyaW5nKCkpOworICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBudWxs
cHRyLCAxLCBqc0VtcHR5U3RyaW5nKHZtKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAvLyBkLiBTZXQgZHRmLltbYm91bmRG
b3JtYXRdXSB0byBiZi4KICAgICAgICAgZHRmLT5zZXRCb3VuZEZvcm1hdCh2bSwgYm91bmRGb3Jt
YXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCA5MWI0ODNmMjliM2VmNTk2MGFkMzUyYWVm
YTZmZTM0OTAyMzM4MDdkLi4yMGZhOTQ5MDQ2OTJiYmEzZTBiNjBhZjNjY2ZlOGY5NjViODEzMDUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChK
U0dsb2JhbE9iamVjCiAgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJv
cGVydHkgaXMgMS4KICAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJmb3JtYXQiX3MsIEludGxOdW1iZXJGb3Jt
YXRGdW5jRm9ybWF0TnVtYmVyLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBi
ZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KLSAgICAgICAgYm91bmRG
b3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRP
YmplY3QsIG5mLCBudWxscHRyLCAxLCBTdHJpbmcoKSk7CisgICAgICAgIGJvdW5kRm9ybWF0ID0g
SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBu
ZiwgbnVsbHB0ciwgMSwganNFbXB0eVN0cmluZyh2bSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAgLy8gZC4gU2V0IG5mLltb
Ym91bmRGb3JtYXRdXSB0byBiZi4KICAgICAgICAgbmYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3Vu
ZEZvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApp
bmRleCBhNDFiNTdiMmNiY2JiMWMyZDVkNWY2Y2E5OWI2YWQ2MGI0ZWMyYTlhLi43Zjg2N2YxMzk0
OTVhOTMwZjZmZWJiYTgyYjhlNmU3YTQzNzA3ZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTE4Nyw4ICsxODcsOCBAQCBjb25zdCBjaGFyKiBp
bnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAiVHJ1bmNJ
bnRyaW5zaWMiOwogICAgIGNhc2UgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYzoKICAgICAgICAg
cmV0dXJuICJJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljIjsKLSAgICBjYXNlIEJvdW5kVGhpc05v
QXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYzoKLSAgICAgICAgcmV0dXJuICJCb3VuZFRoaXNOb0Fy
Z3NGdW5jdGlvbkNhbGxJbnRyaW5zaWMiOworICAgIGNhc2UgQm91bmRGdW5jdGlvbkNhbGxJbnRy
aW5zaWM6CisgICAgICAgIHJldHVybiAiQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMiOwogICAg
IGNhc2UgSlNNYXBHZXRJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiSlNNYXBHZXRJbnRyaW5z
aWMiOwogICAgIGNhc2UgSlNNYXBIYXNJbnRyaW5zaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5oCmluZGV4IGZlMmU5MTBmOTFlZGVhZWQyNjA5ZjQyNDc0ZTI4MDRi
YjZmZmNjZTguLmJiMmZlZTJlMjg5MTQxMzVhOTIzOTFjNGUwOTU0ZmFiYTg4YTllYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC0xMDYsNyArMTA2LDcg
QEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBGUm91bmRJbnRyaW5zaWMsCiAgICAg
VHJ1bmNJbnRyaW5zaWMsCiAgICAgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYywKLSAgICBCb3Vu
ZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCisgICAgQm91bmRGdW5jdGlvbkNhbGxJ
bnRyaW5zaWMsCiAgICAgSlNNYXBHZXRJbnRyaW5zaWMsCiAgICAgSlNNYXBIYXNJbnRyaW5zaWMs
CiAgICAgSlNNYXBTZXRJbnRyaW5zaWMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCA3NWJlNWZlYTZhYzAwZGViODhhODUzOWQ2
MmYyNzUxMjA1MjkzNTE5Li40MTg2NTlhYTJlNGRlYTNjZjNjOTQ0NmUwMmI1M2JiYzk1YzkyZjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlv
bi5jcHAKQEAgLTM5LDcgKzM5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91
bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAg
SlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+
KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91
bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CisKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOworICAgIGlmIChib3VuZEFyZ3MpIHsKKyAgICAgICAgLy8gU3RhcnRzIHdp
dGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4KKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKKyAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFyZ3MuYXBw
ZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CkBAIC02MiwxMiArNjksMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0ganNDYXN0PEpTQm91bmRGdW5jdGlv
bio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAKLSAgICBKU0FycmF5KiBib3VuZEFyZ3MgPSBi
b3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKTsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91
bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCk7CiAKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwogICAgIGlmIChib3VuZEFyZ3MpIHsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKGJvdW5kQXJncy0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKKyAgICAgICAgLy8gU3RhcnRz
IHdpdGggMSBzaW5jZSB0aGUgZmlyc3Qgb25lIGlzIHx0aGlzfC4KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIGFy
Z3MuYXBwZW5kKGJvdW5kQXJncy0+Z2V0KGkpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFyZ3Mu
YXBwZW5kKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwpAQCAtODcsNyArOTUsMTQg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNv
bnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2wKIHsKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5k
RnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgp
KTsKIAorICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MgPSBib3VuZEZ1bmN0aW9u
LT5ib3VuZEFyZ3MoKTsKKwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgaWYg
KGJvdW5kQXJncykgeworICAgICAgICAvLyBTdGFydHMgd2l0aCAxIHNpbmNlIHRoZSBmaXJzdCBv
bmUgaXMgfHRoaXN8LgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgYm91bmRBcmdz
LT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgYXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXQo
aSkpOworICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbEZyYW1lLT5hcmd1
bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYXJncy5hcHBlbmQoY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudChpKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgp
KTsKQEAgLTEwNSwxMiArMTIwLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91
bmRGdW5jdGlvbkNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCkpOwogCi0gICAgSlNBcnJheSogYm91bmRBcmdzID0gYm91bmRGdW5jdGlvbi0+Ym91bmRB
cmdzKCk7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJvdW5kQXJncyA9IGJvdW5kRnVuY3Rp
b24tPmJvdW5kQXJncygpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBp
ZiAoYm91bmRBcmdzKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBib3VuZEFy
Z3MtPmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdl
dEluZGV4UXVpY2tseShpKSk7CisgICAgICAgIC8vIFN0YXJ0cyB3aXRoIDEgc2luY2UgdGhlIGZp
cnN0IG9uZSBpcyB8dGhpc3wuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBib3Vu
ZEFyZ3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3Mt
PmdldChpKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhcmdzLmFwcGVuZChjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpKTsKQEAgLTE3MSwyMyArMTg3LDIyIEBAIGlubGluZSBTdHJ1Y3R1
cmUqIGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNCb3VuZEZ1bmN0aW9uKiBKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTQXJyYXkqIGJv
dW5kQXJncywgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQorSlNCb3VuZEZ1bmN0aW9u
KiBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTSW1t
dXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MsIGludCBsZW5ndGgsIEpTU3RyaW5nKiBuYW1lKQog
ewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIG5hbWUt
PnZhbHVlKGdsb2JhbE9iamVjdCk7IC8vIFJlc29sdmluZyByb3BlLgorICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgYm9vbCBpc0pTRnVuY3Rpb24gPSBnZXRK
U0Z1bmN0aW9uKHRhcmdldEZ1bmN0aW9uKTsKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERh
dGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gSlNDOjpnZXRDb25zdHJ1Y3RE
YXRhKHZtLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgYm9vbCBjYW5Db25z
dHJ1Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7Ci0gICAgCi0gICAg
Ym9vbCBzbG93Q2FzZSA9IGJvdW5kQXJncyB8fCAhZ2V0SlNGdW5jdGlvbih0YXJnZXRGdW5jdGlv
bik7Ci0gICAgCi0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RG
dW5jdGlvbigKLSAgICAgICAgc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ2FsbCA6IGJvdW5kVGhp
c05vQXJnc0Z1bmN0aW9uQ2FsbCwKLSAgICAgICAgc2xvd0Nhc2UgPyBOb0ludHJpbnNpYyA6IEJv
dW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEludHJpbnNpYywKLSAgICAgICAgY2FuQ29uc3RydWN0
ID8gKHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNvbnN0cnVjdCA6IGJvdW5kVGhpc05vQXJnc0Z1
bmN0aW9uQ29uc3RydWN0KSA6IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBudWxscHRy
LAotICAgICAgICBuYW1lKTsKKworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2
bS5nZXRCb3VuZEZ1bmN0aW9uKGlzSlNGdW5jdGlvbiwgY2FuQ29uc3RydWN0KTsKICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGdldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgdGFyZ2V0RnVuY3Rpb24pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwotICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KHZtLmhlYXApKSBKU0JvdW5kRnVuY3Rpb24odm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB0YXJnZXRGdW5jdGlvbiwgYm91bmRUaGlzLCBib3Vu
ZEFyZ3MpOworICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KHZtLmhlYXApKSBKU0JvdW5kRnVuY3Rpb24odm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB0YXJnZXRGdW5jdGlvbiwgYm91bmRUaGlzLCBib3Vu
ZEFyZ3MsIG5hbWUsIGxlbmd0aCk7CiAKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0s
IGV4ZWN1dGFibGUsIGxlbmd0aCk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwpAQCAtMTk4LDEyICsy
MTMsMTUgQEAgYm9vbCBKU0JvdW5kRnVuY3Rpb246OmN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICByZXR1cm4ganNDYXN0PEpTQm91
bmRGdW5jdGlvbio+KG9iamVjdCktPm1fdGFyZ2V0RnVuY3Rpb24tPmhhc0luc3RhbmNlKGdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogfQogCi1KU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0FycmF5KiBi
b3VuZEFyZ3MpCitKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRGdW5jdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCog
dGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSog
Ym91bmRBcmdzLCBKU1N0cmluZyogbmFtZSwgaW50IGxlbmd0aCkKICAgICA6IEJhc2Uodm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV90YXJnZXRGdW5jdGlvbih2bSwgdGhpcywg
dGFyZ2V0RnVuY3Rpb24pCiAgICAgLCBtX2JvdW5kVGhpcyh2bSwgdGhpcywgYm91bmRUaGlzKQot
ICAgICwgbV9ib3VuZEFyZ3Modm0sIHRoaXMsIGJvdW5kQXJncywgV3JpdGVCYXJyaWVyPEpTQXJy
YXk+OjpNYXlCZU51bGwpCisgICAgLCBtX2JvdW5kQXJncyh2bSwgdGhpcywgYm91bmRBcmdzLCBX
cml0ZUJhcnJpZXI8SlNJbW11dGFibGVCdXR0ZXJmbHk+OjpNYXlCZU51bGwpCisgICAgLCBtX25h
bWUodm0sIHRoaXMsIG5hbWUpCisgICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CisgICAgQVNTRVJU
KCFtX25hbWUtPmlzUm9wZSgpKTsKIH0KIAogSlNBcnJheSogSlNCb3VuZEZ1bmN0aW9uOjpib3Vu
ZEFyZ3NDb3B5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0yMTIsOSArMjMwLDEy
IEBAIEpTQXJyYXkqIEpTQm91bmRGdW5jdGlvbjo6Ym91bmRBcmdzQ29weShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KHRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ib3VuZEFyZ3MtPmxlbmd0aCgp
OyArK2kpIHsKLSAgICAgICAgcmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwgbV9ib3VuZEFyZ3Mt
PmdldEluZGV4UXVpY2tseShpKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOworICAgIGlmIChtX2JvdW5kQXJncykgeworICAgICAgICAvLyBTdGFydHMgd2l0
aCAxIHNpbmNlIHRoZSBmaXJzdCBvbmUgaXMgYm91bmQgfHRoaXN8LgorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgbV9ib3VuZEFyZ3MtPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC0+cHVzaChnbG9iYWxPYmplY3QsIG1fYm91bmRBcmdzLT5nZXQoaSkpOworICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgIH0K
ICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIzNSw2ICsyNTYsNyBAQCB2b2lkIEpT
Qm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFyZ2V0RnVuY3Rpb24p
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kQXJncyk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9uYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCmluZGV4IDc2NzdjNmE0
OTIzMjVmNTgyYWQ3Y2FkMzExZDNlNGY5N2E2YzZhODMuLjczYjAxNDVmZGJlMDYzYWQwYjY2ZGI3
ODdlMWY1NzFmMjliMmYzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5oCkBAIC00OCwxNCArNDgsMjMgQEAgY2xhc3MgSlNCb3VuZEZ1bmN0
aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewogICAgICAgICByZXR1cm4gdm0uYm91bmRG
dW5jdGlvblNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlv
biogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24s
IEpTVmFsdWUgYm91bmRUaGlzLCBKU0FycmF5KiBib3VuZEFyZ3MsIGludCwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKKyAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBib3VuZEFyZ3MsIGludCwgSlNTdHJpbmcqIG5hbWUpOwogICAg
IAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbigpIHsgcmV0
dXJuIG1fdGFyZ2V0RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU1ZhbHVlIGJvdW5kVGhpcygpIHsg
cmV0dXJuIG1fYm91bmRUaGlzLmdldCgpOyB9Ci0gICAgSlNBcnJheSogYm91bmRBcmdzKCkgeyBy
ZXR1cm4gbV9ib3VuZEFyZ3MuZ2V0KCk7IH0gLy8gRE8gTk9UIGFsbG93IHRoaXMgYXJyYXkgdG8g
YmUgbXV0YXRlZCEKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzKCkgeyByZXR1
cm4gbV9ib3VuZEFyZ3MuZ2V0KCk7IH0gLy8gRE8gTk9UIGFsbG93IHRoaXMgYXJyYXkgdG8gYmUg
bXV0YXRlZCEKICAgICBKU0FycmF5KiBib3VuZEFyZ3NDb3B5KEpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgSlNTdHJpbmcqIG5hbWUoKSB7IHJldHVybiBtX25hbWUuZ2V0KCk7IH0KKyAgICBjb25zdCBT
dHJpbmcmIG5hbWVTdHJpbmcoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX25hbWUtPmlzUm9w
ZSgpKTsKKyAgICAgICAgYm9vbCBhbGxvY2F0aW9uQWxsb3dlZCA9IGZhbHNlOworICAgICAgICBy
ZXR1cm4gbV9uYW1lLT50cnlHZXRWYWx1ZShhbGxvY2F0aW9uQWxsb3dlZCk7CisgICAgfQorCisg
ICAgaW50MzJfdCBsZW5ndGgoVk0mKSB7IHJldHVybiBtX2xlbmd0aDsgfQogCiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNjUsNiArNzQsNyBAQCBjbGFz
cyBKU0JvdW5kRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgCiAgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhcmdldEZ1bmN0aW9uKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTQm91bmRGdW5jdGlvbiwgbV90YXJnZXRGdW5jdGlvbik7IH0KICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mQm91bmRUaGlzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEpTQm91bmRGdW5jdGlvbiwgbV9ib3VuZFRoaXMpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkJvdW5kQXJncygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0JvdW5kRnVuY3Rp
b24sIG1fYm91bmRBcmdzKTsgfQogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC03MiwxMyArODIs
MjAgQEAgY2xhc3MgSlNCb3VuZEZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewog
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAog
cHJpdmF0ZToKLSAgICBKU0JvdW5kRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTQXJy
YXkqIGJvdW5kQXJncyk7CisgICAgSlNCb3VuZEZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlz
LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYm91bmRBcmdzLCBKU1N0cmluZyogbmFtZSwgaW50IGxl
bmd0aCk7CiAgICAgCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFi
bGUqLCBpbnQgbGVuZ3RoKTsKIAogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV90YXJnZXRG
dW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9ib3VuZFRoaXM7Ci0gICAgV3Jp
dGVCYXJyaWVyPEpTQXJyYXk+IG1fYm91bmRBcmdzOworICAgIFdyaXRlQmFycmllcjxKU0ltbXV0
YWJsZUJ1dHRlcmZseT4gbV9ib3VuZEFyZ3M7CisgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBt
X25hbWU7CisgICAgaW50IG1fbGVuZ3RoOwogfTsKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5k
VGhpc05vQXJnc0Z1bmN0aW9uQ2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNvbnN0cnVj
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNjJlNTU4
ZmZhNDY0NGU4NDc4YzY4MTA5NzI3MjU4MGNmMGQ2YjBmNy4uMzdiMmMxM2IxOGQ4ZmM4ZjA5NjM5
ODU3NTI3ZTk5NzM5ODFlZmYxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKQEAgLTEyNiw2ICsxMjYsOCBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNT
RVJUKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0aGlzKSk7CiAgICAgQVNTRVJUKHR5
cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSk7CisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0
Q29uc3RydWN0RGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YSk7CisgICAgQVNT
RVJUKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEgPT0gJkpTRnVuY3Rpb246OmdldENhbGxE
YXRhKTsKIH0KIAogdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2
ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSkK
QEAgLTEzMyw4ICsxMzUsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKICAg
ICBBU1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKTsKKyAgICBBU1NFUlQobWV0aG9kVGFi
bGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRh
KTsKKyAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSA9PSAmSlNGdW5jdGlv
bjo6Z2V0Q2FsbERhdGEpOwogICAgIG1fZXhlY3V0YWJsZS5zZXQodm0sIHRoaXMsIGV4ZWN1dGFi
bGUpOwotICAgIC8vIFNvbWUgTmF0aXZlRXhlY3V0YWJsZSBmdW5jdGlvbnMsIGxpa2UgSlNCb3Vu
ZEZ1bmN0aW9uLCBkZWNpZGUgdG8gbGF6aWx5IGFsbG9jYXRlIHRoZWlyIG5hbWUgc3RyaW5nLgor
CisgICAgLy8gU29tZSBOYXRpdmVFeGVjdXRhYmxlIGZ1bmN0aW9ucywgbGlrZSBKU0JvdW5kRnVu
Y3Rpb24sIGRlY2lkZSB0byBsYXppbHkgYWxsb2NhdGUgdGhlaXIgbmFtZSBzdHJpbmcgLyBsZW5n
dGguCisgICAgaWYgKHRoaXMtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKQorICAgICAg
ICByZXR1cm47CisKICAgICBpZiAoIW5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcodm0sIG5hbWUpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwpAQCAtMjA3LDYgKzIxNSw4IEBAIEZ1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmluaXRp
YWxpemVSYXJlRGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzCiBTdHJpbmcgSlNG
dW5jdGlvbjo6bmFtZShWTSYgdm0pCiB7CiAgICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAg
ICAgICAgaWYgKHRoaXMtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKQorICAgICAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0aGlzKS0+bmFtZVN0cmluZygpOwog
ICAgICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1
dGFibGUqPih0aGlzLT5leGVjdXRhYmxlKCkpOwogICAgICAgICByZXR1cm4gZXhlY3V0YWJsZS0+
bmFtZSgpOwogICAgIH0KQEAgLTQyMSwxMCArNDMxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVu
Y3Rpb246OmNhbGxlckdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRnVu
Y3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgdGhpc09i
amVjdC0+cmVpZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZOZWVkZWQodm0sIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKICAgICB9CiAKICAgICBpZiAocHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSAmJiB0aGlzT2JqZWN0LT5q
c0V4ZWN1dGFibGUoKS0+aGFzUHJvdG90eXBlUHJvcGVydHkoKSAmJiAhdGhpc09iamVjdC0+anNF
eGVjdXRhYmxlKCktPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkpIHsKQEAgLTQ2MCwyMiAr
NDczLDIzIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykgewogICAgICAgICBpZiAoIXRoaXNPYmpl
Y3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9wZXJ0aWVzKCkpCi0g
ICAgICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7CiAgICAgICAgIAogICAgICAgICBzbG90LnNl
dENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSwgYXJndW1lbnRzR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB9IGVs
c2UgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIpIHsKICAgICAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRz
UHJvcGVydGllcygpKQotICAgICAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwogCiAgICAgICAg
IHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlLCBjYWxsZXJHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICAgICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKHZtLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogCi0gICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQpAQCAtNDk3LDEwICs1MTEsMTIgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGcKICAg
ICAgICAgICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZE5hbWUoKSkKICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5pc0J1aWx0aW5GdW5jdGlvbigp
ICYmICF0aGlzT2JqZWN0LT5oYXNSZWlmaWVkTGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGlm
ICgodGhpc09iamVjdC0+aXNCdWlsdGluRnVuY3Rpb24oKSB8fCB0aGlzT2JqZWN0LT5pbmhlcml0
czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgJiYgIXRoaXNPYmplY3QtPmhhc1JlaWZpZWROYW1lKCkp
Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSk7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+aXNCdWlsdGluRnVuY3Rpb24oKSB8fCB0
aGlzT2JqZWN0LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgeworICAgICAgICAgICAg
ICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZExlbmd0aCgpKQorICAgICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOworICAgICAg
ICAgICAgICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZE5hbWUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bmFtZSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7
CkBAIC01MTMsMTIgKzUyOSwyMSBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogCiAgICAgSlNG
dW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAKKyAgICBp
ZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCB8fCBwcm9wZXJ0eU5h
bWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bmFtZSkgeworICAgICAgICBGdW5jdGlvblJhcmVEYXRh
KiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRhKHZtKTsKKyAgICAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCisgICAgICAgICAgICByYXJlRGF0
YS0+c2V0SGFzTW9kaWZpZWRMZW5ndGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFy
ZURhdGEtPnNldEhhc01vZGlmaWVkTmFtZSgpOworICAgIH0KKwogICAgIGlmIChVTkxJS0VMWShp
c1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQogICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xvdyhnbG9iYWxPYmplY3QsIHRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2Rl
KCkpKTsKIAogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkp
IHsKICAgICAgICAgUHJvcGVydHlTdGF0dXMgcHJvcGVydHlUeXBlID0gdGhpc09iamVjdC0+cmVp
ZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZOZWVkZWQodm0sIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgICAgICBpZiAoaXNMYXp5KHByb3BlcnR5VHlwZSkpCiAgICAgICAgICAgICBzbG90LmRp
c2FibGVDYWNoaW5nKCk7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkp
OwpAQCAtNTUxLDEwICs1NzYsMjEgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHIKIGJvb2wgSlNG
dW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Vs
bCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCisKKyAg
ICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCB8fCBwcm9wZXJ0
eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bmFtZSkgeworICAgICAgICBGdW5jdGlvblJhcmVE
YXRhKiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRhKHZtKTsKKyAgICAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCisgICAgICAgICAgICByYXJl
RGF0YS0+c2V0SGFzTW9kaWZpZWRMZW5ndGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmFyZURhdGEtPnNldEhhc01vZGlmaWVkTmFtZSgpOworICAgIH0KKworICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnJl
aWZ5TGF6eVByb3BlcnR5Rm9ySG9zdE9yQnVpbHRpbklmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7Ci0gICAgZWxzZSBpZiAodm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0g
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICB9IGVsc2UgaWYgKHZtLmRlbGV0
ZVByb3BlcnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSkgewogICAgICAgICAvLyBGb3Igbm9uLWhvc3QgZnVuY3Rpb25zLCBkb24ndCBsZXQgdGhl
c2UgcHJvcGVydGllcyBieSBkZWxldGVkIC0gZXhjZXB0IGJ5IERlZmluZU93blByb3BlcnR5Lgog
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB0aGlzT2JqZWN0LT5qc0V4
ZWN1dGFibGUoKTsKICAgICAgICAgCkBAIC01NjUsOSArNjAxLDEwIEBAIGJvb2wgSlNGdW5jdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdGhpc09iamVj
dC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQog
ICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkp
OwogfQogCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2Vw
dGlvbikKQEAgLTU3Niw4ICs2MTMsMTggQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOworCisgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggfHwgcHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUpIHsKKyAgICAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURh
dGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSh2bSk7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQorICAgICAgICAgICAgcmFyZURhdGEtPnNldEhh
c01vZGlmaWVkTGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhcmVEYXRhLT5z
ZXRIYXNNb2RpZmllZE5hbWUoKTsKKyAgICB9CisKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0
T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9w
ZXJ0eUZvckhvc3RPckJ1aWx0aW5JZk5lZWRlZCh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24p
KTsKICAgICB9CiAKQEAgLTcxNyw4ICs3NjQsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpyZWlmeUxl
bmd0aChWTSYgdm0pCiAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzLT5yYXJl
RGF0YSh2bSk7CiAKICAgICBBU1NFUlQoIWhhc1JlaWZpZWRMZW5ndGgoKSk7Ci0gICAgQVNTRVJU
KCFpc0hvc3RGdW5jdGlvbigpKTsKLSAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IGpzTnVtYmVy
KGpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSAwOworICAgIGlmICh0aGlzLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkKKyAgICAg
ICAgbGVuZ3RoID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KHRoaXMpLT5sZW5ndGgodm0pOwor
ICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoIWlzSG9zdEZ1bmN0aW9uKCkpOworICAgICAgICBs
ZW5ndGggPSBqc0V4ZWN1dGFibGUoKS0+cGFyYW1ldGVyQ291bnQoKTsKKyAgICB9CisgICAgSlNW
YWx1ZSBpbml0aWFsVmFsdWUgPSBqc051bWJlcihsZW5ndGgpOwogICAgIHVuc2lnbmVkIGluaXRp
YWxBdHRyaWJ1dGVzID0gUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5OwogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIgPSB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGg7CiAgICAgcmFyZURhdGEtPnNldEhhc1JlaWZpZWRMZW5ndGgo
KTsKQEAgLTc2Nyw3ICs4MjAsNyBAQCB2b2lkIEpTRnVuY3Rpb246OnJlaWZ5TmFtZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZyBuYW1lKQogCiBKU0Z1bmN0aW9u
OjpQcm9wZXJ0eVN0YXR1cyBKU0Z1bmN0aW9uOjpyZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKLSAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKKyAgICBpZiAoaXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAhdGhpcy0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9u
Pih2bSkpCiAgICAgICAgIHJldHVybiBQcm9wZXJ0eVN0YXR1czo6RWFnZXI7CiAgICAgUHJvcGVy
dHlTdGF0dXMgbGF6eUxlbmd0aCA9IHJlaWZ5TGF6eUxlbmd0aElmTmVlZGVkKHZtLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGlzTGF6eShsYXp5TGVuZ3RoKSkKQEAgLTc4
MSw3ICs4MzQsNyBAQCBKU0Z1bmN0aW9uOjpQcm9wZXJ0eVN0YXR1cyBKU0Z1bmN0aW9uOjpyZWlm
eUxhenlQcm9wZXJ0eUlmTmVlZGVkKFZNJiB2bSwgSlNHbG9iYQogSlNGdW5jdGlvbjo6UHJvcGVy
dHlTdGF0dXMgSlNGdW5jdGlvbjo6cmVpZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZO
ZWVkZWQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIEFTU0VSVChpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKTsK
LSAgICBpZiAoaXNCdWlsdGluRnVuY3Rpb24oKSkgeworICAgIGlmIChpc0J1aWx0aW5GdW5jdGlv
bigpIHx8IHRoaXMtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0pKSB7CiAgICAgICAgIFBy
b3BlcnR5U3RhdHVzIGxhenlMZW5ndGggPSByZWlmeUxhenlMZW5ndGhJZk5lZWRlZCh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAoaXNMYXp5KGxhenlMZW5ndGgp
KQogICAgICAgICAgICAgcmV0dXJuIGxhenlMZW5ndGg7CkBAIC04MTUsNiArODY4LDggQEAgSlNG
dW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5jdGlvbjo6cmVpZnlMYXp5TmFtZUlmTmVlZGVk
KFZNJiB2bSwgSlNHbG9iYWxPYmoKIAogSlNGdW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5j
dGlvbjo6cmVpZnlMYXp5Qm91bmROYW1lSWZOZWVkZWQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXImIG5h
bWVJZGVudCA9IHZtLnByb3BlcnR5TmFtZXMtPm5hbWU7CiAgICAgaWYgKHByb3BlcnR5TmFtZSAh
PSBuYW1lSWRlbnQpCiAgICAgICAgIHJldHVybiBQcm9wZXJ0eVN0YXR1czo6RWFnZXI7CkBAIC04
MjYsOCArODgxLDEzIEBAIEpTRnVuY3Rpb246OlByb3BlcnR5U3RhdHVzIEpTRnVuY3Rpb246OnJl
aWZ5TGF6eUJvdW5kTmFtZUlmTmVlZGVkKFZNJiB2bSwgSlNHbG9iCiAgICAgICAgIHJlaWZ5TmFt
ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICBlbHNlIGlmICh0aGlzLT5pbmhlcml0czxKU0JvdW5k
RnVuY3Rpb24+KHZtKSkgewogICAgICAgICBGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRo
aXMtPnJhcmVEYXRhKHZtKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gc3RhdGljX2Nh
c3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPm5hbWUoKTsKLSAgICAg
ICAgSlNTdHJpbmcqIHN0cmluZyA9ICFuYW1lID8ganNFbXB0eVN0cmluZyh2bSkgOiBqc1N0cmlu
Zyh2bSwgbWFrZVN0cmluZygiYm91bmQgIiwgbmFtZSkpOworICAgICAgICBKU1N0cmluZyogbmFt
ZSA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPih0aGlzKS0+bmFtZSgpOworICAgICAgICBKU1N0
cmluZyogc3RyaW5nID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKG5hbWUtPmxlbmd0aCgpICE9IDAp
IHsKKyAgICAgICAgICAgIHN0cmluZyA9IGpzU3RyaW5nKGdsb2JhbE9iamVjdCwganNTdHJpbmco
dm0sICJib3VuZCAiX3MpLCBuYW1lKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIFByb3BlcnR5U3RhdHVzOjpMYXp5KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBzdHJpbmcgPSBqc1N0cmluZyh2bSwgImJvdW5kICJfcyk7CiAgICAgICAgIHVuc2lnbmVkIGlu
aXRpYWxBdHRyaWJ1dGVzID0gUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5OwogICAgICAgICByYXJlRGF0YS0+c2V0SGFzUmVpZmllZE5hbWUo
KTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBuYW1lSWRlbnQsIHN0cmluZywgaW5pdGlhbEF0dHJp
YnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4
IDI2ODQ0NWM5ZWRjZjI1ZDVjNGJiZDM5MWQ5NWIxYmQ2MjM3ZjJkOWMuLmM2MGJjZjk0ODAxOThk
Nzk5MDM0NWZhOTVjZGE5ODE4ODliNzcyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKQEAgLTExMSw4ICsxMTEsOCBAQCBjbGFzcyBKU0Z1bmN0aW9uIDog
cHVibGljIEpTQ2FsbGVlIHsKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlv
bigpOwogICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKCk7CiAKLSAg
ICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVj
dERhdGEmKTsKLSAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIAogICAg
IHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSgpCiAgICAgewpAQCAt
MTcxLDYgKzE3MSw4IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAg
IH07CiAgICAgUHJvcGVydHlTdGF0dXMgcmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZChWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKIAorICAgIGJvb2wgYXJlTmFtZUFuZExlbmd0
aE9yaWdpbmFsKFZNJik7CisKIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1
bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBKU0Z1bmN0aW9u
KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXgg
N2RjOGRlNjI1N2Y3YWJiZWE4MTllZjI5N2Y2Y2ZkOWJlMWEwM2RiNi4uM2U0ODU1N2EwY2NkODNl
YmRhZTBjZGY1OGVjNzg5MDg2NzRjMDgwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC0xMDksNiArMTA5LDE3IEBAIGlubGlu
ZSBib29sIEpTRnVuY3Rpb246Omhhc1JlaWZpZWROYW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9y
YXJlRGF0YSAmJiBtX3JhcmVEYXRhLT5oYXNSZWlmaWVkTmFtZSgpOwogfQogCitpbmxpbmUgYm9v
bCBKU0Z1bmN0aW9uOjphcmVOYW1lQW5kTGVuZ3RoT3JpZ2luYWwoVk0mKQoreworICAgIGlmICgh
bV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1fcmFyZURhdGEtPmhh
c01vZGlmaWVkTmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fcmFyZURh
dGEtPmhhc01vZGlmaWVkTGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6Y2FuVXNlQWxsb2NhdGlvblBy
b2ZpbGUoKQogewogICAgIGlmIChpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZjU5
YzdhYzAxM2U4ZDkyYWZkNmRhMzJhNjhhY2M3ZTM2NmFhNDdkOS4uMjQ3NjA3YzI4NDk4ZjJlNzIx
ZjFlZjIwMmU4OGFiNzcyYTY2YmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjg1LDE2ICsyODUsMTcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUJvdW5kRnVuY3Rpb24oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamUKICAgICBBU1NFUlQobGVuZ3RoVmFsdWUuaXNJbnQzMkFzQW55SW50KCkp
OwogICAgIGludDMyX3QgbGVuZ3RoID0gbGVuZ3RoVmFsdWUuYXNJbnQzMkFzQW55SW50KCk7CiAK
LSAgICBTdHJpbmcgbmFtZSA9IG5hbWVTdHJpbmctPnZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHRhcmdldCwgYm91bmRUaGlzLCBib3VuZEFyZ3MuaXNDZWxsKCkgPyBqc0Nhc3Q8
SlNBcnJheSo+KGJvdW5kQXJncykgOiBudWxscHRyLCBsZW5ndGgsIFdURk1vdmUobmFtZSkpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCb3VuZEZ1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBib3VuZFRoaXMsIGJvdW5k
QXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KGJvdW5kQXJncykg
OiBudWxscHRyLCBsZW5ndGgsIG5hbWVTdHJpbmcpKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0YXJnZXQpOworICAgIGlmIChmdW5jdGlvbikK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rpb24tPmFyZU5h
bWVBbmRMZW5ndGhPcmlnaW5hbCh2bSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAppbmRleCBiN2RiNDU0NjEyMjllZTJmMmMzMTQzMTcwYzI2OTQzOGE4ZTA2ZTAwLi5mZjA0
ZjU5Y2E4MjUyMDU2MDRhMWRiNWYyNzVmNGUzOWU0OGRlZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTU1LDcgKzU1LDcgQEAgaW5saW5lIEpTQ2VsbCog
Z2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAm
JiAodmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkpCiAgICAgICAgIHJl
dHVybiB2YWx1ZS5hc0NlbGwoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogY2xhc3MgRXhjZXB0aW9uOwpAQCAtMTI5MiwyMCArMTI5Miw2IEBAIGlubGluZSB2b2lk
IEpTT2JqZWN0OjpudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KFZNJiB2bSwgU3RydWN0dXJl
SUQgb2xkU3RydWN0CiAgICAgbV9idXR0ZXJmbHkuc2V0KHZtLCB0aGlzLCBidXR0ZXJmbHkpOwog
fQogCi1pbmxpbmUgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlLCBD
YWxsRGF0YSYgY2FsbERhdGEpCi17Ci0gICAgQ2FsbFR5cGUgcmVzdWx0ID0gdmFsdWUuaXNDZWxs
KCkgPyB2YWx1ZS5hc0NlbGwoKS0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSh2YWx1ZS5h
c0NlbGwoKSwgY2FsbERhdGEpIDogQ2FsbFR5cGU6Ok5vbmU7Ci0gICAgQVNTRVJUKHJlc3VsdCA9
PSBDYWxsVHlwZTo6Tm9uZSB8fCB2YWx1ZS5pc1ZhbGlkQ2FsbGVlKCkpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLWlubGluZSBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoVk0mIHZt
LCBKU1ZhbHVlIHZhbHVlLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQotewotICAgIENv
bnN0cnVjdFR5cGUgcmVzdWx0ID0gdmFsdWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+bWV0
aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKHZhbHVlLmFzQ2VsbCgpLCBjb25zdHJ1Y3RE
YXRhKSA6IENvbnN0cnVjdFR5cGU6Ok5vbmU7Ci0gICAgQVNTRVJUKHJlc3VsdCA9PSBDb25zdHJ1
Y3RUeXBlOjpOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQogaW5saW5lIEpTT2JqZWN0KiBhc09iamVjdChKU0NlbGwqIGNlbGwpCiB7CiAgICAg
QVNTRVJUKGNlbGwtPmlzT2JqZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdElubGluZXMuaAppbmRleCAwN2Y2MDY0MjU0YTdiYTM3Njg5YWJjMTc2ZWI2
NDM3NGEwY2FhZTY1Li4wNmE3MTRmNzRmMzU5NDhiMzlhMTFiOGFjOGM5MTY5MjkyM2RiOTZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNUeXBl
ZEFycmF5cy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgpAQCAtNTEwLDQgKzUxMSwyOCBAQCBpbmxp
bmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5TWF5QmVJbmRleChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2Rl
UHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CiB9CiAKK2lubGluZSBDYWxs
VHlwZSBnZXRDYWxsRGF0YShWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIENhbGxEYXRhJiBjYWxsRGF0
YSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gQ2FsbFR5cGU6
Ok5vbmU7CisgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CisgICAgaWYgKGNlbGwt
PnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246Omdl
dENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSByZXN1bHQgPSBjZWxsLT5t
ZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKTsKKyAgICBBU1NFUlQo
cmVzdWx0ID09IENhbGxUeXBlOjpOb25lIHx8IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShWTSYgdm0sIEpTVmFsdWUgdmFsdWUsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7
CisgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6
Ok5vbmU7CisgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CisgICAgaWYgKGNlbGwt
PnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246Omdl
dENvbnN0cnVjdERhdGEoY2VsbCwgY29uc3RydWN0RGF0YSk7CisgICAgQ29uc3RydWN0VHlwZSBy
ZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoY2VsbCwgY29u
c3RydWN0RGF0YSk7CisgICAgQVNTRVJUKHJlc3VsdCA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lIHx8
IHZhbHVlLmlzVmFsaWRDYWxsZWUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNjRkZGZj
YjFhMjU2MGU2ZmUxYjQ1NGU0ZmVlMTQ4OTJhZGMwOGE5Zi4uZWEzYjQ5MzQyYmFjOWI2ODhhOGRm
ZDgxZTNlMzUxMWQ3MWYzNTk4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtNzY2LDggKzc2Niw4IEBAIHN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZv
ckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gaW11bFRodW5r
R2VuZXJhdG9yOwogICAgIGNhc2UgUmFuZG9tSW50cmluc2ljOgogICAgICAgICByZXR1cm4gcmFu
ZG9tVGh1bmtHZW5lcmF0b3I7Ci0gICAgY2FzZSBCb3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxJ
bnRyaW5zaWM6Ci0gICAgICAgIHJldHVybiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5l
cmF0b3I7CisgICAgY2FzZSBCb3VuZEZ1bmN0aW9uQ2FsbEludHJpbnNpYzoKKyAgICAgICAgcmV0
dXJuIGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KQEAgLTgxNSw2ICs4MTUsMzEgQEAgTmF0aXZlRXhlY3V0YWJs
ZSogVk06OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSW50cmluc2lj
IGludHJpbnMKICAgICByZXR1cm4gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp0aGlzLCBqaXRD
b2RlRm9yQ2FsbFRyYW1wb2xpbmUoKSwgZnVuY3Rpb24sIGppdENvZGVGb3JDb25zdHJ1Y3RUcmFt
cG9saW5lKCksIGNvbnN0cnVjdG9yLCBuYW1lKTsKIH0KIAorTmF0aXZlRXhlY3V0YWJsZSogVk06
OmdldEJvdW5kRnVuY3Rpb24oYm9vbCBpc0pTRnVuY3Rpb24sIGJvb2wgY2FuQ29uc3RydWN0KQor
eworICAgIGJvb2wgc2xvd0Nhc2UgPSAhaXNKU0Z1bmN0aW9uOworCisgICAgYXV0byBnZXRPckNy
ZWF0ZSA9IFsmXSAoV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgc2xvdCkgLT4gTmF0aXZlRXhlY3V0
YWJsZSogeworICAgICAgICBpZiAoYXV0byogY2FjaGVkID0gc2xvdC5nZXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBjYWNoZWQ7CisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIHJlc3VsdCA9IGdl
dEhvc3RGdW5jdGlvbigKKyAgICAgICAgICAgIHNsb3dDYXNlID8gYm91bmRGdW5jdGlvbkNhbGwg
OiBib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGwsCisgICAgICAgICAgICBzbG93Q2FzZSA/IE5v
SW50cmluc2ljIDogQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMsCisgICAgICAgICAgICBjYW5D
b25zdHJ1Y3QgPyAoc2xvd0Nhc2UgPyBib3VuZEZ1bmN0aW9uQ29uc3RydWN0IDogYm91bmRUaGlz
Tm9BcmdzRnVuY3Rpb25Db25zdHJ1Y3QpIDogY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3Is
IG51bGxwdHIsIFN0cmluZygpKTsKKyAgICAgICAgc2xvdCA9IFdlYWs8TmF0aXZlRXhlY3V0YWJs
ZT4ocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9OworCisgICAgaWYgKHNs
b3dDYXNlKSB7CisgICAgICAgIGlmIChjYW5Db25zdHJ1Y3QpCisgICAgICAgICAgICByZXR1cm4g
Z2V0T3JDcmVhdGUobV9zbG93Q2FuQ29uc3RydWN0Qm91bmRFeGVjdXRhYmxlKTsKKyAgICAgICAg
cmV0dXJuIGdldE9yQ3JlYXRlKG1fc2xvd0JvdW5kRXhlY3V0YWJsZSk7CisgICAgfQorICAgIGlm
IChjYW5Db25zdHJ1Y3QpCisgICAgICAgIHJldHVybiBnZXRPckNyZWF0ZShtX2Zhc3RDYW5Db25z
dHJ1Y3RCb3VuZEV4ZWN1dGFibGUpOworICAgIHJldHVybiBnZXRPckNyZWF0ZShtX2Zhc3RCb3Vu
ZEV4ZWN1dGFibGUpOworfQorCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4g
Vk06OmdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKIHsKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggMjgwODZjNGVkOTE2MDZjMjgxYjFhMWQ1YjdhMWRhYjA2MDg4MDcwYS4uNTM5NTEz
YmUwOTU2MDM5MjM5NGNjNDI0OWFhNTI3MzZkY2I4MGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC02OTQsNiArNjk0LDExIEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAg
U3Ryb25nPEpTQ2VsbD4gbV9zZW50aW5lbFNldEJ1Y2tldDsKICAgICBTdHJvbmc8SlNDZWxsPiBt
X3NlbnRpbmVsTWFwQnVja2V0OwogCisgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX2Zhc3RC
b3VuZEV4ZWN1dGFibGU7CisgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX2Zhc3RDYW5Db25z
dHJ1Y3RCb3VuZEV4ZWN1dGFibGU7CisgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dC
b3VuZEV4ZWN1dGFibGU7CisgICAgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiBtX3Nsb3dDYW5Db25z
dHJ1Y3RCb3VuZEV4ZWN1dGFibGU7CisKICAgICBSZWY8UHJvbWlzZVRpbWVyPiBwcm9taXNlVGlt
ZXI7CiAgICAgCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0
OwpAQCAtODMxLDYgKzgzNiw4IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBn
ZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAorICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEJvdW5kRnVuY3Rpb24oYm9vbCBpc0pTRnVu
Y3Rpb24sIGJvb2wgY2FuQ29uc3RydWN0KTsKKwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPiBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kKTsKIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgZXhjZXB0aW9uT2Zmc2V0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCBiMjY3
ZDUxZTQ5NGRiNTIzN2ZmYzdlZGFjMjczZWJiY2UyZGUxYzFkLi42NzdlODg1YTBlYTIwMjc4ODQ5
ZTg0NTlmZWU5ZWQwODhlNWM0ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XYXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2FzbVRvSlMuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0K
ICAgICBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChqaXQsIGltcG9ydEluZGV4LCBpbXBvcnRKU0Nl
bGxHUFJSZWcpOwogCiAgICAgaml0LnN0b3JlNjQoaW1wb3J0SlNDZWxsR1BSUmVnLCBjYWxsZWVG
cmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkpKTsKLSAgICBqaXQuc3RvcmUzMihKSVQ6OlRydXN0ZWRJbW0zMihu
dW1iZXJPZlBhcmFtZXRlcnMpLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCkpOworICAgIGppdC5zdG9yZTMyKEpJVDo6VHJ1c3RlZEltbTMyKG51bWJlck9m
UGFyYW1ldGVycyksIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCkpOwogICAgIGppdC5zdG9yZTY0KEpJVDo6VHJ1c3RlZEltbTY0KEpT
VmFsdWU6OlZhbHVlVW5kZWZpbmVkKSwgY2FsbGVlRnJhbWUud2l0aE9mZnNldChDYWxsRnJhbWVT
bG90Ojp0aGlzQXJndW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7
CiAKICAgICAvLyBGSVhNRSBUYWlsIGNhbGwgaWYgdGhlIHdhc20gcmV0dXJuIHR5cGUgaXMgdm9p
ZCBhbmQgbm8gcmVnaXN0ZXJzIHdlcmUgc3BpbGxlZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTQ4OApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBhNDk3M2ViYmEwNDY4YTY1ZGI5
NWM4YmE4MzI2NGFkOGZhODZkZGQ5Li41MmI5OWM0MjYxMDhmNzNmNGE4YjQzOTU3ZDFlYWIzOTg4
NmVjOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50
U2xvdygpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5kbGUgbWlzbWF0Y2hlZCBhcml0eQog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY1NjQKICAg
ICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QmVsb3csCi0gICAg
ICAgIENDYWxsSGVscGVyczo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSAr
IDEpKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNp
Z25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxKSkpOwogCiAgICAgaWYgKHVzZVRhZ1JlZ2lzdGVy
cygpKQogICAgICAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYmE0Y2E0
NDFhYWZmYmJkOWExMmFhY2JmMDkzYTJkMWQ4MjgzY2JiLi42NGEzMGYyM2I0YzkxYzAwNzRhNzQ5
ZThjMWJiYjI5M2Q5NDQwOTIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTItMjAgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIG91ciBib3VuZCBm
dW5jdGlvbiBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA1MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3VwcG9ydCBydW5uaW5nIHNsb3ctbWljcm9iZW5jaG1hcmtzLgorCisg
ICAgICAgICogU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3M6CisKIDIwMTktMTItMjAgIEppZXdl
biBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEltcGxl
bWVudCBjb2RlcnMgZm9yIENUQVAgQ2xpZW50UElOIHJlcXVlc3RzIGFuZCByZXNwb25zZXMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzIGIvVG9vbHMvU2NyaXB0
cy9ydW4tanNjLWJlbmNobWFya3MKaW5kZXggMmNjZmU5MjNkMzBlNTBiN2IyMDlhMjQ4MDQzMmU2
NzJmNmNiM2VkMC4uZjQzMDZkY2JmZTQ3ODRjNDUwMWViMGJjNjY4NmM4YTk3MDQxZGMwOCAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MKKysrIGIvVG9vbHMvU2Ny
aXB0cy9ydW4tanNjLWJlbmNobWFya3MKQEAgLTUxLDYgKzUxLDcgQEAgVjhfUEFUSCA9IFBFUkZP
Uk1BTkNFVEVTVFNfUEFUSCArICJTdW5TcGlkZXIiICsgInRlc3RzIiArICJ2OC12NiIKIFRBSUxC
RU5DSF9QQVRIID0gUEVSRk9STUFOQ0VURVNUU19QQVRIICsgIlRhaWxCZW5jaDkwMDAiCiBCSUdJ
TlRCRU5DSF9QQVRIID0gUEVSRk9STUFOQ0VURVNUU19QQVRIICsgIkJpZ0ludEJlbmNoIgogTUlD
Uk9CRU5DSE1BUktTX1BBVEggPSBPUEVOU09VUkNFX1BBVEggKyAiSlNUZXN0cyIgKyAibWljcm9i
ZW5jaG1hcmtzIgorU0xPV19NSUNST0JFTkNITUFSS1NfUEFUSCA9IE9QRU5TT1VSQ0VfUEFUSCAr
ICJKU1Rlc3RzIiArICJzbG93TWljcm9iZW5jaG1hcmtzIgogT1BFTlNPVVJDRV9PQ1RBTkVfUEFU
SCA9IFBFUkZPUk1BTkNFVEVTVFNfUEFUSCArICJPY3RhbmUiCiBPQ1RBTkVfV1JBUFBFUl9QQVRI
ID0gT1BFTlNPVVJDRV9PQ1RBTkVfUEFUSCArICJ3cmFwcGVycyIKIEpTQkVOQ0hfUEFUSCA9IFBF
UkZPUk1BTkNFVEVTVFNfUEFUSCArICJKU0JlbmNoIgpAQCAtMjI0LDYgKzIyNSw3IEBAICRpbmNs
dWRlVjhDb21waWxlVGltZT10cnVlCiAkaW5jbHVkZUtyYWtlbj10cnVlCiAkaW5jbHVkZUpTQmVu
Y2g9dHJ1ZQogJGluY2x1ZGVNaWNyb2JlbmNobWFya3M9dHJ1ZQorJGluY2x1ZGVTbG93TWljcm9i
ZW5jaG1hcmtzPXRydWUKICRpbmNsdWRlQXNtQmVuY2g9dHJ1ZQogJGluY2x1ZGVEU1BKUz10cnVl
CiAkaW5jbHVkZUJyb3dzZXJtYXJrSlM9ZmFsc2UKQEAgLTMyMyw2ICszMjUsOCBAQCBkZWYgdXNh
Z2UKICAgcHV0cyAiLS1rcmFrZW4gICAgICAgICAgICAgT25seSBydW4gS3Jha2VuLiIKICAgcHV0
cyAiLS1qcy1iZW5jaCAgICAgICAgICAgT25seSBydW4gSlNCZW5jaC4iCiAgIHB1dHMgIi0tbWlj
cm9iZW5jaG1hcmtzICAgIE9ubHkgcnVuIG1pY3JvYmVuY2htYXJrcy4iCisgIHB1dHMgIi0tc2xv
dy1taWNyb2JlbmNobWFya3MiCisgIHB1dHMgIiAgICAgICAgICAgICAgICAgICAgIE9ubHkgcnVu
IHNsb3ctbWljcm9iZW5jaG1hcmtzLiIKICAgcHV0cyAiLS1kc3AgICAgICAgICAgICAgICAgT25s
eSBydW4gRFNQLiIKICAgcHV0cyAiLS1hc20tYmVuY2ggICAgICAgICAgT25seSBydW4gQXNtQmVu
Y2guIgogICBwdXRzICItLWJyb3dzZXJtYXJrLWpzICAgICBPbmx5IHJ1biBicm93c2VybWFyay1q
cy4iCkBAIC0xNzc2LDYgKzE3ODAsMTggQEAgY2xhc3MgTWljcm9iZW5jaG1hcmtzQmVuY2htYXJr
CiAgIGVuZAogZW5kCiAKK2NsYXNzIFNsb3dNaWNyb2JlbmNobWFya3NCZW5jaG1hcmsKKyAgaW5j
bHVkZSBCZW5jaG1hcmsKKyAgCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBu
YW1lCisgIGVuZAorICAKKyAgZGVmIGVtaXRSdW5Db2RlKHBsYW4pCisgICAgZW1pdEJlbmNoUnVu
Q29kZShmdWxsbmFtZSwgcGxhbiwgU2luZ2xlRmlsZVRpbWVkQmVuY2htYXJrUGFyYW1ldGVycy5u
ZXcoZW5zdXJlRmlsZSgiU2xvd01pY3JvYmVuY2htYXJrcy0je0BuYW1lfSIsICIje1NMT1dfTUlD
Uk9CRU5DSE1BUktTX1BBVEh9LyN7QG5hbWV9LmpzIikpKQorICBlbmQKK2VuZAorCiBjbGFzcyBB
c21CZW5jaEJlbmNobWFyawogICBpbmNsdWRlIEJlbmNobWFyawogICAKQEAgLTI4MTEsNiArMjgy
Nyw3IEBAIGJlZ2luCiAgICAgICAkaW5jbHVkZUtyYWtlbiA9IGZhbHNlCiAgICAgICAkaW5jbHVk
ZUpTQmVuY2ggPSBmYWxzZQogICAgICAgJGluY2x1ZGVNaWNyb2JlbmNobWFya3MgPSBmYWxzZQor
ICAgICAgJGluY2x1ZGVTbG93TWljcm9iZW5jaG1hcmtzID0gZmFsc2UKICAgICAgICRpbmNsdWRl
QXNtQmVuY2ggPSBmYWxzZQogICAgICAgJGluY2x1ZGVEU1BKUyA9IGZhbHNlCiAgICAgICAkaW5j
bHVkZUJyb3dzZXJtYXJrSlMgPSBmYWxzZQpAQCAtMjgzOSw2ICsyODU2LDcgQEAgYmVnaW4KICAg
ICAgICAgICAgICAgICAgWyctLWtyYWtlbicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAg
ICAgICAgICAgICAgICAgWyctLWpzLWJlbmNoJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAog
ICAgICAgICAgICAgICAgICBbJy0tbWljcm9iZW5jaG1hcmtzJywgR2V0b3B0TG9uZzo6Tk9fQVJH
VU1FTlRdLAorICAgICAgICAgICAgICAgICBbJy0tc2xvdy1taWNyb2JlbmNobWFya3MnLCBHZXRv
cHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICAgIFsnLS1hc20tYmVuY2gnLCBH
ZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICAgIFsnLS1kc3AnLCBHZXRv
cHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICAgIFsnLS1icm93c2VybWFyay1q
cycsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKQEAgLTI5MzksNiArMjk1Nyw5IEBAIGJlZ2lu
CiAgICAgd2hlbiAnLS1taWNyb2JlbmNobWFya3MnCiAgICAgICByZXNldEJlbmNoT3B0aW9uc0lm
TmVjZXNzYXJ5CiAgICAgICAkaW5jbHVkZU1pY3JvYmVuY2htYXJrcyA9IHRydWUKKyAgICB3aGVu
ICctLXNsb3ctbWljcm9iZW5jaG1hcmtzJworICAgICAgcmVzZXRCZW5jaE9wdGlvbnNJZk5lY2Vz
c2FyeQorICAgICAgJGluY2x1ZGVTbG93TWljcm9iZW5jaG1hcmtzID0gdHJ1ZQogICAgIHdoZW4g
Jy0tYXNtLWJlbmNoJwogICAgICAgcmVzZXRCZW5jaE9wdGlvbnNJZk5lY2Vzc2FyeQogICAgICAg
JGluY2x1ZGVBc21CZW5jaCA9IHRydWUKQEAgLTMyMDgsNiArMzIyOSwxNSBAQCBiZWdpbgogICAg
ICAgTUlDUk9CRU5DSE1BUktTLmFkZCBNaWNyb2JlbmNobWFya3NCZW5jaG1hcmsubmV3KG5hbWUp
CiAgICAgZW5kCiAgIH0KKworICBTTE9XX01JQ1JPQkVOQ0hNQVJLUyA9IEJlbmNobWFya1N1aXRl
Lm5ldygiU2xvd01pY3JvYmVuY2htYXJrcyIsIDpnZW9tZXRyaWNNZWFuLCAwKQorICBEaXIuZm9y
ZWFjaChTTE9XX01JQ1JPQkVOQ0hNQVJLU19QQVRIKSB7CisgICAgfCBmaWxlbmFtZSB8CisgICAg
aWYgZmlsZW5hbWUgPX4gL1wuanMkLworICAgICAgbmFtZSA9ICR+LnByZV9tYXRjaAorICAgICAg
U0xPV19NSUNST0JFTkNITUFSS1MuYWRkIFNsb3dNaWNyb2JlbmNobWFya3NCZW5jaG1hcmsubmV3
KG5hbWUpCisgICAgZW5kCisgIH0KICAgCiAgIEFTTUJFTkNIID0gQmVuY2htYXJrU3VpdGUubmV3
KCJBc21CZW5jaCIsIDpnZW9tZXRyaWNNZWFuLCAwKQogICBpZiBBU01CRU5DSF9QQVRICkBAIC0z
MzU0LDYgKzMzODQsMTAgQEAgYmVnaW4KICAgICAkc3VpdGVzIDw8IE1JQ1JPQkVOQ0hNQVJLUwog
ICBlbmQKIAorICBpZiAkaW5jbHVkZVNsb3dNaWNyb2JlbmNobWFya3MgYW5kIG5vdCBTTE9XX01J
Q1JPQkVOQ0hNQVJLUy5lbXB0eT8KKyAgICAkc3VpdGVzIDw8IFNMT1dfTUlDUk9CRU5DSE1BUktT
CisgIGVuZAorCiAgIGlmICRpbmNsdWRlQmlnSW50QmVuY2ggYW5kIG5vdCBCSUdJTlRCRU5DSC5l
bXB0eT8KICAgICAkc3VpdGVzIDw8IEJJR0lOVEJFTkNICiAgIGVuZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxMzAwOTNm
YTdhODQ4NjU5MDNlZGViNGEzZjIyNDM2MTFmMDA3OWEuLjNkODJkZjU5NTFlZTM1NWNhNWY3MGFj
ODYxYWE3ZGI5NmJlMGI1MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMi0yMCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcHJvdmUg
b3VyIGJvdW5kIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzMjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0
LWdldC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcnVudGlt
ZS9nZXREaXNwbGF5YWJsZVByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9ydW50aW1lL2dldFByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTEyLTIwICBU
cnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjI1MzgzMS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9t
b2RlbC9yZW1vdGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAppbmRleCBkN2M5YWI2YzM1MmE2ZWZiNWVlMWNjNWEwZWRlMDAxMjYwN2E2YjVhLi44ZTBl
MmQ3ZWZlNTVkNzkyMzgxNWNlMGVhNzY3ZjM5OGZhOGVkNmI3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC1nZXQtcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QtZ2V0
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC00MDcsOCArNDA3LDggQEAgZGVzY3JpcHRpb246
IGZ1bmN0aW9uIHVuYm91bmRGdW5jdGlvbigpIHsKIH0KIAogT1dOIFBST1BFUlRJRVM6Ci0gICAg
bmFtZQogICAgIGxlbmd0aAorICAgIG5hbWUKICAgICBfX3Byb3RvX18KICAgICB0YXJnZXRGdW5j
dGlvbgogICAgIGJvdW5kVGhpcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1
bnRpbWUvZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9ydW50aW1lL2dldERpc3BsYXlhYmxlUHJvcGVydGllcy1leHBlY3RlZC50eHQK
aW5kZXggZDkzYTVjNDI1NTU3YTE1YWMzNzEwZmUwNmZkMTg1ZWZmODJjYzk5Mi4uMTYzMzc5ZDQ2
OGZkNmZmMzg5OGEzN2E4YmVjOWQzZGVhYjExMWFjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3J1bnRpbWUvZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVudGltZS9nZXREaXNwbGF5YWJsZVByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0CkBAIC0zMyw4ICszMyw4IEBAIFByb3BlcnRpZXM6CiBFdmFsdWF0aW5n
IGV4cHJlc3Npb24uLi4KIEdldHRpbmcgZGlzcGxheWFibGUgcHJvcGVydGllcy4uLgogUHJvcGVy
dGllczoKLSAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCBUZXN0IiAoc3RyaW5nKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQogICAgICJsZW5ndGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQorICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5kIFRlc3QiIChzdHJp
bmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgImNhbGxlciIgICAgID0+ICAiVHlwZUVy
cm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNz
ZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgImFy
Z3VtZW50cyIgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2Fs
bGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikg
IFt3YXNUaHJvd25dCiAgICAgIl9fcHJvdG9fXyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtu
YXRpdmUgY29kZV1cbn0iIChmdW5jdGlvbikgIFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlz
T3duXQpAQCAtNDYsOCArNDYsOCBAQCBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogRXZhbHVhdGluZyBl
eHByZXNzaW9uLi4uCiBHZXR0aW5nIGRpc3BsYXlhYmxlIHByb3BlcnRpZXMuLi4KIFByb3BlcnRp
ZXM6Ci0gICAgIm5hbWUiICAgICAgID0+ICAiYm91bmQgVGVzdCIgKHN0cmluZykgIFtjb25maWd1
cmFibGUgfCBpc093bl0KICAgICAibGVuZ3RoIiAgICAgPT4gIDAgKG51bWJlcikgIFtjb25maWd1
cmFibGUgfCBpc093bl0KKyAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCBUZXN0IiAoc3RyaW5n
KSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJjYWxsZXIiICAgICA9PiAgIlR5cGVFcnJv
cjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2Vk
IGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3duXQogICAgICJhcmd1
bWVudHMiICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxl
cicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBb
d2FzVGhyb3duXQogICAgICJfX3Byb3RvX18iICA9PiAgImZ1bmN0aW9uICgpIHtcbiAgICBbbmF0
aXZlIGNvZGVdXG59IiAoZnVuY3Rpb24pICBbd3JpdGFibGUgfCBjb25maWd1cmFibGUgfCBpc093
bl0KQEAgLTgyLDggKzgyLDggQEAgUHJvcGVydGllczoKIEV2YWx1YXRpbmcgZXhwcmVzc2lvbi4u
LgogR2V0dGluZyBkaXNwbGF5YWJsZSBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgotICAgICJu
YW1lIiAgICAgICA9PiAgImJvdW5kICIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0K
ICAgICAibGVuZ3RoIiAgICAgPT4gIDMgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0K
KyAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCAiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwg
aXNPd25dCiAgICAgImNhbGxlciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2Nh
bGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIg
KG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgImFyZ3VtZW50cyIgID0+ICAiVHlwZUVy
cm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNz
ZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgIl9f
cHJvdG9fXyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iIChmdW5j
dGlvbikgIFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlzT3duXQpAQCAtOTUsOCArOTUsOCBA
QCBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogRXZhbHVhdGluZyBleHByZXNzaW9uLi4uCiBHZXR0aW5n
IGRpc3BsYXlhYmxlIHByb3BlcnRpZXMuLi4KIFByb3BlcnRpZXM6Ci0gICAgIm5hbWUiICAgICAg
ID0+ICAiYm91bmQgIiAoc3RyaW5nKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJsZW5n
dGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQorICAgICJuYW1l
IiAgICAgICA9PiAgImJvdW5kICIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAg
ICAiY2FsbGVyIiAgICAgPT4gICJUeXBlRXJyb3I6ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5k
ICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIiAob2JqZWN0IGVy
cm9yKSAgW3dhc1Rocm93bl0KICAgICAiYXJndW1lbnRzIiAgPT4gICJUeXBlRXJyb3I6ICdhcmd1
bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlz
IGNvbnRleHQuIiAob2JqZWN0IGVycm9yKSAgW3dhc1Rocm93bl0KICAgICAiX19wcm90b19fIiAg
PT4gICJmdW5jdGlvbiAoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dy
aXRhYmxlIHwgY29uZmlndXJhYmxlIHwgaXNPd25dCkBAIC0xMDksOCArMTA5LDggQEAgSW50ZXJu
YWwgUHJvcGVydGllczoKIEV2YWx1YXRpbmcgZXhwcmVzc2lvbi4uLgogR2V0dGluZyBkaXNwbGF5
YWJsZSBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgotICAgICJuYW1lIiAgICAgICA9PiAgImJv
dW5kICIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAibGVuZ3RoIiAgICAg
PT4gIDAgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0KKyAgICAibmFtZSIgICAgICAg
PT4gICJib3VuZCAiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgImNhbGxl
ciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVy
JyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3
YXNUaHJvd25dCiAgICAgImFyZ3VtZW50cyIgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywg
J2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0
LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgIl9fcHJvdG9fXyIgID0+ICAiZnVu
Y3Rpb24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iIChmdW5jdGlvbikgIFt3cml0YWJsZSB8
IGNvbmZpZ3VyYWJsZSB8IGlzT3duXQpAQCAtMTIyLDggKzEyMiw4IEBAIEludGVybmFsIFByb3Bl
cnRpZXM6CiBFdmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdldHRpbmcgZGlzcGxheWFibGUgcHJv
cGVydGllcy4uLgogUHJvcGVydGllczoKLSAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCAiIChz
dHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgImxlbmd0aCIgICAgID0+ICAwIChu
dW1iZXIpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCisgICAgIm5hbWUiICAgICAgID0+ICAiYm91
bmQgIiAoc3RyaW5nKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJjYWxsZXIiICAgICA9
PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90
IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3du
XQogICAgICJhcmd1bWVudHMiICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUn
LCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmpl
Y3QgZXJyb3IpICBbd2FzVGhyb3duXQogICAgICJfX3Byb3RvX18iICA9PiAgImZ1bmN0aW9uICgp
IHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IiAoZnVuY3Rpb24pICBbd3JpdGFibGUgfCBjb25maWd1
cmFibGUgfCBpc093bl0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9ydW50aW1l
L2dldFByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRp
bWUvZ2V0UHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMjE4MGJkM2IyYzNiMGU2YjZmNDBi
Y2IwZWNkNzZlM2MwNzY0MGQxMi4uZTA0MzNlY2U0Yzc2M2Y3YzVmOGE5YTg4ODhiNWViZWJmZmFk
YTQyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZ2V0UHJvcGVy
dGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZ2V0
UHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTMxLDggKzMxLDggQEAgUHJvcGVydGllczoKIEV2
YWx1YXRpbmcgZXhwcmVzc2lvbi4uLgogR2V0dGluZyBvd24gcHJvcGVydGllcy4uLgogUHJvcGVy
dGllczoKLSAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCBUZXN0IiAoc3RyaW5nKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQogICAgICJsZW5ndGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQorICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5kIFRlc3QiIChzdHJp
bmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgIl9fcHJvdG9fXyIgID0+ICAiZnVuY3Rp
b24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iIChmdW5jdGlvbikgIFt3cml0YWJsZSB8IGNv
bmZpZ3VyYWJsZSB8IGlzT3duXQogSW50ZXJuYWwgUHJvcGVydGllczoKICAgICAidGFyZ2V0RnVu
Y3Rpb24iICA9PiAgImNsYXNzIFRlc3QgeyB9IiAoZnVuY3Rpb24gY2xhc3MpICBbXQpAQCAtNDIs
OCArNDIsOCBAQCBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogRXZhbHVhdGluZyBleHByZXNzaW9uLi4u
CiBHZXR0aW5nIG93biBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgotICAgICJuYW1lIiAgICAg
ICA9PiAgImJvdW5kIFRlc3QiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAg
Imxlbmd0aCIgICAgID0+ICAwIChudW1iZXIpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCisgICAg
Im5hbWUiICAgICAgID0+ICAiYm91bmQgVGVzdCIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBp
c093bl0KICAgICAiX19wcm90b19fIiAgPT4gICJmdW5jdGlvbiAoKSB7XG4gICAgW25hdGl2ZSBj
b2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29uZmlndXJhYmxlIHwgaXNPd25dCiBJ
bnRlcm5hbCBQcm9wZXJ0aWVzOgogICAgICJ0YXJnZXRGdW5jdGlvbiIgID0+ICAiY2xhc3MgVGVz
dCB7IH0iIChmdW5jdGlvbiBjbGFzcykgIFtdCkBAIC03Niw4ICs3Niw4IEBAIFByb3BlcnRpZXM6
CiBFdmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdldHRpbmcgb3duIHByb3BlcnRpZXMuLi4KIFBy
b3BlcnRpZXM6Ci0gICAgIm5hbWUiICAgICAgID0+ICAiYm91bmQgIiAoc3RyaW5nKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQogICAgICJsZW5ndGgiICAgICA9PiAgMyAobnVtYmVyKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQorICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5kICIgKHN0cmluZykg
IFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAiX19wcm90b19fIiAgPT4gICJmdW5jdGlvbiAo
KSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29uZmln
dXJhYmxlIHwgaXNPd25dCiBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogICAgICJ0YXJnZXRGdW5jdGlv
biIgID0+ICAiZnVuY3Rpb24gKGEsIGIsIGMpe30iIChmdW5jdGlvbikgIFtdCkBAIC04Nyw4ICs4
Nyw4IEBAIEludGVybmFsIFByb3BlcnRpZXM6CiBFdmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdl
dHRpbmcgb3duIHByb3BlcnRpZXMuLi4KIFByb3BlcnRpZXM6Ci0gICAgIm5hbWUiICAgICAgID0+
ICAiYm91bmQgIiAoc3RyaW5nKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJsZW5ndGgi
ICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQorICAgICJuYW1lIiAg
ICAgICA9PiAgImJvdW5kICIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAi
X19wcm90b19fIiAgPT4gICJmdW5jdGlvbiAoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1
bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29uZmlndXJhYmxlIHwgaXNPd25dCiBJbnRlcm5hbCBQcm9w
ZXJ0aWVzOgogICAgICJ0YXJnZXRGdW5jdGlvbiIgID0+ICAiZnVuY3Rpb24gKGEsIGIsIGMpe30i
IChmdW5jdGlvbikgIFtdCkBAIC05OSw4ICs5OSw4IEBAIEludGVybmFsIFByb3BlcnRpZXM6CiBF
dmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdldHRpbmcgb3duIHByb3BlcnRpZXMuLi4KIFByb3Bl
cnRpZXM6Ci0gICAgIm5hbWUiICAgICAgID0+ICAiYm91bmQgIiAoc3RyaW5nKSAgW2NvbmZpZ3Vy
YWJsZSB8IGlzT3duXQogICAgICJsZW5ndGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZpZ3Vy
YWJsZSB8IGlzT3duXQorICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5kICIgKHN0cmluZykgIFtj
b25maWd1cmFibGUgfCBpc093bl0KICAgICAiX19wcm90b19fIiAgPT4gICJmdW5jdGlvbiAoKSB7
XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29uZmlndXJh
YmxlIHwgaXNPd25dCiBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogICAgICJ0YXJnZXRGdW5jdGlvbiIg
ID0+ICAiZnVuY3Rpb24gKCl7fSIgKGZ1bmN0aW9uKSAgW10KQEAgLTExMCw4ICsxMTAsOCBAQCBJ
bnRlcm5hbCBQcm9wZXJ0aWVzOgogRXZhbHVhdGluZyBleHByZXNzaW9uLi4uCiBHZXR0aW5nIG93
biBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgotICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5k
ICIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAibGVuZ3RoIiAgICAgPT4g
IDAgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0KKyAgICAibmFtZSIgICAgICAgPT4g
ICJib3VuZCAiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgIl9fcHJvdG9f
XyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iIChmdW5jdGlvbikg
IFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlzT3duXQogSW50ZXJuYWwgUHJvcGVydGllczoK
ICAgICAidGFyZ2V0RnVuY3Rpb24iICA9PiAgImZ1bmN0aW9uICgpe30iIChmdW5jdGlvbikgIFtd
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGFlN2YxNmI4ZTM1NDA4NmIwYmQ2ZTU4NGI3ZTNkMjYzNjdlYjc3YjguLjkyNjdlODQ4NmU2MDQx
ZGEwNTRmMjE2M2ZhMjg0MGJlOGFhMTgzYTggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTItMjAgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3Zl
IG91ciBib3VuZCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZnVuY3Rpb24tYmlu
ZC1uby1pbmxpbmluZy1yZXBlYXQtY2FsbC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgIChmb28pOgorICAgICAg
ICAobGV0LnN0YXJ0LkRhdGUubm93KToKKyAgICAgICAgKiBzdHJlc3MvYmluZC1hcmdzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodGVz
dDIpOgorCiAyMDE5LTEyLTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gOEJpdCBKU1JvcGVTdHJpbmcgY2FuIGNvbnRhaW4gMTZCaXQgc3RyaW5n
IGluIGl0cyByb3BlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlv
bi1iaW5kLW5vLWlubGluaW5nLXJlcGVhdC1jYWxsLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvZnVuY3Rpb24tYmluZC1uby1pbmxpbmluZy1yZXBlYXQtY2FsbC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ODI4Zjc0OTc2M2E5MmMzNTliNWFhN2Q2YTk4N2NmN2I4ZTdiM2EzCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tYmluZC1uby1pbmxpbmluZy1yZXBl
YXQtY2FsbC5qcwpAQCAtMCwwICsxLDM2IEBACisKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAg
aWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCIpCit9Citub0lubGluZShhc3Nl
cnQpOworCitmdW5jdGlvbiB0ZXN0KGYsIHYsIGMsIGQpIHsKKyAgICByZXR1cm4gZi5iaW5kKHYs
IGMsIGQpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Z1bmN0aW9uIHRlc3QyKGYsIHYpIHsKKyAg
ICByZXR1cm4gZi5iaW5kKHYpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Z1bmN0aW9uIGZvbyhh
LGIsYyxkLGUsZikgeyByZXR1cm4gdGhpczsgfQorbGV0IHRoaXNWYWx1ZSA9IHt9OworbGV0IHN0
YXJ0ID0gRGF0ZS5ub3coKTsKKworeworICAgIGxldCBmID0gdGVzdChmb28sIHRoaXNWYWx1ZSwg
MjAsIDMwKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgeworICAgICAg
ICBhc3NlcnQoZihmb28sIHRoaXNWYWx1ZSwgMjAsIDMwKSA9PT0gdGhpc1ZhbHVlKTsKKyAgICB9
Cit9Cit7CisgICAgbGV0IGYgPSB0ZXN0Mihmb28sIHRoaXNWYWx1ZSk7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGYoZm9vLCB0aGlzVmFs
dWUsIDIwLCAzMCkgPT09IHRoaXNWYWx1ZSk7CisgICAgfQorfQorY29uc3QgdmVyYm9zZSA9IGZh
bHNlOworaWYgKHZlcmJvc2UpCisgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0KTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpbmQtYXJncy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpbmQt
YXJncy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NzdkNmZiYzQ0ODJmZjkxMzJhNjkwMmI3NWMwN2FhMzNmOGRk
OWM3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmluZC1hcmdzLmpzCkBAIC0w
LDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCitmdW5jdGlvbiB0ZXN0
KGEsIGIsIGMsIGQsIGUpCit7CisgICAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBlOworfQorbm9J
bmxpbmUodGVzdCk7CisKK2Z1bmN0aW9uIHRlc3QyKGEsIGIsIGMsIGQsIGUsIGYpCit7CisgICAg
cmV0dXJuIGEgKyBiICsgYyArIGQgKyBlICsgZjsKK30KK25vSW5saW5lKHRlc3QyKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAzZTQ7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3QuYmluZCh1bmRl
ZmluZWQpKDEsIDIsIDMsIDQsIDUpLCAxNSk7CisgICAgc2hvdWxkQmUodGVzdC5iaW5kKHVuZGVm
aW5lZCwgMSkoMiwgMywgNCwgNSksIDE1KTsKKyAgICBzaG91bGRCZSh0ZXN0LmJpbmQodW5kZWZp
bmVkLCAyLCAzKSg0LCA1LCA2KSwgMjApOworICAgIHNob3VsZEJlKHRlc3QuYmluZCh1bmRlZmlu
ZWQsIDIsIDMsIDQpKDUsIDYpLCAyMCk7CisgICAgc2hvdWxkQmUodGVzdC5iaW5kKHVuZGVmaW5l
ZCwgMiwgMywgNCwgNSkoNiksIDIwKTsKKyAgICBzaG91bGRCZSh0ZXN0LmJpbmQodW5kZWZpbmVk
LCAyLCAzLCA0LCA1LCA2KSgpLCAyMCk7CisKKyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5kKHVuZGVm
aW5lZCkoMSwgMSwgMiwgMywgNCwgNSksIDE2KTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5kKHVu
ZGVmaW5lZCwgMSkoMSwgMiwgMywgNCwgNSksIDE2KTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5iaW5k
KHVuZGVmaW5lZCwgMSwgMSkoMiwgMywgNCwgNSksIDE2KTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5i
aW5kKHVuZGVmaW5lZCwgMSwgMiwgMykoNCwgNSwgNiksIDIxKTsKKyAgICBzaG91bGRCZSh0ZXN0
Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMywgNCkoNSwgNiksIDIxKTsKKyAgICBzaG91bGRCZSh0
ZXN0Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMywgNCwgNSkoNiksIDIxKTsKKyAgICBzaG91bGRC
ZSh0ZXN0Mi5iaW5kKHVuZGVmaW5lZCwgMSwgMiwgMywgNCwgNSwgNikoKSwgMjEpOworfQo=
</data>
<flag name="review"
          id="402058"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>