<?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>238911</bug_id>
          
          <creation_ts>2022-04-06 16:50:39 -0700</creation_ts>
          <short_desc>Reduce number of StringView to String conversions in JSC</short_desc>
          <delta_ts>2022-04-08 10:57:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1859086</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 16:50:39 -0700</bug_when>
    <thetext>Reduce number of StringView to String conversions in JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859091</commentid>
    <comment_count>1</comment_count>
      <attachid>456878</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 17:05:47 -0700</bug_when>
    <thetext>Created attachment 456878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859110</commentid>
    <comment_count>2</comment_count>
      <attachid>456880</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 18:15:23 -0700</bug_when>
    <thetext>Created attachment 456880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859379</commentid>
    <comment_count>3</comment_count>
      <attachid>456880</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-07 12:36:55 -0700</bug_when>
    <thetext>Comment on attachment 456880
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp:54
&gt; +        return jsString(vm, String { u.stringImpl });

While this resolves ambiguity, it misses the chance to reduce reference count churn, since there’s no need for a temporary String here. I suppose we can fix that by adding an overload of jsString that takes an rvalue reference? Or one that takes a StringImpl*.

&gt; Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp:56
&gt;          return jsString(vm, AtomStringImpl::add(u.stringImpl));

Same issue/opportunity here?

&gt; Source/JavaScriptCore/jsc.cpp:1099
&gt; +        return FileSystem::pathByAppendingComponent(cachePath, makeString(StringViewHashTranslator::hash(source()), &apos;-&apos;, filename, &quot;.bytecode-cache&quot;));

Does this really need to be in the StringViewHashTranslator namespace? I know the hash translator has to use it, but is that the best way to call it?

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:211
&gt; +    String rightHandSide = sourceText.substring(inIndex + inLength).toStringWithoutCopying().simplifyWhiteSpace();

What a waste creating a String here at all. Does this really need &quot;simplifyWhitespace&quot;? Maybe we can write a version that doesn’t allocate memory in the super-common case where there is no whitespace that needs to be simplified. Some day.

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:230
&gt; +    String rightHandSide = sourceText.substring(instanceofIndex + instanceofLength).toStringWithoutCopying().simplifyWhiteSpace();

Ditto.

&gt; Source/JavaScriptCore/runtime/IdentifierInlines.h:132
&gt; +    return jsString(vm, String { identifier.impl() });

Same reference count churn thought as above.

&gt; Source/JavaScriptCore/runtime/IdentifierInlines.h:139
&gt; +    return jsString(vm, String { identifier.impl() });

Ditto.

&gt; Source/JavaScriptCore/runtime/JSModuleLoader.cpp:235
&gt; +    arguments.append(jsString(vm, String { moduleKey.impl() }));

Same reference count churn thing.

&gt; Source/JavaScriptCore/runtime/JSModuleLoader.cpp:401
&gt; +        result-&gt;putDirectIndex(globalObject, i++, jsString(vm, String { key.get() }));

Again.

&gt; Source/JavaScriptCore/runtime/JSString.h:891
&gt; +    auto impl = s.is8Bit() ? StringImpl::create(s.characters8(), s.length()) : StringImpl::create(s.characters16(), s.length());

Truly unfortunate if the StringView came from an existing String; I guess overloading decreases the chance that will occur.

&gt; Source/JavaScriptCore/runtime/SymbolConstructor.cpp:128
&gt; +    return JSValue::encode(jsString(vm, String { uid }));

Yet another chance to avoid reference count churn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859438</commentid>
    <comment_count>4</comment_count>
      <attachid>456968</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 14:26:14 -0700</bug_when>
    <thetext>Created attachment 456968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859564</commentid>
    <comment_count>5</comment_count>
      <attachid>457005</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 19:49:00 -0700</bug_when>
    <thetext>Created attachment 457005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859799</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-08 10:56:03 -0700</bug_when>
    <thetext>Committed r292619 (249443@main): &lt;https://commits.webkit.org/249443@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457005.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859800</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-08 10:57:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/91492071&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456878</attachid>
            <date>2022-04-06 17:05:47 -0700</date>
            <delta_ts>2022-04-06 18:15:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238911-20220406170546.patch</filename>
            <type>text/plain</type>
            <size>37429</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDRjODVjZjJiZTA3OWVjN2Y3NTllOWM4Zjk2YzU5YzRkNDgxYjUwLi4zODIzM2Y0ZDllZjQwZTgz
NjU1MTU0Njc5ODVkY2FlNjRlZTcwOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAyMi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBudW1iZXIgb2YgU3RyaW5nVmlldyB0byBTdHJpbmcgY29udmVyc2lv
bnMgaW4gSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzg5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFs
dWU6OmdldFZhbHVlIGNvbnN0KToKKyAgICAgICAgUmVzb2x2ZSBhbWJpZ3VpdHkgYnkgZXhwbGlj
aXRseSBjb252ZXJ0aW5nIHRoZSBTdHJpbmdJbXBsIHRvIGEgU3RyaW5nIGJlZm9yZQorICAgICAg
ICBjYWxsaW5nIGpzU3RyaW5nKCkuIFsxXQorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAg
QXZvaWQgY29uc3RydWN0aW5nIGEgU3RyaW5nIGZyb20gdGhlIFN0cmluZ1ZpZXcsIGp1c3QgdG8g
Y29tcHV0ZSBhIGhhc2guCisgICAgICAgIEluc3RlYWQsIHJlbHkgb24gdGhlIFN0cmluZ1ZpZXdI
YXNoVHJhbnNsYXRvciBmb3IgdGhpcy4KKworICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NS
RXhpdC5jcHA6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpPU1JFeGl0Ojp0b0pTIGNvbnN0KToK
KyAgICAgICAgZXhpdEtpbmRUb1N0cmluZygpIHJldHVybnMgYW4gQVNDSUlMaXRlcmFsIHdob3Nl
IGxlbmd0aCBpcyBhbHdheXMgZ3JlYXRlcgorICAgICAgICB0aGFuIDEgc28gd2UgY2FuIGNhbGwg
dGhlIG1vcmUgZWZmaWNpZW50IGpzTm9udHJpdmlhbFN0cmluZygpIGluc3RlYWQgb2YKKyAgICAg
ICAganNTdHJpbmcoKS4gQ2FsbGluZyBqc1N0cmluZygpIGhlcmUgaGFkIGJlY29tZSBhbWJpZ3Vv
dXMgYmVjYXVzZSBhbgorICAgICAgICBBU0NJSUxpdGVyYWwgY2FuIGJlIGltcGxpY2l0ZWx5IGNv
bnZlcnRlZCB0byBib3RoIGEgU3RyaW5nIGFuZCBhCisgICAgICAgIFN0cmluZ1ZpZXcgWzJdLgor
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZh
c3RKb2luKToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IGpzU3RyaW5nKCkgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFN0cmluZ1ZpZXcsIHRvIGF2b2lkCisgICAgICAgIHVubmVjZXNzYXJpbHkgY29uc3Ry
dWN0aW5nIGEgU3RyaW5nIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBsZW5ndGggaXMgPD0gMSBbM10u
CisKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjph
cHBlbmRTb3VyY2VUb0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3Rh
bmNlLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAg
KEpTQzo6ZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3IpOgorICAgICAgICAoSlNDOjpkZWZh
dWx0U291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNhbGxCYXNlKToKKyAg
ICAgICAgKEpTQzo6bm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjpp
bnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcik6CisgICAgICAgIChKU0M6OmludmFsaWRQ
YXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjppbnZhbGlk
UGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAo
SlNDOjppbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlv
blNvdXJjZUFwcGVuZGVyKToKKyAgICAgICAgKEpTQzo6aW52YWxpZFByb3RvdHlwZVNvdXJjZUFw
cGVuZGVyKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAg
Q2FsbCBTb3VyY2VBcHBlbmRlciB3aXRoIGEgU3RyaW5nVmlldyBzaW5jZSB0aGlzIGlzIHdoYXQg
d2UgaGF2ZS4gSW4gbW9zdAorICAgICAgICBjYXNlcywgdGhlc2UgYXBwZW5kZXJzIGVuZCB1cCBj
YWxsaW5nIG1ha2VTdHJpbmcoKSBhbmQgaXQgaXMgdGh1cyBiZW5lZmljaWFsCisgICAgICAgIHRv
IGF2b2lkIHRlbXBvcmFyeS9pbnRlcm1lZGlhdGUgU3RyaW5nIGNvbnN0cnVjdGlvbnMuIAorCisg
ICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyk6CisgICAgICAgIFNhbWUgYXMgWzNdLgor
CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpp
ZGVudGlmaWVyVG9KU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6aWRlbnRpZmllclRvU2FmZVB1Ymxp
Y0pTVmFsdWUpOgorICAgICAgICBTYW1lIGFzIFsxXS4KKworICAgICAgICAqIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpm
b3JtYXRUb1BhcnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpm
b3JtYXRSYW5nZVRvUGFydHMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZS5jcHA6Cisg
ICAgICAgIChKU0M6OkludGxMb2NhbGU6OnRleHRJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRSYW5nZVRvUGFydHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6
OmZvcm1hdFRvUGFydHNJbnRlcm5hbCk6CisgICAgICAgIFNhbWUgYXMgWzJdLgorCisgICAgICAg
ICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAgICAgIFNhbWUg
YXMgWzNdLgorCisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICBTYW1lIGFzIFsyXS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIu
Y3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6cmVxdWVzdEltcG9ydE1vZHVsZSk6
CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIFNhbWUg
YXMgWzFdLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpq
c1N0cmluZyk6CisgICAgICAgIEFkZCBhIGpzU3RyaW5nKCkgb3ZlcmxvYWQgdGhhdCB0YWtlcyBp
biBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0cmluZy4KKyAgICAgICAgVGhpcyBhdm9pZHMg
Y29uc3RydWN0aW9uIG9mIGEgU3RyaW5nIGZvciBjYWxsIHNpdGVzIGhhdmluZyBhIFN0cmluZ1Zp
ZXcKKyAgICAgICAgaW4gdGhlIGV2ZW50IHdoZXJlIHRoZSB2aWV3J3MgbGVuZ3RoIGlzIDw9IDEu
CisKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgU2FtZSBhcyBbMV0uCisKKwog
MjAyMi0wNC0wNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBD
YWxsIFN0cnVjdHVyZTo6Z2V0IGluc3RlYWQgb2YgU3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkg
b24gdGhlIG11dGF0b3IgdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU1YmZiZDU1ZjIyNjBkZDFlNDI2NThkMWZkZmY2
NjQ3MTk2Y2RhMmMuLjUyOWYyMDExNTI3ZGU3ZjI5MDM3NGVmOTJmZjhkZDgzZGRkYjYyOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBSZWR1Y2UgbnVtYmVyIG9mIFN0cmluZ1ZpZXcgdG8gU3RyaW5nIGNv
bnZlcnNpb25zIGluIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUHJvdmlkZSBhIHJldmVyc2VGaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVkKSBvdmVy
bG9hZCBvbiBTdHJpbmdWaWV3LCBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgd2l0aCBTdHJpbmcg
YW5kIHRvIGZhY2lsaXRhdGUgdGhlIGNvbnZlcnRpbmcgb2YgY29kZSBmcm9tIFN0cmluZyB0byBT
dHJpbmdWaWV3LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29tbW9uLmg6CisgICAgICAg
IChXVEY6OnJldmVyc2VGaW5kSW5uZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwOgorICAgICAgICAoV1RGOjpyZXZlcnNlRmluZElubmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6cmV2
ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKwogMjAy
Mi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0YXJ0
IHJlcGxhY2luZyBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIHdpdGggYSBTdHJpbmc6
OmZyb21MYXRpbjEoY29uc3QgY2hhciopIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCmluZGV4IDkwZjU5ODFhNjQ2N2RiNTg2ZDlmZmIwYmZm
Njg0ZDVhMjZhM2VlMjQuLmFkZTcxY2Q4ZmFiODQyMDllMzMwZmQzNDA2Y2FhODZiYmFiZWIzMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIEpTVmFsdWUgTGF6eUpTVmFsdWU6OmdldFZhbHVlKFZNJiB2bSkgY29uc3QK
ICAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0cmluZzoKICAgICAgICAgcmV0dXJuIGpzU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKHZtLCB1LmNoYXJhY3Rlcik7CiAgICAgY2FzZSBLbm93blN0cmluZ0lt
cGw6Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyh2bSwgdS5zdHJpbmdJbXBsKTsKKyAgICAgICAg
cmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcgeyB1LnN0cmluZ0ltcGwgfSk7CiAgICAgY2FzZSBO
ZXdTdHJpbmdJbXBsOgogICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIEF0b21TdHJpbmdJbXBs
OjphZGQodS5zdHJpbmdJbXBsKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA5NDRm
MDI2YzEyNzg3YzEyNjdiM2JmNzMxMDRmMWVlODI4NWRkMjEwLi4wZTI0MTZhNDViYzAzYWFlMmY2
NThhZTk0YzBjMThiNDRjNzY0ZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTA5Niw3ICsx
MDk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIGNvbnN0
IGNoYXIqIGNhY2hlUGF0aCA9IE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKICAgICAgICAgU3Ry
aW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoRmlsZVN5c3RlbTo6
bGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChzb3VyY2VPcmlnaW4oKS51
cmwoKS5maWxlU3lzdGVtUGF0aCgpKSk7Ci0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBtYWtlU3RyaW5nKHNvdXJjZSgpLnRvU3Ry
aW5nKCkuaGFzaCgpLCAnLScsIGZpbGVuYW1lLCAiLmJ5dGVjb2RlLWNhY2hlIikpOworICAgICAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwg
bWFrZVN0cmluZyhTdHJpbmdWaWV3SGFzaFRyYW5zbGF0b3I6Omhhc2goc291cmNlKCkpLCAnLScs
IGZpbGVuYW1lLCAiLmJ5dGVjb2RlLWNhY2hlIikpOwogICAgIH0KIAogICAgIHZvaWQgbG9hZEJ5
dGVjb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlck9TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyT1NSRXhpdC5jcHAKaW5kZXggZGNjNzM0NDVjMGM0MTExYWM4NWUzOTUwNzRjMTcwZTg0
Yjc4N2NiZi4uNzUxNTAyYjkwYzdkNTJhYjQ1NjQzOWY5OTk4NmVjOTU5NmEzODg0NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgSlNWYWx1ZSBPU1JFeGl0Ojp0b0pTKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmlkLCBqc051bWJlcihtX2lkKSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm9yaWdpbiwgbV9vcmlnaW4udG9KUyhnbG9iYWxPYmplY3QpKTsK
LSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXhpdEtpbmQsIGpz
U3RyaW5nKHZtLCBleGl0S2luZFRvU3RyaW5nKG1fZXhpdEtpbmQpKSk7CisgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmV4aXRLaW5kLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIGV4aXRLaW5kVG9TdHJpbmcobV9leGl0S2luZCkpKTsKICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNXYXRjaHBvaW50LCBqc0Jvb2xlYW4obV9pc1dh
dGNocG9pbnQpKTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y291bnQsIGpzTnVtYmVyKG1fY291bnRlcikpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggOWNi
MDcwMDE0NzE5YmJhNGJkYjk0YmNiYTllNWVhYjliZmNjMGQ2YS4uMGQ3NjEwN2E5ODcxYTQ2NzQz
MmI3NTQ2ZWY3MGU5M2I2NGNiMTVjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIGlubGluZSBKU1Zh
bHVlIGZhc3RKb2luKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBTdHJpCiAgICAgICAgICAgICBpZiAobGVuZ3RoIDw9IDEpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAotICAgICAgICAgICAgSlNTdHJpbmcqIG9wZXJhbmQgPSBqc1N0
cmluZyh2bSwgc2VwYXJhdG9yLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgSlNTdHJpbmcqIG9w
ZXJhbmQgPSBqc1N0cmluZyh2bSwgc2VwYXJhdG9yKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCA9IGxlbmd0
aCAtIDE7CiAgICAgICAgICAgICBmb3IgKDs7KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IDM1MmI3ZDI5ODNjM2E5NWUwYWRkNjE2
MjhiMzIwNGQxODBlMzZkNjMuLjJhZDU3Y2M1YmJlOGUzYzRjMGVkYTUxNGM5MjhlMmRmMjhmYWI1
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2Uu
Y3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgYXBwZW5kU291cmNlVG9FcnJvck1l
c3NhZ2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4CiAgICAgICAgIHJl
dHVybiBtZXNzYWdlOwogICAgIAogICAgIGlmIChleHByZXNzaW9uU3RhcnQgPCBleHByZXNzaW9u
U3RvcCkKLSAgICAgICAgcmV0dXJuIGFwcGVuZGVyKG1lc3NhZ2UsIGNvZGVCbG9jay0+c291cmNl
KCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uU3RvcCku
dG9TdHJpbmcoKSwgdHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRFeGFjdFNvdXJjZSk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVy
KCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvblN0b3ApLCB0eXBlLCBFcnJv
ckluc3RhbmNlOjpGb3VuZEV4YWN0U291cmNlKTsKIAogICAgIC8vIE5vIHJhbmdlIGluZm9ybWF0
aW9uLCBzbyBnaXZlIGEgZmV3IGNoYXJhY3RlcnMgb2YgY29udGV4dC4KICAgICBpbnQgZGF0YUxl
bmd0aCA9IHNvdXJjZVN0cmluZy5sZW5ndGgoKTsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMg
U3RyaW5nIGFwcGVuZFNvdXJjZVRvRXJyb3JNZXNzYWdlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBF
cnJvckluc3RhbmNlKiBleAogICAgICAgICBzdG9wKys7CiAgICAgd2hpbGUgKHN0b3AgPiBleHBy
ZXNzaW9uU3RhcnQgJiYgaXNTdHJXaGl0ZVNwYWNlKHNvdXJjZVN0cmluZ1tzdG9wIC0gMV0pKQog
ICAgICAgICBzdG9wLS07Ci0gICAgcmV0dXJuIGFwcGVuZGVyKG1lc3NhZ2UsIGNvZGVCbG9jay0+
c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2Uoc3RhcnQsIHN0b3ApLnRvU3RyaW5nKCksIHR5
cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kQXBwcm94aW1hdGVTb3VyY2UpOworICAgIHJldHVybiBh
cHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdl
KHN0YXJ0LCBzdG9wKSwgdHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJj
ZSk7CiB9CiAKIHZvaWQgRXJyb3JJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTVmFsdWUg
Y2F1c2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyLCBSdW50aW1lVHlwZSB0eXBlLCBib29sIHVz
ZUN1cnJlbnRGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5z
dGFuY2UuaAppbmRleCBlNzllY2I4MTQzZGZiY2ZlYzg2MGFkNGYxMzY3ZjQ5YTExNjc1NTUxLi4y
ODgwN2I0ZWEzM2VjYjU5ZDBkOGM3OWM4NzljODk5NGIyZjg2Zjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBlbnVtIFNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgeyBG
b3VuZEV4YWN0U291cmNlLCBGb3VuZEFwcHJveGltYXRlU291cmNlIH07Ci0gICAgdHlwZWRlZiBT
dHJpbmcgKCpTb3VyY2VBcHBlbmRlcikgKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlLCBTb3VyY2VUZXh0V2hlcmVFcnJv
ck9jY3VycmVkKTsKKyAgICB0eXBlZGVmIFN0cmluZyAoKlNvdXJjZUFwcGVuZGVyKSAoY29uc3Qg
U3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCwgUnVudGltZVR5
cGUsIFNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQpOwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAppbmRleCA4Y2QwZDVlOWM0NGYxMDgzODkyMjkwN2FjZTNhMDRmZjY0ZjJmMDZk
Li5kYzE2MDk3OWY5ZDg3MzY1OWZiZjljODBkYjYzMzA2YWZkNWU5NDkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtODEs
MTIgKzgxLDEyIEBAIHN0YXRpYyBTdHJpbmdWaWV3IGNsYW1wRXJyb3JNZXNzYWdlKGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxNZXNzYWdlKQogICAgIHJldHVybiBTdHJpbmdWaWV3KG9yaWdpbmFsTWVz
c2FnZSkuc3Vic3RyaW5nKDAsIG1heExlbmd0aCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZGVmYXVs
dEFwcHJveGltYXRlU291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc291cmNlVGV4dCkKK3N0YXRpYyBTdHJpbmcgZGVmYXVsdEFwcHJveGltYXRl
U291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291
cmNlVGV4dCkKIHsKICAgICByZXR1cm4gbWFrZVN0cmluZyhjbGFtcEVycm9yTWVzc2FnZShvcmln
aW5hbE1lc3NhZ2UpLCAiIChuZWFyICcuLi4iLCBzb3VyY2VUZXh0LCAiLi4uJykiKTsKIH0KIAot
U3RyaW5nIGRlZmF1bHRTb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6
U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQorU3RyaW5nIGRlZmF1bHRT
b3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgU3RyaW5nVmlldyBz
b3VyY2VUZXh0LCBSdW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJy
b3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewogICAgIGlmIChvY2N1cnJlbmNlID09IEVycm9ySW5z
dGFuY2U6OkZvdW5kQXBwcm94aW1hdGVTb3VyY2UpCiAgICAgICAgIHJldHVybiBkZWZhdWx0QXBw
cm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNvdXJjZVRleHQpOwpAQCAtOTUs
NyArOTUsNyBAQCBTdHJpbmcgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZQogICAgIHJldHVybiBtYWtlU3RyaW5n
KGNsYW1wRXJyb3JNZXNzYWdlKG9yaWdpbmFsTWVzc2FnZSksICIgKGV2YWx1YXRpbmcgJyIsIHNv
dXJjZVRleHQsICInKSIpOwogfQogCi1zdGF0aWMgU3RyaW5nIGZ1bmN0aW9uQ2FsbEJhc2UoY29u
c3QgU3RyaW5nJiBzb3VyY2VUZXh0KQorc3RhdGljIFN0cmluZ1ZpZXcgZnVuY3Rpb25DYWxsQmFz
ZShTdHJpbmdWaWV3IHNvdXJjZVRleHQpCiB7IAogICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0cmll
dmVzIHRoZSAnZm9vLmJhcicgc3Vic3RyaW5nIGZyb20gJ2Zvby5iYXIoYmF6KScuCiAgICAgLy8g
RklYTUU6IFRoaXMgZnVuY3Rpb24gaGFzIHNpbXBsZSBwcm9jZXNzaW5nIG9mIC8qICovIHN0eWxl
IGNvbW1lbnRzLgpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyBTdHJpbmcgZnVuY3Rpb25DYWxs
QmFzZShjb25zdCBTdHJpbmcmIHNvdXJjZVRleHQpCiAgICAgcmV0dXJuIHNvdXJjZVRleHQubGVm
dChpZHggKyAxKTsKIH0KIAotc3RhdGljIFN0cmluZyBub3RBRnVuY3Rpb25Tb3VyY2VBcHBlbmRl
cihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0
LCBSdW50aW1lVHlwZSB0eXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9j
Y3VycmVkIG9jY3VycmVuY2UpCitzdGF0aWMgU3RyaW5nIG5vdEFGdW5jdGlvblNvdXJjZUFwcGVu
ZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRleHQs
IFJ1bnRpbWVUeXBlIHR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2Nj
dXJyZWQgb2NjdXJyZW5jZSkKIHsKICAgICBBU1NFUlQodHlwZSAhPSBUeXBlRnVuY3Rpb24pOwog
CkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIFN0cmluZyBub3RBRnVuY3Rpb25Tb3VyY2VBcHBl
bmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3QKICAgICBlbHNlCiAg
ICAgICAgIGRpc3BsYXlWYWx1ZSA9IFN0cmluZ1ZpZXcob3JpZ2luYWxNZXNzYWdlLmNoYXJhY3Rl
cnMxNigpLCBub3RBRnVuY3Rpb25JbmRleCAtIDEpOwogCi0gICAgU3RyaW5nIGJhc2UgPSBmdW5j
dGlvbkNhbGxCYXNlKHNvdXJjZVRleHQpOworICAgIFN0cmluZ1ZpZXcgYmFzZSA9IGZ1bmN0aW9u
Q2FsbEJhc2Uoc291cmNlVGV4dCk7CiAgICAgaWYgKCFiYXNlKQogICAgICAgICByZXR1cm4gZGVm
YXVsdEFwcHJveGltYXRlU291cmNlRXJyb3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoU3RyaW5nQnVpbGRlcjo6T3ZlcmZsb3dIYW5kbGVy
OjpSZWNvcmRPdmVyZmxvdyk7CkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIFN0cmluZyBub3RB
RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29u
c3QgU3QKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1zdGF0aWMgU3RyaW5n
IGludmFsaWRQYXJhbWV0ZXJJblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxN
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlIHR5cGUsIEVycm9y
SW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKK3N0YXRp
YyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlckluU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBv
cmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCwgUnVudGltZVR5cGUgdHlwZSwg
RXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQog
ewogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSAhPSBUeXBlT2JqZWN0KTsKIApAQCAtMjA4
LDExICsyMDgsMTEgQEAgc3RhdGljIFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBl
bmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY28KICAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcob3JpZ2luYWxNZXNzYWdlLCAiIChldmFsdWF0aW5nICciLCBzb3VyY2VUZXh0LCAi
JykiKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW5MZW5ndGggPSAyOwotICAg
IFN0cmluZyByaWdodEhhbmRTaWRlID0gc291cmNlVGV4dC5zdWJzdHJpbmcoaW5JbmRleCArIGlu
TGVuZ3RoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAgICBTdHJpbmcgcmlnaHRIYW5kU2lkZSA9
IHNvdXJjZVRleHQuc3Vic3RyaW5nKGluSW5kZXggKyBpbkxlbmd0aCkudG9TdHJpbmdXaXRob3V0
Q29weWluZygpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogICAgIHJldHVybiBtYWtlU3RyaW5nKHJp
Z2h0SGFuZFNpZGUsICIgaXMgbm90IGFuIE9iamVjdC4gKGV2YWx1YXRpbmcgJyIsIHNvdXJjZVRl
eHQsICInKSIpOwogfQogCi1pbmxpbmUgU3RyaW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9m
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSwgRXJyb3JJ
bnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQoraW5saW5l
IFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0
cmluZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcg
c291cmNlVGV4dCwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVy
cm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKIHsKICAgICBpZiAob2NjdXJyZW5jZSA9PSBFcnJvcklu
c3RhbmNlOjpGb3VuZEFwcHJveGltYXRlU291cmNlKQogICAgICAgICByZXR1cm4gZGVmYXVsdEFw
cHJveGltYXRlU291cmNlRXJyb3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKQEAgLTIy
NywyMSArMjI3LDIxIEBAIGlubGluZSBTdHJpbmcgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZT
b3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvCiAgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKG9yaWdpbmFsTWVzc2FnZSwgIiAoZXZhbHVhdGluZyAnIiwgc291cmNlVGV4dCwg
IicpIik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluc3RhbmNlb2ZMZW5ndGgg
PSAxMDsKLSAgICBTdHJpbmcgcmlnaHRIYW5kU2lkZSA9IHNvdXJjZVRleHQuc3Vic3RyaW5nKGlu
c3RhbmNlb2ZJbmRleCArIGluc3RhbmNlb2ZMZW5ndGgpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwor
ICAgIFN0cmluZyByaWdodEhhbmRTaWRlID0gc291cmNlVGV4dC5zdWJzdHJpbmcoaW5zdGFuY2Vv
ZkluZGV4ICsgaW5zdGFuY2VvZkxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpLnNpbXBs
aWZ5V2hpdGVTcGFjZSgpOwogICAgIHJldHVybiBtYWtlU3RyaW5nKHJpZ2h0SGFuZFNpZGUsIGNv
bnRlbnQsICIuIChldmFsdWF0aW5nICciLCBzb3VyY2VUZXh0LCAiJykiKTsKIH0KIAotc3RhdGlj
IFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5k
ZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4
dCwgUnVudGltZVR5cGUgcnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVy
ZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKK3N0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRl
ckluc3RhbmNlb2ZOb3RGdW5jdGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBl
LCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2Up
CiB7CiAgICAgcmV0dXJuIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIo
IiBpcyBub3QgYSBmdW5jdGlvbiJfcywgb3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0LCBydW50
aW1lVHlwZSwgb2NjdXJyZW5jZSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRl
ckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25z
dCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50
aW1lVHlwZSBydW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JP
Y2N1cnJlZCBvY2N1cnJlbmNlKQorc3RhdGljIFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5zdGFu
Y2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlIHJ1
bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9j
Y3VycmVuY2UpCiB7CiAgICAgcmV0dXJuIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNl
QXBwZW5kZXIoIltTeW1ib2wuaGFzSW5zdGFuY2VdIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmlu
ZWQsIG9yIG51bGwiX3MsIG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCwgcnVudGltZVR5cGUs
IG9jY3VycmVuY2UpOwogfQogCi1zdGF0aWMgU3RyaW5nIGludmFsaWRQcm90b3R5cGVTb3VyY2VB
cHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VUZXh0LCBSdW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JP
Y2N1cnJlZCBvY2N1cnJlbmNlKQorc3RhdGljIFN0cmluZyBpbnZhbGlkUHJvdG90eXBlU291cmNl
QXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNl
VGV4dCwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2Nj
dXJyZWQgb2NjdXJyZW5jZSkKIHsKICAgICBpZiAob2NjdXJyZW5jZSA9PSBFcnJvckluc3RhbmNl
OjpGb3VuZEFwcHJveGltYXRlU291cmNlKQogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGlt
YXRlU291cmNlRXJyb3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCBhMzE1MWI1
YjBkMDM5OGU4ZmZlMjhmZTQ1OTBiZTJiZjAyZGRiMGEwLi5iNjRmYTU4OGI5OWMxOWZiNmJmMTdh
YTk1ZGZhZTUwZjJkYWEzOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiB0eXBlZGVmIEpTT2JqZWN0KiAoKkVycm9yRmFjdG9yeSkoSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlcik7CiAKLVN0cmluZyBkZWZh
dWx0U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUnVudGltZVR5
cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQpOworU3RyaW5n
IGRlZmF1bHRTb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmLCBTdHJpbmdWaWV3LCBSdW50aW1l
VHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCk7CiAKIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUsIGNvbnN0IFN0cmluZyYsIEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyKTsKIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9i
YWxPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGFjMjA5NWVmZGI2ZTllNmQ4MmZmNDFjZjBhOGZjZDg0
YWMzYjA2OWUuLmFjZWE2MzFlMjgxYzUxMDZhMmRmM2IyYTQ4MmU3ZjY3ZTlhZGM2NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIEpTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRv
U3RyaW5nU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm4g
Y2FjaGVJZk5vRXhjZXB0aW9uKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCAi
ZnVuY3Rpb24gIiwgbmFtZSgpLnN0cmluZygpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0i
KSk7CiAKICAgICBpZiAoaXNDbGFzcygpKQotICAgICAgICByZXR1cm4gY2FjaGUoanNTdHJpbmco
dm0sIGNsYXNzU291cmNlKCkudmlldygpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIGNh
Y2hlKGpzU3RyaW5nKHZtLCBjbGFzc1NvdXJjZSgpLnZpZXcoKSkpOwogCiAgICAgQVNDSUlMaXRl
cmFsIGZ1bmN0aW9uSGVhZGVyID0gIiJfczsKICAgICBzd2l0Y2ggKHBhcnNlTW9kZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaApp
bmRleCBiMTQzYmNjMzBhZThmOWQ5NWFjYWZkZmUyYWYzZDk0YzdhNDI2NDkxLi4yOTUyYTg3MWRl
MGZiOWI0MjFiYjBkMTExNzIxOTM2MGRmMWZiOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTEyOSwxNCArMTI5LDE0IEBA
IGlubGluZSBKU1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFsdWUoVk0mIHZtLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQogewogICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sKCkpCiAgICAg
ICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCpp
ZGVudGlmaWVyLmltcGwoKSkpOwotICAgIHJldHVybiBqc1N0cmluZyh2bSwgaWRlbnRpZmllci5p
bXBsKCkpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nIHsgaWRlbnRpZmllci5pbXBs
KCkgfSk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIGlkZW50aWZpZXJUb1NhZmVQdWJsaWNKU1ZhbHVl
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgCiB7CiAgICAgaWYgKGlkZW50
aWZpZXIuaXNTeW1ib2woKSAmJiAhaWRlbnRpZmllci5pc1ByaXZhdGVOYW1lKCkpCiAgICAgICAg
IHJldHVybiBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVu
dGlmaWVyLmltcGwoKSkpOwotICAgIHJldHVybiBqc1N0cmluZyh2bSwgaWRlbnRpZmllci5pbXBs
KCkpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nIHsgaWRlbnRpZmllci5pbXBsKCkg
fSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMDE5NDE0NTNlZTk4OWEw
NjQ1ODc1OTIyMDJhMzZjOWFkZmMwMjc2MS4uMmIyN2M4ODIwZmJjOTIyYjkzNTRlNmUwNzBkZjIz
OTQyODBlMTU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBKU1ZhbHVlIEludGxE
YXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdgogICAgICAgICBwcmV2aW91c0VuZEluZGV4ID0gZW5kSW5kZXg7CiAKICAgICAg
ICAgaWYgKGZpZWxkVHlwZSA+PSAwKSB7Ci0gICAgICAgICAgICBhdXRvIHR5cGUgPSBqc1N0cmlu
Zyh2bSwgcGFydFR5cGVTdHJpbmcoVURhdGVGb3JtYXRGaWVsZChmaWVsZFR5cGUpKSk7CisgICAg
ICAgICAgICBhdXRvIHR5cGUgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5n
KFVEYXRlRm9ybWF0RmllbGQoZmllbGRUeXBlKSkpOwogICAgICAgICAgICAgYXV0byB2YWx1ZSA9
IGpzU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcuc3Vic3RyaW5nKGJlZ2luSW5kZXgsIGVuZEluZGV4
IC0gYmVnaW5JbmRleCkpOwogICAgICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB0eXBlKTsKQEAgLTE4MTEsNyArMTgxMSw3IEBAIEpT
VmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRSYW5nZVRvUGFydHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91CiAKICAgICAgICAgQVNTRVJUKGNhdGVnb3J5ID09IFVGSUVM
RF9DQVRFR09SWV9EQVRFKTsKIAotICAgICAgICBhdXRvIHR5cGUgPSBqc1N0cmluZyh2bSwgcGFy
dFR5cGVTdHJpbmcoVURhdGVGb3JtYXRGaWVsZChmaWVsZFR5cGUpKSk7CisgICAgICAgIGF1dG8g
dHlwZSA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVURhdGVGb3JtYXRG
aWVsZChmaWVsZFR5cGUpKSk7CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY3JlYXRlUGFydCh0
eXBlLCBiZWdpbkluZGV4LCBlbmRJbmRleCAtIGJlZ2luSW5kZXgpOwogICAgICAgICBwYXJ0cy0+
cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bExvY2FsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNw
cAppbmRleCA3ZjcyNDFjY2UxNjU2YThjZDc5Y2UxMTE2ZjY3YTEzOWZlMzgyNjkzLi4zZmMzNGQ0
MjYxZWU1NzNmOWUzNWQ2NWRjMGFiNTUwMTgxYTRlMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcApAQCAtNzQzLDE2ICs3NDMsMTYgQEAgSlNPYmpl
Y3QqIEludGxMb2NhbGU6OnRleHRJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgc3dpdGNoIChsYXlvdXQpIHsKICAgICBkZWZhdWx0OgogICAgIGNhc2UgVUxPQ19MQVlPVVRf
TFRSOgotICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgImx0ciJfcyk7CisgICAg
ICAgIGxheW91dFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImx0ciJfcyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgVUxPQ19MQVlPVVRfUlRMOgotICAgICAgICBsYXlvdXRTdHJp
bmcgPSBqc1N0cmluZyh2bSwgInJ0bCJfcyk7CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgInJ0bCJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVUxP
Q19MQVlPVVRfVFRCOgotICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgInR0YiJf
cyk7CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInR0YiJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVUxPQ19MQVlPVVRfQlRUOgotICAgICAgICBs
YXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgImJ0dCJfcyk7CisgICAgICAgIGxheW91dFN0cmlu
ZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImJ0dCJfcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmNwcAppbmRleCA1M2UyZDgxNDcwZGM4NGMzZTU0Yjg0MTllZWQ3ZjBkZmI4MWM4MTI3Li44
M2U3ZGFjNmZiYmI1ZjhiNGY3MzczYTEzYWZmYWQ1NzVjZDNkOTE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMTEzNyw3
ICsxMTM3LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZVRvUGFydHNJbnRl
cm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgc2lnbiA9IGVu
ZC5zaWduKCk7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZC5tX2Zp
ZWxkOwotICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZCA/
IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1h
dEZpZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwgc2lnbiwgbnVtYmVyVHlwZSkpOworICAgICAgICBh
dXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZCA/IGxpdGVyYWxTdHJpbmcg
OiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVs
ZHMoZmllbGRUeXBlKSwgc3R5bGUsIHNpZ24sIG51bWJlclR5cGUpKTsKICAgICAgICAgSlNPYmpl
Y3QqIHBhcnQgPSBjcmVhdGVQYXJ0KHBhcnRUeXBlLCBmaWVsZC5tX3JhbmdlLmJlZ2luKCksIGZp
ZWxkLm1fcmFuZ2UuZGlzdGFuY2UoKSk7CiAgICAgICAgIHBhcnRzLT5wdXNoKGdsb2JhbE9iamVj
dCwgcGFydCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CkBA
IC0xNTA3LDcgKzE1MDcsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZQogCiAgICAgZm9yIChh
dXRvJiBmaWVsZCA6IGZsYXR0ZW4pIHsKICAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZC5t
X2ZpZWxkOwotICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVs
ZCA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZv
cm1hdEZpZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwgc2lnbiwgbnVtYmVyVHlwZSkpOworICAgICAg
ICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZCA/IGxpdGVyYWxTdHJp
bmcgOiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRG
aWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHNpZ24sIG51bWJlclR5cGUpKTsKICAgICAgICAgYXV0
byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2bSwgZm9ybWF0dGVkLCBmaWVsZC5tX3JhbmdlLmJl
Z2luKCksIGZpZWxkLm1fcmFuZ2UuZGlzdGFuY2UoKSk7CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcGFydC0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBwYXJ0VHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
Y3BwCmluZGV4IDY5NTU2YmQzNTY0Y2ExZWFkN2YzOGJkYWY3ZjUxMGZkOTEwM2M2YzguLmQ4ZDRl
YTg0Mjk3NDc2MGMwMjdiYTVhYzAwYTMwN2Q5ZGNmMjVjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCkBA
IC0zMTgsNyArMzE4LDcgQEAgSlNWYWx1ZSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRU
b1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWIKICAgICAgICAgfQogCiAg
ICAgICAgIEludGxGaWVsZEl0ZXJhdG9yIGZpZWxkSXRlcmF0b3IoKml0ZXJhdG9yLmdldCgpKTsK
LSAgICAgICAgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9i
amVjdCwgSW50bE51bWJlckZvcm1hdDo6U3R5bGU6OkRlY2ltYWwsIHN0ZDo6c2lnbmJpdChhYnNW
YWx1ZSksIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6bnVtYmVyVHlwZUZyb21Eb3VibGUoYWJzVmFs
dWUpLCBmb3JtYXR0ZWROdW1iZXIsIGZpZWxkSXRlcmF0b3IsIHBhcnRzLCBudWxscHRyLCBqc1N0
cmluZyh2bSwgc2luZ3VsYXJVbml0KHVuaXQpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgSW50bE51bWJl
ckZvcm1hdDo6U3R5bGU6OkRlY2ltYWwsIHN0ZDo6c2lnbmJpdChhYnNWYWx1ZSksIEludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6bnVtYmVyVHlwZUZyb21Eb3VibGUoYWJzVmFsdWUpLCBmb3JtYXR0ZWRO
dW1iZXIsIGZpZWxkSXRlcmF0b3IsIHBhcnRzLCBudWxscHRyLCBqc1N0cmluZyh2bSwgc2luZ3Vs
YXJVbml0KHVuaXQpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IDE5MGJlZjExMmNjNWRiOTEwODExYmNlYjhj
NDA0ZTQyN2MyOTIwYjQuLjlhMDkxZGEzZTk5MmYxMjdlOTBjMDNhMjNiYTdlOGIzMzA4YzljMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBKU0FycmF5QnVmZmVy
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgCi0gICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3lt
Ym9sLCBqc1N0cmluZyh2bSwgYXJyYXlCdWZmZXJTaGFyaW5nTW9kZU5hbWUoc2hhcmluZ01vZGUp
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgYXJyYXlCdWZmZXJT
aGFyaW5nTW9kZU5hbWUoc2hhcmluZ01vZGUpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBpZiAoc2hhcmluZ01vZGUgPT0g
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCkgewogICAgICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zbGljZSwgYXJyYXlC
dWZmZXJQcm90b0Z1bmNTbGljZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDIpOwogICAgICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+Ynl0ZUxlbmd0aCwgYXJyYXlCdWZmZXJQcm90b0dl
dHRlckZ1bmNCeXRlTGVuZ3RoLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGUzZjAzYTRjMDhmODQ2OTNiMTY0NDBmODFhN2Nl
YTdkNjg4ZWRhY2MuLmUxMTQ2MzI2YjYzMWIxNGM2NjY2NzA4ZTAyNDRkN2M1MGU3NjliYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAK
QEAgLTIzMiw3ICsyMzIsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OnJl
cXVlc3RJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEFTU0VSVChj
YWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKHZtLCBt
b2R1bGVLZXkuaW1wbCgpKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyh2bSwgU3Ry
aW5nIHsgbW9kdWxlS2V5LmltcGwoKSB9KSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChwYXJhbWV0
ZXJzKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHNjcmlwdEZldGNoZXIpOwogICAgIEFTU0VSVCgh
YXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CkBAIC0zOTgsNyArMzk4LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKG1vZHVsZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChhdXRvJiBrZXkgOiBtb2R1bGVS
ZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKSkgewotICAgICAgICByZXN1bHQtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgaSsrLCBqc1N0cmluZyh2bSwga2V5LmdldCgpKSk7CisgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpKyssIGpzU3RyaW5nKHZtLCBT
dHJpbmcgeyBrZXkuZ2V0KCkgfSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggNzUw
Yjg3NjI2NmJiMDJiMjJlZjk5ZTMyMTAxY2UxODAxZGU4NjFiYy4uNzZiNDA3YzBhYjY0OWFmNmQ5
NGQ3M2JlMmQ5MzAyZjI1MDJjMGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAogSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoVk0mKTsKIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYs
IGNvbnN0IFN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBz
dHJpbmcKK0pTU3RyaW5nKiBqc1N0cmluZyhWTSYsIFN0cmluZ1ZpZXcpOyAvLyByZXR1cm5zIGVt
cHR5IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKIAogSlNTdHJpbmcqIGpzU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKFZNJiwgVUNoYXIpOwogSlNTdHJpbmcqIGpzU3Vic3RyaW5nKFZNJiwgY29u
c3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtMjUxLDYg
KzI1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2FwVG9BdG9tU3RyaW5nKFZNJiwgUmVmUHRy
PEF0b21TdHJpbmdJbXBsPiYmKSBjb25zdDsKIAogICAgIGZyaWVuZCBKU1N0cmluZyoganNTdHJp
bmcoVk0mLCBjb25zdCBTdHJpbmcmKTsKKyAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKFZN
JiwgU3RyaW5nVmlldyk7CiAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9i
amVjdCosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgSlNTdHJpbmcqKTsKICAgICBmcmll
bmQgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqLCBjb25zdCBT
dHJpbmcmKTsKQEAgLTg3Niw2ICs4NzgsMjAgQEAgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZyhW
TSYgdm0sIGNvbnN0IFN0cmluZyYgcykKICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwg
KnMuaW1wbCgpKTsKIH0KIAoraW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYgdm0sIFN0cmlu
Z1ZpZXcgcykKK3sKKyAgICBpbnQgc2l6ZSA9IHMubGVuZ3RoKCk7CisgICAgaWYgKCFzaXplKQor
ICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCk7CisgICAgaWYgKHNp
emUgPT0gMSkgeworICAgICAgICBVQ2hhciBjID0gcy5jaGFyYWN0ZXJBdCgwKTsKKyAgICAgICAg
aWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIHZt
LnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7CisgICAgfQorICAgIGF1dG8g
aW1wbCA9IHMuaXM4Qml0KCkgPyBTdHJpbmdJbXBsOjpjcmVhdGUocy5jaGFyYWN0ZXJzOCgpLCBz
Lmxlbmd0aCgpKSA6IFN0cmluZ0ltcGw6OmNyZWF0ZShzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0
aCgpKTsKKyAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgV1RGTW92ZShpbXBsKSk7Cit9
CisKIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1N0cmluZyogYmFzZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDI2ZDhmOWY3NGQ3MDQ5NDk2MmMzMDc2NjlhZDdlODk4OTQ4NjIyMWIuLjIyODViM2Zk
ZWE1MzM5ZGEzNGI4ZWMwMDcxNzI5MmIxMGUyN2JhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTEyNSw3ICsxMjUs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgQVNTRVJUKHVpZC5zeW1ib2xSZWdpc3RyeSgpID09
ICZ2bS5zeW1ib2xSZWdpc3RyeSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKHZtLCAmdWlkKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
U3RyaW5nIHsgdWlkIH0pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdDb21tb24uaAppbmRleCBjNzcwZTA0NWQyMGNjZTIzM2JlMDhmMGRiOWJlNmJkODM2OGFl
ZWM5Li5iMGQ2M2RlZjZiZjFkZGViODdmOWFlY2I5NTk3YjRmMzM0NWIyZjU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29tbW9uLmgKQEAgLTQ1OCw2ICs0NTgsMzMgQEAgaW5saW5lIHNpemVfdCBm
aW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1hdGNo
Q2hhcmFjdGUKICAgICByZXR1cm4gZmluZChjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0YXRpY19jYXN0
PExDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1l
IFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KK0FMV0FZ
U19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZlcnNlRmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJh
Y3RlclR5cGUqIHNlYXJjaENoYXJhY3RlcnMsIGNvbnN0IE1hdGNoQ2hhcmFjdGVyVHlwZSogbWF0
Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBt
YXRjaExlbmd0aCkKK3sKKyAgICAvLyBPcHRpbWl6YXRpb246IGtlZXAgYSBydW5uaW5nIGhhc2gg
b2YgdGhlIHN0cmluZ3MsCisgICAgLy8gb25seSBjYWxsIGVxdWFsIGlmIHRoZSBoYXNoZXMgbWF0
Y2guCisKKyAgICAvLyBkZWx0YSBpcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgdGltZXMgdG8g
dGVzdDsgZGVsdGEgPT0gMCBtZWFucyB0ZXN0IG9ubHkgb25jZS4KKyAgICB1bnNpZ25lZCBkZWx0
YSA9IHN0ZDo6bWluKHN0YXJ0LCBsZW5ndGggLSBtYXRjaExlbmd0aCk7CisKKyAgICB1bnNpZ25l
ZCBzZWFyY2hIYXNoID0gMDsKKyAgICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaExlbmd0aDsgKytpKSB7CisgICAgICAgIHNlYXJjaEhh
c2ggKz0gc2VhcmNoQ2hhcmFjdGVyc1tkZWx0YSArIGldOworICAgICAgICBtYXRjaEhhc2ggKz0g
bWF0Y2hDaGFyYWN0ZXJzW2ldOworICAgIH0KKworICAgIC8vIGtlZXAgbG9vcGluZyB1bnRpbCB3
ZSBtYXRjaAorICAgIHdoaWxlIChzZWFyY2hIYXNoICE9IG1hdGNoSGFzaCB8fCAhZXF1YWwoc2Vh
cmNoQ2hhcmFjdGVycyArIGRlbHRhLCBtYXRjaENoYXJhY3RlcnMsIG1hdGNoTGVuZ3RoKSkgewor
ICAgICAgICBpZiAoIWRlbHRhKQorICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAg
ICAtLWRlbHRhOworICAgICAgICBzZWFyY2hIYXNoIC09IHNlYXJjaENoYXJhY3RlcnNbZGVsdGEg
KyBtYXRjaExlbmd0aF07CisgICAgICAgIHNlYXJjaEhhc2ggKz0gc2VhcmNoQ2hhcmFjdGVyc1tk
ZWx0YV07CisgICAgfQorICAgIHJldHVybiBkZWx0YTsKK30KKwogLy8gVGhpcyBpcyBtYXJrZWQg
aW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQgaW4gbm9uLWlubGluZSBmdW5jdGlvbnMgZm9y
IGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVzZWQgZGlyZWN0bHkgaW4gY29kZSBpdCdzIHBy
b2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUgdGhlIGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4K
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0
IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2lnbmVkIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwCmluZGV4IGM3OTI1MTc5M2I3ZGEyNjM5NWMwOTZlNGUyMTNjMzhlNGMyZmE3
MjguLjU4Yjg1NDU2Zjg2YzVjYTg0ZWUzZTk1ZWE0YjIzYjRiNDMxNDQ1YzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtOTgzLDMzICs5ODMsNiBAQCBzaXplX3QgU3RyaW5nSW1w
bDo6cmV2ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCkKICAgICByZXR1
cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGNoYXJhY3Rlciwg
c3RhcnQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU2VhcmNoQ2hhcmFjdGVyVHlwZSwgdHlw
ZW5hbWUgTWF0Y2hDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzdGF0aWMgc2l6ZV90IHJl
dmVyc2VGaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSogc2VhcmNoQ2hhcmFjdGVy
cywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQotewotICAgIC8vIE9w
dGltaXphdGlvbjoga2VlcCBhIHJ1bm5pbmcgaGFzaCBvZiB0aGUgc3RyaW5ncywKLSAgICAvLyBv
bmx5IGNhbGwgZXF1YWwgaWYgdGhlIGhhc2hlcyBtYXRjaC4KLQotICAgIC8vIGRlbHRhIGlzIHRo
ZSBudW1iZXIgb2YgYWRkaXRpb25hbCB0aW1lcyB0byB0ZXN0OyBkZWx0YSA9PSAwIG1lYW5zIHRl
c3Qgb25seSBvbmNlLgotICAgIHVuc2lnbmVkIGRlbHRhID0gc3RkOjptaW4oc3RhcnQsIGxlbmd0
aCAtIG1hdGNoTGVuZ3RoKTsKLSAgICAKLSAgICB1bnNpZ25lZCBzZWFyY2hIYXNoID0gMDsKLSAg
ICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
YXRjaExlbmd0aDsgKytpKSB7Ci0gICAgICAgIHNlYXJjaEhhc2ggKz0gc2VhcmNoQ2hhcmFjdGVy
c1tkZWx0YSArIGldOwotICAgICAgICBtYXRjaEhhc2ggKz0gbWF0Y2hDaGFyYWN0ZXJzW2ldOwot
ICAgIH0KLQotICAgIC8vIGtlZXAgbG9vcGluZyB1bnRpbCB3ZSBtYXRjaAotICAgIHdoaWxlIChz
ZWFyY2hIYXNoICE9IG1hdGNoSGFzaCB8fCAhZXF1YWwoc2VhcmNoQ2hhcmFjdGVycyArIGRlbHRh
LCBtYXRjaENoYXJhY3RlcnMsIG1hdGNoTGVuZ3RoKSkgewotICAgICAgICBpZiAoIWRlbHRhKQot
ICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAgICAtLWRlbHRhOwotICAgICAgICBz
ZWFyY2hIYXNoIC09IHNlYXJjaENoYXJhY3RlcnNbZGVsdGEgKyBtYXRjaExlbmd0aF07Ci0gICAg
ICAgIHNlYXJjaEhhc2ggKz0gc2VhcmNoQ2hhcmFjdGVyc1tkZWx0YV07Ci0gICAgfQotICAgIHJl
dHVybiBkZWx0YTsKLX0KLQogc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0cmluZ1Zp
ZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KQogewogICAgIC8vIENoZWNrIGZvciBudWxs
IG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmNwcAppbmRleCBmYThhYjRlNjEzYzQ2Y2VmZTE3Zjc3MWU0OTRkOWUxZTdhOWUzMjEzLi5hZjk2
YjkyZWQwNTkxZGMxZjNiZDU5YWY5NmI0NDBhOWI4Njg0NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHAKQEAgLTM1OSw2ICszNTksMzEgQEAgU3RyaW5nVmlldyBTdHJpbmdWaWV3Ojpz
dHJpcFdoaXRlU3BhY2UoKSBjb25zdAogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z01hdGNoZWRDaGFyYWN0ZXJzKGlzQVNDSUlTcGFjZTxVQ2hhcj4pOwogfQogCitzaXplX3QgU3Ry
aW5nVmlldzo6cmV2ZXJzZUZpbmQoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7
CisKKyAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IG1hdGNoU3RyaW5nLmxlbmd0aCgpOworICAg
IHVuc2lnbmVkIG91ckxlbmd0aCA9IGxlbmd0aCgpOworICAgIGlmICghbWF0Y2hMZW5ndGgpCisg
ICAgICAgIHJldHVybiBzdGQ6Om1pbihzdGFydCwgb3VyTGVuZ3RoKTsKKworICAgIC8vIENoZWNr
IHN0YXJ0ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgorICAgIGlmIChtYXRjaExlbmd0aCA+
IG91ckxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKGlzOEJpdCgp
KSB7CisgICAgICAgIGlmIChtYXRjaFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVy
biByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4
KCksIHN0YXJ0LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHJldmVy
c2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0
YXJ0LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICB9CisKKyAgICBpZiAobWF0Y2hTdHJp
bmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMx
NigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgb3VyTGVuZ3RoLCBtYXRjaExl
bmd0aCk7CisgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNo
U3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7Cit9
CisKIGludCBjb2RlUG9pbnRDb21wYXJlKFN0cmluZ1ZpZXcgbGhzLCBTdHJpbmdWaWV3IHJocykK
IHsKICAgICBib29sIGxoc0lzOEJpdCA9IGxocy5pczhCaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKaW5kZXggZGZmNGNlNThiNDQ3ZDZjMTdjZGFjYTEzOWY5ZWNiNjg1NWRiNzZhNS4uYjU0
ODQ5NjcyZjM3OWNhMzIwOGJhZmI2MzZlNDlhYzdiYzRhNjNjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAK
ICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKKyAgICBzaXplX3QgcmV2ZXJzZUZp
bmQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5k
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
SVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcAppbmRleCBkYjVhYThlNDBkM2RiZjZhYmJjNzRmZmEwYWNjMDhiMmRkMmI1
NmY1Li5mYTZjMTZjYTI4YTU5ZWMzZjQwZWUwOTAxMTY5NGZjOTJmYzAwNjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAt
MjA2NSwxMyArMjA2NSwxMyBAQCBKU1ZhbHVlUmVmIEpTSVBDOjpwcm9jZXNzVGFyZ2V0cyhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSgogICAgIEpTQzo6SlNP
YmplY3QqIHByb2Nlc3NUYXJnZXRzT2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eUFycmF5KGds
b2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogICAgIGludCBpbmRleCA9IDA7Ci0gICAgcHJv
Y2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywg
SlNDOjpqc1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVVSSkpOworICAgIHByb2Nlc3NUYXJn
ZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNO
b250cml2aWFsU3RyaW5nKHZtLCBwcm9jZXNzVGFyZ2V0TmFtZVVJKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKLSAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzU3RyaW5nKHZtLCBwcm9jZXNzVGFyZ2V0
TmFtZUdQVSkpOworICAgIHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCBwcm9jZXNzVGFy
Z2V0TmFtZUdQVSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpKTsKICNlbmRpZgotICAgIHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNTdHJpbmcodm0sIHBy
b2Nlc3NUYXJnZXROYW1lTmV0d29ya2luZykpOworICAgIHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNOb250cml2aWFsU3Ry
aW5nKHZtLCBwcm9jZXNzVGFyZ2V0TmFtZU5ldHdvcmtpbmcpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAgICAgcmV0dXJu
IHRvUmVmKHZtLCBwcm9jZXNzVGFyZ2V0c09iamVjdCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456880</attachid>
            <date>2022-04-06 18:15:23 -0700</date>
            <delta_ts>2022-04-07 14:26:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238911-20220406181523.patch</filename>
            <type>text/plain</type>
            <size>37448</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDRjODVjZjJiZTA3OWVjN2Y3NTllOWM4Zjk2YzU5YzRkNDgxYjUwLi4zODIzM2Y0ZDllZjQwZTgz
NjU1MTU0Njc5ODVkY2FlNjRlZTcwOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAyMi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBudW1iZXIgb2YgU3RyaW5nVmlldyB0byBTdHJpbmcgY29udmVyc2lv
bnMgaW4gSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzg5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFs
dWU6OmdldFZhbHVlIGNvbnN0KToKKyAgICAgICAgUmVzb2x2ZSBhbWJpZ3VpdHkgYnkgZXhwbGlj
aXRseSBjb252ZXJ0aW5nIHRoZSBTdHJpbmdJbXBsIHRvIGEgU3RyaW5nIGJlZm9yZQorICAgICAg
ICBjYWxsaW5nIGpzU3RyaW5nKCkuIFsxXQorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAg
QXZvaWQgY29uc3RydWN0aW5nIGEgU3RyaW5nIGZyb20gdGhlIFN0cmluZ1ZpZXcsIGp1c3QgdG8g
Y29tcHV0ZSBhIGhhc2guCisgICAgICAgIEluc3RlYWQsIHJlbHkgb24gdGhlIFN0cmluZ1ZpZXdI
YXNoVHJhbnNsYXRvciBmb3IgdGhpcy4KKworICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NS
RXhpdC5jcHA6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpPU1JFeGl0Ojp0b0pTIGNvbnN0KToK
KyAgICAgICAgZXhpdEtpbmRUb1N0cmluZygpIHJldHVybnMgYW4gQVNDSUlMaXRlcmFsIHdob3Nl
IGxlbmd0aCBpcyBhbHdheXMgZ3JlYXRlcgorICAgICAgICB0aGFuIDEgc28gd2UgY2FuIGNhbGwg
dGhlIG1vcmUgZWZmaWNpZW50IGpzTm9udHJpdmlhbFN0cmluZygpIGluc3RlYWQgb2YKKyAgICAg
ICAganNTdHJpbmcoKS4gQ2FsbGluZyBqc1N0cmluZygpIGhlcmUgaGFkIGJlY29tZSBhbWJpZ3Vv
dXMgYmVjYXVzZSBhbgorICAgICAgICBBU0NJSUxpdGVyYWwgY2FuIGJlIGltcGxpY2l0ZWx5IGNv
bnZlcnRlZCB0byBib3RoIGEgU3RyaW5nIGFuZCBhCisgICAgICAgIFN0cmluZ1ZpZXcgWzJdLgor
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZh
c3RKb2luKToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IGpzU3RyaW5nKCkgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFN0cmluZ1ZpZXcsIHRvIGF2b2lkCisgICAgICAgIHVubmVjZXNzYXJpbHkgY29uc3Ry
dWN0aW5nIGEgU3RyaW5nIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBsZW5ndGggaXMgPD0gMSBbM10u
CisKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjph
cHBlbmRTb3VyY2VUb0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3Rh
bmNlLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAg
KEpTQzo6ZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3IpOgorICAgICAgICAoSlNDOjpkZWZh
dWx0U291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNhbGxCYXNlKToKKyAg
ICAgICAgKEpTQzo6bm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjpp
bnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcik6CisgICAgICAgIChKU0M6OmludmFsaWRQ
YXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjppbnZhbGlk
UGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAo
SlNDOjppbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlv
blNvdXJjZUFwcGVuZGVyKToKKyAgICAgICAgKEpTQzo6aW52YWxpZFByb3RvdHlwZVNvdXJjZUFw
cGVuZGVyKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAg
Q2FsbCBTb3VyY2VBcHBlbmRlciB3aXRoIGEgU3RyaW5nVmlldyBzaW5jZSB0aGlzIGlzIHdoYXQg
d2UgaGF2ZS4gSW4gbW9zdAorICAgICAgICBjYXNlcywgdGhlc2UgYXBwZW5kZXJzIGVuZCB1cCBj
YWxsaW5nIG1ha2VTdHJpbmcoKSBhbmQgaXQgaXMgdGh1cyBiZW5lZmljaWFsCisgICAgICAgIHRv
IGF2b2lkIHRlbXBvcmFyeS9pbnRlcm1lZGlhdGUgU3RyaW5nIGNvbnN0cnVjdGlvbnMuIAorCisg
ICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyk6CisgICAgICAgIFNhbWUgYXMgWzNdLgor
CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpp
ZGVudGlmaWVyVG9KU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6aWRlbnRpZmllclRvU2FmZVB1Ymxp
Y0pTVmFsdWUpOgorICAgICAgICBTYW1lIGFzIFsxXS4KKworICAgICAgICAqIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpm
b3JtYXRUb1BhcnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpm
b3JtYXRSYW5nZVRvUGFydHMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZS5jcHA6Cisg
ICAgICAgIChKU0M6OkludGxMb2NhbGU6OnRleHRJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRSYW5nZVRvUGFydHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6
OmZvcm1hdFRvUGFydHNJbnRlcm5hbCk6CisgICAgICAgIFNhbWUgYXMgWzJdLgorCisgICAgICAg
ICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAgICAgIFNhbWUg
YXMgWzNdLgorCisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICBTYW1lIGFzIFsyXS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIu
Y3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6cmVxdWVzdEltcG9ydE1vZHVsZSk6
CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIFNhbWUg
YXMgWzFdLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpq
c1N0cmluZyk6CisgICAgICAgIEFkZCBhIGpzU3RyaW5nKCkgb3ZlcmxvYWQgdGhhdCB0YWtlcyBp
biBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0cmluZy4KKyAgICAgICAgVGhpcyBhdm9pZHMg
Y29uc3RydWN0aW9uIG9mIGEgU3RyaW5nIGZvciBjYWxsIHNpdGVzIGhhdmluZyBhIFN0cmluZ1Zp
ZXcKKyAgICAgICAgaW4gdGhlIGV2ZW50IHdoZXJlIHRoZSB2aWV3J3MgbGVuZ3RoIGlzIDw9IDEu
CisKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgU2FtZSBhcyBbMV0uCisKKwog
MjAyMi0wNC0wNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBD
YWxsIFN0cnVjdHVyZTo6Z2V0IGluc3RlYWQgb2YgU3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkg
b24gdGhlIG11dGF0b3IgdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU1YmZiZDU1ZjIyNjBkZDFlNDI2NThkMWZkZmY2
NjQ3MTk2Y2RhMmMuLjUyOWYyMDExNTI3ZGU3ZjI5MDM3NGVmOTJmZjhkZDgzZGRkYjYyOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBSZWR1Y2UgbnVtYmVyIG9mIFN0cmluZ1ZpZXcgdG8gU3RyaW5nIGNv
bnZlcnNpb25zIGluIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUHJvdmlkZSBhIHJldmVyc2VGaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVkKSBvdmVy
bG9hZCBvbiBTdHJpbmdWaWV3LCBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgd2l0aCBTdHJpbmcg
YW5kIHRvIGZhY2lsaXRhdGUgdGhlIGNvbnZlcnRpbmcgb2YgY29kZSBmcm9tIFN0cmluZyB0byBT
dHJpbmdWaWV3LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29tbW9uLmg6CisgICAgICAg
IChXVEY6OnJldmVyc2VGaW5kSW5uZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwOgorICAgICAgICAoV1RGOjpyZXZlcnNlRmluZElubmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6cmV2
ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKwogMjAy
Mi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0YXJ0
IHJlcGxhY2luZyBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIHdpdGggYSBTdHJpbmc6
OmZyb21MYXRpbjEoY29uc3QgY2hhciopIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCmluZGV4IDkwZjU5ODFhNjQ2N2RiNTg2ZDlmZmIwYmZm
Njg0ZDVhMjZhM2VlMjQuLmFkZTcxY2Q4ZmFiODQyMDllMzMwZmQzNDA2Y2FhODZiYmFiZWIzMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIEpTVmFsdWUgTGF6eUpTVmFsdWU6OmdldFZhbHVlKFZNJiB2bSkgY29uc3QK
ICAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0cmluZzoKICAgICAgICAgcmV0dXJuIGpzU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKHZtLCB1LmNoYXJhY3Rlcik7CiAgICAgY2FzZSBLbm93blN0cmluZ0lt
cGw6Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyh2bSwgdS5zdHJpbmdJbXBsKTsKKyAgICAgICAg
cmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcgeyB1LnN0cmluZ0ltcGwgfSk7CiAgICAgY2FzZSBO
ZXdTdHJpbmdJbXBsOgogICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIEF0b21TdHJpbmdJbXBs
OjphZGQodS5zdHJpbmdJbXBsKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA5NDRm
MDI2YzEyNzg3YzEyNjdiM2JmNzMxMDRmMWVlODI4NWRkMjEwLi4wZTI0MTZhNDViYzAzYWFlMmY2
NThhZTk0YzBjMThiNDRjNzY0ZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTA5Niw3ICsx
MDk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIGNvbnN0
IGNoYXIqIGNhY2hlUGF0aCA9IE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKTsKICAgICAgICAgU3Ry
aW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoRmlsZVN5c3RlbTo6
bGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChzb3VyY2VPcmlnaW4oKS51
cmwoKS5maWxlU3lzdGVtUGF0aCgpKSk7Ci0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBtYWtlU3RyaW5nKHNvdXJjZSgpLnRvU3Ry
aW5nKCkuaGFzaCgpLCAnLScsIGZpbGVuYW1lLCAiLmJ5dGVjb2RlLWNhY2hlIikpOworICAgICAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwg
bWFrZVN0cmluZyhTdHJpbmdWaWV3SGFzaFRyYW5zbGF0b3I6Omhhc2goc291cmNlKCkpLCAnLScs
IGZpbGVuYW1lLCAiLmJ5dGVjb2RlLWNhY2hlIikpOwogICAgIH0KIAogICAgIHZvaWQgbG9hZEJ5
dGVjb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlck9TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyT1NSRXhpdC5jcHAKaW5kZXggZGNjNzM0NDVjMGM0MTExYWM4NWUzOTUwNzRjMTcwZTg0
Yjc4N2NiZi4uNzUxNTAyYjkwYzdkNTJhYjQ1NjQzOWY5OTk4NmVjOTU5NmEzODg0NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgSlNWYWx1ZSBPU1JFeGl0Ojp0b0pTKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmlkLCBqc051bWJlcihtX2lkKSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm9yaWdpbiwgbV9vcmlnaW4udG9KUyhnbG9iYWxPYmplY3QpKTsK
LSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXhpdEtpbmQsIGpz
U3RyaW5nKHZtLCBleGl0S2luZFRvU3RyaW5nKG1fZXhpdEtpbmQpKSk7CisgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmV4aXRLaW5kLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIGV4aXRLaW5kVG9TdHJpbmcobV9leGl0S2luZCkpKTsKICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNXYXRjaHBvaW50LCBqc0Jvb2xlYW4obV9pc1dh
dGNocG9pbnQpKTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y291bnQsIGpzTnVtYmVyKG1fY291bnRlcikpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggOWNi
MDcwMDE0NzE5YmJhNGJkYjk0YmNiYTllNWVhYjliZmNjMGQ2YS4uMGQ3NjEwN2E5ODcxYTQ2NzQz
MmI3NTQ2ZWY3MGU5M2I2NGNiMTVjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIGlubGluZSBKU1Zh
bHVlIGZhc3RKb2luKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBTdHJpCiAgICAgICAgICAgICBpZiAobGVuZ3RoIDw9IDEpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAotICAgICAgICAgICAgSlNTdHJpbmcqIG9wZXJhbmQgPSBqc1N0
cmluZyh2bSwgc2VwYXJhdG9yLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgSlNTdHJpbmcqIG9w
ZXJhbmQgPSBqc1N0cmluZyh2bSwgc2VwYXJhdG9yKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCA9IGxlbmd0
aCAtIDE7CiAgICAgICAgICAgICBmb3IgKDs7KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IDM1MmI3ZDI5ODNjM2E5NWUwYWRkNjE2
MjhiMzIwNGQxODBlMzZkNjMuLjJhZDU3Y2M1YmJlOGUzYzRjMGVkYTUxNGM5MjhlMmRmMjhmYWI1
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2Uu
Y3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgYXBwZW5kU291cmNlVG9FcnJvck1l
c3NhZ2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4CiAgICAgICAgIHJl
dHVybiBtZXNzYWdlOwogICAgIAogICAgIGlmIChleHByZXNzaW9uU3RhcnQgPCBleHByZXNzaW9u
U3RvcCkKLSAgICAgICAgcmV0dXJuIGFwcGVuZGVyKG1lc3NhZ2UsIGNvZGVCbG9jay0+c291cmNl
KCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uU3RvcCku
dG9TdHJpbmcoKSwgdHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRFeGFjdFNvdXJjZSk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVy
KCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvblN0b3ApLCB0eXBlLCBFcnJv
ckluc3RhbmNlOjpGb3VuZEV4YWN0U291cmNlKTsKIAogICAgIC8vIE5vIHJhbmdlIGluZm9ybWF0
aW9uLCBzbyBnaXZlIGEgZmV3IGNoYXJhY3RlcnMgb2YgY29udGV4dC4KICAgICBpbnQgZGF0YUxl
bmd0aCA9IHNvdXJjZVN0cmluZy5sZW5ndGgoKTsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMg
U3RyaW5nIGFwcGVuZFNvdXJjZVRvRXJyb3JNZXNzYWdlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBF
cnJvckluc3RhbmNlKiBleAogICAgICAgICBzdG9wKys7CiAgICAgd2hpbGUgKHN0b3AgPiBleHBy
ZXNzaW9uU3RhcnQgJiYgaXNTdHJXaGl0ZVNwYWNlKHNvdXJjZVN0cmluZ1tzdG9wIC0gMV0pKQog
ICAgICAgICBzdG9wLS07Ci0gICAgcmV0dXJuIGFwcGVuZGVyKG1lc3NhZ2UsIGNvZGVCbG9jay0+
c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2Uoc3RhcnQsIHN0b3ApLnRvU3RyaW5nKCksIHR5
cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kQXBwcm94aW1hdGVTb3VyY2UpOworICAgIHJldHVybiBh
cHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdl
KHN0YXJ0LCBzdG9wKSwgdHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJj
ZSk7CiB9CiAKIHZvaWQgRXJyb3JJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTVmFsdWUg
Y2F1c2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyLCBSdW50aW1lVHlwZSB0eXBlLCBib29sIHVz
ZUN1cnJlbnRGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5z
dGFuY2UuaAppbmRleCBlNzllY2I4MTQzZGZiY2ZlYzg2MGFkNGYxMzY3ZjQ5YTExNjc1NTUxLi4y
ODgwN2I0ZWEzM2VjYjU5ZDBkOGM3OWM4NzljODk5NGIyZjg2Zjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBlbnVtIFNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgeyBG
b3VuZEV4YWN0U291cmNlLCBGb3VuZEFwcHJveGltYXRlU291cmNlIH07Ci0gICAgdHlwZWRlZiBT
dHJpbmcgKCpTb3VyY2VBcHBlbmRlcikgKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlLCBTb3VyY2VUZXh0V2hlcmVFcnJv
ck9jY3VycmVkKTsKKyAgICB0eXBlZGVmIFN0cmluZyAoKlNvdXJjZUFwcGVuZGVyKSAoY29uc3Qg
U3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCwgUnVudGltZVR5
cGUsIFNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQpOwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAppbmRleCA4Y2QwZDVlOWM0NGYxMDgzODkyMjkwN2FjZTNhMDRmZjY0ZjJmMDZk
Li5kYzE2MDk3OWY5ZDg3MzY1OWZiZjljODBkYjYzMzA2YWZkNWU5NDkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtODEs
MTIgKzgxLDEyIEBAIHN0YXRpYyBTdHJpbmdWaWV3IGNsYW1wRXJyb3JNZXNzYWdlKGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxNZXNzYWdlKQogICAgIHJldHVybiBTdHJpbmdWaWV3KG9yaWdpbmFsTWVz
c2FnZSkuc3Vic3RyaW5nKDAsIG1heExlbmd0aCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZGVmYXVs
dEFwcHJveGltYXRlU291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc291cmNlVGV4dCkKK3N0YXRpYyBTdHJpbmcgZGVmYXVsdEFwcHJveGltYXRl
U291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291
cmNlVGV4dCkKIHsKICAgICByZXR1cm4gbWFrZVN0cmluZyhjbGFtcEVycm9yTWVzc2FnZShvcmln
aW5hbE1lc3NhZ2UpLCAiIChuZWFyICcuLi4iLCBzb3VyY2VUZXh0LCAiLi4uJykiKTsKIH0KIAot
U3RyaW5nIGRlZmF1bHRTb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6
U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQorU3RyaW5nIGRlZmF1bHRT
b3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgU3RyaW5nVmlldyBz
b3VyY2VUZXh0LCBSdW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJy
b3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewogICAgIGlmIChvY2N1cnJlbmNlID09IEVycm9ySW5z
dGFuY2U6OkZvdW5kQXBwcm94aW1hdGVTb3VyY2UpCiAgICAgICAgIHJldHVybiBkZWZhdWx0QXBw
cm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5hbE1lc3NhZ2UsIHNvdXJjZVRleHQpOwpAQCAtOTUs
NyArOTUsNyBAQCBTdHJpbmcgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZQogICAgIHJldHVybiBtYWtlU3RyaW5n
KGNsYW1wRXJyb3JNZXNzYWdlKG9yaWdpbmFsTWVzc2FnZSksICIgKGV2YWx1YXRpbmcgJyIsIHNv
dXJjZVRleHQsICInKSIpOwogfQogCi1zdGF0aWMgU3RyaW5nIGZ1bmN0aW9uQ2FsbEJhc2UoY29u
c3QgU3RyaW5nJiBzb3VyY2VUZXh0KQorc3RhdGljIFN0cmluZ1ZpZXcgZnVuY3Rpb25DYWxsQmFz
ZShTdHJpbmdWaWV3IHNvdXJjZVRleHQpCiB7IAogICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0cmll
dmVzIHRoZSAnZm9vLmJhcicgc3Vic3RyaW5nIGZyb20gJ2Zvby5iYXIoYmF6KScuCiAgICAgLy8g
RklYTUU6IFRoaXMgZnVuY3Rpb24gaGFzIHNpbXBsZSBwcm9jZXNzaW5nIG9mIC8qICovIHN0eWxl
IGNvbW1lbnRzLgpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyBTdHJpbmcgZnVuY3Rpb25DYWxs
QmFzZShjb25zdCBTdHJpbmcmIHNvdXJjZVRleHQpCiAgICAgcmV0dXJuIHNvdXJjZVRleHQubGVm
dChpZHggKyAxKTsKIH0KIAotc3RhdGljIFN0cmluZyBub3RBRnVuY3Rpb25Tb3VyY2VBcHBlbmRl
cihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0
LCBSdW50aW1lVHlwZSB0eXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9j
Y3VycmVkIG9jY3VycmVuY2UpCitzdGF0aWMgU3RyaW5nIG5vdEFGdW5jdGlvblNvdXJjZUFwcGVu
ZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRleHQs
IFJ1bnRpbWVUeXBlIHR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2Nj
dXJyZWQgb2NjdXJyZW5jZSkKIHsKICAgICBBU1NFUlQodHlwZSAhPSBUeXBlRnVuY3Rpb24pOwog
CkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIFN0cmluZyBub3RBRnVuY3Rpb25Tb3VyY2VBcHBl
bmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3QKICAgICBlbHNlCiAg
ICAgICAgIGRpc3BsYXlWYWx1ZSA9IFN0cmluZ1ZpZXcob3JpZ2luYWxNZXNzYWdlLmNoYXJhY3Rl
cnMxNigpLCBub3RBRnVuY3Rpb25JbmRleCAtIDEpOwogCi0gICAgU3RyaW5nIGJhc2UgPSBmdW5j
dGlvbkNhbGxCYXNlKHNvdXJjZVRleHQpOworICAgIFN0cmluZ1ZpZXcgYmFzZSA9IGZ1bmN0aW9u
Q2FsbEJhc2Uoc291cmNlVGV4dCk7CiAgICAgaWYgKCFiYXNlKQogICAgICAgICByZXR1cm4gZGVm
YXVsdEFwcHJveGltYXRlU291cmNlRXJyb3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoU3RyaW5nQnVpbGRlcjo6T3ZlcmZsb3dIYW5kbGVy
OjpSZWNvcmRPdmVyZmxvdyk7CkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIFN0cmluZyBub3RB
RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29u
c3QgU3QKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1zdGF0aWMgU3RyaW5n
IGludmFsaWRQYXJhbWV0ZXJJblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxN
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlIHR5cGUsIEVycm9y
SW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKK3N0YXRp
YyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlckluU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBv
cmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCwgUnVudGltZVR5cGUgdHlwZSwg
RXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQog
ewogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSAhPSBUeXBlT2JqZWN0KTsKIApAQCAtMjA4
LDExICsyMDgsMTEgQEAgc3RhdGljIFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBl
bmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY28KICAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcob3JpZ2luYWxNZXNzYWdlLCAiIChldmFsdWF0aW5nICciLCBzb3VyY2VUZXh0LCAi
JykiKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW5MZW5ndGggPSAyOwotICAg
IFN0cmluZyByaWdodEhhbmRTaWRlID0gc291cmNlVGV4dC5zdWJzdHJpbmcoaW5JbmRleCArIGlu
TGVuZ3RoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAgICBTdHJpbmcgcmlnaHRIYW5kU2lkZSA9
IHNvdXJjZVRleHQuc3Vic3RyaW5nKGluSW5kZXggKyBpbkxlbmd0aCkudG9TdHJpbmdXaXRob3V0
Q29weWluZygpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogICAgIHJldHVybiBtYWtlU3RyaW5nKHJp
Z2h0SGFuZFNpZGUsICIgaXMgbm90IGFuIE9iamVjdC4gKGV2YWx1YXRpbmcgJyIsIHNvdXJjZVRl
eHQsICInKSIpOwogfQogCi1pbmxpbmUgU3RyaW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9m
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSwgRXJyb3JJ
bnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQoraW5saW5l
IFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0
cmluZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcg
c291cmNlVGV4dCwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVy
cm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKIHsKICAgICBpZiAob2NjdXJyZW5jZSA9PSBFcnJvcklu
c3RhbmNlOjpGb3VuZEFwcHJveGltYXRlU291cmNlKQogICAgICAgICByZXR1cm4gZGVmYXVsdEFw
cHJveGltYXRlU291cmNlRXJyb3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKQEAgLTIy
NywyMSArMjI3LDIxIEBAIGlubGluZSBTdHJpbmcgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZT
b3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvCiAgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKG9yaWdpbmFsTWVzc2FnZSwgIiAoZXZhbHVhdGluZyAnIiwgc291cmNlVGV4dCwg
IicpIik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluc3RhbmNlb2ZMZW5ndGgg
PSAxMDsKLSAgICBTdHJpbmcgcmlnaHRIYW5kU2lkZSA9IHNvdXJjZVRleHQuc3Vic3RyaW5nKGlu
c3RhbmNlb2ZJbmRleCArIGluc3RhbmNlb2ZMZW5ndGgpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwor
ICAgIFN0cmluZyByaWdodEhhbmRTaWRlID0gc291cmNlVGV4dC5zdWJzdHJpbmcoaW5zdGFuY2Vv
ZkluZGV4ICsgaW5zdGFuY2VvZkxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpLnNpbXBs
aWZ5V2hpdGVTcGFjZSgpOwogICAgIHJldHVybiBtYWtlU3RyaW5nKHJpZ2h0SGFuZFNpZGUsIGNv
bnRlbnQsICIuIChldmFsdWF0aW5nICciLCBzb3VyY2VUZXh0LCAiJykiKTsKIH0KIAotc3RhdGlj
IFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5k
ZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4
dCwgUnVudGltZVR5cGUgcnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVy
ZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKK3N0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRl
ckluc3RhbmNlb2ZOb3RGdW5jdGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBl
LCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2Up
CiB7CiAgICAgcmV0dXJuIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIo
IiBpcyBub3QgYSBmdW5jdGlvbiJfcywgb3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0LCBydW50
aW1lVHlwZSwgb2NjdXJyZW5jZSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRl
ckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25z
dCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50
aW1lVHlwZSBydW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JP
Y2N1cnJlZCBvY2N1cnJlbmNlKQorc3RhdGljIFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5zdGFu
Y2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlIHJ1
bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9j
Y3VycmVuY2UpCiB7CiAgICAgcmV0dXJuIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNl
QXBwZW5kZXIoIltTeW1ib2wuaGFzSW5zdGFuY2VdIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmlu
ZWQsIG9yIG51bGwiX3MsIG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCwgcnVudGltZVR5cGUs
IG9jY3VycmVuY2UpOwogfQogCi1zdGF0aWMgU3RyaW5nIGludmFsaWRQcm90b3R5cGVTb3VyY2VB
cHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VUZXh0LCBSdW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JP
Y2N1cnJlZCBvY2N1cnJlbmNlKQorc3RhdGljIFN0cmluZyBpbnZhbGlkUHJvdG90eXBlU291cmNl
QXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNl
VGV4dCwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2Nj
dXJyZWQgb2NjdXJyZW5jZSkKIHsKICAgICBpZiAob2NjdXJyZW5jZSA9PSBFcnJvckluc3RhbmNl
OjpGb3VuZEFwcHJveGltYXRlU291cmNlKQogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGlt
YXRlU291cmNlRXJyb3Iob3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCBhMzE1MWI1
YjBkMDM5OGU4ZmZlMjhmZTQ1OTBiZTJiZjAyZGRiMGEwLi5iNjRmYTU4OGI5OWMxOWZiNmJmMTdh
YTk1ZGZhZTUwZjJkYWEzOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiB0eXBlZGVmIEpTT2JqZWN0KiAoKkVycm9yRmFjdG9yeSkoSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlcik7CiAKLVN0cmluZyBkZWZh
dWx0U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUnVudGltZVR5
cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQpOworU3RyaW5n
IGRlZmF1bHRTb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmLCBTdHJpbmdWaWV3LCBSdW50aW1l
VHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCk7CiAKIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUsIGNvbnN0IFN0cmluZyYsIEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyKTsKIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9i
YWxPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGFjMjA5NWVmZGI2ZTllNmQ4MmZmNDFjZjBhOGZjZDg0
YWMzYjA2OWUuLmFjZWE2MzFlMjgxYzUxMDZhMmRmM2IyYTQ4MmU3ZjY3ZTlhZGM2NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIEpTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRv
U3RyaW5nU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm4g
Y2FjaGVJZk5vRXhjZXB0aW9uKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCAi
ZnVuY3Rpb24gIiwgbmFtZSgpLnN0cmluZygpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0i
KSk7CiAKICAgICBpZiAoaXNDbGFzcygpKQotICAgICAgICByZXR1cm4gY2FjaGUoanNTdHJpbmco
dm0sIGNsYXNzU291cmNlKCkudmlldygpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIGNh
Y2hlKGpzU3RyaW5nKHZtLCBjbGFzc1NvdXJjZSgpLnZpZXcoKSkpOwogCiAgICAgQVNDSUlMaXRl
cmFsIGZ1bmN0aW9uSGVhZGVyID0gIiJfczsKICAgICBzd2l0Y2ggKHBhcnNlTW9kZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaApp
bmRleCBiMTQzYmNjMzBhZThmOWQ5NWFjYWZkZmUyYWYzZDk0YzdhNDI2NDkxLi4yOTUyYTg3MWRl
MGZiOWI0MjFiYjBkMTExNzIxOTM2MGRmMWZiOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTEyOSwxNCArMTI5LDE0IEBA
IGlubGluZSBKU1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFsdWUoVk0mIHZtLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQogewogICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sKCkpCiAgICAg
ICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCpp
ZGVudGlmaWVyLmltcGwoKSkpOwotICAgIHJldHVybiBqc1N0cmluZyh2bSwgaWRlbnRpZmllci5p
bXBsKCkpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nIHsgaWRlbnRpZmllci5pbXBs
KCkgfSk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIGlkZW50aWZpZXJUb1NhZmVQdWJsaWNKU1ZhbHVl
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgCiB7CiAgICAgaWYgKGlkZW50
aWZpZXIuaXNTeW1ib2woKSAmJiAhaWRlbnRpZmllci5pc1ByaXZhdGVOYW1lKCkpCiAgICAgICAg
IHJldHVybiBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVu
dGlmaWVyLmltcGwoKSkpOwotICAgIHJldHVybiBqc1N0cmluZyh2bSwgaWRlbnRpZmllci5pbXBs
KCkpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nIHsgaWRlbnRpZmllci5pbXBsKCkg
fSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMDE5NDE0NTNlZTk4OWEw
NjQ1ODc1OTIyMDJhMzZjOWFkZmMwMjc2MS4uMmIyN2M4ODIwZmJjOTIyYjkzNTRlNmUwNzBkZjIz
OTQyODBlMTU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBKU1ZhbHVlIEludGxE
YXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdgogICAgICAgICBwcmV2aW91c0VuZEluZGV4ID0gZW5kSW5kZXg7CiAKICAgICAg
ICAgaWYgKGZpZWxkVHlwZSA+PSAwKSB7Ci0gICAgICAgICAgICBhdXRvIHR5cGUgPSBqc1N0cmlu
Zyh2bSwgcGFydFR5cGVTdHJpbmcoVURhdGVGb3JtYXRGaWVsZChmaWVsZFR5cGUpKSk7CisgICAg
ICAgICAgICBhdXRvIHR5cGUgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5n
KFVEYXRlRm9ybWF0RmllbGQoZmllbGRUeXBlKSkpOwogICAgICAgICAgICAgYXV0byB2YWx1ZSA9
IGpzU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcuc3Vic3RyaW5nKGJlZ2luSW5kZXgsIGVuZEluZGV4
IC0gYmVnaW5JbmRleCkpOwogICAgICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB0eXBlKTsKQEAgLTE4MTEsNyArMTgxMSw3IEBAIEpT
VmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRSYW5nZVRvUGFydHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91CiAKICAgICAgICAgQVNTRVJUKGNhdGVnb3J5ID09IFVGSUVM
RF9DQVRFR09SWV9EQVRFKTsKIAotICAgICAgICBhdXRvIHR5cGUgPSBqc1N0cmluZyh2bSwgcGFy
dFR5cGVTdHJpbmcoVURhdGVGb3JtYXRGaWVsZChmaWVsZFR5cGUpKSk7CisgICAgICAgIGF1dG8g
dHlwZSA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVURhdGVGb3JtYXRG
aWVsZChmaWVsZFR5cGUpKSk7CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY3JlYXRlUGFydCh0
eXBlLCBiZWdpbkluZGV4LCBlbmRJbmRleCAtIGJlZ2luSW5kZXgpOwogICAgICAgICBwYXJ0cy0+
cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bExvY2FsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNw
cAppbmRleCA3ZjcyNDFjY2UxNjU2YThjZDc5Y2UxMTE2ZjY3YTEzOWZlMzgyNjkzLi4zZmMzNGQ0
MjYxZWU1NzNmOWUzNWQ2NWRjMGFiNTUwMTgxYTRlMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcApAQCAtNzQzLDE2ICs3NDMsMTYgQEAgSlNPYmpl
Y3QqIEludGxMb2NhbGU6OnRleHRJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgc3dpdGNoIChsYXlvdXQpIHsKICAgICBkZWZhdWx0OgogICAgIGNhc2UgVUxPQ19MQVlPVVRf
TFRSOgotICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgImx0ciJfcyk7CisgICAg
ICAgIGxheW91dFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImx0ciJfcyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgVUxPQ19MQVlPVVRfUlRMOgotICAgICAgICBsYXlvdXRTdHJp
bmcgPSBqc1N0cmluZyh2bSwgInJ0bCJfcyk7CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgInJ0bCJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVUxP
Q19MQVlPVVRfVFRCOgotICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgInR0YiJf
cyk7CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInR0YiJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVUxPQ19MQVlPVVRfQlRUOgotICAgICAgICBs
YXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgImJ0dCJfcyk7CisgICAgICAgIGxheW91dFN0cmlu
ZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImJ0dCJfcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmNwcAppbmRleCA1M2UyZDgxNDcwZGM4NGMzZTU0Yjg0MTllZWQ3ZjBkZmI4MWM4MTI3Li44
M2U3ZGFjNmZiYmI1ZjhiNGY3MzczYTEzYWZmYWQ1NzVjZDNkOTE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMTEzNyw3
ICsxMTM3LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZVRvUGFydHNJbnRl
cm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgc2lnbiA9IGVu
ZC5zaWduKCk7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZC5tX2Zp
ZWxkOwotICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZCA/
IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1h
dEZpZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwgc2lnbiwgbnVtYmVyVHlwZSkpOworICAgICAgICBh
dXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZCA/IGxpdGVyYWxTdHJpbmcg
OiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVs
ZHMoZmllbGRUeXBlKSwgc3R5bGUsIHNpZ24sIG51bWJlclR5cGUpKTsKICAgICAgICAgSlNPYmpl
Y3QqIHBhcnQgPSBjcmVhdGVQYXJ0KHBhcnRUeXBlLCBmaWVsZC5tX3JhbmdlLmJlZ2luKCksIGZp
ZWxkLm1fcmFuZ2UuZGlzdGFuY2UoKSk7CiAgICAgICAgIHBhcnRzLT5wdXNoKGdsb2JhbE9iamVj
dCwgcGFydCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CkBA
IC0xNTA3LDcgKzE1MDcsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJ
bnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHlsZQogCiAgICAgZm9yIChh
dXRvJiBmaWVsZCA6IGZsYXR0ZW4pIHsKICAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZC5t
X2ZpZWxkOwotICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVs
ZCA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZv
cm1hdEZpZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwgc2lnbiwgbnVtYmVyVHlwZSkpOworICAgICAg
ICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZCA/IGxpdGVyYWxTdHJp
bmcgOiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRG
aWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHNpZ24sIG51bWJlclR5cGUpKTsKICAgICAgICAgYXV0
byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2bSwgZm9ybWF0dGVkLCBmaWVsZC5tX3JhbmdlLmJl
Z2luKCksIGZpZWxkLm1fcmFuZ2UuZGlzdGFuY2UoKSk7CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcGFydC0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBwYXJ0VHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
Y3BwCmluZGV4IDY5NTU2YmQzNTY0Y2ExZWFkN2YzOGJkYWY3ZjUxMGZkOTEwM2M2YzguLmQ4ZDRl
YTg0Mjk3NDc2MGMwMjdiYTVhYzAwYTMwN2Q5ZGNmMjVjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCkBA
IC0zMTgsNyArMzE4LDcgQEAgSlNWYWx1ZSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRU
b1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWIKICAgICAgICAgfQogCiAg
ICAgICAgIEludGxGaWVsZEl0ZXJhdG9yIGZpZWxkSXRlcmF0b3IoKml0ZXJhdG9yLmdldCgpKTsK
LSAgICAgICAgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9i
amVjdCwgSW50bE51bWJlckZvcm1hdDo6U3R5bGU6OkRlY2ltYWwsIHN0ZDo6c2lnbmJpdChhYnNW
YWx1ZSksIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6bnVtYmVyVHlwZUZyb21Eb3VibGUoYWJzVmFs
dWUpLCBmb3JtYXR0ZWROdW1iZXIsIGZpZWxkSXRlcmF0b3IsIHBhcnRzLCBudWxscHRyLCBqc1N0
cmluZyh2bSwgc2luZ3VsYXJVbml0KHVuaXQpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgSW50bE51bWJl
ckZvcm1hdDo6U3R5bGU6OkRlY2ltYWwsIHN0ZDo6c2lnbmJpdChhYnNWYWx1ZSksIEludGxNYXRo
ZW1hdGljYWxWYWx1ZTo6bnVtYmVyVHlwZUZyb21Eb3VibGUoYWJzVmFsdWUpLCBmb3JtYXR0ZWRO
dW1iZXIsIGZpZWxkSXRlcmF0b3IsIHBhcnRzLCBudWxscHRyLCBqc1N0cmluZyh2bSwgc2luZ3Vs
YXJVbml0KHVuaXQpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IDE5MGJlZjExMmNjNWRiOTEwODExYmNlYjhj
NDA0ZTQyN2MyOTIwYjQuLjlhMDkxZGEzZTk5MmYxMjdlOTBjMDNhMjNiYTdlOGIzMzA4YzljMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBKU0FycmF5QnVmZmVy
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgCi0gICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3lt
Ym9sLCBqc1N0cmluZyh2bSwgYXJyYXlCdWZmZXJTaGFyaW5nTW9kZU5hbWUoc2hhcmluZ01vZGUp
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgYXJyYXlCdWZmZXJT
aGFyaW5nTW9kZU5hbWUoc2hhcmluZ01vZGUpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBpZiAoc2hhcmluZ01vZGUgPT0g
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCkgewogICAgICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zbGljZSwgYXJyYXlC
dWZmZXJQcm90b0Z1bmNTbGljZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDIpOwogICAgICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+Ynl0ZUxlbmd0aCwgYXJyYXlCdWZmZXJQcm90b0dl
dHRlckZ1bmNCeXRlTGVuZ3RoLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGUzZjAzYTRjMDhmODQ2OTNiMTY0NDBmODFhN2Nl
YTdkNjg4ZWRhY2MuLmUxMTQ2MzI2YjYzMWIxNGM2NjY2NzA4ZTAyNDRkN2M1MGU3NjliYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAK
QEAgLTIzMiw3ICsyMzIsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OnJl
cXVlc3RJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEFTU0VSVChj
YWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKHZtLCBt
b2R1bGVLZXkuaW1wbCgpKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyh2bSwgU3Ry
aW5nIHsgbW9kdWxlS2V5LmltcGwoKSB9KSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChwYXJhbWV0
ZXJzKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKHNjcmlwdEZldGNoZXIpOwogICAgIEFTU0VSVCgh
YXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CkBAIC0zOTgsNyArMzk4LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKG1vZHVsZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChhdXRvJiBrZXkgOiBtb2R1bGVS
ZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKSkgewotICAgICAgICByZXN1bHQtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgaSsrLCBqc1N0cmluZyh2bSwga2V5LmdldCgpKSk7CisgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpKyssIGpzU3RyaW5nKHZtLCBT
dHJpbmcgeyBrZXkuZ2V0KCkgfSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggNzUw
Yjg3NjI2NmJiMDJiMjJlZjk5ZTMyMTAxY2UxODAxZGU4NjFiYy4uNzZiNDA3YzBhYjY0OWFmNmQ5
NGQ3M2JlMmQ5MzAyZjI1MDJjMGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAogSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoVk0mKTsKIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYs
IGNvbnN0IFN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBz
dHJpbmcKK0pTU3RyaW5nKiBqc1N0cmluZyhWTSYsIFN0cmluZ1ZpZXcpOyAvLyByZXR1cm5zIGVt
cHR5IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKIAogSlNTdHJpbmcqIGpzU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKFZNJiwgVUNoYXIpOwogSlNTdHJpbmcqIGpzU3Vic3RyaW5nKFZNJiwgY29u
c3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtMjUxLDYg
KzI1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2FwVG9BdG9tU3RyaW5nKFZNJiwgUmVmUHRy
PEF0b21TdHJpbmdJbXBsPiYmKSBjb25zdDsKIAogICAgIGZyaWVuZCBKU1N0cmluZyoganNTdHJp
bmcoVk0mLCBjb25zdCBTdHJpbmcmKTsKKyAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKFZN
JiwgU3RyaW5nVmlldyk7CiAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9i
amVjdCosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgSlNTdHJpbmcqKTsKICAgICBmcmll
bmQgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqLCBjb25zdCBT
dHJpbmcmKTsKQEAgLTg3Niw2ICs4NzgsMjAgQEAgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZyhW
TSYgdm0sIGNvbnN0IFN0cmluZyYgcykKICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwg
KnMuaW1wbCgpKTsKIH0KIAoraW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYgdm0sIFN0cmlu
Z1ZpZXcgcykKK3sKKyAgICBpbnQgc2l6ZSA9IHMubGVuZ3RoKCk7CisgICAgaWYgKCFzaXplKQor
ICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCk7CisgICAgaWYgKHNp
emUgPT0gMSkgeworICAgICAgICBVQ2hhciBjID0gcy5jaGFyYWN0ZXJBdCgwKTsKKyAgICAgICAg
aWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIHZt
LnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7CisgICAgfQorICAgIGF1dG8g
aW1wbCA9IHMuaXM4Qml0KCkgPyBTdHJpbmdJbXBsOjpjcmVhdGUocy5jaGFyYWN0ZXJzOCgpLCBz
Lmxlbmd0aCgpKSA6IFN0cmluZ0ltcGw6OmNyZWF0ZShzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0
aCgpKTsKKyAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgV1RGTW92ZShpbXBsKSk7Cit9
CisKIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1N0cmluZyogYmFzZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDI2ZDhmOWY3NGQ3MDQ5NDk2MmMzMDc2NjlhZDdlODk4OTQ4NjIyMWIuLjIyODViM2Zk
ZWE1MzM5ZGEzNGI4ZWMwMDcxNzI5MmIxMGUyN2JhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTEyNSw3ICsxMjUs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgQVNTRVJUKHVpZC5zeW1ib2xSZWdpc3RyeSgpID09
ICZ2bS5zeW1ib2xSZWdpc3RyeSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKHZtLCAmdWlkKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
U3RyaW5nIHsgdWlkIH0pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdDb21tb24uaAppbmRleCBjNzcwZTA0NWQyMGNjZTIzM2JlMDhmMGRiOWJlNmJkODM2OGFl
ZWM5Li5iMGQ2M2RlZjZiZjFkZGViODdmOWFlY2I5NTk3YjRmMzM0NWIyZjU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29tbW9uLmgKQEAgLTQ1OCw2ICs0NTgsMzMgQEAgaW5saW5lIHNpemVfdCBm
aW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1hdGNo
Q2hhcmFjdGUKICAgICByZXR1cm4gZmluZChjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0YXRpY19jYXN0
PExDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1l
IFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KK0FMV0FZ
U19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZlcnNlRmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJh
Y3RlclR5cGUqIHNlYXJjaENoYXJhY3RlcnMsIGNvbnN0IE1hdGNoQ2hhcmFjdGVyVHlwZSogbWF0
Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBt
YXRjaExlbmd0aCkKK3sKKyAgICAvLyBPcHRpbWl6YXRpb246IGtlZXAgYSBydW5uaW5nIGhhc2gg
b2YgdGhlIHN0cmluZ3MsCisgICAgLy8gb25seSBjYWxsIGVxdWFsIGlmIHRoZSBoYXNoZXMgbWF0
Y2guCisKKyAgICAvLyBkZWx0YSBpcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgdGltZXMgdG8g
dGVzdDsgZGVsdGEgPT0gMCBtZWFucyB0ZXN0IG9ubHkgb25jZS4KKyAgICB1bnNpZ25lZCBkZWx0
YSA9IHN0ZDo6bWluKHN0YXJ0LCBsZW5ndGggLSBtYXRjaExlbmd0aCk7CisKKyAgICB1bnNpZ25l
ZCBzZWFyY2hIYXNoID0gMDsKKyAgICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaExlbmd0aDsgKytpKSB7CisgICAgICAgIHNlYXJjaEhh
c2ggKz0gc2VhcmNoQ2hhcmFjdGVyc1tkZWx0YSArIGldOworICAgICAgICBtYXRjaEhhc2ggKz0g
bWF0Y2hDaGFyYWN0ZXJzW2ldOworICAgIH0KKworICAgIC8vIGtlZXAgbG9vcGluZyB1bnRpbCB3
ZSBtYXRjaAorICAgIHdoaWxlIChzZWFyY2hIYXNoICE9IG1hdGNoSGFzaCB8fCAhZXF1YWwoc2Vh
cmNoQ2hhcmFjdGVycyArIGRlbHRhLCBtYXRjaENoYXJhY3RlcnMsIG1hdGNoTGVuZ3RoKSkgewor
ICAgICAgICBpZiAoIWRlbHRhKQorICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworICAgICAg
ICAtLWRlbHRhOworICAgICAgICBzZWFyY2hIYXNoIC09IHNlYXJjaENoYXJhY3RlcnNbZGVsdGEg
KyBtYXRjaExlbmd0aF07CisgICAgICAgIHNlYXJjaEhhc2ggKz0gc2VhcmNoQ2hhcmFjdGVyc1tk
ZWx0YV07CisgICAgfQorICAgIHJldHVybiBkZWx0YTsKK30KKwogLy8gVGhpcyBpcyBtYXJrZWQg
aW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQgaW4gbm9uLWlubGluZSBmdW5jdGlvbnMgZm9y
IGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVzZWQgZGlyZWN0bHkgaW4gY29kZSBpdCdzIHBy
b2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUgdGhlIGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4K
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0
IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2lnbmVkIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwCmluZGV4IGM3OTI1MTc5M2I3ZGEyNjM5NWMwOTZlNGUyMTNjMzhlNGMyZmE3
MjguLjU4Yjg1NDU2Zjg2YzVjYTg0ZWUzZTk1ZWE0YjIzYjRiNDMxNDQ1YzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtOTgzLDMzICs5ODMsNiBAQCBzaXplX3QgU3RyaW5nSW1w
bDo6cmV2ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCkKICAgICByZXR1
cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGNoYXJhY3Rlciwg
c3RhcnQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU2VhcmNoQ2hhcmFjdGVyVHlwZSwgdHlw
ZW5hbWUgTWF0Y2hDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzdGF0aWMgc2l6ZV90IHJl
dmVyc2VGaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSogc2VhcmNoQ2hhcmFjdGVy
cywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQotewotICAgIC8vIE9w
dGltaXphdGlvbjoga2VlcCBhIHJ1bm5pbmcgaGFzaCBvZiB0aGUgc3RyaW5ncywKLSAgICAvLyBv
bmx5IGNhbGwgZXF1YWwgaWYgdGhlIGhhc2hlcyBtYXRjaC4KLQotICAgIC8vIGRlbHRhIGlzIHRo
ZSBudW1iZXIgb2YgYWRkaXRpb25hbCB0aW1lcyB0byB0ZXN0OyBkZWx0YSA9PSAwIG1lYW5zIHRl
c3Qgb25seSBvbmNlLgotICAgIHVuc2lnbmVkIGRlbHRhID0gc3RkOjptaW4oc3RhcnQsIGxlbmd0
aCAtIG1hdGNoTGVuZ3RoKTsKLSAgICAKLSAgICB1bnNpZ25lZCBzZWFyY2hIYXNoID0gMDsKLSAg
ICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
YXRjaExlbmd0aDsgKytpKSB7Ci0gICAgICAgIHNlYXJjaEhhc2ggKz0gc2VhcmNoQ2hhcmFjdGVy
c1tkZWx0YSArIGldOwotICAgICAgICBtYXRjaEhhc2ggKz0gbWF0Y2hDaGFyYWN0ZXJzW2ldOwot
ICAgIH0KLQotICAgIC8vIGtlZXAgbG9vcGluZyB1bnRpbCB3ZSBtYXRjaAotICAgIHdoaWxlIChz
ZWFyY2hIYXNoICE9IG1hdGNoSGFzaCB8fCAhZXF1YWwoc2VhcmNoQ2hhcmFjdGVycyArIGRlbHRh
LCBtYXRjaENoYXJhY3RlcnMsIG1hdGNoTGVuZ3RoKSkgewotICAgICAgICBpZiAoIWRlbHRhKQot
ICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAgICAtLWRlbHRhOwotICAgICAgICBz
ZWFyY2hIYXNoIC09IHNlYXJjaENoYXJhY3RlcnNbZGVsdGEgKyBtYXRjaExlbmd0aF07Ci0gICAg
ICAgIHNlYXJjaEhhc2ggKz0gc2VhcmNoQ2hhcmFjdGVyc1tkZWx0YV07Ci0gICAgfQotICAgIHJl
dHVybiBkZWx0YTsKLX0KLQogc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0cmluZ1Zp
ZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KQogewogICAgIC8vIENoZWNrIGZvciBudWxs
IG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmNwcAppbmRleCBmYThhYjRlNjEzYzQ2Y2VmZTE3Zjc3MWU0OTRkOWUxZTdhOWUzMjEzLi5hZjk2
YjkyZWQwNTkxZGMxZjNiZDU5YWY5NmI0NDBhOWI4Njg0NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHAKQEAgLTM1OSw2ICszNTksMzEgQEAgU3RyaW5nVmlldyBTdHJpbmdWaWV3Ojpz
dHJpcFdoaXRlU3BhY2UoKSBjb25zdAogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z01hdGNoZWRDaGFyYWN0ZXJzKGlzQVNDSUlTcGFjZTxVQ2hhcj4pOwogfQogCitzaXplX3QgU3Ry
aW5nVmlldzo6cmV2ZXJzZUZpbmQoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3Rh
cnQpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7
CisKKyAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IG1hdGNoU3RyaW5nLmxlbmd0aCgpOworICAg
IHVuc2lnbmVkIG91ckxlbmd0aCA9IGxlbmd0aCgpOworICAgIGlmICghbWF0Y2hMZW5ndGgpCisg
ICAgICAgIHJldHVybiBzdGQ6Om1pbihzdGFydCwgb3VyTGVuZ3RoKTsKKworICAgIC8vIENoZWNr
IHN0YXJ0ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgorICAgIGlmIChtYXRjaExlbmd0aCA+
IG91ckxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5vdEZvdW5kOworCisgICAgaWYgKGlzOEJpdCgp
KSB7CisgICAgICAgIGlmIChtYXRjaFN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVy
biByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4
KCksIHN0YXJ0LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHJldmVy
c2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0
YXJ0LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKKyAgICB9CisKKyAgICBpZiAobWF0Y2hTdHJp
bmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMx
NigpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgb3VyTGVuZ3RoLCBtYXRjaExl
bmd0aCk7CisgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNo
U3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7Cit9
CisKIGludCBjb2RlUG9pbnRDb21wYXJlKFN0cmluZ1ZpZXcgbGhzLCBTdHJpbmdWaWV3IHJocykK
IHsKICAgICBib29sIGxoc0lzOEJpdCA9IGxocy5pczhCaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKaW5kZXggZGZmNGNlNThiNDQ3ZDZjMTdjZGFjYTEzOWY5ZWNiNjg1NWRiNzZhNS4uOWMw
ZTBhYjFkYjA1YTBkYzNkNjdlMjM0ZjQwYmVkMjNjNDBiN2U4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAK
ICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggZGI1YWE4ZTQwZDNkYmY2YWJi
Yzc0ZmZhMGFjYzA4YjJkZDJiNTZmNS4uZmE2YzE2Y2EyOGE1OWVjM2Y0MGVlMDkwMTE2OTRmYzky
ZmMwMDYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBD
VGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBD
VGVzdGluZ0FQSS5jcHAKQEAgLTIwNjUsMTMgKzIwNjUsMTMgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6
cHJvY2Vzc1RhcmdldHMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIEoKICAgICBKU0M6OkpTT2JqZWN0KiBwcm9jZXNzVGFyZ2V0c09iamVjdCA9IEpTQzo6Y29u
c3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKICAgICBpbnQg
aW5kZXggPSAwOwotICAgIHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNTdHJpbmcodm0sIHByb2Nlc3NUYXJnZXROYW1lVUkp
KTsKKyAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LCBpbmRleCsrLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVV
SSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpKTsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgcHJvY2Vzc1RhcmdldHNP
YmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlNDOjpqc1N0cmlu
Zyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVHUFUpKTsKKyAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+
cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzTm9udHJpdmlhbFN0
cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVHUFUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAjZW5kaWYKLSAgICBwcm9j
ZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBK
U0M6OmpzU3RyaW5nKHZtLCBwcm9jZXNzVGFyZ2V0TmFtZU5ldHdvcmtpbmcpKTsKKyAgICBwcm9j
ZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBK
U0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVOZXR3b3JraW5nKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCkpOwogICAgIHJldHVybiB0b1JlZih2bSwgcHJvY2Vzc1RhcmdldHNPYmplY3QpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456968</attachid>
            <date>2022-04-07 14:26:14 -0700</date>
            <delta_ts>2022-04-07 19:48:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238911-20220407142613.patch</filename>
            <type>text/plain</type>
            <size>39359</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MWMyZTQ4MDk4NDljN2NmNTIyNTM0YjI1ZmI3YjIxMzdhMWFjMmQ3Li41YzNmYzJhMzE4MmJkMjJm
ZTQ2ZGM4ZjhkOWVkYjQyMWNhYjIxYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAyMi0wNC0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBudW1iZXIgb2YgU3RyaW5nVmlldyB0byBTdHJpbmcgY29udmVyc2lv
bnMgaW4gSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzg5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6
OmdldFZhbHVlIGNvbnN0KToKKyAgICAgICAgUmVzb2x2ZSBhbWJpZ3VpdHkgYnkgZXhwbGljaXRs
eSBjb252ZXJ0aW5nIHRoZSBTdHJpbmdJbXBsIHRvIGEgU3RyaW5nIGJlZm9yZQorICAgICAgICBj
YWxsaW5nIGpzU3RyaW5nKCkuIFsxXQorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgQXZv
aWQgY29uc3RydWN0aW5nIGEgU3RyaW5nIGZyb20gdGhlIFN0cmluZ1ZpZXcsIGp1c3QgdG8gY29t
cHV0ZSBhIGhhc2guCisgICAgICAgIEluc3RlYWQsIHJlbHkgb24gdGhlIFN0cmluZ1ZpZXdIYXNo
VHJhbnNsYXRvciBmb3IgdGhpcy4KKworICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhp
dC5jcHA6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpPU1JFeGl0Ojp0b0pTIGNvbnN0KToKKyAg
ICAgICAgZXhpdEtpbmRUb1N0cmluZygpIHJldHVybnMgYW4gQVNDSUlMaXRlcmFsIHdob3NlIGxl
bmd0aCBpcyBhbHdheXMgZ3JlYXRlcgorICAgICAgICB0aGFuIDEgc28gd2UgY2FuIGNhbGwgdGhl
IG1vcmUgZWZmaWNpZW50IGpzTm9udHJpdmlhbFN0cmluZygpIGluc3RlYWQgb2YKKyAgICAgICAg
anNTdHJpbmcoKS4gQ2FsbGluZyBqc1N0cmluZygpIGhlcmUgaGFkIGJlY29tZSBhbWJpZ3VvdXMg
YmVjYXVzZSBhbgorICAgICAgICBBU0NJSUxpdGVyYWwgY2FuIGJlIGltcGxpY2l0ZWx5IGNvbnZl
cnRlZCB0byBib3RoIGEgU3RyaW5nIGFuZCBhCisgICAgICAgIFN0cmluZ1ZpZXcgWzJdLgorCisg
ICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZhc3RK
b2luKToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IGpzU3RyaW5nKCkgb3ZlcmxvYWQgdGhhdCB0YWtl
cyBhIFN0cmluZ1ZpZXcsIHRvIGF2b2lkCisgICAgICAgIHVubmVjZXNzYXJpbHkgY29uc3RydWN0
aW5nIGEgU3RyaW5nIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBsZW5ndGggaXMgPD0gMSBbM10uCisK
KyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjphcHBl
bmRTb3VyY2VUb0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNl
Lmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpT
Qzo6ZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3IpOgorICAgICAgICAoSlNDOjpkZWZhdWx0
U291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNhbGxCYXNlKToKKyAgICAg
ICAgKEpTQzo6bm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjppbnZh
bGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcik6CisgICAgICAgIChKU0M6OmludmFsaWRQYXJh
bWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjppbnZhbGlkUGFy
YW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlND
OjppbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvblNv
dXJjZUFwcGVuZGVyKToKKyAgICAgICAgKEpTQzo6aW52YWxpZFByb3RvdHlwZVNvdXJjZUFwcGVu
ZGVyKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAgQ2Fs
bCBTb3VyY2VBcHBlbmRlciB3aXRoIGEgU3RyaW5nVmlldyBzaW5jZSB0aGlzIGlzIHdoYXQgd2Ug
aGF2ZS4gSW4gbW9zdAorICAgICAgICBjYXNlcywgdGhlc2UgYXBwZW5kZXJzIGVuZCB1cCBjYWxs
aW5nIG1ha2VTdHJpbmcoKSBhbmQgaXQgaXMgdGh1cyBiZW5lZmljaWFsCisgICAgICAgIHRvIGF2
b2lkIHRlbXBvcmFyeS9pbnRlcm1lZGlhdGUgU3RyaW5nIGNvbnN0cnVjdGlvbnMuIAorCisgICAg
ICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyk6CisgICAgICAgIFNhbWUgYXMgWzNdLgorCisg
ICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjppZGVu
dGlmaWVyVG9KU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6aWRlbnRpZmllclRvU2FmZVB1YmxpY0pT
VmFsdWUpOgorICAgICAgICBTYW1lIGFzIFsxXS4KKworICAgICAgICAqIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRUb1BhcnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRSYW5nZVRvUGFydHMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZS5jcHA6CisgICAg
ICAgIChKU0M6OkludGxMb2NhbGU6OnRleHRJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRS
YW5nZVRvUGFydHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZv
cm1hdFRvUGFydHNJbnRlcm5hbCk6CisgICAgICAgIFNhbWUgYXMgWzJdLgorCisgICAgICAgICog
cnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJl
bGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAgICAgIFNhbWUgYXMg
WzNdLgorCisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICBTYW1lIGFzIFsyXS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3Bw
OgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6cmVxdWVzdEltcG9ydE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIFNhbWUgYXMg
WzFdLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpqc1N0
cmluZyk6CisgICAgICAgIEFkZCBhIGpzU3RyaW5nKCkgb3ZlcmxvYWQgdGhhdCB0YWtlcyBpbiBh
IFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0cmluZy4KKyAgICAgICAgVGhpcyBhdm9pZHMgY29u
c3RydWN0aW9uIG9mIGEgU3RyaW5nIGZvciBjYWxsIHNpdGVzIGhhdmluZyBhIFN0cmluZ1ZpZXcK
KyAgICAgICAgaW4gdGhlIGV2ZW50IHdoZXJlIHRoZSB2aWV3J3MgbGVuZ3RoIGlzIDw9IDEuCisK
KyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgU2FtZSBhcyBbMV0uCisKKwogMjAy
Mi0wNC0wNyAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXVtB
Uk12N10gU3VwcG9ydCBwcm9wZXIgbmVhciBjYWxscyBhbmQgSlVNUF9JU0xBTkRTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVh
ZGU2ZjI5ZjVkN2Q5NzliM2E3ZTFiYjY4ODc2ZGE0ZTc3M2ZjYTIuLjBlODE0NzQ1ZDMzNTFhNjE3
NWMxZTViN2ViMmFhY2Y5MGIyYzQ2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDQtMDcg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgbnVtYmVy
IG9mIFN0cmluZ1ZpZXcgdG8gU3RyaW5nIGNvbnZlcnNpb25zIGluIEpTQworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUHJvdmlkZSBhIHJldmVyc2VGaW5kKFN0
cmluZ1ZpZXcsIHVuc2lnbmVkKSBvdmVybG9hZCBvbiBTdHJpbmdWaWV3LCBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgd2l0aCBTdHJpbmcgYW5kIHRvIGZhY2lsaXRhdGUgdGhlIGNvbnZlcnRpbmcg
b2YgY29kZSBmcm9tIFN0cmluZyB0byBTdHJpbmdWaWV3LgorCisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmg6CisgICAgICAgIChXVEY6OnJldmVyc2VGaW5kSW5uZXIpOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpyZXZlcnNlRmluZElu
bmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nVmlldzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuaDoKKwogMjAyMi0wNC0wNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0TGVnYWN5XSBSZW1vdmUgTlBBUElQbHVnSW5z
RW5hYmxlZEZvclRlc3RpbmdJbldlYktpdExlZ2FjeQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAppbmRleCA5MGY1OTgxYTY0NjdkYjU4NmQ5ZmZiMGJmZjY4
NGQ1YTI2YTNlZTI0Li5hZGU3MWNkOGZhYjg0MjA5ZTMzMGZkMzQwNmNhYTg2YmJhYmViMzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcApAQCAtNTEs
NyArNTEsNyBAQCBKU1ZhbHVlIExhenlKU1ZhbHVlOjpnZXRWYWx1ZShWTSYgdm0pIGNvbnN0CiAg
ICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6CiAgICAgICAgIHJldHVybiBqc1NpbmdsZUNo
YXJhY3RlclN0cmluZyh2bSwgdS5jaGFyYWN0ZXIpOwogICAgIGNhc2UgS25vd25TdHJpbmdJbXBs
OgotICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIHUuc3RyaW5nSW1wbCk7CisgICAgICAgIHJl
dHVybiBqc1N0cmluZyh2bSwgU3RyaW5nIHsgdS5zdHJpbmdJbXBsIH0pOwogICAgIGNhc2UgTmV3
U3RyaW5nSW1wbDoKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBBdG9tU3RyaW5nSW1wbDo6
YWRkKHUuc3RyaW5nSW1wbCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggOTQ0ZjAy
NmMxMjc4N2MxMjY3YjNiZjczMTA0ZjFlZTgyODVkZDIxMC4uOTNkYzkxNTUwNjAwNTIxM2UzZGE5
MWIwOWQ5ZmVlOGNkMjRmZjM0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTEwOTYsNyArMTA5
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBjb25zdCBj
aGFyKiBjYWNoZVBhdGggPSBPcHRpb25zOjpkaXNrQ2FjaGVQYXRoKCk7CiAgICAgICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKEZpbGVTeXN0ZW06Omxh
c3RDb21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goc291cmNlT3JpZ2luKCkudXJs
KCkuZmlsZVN5c3RlbVBhdGgoKSkpOwotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgbWFrZVN0cmluZyhzb3VyY2UoKS50b1N0cmlu
ZygpLmhhc2goKSwgJy0nLCBmaWxlbmFtZSwgIi5ieXRlY29kZS1jYWNoZSIpKTsKKyAgICAgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIG1h
a2VTdHJpbmcoc291cmNlKCkuaGFzaCgpLCAnLScsIGZpbGVuYW1lLCAiLmJ5dGVjb2RlLWNhY2hl
IikpOwogICAgIH0KIAogICAgIHZvaWQgbG9hZEJ5dGVjb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHAKaW5kZXggZGNj
NzM0NDVjMGM0MTExYWM4NWUzOTUwNzRjMTcwZTg0Yjc4N2NiZi4uNzUxNTAyYjkwYzdkNTJhYjQ1
NjQzOWY5OTk4NmVjOTU5NmEzODg0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgSlNWYWx1ZSBP
U1JFeGl0Ojp0b0pTKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgSlNP
YmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlkLCBqc051bWJlcihtX2lk
KSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm9yaWdpbiwg
bV9vcmlnaW4udG9KUyhnbG9iYWxPYmplY3QpKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+ZXhpdEtpbmQsIGpzU3RyaW5nKHZtLCBleGl0S2luZFRvU3RyaW5n
KG1fZXhpdEtpbmQpKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmV4aXRLaW5kLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGV4aXRLaW5kVG9TdHJpbmcobV9l
eGl0S2luZCkpKTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
aXNXYXRjaHBvaW50LCBqc0Jvb2xlYW4obV9pc1dhdGNocG9pbnQpKTsKICAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y291bnQsIGpzTnVtYmVyKG1fY291bnRlcikp
OwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggOWNiMDcwMDE0NzE5YmJhNGJkYjk0YmNiYTllNWVh
YjliZmNjMGQ2YS4uMGQ3NjEwN2E5ODcxYTQ2NzQzMmI3NTQ2ZWY3MGU5M2I2NGNiMTVjYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApA
QCAtNTQ0LDcgKzU0NCw3IEBAIGlubGluZSBKU1ZhbHVlIGZhc3RKb2luKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBTdHJpCiAgICAgICAgICAgICBp
ZiAobGVuZ3RoIDw9IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgICAg
ICAgICAgSlNTdHJpbmcqIG9wZXJhbmQgPSBqc1N0cmluZyh2bSwgc2VwYXJhdG9yLnRvU3RyaW5n
KCkpOworICAgICAgICAgICAgSlNTdHJpbmcqIG9wZXJhbmQgPSBqc1N0cmluZyh2bSwgc2VwYXJh
dG9yKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBjb3VudCA9IGxlbmd0aCAtIDE7CiAgICAgICAgICAgICBmb3IgKDs7
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3Rh
bmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3Bw
CmluZGV4IDM1MmI3ZDI5ODNjM2E5NWUwYWRkNjE2MjhiMzIwNGQxODBlMzZkNjMuLjJhZDU3Y2M1
YmJlOGUzYzRjMGVkYTUxNGM5MjhlMmRmMjhmYWI1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRp
YyBTdHJpbmcgYXBwZW5kU291cmNlVG9FcnJvck1lc3NhZ2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEVycm9ySW5zdGFuY2UqIGV4CiAgICAgICAgIHJldHVybiBtZXNzYWdlOwogICAgIAogICAgIGlm
IChleHByZXNzaW9uU3RhcnQgPCBleHByZXNzaW9uU3RvcCkKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZGVyKG1lc3NhZ2UsIGNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoZXhw
cmVzc2lvblN0YXJ0LCBleHByZXNzaW9uU3RvcCkudG9TdHJpbmcoKSwgdHlwZSwgRXJyb3JJbnN0
YW5jZTo6Rm91bmRFeGFjdFNvdXJjZSk7CisgICAgICAgIHJldHVybiBhcHBlbmRlcihtZXNzYWdl
LCBjb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFy
dCwgZXhwcmVzc2lvblN0b3ApLCB0eXBlLCBFcnJvckluc3RhbmNlOjpGb3VuZEV4YWN0U291cmNl
KTsKIAogICAgIC8vIE5vIHJhbmdlIGluZm9ybWF0aW9uLCBzbyBnaXZlIGEgZmV3IGNoYXJhY3Rl
cnMgb2YgY29udGV4dC4KICAgICBpbnQgZGF0YUxlbmd0aCA9IHNvdXJjZVN0cmluZy5sZW5ndGgo
KTsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgU3RyaW5nIGFwcGVuZFNvdXJjZVRvRXJyb3JN
ZXNzYWdlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNlKiBleAogICAgICAgICBz
dG9wKys7CiAgICAgd2hpbGUgKHN0b3AgPiBleHByZXNzaW9uU3RhcnQgJiYgaXNTdHJXaGl0ZVNw
YWNlKHNvdXJjZVN0cmluZ1tzdG9wIC0gMV0pKQogICAgICAgICBzdG9wLS07Ci0gICAgcmV0dXJu
IGFwcGVuZGVyKG1lc3NhZ2UsIGNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFu
Z2Uoc3RhcnQsIHN0b3ApLnRvU3RyaW5nKCksIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kQXBw
cm94aW1hdGVTb3VyY2UpOworICAgIHJldHVybiBhcHBlbmRlcihtZXNzYWdlLCBjb2RlQmxvY2st
PnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwgdHlwZSwgRXJyb3JJ
bnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSk7CiB9CiAKIHZvaWQgRXJyb3JJbnN0YW5j
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTVmFsdWUgY2F1c2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVu
ZGVyLCBSdW50aW1lVHlwZSB0eXBlLCBib29sIHVzZUN1cnJlbnRGcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAppbmRleCBlNzllY2I4MTQzZGZi
Y2ZlYzg2MGFkNGYxMzY3ZjQ5YTExNjc1NTUxLi4yODgwN2I0ZWEzM2VjYjU5ZDBkOGM3OWM4Nzlj
ODk5NGIyZjg2Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJ
bnN0YW5jZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBlbnVtIFNv
dXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgeyBGb3VuZEV4YWN0U291cmNlLCBGb3VuZEFwcHJv
eGltYXRlU291cmNlIH07Ci0gICAgdHlwZWRlZiBTdHJpbmcgKCpTb3VyY2VBcHBlbmRlcikgKGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVRleHQsIFJ1
bnRpbWVUeXBlLCBTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkKTsKKyAgICB0eXBlZGVmIFN0
cmluZyAoKlNvdXJjZUFwcGVuZGVyKSAoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIFN0
cmluZ1ZpZXcgc291cmNlVGV4dCwgUnVudGltZVR5cGUsIFNvdXJjZVRleHRXaGVyZUVycm9yT2Nj
dXJyZWQpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA4Y2QwZDVlOWM0
NGYxMDgzODkyMjkwN2FjZTNhMDRmZjY0ZjJmMDZkLi5kYzE2MDk3OWY5ZDg3MzY1OWZiZjljODBk
YjYzMzA2YWZkNWU5NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIHN0YXRpYyBTdHJpbmdW
aWV3IGNsYW1wRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlKQogICAg
IHJldHVybiBTdHJpbmdWaWV3KG9yaWdpbmFsTWVzc2FnZSkuc3Vic3RyaW5nKDAsIG1heExlbmd0
aCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3IoY29u
c3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCkKK3N0
YXRpYyBTdHJpbmcgZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBv
cmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCkKIHsKICAgICByZXR1cm4gbWFr
ZVN0cmluZyhjbGFtcEVycm9yTWVzc2FnZShvcmlnaW5hbE1lc3NhZ2UpLCAiIChuZWFyICcuLi4i
LCBzb3VyY2VUZXh0LCAiLi4uJykiKTsKIH0KIAotU3RyaW5nIGRlZmF1bHRTb3VyY2VBcHBlbmRl
cihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0
LCBSdW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJl
ZCBvY2N1cnJlbmNlKQorU3RyaW5nIGRlZmF1bHRTb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcm
IG9yaWdpbmFsTWVzc2FnZSwgU3RyaW5nVmlldyBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSwgRXJy
b3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewog
ICAgIGlmIChvY2N1cnJlbmNlID09IEVycm9ySW5zdGFuY2U6OkZvdW5kQXBwcm94aW1hdGVTb3Vy
Y2UpCiAgICAgICAgIHJldHVybiBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihvcmlnaW5h
bE1lc3NhZ2UsIHNvdXJjZVRleHQpOwpAQCAtOTUsNyArOTUsNyBAQCBTdHJpbmcgZGVmYXVsdFNv
dXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHNvdXJjZQogICAgIHJldHVybiBtYWtlU3RyaW5nKGNsYW1wRXJyb3JNZXNzYWdlKG9yaWdpbmFs
TWVzc2FnZSksICIgKGV2YWx1YXRpbmcgJyIsIHNvdXJjZVRleHQsICInKSIpOwogfQogCi1zdGF0
aWMgU3RyaW5nIGZ1bmN0aW9uQ2FsbEJhc2UoY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0KQorc3Rh
dGljIFN0cmluZ1ZpZXcgZnVuY3Rpb25DYWxsQmFzZShTdHJpbmdWaWV3IHNvdXJjZVRleHQpCiB7
IAogICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSAnZm9vLmJhcicgc3Vic3RyaW5n
IGZyb20gJ2Zvby5iYXIoYmF6KScuCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaGFzIHNp
bXBsZSBwcm9jZXNzaW5nIG9mIC8qICovIHN0eWxlIGNvbW1lbnRzLgpAQCAtMTUzLDcgKzE1Myw3
IEBAIHN0YXRpYyBTdHJpbmcgZnVuY3Rpb25DYWxsQmFzZShjb25zdCBTdHJpbmcmIHNvdXJjZVRl
eHQpCiAgICAgcmV0dXJuIHNvdXJjZVRleHQubGVmdChpZHggKyAxKTsKIH0KIAotc3RhdGljIFN0
cmluZyBub3RBRnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSB0eXBlLCBFcnJvcklu
c3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2UpCitzdGF0aWMg
U3RyaW5nIG5vdEFGdW5jdGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxN
ZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlIHR5cGUsIEVycm9ySW5z
dGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKIHsKICAgICBB
U1NFUlQodHlwZSAhPSBUeXBlRnVuY3Rpb24pOwogCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGlj
IFN0cmluZyBub3RBRnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFs
TWVzc2FnZSwgY29uc3QgU3QKICAgICBlbHNlCiAgICAgICAgIGRpc3BsYXlWYWx1ZSA9IFN0cmlu
Z1ZpZXcob3JpZ2luYWxNZXNzYWdlLmNoYXJhY3RlcnMxNigpLCBub3RBRnVuY3Rpb25JbmRleCAt
IDEpOwogCi0gICAgU3RyaW5nIGJhc2UgPSBmdW5jdGlvbkNhbGxCYXNlKHNvdXJjZVRleHQpOwor
ICAgIFN0cmluZ1ZpZXcgYmFzZSA9IGZ1bmN0aW9uQ2FsbEJhc2Uoc291cmNlVGV4dCk7CiAgICAg
aWYgKCFiYXNlKQogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3Io
b3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIo
U3RyaW5nQnVpbGRlcjo6T3ZlcmZsb3dIYW5kbGVyOjpSZWNvcmRPdmVyZmxvdyk7CkBAIC0xODks
NyArMTg5LDcgQEAgc3RhdGljIFN0cmluZyBub3RBRnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25z
dCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3QKICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwogfQogCi1zdGF0aWMgU3RyaW5nIGludmFsaWRQYXJhbWV0ZXJJblNvdXJjZUFw
cGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVRleHQsIFJ1bnRpbWVUeXBlIHR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVy
cm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKK3N0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlcklu
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcg
c291cmNlVGV4dCwgUnVudGltZVR5cGUgdHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdo
ZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwg
dHlwZSAhPSBUeXBlT2JqZWN0KTsKIApAQCAtMjA4LDExICsyMDgsMTEgQEAgc3RhdGljIFN0cmlu
ZyBpbnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFs
TWVzc2FnZSwgY28KICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcob3JpZ2luYWxNZXNzYWdlLCAi
IChldmFsdWF0aW5nICciLCBzb3VyY2VUZXh0LCAiJykiKTsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgaW5MZW5ndGggPSAyOwotICAgIFN0cmluZyByaWdodEhhbmRTaWRlID0gc291
cmNlVGV4dC5zdWJzdHJpbmcoaW5JbmRleCArIGluTGVuZ3RoKS5zaW1wbGlmeVdoaXRlU3BhY2Uo
KTsKKyAgICBTdHJpbmcgcmlnaHRIYW5kU2lkZSA9IHNvdXJjZVRleHQuc3Vic3RyaW5nKGluSW5k
ZXggKyBpbkxlbmd0aCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpLnNpbXBsaWZ5V2hpdGVTcGFj
ZSgpOwogICAgIHJldHVybiBtYWtlU3RyaW5nKHJpZ2h0SGFuZFNpZGUsICIgaXMgbm90IGFuIE9i
amVjdC4gKGV2YWx1YXRpbmcgJyIsIHNvdXJjZVRleHQsICInKSIpOwogfQogCi1pbmxpbmUgU3Ry
aW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5n
JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VUZXh0LCBSdW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJy
b3JPY2N1cnJlZCBvY2N1cnJlbmNlKQoraW5saW5lIFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5z
dGFuY2VvZlNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCwgUnVudGltZVR5cGUsIEVy
cm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKIHsK
ICAgICBpZiAob2NjdXJyZW5jZSA9PSBFcnJvckluc3RhbmNlOjpGb3VuZEFwcHJveGltYXRlU291
cmNlKQogICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3Iob3JpZ2lu
YWxNZXNzYWdlLCBzb3VyY2VUZXh0KTsKQEAgLTIyNywyMSArMjI3LDIxIEBAIGlubGluZSBTdHJp
bmcgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZTb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcm
IGNvbnRlbnQsIGNvCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG9yaWdpbmFsTWVzc2FnZSwg
IiAoZXZhbHVhdGluZyAnIiwgc291cmNlVGV4dCwgIicpIik7CiAKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGluc3RhbmNlb2ZMZW5ndGggPSAxMDsKLSAgICBTdHJpbmcgcmlnaHRIYW5k
U2lkZSA9IHNvdXJjZVRleHQuc3Vic3RyaW5nKGluc3RhbmNlb2ZJbmRleCArIGluc3RhbmNlb2ZM
ZW5ndGgpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOworICAgIFN0cmluZyByaWdodEhhbmRTaWRlID0g
c291cmNlVGV4dC5zdWJzdHJpbmcoaW5zdGFuY2VvZkluZGV4ICsgaW5zdGFuY2VvZkxlbmd0aCku
dG9TdHJpbmdXaXRob3V0Q29weWluZygpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogICAgIHJldHVy
biBtYWtlU3RyaW5nKHJpZ2h0SGFuZFNpZGUsIGNvbnRlbnQsICIuIChldmFsdWF0aW5nICciLCBz
b3VyY2VUZXh0LCAiJykiKTsKIH0KIAotc3RhdGljIFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5z
dGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCwgUnVudGltZVR5cGUgcnVudGltZVR5cGUs
IEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkK
K3N0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZOb3RGdW5jdGlvblNvdXJj
ZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJj
ZVRleHQsIFJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0
V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2UpCiB7CiAgICAgcmV0dXJuIGludmFsaWRQYXJh
bWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoIiBpcyBub3QgYSBmdW5jdGlvbiJfcywgb3Jp
Z2luYWxNZXNzYWdlLCBzb3VyY2VUZXh0LCBydW50aW1lVHlwZSwgb2NjdXJyZW5jZSk7CiB9CiAK
LXN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVl
Tm90RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSBydW50aW1lVHlwZSwgRXJyb3JJ
bnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQorc3RhdGlj
IFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5j
dGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBTdHJpbmdW
aWV3IHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpT
b3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2UpCiB7CiAgICAgcmV0dXJuIGlu
dmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoIltTeW1ib2wuaGFzSW5zdGFu
Y2VdIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQsIG9yIG51bGwiX3MsIG9yaWdpbmFsTWVz
c2FnZSwgc291cmNlVGV4dCwgcnVudGltZVR5cGUsIG9jY3VycmVuY2UpOwogfQogCi1zdGF0aWMg
U3RyaW5nIGludmFsaWRQcm90b3R5cGVTb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdp
bmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSwgRXJyb3JJ
bnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQorc3RhdGlj
IFN0cmluZyBpbnZhbGlkUHJvdG90eXBlU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmln
aW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCwgUnVudGltZVR5cGUsIEVycm9ySW5z
dGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKIHsKICAgICBp
ZiAob2NjdXJyZW5jZSA9PSBFcnJvckluc3RhbmNlOjpGb3VuZEFwcHJveGltYXRlU291cmNlKQog
ICAgICAgICByZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3Iob3JpZ2luYWxNZXNz
YWdlLCBzb3VyY2VUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuaAppbmRleCBhMzE1MWI1YjBkMDM5OGU4ZmZlMjhmZTQ1OTBiZTJiZjAy
ZGRiMGEwLi5iNjRmYTU4OGI5OWMxOWZiNmJmMTdhYTk1ZGZhZTUwZjJkYWEzOTQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0eXBlZGVmIEpTT2JqZWN0KiAoKkVycm9y
RmFjdG9yeSkoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmLCBFcnJvckluc3RhbmNlOjpT
b3VyY2VBcHBlbmRlcik7CiAKLVN0cmluZyBkZWZhdWx0U291cmNlQXBwZW5kZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRl
eHRXaGVyZUVycm9yT2NjdXJyZWQpOworU3RyaW5nIGRlZmF1bHRTb3VyY2VBcHBlbmRlcihjb25z
dCBTdHJpbmcmLCBTdHJpbmdWaWV3LCBSdW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNl
VGV4dFdoZXJlRXJyb3JPY2N1cnJlZCk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBj
cmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGNvbnN0IFN0cmluZyYsIEVycm9y
SW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBj
cmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGFj
MjA5NWVmZGI2ZTllNmQ4MmZmNDFjZjBhOGZjZDg0YWMzYjA2OWUuLmFjZWE2MzFlMjgxYzUxMDZh
MmRmM2IyYTQ4MmU3ZjY3ZTlhZGM2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIEpT
U3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm4gY2FjaGVJZk5vRXhjZXB0aW9uKGpzTWFrZU5v
bnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCAiZnVuY3Rpb24gIiwgbmFtZSgpLnN0cmluZygp
LCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAKICAgICBpZiAoaXNDbGFzcygpKQot
ICAgICAgICByZXR1cm4gY2FjaGUoanNTdHJpbmcodm0sIGNsYXNzU291cmNlKCkudmlldygpLnRv
U3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIGNhY2hlKGpzU3RyaW5nKHZtLCBjbGFzc1NvdXJj
ZSgpLnZpZXcoKSkpOwogCiAgICAgQVNDSUlMaXRlcmFsIGZ1bmN0aW9uSGVhZGVyID0gIiJfczsK
ICAgICBzd2l0Y2ggKHBhcnNlTW9kZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRleCBiMTQzYmNjMzBhZThmOWQ5NWFjYWZk
ZmUyYWYzZDk0YzdhNDI2NDkxLi4yOTUyYTg3MWRlMGZiOWI0MjFiYjBkMTExNzIxOTM2MGRmMWZi
OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKQEAgLTEyOSwxNCArMTI5LDE0IEBAIGlubGluZSBKU1ZhbHVlIGlkZW50aWZpZXJU
b0pTVmFsdWUoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIGlm
IChpZGVudGlmaWVyLmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZSh2
bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlmaWVyLmltcGwoKSkpOwotICAgIHJl
dHVybiBqc1N0cmluZyh2bSwgaWRlbnRpZmllci5pbXBsKCkpOworICAgIHJldHVybiBqc1N0cmlu
Zyh2bSwgU3RyaW5nIHsgaWRlbnRpZmllci5pbXBsKCkgfSk7CiB9CiAKIGlubGluZSBKU1ZhbHVl
IGlkZW50aWZpZXJUb1NhZmVQdWJsaWNKU1ZhbHVlKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikgCiB7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSAmJiAhaWRlbnRp
Zmllci5pc1ByaXZhdGVOYW1lKCkpCiAgICAgICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZSh2bSwg
c3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlmaWVyLmltcGwoKSkpOwotICAgIHJldHVy
biBqc1N0cmluZyh2bSwgaWRlbnRpZmllci5pbXBsKCkpOworICAgIHJldHVybiBqc1N0cmluZyh2
bSwgU3RyaW5nIHsgaWRlbnRpZmllci5pbXBsKCkgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdC5jcHAKaW5kZXggMDE5NDE0NTNlZTk4OWEwNjQ1ODc1OTIyMDJhMzZjOWFkZmMwMjc2MS4u
MmIyN2M4ODIwZmJjOTIyYjkzNTRlNmUwNzBkZjIzOTQyODBlMTU1NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0x
NDA2LDcgKzE0MDYsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdgogICAgICAgICBwcmV2aW91
c0VuZEluZGV4ID0gZW5kSW5kZXg7CiAKICAgICAgICAgaWYgKGZpZWxkVHlwZSA+PSAwKSB7Ci0g
ICAgICAgICAgICBhdXRvIHR5cGUgPSBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVURhdGVG
b3JtYXRGaWVsZChmaWVsZFR5cGUpKSk7CisgICAgICAgICAgICBhdXRvIHR5cGUgPSBqc05vbnRy
aXZpYWxTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQoZmllbGRUeXBl
KSkpOwogICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGpzU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcu
c3Vic3RyaW5nKGJlZ2luSW5kZXgsIGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOwogICAgICAgICAg
ICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB0
eXBlKTsKQEAgLTE4MTEsNyArMTgxMSw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpm
b3JtYXRSYW5nZVRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91CiAKICAg
ICAgICAgQVNTRVJUKGNhdGVnb3J5ID09IFVGSUVMRF9DQVRFR09SWV9EQVRFKTsKIAotICAgICAg
ICBhdXRvIHR5cGUgPSBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVURhdGVGb3JtYXRGaWVs
ZChmaWVsZFR5cGUpKSk7CisgICAgICAgIGF1dG8gdHlwZSA9IGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgcGFydFR5cGVTdHJpbmcoVURhdGVGb3JtYXRGaWVsZChmaWVsZFR5cGUpKSk7CiAgICAgICAg
IEpTT2JqZWN0KiBwYXJ0ID0gY3JlYXRlUGFydCh0eXBlLCBiZWdpbkluZGV4LCBlbmRJbmRleCAt
IGJlZ2luSW5kZXgpOwogICAgICAgICBwYXJ0cy0+cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAppbmRleCA3ZjcyNDFjY2UxNjU2YThjZDc5
Y2UxMTE2ZjY3YTEzOWZlMzgyNjkzLi4zZmMzNGQ0MjYxZWU1NzNmOWUzNWQ2NWRjMGFiNTUwMTgx
YTRlMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9j
YWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNw
cApAQCAtNzQzLDE2ICs3NDMsMTYgQEAgSlNPYmplY3QqIEludGxMb2NhbGU6OnRleHRJbmZvKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgc3dpdGNoIChsYXlvdXQpIHsKICAgICBk
ZWZhdWx0OgogICAgIGNhc2UgVUxPQ19MQVlPVVRfTFRSOgotICAgICAgICBsYXlvdXRTdHJpbmcg
PSBqc1N0cmluZyh2bSwgImx0ciJfcyk7CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgImx0ciJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVUxPQ19M
QVlPVVRfUlRMOgotICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgInJ0bCJfcyk7
CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInJ0bCJfcyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVUxPQ19MQVlPVVRfVFRCOgotICAgICAgICBsYXlv
dXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgInR0YiJfcyk7CisgICAgICAgIGxheW91dFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInR0YiJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgVUxPQ19MQVlPVVRfQlRUOgotICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwg
ImJ0dCJfcyk7CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
ImJ0dCJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCA1M2UyZDgxNDcwZGM4
NGMzZTU0Yjg0MTllZWQ3ZjBkZmI4MWM4MTI3Li44M2U3ZGFjNmZiYmI1ZjhiNGY3MzczYTEzYWZm
YWQ1NzVjZDNkOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMTEzNyw3ICsxMTM3LDcgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0Ojpmb3JtYXRSYW5nZVRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogICAgICAgICAgICAgc2lnbiA9IGVuZC5zaWduKCk7CiAgICAgICAgIH0KICAgICAg
ICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZC5tX2ZpZWxkOwotICAgICAgICBhdXRvIHBhcnRUeXBl
ID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZCA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2
bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCBzdHlsZSwg
c2lnbiwgbnVtYmVyVHlwZSkpOworICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09
IGxpdGVyYWxGaWVsZCA/IGxpdGVyYWxTdHJpbmcgOiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHBh
cnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHNpZ24s
IG51bWJlclR5cGUpKTsKICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjcmVhdGVQYXJ0KHBhcnRU
eXBlLCBmaWVsZC5tX3JhbmdlLmJlZ2luKCksIGZpZWxkLm1fcmFuZ2UuZGlzdGFuY2UoKSk7CiAg
ICAgICAgIHBhcnRzLT5wdXNoKGdsb2JhbE9iamVjdCwgcGFydCk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CkBAIC0xNTA3LDcgKzE1MDcsNyBAQCB2b2lkIElu
dGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHlsZQogCiAgICAgZm9yIChhdXRvJiBmaWVsZCA6IGZsYXR0ZW4pIHsKICAg
ICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZC5tX2ZpZWxkOwotICAgICAgICBhdXRvIHBhcnRU
eXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZCA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmlu
Zyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCBzdHls
ZSwgc2lnbiwgbnVtYmVyVHlwZSkpOworICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBl
ID09IGxpdGVyYWxGaWVsZCA/IGxpdGVyYWxTdHJpbmcgOiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
IHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHNp
Z24sIG51bWJlclR5cGUpKTsKICAgICAgICAgYXV0byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2
bSwgZm9ybWF0dGVkLCBmaWVsZC5tX3JhbmdlLmJlZ2luKCksIGZpZWxkLm1fcmFuZ2UuZGlzdGFu
Y2UoKSk7CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT50eXBlLCBwYXJ0VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDY5NTU2YmQzNTY0Y2ExZWFk
N2YzOGJkYWY3ZjUxMGZkOTEwM2M2YzguLmQ4ZDRlYTg0Mjk3NDc2MGMwMjdiYTVhYzAwYTMwN2Q5
ZGNmMjVjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgSlNWYWx1ZSBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGRvdWIKICAgICAgICAgfQogCiAgICAgICAgIEludGxGaWVsZEl0ZXJhdG9yIGZp
ZWxkSXRlcmF0b3IoKml0ZXJhdG9yLmdldCgpKTsKLSAgICAgICAgSW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgSW50bE51bWJlckZvcm1hdDo6U3R5
bGU6OkRlY2ltYWwsIHN0ZDo6c2lnbmJpdChhYnNWYWx1ZSksIEludGxNYXRoZW1hdGljYWxWYWx1
ZTo6bnVtYmVyVHlwZUZyb21Eb3VibGUoYWJzVmFsdWUpLCBmb3JtYXR0ZWROdW1iZXIsIGZpZWxk
SXRlcmF0b3IsIHBhcnRzLCBudWxscHRyLCBqc1N0cmluZyh2bSwgc2luZ3VsYXJVbml0KHVuaXQp
LnRvU3RyaW5nKCkpKTsKKyAgICAgICAgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0lu
dGVybmFsKGdsb2JhbE9iamVjdCwgSW50bE51bWJlckZvcm1hdDo6U3R5bGU6OkRlY2ltYWwsIHN0
ZDo6c2lnbmJpdChhYnNWYWx1ZSksIEludGxNYXRoZW1hdGljYWxWYWx1ZTo6bnVtYmVyVHlwZUZy
b21Eb3VibGUoYWJzVmFsdWUpLCBmb3JtYXR0ZWROdW1iZXIsIGZpZWxkSXRlcmF0b3IsIHBhcnRz
LCBudWxscHRyLCBqc1N0cmluZyh2bSwgc2luZ3VsYXJVbml0KHVuaXQpKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmlu
ZGV4IDE5MGJlZjExMmNjNWRiOTEwODExYmNlYjhjNDA0ZTQyN2MyOTIwYjQuLjlhMDkxZGEzZTk5
MmYxMjdlOTBjMDNhMjNiYTdlOGIzMzA4YzljMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC0yNjks
NyArMjY5LDcgQEAgdm9pZCBKU0FycmF5QnVmZmVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZyh2bSwgYXJyYXlCdWZm
ZXJTaGFyaW5nTW9kZU5hbWUoc2hhcmluZ01vZGUpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgYXJyYXlCdWZmZXJTaGFyaW5nTW9kZU5hbWUoc2hhcmluZ01vZGUp
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKICAgICBpZiAoc2hhcmluZ01vZGUgPT0gQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVm
YXVsdCkgewogICAgICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5zbGljZSwgYXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIpOwogICAgICAg
ICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
Ynl0ZUxlbmd0aCwgYXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4
IGUzZjAzYTRjMDhmODQ2OTNiMTY0NDBmODFhN2NlYTdkNjg4ZWRhY2MuLmUxMTQ2MzI2YjYzMWIx
NGM2NjY2NzA4ZTAyNDRkN2M1MGU3NjliYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCBKU0ludGVy
bmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OnJlcXVlc3RJbXBvcnRNb2R1bGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iagogICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENhbGxEYXRhOjpU
eXBlOjpOb25lKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBh
cmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKHZtLCBtb2R1bGVLZXkuaW1wbCgpKSk7CisgICAgYXJn
dW1lbnRzLmFwcGVuZChqc1N0cmluZyh2bSwgU3RyaW5nIHsgbW9kdWxlS2V5LmltcGwoKSB9KSk7
CiAgICAgYXJndW1lbnRzLmFwcGVuZChwYXJhbWV0ZXJzKTsKICAgICBhcmd1bWVudHMuYXBwZW5k
KHNjcmlwdEZldGNoZXIpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7
CkBAIC0zOTgsNyArMzk4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1vZHVsZUxvYWRl
clJlcXVlc3RlZE1vZHVsZXMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBzaXplX3QgaSA9IDA7
CiAgICAgZm9yIChhdXRvJiBrZXkgOiBtb2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1vZHVsZXMoKSkg
ewotICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaSsrLCBqc1N0
cmluZyh2bSwga2V5LmdldCgpKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZ2xv
YmFsT2JqZWN0LCBpKyssIGpzU3RyaW5nKHZtLCBTdHJpbmcgeyBrZXkuZ2V0KCkgfSkpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggNzUwYjg3NjI2NmJiMDJiMjJlZjk5ZTMyMTAxY2Ux
ODAxZGU4NjFiYy4uNTNlNTVkODdiMjdhMjE2NmYwYTlmMjllMTc0NGQ3YmNkNzQ0NzdhYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC00OSw2ICs0OSw4IEBA
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmco
Vk0mKTsKIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYsIGNvbnN0IFN0cmluZyYpOyAvLyByZXR1cm5z
IGVtcHR5IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKK0pTU3RyaW5nKiBqc1N0cmluZyhW
TSYsIFN0cmluZyYmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3Ry
aW5nCitKU1N0cmluZyoganNTdHJpbmcoVk0mLCBTdHJpbmdWaWV3KTsgLy8gcmV0dXJucyBlbXB0
eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCiAKIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJh
Y3RlclN0cmluZyhWTSYsIFVDaGFyKTsKIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhWTSYsIGNvbnN0
IFN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTI1MSw2ICsy
NTMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dhcFRvQXRvbVN0cmluZyhWTSYsIFJlZlB0cjxB
dG9tU3RyaW5nSW1wbD4mJikgY29uc3Q7CiAKICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5n
KFZNJiwgY29uc3QgU3RyaW5nJik7CisgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYs
IFN0cmluZyYmKTsKKyAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKFZNJiwgU3RyaW5nVmll
dyk7CiAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCosIEpTU3Ry
aW5nKiwgSlNTdHJpbmcqKTsKICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgSlNTdHJpbmcqKTsKICAgICBmcmllbmQgSlNTdHJpbmcq
IGpzU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKQEAg
LTg3Niw2ICs4ODAsMzMgQEAgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYgdm0sIGNvbnN0
IFN0cmluZyYgcykKICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgKnMuaW1wbCgpKTsK
IH0KIAoraW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYgdm0sIFN0cmluZyYmIHMpCit7Cisg
ICAgaW50IHNpemUgPSBzLmxlbmd0aCgpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJu
IHZtLnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpOworICAgIGlmIChzaXplID09IDEpIHsKKyAg
ICAgICAgVUNoYXIgYyA9IHMuY2hhcmFjdGVyQXQoMCk7CisgICAgICAgIGlmIChjIDw9IG1heFNp
bmdsZUNoYXJhY3RlclN0cmluZykKKyAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Mu
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGMpOworICAgIH0KKyAgICByZXR1cm4gSlNTdHJpbmc6OmNy
ZWF0ZSh2bSwgcy5yZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxsKCkpOworfQorCitpbmxpbmUg
SlNTdHJpbmcqIGpzU3RyaW5nKFZNJiB2bSwgU3RyaW5nVmlldyBzKQoreworICAgIGludCBzaXpl
ID0gcy5sZW5ndGgoKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiB2bS5zbWFsbFN0
cmluZ3MuZW1wdHlTdHJpbmcoKTsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIFVDaGFy
IGMgPSBzLmNoYXJhY3RlckF0KDApOworICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0
ZXJTdHJpbmcpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJh
Y3RlclN0cmluZyhjKTsKKyAgICB9CisgICAgYXV0byBpbXBsID0gcy5pczhCaXQoKSA/IFN0cmlu
Z0ltcGw6OmNyZWF0ZShzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCkpIDogU3RyaW5nSW1wbDo6
Y3JlYXRlKHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCkpOworICAgIHJldHVybiBKU1N0cmlu
Zzo6Y3JlYXRlKHZtLCBXVEZNb3ZlKGltcGwpKTsKK30KKwogaW5saW5lIEpTU3RyaW5nKiBqc1N1
YnN0cmluZyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBi
YXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjZkOGY5Zjc0ZDcwNDk0OTYy
YzMwNzY2OWFkN2U4OTg5NDg2MjIxYi4uMjI4NWIzZmRlYTUzMzlkYTM0YjhlYzAwNzE3MjkyYjEw
ZTI3YmFkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihzeW1ib2xDb25zdHJ1Y3RvcktleUZvciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAg
ICBBU1NFUlQodWlkLnN5bWJvbFJlZ2lzdHJ5KCkgPT0gJnZtLnN5bWJvbFJlZ2lzdHJ5KCkpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sICZ1aWQpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmcgeyB1aWQgfSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29tbW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCmluZGV4IGM3NzBl
MDQ1ZDIwY2NlMjMzYmUwOGYwZGI5YmU2YmQ4MzY4YWVlYzkuLmIwZDYzZGVmNmJmMWRkZWI4N2Y5
YWVjYjk1OTdiNGYzMzQ1YjJmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nQ29tbW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaApAQCAt
NDU4LDYgKzQ1OCwzMyBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZQogICAgIHJldHVybiBmaW5k
KGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+KG1hdGNoQ2hhcmFjdGVyKSwg
aW5kZXgpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VhcmNoQ2hhcmFjdGVyVHlwZSwgdHlw
ZW5hbWUgTWF0Y2hDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSBzdGF0aWMgc2l6ZV90IHJl
dmVyc2VGaW5kSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSogc2VhcmNoQ2hhcmFjdGVy
cywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQoreworICAgIC8vIE9w
dGltaXphdGlvbjoga2VlcCBhIHJ1bm5pbmcgaGFzaCBvZiB0aGUgc3RyaW5ncywKKyAgICAvLyBv
bmx5IGNhbGwgZXF1YWwgaWYgdGhlIGhhc2hlcyBtYXRjaC4KKworICAgIC8vIGRlbHRhIGlzIHRo
ZSBudW1iZXIgb2YgYWRkaXRpb25hbCB0aW1lcyB0byB0ZXN0OyBkZWx0YSA9PSAwIG1lYW5zIHRl
c3Qgb25seSBvbmNlLgorICAgIHVuc2lnbmVkIGRlbHRhID0gc3RkOjptaW4oc3RhcnQsIGxlbmd0
aCAtIG1hdGNoTGVuZ3RoKTsKKworICAgIHVuc2lnbmVkIHNlYXJjaEhhc2ggPSAwOworICAgIHVu
c2lnbmVkIG1hdGNoSGFzaCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNo
TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgc2VhcmNoSGFzaCArPSBzZWFyY2hDaGFyYWN0ZXJzW2Rl
bHRhICsgaV07CisgICAgICAgIG1hdGNoSGFzaCArPSBtYXRjaENoYXJhY3RlcnNbaV07CisgICAg
fQorCisgICAgLy8ga2VlcCBsb29waW5nIHVudGlsIHdlIG1hdGNoCisgICAgd2hpbGUgKHNlYXJj
aEhhc2ggIT0gbWF0Y2hIYXNoIHx8ICFlcXVhbChzZWFyY2hDaGFyYWN0ZXJzICsgZGVsdGEsIG1h
dGNoQ2hhcmFjdGVycywgbWF0Y2hMZW5ndGgpKSB7CisgICAgICAgIGlmICghZGVsdGEpCisgICAg
ICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgICAgIC0tZGVsdGE7CisgICAgICAgIHNlYXJj
aEhhc2ggLT0gc2VhcmNoQ2hhcmFjdGVyc1tkZWx0YSArIG1hdGNoTGVuZ3RoXTsKKyAgICAgICAg
c2VhcmNoSGFzaCArPSBzZWFyY2hDaGFyYWN0ZXJzW2RlbHRhXTsKKyAgICB9CisgICAgcmV0dXJu
IGRlbHRhOworfQorCiAvLyBUaGlzIGlzIG1hcmtlZCBpbmxpbmUgc2luY2UgaXQncyBtb3N0bHkg
dXNlZCBpbiBub24taW5saW5lIGZ1bmN0aW9ucyBmb3IgZWFjaCBzdHJpbmcgdHlwZS4KIC8vIFdo
ZW4gdXNlZCBkaXJlY3RseSBpbiBjb2RlIGl0J3MgcHJvYmFibHkgT0sgdG8gYmUgaW5saW5lOyBt
YXliZSB0aGUgbG9vcCB3aWxsIGJlIHVucm9sbGVkLgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gaW5saW5lIGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgY29uc3QgY2hhciogbG93ZXJjYXNlTGV0dGVycywg
dW5zaWduZWQgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdI
YXNoLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2guaAppbmRleCA1Yzc3ZTJiNDVj
Mjk3NjhiMmNmOTBmNzJmYTYwZjlmNDg5NWY3ZGViLi43NzNmMTBhMmQzODQyZjEyOWI0Yjk4YTUz
MGNmYzk5M2MzNGQ5YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hh
c2guaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2guaApAQCAtMjIxLDkgKzIy
MSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHN0cnVjdCBBU0NJSUNhc2VJbnNlbnNpdGl2ZVN0
cmluZ1ZpZXdIYXNoVHJhbnNsYXRvciB7CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFN0
cmluZ1ZpZXcga2V5KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoa2V5LmlzOEJpdCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g6Omhhc2goa2V5
LmNoYXJhY3RlcnM4KCksIGtleS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICByZXR1cm4gQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoOjpoYXNoKGtleS5jaGFyYWN0ZXJzMTYoKSwga2V5Lmxlbmd0aCgp
KTsKKyAgICAgICAgICAgIHJldHVybiBrZXkuaGFzaCgpOwogICAgICAgICB9CiAKICAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nJiBhLCBTdHJpbmdWaWV3IGIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCBjNzkyNTE3OTNiN2RhMjYzOTVjMDk2ZTRlMjEzYzM4
ZTRjMmZhNzI4Li41OGI4NTQ1NmY4NmM1Y2E4NGVlM2U5NWVhNGIyM2I0YjQzMTQ0NWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTk4MywzMyArOTgzLDYgQEAgc2l6ZV90IFN0
cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQpCiAg
ICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBjaGFy
YWN0ZXIsIHN0YXJ0KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFNlYXJjaENoYXJhY3RlclR5
cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgc3RhdGljIHNp
emVfdCByZXZlcnNlRmluZElubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENo
YXJhY3RlcnMsIGNvbnN0IE1hdGNoQ2hhcmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKLXsKLSAg
ICAvLyBPcHRpbWl6YXRpb246IGtlZXAgYSBydW5uaW5nIGhhc2ggb2YgdGhlIHN0cmluZ3MsCi0g
ICAgLy8gb25seSBjYWxsIGVxdWFsIGlmIHRoZSBoYXNoZXMgbWF0Y2guCi0KLSAgICAvLyBkZWx0
YSBpcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgdGltZXMgdG8gdGVzdDsgZGVsdGEgPT0gMCBt
ZWFucyB0ZXN0IG9ubHkgb25jZS4KLSAgICB1bnNpZ25lZCBkZWx0YSA9IHN0ZDo6bWluKHN0YXJ0
LCBsZW5ndGggLSBtYXRjaExlbmd0aCk7Ci0gICAgCi0gICAgdW5zaWduZWQgc2VhcmNoSGFzaCA9
IDA7Ci0gICAgdW5zaWduZWQgbWF0Y2hIYXNoID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbWF0Y2hMZW5ndGg7ICsraSkgewotICAgICAgICBzZWFyY2hIYXNoICs9IHNlYXJjaENo
YXJhY3RlcnNbZGVsdGEgKyBpXTsKLSAgICAgICAgbWF0Y2hIYXNoICs9IG1hdGNoQ2hhcmFjdGVy
c1tpXTsKLSAgICB9Ci0KLSAgICAvLyBrZWVwIGxvb3BpbmcgdW50aWwgd2UgbWF0Y2gKLSAgICB3
aGlsZSAoc2VhcmNoSGFzaCAhPSBtYXRjaEhhc2ggfHwgIWVxdWFsKHNlYXJjaENoYXJhY3RlcnMg
KyBkZWx0YSwgbWF0Y2hDaGFyYWN0ZXJzLCBtYXRjaExlbmd0aCkpIHsKLSAgICAgICAgaWYgKCFk
ZWx0YSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICAgICAgLS1kZWx0YTsKLSAg
ICAgICAgc2VhcmNoSGFzaCAtPSBzZWFyY2hDaGFyYWN0ZXJzW2RlbHRhICsgbWF0Y2hMZW5ndGhd
OwotICAgICAgICBzZWFyY2hIYXNoICs9IHNlYXJjaENoYXJhY3RlcnNbZGVsdGFdOwotICAgIH0K
LSAgICByZXR1cm4gZGVsdGE7Ci19Ci0KIHNpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZChT
dHJpbmdWaWV3IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydCkKIHsKICAgICAvLyBDaGVjayBm
b3IgbnVsbCBvciBlbXB0eSBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHAKaW5kZXggZmE4YWI0ZTYxM2M0NmNlZmUxN2Y3NzFlNDk0ZDllMWU3YTllMzIx
My4uYWY5NmI5MmVkMDU5MWRjMWYzYmQ1OWFmOTZiNDQwYTliODY4NDY3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zNTksNiArMzU5LDMxIEBAIFN0cmluZ1ZpZXcgU3RyaW5n
Vmlldzo6c3RyaXBXaGl0ZVNwYWNlKCkgY29uc3QKICAgICByZXR1cm4gc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhpc0FTQ0lJU3BhY2U8VUNoYXI+KTsKIH0KIAorc2l6
ZV90IFN0cmluZ1ZpZXc6OnJldmVyc2VGaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2ln
bmVkIHN0YXJ0KSBjb25zdAoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOworCisgICAgdW5zaWduZWQgbWF0Y2hMZW5ndGggPSBtYXRjaFN0cmluZy5sZW5ndGgo
KTsKKyAgICB1bnNpZ25lZCBvdXJMZW5ndGggPSBsZW5ndGgoKTsKKyAgICBpZiAoIW1hdGNoTGVu
Z3RoKQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RhcnQsIG91ckxlbmd0aCk7CisKKyAgICAv
LyBDaGVjayBzdGFydCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KKyAgICBpZiAobWF0Y2hM
ZW5ndGggPiBvdXJMZW5ndGgpCisgICAgICAgIHJldHVybiBub3RGb3VuZDsKKworICAgIGlmIChp
czhCaXQoKSkgeworICAgICAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAg
ICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBzdGFydCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgICAgIHJldHVy
biByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMx
NigpLCBzdGFydCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7CisgICAgfQorCisgICAgaWYgKG1h
dGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFy
YWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RhcnQsIG91ckxlbmd0aCwg
bWF0Y2hMZW5ndGgpOworICAgIHJldHVybiByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigp
LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIG91ckxlbmd0aCwgbWF0Y2hMZW5n
dGgpOworfQorCiBpbnQgY29kZVBvaW50Q29tcGFyZShTdHJpbmdWaWV3IGxocywgU3RyaW5nVmll
dyByaHMpCiB7CiAgICAgYm9vbCBsaHNJczhCaXQgPSBsaHMuaXM4Qml0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5oCmluZGV4IGRmZjRjZTU4YjQ0N2Q2YzE3Y2RhY2ExMzlmOWVjYjY4NTVkYjc2
YTUuLmI2ZmRjZjM3MGZlOTVjOTFkZTMwZDA0M2I5NWZjNjk5ZmE3ODgzNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5oCkBAIC05NCw2ICs5NCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBMQ2hh
ciogY2hhcmFjdGVyczgoKSBjb25zdDsKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2KCkg
Y29uc3Q7CiAKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisKICAgICAvLyBSZXR1cm4gY2hh
cmFjdGVyczgoKSBvciBjaGFyYWN0ZXJzMTYoKSBkZXBlbmRpbmcgb24gQ2hhcmFjdGVyVHlwZS4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdCBDaGFyYWN0ZXJUeXBl
KiBjaGFyYWN0ZXJzKCkgY29uc3Q7CiAKQEAgLTE0Nyw2ICsxNDksNyBAQCBwdWJsaWM6CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3Q7CiAKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGlu
ZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ1ZpZXcsIHVuc2lnbmVk
IHN0YXJ0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKIAog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5n
QVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKQEAgLTQzNiw2ICs0
MzksMTMgQEAgaW5saW5lIGNvbnN0IFVDaGFyKiBTdHJpbmdWaWV3OjpjaGFyYWN0ZXJzMTYoKSBj
b25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KG1fY2hhcmFjdGVycyk7
CiB9CiAKK2lubGluZSB1bnNpZ25lZCBTdHJpbmdWaWV3OjpoYXNoKCkgY29uc3QKK3sKKyAgICBp
ZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5k
TWFza1RvcDhCaXRzKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5n
SGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
KCkpOworfQorCiB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgY29uc3QgTENoYXIqIFN0cmluZ1Zp
ZXc6OmNoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyczgo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3Rp
bmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQ
SS5jcHAKaW5kZXggZGI1YWE4ZTQwZDNkYmY2YWJiYzc0ZmZhMGFjYzA4YjJkZDJiNTZmNS4uZmE2
YzE2Y2EyOGE1OWVjM2Y0MGVlMDkwMTE2OTRmYzkyZmMwMDYxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTIwNjUsMTMg
KzIwNjUsMTMgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6cHJvY2Vzc1RhcmdldHMoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEoKICAgICBKU0M6OkpTT2JqZWN0KiBw
cm9jZXNzVGFyZ2V0c09iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmpl
Y3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpKTsKICAgICBpbnQgaW5kZXggPSAwOwotICAgIHByb2Nlc3NUYXJn
ZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNT
dHJpbmcodm0sIHByb2Nlc3NUYXJnZXROYW1lVUkpKTsKKyAgICBwcm9jZXNzVGFyZ2V0c09iamVj
dC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzTm9udHJpdmlh
bFN0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVVSSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCi0gICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2Jh
bE9iamVjdCwgaW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVHUFUp
KTsKKyAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LCBpbmRleCsrLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVH
UFUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KSk7CiAjZW5kaWYKLSAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzU3RyaW5nKHZtLCBwcm9jZXNzVGFy
Z2V0TmFtZU5ldHdvcmtpbmcpKTsKKyAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwg
cHJvY2Vzc1RhcmdldE5hbWVOZXR3b3JraW5nKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogICAgIHJldHVybiB0b1JlZih2
bSwgcHJvY2Vzc1RhcmdldHNPYmplY3QpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457005</attachid>
            <date>2022-04-07 19:49:00 -0700</date>
            <delta_ts>2022-04-08 10:56:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238911-20220407194859.patch</filename>
            <type>text/plain</type>
            <size>39345</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MWMyZTQ4MDk4NDljN2NmNTIyNTM0YjI1ZmI3YjIxMzdhMWFjMmQ3Li41YzNmYzJhMzE4MmJkMjJm
ZTQ2ZGM4ZjhkOWVkYjQyMWNhYjIxYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAyMi0wNC0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBudW1iZXIgb2YgU3RyaW5nVmlldyB0byBTdHJpbmcgY29udmVyc2lv
bnMgaW4gSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzg5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6
OmdldFZhbHVlIGNvbnN0KToKKyAgICAgICAgUmVzb2x2ZSBhbWJpZ3VpdHkgYnkgZXhwbGljaXRs
eSBjb252ZXJ0aW5nIHRoZSBTdHJpbmdJbXBsIHRvIGEgU3RyaW5nIGJlZm9yZQorICAgICAgICBj
YWxsaW5nIGpzU3RyaW5nKCkuIFsxXQorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgQXZv
aWQgY29uc3RydWN0aW5nIGEgU3RyaW5nIGZyb20gdGhlIFN0cmluZ1ZpZXcsIGp1c3QgdG8gY29t
cHV0ZSBhIGhhc2guCisgICAgICAgIEluc3RlYWQsIHJlbHkgb24gdGhlIFN0cmluZ1ZpZXdIYXNo
VHJhbnNsYXRvciBmb3IgdGhpcy4KKworICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhp
dC5jcHA6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpPU1JFeGl0Ojp0b0pTIGNvbnN0KToKKyAg
ICAgICAgZXhpdEtpbmRUb1N0cmluZygpIHJldHVybnMgYW4gQVNDSUlMaXRlcmFsIHdob3NlIGxl
bmd0aCBpcyBhbHdheXMgZ3JlYXRlcgorICAgICAgICB0aGFuIDEgc28gd2UgY2FuIGNhbGwgdGhl
IG1vcmUgZWZmaWNpZW50IGpzTm9udHJpdmlhbFN0cmluZygpIGluc3RlYWQgb2YKKyAgICAgICAg
anNTdHJpbmcoKS4gQ2FsbGluZyBqc1N0cmluZygpIGhlcmUgaGFkIGJlY29tZSBhbWJpZ3VvdXMg
YmVjYXVzZSBhbgorICAgICAgICBBU0NJSUxpdGVyYWwgY2FuIGJlIGltcGxpY2l0ZWx5IGNvbnZl
cnRlZCB0byBib3RoIGEgU3RyaW5nIGFuZCBhCisgICAgICAgIFN0cmluZ1ZpZXcgWzJdLgorCisg
ICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZhc3RK
b2luKToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IGpzU3RyaW5nKCkgb3ZlcmxvYWQgdGhhdCB0YWtl
cyBhIFN0cmluZ1ZpZXcsIHRvIGF2b2lkCisgICAgICAgIHVubmVjZXNzYXJpbHkgY29uc3RydWN0
aW5nIGEgU3RyaW5nIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBsZW5ndGggaXMgPD0gMSBbM10uCisK
KyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjphcHBl
bmRTb3VyY2VUb0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNl
Lmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpT
Qzo6ZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3IpOgorICAgICAgICAoSlNDOjpkZWZhdWx0
U291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNhbGxCYXNlKToKKyAgICAg
ICAgKEpTQzo6bm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjppbnZh
bGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcik6CisgICAgICAgIChKU0M6OmludmFsaWRQYXJh
bWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjppbnZhbGlkUGFy
YW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlND
OjppbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvblNv
dXJjZUFwcGVuZGVyKToKKyAgICAgICAgKEpTQzo6aW52YWxpZFByb3RvdHlwZVNvdXJjZUFwcGVu
ZGVyKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAgQ2Fs
bCBTb3VyY2VBcHBlbmRlciB3aXRoIGEgU3RyaW5nVmlldyBzaW5jZSB0aGlzIGlzIHdoYXQgd2Ug
aGF2ZS4gSW4gbW9zdAorICAgICAgICBjYXNlcywgdGhlc2UgYXBwZW5kZXJzIGVuZCB1cCBjYWxs
aW5nIG1ha2VTdHJpbmcoKSBhbmQgaXQgaXMgdGh1cyBiZW5lZmljaWFsCisgICAgICAgIHRvIGF2
b2lkIHRlbXBvcmFyeS9pbnRlcm1lZGlhdGUgU3RyaW5nIGNvbnN0cnVjdGlvbnMuIAorCisgICAg
ICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyk6CisgICAgICAgIFNhbWUgYXMgWzNdLgorCisg
ICAgICAgICogcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjppZGVu
dGlmaWVyVG9KU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6aWRlbnRpZmllclRvU2FmZVB1YmxpY0pT
VmFsdWUpOgorICAgICAgICBTYW1lIGFzIFsxXS4KKworICAgICAgICAqIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRUb1BhcnRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRSYW5nZVRvUGFydHMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZS5jcHA6CisgICAg
ICAgIChKU0M6OkludGxMb2NhbGU6OnRleHRJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRS
YW5nZVRvUGFydHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZv
cm1hdFRvUGFydHNJbnRlcm5hbCk6CisgICAgICAgIFNhbWUgYXMgWzJdLgorCisgICAgICAgICog
cnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJl
bGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6CisgICAgICAgIFNhbWUgYXMg
WzNdLgorCisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICBTYW1lIGFzIFsyXS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3Bw
OgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6cmVxdWVzdEltcG9ydE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIFNhbWUgYXMg
WzFdLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpqc1N0
cmluZyk6CisgICAgICAgIEFkZCBhIGpzU3RyaW5nKCkgb3ZlcmxvYWQgdGhhdCB0YWtlcyBpbiBh
IFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0cmluZy4KKyAgICAgICAgVGhpcyBhdm9pZHMgY29u
c3RydWN0aW9uIG9mIGEgU3RyaW5nIGZvciBjYWxsIHNpdGVzIGhhdmluZyBhIFN0cmluZ1ZpZXcK
KyAgICAgICAgaW4gdGhlIGV2ZW50IHdoZXJlIHRoZSB2aWV3J3MgbGVuZ3RoIGlzIDw9IDEuCisK
KyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgU2FtZSBhcyBbMV0uCisKKwogMjAy
Mi0wNC0wNyAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXVtB
Uk12N10gU3VwcG9ydCBwcm9wZXIgbmVhciBjYWxscyBhbmQgSlVNUF9JU0xBTkRTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcx
MjczNTkwNjAzZmE5NTc5MTA3MzBlNzQ4M2E0MGNlYTg5OTg2YTUuLjA2OWRmMGU3ZWM3N2I2NDMz
NDA5OWJlNTIyY2M4YTAxZTUyMTIwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDQtMDcg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgbnVtYmVy
IG9mIFN0cmluZ1ZpZXcgdG8gU3RyaW5nIGNvbnZlcnNpb25zIGluIEpTQworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUHJvdmlkZSBhIHJldmVyc2VGaW5kKFN0
cmluZ1ZpZXcsIHVuc2lnbmVkKSBvdmVybG9hZCBvbiBTdHJpbmdWaWV3LCBmb3IgY29uc2lzdGVu
Y3kKKyAgICAgICAgd2l0aCBTdHJpbmcgYW5kIHRvIGZhY2lsaXRhdGUgdGhlIGNvbnZlcnRpbmcg
b2YgY29kZSBmcm9tIFN0cmluZyB0byBTdHJpbmdWaWV3LgorCisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmg6CisgICAgICAgIChXVEY6OnJldmVyc2VGaW5kSW5uZXIpOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpyZXZlcnNlRmluZElu
bmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nVmlldzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuaDoKKwogMjAyMi0wNC0wNyAgU2FtIFNuZWRkb24gIDxnc25lZGRlcnNA
YXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgbG9uZy1lbmFibGVkIHByZWZlcmVuY2VzIGF3YXkg
ZnJvbSBleHBlcmltZW50YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGF6eUpTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNW
YWx1ZS5jcHAKaW5kZXggOTBmNTk4MWE2NDY3ZGI1ODZkOWZmYjBiZmY2ODRkNWEyNmEzZWUyNC4u
YWRlNzFjZDhmYWI4NDIwOWUzMzBmZDM0MDZjYWE4NmJiYWJlYjMwNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgSlNW
YWx1ZSBMYXp5SlNWYWx1ZTo6Z2V0VmFsdWUoVk0mIHZtKSBjb25zdAogICAgIGNhc2UgU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nOgogICAgICAgICByZXR1cm4ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
dm0sIHUuY2hhcmFjdGVyKTsKICAgICBjYXNlIEtub3duU3RyaW5nSW1wbDoKLSAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKHZtLCB1LnN0cmluZ0ltcGwpOworICAgICAgICByZXR1cm4ganNTdHJpbmco
dm0sIFN0cmluZyB7IHUuc3RyaW5nSW1wbCB9KTsKICAgICBjYXNlIE5ld1N0cmluZ0ltcGw6CiAg
ICAgICAgIHJldHVybiBqc1N0cmluZyh2bSwgQXRvbVN0cmluZ0ltcGw6OmFkZCh1LnN0cmluZ0lt
cGwpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDk0NGYwMjZjMTI3ODdjMTI2N2Iz
YmY3MzEwNGYxZWU4Mjg1ZGQyMTAuLjkzZGM5MTU1MDYwMDUyMTNlM2RhOTFiMDlkOWZlZThjZDI0
ZmYzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xMDk2LDcgKzEwOTYsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgY29uc3QgY2hhciogY2FjaGVQYXRo
ID0gT3B0aW9uczo6ZGlza0NhY2hlUGF0aCgpOwogICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBG
aWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShGaWxlU3lzdGVtOjpsYXN0Q29tcG9uZW50T2ZQ
YXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKHNvdXJjZU9yaWdpbigpLnVybCgpLmZpbGVTeXN0ZW1Q
YXRoKCkpKTsKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChjYWNoZVBhdGgsIG1ha2VTdHJpbmcoc291cmNlKCkudG9TdHJpbmcoKS5oYXNoKCksICct
JywgZmlsZW5hbWUsICIuYnl0ZWNvZGUtY2FjaGUiKSk7CisgICAgICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBtYWtlU3RyaW5nKHNvdXJj
ZSgpLmhhc2goKSwgJy0nLCBmaWxlbmFtZSwgIi5ieXRlY29kZS1jYWNoZSIpKTsKICAgICB9CiAK
ICAgICB2b2lkIGxvYWRCeXRlY29kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuY3BwCmluZGV4IGRjYzczNDQ1YzBjNDExMWFj
ODVlMzk1MDc0YzE3MGU4NGI3ODdjYmYuLjc1MTUwMmI5MGM3ZDUyYWI0NTY0MzlmOTk5ODZlYzk1
OTZhMzg4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlck9TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlck9TUkV4aXQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEpTVmFsdWUgT1NSRXhpdDo6dG9KUyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIEpTT2JqZWN0KiByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pZCwganNOdW1iZXIobV9pZCkpOwogICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5vcmlnaW4sIG1fb3JpZ2luLnRvSlMo
Z2xvYmFsT2JqZWN0KSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmV4aXRLaW5kLCBqc1N0cmluZyh2bSwgZXhpdEtpbmRUb1N0cmluZyhtX2V4aXRLaW5kKSkp
OworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5leGl0S2luZCwg
anNOb250cml2aWFsU3RyaW5nKHZtLCBleGl0S2luZFRvU3RyaW5nKG1fZXhpdEtpbmQpKSk7CiAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzV2F0Y2hwb2ludCwg
anNCb29sZWFuKG1faXNXYXRjaHBvaW50KSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvdW50LCBqc051bWJlcihtX2NvdW50ZXIpKTsKICAgICByZXR1cm4g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCmluZGV4IDljYjA3MDAxNDcxOWJiYTRiZGI5NGJjYmE5ZTVlYWI5YmZjYzBkNmEuLjBk
NzYxMDdhOTg3MWE0Njc0MzJiNzU0NmVmNzBlOTNiNjRjYjE1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTU0NCw3ICs1NDQs
NyBAQCBpbmxpbmUgSlNWYWx1ZSBmYXN0Sm9pbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCogdGhpc09iamVjdCwgU3RyaQogICAgICAgICAgICAgaWYgKGxlbmd0aCA8PSAx
KQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICAgICAgICAgIEpTU3RyaW5n
KiBvcGVyYW5kID0ganNTdHJpbmcodm0sIHNlcGFyYXRvci50b1N0cmluZygpKTsKKyAgICAgICAg
ICAgIEpTU3RyaW5nKiBvcGVyYW5kID0ganNTdHJpbmcodm0sIHNlcGFyYXRvcik7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgdW5zaWdu
ZWQgY291bnQgPSBsZW5ndGggLSAxOwogICAgICAgICAgICAgZm9yICg7OykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCAzNTJiN2Qy
OTgzYzNhOTVlMGFkZDYxNjI4YjMyMDRkMTgwZTM2ZDYzLi4yYWQ1N2NjNWJiZThlM2M0YzBlZGE1
MTRjOTI4ZTJkZjI4ZmFiNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgU3RyaW5nIGFwcGVu
ZFNvdXJjZVRvRXJyb3JNZXNzYWdlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNl
KiBleAogICAgICAgICByZXR1cm4gbWVzc2FnZTsKICAgICAKICAgICBpZiAoZXhwcmVzc2lvblN0
YXJ0IDwgZXhwcmVzc2lvblN0b3ApCi0gICAgICAgIHJldHVybiBhcHBlbmRlcihtZXNzYWdlLCBj
b2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFydCwg
ZXhwcmVzc2lvblN0b3ApLnRvU3RyaW5nKCksIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5kRXhh
Y3RTb3VyY2UpOworICAgICAgICByZXR1cm4gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5z
b3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5nZShleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25T
dG9wKSwgdHlwZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRFeGFjdFNvdXJjZSk7CiAKICAgICAvLyBO
byByYW5nZSBpbmZvcm1hdGlvbiwgc28gZ2l2ZSBhIGZldyBjaGFyYWN0ZXJzIG9mIGNvbnRleHQu
CiAgICAgaW50IGRhdGFMZW5ndGggPSBzb3VyY2VTdHJpbmcubGVuZ3RoKCk7CkBAIC0xMTMsNyAr
MTEzLDcgQEAgc3RhdGljIFN0cmluZyBhcHBlbmRTb3VyY2VUb0Vycm9yTWVzc2FnZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXgKICAgICAgICAgc3RvcCsrOwogICAgIHdo
aWxlIChzdG9wID4gZXhwcmVzc2lvblN0YXJ0ICYmIGlzU3RyV2hpdGVTcGFjZShzb3VyY2VTdHJp
bmdbc3RvcCAtIDFdKSkKICAgICAgICAgc3RvcC0tOwotICAgIHJldHVybiBhcHBlbmRlcihtZXNz
YWdlLCBjb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9w
KS50b1N0cmluZygpLCB0eXBlLCBFcnJvckluc3RhbmNlOjpGb3VuZEFwcHJveGltYXRlU291cmNl
KTsKKyAgICByZXR1cm4gYXBwZW5kZXIobWVzc2FnZSwgY29kZUJsb2NrLT5zb3VyY2UoKS5wcm92
aWRlcigpLT5nZXRSYW5nZShzdGFydCwgc3RvcCksIHR5cGUsIEVycm9ySW5zdGFuY2U6OkZvdW5k
QXBwcm94aW1hdGVTb3VyY2UpOwogfQogCiB2b2lkIEVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBKU1ZhbHVlIGNhdXNlLCBTb3VyY2VBcHBlbmRlciBhcHBlbmRlciwgUnVudGltZVR5
cGUgdHlwZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggZTc5ZWNiODE0M2RmYmNmZWM4NjBhZDRmMTM2
N2Y0OWExMTY3NTU1MS4uMjg4MDdiNGVhMzNlY2I1OWQwZDhjNzljODc5Yzg5OTRiMmY4NmY5NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaApAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZW51bSBTb3VyY2VUZXh0V2hlcmVF
cnJvck9jY3VycmVkIHsgRm91bmRFeGFjdFNvdXJjZSwgRm91bmRBcHByb3hpbWF0ZVNvdXJjZSB9
OwotICAgIHR5cGVkZWYgU3RyaW5nICgqU291cmNlQXBwZW5kZXIpIChjb25zdCBTdHJpbmcmIG9y
aWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSwgU291
cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCk7CisgICAgdHlwZWRlZiBTdHJpbmcgKCpTb3VyY2VB
cHBlbmRlcikgKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJj
ZVRleHQsIFJ1bnRpbWVUeXBlLCBTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkKTsKIAogICAg
IERFQ0xBUkVfRVhQT1JUX0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggOGNkMGQ1ZTljNDRmMTA4Mzg5MjI5MDdh
Y2UzYTA0ZmY2NGYyZjA2ZC4uZGMxNjA5NzlmOWQ4NzM2NTlmYmY5YzgwZGI2MzMwNmFmZDVlOTQ5
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKQEAgLTgxLDEyICs4MSwxMiBAQCBzdGF0aWMgU3RyaW5nVmlldyBjbGFtcEVycm9y
TWVzc2FnZShjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSkKICAgICByZXR1cm4gU3RyaW5n
VmlldyhvcmlnaW5hbE1lc3NhZ2UpLnN1YnN0cmluZygwLCBtYXhMZW5ndGgpOwogfQogCi1zdGF0
aWMgU3RyaW5nIGRlZmF1bHRBcHByb3hpbWF0ZVNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVRleHQpCitzdGF0aWMgU3RyaW5nIGRl
ZmF1bHRBcHByb3hpbWF0ZVNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdl
LCBTdHJpbmdWaWV3IHNvdXJjZVRleHQpCiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoY2xhbXBF
cnJvck1lc3NhZ2Uob3JpZ2luYWxNZXNzYWdlKSwgIiAobmVhciAnLi4uIiwgc291cmNlVGV4dCwg
Ii4uLicpIik7CiB9CiAKLVN0cmluZyBkZWZhdWx0U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5n
JiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCwgUnVudGltZVR5cGUs
IEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkK
K1N0cmluZyBkZWZhdWx0U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3Nh
Z2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNv
dXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKIHsKICAgICBpZiAob2NjdXJy
ZW5jZSA9PSBFcnJvckluc3RhbmNlOjpGb3VuZEFwcHJveGltYXRlU291cmNlKQogICAgICAgICBy
ZXR1cm4gZGVmYXVsdEFwcHJveGltYXRlU291cmNlRXJyb3Iob3JpZ2luYWxNZXNzYWdlLCBzb3Vy
Y2VUZXh0KTsKQEAgLTk1LDcgKzk1LDcgQEAgU3RyaW5nIGRlZmF1bHRTb3VyY2VBcHBlbmRlcihj
b25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UKICAgICBy
ZXR1cm4gbWFrZVN0cmluZyhjbGFtcEVycm9yTWVzc2FnZShvcmlnaW5hbE1lc3NhZ2UpLCAiIChl
dmFsdWF0aW5nICciLCBzb3VyY2VUZXh0LCAiJykiKTsKIH0KIAotc3RhdGljIFN0cmluZyBmdW5j
dGlvbkNhbGxCYXNlKGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCkKK3N0YXRpYyBTdHJpbmdWaWV3
IGZ1bmN0aW9uQ2FsbEJhc2UoU3RyaW5nVmlldyBzb3VyY2VUZXh0KQogeyAKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgJ2Zvby5iYXInIHN1YnN0cmluZyBmcm9tICdmb28uYmFy
KGJheiknLgogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGhhcyBzaW1wbGUgcHJvY2Vzc2lu
ZyBvZiAvKiAqLyBzdHlsZSBjb21tZW50cy4KQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgU3Ry
aW5nIGZ1bmN0aW9uQ2FsbEJhc2UoY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0KQogICAgIHJldHVy
biBzb3VyY2VUZXh0LmxlZnQoaWR4ICsgMSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0
aW9uU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlVGV4dCwgUnVudGltZVR5cGUgdHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNl
VGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQorc3RhdGljIFN0cmluZyBub3RBRnVu
Y3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgU3RyaW5n
VmlldyBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSB0eXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VU
ZXh0V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2UpCiB7CiAgICAgQVNTRVJUKHR5cGUgIT0g
VHlwZUZ1bmN0aW9uKTsKIApAQCAtMTY5LDcgKzE2OSw3IEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1
bmN0aW9uU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0
IFN0CiAgICAgZWxzZQogICAgICAgICBkaXNwbGF5VmFsdWUgPSBTdHJpbmdWaWV3KG9yaWdpbmFs
TWVzc2FnZS5jaGFyYWN0ZXJzMTYoKSwgbm90QUZ1bmN0aW9uSW5kZXggLSAxKTsKIAotICAgIFN0
cmluZyBiYXNlID0gZnVuY3Rpb25DYWxsQmFzZShzb3VyY2VUZXh0KTsKKyAgICBTdHJpbmdWaWV3
IGJhc2UgPSBmdW5jdGlvbkNhbGxCYXNlKHNvdXJjZVRleHQpOwogICAgIGlmICghYmFzZSkKICAg
ICAgICAgcmV0dXJuIGRlZmF1bHRBcHByb3hpbWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2Fn
ZSwgc291cmNlVGV4dCk7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyKFN0cmluZ0J1aWxkZXI6
Ok92ZXJmbG93SGFuZGxlcjo6UmVjb3JkT3ZlcmZsb3cpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0
YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmln
aW5hbE1lc3NhZ2UsIGNvbnN0IFN0CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0K
IAotc3RhdGljIFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcihjb25zdCBT
dHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1l
VHlwZSB0eXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9j
Y3VycmVuY2UpCitzdGF0aWMgU3RyaW5nIGludmFsaWRQYXJhbWV0ZXJJblNvdXJjZUFwcGVuZGVy
KGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRleHQsIFJ1
bnRpbWVUeXBlIHR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJy
ZWQgb2NjdXJyZW5jZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgIT0gVHlwZU9i
amVjdCk7CiAKQEAgLTIwOCwxMSArMjA4LDExIEBAIHN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFt
ZXRlckluU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvCiAg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG9yaWdpbmFsTWVzc2FnZSwgIiAoZXZhbHVhdGluZyAn
Iiwgc291cmNlVGV4dCwgIicpIik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGlu
TGVuZ3RoID0gMjsKLSAgICBTdHJpbmcgcmlnaHRIYW5kU2lkZSA9IHNvdXJjZVRleHQuc3Vic3Ry
aW5nKGluSW5kZXggKyBpbkxlbmd0aCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgU3RyaW5n
IHJpZ2h0SGFuZFNpZGUgPSBzb3VyY2VUZXh0LnN1YnN0cmluZyhpbkluZGV4ICsgaW5MZW5ndGgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKICAgICByZXR1
cm4gbWFrZVN0cmluZyhyaWdodEhhbmRTaWRlLCAiIGlzIG5vdCBhbiBPYmplY3QuIChldmFsdWF0
aW5nICciLCBzb3VyY2VUZXh0LCAiJykiKTsKIH0KIAotaW5saW5lIFN0cmluZyBpbnZhbGlkUGFy
YW1ldGVySW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgY29udGVudCwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCwgUnVu
dGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2Nj
dXJyZW5jZSkKK2lubGluZSBTdHJpbmcgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZTb3VyY2VB
cHBlbmRlcihjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNz
YWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpT
b3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2UpCiB7CiAgICAgaWYgKG9jY3Vy
cmVuY2UgPT0gRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSkKICAgICAgICAg
cmV0dXJuIGRlZmF1bHRBcHByb3hpbWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2FnZSwgc291
cmNlVGV4dCk7CkBAIC0yMjcsMjEgKzIyNywyMSBAQCBpbmxpbmUgU3RyaW5nIGludmFsaWRQYXJh
bWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjbwog
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhvcmlnaW5hbE1lc3NhZ2UsICIgKGV2YWx1YXRpbmcg
JyIsIHNvdXJjZVRleHQsICInKSIpOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBp
bnN0YW5jZW9mTGVuZ3RoID0gMTA7Ci0gICAgU3RyaW5nIHJpZ2h0SGFuZFNpZGUgPSBzb3VyY2VU
ZXh0LnN1YnN0cmluZyhpbnN0YW5jZW9mSW5kZXggKyBpbnN0YW5jZW9mTGVuZ3RoKS5zaW1wbGlm
eVdoaXRlU3BhY2UoKTsKKyAgICBTdHJpbmcgcmlnaHRIYW5kU2lkZSA9IHNvdXJjZVRleHQuc3Vi
c3RyaW5nKGluc3RhbmNlb2ZJbmRleCArIGluc3RhbmNlb2ZMZW5ndGgpLnRvU3RyaW5nV2l0aG91
dENvcHlpbmcoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKICAgICByZXR1cm4gbWFrZVN0cmluZyhy
aWdodEhhbmRTaWRlLCBjb250ZW50LCAiLiAoZXZhbHVhdGluZyAnIiwgc291cmNlVGV4dCwgIicp
Iik7CiB9CiAKLXN0YXRpYyBTdHJpbmcgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZOb3RGdW5j
dGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNl
OjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2UpCitzdGF0aWMgU3RyaW5n
IGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mTm90RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25z
dCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgU3RyaW5nVmlldyBzb3VyY2VUZXh0LCBSdW50aW1l
VHlwZSBydW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1
cnJlZCBvY2N1cnJlbmNlKQogewogICAgIHJldHVybiBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2Vv
ZlNvdXJjZUFwcGVuZGVyKCIgaXMgbm90IGEgZnVuY3Rpb24iX3MsIG9yaWdpbmFsTWVzc2FnZSwg
c291cmNlVGV4dCwgcnVudGltZVR5cGUsIG9jY3VycmVuY2UpOwogfQogCi1zdGF0aWMgU3RyaW5n
IGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9maGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uU291
cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
c291cmNlVGV4dCwgUnVudGltZVR5cGUgcnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJj
ZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKK3N0YXRpYyBTdHJpbmcgaW52YWxp
ZFBhcmFtZXRlckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb25Tb3VyY2VBcHBl
bmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgU3RyaW5nVmlldyBzb3VyY2VUZXh0
LCBSdW50aW1lVHlwZSBydW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJl
RXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewogICAgIHJldHVybiBpbnZhbGlkUGFyYW1ldGVy
SW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKCJbU3ltYm9sLmhhc0luc3RhbmNlXSBpcyBub3QgYSBm
dW5jdGlvbiwgdW5kZWZpbmVkLCBvciBudWxsIl9zLCBvcmlnaW5hbE1lc3NhZ2UsIHNvdXJjZVRl
eHQsIHJ1bnRpbWVUeXBlLCBvY2N1cnJlbmNlKTsKIH0KIAotc3RhdGljIFN0cmluZyBpbnZhbGlk
UHJvdG90eXBlU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc291cmNlVGV4dCwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJj
ZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKK3N0YXRpYyBTdHJpbmcgaW52YWxp
ZFByb3RvdHlwZVNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBT
dHJpbmdWaWV3IHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VU
ZXh0V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2UpCiB7CiAgICAgaWYgKG9jY3VycmVuY2Ug
PT0gRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSkKICAgICAgICAgcmV0dXJu
IGRlZmF1bHRBcHByb3hpbWF0ZVNvdXJjZUVycm9yKG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmgKaW5kZXggYTMxNTFiNWIwZDAzOThlOGZmZTI4ZmU0NTkwYmUyYmYwMmRkYjBhMC4uYjY0ZmE1
ODhiOTljMTlmYjZiZjE3YWE5NWRmYWU1MGYyZGFhMzk0OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaApAQCAtMzgsNyArMzgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogdHlwZWRlZiBKU09iamVjdCogKCpFcnJvckZhY3RvcnkpKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgRXJyb3JJbnN0YW5jZTo6U291cmNlQXBwZW5kZXIp
OwogCi1TdHJpbmcgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9j
Y3VycmVkKTsKK1N0cmluZyBkZWZhdWx0U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiwgU3Ry
aW5nVmlldywgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6OlNvdXJjZVRleHRXaGVyZUVycm9y
T2NjdXJyZWQpOwogCiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlRXJyb3IoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBjb25zdCBTdHJpbmcmLCBFcnJvckluc3RhbmNlOjpTb3Vy
Y2VBcHBlbmRlcik7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBhYzIwOTVlZmRiNmU5ZTZk
ODJmZjQxY2YwYThmY2Q4NGFjM2IwNjllLi5hY2VhNjMxZTI4MWM1MTA2YTJkZjNiMmE0ODJlN2Y2
N2U5YWRjNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCBKU1N0cmluZyogRnVuY3Rp
b25FeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICAgICAgcmV0dXJuIGNhY2hlSWZOb0V4Y2VwdGlvbihqc01ha2VOb250cml2aWFsU3RyaW5n
KGdsb2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIG5hbWUoKS5zdHJpbmcoKSwgIigpIHtcbiAgICBb
bmF0aXZlIGNvZGVdXG59IikpOwogCiAgICAgaWYgKGlzQ2xhc3MoKSkKLSAgICAgICAgcmV0dXJu
IGNhY2hlKGpzU3RyaW5nKHZtLCBjbGFzc1NvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpKSk7Cisg
ICAgICAgIHJldHVybiBjYWNoZShqc1N0cmluZyh2bSwgY2xhc3NTb3VyY2UoKS52aWV3KCkpKTsK
IAogICAgIEFTQ0lJTGl0ZXJhbCBmdW5jdGlvbkhlYWRlciA9ICIiX3M7CiAgICAgc3dpdGNoIChw
YXJzZU1vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXJJbmxpbmVzLmgKaW5kZXggYjE0M2JjYzMwYWU4ZjlkOTVhY2FmZGZlMmFmM2Q5NGM3YTQy
NjQ5MS4uMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0x
MjksMTQgKzEyOSwxNCBAQCBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVlKFZNJiB2
bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBpZiAoaWRlbnRpZmllci5p
c1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gU3ltYm9sOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0
PFN5bWJvbEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKTsKLSAgICByZXR1cm4ganNTdHJpbmco
dm0sIGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyB7
IGlkZW50aWZpZXIuaW1wbCgpIH0pOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9T
YWZlUHVibGljSlNWYWx1ZShWTSYgdm0sIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIAog
ewogICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sKCkgJiYgIWlkZW50aWZpZXIuaXNQcml2YXRl
TmFtZSgpKQogICAgICAgICByZXR1cm4gU3ltYm9sOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PFN5
bWJvbEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKTsKLSAgICByZXR1cm4ganNTdHJpbmcodm0s
IGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyB7IGlk
ZW50aWZpZXIuaW1wbCgpIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4
IDAxOTQxNDUzZWU5ODlhMDY0NTg3NTkyMjAyYTM2YzlhZGZjMDI3NjEuLjJiMjdjODgyMGZiYzky
MmI5MzU0ZTZlMDcwZGYyMzk0MjgwZTE1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtMTQwNiw3ICsxNDA2LDcg
QEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYKICAgICAgICAgcHJldmlvdXNFbmRJbmRleCA9IGVu
ZEluZGV4OwogCiAgICAgICAgIGlmIChmaWVsZFR5cGUgPj0gMCkgewotICAgICAgICAgICAgYXV0
byB0eXBlID0ganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQoZmll
bGRUeXBlKSkpOworICAgICAgICAgICAgYXV0byB0eXBlID0ganNOb250cml2aWFsU3RyaW5nKHZt
LCBwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1hdEZpZWxkKGZpZWxkVHlwZSkpKTsKICAgICAgICAg
ICAgIGF1dG8gdmFsdWUgPSBqc1N0cmluZyh2bSwgcmVzdWx0U3RyaW5nLnN1YnN0cmluZyhiZWdp
bkluZGV4LCBlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBw
YXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHBh
cnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwgdHlwZSk7CkBAIC0xODEx
LDcgKzE4MTEsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1Bh
cnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdQogCiAgICAgICAgIEFTU0VSVChj
YXRlZ29yeSA9PSBVRklFTERfQ0FURUdPUllfREFURSk7CiAKLSAgICAgICAgYXV0byB0eXBlID0g
anNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQoZmllbGRUeXBlKSkp
OworICAgICAgICBhdXRvIHR5cGUgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHBhcnRUeXBlU3Ry
aW5nKFVEYXRlRm9ybWF0RmllbGQoZmllbGRUeXBlKSkpOwogICAgICAgICBKU09iamVjdCogcGFy
dCA9IGNyZWF0ZVBhcnQodHlwZSwgYmVnaW5JbmRleCwgZW5kSW5kZXggLSBiZWdpbkluZGV4KTsK
ICAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0LCBwYXJ0KTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZS5jcHAKaW5kZXggN2Y3MjQxY2NlMTY1NmE4Y2Q3OWNlMTExNmY2N2ExMzlm
ZTM4MjY5My4uM2ZjMzRkNDI2MWVlNTczZjllMzVkNjVkYzBhYjU1MDE4MWE0ZTA5YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKQEAgLTc0MywxNiAr
NzQzLDE2IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp0ZXh0SW5mbyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIHN3aXRjaCAobGF5b3V0KSB7CiAgICAgZGVmYXVsdDoKICAgICBj
YXNlIFVMT0NfTEFZT1VUX0xUUjoKLSAgICAgICAgbGF5b3V0U3RyaW5nID0ganNTdHJpbmcodm0s
ICJsdHIiX3MpOworICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJsdHIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVMT0NfTEFZT1VUX1JUTDoKLSAg
ICAgICAgbGF5b3V0U3RyaW5nID0ganNTdHJpbmcodm0sICJydGwiX3MpOworICAgICAgICBsYXlv
dXRTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJydGwiX3MpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFVMT0NfTEFZT1VUX1RUQjoKLSAgICAgICAgbGF5b3V0U3RyaW5nID0ganNT
dHJpbmcodm0sICJ0dGIiX3MpOworICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJ0dGIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVMT0NfTEFZT1VU
X0JUVDoKLSAgICAgICAgbGF5b3V0U3RyaW5nID0ganNTdHJpbmcodm0sICJidHQiX3MpOworICAg
ICAgICBsYXlvdXRTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJidHQiX3MpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggNTNlMmQ4MTQ3MGRjODRjM2U1NGI4NDE5ZWVk
N2YwZGZiODFjODEyNy4uODNlN2RhYzZmYmJiNWY4YjRmNzM3M2ExM2FmZmFkNTc1Y2QzZDkxOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKQEAgLTExMzcsNyArMTEzNyw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0
UmFuZ2VUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAg
ICAgICAgIHNpZ24gPSBlbmQuc2lnbigpOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gZmllbGRU
eXBlID0gZmllbGQubV9maWVsZDsKLSAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9
PSBsaXRlcmFsRmllbGQgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBlU3Ry
aW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHNpZ24sIG51bWJlclR5
cGUpKTsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGQg
PyBsaXRlcmFsU3RyaW5nIDoganNOb250cml2aWFsU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhV
TnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHN0eWxlLCBzaWduLCBudW1iZXJUeXBlKSk7
CiAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY3JlYXRlUGFydChwYXJ0VHlwZSwgZmllbGQubV9y
YW5nZS5iZWdpbigpLCBmaWVsZC5tX3JhbmdlLmRpc3RhbmNlKCkpOwogICAgICAgICBwYXJ0cy0+
cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwpAQCAtMTUwNyw3ICsxNTA3LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0
Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5
bGUKIAogICAgIGZvciAoYXV0byYgZmllbGQgOiBmbGF0dGVuKSB7CiAgICAgICAgIGF1dG8gZmll
bGRUeXBlID0gZmllbGQubV9maWVsZDsKLSAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlw
ZSA9PSBsaXRlcmFsRmllbGQgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBl
U3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgc3R5bGUsIHNpZ24sIG51bWJl
clR5cGUpKTsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmll
bGQgPyBsaXRlcmFsU3RyaW5nIDoganNOb250cml2aWFsU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmlu
ZyhVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHN0eWxlLCBzaWduLCBudW1iZXJUeXBl
KSk7CiAgICAgICAgIGF1dG8gcGFydFZhbHVlID0ganNTdWJzdHJpbmcodm0sIGZvcm1hdHRlZCwg
ZmllbGQubV9yYW5nZS5iZWdpbigpLCBmaWVsZC5tX3JhbmdlLmRpc3RhbmNlKCkpOwogICAgICAg
ICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwgcGFydFR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmNwcAppbmRleCA2OTU1NmJkMzU2NGNhMWVhZDdmMzhiZGFmN2Y1MTBm
ZDkxMDNjNmM4Li5kOGQ0ZWE4NDI5NzQ3NjBjMDI3YmE1YWMwMGEzMDdkOWRjZjI1Y2JkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9y
bWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIEpTVmFsdWUgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3Vi
CiAgICAgICAgIH0KIAogICAgICAgICBJbnRsRmllbGRJdGVyYXRvciBmaWVsZEl0ZXJhdG9yKCpp
dGVyYXRvci5nZXQoKSk7Ci0gICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJ
bnRlcm5hbChnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpEZWNpbWFsLCBz
dGQ6OnNpZ25iaXQoYWJzVmFsdWUpLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGVG
cm9tRG91YmxlKGFic1ZhbHVlKSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJhdG9yLCBwYXJ0
cywgbnVsbHB0ciwganNTdHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7
CisgICAgICAgIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxP
YmplY3QsIEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlOjpEZWNpbWFsLCBzdGQ6OnNpZ25iaXQoYWJz
VmFsdWUpLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Om51bWJlclR5cGVGcm9tRG91YmxlKGFic1Zh
bHVlKSwgZm9ybWF0dGVkTnVtYmVyLCBmaWVsZEl0ZXJhdG9yLCBwYXJ0cywgbnVsbHB0ciwganNT
dHJpbmcodm0sIHNpbmd1bGFyVW5pdCh1bml0KSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAppbmRleCAxOTBiZWYxMTJj
YzVkYjkxMDgxMWJjZWI4YzQwNGU0MjdjMjkyMGI0Li45YTA5MWRhM2U5OTJmMTI3ZTkwYzAzYTIz
YmE3ZThiMzMwOGM5YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZv
aWQgSlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sIGFycmF5QnVmZmVyU2hhcmluZ01vZGVO
YW1lKHNoYXJpbmdNb2RlKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sIGFycmF5QnVmZmVyU2hhcmluZ01vZGVOYW1lKHNoYXJpbmdNb2RlKSksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgaWYg
KHNoYXJpbmdNb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpIHsKICAgICAg
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+c2xpY2UsIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyKTsKICAgICAgICAgSlNDX05BVElWRV9H
RVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ5dGVMZW5ndGgsIGFy
cmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAppbmRleCBlM2YwM2E0YzA4Zjg0
NjkzYjE2NDQwZjgxYTdjZWE3ZDY4OGVkYWNjLi5lMTE0NjMyNmI2MzFiMTRjNjY2NjcwOGUwMjQ0
ZDdjNTBlNzY5YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVMb2FkZXIuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpT
TW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKICAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVu
ZChqc1N0cmluZyh2bSwgbW9kdWxlS2V5LmltcGwoKSkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQo
anNTdHJpbmcodm0sIFN0cmluZyB7IG1vZHVsZUtleS5pbXBsKCkgfSkpOwogICAgIGFyZ3VtZW50
cy5hcHBlbmQocGFyYW1ldGVycyk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChzY3JpcHRGZXRjaGVy
KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwpAQCAtMzk4LDcgKzM5
OCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihtb2R1bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1
bGVzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoYXV0
byYga2V5IDogbW9kdWxlUmVjb3JkLT5yZXF1ZXN0ZWRNb2R1bGVzKCkpIHsKLSAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGkrKywganNTdHJpbmcodm0sIGtleS5n
ZXQoKSkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaSsr
LCBqc1N0cmluZyh2bSwgU3RyaW5nIHsga2V5LmdldCgpIH0pKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCmluZGV4IDc1MGI4NzYyNjZiYjAyYjIyZWY5OWUzMjEwMWNlMTgwMWRlODYxYmMuLjUz
ZTU1ZDg3YjI3YTIxNjZmMGE5ZjI5ZTE3NDRkN2JjZDc0NDc3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtNDksNiArNDksOCBAQCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAKIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKFZNJik7CiBKU1N0cmlu
ZyoganNTdHJpbmcoVk0mLCBjb25zdCBTdHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcg
aWYgcGFzc2VkIG51bGwgc3RyaW5nCitKU1N0cmluZyoganNTdHJpbmcoVk0mLCBTdHJpbmcmJik7
IC8vIHJldHVybnMgZW1wdHkgc3RyaW5nIGlmIHBhc3NlZCBudWxsIHN0cmluZworSlNTdHJpbmcq
IGpzU3RyaW5nKFZNJiwgU3RyaW5nVmlldyk7IC8vIHJldHVybnMgZW1wdHkgc3RyaW5nIGlmIHBh
c3NlZCBudWxsIHN0cmluZwogCiBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoVk0m
LCBVQ2hhcik7CiBKU1N0cmluZyoganNTdWJzdHJpbmcoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CkBAIC0yNTEsNiArMjUzLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN3YXBUb0F0b21TdHJpbmcoVk0mLCBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+
JiYpIGNvbnN0OwogCiAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYsIGNvbnN0IFN0
cmluZyYpOworICAgIGZyaWVuZCBKU1N0cmluZyoganNTdHJpbmcoVk0mLCBTdHJpbmcmJik7Cisg
ICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYsIFN0cmluZ1ZpZXcpOwogICAgIGZyaWVu
ZCBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyosIEpTU3RyaW5n
Kik7CiAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYsIEpTU3RyaW5nKik7CiAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZyhKU0ds
b2JhbE9iamVjdCosIEpTU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CkBAIC04NzYsNiArODgwLDMz
IEBAIGlubGluZSBKU1N0cmluZyoganNTdHJpbmcoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMpCiAg
ICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUodm0sICpzLmltcGwoKSk7CiB9CiAKK2lubGluZSBK
U1N0cmluZyoganNTdHJpbmcoVk0mIHZtLCBTdHJpbmcmJiBzKQoreworICAgIGludCBzaXplID0g
cy5sZW5ndGgoKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmlu
Z3MuZW1wdHlTdHJpbmcoKTsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIFVDaGFyIGMg
PSBzLmNoYXJhY3RlckF0KDApOworICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJT
dHJpbmcpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3Rl
clN0cmluZyhjKTsKKyAgICB9CisgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUodm0sIHMucmVs
ZWFzZUltcGwoKS5yZWxlYXNlTm9uTnVsbCgpKTsKK30KKworaW5saW5lIEpTU3RyaW5nKiBqc1N0
cmluZyhWTSYgdm0sIFN0cmluZ1ZpZXcgcykKK3sKKyAgICBpbnQgc2l6ZSA9IHMubGVuZ3RoKCk7
CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmVtcHR5U3Ry
aW5nKCk7CisgICAgaWYgKHNpemUgPT0gMSkgeworICAgICAgICBVQ2hhciBjID0gcy5jaGFyYWN0
ZXJBdCgwKTsKKyAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQorICAg
ICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7
CisgICAgfQorICAgIGF1dG8gaW1wbCA9IHMuaXM4Qml0KCkgPyBTdHJpbmdJbXBsOjpjcmVhdGUo
cy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpKSA6IFN0cmluZ0ltcGw6OmNyZWF0ZShzLmNoYXJh
Y3RlcnMxNigpLCBzLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwg
V1RGTW92ZShpbXBsKSk7Cit9CisKIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogYmFzZSwgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuY3BwCmluZGV4IDI2ZDhmOWY3NGQ3MDQ5NDk2MmMzMDc2NjlhZDdlODk4
OTQ4NjIyMWIuLjIyODViM2ZkZWE1MzM5ZGEzNGI4ZWMwMDcxNzI5MmIxMGUyN2JhZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3ltYm9sQ29u
c3RydWN0b3JLZXlGb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgQVNTRVJUKHVpZC5z
eW1ib2xSZWdpc3RyeSgpID09ICZ2bS5zeW1ib2xSZWdpc3RyeSgpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCAmdWlkKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyh2bSwgU3RyaW5nIHsgdWlkIH0pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAppbmRleCBjNzcwZTA0NWQyMGNjZTIzM2Jl
MDhmMGRiOWJlNmJkODM2OGFlZWM5Li5iMGQ2M2RlZjZiZjFkZGViODdmOWFlY2I5NTk3YjRmMzM0
NWIyZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKQEAgLTQ1OCw2ICs0NTgsMzMg
QEAgaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIFVDaGFyIG1hdGNoQ2hhcmFjdGUKICAgICByZXR1cm4gZmluZChjaGFyYWN0ZXJzLCBs
ZW5ndGgsIHN0YXRpY19jYXN0PExDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKIH0KIAor
dGVtcGxhdGUgPHR5cGVuYW1lIFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hh
cmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZlcnNlRmluZElubmVy
KGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoYXJhY3RlcnMsIGNvbnN0IE1hdGNo
Q2hhcmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKK3sKKyAgICAvLyBPcHRpbWl6YXRpb246IGtl
ZXAgYSBydW5uaW5nIGhhc2ggb2YgdGhlIHN0cmluZ3MsCisgICAgLy8gb25seSBjYWxsIGVxdWFs
IGlmIHRoZSBoYXNoZXMgbWF0Y2guCisKKyAgICAvLyBkZWx0YSBpcyB0aGUgbnVtYmVyIG9mIGFk
ZGl0aW9uYWwgdGltZXMgdG8gdGVzdDsgZGVsdGEgPT0gMCBtZWFucyB0ZXN0IG9ubHkgb25jZS4K
KyAgICB1bnNpZ25lZCBkZWx0YSA9IHN0ZDo6bWluKHN0YXJ0LCBsZW5ndGggLSBtYXRjaExlbmd0
aCk7CisKKyAgICB1bnNpZ25lZCBzZWFyY2hIYXNoID0gMDsKKyAgICB1bnNpZ25lZCBtYXRjaEhh
c2ggPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaExlbmd0aDsgKytpKSB7
CisgICAgICAgIHNlYXJjaEhhc2ggKz0gc2VhcmNoQ2hhcmFjdGVyc1tkZWx0YSArIGldOworICAg
ICAgICBtYXRjaEhhc2ggKz0gbWF0Y2hDaGFyYWN0ZXJzW2ldOworICAgIH0KKworICAgIC8vIGtl
ZXAgbG9vcGluZyB1bnRpbCB3ZSBtYXRjaAorICAgIHdoaWxlIChzZWFyY2hIYXNoICE9IG1hdGNo
SGFzaCB8fCAhZXF1YWwoc2VhcmNoQ2hhcmFjdGVycyArIGRlbHRhLCBtYXRjaENoYXJhY3RlcnMs
IG1hdGNoTGVuZ3RoKSkgeworICAgICAgICBpZiAoIWRlbHRhKQorICAgICAgICAgICAgcmV0dXJu
IG5vdEZvdW5kOworICAgICAgICAtLWRlbHRhOworICAgICAgICBzZWFyY2hIYXNoIC09IHNlYXJj
aENoYXJhY3RlcnNbZGVsdGEgKyBtYXRjaExlbmd0aF07CisgICAgICAgIHNlYXJjaEhhc2ggKz0g
c2VhcmNoQ2hhcmFjdGVyc1tkZWx0YV07CisgICAgfQorICAgIHJldHVybiBkZWx0YTsKK30KKwog
Ly8gVGhpcyBpcyBtYXJrZWQgaW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQgaW4gbm9uLWlu
bGluZSBmdW5jdGlvbnMgZm9yIGVhY2ggc3RyaW5nIHR5cGUuCiAvLyBXaGVuIHVzZWQgZGlyZWN0
bHkgaW4gY29kZSBpdCdzIHByb2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUgdGhlIGxvb3Ag
d2lsbCBiZSB1bnJvbGxlZC4KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGlu
ZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGUq
IGNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2lnbmVkIGxlbmd0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5oIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmgKaW5kZXggNWM3N2UyYjQ1YzI5NzY4YjJjZjkwZjcy
ZmE2MGY5ZjQ4OTVmN2RlYi4uNGZmNzA3ZTM5ZTA3YmQ3NmE4MTJlNWEyNmNlMzkzNmRlYjMwYWU5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmgKQEAgLTIwNSw5ICsyMDUsNyBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICBzdHJ1Y3QgU3RyaW5nVmlld0hhc2hUcmFuc2xhdG9yIHsKICAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goU3RyaW5nVmlldyBrZXkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChrZXkuaXM4Qml0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hl
cjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoa2V5LmNoYXJhY3RlcnM4KCksIGtleS5sZW5n
dGgoKSk7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1h
c2tUb3A4Qml0cyhrZXkuY2hhcmFjdGVyczE2KCksIGtleS5sZW5ndGgoKSk7CisgICAgICAgICAg
ICByZXR1cm4ga2V5Lmhhc2goKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFN0cmluZyYgYSwgU3RyaW5nVmlldyBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKaW5kZXggYzc5MjUxNzkzYjdkYTI2Mzk1YzA5NmU0ZTIxM2MzOGU0YzJmYTcyOC4uNThi
ODU0NTZmODZjNWNhODRlZTNlOTVlYTRiMjNiNGI0MzE0NDVjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwCkBAIC05ODMsMzMgKzk4Myw2IEBAIHNpemVfdCBTdHJpbmdJbXBsOjpyZXZl
cnNlRmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0KQogICAgIHJldHVybiBXVEY6
OnJldmVyc2VGaW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBN
YXRjaENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHN0YXRpYyBzaXplX3QgcmV2ZXJzZUZp
bmRJbm5lcihjb25zdCBTZWFyY2hDaGFyYWN0ZXJUeXBlKiBzZWFyY2hDaGFyYWN0ZXJzLCBjb25z
dCBNYXRjaENoYXJhY3RlclR5cGUqIG1hdGNoQ2hhcmFjdGVycywgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCi17Ci0gICAgLy8gT3B0aW1pemF0
aW9uOiBrZWVwIGEgcnVubmluZyBoYXNoIG9mIHRoZSBzdHJpbmdzLAotICAgIC8vIG9ubHkgY2Fs
bCBlcXVhbCBpZiB0aGUgaGFzaGVzIG1hdGNoLgotCi0gICAgLy8gZGVsdGEgaXMgdGhlIG51bWJl
ciBvZiBhZGRpdGlvbmFsIHRpbWVzIHRvIHRlc3Q7IGRlbHRhID09IDAgbWVhbnMgdGVzdCBvbmx5
IG9uY2UuCi0gICAgdW5zaWduZWQgZGVsdGEgPSBzdGQ6Om1pbihzdGFydCwgbGVuZ3RoIC0gbWF0
Y2hMZW5ndGgpOwotICAgIAotICAgIHVuc2lnbmVkIHNlYXJjaEhhc2ggPSAwOwotICAgIHVuc2ln
bmVkIG1hdGNoSGFzaCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoTGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgc2VhcmNoSGFzaCArPSBzZWFyY2hDaGFyYWN0ZXJzW2RlbHRh
ICsgaV07Ci0gICAgICAgIG1hdGNoSGFzaCArPSBtYXRjaENoYXJhY3RlcnNbaV07Ci0gICAgfQot
Ci0gICAgLy8ga2VlcCBsb29waW5nIHVudGlsIHdlIG1hdGNoCi0gICAgd2hpbGUgKHNlYXJjaEhh
c2ggIT0gbWF0Y2hIYXNoIHx8ICFlcXVhbChzZWFyY2hDaGFyYWN0ZXJzICsgZGVsdGEsIG1hdGNo
Q2hhcmFjdGVycywgbWF0Y2hMZW5ndGgpKSB7Ci0gICAgICAgIGlmICghZGVsdGEpCi0gICAgICAg
ICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgICAgIC0tZGVsdGE7Ci0gICAgICAgIHNlYXJjaEhh
c2ggLT0gc2VhcmNoQ2hhcmFjdGVyc1tkZWx0YSArIG1hdGNoTGVuZ3RoXTsKLSAgICAgICAgc2Vh
cmNoSGFzaCArPSBzZWFyY2hDaGFyYWN0ZXJzW2RlbHRhXTsKLSAgICB9Ci0gICAgcmV0dXJuIGRl
bHRhOwotfQotCiBzaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nVmlldyBtYXRj
aFN0cmluZywgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51bGwgb3IgZW1w
dHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmlu
ZGV4IGZhOGFiNGU2MTNjNDZjZWZlMTdmNzcxZTQ5NGQ5ZTFlN2E5ZTMyMTMuLmFmOTZiOTJlZDA1
OTFkYzFmM2JkNTlhZjk2YjQ0MGE5Yjg2ODQ2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmNwcApAQCAtMzU5LDYgKzM1OSwzMSBAQCBTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwV2hp
dGVTcGFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hl
ZENoYXJhY3RlcnMoaXNBU0NJSVNwYWNlPFVDaGFyPik7CiB9CiAKK3NpemVfdCBTdHJpbmdWaWV3
OjpyZXZlcnNlRmluZChTdHJpbmdWaWV3IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29u
c3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBub3RGb3VuZDsKKworICAg
IHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hTdHJpbmcubGVuZ3RoKCk7CisgICAgdW5zaWdu
ZWQgb3VyTGVuZ3RoID0gbGVuZ3RoKCk7CisgICAgaWYgKCFtYXRjaExlbmd0aCkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bWluKHN0YXJ0LCBvdXJMZW5ndGgpOworCisgICAgLy8gQ2hlY2sgc3RhcnQg
JiBtYXRjaExlbmd0aCBhcmUgaW4gcmFuZ2UuCisgICAgaWYgKG1hdGNoTGVuZ3RoID4gb3VyTGVu
Z3RoKQorICAgICAgICByZXR1cm4gbm90Rm91bmQ7CisKKyAgICBpZiAoaXM4Qml0KCkpIHsKKyAg
ICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIHJldmVy
c2VGaW5kSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgc3Rh
cnQsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJ
bm5lcihjaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIG91
ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOworICAgIH0KKworICAgIGlmIChtYXRjaFN0cmluZy5pczhC
aXQoKSkKKyAgICAgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1h
dGNoU3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0YXJ0LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsK
KyAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmcu
Y2hhcmFjdGVyczE2KCksIHN0YXJ0LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKK30KKwogaW50
IGNvZGVQb2ludENvbXBhcmUoU3RyaW5nVmlldyBsaHMsIFN0cmluZ1ZpZXcgcmhzKQogewogICAg
IGJvb2wgbGhzSXM4Qml0ID0gbGhzLmlzOEJpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApp
bmRleCBkZmY0Y2U1OGI0NDdkNmMxN2NkYWNhMTM5ZjllY2I2ODU1ZGI3NmE1Li5iNmZkY2YzNzBm
ZTk1YzkxZGUzMGQwNDNiOTVmYzY5OWZhNzg4MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcu
aApAQCAtOTQsNiArOTQsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4
KCkgY29uc3Q7CiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0OwogCisgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0OworCiAgICAgLy8gUmV0dXJuIGNoYXJhY3RlcnM4KCkgb3Ig
Y2hhcmFjdGVyczE2KCkgZGVwZW5kaW5nIG9uIENoYXJhY3RlclR5cGUuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycygp
IGNvbnN0OwogCkBAIC0xNDcsNiArMTQ5LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgZmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0Owog
CiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CkBAIC00MzYsNiArNDM5LDEzIEBAIGlubGlu
ZSBjb25zdCBVQ2hhciogU3RyaW5nVmlldzo6Y2hhcmFjdGVyczE2KCkgY29uc3QKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihtX2NoYXJhY3RlcnMpOwogfQogCitpbmxpbmUg
dW5zaWduZWQgU3RyaW5nVmlldzo6aGFzaCgpIGNvbnN0Cit7CisgICAgaWYgKGlzOEJpdCgpKQor
ICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhj
aGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSk7CisgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6Y29tcHV0
ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKTsKK30KKwogdGVt
cGxhdGU8PiBBTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBTdHJpbmdWaWV3OjpjaGFyYWN0ZXJz
PExDaGFyPigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlcnM4KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IDM0
YzhkZTYyODRhZmY0MzY3ZWE5ZjZkZjlmZGQ2OTAyNmZhYzNlNmUuLjczZmMwMTM0MmM4YjdmNDE0
Y2M4ZGMxNWM4YmM3ZDVkOTliNDc1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC0yMDY1LDEzICsyMDY1LDEzIEBAIEpT
VmFsdWVSZWYgSlNJUEM6OnByb2Nlc3NUYXJnZXRzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBKCiAgICAgSlNDOjpKU09iamVjdCogcHJvY2Vzc1RhcmdldHNP
YmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KSk7CiAgICAgaW50IGluZGV4ID0gMDsKLSAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0
RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzU3RyaW5nKHZtLCBwcm9j
ZXNzVGFyZ2V0TmFtZVVJKSk7CisgICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sIHBy
b2Nlc3NUYXJnZXROYW1lVUkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAg
IHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4
KyssIEpTQzo6anNTdHJpbmcodm0sIHByb2Nlc3NUYXJnZXROYW1lR1BVKSk7CisgICAgcHJvY2Vz
c1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlND
Ojpqc05vbnRyaXZpYWxTdHJpbmcodm0sIHByb2Nlc3NUYXJnZXROYW1lR1BVKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwog
I2VuZGlmCi0gICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9i
amVjdCwgaW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVOZXR3b3Jr
aW5nKSk7CisgICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9i
amVjdCwgaW5kZXgrKywgSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sIHByb2Nlc3NUYXJnZXRO
YW1lTmV0d29ya2luZykpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKICAgICByZXR1cm4gdG9SZWYodm0sIHByb2Nlc3NUYXJn
ZXRzT2JqZWN0KTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>