<?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>233487</bug_id>
          
          <creation_ts>2021-11-24 21:50:23 -0800</creation_ts>
          <short_desc>[GPU Process] [Filters 10/23] Make FilterEffect appliers take FilterImages in their apply() methods</short_desc>
          <delta_ts>2021-11-29 21:34:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817732</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-24 21:50:23 -0800</bug_when>
    <thetext>Eventually the FilterImage will be removed from FilterEffect. So this is a step towards making the FilterEffect hold the effect data only. To do this change, FilterImage needs to hold two new members: primitiveSubregion and isAlphaImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817734</commentid>
    <comment_count>1</comment_count>
      <attachid>445118</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-24 22:03:23 -0800</bug_when>
    <thetext>Created attachment 445118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817740</commentid>
    <comment_count>2</comment_count>
      <attachid>445118</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-11-24 22:54:48 -0800</bug_when>
    <thetext>Comment on attachment 445118
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        his change, FilterImage needs to hold two new members: primitiveSubregion

&quot;this change&quot;

&gt; Source/WebCore/ChangeLog:13
&gt; +        FilterEffect::setIsAlphaImage() is not needed and isAlphaImage() will be

&quot;will be a&quot;

&gt; Source/WebCore/platform/graphics/filters/FEBlend.cpp:56
&gt; +    FilterImageVector inputs { { *inputEffect(0)-&gt;filterImage() }, { *inputEffect(1)-&gt;filterImage() } };

Are the inner braces needed? The Ref constructor that takes a T&amp; is not explicit, so I think they shouldn&apos;t be needed. (Throughout this patch.)

Also: maybe this helps subsequent patches in your queue, but wouldn&apos;t it be easier to have a function that returns the FilterImageVector by iterating over m_inputEffects and calling `filterImage()` on them all (called `inputEffectImages()` or `inputImages()`)? Is there an advantage to grabbing out input effect #0 and input effect #1 here explicitly?

&gt; Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp:96
&gt; +bool FEColorMatrix::isAlphaImage() const

Since we&apos;re separating the effects from the images, maybe this should be called &quot;producesAlphaImage&quot;, something that sounds less like the effect object is an image itself.

&gt; Source/WebCore/platform/graphics/filters/FEMerge.cpp:46
&gt; +    FilterImageVector inputs;
&gt; +
&gt; +    for (auto&amp; inputEffect : inputEffects())
&gt; +        inputs.append({ *inputEffect-&gt;filterImage() });

(Something like this, as a member function on effect objects, is what I was thinking.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817761</commentid>
    <comment_count>3</comment_count>
      <attachid>445128</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-25 02:34:00 -0800</bug_when>
    <thetext>Created attachment 445128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817762</commentid>
    <comment_count>4</comment_count>
      <attachid>445118</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-25 02:35:42 -0800</bug_when>
    <thetext>Comment on attachment 445118
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/filters/FEBlend.cpp:56
&gt;&gt; +    FilterImageVector inputs { { *inputEffect(0)-&gt;filterImage() }, { *inputEffect(1)-&gt;filterImage() } };
&gt; 
&gt; Are the inner braces needed? The Ref constructor that takes a T&amp; is not explicit, so I think they shouldn&apos;t be needed. (Throughout this patch.)
&gt; 
&gt; Also: maybe this helps subsequent patches in your queue, but wouldn&apos;t it be easier to have a function that returns the FilterImageVector by iterating over m_inputEffects and calling `filterImage()` on them all (called `inputEffectImages()` or `inputImages()`)? Is there an advantage to grabbing out input effect #0 and input effect #1 here explicitly?

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp:96
&gt;&gt; +bool FEColorMatrix::isAlphaImage() const
&gt; 
&gt; Since we&apos;re separating the effects from the images, maybe this should be called &quot;producesAlphaImage&quot;, something that sounds less like the effect object is an image itself.

Done. But I named resultIsAlphaImage() to be consistent with resultColorSpace().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817772</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-25 03:44:51 -0800</bug_when>
    <thetext>Committed r286164 (244547@main): &lt;https://commits.webkit.org/244547@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445128.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817775</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-25 03:45:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/85748077&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445118</attachid>
            <date>2021-11-24 22:03:23 -0800</date>
            <delta_ts>2021-11-24 22:55:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233487-20211124220322.patch</filename>
            <type>text/plain</type>
            <size>103995</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM5ODVhZTBmMjE5YTE1
ZTVhZjVlNzlkZDA2OWE1OWUzMzg2ZTVhNi4uMjVlOGI3YjZiOWM2YTM3OWYxMDI3ODYwODJjMWFi
NjgyNGExYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAyMS0xMS0yNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgRmlsdGVyRWZmZWN0IGFwcGxpZXJzIHRha2UgRmlsdGVySW1hZ2VzIGluIHRoZWlyIGFw
cGx5KCkgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXZlbnR1YWxseSB0aGUgRmlsdGVySW1hZ2Ugd2lsbCBiZSByZW1vdmVkIGZyb20gRmls
dGVyRWZmZWN0LiBTbyB0aGlzIGlzCisgICAgICAgIGEgc3RlcCB0b3dhcmRzIG1ha2luZyB0aGUg
RmlsdGVyRWZmZWN0IGhvbGQgdGhlIGVmZmVjdCBkYXRhIG9ubHkuIFRvIGRvIAorICAgICAgICBo
aXMgY2hhbmdlLCBGaWx0ZXJJbWFnZSBuZWVkcyB0byBob2xkIHR3byBuZXcgbWVtYmVyczogcHJp
bWl0aXZlU3VicmVnaW9uCisgICAgICAgIGFuZCBpc0FscGhhSW1hZ2UuCisKKyAgICAgICAgRmls
dGVyRWZmZWN0OjpzZXRJc0FscGhhSW1hZ2UoKSBpcyBub3QgbmVlZGVkIGFuZCBpc0FscGhhSW1h
Z2UoKSB3aWxsIGJlCisgICAgICAgIHZpcnR1YWwgZnVuY3Rpb24uIFRoZSByZXN1bHQgb2YgaXNB
bHBoYUltYWdlKCkgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIAorICAgICAgICByZXN1bHQgRmlsdGVy
SW1hZ2UuIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjphcHBseSgpIGlzIHRoZSBvbmx5
CisgICAgICAgIHVzZXIgb2YgaXNBbHBoYUltYWdlLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4Ojppc0FscGhhSW1hZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJh
bnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252
b2x2ZU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRN
YXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmlzQWxwaGFJ
bWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1
c3NpYW5CbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5Ojppc0FscGhhSW1hZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RU9mZnNldDo6aXNBbHBoYUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVPZmZzZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OmlzQWxwaGFJbWFnZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6
bWF4RWZmZWN0UmVjdCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBs
eSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVSZXN1bHQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJl
c3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnBpeGVsQnVm
ZmVyUmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Z2V0
UGl4ZWxCdWZmZXJSZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0Ojpjb3B5UGl4ZWxCdWZmZXJSZXN1bHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6OmZpbHRlckltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6aXNBbHBoYUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdDo6c2V0SXNBbHBoYUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6bm9ybWFsaXplZEZsb2F0cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RBcHBsaWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjpG
aWx0ZXJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJ
bWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVySW1hZ2U6OnByaW1pdGl2ZVN1YnJlZ2lv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJJbWFnZTo6aXNBbHBoYUltYWdlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlVmVj
dG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0QXBwbGllci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFQmxlbmRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhTb2Z0d2Fy
ZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeFNvZnR3YXJlQXBw
bGllcjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdh
cmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBs
aWVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlB
cml0aG1ldGljKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVy
OjphcHBseU5vbkFyaXRobWV0aWMpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGVTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBs
aWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVy
OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEcm9wU2hhZG93U29mdHdhcmVBcHBsaWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEcm9wU2hhZG93
U29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRUZsb29kU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
Rmxvb2RTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFRmxvb2RTb2Z0d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVB
cHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBs
aWVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdh
cmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRU1lcmdlU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2VT
b2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL0ZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhv
bG9neVNvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFw
cGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlU29mdHdhcmVBcHBsaWVyOjphcHBs
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVT
b2Z0d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGllci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlQWxw
aGFTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGFTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL1NvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VHcmFwaGljU29mdHdhcmVBcHBsaWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXI6OmFw
cGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJj
ZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRUltYWdlU29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUlt
YWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTExLTI0ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTW92ZSB0aGUg
c29mdHdhcmUgRmlsdGVyRWZmZWN0QXBwbGllcnMgdG8gc2VwYXJhdGUgZmlsZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYWNh
N2MzMmM0NTY4YjQzZTRiOTAxYmRiZDcyYzVmNWEwYmZjZDNjLi5jNmMyNGE0ZmYyNzk1ZjExZDQ1
ZDBlNTAyM2ZjZDZkNDhlODY0YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDkzMSw2ICsxMDkzMSw3IEBACiAJCTcyQTEz
QUQ3Mjc0REU1NzgwMEUyQTg4RSAvKiBTb3VyY2VHcmFwaGljU29mdHdhcmVBcHBsaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJCNEVGNzQyNzRFMjMzMzAwMjkzQzJGIC8qIEZFQmxlbmRTb2Z0
d2FyZUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRkVCbGVuZFNvZnR3YXJlQXBwbGllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkI0RUY3NTI3NEUyMzM0MDAyOTNDMkYgLyog
RkVCbGVuZFNvZnR3YXJlQXBwbGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGRUJsZW5kU29m
dHdhcmVBcHBsaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCNEVGN0My
NzRFRTM3RjAwMjkzQzJGIC8qIEZpbHRlckltYWdlVmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
bHRlckltYWdlVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0
MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVm
ZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZl
ckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTYyM0UxNzMy
ODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjYwMjcsNiArMjYwMjgsNyBAQAogCQkJCTcyNjJENzU2MjcyQTE3NDEwMEM1NkEw
OSAvKiBGaWx0ZXJGdW5jdGlvbi5oICovLAogCQkJCTcyNDM1RUY1MjczRDA3NjcwMDA1RTdFRSAv
KiBGaWx0ZXJJbWFnZS5jcHAgKi8sCiAJCQkJNzI0MzVFRjQyNzNEMDc2NzAwMDVFN0VFIC8qIEZp
bHRlckltYWdlLmggKi8sCisJCQkJNzJCNEVGN0MyNzRFRTM3RjAwMjkzQzJGIC8qIEZpbHRlcklt
YWdlVmVjdG9yLmggKi8sCiAJCQkJNDlFQ0VCNjMxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9w
ZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlFQ0VCNjQxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9w
ZXJhdGlvbi5oICovLAogCQkJCTQ5RUNFQjY1MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVy
YXRpb25zLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IDI5ZGNiMGZiZjRmMWEwOTE2MzBjMjAwMDcxNDQx
NjUwNTJhMmJkYjEuLjE4ZmI4YmI0MjA3OTVjYjg4NTdkZDU5MTNlOTBiOTBjOTI3MWZiZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJs
ZW5kLmNwcApAQCAtNTMsNyArNTMsOCBAQCBib29sIEZFQmxlbmQ6OnNldEJsZW5kTW9kZShCbGVu
ZE1vZGUgbW9kZSkKIAogYm9vbCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3Qg
RmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIoKnRo
aXMpLmFwcGx5KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkpOworICAgIEZpbHRlckltYWdlVmVjdG9y
IGlucHV0cyB7IHsgKmlucHV0RWZmZWN0KDApLT5maWx0ZXJJbWFnZSgpIH0sIHsgKmlucHV0RWZm
ZWN0KDEpLT5maWx0ZXJJbWFnZSgpIH0gfTsKKyAgICByZXR1cm4gRkVCbGVuZFNvZnR3YXJlQXBw
bGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1dHMsICpmaWx0ZXJJbWFnZSgpKTsKIH0KIAog
VGV4dFN0cmVhbSYgRkVCbGVuZDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0
cywgUmVwcmVzZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJp
eC5jcHAKaW5kZXggZDY4NWExNDUwYjQ3NTMyMjVhNzI5MzIxMGFlYzk2MDgzOGQ2MWQzMS4uY2Ux
ZjI3Njk3NTQ0ZTk2NTdkOGIwM2U3MzQwM2RiNjJiMmZhMDIyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
Y3BwCkBAIC05Myw5ICs5MywxNSBAQCBWZWN0b3I8ZmxvYXQ+IEZFQ29sb3JNYXRyaXg6Om5vcm1h
bGl6ZWRGbG9hdHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQogICAgIHJldHVybiBub3Jt
YWxpemVkVmFsdWVzOwogfQogCitib29sIEZFQ29sb3JNYXRyaXg6OmlzQWxwaGFJbWFnZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBGRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNF
VE9BTFBIQTsKK30KKwogYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
Y29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIEZFQ29sb3JNYXRyaXhTb2Z0d2Fy
ZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkpOworICAgIEZpbHRl
ckltYWdlVmVjdG9yIGlucHV0cyB7IHsgKmlucHV0RWZmZWN0KDApLT5maWx0ZXJJbWFnZSgpIH0g
fTsKKyAgICByZXR1cm4gRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHko
ZmlsdGVyLCBpbnB1dHMsICpmaWx0ZXJJbWFnZSgpKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbG9yTWF0cml4VHlwZSYgdHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmgKaW5kZXggNTYwMWViMDk2ODdlODU3YTY2NzVjMTI4NTM2ZWIwNTE4ZDIz
ZDJmYy4uOTZhMGI2NmYxYjUyYTJmYWMzYjg3MjhlNDgwYzY3NDMyMjNhZTM1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGRUNvbG9y
TWF0cml4KENvbG9yTWF0cml4VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsKIAorICAgIGJvb2wgaXNB
bHBoYUltYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBib29sIHBsYXRmb3JtQXBwbHlTb2Z0
d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKaW5kZXggODZm
OWRlMWYwNDdjZjQxYTNlOWRjNTJkZDU5MmY3ZmEzMjEwYmQ1ZS4uMTUwMWJkZDU0ZTIxYzc2OTYw
YjYwMzY1ZGJiMTUzZmVjZTE1ZjQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3Bw
CkBAIC00Niw3ICs0Niw4IEBAIEZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNm
ZXIoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuCiAKIGJvb2wgRkVDb21w
b25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVy
KQogewotICAgIHJldHVybiBGRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyKCp0aGlz
KS5hcHBseShmaWx0ZXIsIGlucHV0RWZmZWN0cygpKTsKKyAgICBGaWx0ZXJJbWFnZVZlY3RvciBp
bnB1dHMgeyB7ICppbnB1dEVmZmVjdCgwKS0+ZmlsdGVySW1hZ2UoKSB9IH07CisgICAgcmV0dXJu
IEZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwg
aW5wdXRzLCAqZmlsdGVySW1hZ2UoKSk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBDb21wb25lbnRUcmFuc2ZlclR5cGUgdHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5jcHAKaW5kZXggZWYzN2U0Y2NkODdiOWRlNWQ2Yjk0MTJkMzhjZmNlMzllMDY1NDQ3Yy4uNDMy
NmFkZjQ2NDNjZThiNWZjNzQ3YWQ3ZjFiNzA4ZjBhNTYzZWVmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAK
QEAgLTEwOSw3ICsxMDksOCBAQCB2b2lkIEZFQ29tcG9zaXRlOjpkZXRlcm1pbmVBYnNvbHV0ZVBh
aW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIAogYm9vbCBGRUNvbXBvc2l0ZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIHJldHVybiBGRUNv
bXBvc2l0ZVNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1dEVmZmVjdHMo
KSk7CisgICAgRmlsdGVySW1hZ2VWZWN0b3IgaW5wdXRzIHsgeyAqaW5wdXRFZmZlY3QoMCktPmZp
bHRlckltYWdlKCkgfSwgeyAqaW5wdXRFZmZlY3QoMSktPmZpbHRlckltYWdlKCkgfSB9OworICAg
IHJldHVybiBGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBp
bnB1dHMsICpmaWx0ZXJJbWFnZSgpKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29u
dm9sdmVNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbnZvbHZlTWF0cml4LmNwcAppbmRleCBmNzhmMDU3NmFmMTgwYzVkODFmMjljMjRhZWRj
ZTExNmZlYzkxY2ZlLi43ODkxYTBmZGE0OGQzMmViMDM2OTBjZDY5ZDE5ZmUzNjIxNzJiNmI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29u
dm9sdmVNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKQEAgLTExNSw3ICsxMTUsOCBAQCBib29sIEZFQ29u
dm9sdmVNYXRyaXg6OnNldFByZXNlcnZlQWxwaGEoYm9vbCBwcmVzZXJ2ZUFscGhhKQogCiBib29s
IEZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZp
bHRlcikKIHsKLSAgICByZXR1cm4gRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllcigqdGhp
cykuYXBwbHkoZmlsdGVyLCBpbnB1dEVmZmVjdHMoKSk7CisgICAgRmlsdGVySW1hZ2VWZWN0b3Ig
aW5wdXRzIHsgeyAqaW5wdXRFZmZlY3QoMCktPmZpbHRlckltYWdlKCkgfSB9OworICAgIHJldHVy
biBGRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlu
cHV0cywgKmZpbHRlckltYWdlKCkpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRWRnZU1vZGVUeXBlJiB0eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1h
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmNwcAppbmRleCBmNGQ1ZjQ5MWExNThlZDdiZTI4YjkyMjE0MjE2NTBiZjM4ZThj
ZWI3Li42ZDlmNjgyYTVjY2NjZjA2MjZkZmU4ZGY4MGI4M2YxYmEzYjM1ZTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlzcGxhY2VtZW50TWFwLmNwcApAQCAtODUsNyArODUsOCBAQCB2b2lkIEZFRGlzcGxhY2VtZW50
TWFwOjp0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGlu
dCBpbgogCiBib29sIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29u
c3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIEZFRGlzcGxhY2VtZW50TWFwU29mdHdh
cmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RWZmZWN0cygpKTsKKyAgICBGaWx0
ZXJJbWFnZVZlY3RvciBpbnB1dHMgeyB7ICppbnB1dEVmZmVjdCgwKS0+ZmlsdGVySW1hZ2UoKSB9
LCB7ICppbnB1dEVmZmVjdCgxKS0+ZmlsdGVySW1hZ2UoKSB9IH07CisgICAgcmV0dXJuIEZFRGlz
cGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0cywg
KmZpbHRlckltYWdlKCkpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgQ2hhbm5lbFNlbGVjdG9yVHlwZSYgdHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcAppbmRleCBlOTY2ZGRiYjcyNWQzNjJiMDkwZmM0MmQ2N2Y4ZDNhNmQ4ZmNjMWRmLi4xZmZm
OGRiYzUyZWI1MGE0M2Q0MDM4Yjk4NmY0MWVmOTc1NTZmZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
CkBAIC02OCw3ICs2OCw4IEBAIHZvaWQgRkVEcm9wU2hhZG93OjpkZXRlcm1pbmVBYnNvbHV0ZVBh
aW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIAogYm9vbCBGRURyb3BTaGFkb3c6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICByZXR1cm4gRkVE
cm9wU2hhZG93U29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RWZmZWN0
cygpKTsKKyAgICBGaWx0ZXJJbWFnZVZlY3RvciBpbnB1dHMgeyB7ICppbnB1dEVmZmVjdCgwKS0+
ZmlsdGVySW1hZ2UoKSB9IH07CisgICAgcmV0dXJuIEZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGll
cigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1dHMsICpmaWx0ZXJJbWFnZSgpKTsKIH0KICAgICAK
IEludE91dHNldHMgRkVEcm9wU2hhZG93OjpvdXRzZXRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGVh
YTc4YzM3NTFiYzA0MjM0OGM2NWUwNGIyMGY2YTRmY2FiYmVmZTAuLmE0ODE0ZWVmZGJjM2ZhMTVm
NDFiMDFhMjhiNDA1ZmFjOWJkODViY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29s
IEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShmbG9hdCBmbG9vZE9wYWNpdHkpCiAKIGJvb2wgRkVG
bG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAg
IHJldHVybiBGRUZsb29kU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0
RWZmZWN0cygpKTsKKyAgICByZXR1cm4gRkVGbG9vZFNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBw
bHkoZmlsdGVyLCB7IH0sICpmaWx0ZXJJbWFnZSgpKTsKIH0KIAogVGV4dFN0cmVhbSYgRkVGbG9v
ZDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVwcmVzZW50YXRpb25U
eXBlIHJlcHJlc2VudGF0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCAzYmNj
NTlmOTAwZDc1N2NkMDkxN2FlN2FjMzM0MDQxYzlhYWJiNGEyLi41ZTNiY2JiOGI4YjQwN2RlMDNh
NmI2MGM4MWVjMTJlNDBhMDFmYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtMTI1LDE3
ICsxMjUsMjMgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9z
aW5nSW50UmVjdChhYnNvbHV0ZVBhaW50UmVjdCkpOwogfQogCi1ib29sIEZFR2F1c3NpYW5CbHVy
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCi17Ci0gICAgcmV0
dXJuIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlu
cHV0RWZmZWN0cygpKTsKLX0KLQogSW50T3V0c2V0cyBGRUdhdXNzaWFuQmx1cjo6b3V0c2V0cygp
IGNvbnN0CiB7CiAgICAgSW50U2l6ZSBvdXRzZXRTaXplID0gY2FsY3VsYXRlT3V0c2V0U2l6ZSh7
IG1fc3RkWCwgbV9zdGRZIH0pOwogICAgIHJldHVybiB7IG91dHNldFNpemUuaGVpZ2h0KCksIG91
dHNldFNpemUud2lkdGgoKSwgb3V0c2V0U2l6ZS5oZWlnaHQoKSwgb3V0c2V0U2l6ZS53aWR0aCgp
IH07CiB9CiAKK2Jvb2wgRkVHYXVzc2lhbkJsdXI6OmlzQWxwaGFJbWFnZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGlucHV0RWZmZWN0KDApLT5pc0FscGhhSW1hZ2UoKTsKK30KKworYm9vbCBGRUdh
dXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQor
eworICAgIEZpbHRlckltYWdlVmVjdG9yIGlucHV0cyB7IHsgKmlucHV0RWZmZWN0KDApLT5maWx0
ZXJJbWFnZSgpIH0gfTsKKyAgICByZXR1cm4gRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIo
KnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRzLCAqZmlsdGVySW1hZ2UoKSk7Cit9CisKIFRleHRT
dHJlYW0mIEZFR2F1c3NpYW5CbHVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
IHRzLCBSZXByZXNlbnRhdGlvblR5cGUgcmVwcmVzZW50YXRpb24pIGNvbnN0CiB7CiAgICAgdHMg
PDwgaW5kZW50IDw8ICJbZmVHYXVzc2lhbkJsdXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCmluZGV4IDkw
ODIyNjQzNGEwOWFkNDMzNDk2YzlkYTFlZGFiN2M0ODgzMjFjMzguLjY4ZWE2YTM0NTIzODZkMTg0
NGJhNzczYTQyYjE4NGViZWNkYmIwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKQEAgLTUxLDYgKzUx
LDggQEAgcHJpdmF0ZToKIAogICAgIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0IG92ZXJyaWRl
OwogCisgICAgYm9vbCBpc0FscGhhSW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIGJvb2wg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgV1RG
OjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJl
cHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCBjY2Rl
NmViODJlMzdjMmUzYjdiZjMyYjc2OTQ3OWFiZWM3ZWIyNmI1Li4zNGZkYWE3MDk5YWRiODJjZmU4
NjE2YTQxMmI5MTIyOWIwYjNiN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTgzLDcgKzgzLDggQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSkKIAogYm9vbCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmls
dGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIEZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXIoKnRo
aXMpLmFwcGx5KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkpOworICAgIEZpbHRlckltYWdlVmVjdG9y
IGlucHV0cyB7IHsgKmlucHV0RWZmZWN0KDApLT5maWx0ZXJJbWFnZSgpIH0gfTsKKyAgICByZXR1
cm4gRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1dHMs
ICpmaWx0ZXJJbWFnZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5k
ZXggM2YzNjIxYzA4NDdjYmEzYTVmOTAxYzk3NTZlZDQ0ODc2NjgyNWMwMC4uMWUzOGJmMmMxYTlm
YmUyYjA3ZTVjYTVjZmNlMDgzYTUxNTk5ZjEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00MCw3ICs0MCwxMiBA
QCBGRU1lcmdlOjpGRU1lcmdlKCkKIAogYm9vbCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIEZFTWVyZ2VTb2Z0d2FyZUFw
cGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkpOworICAgIEZpbHRlcklt
YWdlVmVjdG9yIGlucHV0czsKKworICAgIGZvciAoYXV0byYgaW5wdXRFZmZlY3QgOiBpbnB1dEVm
ZmVjdHMoKSkKKyAgICAgICAgaW5wdXRzLmFwcGVuZCh7ICppbnB1dEVmZmVjdC0+ZmlsdGVySW1h
Z2UoKSB9KTsKKworICAgIHJldHVybiBGRU1lcmdlU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBs
eShmaWx0ZXIsIGlucHV0cywgKmZpbHRlckltYWdlKCkpOwogfQogCiBUZXh0U3RyZWFtJiBGRU1l
cmdlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBSZXByZXNlbnRhdGlv
blR5cGUgcmVwcmVzZW50YXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggMWEyMmI1
MGFjY2Q2MDNlNTY3NTVhYTYxZTZmMDgwZjc0ZWFiY2M0OC4uNGQyNWZmMDE1ZDFiOTA0MmFiYjgy
MmJhZWI3ZDZhZjU0MTZkMzM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtNzksOSArNzksMTUg
QEAgdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZp
bHRlciYgZmlsdGVyKQogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3Qo
cGFpbnRSZWN0KSk7CiB9CiAKK2Jvb2wgRkVNb3JwaG9sb2d5Ojppc0FscGhhSW1hZ2UoKSBjb25z
dAoreworICAgIHJldHVybiBpbnB1dEVmZmVjdCgwKS0+aXNBbHBoYUltYWdlKCk7Cit9CisKIGJv
b2wgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0
ZXIpCiB7Ci0gICAgcmV0dXJuIEZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBw
bHkoZmlsdGVyLCBpbnB1dEVmZmVjdHMoKSk7CisgICAgRmlsdGVySW1hZ2VWZWN0b3IgaW5wdXRz
IHsgeyAqaW5wdXRFZmZlY3QoMCktPmZpbHRlckltYWdlKCkgfSB9OworICAgIHJldHVybiBGRU1v
cnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRzLCAqZmls
dGVySW1hZ2UoKSk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlJiB0eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgK
aW5kZXggNzE5Mzk5OGY4OWU0NzllYmE4ZTBhMzA3NDJkNjg5NmRhMTkxMzE3Ni4uMmRlYjk3Zjkw
NWVkMWI0NWFjNmFmMWRjZGQ2NDcyYTk2ZjYyMDQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCkBAIC01MCw2
ICs1MCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KGNvbnN0IEZpbHRlciYpIG92ZXJyaWRlOwogCisgICAgYm9vbCBpc0FscGhhSW1hZ2UoKSBjb25z
dCBvdmVycmlkZTsKKwogICAgIGJvb2wgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRl
ciYpIG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
T2Zmc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVP
ZmZzZXQuY3BwCmluZGV4IDUyYzliOWMzYmU4ZjJiYjgxN2M1MTMxNTkyODMzOWEzZDE5ZjhkNzcu
LjBhNjA2YzVmZjIxMmQwMmRkOTBmMGRjZGVjNWZjZDIxMTkyMzM4ZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCkBA
IC02NCw5ICs2NCwxNSBAQCB2b2lkIEZFT2Zmc2V0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dChjb25zdCBGaWx0ZXImIGZpbHRlcikKICAgICBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3Np
bmdJbnRSZWN0KHBhaW50UmVjdCkpOwogfQogCitib29sIEZFT2Zmc2V0Ojppc0FscGhhSW1hZ2Uo
KSBjb25zdAoreworICAgIHJldHVybiBpbnB1dEVmZmVjdCgwKS0+aXNBbHBoYUltYWdlKCk7Cit9
CisKIGJvb2wgRkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZp
bHRlcikKIHsKLSAgICByZXR1cm4gRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5
KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkpOworICAgIEZpbHRlckltYWdlVmVjdG9yIGlucHV0cyB7
IHsgKmlucHV0RWZmZWN0KDApLT5maWx0ZXJJbWFnZSgpIH0gfTsKKyAgICByZXR1cm4gRkVPZmZz
ZXRTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRzLCAqZmlsdGVySW1h
Z2UoKSk7CiB9CiAKIFRleHRTdHJlYW0mIEZFT2Zmc2V0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mIHRzLCBSZXByZXNlbnRhdGlvblR5cGUgcmVwcmVzZW50YXRpb24pIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
T2Zmc2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmgKaW5kZXggN2ZmYzU1MjM1NWVjMjJlYzBkNTFmMjNiYTA4ODgwNjUwZWVhYzM2Mi4uNmQx
MGY4NDIxM2M1MzhmNzE2Njg0M2IwY2FmNzNjNDJhYTU3Y2MxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaApAQCAtNDEsNiAr
NDEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChj
b25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAorICAgIGJvb2wgaXNBbHBoYUltYWdlKCkgY29uc3Qg
b3ZlcnJpZGU7CisKICAgICBib29sIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXIm
KSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
Y3BwCmluZGV4IDI0OWNiODcyZTdhMTk4MjczNTQ1OGI2Y2IzNTRiZjQ2MTg2MDBkMTIuLmQ3YmVk
YWQ3Njg3ZWEzMjAyMzRjYzE2NGUzMTVlOTRlMDdjNjA1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTIzLDcgKzIz
LDYgQEAKICNpbmNsdWRlICJGRVRpbGUuaCIKIAogI2luY2x1ZGUgIkZFVGlsZVNvZnR3YXJlQXBw
bGllci5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsOSArMzcsMTUgQEAg
RkVUaWxlOjpGRVRpbGUoKQogewogfQogCitib29sIEZFVGlsZTo6aXNBbHBoYUltYWdlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaW5wdXRFZmZlY3QoMCktPmlzQWxwaGFJbWFnZSgpOworfQorCiBi
b29sIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQog
ewotICAgIHJldHVybiBGRVRpbGVTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwg
aW5wdXRFZmZlY3RzKCkpOworICAgIEZpbHRlckltYWdlVmVjdG9yIGlucHV0cyB7IHsgKmlucHV0
RWZmZWN0KDApLT5maWx0ZXJJbWFnZSgpIH0gfTsKKyAgICByZXR1cm4gRkVUaWxlU29mdHdhcmVB
cHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0cywgKmZpbHRlckltYWdlKCkpOwogfQog
CiBUZXh0U3RyZWFtJiBGRVRpbGU6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYg
dHMsIFJlcHJlc2VudGF0aW9uVHlwZSByZXByZXNlbnRhdGlvbikgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oCmluZGV4IDcxN2I1
YzJmYTk5OWVlZDA3NDUyMjI3NjQ1ZmJiOTNhNmFmODcxMmEuLjFjMTJjMzI0OGE2MWFjYTk5NjA2
NmJiM2Y1MDkyZWI5MzAyNGNhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaApAQCAtMzUsNiArMzUsOCBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlk
ZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgp
KSk7IH0KIAorICAgIGJvb2wgaXNBbHBoYUltYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBi
b29sIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAg
IFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0m
LCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCmlu
ZGV4IDMyMjNhZjc5ZDU5ZjYzMmQ3NmQ3OTYzYjY0MWM1ZjM3ZWI0NzNlMGMuLmU0MTg2YTRiNzQ0
ODJlNTY4NGE1MTc5NWE5ZjVlMjZkNDMxYzc5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAgLTk3
LDcgKzk3LDcgQEAgYm9vbCBGRVR1cmJ1bGVuY2U6OnNldFN0aXRjaFRpbGVzKGJvb2wgc3RpdGNo
KQogCiBib29sIEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRl
ciYgZmlsdGVyKQogewotICAgIHJldHVybiBGRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIoKnRo
aXMpLmFwcGx5KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkpOworICAgIHJldHVybiBGRVR1cmJ1bGVu
Y2VTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgeyB9LCAqZmlsdGVySW1hZ2Uo
KSk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBU
dXJidWxlbmNlVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyLmgKaW5kZXggODg0ZTc4ODdlZWNlZDBkZTdmYzFmMWE0NjU0MzE3
YmYyOThjMGU0MS4uY2RlODFmYjgxZjUwMDViODFmYmQyYTgyZmJiMmE5MjQ0NjMxZGQ0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5o
CkBAIC01Myw2ICs1MywxMSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRSZW5k
ZXJpbmdNb2RlKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUg
PSByZW5kZXJpbmdNb2RlOyB9CiAKKyAgICBGbG9hdFJlY3QgbWF4RWZmZWN0UmVjdChjb25zdCBG
bG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBpbnRlcnNlY3Rpb24ocHJpbWl0aXZlU3VicmVnaW9uLCBtX2ZpbHRlclJlZ2lvbik7CisgICAg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgRmlsdGVyKEZpbHRlcjo6VHlwZSBmaWx0ZXJUeXBlLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlclNjYWxlKQogICAgICAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRl
clR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYWExMGE3ZWYwMTgzMDYyZmIxZTZlZTIwNjdl
Mzc4Yzk2ZWQ4YmUwOS4uMTc2YjBjYzc2MGE1ODJhNjlhYzgzM2I4Zjc0Y2U1Y2RlNmI4M2U1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMTU4LDIwICsxNTgsMTUgQEAgYm9vbCBGaWx0ZXJFZmZl
Y3Q6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgICAgICBmb3IgKGF1dG8mIGluIDog
bV9pbnB1dEVmZmVjdHMpCiAgICAgICAgICAgICBpbi0+Y29ycmVjdFByZW11bHRpcGxpZWRSZXN1
bHRJZk5lZWRlZCgpOwogICAgIH0KLSAgICAKLSAgICBpZiAoIWNyZWF0ZVJlc3VsdCgpKQorCisg
ICAgbV9maWx0ZXJJbWFnZSA9IEZpbHRlckltYWdlOjpjcmVhdGUobV9maWx0ZXJQcmltaXRpdmVT
dWJyZWdpb24sIG1fYWJzb2x1dGVQYWludFJlY3QsIGlzQWxwaGFJbWFnZSgpLCBmaWx0ZXIucmVu
ZGVyaW5nTW9kZSgpLCByZXN1bHRDb2xvclNwYWNlKCkpOworICAgIGlmICghbV9maWx0ZXJJbWFn
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQWRkIHBsYXRmb3JtIHNwZWNpZmlj
IGFwcGx5IGZ1bmN0aW9ucyBoZXJlIGFuZCByZXR1cm4gZWFybGllci4KICAgICByZXR1cm4gcGxh
dGZvcm1BcHBseVNvZnR3YXJlKGZpbHRlcik7CiB9CiAKLWJvb2wgRmlsdGVyRWZmZWN0OjpjcmVh
dGVSZXN1bHQoKQotewotICAgIG1fZmlsdGVySW1hZ2UgPSBGaWx0ZXJJbWFnZTo6Y3JlYXRlKG1f
YWJzb2x1dGVQYWludFJlY3QsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHJlc3VsdENv
bG9yU3BhY2UoKSk7Ci0gICAgcmV0dXJuIG1fZmlsdGVySW1hZ2U7Ci19Ci0KIHZvaWQgRmlsdGVy
RWZmZWN0OjpjbGVhclJlc3VsdCgpCiB7CiAgICAgbV9maWx0ZXJJbWFnZSA9IG51bGxwdHI7CkBA
IC0xODYsMzIgKzE4MSw2IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdHNSZWN1cnNp
dmUoKQogICAgICAgICBlZmZlY3QtPmNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOwogfQogCi1JbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCgpCi17Ci0gICAgaWYgKCFo
YXNSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIG1fZmlsdGVy
SW1hZ2UtPmltYWdlQnVmZmVyKCk7Ci19Ci0KLVBpeGVsQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OnBp
eGVsQnVmZmVyUmVzdWx0KEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQpCi17Ci0g
ICAgaWYgKCFoYXNSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IG1fZmlsdGVySW1hZ2UtPnBpeGVsQnVmZmVyKGFscGhhRm9ybWF0KTsKLX0KLQotc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0OjpnZXRQaXhlbEJ1ZmZlclJlc3VsdChBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKLXsKLSAg
ICBBU1NFUlQoaGFzUmVzdWx0KCkpOwotICAgIHJldHVybiBtX2ZpbHRlckltYWdlLT5nZXRQaXhl
bEJ1ZmZlcihhbHBoYUZvcm1hdCwgc291cmNlUmVjdCwgY29sb3JTcGFjZSk7Ci19Ci0KLXZvaWQg
RmlsdGVyRWZmZWN0Ojpjb3B5UGl4ZWxCdWZmZXJSZXN1bHQoUGl4ZWxCdWZmZXImIGRlc3RpbmF0
aW9uUGl4ZWxCdWZmZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKGhhc1Jlc3VsdCgpKTsKLSAgICBtX2ZpbHRlckltYWdlLT5jb3B5UGl4ZWxCdWZmZXIo
ZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgc291cmNlUmVjdCk7Ci19Ci0KIHZvaWQgRmlsdGVyRWZm
ZWN0Ojpjb3JyZWN0UHJlbXVsdGlwbGllZFJlc3VsdElmTmVlZGVkKCkKIHsKICAgICBpZiAoIWhh
c1Jlc3VsdCgpIHx8ICFtYXlQcm9kdWNlSW52YWxpZFByZW11bHRpcGxpZWRQaXhlbHMoKSkKQEAg
LTIzMyw3ICsyMDIsNyBAQCBUZXh0U3RyZWFtJiBGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIFJlcHJlc2VudGF0aW9uVAogICAgIAogICAgIGlmIChy
ZXByZXNlbnRhdGlvblR5cGUgPT0gUmVwcmVzZW50YXRpb25UeXBlOjpEZWJ1Z2dpbmcpIHsKICAg
ICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwotICAgICAgICB0
cy5kdW1wUHJvcGVydHkoImFscGhhIGltYWdlIiwgbV9hbHBoYUltYWdlKTsKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJhbHBoYSBpbWFnZSIsIGlzQWxwaGFJbWFnZSgpKTsKICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJvcGVyYXRpbmcgY29sb3JzcGFjZSIsIG9wZXJhdGluZ0NvbG9yU3BhY2Uo
KSk7CiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVzdWx0IGNvbG9yc3BhY2UiLCByZXN1bHRD
b2xvclNwYWNlKCkpOwogICAgICAgICB0cyA8PCAiXG4iIDw8IGluZGVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5o
CmluZGV4IDkxNmJiZTgzNDcxYTQxYWUyNWIyMmFjMmI4NjE4ZTJhYjVkZWE2MDYuLmIyZmY2MmI4
NzIxNDUzYTkwNTNhOWNiOTZlODUyY2VmOTE4NTdmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtNDAs
MTYgKzQwLDEyIEBAIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBGaWx0ZXJFZmZlY3QgOiBw
dWJsaWMgRmlsdGVyRnVuY3Rpb24gewogcHVibGljOgotICAgIGJvb2wgY3JlYXRlUmVzdWx0KCk7
CiAgICAgdm9pZCBjbGVhclJlc3VsdCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJSZXN1bHRz
UmVjdXJzaXZlKCk7Ci0KICAgICBib29sIGhhc1Jlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmls
dGVySW1hZ2U7IH0KIAotICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAg
IFBpeGVsQnVmZmVyKiBwaXhlbEJ1ZmZlclJlc3VsdChBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsK
LSAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlclJlc3VsdChBbHBo
YVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBzdGQ6Om9wdGlv
bmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBzdGQ6Om51bGxvcHQpOwotICAgIHZvaWQgY29w
eVBpeGVsQnVmZmVyUmVzdWx0KFBpeGVsQnVmZmVyJiBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KSBjb25zdDsKKyAgICBGaWx0ZXJJbWFnZSogZmlsdGVy
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlckltYWdlLmdldCgpOyB9CisKICAgICB2b2lk
IGNvcnJlY3RQcmVtdWx0aXBsaWVkUmVzdWx0SWZOZWVkZWQoKTsKIAogICAgIEZpbHRlckVmZmVj
dFZlY3RvciYgaW5wdXRFZmZlY3RzKCkgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0KQEAgLTYy
LDEwICs1OCw2IEBAIHB1YmxpYzoKICAgICAvLyBSZWN1cnNlcyBvbiBpbnB1dHMuCiAgICAgRmxv
YXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihjb25zdCBGaWx0ZXImKTsK
IAotICAgIC8vIFNvbGlkIGJsYWNrIGltYWdlIHdpdGggZGlmZmVyZW50IGFscGhhIHZhbHVlcy4K
LSAgICBib29sIGlzQWxwaGFJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFJbWFnZTsgfQot
ICAgIHZvaWQgc2V0SXNBbHBoYUltYWdlKGJvb2wgYWxwaGFJbWFnZSkgeyBtX2FscGhhSW1hZ2Ug
PSBhbHBoYUltYWdlOyB9Ci0KICAgICBJbnRSZWN0IGFic29sdXRlUGFpbnRSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9hYnNvbHV0ZVBhaW50UmVjdDsgfQogICAgIHZvaWQgc2V0QWJzb2x1dGVQYWlu
dFJlY3QoY29uc3QgSW50UmVjdCYgYWJzb2x1dGVQYWludFJlY3QpIHsgbV9hYnNvbHV0ZVBhaW50
UmVjdCA9IGFic29sdXRlUGFpbnRSZWN0OyB9CiAKQEAgLTExNCwxOSArMTA2LDEzIEBAIHB1Ymxp
YzoKICAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG9wZXJhdGluZ0NvbG9yU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQogCisgICAg
Ly8gU29saWQgYmxhY2sgaW1hZ2Ugd2l0aCBkaWZmZXJlbnQgYWxwaGEgdmFsdWVzLgorICAgIHZp
cnR1YWwgYm9vbCBpc0FscGhhSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiByZXN1bHRDb2xvclNwYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBpbnQpIHsg
aW4tPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UobV9vcGVyYXRpbmdDb2xvclNwYWNlKTsgfQog
ICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmKTsKICAgICAKLSAgICBzdGF0aWMgVmVjdG9yPGZsb2F0PiBub3JtYWxpemVkRmxvYXRz
KGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKLSAgICB7Ci0gICAgICAgIFZlY3RvcjxmbG9h
dD4gbm9ybWFsaXplZFZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBub3JtYWxpemVkVmFs
dWVzW2ldID0gbm9ybWFsaXplZEZsb2F0KHZhbHVlc1tpXSk7Ci0gICAgICAgIHJldHVybiBub3Jt
YWxpemVkVmFsdWVzOwotICAgIH0KLQogcHJvdGVjdGVkOgogICAgIHVzaW5nIEZpbHRlckZ1bmN0
aW9uOjpGaWx0ZXJGdW5jdGlvbjsKIApAQCAtMTU4LDcgKzE0NCw2IEBAIHByaXZhdGU6CiAgICAg
Ly8gZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uIG1hcHBlZCB0byBhYnNvbHV0ZSBjb29yZGluYXRl
cyBiZWZvcmUgY2xpcHBpbmcuCiAgICAgRmxvYXRSZWN0IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJy
ZWdpb247CiAKLSAgICBib29sIG1fYWxwaGFJbWFnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hh
c1ggeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNZIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFz
V2lkdGggeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RBcHBsaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdEFwcGxpZXIuaAppbmRleCBmN2E1OGQw
ZjgxMWQyYzY3MTI3MzllMTMwMWU0MzNjYjU1MDI0ZGJkLi5mZTMyNGY3M2QwZDAxNjg4MGMyNzM0
NTBhYmMwYTE0ZmQ4ZWZiM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdEFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdEFwcGxpZXIuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZpbHRlckVmZmVjdFZlY3Rv
ci5oIgorI2luY2x1ZGUgIkZpbHRlckltYWdlVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgRmlsdGVyRWZmZWN0QXBwbGllcigp
ID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZlY3RBcHBsaWVyKCkgPSBkZWZhdWx0
OwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImIGlucHV0cykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBseShjb25z
dCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYg
cmVzdWx0KSA9IDA7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXJFZmZlY3RUeXBlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckltYWdlLmNwcAppbmRleCA4NDMwMjU4ZWYyYTcyNWZhMWZjM2YxZTRjODdhOTAwOTBlZDRl
ZjMzLi43NjkxNjc4NDY5ZDE0OTQ5NmZiYjBiYWQyZWFiZDgzYzhiM2Q0NzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlcklt
YWdlLmNwcApAQCAtMzcsMTQgKzM3LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
UHRyPEZpbHRlckltYWdlPiBGaWx0ZXJJbWFnZTo6Y3JlYXRlKGNvbnN0IEludFJlY3QmIGFic29s
dXRlSW1hZ2VSZWN0LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKK1JlZlB0cjxGaWx0ZXJJbWFnZT4gRmlsdGVySW1h
Z2U6OmNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgSW50
UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIGJvb2wgaXNBbHBoYUltYWdlLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkK
IHsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhhYnNvbHV0ZUlt
YWdlUmVjdC5zaXplKCkpKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbHRlckltYWdlKGFi
c29sdXRlSW1hZ2VSZWN0LCByZW5kZXJpbmdNb2RlLCBjb2xvclNwYWNlKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGaWx0ZXJJbWFnZShwcmltaXRpdmVTdWJyZWdpb24sIGFic29sdXRlSW1h
Z2VSZWN0LCBpc0FscGhhSW1hZ2UsIHJlbmRlcmluZ01vZGUsIGNvbG9yU3BhY2UpKTsKIH0KIAot
RmlsdGVySW1hZ2U6OkZpbHRlckltYWdlKGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSkKLSAgICA6IG1fYWJzb2x1dGVJbWFnZVJlY3QoYWJzb2x1dGVJbWFnZVJl
Y3QpCitGaWx0ZXJJbWFnZTo6RmlsdGVySW1hZ2UoY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVT
dWJyZWdpb24sIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBib29sIGlzQWxwaGFJ
bWFnZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UpCisgICAgOiBtX3ByaW1pdGl2ZVN1YnJlZ2lvbihwcmltaXRpdmVT
dWJyZWdpb24pCisgICAgLCBtX2Fic29sdXRlSW1hZ2VSZWN0KGFic29sdXRlSW1hZ2VSZWN0KQor
ICAgICwgbV9pc0FscGhhSW1hZ2UoaXNBbHBoYUltYWdlKQogICAgICwgbV9yZW5kZXJpbmdNb2Rl
KHJlbmRlcmluZ01vZGUpCiAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1h
Z2UuaAppbmRleCAyNzJjM2UwODBlOWM5MWI2NDRlMzU4ZDVkOTdmNjEyZjY5ZWVhOGVjLi45M2Nk
ZWM4YjgwM2JlMzI3OTdlNmI5Mzg5OTAyZjExYTU2MmEwMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCkBAIC0z
OCwxMCArMzgsMTIgQEAgY2xhc3MgUGl4ZWxCdWZmZXI7CiAKIGNsYXNzIEZpbHRlckltYWdlIDog
cHVibGljIFJlZkNvdW50ZWQ8RmlsdGVySW1hZ2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPEZpbHRlckltYWdlPiBjcmVhdGUoY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3Qs
IFJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworICAgIHN0YXRp
YyBSZWZQdHI8RmlsdGVySW1hZ2U+IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1
YnJlZ2lvbiwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIGJvb2wgaXNBbHBoYUlt
YWdlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIAorICAg
IEZsb2F0UmVjdCBwcmltaXRpdmVTdWJyZWdpb24oKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2
ZVN1YnJlZ2lvbjsgfQogICAgIEludFJlY3QgYWJzb2x1dGVJbWFnZVJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX2Fic29sdXRlSW1hZ2VSZWN0OyB9CiAKKyAgICBib29sIGlzQWxwaGFJbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBbHBoYUltYWdlOyB9CiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9CiAgICAgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNw
YWNlOyB9CiAKQEAgLTU1LDE0ICs1NywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2Zvcm1U
b0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAKIHByaXZhdGU6Ci0g
ICAgRmlsdGVySW1hZ2UoY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIFJlbmRlcmlu
Z01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworICAgIEZpbHRlckltYWdlKGNv
bnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBJbnRSZWN0JiBhYnNvbHV0
ZUltYWdlUmVjdCwgYm9vbCBpc0FscGhhSW1hZ2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYpOwogCiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIHBp
eGVsQnVmZmVyU2xvdChBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKIAogICAgIGJvb2wgcmVxdWly
ZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252ZXJzaW9uKHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRp
b25Db2xvclNwYWNlPikgY29uc3Q7CiAKKyAgICBGbG9hdFJlY3QgbV9wcmltaXRpdmVTdWJyZWdp
b247CiAgICAgSW50UmVjdCBtX2Fic29sdXRlSW1hZ2VSZWN0OwogCisgICAgYm9vbCBtX2lzQWxw
aGFJbWFnZSB7IGZhbHNlIH07CiAgICAgUmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGU7CiAg
ICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFjZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZVZlY3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZVZl
Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZhNzUzNTkyYTdjNmE5ZDJmNmZjNTQ5ZTRkN2VmOTRjZjcyMDA4
ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckltYWdlVmVjdG9yLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGaWx0ZXJJ
bWFnZTsKKwordXNpbmcgRmlsdGVySW1hZ2VWZWN0b3IgPSBWZWN0b3I8UmVmPEZpbHRlckltYWdl
Pj47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXggMDE4YjU3
NjU3MjMwYzNjOWI0NDJkZDI4MWRhMGU5ZmYyZTkyZTYwOS4uMjk3YTNlYmU4YjkyOTA3NTRhOGFi
NTU3NjlmZDIxZDY3YzAwMmJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTQ3LDcgKzQ3LDggQEAg
dm9pZCBTb3VyY2VBbHBoYTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVy
JiBmaWx0ZXIpCiAKIGJvb2wgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25z
dCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICByZXR1cm4gU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxp
ZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkpOworICAgIEZpbHRlckltYWdl
VmVjdG9yIGlucHV0cyB7IHsgKmlucHV0RWZmZWN0KDApLT5maWx0ZXJJbWFnZSgpIH0gfTsKKyAg
ICByZXR1cm4gU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwg
aW5wdXRzLCAqZmlsdGVySW1hZ2UoKSk7CiB9CiAKIFRleHRTdHJlYW0mIFNvdXJjZUFscGhhOjpl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBSZXByZXNlbnRhdGlvblR5cGUp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAppbmRleCAzNDlkYTBkYjlmOGQ0YzZhOWNmOTRhYmUw
OWJlYThhYzc4YWIyYzA4Li4xMDZmNTQ0NjU0MDFkOGY0NjY3MDJmYTgwNmM3MzA1ZGQ4ZWZhNjU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUdyYXBoaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTb3VyY2VHcmFw
aGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImIGZpbHRlcikKIAog
Ym9vbCBTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBm
aWx0ZXIpCiB7Ci0gICAgcmV0dXJuIFNvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIoKnRoaXMp
LmFwcGx5KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkpOworICAgIHJldHVybiBTb3VyY2VHcmFwaGlj
U29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIHsgfSwgKmZpbHRlckltYWdlKCkp
OwogfQogCiBUZXh0U3RyZWFtJiBTb3VyY2VHcmFwaGljOjpleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mIHRzLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRT
b2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCBiNTIzYTJiMjlj
MzgyZWEyOTJmOWJiZWI0NDVhYjY5YTEwNWZkMjViLi40YWY3NzdhNWNjZjJkNTQxN2VkZDQzNTNi
NGI0ZWJhMWE2MGExMGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVCbGVuZFNv
ZnR3YXJlQXBwbGllci5jcHAKQEAgLTM0LDIzICszNCwyMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgIUhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLWJvb2wgRkVCbGVuZFNvZnR3YXJl
QXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBp
bnB1dEVmZmVjdHMpCitib29sIEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZp
bHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1
bHQpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0c1swXS5nZXQoKTsKLSAg
ICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0c1sxXS5nZXQoKTsKKyAgICBhdXRvJiBp
bnB1dCA9IGlucHV0c1swXS5nZXQoKTsKKyAgICBhdXRvJiBpbnB1dDIgPSBpbnB1dHNbMV0uZ2V0
KCk7CiAKLSAgICBhdXRvIHJlc3VsdEltYWdlID0gbV9lZmZlY3QuaW1hZ2VCdWZmZXJSZXN1bHQo
KTsKKyAgICBhdXRvIHJlc3VsdEltYWdlID0gcmVzdWx0LmltYWdlQnVmZmVyKCk7CiAgICAgaWYg
KCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBpbWFnZUJ1
ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIyID0g
aW4yLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdl
QnVmZmVyMikKKyAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dC5pbWFnZUJ1ZmZlcigpOworICAg
IGF1dG8gaW5wdXRJbWFnZTIgPSBpbnB1dDIuaW1hZ2VCdWZmZXIoKTsKKyAgICBpZiAoIWlucHV0
SW1hZ2UgfHwgIWlucHV0SW1hZ2UyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBHcmFw
aGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwotICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIG1fZWZmZWN0LmRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBtX2VmZmVjdC5kcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgeyB7IH0sIGlt
YWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0sIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92
ZXIsIG1fZWZmZWN0LmJsZW5kTW9kZSgpIH0pOworICAgIGF1dG8mIGZpbHRlckNvbnRleHQgPSBy
ZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbnB1dEltYWdlMiwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dDIu
YWJzb2x1dGVJbWFnZVJlY3QoKSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbnB1dEltYWdlLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0LmFi
c29sdXRlSW1hZ2VSZWN0KCkpLCB7IHsgfSwgaW5wdXRJbWFnZS0+bG9naWNhbFNpemUoKSB9LCB7
IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLCBtX2VmZmVjdC5ibGVuZE1vZGUoKSB9KTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
QmxlbmRTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCA5YWRhODQxYzMyYmIwZjIzMDA4ODNhOWZlMmVm
MzI4ZDdhY2I5NGZlLi4xNTAyODUyMDlkNzlmYTc0YTBhMDhjNzU1ODk2NmEyNWMwODBlMDcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3
YXJlL0ZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuaApAQCAt
MzUsNyArMzUsNyBAQCBjbGFzcyBGRUJsZW5kU29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRl
ckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRUJsZW5kPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZTo6QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZm
ZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHkoY29uc3Qg
RmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJl
c3VsdCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29s
b3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyLmNwcApp
bmRleCA2N2VjMGExMTlmNzJhMTY1YjAxNTEzOTljODYyNjJmOTYzYmRhNjY2Li40NGEzOTUwOGFh
ZTkwYjhlYzRjOWQ4N2RiZTA1MTUyOGI5MzQ0MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhTb2Z0d2Fy
ZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTI1OSwyNyAr
MjU5LDI0IEBAIHZvaWQgRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9y
bShQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIpIGNvbnN0CiAgICAgYXBwbHlQbGF0Zm9ybVVuYWNj
ZWxlcmF0ZWQocGl4ZWxCdWZmZXIpOwogfQogCi1ib29sIEZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFw
cGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5w
dXRFZmZlY3RzKQorYm9vbCBGRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25z
dCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYg
cmVzdWx0KQogewotICAgIGF1dG8gaW4gPSBpbnB1dEVmZmVjdHNbMF0uZ2V0KCk7CisgICAgYXV0
byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7CiAKLSAgICBhdXRvIHJlc3VsdEltYWdlID0gbV9l
ZmZlY3QuaW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBhdXRvIHJlc3VsdEltYWdlID0gcmVzdWx0
LmltYWdlQnVmZmVyKCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byBpbkJ1ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAg
IGlmIChpbkJ1ZmZlcikKLSAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VC
dWZmZXIoKmluQnVmZmVyLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXQuaW1hZ2VC
dWZmZXIoKTsKKyAgICBpZiAoaW5wdXRJbWFnZSkKKyAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSkpOwogCi0gICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fZWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSB9OworICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCByZXN1bHQuY29sb3JTcGFjZSgpIH07CiAg
ICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPnRydW5jYXRlZExv
Z2ljYWxTaXplKCkpOwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSByZXN1bHRJbWFnZS0+Z2V0UGl4
ZWxCdWZmZXIoZm9ybWF0LCBpbWFnZVJlY3QpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtX2VmZmVjdC50eXBlKCkgPT0gRkVDT0xPUk1B
VFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEpCi0gICAgICAgIG1fZWZmZWN0LnNldElzQWxwaGFJ
bWFnZSh0cnVlKTsKLQogICAgIGFwcGx5UGxhdGZvcm0oKnBpeGVsQnVmZmVyKTsKICAgICByZXN1
bHRJbWFnZS0+cHV0UGl4ZWxCdWZmZXIoKnBpeGVsQnVmZmVyLCBpbWFnZVJlY3QpOwogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhT
b2Z0d2FyZUFwcGxpZXIuaAppbmRleCAxMzM5NDg5ZTVhM2ZmY2ViZDMyZDlkOGI5ZmRjMDIwZjM5
NWVlODdiLi5hNjYxOTQ1M2E2MDQ1MjQ5OWEwNDg2MWQ3NjUxNjI0NTZlZDlkOTNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
Q29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXIu
aApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBGRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyIDog
cHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRUNvbG9yTQogcHVibGljOgogICAg
IEZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXIoRkVDb2xvck1hdHJpeCYpOwogCi0gICAgYm9v
bCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZm
ZWN0cykgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0
ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBtYXRyaXgoZmxvYXQmIHJlZCwgZmxvYXQmIGdyZWVu
LCBmbG9hdCYgYmx1ZSwgZmxvYXQmIGFscGhhKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb25lbnRUcmFu
c2ZlclNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIuY3Bw
CmluZGV4IGRlNDQyYWRlZjQ5OTA2MTE5NzM5ZTBlM2U1ZjQ1ZTBiNmQxOThhMzUuLmNhMDlkODk2
NjBlZjA3M2ZlN2I4OTQwYThkOGVjZDRjYTExNTc4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb25lbnRUcmFuc2Zl
clNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyLmNw
cApAQCAtMTMxLDE2ICsxMzEsMTYgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVB
cHBsaWVyOjphcHBseVBsYXRmb3JtKFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikKICAgICB9CiB9
CiAKLWJvb2wgRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3Qg
RmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMpCitib29sIEZF
Q29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNv
bnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpCiB7Ci0g
ICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0c1swXS5nZXQoKTsKKyAgICBhdXRvJiBp
bnB1dCA9IGlucHV0c1swXS5nZXQoKTsKICAgICAKLSAgICBhdXRvIGRlc3RpbmF0aW9uUGl4ZWxC
dWZmZXIgPSBtX2VmZmVjdC5waXhlbEJ1ZmZlclJlc3VsdChBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQpOworICAgIGF1dG8gZGVzdGluYXRpb25QaXhlbEJ1ZmZlciA9IHJl
c3VsdC5waXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQp
OwogICAgIGlmICghZGVzdGluYXRpb25QaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYXV0byBkcmF3aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5w
dXRQaXhlbEJ1ZmZlcihpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgaW4tPmNvcHlQaXhl
bEJ1ZmZlclJlc3VsdCgqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZHJhd2luZ1JlY3QpOworICAg
IGF1dG8gZHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxC
dWZmZXIoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSk7CisgICAgaW5wdXQuY29weVBpeGVsQnVm
ZmVyKCpkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBkcmF3aW5nUmVjdCk7CiAKICAgICBhcHBseVBs
YXRmb3JtKCpkZXN0aW5hdGlvblBpeGVsQnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUv
RkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvbmVudFRyYW5zZmVyU29mdHdh
cmVBcHBsaWVyLmgKaW5kZXggNWUzMjFjNzE5M2I5Y2FkNDU3MjE0NjBjN2ViNDM4ZTBiNzAwNDJi
Ny4uY2M5MGI4Yzc2ZTk1ZjdhM2FmZDFmYzIxMzE5OWY3ODY3ODFmMWQyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBv
bmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVB
cHBsaWVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3
YXJlQXBwbGllciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkUKIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlOjpCYXNlOwogCi0gICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXIm
LCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykgb3ZlcnJpZGU7CisgICAg
Ym9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRz
LCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB1c2luZyBM
b29rdXBUYWJsZSA9IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVT
b2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggNTRkNTk5
NzlkYThhYjI0YmJhMjA5MzAzMzYzYzAyNzNlNDZmNWM5OC4uMmM2YmI0YTQwMmJlZDNkZTI3ODNm
NTRmMjQyZmMyODA5YmZhMTMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTEyNiwxOSArMTI2LDE5IEBAIGlubGlu
ZSB2b2lkIEZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtQXJpdGhtZXRp
Yyh1bnNpZ25lZCBjaGFyKiBzCiB9CiAjZW5kaWYKIAotYm9vbCBGRUNvbXBvc2l0ZVNvZnR3YXJl
QXBwbGllcjo6YXBwbHlBcml0aG1ldGljKEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCog
aW4yKQorYm9vbCBGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlBcml0aG1ldGljKEZp
bHRlckltYWdlJiBpbnB1dCwgRmlsdGVySW1hZ2UmIGlucHV0MiwgRmlsdGVySW1hZ2UmIHJlc3Vs
dCkKIHsKLSAgICBhdXRvIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSBtX2VmZmVjdC5waXhlbEJ1
ZmZlclJlc3VsdChBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKTsKKyAgICBh
dXRvIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSByZXN1bHQucGl4ZWxCdWZmZXIoQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCk7CiAgICAgaWYgKCFkZXN0aW5hdGlvblBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBJbnRSZWN0IGVmZmVjdEFEcmF3
aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgYXV0byBzb3VyY2VQaXhlbEJ1ZmZlciA9IGluLT5n
ZXRQaXhlbEJ1ZmZlclJlc3VsdChBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
LCBlZmZlY3RBRHJhd2luZ1JlY3QsIG1fZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7Cisg
ICAgSW50UmVjdCBlZmZlY3RBRHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25P
ZklucHV0UGl4ZWxCdWZmZXIoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSk7CisgICAgYXV0byBz
b3VyY2VQaXhlbEJ1ZmZlciA9IGlucHV0LmdldFBpeGVsQnVmZmVyKEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlByZW11bHRpcGxpZWQsIGVmZmVjdEFEcmF3aW5nUmVjdCwgbV9lZmZlY3Qub3BlcmF0
aW5nQ29sb3JTcGFjZSgpKTsKICAgICBpZiAoIXNvdXJjZVBpeGVsQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBJbnRSZWN0IGVmZmVjdEJEcmF3aW5nUmVjdCA9IG1fZWZmZWN0
LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbjItPmFic29sdXRlUGFpbnRSZWN0
KCkpOwotICAgIGluMi0+Y29weVBpeGVsQnVmZmVyUmVzdWx0KCpkZXN0aW5hdGlvblBpeGVsQnVm
ZmVyLCBlZmZlY3RCRHJhd2luZ1JlY3QpOworICAgIEludFJlY3QgZWZmZWN0QkRyYXdpbmdSZWN0
ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlucHV0Mi5hYnNv
bHV0ZUltYWdlUmVjdCgpKTsKKyAgICBpbnB1dDIuY29weVBpeGVsQnVmZmVyKCpkZXN0aW5hdGlv
blBpeGVsQnVmZmVyLCBlZmZlY3RCRHJhd2luZ1JlY3QpOwogCiAgICAgYXV0byYgc291cmNlUGl4
ZWxBcnJheSA9IHNvdXJjZVBpeGVsQnVmZmVyLT5kYXRhKCk7CiAgICAgYXV0byYgZGVzdGluYXRp
b25QaXhlbEFycmF5ID0gZGVzdGluYXRpb25QaXhlbEJ1ZmZlci0+ZGF0YSgpOwpAQCAtMTQ5LDE1
ICsxNDksMTUgQEAgYm9vbCBGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlBcml0aG1l
dGljKEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCoKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlOb25Bcml0aG1ldGljKEZp
bHRlckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCogaW4yKQorYm9vbCBGRUNvbXBvc2l0ZVNvZnR3
YXJlQXBwbGllcjo6YXBwbHlOb25Bcml0aG1ldGljKEZpbHRlckltYWdlJiBpbnB1dCwgRmlsdGVy
SW1hZ2UmIGlucHV0MiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBhdXRvIHJlc3VsdElt
YWdlID0gbV9lZmZlY3QuaW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBhdXRvIHJlc3VsdEltYWdl
ID0gcmVzdWx0LmltYWdlQnVmZmVyKCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJl
c3VsdCgpOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIyID0gaW4yLT5pbWFnZUJ1ZmZlclJlc3VsdCgp
OwotICAgIGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyMikKKyAgICBhdXRvIGlucHV0
SW1hZ2UgPSBpbnB1dC5pbWFnZUJ1ZmZlcigpOworICAgIGF1dG8gaW5wdXRJbWFnZTIgPSBpbnB1
dDIuaW1hZ2VCdWZmZXIoKTsKKyAgICBpZiAoIWlucHV0SW1hZ2UgfHwgIWlucHV0SW1hZ2UyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0
SW1hZ2UtPmNvbnRleHQoKTsKQEAgLTE2NywzOCArMTY3LDM4IEBAIGJvb2wgRkVDb21wb3NpdGVT
b2Z0d2FyZUFwcGxpZXI6OmFwcGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJFZmZlY3QqIGluLCBGaWx0
ZXJFZmZlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BF
UkFUT1JfT1ZFUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyMiwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRl
UGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0
ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpp
bnB1dEltYWdlMiwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dDIuYWJz
b2x1dGVJbWFnZVJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cigqaW5wdXRJbWFnZSwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC5h
YnNvbHV0ZUltYWdlUmVjdCgpKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRUNPTVBP
U0lURV9PUEVSQVRPUl9JTjogewogICAgICAgICAvLyBBcHBsaWVzIG9ubHkgdG8gdGhlIGludGVy
c2VjdGVkIHJlZ2lvbi4KLSAgICAgICAgSW50UmVjdCBkZXN0aW5hdGlvblJlY3QgPSBpbi0+YWJz
b2x1dGVQYWludFJlY3QoKTsKLSAgICAgICAgZGVzdGluYXRpb25SZWN0LmludGVyc2VjdChpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgICAgICBkZXN0aW5hdGlvblJlY3QuaW50ZXJzZWN0
KG1fZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkpOworICAgICAgICBJbnRSZWN0IGRlc3RpbmF0
aW9uUmVjdCA9IGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCk7CisgICAgICAgIGRlc3RpbmF0aW9u
UmVjdC5pbnRlcnNlY3QoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0KCkpOworICAgICAgICBkZXN0
aW5hdGlvblJlY3QuaW50ZXJzZWN0KHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpKTsKICAgICAg
ICAgaWYgKGRlc3RpbmF0aW9uUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgSW50UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAt
IG1fZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAgSW50UmVj
dCBzb3VyY2VSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCku
bG9jYXRpb24oKTsKLSAgICAgICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVj
dCAtIGluMi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJD
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBGbG9hdFJlY3QoYWRqdXN0ZWRE
ZXN0aW5hdGlvblJlY3QpLCBGbG9hdFJlY3Qoc291cmNlMlJlY3QpKTsKLSAgICAgICAgZmlsdGVy
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBGbG9hdFJlY3QoYWRqdXN0ZWRE
ZXN0aW5hdGlvblJlY3QpLCBGbG9hdFJlY3Qoc291cmNlUmVjdCksIHsgQ29tcG9zaXRlT3BlcmF0
b3I6OlNvdXJjZUluIH0pOworICAgICAgICBJbnRSZWN0IGFkanVzdGVkRGVzdGluYXRpb25SZWN0
ID0gZGVzdGluYXRpb25SZWN0IC0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkubG9jYXRpb24o
KTsKKyAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW5wdXQu
YWJzb2x1dGVJbWFnZVJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICBJbnRSZWN0IHNvdXJjZTJS
ZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0KCkubG9jYXRp
b24oKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2Uy
LCBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QpLCBGbG9hdFJlY3Qoc291cmNlMlJl
Y3QpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2Us
IEZsb2F0UmVjdChhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCksIEZsb2F0UmVjdChzb3VyY2VSZWN0
KSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlSW4gfSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUOgotICAgICAgICBmaWx0ZXJD
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIG1fZWZmZWN0LmRyYXdpbmdSZWdp
b25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVy
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgbV9lZmZlY3QuZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpLCB7IHsgfSwgaW1hZ2VC
dWZmZXIyLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9wZXJhdG9yOjpEZXN0aW5hdGlvbk91
dCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBt
X2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0
KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2Uy
LCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0Mi5hYnNvbHV0ZUltYWdl
UmVjdCgpKSwgeyB7IH0sIGlucHV0SW1hZ2UyLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9w
ZXJhdG9yOjpEZXN0aW5hdGlvbk91dCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRUNP
TVBPU0lURV9PUEVSQVRPUl9BVE9QOgotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcigqaW1hZ2VCdWZmZXIyLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlu
Mi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFn
ZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCB7IHsgfSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXpl
KCkgfSwgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZUF0b3ApOworICAgICAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVy
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIG1fZWZmZWN0LmRyYXdpbmdSZWdp
b25PZklucHV0SW1hZ2UoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSksIHsgeyB9LCBpbnB1dElt
YWdlLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VBdG9wKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUjoKLSAgICAg
ICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgbV9lZmZlY3Qu
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAg
ICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBtX2VmZmVj
dC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgeyB7
IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9wZXJhdG9yOjpYT1Ip
OworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIG1f
ZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0
KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2Us
IG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW5wdXQuYWJzb2x1dGVJbWFnZVJl
Y3QoKSksIHsgeyB9LCBpbnB1dEltYWdlLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9wZXJh
dG9yOjpYT1IpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFU
T1JfQVJJVEhNRVRJQzoKQEAgLTIwNiwyMiArMjA2LDIyIEBAIGJvb2wgRkVDb21wb3NpdGVTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJF
ZmZlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFU
T1JfTElHSFRFUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyMiwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRl
UGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0
ZVBhaW50UmVjdCgpKSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBv
c2l0ZU9wZXJhdG9yOjpQbHVzTGlnaHRlcik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbnB1dEltYWdlMiwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbnB1dDIuYWJzb2x1dGVJbWFnZVJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJ
bWFnZShpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgpKSwgeyB7IH0sIGlucHV0SW1hZ2UtPmxvZ2lj
YWxTaXplKCkgfSwgQ29tcG9zaXRlT3BlcmF0b3I6OlBsdXNMaWdodGVyKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRkVDb21wb3NpdGVTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYgaW5wdXRFZmZlY3RzKQorYm9vbCBGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHko
Y29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1h
Z2UmIHJlc3VsdCkKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3RzWzBdLmdl
dCgpOwotICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3RzWzFdLmdldCgpOworICAg
IGF1dG8mIGlucHV0ID0gaW5wdXRzWzBdLmdldCgpOworICAgIGF1dG8mIGlucHV0MiA9IGlucHV0
c1sxXS5nZXQoKTsKIAogICAgIGlmIChtX2VmZmVjdC5vcGVyYXRpb24oKSA9PSBGRUNPTVBPU0lU
RV9PUEVSQVRPUl9BUklUSE1FVElDKQotICAgICAgICByZXR1cm4gYXBwbHlBcml0aG1ldGljKGlu
LCBpbjIpOwotICAgIHJldHVybiBhcHBseU5vbkFyaXRobWV0aWMoaW4sIGluMik7CisgICAgICAg
IHJldHVybiBhcHBseUFyaXRobWV0aWMoaW5wdXQsIGlucHV0MiwgcmVzdWx0KTsKKyAgICByZXR1
cm4gYXBwbHlOb25Bcml0aG1ldGljKGlucHV0LCBpbnB1dDIsIHJlc3VsdCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3Np
dGVTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCAyNjA5ZjU5YWY5NzJlNGI1YjQwZGIzNjE1MjFlMGVk
OWQ3ZTkxOWVkLi44NmFlMDJmMjMxYjVhMTJlMWUwMTYyOTk3OTFlYzVkNWFhNDIwYWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5o
CkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyIDogcHVi
bGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRUNvbXBvc2l0CiBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3Qg
RmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMpIG92ZXJyaWRlOworICAgIGJvb2wgYXBw
bHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVy
SW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHVpbnQ4X3Qg
Y2xhbXBCeXRlKGludCk7CkBAIC00Nyw4ICs0Nyw4IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMg
aW5saW5lIHZvaWQgYXBwbHlQbGF0Zm9ybUFyaXRobWV0aWModW5zaWduZWQgY2hhciogc291cmNl
LCB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbiwgaW50IHBpeGVsQXJyYXlMZW5ndGgsIGZsb2F0
IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsKIAotICAgIGJvb2wgYXBwbHlBcml0
aG1ldGljKEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCogaW4yKTsKLSAgICBib29sIGFw
cGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMik7Cisg
ICAgYm9vbCBhcHBseUFyaXRobWV0aWMoRmlsdGVySW1hZ2UmIGlucHV0LCBGaWx0ZXJJbWFnZSYg
aW5wdXQyLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KTsKKyAgICBib29sIGFwcGx5Tm9uQXJpdGhtZXRp
YyhGaWx0ZXJJbWFnZSYgaW5wdXQsIEZpbHRlckltYWdlJiBpbnB1dDIsIEZpbHRlckltYWdlJiBy
ZXN1bHQpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0
cml4U29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAKaW5k
ZXggYWI4YWE4NjdlYWI5ZjI3NTEwNGU3NTczZDljMTA5Yzk4NTZmMGM2NC4uOGViMmFhYzY0NTg0
YzcxMjVjZjBmYWU4MzhkNTUyMDI4Nzk3NTU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdh
cmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0yODYs
MjQgKzI4NiwyNCBAQCB2b2lkIEZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5
UGxhdGZvcm0oUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEpCiAgICAgICAgIHNldE91dGVyUGl4
ZWxzKHBhaW50aW5nRGF0YSwgY2xpcFJpZ2h0LCBwYWludGluZ0RhdGEudGFyZ2V0T2Zmc2V0Lnko
KSwgcGFpbnRpbmdEYXRhLndpZHRoLCBjbGlwQm90dG9tKTsKIH0KIAotYm9vbCBGRUNvbnZvbHZl
TWF0cml4U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJF
ZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykKK2Jvb2wgRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJl
QXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlu
cHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5w
dXRFZmZlY3RzWzBdLmdldCgpOworICAgIGF1dG8mIGlucHV0ID0gaW5wdXRzWzBdLmdldCgpOwog
CiAgICAgYXV0byBhbHBoYUZvcm1hdCA9IG1fZWZmZWN0LnByZXNlcnZlQWxwaGEoKSA/IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCA6IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlByZW11bHRpcGxpZWQ7Ci0gICAgYXV0byBkZXN0aW5hdGlvblBpeGVsQnVmZmVyID0gbV9l
ZmZlY3QucGl4ZWxCdWZmZXJSZXN1bHQoYWxwaGFGb3JtYXQpOworICAgIGF1dG8gZGVzdGluYXRp
b25QaXhlbEJ1ZmZlciA9IHJlc3VsdC5waXhlbEJ1ZmZlcihhbHBoYUZvcm1hdCk7CiAgICAgaWYg
KCFkZXN0aW5hdGlvblBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIGVmZmVjdERyYXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBp
eGVsQnVmZmVyKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBhdXRvIHNvdXJjZVBpeGVs
QnVmZmVyID0gaW4tPmdldFBpeGVsQnVmZmVyUmVzdWx0KGFscGhhRm9ybWF0LCBlZmZlY3REcmF3
aW5nUmVjdCwgbV9lZmZlY3Qub3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKKyAgICBhdXRvIGVmZmVj
dERyYXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVy
KGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpOworICAgIGF1dG8gc291cmNlUGl4ZWxCdWZmZXIg
PSBpbnB1dC5nZXRQaXhlbEJ1ZmZlcihhbHBoYUZvcm1hdCwgZWZmZWN0RHJhd2luZ1JlY3QsIG1f
ZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAgICAgaWYgKCFzb3VyY2VQaXhlbEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byYgc291cmNlUGl4ZWxBcnJheSA9
IHNvdXJjZVBpeGVsQnVmZmVyLT5kYXRhKCk7CiAgICAgYXV0byYgZGVzdGluYXRpb25QaXhlbEFy
cmF5ID0gZGVzdGluYXRpb25QaXhlbEJ1ZmZlci0+ZGF0YSgpOwogICAgIAotICAgIGF1dG8gcGFp
bnRTaXplID0gbV9lZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7CisgICAgYXV0byBw
YWludFNpemUgPSByZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3QoKS5zaXplKCk7CiAKICAgICBQYWlu
dGluZ0RhdGEgcGFpbnRpbmdEYXRhID0gewogICAgICAgICBzb3VyY2VQaXhlbEFycmF5LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFw
cGxpZXIuaAppbmRleCAyNGQ2YzA4ZGE3OWMxNzdjYWQ4NzE3YWY4YzlkMjIyOWMyZGVmZTgxLi5k
MWQxOWE1M2YwMDEwZDc4NjcxYzcxNGJmM2M1ZWQ2ZjlkNDBmMDk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVN
YXRyaXhTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuaApA
QCAtMzcsNyArMzcsNyBAQCBjbGFzcyBGRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyIDog
cHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRUNvbgogcHVibGljOgogICAgIHVz
aW5nIEJhc2U6OkJhc2U7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5
KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlcklt
YWdlJiByZXN1bHQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBQYWludGluZ0Rh
dGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50
TWFwU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCBkYjNjMjFjM2Y2NDIzZGQ3MmE3MjMzMDdiZDk0
NDQzODk1MzBhNjk3Li5kOTBjZjg1NTdiYzQxOGM1YmVhM2E0NGE4ZWMyZjY3NGI5MGViNWZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3
YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50TWFw
U29mdHdhcmVBcHBsaWVyLmNwcApAQCAtNDksMzIgKzQ5LDMyIEBAIGludCBGRURpc3BsYWNlbWVu
dE1hcFNvZnR3YXJlQXBwbGllcjo6eUNoYW5uZWxJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZWZmZWN0LnlDaGFubmVsU2VsZWN0b3IoKSAtIDE7CiB9CiAKLWJvb2wgRkVEaXNwbGFjZW1lbnRN
YXBTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykKK2Jvb2wgRkVEaXNwbGFjZW1lbnRNYXBTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFn
ZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KQogewotICAgIEZpbHRlckVmZmVj
dCogaW4gPSBpbnB1dEVmZmVjdHNbMF0uZ2V0KCk7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBp
bnB1dEVmZmVjdHNbMV0uZ2V0KCk7CisgICAgYXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7
CisgICAgYXV0byYgaW5wdXQyID0gaW5wdXRzWzFdLmdldCgpOwogCi0gICAgYXV0byBkZXN0aW5h
dGlvblBpeGVsQnVmZmVyID0gbV9lZmZlY3QucGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCk7CisgICAgYXV0byBkZXN0aW5hdGlvblBpeGVsQnVm
ZmVyID0gcmVzdWx0LnBpeGVsQnVmZmVyKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRp
cGxpZWQpOwogICAgIGlmICghZGVzdGluYXRpb25QaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgYXV0byYgZGVzdGluYXRpb25QaXhlbEFycmF5ID0gZGVzdGluYXRpb25Q
aXhlbEJ1ZmZlci0+ZGF0YSgpOwogCi0gICAgYXV0byBlZmZlY3RBRHJhd2luZ1JlY3QgPSBtX2Vm
ZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpOwotICAgIGF1dG8gaW5wdXRQaXhlbEJ1ZmZlciA9IGluLT5nZXRQaXhlbEJ1ZmZlclJl
c3VsdChBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBlZmZlY3RBRHJhd2lu
Z1JlY3QpOworICAgIGF1dG8gZWZmZWN0QURyYXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVk
UmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpOworICAg
IGF1dG8gaW5wdXRQaXhlbEJ1ZmZlciA9IGlucHV0LmdldFBpeGVsQnVmZmVyKEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIGVmZmVjdEFEcmF3aW5nUmVjdCk7CiAKLSAgICBh
dXRvIGVmZmVjdEJEcmF3aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQ
aXhlbEJ1ZmZlcihpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpOworICAgIGF1dG8gZWZmZWN0QkRy
YXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlu
cHV0Mi5hYnNvbHV0ZUltYWdlUmVjdCgpKTsKICAgICAvLyBUaGUgY2FsY3VsYXRpb25zIHVzaW5n
IHRoZSBwaXhlbCB2YWx1ZXMgZnJvbSDigJhpbjLigJkgYXJlIHBlcmZvcm1lZCB1c2luZyBub24t
cHJlbXVsdGlwbGllZCBjb2xvciB2YWx1ZXMuCi0gICAgYXV0byBkaXNwbGFjZW1lbnRQaXhlbEJ1
ZmZlciA9IGluMi0+Z2V0UGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkLCBlZmZlY3RCRHJhd2luZ1JlY3QpOworICAgIGF1dG8gZGlzcGxhY2Vt
ZW50UGl4ZWxCdWZmZXIgPSBpbnB1dDIuZ2V0UGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBlZmZlY3RCRHJhd2luZ1JlY3QpOwogICAgIAogICAgIGlm
ICghaW5wdXRQaXhlbEJ1ZmZlciB8fCAhZGlzcGxhY2VtZW50UGl4ZWxCdWZmZXIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8mIGlucHV0SW1hZ2UgPSBpbnB1dFBpeGVsQnVmZmVy
LT5kYXRhKCk7Ci0gICAgYXV0byYgZGlzcGxhY2VtZW50SW1hZ2UgPSBkaXNwbGFjZW1lbnRQaXhl
bEJ1ZmZlci0+ZGF0YSgpOwotICAgIEFTU0VSVChpbnB1dEltYWdlLmxlbmd0aCgpID09IGRpc3Bs
YWNlbWVudEltYWdlLmxlbmd0aCgpKTsKKyAgICBhdXRvJiBpbnB1dFBpeGVsQXJyYXkgPSBpbnB1
dFBpeGVsQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byYgZGlzcGxhY2VtZW50UGl4ZWxBcnJheSA9
IGRpc3BsYWNlbWVudFBpeGVsQnVmZmVyLT5kYXRhKCk7CisgICAgQVNTRVJUKGlucHV0UGl4ZWxB
cnJheS5sZW5ndGgoKSA9PSBkaXNwbGFjZW1lbnRQaXhlbEFycmF5Lmxlbmd0aCgpKTsKIAotICAg
IEludFNpemUgcGFpbnRTaXplID0gbV9lZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7
CisgICAgSW50U2l6ZSBwYWludFNpemUgPSByZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3QoKS5zaXpl
KCk7CiAKICAgICBGbG9hdFNpemUgc2NhbGUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7
IG1fZWZmZWN0LnNjYWxlKCksIG1fZWZmZWN0LnNjYWxlKCkgfSk7CiAgICAgZmxvYXQgc2NhbGVG
b3JDb2xvclggPSBzY2FsZS53aWR0aCgpIC8gMjU1LjA7CkBAIC05Myw4ICs5Myw4IEBAIGJvb2wg
RkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmls
dGVyLCBjb25zdCBGaWx0ZXJFCiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgcGFpbnRTaXpl
LndpZHRoKCk7ICsreCkgewogICAgICAgICAgICAgaW50IGRlc3RpbmF0aW9uSW5kZXggPSBsaW5l
U3RhcnRPZmZzZXQgKyB4ICogNDsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaW50IHNyY1gg
PSB4ICsgc3RhdGljX2Nhc3Q8aW50PihzY2FsZUZvckNvbG9yWCAqIGRpc3BsYWNlbWVudEltYWdl
Lml0ZW0oZGVzdGluYXRpb25JbmRleCArIGRpc3BsYWNlbWVudENoYW5uZWxYKSArIHNjYWxlZE9m
ZnNldFgpOwotICAgICAgICAgICAgaW50IHNyY1kgPSB5ICsgc3RhdGljX2Nhc3Q8aW50PihzY2Fs
ZUZvckNvbG9yWSAqIGRpc3BsYWNlbWVudEltYWdlLml0ZW0oZGVzdGluYXRpb25JbmRleCArIGRp
c3BsYWNlbWVudENoYW5uZWxZKSArIHNjYWxlZE9mZnNldFkpOworICAgICAgICAgICAgaW50IHNy
Y1ggPSB4ICsgc3RhdGljX2Nhc3Q8aW50PihzY2FsZUZvckNvbG9yWCAqIGRpc3BsYWNlbWVudFBp
eGVsQXJyYXkuaXRlbShkZXN0aW5hdGlvbkluZGV4ICsgZGlzcGxhY2VtZW50Q2hhbm5lbFgpICsg
c2NhbGVkT2Zmc2V0WCk7CisgICAgICAgICAgICBpbnQgc3JjWSA9IHkgKyBzdGF0aWNfY2FzdDxp
bnQ+KHNjYWxlRm9yQ29sb3JZICogZGlzcGxhY2VtZW50UGl4ZWxBcnJheS5pdGVtKGRlc3RpbmF0
aW9uSW5kZXggKyBkaXNwbGFjZW1lbnRDaGFubmVsWSkgKyBzY2FsZWRPZmZzZXRZKTsKIAogICAg
ICAgICAgICAgdW5zaWduZWQqIGRlc3RpbmF0aW9uUGl4ZWxQdHIgPSByZWludGVycHJldF9jYXN0
PHVuc2lnbmVkKj4oZGVzdGluYXRpb25QaXhlbEFycmF5LmRhdGEoKSArIGRlc3RpbmF0aW9uSW5k
ZXgpOwogICAgICAgICAgICAgaWYgKHNyY1ggPCAwIHx8IHNyY1ggPj0gcGFpbnRTaXplLndpZHRo
KCkgfHwgc3JjWSA8IDAgfHwgc3JjWSA+PSBwYWludFNpemUuaGVpZ2h0KCkpIHsKQEAgLTEwMiw3
ICsxMDIsNyBAQCBib29sIEZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyOjphcHBseShj
b25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyRQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAqZGVzdGluYXRpb25QaXhlbFB0ciA9
ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4oaW5wdXRJbWFnZS5kYXRhKCkgKyBieXRlT2Zm
c2V0T2ZQaXhlbChzcmNYLCBzcmNZLCByb3dCeXRlcykpOworICAgICAgICAgICAgKmRlc3RpbmF0
aW9uUGl4ZWxQdHIgPSAqcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KGlucHV0UGl4ZWxBcnJh
eS5kYXRhKCkgKyBieXRlT2Zmc2V0T2ZQaXhlbChzcmNYLCBzcmNZLCByb3dCeXRlcykpOwogICAg
ICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlz
cGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyLmgKaW5kZXggOWU2Y2E2ZWE1YzU0MTgxMmUwMmUw
OTM0M2M4OTdjOGU3M2JhNjc2Zi4uYjg1N2NmODU4N2ZlMzIwOGEyOWI2YmUyNWQxZDMyYWIwYzNh
MmU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEaXNwbGFjZW1l
bnRNYXBTb2Z0d2FyZUFwcGxpZXIuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBGRURpc3BsYWNl
bWVudE1hcFNvZnR3YXJlQXBwbGllciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxp
ZXI8RkVEaQogcHVibGljOgogICAgIEZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyKEZF
RGlzcGxhY2VtZW50TWFwJik7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0
IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFw
cGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRl
ckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgYnl0ZU9mZnNldE9mUGl4ZWwodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWdu
ZWQgcm93Qnl0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJvcFNoYWRv
d1NvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggZTE3YTYxYjczMzkwMjMzMTJkYmI2ZmZlMDVkNTQ0
ODQ5OGMyODE0NC4uNzY0MTgzM2JkMGY0OWJjMzZiNzlhZTUwMmI5NWMxMGRjZDEwYTEyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEcm9wU2hhZG93U29mdHdhcmVBcHBs
aWVyLmNwcApAQCAtMzAsMzMgKzMwLDMzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9v
bCBGRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVy
LCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykKK2Jvb2wgRkVEcm9wU2hh
ZG93U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmls
dGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBGaWx0
ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3RzWzBdLmdldCgpOworICAgIGF1dG8mIGlucHV0ID0g
aW5wdXRzWzBdLmdldCgpOwogCi0gICAgYXV0byByZXN1bHRJbWFnZSA9IG1fZWZmZWN0LmltYWdl
QnVmZmVyUmVzdWx0KCk7CisgICAgYXV0byByZXN1bHRJbWFnZSA9IHJlc3VsdC5pbWFnZUJ1ZmZl
cigpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IEZsb2F0U2l6ZSBibHVyUmFkaXVzID0gMiAqIGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsg
bV9lZmZlY3Quc3RkRGV2aWF0aW9uWCgpLCBtX2VmZmVjdC5zdGREZXZpYXRpb25ZKCkgfSk7CiAg
ICAgRmxvYXRTaXplIG9mZnNldCA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9lZmZl
Y3QuZHgoKSwgbV9lZmZlY3QuZHkoKSB9KTsKIAotICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9u
ID0gbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKSk7CisgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBtX2VmZmVjdC5kcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpOwogICAgIEZsb2F0UmVj
dCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldChkcmF3aW5nUmVnaW9uKTsKICAgICBkcmF3aW5nUmVn
aW9uV2l0aE9mZnNldC5tb3ZlKG9mZnNldCk7CiAKLSAgICBhdXRvIHNvdXJjZUltYWdlID0gaW4t
PmltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYgKCFzb3VyY2VJbWFnZSkKKyAgICBhdXRvIGlu
cHV0SW1hZ2UgPSBpbnB1dC5pbWFnZUJ1ZmZlcigpOworICAgIGlmICghaW5wdXRJbWFnZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiByZXN1bHRDb250ZXh0
ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKG1f
ZWZmZWN0LnNoYWRvd09wYWNpdHkoKSk7Ci0gICAgcmVzdWx0Q29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKnNvdXJjZUltYWdlLCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldCk7CisgICAgcmVzdWx0Q29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0
KTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKDEpOwogCiAgICAgU2hhZG93Qmx1ciBjb250
ZXh0U2hhZG93KGJsdXJSYWRpdXMsIG9mZnNldCwgbV9lZmZlY3Quc2hhZG93Q29sb3IoKSk7CiAK
LSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQ
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fZWZmZWN0LnJlc3VsdENvbG9yU3Bh
Y2UoKSB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgcmVzdWx0LmNvbG9yU3Bh
Y2UoKSB9OwogICAgIEludFJlY3Qgc2hhZG93QXJlYShJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+
dHJ1bmNhdGVkTG9naWNhbFNpemUoKSk7CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHJlc3VsdElt
YWdlLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHNoYWRvd0FyZWEpOwogICAgIGlmICghcGl4ZWxC
dWZmZXIpCkBAIC02OCwxMCArNjgsMTAgQEAgYm9vbCBGRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZlY3QKICAgICBy
ZXN1bHRJbWFnZS0+cHV0UGl4ZWxCdWZmZXIoKnBpeGVsQnVmZmVyLCBzaGFkb3dBcmVhKTsKIAog
ICAgIHJlc3VsdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9y
OjpTb3VyY2VJbik7Ci0gICAgcmVzdWx0Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBtX2VmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1fZWZmZWN0LnNo
YWRvd0NvbG9yKCkpOworICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkuc2l6ZSgpKSwgbV9lZmZlY3Quc2hh
ZG93Q29sb3IoKSk7CiAgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlT3BlcmF0b3I6OkRlc3RpbmF0aW9uT3Zlcik7CiAKLSAgICByZXN1bHRJbWFnZS0+Y29u
dGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIGRyYXdpbmdSZWdpb24pOworICAg
IHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBkcmF3
aW5nUmVnaW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0
d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVEcm9wU2hhZG93U29mdHdhcmVBcHBsaWVyLmgKaW5kZXggNDVmNmMwZjNlZTc2
MTc4NjJiNTYxZWNmMmM2NTY0OTE0YTg2ZDU4Zi4uYjRhODkzYjNkYTc5MGM0NmJiOGZjZTY2MmFm
ZjdjMzRiZjA4NzUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJvcFNo
YWRvd1NvZnR3YXJlQXBwbGllci5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEZFRHJvcFNoYWRv
d1NvZnR3YXJlQXBwbGllciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVE
cm9wU2hhCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIGJvb2wgYXBwbHko
Y29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMpIG92
ZXJyaWRlOworICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VW
ZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRmxvb2RTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUZsb29kU29m
dHdhcmVBcHBsaWVyLmNwcAppbmRleCA4MDNlMGUyYmYxYzMxYjVkZjg0MTYzYTc0YjRjM2I2ZjRk
YWMwMTFjLi4zMWRhOGI0MDUyY2JiZGNiMWExMGI0OTgzNWI2MjVjZDAwNjMxNmZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
Rmxvb2RTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVGbG9vZFNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTMw
LDE0ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRkVGbG9vZFNvZnR3
YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9y
JikKK2Jvb2wgRkVGbG9vZFNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29u
c3QgRmlsdGVySW1hZ2VWZWN0b3ImLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KQogewotICAgIGF1dG8g
cmVzdWx0SW1hZ2UgPSBtX2VmZmVjdC5pbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIGF1dG8gcmVz
dWx0SW1hZ2UgPSByZXN1bHQuaW1hZ2VCdWZmZXIoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGNvbG9yID0gbV9lZmZlY3QuZmxvb2RD
b2xvcigpLmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5KG1fZWZmZWN0LmZsb29kT3BhY2l0eSgp
KTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1fZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgY29sb3IpOworICAg
IHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
cmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkuc2l6ZSgpKSwgY29sb3IpOwogCiAgICAgcmV0dXJu
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL0ZFRmxvb2RTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVGbG9vZFNvZnR3YXJlQXBwbGll
ci5oCmluZGV4IDE1MzU3MTIzZjMwMGI4ZGJhYzJjOWMxOGU4NDA4YTkzZjY1ODM4MTkuLjJjY2Ew
NWRkNmY1Yjg2ZjFjYzNkYWU2YzExNTg1YmE5YTg5MDg4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVGbG9vZFNvZnR3YXJl
QXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVGbG9vZFNvZnR3YXJlQXBwbGllci5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNz
IEZFRmxvb2RTb2Z0d2FyZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBs
aWVyPEZFRmxvb2Q+IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlOjpCYXNlOwogCi0gICAgYm9v
bCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZm
ZWN0cykgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0
ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBvdmVycmlkZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFw
cGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggNTYyMWViNWRiNmIx
ZWYwYWM4ZTM2ZDc4YzQ0MmMzNDg1YmU3YzZhNi4uMWRmYTk3ZTljOTE5ZTc3M2IyMWYzNTkzNzcx
MDFmNjM4ODg3ZTBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdh
dXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTQyNSwzMCArNDI1LDI4IEBAIGlubGlu
ZSB2b2lkIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtKFVpbnQ4
Q2xhbXBlZEFycmF5JiBpb0J1CiAgICAgYm94Qmx1ckdlbmVyaWMoaW9CdWZmZXIsIHRtcFBpeGVs
QXJyYXksIGtlcm5lbFNpemVYLCBrZXJuZWxTaXplWSwgcGFpbnRTaXplLCBpc0FscGhhSW1hZ2Us
IGVkZ2VNb2RlKTsKIH0KIAotYm9vbCBGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcjo6YXBw
bHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRF
ZmZlY3RzKQorYm9vbCBGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3Qg
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlcklt
YWdlJiByZXN1bHQpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0c1swXS5n
ZXQoKTsKKyAgICBhdXRvJiBpbnB1dCA9IGlucHV0c1swXS5nZXQoKTsKIAotICAgIGF1dG8gZGVz
dGluYXRpb25QaXhlbEJ1ZmZlciA9IG1fZWZmZWN0LnBpeGVsQnVmZmVyUmVzdWx0KEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpOworICAgIGF1dG8gZGVzdGluYXRpb25QaXhl
bEJ1ZmZlciA9IHJlc3VsdC5waXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVt
dWx0aXBsaWVkKTsKICAgICBpZiAoIWRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIG1fZWZmZWN0LnNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUlt
YWdlKCkpOwotCi0gICAgYXV0byBlZmZlY3REcmF3aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3Rl
ZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAg
aW4tPmNvcHlQaXhlbEJ1ZmZlclJlc3VsdCgqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0
RHJhd2luZ1JlY3QpOworICAgIGF1dG8gZWZmZWN0RHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1
ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSk7
CisgICAgaW5wdXQuY29weVBpeGVsQnVmZmVyKCpkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBlZmZl
Y3REcmF3aW5nUmVjdCk7CiAgICAgaWYgKCFtX2VmZmVjdC5zdGREZXZpYXRpb25YKCkgJiYgIW1f
ZWZmZWN0LnN0ZERldmlhdGlvblkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBhdXRv
IGtlcm5lbFNpemUgPSBtX2VmZmVjdC5jYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlciwgeyBtX2Vm
ZmVjdC5zdGREZXZpYXRpb25YKCksIG1fZWZmZWN0LnN0ZERldmlhdGlvblkoKSB9KTsKIAotICAg
IEludFNpemUgcGFpbnRTaXplID0gbV9lZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7
CisgICAgSW50U2l6ZSBwYWludFNpemUgPSByZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3QoKS5zaXpl
KCk7CiAgICAgYXV0byB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZChwYWludFNpemUuYXJlYSgpICogNCk7CiAgICAgaWYgKCF0bXBJbWFnZURh
dGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIGRlc3RpbmF0aW9uUGl4ZWxB
cnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmRhdGEoKTsKLSAgICBhcHBseVBsYXRmb3Jt
KGRlc3RpbmF0aW9uUGl4ZWxBcnJheSwgKnRtcEltYWdlRGF0YSwga2VybmVsU2l6ZS53aWR0aCgp
LCBrZXJuZWxTaXplLmhlaWdodCgpLCBwYWludFNpemUsIG1fZWZmZWN0LmlzQWxwaGFJbWFnZSgp
LCBtX2VmZmVjdC5lZGdlTW9kZSgpKTsKKyAgICBhcHBseVBsYXRmb3JtKGRlc3RpbmF0aW9uUGl4
ZWxBcnJheSwgKnRtcEltYWdlRGF0YSwga2VybmVsU2l6ZS53aWR0aCgpLCBrZXJuZWxTaXplLmhl
aWdodCgpLCBwYWludFNpemUsIHJlc3VsdC5pc0FscGhhSW1hZ2UoKSwgbV9lZmZlY3QuZWRnZU1v
ZGUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2Fy
ZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCAwMjI3ZDMyNzVjMmNj
N2MwYzJjZWIyNzdmMzBkNWE2NjkwZTJlMGIzLi40YTg3ZWU0ZDQ2NTg0MDZkYmFhNzk0YTA4Y2Vm
ODE1OWYxNzQ5NTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdhdXNz
aWFuQmx1clNvZnR3YXJlQXBwbGllci5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEZFR2F1c3Np
YW5CbHVyU29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGll
cjxGRUdhdXNzCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIGJvb2wgYXBw
bHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMp
IG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1h
Z2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgc3RydWN0IEFwcGx5UGFyYW1ldGVycyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTGlnaHRpbmdTb2Z0d2Fy
ZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCBmMThmNjA4ODMxOTg0
Y2NhYzZjNDg2OTFiNTE2YmFjZTA4NDAxZDY2Li5jMTk4ZjQ2OTAzMzM1NGZmZDFiM2UxNTFiNWEw
ZDk2ODY0M2Q1MTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGlu
Z1NvZnR3YXJlQXBwbGllci5jcHAKQEAgLTM5MSwyNyArMzkxLDI1IEBAIHZvaWQgRkVMaWdodGlu
Z1NvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybShjb25zdCBMaWdodGluZ0RhdGEmIGRhdGEp
CiAgICAgfQogfQogCi1ib29sIEZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0
IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKQorYm9vbCBG
RUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0
ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KQogewotICAgIEZpbHRl
ckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdHNbMF0uZ2V0KCk7CisgICAgYXV0byYgaW5wdXQgPSBp
bnB1dHNbMF0uZ2V0KCk7CiAKLSAgICBhdXRvIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSBtX2Vm
ZmVjdC5waXhlbEJ1ZmZlclJlc3VsdChBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBs
aWVkKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSByZXN1bHQucGl4ZWxCdWZm
ZXIoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCk7CiAgICAgaWYgKCFkZXN0
aW5hdGlvblBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiBk
ZXN0aW5hdGlvblBpeGVsQXJyYXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7CiAK
LSAgICBtX2VmZmVjdC5zZXRJc0FscGhhSW1hZ2UoZmFsc2UpOwotCi0gICAgYXV0byBlZmZlY3RE
cmF3aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgaW4tPmNvcHlQaXhlbEJ1ZmZlclJlc3VsdCgq
ZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0RHJhd2luZ1JlY3QpOworICAgIGF1dG8gZWZm
ZWN0RHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZm
ZXIoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSk7CisgICAgaW5wdXQuY29weVBpeGVsQnVmZmVy
KCpkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBlZmZlY3REcmF3aW5nUmVjdCk7CiAKICAgICAvLyBG
SVhNRTogc3VwcG9ydCBrZXJuZWxVbml0TGVuZ3RocyBvdGhlciB0aGFuICgxLDEpLiBUaGUgaXNz
dWUgaGVyZSBpcyB0aGF0IHRoZSBXMwogICAgIC8vIHN0YW5kYXJkIGhhcyBubyB0ZXN0IGNhc2Ug
Zm9yIHRoZW0sIGFuZCBvdGhlciBicm93c2VycyAobGlrZSBGaXJlZm94KSBoYXMgc3RyYW5nZQog
ICAgIC8vIG91dHB1dCBmb3IgdmFyaW91cyBrZXJuZWxVbml0TGVuZ3RocywgYW5kIEkgYW0gbm90
IHN1cmUgdGhleSBhcmUgcmVsaWFibGUuCiAgICAgLy8gQW55d2F5LCBmZUNvbnZvbHZlTWF0cml4
IHNob3VsZCBhbHNvIHVzZSB0aGUgaW1wbGVtZW50YXRpb24KIAotICAgIEludFNpemUgc2l6ZSA9
IEludFNpemUobV9lZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOworICAgIEludFNp
emUgc2l6ZSA9IEludFNpemUocmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkuc2l6ZSgpKTsKIAog
ICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgaWYgd2lkdGggb3IgaGVpZ2h0IChvciBib3RoKSBp
cyAxIHBpeGVsLgogICAgIC8vIFRoZSBXMyBzcGVjIGRvZXMgbm90IGRlZmluZSB0aGlzIGNhc2Uu
IE5vdyB0aGUgZmlsdGVyIGp1c3QgcmV0dXJucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBw
bGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmgKaW5kZXggNjc2YjhiNzk1OTU0NmUzZTI4NmNk
OWZlMGM4NmM0YTY3MmIxOTA4Yy4uM2MzNzI0ZWRjYWZiZjY3MGQzMDBkYjhkZjFmN2FiMGMwMDQ4
OWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVB
cHBsaWVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRkVMaWdodGluZ1NvZnR3YXJlQXBwbGll
ciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVMaWdodGluZz4KIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlOjpCYXNlOwogCi0gICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXIm
LCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykgb3ZlcnJpZGU7CisgICAg
Ym9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRz
LCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3RleHByIGludCBjUGl4ZWxTaXplID0gNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNZXJnZVNvZnR3YXJlQXBwbGll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IGQ1ZDRhYWI2ZDg2NmVlNGU5YThjZWM0
NGY1ZWNkMDgyYWRkYTNhOTYuLjAxMzhmNWMyODgyMGFjODRjMzBjZGFmNjVlZjBkMGJiZDEyNmRj
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVNZXJnZVNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29mdHdhcmVBcHBsaWVy
LmNwcApAQCAtMjksMjEgKzI5LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBG
RU1lcmdlU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJF
ZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykKK2Jvb2wgRkVNZXJnZVNvZnR3YXJlQXBwbGllcjo6
YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmls
dGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQoaW5wdXRFZmZlY3RzLnNpemUoKSA+IDAp
OworICAgIEFTU0VSVChpbnB1dHMuc2l6ZSgpID09IG1fZWZmZWN0Lm51bWJlck9mRWZmZWN0SW5w
dXRzKCkpOwogCi0gICAgYXV0byByZXN1bHRJbWFnZSA9IG1fZWZmZWN0LmltYWdlQnVmZmVyUmVz
dWx0KCk7CisgICAgYXV0byByZXN1bHRJbWFnZSA9IHJlc3VsdC5pbWFnZUJ1ZmZlcigpOwogICAg
IGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIGZp
bHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCi0gICAgZm9yIChhdXRvJiBp
biA6IGlucHV0RWZmZWN0cykgewotICAgICAgICBhdXRvIGluQnVmZmVyID0gaW4tPmltYWdlQnVm
ZmVyUmVzdWx0KCk7Ci0gICAgICAgIGlmICghaW5CdWZmZXIpCisgICAgZm9yIChhdXRvJiBpbnB1
dCA6IGlucHV0cykgeworICAgICAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dC0+aW1hZ2VCdWZm
ZXIoKTsKKyAgICAgICAgaWYgKCFpbnB1dEltYWdlKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgbV9lZmZlY3Qu
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgbV9lZmZlY3Qu
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC0+YWJzb2x1dGVJbWFnZVJlY3QoKSkpOwog
ICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29mdHdhcmVBcHBsaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTWVy
Z2VTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCA4MjFkODQ0N2U1Yzk3ZmE0Zjk0ODM1ZjZiODgxMDZi
NWY4ZWRhY2U3Li4xYjMwYWJhNjliNTNiMDA5Nzk3MjFiZTlkMWE4OTEzNmZhNzE5ZWUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXIuaApAQCAtMzQs
NyArMzQsNyBAQCBjbGFzcyBGRU1lcmdlU29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRlckVm
ZmVjdENvbmNyZXRlQXBwbGllcjxGRU1lcmdlPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6
QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJiBpbnB1dEVmZmVjdHMpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHkoY29uc3QgRmls
dGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3Vs
dCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhv
bG9neVNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXgg
OTRmZDg5MjdiMDBiZmRmYTJmM2IzZDdlNGZlMTIxMTFkMmQ3MmVhZS4uYTBkOTYwYTkyMGIxNWNj
NDFmNjEyNjQ5NTEwZjQxNTczYmIzMjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxp
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVyLmNwcApAQCAtMTQxLDI1ICsxNDEsMjMg
QEAgdm9pZCBGRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZvcm0oY29uc3Qg
UGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEKICAgICBhcHBseVBsYXRmb3JtR2VuZXJpYyhwYWlu
dGluZ0RhdGEsIDAsIHBhaW50aW5nRGF0YS5oZWlnaHQpOwogfQogCi1ib29sIEZFTW9ycGhvbG9n
eVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKQorYm9vbCBGRU1vcnBob2xvZ3lTb2Z0d2FyZUFw
cGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3Rv
ciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KQogewotICAgIEZpbHRlckVmZmVjdCogaW4g
PSBpbnB1dEVmZmVjdHNbMF0uZ2V0KCk7CisgICAgYXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0
KCk7CiAKLSAgICBhdXRvIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSBtX2VmZmVjdC5waXhlbEJ1
ZmZlclJlc3VsdChBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKTsKKyAgICBh
dXRvIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSByZXN1bHQucGl4ZWxCdWZmZXIoQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCk7CiAgICAgaWYgKCFkZXN0aW5hdGlvblBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2VmZmVjdC5zZXRJc0FscGhh
SW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKLQogICAgIGF1dG8gaXNEZWdlbmVyYXRlID0gW10o
aW50IHJhZGl1c1gsIGludCByYWRpdXNZKSAtPiBib29sIHsKICAgICAgICAgcmV0dXJuIHJhZGl1
c1ggPCAwIHx8IHJhZGl1c1kgPCAwIHx8ICghcmFkaXVzWCAmJiAhcmFkaXVzWSk7CiAgICAgfTsK
IAotICAgIEludFJlY3QgZWZmZWN0RHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdp
b25PZklucHV0UGl4ZWxCdWZmZXIoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOworICAgIEludFJl
Y3QgZWZmZWN0RHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4
ZWxCdWZmZXIoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSk7CiAgICAgSW50U2l6ZSByYWRpdXMg
PSBmbG9vcmVkSW50U2l6ZShGbG9hdFNpemUobV9lZmZlY3QucmFkaXVzWCgpLCBtX2VmZmVjdC5y
YWRpdXNZKCkpKTsKIAogICAgIGlmIChpc0RlZ2VuZXJhdGUocmFkaXVzLndpZHRoKCksIHJhZGl1
cy5oZWlnaHQoKSkpIHsKLSAgICAgICAgaW4tPmNvcHlQaXhlbEJ1ZmZlclJlc3VsdCgqZGVzdGlu
YXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0RHJhd2luZ1JlY3QpOworICAgICAgICBpbnB1dC5jb3B5
UGl4ZWxCdWZmZXIoKmRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIGVmZmVjdERyYXdpbmdSZWN0KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xNjgsMTEgKzE2NiwxMSBAQCBib29s
IEZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIs
IGNvbnN0IEZpbHRlckVmZmVjdAogICAgIGludCByYWRpdXNZID0gc3RkOjptaW4oZWZmZWN0RHJh
d2luZ1JlY3QuaGVpZ2h0KCkgLSAxLCByYWRpdXMuaGVpZ2h0KCkpOwogCiAgICAgaWYgKGlzRGVn
ZW5lcmF0ZShyYWRpdXNYLCByYWRpdXNZKSkgewotICAgICAgICBpbi0+Y29weVBpeGVsQnVmZmVy
UmVzdWx0KCpkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBlZmZlY3REcmF3aW5nUmVjdCk7CisgICAg
ICAgIGlucHV0LmNvcHlQaXhlbEJ1ZmZlcigqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0
RHJhd2luZ1JlY3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBhdXRvIHNv
dXJjZVBpeGVsQnVmZmVyID0gaW4tPmdldFBpeGVsQnVmZmVyUmVzdWx0KEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIGVmZmVjdERyYXdpbmdSZWN0LCBtX2VmZmVjdC5vcGVy
YXRpbmdDb2xvclNwYWNlKCkpOworICAgIGF1dG8gc291cmNlUGl4ZWxCdWZmZXIgPSBpbnB1dC5n
ZXRQaXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBlZmZl
Y3REcmF3aW5nUmVjdCwgbV9lZmZlY3Qub3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKICAgICBpZiAo
IXNvdXJjZVBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3Jw
aG9sb2d5U29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5oCmluZGV4IDgy
MjQxNjFiYzNmZDQ1ODI1NDdhMDBmNTdhZDczOTk2MmYxYjVhYmEuLmYxM2JiYjE3ZTc3Mzc4ZDIw
NjIxZGZhNDg1ZmM3N2VhMmExNmFhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBG
RU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVB
cHBsaWVyPEZFTW9ycGhvbAogcHVibGljOgogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKLSAgICBi
b29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRF
ZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZp
bHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIHVzaW5nIENvbHVtbkV4dHJlbWEgPSBWZWN0b3I8Q29sb3JDb21wb25l
bnRzPHVpbnQ4X3QsIDQ+LCAxNj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVPZmZz
ZXRTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IGI0N2Y4ZmUyOTBkNjE5ZDU2ZjFiNTZmZjRmZDYx
YTU5ZDY3NmMxZmUuLmYwZGE1ZDI4ODg0NzlhNzJmM2MwOWY2YjBhMzM4ZjYxZGM1ZjI5NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdh
cmUvRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIuY3Bw
CkBAIC0zMiwyMSArMzIsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZFT2Zm
c2V0U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmls
dGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMpCitib29sIEZFT2Zmc2V0U29mdHdhcmVBcHBs
aWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3Im
IGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGluID0g
aW5wdXRFZmZlY3RzWzBdLmdldCgpOworICAgIGF1dG8mIGlucHV0ID0gaW5wdXRzWzBdLmdldCgp
OwogCi0gICAgYXV0byByZXN1bHRJbWFnZSA9IG1fZWZmZWN0LmltYWdlQnVmZmVyUmVzdWx0KCk7
Ci0gICAgYXV0byBpbkJ1ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlmICgh
cmVzdWx0SW1hZ2UgfHwgIWluQnVmZmVyKQorICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSByZXN1bHQu
aW1hZ2VCdWZmZXIoKTsKKyAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dC5pbWFnZUJ1ZmZlcigp
OworICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIWlucHV0SW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIG1fZWZmZWN0LnNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdlKCkp
OwotCi0gICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBtX2VmZmVjdC5kcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKKyAgICBGbG9hdFJlY3QgZHJh
d2luZ1JlZ2lvbiA9IG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW5wdXQuYWJz
b2x1dGVJbWFnZVJlY3QoKSk7CiAgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRlci5zY2FsZWRC
eUZpbHRlclNjYWxlKHsgbV9lZmZlY3QuZHgoKSwgbV9lZmZlY3QuZHkoKSB9KSk7Ci0gICAgcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVn
aW9uKTsKIAorICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbnB1
dEltYWdlLCBkcmF3aW5nUmVnaW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU9m
ZnNldFNvZnR3YXJlQXBwbGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRU9mZnNldFNvZnR3YXJlQXBwbGllci5oCmluZGV4IDFjM2ZkODRm
MjU0N2YwYmIyNGE0MjllNzE2ZTcxNzAyYjNlMzJiYTQuLmMzNDViNzIyOTZiNTE1NTJhNWNlODcw
MjgzM2ZiNGYwZTRhYjE5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0
U29mdHdhcmVBcHBsaWVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgRkVPZmZzZXRTb2Z0d2Fy
ZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFT2Zmc2V0PiB7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3Qg
RmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMpIG92ZXJyaWRl
OworICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3Im
IGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBw
bGllci5jcHAKaW5kZXggZDNhMWNmNjQ5ZjU2ZmQ5NDdjYTFkNGM0ZGI5MGEyZGE5MzRkYmMzNC4u
MzNjN2EwM2ZmNzdiZTQxYmE1MmE2NjBkNDQzMzc3Zjg5MTgxZmYxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0
d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcApAQCAtMjcsNTMgKzI3LDQ3
IEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUGF0dGVybi5oIgotI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZFVGlsZVNvZnR3YXJlQXBwbGllcjo6YXBwbHko
Y29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZl
Y3RzKQorYm9vbCBGRVRpbGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmls
dGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0
KQogewotICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdHNbMF0uZ2V0KCk7CisgICAg
YXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7CiAKLSAgICBhdXRvIHJlc3VsdEltYWdlID0g
bV9lZmZlY3QuaW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBhdXRvIGluQnVmZmVyID0gaW4tPmlt
YWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhaW5CdWZmZXIpCisg
ICAgYXV0byByZXN1bHRJbWFnZSA9IHJlc3VsdC5pbWFnZUJ1ZmZlcigpOworICAgIGF1dG8gaW5w
dXRJbWFnZSA9IGlucHV0LmltYWdlQnVmZmVyKCk7CisgICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAh
aW5wdXRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9lZmZlY3Quc2V0SXNB
bHBoYUltYWdlKGluLT5pc0FscGhhSW1hZ2UoKSk7CisgICAgYXV0byBpbnB1dEltYWdlUmVjdCA9
IGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCk7CisgICAgYXV0byByZXN1bHRJbWFnZVJlY3QgPSBy
ZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3QoKTsKIAotICAgIC8vIFNvdXJjZSBpbnB1dCBuZWVkcyBt
b3JlIGF0dGVudGlvbi4gSXQgaGFzIHRoZSBzaXplIG9mIHRoZSBmaWx0ZXJSZWdpb24gYnV0IGdp
dmVzIHRoZQotICAgIC8vIHNpemUgb2YgdGhlIGN1dHRlZCBzb3VyY2VJbWFnZSBiYWNrLiBUaGlz
IGlzIHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kIG9wdGltaXphdGlvbi4KLSAgICBGbG9h
dFJlY3QgdGlsZVJlY3QgPSBpbi0+bWF4RWZmZWN0UmVjdCgpOwotICAgIEZsb2F0UG9pbnQgaW5N
YXhFZmZlY3RMb2NhdGlvbiA9IHRpbGVSZWN0LmxvY2F0aW9uKCk7Ci0gICAgRmxvYXRQb2ludCBt
YXhFZmZlY3RMb2NhdGlvbiA9IG1fZWZmZWN0Lm1heEVmZmVjdFJlY3QoKS5sb2NhdGlvbigpOwot
ICAgIGlmIChpbi0+ZmlsdGVyVHlwZSgpID09IEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlR3Jh
cGhpYyB8fCBpbi0+ZmlsdGVyVHlwZSgpID09IEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlQWxw
aGEpIHsKLSAgICAgICAgdGlsZVJlY3QgPSBmaWx0ZXIuZmlsdGVyUmVnaW9uKCk7Ci0gICAgICAg
IHRpbGVSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICB9CisgICAgYXV0byB0
aWxlUmVjdCA9IGZpbHRlci5tYXhFZmZlY3RSZWN0KGlucHV0LnByaW1pdGl2ZVN1YnJlZ2lvbigp
KTsKKyAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKLSAgICAvLyBG
SVhNRTogcmVtb3ZlIHRoaXMgbm9uLXBhbHRmb3JtIGNhbGwuCi0gICAgYXV0byB0aWxlSW1hZ2Ug
PSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJl
Y3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgp
KTsKKyAgICBhdXRvIG1heFJlc3VsdFJlY3QgPSBmaWx0ZXIubWF4RWZmZWN0UmVjdChyZXN1bHQu
cHJpbWl0aXZlU3VicmVnaW9uKCkpOworICAgIG1heFJlc3VsdFJlY3Quc2NhbGUoZmlsdGVyLmZp
bHRlclNjYWxlKCkpOworCisgICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHRpbGVSZWN0LnNpemUoKSwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0aWxlSW1h
Z2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCYgdGlsZUlt
YWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgpOwotICAgIHRpbGVJbWFnZUNvbnRleHQu
dHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngoKSwgLWluTWF4RWZmZWN0TG9jYXRpb24u
eSgpKTsKLSAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGlu
LT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIGF1dG8mIHRpbGVJbWFnZUNv
bnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LnRyYW5z
bGF0ZSgtdGlsZVJlY3QubG9jYXRpb24oKSk7CisgICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmlucHV0SW1hZ2UsIGlucHV0SW1hZ2VSZWN0LmxvY2F0aW9uKCkpOwogCi0gICAg
YXV0byB0aWxlSW1hZ2VDb3B5ID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RG
TW92ZSh0aWxlSW1hZ2UpKTsKLSAgICBpZiAoIXRpbGVJbWFnZUNvcHkpCisgICAgYXV0byBwYXR0
ZXJuSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKHRpbGVJ
bWFnZSkpOworICAgIGlmICghcGF0dGVybkltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybTsKLSAgICBwYXR0ZXJuVHJhbnNm
b3JtLnRyYW5zbGF0ZShpbk1heEVmZmVjdExvY2F0aW9uIC0gbWF4RWZmZWN0TG9jYXRpb24pOwot
Ci0gICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZUNvcHkucmVsZWFz
ZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuVHJhbnNmb3JtIH0pOworICAgIHBhdHRl
cm5UcmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVSZWN0LmxvY2F0aW9uKCkgLSBtYXhSZXN1bHRSZWN0
LmxvY2F0aW9uKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBmaWx0ZXJDb250ZXh0LnNldEZpbGxQYXR0ZXJuKFdU
Rk1vdmUocGF0dGVybikpOwotICAgIGZpbHRlckNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgbV9lZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpKTsKKyAgICBh
dXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUocGF0dGVybkltYWdlLnJlbGVhc2VOb25OdWxs
KCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVyblRyYW5zZm9ybSB9KTsKIAorICAgIGF1dG8mIHJlc3Vs
dENvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIHJlc3VsdENvbnRleHQuc2V0
RmlsbFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7CisgICAgcmVzdWx0Q29udGV4dC5maWxsUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCByZXN1bHRJbWFnZVJlY3Quc2l6ZSgpKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJl
QXBwbGllci5oCmluZGV4IDg2MDVkOGIzOGUxYjIyMzVhOGI2YzI2NjQ0YWJlNjE2OGNlZGI0ZjQu
LjRhNWNjMjFlNzI2ZTgxODQxOGZhOTNlZDU4OGZlMGI3NjA4YjlhZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29m
dHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuaApAQCAtMzQsNyArMzQsNyBAQCBj
bGFzcyBGRVRpbGVTb2Z0d2FyZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVB
cHBsaWVyPEZFVGlsZT4gewogcHVibGljOgogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKLSAgICBi
b29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRF
ZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZp
bHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFw
cGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDExOTYyM2YzYjJkOTVh
MmQ0OGI3N2NmYzQ5OTY5NGQxYTdlNDc4NDEuLmUyN2JkM2Q1MTdlNjM1MzI5NjUxMTA0MWM1YWRk
NjFkZWMxODg4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVHVyYnVs
ZW5jZVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTMzOSwxMyArMzM5LDEzIEBAIHZvaWQgRkVUdXJi
dWxlbmNlU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtKGNvbnN0IEludFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uCiAgICAgYXBwbHlQbGF0Zm9ybUdlbmVyaWMoZmlsdGVyUmVnaW9uLCBmaWx0
ZXJTY2FsZSwgcGl4ZWxBcnJheSwgcGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCAwLCBoZWlnaHQp
OwogfQogCi1ib29sIEZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpCitib29sIEZFVHVyYnVsZW5j
ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRl
ckltYWdlVmVjdG9yJiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBhdXRvIGRlc3RpbmF0
aW9uUGl4ZWxCdWZmZXIgPSBtX2VmZmVjdC5waXhlbEJ1ZmZlclJlc3VsdChBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpOworICAgIGF1dG8gZGVzdGluYXRpb25QaXhlbEJ1
ZmZlciA9IHJlc3VsdC5waXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQpOwogICAgIGlmICghZGVzdGluYXRpb25QaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgSW50U2l6ZSByZXN1bHRTaXplKG1fZWZmZWN0LmFic29sdXRlUGFp
bnRSZWN0KCkuc2l6ZSgpKTsKKyAgICBJbnRTaXplIHJlc3VsdFNpemUocmVzdWx0LmFic29sdXRl
SW1hZ2VSZWN0KCkuc2l6ZSgpKTsKICAgICBpZiAocmVzdWx0U2l6ZS5hcmVhKCkuaGFzT3ZlcmZs
b3dlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM1Niw3ICszNTYsNyBAQCBib29s
IEZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIs
IGNvbnN0IEZpbHRlckVmZmVjdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBh
dXRvIHRpbGVTaXplID0gcm91bmRlZEludFNpemUobV9lZmZlY3QuZmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKCkuc2l6ZSgpKTsKKyAgICBhdXRvIHRpbGVTaXplID0gcm91bmRlZEludFNpemUocmVz
dWx0LnByaW1pdGl2ZVN1YnJlZ2lvbigpLnNpemUoKSk7CiAKICAgICBmbG9hdCBiYXNlRnJlcXVl
bmN5WCA9IG1fZWZmZWN0LmJhc2VGcmVxdWVuY3lYKCk7CiAgICAgZmxvYXQgYmFzZUZyZXF1ZW5j
eVkgPSBtX2VmZmVjdC5iYXNlRnJlcXVlbmN5WSgpOwpAQCAtMzY0LDcgKzM2NCw3IEBAIGJvb2wg
RkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwg
Y29uc3QgRmlsdGVyRWZmZWN0CiAKICAgICBhdXRvIHBhaW50aW5nRGF0YSA9IGluaXRQYWludGlu
Z0RhdGEobV9lZmZlY3QudHlwZSgpLCBiYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVksIG1f
ZWZmZWN0Lm51bU9jdGF2ZXMoKSwgbV9lZmZlY3Quc2VlZCgpLCBtX2VmZmVjdC5zdGl0Y2hUaWxl
cygpLCB0aWxlU2l6ZSk7CiAKLSAgICBhcHBseVBsYXRmb3JtKG1fZWZmZWN0LmFic29sdXRlUGFp
bnRSZWN0KCksIGZpbHRlci5maWx0ZXJTY2FsZSgpLCBkZXN0aW5hdGlvblBpeGVsQXJyYXksIHBh
aW50aW5nRGF0YSwgc3RpdGNoRGF0YSk7CisgICAgYXBwbHlQbGF0Zm9ybShyZXN1bHQuYWJzb2x1
dGVJbWFnZVJlY3QoKSwgZmlsdGVyLmZpbHRlclNjYWxlKCksIGRlc3RpbmF0aW9uUGl4ZWxBcnJh
eSwgcGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyLmgK
aW5kZXggM2NlNjhlMzQzNDFiMzg2NjNjMGMxNDg1YTkxMThmMDVjMmRjYzM4My4uYTUyZTdjNTAz
MmFmOTQxYjdlMDc3ZmU3ZTg2MjE1OGE2NmQwMWVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVR1cmJ1bGVuY2VTb2Z0d2Fy
ZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGllci5oCkBAIC00MSw3ICs0MSw3IEBA
IGNsYXNzIEZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGllciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RD
b25jcmV0ZUFwcGxpZXI8RkVUdXJidWxlCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsK
IAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9y
JiBpbnB1dEVmZmVjdHMpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwg
Y29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6CiAgICAgLy8gUHJvZHVjZXMgcmVzdWx0cyBpbiB0aGUgcmFuZ2Ug
WzEsIDIqKjMxIC0gMl0uIEFsZ29yaXRobSBpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlQWxwaGFTb2Z0d2FyZUFw
cGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9Tb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggNjIzNThkZjU5MDNhMzA0
MjYzNWRkODIzNGNhYTViNWZmYjg3ZDE3MS4uNTAyNTE5NTgzMjZlOGY5YzQ1NTk0YjA4ZDRmMTA2
NTIxZjY0NzBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VBbHBo
YVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTI3LDI0ICsyNywyMyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWJvb2wgU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZp
bHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKQorYm9vbCBTb3Vy
Y2VBbHBoYVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVy
SW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBGaWx0ZXJF
ZmZlY3QqIGluID0gaW5wdXRFZmZlY3RzWzBdLmdldCgpOworICAgIGF1dG8mIGlucHV0ID0gaW5w
dXRzWzBdLmdldCgpOwogCi0gICAgYXV0byByZXN1bHRJbWFnZSA9IG1fZWZmZWN0LmltYWdlQnVm
ZmVyUmVzdWx0KCk7CisgICAgYXV0byByZXN1bHRJbWFnZSA9IHJlc3VsdC5pbWFnZUJ1ZmZlcigp
OwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBhdXRvIGltYWdlQnVmZmVyID0gaW4tPmltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgaWYgKCFp
bWFnZUJ1ZmZlcikKKyAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dC5pbWFnZUJ1ZmZlcigpOwor
ICAgIGlmICghaW5wdXRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRS
ZWN0IGltYWdlUmVjdChGbG9hdFBvaW50KCksIG1fZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCku
c2l6ZSgpKTsKLSAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFn
ZS0+Y29udGV4dCgpOworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoRmxvYXRQb2ludCgpLCByZXN1
bHQuYWJzb2x1dGVJbWFnZVJlY3QoKS5zaXplKCkpOworICAgIGF1dG8mIGZpbHRlckNvbnRleHQg
PSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgZmlsdGVyQ29udGV4dC5maWxsUmVjdChp
bWFnZVJlY3QsIENvbG9yOjpibGFjayk7Ci0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyLCBJbnRQb2ludCgpLCBDb21wb3NpdGVPcGVyYXRvcjo6RGVzdGluYXRp
b25Jbik7Ci0KKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwg
SW50UG9pbnQoKSwgQ29tcG9zaXRlT3BlcmF0b3I6OkRlc3RpbmF0aW9uSW4pOwogICAgIHJldHVy
biB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUFscGhhU29m
dHdhcmVBcHBsaWVyLmgKaW5kZXggZGY4NjAzNTNhNTcwODIxMDA5OTdkMDQ0ZWE1MjIzZjNhZGJj
ODljOS4uNzQ4ZmY3ZTg2ZTM4MDkxMzQ4YzYwOWY5ZTY4ZDJkZGU4YzUzNDY2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3Vy
Y2VBbHBoYVNvZnR3YXJlQXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIuaApAQCAt
MzIsNyArMzIsNyBAQCBjbGFzcyBTb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllciA6IHB1YmxpYyBG
aWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8U291cmNlQWxwaAogcHVibGljOgogICAgIHVzaW5n
IEJhc2U6OkJhc2U7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5KGNv
bnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdl
JiByZXN1bHQpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9T
b3VyY2VHcmFwaGljU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllci5j
cHAKaW5kZXggNTQ1MWRjM2IxM2Y3MGFmYjVlMWI3MDk3YjJlMmQ4YmJmZDVjOWNkZi4uN2I1ZDgw
NGI4MWRkM2JlYzA5ZDQ3MTA1MWE4OThlYmNiNzFjOWMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VHcmFwaGljU29m
dHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0yNyw5
ICsyNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBTb3VyY2VHcmFwaGljU29m
dHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyRWZm
ZWN0VmVjdG9yJikKK2Jvb2wgU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29u
c3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiwgRmlsdGVySW1hZ2Um
IHJlc3VsdCkKIHsKLSAgICBhdXRvIHJlc3VsdEltYWdlID0gbV9lZmZlY3QuaW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKKyAgICBhdXRvIHJlc3VsdEltYWdlID0gcmVzdWx0LmltYWdlQnVmZmVyKCk7CiAg
ICAgYXV0byBzb3VyY2VJbWFnZSA9IGZpbHRlci5zb3VyY2VJbWFnZSgpOwogICAgIGlmICghcmVz
dWx0SW1hZ2UgfHwgIXNvdXJjZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1Nv
dXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllci5oCmlu
ZGV4IDYxOTlhYjdmMTVhMzg4YzEzZWIwNjgzY2E5ZjVmMWMzYTk0MzFjMzYuLjA3MTY5Y2NhNzE0
OWY5MTcxNWQxN2UyOTUwMTVhNDdjNjcxZWFmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlR3JhcGhpY1NvZnR3YXJl
QXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllci5oCkBAIC0zMyw3ICszMyw3IEBA
IGNsYXNzIFNvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
Q29uY3JldGVBcHBsaWVyPFNvdXJjZUdyCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsK
IAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9y
JiBpbnB1dEVmZmVjdHMpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwg
Y29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3Zl
cnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9DU1NGaWx0ZXIuY3BwCmluZGV4IDNjM2Y1YzE1NWE1NmMwNzkxODlhMzM4ZmViYTFlNTc4Mjdm
NzMxZTMuLmUyOGI4OGY5MWQzZDJhZTZiNTViMWE5MThiYjE2YzBiYjFlZDAyNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC00NDIsOCArNDQyLDExIEBAIEltYWdl
QnVmZmVyKiBDU1NGaWx0ZXI6Om91dHB1dCgpCiB7CiAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXIg
JiYgbV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpCiAgICAgICAgIHJldHVybiBtX2ZpbHRl
clJlbmRlcmVyLT5vdXRwdXQoKTsKLSAgICAKLSAgICByZXR1cm4gbGFzdEVmZmVjdCgpLT5pbWFn
ZUJ1ZmZlclJlc3VsdCgpOworCisgICAgaWYgKGF1dG8gcmVzdWx0ID0gbGFzdEVmZmVjdCgpLT5m
aWx0ZXJJbWFnZSgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LT5pbWFnZUJ1ZmZlcigpOworCisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgQ1NTRmlsdGVyOjpzZXRTb3VyY2VJbWFnZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4
IGYwYTI2NWJmNjcwYTk4M2NkNjIxNTA2NWQxNjc4YmEyMjQyOTI1MjAuLjkzNGZjODNhNjQyN2Mz
Y2YxNDVjYWZhNDcyZTgwNWEyZmRkNWJmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0yNDYsMTAg
KzI0NiwxMCBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJj
ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogICAgICAgICB9CiAgICAgICAgIGZp
bHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKIAotICAgICAgICBJbWFnZUJ1ZmZl
ciogcmVzdWx0SW1hZ2UgPSBsYXN0RWZmZWN0LT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgICAg
ICBpZiAocmVzdWx0SW1hZ2UpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gbGFzdEVmZmVj
dC0+ZmlsdGVySW1hZ2UoKSkgeworICAgICAgICAgICAgYXV0byByZXN1bHRJbWFnZSA9IHJlc3Vs
dC0+aW1hZ2VCdWZmZXIoKTsKICAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgx
IC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAvIGZpbHRlckRh
dGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBjb250ZXh0
LT5kcmF3SW1hZ2VCdWZmZXIoKnJlc3VsdEltYWdlLCBsYXN0RWZmZWN0LT5hYnNvbHV0ZVBhaW50
UmVjdCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0SW1h
Z2UsIHJlc3VsdC0+YWJzb2x1dGVJbWFnZVJlY3QoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5z
Y2FsZShmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyU2NhbGUoKSk7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
Y3BwCmluZGV4IGM3NTljOWE4YzU2ZGJlYjM3NWRlMzdmNjU3NTVjOTg2MDFmNjg0MGUuLjA3NGRm
MTljOWY4ZDJjMjNhMjJmYjJlYzc0ZDUwZGJkNDNlMTA1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC04MiwxNiArODIs
MTYgQEAgY2xhc3MgRkVJbWFnZVNvZnR3YXJlQXBwbGllciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RD
b25jcmV0ZUFwcGxpZXI8RkVJbWFnZT4gewogcHVibGljOgogICAgIHVzaW5nIEJhc2U6OkJhc2U7
CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYgaW5wdXRFZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYs
IGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92
ZXJyaWRlOwogfTsKIAotYm9vbCBGRUltYWdlU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBG
aWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikKK2Jvb2wgRkVJbWFnZVNv
ZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlcklt
YWdlVmVjdG9yJiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBhdXRvIHJlc3VsdEltYWdl
ID0gbV9lZmZlY3QuaW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBhdXRvIHJlc3VsdEltYWdlID0g
cmVzdWx0LmltYWdlQnVmZmVyKCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBwcmltaXRpdmVTdWJyZWdpb24gPSBtX2VmZmVjdC5maWx0
ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKKyAgICBhdXRvIHByaW1pdGl2ZVN1YnJlZ2lvbiA9IHJl
c3VsdC5wcmltaXRpdmVTdWJyZWdpb24oKTsKICAgICBhdXRvJiBjb250ZXh0ID0gcmVzdWx0SW1h
Z2UtPmNvbnRleHQoKTsKIAogICAgIFdURjo6c3dpdGNoT24obV9lZmZlY3Quc291cmNlSW1hZ2Uo
KSwKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5
KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0bwogCiBib29sIEZF
SW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAg
ICByZXR1cm4gRkVJbWFnZVNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1
dEVmZmVjdHMoKSk7CisgICAgcmV0dXJuIEZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFw
cGx5KGZpbHRlciwgeyB9LCAqZmlsdGVySW1hZ2UoKSk7CiB9CiAKIFRleHRTdHJlYW0mIEZFSW1h
Z2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIFJlcHJlc2VudGF0aW9u
VHlwZSByZXByZXNlbnRhdGlvbikgY29uc3QK
</data>
<flag name="review"
          id="470257"
          type_id="1"
          status="+"
          setter="heycam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445128</attachid>
            <date>2021-11-25 02:34:00 -0800</date>
            <delta_ts>2021-11-25 03:44:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233487-20211125023359.patch</filename>
            <type>text/plain</type>
            <size>103726</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM5ODVhZTBmMjE5YTE1
ZTVhZjVlNzlkZDA2OWE1OWUzMzg2ZTVhNi4uMDlhYjUwMzE4Y2ZjMGU0OTkwOWI4Nzk3MjdiMjg5
OGM4NzllOWJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAyMS0xMS0yNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgRmlsdGVyRWZmZWN0IGFwcGxpZXJzIHRha2UgRmlsdGVySW1hZ2VzIGluIHRoZWlyIGFw
cGx5KCkgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FtZXJvbiBNY0Nvcm1hY2suCisK
KyAgICAgICAgRXZlbnR1YWxseSB0aGUgRmlsdGVySW1hZ2Ugd2lsbCBiZSByZW1vdmVkIGZyb20g
RmlsdGVyRWZmZWN0LiBTbyB0aGlzIGlzCisgICAgICAgIGEgc3RlcCB0b3dhcmRzIG1ha2luZyB0
aGUgRmlsdGVyRWZmZWN0IGhvbGQgdGhlIGVmZmVjdCBkYXRhIG9ubHkuIFRvIGRvIAorICAgICAg
ICBoaXMgY2hhbmdlLCBGaWx0ZXJJbWFnZSBuZWVkcyB0byBob2xkIHR3byBuZXcgbWVtYmVyczog
cHJpbWl0aXZlU3VicmVnaW9uCisgICAgICAgIGFuZCBpc0FscGhhSW1hZ2UuCisKKyAgICAgICAg
RmlsdGVyRWZmZWN0OjpzZXRJc0FscGhhSW1hZ2UoKSBpcyBub3QgbmVlZGVkIGFuZCBpc0FscGhh
SW1hZ2UoKSB3aWxsIGJlCisgICAgICAgIGEgdmlydHVhbCBmdW5jdGlvbiBidXQgaXQgd2lsbCBi
ZSByZW5hbWVkIHJlc3VsdElzQWxwaGFJbWFnZSgpLiBUaGUgcmVzdWx0IAorICAgICAgICBvZiB0
aGlzIGZ1bmN0aW9uIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByZXN1bHQgRmlsdGVySW1hZ2UuCisK
KyAgICAgICAgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KCkgaXMgdGhlIG9u
bHkgdXNlciBvZiBpc0FscGhhSW1hZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJs
ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnJlc3VsdElzQWxwaGFJbWFnZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJp
eC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZv
bHZlTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1h
cDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNz
aWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cmVzdWx0SXNB
bHBoYUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnJlc3VsdElzQWxwaGFJbWFnZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFT2Zmc2V0OjpyZXN1bHRJc0FscGhhSW1hZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cmVz
dWx0SXNBbHBoYUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyOjptYXhFZmZlY3RSZWN0IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6aW5wdXRGaWx0ZXJJbWFnZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6Y3JlYXRlUmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJSZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0OjpwaXhlbEJ1ZmZlclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmdldFBpeGVsQnVmZmVyUmVzdWx0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVBpeGVsQnVmZmVyUmVzdWx0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpmaWx0ZXJJbWFnZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnJlc3VsdElzQWxwaGFJbWFnZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmlzQWxwaGFJbWFnZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnNldElzQWxwaGFJ
bWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6Om5vcm1hbGl6
ZWRGbG9hdHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0QXBwbGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVySW1hZ2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJJbWFnZTo6RmlsdGVySW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckltYWdlOjpwcmltaXRpdmVTdWJyZWdpb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVySW1hZ2U6OmlzQWxwaGFJbWFnZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZVZlY3Rvci5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdEFwcGxp
ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVCbGVuZFNv
ZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kU29mdHdhcmVBcHBs
aWVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhTb2Z0
d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3
YXJlL0ZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb25lbnRUcmFuc2Zl
clNvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5QXJpdGhtZXRpYyk6CisgICAgICAg
IChXZWJDb3JlOjpGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlOb25Bcml0aG1ldGlj
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjphcHBseSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0
ZVNvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29m
dHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEaXNwbGFjZW1lbnRNYXBTb2Z0
d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3
YXJlL0ZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVGbG9vZFNvZnR3
YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kU29mdHdhcmVBcHBsaWVy
OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RUZsb29kU29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0
d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3
YXJlL0ZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVM
aWdodGluZ1NvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNZXJnZVNvZnR3YXJlQXBw
bGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlU29mdHdhcmVBcHBsaWVyOjphcHBs
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdl
U29mdHdhcmVBcHBsaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0
U29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0U29mdHdhcmVB
cHBsaWVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRU9mZnNldFNvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFVGlsZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVR1cmJ1bGVuY2VT
b2Z0d2FyZUFwcGxpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlU29mdHdh
cmVBcHBsaWVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyOjphcHBseSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VBbHBo
YVNvZnR3YXJlQXBwbGllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VHcmFwaGljU29mdHdhcmVBcHBsaWVyOjphcHBseSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VHcmFwaGljU29mdHdhcmVBcHBs
aWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGaWx0ZXI6Om91dHB1dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZVNvZnR3YXJlQXBw
bGllcjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKwogMjAyMS0xMS0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1vdmUgdGhlIHNvZnR3YXJlIEZpbHRlckVmZmVj
dEFwcGxpZXJzIHRvIHNlcGFyYXRlIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGFjYTdjMzJjNDU2OGI0M2U0YjkwMWJk
YmQ3MmM1ZjVhMGJmY2QzYy4uYzZjMjRhNGZmMjc5NWYxMWQ0NWQwZTUwMjNmY2Q2ZDQ4ZTg2NGI4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTA5MzEsNiArMTA5MzEsNyBAQAogCQk3MkExM0FENzI3NERFNTc4MDBFMkE4OEUg
LyogU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VH
cmFwaGljU29mdHdhcmVBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
QjRFRjc0Mjc0RTIzMzMwMDI5M0MyRiAvKiBGRUJsZW5kU29mdHdhcmVBcHBsaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzJCNEVGNzUyNzRFMjMzNDAwMjkzQzJGIC8qIEZFQmxlbmRTb2Z0d2FyZUFwcGxp
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRkVCbGVuZFNvZnR3YXJlQXBwbGllci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQjRFRjdDMjc0RUUzN0YwMDI5M0MyRiAvKiBG
aWx0ZXJJbWFnZVZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJJbWFnZVZlY3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNDIzRTE3MzI3MDA4RDc0MUMgLyog
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEltYWdlQnVmZmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9y
bUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3Jt
SW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MDI3LDYgKzI2
MDI4LDcgQEAKIAkJCQk3MjYyRDc1NjI3MkExNzQxMDBDNTZBMDkgLyogRmlsdGVyRnVuY3Rpb24u
aCAqLywKIAkJCQk3MjQzNUVGNTI3M0QwNzY3MDAwNUU3RUUgLyogRmlsdGVySW1hZ2UuY3BwICov
LAogCQkJCTcyNDM1RUY0MjczRDA3NjcwMDA1RTdFRSAvKiBGaWx0ZXJJbWFnZS5oICovLAorCQkJ
CTcyQjRFRjdDMjc0RUUzN0YwMDI5M0MyRiAvKiBGaWx0ZXJJbWFnZVZlY3Rvci5oICovLAogCQkJ
CTQ5RUNFQjYzMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb24uY3BwICovLAogCQkJ
CTQ5RUNFQjY0MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb24uaCAqLywKIAkJCQk0
OUVDRUI2NTE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cAppbmRleCAyOWRjYjBmYmY0ZjFhMDkxNjMwYzIwMDA3MTQ0MTY1MDUyYTJiZGIxLi4zNWNkNjU1
ZjZiNjIyYmUwMGMyYzEwYWRjMDQ4OWVlM2M1ZGNlNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgYm9vbCBGRUJsZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlIG1vZGUpCiAKIGJvb2wg
RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewot
ICAgIHJldHVybiBGRUJsZW5kU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlu
cHV0RWZmZWN0cygpKTsKKyAgICByZXR1cm4gRkVCbGVuZFNvZnR3YXJlQXBwbGllcigqdGhpcyku
YXBwbHkoZmlsdGVyLCBpbnB1dEZpbHRlckltYWdlcygpLCAqZmlsdGVySW1hZ2UoKSk7CiB9CiAK
IFRleHRTdHJlYW0mIEZFQmxlbmQ6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYg
dHMsIFJlcHJlc2VudGF0aW9uVHlwZSByZXByZXNlbnRhdGlvbikgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguY3BwCmluZGV4IGQ2ODVhMTQ1MGI0NzUzMjI1YTcyOTMyMTBhZWM5NjA4MzhkNjFkMzEuLjVh
YTg4MmE3YTI5ZWZjN2ZmM2I2YTNmN2UxOGFhZDQ1OTM0ZTU0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmNwcApAQCAtOTMsOSArOTMsMTQgQEAgVmVjdG9yPGZsb2F0PiBGRUNvbG9yTWF0cml4Ojpub3Jt
YWxpemVkRmxvYXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKICAgICByZXR1cm4gbm9y
bWFsaXplZFZhbHVlczsKIH0KIAorYm9vbCBGRUNvbG9yTWF0cml4OjpyZXN1bHRJc0FscGhhSW1h
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0gRkVDT0xPUk1BVFJJWF9UWVBFX0xV
TUlOQU5DRVRPQUxQSEE7Cit9CisKIGJvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIHJldHVybiBGRUNvbG9yTWF0cml4
U29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RWZmZWN0cygpKTsKKyAg
ICByZXR1cm4gRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVy
LCBpbnB1dEZpbHRlckltYWdlcygpLCAqZmlsdGVySW1hZ2UoKSk7CiB9CiAKIHN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDb2xvck1hdHJpeFR5cGUm
IHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29sb3JNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb2xvck1hdHJpeC5oCmluZGV4IDU2MDFlYjA5Njg3ZTg1N2E2Njc1YzEyODUzNmVi
MDUxOGQyM2QyZmMuLmUxYWM2ODg4MDliNTUwODVlYjNhYzdlYmFmNzQ1M2Y2OTI3ZWI1NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
RkVDb2xvck1hdHJpeChDb2xvck1hdHJpeFR5cGUsIFZlY3RvcjxmbG9hdD4mJik7CiAKKyAgICBi
b29sIHJlc3VsdElzQWxwaGFJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgYm9vbCBwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVz
ZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIu
Y3BwCmluZGV4IDg2ZjlkZTFmMDQ3Y2Y0MWEzZTlkYzUyZGQ1OTJmN2ZhMzIxMGJkNWUuLmJiNTQy
OGE1N2U4M2I2MGFlYTI0OTc5YjFjYmUzOTc0MjA5NzY2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNv
bXBvbmVudFRyYW5zZmVyKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bgog
CiBib29sIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBG
aWx0ZXImIGZpbHRlcikKIHsKLSAgICByZXR1cm4gRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJl
QXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1dEVmZmVjdHMoKSk7CisgICAgcmV0dXJu
IEZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwg
aW5wdXRGaWx0ZXJJbWFnZXMoKSwgKmZpbHRlckltYWdlKCkpOwogfQogCiBzdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQ29tcG9uZW50VHJhbnNmZXJUeXBlIHR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwCmluZGV4IGVmMzdlNGNjZDg3YjlkZTVkNmI5NDEyZDM4Y2ZjZTM5
ZTA2NTQ0N2MuLjVhNDhlYTQxOWQwYzhiMDY5NGNhYjU3OTA0NzY2MjM4YjEyNGY0Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3Np
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6ZGV0ZXJt
aW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAKIGJvb2wgRkVDb21w
b3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAg
ICByZXR1cm4gRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwg
aW5wdXRFZmZlY3RzKCkpOworICAgIHJldHVybiBGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcigq
dGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1dEZpbHRlckltYWdlcygpLCAqZmlsdGVySW1hZ2UoKSk7
CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAK
aW5kZXggZjc4ZjA1NzZhZjE4MGM1ZDgxZjI5YzI0YWVkY2UxMTZmZWM5MWNmZS4uZGRiZDk1ZWQz
Zjk0ZDBjYTMxOGE4MDkyZTdhYTRlMzRlN2Q3ZmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXgu
Y3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgYm9vbCBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2
ZUFscGhhKGJvb2wgcHJlc2VydmVBbHBoYSkKIAogYm9vbCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIEZF
Q29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRF
ZmZlY3RzKCkpOworICAgIHJldHVybiBGRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyKCp0
aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RmlsdGVySW1hZ2VzKCksICpmaWx0ZXJJbWFnZSgpKTsK
IH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEVkZ2VNb2RlVHlwZSYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKaW5kZXggZjRk
NWY0OTFhMTU4ZWQ3YmUyOGI5MjIxNDIxNjUwYmYzOGU4Y2ViNy4uNWFkZWZkN2U4NWVmOTA2OTQ5
MzMxNWM5MDdkZGM3OTE4MWQ3YTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKQEAg
LTg1LDcgKzg1LDcgQEAgdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6dHJhbnNmb3JtUmVzdWx0Q29s
b3JTcGFjZShGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBpbnQgaW4KIAogYm9vbCBGRURpc3BsYWNl
bWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewot
ICAgIHJldHVybiBGRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHko
ZmlsdGVyLCBpbnB1dEVmZmVjdHMoKSk7CisgICAgcmV0dXJuIEZFRGlzcGxhY2VtZW50TWFwU29m
dHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RmlsdGVySW1hZ2VzKCksICpm
aWx0ZXJJbWFnZSgpKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUmIHR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5j
cHAKaW5kZXggZTk2NmRkYmI3MjVkMzYyYjA5MGZjNDJkNjdmOGQzYTZkOGZjYzFkZi4uZjVmNWM2
MDEyNzgyNWRiNDUxNDgxZjc2MGM4ZDBjMjM3YmY4MzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApA
QCAtNjgsNyArNjgsNyBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAKIGJvb2wgRkVEcm9wU2hhZG93OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIEZFRHJv
cFNoYWRvd1NvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1dEVmZmVjdHMo
KSk7CisgICAgcmV0dXJuIEZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHko
ZmlsdGVyLCBpbnB1dEZpbHRlckltYWdlcygpLCAqZmlsdGVySW1hZ2UoKSk7CiB9CiAgICAgCiBJ
bnRPdXRzZXRzIEZFRHJvcFNoYWRvdzo6b3V0c2V0cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAppbmRleCBlYWE3
OGMzNzUxYmMwNDIzNDhjNjVlMDRiMjBmNmE0ZmNhYmJlZmUwLi5hNDgxNGVlZmRiYzNmYTE1ZjQx
YjAxYTI4YjQwNWZhYzliZDg1YmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBG
RUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFjaXR5KQogCiBib29sIEZFRmxv
b2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBy
ZXR1cm4gRkVGbG9vZFNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1dEVm
ZmVjdHMoKSk7CisgICAgcmV0dXJuIEZFRmxvb2RTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5
KGZpbHRlciwgeyB9LCAqZmlsdGVySW1hZ2UoKSk7CiB9CiAKIFRleHRTdHJlYW0mIEZFRmxvb2Q6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIFJlcHJlc2VudGF0aW9uVHlw
ZSByZXByZXNlbnRhdGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggM2JjYzU5
ZjkwMGQ3NTdjZDA5MTdhZTdhYzMzNDA0MWM5YWFiYjRhMi4uZWE5ZDMzMzY3OGFlMmI2Y2U3ZTlh
ZjI2YjQ0MzY2MjFhYzdiMTk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTEyNSwxNyAr
MTI1LDIyIEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QoYWJzb2x1dGVQYWludFJlY3QpKTsKIH0KIAotYm9vbCBGRUdhdXNzaWFuQmx1cjo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQotewotICAgIHJldHVy
biBGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1
dEVmZmVjdHMoKSk7Ci19Ci0KIEludE91dHNldHMgRkVHYXVzc2lhbkJsdXI6Om91dHNldHMoKSBj
b25zdAogewogICAgIEludFNpemUgb3V0c2V0U2l6ZSA9IGNhbGN1bGF0ZU91dHNldFNpemUoeyBt
X3N0ZFgsIG1fc3RkWSB9KTsKICAgICByZXR1cm4geyBvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRz
ZXRTaXplLndpZHRoKCksIG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSB9
OwogfQogCitib29sIEZFR2F1c3NpYW5CbHVyOjpyZXN1bHRJc0FscGhhSW1hZ2UoKSBjb25zdAor
eworICAgIHJldHVybiBpbnB1dEVmZmVjdCgwKS0+cmVzdWx0SXNBbHBoYUltYWdlKCk7Cit9CisK
K2Jvb2wgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXIm
IGZpbHRlcikKK3sKKyAgICByZXR1cm4gRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIoKnRo
aXMpLmFwcGx5KGZpbHRlciwgaW5wdXRGaWx0ZXJJbWFnZXMoKSwgKmZpbHRlckltYWdlKCkpOwor
fQorCiBUZXh0U3RyZWFtJiBGRUdhdXNzaWFuQmx1cjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiB0cywgUmVwcmVzZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9uKSBjb25zdAog
ewogICAgIHRzIDw8IGluZGVudCA8PCAiW2ZlR2F1c3NpYW5CbHVyIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
aAppbmRleCA5MDgyMjY0MzRhMDlhZDQzMzQ5NmM5ZGExZWRhYjdjNDg4MzIxYzM4Li40ZDRlMDIw
MTQ0ZDM5MTM5NGQ2YmY5Yzk3MWY0OTI3OGYxYmZmYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCkBA
IC01MSw2ICs1MSw4IEBAIHByaXZhdGU6CiAKICAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25z
dCBvdmVycmlkZTsKIAorICAgIGJvb2wgcmVzdWx0SXNBbHBoYUltYWdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKICAgICBib29sIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVy
cmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6
OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGlu
Zy5jcHAKaW5kZXggY2NkZTZlYjgyZTM3YzJlM2I3YmYzMmI3Njk0NzlhYmVjN2ViMjZiNS4uMzA5
ZGY5ZTc1MGM4ZjU0M2U4YTY2NjI5N2UxNDYxMzVkYjAxMDgxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCkBA
IC04Myw3ICs4Myw3IEBAIGJvb2wgRkVMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxv
YXQga2VybmVsVW5pdExlbmd0aFkpCiAKIGJvb2wgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIHJldHVybiBGRUxpZ2h0aW5nU29m
dHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RWZmZWN0cygpKTsKKyAgICBy
ZXR1cm4gRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCBpbnB1
dEZpbHRlckltYWdlcygpLCAqZmlsdGVySW1hZ2UoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTWVyZ2UuY3BwCmluZGV4IDNmMzYyMWMwODQ3Y2JhM2E1ZjkwMWM5NzU2ZWQ0NDg3NjY4MjVj
MDAuLjBjNDIyMGY5NmY0YzIxMWQ5ODRiYmYyODA3ZmU0MGRlNTNlM2Q0MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcApA
QCAtNDAsNyArNDAsNyBAQCBGRU1lcmdlOjpGRU1lcmdlKCkKIAogYm9vbCBGRU1lcmdlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIEZF
TWVyZ2VTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkp
OworICAgIHJldHVybiBGRU1lcmdlU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIs
IGlucHV0RmlsdGVySW1hZ2VzKCksICpmaWx0ZXJJbWFnZSgpKTsKIH0KIAogVGV4dFN0cmVhbSYg
RkVNZXJnZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVwcmVzZW50
YXRpb25UeXBlIHJlcHJlc2VudGF0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCmluZGV4IDFh
MjJiNTBhY2NkNjAzZTU2NzU1YWE2MWU2ZjA4MGY3NGVhYmNjNDguLmI5NDZlMjAzOGI1ZDZlMzdh
YWM0MTBlZDdiMmFmMTM4YzdkYzcxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAgLTc5LDkgKzc5
LDE0IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdChjb25z
dCBGaWx0ZXImIGZpbHRlcikKICAgICBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRS
ZWN0KHBhaW50UmVjdCkpOwogfQogCitib29sIEZFTW9ycGhvbG9neTo6cmVzdWx0SXNBbHBoYUlt
YWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5wdXRFZmZlY3QoMCktPnJlc3VsdElzQWxwaGFJ
bWFnZSgpOworfQorCiBib29sIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNv
bnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIHJldHVybiBGRU1vcnBob2xvZ3lTb2Z0d2FyZUFw
cGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkpOworICAgIHJldHVybiBG
RU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRlciwgaW5wdXRGaWx0
ZXJJbWFnZXMoKSwgKmZpbHRlckltYWdlKCkpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSYgdHlw
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVNb3JwaG9sb2d5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTW9ycGhvbG9neS5oCmluZGV4IDcxOTM5OThmODllNDc5ZWJhOGUwYTMwNzQyZDY4OTZkYTE5
MTMxNzYuLmRiY2RhYjY2YTliOTc3OWE3MTQyYmU0NjBjMTY3YzU1MjE0YTcyNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBo
b2xvZ3kuaApAQCAtNTAsNiArNTAsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkZXRlcm1pbmVB
YnNvbHV0ZVBhaW50UmVjdChjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAorICAgIGJvb2wgcmVz
dWx0SXNBbHBoYUltYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBib29sIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIFdURjo6VGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlv
blR5cGUpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRleCA1MmM5YjljM2JlOGYyYmI4MTdj
NTEzMTU5MjgzMzlhM2QxOWY4ZDc3Li4xM2EwYzZmMTFjYzQ5MGUxYmY4ZDI2OWUzMzg2N2ViMzAx
ZjY1OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtNjQsOSArNjQsMTQgQEAgdm9pZCBGRU9mZnNldDo6ZGV0
ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgc2V0QWJz
b2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3QpKTsKIH0KIAorYm9vbCBG
RU9mZnNldDo6cmVzdWx0SXNBbHBoYUltYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5wdXRF
ZmZlY3QoMCktPnJlc3VsdElzQWxwaGFJbWFnZSgpOworfQorCiBib29sIEZFT2Zmc2V0OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIEZF
T2Zmc2V0U29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RWZmZWN0cygp
KTsKKyAgICByZXR1cm4gRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRl
ciwgaW5wdXRGaWx0ZXJJbWFnZXMoKSwgKmZpbHRlckltYWdlKCkpOwogfQogCiBUZXh0U3RyZWFt
JiBGRU9mZnNldDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVwcmVz
ZW50YXRpb25UeXBlIHJlcHJlc2VudGF0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oCmluZGV4IDdmZmM1NTIzNTVl
YzIyZWMwZDUxZjIzYmEwODg4MDY1MGVlYWMzNjIuLmVkNzNmMjcyMjk1ZGFhOWExYTJiMGY1OTg5
N2I4ZDcyZGRkNWNlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVPZmZzZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKQEAgLTQxLDYgKzQxLDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7
CiAKKyAgICBib29sIHJlc3VsdElzQWxwaGFJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAg
Ym9vbCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAg
ICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFt
JiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCAyNDljYjg3
MmU3YTE5ODI3MzU0NThiNmNiMzU0YmY0NjE4NjAwZDEyLi41YTBiY2U3YWJhYTZmNjk1YjAzYjc3
YjA0ZjFkMTExZmJkNWZmYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAi
RkVUaWxlLmgiCiAKICNpbmNsdWRlICJGRVRpbGVTb2Z0d2FyZUFwcGxpZXIuaCIKLSNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDkgKzM3LDE0IEBAIEZFVGlsZTo6RkVUaWxlKCkK
IHsKIH0KIAorYm9vbCBGRVRpbGU6OnJlc3VsdElzQWxwaGFJbWFnZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGlucHV0RWZmZWN0KDApLT5yZXN1bHRJc0FscGhhSW1hZ2UoKTsKK30KKwogYm9vbCBG
RVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0ZXImIGZpbHRlcikKIHsKLSAg
ICByZXR1cm4gRkVUaWxlU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0
RWZmZWN0cygpKTsKKyAgICByZXR1cm4gRkVUaWxlU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBs
eShmaWx0ZXIsIGlucHV0RmlsdGVySW1hZ2VzKCksICpmaWx0ZXJJbWFnZSgpKTsKIH0KIAogVGV4
dFN0cmVhbSYgRkVUaWxlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBS
ZXByZXNlbnRhdGlvblR5cGUgcmVwcmVzZW50YXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAppbmRleCA3MTdiNWMyZmE5
OTllZWQwNzQ1MjIyNzY0NWZiYjkzYTZhZjg3MTJhLi44MDZhYmEzYmFhNjMyYWFkMGY1Zjc2ODky
ZTIzMzNlMzk5ZWE4M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmgKQEAgLTM1LDYgKzM1LDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGUgeyBz
ZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9
CiAKKyAgICBib29sIHJlc3VsdElzQWxwaGFJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAg
Ym9vbCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAg
ICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFt
JiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcApp
bmRleCAzMjIzYWY3OWQ1OWY2MzJkNzZkNzk2M2I2NDFjNWYzN2ViNDczZTBjLi5lNDE4NmE0Yjc0
NDgyZTU2ODRhNTE3OTVhOWY1ZTI2ZDQzMWM3OWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC05
Nyw3ICs5Nyw3IEBAIGJvb2wgRkVUdXJidWxlbmNlOjpzZXRTdGl0Y2hUaWxlcyhib29sIHN0aXRj
aCkKIAogYm9vbCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShjb25zdCBGaWx0
ZXImIGZpbHRlcikKIHsKLSAgICByZXR1cm4gRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyKCp0
aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RWZmZWN0cygpKTsKKyAgICByZXR1cm4gRkVUdXJidWxl
bmNlU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIHsgfSwgKmZpbHRlckltYWdl
KCkpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
VHVyYnVsZW5jZVR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlci5oCmluZGV4IDg4NGU3ODg3ZWVjZWQwZGU3ZmMxZjFhNDY1NDMx
N2JmMjk4YzBlNDEuLmNkZTgxZmI4MWY1MDA1YjgxZmJkMmE4MmZiYjJhOTI0NDYzMWRkNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIu
aApAQCAtNTMsNiArNTMsMTEgQEAgcHVibGljOgogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQogICAgIHZvaWQgc2V0UmVu
ZGVyaW5nTW9kZShSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIHsgbV9yZW5kZXJpbmdNb2Rl
ID0gcmVuZGVyaW5nTW9kZTsgfQogCisgICAgRmxvYXRSZWN0IG1heEVmZmVjdFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gaW50ZXJzZWN0aW9uKHByaW1pdGl2ZVN1YnJlZ2lvbiwgbV9maWx0ZXJSZWdpb24pOworICAg
IH0KKwogcHJvdGVjdGVkOgogICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkKICAgICAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0
ZXJUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGFhMTBhN2VmMDE4MzA2MmZiMWU2ZWUyMDY3
ZTM3OGM5NmVkOGJlMDkuLmYzMzA2OTRiZWU0NTRjZDNlNTJjMDA1MDkwMDMzOTJmNjFmMmI0ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTE1OCwyMCArMTU4LDE1IEBAIGJvb2wgRmlsdGVyRWZm
ZWN0OjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlcikKICAgICAgICAgZm9yIChhdXRvJiBpbiA6
IG1faW5wdXRFZmZlY3RzKQogICAgICAgICAgICAgaW4tPmNvcnJlY3RQcmVtdWx0aXBsaWVkUmVz
dWx0SWZOZWVkZWQoKTsKICAgICB9Ci0gICAgCi0gICAgaWYgKCFjcmVhdGVSZXN1bHQoKSkKKwor
ICAgIG1fZmlsdGVySW1hZ2UgPSBGaWx0ZXJJbWFnZTo6Y3JlYXRlKG1fZmlsdGVyUHJpbWl0aXZl
U3VicmVnaW9uLCBtX2Fic29sdXRlUGFpbnRSZWN0LCByZXN1bHRJc0FscGhhSW1hZ2UoKSwgZmls
dGVyLnJlbmRlcmluZ01vZGUoKSwgcmVzdWx0Q29sb3JTcGFjZSgpKTsKKyAgICBpZiAoIW1fZmls
dGVySW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEFkZCBwbGF0Zm9ybSBz
cGVjaWZpYyBhcHBseSBmdW5jdGlvbnMgaGVyZSBhbmQgcmV0dXJuIGVhcmxpZXIuCiAgICAgcmV0
dXJuIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShmaWx0ZXIpOwogfQogCi1ib29sIEZpbHRlckVmZmVj
dDo6Y3JlYXRlUmVzdWx0KCkKLXsKLSAgICBtX2ZpbHRlckltYWdlID0gRmlsdGVySW1hZ2U6OmNy
ZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBy
ZXN1bHRDb2xvclNwYWNlKCkpOwotICAgIHJldHVybiBtX2ZpbHRlckltYWdlOwotfQotCiB2b2lk
IEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQogewogICAgIG1fZmlsdGVySW1hZ2UgPSBudWxs
cHRyOwpAQCAtMTg2LDMwICsxODEsMTQgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0
c1JlY3Vyc2l2ZSgpCiAgICAgICAgIGVmZmVjdC0+Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CiB9
CiAKLUltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKLXsKLSAg
ICBpZiAoIWhhc1Jlc3VsdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
bV9maWx0ZXJJbWFnZS0+aW1hZ2VCdWZmZXIoKTsKLX0KLQotUGl4ZWxCdWZmZXIqIEZpbHRlckVm
ZmVjdDo6cGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1h
dCkKK0ZpbHRlckltYWdlVmVjdG9yIEZpbHRlckVmZmVjdDo6aW5wdXRGaWx0ZXJJbWFnZXMoKSBj
b25zdAogewotICAgIGlmICghaGFzUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBtX2ZpbHRlckltYWdlLT5waXhlbEJ1ZmZlcihhbHBoYUZvcm1hdCk7Ci19Cisg
ICAgRmlsdGVySW1hZ2VWZWN0b3IgZmlsdGVySW1hZ2VzOwogCi1zdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmdldFBpeGVsQnVmZmVyUmVzdWx0KEFscGhhUHJlbXVsdGlw
bGljYXRpb24gYWxwaGFGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIHN0ZDo6b3B0
aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQotewotICAgIEFTU0VSVCho
YXNSZXN1bHQoKSk7Ci0gICAgcmV0dXJuIG1fZmlsdGVySW1hZ2UtPmdldFBpeGVsQnVmZmVyKGFs
cGhhRm9ybWF0LCBzb3VyY2VSZWN0LCBjb2xvclNwYWNlKTsKLX0KKyAgICBmb3IgKGF1dG8mIGlu
cHV0RWZmZWN0IDogbV9pbnB1dEVmZmVjdHMpCisgICAgICAgIGZpbHRlckltYWdlcy5hcHBlbmQo
KmlucHV0RWZmZWN0LT5maWx0ZXJJbWFnZSgpKTsKIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlQ
aXhlbEJ1ZmZlclJlc3VsdChQaXhlbEJ1ZmZlciYgZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaGFzUmVzdWx0KCkp
OwotICAgIG1fZmlsdGVySW1hZ2UtPmNvcHlQaXhlbEJ1ZmZlcihkZXN0aW5hdGlvblBpeGVsQnVm
ZmVyLCBzb3VyY2VSZWN0KTsKKyAgICByZXR1cm4gZmlsdGVySW1hZ2VzOwogfQogCiB2b2lkIEZp
bHRlckVmZmVjdDo6Y29ycmVjdFByZW11bHRpcGxpZWRSZXN1bHRJZk5lZWRlZCgpCkBAIC0yMzMs
NyArMjEyLDcgQEAgVGV4dFN0cmVhbSYgRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mIHRzLCBSZXByZXNlbnRhdGlvblQKICAgICAKICAgICBpZiAocmVwcmVz
ZW50YXRpb25UeXBlID09IFJlcHJlc2VudGF0aW9uVHlwZTo6RGVidWdnaW5nKSB7CiAgICAgICAg
IFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJhbHBoYSBpbWFnZSIsIG1fYWxwaGFJbWFnZSk7CisgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiYWxwaGEgaW1hZ2UiLCByZXN1bHRJc0FscGhhSW1hZ2UoKSk7CiAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgib3BlcmF0aW5nIGNvbG9yc3BhY2UiLCBvcGVyYXRpbmdDb2xvclNwYWNl
KCkpOwogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJlc3VsdCBjb2xvcnNwYWNlIiwgcmVzdWx0
Q29sb3JTcGFjZSgpKTsKICAgICAgICAgdHMgPDwgIlxuIiA8PCBpbmRlbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAppbmRleCA5MTZiYmU4MzQ3MWE0MWFlMjViMjJhYzJiODYxOGUyYWI1ZGVhNjA2Li4xZjMxMmM5
MzUzZjk5ODAwN2EyZmZjY2U5ZmMxNGU5ZWVlN2FkYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3RWZWN0b3IuaCIKICNpbmNsdWRlICJG
aWx0ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkZpbHRlckltYWdlLmgiCisjaW5jbHVkZSAiRmls
dGVySW1hZ2VWZWN0b3IuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkBAIC00MCwxNiArNDEsMTMgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNz
IEZpbHRlckVmZmVjdCA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgYm9v
bCBjcmVhdGVSZXN1bHQoKTsKICAgICB2b2lkIGNsZWFyUmVzdWx0KCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjbGVhclJlc3VsdHNSZWN1cnNpdmUoKTsKLQogICAgIGJvb2wgaGFzUmVzdWx0KCkgY29u
c3QgeyByZXR1cm4gbV9maWx0ZXJJbWFnZTsgfQogCi0gICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVyUmVzdWx0KCk7Ci0gICAgUGl4ZWxCdWZmZXIqIHBpeGVsQnVmZmVyUmVzdWx0KEFscGhhUHJl
bXVsdGlwbGljYXRpb24pOwotICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVs
QnVmZmVyUmVzdWx0KEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9w
dCk7Ci0gICAgdm9pZCBjb3B5UGl4ZWxCdWZmZXJSZXN1bHQoUGl4ZWxCdWZmZXImIGRlc3RpbmF0
aW9uUGl4ZWxCdWZmZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpIGNvbnN0OworICAgIEZp
bHRlckltYWdlKiBmaWx0ZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVySW1hZ2UuZ2V0
KCk7IH0KKyAgICBGaWx0ZXJJbWFnZVZlY3RvciBpbnB1dEZpbHRlckltYWdlcygpIGNvbnN0Owor
CiAgICAgdm9pZCBjb3JyZWN0UHJlbXVsdGlwbGllZFJlc3VsdElmTmVlZGVkKCk7CiAKICAgICBG
aWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cygpIHsgcmV0dXJuIG1faW5wdXRFZmZlY3Rz
OyB9CkBAIC02MiwxMCArNjAsNiBAQCBwdWJsaWM6CiAgICAgLy8gUmVjdXJzZXMgb24gaW5wdXRz
LgogICAgIEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oY29uc3Qg
RmlsdGVyJik7CiAKLSAgICAvLyBTb2xpZCBibGFjayBpbWFnZSB3aXRoIGRpZmZlcmVudCBhbHBo
YSB2YWx1ZXMuCi0gICAgYm9vbCBpc0FscGhhSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2FscGhh
SW1hZ2U7IH0KLSAgICB2b2lkIHNldElzQWxwaGFJbWFnZShib29sIGFscGhhSW1hZ2UpIHsgbV9h
bHBoYUltYWdlID0gYWxwaGFJbWFnZTsgfQotCiAgICAgSW50UmVjdCBhYnNvbHV0ZVBhaW50UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVQYWludFJlY3Q7IH0KICAgICB2b2lkIHNldEFi
c29sdXRlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGFic29sdXRlUGFpbnRSZWN0KSB7IG1fYWJz
b2x1dGVQYWludFJlY3QgPSBhYnNvbHV0ZVBhaW50UmVjdDsgfQogCkBAIC0xMTQsMTkgKzEwOCwx
MyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBvcGVyYXRpbmdD
b2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7
IH0KIAorICAgIC8vIFNvbGlkIGJsYWNrIGltYWdlIHdpdGggZGlmZmVyZW50IGFscGhhIHZhbHVl
cy4KKyAgICB2aXJ0dWFsIGJvb2wgcmVzdWx0SXNBbHBoYUltYWdlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgcmVzdWx0
Q29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiBp
biwgY29uc3QgaW50KSB7IGluLT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKG1fb3BlcmF0aW5n
Q29sb3JTcGFjZSk7IH0KICAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAgICAgCi0gICAgc3RhdGljIFZlY3RvcjxmbG9hdD4g
bm9ybWFsaXplZEZsb2F0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCi0gICAgewotICAg
ICAgICBWZWN0b3I8ZmxvYXQ+IG5vcm1hbGl6ZWRWYWx1ZXModmFsdWVzLnNpemUoKSk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgbm9ybWFsaXplZFZhbHVlc1tpXSA9IG5vcm1hbGl6ZWRGbG9hdCh2YWx1ZXNbaV0pOwotICAg
ICAgICByZXR1cm4gbm9ybWFsaXplZFZhbHVlczsKLSAgICB9Ci0KIHByb3RlY3RlZDoKICAgICB1
c2luZyBGaWx0ZXJGdW5jdGlvbjo6RmlsdGVyRnVuY3Rpb247CiAKQEAgLTE1OCw3ICsxNDYsNiBA
QCBwcml2YXRlOgogICAgIC8vIGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBtYXBwZWQgdG8gYWJz
b2x1dGUgY29vcmRpbmF0ZXMgYmVmb3JlIGNsaXBwaW5nLgogICAgIEZsb2F0UmVjdCBtX2Fic29s
dXRlVW5jbGlwcGVkU3VicmVnaW9uOwogCi0gICAgYm9vbCBtX2FscGhhSW1hZ2UgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9oYXNYIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzWSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2hhc1dpZHRoIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0QXBwbGllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RBcHBsaWVy
LmgKaW5kZXggZjdhNThkMGY4MTFkMmM2NzEyNzM5ZTEzMDFlNDMzY2I1NTAyNGRiZC4uZmUzMjRm
NzNkMGQwMTY4ODBjMjczNDUwYWJjMGExNGZkOGVmYjNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RBcHBsaWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RB
cHBsaWVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJG
aWx0ZXJFZmZlY3RWZWN0b3IuaCIKKyNpbmNsdWRlICJGaWx0ZXJJbWFnZVZlY3Rvci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIEZpbHRl
ckVmZmVjdEFwcGxpZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0QXBw
bGllcigpID0gZGVmYXVsdDsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoY29uc3QgRmls
dGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dHMpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0
cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgPSAwOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRmls
dGVyRWZmZWN0VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKaW5kZXggODQzMDI1OGVmMmE3MjVmYTFmYzNm
MWU0Yzg3YTkwMDkwZWQ0ZWYzMy4uNzY5MTY3ODQ2OWQxNDk0OTZmYmIwYmFkMmVhYmQ4M2M4YjNk
NDcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKQEAgLTM3LDE0ICszNywxNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZlB0cjxGaWx0ZXJJbWFnZT4gRmlsdGVySW1hZ2U6OmNyZWF0ZShjb25z
dCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCitSZWZQdHI8RmlsdGVy
SW1hZ2U+IEZpbHRlckltYWdlOjpjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJy
ZWdpb24sIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBib29sIGlzQWxwaGFJbWFn
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UpCiB7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xh
bXBpbmcoYWJzb2x1dGVJbWFnZVJlY3Quc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBGaWx0ZXJJbWFnZShhYnNvbHV0ZUltYWdlUmVjdCwgcmVuZGVyaW5nTW9kZSwgY29sb3JTcGFj
ZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsdGVySW1hZ2UocHJpbWl0aXZlU3VicmVn
aW9uLCBhYnNvbHV0ZUltYWdlUmVjdCwgaXNBbHBoYUltYWdlLCByZW5kZXJpbmdNb2RlLCBjb2xv
clNwYWNlKSk7CiB9CiAKLUZpbHRlckltYWdlOjpGaWx0ZXJJbWFnZShjb25zdCBJbnRSZWN0JiBh
YnNvbHV0ZUltYWdlUmVjdCwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCi0gICAgOiBtX2Fic29sdXRlSW1hZ2VSZWN0
KGFic29sdXRlSW1hZ2VSZWN0KQorRmlsdGVySW1hZ2U6OkZpbHRlckltYWdlKGNvbnN0IEZsb2F0
UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVj
dCwgYm9vbCBpc0FscGhhSW1hZ2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQorICAgIDogbV9wcmltaXRpdmVTdWJy
ZWdpb24ocHJpbWl0aXZlU3VicmVnaW9uKQorICAgICwgbV9hYnNvbHV0ZUltYWdlUmVjdChhYnNv
bHV0ZUltYWdlUmVjdCkKKyAgICAsIG1faXNBbHBoYUltYWdlKGlzQWxwaGFJbWFnZSkKICAgICAs
IG1fcmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKQogICAgICwgbV9jb2xvclNwYWNlKGNvbG9y
U3BhY2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckltYWdlLmgKaW5kZXggMjcyYzNlMDgwZTljOTFiNjQ0ZTM1OGQ1ZDk3ZjYx
MmY2OWVlYThlYy4uOTNjZGVjOGI4MDNiZTMyNzk3ZTZiOTM4OTkwMmYxMWE1NjJhMDJiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW1hZ2UuaApAQCAtMzgsMTAgKzM4LDEyIEBAIGNsYXNzIFBpeGVsQnVmZmVyOwogCiBjbGFz
cyBGaWx0ZXJJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckltYWdlPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxGaWx0ZXJJbWFnZT4gY3JlYXRlKGNvbnN0IEludFJlY3QmIGFi
c29sdXRlSW1hZ2VSZWN0LCBSZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZpbHRlckltYWdlPiBjcmVhdGUoY29uc3QgRmxvYXRS
ZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0
LCBib29sIGlzQWxwaGFJbWFnZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJik7CiAKKyAgICBGbG9hdFJlY3QgcHJpbWl0aXZlU3VicmVnaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmltaXRpdmVTdWJyZWdpb247IH0KICAgICBJbnRSZWN0IGFic29sdXRlSW1hZ2VS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUltYWdlUmVjdDsgfQogCisgICAgYm9vbCBp
c0FscGhhSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzQWxwaGFJbWFnZTsgfQogICAgIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsg
fQogICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCkBAIC01NSwxNCArNTcsMTYgQEAgcHVibGljOgogICAg
IHZvaWQgdHJhbnNmb3JtVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYp
OwogCiBwcml2YXRlOgotICAgIEZpbHRlckltYWdlKGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1h
Z2VSZWN0LCBSZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKKyAg
ICBGaWx0ZXJJbWFnZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3Qg
SW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIGJvb2wgaXNBbHBoYUltYWdlLCBSZW5kZXJpbmdN
b2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+JiBwaXhlbEJ1ZmZlclNsb3QoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CiAK
ICAgICBib29sIHJlcXVpcmVzUGl4ZWxCdWZmZXJDb2xvclNwYWNlQ29udmVyc2lvbihzdGQ6Om9w
dGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4pIGNvbnN0OwogCisgICAgRmxvYXRSZWN0IG1f
cHJpbWl0aXZlU3VicmVnaW9uOwogICAgIEludFJlY3QgbV9hYnNvbHV0ZUltYWdlUmVjdDsKIAor
ICAgIGJvb2wgbV9pc0FscGhhSW1hZ2UgeyBmYWxzZSB9OwogICAgIFJlbmRlcmluZ01vZGUgbV9y
ZW5kZXJpbmdNb2RlOwogICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW1hZ2VWZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVySW1hZ2VWZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTc1MzU5MmE3YzZhOWQyZjZmYzU0
OWU0ZDdlZjk0Y2Y3MjAwOGY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZVZlY3Rvci5oCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRmlsdGVySW1hZ2U7CisKK3VzaW5nIEZpbHRlckltYWdlVmVjdG9yID0gVmVjdG9y
PFJlZjxGaWx0ZXJJbWFnZT4+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEu
Y3BwCmluZGV4IDAxOGI1NzY1NzIzMGMzYzliNDQyZGQyODFkYTBlOWZmMmU5MmU2MDkuLmJjNWEy
NTUzOGFiNGZkMGNlOGQzYzg0ZjZlYTA0MmNmMDA4YzljYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIHZvaWQgU291cmNlQWxwaGE6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogCiBib29sIFNvdXJjZUFscGhhOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIFNvdXJjZUFs
cGhhU29mdHdhcmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RWZmZWN0cygpKTsK
KyAgICByZXR1cm4gU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFwcGx5KGZpbHRl
ciwgaW5wdXRGaWx0ZXJJbWFnZXMoKSwgKmZpbHRlckltYWdlKCkpOwogfQogCiBUZXh0U3RyZWFt
JiBTb3VyY2VBbHBoYTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVw
cmVzZW50YXRpb25UeXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMzQ5ZGEwZGI5
ZjhkNGM2YTljZjk0YWJlMDliZWE4YWM3OGFiMmMwOC4uMTA2ZjU0NDY1NDAxZDhmNDY2NzAyZmE4
MDZjNzMwNWRkOGVmYTY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC00NSw3ICs0NSw3IEBA
IHZvaWQgU291cmNlR3JhcGhpYzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoY29uc3QgRmls
dGVyJiBmaWx0ZXIpCiAKIGJvb2wgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewotICAgIHJldHVybiBTb3VyY2VHcmFwaGljU29mdHdh
cmVBcHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIGlucHV0RWZmZWN0cygpKTsKKyAgICByZXR1
cm4gU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllcigqdGhpcykuYXBwbHkoZmlsdGVyLCB7IH0s
ICpmaWx0ZXJJbWFnZSgpKTsKIH0KIAogVGV4dFN0cmVhbSYgU291cmNlR3JhcGhpYzo6ZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVwcmVzZW50YXRpb25UeXBlKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVCbGVuZFNvZnR3YXJlQXBwbGllci5jcHAK
aW5kZXggYjUyM2EyYjI5YzM4MmVhMjkyZjliYmViNDQ1YWI2OWExMDVmZDI1Yi4uNGFmNzc3YTVj
Y2YyZDU0MTdlZGQ0MzUzYjRiNGViYTFhNjBhMTBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBs
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0zNCwyMyArMzQsMjMgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi1ib29s
IEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKQorYm9vbCBGRUJsZW5kU29mdHdhcmVBcHBsaWVy
OjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBG
aWx0ZXJJbWFnZSYgcmVzdWx0KQogewotICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVj
dHNbMF0uZ2V0KCk7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdHNbMV0uZ2V0
KCk7CisgICAgYXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7CisgICAgYXV0byYgaW5wdXQy
ID0gaW5wdXRzWzFdLmdldCgpOwogCi0gICAgYXV0byByZXN1bHRJbWFnZSA9IG1fZWZmZWN0Lmlt
YWdlQnVmZmVyUmVzdWx0KCk7CisgICAgYXV0byByZXN1bHRJbWFnZSA9IHJlc3VsdC5pbWFnZUJ1
ZmZlcigpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBhdXRv
IGltYWdlQnVmZmVyMiA9IGluMi0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBpZiAoIWltYWdl
QnVmZmVyIHx8ICFpbWFnZUJ1ZmZlcjIpCisgICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXQuaW1h
Z2VCdWZmZXIoKTsKKyAgICBhdXRvIGlucHV0SW1hZ2UyID0gaW5wdXQyLmltYWdlQnVmZmVyKCk7
CisgICAgaWYgKCFpbnB1dEltYWdlIHx8ICFpbnB1dEltYWdlMikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKTsKLSAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIyLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSkpOwotICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZl
ciwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKSksIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9LCB7IENvbXBvc2l0ZU9w
ZXJhdG9yOjpTb3VyY2VPdmVyLCBtX2VmZmVjdC5ibGVuZE1vZGUoKSB9KTsKKyAgICBhdXRvJiBm
aWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKKyAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgpKSwgeyB7IH0sIGlucHV0SW1hZ2UtPmxv
Z2ljYWxTaXplKCkgfSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciwgbV9lZmZlY3Qu
YmxlbmRNb2RlKCkgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVCbGVu
ZFNvZnR3YXJlQXBwbGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmgKaW5kZXggOWFkYTg0MWMzMmJi
MGYyMzAwODgzYTlmZTJlZjMyOGQ3YWNiOTRmZS4uMTUwMjg1MjA5ZDc5ZmE3NGEwYTA4Yzc1NTg5
NjZhMjVjMDgwZTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdh
cmVBcHBsaWVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRkVCbGVuZFNvZnR3YXJlQXBwbGll
ciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVCbGVuZD4gewogcHVibGlj
OgogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKSBvdmVycmlkZTsKKyAgICBi
b29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMs
IEZpbHRlckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb2xvck1hdHJpeFNvZnR3
YXJlQXBwbGllci5jcHAKaW5kZXggNjdlYzBhMTE5ZjcyYTE2NWIwMTUxMzk5Yzg2MjYyZjk2M2Jk
YTY2Ni4uNDRhMzk1MDhhYWU5MGI4ZWM0YzlkODdkYmUwNTE1MjhiOTM0NDJkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNv
bG9yTWF0cml4U29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXIu
Y3BwCkBAIC0yNTksMjcgKzI1OSwyNCBAQCB2b2lkIEZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5UGxhdGZvcm0oUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKSBjb25zdAogICAgIGFw
cGx5UGxhdGZvcm1VbmFjY2VsZXJhdGVkKHBpeGVsQnVmZmVyKTsKIH0KIAotYm9vbCBGRUNvbG9y
TWF0cml4U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJF
ZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykKK2Jvb2wgRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBw
bGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0
cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBhdXRvIGluID0gaW5wdXRFZmZlY3RzWzBd
LmdldCgpOworICAgIGF1dG8mIGlucHV0ID0gaW5wdXRzWzBdLmdldCgpOwogCi0gICAgYXV0byBy
ZXN1bHRJbWFnZSA9IG1fZWZmZWN0LmltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgYXV0byByZXN1
bHRJbWFnZSA9IHJlc3VsdC5pbWFnZUJ1ZmZlcigpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gaW5CdWZmZXIgPSBpbi0+aW1hZ2VCdWZm
ZXJSZXN1bHQoKTsKLSAgICBpZiAoaW5CdWZmZXIpCi0gICAgICAgIHJlc3VsdEltYWdlLT5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgIGF1dG8gaW5wdXRJbWFn
ZSA9IGlucHV0LmltYWdlQnVmZmVyKCk7CisgICAgaWYgKGlucHV0SW1hZ2UpCisgICAgICAgIHJl
c3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBtX2VmZmVj
dC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpKTsK
IAotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX2VmZmVjdC5yZXN1bHRDb2xv
clNwYWNlKCkgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgcmVzdWx0LmNv
bG9yU3BhY2UoKSB9OwogICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50KCksIHJlc3VsdElt
YWdlLT50cnVuY2F0ZWRMb2dpY2FsU2l6ZSgpKTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gcmVz
dWx0SW1hZ2UtPmdldFBpeGVsQnVmZmVyKGZvcm1hdCwgaW1hZ2VSZWN0KTsKICAgICBpZiAoIXBp
eGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9lZmZlY3QudHlw
ZSgpID09IEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBKQotICAgICAgICBtX2Vm
ZmVjdC5zZXRJc0FscGhhSW1hZ2UodHJ1ZSk7Ci0KICAgICBhcHBseVBsYXRmb3JtKCpwaXhlbEJ1
ZmZlcik7CiAgICAgcmVzdWx0SW1hZ2UtPnB1dFBpeGVsQnVmZmVyKCpwaXhlbEJ1ZmZlciwgaW1h
Z2VSZWN0KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBw
bGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyLmgKaW5kZXggMTMzOTQ4OWU1YTNmZmNlYmQz
MmQ5ZDhiOWZkYzAyMGYzOTVlZTg3Yi4uYTY2MTk0NTNhNjA0NTI0OTlhMDQ4NjFkNzY1MTYyNDU2
ZWQ5ZDkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbG9yTWF0cml4
U29mdHdhcmVBcHBsaWVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgRkVDb2xvck1hdHJpeFNv
ZnR3YXJlQXBwbGllciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVDb2xv
ck0KIHB1YmxpYzoKICAgICBGRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyKEZFQ29sb3JNYXRy
aXgmKTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJiBpbnB1dEVmZmVjdHMpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHkoY29uc3QgRmls
dGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3Vs
dCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQgbWF0cml4KGZsb2F0JiBy
ZWQsIGZsb2F0JiBncmVlbiwgZmxvYXQmIGJsdWUsIGZsb2F0JiBhbHBoYSkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvbmVudFRyYW5zZmVyU29m
dHdhcmVBcHBsaWVyLmNwcAppbmRleCBkZTQ0MmFkZWY0OTkwNjExOTczOWUwZTNlNWY0NWUwYjZk
MTk4YTM1Li5jYTA5ZDg5NjYwZWYwNzNmZTdiODk0MGE4ZDhlY2Q0Y2ExMTU3ODI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
Q29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb25lbnRUcmFuc2ZlclNv
ZnR3YXJlQXBwbGllci5jcHAKQEAgLTEzMSwxNiArMTMxLDE2IEBAIHZvaWQgRkVDb21wb25lbnRU
cmFuc2ZlclNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybShQaXhlbEJ1ZmZlciYgcGl4ZWxC
dWZmZXIpCiAgICAgfQogfQogCi1ib29sIEZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRF
ZmZlY3RzKQorYm9vbCBGRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyOjphcHBseShj
b25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFn
ZSYgcmVzdWx0KQogewotICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdHNbMF0uZ2V0
KCk7CisgICAgYXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7CiAgICAgCi0gICAgYXV0byBk
ZXN0aW5hdGlvblBpeGVsQnVmZmVyID0gbV9lZmZlY3QucGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9u
UGl4ZWxCdWZmZXIgPSByZXN1bHQucGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkKTsKICAgICBpZiAoIWRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gZHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1
ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwot
ICAgIGluLT5jb3B5UGl4ZWxCdWZmZXJSZXN1bHQoKmRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIGRy
YXdpbmdSZWN0KTsKKyAgICBhdXRvIGRyYXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVn
aW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpOworICAgIGlu
cHV0LmNvcHlQaXhlbEJ1ZmZlcigqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZHJhd2luZ1JlY3Qp
OwogCiAgICAgYXBwbHlQbGF0Zm9ybSgqZGVzdGluYXRpb25QaXhlbEJ1ZmZlcik7CiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb25l
bnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5oCmluZGV4IDVlMzIxYzcxOTNiOWNhZDQ1NzIxNDYw
YzdlYjQzOGUwYjcwMDQyYjcuLmNjOTBiOGM3NmU5NWY3YTNhZmQxZmMyMTMxOTlmNzg2NzgxZjFk
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb25lbnRU
cmFuc2ZlclNvZnR3YXJlQXBwbGllci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEZFQ29tcG9u
ZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVB
cHBsaWVyPEZFCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIGJvb2wgYXBw
bHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMp
IG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1h
Z2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgdXNpbmcgTG9va3VwVGFibGUgPSBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3
YXJlL0ZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXIu
Y3BwCmluZGV4IDU0ZDU5OTc5ZGE4YWIyNGJiYTIwOTMwMzM2M2MwMjczZTQ2ZjVjOTguLjJjNmJi
NGE0MDJiZWQzZGUyNzgzZjU0ZjI0MmZjMjgwOWJmYTEzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0
d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0xMjYsMTkg
KzEyNiwxOSBAQCBpbmxpbmUgdm9pZCBGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlQ
bGF0Zm9ybUFyaXRobWV0aWModW5zaWduZWQgY2hhciogcwogfQogI2VuZGlmCiAKLWJvb2wgRkVD
b21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5QXJpdGhtZXRpYyhGaWx0ZXJFZmZlY3QqIGlu
LCBGaWx0ZXJFZmZlY3QqIGluMikKK2Jvb2wgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFw
cGx5QXJpdGhtZXRpYyhGaWx0ZXJJbWFnZSYgaW5wdXQsIEZpbHRlckltYWdlJiBpbnB1dDIsIEZp
bHRlckltYWdlJiByZXN1bHQpCiB7Ci0gICAgYXV0byBkZXN0aW5hdGlvblBpeGVsQnVmZmVyID0g
bV9lZmZlY3QucGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCk7CisgICAgYXV0byBkZXN0aW5hdGlvblBpeGVsQnVmZmVyID0gcmVzdWx0LnBpeGVs
QnVmZmVyKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpOwogICAgIGlmICgh
ZGVzdGluYXRpb25QaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW50
UmVjdCBlZmZlY3RBRHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0
UGl4ZWxCdWZmZXIoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIGF1dG8gc291cmNlUGl4
ZWxCdWZmZXIgPSBpbi0+Z2V0UGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6UHJlbXVsdGlwbGllZCwgZWZmZWN0QURyYXdpbmdSZWN0LCBtX2VmZmVjdC5vcGVyYXRpbmdD
b2xvclNwYWNlKCkpOworICAgIEludFJlY3QgZWZmZWN0QURyYXdpbmdSZWN0ID0gbV9lZmZlY3Qu
cmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0
KCkpOworICAgIGF1dG8gc291cmNlUGl4ZWxCdWZmZXIgPSBpbnB1dC5nZXRQaXhlbEJ1ZmZlcihB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBlZmZlY3RBRHJhd2luZ1JlY3Qs
IG1fZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAgICAgaWYgKCFzb3VyY2VQaXhlbEJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW50UmVjdCBlZmZlY3RCRHJhd2lu
Z1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW4yLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBpbjItPmNvcHlQaXhlbEJ1ZmZlclJlc3VsdCgqZGVz
dGluYXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0QkRyYXdpbmdSZWN0KTsKKyAgICBJbnRSZWN0IGVm
ZmVjdEJEcmF3aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1
ZmZlcihpbnB1dDIuYWJzb2x1dGVJbWFnZVJlY3QoKSk7CisgICAgaW5wdXQyLmNvcHlQaXhlbEJ1
ZmZlcigqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0QkRyYXdpbmdSZWN0KTsKIAogICAg
IGF1dG8mIHNvdXJjZVBpeGVsQXJyYXkgPSBzb3VyY2VQaXhlbEJ1ZmZlci0+ZGF0YSgpOwogICAg
IGF1dG8mIGRlc3RpbmF0aW9uUGl4ZWxBcnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmRh
dGEoKTsKQEAgLTE0OSwxNSArMTQ5LDE1IEBAIGJvb2wgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5QXJpdGhtZXRpYyhGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5
Tm9uQXJpdGhtZXRpYyhGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMikKK2Jvb2wg
RkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5Tm9uQXJpdGhtZXRpYyhGaWx0ZXJJbWFn
ZSYgaW5wdXQsIEZpbHRlckltYWdlJiBpbnB1dDIsIEZpbHRlckltYWdlJiByZXN1bHQpCiB7Ci0g
ICAgYXV0byByZXN1bHRJbWFnZSA9IG1fZWZmZWN0LmltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAg
YXV0byByZXN1bHRJbWFnZSA9IHJlc3VsdC5pbWFnZUJ1ZmZlcigpOwogICAgIGlmICghcmVzdWx0
SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBp
bi0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBhdXRvIGltYWdlQnVmZmVyMiA9IGluMi0+aW1h
Z2VCdWZmZXJSZXN1bHQoKTsKLSAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1ZmZlcjIp
CisgICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXQuaW1hZ2VCdWZmZXIoKTsKKyAgICBhdXRvIGlu
cHV0SW1hZ2UyID0gaW5wdXQyLmltYWdlQnVmZmVyKCk7CisgICAgaWYgKCFpbnB1dEltYWdlIHx8
ICFpbnB1dEltYWdlMikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byYgZmlsdGVy
Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CkBAIC0xNjcsMzggKzE2NywzOCBAQCBi
b29sIEZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjphcHBseU5vbkFyaXRobWV0aWMoRmlsdGVy
RWZmZWN0KiBpbiwgRmlsdGVyRWZmZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNl
IEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJ
bWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSkpOwogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfSU46IHsKICAgICAgICAgLy8gQXBwbGllcyBv
bmx5IHRvIHRoZSBpbnRlcnNlY3RlZCByZWdpb24uCi0gICAgICAgIEludFJlY3QgZGVzdGluYXRp
b25SZWN0ID0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCk7Ci0gICAgICAgIGRlc3RpbmF0aW9uUmVj
dC5pbnRlcnNlY3QoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICAgICAgZGVzdGluYXRp
b25SZWN0LmludGVyc2VjdChtX2VmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKKyAgICAgICAg
SW50UmVjdCBkZXN0aW5hdGlvblJlY3QgPSBpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgpOworICAg
ICAgICBkZXN0aW5hdGlvblJlY3QuaW50ZXJzZWN0KGlucHV0Mi5hYnNvbHV0ZUltYWdlUmVjdCgp
KTsKKyAgICAgICAgZGVzdGluYXRpb25SZWN0LmludGVyc2VjdChyZXN1bHQuYWJzb2x1dGVJbWFn
ZVJlY3QoKSk7CiAgICAgICAgIGlmIChkZXN0aW5hdGlvblJlY3QuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIEludFJlY3QgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QgPSBk
ZXN0aW5hdGlvblJlY3QgLSBtX2VmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7
Ci0gICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluLT5hYnNv
bHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgICAgIEludFJlY3Qgc291cmNlMlJlY3Qg
PSBkZXN0aW5hdGlvblJlY3QgLSBpbjItPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsK
LSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgRmxv
YXRSZWN0KGFkanVzdGVkRGVzdGluYXRpb25SZWN0KSwgRmxvYXRSZWN0KHNvdXJjZTJSZWN0KSk7
Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgRmxv
YXRSZWN0KGFkanVzdGVkRGVzdGluYXRpb25SZWN0KSwgRmxvYXRSZWN0KHNvdXJjZVJlY3QpLCB7
IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VJbiB9KTsKKyAgICAgICAgSW50UmVjdCBhZGp1c3Rl
ZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIHJlc3VsdC5hYnNvbHV0ZUltYWdl
UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IGRlc3RpbmF0
aW9uUmVjdCAtIGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAg
SW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGlucHV0Mi5hYnNvbHV0ZUlt
YWdlUmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbnB1dEltYWdlMiwgRmxvYXRSZWN0KGFkanVzdGVkRGVzdGluYXRpb25SZWN0KSwgRmxv
YXRSZWN0KHNvdXJjZTJSZWN0KSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbnB1dEltYWdlLCBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QpLCBGbG9h
dFJlY3Qoc291cmNlUmVjdCksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZUluIH0pOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoK
LSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBtX2Vm
ZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7
Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIG1f
ZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSwgeyB7IH0sIGltYWdlQnVmZmVyMi0+bG9naWNhbFNpemUoKSB9LCBDb21wb3NpdGVPcGVyYXRv
cjo6RGVzdGluYXRpb25PdXQpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cigqaW5wdXRJbWFnZSwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC5h
YnNvbHV0ZUltYWdlUmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbnB1dEltYWdlMiwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1
dDIuYWJzb2x1dGVJbWFnZVJlY3QoKSksIHsgeyB9LCBpbnB1dEltYWdlMi0+bG9naWNhbFNpemUo
KSB9LCBDb21wb3NpdGVPcGVyYXRvcjo6RGVzdGluYXRpb25PdXQpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUDoKLSAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVy
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBtX2VmZmVjdC5kcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgeyB7IH0sIGltYWdlQnVm
ZmVyLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VBdG9wKTsKKyAg
ICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UyLCBtX2VmZmVj
dC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0Mi5hYnNvbHV0ZUltYWdlUmVjdCgpKSk7
CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBtX2Vm
ZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkp
LCB7IHsgfSwgaW5wdXRJbWFnZS0+bG9naWNhbFNpemUoKSB9LCBDb21wb3NpdGVPcGVyYXRvcjo6
U291cmNlQXRvcCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVS
QVRPUl9YT1I6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcjIsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQ
YWludFJlY3QoKSksIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9LCBDb21wb3Np
dGVPcGVyYXRvcjo6WE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
KmlucHV0SW1hZ2UyLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0Mi5h
YnNvbHV0ZUltYWdlUmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbnB1dEltYWdlLCBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlucHV0
LmFic29sdXRlSW1hZ2VSZWN0KCkpLCB7IHsgfSwgaW5wdXRJbWFnZS0+bG9naWNhbFNpemUoKSB9
LCBDb21wb3NpdGVPcGVyYXRvcjo6WE9SKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZF
Q09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUM6CkBAIC0yMDYsMjIgKzIwNiwyMiBAQCBib29s
IEZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjphcHBseU5vbkFyaXRobWV0aWMoRmlsdGVyRWZm
ZWN0KiBpbiwgRmlsdGVyRWZmZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIEZF
Q09NUE9TSVRFX09QRVJBVE9SX0xJR0hURVI6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgbV9lZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJ
bWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNh
bFNpemUoKSB9LCBDb21wb3NpdGVPcGVyYXRvcjo6UGx1c0xpZ2h0ZXIpOworICAgICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZTIsIG1fZWZmZWN0LmRyYXdpbmdS
ZWdpb25PZklucHV0SW1hZ2UoaW5wdXQyLmFic29sdXRlSW1hZ2VSZWN0KCkpKTsKKyAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIG1fZWZmZWN0LmRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSksIHsgeyB9LCBp
bnB1dEltYWdlLT5sb2dpY2FsU2l6ZSgpIH0sIENvbXBvc2l0ZU9wZXJhdG9yOjpQbHVzTGlnaHRl
cik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBG
aWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykKK2Jvb2wgRkVDb21wb3NpdGVTb2Z0d2Fy
ZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBp
bnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlu
cHV0RWZmZWN0c1swXS5nZXQoKTsKLSAgICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0
c1sxXS5nZXQoKTsKKyAgICBhdXRvJiBpbnB1dCA9IGlucHV0c1swXS5nZXQoKTsKKyAgICBhdXRv
JiBpbnB1dDIgPSBpbnB1dHNbMV0uZ2V0KCk7CiAKICAgICBpZiAobV9lZmZlY3Qub3BlcmF0aW9u
KCkgPT0gRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQykKLSAgICAgICAgcmV0dXJuIGFw
cGx5QXJpdGhtZXRpYyhpbiwgaW4yKTsKLSAgICByZXR1cm4gYXBwbHlOb25Bcml0aG1ldGljKGlu
LCBpbjIpOworICAgICAgICByZXR1cm4gYXBwbHlBcml0aG1ldGljKGlucHV0LCBpbnB1dDIsIHJl
c3VsdCk7CisgICAgcmV0dXJuIGFwcGx5Tm9uQXJpdGhtZXRpYyhpbnB1dCwgaW5wdXQyLCByZXN1
bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdh
cmVBcHBsaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmgKaW5kZXggMjYwOWY1OWFmOTcyZTRi
NWI0MGRiMzYxNTIxZTBlZDlkN2U5MTllZC4uODZhZTAyZjIzMWI1YTEyZTFlMDE2Mjk5NzkxZWM1
ZDVhYTQyMGFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVT
b2Z0d2FyZUFwcGxpZXIuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBGRUNvbXBvc2l0ZVNvZnR3
YXJlQXBwbGllciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVDb21wb3Np
dAogcHVibGljOgogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0
IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKSBvdmVycmlk
ZTsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9y
JiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IHN0YXRpYyB1aW50OF90IGNsYW1wQnl0ZShpbnQpOwpAQCAtNDcsOCArNDcsOCBAQCBwcml2YXRl
OgogCiAgICAgc3RhdGljIGlubGluZSB2b2lkIGFwcGx5UGxhdGZvcm1Bcml0aG1ldGljKHVuc2ln
bmVkIGNoYXIqIHNvdXJjZSwgdW5zaWduZWQgY2hhciogZGVzdGluYXRpb24sIGludCBwaXhlbEFy
cmF5TGVuZ3RoLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7CiAKLSAg
ICBib29sIGFwcGx5QXJpdGhtZXRpYyhGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGlu
Mik7Ci0gICAgYm9vbCBhcHBseU5vbkFyaXRobWV0aWMoRmlsdGVyRWZmZWN0KiBpbiwgRmlsdGVy
RWZmZWN0KiBpbjIpOworICAgIGJvb2wgYXBwbHlBcml0aG1ldGljKEZpbHRlckltYWdlJiBpbnB1
dCwgRmlsdGVySW1hZ2UmIGlucHV0MiwgRmlsdGVySW1hZ2UmIHJlc3VsdCk7CisgICAgYm9vbCBh
cHBseU5vbkFyaXRobWV0aWMoRmlsdGVySW1hZ2UmIGlucHV0LCBGaWx0ZXJJbWFnZSYgaW5wdXQy
LCBGaWx0ZXJJbWFnZSYgcmVzdWx0KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdh
cmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2Fy
ZUFwcGxpZXIuY3BwCmluZGV4IGFiOGFhODY3ZWFiOWYyNzUxMDRlNzU3M2Q5YzEwOWM5ODU2ZjBj
NjQuLjhlYjJhYWM2NDU4NGM3MTI1Y2YwZmFlODM4ZDU1MjAyODc5NzU1NDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb252
b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBs
aWVyLmNwcApAQCAtMjg2LDI0ICsyODYsMjQgQEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4U29mdHdh
cmVBcHBsaWVyOjphcHBseVBsYXRmb3JtKFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhKQogICAg
ICAgICBzZXRPdXRlclBpeGVscyhwYWludGluZ0RhdGEsIGNsaXBSaWdodCwgcGFpbnRpbmdEYXRh
LnRhcmdldE9mZnNldC55KCksIHBhaW50aW5nRGF0YS53aWR0aCwgY2xpcEJvdHRvbSk7CiB9CiAK
LWJvb2wgRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVy
JiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMpCitib29sIEZFQ29udm9s
dmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRl
ckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpCiB7Ci0gICAgRmlsdGVy
RWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0c1swXS5nZXQoKTsKKyAgICBhdXRvJiBpbnB1dCA9IGlu
cHV0c1swXS5nZXQoKTsKIAogICAgIGF1dG8gYWxwaGFGb3JtYXQgPSBtX2VmZmVjdC5wcmVzZXJ2
ZUFscGhhKCkgPyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgOiBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOwotICAgIGF1dG8gZGVzdGluYXRpb25Q
aXhlbEJ1ZmZlciA9IG1fZWZmZWN0LnBpeGVsQnVmZmVyUmVzdWx0KGFscGhhRm9ybWF0KTsKKyAg
ICBhdXRvIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSByZXN1bHQucGl4ZWxCdWZmZXIoYWxwaGFG
b3JtYXQpOwogICAgIGlmICghZGVzdGluYXRpb25QaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byBlZmZlY3REcmF3aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3Rl
ZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAg
YXV0byBzb3VyY2VQaXhlbEJ1ZmZlciA9IGluLT5nZXRQaXhlbEJ1ZmZlclJlc3VsdChhbHBoYUZv
cm1hdCwgZWZmZWN0RHJhd2luZ1JlY3QsIG1fZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7
CisgICAgYXV0byBlZmZlY3REcmF3aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9m
SW5wdXRQaXhlbEJ1ZmZlcihpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgpKTsKKyAgICBhdXRvIHNv
dXJjZVBpeGVsQnVmZmVyID0gaW5wdXQuZ2V0UGl4ZWxCdWZmZXIoYWxwaGFGb3JtYXQsIGVmZmVj
dERyYXdpbmdSZWN0LCBtX2VmZmVjdC5vcGVyYXRpbmdDb2xvclNwYWNlKCkpOwogICAgIGlmICgh
c291cmNlUGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHNv
dXJjZVBpeGVsQXJyYXkgPSBzb3VyY2VQaXhlbEJ1ZmZlci0+ZGF0YSgpOwogICAgIGF1dG8mIGRl
c3RpbmF0aW9uUGl4ZWxBcnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmRhdGEoKTsKICAg
ICAKLSAgICBhdXRvIHBhaW50U2l6ZSA9IG1fZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6
ZSgpOworICAgIGF1dG8gcGFpbnRTaXplID0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkuc2l6
ZSgpOwogCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YSA9IHsKICAgICAgICAgc291cmNl
UGl4ZWxBcnJheSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZl
TWF0cml4U29mdHdhcmVBcHBsaWVyLmgKaW5kZXggMjRkNmMwOGRhNzljMTc3Y2FkODcxN2FmOGM5
ZDIyMjljMmRlZmU4MS4uZDFkMTlhNTNmMDAxMGQ3ODY3MWM3MTRiZjNjNWVkNmY5ZDQwZjA5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29m
dHdhcmVBcHBsaWVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgRkVDb252b2x2ZU1hdHJpeFNv
ZnR3YXJlQXBwbGllciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVDb24K
IHB1YmxpYzoKICAgICB1c2luZyBCYXNlOjpCYXNlOwogCi0gICAgYm9vbCBhcHBseShjb25zdCBG
aWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykgb3ZlcnJpZGU7
CisgICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYg
aW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBz
dHJ1Y3QgUGFpbnRpbmdEYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggZGIzYzIxYzNmNjQy
M2RkNzJhNzIzMzA3YmQ5NDQ0Mzg5NTMwYTY5Ny4uZDkwY2Y4NTU3YmM0MThjNWJlYTNhNDRhOGVj
MmY2NzRiOTBlYjVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTQ5LDMyICs0OSwzMiBAQCBp
bnQgRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXI6OnlDaGFubmVsSW5kZXgoKSBjb25z
dAogICAgIHJldHVybiBtX2VmZmVjdC55Q2hhbm5lbFNlbGVjdG9yKCkgLSAxOwogfQogCi1ib29s
IEZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZp
bHRlciwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMpCitib29sIEZFRGlz
cGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwg
Y29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsK
LSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3RzWzBdLmdldCgpOwotICAgIEZpbHRl
ckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3RzWzFdLmdldCgpOworICAgIGF1dG8mIGlucHV0ID0g
aW5wdXRzWzBdLmdldCgpOworICAgIGF1dG8mIGlucHV0MiA9IGlucHV0c1sxXS5nZXQoKTsKIAot
ICAgIGF1dG8gZGVzdGluYXRpb25QaXhlbEJ1ZmZlciA9IG1fZWZmZWN0LnBpeGVsQnVmZmVyUmVz
dWx0KEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpOworICAgIGF1dG8gZGVz
dGluYXRpb25QaXhlbEJ1ZmZlciA9IHJlc3VsdC5waXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkKTsKICAgICBpZiAoIWRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIGRlc3RpbmF0aW9uUGl4ZWxBcnJh
eSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmRhdGEoKTsKIAotICAgIGF1dG8gZWZmZWN0QURy
YXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlu
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBhdXRvIGlucHV0UGl4ZWxCdWZmZXIgPSBpbi0+
Z2V0UGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGll
ZCwgZWZmZWN0QURyYXdpbmdSZWN0KTsKKyAgICBhdXRvIGVmZmVjdEFEcmF3aW5nUmVjdCA9IG1f
ZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbnB1dC5hYnNvbHV0ZUlt
YWdlUmVjdCgpKTsKKyAgICBhdXRvIGlucHV0UGl4ZWxCdWZmZXIgPSBpbnB1dC5nZXRQaXhlbEJ1
ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBlZmZlY3RBRHJhd2lu
Z1JlY3QpOwogCi0gICAgYXV0byBlZmZlY3RCRHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0
ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKKyAg
ICBhdXRvIGVmZmVjdEJEcmF3aW5nUmVjdCA9IG1fZWZmZWN0LnJlcXVlc3RlZFJlZ2lvbk9mSW5w
dXRQaXhlbEJ1ZmZlcihpbnB1dDIuYWJzb2x1dGVJbWFnZVJlY3QoKSk7CiAgICAgLy8gVGhlIGNh
bGN1bGF0aW9ucyB1c2luZyB0aGUgcGl4ZWwgdmFsdWVzIGZyb20g4oCYaW4y4oCZIGFyZSBwZXJm
b3JtZWQgdXNpbmcgbm9uLXByZW11bHRpcGxpZWQgY29sb3IgdmFsdWVzLgotICAgIGF1dG8gZGlz
cGxhY2VtZW50UGl4ZWxCdWZmZXIgPSBpbjItPmdldFBpeGVsQnVmZmVyUmVzdWx0KEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgZWZmZWN0QkRyYXdpbmdSZWN0KTsKKyAg
ICBhdXRvIGRpc3BsYWNlbWVudFBpeGVsQnVmZmVyID0gaW5wdXQyLmdldFBpeGVsQnVmZmVyKEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgZWZmZWN0QkRyYXdpbmdSZWN0
KTsKICAgICAKICAgICBpZiAoIWlucHV0UGl4ZWxCdWZmZXIgfHwgIWRpc3BsYWNlbWVudFBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvJiBpbnB1dEltYWdlID0g
aW5wdXRQaXhlbEJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8mIGRpc3BsYWNlbWVudEltYWdlID0g
ZGlzcGxhY2VtZW50UGl4ZWxCdWZmZXItPmRhdGEoKTsKLSAgICBBU1NFUlQoaW5wdXRJbWFnZS5s
ZW5ndGgoKSA9PSBkaXNwbGFjZW1lbnRJbWFnZS5sZW5ndGgoKSk7CisgICAgYXV0byYgaW5wdXRQ
aXhlbEFycmF5ID0gaW5wdXRQaXhlbEJ1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8mIGRpc3BsYWNl
bWVudFBpeGVsQXJyYXkgPSBkaXNwbGFjZW1lbnRQaXhlbEJ1ZmZlci0+ZGF0YSgpOworICAgIEFT
U0VSVChpbnB1dFBpeGVsQXJyYXkubGVuZ3RoKCkgPT0gZGlzcGxhY2VtZW50UGl4ZWxBcnJheS5s
ZW5ndGgoKSk7CiAKLSAgICBJbnRTaXplIHBhaW50U2l6ZSA9IG1fZWZmZWN0LmFic29sdXRlUGFp
bnRSZWN0KCkuc2l6ZSgpOworICAgIEludFNpemUgcGFpbnRTaXplID0gcmVzdWx0LmFic29sdXRl
SW1hZ2VSZWN0KCkuc2l6ZSgpOwogCiAgICAgRmxvYXRTaXplIHNjYWxlID0gZmlsdGVyLnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoeyBtX2VmZmVjdC5zY2FsZSgpLCBtX2VmZmVjdC5zY2FsZSgpIH0pOwog
ICAgIGZsb2F0IHNjYWxlRm9yQ29sb3JYID0gc2NhbGUud2lkdGgoKSAvIDI1NS4wOwpAQCAtOTMs
OCArOTMsOCBAQCBib29sIEZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyOjphcHBseShj
b25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyRQogICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IHBhaW50U2l6ZS53aWR0aCgpOyArK3gpIHsKICAgICAgICAgICAgIGludCBkZXN0aW5h
dGlvbkluZGV4ID0gbGluZVN0YXJ0T2Zmc2V0ICsgeCAqIDQ7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGludCBzcmNYID0geCArIHN0YXRpY19jYXN0PGludD4oc2NhbGVGb3JDb2xvclggKiBk
aXNwbGFjZW1lbnRJbWFnZS5pdGVtKGRlc3RpbmF0aW9uSW5kZXggKyBkaXNwbGFjZW1lbnRDaGFu
bmVsWCkgKyBzY2FsZWRPZmZzZXRYKTsKLSAgICAgICAgICAgIGludCBzcmNZID0geSArIHN0YXRp
Y19jYXN0PGludD4oc2NhbGVGb3JDb2xvclkgKiBkaXNwbGFjZW1lbnRJbWFnZS5pdGVtKGRlc3Rp
bmF0aW9uSW5kZXggKyBkaXNwbGFjZW1lbnRDaGFubmVsWSkgKyBzY2FsZWRPZmZzZXRZKTsKKyAg
ICAgICAgICAgIGludCBzcmNYID0geCArIHN0YXRpY19jYXN0PGludD4oc2NhbGVGb3JDb2xvclgg
KiBkaXNwbGFjZW1lbnRQaXhlbEFycmF5Lml0ZW0oZGVzdGluYXRpb25JbmRleCArIGRpc3BsYWNl
bWVudENoYW5uZWxYKSArIHNjYWxlZE9mZnNldFgpOworICAgICAgICAgICAgaW50IHNyY1kgPSB5
ICsgc3RhdGljX2Nhc3Q8aW50PihzY2FsZUZvckNvbG9yWSAqIGRpc3BsYWNlbWVudFBpeGVsQXJy
YXkuaXRlbShkZXN0aW5hdGlvbkluZGV4ICsgZGlzcGxhY2VtZW50Q2hhbm5lbFkpICsgc2NhbGVk
T2Zmc2V0WSk7CiAKICAgICAgICAgICAgIHVuc2lnbmVkKiBkZXN0aW5hdGlvblBpeGVsUHRyID0g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KGRlc3RpbmF0aW9uUGl4ZWxBcnJheS5kYXRhKCkg
KyBkZXN0aW5hdGlvbkluZGV4KTsKICAgICAgICAgICAgIGlmIChzcmNYIDwgMCB8fCBzcmNYID49
IHBhaW50U2l6ZS53aWR0aCgpIHx8IHNyY1kgPCAwIHx8IHNyY1kgPj0gcGFpbnRTaXplLmhlaWdo
dCgpKSB7CkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcFNvZnR3YXJl
QXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckUKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgKmRlc3Rp
bmF0aW9uUGl4ZWxQdHIgPSAqcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KGlucHV0SW1hZ2Uu
ZGF0YSgpICsgYnl0ZU9mZnNldE9mUGl4ZWwoc3JjWCwgc3JjWSwgcm93Qnl0ZXMpKTsKKyAgICAg
ICAgICAgICpkZXN0aW5hdGlvblBpeGVsUHRyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQq
PihpbnB1dFBpeGVsQXJyYXkuZGF0YSgpICsgYnl0ZU9mZnNldE9mUGl4ZWwoc3JjWCwgc3JjWSwg
cm93Qnl0ZXMpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURpc3BsYWNlbWVudE1hcFNv
ZnR3YXJlQXBwbGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRURpc3BsYWNlbWVudE1hcFNvZnR3YXJlQXBwbGllci5oCmluZGV4IDllNmNh
NmVhNWM1NDE4MTJlMDJlMDkzNDNjODk3YzhlNzNiYTY3NmYuLmI4NTdjZjg1ODdmZTMyMDhhMjli
NmJlMjVkMWQzMmFiMGMzYTJlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3
YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyLmgKQEAgLTM0LDcgKzM0LDcgQEAg
Y2xhc3MgRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZm
ZWN0Q29uY3JldGVBcHBsaWVyPEZFRGkKIHB1YmxpYzoKICAgICBGRURpc3BsYWNlbWVudE1hcFNv
ZnR3YXJlQXBwbGllcihGRURpc3BsYWNlbWVudE1hcCYpOwogCi0gICAgYm9vbCBhcHBseShjb25z
dCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykgb3ZlcnJp
ZGU7CisgICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3Rv
ciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXRPZlBpeGVsKHVuc2lnbmVkIHgsIHVu
c2lnbmVkIHksIHVuc2lnbmVkIHJvd0J5dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFw
cGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IGUxN2E2MWI3MzM5MDIz
MzEyZGJiNmZmZTA1ZDU0NDg0OThjMjgxNDQuLjc2NDE4MzNiZDBmNDliYzM2Yjc5YWU1MDJiOTVj
MTBkY2QxMGExMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVEcm9wU2hhZG93U29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJvcFNo
YWRvd1NvZnR3YXJlQXBwbGllci5jcHAKQEAgLTMwLDMzICszMCwzMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWJvb2wgRkVEcm9wU2hhZG93U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25z
dCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMp
Citib29sIEZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBm
aWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1
bHQpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0c1swXS5nZXQoKTsKKyAg
ICBhdXRvJiBpbnB1dCA9IGlucHV0c1swXS5nZXQoKTsKIAotICAgIGF1dG8gcmVzdWx0SW1hZ2Ug
PSBtX2VmZmVjdC5pbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSBy
ZXN1bHQuaW1hZ2VCdWZmZXIoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBGbG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIuc2NhbGVk
QnlGaWx0ZXJTY2FsZSh7IG1fZWZmZWN0LnN0ZERldmlhdGlvblgoKSwgbV9lZmZlY3Quc3RkRGV2
aWF0aW9uWSgpIH0pOwogICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJTY2FsZSh7IG1fZWZmZWN0LmR4KCksIG1fZWZmZWN0LmR5KCkgfSk7CiAKLSAgICBGbG9hdFJl
Y3QgZHJhd2luZ1JlZ2lvbiA9IG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4t
PmFic29sdXRlUGFpbnRSZWN0KCkpOworICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gbV9l
ZmZlY3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgp
KTsKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQoZHJhd2luZ1JlZ2lvbik7
CiAgICAgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQubW92ZShvZmZzZXQpOwogCi0gICAgYXV0byBz
b3VyY2VJbWFnZSA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlmICghc291cmNlSW1h
Z2UpCisgICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXQuaW1hZ2VCdWZmZXIoKTsKKyAgICBpZiAo
IWlucHV0SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEdyYXBoaWNzQ29udGV4
dCYgcmVzdWx0Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAgICAgcmVzdWx0Q29u
dGV4dC5zZXRBbHBoYShtX2VmZmVjdC5zaGFkb3dPcGFjaXR5KCkpOwotICAgIHJlc3VsdENvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQp
OworICAgIHJlc3VsdENvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBkcmF3aW5n
UmVnaW9uV2l0aE9mZnNldCk7CiAgICAgcmVzdWx0Q29udGV4dC5zZXRBbHBoYSgxKTsKIAogICAg
IFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhibHVyUmFkaXVzLCBvZmZzZXQsIG1fZWZmZWN0LnNo
YWRvd0NvbG9yKCkpOwogCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX2VmZmVj
dC5yZXN1bHRDb2xvclNwYWNlKCkgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IHJlc3VsdC5jb2xvclNwYWNlKCkgfTsKICAgICBJbnRSZWN0IHNoYWRvd0FyZWEoSW50UG9pbnQo
KSwgcmVzdWx0SW1hZ2UtPnRydW5jYXRlZExvZ2ljYWxTaXplKCkpOwogICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSByZXN1bHRJbWFnZS0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCBzaGFkb3dBcmVhKTsK
ICAgICBpZiAoIXBpeGVsQnVmZmVyKQpAQCAtNjgsMTAgKzY4LDEwIEBAIGJvb2wgRkVEcm9wU2hh
ZG93U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmls
dGVyRWZmZWN0CiAgICAgcmVzdWx0SW1hZ2UtPnB1dFBpeGVsQnVmZmVyKCpwaXhlbEJ1ZmZlciwg
c2hhZG93QXJlYSk7CiAKICAgICByZXN1bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVPcGVyYXRvcjo6U291cmNlSW4pOwotICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3Qo
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9lZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXpl
KCkpLCBtX2VmZmVjdC5zaGFkb3dDb2xvcigpKTsKKyAgICByZXN1bHRDb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLnNpemUo
KSksIG1fZWZmZWN0LnNoYWRvd0NvbG9yKCkpOwogICAgIHJlc3VsdENvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yOjpEZXN0aW5hdGlvbk92ZXIpOwogCi0gICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBkcmF3
aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigq
aW5wdXRJbWFnZSwgZHJhd2luZ1JlZ2lvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUv
RkVEcm9wU2hhZG93U29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllci5oCmlu
ZGV4IDQ1ZjZjMGYzZWU3NjE3ODYyYjU2MWVjZjJjNjU2NDkxNGE4NmQ1OGYuLmI0YTg5M2IzZGE3
OTBjNDZiYjhmY2U2NjJhZmY3YzM0YmYwODc1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEcm9wU2hhZG93U29mdHdhcmVB
cHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIuaApAQCAtMzIsNyArMzIsNyBAQCBj
bGFzcyBGRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29u
Y3JldGVBcHBsaWVyPEZFRHJvcFNoYQogcHVibGljOgogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAK
LSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYg
aW5wdXRFZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNv
bnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92ZXJy
aWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUZsb29kU29mdHdhcmVB
cHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVGbG9vZFNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggODAzZTBlMmJmMWMzMWI1ZGY4
NDE2M2E3NGI0YzNiNmY0ZGFjMDExYy4uMzFkYThiNDA1MmNiYmRjYjFhMTBiNDk4MzViNjI1Y2Qw
MDYzMTZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUZsb29kU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRmxvb2RTb2Z0d2FyZUFw
cGxpZXIuY3BwCkBAIC0zMCwxNCArMzAsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1i
b29sIEZFRmxvb2RTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYpCitib29sIEZFRmxvb2RTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNv
bnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiwgRmlsdGVySW1hZ2UmIHJlc3Vs
dCkKIHsKLSAgICBhdXRvIHJlc3VsdEltYWdlID0gbV9lZmZlY3QuaW1hZ2VCdWZmZXJSZXN1bHQo
KTsKKyAgICBhdXRvIHJlc3VsdEltYWdlID0gcmVzdWx0LmltYWdlQnVmZmVyKCk7CiAgICAgaWYg
KCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBjb2xvciA9
IG1fZWZmZWN0LmZsb29kQ29sb3IoKS5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShtX2VmZmVj
dC5mbG9vZE9wYWNpdHkoKSk7Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5maWxsUmVjdChG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2VmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUo
KSksIGNvbG9yKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLnNpemUoKSksIGNvbG9y
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUZsb29kU29mdHdhcmVBcHBsaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRmxv
b2RTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCAxNTM1NzEyM2YzMDBiOGRiYWMyYzljMThlODQwOGE5
M2Y2NTgzODE5Li4yY2NhMDVkZDZmNWI4NmYxY2MzZGFlNmMxMTU4NWJhOWE4OTA4ODhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFRmxvb2RTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRmxvb2RTb2Z0d2FyZUFwcGxpZXIuaApAQCAtMzQs
NyArMzQsNyBAQCBjbGFzcyBGRUZsb29kU29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRlckVm
ZmVjdENvbmNyZXRlQXBwbGllcjxGRUZsb29kPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6
QmFzZTsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJiBpbnB1dEVmZmVjdHMpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHkoY29uc3QgRmls
dGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3Vs
dCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3Np
YW5CbHVyU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuY3BwCmlu
ZGV4IDU2MjFlYjVkYjZiMWVmMGFjOGUzNmQ3OGM0NDJjMzQ4NWJlN2M2YTYuLjFkZmE5N2U5Yzkx
OWU3NzNiMjFmMzU5Mzc3MTAxZjYzODg4N2UwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2Fy
ZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC00MjUsMzAg
KzQyNSwyOCBAQCBpbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcjo6YXBw
bHlQbGF0Zm9ybShVaW50OENsYW1wZWRBcnJheSYgaW9CdQogICAgIGJveEJsdXJHZW5lcmljKGlv
QnVmZmVyLCB0bXBQaXhlbEFycmF5LCBrZXJuZWxTaXplWCwga2VybmVsU2l6ZVksIHBhaW50U2l6
ZSwgaXNBbHBoYUltYWdlLCBlZGdlTW9kZSk7CiB9CiAKLWJvb2wgRkVHYXVzc2lhbkJsdXJTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZl
Y3RWZWN0b3ImIGlucHV0RWZmZWN0cykKK2Jvb2wgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxp
ZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYg
aW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KQogewotICAgIEZpbHRlckVmZmVjdCogaW4gPSBp
bnB1dEVmZmVjdHNbMF0uZ2V0KCk7CisgICAgYXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7
CiAKLSAgICBhdXRvIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSBtX2VmZmVjdC5waXhlbEJ1ZmZl
clJlc3VsdChBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKTsKKyAgICBhdXRv
IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSByZXN1bHQucGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCk7CiAgICAgaWYgKCFkZXN0aW5hdGlvblBpeGVsQnVm
ZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2VmZmVjdC5zZXRJc0FscGhhSW1h
Z2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKLQotICAgIGF1dG8gZWZmZWN0RHJhd2luZ1JlY3QgPSBt
X2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW4tPmFic29sdXRlUGFp
bnRSZWN0KCkpOwotICAgIGluLT5jb3B5UGl4ZWxCdWZmZXJSZXN1bHQoKmRlc3RpbmF0aW9uUGl4
ZWxCdWZmZXIsIGVmZmVjdERyYXdpbmdSZWN0KTsKKyAgICBhdXRvIGVmZmVjdERyYXdpbmdSZWN0
ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlucHV0LmFic29s
dXRlSW1hZ2VSZWN0KCkpOworICAgIGlucHV0LmNvcHlQaXhlbEJ1ZmZlcigqZGVzdGluYXRpb25Q
aXhlbEJ1ZmZlciwgZWZmZWN0RHJhd2luZ1JlY3QpOwogICAgIGlmICghbV9lZmZlY3Quc3RkRGV2
aWF0aW9uWCgpICYmICFtX2VmZmVjdC5zdGREZXZpYXRpb25ZKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgYXV0byBrZXJuZWxTaXplID0gbV9lZmZlY3QuY2FsY3VsYXRlS2VybmVsU2l6
ZShmaWx0ZXIsIHsgbV9lZmZlY3Quc3RkRGV2aWF0aW9uWCgpLCBtX2VmZmVjdC5zdGREZXZpYXRp
b25ZKCkgfSk7CiAKLSAgICBJbnRTaXplIHBhaW50U2l6ZSA9IG1fZWZmZWN0LmFic29sdXRlUGFp
bnRSZWN0KCkuc2l6ZSgpOworICAgIEludFNpemUgcGFpbnRTaXplID0gcmVzdWx0LmFic29sdXRl
SW1hZ2VSZWN0KCkuc2l6ZSgpOwogICAgIGF1dG8gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQocGFpbnRTaXplLmFyZWEoKSAqIDQpOwogICAg
IGlmICghdG1wSW1hZ2VEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiBk
ZXN0aW5hdGlvblBpeGVsQXJyYXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7Ci0g
ICAgYXBwbHlQbGF0Zm9ybShkZXN0aW5hdGlvblBpeGVsQXJyYXksICp0bXBJbWFnZURhdGEsIGtl
cm5lbFNpemUud2lkdGgoKSwga2VybmVsU2l6ZS5oZWlnaHQoKSwgcGFpbnRTaXplLCBtX2VmZmVj
dC5pc0FscGhhSW1hZ2UoKSwgbV9lZmZlY3QuZWRnZU1vZGUoKSk7CisgICAgYXBwbHlQbGF0Zm9y
bShkZXN0aW5hdGlvblBpeGVsQXJyYXksICp0bXBJbWFnZURhdGEsIGtlcm5lbFNpemUud2lkdGgo
KSwga2VybmVsU2l6ZS5oZWlnaHQoKSwgcGFpbnRTaXplLCByZXN1bHQuaXNBbHBoYUltYWdlKCks
IG1fZWZmZWN0LmVkZ2VNb2RlKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1
c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyLmgKaW5k
ZXggMDIyN2QzMjc1YzJjYzdjMGMyY2ViMjc3ZjMwZDVhNjY5MGUyZTBiMy4uNGE4N2VlNGQ0NjU4
NDA2ZGJhYTc5NGEwOGNlZjgxNTlmMTc0OTUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJl
QXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllciA6IHB1YmxpYyBGaWx0ZXJFZmZl
Y3RDb25jcmV0ZUFwcGxpZXI8RkVHYXVzcwogcHVibGljOgogICAgIHVzaW5nIEJhc2U6OkJhc2U7
CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYgaW5wdXRFZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYs
IGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBcHBseVBhcmFtZXRlcnMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5jcHAKaW5k
ZXggZjE4ZjYwODgzMTk4NGNjYWM2YzQ4NjkxYjUxNmJhY2UwODQwMWQ2Ni4uYzE5OGY0NjkwMzMz
NTRmZmQxYjNlMTUxYjVhMGQ5Njg2NDNkNTE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBs
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0zOTEsMjcgKzM5MSwyNSBA
QCB2b2lkIEZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZvcm0oY29uc3QgTGln
aHRpbmdEYXRhJiBkYXRhKQogICAgIH0KIH0KIAotYm9vbCBGRUxpZ2h0aW5nU29mdHdhcmVBcHBs
aWVyOjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0
RWZmZWN0cykKK2Jvb2wgRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmls
dGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3Vs
dCkKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3RzWzBdLmdldCgpOworICAg
IGF1dG8mIGlucHV0ID0gaW5wdXRzWzBdLmdldCgpOwogCi0gICAgYXV0byBkZXN0aW5hdGlvblBp
eGVsQnVmZmVyID0gbV9lZmZlY3QucGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZCk7CisgICAgYXV0byBkZXN0aW5hdGlvblBpeGVsQnVmZmVyID0g
cmVzdWx0LnBpeGVsQnVmZmVyKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQp
OwogICAgIGlmICghZGVzdGluYXRpb25QaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byYgZGVzdGluYXRpb25QaXhlbEFycmF5ID0gZGVzdGluYXRpb25QaXhlbEJ1
ZmZlci0+ZGF0YSgpOwogCi0gICAgbV9lZmZlY3Quc2V0SXNBbHBoYUltYWdlKGZhbHNlKTsKLQot
ICAgIGF1dG8gZWZmZWN0RHJhd2luZ1JlY3QgPSBtX2VmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklu
cHV0UGl4ZWxCdWZmZXIoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIGluLT5jb3B5UGl4
ZWxCdWZmZXJSZXN1bHQoKmRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIGVmZmVjdERyYXdpbmdSZWN0
KTsKKyAgICBhdXRvIGVmZmVjdERyYXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVkUmVnaW9u
T2ZJbnB1dFBpeGVsQnVmZmVyKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpOworICAgIGlucHV0
LmNvcHlQaXhlbEJ1ZmZlcigqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0RHJhd2luZ1Jl
Y3QpOwogCiAgICAgLy8gRklYTUU6IHN1cHBvcnQga2VybmVsVW5pdExlbmd0aHMgb3RoZXIgdGhh
biAoMSwxKS4gVGhlIGlzc3VlIGhlcmUgaXMgdGhhdCB0aGUgVzMKICAgICAvLyBzdGFuZGFyZCBo
YXMgbm8gdGVzdCBjYXNlIGZvciB0aGVtLCBhbmQgb3RoZXIgYnJvd3NlcnMgKGxpa2UgRmlyZWZv
eCkgaGFzIHN0cmFuZ2UKICAgICAvLyBvdXRwdXQgZm9yIHZhcmlvdXMga2VybmVsVW5pdExlbmd0
aHMsIGFuZCBJIGFtIG5vdCBzdXJlIHRoZXkgYXJlIHJlbGlhYmxlLgogICAgIC8vIEFueXdheSwg
ZmVDb252b2x2ZU1hdHJpeCBzaG91bGQgYWxzbyB1c2UgdGhlIGltcGxlbWVudGF0aW9uCiAKLSAg
ICBJbnRTaXplIHNpemUgPSBJbnRTaXplKG1fZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6
ZSgpKTsKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVj
dCgpLnNpemUoKSk7CiAKICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIGlmIHdpZHRoIG9yIGhl
aWdodCAob3IgYm90aCkgaXMgMSBwaXhlbC4KICAgICAvLyBUaGUgVzMgc3BlYyBkb2VzIG5vdCBk
ZWZpbmUgdGhpcyBjYXNlLiBOb3cgdGhlIGZpbHRlciBqdXN0IHJldHVybnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTGln
aHRpbmdTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5oCmluZGV4IDY3NmI4
Yjc5NTk1NDZlM2UyODZjZDlmZTBjODZjNGE2NzJiMTkwOGMuLjNjMzcyNGVkY2FmYmY2NzBkMzAw
ZGI4ZGYxZjdhYjBjMDA0ODlkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVM
aWdodGluZ1NvZnR3YXJlQXBwbGllci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEZFTGlnaHRp
bmdTb2Z0d2FyZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZF
TGlnaHRpbmc+CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIGJvb2wgYXBw
bHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMp
IG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1h
Z2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgY1BpeGVsU2l6ZSA9IDQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTWVy
Z2VTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCBkNWQ0YWFi
NmQ4NjZlZTRlOWE4Y2VjNDRmNWVjZDA4MmFkZGEzYTk2Li4wMTM4ZjVjMjg4MjBhYzg0YzMwY2Rh
ZjY1ZWYwZDBiYmQxMjZkY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTWVyZ2VTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNZXJn
ZVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTI5LDIxICsyOSwyMSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWJvb2wgRkVNZXJnZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVy
JiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMpCitib29sIEZFTWVyZ2VT
b2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVj
dG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKGlucHV0RWZm
ZWN0cy5zaXplKCkgPiAwKTsKKyAgICBBU1NFUlQoaW5wdXRzLnNpemUoKSA9PSBtX2VmZmVjdC5u
dW1iZXJPZkVmZmVjdElucHV0cygpKTsKIAotICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSBtX2VmZmVj
dC5pbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSByZXN1bHQuaW1h
Z2VCdWZmZXIoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBhdXRvJiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKIAot
ICAgIGZvciAoYXV0byYgaW4gOiBpbnB1dEVmZmVjdHMpIHsKLSAgICAgICAgYXV0byBpbkJ1ZmZl
ciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgICAgICBpZiAoIWluQnVmZmVyKQorICAg
IGZvciAoYXV0byYgaW5wdXQgOiBpbnB1dHMpIHsKKyAgICAgICAgYXV0byBpbnB1dEltYWdlID0g
aW5wdXQtPmltYWdlQnVmZmVyKCk7CisgICAgICAgIGlmICghaW5wdXRJbWFnZSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5C
dWZmZXIsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFp
bnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0
SW1hZ2UsIG1fZWZmZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW5wdXQtPmFic29sdXRl
SW1hZ2VSZWN0KCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNZXJnZVNv
ZnR3YXJlQXBwbGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRU1lcmdlU29mdHdhcmVBcHBsaWVyLmgKaW5kZXggODIxZDg0NDdlNWM5N2Zh
NGY5NDgzNWY2Yjg4MTA2YjVmOGVkYWNlNy4uMWIzMGFiYTY5YjUzYjAwOTc5NzIxYmU5ZDFhODkx
MzZmYTcxOWVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1lcmdlU29mdHdhcmVB
cHBsaWVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgRkVNZXJnZVNvZnR3YXJlQXBwbGllciA6
IHB1YmxpYyBGaWx0ZXJFZmZlY3RDb25jcmV0ZUFwcGxpZXI8RkVNZXJnZT4gewogcHVibGljOgog
ICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNv
bnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29s
IGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZp
bHRlckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFw
cGxpZXIuY3BwCmluZGV4IDk0ZmQ4OTI3YjAwYmZkZmEyZjNiM2Q3ZTRmZTEyMTExZDJkNzJlYWUu
LmEwZDk2MGE5MjBiMTVjYzQxZjYxMjY0OTUxMGY0MTU3M2JiMzI3Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3JwaG9s
b2d5U29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5jcHAKQEAg
LTE0MSwyNSArMTQxLDIzIEBAIHZvaWQgRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVyOjphcHBs
eVBsYXRmb3JtKGNvbnN0IFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhCiAgICAgYXBwbHlQbGF0
Zm9ybUdlbmVyaWMocGFpbnRpbmdEYXRhLCAwLCBwYWludGluZ0RhdGEuaGVpZ2h0KTsKIH0KIAot
Ym9vbCBGRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmls
dGVyLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykKK2Jvb2wgRkVNb3Jw
aG9sb2d5U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3Qg
RmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBG
aWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3RzWzBdLmdldCgpOworICAgIGF1dG8mIGlucHV0
ID0gaW5wdXRzWzBdLmdldCgpOwogCi0gICAgYXV0byBkZXN0aW5hdGlvblBpeGVsQnVmZmVyID0g
bV9lZmZlY3QucGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCk7CisgICAgYXV0byBkZXN0aW5hdGlvblBpeGVsQnVmZmVyID0gcmVzdWx0LnBpeGVs
QnVmZmVyKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpOwogICAgIGlmICgh
ZGVzdGluYXRpb25QaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9l
ZmZlY3Quc2V0SXNBbHBoYUltYWdlKGluLT5pc0FscGhhSW1hZ2UoKSk7Ci0KICAgICBhdXRvIGlz
RGVnZW5lcmF0ZSA9IFtdKGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkgLT4gYm9vbCB7CiAgICAg
ICAgIHJldHVybiByYWRpdXNYIDwgMCB8fCByYWRpdXNZIDwgMCB8fCAoIXJhZGl1c1ggJiYgIXJh
ZGl1c1kpOwogICAgIH07CiAKLSAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gbV9lZmZl
Y3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGluLT5hYnNvbHV0ZVBhaW50UmVj
dCgpKTsKKyAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gbV9lZmZlY3QucmVxdWVzdGVk
UmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpOwogICAg
IEludFNpemUgcmFkaXVzID0gZmxvb3JlZEludFNpemUoRmxvYXRTaXplKG1fZWZmZWN0LnJhZGl1
c1goKSwgbV9lZmZlY3QucmFkaXVzWSgpKSk7CiAKICAgICBpZiAoaXNEZWdlbmVyYXRlKHJhZGl1
cy53aWR0aCgpLCByYWRpdXMuaGVpZ2h0KCkpKSB7Ci0gICAgICAgIGluLT5jb3B5UGl4ZWxCdWZm
ZXJSZXN1bHQoKmRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIGVmZmVjdERyYXdpbmdSZWN0KTsKKyAg
ICAgICAgaW5wdXQuY29weVBpeGVsQnVmZmVyKCpkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBlZmZl
Y3REcmF3aW5nUmVjdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTY4LDEx
ICsxNjYsMTEgQEAgYm9vbCBGRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0
IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZlY3QKICAgICBpbnQgcmFkaXVzWSA9IHN0
ZDo6bWluKGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpIC0gMSwgcmFkaXVzLmhlaWdodCgpKTsK
IAogICAgIGlmIChpc0RlZ2VuZXJhdGUocmFkaXVzWCwgcmFkaXVzWSkpIHsKLSAgICAgICAgaW4t
PmNvcHlQaXhlbEJ1ZmZlclJlc3VsdCgqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgZWZmZWN0RHJh
d2luZ1JlY3QpOworICAgICAgICBpbnB1dC5jb3B5UGl4ZWxCdWZmZXIoKmRlc3RpbmF0aW9uUGl4
ZWxCdWZmZXIsIGVmZmVjdERyYXdpbmdSZWN0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgYXV0byBzb3VyY2VQaXhlbEJ1ZmZlciA9IGluLT5nZXRQaXhlbEJ1ZmZlclJlc3Vs
dChBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBlZmZlY3REcmF3aW5nUmVj
dCwgbV9lZmZlY3Qub3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKKyAgICBhdXRvIHNvdXJjZVBpeGVs
QnVmZmVyID0gaW5wdXQuZ2V0UGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZCwgZWZmZWN0RHJhd2luZ1JlY3QsIG1fZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3Bh
Y2UoKSk7CiAgICAgaWYgKCFzb3VyY2VQaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFw
cGxpZXIuaAppbmRleCA4MjI0MTYxYmMzZmQ0NTgyNTQ3YTAwZjU3YWQ3Mzk5NjJmMWI1YWJhLi5m
MTNiYmIxN2U3NzM3OGQyMDYyMWRmYTQ4NWZjNzdlYTJhMTZhYWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9n
eVNvZnR3YXJlQXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVyLmgKQEAgLTM4LDcg
KzM4LDcgQEAgY2xhc3MgRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRl
ckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRU1vcnBob2wKIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
OjpCYXNlOwogCi0gICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZl
Y3RWZWN0b3ImIGlucHV0RWZmZWN0cykgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBseShjb25zdCBG
aWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVz
dWx0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB1c2luZyBDb2x1bW5FeHRyZW1hID0gVmVj
dG9yPENvbG9yQ29tcG9uZW50czx1aW50OF90LCA0PiwgMTY+OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRU9mZnNldFNvZnR3
YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCBiNDdmOGZlMjkwZDYx
OWQ1NmYxYjU2ZmY0ZmQ2MWE1OWQ2NzZjMWZlLi5mMGRhNWQyODg4NDc5YTcyZjNjMDlmNmIwYTMz
OGY2MWRjNWYyOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29m
dHdhcmVBcHBsaWVyLmNwcApAQCAtMzIsMjEgKzMyLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotYm9vbCBGRU9mZnNldFNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBm
aWx0ZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKQorYm9vbCBGRU9m
ZnNldFNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZp
bHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpCiB7Ci0gICAgRmls
dGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0c1swXS5nZXQoKTsKKyAgICBhdXRvJiBpbnB1dCA9
IGlucHV0c1swXS5nZXQoKTsKIAotICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSBtX2VmZmVjdC5pbWFn
ZUJ1ZmZlclJlc3VsdCgpOwotICAgIGF1dG8gaW5CdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1
bHQoKTsKLSAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFpbkJ1ZmZlcikKKyAgICBhdXRvIHJlc3Vs
dEltYWdlID0gcmVzdWx0LmltYWdlQnVmZmVyKCk7CisgICAgYXV0byBpbnB1dEltYWdlID0gaW5w
dXQuaW1hZ2VCdWZmZXIoKTsKKyAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFpbnB1dEltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2VmZmVjdC5zZXRJc0FscGhhSW1hZ2UoaW4t
PmlzQWxwaGFJbWFnZSgpKTsKLQotICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gbV9lZmZl
Y3QuZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Cisg
ICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBtX2VmZmVjdC5kcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGlucHV0LmFic29sdXRlSW1hZ2VSZWN0KCkpOwogICAgIGRyYXdpbmdSZWdpb24ubW92
ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fZWZmZWN0LmR4KCksIG1fZWZmZWN0LmR5
KCkgfSkpOwotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbkJ1
ZmZlciwgZHJhd2luZ1JlZ2lvbik7CiAKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJ
bWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgZHJhd2luZ1JlZ2lvbik7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVPZmZzZXRTb2Z0d2FyZUFwcGxpZXIu
aAppbmRleCAxYzNmZDg0ZjI1NDdmMGJiMjRhNDI5ZTcxNmU3MTcwMmIzZTMyYmE0Li5jMzQ1Yjcy
Mjk2YjUxNTUyYTVjZTg3MDI4MzNmYjRmMGU0YWIxOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFT2Zmc2V0U29mdHdhcmVB
cHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRU9mZnNldFNvZnR3YXJlQXBwbGllci5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNz
IEZFT2Zmc2V0U29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBw
bGllcjxGRU9mZnNldD4gewogcHVibGljOgogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKLSAgICBi
b29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRF
ZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZp
bHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIG92ZXJyaWRlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IGQzYTFjZjY0OWY1NmZkOTQ3Y2ExZDRjNGRi
OTBhMmRhOTM0ZGJjMzQuLjMzYzdhMDNmZjc3YmU0MWJhNTJhNjYwZDQ0MzM3N2Y4OTE4MWZmMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAK
QEAgLTI3LDUzICsyNyw0NyBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKLSNpbmNsdWRlICJTVkdSZW5kZXJp
bmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBGRVRpbGVTb2Z0d2Fy
ZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZlY3RW
ZWN0b3ImIGlucHV0RWZmZWN0cykKK2Jvb2wgRkVUaWxlU29mdHdhcmVBcHBsaWVyOjphcHBseShj
b25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmls
dGVySW1hZ2UmIHJlc3VsdCkKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3Rz
WzBdLmdldCgpOworICAgIGF1dG8mIGlucHV0ID0gaW5wdXRzWzBdLmdldCgpOwogCi0gICAgYXV0
byByZXN1bHRJbWFnZSA9IG1fZWZmZWN0LmltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgYXV0byBp
bkJ1ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIGlmICghcmVzdWx0SW1hZ2Ug
fHwgIWluQnVmZmVyKQorICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSByZXN1bHQuaW1hZ2VCdWZmZXIo
KTsKKyAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dC5pbWFnZUJ1ZmZlcigpOworICAgIGlmICgh
cmVzdWx0SW1hZ2UgfHwgIWlucHV0SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG1fZWZmZWN0LnNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdlKCkpOworICAgIGF1dG8g
aW5wdXRJbWFnZVJlY3QgPSBpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgpOworICAgIGF1dG8gcmVz
dWx0SW1hZ2VSZWN0ID0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCk7CiAKLSAgICAvLyBTb3Vy
Y2UgaW5wdXQgbmVlZHMgbW9yZSBhdHRlbnRpb24uIEl0IGhhcyB0aGUgc2l6ZSBvZiB0aGUgZmls
dGVyUmVnaW9uIGJ1dCBnaXZlcyB0aGUKLSAgICAvLyBzaXplIG9mIHRoZSBjdXR0ZWQgc291cmNl
SW1hZ2UgYmFjay4gVGhpcyBpcyBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBvcHRpbWl6
YXRpb24uCi0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gaW4tPm1heEVmZmVjdFJlY3QoKTsKLSAg
ICBGbG9hdFBvaW50IGluTWF4RWZmZWN0TG9jYXRpb24gPSB0aWxlUmVjdC5sb2NhdGlvbigpOwot
ICAgIEZsb2F0UG9pbnQgbWF4RWZmZWN0TG9jYXRpb24gPSBtX2VmZmVjdC5tYXhFZmZlY3RSZWN0
KCkubG9jYXRpb24oKTsKLSAgICBpZiAoaW4tPmZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OlNvdXJjZUdyYXBoaWMgfHwgaW4tPmZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OlNvdXJjZUFscGhhKSB7Ci0gICAgICAgIHRpbGVSZWN0ID0gZmlsdGVyLmZpbHRlclJl
Z2lvbigpOwotICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0g
ICAgfQorICAgIGF1dG8gdGlsZVJlY3QgPSBmaWx0ZXIubWF4RWZmZWN0UmVjdChpbnB1dC5wcmlt
aXRpdmVTdWJyZWdpb24oKSk7CisgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxl
KCkpOwogCi0gICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIG5vbi1wYWx0Zm9ybSBjYWxsLgotICAg
IGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
dGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVy
LnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byBtYXhSZXN1bHRSZWN0ID0gZmlsdGVyLm1heEVm
ZmVjdFJlY3QocmVzdWx0LnByaW1pdGl2ZVN1YnJlZ2lvbigpKTsKKyAgICBtYXhSZXN1bHRSZWN0
LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKKworICAgIGF1dG8gdGlsZUltYWdlID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZSh0aWxlUmVjdC5zaXplKCksIGZpbHRlci5yZW5kZXJpbmdNb2RlKCks
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHQmIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKLSAgICB0
aWxlSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtaW5NYXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1h
eEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmluQnVmZmVyLCBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICBh
dXRvJiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CisgICAgdGlsZUlt
YWdlQ29udGV4dC50cmFuc2xhdGUoLXRpbGVSZWN0LmxvY2F0aW9uKCkpOworICAgIHRpbGVJbWFn
ZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbnB1dEltYWdlLCBpbnB1dEltYWdlUmVjdC5sb2Nh
dGlvbigpKTsKIAotICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IEltYWdlQnVmZmVyOjpzaW5rSW50
b05hdGl2ZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7Ci0gICAgaWYgKCF0aWxlSW1hZ2VDb3B5
KQorICAgIGF1dG8gcGF0dGVybkltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1h
Z2UoV1RGTW92ZSh0aWxlSW1hZ2UpKTsKKyAgICBpZiAoIXBhdHRlcm5JbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07Ci0g
ICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbiAtIG1heEVm
ZmVjdExvY2F0aW9uKTsKLQotICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxl
SW1hZ2VDb3B5LnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVyblRyYW5zZm9y
bSB9KTsKKyAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlUmVjdC5sb2NhdGlvbigp
IC0gbWF4UmVzdWx0UmVjdC5sb2NhdGlvbigpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCYgZmls
dGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7Ci0gICAgZmlsdGVyQ29udGV4dC5z
ZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsKLSAgICBmaWx0ZXJDb250ZXh0LmZpbGxS
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCku
c2l6ZSgpKSk7CisgICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHBhdHRlcm5JbWFn
ZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5UcmFuc2Zvcm0gfSk7CiAK
KyAgICBhdXRvJiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBy
ZXN1bHRDb250ZXh0LnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOworICAgIHJlc3Vs
dENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVzdWx0SW1hZ2VSZWN0
LnNpemUoKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBw
bGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCA4NjA1ZDhiMzhlMWIyMjM1YThiNmMyNjY0
NGFiZTYxNjhjZWRiNGY0Li40YTVjYzIxZTcyNmU4MTg0MThmYTkzZWQ1ODhmZTBiNzYwOGI5YWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmgKQEAg
LTM0LDcgKzM0LDcgQEAgY2xhc3MgRkVUaWxlU29mdHdhcmVBcHBsaWVyIDogcHVibGljIEZpbHRl
ckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRVRpbGU+IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
OjpCYXNlOwogCi0gICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZl
Y3RWZWN0b3ImIGlucHV0RWZmZWN0cykgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBseShjb25zdCBG
aWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVz
dWx0KSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJi
dWxlbmNlU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyLmNwcAppbmRl
eCAxMTk2MjNmM2IyZDk1YTJkNDhiNzdjZmM0OTk2OTRkMWE3ZTQ3ODQxLi5lMjdiZDNkNTE3ZTYz
NTMyOTY1MTEwNDFjNWFkZDYxZGVjMTg4ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVHVyYnVsZW5jZVNvZnR3YXJlQXBw
bGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0zMzksMTMgKzMzOSwx
MyBAQCB2b2lkIEZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybShjb25z
dCBJbnRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbgogICAgIGFwcGx5UGxhdGZvcm1HZW5lcmljKGZp
bHRlclJlZ2lvbiwgZmlsdGVyU2NhbGUsIHBpeGVsQXJyYXksIHBhaW50aW5nRGF0YSwgc3RpdGNo
RGF0YSwgMCwgaGVpZ2h0KTsKIH0KIAotYm9vbCBGRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXI6
OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKQor
Ym9vbCBGRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmls
dGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIEZpbHRlckltYWdlJiByZXN1bHQpCiB7Ci0g
ICAgYXV0byBkZXN0aW5hdGlvblBpeGVsQnVmZmVyID0gbV9lZmZlY3QucGl4ZWxCdWZmZXJSZXN1
bHQoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKTsKKyAgICBhdXRvIGRl
c3RpbmF0aW9uUGl4ZWxCdWZmZXIgPSByZXN1bHQucGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKTsKICAgICBpZiAoIWRlc3RpbmF0aW9uUGl4ZWxCdWZm
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEludFNpemUgcmVzdWx0U2l6ZShtX2Vm
ZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7CisgICAgSW50U2l6ZSByZXN1bHRTaXpl
KHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLnNpemUoKSk7CiAgICAgaWYgKHJlc3VsdFNpemUu
YXJlYSgpLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNTYs
NyArMzU2LDcgQEAgYm9vbCBGRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0
IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZlY3QKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgYXV0byB0aWxlU2l6ZSA9IHJvdW5kZWRJbnRTaXplKG1fZWZmZWN0LmZp
bHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpLnNpemUoKSk7CisgICAgYXV0byB0aWxlU2l6ZSA9IHJv
dW5kZWRJbnRTaXplKHJlc3VsdC5wcmltaXRpdmVTdWJyZWdpb24oKS5zaXplKCkpOwogCiAgICAg
ZmxvYXQgYmFzZUZyZXF1ZW5jeVggPSBtX2VmZmVjdC5iYXNlRnJlcXVlbmN5WCgpOwogICAgIGZs
b2F0IGJhc2VGcmVxdWVuY3lZID0gbV9lZmZlY3QuYmFzZUZyZXF1ZW5jeVkoKTsKQEAgLTM2NCw3
ICszNjQsNyBAQCBib29sIEZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3Qg
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckVmZmVjdAogCiAgICAgYXV0byBwYWludGluZ0Rh
dGEgPSBpbml0UGFpbnRpbmdEYXRhKG1fZWZmZWN0LnR5cGUoKSwgYmFzZUZyZXF1ZW5jeVgsIGJh
c2VGcmVxdWVuY3lZLCBtX2VmZmVjdC5udW1PY3RhdmVzKCksIG1fZWZmZWN0LnNlZWQoKSwgbV9l
ZmZlY3Quc3RpdGNoVGlsZXMoKSwgdGlsZVNpemUpOwogCi0gICAgYXBwbHlQbGF0Zm9ybShtX2Vm
ZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSwgZGVzdGluYXRp
b25QaXhlbEFycmF5LCBwYWludGluZ0RhdGEsIHN0aXRjaERhdGEpOworICAgIGFwcGx5UGxhdGZv
cm0ocmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCksIGZpbHRlci5maWx0ZXJTY2FsZSgpLCBkZXN0
aW5hdGlvblBpeGVsQXJyYXksIHBhaW50aW5nRGF0YSwgc3RpdGNoRGF0YSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVHVyYnVsZW5jZVNv
ZnR3YXJlQXBwbGllci5oCmluZGV4IDNjZTY4ZTM0MzQxYjM4NjYzYzBjMTQ4NWE5MTE4ZjA1YzJk
Y2MzODMuLmE1MmU3YzUwMzJhZjk0MWI3ZTA3N2ZlN2U4NjIxNThhNjZkMDFlZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVU
dXJidWxlbmNlU29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIuaApA
QCAtNDEsNyArNDEsNyBAQCBjbGFzcyBGRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFVHVyYnVsZQogcHVibGljOgogICAgIHVz
aW5nIEJhc2U6OkJhc2U7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5
KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlcklt
YWdlJiByZXN1bHQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIC8vIFByb2R1Y2VzIHJlc3Vs
dHMgaW4gdGhlIHJhbmdlIFsxLCAyKiozMSAtIDJdLiBBbGdvcml0aG0gaXM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJj
ZUFscGhhU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4
IDYyMzU4ZGY1OTAzYTMwNDI2MzVkZDgyMzRjYWE1YjVmZmI4N2QxNzEuLjUwMjUxOTU4MzI2ZThm
OWM0NTU5NGIwOGQ0ZjEwNjUyMWY2NDcwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxp
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0yNywyNCArMjcsMjMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFNvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVy
OjphcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZm
ZWN0cykKK2Jvb2wgU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRl
ciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQp
CiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0c1swXS5nZXQoKTsKKyAgICBh
dXRvJiBpbnB1dCA9IGlucHV0c1swXS5nZXQoKTsKIAotICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSBt
X2VmZmVjdC5pbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSByZXN1
bHQuaW1hZ2VCdWZmZXIoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3Vs
dCgpOwotICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXQu
aW1hZ2VCdWZmZXIoKTsKKyAgICBpZiAoIWlucHV0SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoRmxvYXRQb2ludCgpLCBtX2VmZmVjdC5hYnNv
bHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250
ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KEZs
b2F0UG9pbnQoKSwgcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkuc2l6ZSgpKTsKKyAgICBhdXRv
JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIGZpbHRlckNv
bnRleHQuZmlsbFJlY3QoaW1hZ2VSZWN0LCBDb2xvcjo6YmxhY2spOwotICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgSW50UG9pbnQoKSwgQ29tcG9zaXRlT3Bl
cmF0b3I6OkRlc3RpbmF0aW9uSW4pOwotCisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmlucHV0SW1hZ2UsIEludFBvaW50KCksIENvbXBvc2l0ZU9wZXJhdG9yOjpEZXN0aW5hdGlv
bkluKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VBbHBoYVNvZnR3YXJlQXBw
bGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9Tb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllci5oCmluZGV4IGRmODYwMzUzYTU3MDgyMTAwOTk3
ZDA0NGVhNTIyM2YzYWRiYzg5YzkuLjc0OGZmN2U4NmUzODA5MTM0OGM2MDlmOWU2OGQyZGRlOGM1
MzQ2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvU291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUFscGhhU29mdHdh
cmVBcHBsaWVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgU291cmNlQWxwaGFTb2Z0d2FyZUFw
cGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPFNvdXJjZUFscGgKIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlOjpCYXNlOwogCi0gICAgYm9vbCBhcHBseShjb25zdCBGaWx0
ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5w
dXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNT
b2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDU0NTFkYzNiMTNmNzBhZmI1ZTFiNzA5N2IyZTJkOGJi
ZmQ1YzljZGYuLjdiNWQ4MDRiODFkZDNiZWMwOWQ0NzEwNTFhODk4ZWJjYjcxYzljMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUv
U291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VHcmFwaGljU29mdHdhcmVBcHBs
aWVyLmNwcApAQCAtMjcsOSArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wg
U291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpCitib29sIFNvdXJjZUdyYXBoaWNTb2Z0d2FyZUFw
cGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3Rv
ciYsIEZpbHRlckltYWdlJiByZXN1bHQpCiB7Ci0gICAgYXV0byByZXN1bHRJbWFnZSA9IG1fZWZm
ZWN0LmltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgYXV0byByZXN1bHRJbWFnZSA9IHJlc3VsdC5p
bWFnZUJ1ZmZlcigpOwogICAgIGF1dG8gc291cmNlSW1hZ2UgPSBmaWx0ZXIuc291cmNlSW1hZ2Uo
KTsKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFzb3VyY2VJbWFnZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9Tb3VyY2VHcmFwaGljU29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNTb2Z0
d2FyZUFwcGxpZXIuaAppbmRleCA2MTk5YWI3ZjE1YTM4OGMxM2ViMDY4M2NhOWY1ZjFjM2E5NDMx
YzM2Li4wNzE2OWNjYTcxNDlmOTE3MTVkMTdlMjk1MDE1YTQ3YzY3MWVhZjdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJj
ZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuaApA
QCAtMzMsNyArMzMsNyBAQCBjbGFzcyBTb3VyY2VHcmFwaGljU29mdHdhcmVBcHBsaWVyIDogcHVi
bGljIEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxTb3VyY2VHcgogcHVibGljOgogICAgIHVz
aW5nIEJhc2U6OkJhc2U7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGx5
KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlcklt
YWdlJiByZXN1bHQpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCAzYzNmNWMxNTVhNTZjMDc5MTg5
YTMzOGZlYmExZTU3ODI3ZjczMWUzLi5lMjhiODhmOTFkM2QyYWU2YjU1YjFhOTE4YmIxNmMwYmIx
ZWQwMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcApAQCAtNDQyLDgg
KzQ0MiwxMSBAQCBJbWFnZUJ1ZmZlciogQ1NTRmlsdGVyOjpvdXRwdXQoKQogewogICAgIGlmICht
X2ZpbHRlclJlbmRlcmVyICYmIG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKQogICAgICAg
ICByZXR1cm4gbV9maWx0ZXJSZW5kZXJlci0+b3V0cHV0KCk7Ci0gICAgCi0gICAgcmV0dXJuIGxh
c3RFZmZlY3QoKS0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKKworICAgIGlmIChhdXRvIHJlc3VsdCA9
IGxhc3RFZmZlY3QoKS0+ZmlsdGVySW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+aW1h
Z2VCdWZmZXIoKTsKKworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIENTU0ZpbHRlcjo6
c2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcAppbmRleCBmMGEyNjViZjY3MGE5ODNjZDYyMTUwNjVkMTY3OGJhMjI0MjkyNTIw
Li45MzRmYzgzYTY0MjdjM2NmMTQ1Y2FmYTQ3MmU4MDVhMmZkZDViZjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcApAQCAtMjQ2LDEwICsyNDYsMTAgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6
cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAg
ICAgfQogICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QnVpbHQ7CiAKLSAg
ICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+aW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKLSAgICAgICAgaWYgKHJlc3VsdEltYWdlKSB7CisgICAgICAgIGlmIChhdXRvIHJl
c3VsdCA9IGxhc3RFZmZlY3QtPmZpbHRlckltYWdlKCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmVz
dWx0SW1hZ2UgPSByZXN1bHQtPmltYWdlQnVmZmVyKCk7CiAgICAgICAgICAgICBjb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLndpZHRo
KCksIDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSkpOwotICAg
ICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwgbGFzdEVmZmVj
dC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoKnJlc3VsdEltYWdlLCByZXN1bHQtPmFic29sdXRlSW1hZ2VSZWN0KCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCkpOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUltYWdlLmNwcAppbmRleCBjNzU5YzlhOGM1NmRiZWIzNzVkZTM3ZjY1NzU1Yzk4
NjAxZjY4NDBlLi4wNzRkZjE5YzlmOGQyYzIzYTIyZmIyZWM3NGQ1MGRiZDQzZTEwNTIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cApAQCAtODIsMTYgKzgyLDE2IEBAIGNsYXNzIEZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXIgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFSW1hZ2U+IHsKIHB1YmxpYzoKICAgICB1
c2luZyBCYXNlOjpCYXNlOwogCi0gICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBG
aWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cykgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBs
eShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJ
bWFnZSYgcmVzdWx0KSBvdmVycmlkZTsKIH07CiAKLWJvb2wgRkVJbWFnZVNvZnR3YXJlQXBwbGll
cjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYp
Citib29sIEZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVy
LCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIEZpbHRlckltYWdlJiByZXN1bHQpCiB7Ci0gICAg
YXV0byByZXN1bHRJbWFnZSA9IG1fZWZmZWN0LmltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgYXV0
byByZXN1bHRJbWFnZSA9IHJlc3VsdC5pbWFnZUJ1ZmZlcigpOwogICAgIGlmICghcmVzdWx0SW1h
Z2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcHJpbWl0aXZlU3VicmVnaW9u
ID0gbV9lZmZlY3QuZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgYXV0byBwcmltaXRp
dmVTdWJyZWdpb24gPSByZXN1bHQucHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgYXV0byYgY29u
dGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAKICAgICBXVEY6OnN3aXRjaE9uKG1fZWZm
ZWN0LnNvdXJjZUltYWdlKCksCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBGRUltYWdlU29mdHdh
cmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG8KIAogYm9vbCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVy
JiBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIEZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXIoKnRoaXMpLmFw
cGx5KGZpbHRlciwgaW5wdXRFZmZlY3RzKCkpOworICAgIHJldHVybiBGRUltYWdlU29mdHdhcmVB
cHBsaWVyKCp0aGlzKS5hcHBseShmaWx0ZXIsIHsgfSwgKmZpbHRlckltYWdlKCkpOwogfQogCiBU
ZXh0U3RyZWFtJiBGRUltYWdlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRz
LCBSZXByZXNlbnRhdGlvblR5cGUgcmVwcmVzZW50YXRpb24pIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>