<?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>137622</bug_id>
          
          <creation_ts>2014-10-10 12:58:21 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for RenderElement</short_desc>
          <delta_ts>2014-10-10 16:07:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137424</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041001</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-10 12:58:21 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for RenderElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041002</commentid>
    <comment_count>1</comment_count>
      <attachid>239644</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-10 13:01:47 -0700</bug_when>
    <thetext>Created attachment 239644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041007</commentid>
    <comment_count>2</comment_count>
      <attachid>239645</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-10 13:27:42 -0700</bug_when>
    <thetext>Created attachment 239645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041014</commentid>
    <comment_count>3</comment_count>
      <attachid>239647</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-10 14:00:52 -0700</bug_when>
    <thetext>Created attachment 239647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041040</commentid>
    <comment_count>4</comment_count>
      <attachid>239647</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-10 15:02:46 -0700</bug_when>
    <thetext>Comment on attachment 239647
Patch

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

&gt; Source/WebCore/rendering/RenderCounter.cpp:624
&gt; +            counterName ? WebCore::counterMaps().get(downcast&lt;WebCore::RenderElement&gt;(current))-&gt;get(identifier) : (WebCore::CounterNode*)1 : (WebCore::CounterNode*)0);

What the heck!

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:263
&gt; +                        downcast&lt;RenderSVGText&gt;(*child).setNeedsTextMetricsUpdate();
&gt; +                        downcast&lt;RenderSVGText&gt;(*child).setNeedsPositioningValuesUpdate();

IMHO, it would be cleaner to put downcast&lt;RenderSVGText&gt;(*child) in a temporary here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041048</commentid>
    <comment_count>5</comment_count>
      <attachid>239654</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-10 15:28:46 -0700</bug_when>
    <thetext>Created attachment 239654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041061</commentid>
    <comment_count>6</comment_count>
      <attachid>239654</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 16:06:55 -0700</bug_when>
    <thetext>Comment on attachment 239654
Patch

Clearing flags on attachment: 239654

Committed r174619: &lt;http://trac.webkit.org/changeset/174619&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041062</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 16:07:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239644</attachid>
            <date>2014-10-10 13:01:47 -0700</date>
            <delta_ts>2014-10-10 13:27:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137622-20141010130150.patch</filename>
            <type>text/plain</type>
            <size>73372</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEyMGM4OTYwNTY0YzJh
MjM5MjhhNjgzOGNjNTJmNTQ2OTkxNDcxNy4uZWQ1OTg1ZmRmYzdiYmM1NTQzYjYwYjJkODdlN2Fk
Y2M0NmVlNzUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExOSBAQAogMjAxNC0xMC0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3du
Y2FzdDw+KCkgZm9yIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNzYyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJlbmRlckVs
ZW1lbnQgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJyb3VuZGluZyBjb2RlLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmltYWdlTWFwTGlua1JlbmRlcmVyKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om1hdGVyaWFs
aXplUmFyZURhdGEpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc05vblRleHRMZWFmQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoQWhlYWRG
b3JCZXR0ZXJNYXRjaCk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgorICAgICAgICAqIGVk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhDb250ZW50c1RvTmV3QmxvY2tJZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc0VtcHR5VGFibGVDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmJpZGlOZXh0U2hhcmVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmdldEZp
cnN0TGV0dGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpyZW5kZXJlclJl
bW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpyZW5kZXJl
clN1YnRyZWVBdHRhY2hlZCk6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6aW5zZXJ0Q2hpbGRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJFbGVtZW50OjpyZW1vdmVDaGlsZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OmZpbmROZXh0TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1JlbmRlckxheWVyTW9kZWxPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc0JveE1vZGVsT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJCbG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmlzUmVuZGVyQmxvY2tGbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6aXNSZW5kZXJSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmlzUmVuZGVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpmaXJzdExpbmVTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW5kZXJlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZyYW1lU2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZUNoaWxkcmVuU3R5bGVJblJl
Z2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c2V0T2Jq
ZWN0U3R5bGVJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDo6cmVzdG9yZVJlZ2lvbk9iamVjdHNPcmlnaW5hbFN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
Y2xlYXJOZWVkc0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxC
ZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbGxlY3RBbm5v
dGF0ZWRSZWdpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uR2VuZXJpY0N1ZSk6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MTWVuY2xvc2U6OmFkZENoaWxkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpyZWJ1aWxkVG9rZW5Db250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVTdHlsZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTFJvb3Q6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFJvb3Q6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6YWRkQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZVRva2VuQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlU3R5bGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6bGF5b3V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kUHJldmlvdXNBbmROZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpzdWJ0cmVlU3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlRm9udEluQWxsRGVzY2VuZGFudHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJT
dXBwb3J0OjpsYXlvdXRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXNDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6Y2xp
ZW50V2FzQWRkZWRUb1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6
OmNsaWVudFdpbGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNGb3JUZXh0
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNGb3JGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6cmVidWlsZE1ldHJpY3NGb3JUZXh0
UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0
ZXNCdWlsZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFs
aXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRNZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OndhbGtUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRNZXRyaWNzQnVpbGRlcjo6YnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVHbHlwaFRvUGF0aFRy
YW5zbGF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6
OmRyYXdTVkdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0Nv
bnRleHQ6OmdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAgICAgICogc3ZnL1NWR0ZvbnREYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnREYXRhOjphcHBseVNWR0dseXBoU2VsZWN0
aW9uKToKKworMjAxNC0xMC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAg
ICAgICAgIERyb3AgUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKCkgZm9yIGEgbG90IG9mIFJlbmRl
ck9iamVjdCBzdWJjbGFzc2VzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzc1OTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDgzMDNkM2E4NWY3Nzk0ZTJl
NGZhMDVhMGM2NmU4YjczYmVmM2YzNWUuLmM0MzhiOTEyZDhkMjlhNzFkMjBjOTE1ZWMyNmY0MmZi
MGFmODU0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0xMC0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczw+KCkgLyBk
b3duY2FzdDw+KCkgZm9yIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzYyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJlbmRl
ckVsZW1lbnQgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJyb3VuZGluZyBjb2RlLgorCisg
ICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnBhdXNlQW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYkZyYW1lOjpwYXVzZVRyYW5zaXRpb24pOgorCiAyMDE0LTEwLTA5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRv
d25jYXN0PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCmluZGV4
IGFiYzAwZGJhMzg0OWM2ODEzZTYzYmU1YWY0NmZhOWI5NzVhOWU4MDQuLmFlOTU3ZjA4ZDI2NTlh
OTVlNDU1YWM2ZmNhMmY2M2FlYWZiNDBlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIFJlbmRlckVsZW1lbnQqIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6Omlt
YWdlTWFwTGlua1JlbmRlcmVyKCkgY29uc3QKIAogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
ID0gbnVsbHB0cjsKICAgICBpZiAobV9wYXJlbnQgJiYgbV9wYXJlbnQtPmlzQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdCgpKQotICAgICAgICByZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudCh0b0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QobV9wYXJlbnQpLT5yZW5kZXJlcigpKTsKKyAgICAgICAg
cmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pih0b0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QobV9wYXJlbnQpLT5yZW5kZXJlcigpKTsKICAgICBlbHNlCiAgICAgICAgIHJlbmRlcmVy
ID0gbV9tYXBFbGVtZW50LT5yZW5kZXJlcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggNjRkZjEzZDcxN2JhNjg4OGJjMzQyZjVhNGVlNGI1MjRhNzcyNmEzMS4uY2NiNDA4MzY2ODI4
OTI4OGJlNGNjOGIwZGYzYWMxMzA3NzFmMWQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0x
MzE4LDcgKzEzMTgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gY2hlY2sgd2hldGhlciByZW5kZXJlZCBpbWFnZSB3YXMgc3RyZXRjaGVkIGZyb20gb25lLWRp
bWVuc2lvbmFsIGZpbGUgaW1hZ2UKICAgICAgICAgICAgIGlmIChpbWFnZS5jYWNoZWRJbWFnZSgp
KSB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5jYWNoZWRJ
bWFnZSgpLT5pbWFnZVNpemVGb3JSZW5kZXJlcih0b1JlbmRlckVsZW1lbnQobV9yZW5kZXJlciks
IGltYWdlLnZpZXcoKS56b29tRmFjdG9yKCkpOworICAgICAgICAgICAgICAgIExheW91dFNpemUg
aW1hZ2VTaXplID0gaW1hZ2UuY2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIoJmlt
YWdlLCBpbWFnZS52aWV3KCkuem9vbUZhY3RvcigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
aW1hZ2VTaXplLmhlaWdodCgpIDw9IDEgfHwgaW1hZ2VTaXplLndpZHRoKCkgPD0gMTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA5YzdmYWI3ZGY3YTc0OTNiYWQxZDcxY2NjYTVh
NGRlOWViNGViOGQyLi5mOWM0YmE1YTNkMDVjMDRkMWQ0ODJkZDNmNjRlNzYxMGRmNzhiM2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMTY2NCw3ICsxNjY0LDcgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShOb2RlKiBzdHlsZWQKIAogICAg
IGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNDb21wb3NpdGVkKCkgJiYgQW5pbWF0aW9uQ29u
dHJvbGxlcjo6c3VwcG9ydHNBY2NlbGVyYXRlZEFuaW1hdGlvbk9mUHJvcGVydHkocHJvcGVydHlJ
RCkpIHsKICAgICAgICAgQW5pbWF0aW9uVXBkYXRlQmxvY2sgYW5pbWF0aW9uVXBkYXRlQmxvY2so
JnJlbmRlcmVyLT5hbmltYXRpb24oKSk7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5
bGUgPSByZW5kZXJlci0+YW5pbWF0aW9uKCkuZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKHRv
UmVuZGVyRWxlbWVudChyZW5kZXJlcikpOworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlID0gcmVuZGVyZXItPmFuaW1hdGlvbigpLmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihk
b3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikpOwogICAgICAgICBpZiAocHNldWRvRWxl
bWVudFNwZWNpZmllciAmJiAhc3R5bGVkTm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhY2hlZCBwc2V1ZG8gc3R5bGUgd2lsbCBvbmx5IGV4aXN0
IGlmIHRoZSBhbmltYXRpb24gaGFzIGJlZW4gcnVuIGF0IGxlYXN0IG9uY2UuCiAgICAgICAgICAg
ICByZXR1cm4gc3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGMwODM3YTIyYTZhYzBkMWJkZGM0NGNlYzFkOGY0ZDYx
MTM0YzI1MzcuLmJkYWQ2OWJjOWQxYTc5OWJiYjYxMmM3ZDRmYmExMmQ0ZWY4YmMzODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTM0OSw4ICszNDksOCBAQCB2b2lkIE5vZGU6OndpbGxCZURlbGV0ZWRG
cm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHZvaWQgTm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSgp
CiB7CiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhOwotICAgIGlmIChpc0VsZW1lbnROb2RlKCkpCi0g
ICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSYXJlRGF0YT4odG9SZW5kZXJF
bGVtZW50KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgpOworICAgIGlmIChpczxFbGVtZW50
PigqdGhpcykpCisgICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSYXJlRGF0
YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7
CiAgICAgZWxzZQogICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFyZURhdGE+
KG1fZGF0YS5tX3JlbmRlcmVyKS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKaW5kZXggNzk4YTljNDQ3NjJiNmIwZmY3NWY5OWM4NGYzNWM0ZmQzZjc3
MTE4Ny4uZjFmYzViZDM5MjU3ZTU0ODQyMDE3YjVmMDE0NDZmMWQ0MjBmZjlmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCkBAIC0xMDk1LDEzICsxMDk1LDExIEBAIHZvaWQgUG9zaXRpb246Omdl
dElubGluZUJveEFuZE9mZnNldChFQWZmaW5pdHkgYWZmaW5pdHksIElubGluZUJveComIGlubGlu
ZUJveCwKICAgICBnZXRJbmxpbmVCb3hBbmRPZmZzZXQoYWZmaW5pdHksIHByaW1hcnlEaXJlY3Rp
b24oKSwgaW5saW5lQm94LCBjYXJldE9mZnNldCk7CiB9CiAKLXN0YXRpYyBib29sIGlzTm9uVGV4
dExlYWZDaGlsZChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBib29sIGlzTm9uVGV4dExl
YWZDaGlsZChSZW5kZXJPYmplY3QmIG9iamVjdCkKIHsKLSAgICBpZiAob2JqZWN0LT5pc1RleHQo
KSkKKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICh0b1JlbmRlckVsZW1lbnQob2JqZWN0KS0+Zmlyc3RDaGlsZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuICFkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihvYmplY3QpLmZpcnN0Q2hpbGQoKTsKIH0KIAogc3RhdGljIElubGluZVRl
eHRCb3gqIHNlYXJjaEFoZWFkRm9yQmV0dGVyTWF0Y2goUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
QEAgLTExMTMsNyArMTExMSw3IEBAIHN0YXRpYyBJbmxpbmVUZXh0Qm94KiBzZWFyY2hBaGVhZEZv
ckJldHRlck1hdGNoKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgaWYgKG5leHQtPmlzQlIoKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICBpZiAoaXNOb25UZXh0TGVhZkNoaWxkKG5leHQpKQorICAgICAgICBp
ZiAoaXNOb25UZXh0TGVhZkNoaWxkKCpuZXh0KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm5leHQpKSB7CiAgICAgICAgICAgICBJbmxp
bmVUZXh0Qm94KiBtYXRjaCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKaW5kZXggYzY4MTQ0NjlmMjczNmFmNGM2YWQ4OTM5MDhkYTdiMjA0NDk4ZjdlYi4uM2NkNGYw
ODQyOTIyYjYwNzNmZWJlMjVmYWUzNmExYzRjNWRhZGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmNwcApAQCAtMTA3LDEzICsxMDcsMTMgQEAgdm9pZCBQc2V1ZG9FbGVtZW50Ojpk
aWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKQogCiAgICAgLy8gVGhlIHJlbmRlcmVycyBpbnNp
ZGUgcHNldWRvIGVsZW1lbnRzIGFyZSBhbm9ueW1vdXMgc28gdGhleSBkb24ndCBnZXQgbm90aWZp
ZWQgb2YgcmVjYWxjU3R5bGUgYW5kIG11c3QgaGF2ZQogICAgIC8vIHRoZSBzdHlsZSBwcm9wYWdh
dGVkIGRvd253YXJkIG1hbnVhbGx5IHNpbWlsYXIgdG8gUmVuZGVyT2JqZWN0Ojpwcm9wYWdhdGVT
dHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4uCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCk7Ci0gICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVyZXIt
Pm5leHRJblByZU9yZGVyKHJlbmRlcmVyKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRJblBy
ZU9yZGVyKHJlbmRlcmVyKSkgeworICAgIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyID0gKnRoaXMt
PnJlbmRlcmVyKCk7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVyZXIubmV4
dEluUHJlT3JkZXIoJnJlbmRlcmVyKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRJblByZU9y
ZGVyKCZyZW5kZXJlcikpIHsKICAgICAgICAgLy8gV2Ugb25seSBtYW5hZ2UgdGhlIHN0eWxlIGZv
ciB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQgd2hpY2ggbXVzdCBiZSBpbWFnZXMgb3IgdGV4dC4KLSAg
ICAgICAgaWYgKCFjaGlsZC0+aXNSZW5kZXJJbWFnZSgpICYmICFjaGlsZC0+aXNRdW90ZSgpKQor
ICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqY2hpbGQpICYmICFpczxSZW5kZXJRdW90ZT4o
KmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBQYXNzUmVmPFJlbmRlclN0
eWxlPiBjcmVhdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJv
bVBzZXVkb1N0eWxlKHJlbmRlcmVyLT5zdHlsZSgpKTsKLSAgICAgICAgdG9SZW5kZXJFbGVtZW50
KCpjaGlsZCkuc2V0U3R5bGUoV1RGOjptb3ZlKGNyZWF0ZWRTdHlsZSkpOworICAgICAgICBQYXNz
UmVmPFJlbmRlclN0eWxlPiBjcmVhdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJ
bmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKHJlbmRlcmVyLnN0eWxlKCkpOworICAgICAgICBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLnNldFN0eWxlKFdURjo6bW92ZShjcmVhdGVkU3R5
bGUpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKaW5kZXggNTg0OTQ4YTM5NTQxYTVlMGI3OTY1M2E1ZWFkODAwNzg2OTdh
YTkyYy4uMDY2NTRlYTJjYTUyMGY2NjJjYTdlOGU5M2UxNTBkODY1NGFhM2MzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTk3Myw3
ICs5NzMsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnRO
ZXdEZWZhdWx0UGFyYWdyYXBoRWxlbWVudEF0KGNvbnN0CiBQYXNzUmVmUHRyPE5vZGU+IENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3Nh
cnkoY29uc3QgUG9zaXRpb24mIHBvcykKIHsKICAgICBpZiAocG9zLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAKQEAgLTk5MSw3
ICs5OTEsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3NhcgogICAgIC8vIElmIHRoZXJlIGFyZSBu
byBWaXNpYmxlUG9zaXRpb25zIGluIHRoZSBzYW1lIGJsb2NrIGFzIHBvcyB0aGVuIAogICAgIC8v
IHVwc3RyZWFtU3RhcnQgd2lsbCBiZSBvdXRzaWRlIHRoZSBwYXJhZ3JhcGgKICAgICBpZiAoY29t
cGFyZVBvc2l0aW9ucyhwb3MsIHVwc3RyZWFtU3RhcnQpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGVyZm9ybSBzb21lIGNoZWNrcyB0
byBzZWUgaWYgd2UgbmVlZCB0byBwZXJmb3JtIHdvcmsgaW4gdGhpcyBmdW5jdGlvbi4KICAgICBp
ZiAoaXNCbG9jayh1cHN0cmVhbVN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkpKSB7CkBAIC0xMDAwLDIy
ICsxMDAwLDIyIEBAIFBhc3NSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQ
YXJhZ3JhcGhDb250ZW50c1RvTmV3QmxvY2tJZk5lY2Vzc2FyCiAgICAgICAgIGlmICh1cHN0cmVh
bVN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgPT0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24odXBzdHJl
YW1TdGFydCkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBibG9jayBpcyB0aGUgcm9vdCBlZGl0
YWJsZSBlbGVtZW50IGFuZCBpdCBjb250YWlucyBubyB2aXNpYmxlIGNvbnRlbnQsIGNyZWF0ZSBh
IG5ldwogICAgICAgICAgICAgLy8gYmxvY2sgYnV0IGRvbid0IHRyeSBhbmQgbW92ZSBjb250ZW50
IGludG8gaXQsIHNpbmNlIHRoZXJlJ3Mgbm90aGluZyBmb3IgbW92ZVBhcmFncmFwaHMgdG8gbW92
ZS4KLSAgICAgICAgICAgIGlmICghUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVz
Y2VuZGFudHNXaXRoSGVpZ2h0KHRvUmVuZGVyRWxlbWVudCgqdXBzdHJlYW1TdGFydC5kZXByZWNh
dGVkTm9kZSgpLT5yZW5kZXJlcigpKSkpCisgICAgICAgICAgICBpZiAoIVBvc2l0aW9uOjpoYXNS
ZW5kZXJlZE5vbkFub255bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodChkb3duY2FzdDxSZW5kZXJF
bGVtZW50PigqdXBzdHJlYW1TdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGluc2VydE5ld0RlZmF1bHRQYXJhZ3JhcGhFbGVtZW50QXQo
dXBzdHJlYW1TdGFydCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCbG9jayh1cHN0cmVhbUVuZC5k
ZXByZWNhdGVkTm9kZSgpKSkgewogICAgICAgICAgICAgaWYgKCF1cHN0cmVhbUVuZC5kZXByZWNh
dGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZih1cHN0cmVhbVN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmFncmFwaCBlbmQgaXMgYSBkZXNjZW5k
YW50IG9mIHBhcmFncmFwaCBzdGFydCwgdGhlbiB3ZSBuZWVkIHRvIHJ1bgogICAgICAgICAgICAg
ICAgIC8vIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24uIElmIG5vdCwgd2UgY2FuIGJhaWwgaGVy
ZS4KLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChlbmNsb3NpbmdCbG9jayh1
cHN0cmVhbUVuZC5kZXByZWNhdGVkTm9kZSgpKSAhPSB1cHN0cmVhbVN0YXJ0LmRlcHJlY2F0ZWRO
b2RlKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSB2aXNpYmxlRW5kLiAgSXQgbXVzdCBiZSBhbiBh
bmNlc3RvciBvZiB0aGUgcGFyYWdyYXBoIHN0YXJ0LgogICAgICAgICAgICAgLy8gV2UgY2FuIGJh
aWwgYXMgd2UgaGF2ZSBhIGZ1bGwgYmxvY2sgdG8gd29yayB3aXRoLgogICAgICAgICAgICAgQVNT
RVJUKHVwc3RyZWFtU3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YoZW5jbG9z
aW5nQmxvY2sodXBzdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkpKTsKLSAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0gZWxzZSBpZiAo
aXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQodmlzaWJsZUVuZCkpIHsKICAgICAg
ICAgICAgIC8vIEF0IHRoZSBlbmQgb2YgdGhlIGVkaXRhYmxlIHJlZ2lvbi4gV2UgY2FuIGJhaWwg
aGVyZSBhcyB3ZWxsLgotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcAppbmRleCAxNjNkMTBmOWRmYzVkYTEzODZhZTU3OTdiYzExN2RiNTE5NDEyYjJkLi40
N2M2NTI4ZDgyOWY2NDNmNDhlMDVkYTViZTlmYjYyZGY5MWI4NDYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlBvc2l0
aW9uSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRl
ckVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpA
QCAtODQ5LDExICs4NTAsMTEgQEAgYm9vbCBpc0VtcHR5VGFibGVDZWxsKGNvbnN0IE5vZGUqIG5v
ZGUpCiAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGlmICghcmVuZGVyZXItPmlzVGFibGVDZWxsKCkpCisgICAgaWYgKCFpczxSZW5k
ZXJUYWJsZUNlbGw+KCpyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IENoZWNrIHRoYXQgdGhlIHRhYmxlIGNlbGwgY29udGFpbnMgbm8gY2hpbGQgcmVuZGVyZXJzIGV4
Y2VwdCBmb3IgcGVyaGFwcyBhIHNpbmdsZSA8YnI+LgotICAgIFJlbmRlck9iamVjdCogY2hpbGRS
ZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudChyZW5kZXJlciktPmZpcnN0Q2hpbGQoKTsKKyAgICBS
ZW5kZXJPYmplY3QqIGNoaWxkUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCpy
ZW5kZXJlcikuZmlyc3RDaGlsZCgpOwogICAgIGlmICghY2hpbGRSZW5kZXJlcikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgaWYgKCFjaGlsZFJlbmRlcmVyLT5pc0JSKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCmluZGV4IGYwODY4MWEzNjdmYzM1ZTUxOTY4
YjhhMzVkNzhmNGRiODVkZDIxMWQuLjhiNjA0MTUyN2E4NDU0ZjFlNGQ3Y2EyODJlYmI2MGUxNjM4
MzgxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC0y
MTQsMjIgKzIxNCwyMiBAQCBzdGF0aWMgYm9vbCBpc0VtcHR5SW5saW5lKGNvbnN0IFJlbmRlcklu
bGluZSYgcmVuZGVyZXIpCiB0ZW1wbGF0ZSA8Y2xhc3MgT2JzZXJ2ZXI+CiBzdGF0aWMgaW5saW5l
IFJlbmRlck9iamVjdCogYmlkaU5leHRTaGFyZWQoUmVuZGVyRWxlbWVudCYgcm9vdCwgUmVuZGVy
T2JqZWN0KiBjdXJyZW50LCBPYnNlcnZlciogb2JzZXJ2ZXIgPSAwLCBFbXB0eUlubGluZUJlaGF2
aW9yIGVtcHR5SW5saW5lQmVoYXZpb3IgPSBTa2lwRW1wdHlJbmxpbmVzLCBib29sKiBlbmRPZklu
bGluZVB0ciA9IDApCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBuZXh0ID0gMDsKKyAgICBSZW5kZXJP
YmplY3QqIG5leHQgPSBudWxscHRyOwogICAgIC8vIG9sZEVuZE9mSW5saW5lIGRlbm90ZXMgaWYg
d2hlbiB3ZSBsYXN0IHN0b3BwZWQgaXRlcmF0aW5nIGlmIHdlIHdlcmUgYXQgdGhlIGVuZCBvZiBh
biBpbmxpbmUuCiAgICAgYm9vbCBvbGRFbmRPZklubGluZSA9IGVuZE9mSW5saW5lUHRyID8gKmVu
ZE9mSW5saW5lUHRyIDogZmFsc2U7CiAgICAgYm9vbCBlbmRPZklubGluZSA9IGZhbHNlOwogCiAg
ICAgd2hpbGUgKGN1cnJlbnQpIHsKLSAgICAgICAgbmV4dCA9IDA7CisgICAgICAgIG5leHQgPSBu
dWxscHRyOwogICAgICAgICBpZiAoIW9sZEVuZE9mSW5saW5lICYmICFpc0l0ZXJhdG9yVGFyZ2V0
KGN1cnJlbnQpKSB7Ci0gICAgICAgICAgICBuZXh0ID0gdG9SZW5kZXJFbGVtZW50KGN1cnJlbnQp
LT5maXJzdENoaWxkKCk7CisgICAgICAgICAgICBuZXh0ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKmN1cnJlbnQpLmZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAgIG5vdGlmeU9ic2VydmVyRW50
ZXJlZE9iamVjdChvYnNlcnZlciwgbmV4dCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXZSBo
aXQgdGhpcyB3aGVuIGVpdGhlciBjdXJyZW50IGhhcyBubyBjaGlsZHJlbiwgb3Igd2hlbiBjdXJy
ZW50IGlzIG5vdCBhIHJlbmRlcmVyIHdlIGNhcmUgYWJvdXQuCiAgICAgICAgIGlmICghbmV4dCkg
ewogICAgICAgICAgICAgLy8gSWYgaXQgaXMgYSByZW5kZXJlciB3ZSBjYXJlIGFib3V0LCBhbmQg
d2UncmUgZG9pbmcgb3VyIGlubGluZS13YWxrLCByZXR1cm4gaXQuCi0gICAgICAgICAgICBpZiAo
ZW1wdHlJbmxpbmVCZWhhdmlvciA9PSBJbmNsdWRlRW1wdHlJbmxpbmVzICYmICFvbGRFbmRPZklu
bGluZSAmJiBjdXJyZW50LT5pc1JlbmRlcklubGluZSgpKSB7CisgICAgICAgICAgICBpZiAoZW1w
dHlJbmxpbmVCZWhhdmlvciA9PSBJbmNsdWRlRW1wdHlJbmxpbmVzICYmICFvbGRFbmRPZklubGlu
ZSAmJiBpczxSZW5kZXJJbmxpbmU+KCpjdXJyZW50KSkgewogICAgICAgICAgICAgICAgIG5leHQg
PSBjdXJyZW50OwogICAgICAgICAgICAgICAgIGVuZE9mSW5saW5lID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9i
amVjdCogYmlkaU5leHRTaGFyZWQoUmVuZGVyRWxlbWVudCYgcm9vdCwgUmVuZGVyT2JqZWN0KiBj
dQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50
LT5wYXJlbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZW1wdHlJbmxpbmVCZWhhdmlvciA9PSBJ
bmNsdWRlRW1wdHlJbmxpbmVzICYmIGN1cnJlbnQgJiYgY3VycmVudCAhPSAmcm9vdCAmJiBjdXJy
ZW50LT5pc1JlbmRlcklubGluZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVtcHR5SW5saW5l
QmVoYXZpb3IgPT0gSW5jbHVkZUVtcHR5SW5saW5lcyAmJiBjdXJyZW50ICYmIGN1cnJlbnQgIT0g
JnJvb3QgJiYgaXM8UmVuZGVySW5saW5lPigqY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgbmV4dCA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgIGVuZE9mSW5saW5lID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGlj
IGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlOZXh0U2hhcmVkKFJlbmRlckVsZW1lbnQmIHJvb3Qs
IFJlbmRlck9iamVjdCogY3UKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmIChpc0l0
ZXJhdG9yVGFyZ2V0KG5leHQpCi0gICAgICAgICAgICB8fCAobmV4dC0+aXNSZW5kZXJJbmxpbmUo
KSAmJiAoZW1wdHlJbmxpbmVCZWhhdmlvciA9PSBJbmNsdWRlRW1wdHlJbmxpbmVzIHx8IGlzRW1w
dHlJbmxpbmUodG9SZW5kZXJJbmxpbmUoKm5leHQpKSkpKQorICAgICAgICAgICAgfHwgKGlzPFJl
bmRlcklubGluZT4oKm5leHQpICYmIChlbXB0eUlubGluZUJlaGF2aW9yID09IEluY2x1ZGVFbXB0
eUlubGluZXMgfHwgaXNFbXB0eUlubGluZShkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpuZXh0KSkp
KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjdXJyZW50ID0gbmV4dDsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5ZjRmMGM2NWYxMzc4
ODVjYmNiNjUxMDJmNDVmNWVlYTkyMDkxMDE0Li44MjQxMjg3M2E4NTA1NTk3ZTU2NDhiOWU3Njhi
NGUzZTY0YWFjODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
QEAgLTQ3LDEyICs0NywxNSBAQAogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRlckJveFJlZ2lvbkluZm8uaCIKKyNpbmNs
dWRlICJSZW5kZXJCdXR0b24uaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgogI2lu
Y2x1ZGUgIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckZs
ZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVy
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxp
c3RNYXJrZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJNZW51TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCkBAIC0zMTkxLDcgKzMxOTQsNyBAQCB2b2lkIFJl
bmRlckJsb2NrOjpnZXRGaXJzdExldHRlcihSZW5kZXJPYmplY3QqJiBmaXJzdExldHRlciwgUmVu
ZGVyRWxlbWVudComIGZpcgogICAgIC8vIERyaWxsIGludG8gaW5saW5lcyBsb29raW5nIGZvciBv
dXIgZmlyc3QgdGV4dCBkZXNjZW5kYW50LgogICAgIGZpcnN0TGV0dGVyID0gZmlyc3RMZXR0ZXJD
b250YWluZXItPmZpcnN0Q2hpbGQoKTsKICAgICB3aGlsZSAoZmlyc3RMZXR0ZXIpIHsKLSAgICAg
ICAgaWYgKGZpcnN0TGV0dGVyLT5pc1RleHQoKSkgeworICAgICAgICBpZiAoaXM8UmVuZGVyVGV4
dD4oKmZpcnN0TGV0dGVyKSkgewogICAgICAgICAgICAgaWYgKGZpcnN0TGV0dGVyID09IHNraXBP
YmplY3QpIHsKICAgICAgICAgICAgICAgICBmaXJzdExldHRlciA9IGZpcnN0TGV0dGVyLT5uZXh0
U2libGluZygpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzIwMCw4ICszMjAzLDgg
QEAgdm9pZCBSZW5kZXJCbG9jazo6Z2V0Rmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiYgZmlyc3RM
ZXR0ZXIsIFJlbmRlckVsZW1lbnQqJiBmaXIKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVuZGVyRWxlbWVudCYgY3VycmVudCA9IHRvUmVuZGVyRWxlbWVudCgqZmly
c3RMZXR0ZXIpOwotICAgICAgICBpZiAoY3VycmVudC5pc0xpc3RNYXJrZXIoKSkKKyAgICAgICAg
UmVuZGVyRWxlbWVudCYgY3VycmVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpmaXJzdExl
dHRlcik7CisgICAgICAgIGlmIChpczxSZW5kZXJMaXN0TWFya2VyPihjdXJyZW50KSkKICAgICAg
ICAgICAgIGZpcnN0TGV0dGVyID0gY3VycmVudC5uZXh0U2libGluZygpOwogICAgICAgICBlbHNl
IGlmIChjdXJyZW50LmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAg
ICAgICAgaWYgKGN1cnJlbnQuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsK
QEAgLTMyMDksNyArMzIxMiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmdldEZpcnN0TGV0dGVyKFJl
bmRlck9iamVjdComIGZpcnN0TGV0dGVyLCBSZW5kZXJFbGVtZW50KiYgZmlyCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaXJzdExldHRlciA9IGN1
cnJlbnQubmV4dFNpYmxpbmcoKTsKLSAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50LmlzUmVwbGFj
ZWQoKSB8fCBjdXJyZW50LmlzUmVuZGVyQnV0dG9uKCkgfHwgY3VycmVudC5pc01lbnVMaXN0KCkp
CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5pc1JlcGxhY2VkKCkgfHwgaXM8UmVuZGVyQnV0
dG9uPihjdXJyZW50KSB8fCBpczxSZW5kZXJNZW51TGlzdD4oY3VycmVudCkpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZWxzZSBpZiAoY3VycmVudC5zdHlsZSgpLmhhc1BzZXVkb1N0eWxl
KEZJUlNUX0xFVFRFUikgJiYgY3VycmVudC5jYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSkgIHsK
ICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbG93ZXItbGV2ZWwgbm9kZSB3aXRoIGZpcnN0LWxl
dHRlciwgd2hpY2ggc3VwZXJzZWRlcyB0aGUgaGlnaGVyLWxldmVsIHN0eWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDVkYmMyZDFhZmMxYzZlOGJiNWVjZjM4NjE3
YmNhN2JiOWMyZjM2ZmYuLmQ2YjMxNDA3ZTgxOGQyNWJlYzBiNmI1N2Q0YzFkNjEwNjJiY2MwMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01MDEsNyArNTAxLDcg
QEAgdm9pZCBSZW5kZXJCb3g6OmxheW91dCgpCiAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKHZpZXcoKSwgKnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIHN0eWxlKCkuaXNGbGlw
cGVkQmxvY2tzV3JpdGluZ01vZGUoKSk7CiAgICAgd2hpbGUgKGNoaWxkKSB7CiAgICAgICAgIGlm
IChjaGlsZC0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyRWxlbWVudChjaGls
ZCktPmxheW91dCgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxk
KS5sYXlvdXQoKTsKICAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7CiAgICAg
ICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IGFlMDIwZGU5Y2M1N2M1YjZmZWRkOWE2
ZmRkN2IzMzcwYzNhZTZjZmMuLjQ4NzhiNmYxZDJlZWI1MjA1YjI1ZjZlOGE3NjA2ZmZmYTU1NzNm
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTQ5
Niw4ICs0OTYsOCBAQCB2b2lkIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyUmVtb3ZlZEZyb21UcmVl
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIGlmICghY3VycmVudFJlbmRlcmVyKQogICAg
ICAgICBjdXJyZW50UmVuZGVyZXIgPSAmcmVuZGVyZXI7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlci0+aXNSZW5kZXJFbGVtZW50KCkpCi0gICAgICAgICAg
ICBkZXN0cm95Q291bnRlck5vZGVzKHRvUmVuZGVyRWxlbWVudCgqY3VycmVudFJlbmRlcmVyKSk7
CisgICAgICAgIGlmIChpczxSZW5kZXJFbGVtZW50PigqY3VycmVudFJlbmRlcmVyKSkKKyAgICAg
ICAgICAgIGRlc3Ryb3lDb3VudGVyTm9kZXMoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmN1cnJl
bnRSZW5kZXJlcikpOwogICAgICAgICBpZiAoY3VycmVudFJlbmRlcmVyID09ICZyZW5kZXJlcikK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjdXJyZW50UmVuZGVyZXIgPSBjdXJyZW50UmVu
ZGVyZXItPnByZXZpb3VzSW5QcmVPcmRlcigpOwpAQCAtNTUxLDggKzU1MSw4IEBAIHZvaWQgUmVu
ZGVyQ291bnRlcjo6cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIpCiAgICAgaWYgKGVsZW1lbnQgJiYgIWVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJl
dHVybjsgLy8gTm8gbmVlZCB0byB1cGRhdGUgaWYgdGhlIHBhcmVudCBpcyBub3QgYXR0YWNoZWQg
eWV0CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGRlc2NlbmRhbnQgPSAmcmVuZGVyZXI7IGRlc2Nl
bmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50LT5uZXh0SW5QcmVPcmRlcigmcmVuZGVyZXIp
KSB7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50LT5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAg
ICAgIHVwZGF0ZUNvdW50ZXJzKHRvUmVuZGVyRWxlbWVudCgqZGVzY2VuZGFudCkpOworICAgICAg
ICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKmRlc2NlbmRhbnQpKQorICAgICAgICAgICAgdXBkYXRl
Q291bnRlcnMoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmRlc2NlbmRhbnQpKTsKICAgICB9CiB9
CiAKQEAgLTYxMywxNSArNjEzLDE1IEBAIHZvaWQgc2hvd0NvdW50ZXJSZW5kZXJlclRyZWUoY29u
c3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hhcioKIAogICAgIEF0
b21pY1N0cmluZyBpZGVudGlmaWVyKGNvdW50ZXJOYW1lKTsKICAgICBmb3IgKGNvbnN0IFdlYkNv
cmU6OlJlbmRlck9iamVjdCogY3VycmVudCA9IHJvb3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5uZXh0SW5QcmVPcmRlcigpKSB7Ci0gICAgICAgIGlmICghY3VycmVudC0+aXNSZW5kZXJF
bGVtZW50KCkpCisgICAgICAgIGlmICghaXM8V2ViQ29yZTo6UmVuZGVyRWxlbWVudD4oKmN1cnJl
bnQpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJWMi
LCAoY3VycmVudCA9PSByZW5kZXJlcikgPyAnKicgOiAnICcpOwogICAgICAgICBmb3IgKGNvbnN0
IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcGFyZW50ID0gY3VycmVudDsgcGFyZW50ICYmIHBhcmVu
dCAhPSByb290OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudCgpKQogICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgICAgIik7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXAgTjolcCBQOiVw
IFBTOiVwIE5TOiVwIEM6JXBcbiIsCiAgICAgICAgICAgICBjdXJyZW50LCBjdXJyZW50LT5ub2Rl
KCksIGN1cnJlbnQtPnBhcmVudCgpLCBjdXJyZW50LT5wcmV2aW91c1NpYmxpbmcoKSwKLSAgICAg
ICAgICAgIGN1cnJlbnQtPm5leHRTaWJsaW5nKCksIHRvUmVuZGVyRWxlbWVudChjdXJyZW50KS0+
aGFzQ291bnRlck5vZGVNYXAoKSA/Ci0gICAgICAgICAgICBjb3VudGVyTmFtZSA/IFdlYkNvcmU6
OmNvdW50ZXJNYXBzKCkuZ2V0KHRvUmVuZGVyRWxlbWVudChjdXJyZW50KSktPmdldChpZGVudGlm
aWVyKSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSop
MCk7CisgICAgICAgICAgICBjdXJyZW50LT5uZXh0U2libGluZygpLCBkb3duY2FzdDxXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50PigqY3VycmVudCkuaGFzQ291bnRlck5vZGVNYXAoKSA/CisgICAgICAg
ICAgICBjb3VudGVyTmFtZSA/IFdlYkNvcmU6OmNvdW50ZXJNYXBzKCkuZ2V0KGRvd25jYXN0PFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ+KGN1cnJlbnQpKS0+Z2V0KGlkZW50aWZpZXIpIDogKFdlYkNv
cmU6OkNvdW50ZXJOb2RlKikxIDogKFdlYkNvcmU6OkNvdW50ZXJOb2RlKikwKTsKICAgICB9CiAg
ICAgZmZsdXNoKHN0ZGVycik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKaW5kZXggMDgyN2NhYTcwZTU0ZDdmZGI5NTUwZDc5OGMxYjQ4NDRhNjg4ZWMwZi4u
MTMwOTIzZTIyZTMxYmIxYjc2OGUzZGIxNTgwMTU1YWY3NzY4YzRmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtNTY5LDggKzU2OSw4IEBAIHZvaWQg
UmVuZGVyRWxlbWVudDo6aW5zZXJ0Q2hpbGRJbnRlcm5hbChSZW5kZXJPYmplY3QqIG5ld0NoaWxk
LCBSZW5kZXJPYmplY3QqIGJlCiAgICAgaWYgKCFkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsK
ICAgICAgICAgaWYgKG5vdGlmeUNoaWxkcmVuID09IE5vdGlmeUNoaWxkcmVuKQogICAgICAgICAg
ICAgbmV3Q2hpbGQtPmluc2VydGVkSW50b1RyZWUoKTsKLSAgICAgICAgaWYgKG5ld0NoaWxkLT5p
c1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3Vi
dHJlZUF0dGFjaGVkKHRvUmVuZGVyRWxlbWVudCgqbmV3Q2hpbGQpKTsKKyAgICAgICAgaWYgKGlz
PFJlbmRlckVsZW1lbnQ+KCpuZXdDaGlsZCkpCisgICAgICAgICAgICBSZW5kZXJDb3VudGVyOjpy
ZW5kZXJlclN1YnRyZWVBdHRhY2hlZChkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqbmV3Q2hpbGQp
KTsKICAgICB9CiAKICAgICBuZXdDaGlsZC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVj
YWxjKCk7CkBAIC02MzgsOCArNjM4LDggQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJFbGVtZW50Ojpy
ZW1vdmVDaGlsZEludGVybmFsKFJlbmRlck9iamVjdCYgb2xkQ2hpbGQsIE5vdGlmeUMKIAogICAg
IC8vIHJlbmRlcmVyUmVtb3ZlZEZyb21UcmVlIHdhbGtzIHRoZSB3aG9sZSBzdWJ0cmVlLiBXZSBj
YW4gaW1wcm92ZSBwZXJmb3JtYW5jZQogICAgIC8vIGJ5IHNraXBwaW5nIHRoaXMgc3RlcCB3aGVu
IGRlc3Ryb3lpbmcgdGhlIGVudGlyZSB0cmVlLgotICAgIGlmICghZG9jdW1lbnRCZWluZ0Rlc3Ry
b3llZCgpICYmIG9sZENoaWxkLmlzUmVuZGVyRWxlbWVudCgpKQotICAgICAgICBSZW5kZXJDb3Vu
dGVyOjpyZW5kZXJlclJlbW92ZWRGcm9tVHJlZSh0b1JlbmRlckVsZW1lbnQob2xkQ2hpbGQpKTsK
KyAgICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSAmJiBpczxSZW5kZXJFbGVtZW50Pihv
bGRDaGlsZCkpCisgICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyUmVtb3ZlZEZyb21UcmVl
KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG9sZENoaWxkKSk7CiAKICAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQogICAgICAg
ICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwpAQCAtNzE0LDcgKzcxNCw3IEBAIFJlbmRl
ckxheWVyKiBSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRM
YXllciwgUmVuZGVyT2JqZWN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gU3Rl
cCAxOiBJZiBvdXIgbGF5ZXIgaXMgYSBjaGlsZCBvZiB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4g
cmV0dXJuIG91ciBsYXllci4KLSAgICBSZW5kZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigp
ID8gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpIDogbnVsbHB0cjsKKyAg
ICBSZW5kZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigpID8gZG93bmNhc3Q8UmVuZGVyTGF5
ZXJNb2RlbE9iamVjdD4oKnRoaXMpLmxheWVyKCkgOiBudWxscHRyOwogICAgIGlmIChvdXJMYXll
ciAmJiBvdXJMYXllci0+cGFyZW50KCkgPT0gcGFyZW50TGF5ZXIpCiAgICAgICAgIHJldHVybiBv
dXJMYXllcjsKIApAQCAtNzIyLDkgKzcyMiw5IEBAIFJlbmRlckxheWVyKiBSZW5kZXJFbGVtZW50
OjpmaW5kTmV4dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRMYXllciwgUmVuZGVyT2JqZWN0CiAg
ICAgLy8gaW50byBvdXIgc2libGluZ3MgdHJ5aW5nIHRvIGZpbmQgdGhlIG5leHQgbGF5ZXIgd2hv
c2UgcGFyZW50IGlzIHRoZSBkZXNpcmVkIHBhcmVudC4KICAgICBpZiAoIW91ckxheWVyIHx8IG91
ckxheWVyID09IHBhcmVudExheWVyKSB7CiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IHN0YXJ0UG9pbnQgPyBzdGFydFBvaW50LT5uZXh0U2libGluZygpIDogZmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYg
KCFjaGlsZC0+aXNSZW5kZXJFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAoIWlzPFJlbmRlckVs
ZW1lbnQ+KCpjaGlsZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBS
ZW5kZXJMYXllciogbmV4dExheWVyID0gdG9SZW5kZXJFbGVtZW50KGNoaWxkKS0+ZmluZE5leHRM
YXllcihwYXJlbnRMYXllciwgbnVsbHB0ciwgZmFsc2UpOworICAgICAgICAgICAgUmVuZGVyTGF5
ZXIqIG5leHRMYXllciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkuZmluZE5leHRM
YXllcihwYXJlbnRMYXllciwgbnVsbHB0ciwgZmFsc2UpOwogICAgICAgICAgICAgaWYgKG5leHRM
YXllcikKICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dExheWVyOwogICAgICAgICB9CkBAIC0x
MTA5LDcgKzExMDksNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmxheW91dCgpCiAgICAgUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKICAgICB3aGlsZSAoY2hpbGQpIHsKICAgICAg
ICAgaWYgKGNoaWxkLT5uZWVkc0xheW91dCgpKQotICAgICAgICAgICAgdG9SZW5kZXJFbGVtZW50
KGNoaWxkKS0+bGF5b3V0KCk7CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigq
Y2hpbGQpLmxheW91dCgpOwogICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgpKTsK
ICAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCA5YzcxMmFhYTg0OWVkOGM2YzcwNTFl
YzE4MzRlMTcxMjA0NDIyYmZhLi4zNmMzNDM1MDI4NTYxZjQwYzIyN2JlNmEwZGNhMDA2ZTM3ZjQ3
N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTI0NSw4
ICsyNDUsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNfbm9Mb25nZXJBZmZlY3RzUGFy
ZW50QmxvY2s7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyRWxlbWVudCwg
aXNSZW5kZXJFbGVtZW50KCkpCi0KIGlubGluZSB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldEFuaW1h
dGFibGVTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBzZXRTdHlsZShh
bmltYXRpb24oKS51cGRhdGVBbmltYXRpb25zKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKSk7CkBA
IC0zMjMsNTEgKzMyMSw1MSBAQCBpbmxpbmUgRWxlbWVudCogUmVuZGVyRWxlbWVudDo6Z2VuZXJh
dGluZ0VsZW1lbnQoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBSZW5kZXJPYmplY3Q6OmlzUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVuZGVyRWxlbWVudCgp
ICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCk7Cisg
ICAgcmV0dXJuIGlzPFJlbmRlckVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PigqdGhpcykuaXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCk7CiB9CiAKIGlubGluZSBib29s
IFJlbmRlck9iamVjdDo6aXNCb3hNb2RlbE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlz
UmVuZGVyRWxlbWVudCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNCb3hNb2RlbE9iamVj
dCgpOworICAgIHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4oKnRoaXMpLmlzQm94TW9kZWxPYmplY3QoKTsKIH0KIAogaW5saW5lIGJvb2wg
UmVuZGVyT2JqZWN0Ojppc1JlbmRlckJsb2NrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNSZW5k
ZXJFbGVtZW50KCkgJiYgdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5pc1JlbmRlckJsb2NrKCk7Cisg
ICAgcmV0dXJuIGlzPFJlbmRlckVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PigqdGhpcykuaXNSZW5kZXJCbG9jaygpOwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJPYmpl
Y3Q6OmlzUmVuZGVyQmxvY2tGbG93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNSZW5kZXJFbGVt
ZW50KCkgJiYgdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5pc1JlbmRlckJsb2NrRmxvdygpOworICAg
IHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKnRoaXMpLmlzUmVuZGVyQmxvY2tGbG93KCk7CiB9CiAKIGlubGluZSBib29sIFJlbmRlck9i
amVjdDo6aXNSZW5kZXJSZXBsYWNlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVuZGVyRWxl
bWVudCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJSZXBsYWNlZCgpOworICAg
IHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKnRoaXMpLmlzUmVuZGVyUmVwbGFjZWQoKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyT2Jq
ZWN0Ojppc1JlbmRlcklubGluZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVuZGVyRWxlbWVu
dCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJJbmxpbmUoKTsKKyAgICByZXR1
cm4gaXM8UmVuZGVyRWxlbWVudD4oKnRoaXMpICYmIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0
aGlzKS5pc1JlbmRlcklubGluZSgpOwogfQogCiBpbmxpbmUgUmVuZGVyU3R5bGUmIFJlbmRlck9i
amVjdDo6c3R5bGUoKSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJu
IG1fcGFyZW50LT5zdHlsZSgpOwotICAgIHJldHVybiB0b1JlbmRlckVsZW1lbnQodGhpcyktPnN0
eWxlKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0aGlzKS5zdHlsZSgp
OwogfQogCiBpbmxpbmUgUmVuZGVyU3R5bGUmIFJlbmRlck9iamVjdDo6Zmlyc3RMaW5lU3R5bGUo
KSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5m
aXJzdExpbmVTdHlsZSgpOwotICAgIHJldHVybiB0b1JlbmRlckVsZW1lbnQodGhpcyktPmZpcnN0
TGluZVN0eWxlKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0aGlzKS5m
aXJzdExpbmVTdHlsZSgpOwogfQogCiBpbmxpbmUgUmVuZGVyRWxlbWVudCogQ29udGFpbmVyTm9k
ZTo6cmVuZGVyZXIoKSBjb25zdAogewotICAgIHJldHVybiB0b1JlbmRlckVsZW1lbnQoTm9kZTo6
cmVuZGVyZXIoKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KE5vZGU6OnJl
bmRlcmVyKCkpOwogfQogCiBpbmxpbmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFs
dWUsIGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggMTc3MTdkODBlYmRhM2RkY2E0NzA5MzU2ODJj
YjNiZTdmYjFkZmNjNC4uNTI2YTFjMDUyYTJmNTU2NGYwMjhhOTViZGE2YjQxMDE0OWVkNjBiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC0xNDEs
NyArMTQxLDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBmb3IgKHNpemVfdCByID0g
MDsgciA8IHJvd3M7IHIrKykgewogICAgICAgICBMYXlvdXRVbml0IHhQb3MgPSAwOwogICAgICAg
ICBmb3IgKHNpemVfdCBjID0gMDsgYyA8IGNvbHM7IGMrKykgewotICAgICAgICAgICAgdG9SZW5k
ZXJFbGVtZW50KGNoaWxkKS0+cGFpbnQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsK
KyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkucGFpbnQocGFpbnRJ
bmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKICAgICAgICAgICAgIHhQb3MgKz0gbV9jb2xzLm1f
c2l6ZXNbY107CiAgICAgICAgICAgICBpZiAoYm9yZGVyVGhpY2tuZXNzICYmIG1fY29scy5tX2Fs
bG93Qm9yZGVyW2MgKyAxXSkgewogICAgICAgICAgICAgICAgIHBhaW50Q29sdW1uQm9yZGVyKHBh
aW50SW5mbywgc25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSArIHhQb3MsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgeVBvcywgYm9yZGVyVGhpY2tuZXNz
LCBoZWlnaHQoKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDc2OWMyOWVkYTdmZTJhNmJkZjMwMzNlMzZmODMyOTRjMjM5YzM3M2IuLmJkODZhZWFhM2Zj
NjdhNGMwODhjZDdhZjM3M2VkZTYxYzhhMmZiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtNjI5NywxMyArNjI5NywxMyBAQCBzdGF0aWMgYm9vbCBoYXNQ
YWludGluZ05vbkxheWVyRGVzY2VuZGFudHMoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGludCBkZQogICAgICAgICAKICAgICAgICAgY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxl
bWVudENoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGQpOwogCi0gICAgICAgIGlm
IChyZW5kZXJFbGVtZW50Q2hpbGQuaXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCkgJiYgdG9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlckVsZW1lbnRDaGlsZCkuaGFzU2VsZlBhaW50aW5nTGF5
ZXIoKSkKKyAgICAgICAgaWYgKGlzPFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KHJlbmRlckVsZW1l
bnRDaGlsZCkgJiYgZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVyRWxlbWVu
dENoaWxkKS5oYXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKGhhc0JveERlY29yYXRpb25zT3JCYWNrZ3JvdW5kKHJlbmRlckVsZW1lbnRD
aGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAgICAgIGlmIChy
ZW5kZXJFbGVtZW50Q2hpbGQuaXNSZW5kZXJSZXBsYWNlZCgpKQorICAgICAgICBpZiAoaXM8UmVu
ZGVyUmVwbGFjZWQ+KHJlbmRlckVsZW1lbnRDaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgICAgICBpZiAoaGFzUGFpbnRpbmdOb25MYXllckRlc2NlbmRhbnRzKHJlbmRlckVs
ZW1lbnRDaGlsZCwgZGVwdGggKyAxKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCmluZGV4IDcwMTk2ZTU0ZDc5ZTAzZjg0MDg4
MjJkOWRmYTIzNDljNjY0NWVlNWYuLmEwMmI2ZDQ5Y2E3MTdjYzkxMzA1MjE2M2UwMzIzZGQ5ZWI1
MWI4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlbmRlckZsb3dU
aHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlck5h
bWVkRmxvd1RocmVhZC5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAKQEAgLTM3MSwxNiAr
MzcyLDE2IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNvbXB1dGVDaGlsZHJlblN0
eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVyCiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoY2hpbGQuaXNBbm9ueW1vdXMoKSB8fCBjaGlsZC5pc0luRmxvd1JlbmRlckZs
b3dUaHJlYWQoKSkKICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcmVuZGVyZXIuc3R5bGUoKSwg
Y2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQuaXNU
ZXh0KCkpCisgICAgICAgICAgICBlbHNlIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZCkpCiAgICAg
ICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNsb25lKCZyZW5k
ZXJlci5zdHlsZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaGlsZFN0
eWxlSW5SZWdpb24gPSBjb21wdXRlU3R5bGVJblJlZ2lvbih0b1JlbmRlckVsZW1lbnQoY2hpbGQp
LCByZW5kZXJlci5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24g
PSBjb21wdXRlU3R5bGVJblJlZ2lvbihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZCksIHJl
bmRlcmVyLnN0eWxlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc2V0T2JqZWN0U3R5bGVJblJl
Z2lvbigmY2hpbGQsIGNoaWxkU3R5bGVJblJlZ2lvbiwgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQp
OwogCi0gICAgICAgIGlmIChjaGlsZC5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgICAgIGNv
bXB1dGVDaGlsZHJlblN0eWxlSW5SZWdpb24odG9SZW5kZXJFbGVtZW50KGNoaWxkKSk7CisgICAg
ICAgIGlmIChpczxSZW5kZXJFbGVtZW50PihjaGlsZCkpCisgICAgICAgICAgICBjb21wdXRlQ2hp
bGRyZW5TdHlsZUluUmVnaW9uKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkKSk7CiAgICAg
fQogfQogCkBAIC0zODksMTEgKzM5MCwxMSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
OjpzZXRPYmplY3RTdHlsZUluUmVnaW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBQYXNzUgogICAg
IEFTU0VSVChvYmplY3QtPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSk7CiAKICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSAmb2JqZWN0LT5zdHlsZSgpOwot
ICAgIGlmIChvYmplY3QtPmlzUmVuZGVyRWxlbWVudCgpKQotICAgICAgICB0b1JlbmRlckVsZW1l
bnQob2JqZWN0KS0+c2V0U3R5bGVJbnRlcm5hbCgqc3R5bGVJblJlZ2lvbik7CisgICAgaWYgKGlz
PFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpKQorICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50
Pigqb2JqZWN0KS5zZXRTdHlsZUludGVybmFsKCpzdHlsZUluUmVnaW9uKTsKIAotICAgIGlmIChv
YmplY3QtPmlzQm94TW9kZWxPYmplY3QoKSAmJiAhb2JqZWN0LT5oYXNCb3hEZWNvcmF0aW9ucygp
KSB7Ci0gICAgICAgIGJvb2wgaGFzQm94RGVjb3JhdGlvbnMgPSBvYmplY3QtPmlzVGFibGVDZWxs
KCkKKyAgICBpZiAoaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpvYmplY3QpICYmICFvYmplY3Qt
Pmhhc0JveERlY29yYXRpb25zKCkpIHsKKyAgICAgICAgYm9vbCBoYXNCb3hEZWNvcmF0aW9ucyA9
IGlzPFJlbmRlclRhYmxlQ2VsbD4oKm9iamVjdCkKICAgICAgICAgfHwgb2JqZWN0LT5zdHlsZSgp
Lmhhc0JhY2tncm91bmQoKQogICAgICAgICB8fCBvYmplY3QtPnN0eWxlKCkuaGFzQm9yZGVyKCkK
ICAgICAgICAgfHwgb2JqZWN0LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKQpAQCAtNDY1LDggKzQ2
Niw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmplY3Rz
T3JpZ2luYWxTdHlsZSgpCiAgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gY29uc3RfY2Fz
dDxSZW5kZXJPYmplY3QqPihvYmplY3RQYWlyLmtleSk7CiAgICAgICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gb2JqZWN0UmVnaW9uU3R5bGUgPSAmb2JqZWN0LT5zdHlsZSgpOwogICAgICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSBvYmplY3RQYWlyLnZhbHVlLnN0
eWxlOwotICAgICAgICBpZiAob2JqZWN0LT5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgICAg
IHRvUmVuZGVyRWxlbWVudChvYmplY3QpLT5zZXRTdHlsZUludGVybmFsKCpvYmplY3RPcmlnaW5h
bFN0eWxlKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpKQorICAgICAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKm9iamVjdCkuc2V0U3R5bGVJbnRlcm5hbCgq
b2JqZWN0T3JpZ2luYWxTdHlsZSk7CiAKICAgICAgICAgYm9vbCBzaG91bGRDYWNoZVJlZ2lvblN0
eWxlID0gb2JqZWN0UGFpci52YWx1ZS5jYWNoZWQ7CiAgICAgICAgIGlmICghc2hvdWxkQ2FjaGVS
ZWdpb25TdHlsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApp
bmRleCBlZDg5NWU0MDdlYzM1NzkyMmZkZDkyNjljM2UzMjUxNzJhNjViNWM4Li4zODdjMWM5MjIx
NzhmYjRkMTliYjIyNmM3OTI1MWIzNWNhMzA1NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNTkyLDggKzU5Miw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpjbGVhck5lZWRzTGF5b3V0KCkKICAgICBzZXROZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5
b3V0Qml0KGZhbHNlKTsKICAgICBzZXROb3JtYWxDaGlsZE5lZWRzTGF5b3V0Qml0KGZhbHNlKTsK
ICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dEJpdChmYWxzZSk7Ci0gICAgaWYg
KGlzUmVuZGVyRWxlbWVudCgpKQotICAgICAgICB0b1JlbmRlckVsZW1lbnQodGhpcyktPnNldEFu
Y2VzdG9yTGluZUJveERpcnR5KGZhbHNlKTsKKyAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKnRo
aXMpKQorICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGhpcykuc2V0QW5jZXN0b3JM
aW5lQm94RGlydHkoZmFsc2UpOwogI2lmbmRlZiBOREVCVUcKICAgICBjaGVja0Jsb2NrUG9zaXRp
b25lZE9iamVjdHNOZWVkTGF5b3V0KCk7CiAjZW5kaWYKQEAgLTIwMjUsNyArMjAyNSw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogCiAgICAgcmVtb3ZlRnJvbVBhcmVu
dCgpOwogCi0gICAgQVNTRVJUKGRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSB8fCAhaXNSZW5kZXJF
bGVtZW50KCkgfHwgIXZpZXcoKS5mcmFtZVZpZXcoKS5oYXNTbG93UmVwYWludE9iamVjdCh0b1Jl
bmRlckVsZW1lbnQodGhpcykpKTsKKyAgICBBU1NFUlQoZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgp
IHx8ICFpczxSZW5kZXJFbGVtZW50PigqdGhpcykgfHwgIXZpZXcoKS5mcmFtZVZpZXcoKS5oYXNT
bG93UmVwYWludE9iamVjdChkb3duY2FzdDxSZW5kZXJFbGVtZW50Pih0aGlzKSkpOwogCiAgICAg
Ly8gVGhlIHJlbW92ZSgpIGNhbGwgYWJvdmUgbWF5IGludm9rZSBheE9iamVjdENhY2hlKCktPmNo
aWxkcmVuQ2hhbmdlZCgpIG9uIHRoZSBwYXJlbnQsIHdoaWNoIG1heSByZXF1aXJlIHRoZSBBWCBy
ZW5kZXIKICAgICAvLyBvYmplY3QgZm9yIHRoaXMgcmVuZGVyZXIuIFNvIHdlIHJlbW92ZSB0aGUg
QVggcmVuZGVyIG9iamVjdCBub3csIGFmdGVyIHRoZSByZW5kZXJlciBpcyByZW1vdmVkLgpAQCAt
MjM1NiwxMiArMjM1NiwxMiBAQCB2b2lkIFJlbmRlck9iamVjdDo6Y29sbGVjdEFubm90YXRlZFJl
Z2lvbnMoVmVjdG9yPEFubm90YXRlZFJlZ2lvblZhbHVlPiYgcmVnaW9ucwogewogICAgIC8vIFJl
bmRlclRleHRzIGRvbid0IGhhdmUgdGhlaXIgb3duIHN0eWxlLCB0aGV5IGp1c3QgdXNlIHRoZWly
IHBhcmVudCdzIHN0eWxlLAogICAgIC8vIHNvIHdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGVt
LgotICAgIGlmIChpc1RleHQoKSkKKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKnRoaXMpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhZGRBbm5vdGF0ZWRSZWdpb25zKHJlZ2lvbnMpOwotICAgIGZv
ciAoUmVuZGVyT2JqZWN0KiBjdXJyID0gdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5maXJzdENoaWxk
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2libGluZygpKQotICAgICAgICBjdXJyLT5jb2xs
ZWN0QW5ub3RhdGVkUmVnaW9ucyhyZWdpb25zKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogY3Vy
cmVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0aGlzKS5maXJzdENoaWxkKCk7IGN1cnJl
bnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKQorICAgICAgICBjdXJyZW50LT5j
b2xsZWN0QW5ub3RhdGVkUmVnaW9ucyhyZWdpb25zKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCmluZGV4IDRjY2ZiMzRhOThhMDEyMjFmNjA1
MDg0YWE5NWUzODM3NjkyZWE4YjAuLmQ0M2Y5OTZmN2JmNGM2ODM0YjJlMWVlN2ExYmFkMWEyNDEy
MDE0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCkBAIC03
NywxMCArNzcsMTAgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0
ZXJzKElubGluZUZsb3dCb3gqJiBmaXJzdExpbmVCb3gsIExheW8KIAogICAgIC8vIGZpcnN0Q2hp
bGQoKSByZXR1cm5zIHRoZSB3cmFwcGluZyAoYmFja2Ryb3ApIDxkaXY+LiBUaGUgY3VlIG9iamVj
dCBpcwogICAgIC8vIHRoZSA8ZGl2PidzIGZpcnN0IGNoaWxkLgotICAgIFJlbmRlck9iamVjdCog
Zmlyc3RDaGlsZCA9IHRoaXMtPmZpcnN0Q2hpbGQoKTsKLSAgICBSZW5kZXJFbGVtZW50KiBiYWNr
ZHJvcEVsZW1lbnQgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCk7CisgICAgUmVuZGVyT2Jq
ZWN0JiBmaXJzdENoaWxkID0gKnRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICBSZW5kZXJFbGVtZW50
JiBiYWNrZHJvcEVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKTsK
ICAgICAKLSAgICBmaXJzdExpbmVCb3ggPSB0b1JlbmRlcklubGluZShiYWNrZHJvcEVsZW1lbnQt
PmZpcnN0Q2hpbGQoKSktPmZpcnN0TGluZUJveCgpOworICAgIGZpcnN0TGluZUJveCA9IGRvd25j
YXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5maXJzdENoaWxkKCkpLmZpcnN0TGlu
ZUJveCgpOwogICAgIGlmICghZmlyc3RMaW5lQm94KQogICAgICAgICBmaXJzdExpbmVCb3ggPSB0
aGlzLT5maXJzdFJvb3RCb3goKTsKIApAQCAtMzQzLDEwICszNDMsMTAgQEAgdm9pZCBSZW5kZXJW
VFRDdWU6OnJlcG9zaXRpb25HZW5lcmljQ3VlKCkKIAogICAgIC8vIGZpcnN0Q2hpbGQoKSByZXR1
cm5zIHRoZSB3cmFwcGluZyAoYmFja2Ryb3ApIDxkaXY+LiBUaGUgY3VlIG9iamVjdCBpcwogICAg
IC8vIHRoZSA8ZGl2PidzIGZpcnN0IGNoaWxkLgotICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGls
ZCA9IHRoaXMtPmZpcnN0Q2hpbGQoKTsKLSAgICBSZW5kZXJFbGVtZW50KiBiYWNrZHJvcEVsZW1l
bnQgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCk7CisgICAgUmVuZGVyT2JqZWN0JiBmaXJz
dENoaWxkID0gKnRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICBSZW5kZXJFbGVtZW50JiBiYWNrZHJv
cEVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKTsKICAgICAKLSAg
ICBJbmxpbmVGbG93Qm94KiBmaXJzdExpbmVCb3ggPSB0b1JlbmRlcklubGluZShiYWNrZHJvcEVs
ZW1lbnQtPmZpcnN0Q2hpbGQoKSktPmZpcnN0TGluZUJveCgpOworICAgIElubGluZUZsb3dCb3gq
IGZpcnN0TGluZUJveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5m
aXJzdENoaWxkKCkpLmZpcnN0TGluZUJveCgpOwogICAgIGlmIChzdGF0aWNfY2FzdDxUZXh0VHJh
Y2tDdWVHZW5lcmljKj4obV9jdWUpLT51c2VEZWZhdWx0UG9zaXRpb24oKSAmJiBmaXJzdExpbmVC
b3gpIHsKICAgICAgICAgTGF5b3V0VW5pdCBwYXJlbnRXaWR0aCA9IGNvbnRhaW5pbmdCbG9jaygp
LT5sb2dpY2FsV2lkdGgoKTsKICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aCA9IGZpcnN0TGluZUJv
eC0+d2lkdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggYjVlZjI3ZmVkMzYzNThhMTM5YjUxMTNi
ZWU5NDgwYzFmZTFkMjhkYS4uNWNkM2E2MDM5NjMyM2YxOGRlZjMwNzIzNGI3ZWIyNzFlZThiMDAz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTEwMCw5ICsxMDAsOSBAQCB2b2lkIFJlbmRlck1hdGhN
TEZyYWN0aW9uOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIC8q
IGJlZm9yZQogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RDaGlsZCgpLT5pc0VtcHR5KCkpCi0g
ICAgICAgIHRvUmVuZGVyRWxlbWVudChmaXJzdENoaWxkKCkpLT5hZGRDaGlsZChjaGlsZCk7Cisg
ICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpmaXJzdENoaWxkKCkpLmFkZENoaWxkKGNo
aWxkKTsKICAgICBlbHNlCi0gICAgICAgIHRvUmVuZGVyRWxlbWVudChsYXN0Q2hpbGQoKSktPmFk
ZENoaWxkKGNoaWxkKTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmxhc3RDaGls
ZCgpKS5hZGRDaGlsZChjaGlsZCk7CiAgICAgCiAgICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNZW5jbG9zZS5jcHAKaW5kZXggYTI2YWM0OGNlODg4NTRkMWFkZmQxZjdiMjNkZjZhN2E5Y2E2
ZThhYy4uZjVjYWFlNzkwY2NmMzJkNmFhODZmZGE0Nzc3Zjk2MDc0ZWQyMjg2ZSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5j
bG9zZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6YWRk
Q2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmUKICAgICAK
ICAgICBpZiAobmV3Q2hpbGQpIHsKICAgICAgICAgaWYgKGZpcnN0Q2hpbGQoKSAmJiBtZW5jbG9z
ZS0+aXNSYWRpY2FsKCkpCi0gICAgICAgICAgICB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgp
KS0+YWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQo
KSA9PSBmaXJzdENoaWxkKCkgPyBiZWZvcmVDaGlsZCA6IG51bGxwdHIpOworICAgICAgICAgICAg
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmZpcnN0Q2hpbGQoKSkuYWRkQ2hpbGQobmV3Q2hpbGQs
IGJlZm9yZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKSA9PSBmaXJzdENoaWxkKCkgPyBi
ZWZvcmVDaGlsZCA6IG51bGxwdHIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSZW5kZXJN
YXRoTUxCbG9jazo6YWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuY3BwCmluZGV4IGNjYWUyYjk0YzRhMmZjZWRjNTA4NmFjNmEyNGFkMTRmOThiYWM4Njgu
LmM1NDEzMzBlOGQ1OWY0OGNiYjJmNWMxODk1OWFhMzZkZWU1MjhiMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwCkBAIC0xMzc5LDEwICsxMzc5LDEwIEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnJl
YnVpbGRUb2tlbkNvbnRlbnQoY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZykKICAgICAvLyBX
ZSBkZXN0cm95IHRoZSB3cmFwcGVyIGFuZCByZWJ1aWxkIGl0LgogICAgIC8vIEZJWE1FOiBVc2lu
ZyB0aGlzIFJlbmRlclRleHQgbWFrZSB0aGUgdGV4dCBpbmFjY2Vzc2libGUgdG8gdGhlIGR1bXBB
c1RleHQvc2VsZWN0aW9uIGNvZGUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjU1OTcpLgogICAgIGlmIChmaXJzdENoaWxkKCkpCi0gICAgICAgIHRvUmVuZGVyRWxl
bWVudChmaXJzdENoaWxkKCkpLT5kZXN0cm95KCk7CisgICAgICAgIGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KCpmaXJzdENoaWxkKCkpLmRlc3Ryb3koKTsKICAgICBjcmVhdGVXcmFwcGVySWZOZWVk
ZWQoKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyVGV4dD4gdGV4dCA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclRleHQ+KGRvY3VtZW50KCksIHRleHRDb250ZW50KTsKLSAgICB0b1JlbmRlckVsZW1lbnQo
Zmlyc3RDaGlsZCgpKS0+YWRkQ2hpbGQodGV4dC5sZWFrUHRyKCkpOworICAgIGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KCpmaXJzdENoaWxkKCkpLmFkZENoaWxkKHRleHQubGVha1B0cigpKTsKIAog
ICAgIC8vIFdlIHZlcmlmeSB3aGV0aGVyIHRoZSBvcGVyYXRvciB0ZXh0IGNhbiBiZSByZXByZXNl
bnRlZCBieSBhIHNpbmdsZSBVQ2hhci4KICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBoYW5k
bGUgc3Vycm9nYXRlIHBhaXJzIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyMjk2KS4KQEAgLTE2NTQsNyArMTY1NCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0
b3I6OnVwZGF0ZVN0eWxlKCkKICAgICAvLyBXZSBhZGQgc3BhY2luZyBhcm91bmQgdGhlIG9wZXJh
dG9yLgogICAgIC8vIEZJWE1FOiBUaGUgc3BhY2luZyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHdo
b2xlIGVtYmVsbGlzaGVkIG9wZXJhdG9yIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI0ODMxKS4KICAgICAvLyBGSVhNRTogVGhlIHNwYWNpbmcgc2hvdWxkIG9ubHkg
YmUgYWRkZWQgaW5zaWRlIChwZXJoYXBzIGluZmVycmVkKSBtcm93IChodHRwOi8vd3d3LnczLm9y
Zy9UUi9NYXRoTUwvY2hhcHRlcjMuaHRtbCNwcmVzbS5vcHNwYWNpbmcpLgotICAgIGNvbnN0IGF1
dG8mIHdyYXBwZXIgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgpKTsKKyAgICBjb25zdCBh
dXRvJiB3cmFwcGVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RDaGlsZCgpKTsKICAg
ICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoJnN0eWxlKCksIEZMRVgpOwogICAgIG5ld1N0eWxlLmdldCgpLnNldE1hcmdpblN0YXJ0
KExlbmd0aChtX2xlYWRpbmdTcGFjZSwgRml4ZWQpKTsKICAgICBuZXdTdHlsZS5nZXQoKS5zZXRN
YXJnaW5FbmQoTGVuZ3RoKG1fdHJhaWxpbmdTcGFjZSwgRml4ZWQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCmluZGV4IGI2
M2FjZjQxMWNjYWQzNWIzMDg2NTFlMTkwOTNjMmEwNTY3MDdiZWMuLmVkMjA5YWQxYTY4ZTA2NDdk
ZjU0OTg4ZTYzMDdmZDA4MTI1YTJiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApAQCAtMTU4LDE4ICsxNTgsMTggQEAg
dm9pZCBSZW5kZXJNYXRoTUxSb290OjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWwKICAgICBhdXRvIGluZGV4ID0gaW5kZXhXcmFwcGVyKCk7
CiAgICAgUmVuZGVyRWxlbWVudCogYWN0dWFsUGFyZW50OwogICAgIFJlbmRlckVsZW1lbnQqIGFj
dHVhbEJlZm9yZUNoaWxkOwotICAgIGlmIChpc1JlbmRlck1hdGhNTFNxdWFyZVJvb3QoKSkgewor
ICAgIGlmIChpczxSZW5kZXJNYXRoTUxTcXVhcmVSb290PigqdGhpcykpIHsKICAgICAgICAgLy8g
Rm9yIHNxdWFyZSByb290LCB3ZSBhbHdheXMgaW5zZXJ0IHRoZSBjaGlsZCBpbnRvIHRoZSBiYXNl
IHdyYXBwZXIuCiAgICAgICAgIGFjdHVhbFBhcmVudCA9IGJhc2U7CiAgICAgICAgIGlmIChiZWZv
cmVDaGlsZCAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCkgPT0gYmFzZSkKLSAgICAgICAgICAgIGFj
dHVhbEJlZm9yZUNoaWxkID0gdG9SZW5kZXJFbGVtZW50KGJlZm9yZUNoaWxkKTsKKyAgICAgICAg
ICAgIGFjdHVhbEJlZm9yZUNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oYmVmb3JlQ2hp
bGQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhY3R1YWxCZWZvcmVDaGlsZCA9IG51bGxw
dHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRm9yIG1yb290LCB3ZSBpbnNlcnQgdGhlIGNo
aWxkIGludG8gdGhlIHBhcmVudCBvZiBiZWZvcmVDaGlsZCwgb3IgYXQgdGhlIGVuZCBvZiB0aGUg
aW5kZXguIFRoZSB3cmFwcGVyIHN0cnVjdHVyZSBpcyByZW9yZ2FuaXplIGJlbG93LgogICAgICAg
ICBhY3R1YWxQYXJlbnQgPSBiZWZvcmVDaGlsZCA/IGJlZm9yZUNoaWxkLT5wYXJlbnQoKSA6IG51
bGxwdHI7CiAgICAgICAgIGlmIChhY3R1YWxQYXJlbnQgPT0gYmFzZSB8fCBhY3R1YWxQYXJlbnQg
PT0gaW5kZXgpCi0gICAgICAgICAgICBhY3R1YWxCZWZvcmVDaGlsZCA9IHRvUmVuZGVyRWxlbWVu
dChiZWZvcmVDaGlsZCk7CisgICAgICAgICAgICBhY3R1YWxCZWZvcmVDaGlsZCA9IGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KGJlZm9yZUNoaWxkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBhY3R1YWxQYXJlbnQgPSBpbmRleDsKICAgICAgICAgICAgIGFjdHVhbEJlZm9yZUNoaWxkID0g
bnVsbHB0cjsKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OmxheW91
dCgpCiAgICAgLy8gV2UgbGF5b3V0IHRoZSBjaGlsZHJlbi4KICAgICBmb3IgKFJlbmRlck9iamVj
dCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgIHRv
UmVuZGVyRWxlbWVudChjaGlsZCktPmxheW91dCgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlvdXQoKTsKICAgICB9CiAKICAgICBhdXRvIHJhZGljYWwg
PSByYWRpY2FsT3BlcmF0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXggZGM0YmE1NzZhYjYzZjMwZDkzYmE3
ZGVmZDhjMjVlMzMwODMxYmEwNi4uOTlhNWViMTQwOGQzOTcyNTJmNDgzMGY4NDNlNmVkM2Q4ODli
Njk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVuZGVyTWF0aE1MVG9rZW46OlJl
bmRlck1hdGhNTFRva2VuKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3QKIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OmFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAgY3JlYXRlV3JhcHBlcklmTmVl
ZGVkKCk7Ci0gICAgdG9SZW5kZXJFbGVtZW50KGZpcnN0Q2hpbGQoKSktPmFkZENoaWxkKG5ld0No
aWxkLCBiZWZvcmVDaGlsZCk7CisgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmZpcnN0Q2hp
bGQoKSkuYWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkKTsKIH0KIAogdm9pZCBSZW5kZXJN
YXRoTUxUb2tlbjo6Y3JlYXRlV3JhcHBlcklmTmVlZGVkKCkKQEAgLTY5LDggKzY5LDggQEAgdm9p
ZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlVG9rZW5Db250ZW50KCkKICAgICAgICAgLy8gVGhl
IHJlbmRlcmVycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjaGlsZHJlbiBvZiB0aGUgdG9rZW4gZWxl
bWVudCBhcmUgd3JhcHBlZCBpbnNpZGUgYW4gYW5vbnltb3VzIFJlbmRlck1hdGhNTEJsb2NrLgog
ICAgICAgICAvLyBXaGVuIG9uZSBvZiB0aGVzZSByZW5kZXJlcnMgaXMgYSBSZW5kZXJFbGVtZW50
LCB3ZSBoYW5kbGUgdGhlIFJlbmRlck1hdGhNTFRva2VuIGRpZmZlcmVudGx5LgogICAgICAgICAv
LyBGb3Igc29tZSByZWFzb24sIGFuIGFkZGl0aW9uYWwgYW5vbnltb3VzIFJlbmRlckJsb2NrIGlz
IGNyZWF0ZWQgYXMgYSBjaGlsZCBvZiB0aGUgUmVuZGVyTWF0aE1MVG9rZW4gYW5kIHRoZSByZW5k
ZXJlcnMgYXJlIGFjdHVhbGx5IGluc2VydGVkIGludG8gdGhhdCBSZW5kZXJCbG9jayBzbyB3ZSBu
ZWVkIHRvIGRpZyBkb3duIG9uZSBhZGRpdGlvbmFsIGxldmVsIGhlcmUuCi0gICAgICAgIGNvbnN0
IGF1dG8mIHdyYXBwZXIgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgpKTsKLSAgICAgICAg
aWYgKGNvbnN0IGF1dG8mIGJsb2NrID0gdG9SZW5kZXJFbGVtZW50KHdyYXBwZXItPmZpcnN0Q2hp
bGQoKSkpCisgICAgICAgIGNvbnN0IGF1dG8mIHdyYXBwZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PihmaXJzdENoaWxkKCkpOworICAgICAgICBpZiAoY29uc3QgYXV0byYgYmxvY2sgPSBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50Pih3cmFwcGVyLT5maXJzdENoaWxkKCkpKQogICAgICAgICAgICAg
bV9jb250YWluc0VsZW1lbnQgPSBjaGlsZHJlbk9mVHlwZTxSZW5kZXJFbGVtZW50PigqYmxvY2sp
LmZpcnN0KCk7CiAgICAgICAgIHVwZGF0ZVN0eWxlKCk7CiAgICAgfQpAQCAtODEsNyArODEsNyBA
QCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVTdHlsZSgpCiB7CiAgICAgY29uc3QgYXV0
byYgdG9rZW5FbGVtZW50ID0gZWxlbWVudCgpOwogCi0gICAgY29uc3QgYXV0byYgd3JhcHBlciA9
IHRvUmVuZGVyRWxlbWVudChmaXJzdENoaWxkKCkpOworICAgIGNvbnN0IGF1dG8mIHdyYXBwZXIg
PSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKCkpOwogICAgIGF1dG8gbmV3U3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUo
KSwgRkxFWCk7CiAKICAgICBpZiAodG9rZW5FbGVtZW50Lmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1pVGFnKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCmluZGV4IDU0YWRlNWZlNjYzMTg3YTQ1NGJiYTVm
Y2I0NjQ0MzlhMDJlYWY3NjYuLjgxZGI3YjVlMmNlYWJmMjVmNWMyYzFlMzBmNjUxZDYyNzM1MDk3
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBSZW5kZXJNYXRo
TUxVbmRlck92ZXI6OmxheW91dCgpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICB0b1JlbmRlckVsZW1lbnQoY2hpbGQpLT5sYXlvdXQoKTsKKyAgICAgICAg
ICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkubGF5b3V0KCk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBTa2lwcGluZyB0aGUgZW1iZWxsaXNoZWQgb3AgZG9lcyBub3Qgd29yayBm
b3IgbmVzdGVkIHN0cnVjdHVyZXMgbGlrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAppbmRleCA3NWI3YzBjNzJiZDc2MzE4ODcwYTY3
YTlmYjE1NjU1ZGNkOTQ3ZmM5Li4xMTFkYzU3NzFhN2Q5ZTVmODkxYWM5OTYyNmZkZjYzN2M4Nzhi
ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlLmNwcApAQCAtMTg1LDE3ICsxODUsMTcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKFJlbmRlck9iamVjdCYK
ICAgICBpZiAobmVlZHNMYXlvdXQgJiYgIW9iamVjdC5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkp
CiAgICAgICAgIG9iamVjdC5zZXROZWVkc0xheW91dCgpOwogCi0gICAgaWYgKG9iamVjdC5pc1Jl
bmRlckVsZW1lbnQoKSkKLSAgICAgICAgcmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVu
ZGVuY2llcyh0b1JlbmRlckVsZW1lbnQob2JqZWN0KSwgbmVlZHNMYXlvdXQpOworICAgIGlmIChp
czxSZW5kZXJFbGVtZW50PihvYmplY3QpKQorICAgICAgICByZW1vdmVGcm9tQ2FjaGVBbmRJbnZh
bGlkYXRlRGVwZW5kZW5jaWVzKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG9iamVjdCksIG5lZWRz
TGF5b3V0KTsKIAogICAgIC8vIEludmFsaWRhdGUgcmVzb3VyY2VzIGluIGFuY2VzdG9yIGNoYWlu
LCBpZiBuZWVkZWQuCiAgICAgYXV0byBjdXJyZW50ID0gb2JqZWN0LnBhcmVudCgpOwogICAgIHdo
aWxlIChjdXJyZW50KSB7CiAgICAgICAgIHJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBl
bmRlbmNpZXMoKmN1cnJlbnQsIG5lZWRzTGF5b3V0KTsKIAotICAgICAgICBpZiAoY3VycmVudC0+
aXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcj4oKmN1cnJlbnQpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcHJv
Y2VzcyB0aGUgcmVzdCBvZiB0aGUgYW5jZXN0b3JzLgotICAgICAgICAgICAgdG9SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lcigqY3VycmVudCkucmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZSgpOwor
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI+KCpjdXJyZW50
KS5yZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cAppbmRleCA4ZTc1OTA2YzU1MTY3YmZjMmJkMDllMzZlMmRjZGY0Yzc1MjZkMzkyLi45MTg5MjU3
MDk0YjRkYmE2NzY4NWZkM2Y1YzNkZThlYjkxZmM0MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTEyNywxNSArMTI3LDE1IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBmaW5kUHJldmlvdXNBbmROZXh0QXR0cmlidXRlcyhSZW5kZXJFbGVt
ZW50KiBzdGFydCwgUmVuZGVyU1ZHCiAgICAgQVNTRVJUKGxvY2F0ZUVsZW1lbnQpOwogICAgIC8v
IEZJWE1FOiBNYWtlIHRoaXMgaXRlcmF0aXZlLgogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IHN0YXJ0LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNTVkdJbmxpbmVUZXh0KCkpIHsKLSAgICAgICAg
ICAgIFJlbmRlclNWR0lubGluZVRleHQqIHRleHQgPSB0b1JlbmRlclNWR0lubGluZVRleHQoY2hp
bGQpOwotICAgICAgICAgICAgaWYgKGxvY2F0ZUVsZW1lbnQgIT0gdGV4dCkgeworICAgICAgICBp
ZiAoaXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmNoaWxkKSkgeworICAgICAgICAgICAgUmVuZGVy
U1ZHSW5saW5lVGV4dCYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KCpjaGls
ZCk7CisgICAgICAgICAgICBpZiAobG9jYXRlRWxlbWVudCAhPSAmdGV4dCkgewogICAgICAgICAg
ICAgICAgIGlmIChzdG9wQWZ0ZXJOZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHQgPSB0
ZXh0LT5sYXlvdXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgICAgIG5leHQgPSB0ZXh0
LmxheW91dEF0dHJpYnV0ZXMoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHJldmlvdXMgPSB0ZXh0LT5sYXlv
dXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSB0ZXh0LmxheW91dEF0
dHJpYnV0ZXMoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApA
QCAtMTQzLDEwICsxNDMsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGZpbmRQcmV2aW91c0FuZE5l
eHRBdHRyaWJ1dGVzKFJlbmRlckVsZW1lbnQqIHN0YXJ0LCBSZW5kZXJTVkcKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFjaGlsZC0+aXNTVkdJbmxpbmUo
KSkKKyAgICAgICAgaWYgKCFpczxSZW5kZXJTVkdJbmxpbmU+KCpjaGlsZCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBpZiAoZmluZFByZXZpb3VzQW5kTmV4dEF0dHJpYnV0ZXMo
dG9SZW5kZXJFbGVtZW50KGNoaWxkKSwgbG9jYXRlRWxlbWVudCwgc3RvcEFmdGVyTmV4dCwgcHJl
dmlvdXMsIG5leHQpKQorICAgICAgICBpZiAoZmluZFByZXZpb3VzQW5kTmV4dEF0dHJpYnV0ZXMo
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGQpLCBsb2NhdGVFbGVtZW50LCBzdG9wQWZ0ZXJO
ZXh0LCBwcmV2aW91cywgbmV4dCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTI5Niw4ICsyOTYsOCBAQCB2b2lkIFJlbmRlclNWR1RleHQ6OnN1YnRyZWVTdHlsZURpZENo
YW5nZShSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0KQogICAgIC8vIG5vciB0aGUgbGF5b3V0IGF0
dHJpYnV0ZXMgY2FjaGVkIGluIHRoZSBsZWFmICN0ZXh0IHJlbmRlcmVycy4KICAgICBGb250Q2Fj
aGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJnZVByZXZlbnRlcjsKICAgICBmb3IgKFJlbmRl
ck9iamVjdCogZGVzY2VuZGFudCA9IHRleHQ7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNj
ZW5kYW50LT5uZXh0SW5QcmVPcmRlcih0ZXh0KSkgewotICAgICAgICBpZiAoZGVzY2VuZGFudC0+
aXNTVkdJbmxpbmVUZXh0KCkpCi0gICAgICAgICAgICBtX2xheW91dEF0dHJpYnV0ZXNCdWlsZGVy
LnJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKHRvUmVuZGVyU1ZHSW5saW5lVGV4dChkZXNj
ZW5kYW50KSk7CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdJbmxpbmVUZXh0PigqZGVzY2VuZGFu
dCkpCisgICAgICAgICAgICBtX2xheW91dEF0dHJpYnV0ZXNCdWlsZGVyLnJlYnVpbGRNZXRyaWNz
Rm9yVGV4dFJlbmRlcmVyKGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KCpkZXNjZW5kYW50
KSk7CiAgICAgfQogfQogCkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHVw
ZGF0ZUZvbnRJbkFsbERlc2NlbmRhbnRzKFJlbmRlck9iamVjdCogc3RhcnQsIFNWR1RleHRMYXlv
dXQKICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCA9IHRvUmVuZGVyU1ZHSW5saW5l
VGV4dCgqZGVzY2VuZGFudCk7CiAgICAgICAgIHRleHQudXBkYXRlU2NhbGVkRm9udCgpOwogICAg
ICAgICBpZiAoYnVpbGRlcikKLSAgICAgICAgICAgIGJ1aWxkZXItPnJlYnVpbGRNZXRyaWNzRm9y
VGV4dFJlbmRlcmVyKCZ0ZXh0KTsKKyAgICAgICAgICAgIGJ1aWxkZXItPnJlYnVpbGRNZXRyaWNz
Rm9yVGV4dFJlbmRlcmVyKHRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggM2M0ODNhMzg0ZDYwMWM0
Yzk0NTViZjZhNDBjMWM2MDVmZTU5YmZiMS4uYmI1MmVmMmQ3ZjY3MTE1ZWY2Mzc0Y2IxYTdkNGFl
YjVjMjVlOTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclN1cHBvcnQuY3BwCkBAIC0yNDYsMjEgKzI0NiwyMSBAQCB2b2lkIFNWR1JlbmRlclN1cHBv
cnQ6OmxheW91dENoaWxkcmVuKFJlbmRlckVsZW1lbnQmIHN0YXJ0LCBib29sIHNlbGZOZWVkc0xh
eW91dAogCiAgICAgICAgIGlmICh0cmFuc2Zvcm1DaGFuZ2VkKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGUgdHJhbnNmb3JtIGNoYW5nZWQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHRleHQgbWV0cmlj
cyAobm90ZTogdGhpcyBhbHNvIGhhcHBlbnMgZm9yIGxheW91dFNpemVDaGFuZ2VkPXRydWUpLgot
ICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1NWR1RleHQoKSkKLSAgICAgICAgICAgICAgICB0b1Jl
bmRlclNWR1RleHQoY2hpbGQpLT5zZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCk7CisgICAgICAg
ICAgICBpZiAoaXM8UmVuZGVyU1ZHVGV4dD4oKmNoaWxkKSkKKyAgICAgICAgICAgICAgICBkb3du
Y2FzdDxSZW5kZXJTVkdUZXh0PigqY2hpbGQpLnNldE5lZWRzVGV4dE1ldHJpY3NVcGRhdGUoKTsK
ICAgICAgICAgICAgIG5lZWRzTGF5b3V0ID0gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChsYXlvdXRTaXplQ2hhbmdlZCkgewogICAgICAgICAgICAgLy8gV2hlbiBzZWxmTmVlZHNMYXlv
dXQgaXMgZmFsc2UgYW5kIHRoZSBsYXlvdXQgc2l6ZSBjaGFuZ2VkLCB3ZSBoYXZlIHRvIGNoZWNr
IHdoZXRoZXIgdGhpcyBjaGlsZCB1c2VzIHJlbGF0aXZlIGxlbmd0aHMKLSAgICAgICAgICAgIGlm
IChTVkdFbGVtZW50KiBlbGVtZW50ID0gY2hpbGQtPm5vZGUoKS0+aXNTVkdFbGVtZW50KCkgPyBk
b3duY2FzdDxTVkdFbGVtZW50PihjaGlsZC0+bm9kZSgpKSA6IG51bGxwdHIpIHsKKyAgICAgICAg
ICAgIGlmIChTVkdFbGVtZW50KiBlbGVtZW50ID0gaXM8U1ZHRWxlbWVudD4oKmNoaWxkLT5ub2Rl
KCkpID8gZG93bmNhc3Q8U1ZHRWxlbWVudD4oY2hpbGQtPm5vZGUoKSkgOiBudWxscHRyKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1JlbGF0aXZlTGVuZ3RocygpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGxheW91dCBzaXplIGNoYW5nZWQgYW5kIHdoZW4g
dXNpbmcgcmVsYXRpdmUgdmFsdWVzIHRlbGwgdGhlIFJlbmRlclNWR1NoYXBlIHRvIHVwZGF0ZSBp
dHMgc2hhcGUgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNTVkdTaGFw
ZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJTVkdTaGFwZShjaGlsZCktPnNl
dE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQt
PmlzU1ZHVGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b1JlbmRlclNWR1RleHQo
Y2hpbGQpLT5zZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0b1JlbmRlclNWR1RleHQoY2hpbGQpLT5zZXROZWVkc1Bvc2l0aW9uaW5nVmFsdWVzVXBk
YXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpczxSZW5kZXJTVkdTaGFwZT4oKmNoaWxk
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1NoYXBlPigqY2hp
bGQpLnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
aXM8UmVuZGVyU1ZHVGV4dD4oKmNoaWxkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZG93
bmNhc3Q8UmVuZGVyU1ZHVGV4dD4oKmNoaWxkKS5zZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdUZXh0PigqY2hpbGQp
LnNldE5lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUoKTsKICAgICAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgICAgIG5lZWRzTGF5b3V0ID0gdHJ1ZTsKQEAgLTI3MiwxNSAr
MjcyLDE1IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bGF5b3V0Q2hpbGRyZW4oUmVuZGVyRWxl
bWVudCYgc3RhcnQsIGJvb2wgc2VsZk5lZWRzTGF5b3V0CiAgICAgICAgICAgICBjaGlsZC0+c2V0
TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKIAogICAgICAgICBpZiAoY2hpbGQtPm5lZWRzTGF5
b3V0KCkpIHsKLSAgICAgICAgICAgIHRvUmVuZGVyRWxlbWVudChjaGlsZCktPmxheW91dCgpOwor
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlvdXQoKTsKICAg
ICAgICAgICAgIC8vIFJlbmRlcmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHJlcGFpbnRpbmcgdGhl
bXNlbHZlcyB3aGVuIGNoYW5naW5nLCBleGNlcHQKICAgICAgICAgICAgIC8vIGZvciB0aGUgaW5p
dGlhbCBwYWludCB0byBhdm9pZCBwb3RlbnRpYWwgZG91YmxlLXBhaW50aW5nIGNhdXNlZCBieSBu
b24tc2Vuc2ljYWwgIm9sZCIgYm91bmRzLgogICAgICAgICAgICAgLy8gV2UgY291bGQgaGFuZGxl
IHRoaXMgaW4gdGhlIGluZGl2aWR1YWwgb2JqZWN0cywgYnV0IGZvciBub3cgaXQncyBlYXNpZXIg
dG8gaGF2ZQogICAgICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lcnMgY2FsbCByZXBhaW50KCku
ICAoUmVuZGVyQmxvY2s6OmxheW91dCogaGFzIHNpbWlsYXIgbG9naWMuKQogICAgICAgICAgICAg
aWYgKCFjaGlsZEV2ZXJIYWRMYXlvdXQpCiAgICAgICAgICAgICAgICAgY2hpbGQtPnJlcGFpbnQo
KTsKLSAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRTaXplQ2hhbmdlZCAmJiBjaGlsZC0+aXNSZW5k
ZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBlbGVtZW50c1RoYXREaWROb3RSZWNlaXZlTGF5b3V0
LmFkZCh0b1JlbmRlckVsZW1lbnQoY2hpbGQpKTsKKyAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRT
aXplQ2hhbmdlZCAmJiBpczxSZW5kZXJFbGVtZW50PigqY2hpbGQpKQorICAgICAgICAgICAgZWxl
bWVudHNUaGF0RGlkTm90UmVjZWl2ZUxheW91dC5hZGQoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4o
Y2hpbGQpKTsKIAogICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0Nh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUu
Y3BwCmluZGV4IGE5NTBjNDBjZGY4ZTRjODY5YWVkOWExZjAwZWEwOWMzNTQ3ZjcyMmIuLjg1NTZl
Y2RlMjYyZjIxMjQ4NWRlMjJjZWVhODk0YWQ3OTFlYWRiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2FzQWRkZWRUb1RyZWUoUmVuZGVy
T2JqZWN0JiByZW5kZXJlcikKIAogICAgIGlmICghcmVuZGVyZXJDYW5IYXZlUmVzb3VyY2VzKHJl
bmRlcmVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlckVsZW1lbnQmIGVsZW1lbnRSZW5k
ZXJlciA9IHRvUmVuZGVyRWxlbWVudChyZW5kZXJlcik7CisgICAgUmVuZGVyRWxlbWVudCYgZWxl
bWVudFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpOwogICAgIHJl
c291cmNlc0NhY2hlRnJvbVJlbmRlcmVyKGVsZW1lbnRSZW5kZXJlcikuYWRkUmVzb3VyY2VzRnJv
bVJlbmRlcmVyKGVsZW1lbnRSZW5kZXJlciwgZWxlbWVudFJlbmRlcmVyLnN0eWxlKCkpOwogfQog
CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2lsbEJl
UmVtb3ZlZEZyb21UcmVlKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiAKICAgICBpZiAoIXJlbmRl
cmVyQ2FuSGF2ZVJlc291cmNlcyhyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKLSAgICBSZW5k
ZXJFbGVtZW50JiBlbGVtZW50UmVuZGVyZXIgPSB0b1JlbmRlckVsZW1lbnQocmVuZGVyZXIpOwor
ICAgIFJlbmRlckVsZW1lbnQmIGVsZW1lbnRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1l
bnQ+KHJlbmRlcmVyKTsKICAgICByZXNvdXJjZXNDYWNoZUZyb21SZW5kZXJlcihlbGVtZW50UmVu
ZGVyZXIpLnJlbW92ZVJlc291cmNlc0Zyb21SZW5kZXJlcihlbGVtZW50UmVuZGVyZXIpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKaW5kZXggNDY3YzIxNTgxYjIxZDUxNTA1Zjcy
YjU2NmFhNDVhYmM0OGM0ZWU5YS4uMTZlMjdjYzFmODE3OWJmZWI5NzFlMmU0MDc2ZWU4ZDQ5ODhh
MTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2
b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVz
Rm9yVGV4dFJlbmRlcmVyKFJlbmRlcgogICAgICAgICBidWlsZENoYXJhY3RlckRhdGFNYXAoKnRl
eHRSb290KTsKICAgICB9CiAKLSAgICBtX21ldHJpY3NCdWlsZGVyLmJ1aWxkTWV0cmljc0FuZExh
eW91dEF0dHJpYnV0ZXModGV4dFJvb3QsICZ0ZXh0LCBtX2NoYXJhY3RlckRhdGFNYXApOworICAg
IG1fbWV0cmljc0J1aWxkZXIuYnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRlcygqdGV4dFJv
b3QsICZ0ZXh0LCBtX2NoYXJhY3RlckRhdGFNYXApOwogfQogCiBib29sIFNWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZShSZW5k
ZXJTVkdUZXh0JiB0ZXh0Um9vdCkKQEAgLTY4LDEzICs2OCwxMiBAQCBib29sIFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZShS
ZW5kZXJTVgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBidWlsZENoYXJhY3RlckRhdGFN
YXAodGV4dFJvb3QpOwotICAgIG1fbWV0cmljc0J1aWxkZXIuYnVpbGRNZXRyaWNzQW5kTGF5b3V0
QXR0cmlidXRlcygmdGV4dFJvb3QsIG51bGxwdHIsIG1fY2hhcmFjdGVyRGF0YU1hcCk7CisgICAg
bV9tZXRyaWNzQnVpbGRlci5idWlsZE1ldHJpY3NBbmRMYXlvdXRBdHRyaWJ1dGVzKHRleHRSb290
LCBudWxscHRyLCBtX2NoYXJhY3RlckRhdGFNYXApOwogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6cmVidWlsZE1ldHJpY3NGb3JUZXh0
UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCkKK3ZvaWQgU1ZHVGV4dExheW91dEF0
dHJpYnV0ZXNCdWlsZGVyOjpyZWJ1aWxkTWV0cmljc0ZvclRleHRSZW5kZXJlcihSZW5kZXJTVkdJ
bmxpbmVUZXh0JiB0ZXh0KQogewotICAgIEFTU0VSVCh0ZXh0KTsKICAgICBtX21ldHJpY3NCdWls
ZGVyLm1lYXN1cmVUZXh0UmVuZGVyZXIodGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRl
ci5oCmluZGV4IDYxYWZjMWNmNTM3NjhmNjY2Y2Y0OWZiMWRiZmE5YjcxMWZlZGJmNzkuLmRmMzlh
ZjhhMTFhYjA5MmE0Njk0YWExMzQyMjRmYTNkZjc3ZDcxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1
aWxkZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBidWlsZExheW91dEF0
dHJpYnV0ZXNGb3JGb3JTdWJ0cmVlKFJlbmRlclNWR1RleHQmKTsKICAgICB2b2lkIGJ1aWxkTGF5
b3V0QXR0cmlidXRlc0ZvclRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0Jik7CiAKLSAg
ICB2b2lkIHJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQq
KTsKKyAgICB2b2lkIHJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGlu
ZVRleHQmKTsKIAogICAgIC8vIEludm9rZWQgd2hlbmV2ZXIgdGhlIHVuZGVybHlpbmcgRE9NIHRy
ZWUgY2hhbmdlcywgc28gdGhhdCBtX3RleHRQb3NpdGlvbnMgaXMgcmVidWlsZC4KICAgICB2b2lk
IGNsZWFyVGV4dFBvc2l0aW9uaW5nRWxlbWVudHMoKSB7IG1fdGV4dFBvc2l0aW9ucy5jbGVhcigp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzQnVpbGRlci5jcHAKaW5kZXggZTU0MjcyZjQyMmQzYWM0MDg3NTliNmFkNWQ2YjZhNDQ3ZTMy
M2U5NC4uODA4MWViOTllZDNjNzIwMmY0Y2M5ZjQzNGQ5YzE3MjQ4NmJmNTkzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
LmNwcApAQCAtOTEsMTYgKzkxLDE2IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjphZHZh
bmNlQ29tcGxleFRleHQoKQogICAgIG1fdG90YWxXaWR0aCA9IG1fY29tcGxleFN0YXJ0VG9DdXJy
ZW50TWV0cmljcy53aWR0aCgpOwogfQogCi12b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6aW5p
dGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0KiB0
ZXh0KQordm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdp
dGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCkKIHsKLSAgICBtX3RleHQg
PSB0ZXh0OworICAgIG1fdGV4dCA9ICZ0ZXh0OwogICAgIG1fdGV4dFBvc2l0aW9uID0gMDsKICAg
ICBtX2N1cnJlbnRNZXRyaWNzID0gU1ZHVGV4dE1ldHJpY3MoKTsKICAgICBtX2NvbXBsZXhTdGFy
dFRvQ3VycmVudE1ldHJpY3MgPSBTVkdUZXh0TWV0cmljcygpOwogICAgIG1fdG90YWxXaWR0aCA9
IDA7CiAKLSAgICBjb25zdCBGb250JiBzY2FsZWRGb250ID0gdGV4dC0+c2NhbGVkRm9udCgpOwot
ICAgIG1fcnVuID0gU1ZHVGV4dE1ldHJpY3M6OmNvbnN0cnVjdFRleHRSdW4oKnRleHQpOworICAg
IGNvbnN0IEZvbnQmIHNjYWxlZEZvbnQgPSB0ZXh0LnNjYWxlZEZvbnQoKTsKKyAgICBtX3J1biA9
IFNWR1RleHRNZXRyaWNzOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQpOwogICAgIG1faXNDb21wbGV4
VGV4dCA9IHNjYWxlZEZvbnQuY29kZVBhdGgobV9ydW4pID09IEZvbnQ6OkNvbXBsZXg7CiAKICAg
ICBpZiAobV9pc0NvbXBsZXhUZXh0KQpAQCAtMTI2LDExICsxMjYsOSBAQCBzdHJ1Y3QgTWVhc3Vy
ZVRleHREYXRhIHsKICAgICB1bnNpZ25lZCBza2lwcGVkQ2hhcmFjdGVyczsKIH07CiAKLXZvaWQg
U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGlu
ZVRleHQqIHRleHQsIE1lYXN1cmVUZXh0RGF0YSogZGF0YSkKK3ZvaWQgU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQmIHRleHQsIE1l
YXN1cmVUZXh0RGF0YSogZGF0YSkKIHsKLSAgICBBU1NFUlQodGV4dCk7Ci0KLSAgICBTVkdUZXh0
TGF5b3V0QXR0cmlidXRlcyogYXR0cmlidXRlcyA9IHRleHQtPmxheW91dEF0dHJpYnV0ZXMoKTsK
KyAgICBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyogYXR0cmlidXRlcyA9IHRleHQubGF5b3V0QXR0
cmlidXRlcygpOwogICAgIFZlY3RvcjxTVkdUZXh0TWV0cmljcz4qIHRleHRNZXRyaWNzVmFsdWVz
ID0gJmF0dHJpYnV0ZXMtPnRleHRNZXRyaWNzVmFsdWVzKCk7CiAgICAgaWYgKGRhdGEtPnByb2Nl
c3NSZW5kZXJlcikgewogICAgICAgICBpZiAoZGF0YS0+YWxsQ2hhcmFjdGVyc01hcCkKQEAgLTE0
MCw3ICsxMzgsNyBAQCB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5k
ZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0LCBNZWFzdQogICAgIH0KIAogICAgIGluaXRp
YWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIodGV4dCk7Ci0gICAgYm9vbCBwcmVzZXJ2
ZVdoaXRlU3BhY2UgPSB0ZXh0LT5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBQUkU7CisgICAgYm9v
bCBwcmVzZXJ2ZVdoaXRlU3BhY2UgPSB0ZXh0LnN0eWxlKCkud2hpdGVTcGFjZSgpID09IFBSRTsK
ICAgICBpbnQgc3Vycm9nYXRlUGFpckNoYXJhY3RlcnMgPSAwOwogCiAgICAgd2hpbGUgKGFkdmFu
Y2UoKSkgewpAQCAtMTc4LDkgKzE3Niw5IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpt
ZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqIHRleHQsIE1lYXN1CiB2b2lk
IFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6d2Fsa1RyZWUoUmVuZGVyRWxlbWVudCYgc3RhcnQsIFJl
bmRlclNWR0lubGluZVRleHQqIHN0b3BBdExlYWYsIE1lYXN1cmVUZXh0RGF0YSogZGF0YSkKIHsK
ICAgICBmb3IgKGF1dG8gY2hpbGQgPSBzdGFydC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNTVkdJbmxpbmVU
ZXh0KCkpIHsKLSAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQqIHRleHQgPSB0b1JlbmRl
clNWR0lubGluZVRleHQoY2hpbGQpOwotICAgICAgICAgICAgaWYgKHN0b3BBdExlYWYgJiYgc3Rv
cEF0TGVhZiAhPSB0ZXh0KSB7CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdJbmxpbmVUZXh0Pigq
Y2hpbGQpKSB7CisgICAgICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0ID0gZG93bmNh
c3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmNoaWxkKTsKKyAgICAgICAgICAgIGlmIChzdG9wQXRM
ZWFmICYmIHN0b3BBdExlYWYgIT0gJnRleHQpIHsKICAgICAgICAgICAgICAgICBkYXRhLT5wcm9j
ZXNzUmVuZGVyZXIgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBtZWFzdXJlVGV4dFJlbmRlcmVy
KHRleHQsIGRhdGEpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTk0LDMwICsxOTIs
MjcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OndhbGtUcmVlKFJlbmRlckVsZW1lbnQm
IHN0YXJ0LCBSZW5kZXJTVkdJbmxpbmVUZXh0KgogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoIWNoaWxkLT5pc1NWR0lubGluZSgpKQorICAgICAgICBpZiAo
IWlzPFJlbmRlclNWR0lubGluZT4oKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIHdhbGtUcmVlKHRvUmVuZGVyRWxlbWVudCgqY2hpbGQpLCBzdG9wQXRMZWFmLCBkYXRh
KTsKKyAgICAgICAgd2Fsa1RyZWUoZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lPigqY2hpbGQpLCBz
dG9wQXRMZWFmLCBkYXRhKTsKICAgICB9CiB9CiAKLXZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
OjptZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqIHRleHQpCit2b2lkIFNW
R1RleHRNZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVU
ZXh0JiB0ZXh0KQogewotICAgIEFTU0VSVCh0ZXh0KTsKLQotICAgIGF1dG8qIHRleHRSb290ID0g
UmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKCp0ZXh0KTsKKyAgICBh
dXRvKiB0ZXh0Um9vdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rv
cih0ZXh0KTsKICAgICBpZiAoIXRleHRSb290KQogICAgICAgICByZXR1cm47CiAKLSAgICBNZWFz
dXJlVGV4dERhdGEgZGF0YSgwKTsKLSAgICB3YWxrVHJlZSgqdGV4dFJvb3QsIHRleHQsICZkYXRh
KTsKKyAgICBNZWFzdXJlVGV4dERhdGEgZGF0YShudWxscHRyKTsKKyAgICB3YWxrVHJlZSgqdGV4
dFJvb3QsICZ0ZXh0LCAmZGF0YSk7CiB9CiAKLXZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpi
dWlsZE1ldHJpY3NBbmRMYXlvdXRBdHRyaWJ1dGVzKFJlbmRlclNWR1RleHQqIHRleHRSb290LCBS
ZW5kZXJTVkdJbmxpbmVUZXh0KiBzdG9wQXRMZWFmLCBTVkdDaGFyYWN0ZXJEYXRhTWFwJiBhbGxD
aGFyYWN0ZXJzTWFwKQordm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmJ1aWxkTWV0cmljc0Fu
ZExheW91dEF0dHJpYnV0ZXMoUmVuZGVyU1ZHVGV4dCYgdGV4dFJvb3QsIFJlbmRlclNWR0lubGlu
ZVRleHQqIHN0b3BBdExlYWYsIFNWR0NoYXJhY3RlckRhdGFNYXAmIGFsbENoYXJhY3RlcnNNYXAp
CiB7Ci0gICAgQVNTRVJUKHRleHRSb290KTsKICAgICBNZWFzdXJlVGV4dERhdGEgZGF0YSgmYWxs
Q2hhcmFjdGVyc01hcCk7Ci0gICAgd2Fsa1RyZWUoKnRleHRSb290LCBzdG9wQXRMZWFmLCAmZGF0
YSk7CisgICAgd2Fsa1RyZWUodGV4dFJvb3QsIHN0b3BBdExlYWYsICZkYXRhKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1
aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWls
ZGVyLmgKaW5kZXggZTljMmU0NGE3NTdkMjFmYTBmNjljMzUzMTM2MmJkM2Q5MmViN2IxNC4uMDhl
MDdlZWIxOTJiM2IxMDQ1ZWEyMTQzYzdlYjM2ODZiNDViZjY3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5oCkBAIC0zNSw4
ICszNSw4IEBAIGNsYXNzIFNWR1RleHRNZXRyaWNzQnVpbGRlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoU1ZHVGV4dE1ldHJpY3NCdWlsZGVyKTsKIHB1YmxpYzoKICAgICBTVkdUZXh0TWV0
cmljc0J1aWxkZXIoKTsKLSAgICB2b2lkIG1lYXN1cmVUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5s
aW5lVGV4dCopOwotICAgIHZvaWQgYnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRlcyhSZW5k
ZXJTVkdUZXh0KiwgUmVuZGVyU1ZHSW5saW5lVGV4dCogc3RvcEF0TGVhZiwgU1ZHQ2hhcmFjdGVy
RGF0YU1hcCYgYWxsQ2hhcmFjdGVyc01hcCk7CisgICAgdm9pZCBtZWFzdXJlVGV4dFJlbmRlcmVy
KFJlbmRlclNWR0lubGluZVRleHQmKTsKKyAgICB2b2lkIGJ1aWxkTWV0cmljc0FuZExheW91dEF0
dHJpYnV0ZXMoUmVuZGVyU1ZHVGV4dCYsIFJlbmRlclNWR0lubGluZVRleHQqIHN0b3BBdExlYWYs
IFNWR0NoYXJhY3RlckRhdGFNYXAmIGFsbENoYXJhY3RlcnNNYXApOwogCiBwcml2YXRlOgogICAg
IGJvb2wgYWR2YW5jZSgpOwpAQCAtNDQsOSArNDQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWR2
YW5jZUNvbXBsZXhUZXh0KCk7CiAgICAgYm9vbCBjdXJyZW50Q2hhcmFjdGVyU3RhcnRzU3Vycm9n
YXRlUGFpcigpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4
dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVNZWFz
dXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCYpOwogICAgIHZvaWQg
d2Fsa1RyZWUoUmVuZGVyRWxlbWVudCYsIFJlbmRlclNWR0lubGluZVRleHQqIHN0b3BBdExlYWYs
IE1lYXN1cmVUZXh0RGF0YSopOwotICAgIHZvaWQgbWVhc3VyZVRleHRSZW5kZXJlcihSZW5kZXJT
VkdJbmxpbmVUZXh0KiwgTWVhc3VyZVRleHREYXRhKik7CisgICAgdm9pZCBtZWFzdXJlVGV4dFJl
bmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQmLCBNZWFzdXJlVGV4dERhdGEqKTsKIAogICAgIFJl
bmRlclNWR0lubGluZVRleHQqIG1fdGV4dDsKICAgICBUZXh0UnVuIG1fcnVuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCA0MjE4YWY0OTUzNjQ0MTUwNzlkYjgzYTJlYWY2Yzg5YjBlMTNkNzJl
Li4xZmNjNDA5OWI4MDQzOTFmOTRkYzE4M2U2ZTNhZDRmMGYzNjYzMGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMjQ2LDE0ICsyNDYsMTQgQEAgY2xhc3MgRHVtbXlHbHlwaFRvUGF0aFRy
YW5zbGF0b3IgZmluYWwgOiBwdWJsaWMgR2x5cGhUb1BhdGhUcmFuc2xhdG9yIHsKIAogc3RkOjp1
bmlxdWVfcHRyPEdseXBoVG9QYXRoVHJhbnNsYXRvcj4gU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUdseXBoVG9QYXRoVHJhbnNsYXRvcihjb25zdCBTaW1wbGVGb250RGF0YSYgZm9u
dERhdGEsIGNvbnN0IFRleHRSdW4qIHRleHRSdW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBj
b25zdAogewotICAgIFNWR0ZvbnRFbGVtZW50KiBmb250RWxlbWVudCA9IDA7Ci0gICAgU1ZHRm9u
dEZhY2VFbGVtZW50KiBmb250RmFjZUVsZW1lbnQgPSAwOworICAgIFNWR0ZvbnRFbGVtZW50KiBm
b250RWxlbWVudCA9IG51bGxwdHI7CisgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmb250RmFjZUVs
ZW1lbnQgPSBudWxscHRyOwogCiAgICAgY29uc3QgU1ZHRm9udERhdGEqIHN2Z0ZvbnREYXRhID0g
c3ZnRm9udEFuZEZvbnRGYWNlRWxlbWVudEZvckZvbnREYXRhKCZmb250RGF0YSwgZm9udEZhY2VF
bGVtZW50LCBmb250RWxlbWVudCk7CiAgICAgaWYgKCFmb250RWxlbWVudCB8fCAhZm9udEZhY2VF
bGVtZW50KQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEdW1teUdseXBoVG9QYXRo
VHJhbnNsYXRvcj4oKTsKIAotICAgIGF1dG8mIGVsZW1lbnRSZW5kZXJlciA9IHJlbmRlcmVyKCku
aXNSZW5kZXJFbGVtZW50KCkgPyB0b1JlbmRlckVsZW1lbnQocmVuZGVyZXIoKSkgOiAqcmVuZGVy
ZXIoKS5wYXJlbnQoKTsKKyAgICBhdXRvJiBlbGVtZW50UmVuZGVyZXIgPSBpczxSZW5kZXJFbGVt
ZW50PihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKCkpIDog
KnJlbmRlcmVyKCkucGFyZW50KCk7CiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0gZWxlbWVudFJl
bmRlcmVyLnN0eWxlKCk7CiAgICAgYm9vbCBpc1ZlcnRpY2FsVGV4dCA9IHN0eWxlLnN2Z1N0eWxl
KCkuaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKCk7CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFNW
R1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgUwogICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNlID0gc29saWRQ
YWludGluZ1Jlc291cmNlOwogICAgIH0KIAotICAgIGF1dG8mIGVsZW1lbnRSZW5kZXJlciA9IHJl
bmRlcmVyKCkuaXNSZW5kZXJFbGVtZW50KCkgPyB0b1JlbmRlckVsZW1lbnQocmVuZGVyZXIoKSkg
OiAqcmVuZGVyZXIoKS5wYXJlbnQoKTsKKyAgICBhdXRvJiBlbGVtZW50UmVuZGVyZXIgPSBpczxS
ZW5kZXJFbGVtZW50PihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRl
cmVyKCkpIDogKnJlbmRlcmVyKCkucGFyZW50KCk7CiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0g
ZWxlbWVudFJlbmRlcmVyLnN0eWxlKCk7CiAKICAgICBBU1NFUlQoYWN0aXZlUGFpbnRpbmdSZXNv
dXJjZSk7CkBAIC0yODIsOSArMjgyLDkgQEAgdm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dDo6ZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFMKICAgICAg
ICAgUGF0aCBnbHlwaFBhdGggPSB0cmFuc2xhdG9yLT5wYXRoKCk7CiAgICAgICAgIGlmIChhY3Rp
dmVQYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKGVsZW1lbnRSZW5kZXJlciwgc3R5bGUs
IGNvbnRleHQsIHJlc291cmNlTW9kZSkpIHsKICAgICAgICAgICAgIGZsb2F0IHN0cm9rZVRoaWNr
bmVzcyA9IGNvbnRleHQtPnN0cm9rZVRoaWNrbmVzcygpOwotICAgICAgICAgICAgaWYgKHJlbmRl
cmVyKCkuaXNTVkdJbmxpbmVUZXh0KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyAqIHRvUmVuZGVyU1ZHSW5saW5lVGV4dChyZW5k
ZXJlcigpKS5zY2FsaW5nRmFjdG9yKCkpOwotICAgICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNv
dXJjZS0+cG9zdEFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBjb250ZXh0LCByZXNvdXJj
ZU1vZGUsICZnbHlwaFBhdGgsIDApOworICAgICAgICAgICAgaWYgKGlzPFJlbmRlclNWR0lubGlu
ZVRleHQ+KHJlbmRlcmVyKCkpKQorICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRo
aWNrbmVzcyhzdHJva2VUaGlja25lc3MgKiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0Pihy
ZW5kZXJlcigpKS5zY2FsaW5nRmFjdG9yKCkpOworICAgICAgICAgICAgYWN0aXZlUGFpbnRpbmdS
ZXNvdXJjZS0+cG9zdEFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBjb250ZXh0LCByZXNv
dXJjZU1vZGUsICZnbHlwaFBhdGgsIG51bGxwdHIpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0z
MTQsOSArMzE0LDkgQEAgR2x5cGhEYXRhIFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpnbHlw
aERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udCYgZm9udCwgV2kKICAgICAvLyBDaGFyYWN0ZXJz
IGVuY2xvc2VkIGJ5IGFuIDxhbHRHbHlwaD4gZWxlbWVudCwgbWF5IG5vdCBiZSByZWdpc3RlcmVk
IGluIHRoZSBHbHlwaFBhZ2UuCiAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIG9yaWdpbmFsRm9u
dERhdGEgPSBnbHlwaERhdGEuZm9udERhdGE7CiAgICAgaWYgKGdseXBoRGF0YS5mb250RGF0YSAm
JiAhZ2x5cGhEYXRhLmZvbnREYXRhLT5pc1NWR0ZvbnQoKSkgewotICAgICAgICBhdXRvJiBlbGVt
ZW50UmVuZGVyZXIgPSByZW5kZXJlcigpLmlzUmVuZGVyRWxlbWVudCgpID8gdG9SZW5kZXJFbGVt
ZW50KHJlbmRlcmVyKCkpIDogKnJlbmRlcmVyKCkucGFyZW50KCk7CisgICAgICAgIGF1dG8mIGVs
ZW1lbnRSZW5kZXJlciA9IGlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKCkpID8gZG93bmNhc3Q8
UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIoKSkgOiAqcmVuZGVyZXIoKS5wYXJlbnQoKTsKICAgICAg
ICAgaWYgKEVsZW1lbnQqIHBhcmVudFJlbmRlcmVyRWxlbWVudCA9IGVsZW1lbnRSZW5kZXJlci5l
bGVtZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJlckVsZW1lbnQtPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmFsdEdseXBoVGFnKSkKKyAgICAgICAgICAgIGlmIChpczxTVkdBbHRH
bHlwaEVsZW1lbnQ+KCpwYXJlbnRSZW5kZXJlckVsZW1lbnQpKQogICAgICAgICAgICAgICAgIGds
eXBoRGF0YS5mb250RGF0YSA9IHByaW1hcnlGb250OwogICAgICAgICB9CiAgICAgfQpAQCAtMzI2
LDggKzMyNiw4IEBAIEdseXBoRGF0YSBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6Z2x5cGhE
YXRhRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnQmIGZvbnQsIFdpCiAgICAgICAgIGlmICghZm9udERh
dGEtPmlzU1ZHRm9udCgpKQogICAgICAgICAgICAgcmV0dXJuIGdseXBoRGF0YTsKIAotICAgICAg
ICBTVkdGb250RWxlbWVudCogZm9udEVsZW1lbnQgPSAwOwotICAgICAgICBTVkdGb250RmFjZUVs
ZW1lbnQqIGZvbnRGYWNlRWxlbWVudCA9IDA7CisgICAgICAgIFNWR0ZvbnRFbGVtZW50KiBmb250
RWxlbWVudCA9IG51bGxwdHI7CisgICAgICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZm9udEZhY2VF
bGVtZW50ID0gbnVsbHB0cjsKIAogICAgICAgICBjb25zdCBTVkdGb250RGF0YSogc3ZnRm9udERh
dGEgPSBzdmdGb250QW5kRm9udEZhY2VFbGVtZW50Rm9yRm9udERhdGEoZm9udERhdGEsIGZvbnRG
YWNlRWxlbWVudCwgZm9udEVsZW1lbnQpOwogICAgICAgICBpZiAoIWZvbnRFbGVtZW50IHx8ICFm
b250RmFjZUVsZW1lbnQpCkBAIC0zNDcsNyArMzQ3LDcgQEAgR2x5cGhEYXRhIFNWR1RleHRSdW5S
ZW5kZXJpbmdDb250ZXh0OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udCYgZm9udCwg
V2kKICAgICAvLyBObyBzdWl0YWJsZSBnbHlwaCBmb3VuZCB0aGF0IGlzIGNvbXBhdGlibGUgd2l0
aCB0aGUgcmVxdWlybWVudHMgKHNhbWUgbGFuZ3VhZ2UsIGFyYWJpYy1mb3JtLCBvcmllbnRhdGlv
biBldGMuKQogICAgIC8vIEV2ZW4gdGhvdWdoIG91ciBHbHlwaFBhZ2UgY29udGFpbnMgYW4gZW50
cnkgZm9yIGVnLiBnbHlwaCAiYSIsIGl0J3Mgbm90IGNvbXBhdGlibGUuIFNvIHdlIGhhdmUgdG8g
dGVtcG9yYXJpbHkKICAgICAvLyByZW1vdmUgdGhlIGdseXBoIGRhdGEgaW5mb3JtYXRpb24gZnJv
bSB0aGUgR2x5cGhQYWdlLCBhbmQgcmV0cnkgdGhlIGxvb2t1cCwgd2hpY2ggaGFuZGxlcyBmb250
IGZhbGxiYWNrcyBjb3JyZWN0bHkuCi0gICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVy
KGNoYXJhY3RlciwgMCwgMCk7CisgICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNo
YXJhY3RlciwgMCwgbnVsbHB0cik7CiAKICAgICAvLyBBc3N1cmUgdGhhdCB0aGUgZm9udCBmYWxs
YmFjayBnbHlwaCBzZWxlY3Rpb24gd29ya2VkLCBha2EuIHRoZSBmYWxsYmFja0dseXBoRGF0YSBm
b250IGRhdGEgaXMgbm90IHRoZSBzYW1lIGFzIGJlZm9yZS4KICAgICBHbHlwaERhdGEgZmFsbGJh
Y2tHbHlwaERhdGEgPSBmb250LmdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIG1pcnJv
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAppbmRleCA2M2JmNTRkNDlmYTVkNzY4ZDMz
MDIyODcxOWM3YTBkNzAwMDU0MWVlLi4wYjhmZDAzOGZkYzFjOTAzMjZhYmFiOGQ1MTc3ZTg5ZjFi
YWExNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBA
QCBib29sIFNWR0ZvbnREYXRhOjphcHBseVNWR0dseXBoU2VsZWN0aW9uKFdpZHRoSXRlcmF0b3Im
IGl0ZXJhdG9yLCBHbHlwaERhdGEmIGdseQogICAgIFNWR0ZvbnRFbGVtZW50KiBhc3NvY2lhdGVk
Rm9udEVsZW1lbnQgPSBzdmdGb250RmFjZUVsZW1lbnQtPmFzc29jaWF0ZWRGb250RWxlbWVudCgp
OwogICAgIEFTU0VSVChhc3NvY2lhdGVkRm9udEVsZW1lbnQpOwogCi0gICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJPYmplY3QgPSAwOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gbnVs
bHB0cjsKICAgICBpZiAoVGV4dFJ1bjo6UmVuZGVyaW5nQ29udGV4dCogcmVuZGVyaW5nQ29udGV4
dCA9IHJ1bi5yZW5kZXJpbmdDb250ZXh0KCkpCiAgICAgICAgIHJlbmRlck9iamVjdCA9ICZzdGF0
aWNfY2FzdDxTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dCo+KHJlbmRlcmluZ0NvbnRleHQpLT5y
ZW5kZXJlcigpOwogCkBAIC0xNTIsMTEgKzE1MiwxMCBAQCBib29sIFNWR0ZvbnREYXRhOjphcHBs
eVNWR0dseXBoU2VsZWN0aW9uKFdpZHRoSXRlcmF0b3ImIGl0ZXJhdG9yLCBHbHlwaERhdGEmIGds
eQogICAgIFZlY3RvcjxTdHJpbmc+IGFsdEdseXBoTmFtZXM7CiAKICAgICBpZiAocmVuZGVyT2Jq
ZWN0KSB7Ci0gICAgICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudFJlbmRlcmVyID0gcmVuZGVyT2Jq
ZWN0LT5pc1JlbmRlckVsZW1lbnQoKSA/IHRvUmVuZGVyRWxlbWVudChyZW5kZXJPYmplY3QpIDog
cmVuZGVyT2JqZWN0LT5wYXJlbnQoKTsKLSAgICAgICAgQVNTRVJUKHBhcmVudFJlbmRlcmVyKTsK
KyAgICAgICAgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuZGVyZXIgPSBpczxSZW5kZXJFbGVtZW50
PigqcmVuZGVyT2JqZWN0KSA/IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJPYmplY3Qp
IDogKnJlbmRlck9iamVjdC0+cGFyZW50KCk7CiAKLSAgICAgICAgaXNWZXJ0aWNhbFRleHQgPSBw
YXJlbnRSZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmlzVmVydGljYWxXcml0aW5nTW9kZSgp
OwotICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50UmVuZGVyZXJFbGVtZW50ID0gcGFyZW50UmVu
ZGVyZXItPmVsZW1lbnQoKSkgeworICAgICAgICBpc1ZlcnRpY2FsVGV4dCA9IHBhcmVudFJlbmRl
cmVyLnN0eWxlKCkuc3ZnU3R5bGUoKS5pc1ZlcnRpY2FsV3JpdGluZ01vZGUoKTsKKyAgICAgICAg
aWYgKEVsZW1lbnQqIHBhcmVudFJlbmRlcmVyRWxlbWVudCA9IHBhcmVudFJlbmRlcmVyLmVsZW1l
bnQoKSkgewogICAgICAgICAgICAgbGFuZ3VhZ2UgPSBwYXJlbnRSZW5kZXJlckVsZW1lbnQtPmdl
dEF0dHJpYnV0ZShYTUxOYW1lczo6bGFuZ0F0dHIpOwogCiAgICAgICAgICAgICBpZiAoaXM8U1ZH
QWx0R2x5cGhFbGVtZW50PigqcGFyZW50UmVuZGVyZXJFbGVtZW50KSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJh
bWUuY3BwCmluZGV4IDY4ZWQ3MDViNTVjMWI1OTUxOGExNzgxZTY0NzhmMjBmNjI3NGRjY2UuLjVk
MjFmZDBjNmE2NzViMzVjNTAzYTYwNzExMDBhZDcyNDM3ZDdiNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFt
ZS5jcHAKQEAgLTExODEsNyArMTE4MSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnBhdXNlQW5pbWF0
aW9uKEJTVFIgYW5pbWF0aW9uTmFtZSwgSURPTU5vZGUqIG5vZGUsIGRvdWJsZSBzZWNvCiAgICAg
aWYgKCFkb21Ob2RlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmFuaW1hdGlvbldh
c1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VBbmltYXRpb25BdFRpbWUodG9SZW5k
ZXJFbGVtZW50KGRvbU5vZGUtPm5vZGUoKS0+cmVuZGVyZXIoKSksIFN0cmluZyhhbmltYXRpb25O
YW1lLCBTeXNTdHJpbmdMZW4oYW5pbWF0aW9uTmFtZSkpLCBzZWNvbmRzRnJvbU5vdyk7CisgICAg
KmFuaW1hdGlvbldhc1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VBbmltYXRpb25B
dFRpbWUoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZG9tTm9kZS0+bm9kZSgpLT5yZW5kZXJlcigp
KSwgU3RyaW5nKGFuaW1hdGlvbk5hbWUsIFN5c1N0cmluZ0xlbihhbmltYXRpb25OYW1lKSksIHNl
Y29uZHNGcm9tTm93KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTIwMCw3ICsxMjAwLDcg
QEAgSFJFU1VMVCBXZWJGcmFtZTo6cGF1c2VUcmFuc2l0aW9uKEJTVFIgcHJvcGVydHlOYW1lLCBJ
RE9NTm9kZSogbm9kZSwgZG91YmxlIHNlY28KICAgICBpZiAoIWRvbU5vZGUpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICAqdHJhbnNpdGlvbldhc1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0
aW9uKCkucGF1c2VUcmFuc2l0aW9uQXRUaW1lKHRvUmVuZGVyRWxlbWVudChkb21Ob2RlLT5ub2Rl
KCktPnJlbmRlcmVyKCkpLCBTdHJpbmcocHJvcGVydHlOYW1lLCBTeXNTdHJpbmdMZW4ocHJvcGVy
dHlOYW1lKSksIHNlY29uZHNGcm9tTm93KTsKKyAgICAqdHJhbnNpdGlvbldhc1J1bm5pbmcgPSBm
cmFtZS0+YW5pbWF0aW9uKCkucGF1c2VUcmFuc2l0aW9uQXRUaW1lKGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KGRvbU5vZGUtPm5vZGUoKS0+cmVuZGVyZXIoKSksIFN0cmluZyhwcm9wZXJ0eU5hbWUs
IFN5c1N0cmluZ0xlbihwcm9wZXJ0eU5hbWUpKSwgc2Vjb25kc0Zyb21Ob3cpOwogICAgIHJldHVy
biBTX09LOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239645</attachid>
            <date>2014-10-10 13:27:42 -0700</date>
            <delta_ts>2014-10-10 14:00:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137622-20141010132746.patch</filename>
            <type>text/plain</type>
            <size>73609</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEyMGM4OTYwNTY0YzJh
MjM5MjhhNjgzOGNjNTJmNTQ2OTkxNDcxNy4uZWQ1OTg1ZmRmYzdiYmM1NTQzYjYwYjJkODdlN2Fk
Y2M0NmVlNzUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExOSBAQAogMjAxNC0xMC0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3du
Y2FzdDw+KCkgZm9yIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNzYyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJlbmRlckVs
ZW1lbnQgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJyb3VuZGluZyBjb2RlLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmltYWdlTWFwTGlua1JlbmRlcmVyKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om1hdGVyaWFs
aXplUmFyZURhdGEpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc05vblRleHRMZWFmQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoQWhlYWRG
b3JCZXR0ZXJNYXRjaCk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgorICAgICAgICAqIGVk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhDb250ZW50c1RvTmV3QmxvY2tJZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc0VtcHR5VGFibGVDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmJpZGlOZXh0U2hhcmVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmdldEZp
cnN0TGV0dGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpyZW5kZXJlclJl
bW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpyZW5kZXJl
clN1YnRyZWVBdHRhY2hlZCk6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6aW5zZXJ0Q2hpbGRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJFbGVtZW50OjpyZW1vdmVDaGlsZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OmZpbmROZXh0TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1JlbmRlckxheWVyTW9kZWxPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc0JveE1vZGVsT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJCbG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmlzUmVuZGVyQmxvY2tGbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6aXNSZW5kZXJSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmlzUmVuZGVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpmaXJzdExpbmVTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW5kZXJlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZyYW1lU2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZUNoaWxkcmVuU3R5bGVJblJl
Z2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c2V0T2Jq
ZWN0U3R5bGVJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDo6cmVzdG9yZVJlZ2lvbk9iamVjdHNPcmlnaW5hbFN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
Y2xlYXJOZWVkc0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxC
ZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbGxlY3RBbm5v
dGF0ZWRSZWdpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uR2VuZXJpY0N1ZSk6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MTWVuY2xvc2U6OmFkZENoaWxkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpyZWJ1aWxkVG9rZW5Db250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVTdHlsZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTFJvb3Q6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFJvb3Q6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6YWRkQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZVRva2VuQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlU3R5bGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6bGF5b3V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kUHJldmlvdXNBbmROZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpzdWJ0cmVlU3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlRm9udEluQWxsRGVzY2VuZGFudHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJT
dXBwb3J0OjpsYXlvdXRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXNDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6Y2xp
ZW50V2FzQWRkZWRUb1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6
OmNsaWVudFdpbGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNGb3JUZXh0
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNGb3JGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6cmVidWlsZE1ldHJpY3NGb3JUZXh0
UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0
ZXNCdWlsZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFs
aXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRNZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OndhbGtUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRNZXRyaWNzQnVpbGRlcjo6YnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVHbHlwaFRvUGF0aFRy
YW5zbGF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6
OmRyYXdTVkdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0Nv
bnRleHQ6OmdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAgICAgICogc3ZnL1NWR0ZvbnREYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnREYXRhOjphcHBseVNWR0dseXBoU2VsZWN0
aW9uKToKKworMjAxNC0xMC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAg
ICAgICAgIERyb3AgUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKCkgZm9yIGEgbG90IG9mIFJlbmRl
ck9iamVjdCBzdWJjbGFzc2VzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzc1OTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDgzMDNkM2E4NWY3Nzk0ZTJl
NGZhMDVhMGM2NmU4YjczYmVmM2YzNWUuLmM0MzhiOTEyZDhkMjlhNzFkMjBjOTE1ZWMyNmY0MmZi
MGFmODU0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0xMC0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczw+KCkgLyBk
b3duY2FzdDw+KCkgZm9yIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzYyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJlbmRl
ckVsZW1lbnQgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJyb3VuZGluZyBjb2RlLgorCisg
ICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnBhdXNlQW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYkZyYW1lOjpwYXVzZVRyYW5zaXRpb24pOgorCiAyMDE0LTEwLTA5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRv
d25jYXN0PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCmluZGV4
IGFiYzAwZGJhMzg0OWM2ODEzZTYzYmU1YWY0NmZhOWI5NzVhOWU4MDQuLmFlOTU3ZjA4ZDI2NTlh
OTVlNDU1YWM2ZmNhMmY2M2FlYWZiNDBlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIFJlbmRlckVsZW1lbnQqIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6Omlt
YWdlTWFwTGlua1JlbmRlcmVyKCkgY29uc3QKIAogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
ID0gbnVsbHB0cjsKICAgICBpZiAobV9wYXJlbnQgJiYgbV9wYXJlbnQtPmlzQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdCgpKQotICAgICAgICByZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudCh0b0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QobV9wYXJlbnQpLT5yZW5kZXJlcigpKTsKKyAgICAgICAg
cmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pih0b0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QobV9wYXJlbnQpLT5yZW5kZXJlcigpKTsKICAgICBlbHNlCiAgICAgICAgIHJlbmRlcmVy
ID0gbV9tYXBFbGVtZW50LT5yZW5kZXJlcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggNjRkZjEzZDcxN2JhNjg4OGJjMzQyZjVhNGVlNGI1MjRhNzcyNmEzMS4uY2NiNDA4MzY2ODI4
OTI4OGJlNGNjOGIwZGYzYWMxMzA3NzFmMWQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0x
MzE4LDcgKzEzMTgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gY2hlY2sgd2hldGhlciByZW5kZXJlZCBpbWFnZSB3YXMgc3RyZXRjaGVkIGZyb20gb25lLWRp
bWVuc2lvbmFsIGZpbGUgaW1hZ2UKICAgICAgICAgICAgIGlmIChpbWFnZS5jYWNoZWRJbWFnZSgp
KSB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5jYWNoZWRJ
bWFnZSgpLT5pbWFnZVNpemVGb3JSZW5kZXJlcih0b1JlbmRlckVsZW1lbnQobV9yZW5kZXJlciks
IGltYWdlLnZpZXcoKS56b29tRmFjdG9yKCkpOworICAgICAgICAgICAgICAgIExheW91dFNpemUg
aW1hZ2VTaXplID0gaW1hZ2UuY2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIoJmlt
YWdlLCBpbWFnZS52aWV3KCkuem9vbUZhY3RvcigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
aW1hZ2VTaXplLmhlaWdodCgpIDw9IDEgfHwgaW1hZ2VTaXplLndpZHRoKCkgPD0gMTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA5YzdmYWI3ZGY3YTc0OTNiYWQxZDcxY2NjYTVh
NGRlOWViNGViOGQyLi5mOWM0YmE1YTNkMDVjMDRkMWQ0ODJkZDNmNjRlNzYxMGRmNzhiM2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMTY2NCw3ICsxNjY0LDcgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShOb2RlKiBzdHlsZWQKIAogICAg
IGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNDb21wb3NpdGVkKCkgJiYgQW5pbWF0aW9uQ29u
dHJvbGxlcjo6c3VwcG9ydHNBY2NlbGVyYXRlZEFuaW1hdGlvbk9mUHJvcGVydHkocHJvcGVydHlJ
RCkpIHsKICAgICAgICAgQW5pbWF0aW9uVXBkYXRlQmxvY2sgYW5pbWF0aW9uVXBkYXRlQmxvY2so
JnJlbmRlcmVyLT5hbmltYXRpb24oKSk7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5
bGUgPSByZW5kZXJlci0+YW5pbWF0aW9uKCkuZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKHRv
UmVuZGVyRWxlbWVudChyZW5kZXJlcikpOworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlID0gcmVuZGVyZXItPmFuaW1hdGlvbigpLmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihk
b3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikpOwogICAgICAgICBpZiAocHNldWRvRWxl
bWVudFNwZWNpZmllciAmJiAhc3R5bGVkTm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhY2hlZCBwc2V1ZG8gc3R5bGUgd2lsbCBvbmx5IGV4aXN0
IGlmIHRoZSBhbmltYXRpb24gaGFzIGJlZW4gcnVuIGF0IGxlYXN0IG9uY2UuCiAgICAgICAgICAg
ICByZXR1cm4gc3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGMwODM3YTIyYTZhYzBkMWJkZGM0NGNlYzFkOGY0ZDYx
MTM0YzI1MzcuLmJkYWQ2OWJjOWQxYTc5OWJiYjYxMmM3ZDRmYmExMmQ0ZWY4YmMzODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTM0OSw4ICszNDksOCBAQCB2b2lkIE5vZGU6OndpbGxCZURlbGV0ZWRG
cm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHZvaWQgTm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSgp
CiB7CiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhOwotICAgIGlmIChpc0VsZW1lbnROb2RlKCkpCi0g
ICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSYXJlRGF0YT4odG9SZW5kZXJF
bGVtZW50KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgpOworICAgIGlmIChpczxFbGVtZW50
PigqdGhpcykpCisgICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSYXJlRGF0
YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7
CiAgICAgZWxzZQogICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFyZURhdGE+
KG1fZGF0YS5tX3JlbmRlcmVyKS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKaW5kZXggNzk4YTljNDQ3NjJiNmIwZmY3NWY5OWM4NGYzNWM0ZmQzZjc3
MTE4Ny4uZjFmYzViZDM5MjU3ZTU0ODQyMDE3YjVmMDE0NDZmMWQ0MjBmZjlmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCkBAIC0xMDk1LDEzICsxMDk1LDExIEBAIHZvaWQgUG9zaXRpb246Omdl
dElubGluZUJveEFuZE9mZnNldChFQWZmaW5pdHkgYWZmaW5pdHksIElubGluZUJveComIGlubGlu
ZUJveCwKICAgICBnZXRJbmxpbmVCb3hBbmRPZmZzZXQoYWZmaW5pdHksIHByaW1hcnlEaXJlY3Rp
b24oKSwgaW5saW5lQm94LCBjYXJldE9mZnNldCk7CiB9CiAKLXN0YXRpYyBib29sIGlzTm9uVGV4
dExlYWZDaGlsZChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBib29sIGlzTm9uVGV4dExl
YWZDaGlsZChSZW5kZXJPYmplY3QmIG9iamVjdCkKIHsKLSAgICBpZiAob2JqZWN0LT5pc1RleHQo
KSkKKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICh0b1JlbmRlckVsZW1lbnQob2JqZWN0KS0+Zmlyc3RDaGlsZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuICFkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihvYmplY3QpLmZpcnN0Q2hpbGQoKTsKIH0KIAogc3RhdGljIElubGluZVRl
eHRCb3gqIHNlYXJjaEFoZWFkRm9yQmV0dGVyTWF0Y2goUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
QEAgLTExMTMsNyArMTExMSw3IEBAIHN0YXRpYyBJbmxpbmVUZXh0Qm94KiBzZWFyY2hBaGVhZEZv
ckJldHRlck1hdGNoKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgaWYgKG5leHQtPmlzQlIoKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICBpZiAoaXNOb25UZXh0TGVhZkNoaWxkKG5leHQpKQorICAgICAgICBp
ZiAoaXNOb25UZXh0TGVhZkNoaWxkKCpuZXh0KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm5leHQpKSB7CiAgICAgICAgICAgICBJbmxp
bmVUZXh0Qm94KiBtYXRjaCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKaW5kZXggYzY4MTQ0NjlmMjczNmFmNGM2YWQ4OTM5MDhkYTdiMjA0NDk4ZjdlYi4uM2NkNGYw
ODQyOTIyYjYwNzNmZWJlMjVmYWUzNmExYzRjNWRhZGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmNwcApAQCAtMTA3LDEzICsxMDcsMTMgQEAgdm9pZCBQc2V1ZG9FbGVtZW50Ojpk
aWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKQogCiAgICAgLy8gVGhlIHJlbmRlcmVycyBpbnNp
ZGUgcHNldWRvIGVsZW1lbnRzIGFyZSBhbm9ueW1vdXMgc28gdGhleSBkb24ndCBnZXQgbm90aWZp
ZWQgb2YgcmVjYWxjU3R5bGUgYW5kIG11c3QgaGF2ZQogICAgIC8vIHRoZSBzdHlsZSBwcm9wYWdh
dGVkIGRvd253YXJkIG1hbnVhbGx5IHNpbWlsYXIgdG8gUmVuZGVyT2JqZWN0Ojpwcm9wYWdhdGVT
dHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4uCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCk7Ci0gICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVyZXIt
Pm5leHRJblByZU9yZGVyKHJlbmRlcmVyKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRJblBy
ZU9yZGVyKHJlbmRlcmVyKSkgeworICAgIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyID0gKnRoaXMt
PnJlbmRlcmVyKCk7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVyZXIubmV4
dEluUHJlT3JkZXIoJnJlbmRlcmVyKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRJblByZU9y
ZGVyKCZyZW5kZXJlcikpIHsKICAgICAgICAgLy8gV2Ugb25seSBtYW5hZ2UgdGhlIHN0eWxlIGZv
ciB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQgd2hpY2ggbXVzdCBiZSBpbWFnZXMgb3IgdGV4dC4KLSAg
ICAgICAgaWYgKCFjaGlsZC0+aXNSZW5kZXJJbWFnZSgpICYmICFjaGlsZC0+aXNRdW90ZSgpKQor
ICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqY2hpbGQpICYmICFpczxSZW5kZXJRdW90ZT4o
KmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBQYXNzUmVmPFJlbmRlclN0
eWxlPiBjcmVhdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJv
bVBzZXVkb1N0eWxlKHJlbmRlcmVyLT5zdHlsZSgpKTsKLSAgICAgICAgdG9SZW5kZXJFbGVtZW50
KCpjaGlsZCkuc2V0U3R5bGUoV1RGOjptb3ZlKGNyZWF0ZWRTdHlsZSkpOworICAgICAgICBQYXNz
UmVmPFJlbmRlclN0eWxlPiBjcmVhdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJ
bmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKHJlbmRlcmVyLnN0eWxlKCkpOworICAgICAgICBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLnNldFN0eWxlKFdURjo6bW92ZShjcmVhdGVkU3R5
bGUpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKaW5kZXggNTg0OTQ4YTM5NTQxYTVlMGI3OTY1M2E1ZWFkODAwNzg2OTdh
YTkyYy4uMDY2NTRlYTJjYTUyMGY2NjJjYTdlOGU5M2UxNTBkODY1NGFhM2MzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTk3Myw3
ICs5NzMsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnRO
ZXdEZWZhdWx0UGFyYWdyYXBoRWxlbWVudEF0KGNvbnN0CiBQYXNzUmVmUHRyPE5vZGU+IENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3Nh
cnkoY29uc3QgUG9zaXRpb24mIHBvcykKIHsKICAgICBpZiAocG9zLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAKQEAgLTk5MSw3
ICs5OTEsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3NhcgogICAgIC8vIElmIHRoZXJlIGFyZSBu
byBWaXNpYmxlUG9zaXRpb25zIGluIHRoZSBzYW1lIGJsb2NrIGFzIHBvcyB0aGVuIAogICAgIC8v
IHVwc3RyZWFtU3RhcnQgd2lsbCBiZSBvdXRzaWRlIHRoZSBwYXJhZ3JhcGgKICAgICBpZiAoY29t
cGFyZVBvc2l0aW9ucyhwb3MsIHVwc3RyZWFtU3RhcnQpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGVyZm9ybSBzb21lIGNoZWNrcyB0
byBzZWUgaWYgd2UgbmVlZCB0byBwZXJmb3JtIHdvcmsgaW4gdGhpcyBmdW5jdGlvbi4KICAgICBp
ZiAoaXNCbG9jayh1cHN0cmVhbVN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkpKSB7CkBAIC0xMDAwLDIy
ICsxMDAwLDIyIEBAIFBhc3NSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQ
YXJhZ3JhcGhDb250ZW50c1RvTmV3QmxvY2tJZk5lY2Vzc2FyCiAgICAgICAgIGlmICh1cHN0cmVh
bVN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgPT0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24odXBzdHJl
YW1TdGFydCkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBibG9jayBpcyB0aGUgcm9vdCBlZGl0
YWJsZSBlbGVtZW50IGFuZCBpdCBjb250YWlucyBubyB2aXNpYmxlIGNvbnRlbnQsIGNyZWF0ZSBh
IG5ldwogICAgICAgICAgICAgLy8gYmxvY2sgYnV0IGRvbid0IHRyeSBhbmQgbW92ZSBjb250ZW50
IGludG8gaXQsIHNpbmNlIHRoZXJlJ3Mgbm90aGluZyBmb3IgbW92ZVBhcmFncmFwaHMgdG8gbW92
ZS4KLSAgICAgICAgICAgIGlmICghUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVz
Y2VuZGFudHNXaXRoSGVpZ2h0KHRvUmVuZGVyRWxlbWVudCgqdXBzdHJlYW1TdGFydC5kZXByZWNh
dGVkTm9kZSgpLT5yZW5kZXJlcigpKSkpCisgICAgICAgICAgICBpZiAoIVBvc2l0aW9uOjpoYXNS
ZW5kZXJlZE5vbkFub255bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodChkb3duY2FzdDxSZW5kZXJF
bGVtZW50PigqdXBzdHJlYW1TdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGluc2VydE5ld0RlZmF1bHRQYXJhZ3JhcGhFbGVtZW50QXQo
dXBzdHJlYW1TdGFydCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCbG9jayh1cHN0cmVhbUVuZC5k
ZXByZWNhdGVkTm9kZSgpKSkgewogICAgICAgICAgICAgaWYgKCF1cHN0cmVhbUVuZC5kZXByZWNh
dGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZih1cHN0cmVhbVN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmFncmFwaCBlbmQgaXMgYSBkZXNjZW5k
YW50IG9mIHBhcmFncmFwaCBzdGFydCwgdGhlbiB3ZSBuZWVkIHRvIHJ1bgogICAgICAgICAgICAg
ICAgIC8vIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24uIElmIG5vdCwgd2UgY2FuIGJhaWwgaGVy
ZS4KLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChlbmNsb3NpbmdCbG9jayh1
cHN0cmVhbUVuZC5kZXByZWNhdGVkTm9kZSgpKSAhPSB1cHN0cmVhbVN0YXJ0LmRlcHJlY2F0ZWRO
b2RlKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSB2aXNpYmxlRW5kLiAgSXQgbXVzdCBiZSBhbiBh
bmNlc3RvciBvZiB0aGUgcGFyYWdyYXBoIHN0YXJ0LgogICAgICAgICAgICAgLy8gV2UgY2FuIGJh
aWwgYXMgd2UgaGF2ZSBhIGZ1bGwgYmxvY2sgdG8gd29yayB3aXRoLgogICAgICAgICAgICAgQVNT
RVJUKHVwc3RyZWFtU3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YoZW5jbG9z
aW5nQmxvY2sodXBzdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkpKTsKLSAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0gZWxzZSBpZiAo
aXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQodmlzaWJsZUVuZCkpIHsKICAgICAg
ICAgICAgIC8vIEF0IHRoZSBlbmQgb2YgdGhlIGVkaXRhYmxlIHJlZ2lvbi4gV2UgY2FuIGJhaWwg
aGVyZSBhcyB3ZWxsLgotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcAppbmRleCAxNjNkMTBmOWRmYzVkYTEzODZhZTU3OTdiYzExN2RiNTE5NDEyYjJkLi40
N2M2NTI4ZDgyOWY2NDNmNDhlMDVkYTViZTlmYjYyZGY5MWI4NDYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlBvc2l0
aW9uSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRl
ckVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpA
QCAtODQ5LDExICs4NTAsMTEgQEAgYm9vbCBpc0VtcHR5VGFibGVDZWxsKGNvbnN0IE5vZGUqIG5v
ZGUpCiAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGlmICghcmVuZGVyZXItPmlzVGFibGVDZWxsKCkpCisgICAgaWYgKCFpczxSZW5k
ZXJUYWJsZUNlbGw+KCpyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IENoZWNrIHRoYXQgdGhlIHRhYmxlIGNlbGwgY29udGFpbnMgbm8gY2hpbGQgcmVuZGVyZXJzIGV4
Y2VwdCBmb3IgcGVyaGFwcyBhIHNpbmdsZSA8YnI+LgotICAgIFJlbmRlck9iamVjdCogY2hpbGRS
ZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudChyZW5kZXJlciktPmZpcnN0Q2hpbGQoKTsKKyAgICBS
ZW5kZXJPYmplY3QqIGNoaWxkUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCpy
ZW5kZXJlcikuZmlyc3RDaGlsZCgpOwogICAgIGlmICghY2hpbGRSZW5kZXJlcikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgaWYgKCFjaGlsZFJlbmRlcmVyLT5pc0JSKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCmluZGV4IGYwODY4MWEzNjdmYzM1ZTUxOTY4
YjhhMzVkNzhmNGRiODVkZDIxMWQuLjhiNjA0MTUyN2E4NDU0ZjFlNGQ3Y2EyODJlYmI2MGUxNjM4
MzgxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC0y
MTQsMjIgKzIxNCwyMiBAQCBzdGF0aWMgYm9vbCBpc0VtcHR5SW5saW5lKGNvbnN0IFJlbmRlcklu
bGluZSYgcmVuZGVyZXIpCiB0ZW1wbGF0ZSA8Y2xhc3MgT2JzZXJ2ZXI+CiBzdGF0aWMgaW5saW5l
IFJlbmRlck9iamVjdCogYmlkaU5leHRTaGFyZWQoUmVuZGVyRWxlbWVudCYgcm9vdCwgUmVuZGVy
T2JqZWN0KiBjdXJyZW50LCBPYnNlcnZlciogb2JzZXJ2ZXIgPSAwLCBFbXB0eUlubGluZUJlaGF2
aW9yIGVtcHR5SW5saW5lQmVoYXZpb3IgPSBTa2lwRW1wdHlJbmxpbmVzLCBib29sKiBlbmRPZklu
bGluZVB0ciA9IDApCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBuZXh0ID0gMDsKKyAgICBSZW5kZXJP
YmplY3QqIG5leHQgPSBudWxscHRyOwogICAgIC8vIG9sZEVuZE9mSW5saW5lIGRlbm90ZXMgaWYg
d2hlbiB3ZSBsYXN0IHN0b3BwZWQgaXRlcmF0aW5nIGlmIHdlIHdlcmUgYXQgdGhlIGVuZCBvZiBh
biBpbmxpbmUuCiAgICAgYm9vbCBvbGRFbmRPZklubGluZSA9IGVuZE9mSW5saW5lUHRyID8gKmVu
ZE9mSW5saW5lUHRyIDogZmFsc2U7CiAgICAgYm9vbCBlbmRPZklubGluZSA9IGZhbHNlOwogCiAg
ICAgd2hpbGUgKGN1cnJlbnQpIHsKLSAgICAgICAgbmV4dCA9IDA7CisgICAgICAgIG5leHQgPSBu
dWxscHRyOwogICAgICAgICBpZiAoIW9sZEVuZE9mSW5saW5lICYmICFpc0l0ZXJhdG9yVGFyZ2V0
KGN1cnJlbnQpKSB7Ci0gICAgICAgICAgICBuZXh0ID0gdG9SZW5kZXJFbGVtZW50KGN1cnJlbnQp
LT5maXJzdENoaWxkKCk7CisgICAgICAgICAgICBuZXh0ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKmN1cnJlbnQpLmZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAgIG5vdGlmeU9ic2VydmVyRW50
ZXJlZE9iamVjdChvYnNlcnZlciwgbmV4dCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXZSBo
aXQgdGhpcyB3aGVuIGVpdGhlciBjdXJyZW50IGhhcyBubyBjaGlsZHJlbiwgb3Igd2hlbiBjdXJy
ZW50IGlzIG5vdCBhIHJlbmRlcmVyIHdlIGNhcmUgYWJvdXQuCiAgICAgICAgIGlmICghbmV4dCkg
ewogICAgICAgICAgICAgLy8gSWYgaXQgaXMgYSByZW5kZXJlciB3ZSBjYXJlIGFib3V0LCBhbmQg
d2UncmUgZG9pbmcgb3VyIGlubGluZS13YWxrLCByZXR1cm4gaXQuCi0gICAgICAgICAgICBpZiAo
ZW1wdHlJbmxpbmVCZWhhdmlvciA9PSBJbmNsdWRlRW1wdHlJbmxpbmVzICYmICFvbGRFbmRPZklu
bGluZSAmJiBjdXJyZW50LT5pc1JlbmRlcklubGluZSgpKSB7CisgICAgICAgICAgICBpZiAoZW1w
dHlJbmxpbmVCZWhhdmlvciA9PSBJbmNsdWRlRW1wdHlJbmxpbmVzICYmICFvbGRFbmRPZklubGlu
ZSAmJiBpczxSZW5kZXJJbmxpbmU+KCpjdXJyZW50KSkgewogICAgICAgICAgICAgICAgIG5leHQg
PSBjdXJyZW50OwogICAgICAgICAgICAgICAgIGVuZE9mSW5saW5lID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9i
amVjdCogYmlkaU5leHRTaGFyZWQoUmVuZGVyRWxlbWVudCYgcm9vdCwgUmVuZGVyT2JqZWN0KiBj
dQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50
LT5wYXJlbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZW1wdHlJbmxpbmVCZWhhdmlvciA9PSBJ
bmNsdWRlRW1wdHlJbmxpbmVzICYmIGN1cnJlbnQgJiYgY3VycmVudCAhPSAmcm9vdCAmJiBjdXJy
ZW50LT5pc1JlbmRlcklubGluZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVtcHR5SW5saW5l
QmVoYXZpb3IgPT0gSW5jbHVkZUVtcHR5SW5saW5lcyAmJiBjdXJyZW50ICYmIGN1cnJlbnQgIT0g
JnJvb3QgJiYgaXM8UmVuZGVySW5saW5lPigqY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgbmV4dCA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgIGVuZE9mSW5saW5lID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGlj
IGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlOZXh0U2hhcmVkKFJlbmRlckVsZW1lbnQmIHJvb3Qs
IFJlbmRlck9iamVjdCogY3UKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmIChpc0l0
ZXJhdG9yVGFyZ2V0KG5leHQpCi0gICAgICAgICAgICB8fCAobmV4dC0+aXNSZW5kZXJJbmxpbmUo
KSAmJiAoZW1wdHlJbmxpbmVCZWhhdmlvciA9PSBJbmNsdWRlRW1wdHlJbmxpbmVzIHx8IGlzRW1w
dHlJbmxpbmUodG9SZW5kZXJJbmxpbmUoKm5leHQpKSkpKQorICAgICAgICAgICAgfHwgKGlzPFJl
bmRlcklubGluZT4oKm5leHQpICYmIChlbXB0eUlubGluZUJlaGF2aW9yID09IEluY2x1ZGVFbXB0
eUlubGluZXMgfHwgaXNFbXB0eUlubGluZShkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpuZXh0KSkp
KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjdXJyZW50ID0gbmV4dDsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5ZjRmMGM2NWYxMzc4
ODVjYmNiNjUxMDJmNDVmNWVlYTkyMDkxMDE0Li44MjQxMjg3M2E4NTA1NTk3ZTU2NDhiOWU3Njhi
NGUzZTY0YWFjODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
QEAgLTQ3LDEyICs0NywxNSBAQAogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRlckJveFJlZ2lvbkluZm8uaCIKKyNpbmNs
dWRlICJSZW5kZXJCdXR0b24uaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgogI2lu
Y2x1ZGUgIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckZs
ZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVy
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxp
c3RNYXJrZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJNZW51TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCkBAIC0zMTkxLDcgKzMxOTQsNyBAQCB2b2lkIFJl
bmRlckJsb2NrOjpnZXRGaXJzdExldHRlcihSZW5kZXJPYmplY3QqJiBmaXJzdExldHRlciwgUmVu
ZGVyRWxlbWVudComIGZpcgogICAgIC8vIERyaWxsIGludG8gaW5saW5lcyBsb29raW5nIGZvciBv
dXIgZmlyc3QgdGV4dCBkZXNjZW5kYW50LgogICAgIGZpcnN0TGV0dGVyID0gZmlyc3RMZXR0ZXJD
b250YWluZXItPmZpcnN0Q2hpbGQoKTsKICAgICB3aGlsZSAoZmlyc3RMZXR0ZXIpIHsKLSAgICAg
ICAgaWYgKGZpcnN0TGV0dGVyLT5pc1RleHQoKSkgeworICAgICAgICBpZiAoaXM8UmVuZGVyVGV4
dD4oKmZpcnN0TGV0dGVyKSkgewogICAgICAgICAgICAgaWYgKGZpcnN0TGV0dGVyID09IHNraXBP
YmplY3QpIHsKICAgICAgICAgICAgICAgICBmaXJzdExldHRlciA9IGZpcnN0TGV0dGVyLT5uZXh0
U2libGluZygpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzIwMCw4ICszMjAzLDgg
QEAgdm9pZCBSZW5kZXJCbG9jazo6Z2V0Rmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiYgZmlyc3RM
ZXR0ZXIsIFJlbmRlckVsZW1lbnQqJiBmaXIKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVuZGVyRWxlbWVudCYgY3VycmVudCA9IHRvUmVuZGVyRWxlbWVudCgqZmly
c3RMZXR0ZXIpOwotICAgICAgICBpZiAoY3VycmVudC5pc0xpc3RNYXJrZXIoKSkKKyAgICAgICAg
UmVuZGVyRWxlbWVudCYgY3VycmVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpmaXJzdExl
dHRlcik7CisgICAgICAgIGlmIChpczxSZW5kZXJMaXN0TWFya2VyPihjdXJyZW50KSkKICAgICAg
ICAgICAgIGZpcnN0TGV0dGVyID0gY3VycmVudC5uZXh0U2libGluZygpOwogICAgICAgICBlbHNl
IGlmIChjdXJyZW50LmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAg
ICAgICAgaWYgKGN1cnJlbnQuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsK
QEAgLTMyMDksNyArMzIxMiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmdldEZpcnN0TGV0dGVyKFJl
bmRlck9iamVjdComIGZpcnN0TGV0dGVyLCBSZW5kZXJFbGVtZW50KiYgZmlyCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaXJzdExldHRlciA9IGN1
cnJlbnQubmV4dFNpYmxpbmcoKTsKLSAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50LmlzUmVwbGFj
ZWQoKSB8fCBjdXJyZW50LmlzUmVuZGVyQnV0dG9uKCkgfHwgY3VycmVudC5pc01lbnVMaXN0KCkp
CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5pc1JlcGxhY2VkKCkgfHwgaXM8UmVuZGVyQnV0
dG9uPihjdXJyZW50KSB8fCBpczxSZW5kZXJNZW51TGlzdD4oY3VycmVudCkpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZWxzZSBpZiAoY3VycmVudC5zdHlsZSgpLmhhc1BzZXVkb1N0eWxl
KEZJUlNUX0xFVFRFUikgJiYgY3VycmVudC5jYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSkgIHsK
ICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbG93ZXItbGV2ZWwgbm9kZSB3aXRoIGZpcnN0LWxl
dHRlciwgd2hpY2ggc3VwZXJzZWRlcyB0aGUgaGlnaGVyLWxldmVsIHN0eWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDVkYmMyZDFhZmMxYzZlOGJiNWVjZjM4NjE3
YmNhN2JiOWMyZjM2ZmYuLmQ2YjMxNDA3ZTgxOGQyNWJlYzBiNmI1N2Q0YzFkNjEwNjJiY2MwMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01MDEsNyArNTAxLDcg
QEAgdm9pZCBSZW5kZXJCb3g6OmxheW91dCgpCiAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKHZpZXcoKSwgKnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIHN0eWxlKCkuaXNGbGlw
cGVkQmxvY2tzV3JpdGluZ01vZGUoKSk7CiAgICAgd2hpbGUgKGNoaWxkKSB7CiAgICAgICAgIGlm
IChjaGlsZC0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyRWxlbWVudChjaGls
ZCktPmxheW91dCgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxk
KS5sYXlvdXQoKTsKICAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7CiAgICAg
ICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IGFlMDIwZGU5Y2M1N2M1YjZmZWRkOWE2
ZmRkN2IzMzcwYzNhZTZjZmMuLjQ4NzhiNmYxZDJlZWI1MjA1YjI1ZjZlOGE3NjA2ZmZmYTU1NzNm
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTQ5
Niw4ICs0OTYsOCBAQCB2b2lkIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyUmVtb3ZlZEZyb21UcmVl
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIGlmICghY3VycmVudFJlbmRlcmVyKQogICAg
ICAgICBjdXJyZW50UmVuZGVyZXIgPSAmcmVuZGVyZXI7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlci0+aXNSZW5kZXJFbGVtZW50KCkpCi0gICAgICAgICAg
ICBkZXN0cm95Q291bnRlck5vZGVzKHRvUmVuZGVyRWxlbWVudCgqY3VycmVudFJlbmRlcmVyKSk7
CisgICAgICAgIGlmIChpczxSZW5kZXJFbGVtZW50PigqY3VycmVudFJlbmRlcmVyKSkKKyAgICAg
ICAgICAgIGRlc3Ryb3lDb3VudGVyTm9kZXMoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmN1cnJl
bnRSZW5kZXJlcikpOwogICAgICAgICBpZiAoY3VycmVudFJlbmRlcmVyID09ICZyZW5kZXJlcikK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjdXJyZW50UmVuZGVyZXIgPSBjdXJyZW50UmVu
ZGVyZXItPnByZXZpb3VzSW5QcmVPcmRlcigpOwpAQCAtNTUxLDggKzU1MSw4IEBAIHZvaWQgUmVu
ZGVyQ291bnRlcjo6cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIpCiAgICAgaWYgKGVsZW1lbnQgJiYgIWVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJl
dHVybjsgLy8gTm8gbmVlZCB0byB1cGRhdGUgaWYgdGhlIHBhcmVudCBpcyBub3QgYXR0YWNoZWQg
eWV0CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGRlc2NlbmRhbnQgPSAmcmVuZGVyZXI7IGRlc2Nl
bmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50LT5uZXh0SW5QcmVPcmRlcigmcmVuZGVyZXIp
KSB7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50LT5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAg
ICAgIHVwZGF0ZUNvdW50ZXJzKHRvUmVuZGVyRWxlbWVudCgqZGVzY2VuZGFudCkpOworICAgICAg
ICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKmRlc2NlbmRhbnQpKQorICAgICAgICAgICAgdXBkYXRl
Q291bnRlcnMoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmRlc2NlbmRhbnQpKTsKICAgICB9CiB9
CiAKQEAgLTYxMywxNSArNjEzLDE1IEBAIHZvaWQgc2hvd0NvdW50ZXJSZW5kZXJlclRyZWUoY29u
c3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hhcioKIAogICAgIEF0
b21pY1N0cmluZyBpZGVudGlmaWVyKGNvdW50ZXJOYW1lKTsKICAgICBmb3IgKGNvbnN0IFdlYkNv
cmU6OlJlbmRlck9iamVjdCogY3VycmVudCA9IHJvb3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5uZXh0SW5QcmVPcmRlcigpKSB7Ci0gICAgICAgIGlmICghY3VycmVudC0+aXNSZW5kZXJF
bGVtZW50KCkpCisgICAgICAgIGlmICghaXM8V2ViQ29yZTo6UmVuZGVyRWxlbWVudD4oKmN1cnJl
bnQpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJWMi
LCAoY3VycmVudCA9PSByZW5kZXJlcikgPyAnKicgOiAnICcpOwogICAgICAgICBmb3IgKGNvbnN0
IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcGFyZW50ID0gY3VycmVudDsgcGFyZW50ICYmIHBhcmVu
dCAhPSByb290OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudCgpKQogICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgICAgIik7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXAgTjolcCBQOiVw
IFBTOiVwIE5TOiVwIEM6JXBcbiIsCiAgICAgICAgICAgICBjdXJyZW50LCBjdXJyZW50LT5ub2Rl
KCksIGN1cnJlbnQtPnBhcmVudCgpLCBjdXJyZW50LT5wcmV2aW91c1NpYmxpbmcoKSwKLSAgICAg
ICAgICAgIGN1cnJlbnQtPm5leHRTaWJsaW5nKCksIHRvUmVuZGVyRWxlbWVudChjdXJyZW50KS0+
aGFzQ291bnRlck5vZGVNYXAoKSA/Ci0gICAgICAgICAgICBjb3VudGVyTmFtZSA/IFdlYkNvcmU6
OmNvdW50ZXJNYXBzKCkuZ2V0KHRvUmVuZGVyRWxlbWVudChjdXJyZW50KSktPmdldChpZGVudGlm
aWVyKSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSop
MCk7CisgICAgICAgICAgICBjdXJyZW50LT5uZXh0U2libGluZygpLCBkb3duY2FzdDxXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50PigqY3VycmVudCkuaGFzQ291bnRlck5vZGVNYXAoKSA/CisgICAgICAg
ICAgICBjb3VudGVyTmFtZSA/IFdlYkNvcmU6OmNvdW50ZXJNYXBzKCkuZ2V0KGRvd25jYXN0PFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ+KGN1cnJlbnQpKS0+Z2V0KGlkZW50aWZpZXIpIDogKFdlYkNv
cmU6OkNvdW50ZXJOb2RlKikxIDogKFdlYkNvcmU6OkNvdW50ZXJOb2RlKikwKTsKICAgICB9CiAg
ICAgZmZsdXNoKHN0ZGVycik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKaW5kZXggMDgyN2NhYTcwZTU0ZDdmZGI5NTUwZDc5OGMxYjQ4NDRhNjg4ZWMwZi4u
MTMwOTIzZTIyZTMxYmIxYjc2OGUzZGIxNTgwMTU1YWY3NzY4YzRmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtNTY5LDggKzU2OSw4IEBAIHZvaWQg
UmVuZGVyRWxlbWVudDo6aW5zZXJ0Q2hpbGRJbnRlcm5hbChSZW5kZXJPYmplY3QqIG5ld0NoaWxk
LCBSZW5kZXJPYmplY3QqIGJlCiAgICAgaWYgKCFkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsK
ICAgICAgICAgaWYgKG5vdGlmeUNoaWxkcmVuID09IE5vdGlmeUNoaWxkcmVuKQogICAgICAgICAg
ICAgbmV3Q2hpbGQtPmluc2VydGVkSW50b1RyZWUoKTsKLSAgICAgICAgaWYgKG5ld0NoaWxkLT5p
c1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3Vi
dHJlZUF0dGFjaGVkKHRvUmVuZGVyRWxlbWVudCgqbmV3Q2hpbGQpKTsKKyAgICAgICAgaWYgKGlz
PFJlbmRlckVsZW1lbnQ+KCpuZXdDaGlsZCkpCisgICAgICAgICAgICBSZW5kZXJDb3VudGVyOjpy
ZW5kZXJlclN1YnRyZWVBdHRhY2hlZChkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqbmV3Q2hpbGQp
KTsKICAgICB9CiAKICAgICBuZXdDaGlsZC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVj
YWxjKCk7CkBAIC02MzgsOCArNjM4LDggQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJFbGVtZW50Ojpy
ZW1vdmVDaGlsZEludGVybmFsKFJlbmRlck9iamVjdCYgb2xkQ2hpbGQsIE5vdGlmeUMKIAogICAg
IC8vIHJlbmRlcmVyUmVtb3ZlZEZyb21UcmVlIHdhbGtzIHRoZSB3aG9sZSBzdWJ0cmVlLiBXZSBj
YW4gaW1wcm92ZSBwZXJmb3JtYW5jZQogICAgIC8vIGJ5IHNraXBwaW5nIHRoaXMgc3RlcCB3aGVu
IGRlc3Ryb3lpbmcgdGhlIGVudGlyZSB0cmVlLgotICAgIGlmICghZG9jdW1lbnRCZWluZ0Rlc3Ry
b3llZCgpICYmIG9sZENoaWxkLmlzUmVuZGVyRWxlbWVudCgpKQotICAgICAgICBSZW5kZXJDb3Vu
dGVyOjpyZW5kZXJlclJlbW92ZWRGcm9tVHJlZSh0b1JlbmRlckVsZW1lbnQob2xkQ2hpbGQpKTsK
KyAgICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSAmJiBpczxSZW5kZXJFbGVtZW50Pihv
bGRDaGlsZCkpCisgICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyUmVtb3ZlZEZyb21UcmVl
KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG9sZENoaWxkKSk7CiAKICAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQogICAgICAg
ICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwpAQCAtNzE0LDcgKzcxNCw3IEBAIFJlbmRl
ckxheWVyKiBSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRM
YXllciwgUmVuZGVyT2JqZWN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gU3Rl
cCAxOiBJZiBvdXIgbGF5ZXIgaXMgYSBjaGlsZCBvZiB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4g
cmV0dXJuIG91ciBsYXllci4KLSAgICBSZW5kZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigp
ID8gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpIDogbnVsbHB0cjsKKyAg
ICBSZW5kZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigpID8gZG93bmNhc3Q8UmVuZGVyTGF5
ZXJNb2RlbE9iamVjdD4oKnRoaXMpLmxheWVyKCkgOiBudWxscHRyOwogICAgIGlmIChvdXJMYXll
ciAmJiBvdXJMYXllci0+cGFyZW50KCkgPT0gcGFyZW50TGF5ZXIpCiAgICAgICAgIHJldHVybiBv
dXJMYXllcjsKIApAQCAtNzIyLDkgKzcyMiw5IEBAIFJlbmRlckxheWVyKiBSZW5kZXJFbGVtZW50
OjpmaW5kTmV4dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRMYXllciwgUmVuZGVyT2JqZWN0CiAg
ICAgLy8gaW50byBvdXIgc2libGluZ3MgdHJ5aW5nIHRvIGZpbmQgdGhlIG5leHQgbGF5ZXIgd2hv
c2UgcGFyZW50IGlzIHRoZSBkZXNpcmVkIHBhcmVudC4KICAgICBpZiAoIW91ckxheWVyIHx8IG91
ckxheWVyID09IHBhcmVudExheWVyKSB7CiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IHN0YXJ0UG9pbnQgPyBzdGFydFBvaW50LT5uZXh0U2libGluZygpIDogZmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYg
KCFjaGlsZC0+aXNSZW5kZXJFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAoIWlzPFJlbmRlckVs
ZW1lbnQ+KCpjaGlsZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBS
ZW5kZXJMYXllciogbmV4dExheWVyID0gdG9SZW5kZXJFbGVtZW50KGNoaWxkKS0+ZmluZE5leHRM
YXllcihwYXJlbnRMYXllciwgbnVsbHB0ciwgZmFsc2UpOworICAgICAgICAgICAgUmVuZGVyTGF5
ZXIqIG5leHRMYXllciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkuZmluZE5leHRM
YXllcihwYXJlbnRMYXllciwgbnVsbHB0ciwgZmFsc2UpOwogICAgICAgICAgICAgaWYgKG5leHRM
YXllcikKICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dExheWVyOwogICAgICAgICB9CkBAIC0x
MTA5LDcgKzExMDksNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmxheW91dCgpCiAgICAgUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKICAgICB3aGlsZSAoY2hpbGQpIHsKICAgICAg
ICAgaWYgKGNoaWxkLT5uZWVkc0xheW91dCgpKQotICAgICAgICAgICAgdG9SZW5kZXJFbGVtZW50
KGNoaWxkKS0+bGF5b3V0KCk7CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigq
Y2hpbGQpLmxheW91dCgpOwogICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgpKTsK
ICAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCA5YzcxMmFhYTg0OWVkOGM2YzcwNTFl
YzE4MzRlMTcxMjA0NDIyYmZhLi4zNmMzNDM1MDI4NTYxZjQwYzIyN2JlNmEwZGNhMDA2ZTM3ZjQ3
N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTI0NSw4
ICsyNDUsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNfbm9Mb25nZXJBZmZlY3RzUGFy
ZW50QmxvY2s7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyRWxlbWVudCwg
aXNSZW5kZXJFbGVtZW50KCkpCi0KIGlubGluZSB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldEFuaW1h
dGFibGVTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBzZXRTdHlsZShh
bmltYXRpb24oKS51cGRhdGVBbmltYXRpb25zKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKSk7CkBA
IC0zMjMsNTEgKzMyMSw1MSBAQCBpbmxpbmUgRWxlbWVudCogUmVuZGVyRWxlbWVudDo6Z2VuZXJh
dGluZ0VsZW1lbnQoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBSZW5kZXJPYmplY3Q6OmlzUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVuZGVyRWxlbWVudCgp
ICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCk7Cisg
ICAgcmV0dXJuIGlzPFJlbmRlckVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PigqdGhpcykuaXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCk7CiB9CiAKIGlubGluZSBib29s
IFJlbmRlck9iamVjdDo6aXNCb3hNb2RlbE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlz
UmVuZGVyRWxlbWVudCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNCb3hNb2RlbE9iamVj
dCgpOworICAgIHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4oKnRoaXMpLmlzQm94TW9kZWxPYmplY3QoKTsKIH0KIAogaW5saW5lIGJvb2wg
UmVuZGVyT2JqZWN0Ojppc1JlbmRlckJsb2NrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNSZW5k
ZXJFbGVtZW50KCkgJiYgdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5pc1JlbmRlckJsb2NrKCk7Cisg
ICAgcmV0dXJuIGlzPFJlbmRlckVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PigqdGhpcykuaXNSZW5kZXJCbG9jaygpOwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJPYmpl
Y3Q6OmlzUmVuZGVyQmxvY2tGbG93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNSZW5kZXJFbGVt
ZW50KCkgJiYgdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5pc1JlbmRlckJsb2NrRmxvdygpOworICAg
IHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKnRoaXMpLmlzUmVuZGVyQmxvY2tGbG93KCk7CiB9CiAKIGlubGluZSBib29sIFJlbmRlck9i
amVjdDo6aXNSZW5kZXJSZXBsYWNlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVuZGVyRWxl
bWVudCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJSZXBsYWNlZCgpOworICAg
IHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKnRoaXMpLmlzUmVuZGVyUmVwbGFjZWQoKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyT2Jq
ZWN0Ojppc1JlbmRlcklubGluZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVuZGVyRWxlbWVu
dCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJJbmxpbmUoKTsKKyAgICByZXR1
cm4gaXM8UmVuZGVyRWxlbWVudD4oKnRoaXMpICYmIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0
aGlzKS5pc1JlbmRlcklubGluZSgpOwogfQogCiBpbmxpbmUgUmVuZGVyU3R5bGUmIFJlbmRlck9i
amVjdDo6c3R5bGUoKSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJu
IG1fcGFyZW50LT5zdHlsZSgpOwotICAgIHJldHVybiB0b1JlbmRlckVsZW1lbnQodGhpcyktPnN0
eWxlKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0aGlzKS5zdHlsZSgp
OwogfQogCiBpbmxpbmUgUmVuZGVyU3R5bGUmIFJlbmRlck9iamVjdDo6Zmlyc3RMaW5lU3R5bGUo
KSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5m
aXJzdExpbmVTdHlsZSgpOwotICAgIHJldHVybiB0b1JlbmRlckVsZW1lbnQodGhpcyktPmZpcnN0
TGluZVN0eWxlKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0aGlzKS5m
aXJzdExpbmVTdHlsZSgpOwogfQogCiBpbmxpbmUgUmVuZGVyRWxlbWVudCogQ29udGFpbmVyTm9k
ZTo6cmVuZGVyZXIoKSBjb25zdAogewotICAgIHJldHVybiB0b1JlbmRlckVsZW1lbnQoTm9kZTo6
cmVuZGVyZXIoKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KE5vZGU6OnJl
bmRlcmVyKCkpOwogfQogCiBpbmxpbmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFs
dWUsIGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggMTc3MTdkODBlYmRhM2RkY2E0NzA5MzU2ODJj
YjNiZTdmYjFkZmNjNC4uNTI2YTFjMDUyYTJmNTU2NGYwMjhhOTViZGE2YjQxMDE0OWVkNjBiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC0xNDEs
NyArMTQxLDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBmb3IgKHNpemVfdCByID0g
MDsgciA8IHJvd3M7IHIrKykgewogICAgICAgICBMYXlvdXRVbml0IHhQb3MgPSAwOwogICAgICAg
ICBmb3IgKHNpemVfdCBjID0gMDsgYyA8IGNvbHM7IGMrKykgewotICAgICAgICAgICAgdG9SZW5k
ZXJFbGVtZW50KGNoaWxkKS0+cGFpbnQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsK
KyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkucGFpbnQocGFpbnRJ
bmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKICAgICAgICAgICAgIHhQb3MgKz0gbV9jb2xzLm1f
c2l6ZXNbY107CiAgICAgICAgICAgICBpZiAoYm9yZGVyVGhpY2tuZXNzICYmIG1fY29scy5tX2Fs
bG93Qm9yZGVyW2MgKyAxXSkgewogICAgICAgICAgICAgICAgIHBhaW50Q29sdW1uQm9yZGVyKHBh
aW50SW5mbywgc25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSArIHhQb3MsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgeVBvcywgYm9yZGVyVGhpY2tuZXNz
LCBoZWlnaHQoKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDc2OWMyOWVkYTdmZTJhNmJkZjMwMzNlMzZmODMyOTRjMjM5YzM3M2IuLmJkODZhZWFhM2Zj
NjdhNGMwODhjZDdhZjM3M2VkZTYxYzhhMmZiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtNjI5NywxMyArNjI5NywxMyBAQCBzdGF0aWMgYm9vbCBoYXNQ
YWludGluZ05vbkxheWVyRGVzY2VuZGFudHMoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGludCBkZQogICAgICAgICAKICAgICAgICAgY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxl
bWVudENoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGQpOwogCi0gICAgICAgIGlm
IChyZW5kZXJFbGVtZW50Q2hpbGQuaXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCkgJiYgdG9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlckVsZW1lbnRDaGlsZCkuaGFzU2VsZlBhaW50aW5nTGF5
ZXIoKSkKKyAgICAgICAgaWYgKGlzPFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KHJlbmRlckVsZW1l
bnRDaGlsZCkgJiYgZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVyRWxlbWVu
dENoaWxkKS5oYXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKGhhc0JveERlY29yYXRpb25zT3JCYWNrZ3JvdW5kKHJlbmRlckVsZW1lbnRD
aGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAgICAgIGlmIChy
ZW5kZXJFbGVtZW50Q2hpbGQuaXNSZW5kZXJSZXBsYWNlZCgpKQorICAgICAgICBpZiAoaXM8UmVu
ZGVyUmVwbGFjZWQ+KHJlbmRlckVsZW1lbnRDaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgICAgICBpZiAoaGFzUGFpbnRpbmdOb25MYXllckRlc2NlbmRhbnRzKHJlbmRlckVs
ZW1lbnRDaGlsZCwgZGVwdGggKyAxKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCmluZGV4IDcwMTk2ZTU0ZDc5ZTAzZjg0MDg4
MjJkOWRmYTIzNDljNjY0NWVlNWYuLmEwMmI2ZDQ5Y2E3MTdjYzkxMzA1MjE2M2UwMzIzZGQ5ZWI1
MWI4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlbmRlckZsb3dU
aHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlck5h
bWVkRmxvd1RocmVhZC5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAKQEAgLTM3MSwxNiAr
MzcyLDE2IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNvbXB1dGVDaGlsZHJlblN0
eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVyCiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoY2hpbGQuaXNBbm9ueW1vdXMoKSB8fCBjaGlsZC5pc0luRmxvd1JlbmRlckZs
b3dUaHJlYWQoKSkKICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcmVuZGVyZXIuc3R5bGUoKSwg
Y2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQuaXNU
ZXh0KCkpCisgICAgICAgICAgICBlbHNlIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZCkpCiAgICAg
ICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNsb25lKCZyZW5k
ZXJlci5zdHlsZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaGlsZFN0
eWxlSW5SZWdpb24gPSBjb21wdXRlU3R5bGVJblJlZ2lvbih0b1JlbmRlckVsZW1lbnQoY2hpbGQp
LCByZW5kZXJlci5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24g
PSBjb21wdXRlU3R5bGVJblJlZ2lvbihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZCksIHJl
bmRlcmVyLnN0eWxlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc2V0T2JqZWN0U3R5bGVJblJl
Z2lvbigmY2hpbGQsIGNoaWxkU3R5bGVJblJlZ2lvbiwgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQp
OwogCi0gICAgICAgIGlmIChjaGlsZC5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgICAgIGNv
bXB1dGVDaGlsZHJlblN0eWxlSW5SZWdpb24odG9SZW5kZXJFbGVtZW50KGNoaWxkKSk7CisgICAg
ICAgIGlmIChpczxSZW5kZXJFbGVtZW50PihjaGlsZCkpCisgICAgICAgICAgICBjb21wdXRlQ2hp
bGRyZW5TdHlsZUluUmVnaW9uKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkKSk7CiAgICAg
fQogfQogCkBAIC0zODksMTEgKzM5MCwxMSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
OjpzZXRPYmplY3RTdHlsZUluUmVnaW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBQYXNzUgogICAg
IEFTU0VSVChvYmplY3QtPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSk7CiAKICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSAmb2JqZWN0LT5zdHlsZSgpOwot
ICAgIGlmIChvYmplY3QtPmlzUmVuZGVyRWxlbWVudCgpKQotICAgICAgICB0b1JlbmRlckVsZW1l
bnQob2JqZWN0KS0+c2V0U3R5bGVJbnRlcm5hbCgqc3R5bGVJblJlZ2lvbik7CisgICAgaWYgKGlz
PFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpKQorICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50
Pigqb2JqZWN0KS5zZXRTdHlsZUludGVybmFsKCpzdHlsZUluUmVnaW9uKTsKIAotICAgIGlmIChv
YmplY3QtPmlzQm94TW9kZWxPYmplY3QoKSAmJiAhb2JqZWN0LT5oYXNCb3hEZWNvcmF0aW9ucygp
KSB7Ci0gICAgICAgIGJvb2wgaGFzQm94RGVjb3JhdGlvbnMgPSBvYmplY3QtPmlzVGFibGVDZWxs
KCkKKyAgICBpZiAoaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpvYmplY3QpICYmICFvYmplY3Qt
Pmhhc0JveERlY29yYXRpb25zKCkpIHsKKyAgICAgICAgYm9vbCBoYXNCb3hEZWNvcmF0aW9ucyA9
IGlzPFJlbmRlclRhYmxlQ2VsbD4oKm9iamVjdCkKICAgICAgICAgfHwgb2JqZWN0LT5zdHlsZSgp
Lmhhc0JhY2tncm91bmQoKQogICAgICAgICB8fCBvYmplY3QtPnN0eWxlKCkuaGFzQm9yZGVyKCkK
ICAgICAgICAgfHwgb2JqZWN0LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKQpAQCAtNDY1LDggKzQ2
Niw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmplY3Rz
T3JpZ2luYWxTdHlsZSgpCiAgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gY29uc3RfY2Fz
dDxSZW5kZXJPYmplY3QqPihvYmplY3RQYWlyLmtleSk7CiAgICAgICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gb2JqZWN0UmVnaW9uU3R5bGUgPSAmb2JqZWN0LT5zdHlsZSgpOwogICAgICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSBvYmplY3RQYWlyLnZhbHVlLnN0
eWxlOwotICAgICAgICBpZiAob2JqZWN0LT5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgICAg
IHRvUmVuZGVyRWxlbWVudChvYmplY3QpLT5zZXRTdHlsZUludGVybmFsKCpvYmplY3RPcmlnaW5h
bFN0eWxlKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpKQorICAgICAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKm9iamVjdCkuc2V0U3R5bGVJbnRlcm5hbCgq
b2JqZWN0T3JpZ2luYWxTdHlsZSk7CiAKICAgICAgICAgYm9vbCBzaG91bGRDYWNoZVJlZ2lvblN0
eWxlID0gb2JqZWN0UGFpci52YWx1ZS5jYWNoZWQ7CiAgICAgICAgIGlmICghc2hvdWxkQ2FjaGVS
ZWdpb25TdHlsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApp
bmRleCBlZDg5NWU0MDdlYzM1NzkyMmZkZDkyNjljM2UzMjUxNzJhNjViNWM4Li4zODdjMWM5MjIx
NzhmYjRkMTliYjIyNmM3OTI1MWIzNWNhMzA1NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNTkyLDggKzU5Miw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpjbGVhck5lZWRzTGF5b3V0KCkKICAgICBzZXROZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5
b3V0Qml0KGZhbHNlKTsKICAgICBzZXROb3JtYWxDaGlsZE5lZWRzTGF5b3V0Qml0KGZhbHNlKTsK
ICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dEJpdChmYWxzZSk7Ci0gICAgaWYg
KGlzUmVuZGVyRWxlbWVudCgpKQotICAgICAgICB0b1JlbmRlckVsZW1lbnQodGhpcyktPnNldEFu
Y2VzdG9yTGluZUJveERpcnR5KGZhbHNlKTsKKyAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKnRo
aXMpKQorICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGhpcykuc2V0QW5jZXN0b3JM
aW5lQm94RGlydHkoZmFsc2UpOwogI2lmbmRlZiBOREVCVUcKICAgICBjaGVja0Jsb2NrUG9zaXRp
b25lZE9iamVjdHNOZWVkTGF5b3V0KCk7CiAjZW5kaWYKQEAgLTIwMjUsNyArMjAyNSw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogCiAgICAgcmVtb3ZlRnJvbVBhcmVu
dCgpOwogCi0gICAgQVNTRVJUKGRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSB8fCAhaXNSZW5kZXJF
bGVtZW50KCkgfHwgIXZpZXcoKS5mcmFtZVZpZXcoKS5oYXNTbG93UmVwYWludE9iamVjdCh0b1Jl
bmRlckVsZW1lbnQodGhpcykpKTsKKyAgICBBU1NFUlQoZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgp
IHx8ICFpczxSZW5kZXJFbGVtZW50PigqdGhpcykgfHwgIXZpZXcoKS5mcmFtZVZpZXcoKS5oYXNT
bG93UmVwYWludE9iamVjdChkb3duY2FzdDxSZW5kZXJFbGVtZW50Pih0aGlzKSkpOwogCiAgICAg
Ly8gVGhlIHJlbW92ZSgpIGNhbGwgYWJvdmUgbWF5IGludm9rZSBheE9iamVjdENhY2hlKCktPmNo
aWxkcmVuQ2hhbmdlZCgpIG9uIHRoZSBwYXJlbnQsIHdoaWNoIG1heSByZXF1aXJlIHRoZSBBWCBy
ZW5kZXIKICAgICAvLyBvYmplY3QgZm9yIHRoaXMgcmVuZGVyZXIuIFNvIHdlIHJlbW92ZSB0aGUg
QVggcmVuZGVyIG9iamVjdCBub3csIGFmdGVyIHRoZSByZW5kZXJlciBpcyByZW1vdmVkLgpAQCAt
MjM1NiwxMiArMjM1NiwxMiBAQCB2b2lkIFJlbmRlck9iamVjdDo6Y29sbGVjdEFubm90YXRlZFJl
Z2lvbnMoVmVjdG9yPEFubm90YXRlZFJlZ2lvblZhbHVlPiYgcmVnaW9ucwogewogICAgIC8vIFJl
bmRlclRleHRzIGRvbid0IGhhdmUgdGhlaXIgb3duIHN0eWxlLCB0aGV5IGp1c3QgdXNlIHRoZWly
IHBhcmVudCdzIHN0eWxlLAogICAgIC8vIHNvIHdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGVt
LgotICAgIGlmIChpc1RleHQoKSkKKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKnRoaXMpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhZGRBbm5vdGF0ZWRSZWdpb25zKHJlZ2lvbnMpOwotICAgIGZv
ciAoUmVuZGVyT2JqZWN0KiBjdXJyID0gdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5maXJzdENoaWxk
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2libGluZygpKQotICAgICAgICBjdXJyLT5jb2xs
ZWN0QW5ub3RhdGVkUmVnaW9ucyhyZWdpb25zKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogY3Vy
cmVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0aGlzKS5maXJzdENoaWxkKCk7IGN1cnJl
bnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKQorICAgICAgICBjdXJyZW50LT5j
b2xsZWN0QW5ub3RhdGVkUmVnaW9ucyhyZWdpb25zKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCmluZGV4IDRjY2ZiMzRhOThhMDEyMjFmNjA1
MDg0YWE5NWUzODM3NjkyZWE4YjAuLmQ0M2Y5OTZmN2JmNGM2ODM0YjJlMWVlN2ExYmFkMWEyNDEy
MDE0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCkBAIC03
NywxMCArNzcsMTAgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0
ZXJzKElubGluZUZsb3dCb3gqJiBmaXJzdExpbmVCb3gsIExheW8KIAogICAgIC8vIGZpcnN0Q2hp
bGQoKSByZXR1cm5zIHRoZSB3cmFwcGluZyAoYmFja2Ryb3ApIDxkaXY+LiBUaGUgY3VlIG9iamVj
dCBpcwogICAgIC8vIHRoZSA8ZGl2PidzIGZpcnN0IGNoaWxkLgotICAgIFJlbmRlck9iamVjdCog
Zmlyc3RDaGlsZCA9IHRoaXMtPmZpcnN0Q2hpbGQoKTsKLSAgICBSZW5kZXJFbGVtZW50KiBiYWNr
ZHJvcEVsZW1lbnQgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCk7CisgICAgUmVuZGVyT2Jq
ZWN0JiBmaXJzdENoaWxkID0gKnRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICBSZW5kZXJFbGVtZW50
JiBiYWNrZHJvcEVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKTsK
ICAgICAKLSAgICBmaXJzdExpbmVCb3ggPSB0b1JlbmRlcklubGluZShiYWNrZHJvcEVsZW1lbnQt
PmZpcnN0Q2hpbGQoKSktPmZpcnN0TGluZUJveCgpOworICAgIGZpcnN0TGluZUJveCA9IGRvd25j
YXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5maXJzdENoaWxkKCkpLmZpcnN0TGlu
ZUJveCgpOwogICAgIGlmICghZmlyc3RMaW5lQm94KQogICAgICAgICBmaXJzdExpbmVCb3ggPSB0
aGlzLT5maXJzdFJvb3RCb3goKTsKIApAQCAtMzQzLDEwICszNDMsMTAgQEAgdm9pZCBSZW5kZXJW
VFRDdWU6OnJlcG9zaXRpb25HZW5lcmljQ3VlKCkKIAogICAgIC8vIGZpcnN0Q2hpbGQoKSByZXR1
cm5zIHRoZSB3cmFwcGluZyAoYmFja2Ryb3ApIDxkaXY+LiBUaGUgY3VlIG9iamVjdCBpcwogICAg
IC8vIHRoZSA8ZGl2PidzIGZpcnN0IGNoaWxkLgotICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGls
ZCA9IHRoaXMtPmZpcnN0Q2hpbGQoKTsKLSAgICBSZW5kZXJFbGVtZW50KiBiYWNrZHJvcEVsZW1l
bnQgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCk7CisgICAgUmVuZGVyT2JqZWN0JiBmaXJz
dENoaWxkID0gKnRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICBSZW5kZXJFbGVtZW50JiBiYWNrZHJv
cEVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKTsKICAgICAKLSAg
ICBJbmxpbmVGbG93Qm94KiBmaXJzdExpbmVCb3ggPSB0b1JlbmRlcklubGluZShiYWNrZHJvcEVs
ZW1lbnQtPmZpcnN0Q2hpbGQoKSktPmZpcnN0TGluZUJveCgpOworICAgIElubGluZUZsb3dCb3gq
IGZpcnN0TGluZUJveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5m
aXJzdENoaWxkKCkpLmZpcnN0TGluZUJveCgpOwogICAgIGlmIChzdGF0aWNfY2FzdDxUZXh0VHJh
Y2tDdWVHZW5lcmljKj4obV9jdWUpLT51c2VEZWZhdWx0UG9zaXRpb24oKSAmJiBmaXJzdExpbmVC
b3gpIHsKICAgICAgICAgTGF5b3V0VW5pdCBwYXJlbnRXaWR0aCA9IGNvbnRhaW5pbmdCbG9jaygp
LT5sb2dpY2FsV2lkdGgoKTsKICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aCA9IGZpcnN0TGluZUJv
eC0+d2lkdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggYjVlZjI3ZmVkMzYzNThhMTM5YjUxMTNi
ZWU5NDgwYzFmZTFkMjhkYS4uNWNkM2E2MDM5NjMyM2YxOGRlZjMwNzIzNGI3ZWIyNzFlZThiMDAz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTEwMCw5ICsxMDAsOSBAQCB2b2lkIFJlbmRlck1hdGhN
TEZyYWN0aW9uOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIC8q
IGJlZm9yZQogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RDaGlsZCgpLT5pc0VtcHR5KCkpCi0g
ICAgICAgIHRvUmVuZGVyRWxlbWVudChmaXJzdENoaWxkKCkpLT5hZGRDaGlsZChjaGlsZCk7Cisg
ICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpmaXJzdENoaWxkKCkpLmFkZENoaWxkKGNo
aWxkKTsKICAgICBlbHNlCi0gICAgICAgIHRvUmVuZGVyRWxlbWVudChsYXN0Q2hpbGQoKSktPmFk
ZENoaWxkKGNoaWxkKTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmxhc3RDaGls
ZCgpKS5hZGRDaGlsZChjaGlsZCk7CiAgICAgCiAgICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNZW5jbG9zZS5jcHAKaW5kZXggYTI2YWM0OGNlODg4NTRkMWFkZmQxZjdiMjNkZjZhN2E5Y2E2
ZThhYy4uZjVjYWFlNzkwY2NmMzJkNmFhODZmZGE0Nzc3Zjk2MDc0ZWQyMjg2ZSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5j
bG9zZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6YWRk
Q2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmUKICAgICAK
ICAgICBpZiAobmV3Q2hpbGQpIHsKICAgICAgICAgaWYgKGZpcnN0Q2hpbGQoKSAmJiBtZW5jbG9z
ZS0+aXNSYWRpY2FsKCkpCi0gICAgICAgICAgICB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgp
KS0+YWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQo
KSA9PSBmaXJzdENoaWxkKCkgPyBiZWZvcmVDaGlsZCA6IG51bGxwdHIpOworICAgICAgICAgICAg
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmZpcnN0Q2hpbGQoKSkuYWRkQ2hpbGQobmV3Q2hpbGQs
IGJlZm9yZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKSA9PSBmaXJzdENoaWxkKCkgPyBi
ZWZvcmVDaGlsZCA6IG51bGxwdHIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSZW5kZXJN
YXRoTUxCbG9jazo6YWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuY3BwCmluZGV4IGNjYWUyYjk0YzRhMmZjZWRjNTA4NmFjNmEyNGFkMTRmOThiYWM4Njgu
LmM1NDEzMzBlOGQ1OWY0OGNiYjJmNWMxODk1OWFhMzZkZWU1MjhiMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwCkBAIC0xMzc5LDEwICsxMzc5LDEwIEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnJl
YnVpbGRUb2tlbkNvbnRlbnQoY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZykKICAgICAvLyBX
ZSBkZXN0cm95IHRoZSB3cmFwcGVyIGFuZCByZWJ1aWxkIGl0LgogICAgIC8vIEZJWE1FOiBVc2lu
ZyB0aGlzIFJlbmRlclRleHQgbWFrZSB0aGUgdGV4dCBpbmFjY2Vzc2libGUgdG8gdGhlIGR1bXBB
c1RleHQvc2VsZWN0aW9uIGNvZGUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjU1OTcpLgogICAgIGlmIChmaXJzdENoaWxkKCkpCi0gICAgICAgIHRvUmVuZGVyRWxl
bWVudChmaXJzdENoaWxkKCkpLT5kZXN0cm95KCk7CisgICAgICAgIGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KCpmaXJzdENoaWxkKCkpLmRlc3Ryb3koKTsKICAgICBjcmVhdGVXcmFwcGVySWZOZWVk
ZWQoKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyVGV4dD4gdGV4dCA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclRleHQ+KGRvY3VtZW50KCksIHRleHRDb250ZW50KTsKLSAgICB0b1JlbmRlckVsZW1lbnQo
Zmlyc3RDaGlsZCgpKS0+YWRkQ2hpbGQodGV4dC5sZWFrUHRyKCkpOworICAgIGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KCpmaXJzdENoaWxkKCkpLmFkZENoaWxkKHRleHQubGVha1B0cigpKTsKIAog
ICAgIC8vIFdlIHZlcmlmeSB3aGV0aGVyIHRoZSBvcGVyYXRvciB0ZXh0IGNhbiBiZSByZXByZXNl
bnRlZCBieSBhIHNpbmdsZSBVQ2hhci4KICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBoYW5k
bGUgc3Vycm9nYXRlIHBhaXJzIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyMjk2KS4KQEAgLTE2NTQsNyArMTY1NCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0
b3I6OnVwZGF0ZVN0eWxlKCkKICAgICAvLyBXZSBhZGQgc3BhY2luZyBhcm91bmQgdGhlIG9wZXJh
dG9yLgogICAgIC8vIEZJWE1FOiBUaGUgc3BhY2luZyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHdo
b2xlIGVtYmVsbGlzaGVkIG9wZXJhdG9yIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI0ODMxKS4KICAgICAvLyBGSVhNRTogVGhlIHNwYWNpbmcgc2hvdWxkIG9ubHkg
YmUgYWRkZWQgaW5zaWRlIChwZXJoYXBzIGluZmVycmVkKSBtcm93IChodHRwOi8vd3d3LnczLm9y
Zy9UUi9NYXRoTUwvY2hhcHRlcjMuaHRtbCNwcmVzbS5vcHNwYWNpbmcpLgotICAgIGNvbnN0IGF1
dG8mIHdyYXBwZXIgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgpKTsKKyAgICBjb25zdCBh
dXRvJiB3cmFwcGVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RDaGlsZCgpKTsKICAg
ICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoJnN0eWxlKCksIEZMRVgpOwogICAgIG5ld1N0eWxlLmdldCgpLnNldE1hcmdpblN0YXJ0
KExlbmd0aChtX2xlYWRpbmdTcGFjZSwgRml4ZWQpKTsKICAgICBuZXdTdHlsZS5nZXQoKS5zZXRN
YXJnaW5FbmQoTGVuZ3RoKG1fdHJhaWxpbmdTcGFjZSwgRml4ZWQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCmluZGV4IGI2
M2FjZjQxMWNjYWQzNWIzMDg2NTFlMTkwOTNjMmEwNTY3MDdiZWMuLmVkMjA5YWQxYTY4ZTA2NDdk
ZjU0OTg4ZTYzMDdmZDA4MTI1YTJiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApAQCAtMTU4LDE4ICsxNTgsMTggQEAg
dm9pZCBSZW5kZXJNYXRoTUxSb290OjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWwKICAgICBhdXRvIGluZGV4ID0gaW5kZXhXcmFwcGVyKCk7
CiAgICAgUmVuZGVyRWxlbWVudCogYWN0dWFsUGFyZW50OwogICAgIFJlbmRlckVsZW1lbnQqIGFj
dHVhbEJlZm9yZUNoaWxkOwotICAgIGlmIChpc1JlbmRlck1hdGhNTFNxdWFyZVJvb3QoKSkgewor
ICAgIGlmIChpczxSZW5kZXJNYXRoTUxTcXVhcmVSb290PigqdGhpcykpIHsKICAgICAgICAgLy8g
Rm9yIHNxdWFyZSByb290LCB3ZSBhbHdheXMgaW5zZXJ0IHRoZSBjaGlsZCBpbnRvIHRoZSBiYXNl
IHdyYXBwZXIuCiAgICAgICAgIGFjdHVhbFBhcmVudCA9IGJhc2U7CiAgICAgICAgIGlmIChiZWZv
cmVDaGlsZCAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCkgPT0gYmFzZSkKLSAgICAgICAgICAgIGFj
dHVhbEJlZm9yZUNoaWxkID0gdG9SZW5kZXJFbGVtZW50KGJlZm9yZUNoaWxkKTsKKyAgICAgICAg
ICAgIGFjdHVhbEJlZm9yZUNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oYmVmb3JlQ2hp
bGQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhY3R1YWxCZWZvcmVDaGlsZCA9IG51bGxw
dHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRm9yIG1yb290LCB3ZSBpbnNlcnQgdGhlIGNo
aWxkIGludG8gdGhlIHBhcmVudCBvZiBiZWZvcmVDaGlsZCwgb3IgYXQgdGhlIGVuZCBvZiB0aGUg
aW5kZXguIFRoZSB3cmFwcGVyIHN0cnVjdHVyZSBpcyByZW9yZ2FuaXplIGJlbG93LgogICAgICAg
ICBhY3R1YWxQYXJlbnQgPSBiZWZvcmVDaGlsZCA/IGJlZm9yZUNoaWxkLT5wYXJlbnQoKSA6IG51
bGxwdHI7CiAgICAgICAgIGlmIChhY3R1YWxQYXJlbnQgPT0gYmFzZSB8fCBhY3R1YWxQYXJlbnQg
PT0gaW5kZXgpCi0gICAgICAgICAgICBhY3R1YWxCZWZvcmVDaGlsZCA9IHRvUmVuZGVyRWxlbWVu
dChiZWZvcmVDaGlsZCk7CisgICAgICAgICAgICBhY3R1YWxCZWZvcmVDaGlsZCA9IGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KGJlZm9yZUNoaWxkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBhY3R1YWxQYXJlbnQgPSBpbmRleDsKICAgICAgICAgICAgIGFjdHVhbEJlZm9yZUNoaWxkID0g
bnVsbHB0cjsKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OmxheW91
dCgpCiAgICAgLy8gV2UgbGF5b3V0IHRoZSBjaGlsZHJlbi4KICAgICBmb3IgKFJlbmRlck9iamVj
dCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgIHRv
UmVuZGVyRWxlbWVudChjaGlsZCktPmxheW91dCgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlvdXQoKTsKICAgICB9CiAKICAgICBhdXRvIHJhZGljYWwg
PSByYWRpY2FsT3BlcmF0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXggZGM0YmE1NzZhYjYzZjMwZDkzYmE3
ZGVmZDhjMjVlMzMwODMxYmEwNi4uOTlhNWViMTQwOGQzOTcyNTJmNDgzMGY4NDNlNmVkM2Q4ODli
Njk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVuZGVyTWF0aE1MVG9rZW46OlJl
bmRlck1hdGhNTFRva2VuKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3QKIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OmFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAgY3JlYXRlV3JhcHBlcklmTmVl
ZGVkKCk7Ci0gICAgdG9SZW5kZXJFbGVtZW50KGZpcnN0Q2hpbGQoKSktPmFkZENoaWxkKG5ld0No
aWxkLCBiZWZvcmVDaGlsZCk7CisgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmZpcnN0Q2hp
bGQoKSkuYWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkKTsKIH0KIAogdm9pZCBSZW5kZXJN
YXRoTUxUb2tlbjo6Y3JlYXRlV3JhcHBlcklmTmVlZGVkKCkKQEAgLTY5LDggKzY5LDggQEAgdm9p
ZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlVG9rZW5Db250ZW50KCkKICAgICAgICAgLy8gVGhl
IHJlbmRlcmVycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjaGlsZHJlbiBvZiB0aGUgdG9rZW4gZWxl
bWVudCBhcmUgd3JhcHBlZCBpbnNpZGUgYW4gYW5vbnltb3VzIFJlbmRlck1hdGhNTEJsb2NrLgog
ICAgICAgICAvLyBXaGVuIG9uZSBvZiB0aGVzZSByZW5kZXJlcnMgaXMgYSBSZW5kZXJFbGVtZW50
LCB3ZSBoYW5kbGUgdGhlIFJlbmRlck1hdGhNTFRva2VuIGRpZmZlcmVudGx5LgogICAgICAgICAv
LyBGb3Igc29tZSByZWFzb24sIGFuIGFkZGl0aW9uYWwgYW5vbnltb3VzIFJlbmRlckJsb2NrIGlz
IGNyZWF0ZWQgYXMgYSBjaGlsZCBvZiB0aGUgUmVuZGVyTWF0aE1MVG9rZW4gYW5kIHRoZSByZW5k
ZXJlcnMgYXJlIGFjdHVhbGx5IGluc2VydGVkIGludG8gdGhhdCBSZW5kZXJCbG9jayBzbyB3ZSBu
ZWVkIHRvIGRpZyBkb3duIG9uZSBhZGRpdGlvbmFsIGxldmVsIGhlcmUuCi0gICAgICAgIGNvbnN0
IGF1dG8mIHdyYXBwZXIgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgpKTsKLSAgICAgICAg
aWYgKGNvbnN0IGF1dG8mIGJsb2NrID0gdG9SZW5kZXJFbGVtZW50KHdyYXBwZXItPmZpcnN0Q2hp
bGQoKSkpCisgICAgICAgIGNvbnN0IGF1dG8mIHdyYXBwZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PihmaXJzdENoaWxkKCkpOworICAgICAgICBpZiAoY29uc3QgYXV0byYgYmxvY2sgPSBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50Pih3cmFwcGVyLT5maXJzdENoaWxkKCkpKQogICAgICAgICAgICAg
bV9jb250YWluc0VsZW1lbnQgPSBjaGlsZHJlbk9mVHlwZTxSZW5kZXJFbGVtZW50PigqYmxvY2sp
LmZpcnN0KCk7CiAgICAgICAgIHVwZGF0ZVN0eWxlKCk7CiAgICAgfQpAQCAtODEsNyArODEsNyBA
QCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVTdHlsZSgpCiB7CiAgICAgY29uc3QgYXV0
byYgdG9rZW5FbGVtZW50ID0gZWxlbWVudCgpOwogCi0gICAgY29uc3QgYXV0byYgd3JhcHBlciA9
IHRvUmVuZGVyRWxlbWVudChmaXJzdENoaWxkKCkpOworICAgIGNvbnN0IGF1dG8mIHdyYXBwZXIg
PSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKCkpOwogICAgIGF1dG8gbmV3U3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUo
KSwgRkxFWCk7CiAKICAgICBpZiAodG9rZW5FbGVtZW50Lmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1pVGFnKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCmluZGV4IDU0YWRlNWZlNjYzMTg3YTQ1NGJiYTVm
Y2I0NjQ0MzlhMDJlYWY3NjYuLjgxZGI3YjVlMmNlYWJmMjVmNWMyYzFlMzBmNjUxZDYyNzM1MDk3
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBSZW5kZXJNYXRo
TUxVbmRlck92ZXI6OmxheW91dCgpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICB0b1JlbmRlckVsZW1lbnQoY2hpbGQpLT5sYXlvdXQoKTsKKyAgICAgICAg
ICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkubGF5b3V0KCk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBTa2lwcGluZyB0aGUgZW1iZWxsaXNoZWQgb3AgZG9lcyBub3Qgd29yayBm
b3IgbmVzdGVkIHN0cnVjdHVyZXMgbGlrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAppbmRleCA3NWI3YzBjNzJiZDc2MzE4ODcwYTY3
YTlmYjE1NjU1ZGNkOTQ3ZmM5Li4xMTFkYzU3NzFhN2Q5ZTVmODkxYWM5OTYyNmZkZjYzN2M4Nzhi
ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlLmNwcApAQCAtMTg1LDE3ICsxODUsMTcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKFJlbmRlck9iamVjdCYK
ICAgICBpZiAobmVlZHNMYXlvdXQgJiYgIW9iamVjdC5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkp
CiAgICAgICAgIG9iamVjdC5zZXROZWVkc0xheW91dCgpOwogCi0gICAgaWYgKG9iamVjdC5pc1Jl
bmRlckVsZW1lbnQoKSkKLSAgICAgICAgcmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVu
ZGVuY2llcyh0b1JlbmRlckVsZW1lbnQob2JqZWN0KSwgbmVlZHNMYXlvdXQpOworICAgIGlmIChp
czxSZW5kZXJFbGVtZW50PihvYmplY3QpKQorICAgICAgICByZW1vdmVGcm9tQ2FjaGVBbmRJbnZh
bGlkYXRlRGVwZW5kZW5jaWVzKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG9iamVjdCksIG5lZWRz
TGF5b3V0KTsKIAogICAgIC8vIEludmFsaWRhdGUgcmVzb3VyY2VzIGluIGFuY2VzdG9yIGNoYWlu
LCBpZiBuZWVkZWQuCiAgICAgYXV0byBjdXJyZW50ID0gb2JqZWN0LnBhcmVudCgpOwogICAgIHdo
aWxlIChjdXJyZW50KSB7CiAgICAgICAgIHJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBl
bmRlbmNpZXMoKmN1cnJlbnQsIG5lZWRzTGF5b3V0KTsKIAotICAgICAgICBpZiAoY3VycmVudC0+
aXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcj4oKmN1cnJlbnQpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcHJv
Y2VzcyB0aGUgcmVzdCBvZiB0aGUgYW5jZXN0b3JzLgotICAgICAgICAgICAgdG9SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lcigqY3VycmVudCkucmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZSgpOwor
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI+KCpjdXJyZW50
KS5yZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cAppbmRleCA4ZTc1OTA2YzU1MTY3YmZjMmJkMDllMzZlMmRjZGY0Yzc1MjZkMzkyLi41MTBkMTAw
OTgwMzk4MWE2YzM0MGEzNmQ1MzQ0NzBhNjM0NTQ1MTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRlICJQb2ludGVyRXZlbnRzSGl0UnVsZXMu
aCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclNWR0lubGlu
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKQEAgLTEyNywxNSArMTI4
LDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBmaW5kUHJldmlvdXNBbmROZXh0QXR0cmlidXRlcyhS
ZW5kZXJFbGVtZW50KiBzdGFydCwgUmVuZGVyU1ZHCiAgICAgQVNTRVJUKGxvY2F0ZUVsZW1lbnQp
OwogICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgaXRlcmF0aXZlLgogICAgIGZvciAoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCA9IHN0YXJ0LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNTVkdJbmxpbmVUZXh0KCkpIHsK
LSAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQqIHRleHQgPSB0b1JlbmRlclNWR0lubGlu
ZVRleHQoY2hpbGQpOwotICAgICAgICAgICAgaWYgKGxvY2F0ZUVsZW1lbnQgIT0gdGV4dCkgewor
ICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmNoaWxkKSkgeworICAgICAgICAg
ICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRl
eHQ+KCpjaGlsZCk7CisgICAgICAgICAgICBpZiAobG9jYXRlRWxlbWVudCAhPSAmdGV4dCkgewog
ICAgICAgICAgICAgICAgIGlmIChzdG9wQWZ0ZXJOZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAg
IG5leHQgPSB0ZXh0LT5sYXlvdXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgICAgIG5l
eHQgPSB0ZXh0LmxheW91dEF0dHJpYnV0ZXMoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHJldmlvdXMgPSB0
ZXh0LT5sYXlvdXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSB0ZXh0
LmxheW91dEF0dHJpYnV0ZXMoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KIApAQCAtMTQzLDEwICsxNDQsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGZpbmRQcmV2
aW91c0FuZE5leHRBdHRyaWJ1dGVzKFJlbmRlckVsZW1lbnQqIHN0YXJ0LCBSZW5kZXJTVkcKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFjaGlsZC0+aXNT
VkdJbmxpbmUoKSkKKyAgICAgICAgaWYgKCFpczxSZW5kZXJTVkdJbmxpbmU+KCpjaGlsZCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoZmluZFByZXZpb3VzQW5kTmV4dEF0
dHJpYnV0ZXModG9SZW5kZXJFbGVtZW50KGNoaWxkKSwgbG9jYXRlRWxlbWVudCwgc3RvcEFmdGVy
TmV4dCwgcHJldmlvdXMsIG5leHQpKQorICAgICAgICBpZiAoZmluZFByZXZpb3VzQW5kTmV4dEF0
dHJpYnV0ZXMoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGQpLCBsb2NhdGVFbGVtZW50LCBz
dG9wQWZ0ZXJOZXh0LCBwcmV2aW91cywgbmV4dCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTI5Niw4ICsyOTcsOCBAQCB2b2lkIFJlbmRlclNWR1RleHQ6OnN1YnRyZWVT
dHlsZURpZENoYW5nZShSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0KQogICAgIC8vIG5vciB0aGUg
bGF5b3V0IGF0dHJpYnV0ZXMgY2FjaGVkIGluIHRoZSBsZWFmICN0ZXh0IHJlbmRlcmVycy4KICAg
ICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJnZVByZXZlbnRlcjsKICAgICBm
b3IgKFJlbmRlck9iamVjdCogZGVzY2VuZGFudCA9IHRleHQ7IGRlc2NlbmRhbnQ7IGRlc2NlbmRh
bnQgPSBkZXNjZW5kYW50LT5uZXh0SW5QcmVPcmRlcih0ZXh0KSkgewotICAgICAgICBpZiAoZGVz
Y2VuZGFudC0+aXNTVkdJbmxpbmVUZXh0KCkpCi0gICAgICAgICAgICBtX2xheW91dEF0dHJpYnV0
ZXNCdWlsZGVyLnJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKHRvUmVuZGVyU1ZHSW5saW5l
VGV4dChkZXNjZW5kYW50KSk7CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdJbmxpbmVUZXh0Pigq
ZGVzY2VuZGFudCkpCisgICAgICAgICAgICBtX2xheW91dEF0dHJpYnV0ZXNCdWlsZGVyLnJlYnVp
bGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KCpk
ZXNjZW5kYW50KSk7CiAgICAgfQogfQogCkBAIC0zMzgsNyArMzM5LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIHVwZGF0ZUZvbnRJbkFsbERlc2NlbmRhbnRzKFJlbmRlck9iamVjdCogc3RhcnQsIFNW
R1RleHRMYXlvdXQKICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCA9IHRvUmVuZGVy
U1ZHSW5saW5lVGV4dCgqZGVzY2VuZGFudCk7CiAgICAgICAgIHRleHQudXBkYXRlU2NhbGVkRm9u
dCgpOwogICAgICAgICBpZiAoYnVpbGRlcikKLSAgICAgICAgICAgIGJ1aWxkZXItPnJlYnVpbGRN
ZXRyaWNzRm9yVGV4dFJlbmRlcmVyKCZ0ZXh0KTsKKyAgICAgICAgICAgIGJ1aWxkZXItPnJlYnVp
bGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKHRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggM2M0ODNh
Mzg0ZDYwMWM0Yzk0NTViZjZhNDBjMWM2MDVmZTU5YmZiMS4uYmI1MmVmMmQ3ZjY3MTE1ZWY2Mzc0
Y2IxYTdkNGFlYjVjMjVlOTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC0yNDYsMjEgKzI0NiwyMSBAQCB2b2lkIFNWR1Jl
bmRlclN1cHBvcnQ6OmxheW91dENoaWxkcmVuKFJlbmRlckVsZW1lbnQmIHN0YXJ0LCBib29sIHNl
bGZOZWVkc0xheW91dAogCiAgICAgICAgIGlmICh0cmFuc2Zvcm1DaGFuZ2VkKSB7CiAgICAgICAg
ICAgICAvLyBJZiB0aGUgdHJhbnNmb3JtIGNoYW5nZWQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHRl
eHQgbWV0cmljcyAobm90ZTogdGhpcyBhbHNvIGhhcHBlbnMgZm9yIGxheW91dFNpemVDaGFuZ2Vk
PXRydWUpLgotICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1NWR1RleHQoKSkKLSAgICAgICAgICAg
ICAgICB0b1JlbmRlclNWR1RleHQoY2hpbGQpLT5zZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCk7
CisgICAgICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHVGV4dD4oKmNoaWxkKSkKKyAgICAgICAgICAg
ICAgICBkb3duY2FzdDxSZW5kZXJTVkdUZXh0PigqY2hpbGQpLnNldE5lZWRzVGV4dE1ldHJpY3NV
cGRhdGUoKTsKICAgICAgICAgICAgIG5lZWRzTGF5b3V0ID0gdHJ1ZTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChsYXlvdXRTaXplQ2hhbmdlZCkgewogICAgICAgICAgICAgLy8gV2hlbiBzZWxm
TmVlZHNMYXlvdXQgaXMgZmFsc2UgYW5kIHRoZSBsYXlvdXQgc2l6ZSBjaGFuZ2VkLCB3ZSBoYXZl
IHRvIGNoZWNrIHdoZXRoZXIgdGhpcyBjaGlsZCB1c2VzIHJlbGF0aXZlIGxlbmd0aHMKLSAgICAg
ICAgICAgIGlmIChTVkdFbGVtZW50KiBlbGVtZW50ID0gY2hpbGQtPm5vZGUoKS0+aXNTVkdFbGVt
ZW50KCkgPyBkb3duY2FzdDxTVkdFbGVtZW50PihjaGlsZC0+bm9kZSgpKSA6IG51bGxwdHIpIHsK
KyAgICAgICAgICAgIGlmIChTVkdFbGVtZW50KiBlbGVtZW50ID0gaXM8U1ZHRWxlbWVudD4oKmNo
aWxkLT5ub2RlKCkpID8gZG93bmNhc3Q8U1ZHRWxlbWVudD4oY2hpbGQtPm5vZGUoKSkgOiBudWxs
cHRyKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1JlbGF0aXZlTGVuZ3Rocygp
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGxheW91dCBzaXplIGNoYW5nZWQg
YW5kIHdoZW4gdXNpbmcgcmVsYXRpdmUgdmFsdWVzIHRlbGwgdGhlIFJlbmRlclNWR1NoYXBlIHRv
IHVwZGF0ZSBpdHMgc2hhcGUgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+
aXNTVkdTaGFwZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJTVkdTaGFwZShj
aGlsZCktPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY2hpbGQtPmlzU1ZHVGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b1JlbmRl
clNWR1RleHQoY2hpbGQpLT5zZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0b1JlbmRlclNWR1RleHQoY2hpbGQpLT5zZXROZWVkc1Bvc2l0aW9uaW5n
VmFsdWVzVXBkYXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpczxSZW5kZXJTVkdTaGFw
ZT4oKmNoaWxkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1No
YXBlPigqY2hpbGQpLnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoaXM8UmVuZGVyU1ZHVGV4dD4oKmNoaWxkKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4oKmNoaWxkKS5zZXROZWVkc1RleHRNZXRyaWNz
VXBkYXRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdUZXh0
PigqY2hpbGQpLnNldE5lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG5lZWRzTGF5b3V0ID0gdHJ1ZTsKQEAg
LTI3MiwxNSArMjcyLDE1IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bGF5b3V0Q2hpbGRyZW4o
UmVuZGVyRWxlbWVudCYgc3RhcnQsIGJvb2wgc2VsZk5lZWRzTGF5b3V0CiAgICAgICAgICAgICBj
aGlsZC0+c2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKIAogICAgICAgICBpZiAoY2hpbGQt
Pm5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgICAgIHRvUmVuZGVyRWxlbWVudChjaGlsZCktPmxh
eW91dCgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlv
dXQoKTsKICAgICAgICAgICAgIC8vIFJlbmRlcmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHJlcGFp
bnRpbmcgdGhlbXNlbHZlcyB3aGVuIGNoYW5naW5nLCBleGNlcHQKICAgICAgICAgICAgIC8vIGZv
ciB0aGUgaW5pdGlhbCBwYWludCB0byBhdm9pZCBwb3RlbnRpYWwgZG91YmxlLXBhaW50aW5nIGNh
dXNlZCBieSBub24tc2Vuc2ljYWwgIm9sZCIgYm91bmRzLgogICAgICAgICAgICAgLy8gV2UgY291
bGQgaGFuZGxlIHRoaXMgaW4gdGhlIGluZGl2aWR1YWwgb2JqZWN0cywgYnV0IGZvciBub3cgaXQn
cyBlYXNpZXIgdG8gaGF2ZQogICAgICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lcnMgY2FsbCBy
ZXBhaW50KCkuICAoUmVuZGVyQmxvY2s6OmxheW91dCogaGFzIHNpbWlsYXIgbG9naWMuKQogICAg
ICAgICAgICAgaWYgKCFjaGlsZEV2ZXJIYWRMYXlvdXQpCiAgICAgICAgICAgICAgICAgY2hpbGQt
PnJlcGFpbnQoKTsKLSAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRTaXplQ2hhbmdlZCAmJiBjaGls
ZC0+aXNSZW5kZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBlbGVtZW50c1RoYXREaWROb3RSZWNl
aXZlTGF5b3V0LmFkZCh0b1JlbmRlckVsZW1lbnQoY2hpbGQpKTsKKyAgICAgICAgfSBlbHNlIGlm
IChsYXlvdXRTaXplQ2hhbmdlZCAmJiBpczxSZW5kZXJFbGVtZW50PigqY2hpbGQpKQorICAgICAg
ICAgICAgZWxlbWVudHNUaGF0RGlkTm90UmVjZWl2ZUxheW91dC5hZGQoZG93bmNhc3Q8UmVuZGVy
RWxlbWVudD4oY2hpbGQpKTsKIAogICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3Vy
Y2VzQ2FjaGUuY3BwCmluZGV4IGE5NTBjNDBjZGY4ZTRjODY5YWVkOWExZjAwZWEwOWMzNTQ3Zjcy
MmIuLjg1NTZlY2RlMjYyZjIxMjQ4NWRlMjJjZWVhODk0YWQ3OTFlYWRiNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2FzQWRkZWRUb1Ry
ZWUoUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIAogICAgIGlmICghcmVuZGVyZXJDYW5IYXZlUmVz
b3VyY2VzKHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlckVsZW1lbnQmIGVs
ZW1lbnRSZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudChyZW5kZXJlcik7CisgICAgUmVuZGVyRWxl
bWVudCYgZWxlbWVudFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIp
OwogICAgIHJlc291cmNlc0NhY2hlRnJvbVJlbmRlcmVyKGVsZW1lbnRSZW5kZXJlcikuYWRkUmVz
b3VyY2VzRnJvbVJlbmRlcmVyKGVsZW1lbnRSZW5kZXJlciwgZWxlbWVudFJlbmRlcmVyLnN0eWxl
KCkpOwogfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xp
ZW50V2lsbEJlUmVtb3ZlZEZyb21UcmVlKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiAKICAgICBp
ZiAoIXJlbmRlcmVyQ2FuSGF2ZVJlc291cmNlcyhyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsK
LSAgICBSZW5kZXJFbGVtZW50JiBlbGVtZW50UmVuZGVyZXIgPSB0b1JlbmRlckVsZW1lbnQocmVu
ZGVyZXIpOworICAgIFJlbmRlckVsZW1lbnQmIGVsZW1lbnRSZW5kZXJlciA9IGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KHJlbmRlcmVyKTsKICAgICByZXNvdXJjZXNDYWNoZUZyb21SZW5kZXJlcihl
bGVtZW50UmVuZGVyZXIpLnJlbW92ZVJlc291cmNlc0Zyb21SZW5kZXJlcihlbGVtZW50UmVuZGVy
ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKaW5kZXggNDY3YzIxNTgxYjIx
ZDUxNTA1ZjcyYjU2NmFhNDVhYmM0OGM0ZWU5YS4uMTZlMjdjYzFmODE3OWJmZWI5NzFlMmU0MDc2
ZWU4ZDQ5ODhhMTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCB2b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRB
dHRyaWJ1dGVzRm9yVGV4dFJlbmRlcmVyKFJlbmRlcgogICAgICAgICBidWlsZENoYXJhY3RlckRh
dGFNYXAoKnRleHRSb290KTsKICAgICB9CiAKLSAgICBtX21ldHJpY3NCdWlsZGVyLmJ1aWxkTWV0
cmljc0FuZExheW91dEF0dHJpYnV0ZXModGV4dFJvb3QsICZ0ZXh0LCBtX2NoYXJhY3RlckRhdGFN
YXApOworICAgIG1fbWV0cmljc0J1aWxkZXIuYnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRl
cygqdGV4dFJvb3QsICZ0ZXh0LCBtX2NoYXJhY3RlckRhdGFNYXApOwogfQogCiBib29sIFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3Vi
dHJlZShSZW5kZXJTVkdUZXh0JiB0ZXh0Um9vdCkKQEAgLTY4LDEzICs2OCwxMiBAQCBib29sIFNW
R1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9y
U3VidHJlZShSZW5kZXJTVgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBidWlsZENoYXJh
Y3RlckRhdGFNYXAodGV4dFJvb3QpOwotICAgIG1fbWV0cmljc0J1aWxkZXIuYnVpbGRNZXRyaWNz
QW5kTGF5b3V0QXR0cmlidXRlcygmdGV4dFJvb3QsIG51bGxwdHIsIG1fY2hhcmFjdGVyRGF0YU1h
cCk7CisgICAgbV9tZXRyaWNzQnVpbGRlci5idWlsZE1ldHJpY3NBbmRMYXlvdXRBdHRyaWJ1dGVz
KHRleHRSb290LCBudWxscHRyLCBtX2NoYXJhY3RlckRhdGFNYXApOwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6cmVidWlsZE1ldHJp
Y3NGb3JUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCkKK3ZvaWQgU1ZHVGV4
dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpyZWJ1aWxkTWV0cmljc0ZvclRleHRSZW5kZXJlcihS
ZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0KQogewotICAgIEFTU0VSVCh0ZXh0KTsKICAgICBtX21l
dHJpY3NCdWlsZGVyLm1lYXN1cmVUZXh0UmVuZGVyZXIodGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1
dGVzQnVpbGRlci5oCmluZGV4IDYxYWZjMWNmNTM3NjhmNjY2Y2Y0OWZiMWRiZmE5YjcxMWZlZGJm
NzkuLmRmMzlhZjhhMTFhYjA5MmE0Njk0YWExMzQyMjRmYTNkZjc3ZDcxNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0
cmlidXRlc0J1aWxkZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBidWls
ZExheW91dEF0dHJpYnV0ZXNGb3JGb3JTdWJ0cmVlKFJlbmRlclNWR1RleHQmKTsKICAgICB2b2lk
IGJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvclRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0
Jik7CiAKLSAgICB2b2lkIHJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lu
bGluZVRleHQqKTsKKyAgICB2b2lkIHJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKFJlbmRl
clNWR0lubGluZVRleHQmKTsKIAogICAgIC8vIEludm9rZWQgd2hlbmV2ZXIgdGhlIHVuZGVybHlp
bmcgRE9NIHRyZWUgY2hhbmdlcywgc28gdGhhdCBtX3RleHRQb3NpdGlvbnMgaXMgcmVidWlsZC4K
ICAgICB2b2lkIGNsZWFyVGV4dFBvc2l0aW9uaW5nRWxlbWVudHMoKSB7IG1fdGV4dFBvc2l0aW9u
cy5jbGVhcigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggZTU0MjcyZjQyMmQzYWM0MDg3NTliNmFkNWQ2
YjZhNDQ3ZTMyM2U5NC4uODA4MWViOTllZDNjNzIwMmY0Y2M5ZjQzNGQ5YzE3MjQ4NmJmNTkzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJp
Y3NCdWlsZGVyLmNwcApAQCAtOTEsMTYgKzkxLDE2IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWls
ZGVyOjphZHZhbmNlQ29tcGxleFRleHQoKQogICAgIG1fdG90YWxXaWR0aCA9IG1fY29tcGxleFN0
YXJ0VG9DdXJyZW50TWV0cmljcy53aWR0aCgpOwogfQogCi12b2lkIFNWR1RleHRNZXRyaWNzQnVp
bGRlcjo6aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxp
bmVUZXh0KiB0ZXh0KQordm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFz
dXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCkKIHsKLSAg
ICBtX3RleHQgPSB0ZXh0OworICAgIG1fdGV4dCA9ICZ0ZXh0OwogICAgIG1fdGV4dFBvc2l0aW9u
ID0gMDsKICAgICBtX2N1cnJlbnRNZXRyaWNzID0gU1ZHVGV4dE1ldHJpY3MoKTsKICAgICBtX2Nv
bXBsZXhTdGFydFRvQ3VycmVudE1ldHJpY3MgPSBTVkdUZXh0TWV0cmljcygpOwogICAgIG1fdG90
YWxXaWR0aCA9IDA7CiAKLSAgICBjb25zdCBGb250JiBzY2FsZWRGb250ID0gdGV4dC0+c2NhbGVk
Rm9udCgpOwotICAgIG1fcnVuID0gU1ZHVGV4dE1ldHJpY3M6OmNvbnN0cnVjdFRleHRSdW4oKnRl
eHQpOworICAgIGNvbnN0IEZvbnQmIHNjYWxlZEZvbnQgPSB0ZXh0LnNjYWxlZEZvbnQoKTsKKyAg
ICBtX3J1biA9IFNWR1RleHRNZXRyaWNzOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQpOwogICAgIG1f
aXNDb21wbGV4VGV4dCA9IHNjYWxlZEZvbnQuY29kZVBhdGgobV9ydW4pID09IEZvbnQ6OkNvbXBs
ZXg7CiAKICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQpAQCAtMTI2LDExICsxMjYsOSBAQCBzdHJ1
Y3QgTWVhc3VyZVRleHREYXRhIHsKICAgICB1bnNpZ25lZCBza2lwcGVkQ2hhcmFjdGVyczsKIH07
CiAKLXZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRl
clNWR0lubGluZVRleHQqIHRleHQsIE1lYXN1cmVUZXh0RGF0YSogZGF0YSkKK3ZvaWQgU1ZHVGV4
dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQm
IHRleHQsIE1lYXN1cmVUZXh0RGF0YSogZGF0YSkKIHsKLSAgICBBU1NFUlQodGV4dCk7Ci0KLSAg
ICBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyogYXR0cmlidXRlcyA9IHRleHQtPmxheW91dEF0dHJp
YnV0ZXMoKTsKKyAgICBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyogYXR0cmlidXRlcyA9IHRleHQu
bGF5b3V0QXR0cmlidXRlcygpOwogICAgIFZlY3RvcjxTVkdUZXh0TWV0cmljcz4qIHRleHRNZXRy
aWNzVmFsdWVzID0gJmF0dHJpYnV0ZXMtPnRleHRNZXRyaWNzVmFsdWVzKCk7CiAgICAgaWYgKGRh
dGEtPnByb2Nlc3NSZW5kZXJlcikgewogICAgICAgICBpZiAoZGF0YS0+YWxsQ2hhcmFjdGVyc01h
cCkKQEAgLTE0MCw3ICsxMzgsNyBAQCB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6bWVhc3Vy
ZVRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0LCBNZWFzdQogICAgIH0KIAog
ICAgIGluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIodGV4dCk7Ci0gICAgYm9v
bCBwcmVzZXJ2ZVdoaXRlU3BhY2UgPSB0ZXh0LT5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBQUkU7
CisgICAgYm9vbCBwcmVzZXJ2ZVdoaXRlU3BhY2UgPSB0ZXh0LnN0eWxlKCkud2hpdGVTcGFjZSgp
ID09IFBSRTsKICAgICBpbnQgc3Vycm9nYXRlUGFpckNoYXJhY3RlcnMgPSAwOwogCiAgICAgd2hp
bGUgKGFkdmFuY2UoKSkgewpAQCAtMTc4LDkgKzE3Niw5IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqIHRleHQsIE1l
YXN1CiB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6d2Fsa1RyZWUoUmVuZGVyRWxlbWVudCYg
c3RhcnQsIFJlbmRlclNWR0lubGluZVRleHQqIHN0b3BBdExlYWYsIE1lYXN1cmVUZXh0RGF0YSog
ZGF0YSkKIHsKICAgICBmb3IgKGF1dG8gY2hpbGQgPSBzdGFydC5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNT
VkdJbmxpbmVUZXh0KCkpIHsKLSAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQqIHRleHQg
PSB0b1JlbmRlclNWR0lubGluZVRleHQoY2hpbGQpOwotICAgICAgICAgICAgaWYgKHN0b3BBdExl
YWYgJiYgc3RvcEF0TGVhZiAhPSB0ZXh0KSB7CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdJbmxp
bmVUZXh0PigqY2hpbGQpKSB7CisgICAgICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0
ID0gZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmNoaWxkKTsKKyAgICAgICAgICAgIGlm
IChzdG9wQXRMZWFmICYmIHN0b3BBdExlYWYgIT0gJnRleHQpIHsKICAgICAgICAgICAgICAgICBk
YXRhLT5wcm9jZXNzUmVuZGVyZXIgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBtZWFzdXJlVGV4
dFJlbmRlcmVyKHRleHQsIGRhdGEpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTk0
LDMwICsxOTIsMjcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OndhbGtUcmVlKFJlbmRl
ckVsZW1lbnQmIHN0YXJ0LCBSZW5kZXJTVkdJbmxpbmVUZXh0KgogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWNoaWxkLT5pc1NWR0lubGluZSgpKQorICAg
ICAgICBpZiAoIWlzPFJlbmRlclNWR0lubGluZT4oKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIHdhbGtUcmVlKHRvUmVuZGVyRWxlbWVudCgqY2hpbGQpLCBzdG9wQXRM
ZWFmLCBkYXRhKTsKKyAgICAgICAgd2Fsa1RyZWUoZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lPigq
Y2hpbGQpLCBzdG9wQXRMZWFmLCBkYXRhKTsKICAgICB9CiB9CiAKLXZvaWQgU1ZHVGV4dE1ldHJp
Y3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqIHRleHQp
Cit2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5kZXJlcihSZW5kZXJT
VkdJbmxpbmVUZXh0JiB0ZXh0KQogewotICAgIEFTU0VSVCh0ZXh0KTsKLQotICAgIGF1dG8qIHRl
eHRSb290ID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKCp0ZXh0
KTsKKyAgICBhdXRvKiB0ZXh0Um9vdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1Rl
eHRBbmNlc3Rvcih0ZXh0KTsKICAgICBpZiAoIXRleHRSb290KQogICAgICAgICByZXR1cm47CiAK
LSAgICBNZWFzdXJlVGV4dERhdGEgZGF0YSgwKTsKLSAgICB3YWxrVHJlZSgqdGV4dFJvb3QsIHRl
eHQsICZkYXRhKTsKKyAgICBNZWFzdXJlVGV4dERhdGEgZGF0YShudWxscHRyKTsKKyAgICB3YWxr
VHJlZSgqdGV4dFJvb3QsICZ0ZXh0LCAmZGF0YSk7CiB9CiAKLXZvaWQgU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyOjpidWlsZE1ldHJpY3NBbmRMYXlvdXRBdHRyaWJ1dGVzKFJlbmRlclNWR1RleHQqIHRl
eHRSb290LCBSZW5kZXJTVkdJbmxpbmVUZXh0KiBzdG9wQXRMZWFmLCBTVkdDaGFyYWN0ZXJEYXRh
TWFwJiBhbGxDaGFyYWN0ZXJzTWFwKQordm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmJ1aWxk
TWV0cmljc0FuZExheW91dEF0dHJpYnV0ZXMoUmVuZGVyU1ZHVGV4dCYgdGV4dFJvb3QsIFJlbmRl
clNWR0lubGluZVRleHQqIHN0b3BBdExlYWYsIFNWR0NoYXJhY3RlckRhdGFNYXAmIGFsbENoYXJh
Y3RlcnNNYXApCiB7Ci0gICAgQVNTRVJUKHRleHRSb290KTsKICAgICBNZWFzdXJlVGV4dERhdGEg
ZGF0YSgmYWxsQ2hhcmFjdGVyc01hcCk7Ci0gICAgd2Fsa1RyZWUoKnRleHRSb290LCBzdG9wQXRM
ZWFmLCAmZGF0YSk7CisgICAgd2Fsa1RyZWUodGV4dFJvb3QsIHN0b3BBdExlYWYsICZkYXRhKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TWV0cmljc0J1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1l
dHJpY3NCdWlsZGVyLmgKaW5kZXggZTljMmU0NGE3NTdkMjFmYTBmNjljMzUzMTM2MmJkM2Q5MmVi
N2IxNC4uMDhlMDdlZWIxOTJiM2IxMDQ1ZWEyMTQzYzdlYjM2ODZiNDViZjY3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5o
CkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFNWR1RleHRNZXRyaWNzQnVpbGRlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU1ZHVGV4dE1ldHJpY3NCdWlsZGVyKTsKIHB1YmxpYzoKICAgICBT
VkdUZXh0TWV0cmljc0J1aWxkZXIoKTsKLSAgICB2b2lkIG1lYXN1cmVUZXh0UmVuZGVyZXIoUmVu
ZGVyU1ZHSW5saW5lVGV4dCopOwotICAgIHZvaWQgYnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmli
dXRlcyhSZW5kZXJTVkdUZXh0KiwgUmVuZGVyU1ZHSW5saW5lVGV4dCogc3RvcEF0TGVhZiwgU1ZH
Q2hhcmFjdGVyRGF0YU1hcCYgYWxsQ2hhcmFjdGVyc01hcCk7CisgICAgdm9pZCBtZWFzdXJlVGV4
dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQmKTsKKyAgICB2b2lkIGJ1aWxkTWV0cmljc0Fu
ZExheW91dEF0dHJpYnV0ZXMoUmVuZGVyU1ZHVGV4dCYsIFJlbmRlclNWR0lubGluZVRleHQqIHN0
b3BBdExlYWYsIFNWR0NoYXJhY3RlckRhdGFNYXAmIGFsbENoYXJhY3RlcnNNYXApOwogCiBwcml2
YXRlOgogICAgIGJvb2wgYWR2YW5jZSgpOwpAQCAtNDQsOSArNDQsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWR2YW5jZUNvbXBsZXhUZXh0KCk7CiAgICAgYm9vbCBjdXJyZW50Q2hhcmFjdGVyU3Rh
cnRzU3Vycm9nYXRlUGFpcigpIGNvbnN0OwogCi0gICAgdm9pZCBpbml0aWFsaXplTWVhc3VyZW1l
bnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqKTsKKyAgICB2b2lkIGluaXRp
YWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCYpOwog
ICAgIHZvaWQgd2Fsa1RyZWUoUmVuZGVyRWxlbWVudCYsIFJlbmRlclNWR0lubGluZVRleHQqIHN0
b3BBdExlYWYsIE1lYXN1cmVUZXh0RGF0YSopOwotICAgIHZvaWQgbWVhc3VyZVRleHRSZW5kZXJl
cihSZW5kZXJTVkdJbmxpbmVUZXh0KiwgTWVhc3VyZVRleHREYXRhKik7CisgICAgdm9pZCBtZWFz
dXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQmLCBNZWFzdXJlVGV4dERhdGEqKTsK
IAogICAgIFJlbmRlclNWR0lubGluZVRleHQqIG1fdGV4dDsKICAgICBUZXh0UnVuIG1fcnVuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVy
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5S
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0MjE4YWY0OTUzNjQ0MTUwNzlkYjgzYTJlYWY2Yzg5
YjBlMTNkNzJlLi4xZmNjNDA5OWI4MDQzOTFmOTRkYzE4M2U2ZTNhZDRmMGYzNjYzMGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5S
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjQ2LDE0ICsyNDYsMTQgQEAgY2xhc3MgRHVtbXlHbHlw
aFRvUGF0aFRyYW5zbGF0b3IgZmluYWwgOiBwdWJsaWMgR2x5cGhUb1BhdGhUcmFuc2xhdG9yIHsK
IAogc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9QYXRoVHJhbnNsYXRvcj4gU1ZHVGV4dFJ1blJlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUdseXBoVG9QYXRoVHJhbnNsYXRvcihjb25zdCBTaW1wbGVGb250
RGF0YSYgZm9udERhdGEsIGNvbnN0IFRleHRSdW4qIHRleHRSdW4sIGNvbnN0IEdseXBoQnVmZmVy
JiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50KSBjb25zdAogewotICAgIFNWR0ZvbnRFbGVtZW50KiBmb250RWxlbWVudCA9IDA7Ci0g
ICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmb250RmFjZUVsZW1lbnQgPSAwOworICAgIFNWR0ZvbnRF
bGVtZW50KiBmb250RWxlbWVudCA9IG51bGxwdHI7CisgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBm
b250RmFjZUVsZW1lbnQgPSBudWxscHRyOwogCiAgICAgY29uc3QgU1ZHRm9udERhdGEqIHN2Z0Zv
bnREYXRhID0gc3ZnRm9udEFuZEZvbnRGYWNlRWxlbWVudEZvckZvbnREYXRhKCZmb250RGF0YSwg
Zm9udEZhY2VFbGVtZW50LCBmb250RWxlbWVudCk7CiAgICAgaWYgKCFmb250RWxlbWVudCB8fCAh
Zm9udEZhY2VFbGVtZW50KQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEdW1teUds
eXBoVG9QYXRoVHJhbnNsYXRvcj4oKTsKIAotICAgIGF1dG8mIGVsZW1lbnRSZW5kZXJlciA9IHJl
bmRlcmVyKCkuaXNSZW5kZXJFbGVtZW50KCkgPyB0b1JlbmRlckVsZW1lbnQocmVuZGVyZXIoKSkg
OiAqcmVuZGVyZXIoKS5wYXJlbnQoKTsKKyAgICBhdXRvJiBlbGVtZW50UmVuZGVyZXIgPSBpczxS
ZW5kZXJFbGVtZW50PihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRl
cmVyKCkpIDogKnJlbmRlcmVyKCkucGFyZW50KCk7CiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0g
ZWxlbWVudFJlbmRlcmVyLnN0eWxlKCk7CiAgICAgYm9vbCBpc1ZlcnRpY2FsVGV4dCA9IHN0eWxl
LnN2Z1N0eWxlKCkuaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKCk7CiAKQEAgLTI3Miw3ICsyNzIsNyBA
QCB2b2lkIFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpkcmF3U1ZHR2x5cGhzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgUwogICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNl
ID0gc29saWRQYWludGluZ1Jlc291cmNlOwogICAgIH0KIAotICAgIGF1dG8mIGVsZW1lbnRSZW5k
ZXJlciA9IHJlbmRlcmVyKCkuaXNSZW5kZXJFbGVtZW50KCkgPyB0b1JlbmRlckVsZW1lbnQocmVu
ZGVyZXIoKSkgOiAqcmVuZGVyZXIoKS5wYXJlbnQoKTsKKyAgICBhdXRvJiBlbGVtZW50UmVuZGVy
ZXIgPSBpczxSZW5kZXJFbGVtZW50PihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlckVsZW1l
bnQ+KHJlbmRlcmVyKCkpIDogKnJlbmRlcmVyKCkucGFyZW50KCk7CiAgICAgUmVuZGVyU3R5bGUm
IHN0eWxlID0gZWxlbWVudFJlbmRlcmVyLnN0eWxlKCk7CiAKICAgICBBU1NFUlQoYWN0aXZlUGFp
bnRpbmdSZXNvdXJjZSk7CkBAIC0yODIsOSArMjgyLDkgQEAgdm9pZCBTVkdUZXh0UnVuUmVuZGVy
aW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFMKICAgICAgICAgUGF0aCBnbHlwaFBhdGggPSB0cmFuc2xhdG9yLT5wYXRoKCk7CiAgICAgICAg
IGlmIChhY3RpdmVQYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKGVsZW1lbnRSZW5kZXJl
ciwgc3R5bGUsIGNvbnRleHQsIHJlc291cmNlTW9kZSkpIHsKICAgICAgICAgICAgIGZsb2F0IHN0
cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQtPnN0cm9rZVRoaWNrbmVzcygpOwotICAgICAgICAgICAg
aWYgKHJlbmRlcmVyKCkuaXNTVkdJbmxpbmVUZXh0KCkpCi0gICAgICAgICAgICAgICAgY29udGV4
dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyAqIHRvUmVuZGVyU1ZHSW5saW5l
VGV4dChyZW5kZXJlcigpKS5zY2FsaW5nRmFjdG9yKCkpOwotICAgICAgICAgICAgYWN0aXZlUGFp
bnRpbmdSZXNvdXJjZS0+cG9zdEFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBjb250ZXh0
LCByZXNvdXJjZU1vZGUsICZnbHlwaFBhdGgsIDApOworICAgICAgICAgICAgaWYgKGlzPFJlbmRl
clNWR0lubGluZVRleHQ+KHJlbmRlcmVyKCkpKQorICAgICAgICAgICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MgKiBkb3duY2FzdDxSZW5kZXJTVkdJbmxp
bmVUZXh0PihyZW5kZXJlcigpKS5zY2FsaW5nRmFjdG9yKCkpOworICAgICAgICAgICAgYWN0aXZl
UGFpbnRpbmdSZXNvdXJjZS0+cG9zdEFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBjb250
ZXh0LCByZXNvdXJjZU1vZGUsICZnbHlwaFBhdGgsIG51bGxwdHIpOwogICAgICAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0zMTQsOSArMzE0LDkgQEAgR2x5cGhEYXRhIFNWR1RleHRSdW5SZW5kZXJpbmdDb250
ZXh0OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udCYgZm9udCwgV2kKICAgICAvLyBD
aGFyYWN0ZXJzIGVuY2xvc2VkIGJ5IGFuIDxhbHRHbHlwaD4gZWxlbWVudCwgbWF5IG5vdCBiZSBy
ZWdpc3RlcmVkIGluIHRoZSBHbHlwaFBhZ2UuCiAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIG9y
aWdpbmFsRm9udERhdGEgPSBnbHlwaERhdGEuZm9udERhdGE7CiAgICAgaWYgKGdseXBoRGF0YS5m
b250RGF0YSAmJiAhZ2x5cGhEYXRhLmZvbnREYXRhLT5pc1NWR0ZvbnQoKSkgewotICAgICAgICBh
dXRvJiBlbGVtZW50UmVuZGVyZXIgPSByZW5kZXJlcigpLmlzUmVuZGVyRWxlbWVudCgpID8gdG9S
ZW5kZXJFbGVtZW50KHJlbmRlcmVyKCkpIDogKnJlbmRlcmVyKCkucGFyZW50KCk7CisgICAgICAg
IGF1dG8mIGVsZW1lbnRSZW5kZXJlciA9IGlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKCkpID8g
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIoKSkgOiAqcmVuZGVyZXIoKS5wYXJlbnQo
KTsKICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudFJlbmRlcmVyRWxlbWVudCA9IGVsZW1lbnRS
ZW5kZXJlci5lbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJlckVsZW1l
bnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFsdEdseXBoVGFnKSkKKyAgICAgICAgICAgIGlmIChp
czxTVkdBbHRHbHlwaEVsZW1lbnQ+KCpwYXJlbnRSZW5kZXJlckVsZW1lbnQpKQogICAgICAgICAg
ICAgICAgIGdseXBoRGF0YS5mb250RGF0YSA9IHByaW1hcnlGb250OwogICAgICAgICB9CiAgICAg
fQpAQCAtMzI2LDggKzMyNiw4IEBAIEdseXBoRGF0YSBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnQmIGZvbnQsIFdpCiAgICAgICAgIGlm
ICghZm9udERhdGEtPmlzU1ZHRm9udCgpKQogICAgICAgICAgICAgcmV0dXJuIGdseXBoRGF0YTsK
IAotICAgICAgICBTVkdGb250RWxlbWVudCogZm9udEVsZW1lbnQgPSAwOwotICAgICAgICBTVkdG
b250RmFjZUVsZW1lbnQqIGZvbnRGYWNlRWxlbWVudCA9IDA7CisgICAgICAgIFNWR0ZvbnRFbGVt
ZW50KiBmb250RWxlbWVudCA9IG51bGxwdHI7CisgICAgICAgIFNWR0ZvbnRGYWNlRWxlbWVudCog
Zm9udEZhY2VFbGVtZW50ID0gbnVsbHB0cjsKIAogICAgICAgICBjb25zdCBTVkdGb250RGF0YSog
c3ZnRm9udERhdGEgPSBzdmdGb250QW5kRm9udEZhY2VFbGVtZW50Rm9yRm9udERhdGEoZm9udERh
dGEsIGZvbnRGYWNlRWxlbWVudCwgZm9udEVsZW1lbnQpOwogICAgICAgICBpZiAoIWZvbnRFbGVt
ZW50IHx8ICFmb250RmFjZUVsZW1lbnQpCkBAIC0zNDcsNyArMzQ3LDcgQEAgR2x5cGhEYXRhIFNW
R1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9u
dCYgZm9udCwgV2kKICAgICAvLyBObyBzdWl0YWJsZSBnbHlwaCBmb3VuZCB0aGF0IGlzIGNvbXBh
dGlibGUgd2l0aCB0aGUgcmVxdWlybWVudHMgKHNhbWUgbGFuZ3VhZ2UsIGFyYWJpYy1mb3JtLCBv
cmllbnRhdGlvbiBldGMuKQogICAgIC8vIEV2ZW4gdGhvdWdoIG91ciBHbHlwaFBhZ2UgY29udGFp
bnMgYW4gZW50cnkgZm9yIGVnLiBnbHlwaCAiYSIsIGl0J3Mgbm90IGNvbXBhdGlibGUuIFNvIHdl
IGhhdmUgdG8gdGVtcG9yYXJpbHkKICAgICAvLyByZW1vdmUgdGhlIGdseXBoIGRhdGEgaW5mb3Jt
YXRpb24gZnJvbSB0aGUgR2x5cGhQYWdlLCBhbmQgcmV0cnkgdGhlIGxvb2t1cCwgd2hpY2ggaGFu
ZGxlcyBmb250IGZhbGxiYWNrcyBjb3JyZWN0bHkuCi0gICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9y
Q2hhcmFjdGVyKGNoYXJhY3RlciwgMCwgMCk7CisgICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hh
cmFjdGVyKGNoYXJhY3RlciwgMCwgbnVsbHB0cik7CiAKICAgICAvLyBBc3N1cmUgdGhhdCB0aGUg
Zm9udCBmYWxsYmFjayBnbHlwaCBzZWxlY3Rpb24gd29ya2VkLCBha2EuIHRoZSBmYWxsYmFja0ds
eXBoRGF0YSBmb250IGRhdGEgaXMgbm90IHRoZSBzYW1lIGFzIGJlZm9yZS4KICAgICBHbHlwaERh
dGEgZmFsbGJhY2tHbHlwaERhdGEgPSBmb250LmdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0
ZXIsIG1pcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAppbmRleCA2M2JmNTRkNDlm
YTVkNzY4ZDMzMDIyODcxOWM3YTBkNzAwMDU0MWVlLi4wYjhmZDAzOGZkYzFjOTAzMjZhYmFiOGQ1
MTc3ZTg5ZjFiYWExNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKQEAgLTE0Myw3
ICsxNDMsNyBAQCBib29sIFNWR0ZvbnREYXRhOjphcHBseVNWR0dseXBoU2VsZWN0aW9uKFdpZHRo
SXRlcmF0b3ImIGl0ZXJhdG9yLCBHbHlwaERhdGEmIGdseQogICAgIFNWR0ZvbnRFbGVtZW50KiBh
c3NvY2lhdGVkRm9udEVsZW1lbnQgPSBzdmdGb250RmFjZUVsZW1lbnQtPmFzc29jaWF0ZWRGb250
RWxlbWVudCgpOwogICAgIEFTU0VSVChhc3NvY2lhdGVkRm9udEVsZW1lbnQpOwogCi0gICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSAwOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyT2Jq
ZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoVGV4dFJ1bjo6UmVuZGVyaW5nQ29udGV4dCogcmVuZGVy
aW5nQ29udGV4dCA9IHJ1bi5yZW5kZXJpbmdDb250ZXh0KCkpCiAgICAgICAgIHJlbmRlck9iamVj
dCA9ICZzdGF0aWNfY2FzdDxTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dCo+KHJlbmRlcmluZ0Nv
bnRleHQpLT5yZW5kZXJlcigpOwogCkBAIC0xNTIsMTEgKzE1MiwxMCBAQCBib29sIFNWR0ZvbnRE
YXRhOjphcHBseVNWR0dseXBoU2VsZWN0aW9uKFdpZHRoSXRlcmF0b3ImIGl0ZXJhdG9yLCBHbHlw
aERhdGEmIGdseQogICAgIFZlY3RvcjxTdHJpbmc+IGFsdEdseXBoTmFtZXM7CiAKICAgICBpZiAo
cmVuZGVyT2JqZWN0KSB7Ci0gICAgICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudFJlbmRlcmVyID0g
cmVuZGVyT2JqZWN0LT5pc1JlbmRlckVsZW1lbnQoKSA/IHRvUmVuZGVyRWxlbWVudChyZW5kZXJP
YmplY3QpIDogcmVuZGVyT2JqZWN0LT5wYXJlbnQoKTsKLSAgICAgICAgQVNTRVJUKHBhcmVudFJl
bmRlcmVyKTsKKyAgICAgICAgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuZGVyZXIgPSBpczxSZW5k
ZXJFbGVtZW50PigqcmVuZGVyT2JqZWN0KSA/IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5k
ZXJPYmplY3QpIDogKnJlbmRlck9iamVjdC0+cGFyZW50KCk7CiAKLSAgICAgICAgaXNWZXJ0aWNh
bFRleHQgPSBwYXJlbnRSZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmlzVmVydGljYWxXcml0
aW5nTW9kZSgpOwotICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50UmVuZGVyZXJFbGVtZW50ID0g
cGFyZW50UmVuZGVyZXItPmVsZW1lbnQoKSkgeworICAgICAgICBpc1ZlcnRpY2FsVGV4dCA9IHBh
cmVudFJlbmRlcmVyLnN0eWxlKCkuc3ZnU3R5bGUoKS5pc1ZlcnRpY2FsV3JpdGluZ01vZGUoKTsK
KyAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudFJlbmRlcmVyRWxlbWVudCA9IHBhcmVudFJlbmRl
cmVyLmVsZW1lbnQoKSkgewogICAgICAgICAgICAgbGFuZ3VhZ2UgPSBwYXJlbnRSZW5kZXJlckVs
ZW1lbnQtPmdldEF0dHJpYnV0ZShYTUxOYW1lczo6bGFuZ0F0dHIpOwogCiAgICAgICAgICAgICBp
ZiAoaXM8U1ZHQWx0R2x5cGhFbGVtZW50PigqcGFyZW50UmVuZGVyZXJFbGVtZW50KSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViRnJhbWUuY3BwCmluZGV4IDY4ZWQ3MDViNTVjMWI1OTUxOGExNzgxZTY0NzhmMjBmNjI3
NGRjY2UuLjVkMjFmZDBjNmE2NzViMzVjNTAzYTYwNzExMDBhZDcyNDM3ZDdiNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAKQEAgLTExODEsNyArMTE4MSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnBh
dXNlQW5pbWF0aW9uKEJTVFIgYW5pbWF0aW9uTmFtZSwgSURPTU5vZGUqIG5vZGUsIGRvdWJsZSBz
ZWNvCiAgICAgaWYgKCFkb21Ob2RlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmFu
aW1hdGlvbldhc1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VBbmltYXRpb25BdFRp
bWUodG9SZW5kZXJFbGVtZW50KGRvbU5vZGUtPm5vZGUoKS0+cmVuZGVyZXIoKSksIFN0cmluZyhh
bmltYXRpb25OYW1lLCBTeXNTdHJpbmdMZW4oYW5pbWF0aW9uTmFtZSkpLCBzZWNvbmRzRnJvbU5v
dyk7CisgICAgKmFuaW1hdGlvbldhc1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VB
bmltYXRpb25BdFRpbWUoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZG9tTm9kZS0+bm9kZSgpLT5y
ZW5kZXJlcigpKSwgU3RyaW5nKGFuaW1hdGlvbk5hbWUsIFN5c1N0cmluZ0xlbihhbmltYXRpb25O
YW1lKSksIHNlY29uZHNGcm9tTm93KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTIwMCw3
ICsxMjAwLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6cGF1c2VUcmFuc2l0aW9uKEJTVFIgcHJvcGVy
dHlOYW1lLCBJRE9NTm9kZSogbm9kZSwgZG91YmxlIHNlY28KICAgICBpZiAoIWRvbU5vZGUpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAqdHJhbnNpdGlvbldhc1J1bm5pbmcgPSBmcmFt
ZS0+YW5pbWF0aW9uKCkucGF1c2VUcmFuc2l0aW9uQXRUaW1lKHRvUmVuZGVyRWxlbWVudChkb21O
b2RlLT5ub2RlKCktPnJlbmRlcmVyKCkpLCBTdHJpbmcocHJvcGVydHlOYW1lLCBTeXNTdHJpbmdM
ZW4ocHJvcGVydHlOYW1lKSksIHNlY29uZHNGcm9tTm93KTsKKyAgICAqdHJhbnNpdGlvbldhc1J1
bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VUcmFuc2l0aW9uQXRUaW1lKGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KGRvbU5vZGUtPm5vZGUoKS0+cmVuZGVyZXIoKSksIFN0cmluZyhwcm9w
ZXJ0eU5hbWUsIFN5c1N0cmluZ0xlbihwcm9wZXJ0eU5hbWUpKSwgc2Vjb25kc0Zyb21Ob3cpOwog
ICAgIHJldHVybiBTX09LOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239647</attachid>
            <date>2014-10-10 14:00:52 -0700</date>
            <delta_ts>2014-10-10 15:28:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137622-20141010140055.patch</filename>
            <type>text/plain</type>
            <size>73819</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEyMGM4OTYwNTY0YzJh
MjM5MjhhNjgzOGNjNTJmNTQ2OTkxNDcxNy4uZWQ1OTg1ZmRmYzdiYmM1NTQzYjYwYjJkODdlN2Fk
Y2M0NmVlNzUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExOSBAQAogMjAxNC0xMC0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3du
Y2FzdDw+KCkgZm9yIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNzYyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJlbmRlckVs
ZW1lbnQgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJyb3VuZGluZyBjb2RlLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmltYWdlTWFwTGlua1JlbmRlcmVyKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om1hdGVyaWFs
aXplUmFyZURhdGEpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc05vblRleHRMZWFmQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoQWhlYWRG
b3JCZXR0ZXJNYXRjaCk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgorICAgICAgICAqIGVk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhDb250ZW50c1RvTmV3QmxvY2tJZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc0VtcHR5VGFibGVDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmJpZGlOZXh0U2hhcmVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmdldEZp
cnN0TGV0dGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpyZW5kZXJlclJl
bW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpyZW5kZXJl
clN1YnRyZWVBdHRhY2hlZCk6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6aW5zZXJ0Q2hpbGRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJFbGVtZW50OjpyZW1vdmVDaGlsZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OmZpbmROZXh0TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1JlbmRlckxheWVyTW9kZWxPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc0JveE1vZGVsT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJCbG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmlzUmVuZGVyQmxvY2tGbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6aXNSZW5kZXJSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmlzUmVuZGVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpmaXJzdExpbmVTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW5kZXJlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZyYW1lU2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZUNoaWxkcmVuU3R5bGVJblJl
Z2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c2V0T2Jq
ZWN0U3R5bGVJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDo6cmVzdG9yZVJlZ2lvbk9iamVjdHNPcmlnaW5hbFN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
Y2xlYXJOZWVkc0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxC
ZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbGxlY3RBbm5v
dGF0ZWRSZWdpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uR2VuZXJpY0N1ZSk6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MTWVuY2xvc2U6OmFkZENoaWxkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpyZWJ1aWxkVG9rZW5Db250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVTdHlsZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTFJvb3Q6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFJvb3Q6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6YWRkQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZVRva2VuQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlU3R5bGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6bGF5b3V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kUHJldmlvdXNBbmROZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpzdWJ0cmVlU3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlRm9udEluQWxsRGVzY2VuZGFudHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJT
dXBwb3J0OjpsYXlvdXRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXNDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6Y2xp
ZW50V2FzQWRkZWRUb1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6
OmNsaWVudFdpbGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNGb3JUZXh0
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNGb3JGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6cmVidWlsZE1ldHJpY3NGb3JUZXh0
UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0
ZXNCdWlsZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFs
aXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRNZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OndhbGtUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRNZXRyaWNzQnVpbGRlcjo6YnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVHbHlwaFRvUGF0aFRy
YW5zbGF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6
OmRyYXdTVkdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0Nv
bnRleHQ6OmdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAgICAgICogc3ZnL1NWR0ZvbnREYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnREYXRhOjphcHBseVNWR0dseXBoU2VsZWN0
aW9uKToKKworMjAxNC0xMC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAg
ICAgICAgIERyb3AgUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKCkgZm9yIGEgbG90IG9mIFJlbmRl
ck9iamVjdCBzdWJjbGFzc2VzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzc1OTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDgzMDNkM2E4NWY3Nzk0ZTJl
NGZhMDVhMGM2NmU4YjczYmVmM2YzNWUuLmM0MzhiOTEyZDhkMjlhNzFkMjBjOTE1ZWMyNmY0MmZi
MGFmODU0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0xMC0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczw+KCkgLyBk
b3duY2FzdDw+KCkgZm9yIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzYyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJlbmRl
ckVsZW1lbnQgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJyb3VuZGluZyBjb2RlLgorCisg
ICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnBhdXNlQW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYkZyYW1lOjpwYXVzZVRyYW5zaXRpb24pOgorCiAyMDE0LTEwLTA5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRv
d25jYXN0PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCmluZGV4
IGFiYzAwZGJhMzg0OWM2ODEzZTYzYmU1YWY0NmZhOWI5NzVhOWU4MDQuLmFlOTU3ZjA4ZDI2NTlh
OTVlNDU1YWM2ZmNhMmY2M2FlYWZiNDBlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIFJlbmRlckVsZW1lbnQqIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6Omlt
YWdlTWFwTGlua1JlbmRlcmVyKCkgY29uc3QKIAogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
ID0gbnVsbHB0cjsKICAgICBpZiAobV9wYXJlbnQgJiYgbV9wYXJlbnQtPmlzQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdCgpKQotICAgICAgICByZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudCh0b0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QobV9wYXJlbnQpLT5yZW5kZXJlcigpKTsKKyAgICAgICAg
cmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pih0b0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QobV9wYXJlbnQpLT5yZW5kZXJlcigpKTsKICAgICBlbHNlCiAgICAgICAgIHJlbmRlcmVy
ID0gbV9tYXBFbGVtZW50LT5yZW5kZXJlcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggNjRkZjEzZDcxN2JhNjg4OGJjMzQyZjVhNGVlNGI1MjRhNzcyNmEzMS4uY2NiNDA4MzY2ODI4
OTI4OGJlNGNjOGIwZGYzYWMxMzA3NzFmMWQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0x
MzE4LDcgKzEzMTgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gY2hlY2sgd2hldGhlciByZW5kZXJlZCBpbWFnZSB3YXMgc3RyZXRjaGVkIGZyb20gb25lLWRp
bWVuc2lvbmFsIGZpbGUgaW1hZ2UKICAgICAgICAgICAgIGlmIChpbWFnZS5jYWNoZWRJbWFnZSgp
KSB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5jYWNoZWRJ
bWFnZSgpLT5pbWFnZVNpemVGb3JSZW5kZXJlcih0b1JlbmRlckVsZW1lbnQobV9yZW5kZXJlciks
IGltYWdlLnZpZXcoKS56b29tRmFjdG9yKCkpOworICAgICAgICAgICAgICAgIExheW91dFNpemUg
aW1hZ2VTaXplID0gaW1hZ2UuY2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIoJmlt
YWdlLCBpbWFnZS52aWV3KCkuem9vbUZhY3RvcigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
aW1hZ2VTaXplLmhlaWdodCgpIDw9IDEgfHwgaW1hZ2VTaXplLndpZHRoKCkgPD0gMTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA5YzdmYWI3ZGY3YTc0OTNiYWQxZDcxY2NjYTVh
NGRlOWViNGViOGQyLi5mOWM0YmE1YTNkMDVjMDRkMWQ0ODJkZDNmNjRlNzYxMGRmNzhiM2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMTY2NCw3ICsxNjY0LDcgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShOb2RlKiBzdHlsZWQKIAogICAg
IGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNDb21wb3NpdGVkKCkgJiYgQW5pbWF0aW9uQ29u
dHJvbGxlcjo6c3VwcG9ydHNBY2NlbGVyYXRlZEFuaW1hdGlvbk9mUHJvcGVydHkocHJvcGVydHlJ
RCkpIHsKICAgICAgICAgQW5pbWF0aW9uVXBkYXRlQmxvY2sgYW5pbWF0aW9uVXBkYXRlQmxvY2so
JnJlbmRlcmVyLT5hbmltYXRpb24oKSk7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5
bGUgPSByZW5kZXJlci0+YW5pbWF0aW9uKCkuZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKHRv
UmVuZGVyRWxlbWVudChyZW5kZXJlcikpOworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlID0gcmVuZGVyZXItPmFuaW1hdGlvbigpLmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihk
b3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikpOwogICAgICAgICBpZiAocHNldWRvRWxl
bWVudFNwZWNpZmllciAmJiAhc3R5bGVkTm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhY2hlZCBwc2V1ZG8gc3R5bGUgd2lsbCBvbmx5IGV4aXN0
IGlmIHRoZSBhbmltYXRpb24gaGFzIGJlZW4gcnVuIGF0IGxlYXN0IG9uY2UuCiAgICAgICAgICAg
ICByZXR1cm4gc3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGMwODM3YTIyYTZhYzBkMWJkZGM0NGNlYzFkOGY0ZDYx
MTM0YzI1MzcuLmJkYWQ2OWJjOWQxYTc5OWJiYjYxMmM3ZDRmYmExMmQ0ZWY4YmMzODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTM0OSw4ICszNDksOCBAQCB2b2lkIE5vZGU6OndpbGxCZURlbGV0ZWRG
cm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHZvaWQgTm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSgp
CiB7CiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhOwotICAgIGlmIChpc0VsZW1lbnROb2RlKCkpCi0g
ICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSYXJlRGF0YT4odG9SZW5kZXJF
bGVtZW50KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgpOworICAgIGlmIChpczxFbGVtZW50
PigqdGhpcykpCisgICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSYXJlRGF0
YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7
CiAgICAgZWxzZQogICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFyZURhdGE+
KG1fZGF0YS5tX3JlbmRlcmVyKS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKaW5kZXggNzk4YTljNDQ3NjJiNmIwZmY3NWY5OWM4NGYzNWM0ZmQzZjc3
MTE4Ny4uZjFmYzViZDM5MjU3ZTU0ODQyMDE3YjVmMDE0NDZmMWQ0MjBmZjlmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCkBAIC0xMDk1LDEzICsxMDk1LDExIEBAIHZvaWQgUG9zaXRpb246Omdl
dElubGluZUJveEFuZE9mZnNldChFQWZmaW5pdHkgYWZmaW5pdHksIElubGluZUJveComIGlubGlu
ZUJveCwKICAgICBnZXRJbmxpbmVCb3hBbmRPZmZzZXQoYWZmaW5pdHksIHByaW1hcnlEaXJlY3Rp
b24oKSwgaW5saW5lQm94LCBjYXJldE9mZnNldCk7CiB9CiAKLXN0YXRpYyBib29sIGlzTm9uVGV4
dExlYWZDaGlsZChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBib29sIGlzTm9uVGV4dExl
YWZDaGlsZChSZW5kZXJPYmplY3QmIG9iamVjdCkKIHsKLSAgICBpZiAob2JqZWN0LT5pc1RleHQo
KSkKKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICh0b1JlbmRlckVsZW1lbnQob2JqZWN0KS0+Zmlyc3RDaGlsZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuICFkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihvYmplY3QpLmZpcnN0Q2hpbGQoKTsKIH0KIAogc3RhdGljIElubGluZVRl
eHRCb3gqIHNlYXJjaEFoZWFkRm9yQmV0dGVyTWF0Y2goUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
QEAgLTExMTMsNyArMTExMSw3IEBAIHN0YXRpYyBJbmxpbmVUZXh0Qm94KiBzZWFyY2hBaGVhZEZv
ckJldHRlck1hdGNoKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgaWYgKG5leHQtPmlzQlIoKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICBpZiAoaXNOb25UZXh0TGVhZkNoaWxkKG5leHQpKQorICAgICAgICBp
ZiAoaXNOb25UZXh0TGVhZkNoaWxkKCpuZXh0KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm5leHQpKSB7CiAgICAgICAgICAgICBJbmxp
bmVUZXh0Qm94KiBtYXRjaCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKaW5kZXggYzY4MTQ0NjlmMjczNmFmNGM2YWQ4OTM5MDhkYTdiMjA0NDk4ZjdlYi4uM2NkNGYw
ODQyOTIyYjYwNzNmZWJlMjVmYWUzNmExYzRjNWRhZGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmNwcApAQCAtMTA3LDEzICsxMDcsMTMgQEAgdm9pZCBQc2V1ZG9FbGVtZW50Ojpk
aWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKQogCiAgICAgLy8gVGhlIHJlbmRlcmVycyBpbnNp
ZGUgcHNldWRvIGVsZW1lbnRzIGFyZSBhbm9ueW1vdXMgc28gdGhleSBkb24ndCBnZXQgbm90aWZp
ZWQgb2YgcmVjYWxjU3R5bGUgYW5kIG11c3QgaGF2ZQogICAgIC8vIHRoZSBzdHlsZSBwcm9wYWdh
dGVkIGRvd253YXJkIG1hbnVhbGx5IHNpbWlsYXIgdG8gUmVuZGVyT2JqZWN0Ojpwcm9wYWdhdGVT
dHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4uCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCk7Ci0gICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVyZXIt
Pm5leHRJblByZU9yZGVyKHJlbmRlcmVyKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRJblBy
ZU9yZGVyKHJlbmRlcmVyKSkgeworICAgIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyID0gKnRoaXMt
PnJlbmRlcmVyKCk7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVyZXIubmV4
dEluUHJlT3JkZXIoJnJlbmRlcmVyKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRJblByZU9y
ZGVyKCZyZW5kZXJlcikpIHsKICAgICAgICAgLy8gV2Ugb25seSBtYW5hZ2UgdGhlIHN0eWxlIGZv
ciB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQgd2hpY2ggbXVzdCBiZSBpbWFnZXMgb3IgdGV4dC4KLSAg
ICAgICAgaWYgKCFjaGlsZC0+aXNSZW5kZXJJbWFnZSgpICYmICFjaGlsZC0+aXNRdW90ZSgpKQor
ICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqY2hpbGQpICYmICFpczxSZW5kZXJRdW90ZT4o
KmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBQYXNzUmVmPFJlbmRlclN0
eWxlPiBjcmVhdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJv
bVBzZXVkb1N0eWxlKHJlbmRlcmVyLT5zdHlsZSgpKTsKLSAgICAgICAgdG9SZW5kZXJFbGVtZW50
KCpjaGlsZCkuc2V0U3R5bGUoV1RGOjptb3ZlKGNyZWF0ZWRTdHlsZSkpOworICAgICAgICBQYXNz
UmVmPFJlbmRlclN0eWxlPiBjcmVhdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJ
bmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKHJlbmRlcmVyLnN0eWxlKCkpOworICAgICAgICBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLnNldFN0eWxlKFdURjo6bW92ZShjcmVhdGVkU3R5
bGUpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKaW5kZXggNTg0OTQ4YTM5NTQxYTVlMGI3OTY1M2E1ZWFkODAwNzg2OTdh
YTkyYy4uMDY2NTRlYTJjYTUyMGY2NjJjYTdlOGU5M2UxNTBkODY1NGFhM2MzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTk3Myw3
ICs5NzMsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnRO
ZXdEZWZhdWx0UGFyYWdyYXBoRWxlbWVudEF0KGNvbnN0CiBQYXNzUmVmUHRyPE5vZGU+IENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3Nh
cnkoY29uc3QgUG9zaXRpb24mIHBvcykKIHsKICAgICBpZiAocG9zLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAKQEAgLTk5MSw3
ICs5OTEsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3NhcgogICAgIC8vIElmIHRoZXJlIGFyZSBu
byBWaXNpYmxlUG9zaXRpb25zIGluIHRoZSBzYW1lIGJsb2NrIGFzIHBvcyB0aGVuIAogICAgIC8v
IHVwc3RyZWFtU3RhcnQgd2lsbCBiZSBvdXRzaWRlIHRoZSBwYXJhZ3JhcGgKICAgICBpZiAoY29t
cGFyZVBvc2l0aW9ucyhwb3MsIHVwc3RyZWFtU3RhcnQpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGVyZm9ybSBzb21lIGNoZWNrcyB0
byBzZWUgaWYgd2UgbmVlZCB0byBwZXJmb3JtIHdvcmsgaW4gdGhpcyBmdW5jdGlvbi4KICAgICBp
ZiAoaXNCbG9jayh1cHN0cmVhbVN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkpKSB7CkBAIC0xMDAwLDIy
ICsxMDAwLDIyIEBAIFBhc3NSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQ
YXJhZ3JhcGhDb250ZW50c1RvTmV3QmxvY2tJZk5lY2Vzc2FyCiAgICAgICAgIGlmICh1cHN0cmVh
bVN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgPT0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24odXBzdHJl
YW1TdGFydCkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBibG9jayBpcyB0aGUgcm9vdCBlZGl0
YWJsZSBlbGVtZW50IGFuZCBpdCBjb250YWlucyBubyB2aXNpYmxlIGNvbnRlbnQsIGNyZWF0ZSBh
IG5ldwogICAgICAgICAgICAgLy8gYmxvY2sgYnV0IGRvbid0IHRyeSBhbmQgbW92ZSBjb250ZW50
IGludG8gaXQsIHNpbmNlIHRoZXJlJ3Mgbm90aGluZyBmb3IgbW92ZVBhcmFncmFwaHMgdG8gbW92
ZS4KLSAgICAgICAgICAgIGlmICghUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVz
Y2VuZGFudHNXaXRoSGVpZ2h0KHRvUmVuZGVyRWxlbWVudCgqdXBzdHJlYW1TdGFydC5kZXByZWNh
dGVkTm9kZSgpLT5yZW5kZXJlcigpKSkpCisgICAgICAgICAgICBpZiAoIVBvc2l0aW9uOjpoYXNS
ZW5kZXJlZE5vbkFub255bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodChkb3duY2FzdDxSZW5kZXJF
bGVtZW50PigqdXBzdHJlYW1TdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGluc2VydE5ld0RlZmF1bHRQYXJhZ3JhcGhFbGVtZW50QXQo
dXBzdHJlYW1TdGFydCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCbG9jayh1cHN0cmVhbUVuZC5k
ZXByZWNhdGVkTm9kZSgpKSkgewogICAgICAgICAgICAgaWYgKCF1cHN0cmVhbUVuZC5kZXByZWNh
dGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZih1cHN0cmVhbVN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmFncmFwaCBlbmQgaXMgYSBkZXNjZW5k
YW50IG9mIHBhcmFncmFwaCBzdGFydCwgdGhlbiB3ZSBuZWVkIHRvIHJ1bgogICAgICAgICAgICAg
ICAgIC8vIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24uIElmIG5vdCwgd2UgY2FuIGJhaWwgaGVy
ZS4KLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChlbmNsb3NpbmdCbG9jayh1
cHN0cmVhbUVuZC5kZXByZWNhdGVkTm9kZSgpKSAhPSB1cHN0cmVhbVN0YXJ0LmRlcHJlY2F0ZWRO
b2RlKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSB2aXNpYmxlRW5kLiAgSXQgbXVzdCBiZSBhbiBh
bmNlc3RvciBvZiB0aGUgcGFyYWdyYXBoIHN0YXJ0LgogICAgICAgICAgICAgLy8gV2UgY2FuIGJh
aWwgYXMgd2UgaGF2ZSBhIGZ1bGwgYmxvY2sgdG8gd29yayB3aXRoLgogICAgICAgICAgICAgQVNT
RVJUKHVwc3RyZWFtU3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YoZW5jbG9z
aW5nQmxvY2sodXBzdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkpKTsKLSAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0gZWxzZSBpZiAo
aXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQodmlzaWJsZUVuZCkpIHsKICAgICAg
ICAgICAgIC8vIEF0IHRoZSBlbmQgb2YgdGhlIGVkaXRhYmxlIHJlZ2lvbi4gV2UgY2FuIGJhaWwg
aGVyZSBhcyB3ZWxsLgotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcAppbmRleCAxNjNkMTBmOWRmYzVkYTEzODZhZTU3OTdiYzExN2RiNTE5NDEyYjJkLi40
N2M2NTI4ZDgyOWY2NDNmNDhlMDVkYTViZTlmYjYyZGY5MWI4NDYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlBvc2l0
aW9uSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRl
ckVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpA
QCAtODQ5LDExICs4NTAsMTEgQEAgYm9vbCBpc0VtcHR5VGFibGVDZWxsKGNvbnN0IE5vZGUqIG5v
ZGUpCiAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGlmICghcmVuZGVyZXItPmlzVGFibGVDZWxsKCkpCisgICAgaWYgKCFpczxSZW5k
ZXJUYWJsZUNlbGw+KCpyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IENoZWNrIHRoYXQgdGhlIHRhYmxlIGNlbGwgY29udGFpbnMgbm8gY2hpbGQgcmVuZGVyZXJzIGV4
Y2VwdCBmb3IgcGVyaGFwcyBhIHNpbmdsZSA8YnI+LgotICAgIFJlbmRlck9iamVjdCogY2hpbGRS
ZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudChyZW5kZXJlciktPmZpcnN0Q2hpbGQoKTsKKyAgICBS
ZW5kZXJPYmplY3QqIGNoaWxkUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCpy
ZW5kZXJlcikuZmlyc3RDaGlsZCgpOwogICAgIGlmICghY2hpbGRSZW5kZXJlcikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgaWYgKCFjaGlsZFJlbmRlcmVyLT5pc0JSKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCmluZGV4IGYwODY4MWEzNjdmYzM1ZTUxOTY4
YjhhMzVkNzhmNGRiODVkZDIxMWQuLjhiNjA0MTUyN2E4NDU0ZjFlNGQ3Y2EyODJlYmI2MGUxNjM4
MzgxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC0y
MTQsMjIgKzIxNCwyMiBAQCBzdGF0aWMgYm9vbCBpc0VtcHR5SW5saW5lKGNvbnN0IFJlbmRlcklu
bGluZSYgcmVuZGVyZXIpCiB0ZW1wbGF0ZSA8Y2xhc3MgT2JzZXJ2ZXI+CiBzdGF0aWMgaW5saW5l
IFJlbmRlck9iamVjdCogYmlkaU5leHRTaGFyZWQoUmVuZGVyRWxlbWVudCYgcm9vdCwgUmVuZGVy
T2JqZWN0KiBjdXJyZW50LCBPYnNlcnZlciogb2JzZXJ2ZXIgPSAwLCBFbXB0eUlubGluZUJlaGF2
aW9yIGVtcHR5SW5saW5lQmVoYXZpb3IgPSBTa2lwRW1wdHlJbmxpbmVzLCBib29sKiBlbmRPZklu
bGluZVB0ciA9IDApCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBuZXh0ID0gMDsKKyAgICBSZW5kZXJP
YmplY3QqIG5leHQgPSBudWxscHRyOwogICAgIC8vIG9sZEVuZE9mSW5saW5lIGRlbm90ZXMgaWYg
d2hlbiB3ZSBsYXN0IHN0b3BwZWQgaXRlcmF0aW5nIGlmIHdlIHdlcmUgYXQgdGhlIGVuZCBvZiBh
biBpbmxpbmUuCiAgICAgYm9vbCBvbGRFbmRPZklubGluZSA9IGVuZE9mSW5saW5lUHRyID8gKmVu
ZE9mSW5saW5lUHRyIDogZmFsc2U7CiAgICAgYm9vbCBlbmRPZklubGluZSA9IGZhbHNlOwogCiAg
ICAgd2hpbGUgKGN1cnJlbnQpIHsKLSAgICAgICAgbmV4dCA9IDA7CisgICAgICAgIG5leHQgPSBu
dWxscHRyOwogICAgICAgICBpZiAoIW9sZEVuZE9mSW5saW5lICYmICFpc0l0ZXJhdG9yVGFyZ2V0
KGN1cnJlbnQpKSB7Ci0gICAgICAgICAgICBuZXh0ID0gdG9SZW5kZXJFbGVtZW50KGN1cnJlbnQp
LT5maXJzdENoaWxkKCk7CisgICAgICAgICAgICBuZXh0ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKmN1cnJlbnQpLmZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAgIG5vdGlmeU9ic2VydmVyRW50
ZXJlZE9iamVjdChvYnNlcnZlciwgbmV4dCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXZSBo
aXQgdGhpcyB3aGVuIGVpdGhlciBjdXJyZW50IGhhcyBubyBjaGlsZHJlbiwgb3Igd2hlbiBjdXJy
ZW50IGlzIG5vdCBhIHJlbmRlcmVyIHdlIGNhcmUgYWJvdXQuCiAgICAgICAgIGlmICghbmV4dCkg
ewogICAgICAgICAgICAgLy8gSWYgaXQgaXMgYSByZW5kZXJlciB3ZSBjYXJlIGFib3V0LCBhbmQg
d2UncmUgZG9pbmcgb3VyIGlubGluZS13YWxrLCByZXR1cm4gaXQuCi0gICAgICAgICAgICBpZiAo
ZW1wdHlJbmxpbmVCZWhhdmlvciA9PSBJbmNsdWRlRW1wdHlJbmxpbmVzICYmICFvbGRFbmRPZklu
bGluZSAmJiBjdXJyZW50LT5pc1JlbmRlcklubGluZSgpKSB7CisgICAgICAgICAgICBpZiAoZW1w
dHlJbmxpbmVCZWhhdmlvciA9PSBJbmNsdWRlRW1wdHlJbmxpbmVzICYmICFvbGRFbmRPZklubGlu
ZSAmJiBpczxSZW5kZXJJbmxpbmU+KCpjdXJyZW50KSkgewogICAgICAgICAgICAgICAgIG5leHQg
PSBjdXJyZW50OwogICAgICAgICAgICAgICAgIGVuZE9mSW5saW5lID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9i
amVjdCogYmlkaU5leHRTaGFyZWQoUmVuZGVyRWxlbWVudCYgcm9vdCwgUmVuZGVyT2JqZWN0KiBj
dQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50
LT5wYXJlbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoZW1wdHlJbmxpbmVCZWhhdmlvciA9PSBJ
bmNsdWRlRW1wdHlJbmxpbmVzICYmIGN1cnJlbnQgJiYgY3VycmVudCAhPSAmcm9vdCAmJiBjdXJy
ZW50LT5pc1JlbmRlcklubGluZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVtcHR5SW5saW5l
QmVoYXZpb3IgPT0gSW5jbHVkZUVtcHR5SW5saW5lcyAmJiBjdXJyZW50ICYmIGN1cnJlbnQgIT0g
JnJvb3QgJiYgaXM8UmVuZGVySW5saW5lPigqY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgbmV4dCA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgIGVuZE9mSW5saW5lID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGlj
IGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlOZXh0U2hhcmVkKFJlbmRlckVsZW1lbnQmIHJvb3Qs
IFJlbmRlck9iamVjdCogY3UKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmIChpc0l0
ZXJhdG9yVGFyZ2V0KG5leHQpCi0gICAgICAgICAgICB8fCAobmV4dC0+aXNSZW5kZXJJbmxpbmUo
KSAmJiAoZW1wdHlJbmxpbmVCZWhhdmlvciA9PSBJbmNsdWRlRW1wdHlJbmxpbmVzIHx8IGlzRW1w
dHlJbmxpbmUodG9SZW5kZXJJbmxpbmUoKm5leHQpKSkpKQorICAgICAgICAgICAgfHwgKGlzPFJl
bmRlcklubGluZT4oKm5leHQpICYmIChlbXB0eUlubGluZUJlaGF2aW9yID09IEluY2x1ZGVFbXB0
eUlubGluZXMgfHwgaXNFbXB0eUlubGluZShkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpuZXh0KSkp
KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjdXJyZW50ID0gbmV4dDsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5ZjRmMGM2NWYxMzc4
ODVjYmNiNjUxMDJmNDVmNWVlYTkyMDkxMDE0Li44MjQxMjg3M2E4NTA1NTk3ZTU2NDhiOWU3Njhi
NGUzZTY0YWFjODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
QEAgLTQ3LDEyICs0NywxNSBAQAogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRlckJveFJlZ2lvbkluZm8uaCIKKyNpbmNs
dWRlICJSZW5kZXJCdXR0b24uaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgogI2lu
Y2x1ZGUgIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckZs
ZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVy
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxp
c3RNYXJrZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJNZW51TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCkBAIC0zMTkxLDcgKzMxOTQsNyBAQCB2b2lkIFJl
bmRlckJsb2NrOjpnZXRGaXJzdExldHRlcihSZW5kZXJPYmplY3QqJiBmaXJzdExldHRlciwgUmVu
ZGVyRWxlbWVudComIGZpcgogICAgIC8vIERyaWxsIGludG8gaW5saW5lcyBsb29raW5nIGZvciBv
dXIgZmlyc3QgdGV4dCBkZXNjZW5kYW50LgogICAgIGZpcnN0TGV0dGVyID0gZmlyc3RMZXR0ZXJD
b250YWluZXItPmZpcnN0Q2hpbGQoKTsKICAgICB3aGlsZSAoZmlyc3RMZXR0ZXIpIHsKLSAgICAg
ICAgaWYgKGZpcnN0TGV0dGVyLT5pc1RleHQoKSkgeworICAgICAgICBpZiAoaXM8UmVuZGVyVGV4
dD4oKmZpcnN0TGV0dGVyKSkgewogICAgICAgICAgICAgaWYgKGZpcnN0TGV0dGVyID09IHNraXBP
YmplY3QpIHsKICAgICAgICAgICAgICAgICBmaXJzdExldHRlciA9IGZpcnN0TGV0dGVyLT5uZXh0
U2libGluZygpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzIwMCw4ICszMjAzLDgg
QEAgdm9pZCBSZW5kZXJCbG9jazo6Z2V0Rmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiYgZmlyc3RM
ZXR0ZXIsIFJlbmRlckVsZW1lbnQqJiBmaXIKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVuZGVyRWxlbWVudCYgY3VycmVudCA9IHRvUmVuZGVyRWxlbWVudCgqZmly
c3RMZXR0ZXIpOwotICAgICAgICBpZiAoY3VycmVudC5pc0xpc3RNYXJrZXIoKSkKKyAgICAgICAg
UmVuZGVyRWxlbWVudCYgY3VycmVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpmaXJzdExl
dHRlcik7CisgICAgICAgIGlmIChpczxSZW5kZXJMaXN0TWFya2VyPihjdXJyZW50KSkKICAgICAg
ICAgICAgIGZpcnN0TGV0dGVyID0gY3VycmVudC5uZXh0U2libGluZygpOwogICAgICAgICBlbHNl
IGlmIChjdXJyZW50LmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAg
ICAgICAgaWYgKGN1cnJlbnQuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsK
QEAgLTMyMDksNyArMzIxMiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmdldEZpcnN0TGV0dGVyKFJl
bmRlck9iamVjdComIGZpcnN0TGV0dGVyLCBSZW5kZXJFbGVtZW50KiYgZmlyCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaXJzdExldHRlciA9IGN1
cnJlbnQubmV4dFNpYmxpbmcoKTsKLSAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50LmlzUmVwbGFj
ZWQoKSB8fCBjdXJyZW50LmlzUmVuZGVyQnV0dG9uKCkgfHwgY3VycmVudC5pc01lbnVMaXN0KCkp
CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5pc1JlcGxhY2VkKCkgfHwgaXM8UmVuZGVyQnV0
dG9uPihjdXJyZW50KSB8fCBpczxSZW5kZXJNZW51TGlzdD4oY3VycmVudCkpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZWxzZSBpZiAoY3VycmVudC5zdHlsZSgpLmhhc1BzZXVkb1N0eWxl
KEZJUlNUX0xFVFRFUikgJiYgY3VycmVudC5jYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSkgIHsK
ICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbG93ZXItbGV2ZWwgbm9kZSB3aXRoIGZpcnN0LWxl
dHRlciwgd2hpY2ggc3VwZXJzZWRlcyB0aGUgaGlnaGVyLWxldmVsIHN0eWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDVkYmMyZDFhZmMxYzZlOGJiNWVjZjM4NjE3
YmNhN2JiOWMyZjM2ZmYuLmQ2YjMxNDA3ZTgxOGQyNWJlYzBiNmI1N2Q0YzFkNjEwNjJiY2MwMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01MDEsNyArNTAxLDcg
QEAgdm9pZCBSZW5kZXJCb3g6OmxheW91dCgpCiAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKHZpZXcoKSwgKnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIHN0eWxlKCkuaXNGbGlw
cGVkQmxvY2tzV3JpdGluZ01vZGUoKSk7CiAgICAgd2hpbGUgKGNoaWxkKSB7CiAgICAgICAgIGlm
IChjaGlsZC0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyRWxlbWVudChjaGls
ZCktPmxheW91dCgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxk
KS5sYXlvdXQoKTsKICAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7CiAgICAg
ICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IGFlMDIwZGU5Y2M1N2M1YjZmZWRkOWE2
ZmRkN2IzMzcwYzNhZTZjZmMuLjQ4NzhiNmYxZDJlZWI1MjA1YjI1ZjZlOGE3NjA2ZmZmYTU1NzNm
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTQ5
Niw4ICs0OTYsOCBAQCB2b2lkIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyUmVtb3ZlZEZyb21UcmVl
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIGlmICghY3VycmVudFJlbmRlcmVyKQogICAg
ICAgICBjdXJyZW50UmVuZGVyZXIgPSAmcmVuZGVyZXI7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlci0+aXNSZW5kZXJFbGVtZW50KCkpCi0gICAgICAgICAg
ICBkZXN0cm95Q291bnRlck5vZGVzKHRvUmVuZGVyRWxlbWVudCgqY3VycmVudFJlbmRlcmVyKSk7
CisgICAgICAgIGlmIChpczxSZW5kZXJFbGVtZW50PigqY3VycmVudFJlbmRlcmVyKSkKKyAgICAg
ICAgICAgIGRlc3Ryb3lDb3VudGVyTm9kZXMoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmN1cnJl
bnRSZW5kZXJlcikpOwogICAgICAgICBpZiAoY3VycmVudFJlbmRlcmVyID09ICZyZW5kZXJlcikK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjdXJyZW50UmVuZGVyZXIgPSBjdXJyZW50UmVu
ZGVyZXItPnByZXZpb3VzSW5QcmVPcmRlcigpOwpAQCAtNTUxLDggKzU1MSw4IEBAIHZvaWQgUmVu
ZGVyQ291bnRlcjo6cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIpCiAgICAgaWYgKGVsZW1lbnQgJiYgIWVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJl
dHVybjsgLy8gTm8gbmVlZCB0byB1cGRhdGUgaWYgdGhlIHBhcmVudCBpcyBub3QgYXR0YWNoZWQg
eWV0CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGRlc2NlbmRhbnQgPSAmcmVuZGVyZXI7IGRlc2Nl
bmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50LT5uZXh0SW5QcmVPcmRlcigmcmVuZGVyZXIp
KSB7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50LT5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAg
ICAgIHVwZGF0ZUNvdW50ZXJzKHRvUmVuZGVyRWxlbWVudCgqZGVzY2VuZGFudCkpOworICAgICAg
ICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKmRlc2NlbmRhbnQpKQorICAgICAgICAgICAgdXBkYXRl
Q291bnRlcnMoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmRlc2NlbmRhbnQpKTsKICAgICB9CiB9
CiAKQEAgLTYxMywxNSArNjEzLDE1IEBAIHZvaWQgc2hvd0NvdW50ZXJSZW5kZXJlclRyZWUoY29u
c3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hhcioKIAogICAgIEF0
b21pY1N0cmluZyBpZGVudGlmaWVyKGNvdW50ZXJOYW1lKTsKICAgICBmb3IgKGNvbnN0IFdlYkNv
cmU6OlJlbmRlck9iamVjdCogY3VycmVudCA9IHJvb3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5uZXh0SW5QcmVPcmRlcigpKSB7Ci0gICAgICAgIGlmICghY3VycmVudC0+aXNSZW5kZXJF
bGVtZW50KCkpCisgICAgICAgIGlmICghaXM8V2ViQ29yZTo6UmVuZGVyRWxlbWVudD4oKmN1cnJl
bnQpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJWMi
LCAoY3VycmVudCA9PSByZW5kZXJlcikgPyAnKicgOiAnICcpOwogICAgICAgICBmb3IgKGNvbnN0
IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcGFyZW50ID0gY3VycmVudDsgcGFyZW50ICYmIHBhcmVu
dCAhPSByb290OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudCgpKQogICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgICAgIik7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXAgTjolcCBQOiVw
IFBTOiVwIE5TOiVwIEM6JXBcbiIsCiAgICAgICAgICAgICBjdXJyZW50LCBjdXJyZW50LT5ub2Rl
KCksIGN1cnJlbnQtPnBhcmVudCgpLCBjdXJyZW50LT5wcmV2aW91c1NpYmxpbmcoKSwKLSAgICAg
ICAgICAgIGN1cnJlbnQtPm5leHRTaWJsaW5nKCksIHRvUmVuZGVyRWxlbWVudChjdXJyZW50KS0+
aGFzQ291bnRlck5vZGVNYXAoKSA/Ci0gICAgICAgICAgICBjb3VudGVyTmFtZSA/IFdlYkNvcmU6
OmNvdW50ZXJNYXBzKCkuZ2V0KHRvUmVuZGVyRWxlbWVudChjdXJyZW50KSktPmdldChpZGVudGlm
aWVyKSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSop
MCk7CisgICAgICAgICAgICBjdXJyZW50LT5uZXh0U2libGluZygpLCBkb3duY2FzdDxXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50PigqY3VycmVudCkuaGFzQ291bnRlck5vZGVNYXAoKSA/CisgICAgICAg
ICAgICBjb3VudGVyTmFtZSA/IFdlYkNvcmU6OmNvdW50ZXJNYXBzKCkuZ2V0KGRvd25jYXN0PFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ+KGN1cnJlbnQpKS0+Z2V0KGlkZW50aWZpZXIpIDogKFdlYkNv
cmU6OkNvdW50ZXJOb2RlKikxIDogKFdlYkNvcmU6OkNvdW50ZXJOb2RlKikwKTsKICAgICB9CiAg
ICAgZmZsdXNoKHN0ZGVycik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKaW5kZXggMDgyN2NhYTcwZTU0ZDdmZGI5NTUwZDc5OGMxYjQ4NDRhNjg4ZWMwZi4u
MTMwOTIzZTIyZTMxYmIxYjc2OGUzZGIxNTgwMTU1YWY3NzY4YzRmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtNTY5LDggKzU2OSw4IEBAIHZvaWQg
UmVuZGVyRWxlbWVudDo6aW5zZXJ0Q2hpbGRJbnRlcm5hbChSZW5kZXJPYmplY3QqIG5ld0NoaWxk
LCBSZW5kZXJPYmplY3QqIGJlCiAgICAgaWYgKCFkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsK
ICAgICAgICAgaWYgKG5vdGlmeUNoaWxkcmVuID09IE5vdGlmeUNoaWxkcmVuKQogICAgICAgICAg
ICAgbmV3Q2hpbGQtPmluc2VydGVkSW50b1RyZWUoKTsKLSAgICAgICAgaWYgKG5ld0NoaWxkLT5p
c1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3Vi
dHJlZUF0dGFjaGVkKHRvUmVuZGVyRWxlbWVudCgqbmV3Q2hpbGQpKTsKKyAgICAgICAgaWYgKGlz
PFJlbmRlckVsZW1lbnQ+KCpuZXdDaGlsZCkpCisgICAgICAgICAgICBSZW5kZXJDb3VudGVyOjpy
ZW5kZXJlclN1YnRyZWVBdHRhY2hlZChkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqbmV3Q2hpbGQp
KTsKICAgICB9CiAKICAgICBuZXdDaGlsZC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVj
YWxjKCk7CkBAIC02MzgsOCArNjM4LDggQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJFbGVtZW50Ojpy
ZW1vdmVDaGlsZEludGVybmFsKFJlbmRlck9iamVjdCYgb2xkQ2hpbGQsIE5vdGlmeUMKIAogICAg
IC8vIHJlbmRlcmVyUmVtb3ZlZEZyb21UcmVlIHdhbGtzIHRoZSB3aG9sZSBzdWJ0cmVlLiBXZSBj
YW4gaW1wcm92ZSBwZXJmb3JtYW5jZQogICAgIC8vIGJ5IHNraXBwaW5nIHRoaXMgc3RlcCB3aGVu
IGRlc3Ryb3lpbmcgdGhlIGVudGlyZSB0cmVlLgotICAgIGlmICghZG9jdW1lbnRCZWluZ0Rlc3Ry
b3llZCgpICYmIG9sZENoaWxkLmlzUmVuZGVyRWxlbWVudCgpKQotICAgICAgICBSZW5kZXJDb3Vu
dGVyOjpyZW5kZXJlclJlbW92ZWRGcm9tVHJlZSh0b1JlbmRlckVsZW1lbnQob2xkQ2hpbGQpKTsK
KyAgICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSAmJiBpczxSZW5kZXJFbGVtZW50Pihv
bGRDaGlsZCkpCisgICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyUmVtb3ZlZEZyb21UcmVl
KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG9sZENoaWxkKSk7CiAKICAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQogICAgICAg
ICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwpAQCAtNzE0LDcgKzcxNCw3IEBAIFJlbmRl
ckxheWVyKiBSZW5kZXJFbGVtZW50OjpmaW5kTmV4dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRM
YXllciwgUmVuZGVyT2JqZWN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gU3Rl
cCAxOiBJZiBvdXIgbGF5ZXIgaXMgYSBjaGlsZCBvZiB0aGUgZGVzaXJlZCBwYXJlbnQsIHRoZW4g
cmV0dXJuIG91ciBsYXllci4KLSAgICBSZW5kZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigp
ID8gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHRoaXMpLT5sYXllcigpIDogbnVsbHB0cjsKKyAg
ICBSZW5kZXJMYXllciogb3VyTGF5ZXIgPSBoYXNMYXllcigpID8gZG93bmNhc3Q8UmVuZGVyTGF5
ZXJNb2RlbE9iamVjdD4oKnRoaXMpLmxheWVyKCkgOiBudWxscHRyOwogICAgIGlmIChvdXJMYXll
ciAmJiBvdXJMYXllci0+cGFyZW50KCkgPT0gcGFyZW50TGF5ZXIpCiAgICAgICAgIHJldHVybiBv
dXJMYXllcjsKIApAQCAtNzIyLDkgKzcyMiw5IEBAIFJlbmRlckxheWVyKiBSZW5kZXJFbGVtZW50
OjpmaW5kTmV4dExheWVyKFJlbmRlckxheWVyKiBwYXJlbnRMYXllciwgUmVuZGVyT2JqZWN0CiAg
ICAgLy8gaW50byBvdXIgc2libGluZ3MgdHJ5aW5nIHRvIGZpbmQgdGhlIG5leHQgbGF5ZXIgd2hv
c2UgcGFyZW50IGlzIHRoZSBkZXNpcmVkIHBhcmVudC4KICAgICBpZiAoIW91ckxheWVyIHx8IG91
ckxheWVyID09IHBhcmVudExheWVyKSB7CiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IHN0YXJ0UG9pbnQgPyBzdGFydFBvaW50LT5uZXh0U2libGluZygpIDogZmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYg
KCFjaGlsZC0+aXNSZW5kZXJFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAoIWlzPFJlbmRlckVs
ZW1lbnQ+KCpjaGlsZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBS
ZW5kZXJMYXllciogbmV4dExheWVyID0gdG9SZW5kZXJFbGVtZW50KGNoaWxkKS0+ZmluZE5leHRM
YXllcihwYXJlbnRMYXllciwgbnVsbHB0ciwgZmFsc2UpOworICAgICAgICAgICAgUmVuZGVyTGF5
ZXIqIG5leHRMYXllciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkuZmluZE5leHRM
YXllcihwYXJlbnRMYXllciwgbnVsbHB0ciwgZmFsc2UpOwogICAgICAgICAgICAgaWYgKG5leHRM
YXllcikKICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dExheWVyOwogICAgICAgICB9CkBAIC0x
MTA5LDcgKzExMDksNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmxheW91dCgpCiAgICAgUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKICAgICB3aGlsZSAoY2hpbGQpIHsKICAgICAg
ICAgaWYgKGNoaWxkLT5uZWVkc0xheW91dCgpKQotICAgICAgICAgICAgdG9SZW5kZXJFbGVtZW50
KGNoaWxkKS0+bGF5b3V0KCk7CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigq
Y2hpbGQpLmxheW91dCgpOwogICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgpKTsK
ICAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCA5YzcxMmFhYTg0OWVkOGM2YzcwNTFl
YzE4MzRlMTcxMjA0NDIyYmZhLi4zNmMzNDM1MDI4NTYxZjQwYzIyN2JlNmEwZGNhMDA2ZTM3ZjQ3
N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTI0NSw4
ICsyNDUsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNfbm9Mb25nZXJBZmZlY3RzUGFy
ZW50QmxvY2s7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyRWxlbWVudCwg
aXNSZW5kZXJFbGVtZW50KCkpCi0KIGlubGluZSB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldEFuaW1h
dGFibGVTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBzZXRTdHlsZShh
bmltYXRpb24oKS51cGRhdGVBbmltYXRpb25zKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKSk7CkBA
IC0zMjMsNTEgKzMyMSw1MSBAQCBpbmxpbmUgRWxlbWVudCogUmVuZGVyRWxlbWVudDo6Z2VuZXJh
dGluZ0VsZW1lbnQoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBSZW5kZXJPYmplY3Q6OmlzUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVuZGVyRWxlbWVudCgp
ICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCk7Cisg
ICAgcmV0dXJuIGlzPFJlbmRlckVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PigqdGhpcykuaXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCk7CiB9CiAKIGlubGluZSBib29s
IFJlbmRlck9iamVjdDo6aXNCb3hNb2RlbE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlz
UmVuZGVyRWxlbWVudCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNCb3hNb2RlbE9iamVj
dCgpOworICAgIHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4oKnRoaXMpLmlzQm94TW9kZWxPYmplY3QoKTsKIH0KIAogaW5saW5lIGJvb2wg
UmVuZGVyT2JqZWN0Ojppc1JlbmRlckJsb2NrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNSZW5k
ZXJFbGVtZW50KCkgJiYgdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5pc1JlbmRlckJsb2NrKCk7Cisg
ICAgcmV0dXJuIGlzPFJlbmRlckVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PigqdGhpcykuaXNSZW5kZXJCbG9jaygpOwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJPYmpl
Y3Q6OmlzUmVuZGVyQmxvY2tGbG93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNSZW5kZXJFbGVt
ZW50KCkgJiYgdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5pc1JlbmRlckJsb2NrRmxvdygpOworICAg
IHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKnRoaXMpLmlzUmVuZGVyQmxvY2tGbG93KCk7CiB9CiAKIGlubGluZSBib29sIFJlbmRlck9i
amVjdDo6aXNSZW5kZXJSZXBsYWNlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVuZGVyRWxl
bWVudCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJSZXBsYWNlZCgpOworICAg
IHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKnRoaXMpLmlzUmVuZGVyUmVwbGFjZWQoKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyT2Jq
ZWN0Ojppc1JlbmRlcklubGluZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVuZGVyRWxlbWVu
dCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJJbmxpbmUoKTsKKyAgICByZXR1
cm4gaXM8UmVuZGVyRWxlbWVudD4oKnRoaXMpICYmIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0
aGlzKS5pc1JlbmRlcklubGluZSgpOwogfQogCiBpbmxpbmUgUmVuZGVyU3R5bGUmIFJlbmRlck9i
amVjdDo6c3R5bGUoKSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJu
IG1fcGFyZW50LT5zdHlsZSgpOwotICAgIHJldHVybiB0b1JlbmRlckVsZW1lbnQodGhpcyktPnN0
eWxlKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0aGlzKS5zdHlsZSgp
OwogfQogCiBpbmxpbmUgUmVuZGVyU3R5bGUmIFJlbmRlck9iamVjdDo6Zmlyc3RMaW5lU3R5bGUo
KSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIG1fcGFyZW50LT5m
aXJzdExpbmVTdHlsZSgpOwotICAgIHJldHVybiB0b1JlbmRlckVsZW1lbnQodGhpcyktPmZpcnN0
TGluZVN0eWxlKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0aGlzKS5m
aXJzdExpbmVTdHlsZSgpOwogfQogCiBpbmxpbmUgUmVuZGVyRWxlbWVudCogQ29udGFpbmVyTm9k
ZTo6cmVuZGVyZXIoKSBjb25zdAogewotICAgIHJldHVybiB0b1JlbmRlckVsZW1lbnQoTm9kZTo6
cmVuZGVyZXIoKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KE5vZGU6OnJl
bmRlcmVyKCkpOwogfQogCiBpbmxpbmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFs
dWUsIGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggMTc3MTdkODBlYmRhM2RkY2E0NzA5MzU2ODJj
YjNiZTdmYjFkZmNjNC4uNTI2YTFjMDUyYTJmNTU2NGYwMjhhOTViZGE2YjQxMDE0OWVkNjBiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC0xNDEs
NyArMTQxLDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBmb3IgKHNpemVfdCByID0g
MDsgciA8IHJvd3M7IHIrKykgewogICAgICAgICBMYXlvdXRVbml0IHhQb3MgPSAwOwogICAgICAg
ICBmb3IgKHNpemVfdCBjID0gMDsgYyA8IGNvbHM7IGMrKykgewotICAgICAgICAgICAgdG9SZW5k
ZXJFbGVtZW50KGNoaWxkKS0+cGFpbnQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsK
KyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkucGFpbnQocGFpbnRJ
bmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKICAgICAgICAgICAgIHhQb3MgKz0gbV9jb2xzLm1f
c2l6ZXNbY107CiAgICAgICAgICAgICBpZiAoYm9yZGVyVGhpY2tuZXNzICYmIG1fY29scy5tX2Fs
bG93Qm9yZGVyW2MgKyAxXSkgewogICAgICAgICAgICAgICAgIHBhaW50Q29sdW1uQm9yZGVyKHBh
aW50SW5mbywgc25hcHBlZEludFJlY3QoTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSArIHhQb3MsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgeVBvcywgYm9yZGVyVGhpY2tuZXNz
LCBoZWlnaHQoKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDc2OWMyOWVkYTdmZTJhNmJkZjMwMzNlMzZmODMyOTRjMjM5YzM3M2IuLmJkODZhZWFhM2Zj
NjdhNGMwODhjZDdhZjM3M2VkZTYxYzhhMmZiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtNjI5NywxMyArNjI5NywxMyBAQCBzdGF0aWMgYm9vbCBoYXNQ
YWludGluZ05vbkxheWVyRGVzY2VuZGFudHMoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGludCBkZQogICAgICAgICAKICAgICAgICAgY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxl
bWVudENoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGQpOwogCi0gICAgICAgIGlm
IChyZW5kZXJFbGVtZW50Q2hpbGQuaXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCkgJiYgdG9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlckVsZW1lbnRDaGlsZCkuaGFzU2VsZlBhaW50aW5nTGF5
ZXIoKSkKKyAgICAgICAgaWYgKGlzPFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KHJlbmRlckVsZW1l
bnRDaGlsZCkgJiYgZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVuZGVyRWxlbWVu
dENoaWxkKS5oYXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKGhhc0JveERlY29yYXRpb25zT3JCYWNrZ3JvdW5kKHJlbmRlckVsZW1lbnRD
aGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAgICAgIGlmIChy
ZW5kZXJFbGVtZW50Q2hpbGQuaXNSZW5kZXJSZXBsYWNlZCgpKQorICAgICAgICBpZiAoaXM8UmVu
ZGVyUmVwbGFjZWQ+KHJlbmRlckVsZW1lbnRDaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgICAgICBpZiAoaGFzUGFpbnRpbmdOb25MYXllckRlc2NlbmRhbnRzKHJlbmRlckVs
ZW1lbnRDaGlsZCwgZGVwdGggKyAxKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCmluZGV4IDcwMTk2ZTU0ZDc5ZTAzZjg0MDg4
MjJkOWRmYTIzNDljNjY0NWVlNWYuLmEwMmI2ZDQ5Y2E3MTdjYzkxMzA1MjE2M2UwMzIzZGQ5ZWI1
MWI4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlbmRlckZsb3dU
aHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlck5h
bWVkRmxvd1RocmVhZC5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAKQEAgLTM3MSwxNiAr
MzcyLDE2IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNvbXB1dGVDaGlsZHJlblN0
eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVyCiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoY2hpbGQuaXNBbm9ueW1vdXMoKSB8fCBjaGlsZC5pc0luRmxvd1JlbmRlckZs
b3dUaHJlYWQoKSkKICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmcmVuZGVyZXIuc3R5bGUoKSwg
Y2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQuaXNU
ZXh0KCkpCisgICAgICAgICAgICBlbHNlIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZCkpCiAgICAg
ICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNsb25lKCZyZW5k
ZXJlci5zdHlsZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaGlsZFN0
eWxlSW5SZWdpb24gPSBjb21wdXRlU3R5bGVJblJlZ2lvbih0b1JlbmRlckVsZW1lbnQoY2hpbGQp
LCByZW5kZXJlci5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24g
PSBjb21wdXRlU3R5bGVJblJlZ2lvbihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZCksIHJl
bmRlcmVyLnN0eWxlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc2V0T2JqZWN0U3R5bGVJblJl
Z2lvbigmY2hpbGQsIGNoaWxkU3R5bGVJblJlZ2lvbiwgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQp
OwogCi0gICAgICAgIGlmIChjaGlsZC5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgICAgIGNv
bXB1dGVDaGlsZHJlblN0eWxlSW5SZWdpb24odG9SZW5kZXJFbGVtZW50KGNoaWxkKSk7CisgICAg
ICAgIGlmIChpczxSZW5kZXJFbGVtZW50PihjaGlsZCkpCisgICAgICAgICAgICBjb21wdXRlQ2hp
bGRyZW5TdHlsZUluUmVnaW9uKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkKSk7CiAgICAg
fQogfQogCkBAIC0zODksMTEgKzM5MCwxMSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
OjpzZXRPYmplY3RTdHlsZUluUmVnaW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBQYXNzUgogICAg
IEFTU0VSVChvYmplY3QtPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSk7CiAKICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSAmb2JqZWN0LT5zdHlsZSgpOwot
ICAgIGlmIChvYmplY3QtPmlzUmVuZGVyRWxlbWVudCgpKQotICAgICAgICB0b1JlbmRlckVsZW1l
bnQob2JqZWN0KS0+c2V0U3R5bGVJbnRlcm5hbCgqc3R5bGVJblJlZ2lvbik7CisgICAgaWYgKGlz
PFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpKQorICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50
Pigqb2JqZWN0KS5zZXRTdHlsZUludGVybmFsKCpzdHlsZUluUmVnaW9uKTsKIAotICAgIGlmIChv
YmplY3QtPmlzQm94TW9kZWxPYmplY3QoKSAmJiAhb2JqZWN0LT5oYXNCb3hEZWNvcmF0aW9ucygp
KSB7Ci0gICAgICAgIGJvb2wgaGFzQm94RGVjb3JhdGlvbnMgPSBvYmplY3QtPmlzVGFibGVDZWxs
KCkKKyAgICBpZiAoaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCpvYmplY3QpICYmICFvYmplY3Qt
Pmhhc0JveERlY29yYXRpb25zKCkpIHsKKyAgICAgICAgYm9vbCBoYXNCb3hEZWNvcmF0aW9ucyA9
IGlzPFJlbmRlclRhYmxlQ2VsbD4oKm9iamVjdCkKICAgICAgICAgfHwgb2JqZWN0LT5zdHlsZSgp
Lmhhc0JhY2tncm91bmQoKQogICAgICAgICB8fCBvYmplY3QtPnN0eWxlKCkuaGFzQm9yZGVyKCkK
ICAgICAgICAgfHwgb2JqZWN0LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKQpAQCAtNDY1LDggKzQ2
Niw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmplY3Rz
T3JpZ2luYWxTdHlsZSgpCiAgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gY29uc3RfY2Fz
dDxSZW5kZXJPYmplY3QqPihvYmplY3RQYWlyLmtleSk7CiAgICAgICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gb2JqZWN0UmVnaW9uU3R5bGUgPSAmb2JqZWN0LT5zdHlsZSgpOwogICAgICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSBvYmplY3RQYWlyLnZhbHVlLnN0
eWxlOwotICAgICAgICBpZiAob2JqZWN0LT5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgICAg
IHRvUmVuZGVyRWxlbWVudChvYmplY3QpLT5zZXRTdHlsZUludGVybmFsKCpvYmplY3RPcmlnaW5h
bFN0eWxlKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpKQorICAgICAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKm9iamVjdCkuc2V0U3R5bGVJbnRlcm5hbCgq
b2JqZWN0T3JpZ2luYWxTdHlsZSk7CiAKICAgICAgICAgYm9vbCBzaG91bGRDYWNoZVJlZ2lvblN0
eWxlID0gb2JqZWN0UGFpci52YWx1ZS5jYWNoZWQ7CiAgICAgICAgIGlmICghc2hvdWxkQ2FjaGVS
ZWdpb25TdHlsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApp
bmRleCBlZDg5NWU0MDdlYzM1NzkyMmZkZDkyNjljM2UzMjUxNzJhNjViNWM4Li4zODdjMWM5MjIx
NzhmYjRkMTliYjIyNmM3OTI1MWIzNWNhMzA1NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNTkyLDggKzU5Miw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpjbGVhck5lZWRzTGF5b3V0KCkKICAgICBzZXROZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5
b3V0Qml0KGZhbHNlKTsKICAgICBzZXROb3JtYWxDaGlsZE5lZWRzTGF5b3V0Qml0KGZhbHNlKTsK
ICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dEJpdChmYWxzZSk7Ci0gICAgaWYg
KGlzUmVuZGVyRWxlbWVudCgpKQotICAgICAgICB0b1JlbmRlckVsZW1lbnQodGhpcyktPnNldEFu
Y2VzdG9yTGluZUJveERpcnR5KGZhbHNlKTsKKyAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKnRo
aXMpKQorICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGhpcykuc2V0QW5jZXN0b3JM
aW5lQm94RGlydHkoZmFsc2UpOwogI2lmbmRlZiBOREVCVUcKICAgICBjaGVja0Jsb2NrUG9zaXRp
b25lZE9iamVjdHNOZWVkTGF5b3V0KCk7CiAjZW5kaWYKQEAgLTIwMjUsNyArMjAyNSw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogCiAgICAgcmVtb3ZlRnJvbVBhcmVu
dCgpOwogCi0gICAgQVNTRVJUKGRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSB8fCAhaXNSZW5kZXJF
bGVtZW50KCkgfHwgIXZpZXcoKS5mcmFtZVZpZXcoKS5oYXNTbG93UmVwYWludE9iamVjdCh0b1Jl
bmRlckVsZW1lbnQodGhpcykpKTsKKyAgICBBU1NFUlQoZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgp
IHx8ICFpczxSZW5kZXJFbGVtZW50PigqdGhpcykgfHwgIXZpZXcoKS5mcmFtZVZpZXcoKS5oYXNT
bG93UmVwYWludE9iamVjdChkb3duY2FzdDxSZW5kZXJFbGVtZW50Pih0aGlzKSkpOwogCiAgICAg
Ly8gVGhlIHJlbW92ZSgpIGNhbGwgYWJvdmUgbWF5IGludm9rZSBheE9iamVjdENhY2hlKCktPmNo
aWxkcmVuQ2hhbmdlZCgpIG9uIHRoZSBwYXJlbnQsIHdoaWNoIG1heSByZXF1aXJlIHRoZSBBWCBy
ZW5kZXIKICAgICAvLyBvYmplY3QgZm9yIHRoaXMgcmVuZGVyZXIuIFNvIHdlIHJlbW92ZSB0aGUg
QVggcmVuZGVyIG9iamVjdCBub3csIGFmdGVyIHRoZSByZW5kZXJlciBpcyByZW1vdmVkLgpAQCAt
MjM1NiwxMiArMjM1NiwxMiBAQCB2b2lkIFJlbmRlck9iamVjdDo6Y29sbGVjdEFubm90YXRlZFJl
Z2lvbnMoVmVjdG9yPEFubm90YXRlZFJlZ2lvblZhbHVlPiYgcmVnaW9ucwogewogICAgIC8vIFJl
bmRlclRleHRzIGRvbid0IGhhdmUgdGhlaXIgb3duIHN0eWxlLCB0aGV5IGp1c3QgdXNlIHRoZWly
IHBhcmVudCdzIHN0eWxlLAogICAgIC8vIHNvIHdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGVt
LgotICAgIGlmIChpc1RleHQoKSkKKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKnRoaXMpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhZGRBbm5vdGF0ZWRSZWdpb25zKHJlZ2lvbnMpOwotICAgIGZv
ciAoUmVuZGVyT2JqZWN0KiBjdXJyID0gdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5maXJzdENoaWxk
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2libGluZygpKQotICAgICAgICBjdXJyLT5jb2xs
ZWN0QW5ub3RhdGVkUmVnaW9ucyhyZWdpb25zKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogY3Vy
cmVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0aGlzKS5maXJzdENoaWxkKCk7IGN1cnJl
bnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKQorICAgICAgICBjdXJyZW50LT5j
b2xsZWN0QW5ub3RhdGVkUmVnaW9ucyhyZWdpb25zKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCmluZGV4IDRjY2ZiMzRhOThhMDEyMjFmNjA1
MDg0YWE5NWUzODM3NjkyZWE4YjAuLmQ0M2Y5OTZmN2JmNGM2ODM0YjJlMWVlN2ExYmFkMWEyNDEy
MDE0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCkBAIC03
NywxMCArNzcsMTAgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0
ZXJzKElubGluZUZsb3dCb3gqJiBmaXJzdExpbmVCb3gsIExheW8KIAogICAgIC8vIGZpcnN0Q2hp
bGQoKSByZXR1cm5zIHRoZSB3cmFwcGluZyAoYmFja2Ryb3ApIDxkaXY+LiBUaGUgY3VlIG9iamVj
dCBpcwogICAgIC8vIHRoZSA8ZGl2PidzIGZpcnN0IGNoaWxkLgotICAgIFJlbmRlck9iamVjdCog
Zmlyc3RDaGlsZCA9IHRoaXMtPmZpcnN0Q2hpbGQoKTsKLSAgICBSZW5kZXJFbGVtZW50KiBiYWNr
ZHJvcEVsZW1lbnQgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCk7CisgICAgUmVuZGVyT2Jq
ZWN0JiBmaXJzdENoaWxkID0gKnRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICBSZW5kZXJFbGVtZW50
JiBiYWNrZHJvcEVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKTsK
ICAgICAKLSAgICBmaXJzdExpbmVCb3ggPSB0b1JlbmRlcklubGluZShiYWNrZHJvcEVsZW1lbnQt
PmZpcnN0Q2hpbGQoKSktPmZpcnN0TGluZUJveCgpOworICAgIGZpcnN0TGluZUJveCA9IGRvd25j
YXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5maXJzdENoaWxkKCkpLmZpcnN0TGlu
ZUJveCgpOwogICAgIGlmICghZmlyc3RMaW5lQm94KQogICAgICAgICBmaXJzdExpbmVCb3ggPSB0
aGlzLT5maXJzdFJvb3RCb3goKTsKIApAQCAtMzQzLDEwICszNDMsMTAgQEAgdm9pZCBSZW5kZXJW
VFRDdWU6OnJlcG9zaXRpb25HZW5lcmljQ3VlKCkKIAogICAgIC8vIGZpcnN0Q2hpbGQoKSByZXR1
cm5zIHRoZSB3cmFwcGluZyAoYmFja2Ryb3ApIDxkaXY+LiBUaGUgY3VlIG9iamVjdCBpcwogICAg
IC8vIHRoZSA8ZGl2PidzIGZpcnN0IGNoaWxkLgotICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGls
ZCA9IHRoaXMtPmZpcnN0Q2hpbGQoKTsKLSAgICBSZW5kZXJFbGVtZW50KiBiYWNrZHJvcEVsZW1l
bnQgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCk7CisgICAgUmVuZGVyT2JqZWN0JiBmaXJz
dENoaWxkID0gKnRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICBSZW5kZXJFbGVtZW50JiBiYWNrZHJv
cEVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKTsKICAgICAKLSAg
ICBJbmxpbmVGbG93Qm94KiBmaXJzdExpbmVCb3ggPSB0b1JlbmRlcklubGluZShiYWNrZHJvcEVs
ZW1lbnQtPmZpcnN0Q2hpbGQoKSktPmZpcnN0TGluZUJveCgpOworICAgIElubGluZUZsb3dCb3gq
IGZpcnN0TGluZUJveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5m
aXJzdENoaWxkKCkpLmZpcnN0TGluZUJveCgpOwogICAgIGlmIChzdGF0aWNfY2FzdDxUZXh0VHJh
Y2tDdWVHZW5lcmljKj4obV9jdWUpLT51c2VEZWZhdWx0UG9zaXRpb24oKSAmJiBmaXJzdExpbmVC
b3gpIHsKICAgICAgICAgTGF5b3V0VW5pdCBwYXJlbnRXaWR0aCA9IGNvbnRhaW5pbmdCbG9jaygp
LT5sb2dpY2FsV2lkdGgoKTsKICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aCA9IGZpcnN0TGluZUJv
eC0+d2lkdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggYjVlZjI3ZmVkMzYzNThhMTM5YjUxMTNi
ZWU5NDgwYzFmZTFkMjhkYS4uNWNkM2E2MDM5NjMyM2YxOGRlZjMwNzIzNGI3ZWIyNzFlZThiMDAz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTEwMCw5ICsxMDAsOSBAQCB2b2lkIFJlbmRlck1hdGhN
TEZyYWN0aW9uOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIC8q
IGJlZm9yZQogICAgIH0KICAgICAKICAgICBpZiAoZmlyc3RDaGlsZCgpLT5pc0VtcHR5KCkpCi0g
ICAgICAgIHRvUmVuZGVyRWxlbWVudChmaXJzdENoaWxkKCkpLT5hZGRDaGlsZChjaGlsZCk7Cisg
ICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpmaXJzdENoaWxkKCkpLmFkZENoaWxkKGNo
aWxkKTsKICAgICBlbHNlCi0gICAgICAgIHRvUmVuZGVyRWxlbWVudChsYXN0Q2hpbGQoKSktPmFk
ZENoaWxkKGNoaWxkKTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmxhc3RDaGls
ZCgpKS5hZGRDaGlsZChjaGlsZCk7CiAgICAgCiAgICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNZW5jbG9zZS5jcHAKaW5kZXggYTI2YWM0OGNlODg4NTRkMWFkZmQxZjdiMjNkZjZhN2E5Y2E2
ZThhYy4uZjVjYWFlNzkwY2NmMzJkNmFhODZmZGE0Nzc3Zjk2MDc0ZWQyMjg2ZSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5j
bG9zZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6YWRk
Q2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmUKICAgICAK
ICAgICBpZiAobmV3Q2hpbGQpIHsKICAgICAgICAgaWYgKGZpcnN0Q2hpbGQoKSAmJiBtZW5jbG9z
ZS0+aXNSYWRpY2FsKCkpCi0gICAgICAgICAgICB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgp
KS0+YWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQo
KSA9PSBmaXJzdENoaWxkKCkgPyBiZWZvcmVDaGlsZCA6IG51bGxwdHIpOworICAgICAgICAgICAg
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmZpcnN0Q2hpbGQoKSkuYWRkQ2hpbGQobmV3Q2hpbGQs
IGJlZm9yZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKSA9PSBmaXJzdENoaWxkKCkgPyBi
ZWZvcmVDaGlsZCA6IG51bGxwdHIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSZW5kZXJN
YXRoTUxCbG9jazo6YWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuY3BwCmluZGV4IGNjYWUyYjk0YzRhMmZjZWRjNTA4NmFjNmEyNGFkMTRmOThiYWM4Njgu
LmM1NDEzMzBlOGQ1OWY0OGNiYjJmNWMxODk1OWFhMzZkZWU1MjhiMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwCkBAIC0xMzc5LDEwICsxMzc5LDEwIEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnJl
YnVpbGRUb2tlbkNvbnRlbnQoY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZykKICAgICAvLyBX
ZSBkZXN0cm95IHRoZSB3cmFwcGVyIGFuZCByZWJ1aWxkIGl0LgogICAgIC8vIEZJWE1FOiBVc2lu
ZyB0aGlzIFJlbmRlclRleHQgbWFrZSB0aGUgdGV4dCBpbmFjY2Vzc2libGUgdG8gdGhlIGR1bXBB
c1RleHQvc2VsZWN0aW9uIGNvZGUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjU1OTcpLgogICAgIGlmIChmaXJzdENoaWxkKCkpCi0gICAgICAgIHRvUmVuZGVyRWxl
bWVudChmaXJzdENoaWxkKCkpLT5kZXN0cm95KCk7CisgICAgICAgIGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KCpmaXJzdENoaWxkKCkpLmRlc3Ryb3koKTsKICAgICBjcmVhdGVXcmFwcGVySWZOZWVk
ZWQoKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyVGV4dD4gdGV4dCA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclRleHQ+KGRvY3VtZW50KCksIHRleHRDb250ZW50KTsKLSAgICB0b1JlbmRlckVsZW1lbnQo
Zmlyc3RDaGlsZCgpKS0+YWRkQ2hpbGQodGV4dC5sZWFrUHRyKCkpOworICAgIGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KCpmaXJzdENoaWxkKCkpLmFkZENoaWxkKHRleHQubGVha1B0cigpKTsKIAog
ICAgIC8vIFdlIHZlcmlmeSB3aGV0aGVyIHRoZSBvcGVyYXRvciB0ZXh0IGNhbiBiZSByZXByZXNl
bnRlZCBieSBhIHNpbmdsZSBVQ2hhci4KICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBoYW5k
bGUgc3Vycm9nYXRlIHBhaXJzIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyMjk2KS4KQEAgLTE2NTQsNyArMTY1NCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0
b3I6OnVwZGF0ZVN0eWxlKCkKICAgICAvLyBXZSBhZGQgc3BhY2luZyBhcm91bmQgdGhlIG9wZXJh
dG9yLgogICAgIC8vIEZJWE1FOiBUaGUgc3BhY2luZyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHdo
b2xlIGVtYmVsbGlzaGVkIG9wZXJhdG9yIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI0ODMxKS4KICAgICAvLyBGSVhNRTogVGhlIHNwYWNpbmcgc2hvdWxkIG9ubHkg
YmUgYWRkZWQgaW5zaWRlIChwZXJoYXBzIGluZmVycmVkKSBtcm93IChodHRwOi8vd3d3LnczLm9y
Zy9UUi9NYXRoTUwvY2hhcHRlcjMuaHRtbCNwcmVzbS5vcHNwYWNpbmcpLgotICAgIGNvbnN0IGF1
dG8mIHdyYXBwZXIgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgpKTsKKyAgICBjb25zdCBh
dXRvJiB3cmFwcGVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RDaGlsZCgpKTsKICAg
ICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoJnN0eWxlKCksIEZMRVgpOwogICAgIG5ld1N0eWxlLmdldCgpLnNldE1hcmdpblN0YXJ0
KExlbmd0aChtX2xlYWRpbmdTcGFjZSwgRml4ZWQpKTsKICAgICBuZXdTdHlsZS5nZXQoKS5zZXRN
YXJnaW5FbmQoTGVuZ3RoKG1fdHJhaWxpbmdTcGFjZSwgRml4ZWQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCmluZGV4IGI2
M2FjZjQxMWNjYWQzNWIzMDg2NTFlMTkwOTNjMmEwNTY3MDdiZWMuLmVkMjA5YWQxYTY4ZTA2NDdk
ZjU0OTg4ZTYzMDdmZDA4MTI1YTJiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApAQCAtMTU4LDE4ICsxNTgsMTggQEAg
dm9pZCBSZW5kZXJNYXRoTUxSb290OjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWwKICAgICBhdXRvIGluZGV4ID0gaW5kZXhXcmFwcGVyKCk7
CiAgICAgUmVuZGVyRWxlbWVudCogYWN0dWFsUGFyZW50OwogICAgIFJlbmRlckVsZW1lbnQqIGFj
dHVhbEJlZm9yZUNoaWxkOwotICAgIGlmIChpc1JlbmRlck1hdGhNTFNxdWFyZVJvb3QoKSkgewor
ICAgIGlmIChpczxSZW5kZXJNYXRoTUxTcXVhcmVSb290PigqdGhpcykpIHsKICAgICAgICAgLy8g
Rm9yIHNxdWFyZSByb290LCB3ZSBhbHdheXMgaW5zZXJ0IHRoZSBjaGlsZCBpbnRvIHRoZSBiYXNl
IHdyYXBwZXIuCiAgICAgICAgIGFjdHVhbFBhcmVudCA9IGJhc2U7CiAgICAgICAgIGlmIChiZWZv
cmVDaGlsZCAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCkgPT0gYmFzZSkKLSAgICAgICAgICAgIGFj
dHVhbEJlZm9yZUNoaWxkID0gdG9SZW5kZXJFbGVtZW50KGJlZm9yZUNoaWxkKTsKKyAgICAgICAg
ICAgIGFjdHVhbEJlZm9yZUNoaWxkID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oYmVmb3JlQ2hp
bGQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhY3R1YWxCZWZvcmVDaGlsZCA9IG51bGxw
dHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRm9yIG1yb290LCB3ZSBpbnNlcnQgdGhlIGNo
aWxkIGludG8gdGhlIHBhcmVudCBvZiBiZWZvcmVDaGlsZCwgb3IgYXQgdGhlIGVuZCBvZiB0aGUg
aW5kZXguIFRoZSB3cmFwcGVyIHN0cnVjdHVyZSBpcyByZW9yZ2FuaXplIGJlbG93LgogICAgICAg
ICBhY3R1YWxQYXJlbnQgPSBiZWZvcmVDaGlsZCA/IGJlZm9yZUNoaWxkLT5wYXJlbnQoKSA6IG51
bGxwdHI7CiAgICAgICAgIGlmIChhY3R1YWxQYXJlbnQgPT0gYmFzZSB8fCBhY3R1YWxQYXJlbnQg
PT0gaW5kZXgpCi0gICAgICAgICAgICBhY3R1YWxCZWZvcmVDaGlsZCA9IHRvUmVuZGVyRWxlbWVu
dChiZWZvcmVDaGlsZCk7CisgICAgICAgICAgICBhY3R1YWxCZWZvcmVDaGlsZCA9IGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KGJlZm9yZUNoaWxkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBhY3R1YWxQYXJlbnQgPSBpbmRleDsKICAgICAgICAgICAgIGFjdHVhbEJlZm9yZUNoaWxkID0g
bnVsbHB0cjsKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OmxheW91
dCgpCiAgICAgLy8gV2UgbGF5b3V0IHRoZSBjaGlsZHJlbi4KICAgICBmb3IgKFJlbmRlck9iamVj
dCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgIHRv
UmVuZGVyRWxlbWVudChjaGlsZCktPmxheW91dCgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlvdXQoKTsKICAgICB9CiAKICAgICBhdXRvIHJhZGljYWwg
PSByYWRpY2FsT3BlcmF0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXggZGM0YmE1NzZhYjYzZjMwZDkzYmE3
ZGVmZDhjMjVlMzMwODMxYmEwNi4uOTlhNWViMTQwOGQzOTcyNTJmNDgzMGY4NDNlNmVkM2Q4ODli
Njk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVuZGVyTWF0aE1MVG9rZW46OlJl
bmRlck1hdGhNTFRva2VuKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3QKIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OmFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAgY3JlYXRlV3JhcHBlcklmTmVl
ZGVkKCk7Ci0gICAgdG9SZW5kZXJFbGVtZW50KGZpcnN0Q2hpbGQoKSktPmFkZENoaWxkKG5ld0No
aWxkLCBiZWZvcmVDaGlsZCk7CisgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmZpcnN0Q2hp
bGQoKSkuYWRkQ2hpbGQobmV3Q2hpbGQsIGJlZm9yZUNoaWxkKTsKIH0KIAogdm9pZCBSZW5kZXJN
YXRoTUxUb2tlbjo6Y3JlYXRlV3JhcHBlcklmTmVlZGVkKCkKQEAgLTY5LDggKzY5LDggQEAgdm9p
ZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlVG9rZW5Db250ZW50KCkKICAgICAgICAgLy8gVGhl
IHJlbmRlcmVycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjaGlsZHJlbiBvZiB0aGUgdG9rZW4gZWxl
bWVudCBhcmUgd3JhcHBlZCBpbnNpZGUgYW4gYW5vbnltb3VzIFJlbmRlck1hdGhNTEJsb2NrLgog
ICAgICAgICAvLyBXaGVuIG9uZSBvZiB0aGVzZSByZW5kZXJlcnMgaXMgYSBSZW5kZXJFbGVtZW50
LCB3ZSBoYW5kbGUgdGhlIFJlbmRlck1hdGhNTFRva2VuIGRpZmZlcmVudGx5LgogICAgICAgICAv
LyBGb3Igc29tZSByZWFzb24sIGFuIGFkZGl0aW9uYWwgYW5vbnltb3VzIFJlbmRlckJsb2NrIGlz
IGNyZWF0ZWQgYXMgYSBjaGlsZCBvZiB0aGUgUmVuZGVyTWF0aE1MVG9rZW4gYW5kIHRoZSByZW5k
ZXJlcnMgYXJlIGFjdHVhbGx5IGluc2VydGVkIGludG8gdGhhdCBSZW5kZXJCbG9jayBzbyB3ZSBu
ZWVkIHRvIGRpZyBkb3duIG9uZSBhZGRpdGlvbmFsIGxldmVsIGhlcmUuCi0gICAgICAgIGNvbnN0
IGF1dG8mIHdyYXBwZXIgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgpKTsKLSAgICAgICAg
aWYgKGNvbnN0IGF1dG8mIGJsb2NrID0gdG9SZW5kZXJFbGVtZW50KHdyYXBwZXItPmZpcnN0Q2hp
bGQoKSkpCisgICAgICAgIGNvbnN0IGF1dG8mIHdyYXBwZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PihmaXJzdENoaWxkKCkpOworICAgICAgICBpZiAoY29uc3QgYXV0byYgYmxvY2sgPSBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50Pih3cmFwcGVyLT5maXJzdENoaWxkKCkpKQogICAgICAgICAgICAg
bV9jb250YWluc0VsZW1lbnQgPSBjaGlsZHJlbk9mVHlwZTxSZW5kZXJFbGVtZW50PigqYmxvY2sp
LmZpcnN0KCk7CiAgICAgICAgIHVwZGF0ZVN0eWxlKCk7CiAgICAgfQpAQCAtODEsNyArODEsNyBA
QCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVTdHlsZSgpCiB7CiAgICAgY29uc3QgYXV0
byYgdG9rZW5FbGVtZW50ID0gZWxlbWVudCgpOwogCi0gICAgY29uc3QgYXV0byYgd3JhcHBlciA9
IHRvUmVuZGVyRWxlbWVudChmaXJzdENoaWxkKCkpOworICAgIGNvbnN0IGF1dG8mIHdyYXBwZXIg
PSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKCkpOwogICAgIGF1dG8gbmV3U3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUo
KSwgRkxFWCk7CiAKICAgICBpZiAodG9rZW5FbGVtZW50Lmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1pVGFnKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCmluZGV4IDU0YWRlNWZlNjYzMTg3YTQ1NGJiYTVm
Y2I0NjQ0MzlhMDJlYWY3NjYuLjgxZGI3YjVlMmNlYWJmMjVmNWMyYzFlMzBmNjUxZDYyNzM1MDk3
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBSZW5kZXJNYXRo
TUxVbmRlck92ZXI6OmxheW91dCgpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICB0b1JlbmRlckVsZW1lbnQoY2hpbGQpLT5sYXlvdXQoKTsKKyAgICAgICAg
ICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkubGF5b3V0KCk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBTa2lwcGluZyB0aGUgZW1iZWxsaXNoZWQgb3AgZG9lcyBub3Qgd29yayBm
b3IgbmVzdGVkIHN0cnVjdHVyZXMgbGlrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAppbmRleCA3NWI3YzBjNzJiZDc2MzE4ODcwYTY3
YTlmYjE1NjU1ZGNkOTQ3ZmM5Li4xMTFkYzU3NzFhN2Q5ZTVmODkxYWM5OTYyNmZkZjYzN2M4Nzhi
ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlLmNwcApAQCAtMTg1LDE3ICsxODUsMTcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKFJlbmRlck9iamVjdCYK
ICAgICBpZiAobmVlZHNMYXlvdXQgJiYgIW9iamVjdC5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkp
CiAgICAgICAgIG9iamVjdC5zZXROZWVkc0xheW91dCgpOwogCi0gICAgaWYgKG9iamVjdC5pc1Jl
bmRlckVsZW1lbnQoKSkKLSAgICAgICAgcmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVu
ZGVuY2llcyh0b1JlbmRlckVsZW1lbnQob2JqZWN0KSwgbmVlZHNMYXlvdXQpOworICAgIGlmIChp
czxSZW5kZXJFbGVtZW50PihvYmplY3QpKQorICAgICAgICByZW1vdmVGcm9tQ2FjaGVBbmRJbnZh
bGlkYXRlRGVwZW5kZW5jaWVzKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG9iamVjdCksIG5lZWRz
TGF5b3V0KTsKIAogICAgIC8vIEludmFsaWRhdGUgcmVzb3VyY2VzIGluIGFuY2VzdG9yIGNoYWlu
LCBpZiBuZWVkZWQuCiAgICAgYXV0byBjdXJyZW50ID0gb2JqZWN0LnBhcmVudCgpOwogICAgIHdo
aWxlIChjdXJyZW50KSB7CiAgICAgICAgIHJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBl
bmRlbmNpZXMoKmN1cnJlbnQsIG5lZWRzTGF5b3V0KTsKIAotICAgICAgICBpZiAoY3VycmVudC0+
aXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcj4oKmN1cnJlbnQpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcHJv
Y2VzcyB0aGUgcmVzdCBvZiB0aGUgYW5jZXN0b3JzLgotICAgICAgICAgICAgdG9SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lcigqY3VycmVudCkucmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZSgpOwor
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI+KCpjdXJyZW50
KS5yZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cAppbmRleCA4ZTc1OTA2YzU1MTY3YmZjMmJkMDllMzZlMmRjZGY0Yzc1MjZkMzkyLi41MTBkMTAw
OTgwMzk4MWE2YzM0MGEzNmQ1MzQ0NzBhNjM0NTQ1MTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRlICJQb2ludGVyRXZlbnRzSGl0UnVsZXMu
aCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclNWR0lubGlu
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKQEAgLTEyNywxNSArMTI4
LDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBmaW5kUHJldmlvdXNBbmROZXh0QXR0cmlidXRlcyhS
ZW5kZXJFbGVtZW50KiBzdGFydCwgUmVuZGVyU1ZHCiAgICAgQVNTRVJUKGxvY2F0ZUVsZW1lbnQp
OwogICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgaXRlcmF0aXZlLgogICAgIGZvciAoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCA9IHN0YXJ0LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNTVkdJbmxpbmVUZXh0KCkpIHsK
LSAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQqIHRleHQgPSB0b1JlbmRlclNWR0lubGlu
ZVRleHQoY2hpbGQpOwotICAgICAgICAgICAgaWYgKGxvY2F0ZUVsZW1lbnQgIT0gdGV4dCkgewor
ICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmNoaWxkKSkgeworICAgICAgICAg
ICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRl
eHQ+KCpjaGlsZCk7CisgICAgICAgICAgICBpZiAobG9jYXRlRWxlbWVudCAhPSAmdGV4dCkgewog
ICAgICAgICAgICAgICAgIGlmIChzdG9wQWZ0ZXJOZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAg
IG5leHQgPSB0ZXh0LT5sYXlvdXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgICAgIG5l
eHQgPSB0ZXh0LmxheW91dEF0dHJpYnV0ZXMoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHJldmlvdXMgPSB0
ZXh0LT5sYXlvdXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSB0ZXh0
LmxheW91dEF0dHJpYnV0ZXMoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KIApAQCAtMTQzLDEwICsxNDQsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGZpbmRQcmV2
aW91c0FuZE5leHRBdHRyaWJ1dGVzKFJlbmRlckVsZW1lbnQqIHN0YXJ0LCBSZW5kZXJTVkcKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFjaGlsZC0+aXNT
VkdJbmxpbmUoKSkKKyAgICAgICAgaWYgKCFpczxSZW5kZXJTVkdJbmxpbmU+KCpjaGlsZCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoZmluZFByZXZpb3VzQW5kTmV4dEF0
dHJpYnV0ZXModG9SZW5kZXJFbGVtZW50KGNoaWxkKSwgbG9jYXRlRWxlbWVudCwgc3RvcEFmdGVy
TmV4dCwgcHJldmlvdXMsIG5leHQpKQorICAgICAgICBpZiAoZmluZFByZXZpb3VzQW5kTmV4dEF0
dHJpYnV0ZXMoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGQpLCBsb2NhdGVFbGVtZW50LCBz
dG9wQWZ0ZXJOZXh0LCBwcmV2aW91cywgbmV4dCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTI5Niw4ICsyOTcsOCBAQCB2b2lkIFJlbmRlclNWR1RleHQ6OnN1YnRyZWVT
dHlsZURpZENoYW5nZShSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0KQogICAgIC8vIG5vciB0aGUg
bGF5b3V0IGF0dHJpYnV0ZXMgY2FjaGVkIGluIHRoZSBsZWFmICN0ZXh0IHJlbmRlcmVycy4KICAg
ICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJnZVByZXZlbnRlcjsKICAgICBm
b3IgKFJlbmRlck9iamVjdCogZGVzY2VuZGFudCA9IHRleHQ7IGRlc2NlbmRhbnQ7IGRlc2NlbmRh
bnQgPSBkZXNjZW5kYW50LT5uZXh0SW5QcmVPcmRlcih0ZXh0KSkgewotICAgICAgICBpZiAoZGVz
Y2VuZGFudC0+aXNTVkdJbmxpbmVUZXh0KCkpCi0gICAgICAgICAgICBtX2xheW91dEF0dHJpYnV0
ZXNCdWlsZGVyLnJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKHRvUmVuZGVyU1ZHSW5saW5l
VGV4dChkZXNjZW5kYW50KSk7CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdJbmxpbmVUZXh0Pigq
ZGVzY2VuZGFudCkpCisgICAgICAgICAgICBtX2xheW91dEF0dHJpYnV0ZXNCdWlsZGVyLnJlYnVp
bGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KCpk
ZXNjZW5kYW50KSk7CiAgICAgfQogfQogCkBAIC0zMzgsNyArMzM5LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIHVwZGF0ZUZvbnRJbkFsbERlc2NlbmRhbnRzKFJlbmRlck9iamVjdCogc3RhcnQsIFNW
R1RleHRMYXlvdXQKICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCA9IHRvUmVuZGVy
U1ZHSW5saW5lVGV4dCgqZGVzY2VuZGFudCk7CiAgICAgICAgIHRleHQudXBkYXRlU2NhbGVkRm9u
dCgpOwogICAgICAgICBpZiAoYnVpbGRlcikKLSAgICAgICAgICAgIGJ1aWxkZXItPnJlYnVpbGRN
ZXRyaWNzRm9yVGV4dFJlbmRlcmVyKCZ0ZXh0KTsKKyAgICAgICAgICAgIGJ1aWxkZXItPnJlYnVp
bGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKHRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggM2M0ODNh
Mzg0ZDYwMWM0Yzk0NTViZjZhNDBjMWM2MDVmZTU5YmZiMS4uYmI1MmVmMmQ3ZjY3MTE1ZWY2Mzc0
Y2IxYTdkNGFlYjVjMjVlOTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC0yNDYsMjEgKzI0NiwyMSBAQCB2b2lkIFNWR1Jl
bmRlclN1cHBvcnQ6OmxheW91dENoaWxkcmVuKFJlbmRlckVsZW1lbnQmIHN0YXJ0LCBib29sIHNl
bGZOZWVkc0xheW91dAogCiAgICAgICAgIGlmICh0cmFuc2Zvcm1DaGFuZ2VkKSB7CiAgICAgICAg
ICAgICAvLyBJZiB0aGUgdHJhbnNmb3JtIGNoYW5nZWQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHRl
eHQgbWV0cmljcyAobm90ZTogdGhpcyBhbHNvIGhhcHBlbnMgZm9yIGxheW91dFNpemVDaGFuZ2Vk
PXRydWUpLgotICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1NWR1RleHQoKSkKLSAgICAgICAgICAg
ICAgICB0b1JlbmRlclNWR1RleHQoY2hpbGQpLT5zZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCk7
CisgICAgICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHVGV4dD4oKmNoaWxkKSkKKyAgICAgICAgICAg
ICAgICBkb3duY2FzdDxSZW5kZXJTVkdUZXh0PigqY2hpbGQpLnNldE5lZWRzVGV4dE1ldHJpY3NV
cGRhdGUoKTsKICAgICAgICAgICAgIG5lZWRzTGF5b3V0ID0gdHJ1ZTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChsYXlvdXRTaXplQ2hhbmdlZCkgewogICAgICAgICAgICAgLy8gV2hlbiBzZWxm
TmVlZHNMYXlvdXQgaXMgZmFsc2UgYW5kIHRoZSBsYXlvdXQgc2l6ZSBjaGFuZ2VkLCB3ZSBoYXZl
IHRvIGNoZWNrIHdoZXRoZXIgdGhpcyBjaGlsZCB1c2VzIHJlbGF0aXZlIGxlbmd0aHMKLSAgICAg
ICAgICAgIGlmIChTVkdFbGVtZW50KiBlbGVtZW50ID0gY2hpbGQtPm5vZGUoKS0+aXNTVkdFbGVt
ZW50KCkgPyBkb3duY2FzdDxTVkdFbGVtZW50PihjaGlsZC0+bm9kZSgpKSA6IG51bGxwdHIpIHsK
KyAgICAgICAgICAgIGlmIChTVkdFbGVtZW50KiBlbGVtZW50ID0gaXM8U1ZHRWxlbWVudD4oKmNo
aWxkLT5ub2RlKCkpID8gZG93bmNhc3Q8U1ZHRWxlbWVudD4oY2hpbGQtPm5vZGUoKSkgOiBudWxs
cHRyKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1JlbGF0aXZlTGVuZ3Rocygp
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGxheW91dCBzaXplIGNoYW5nZWQg
YW5kIHdoZW4gdXNpbmcgcmVsYXRpdmUgdmFsdWVzIHRlbGwgdGhlIFJlbmRlclNWR1NoYXBlIHRv
IHVwZGF0ZSBpdHMgc2hhcGUgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+
aXNTVkdTaGFwZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJTVkdTaGFwZShj
aGlsZCktPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY2hpbGQtPmlzU1ZHVGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b1JlbmRl
clNWR1RleHQoY2hpbGQpLT5zZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0b1JlbmRlclNWR1RleHQoY2hpbGQpLT5zZXROZWVkc1Bvc2l0aW9uaW5n
VmFsdWVzVXBkYXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpczxSZW5kZXJTVkdTaGFw
ZT4oKmNoaWxkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1No
YXBlPigqY2hpbGQpLnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoaXM8UmVuZGVyU1ZHVGV4dD4oKmNoaWxkKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4oKmNoaWxkKS5zZXROZWVkc1RleHRNZXRyaWNz
VXBkYXRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdUZXh0
PigqY2hpbGQpLnNldE5lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG5lZWRzTGF5b3V0ID0gdHJ1ZTsKQEAg
LTI3MiwxNSArMjcyLDE1IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bGF5b3V0Q2hpbGRyZW4o
UmVuZGVyRWxlbWVudCYgc3RhcnQsIGJvb2wgc2VsZk5lZWRzTGF5b3V0CiAgICAgICAgICAgICBj
aGlsZC0+c2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKIAogICAgICAgICBpZiAoY2hpbGQt
Pm5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgICAgIHRvUmVuZGVyRWxlbWVudChjaGlsZCktPmxh
eW91dCgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlv
dXQoKTsKICAgICAgICAgICAgIC8vIFJlbmRlcmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHJlcGFp
bnRpbmcgdGhlbXNlbHZlcyB3aGVuIGNoYW5naW5nLCBleGNlcHQKICAgICAgICAgICAgIC8vIGZv
ciB0aGUgaW5pdGlhbCBwYWludCB0byBhdm9pZCBwb3RlbnRpYWwgZG91YmxlLXBhaW50aW5nIGNh
dXNlZCBieSBub24tc2Vuc2ljYWwgIm9sZCIgYm91bmRzLgogICAgICAgICAgICAgLy8gV2UgY291
bGQgaGFuZGxlIHRoaXMgaW4gdGhlIGluZGl2aWR1YWwgb2JqZWN0cywgYnV0IGZvciBub3cgaXQn
cyBlYXNpZXIgdG8gaGF2ZQogICAgICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lcnMgY2FsbCBy
ZXBhaW50KCkuICAoUmVuZGVyQmxvY2s6OmxheW91dCogaGFzIHNpbWlsYXIgbG9naWMuKQogICAg
ICAgICAgICAgaWYgKCFjaGlsZEV2ZXJIYWRMYXlvdXQpCiAgICAgICAgICAgICAgICAgY2hpbGQt
PnJlcGFpbnQoKTsKLSAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRTaXplQ2hhbmdlZCAmJiBjaGls
ZC0+aXNSZW5kZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBlbGVtZW50c1RoYXREaWROb3RSZWNl
aXZlTGF5b3V0LmFkZCh0b1JlbmRlckVsZW1lbnQoY2hpbGQpKTsKKyAgICAgICAgfSBlbHNlIGlm
IChsYXlvdXRTaXplQ2hhbmdlZCAmJiBpczxSZW5kZXJFbGVtZW50PigqY2hpbGQpKQorICAgICAg
ICAgICAgZWxlbWVudHNUaGF0RGlkTm90UmVjZWl2ZUxheW91dC5hZGQoZG93bmNhc3Q8UmVuZGVy
RWxlbWVudD4oY2hpbGQpKTsKIAogICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3Vy
Y2VzQ2FjaGUuY3BwCmluZGV4IGE5NTBjNDBjZGY4ZTRjODY5YWVkOWExZjAwZWEwOWMzNTQ3Zjcy
MmIuLjg1NTZlY2RlMjYyZjIxMjQ4NWRlMjJjZWVhODk0YWQ3OTFlYWRiNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2FzQWRkZWRUb1Ry
ZWUoUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIAogICAgIGlmICghcmVuZGVyZXJDYW5IYXZlUmVz
b3VyY2VzKHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlckVsZW1lbnQmIGVs
ZW1lbnRSZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudChyZW5kZXJlcik7CisgICAgUmVuZGVyRWxl
bWVudCYgZWxlbWVudFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIp
OwogICAgIHJlc291cmNlc0NhY2hlRnJvbVJlbmRlcmVyKGVsZW1lbnRSZW5kZXJlcikuYWRkUmVz
b3VyY2VzRnJvbVJlbmRlcmVyKGVsZW1lbnRSZW5kZXJlciwgZWxlbWVudFJlbmRlcmVyLnN0eWxl
KCkpOwogfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xp
ZW50V2lsbEJlUmVtb3ZlZEZyb21UcmVlKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiAKICAgICBp
ZiAoIXJlbmRlcmVyQ2FuSGF2ZVJlc291cmNlcyhyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsK
LSAgICBSZW5kZXJFbGVtZW50JiBlbGVtZW50UmVuZGVyZXIgPSB0b1JlbmRlckVsZW1lbnQocmVu
ZGVyZXIpOworICAgIFJlbmRlckVsZW1lbnQmIGVsZW1lbnRSZW5kZXJlciA9IGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KHJlbmRlcmVyKTsKICAgICByZXNvdXJjZXNDYWNoZUZyb21SZW5kZXJlcihl
bGVtZW50UmVuZGVyZXIpLnJlbW92ZVJlc291cmNlc0Zyb21SZW5kZXJlcihlbGVtZW50UmVuZGVy
ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKaW5kZXggNDY3YzIxNTgxYjIx
ZDUxNTA1ZjcyYjU2NmFhNDVhYmM0OGM0ZWU5YS4uMTZlMjdjYzFmODE3OWJmZWI5NzFlMmU0MDc2
ZWU4ZDQ5ODhhMTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCB2b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRB
dHRyaWJ1dGVzRm9yVGV4dFJlbmRlcmVyKFJlbmRlcgogICAgICAgICBidWlsZENoYXJhY3RlckRh
dGFNYXAoKnRleHRSb290KTsKICAgICB9CiAKLSAgICBtX21ldHJpY3NCdWlsZGVyLmJ1aWxkTWV0
cmljc0FuZExheW91dEF0dHJpYnV0ZXModGV4dFJvb3QsICZ0ZXh0LCBtX2NoYXJhY3RlckRhdGFN
YXApOworICAgIG1fbWV0cmljc0J1aWxkZXIuYnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRl
cygqdGV4dFJvb3QsICZ0ZXh0LCBtX2NoYXJhY3RlckRhdGFNYXApOwogfQogCiBib29sIFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3Vi
dHJlZShSZW5kZXJTVkdUZXh0JiB0ZXh0Um9vdCkKQEAgLTY4LDEzICs2OCwxMiBAQCBib29sIFNW
R1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9y
U3VidHJlZShSZW5kZXJTVgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBidWlsZENoYXJh
Y3RlckRhdGFNYXAodGV4dFJvb3QpOwotICAgIG1fbWV0cmljc0J1aWxkZXIuYnVpbGRNZXRyaWNz
QW5kTGF5b3V0QXR0cmlidXRlcygmdGV4dFJvb3QsIG51bGxwdHIsIG1fY2hhcmFjdGVyRGF0YU1h
cCk7CisgICAgbV9tZXRyaWNzQnVpbGRlci5idWlsZE1ldHJpY3NBbmRMYXlvdXRBdHRyaWJ1dGVz
KHRleHRSb290LCBudWxscHRyLCBtX2NoYXJhY3RlckRhdGFNYXApOwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6cmVidWlsZE1ldHJp
Y3NGb3JUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCkKK3ZvaWQgU1ZHVGV4
dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpyZWJ1aWxkTWV0cmljc0ZvclRleHRSZW5kZXJlcihS
ZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0KQogewotICAgIEFTU0VSVCh0ZXh0KTsKICAgICBtX21l
dHJpY3NCdWlsZGVyLm1lYXN1cmVUZXh0UmVuZGVyZXIodGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1
dGVzQnVpbGRlci5oCmluZGV4IDYxYWZjMWNmNTM3NjhmNjY2Y2Y0OWZiMWRiZmE5YjcxMWZlZGJm
NzkuLmRmMzlhZjhhMTFhYjA5MmE0Njk0YWExMzQyMjRmYTNkZjc3ZDcxNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0
cmlidXRlc0J1aWxkZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBidWls
ZExheW91dEF0dHJpYnV0ZXNGb3JGb3JTdWJ0cmVlKFJlbmRlclNWR1RleHQmKTsKICAgICB2b2lk
IGJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvclRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0
Jik7CiAKLSAgICB2b2lkIHJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lu
bGluZVRleHQqKTsKKyAgICB2b2lkIHJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKFJlbmRl
clNWR0lubGluZVRleHQmKTsKIAogICAgIC8vIEludm9rZWQgd2hlbmV2ZXIgdGhlIHVuZGVybHlp
bmcgRE9NIHRyZWUgY2hhbmdlcywgc28gdGhhdCBtX3RleHRQb3NpdGlvbnMgaXMgcmVidWlsZC4K
ICAgICB2b2lkIGNsZWFyVGV4dFBvc2l0aW9uaW5nRWxlbWVudHMoKSB7IG1fdGV4dFBvc2l0aW9u
cy5jbGVhcigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggZTU0MjcyZjQyMmQzYWM0MDg3NTliNmFkNWQ2
YjZhNDQ3ZTMyM2U5NC4uODE4OTZkOWRjNzEyMzdiNTZhZmViNmNkYjFjOTdlMjQ1NDg2YTE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJp
Y3NCdWlsZGVyLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlNWR1RleHRNZXRyaWNzQnVpbGRlci5oIgogCisjaW5jbHVkZSAiUmVuZGVyU1ZHSW5s
aW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRl
clNWR1RleHQuaCIKICNpbmNsdWRlICJTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oIgpAQCAt
OTEsMTYgKzkyLDE2IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjphZHZhbmNlQ29tcGxl
eFRleHQoKQogICAgIG1fdG90YWxXaWR0aCA9IG1fY29tcGxleFN0YXJ0VG9DdXJyZW50TWV0cmlj
cy53aWR0aCgpOwogfQogCi12b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6aW5pdGlhbGl6ZU1l
YXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0KQordm9p
ZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVu
ZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCkKIHsKLSAgICBtX3RleHQgPSB0ZXh0Owor
ICAgIG1fdGV4dCA9ICZ0ZXh0OwogICAgIG1fdGV4dFBvc2l0aW9uID0gMDsKICAgICBtX2N1cnJl
bnRNZXRyaWNzID0gU1ZHVGV4dE1ldHJpY3MoKTsKICAgICBtX2NvbXBsZXhTdGFydFRvQ3VycmVu
dE1ldHJpY3MgPSBTVkdUZXh0TWV0cmljcygpOwogICAgIG1fdG90YWxXaWR0aCA9IDA7CiAKLSAg
ICBjb25zdCBGb250JiBzY2FsZWRGb250ID0gdGV4dC0+c2NhbGVkRm9udCgpOwotICAgIG1fcnVu
ID0gU1ZHVGV4dE1ldHJpY3M6OmNvbnN0cnVjdFRleHRSdW4oKnRleHQpOworICAgIGNvbnN0IEZv
bnQmIHNjYWxlZEZvbnQgPSB0ZXh0LnNjYWxlZEZvbnQoKTsKKyAgICBtX3J1biA9IFNWR1RleHRN
ZXRyaWNzOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQpOwogICAgIG1faXNDb21wbGV4VGV4dCA9IHNj
YWxlZEZvbnQuY29kZVBhdGgobV9ydW4pID09IEZvbnQ6OkNvbXBsZXg7CiAKICAgICBpZiAobV9p
c0NvbXBsZXhUZXh0KQpAQCAtMTI2LDExICsxMjcsOSBAQCBzdHJ1Y3QgTWVhc3VyZVRleHREYXRh
IHsKICAgICB1bnNpZ25lZCBza2lwcGVkQ2hhcmFjdGVyczsKIH07CiAKLXZvaWQgU1ZHVGV4dE1l
dHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqIHRl
eHQsIE1lYXN1cmVUZXh0RGF0YSogZGF0YSkKK3ZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpt
ZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQmIHRleHQsIE1lYXN1cmVUZXh0
RGF0YSogZGF0YSkKIHsKLSAgICBBU1NFUlQodGV4dCk7Ci0KLSAgICBTVkdUZXh0TGF5b3V0QXR0
cmlidXRlcyogYXR0cmlidXRlcyA9IHRleHQtPmxheW91dEF0dHJpYnV0ZXMoKTsKKyAgICBTVkdU
ZXh0TGF5b3V0QXR0cmlidXRlcyogYXR0cmlidXRlcyA9IHRleHQubGF5b3V0QXR0cmlidXRlcygp
OwogICAgIFZlY3RvcjxTVkdUZXh0TWV0cmljcz4qIHRleHRNZXRyaWNzVmFsdWVzID0gJmF0dHJp
YnV0ZXMtPnRleHRNZXRyaWNzVmFsdWVzKCk7CiAgICAgaWYgKGRhdGEtPnByb2Nlc3NSZW5kZXJl
cikgewogICAgICAgICBpZiAoZGF0YS0+YWxsQ2hhcmFjdGVyc01hcCkKQEAgLTE0MCw3ICsxMzks
NyBAQCB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5kZXJlcihSZW5k
ZXJTVkdJbmxpbmVUZXh0KiB0ZXh0LCBNZWFzdQogICAgIH0KIAogICAgIGluaXRpYWxpemVNZWFz
dXJlbWVudFdpdGhUZXh0UmVuZGVyZXIodGV4dCk7Ci0gICAgYm9vbCBwcmVzZXJ2ZVdoaXRlU3Bh
Y2UgPSB0ZXh0LT5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBQUkU7CisgICAgYm9vbCBwcmVzZXJ2
ZVdoaXRlU3BhY2UgPSB0ZXh0LnN0eWxlKCkud2hpdGVTcGFjZSgpID09IFBSRTsKICAgICBpbnQg
c3Vycm9nYXRlUGFpckNoYXJhY3RlcnMgPSAwOwogCiAgICAgd2hpbGUgKGFkdmFuY2UoKSkgewpA
QCAtMTc4LDkgKzE3Nyw5IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4
dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqIHRleHQsIE1lYXN1CiB2b2lkIFNWR1RleHRN
ZXRyaWNzQnVpbGRlcjo6d2Fsa1RyZWUoUmVuZGVyRWxlbWVudCYgc3RhcnQsIFJlbmRlclNWR0lu
bGluZVRleHQqIHN0b3BBdExlYWYsIE1lYXN1cmVUZXh0RGF0YSogZGF0YSkKIHsKICAgICBmb3Ig
KGF1dG8gY2hpbGQgPSBzdGFydC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNTVkdJbmxpbmVUZXh0KCkpIHsK
LSAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQqIHRleHQgPSB0b1JlbmRlclNWR0lubGlu
ZVRleHQoY2hpbGQpOwotICAgICAgICAgICAgaWYgKHN0b3BBdExlYWYgJiYgc3RvcEF0TGVhZiAh
PSB0ZXh0KSB7CisgICAgICAgIGlmIChpczxSZW5kZXJTVkdJbmxpbmVUZXh0PigqY2hpbGQpKSB7
CisgICAgICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVy
U1ZHSW5saW5lVGV4dD4oKmNoaWxkKTsKKyAgICAgICAgICAgIGlmIChzdG9wQXRMZWFmICYmIHN0
b3BBdExlYWYgIT0gJnRleHQpIHsKICAgICAgICAgICAgICAgICBkYXRhLT5wcm9jZXNzUmVuZGVy
ZXIgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBtZWFzdXJlVGV4dFJlbmRlcmVyKHRleHQsIGRh
dGEpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTk0LDMwICsxOTMsMjcgQEAgdm9p
ZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OndhbGtUcmVlKFJlbmRlckVsZW1lbnQmIHN0YXJ0LCBS
ZW5kZXJTVkdJbmxpbmVUZXh0KgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoIWNoaWxkLT5pc1NWR0lubGluZSgpKQorICAgICAgICBpZiAoIWlzPFJlbmRl
clNWR0lubGluZT4oKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHdh
bGtUcmVlKHRvUmVuZGVyRWxlbWVudCgqY2hpbGQpLCBzdG9wQXRMZWFmLCBkYXRhKTsKKyAgICAg
ICAgd2Fsa1RyZWUoZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lPigqY2hpbGQpLCBzdG9wQXRMZWFm
LCBkYXRhKTsKICAgICB9CiB9CiAKLXZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJl
VGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqIHRleHQpCit2b2lkIFNWR1RleHRNZXRy
aWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0
KQogewotICAgIEFTU0VSVCh0ZXh0KTsKLQotICAgIGF1dG8qIHRleHRSb290ID0gUmVuZGVyU1ZH
VGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKCp0ZXh0KTsKKyAgICBhdXRvKiB0ZXh0
Um9vdCA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0ZXh0KTsK
ICAgICBpZiAoIXRleHRSb290KQogICAgICAgICByZXR1cm47CiAKLSAgICBNZWFzdXJlVGV4dERh
dGEgZGF0YSgwKTsKLSAgICB3YWxrVHJlZSgqdGV4dFJvb3QsIHRleHQsICZkYXRhKTsKKyAgICBN
ZWFzdXJlVGV4dERhdGEgZGF0YShudWxscHRyKTsKKyAgICB3YWxrVHJlZSgqdGV4dFJvb3QsICZ0
ZXh0LCAmZGF0YSk7CiB9CiAKLXZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpidWlsZE1ldHJp
Y3NBbmRMYXlvdXRBdHRyaWJ1dGVzKFJlbmRlclNWR1RleHQqIHRleHRSb290LCBSZW5kZXJTVkdJ
bmxpbmVUZXh0KiBzdG9wQXRMZWFmLCBTVkdDaGFyYWN0ZXJEYXRhTWFwJiBhbGxDaGFyYWN0ZXJz
TWFwKQordm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmJ1aWxkTWV0cmljc0FuZExheW91dEF0
dHJpYnV0ZXMoUmVuZGVyU1ZHVGV4dCYgdGV4dFJvb3QsIFJlbmRlclNWR0lubGluZVRleHQqIHN0
b3BBdExlYWYsIFNWR0NoYXJhY3RlckRhdGFNYXAmIGFsbENoYXJhY3RlcnNNYXApCiB7Ci0gICAg
QVNTRVJUKHRleHRSb290KTsKICAgICBNZWFzdXJlVGV4dERhdGEgZGF0YSgmYWxsQ2hhcmFjdGVy
c01hcCk7Ci0gICAgd2Fsa1RyZWUoKnRleHRSb290LCBzdG9wQXRMZWFmLCAmZGF0YSk7CisgICAg
d2Fsa1RyZWUodGV4dFJvb3QsIHN0b3BBdExlYWYsICZkYXRhKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmgKaW5k
ZXggZTljMmU0NGE3NTdkMjFmYTBmNjljMzUzMTM2MmJkM2Q5MmViN2IxNC4uMDhlMDdlZWIxOTJi
M2IxMDQ1ZWEyMTQzYzdlYjM2ODZiNDViZjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5oCkBAIC0zNSw4ICszNSw4IEBA
IGNsYXNzIFNWR1RleHRNZXRyaWNzQnVpbGRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U1ZHVGV4dE1ldHJpY3NCdWlsZGVyKTsKIHB1YmxpYzoKICAgICBTVkdUZXh0TWV0cmljc0J1aWxk
ZXIoKTsKLSAgICB2b2lkIG1lYXN1cmVUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCop
OwotICAgIHZvaWQgYnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRlcyhSZW5kZXJTVkdUZXh0
KiwgUmVuZGVyU1ZHSW5saW5lVGV4dCogc3RvcEF0TGVhZiwgU1ZHQ2hhcmFjdGVyRGF0YU1hcCYg
YWxsQ2hhcmFjdGVyc01hcCk7CisgICAgdm9pZCBtZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNW
R0lubGluZVRleHQmKTsKKyAgICB2b2lkIGJ1aWxkTWV0cmljc0FuZExheW91dEF0dHJpYnV0ZXMo
UmVuZGVyU1ZHVGV4dCYsIFJlbmRlclNWR0lubGluZVRleHQqIHN0b3BBdExlYWYsIFNWR0NoYXJh
Y3RlckRhdGFNYXAmIGFsbENoYXJhY3RlcnNNYXApOwogCiBwcml2YXRlOgogICAgIGJvb2wgYWR2
YW5jZSgpOwpAQCAtNDQsOSArNDQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWR2YW5jZUNvbXBs
ZXhUZXh0KCk7CiAgICAgYm9vbCBjdXJyZW50Q2hhcmFjdGVyU3RhcnRzU3Vycm9nYXRlUGFpcigp
IGNvbnN0OwogCi0gICAgdm9pZCBpbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVy
KFJlbmRlclNWR0lubGluZVRleHQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVNZWFzdXJlbWVudFdp
dGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCYpOwogICAgIHZvaWQgd2Fsa1RyZWUo
UmVuZGVyRWxlbWVudCYsIFJlbmRlclNWR0lubGluZVRleHQqIHN0b3BBdExlYWYsIE1lYXN1cmVU
ZXh0RGF0YSopOwotICAgIHZvaWQgbWVhc3VyZVRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVU
ZXh0KiwgTWVhc3VyZVRleHREYXRhKik7CisgICAgdm9pZCBtZWFzdXJlVGV4dFJlbmRlcmVyKFJl
bmRlclNWR0lubGluZVRleHQmLCBNZWFzdXJlVGV4dERhdGEqKTsKIAogICAgIFJlbmRlclNWR0lu
bGluZVRleHQqIG1fdGV4dDsKICAgICBUZXh0UnVuIG1fcnVuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCA0MjE4YWY0OTUzNjQ0MTUwNzlkYjgzYTJlYWY2Yzg5YjBlMTNkNzJlLi4xZmNjNDA5
OWI4MDQzOTFmOTRkYzE4M2U2ZTNhZDRmMGYzNjYzMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNw
cApAQCAtMjQ2LDE0ICsyNDYsMTQgQEAgY2xhc3MgRHVtbXlHbHlwaFRvUGF0aFRyYW5zbGF0b3Ig
ZmluYWwgOiBwdWJsaWMgR2x5cGhUb1BhdGhUcmFuc2xhdG9yIHsKIAogc3RkOjp1bmlxdWVfcHRy
PEdseXBoVG9QYXRoVHJhbnNsYXRvcj4gU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUdseXBoVG9QYXRoVHJhbnNsYXRvcihjb25zdCBTaW1wbGVGb250RGF0YSYgZm9udERhdGEsIGNv
bnN0IFRleHRSdW4qIHRleHRSdW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50
IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewot
ICAgIFNWR0ZvbnRFbGVtZW50KiBmb250RWxlbWVudCA9IDA7Ci0gICAgU1ZHRm9udEZhY2VFbGVt
ZW50KiBmb250RmFjZUVsZW1lbnQgPSAwOworICAgIFNWR0ZvbnRFbGVtZW50KiBmb250RWxlbWVu
dCA9IG51bGxwdHI7CisgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmb250RmFjZUVsZW1lbnQgPSBu
dWxscHRyOwogCiAgICAgY29uc3QgU1ZHRm9udERhdGEqIHN2Z0ZvbnREYXRhID0gc3ZnRm9udEFu
ZEZvbnRGYWNlRWxlbWVudEZvckZvbnREYXRhKCZmb250RGF0YSwgZm9udEZhY2VFbGVtZW50LCBm
b250RWxlbWVudCk7CiAgICAgaWYgKCFmb250RWxlbWVudCB8fCAhZm9udEZhY2VFbGVtZW50KQog
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEdW1teUdseXBoVG9QYXRoVHJhbnNsYXRv
cj4oKTsKIAotICAgIGF1dG8mIGVsZW1lbnRSZW5kZXJlciA9IHJlbmRlcmVyKCkuaXNSZW5kZXJF
bGVtZW50KCkgPyB0b1JlbmRlckVsZW1lbnQocmVuZGVyZXIoKSkgOiAqcmVuZGVyZXIoKS5wYXJl
bnQoKTsKKyAgICBhdXRvJiBlbGVtZW50UmVuZGVyZXIgPSBpczxSZW5kZXJFbGVtZW50PihyZW5k
ZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKCkpIDogKnJlbmRlcmVy
KCkucGFyZW50KCk7CiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0gZWxlbWVudFJlbmRlcmVyLnN0
eWxlKCk7CiAgICAgYm9vbCBpc1ZlcnRpY2FsVGV4dCA9IHN0eWxlLnN2Z1N0eWxlKCkuaXNWZXJ0
aWNhbFdyaXRpbmdNb2RlKCk7CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFNWR1RleHRSdW5S
ZW5kZXJpbmdDb250ZXh0OjpkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgUwogICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNlID0gc29saWRQYWludGluZ1Jl
c291cmNlOwogICAgIH0KIAotICAgIGF1dG8mIGVsZW1lbnRSZW5kZXJlciA9IHJlbmRlcmVyKCku
aXNSZW5kZXJFbGVtZW50KCkgPyB0b1JlbmRlckVsZW1lbnQocmVuZGVyZXIoKSkgOiAqcmVuZGVy
ZXIoKS5wYXJlbnQoKTsKKyAgICBhdXRvJiBlbGVtZW50UmVuZGVyZXIgPSBpczxSZW5kZXJFbGVt
ZW50PihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKCkpIDog
KnJlbmRlcmVyKCkucGFyZW50KCk7CiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0gZWxlbWVudFJl
bmRlcmVyLnN0eWxlKCk7CiAKICAgICBBU1NFUlQoYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSk7CkBA
IC0yODIsOSArMjgyLDkgQEAgdm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NW
R0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFMKICAgICAgICAgUGF0aCBn
bHlwaFBhdGggPSB0cmFuc2xhdG9yLT5wYXRoKCk7CiAgICAgICAgIGlmIChhY3RpdmVQYWludGlu
Z1Jlc291cmNlLT5hcHBseVJlc291cmNlKGVsZW1lbnRSZW5kZXJlciwgc3R5bGUsIGNvbnRleHQs
IHJlc291cmNlTW9kZSkpIHsKICAgICAgICAgICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNv
bnRleHQtPnN0cm9rZVRoaWNrbmVzcygpOwotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkuaXNT
VkdJbmxpbmVUZXh0KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tu
ZXNzKHN0cm9rZVRoaWNrbmVzcyAqIHRvUmVuZGVyU1ZHSW5saW5lVGV4dChyZW5kZXJlcigpKS5z
Y2FsaW5nRmFjdG9yKCkpOwotICAgICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+cG9z
dEFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBjb250ZXh0LCByZXNvdXJjZU1vZGUsICZn
bHlwaFBhdGgsIDApOworICAgICAgICAgICAgaWYgKGlzPFJlbmRlclNWR0lubGluZVRleHQ+KHJl
bmRlcmVyKCkpKQorICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhz
dHJva2VUaGlja25lc3MgKiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0PihyZW5kZXJlcigp
KS5zY2FsaW5nRmFjdG9yKCkpOworICAgICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+
cG9zdEFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBjb250ZXh0LCByZXNvdXJjZU1vZGUs
ICZnbHlwaFBhdGgsIG51bGxwdHIpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhp
Y2tuZXNzKHN0cm9rZVRoaWNrbmVzcyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTQsOSArMzE0
LDkgQEAgR2x5cGhEYXRhIFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpnbHlwaERhdGFGb3JD
aGFyYWN0ZXIoY29uc3QgRm9udCYgZm9udCwgV2kKICAgICAvLyBDaGFyYWN0ZXJzIGVuY2xvc2Vk
IGJ5IGFuIDxhbHRHbHlwaD4gZWxlbWVudCwgbWF5IG5vdCBiZSByZWdpc3RlcmVkIGluIHRoZSBH
bHlwaFBhZ2UuCiAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIG9yaWdpbmFsRm9udERhdGEgPSBn
bHlwaERhdGEuZm9udERhdGE7CiAgICAgaWYgKGdseXBoRGF0YS5mb250RGF0YSAmJiAhZ2x5cGhE
YXRhLmZvbnREYXRhLT5pc1NWR0ZvbnQoKSkgewotICAgICAgICBhdXRvJiBlbGVtZW50UmVuZGVy
ZXIgPSByZW5kZXJlcigpLmlzUmVuZGVyRWxlbWVudCgpID8gdG9SZW5kZXJFbGVtZW50KHJlbmRl
cmVyKCkpIDogKnJlbmRlcmVyKCkucGFyZW50KCk7CisgICAgICAgIGF1dG8mIGVsZW1lbnRSZW5k
ZXJlciA9IGlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKCkpID8gZG93bmNhc3Q8UmVuZGVyRWxl
bWVudD4ocmVuZGVyZXIoKSkgOiAqcmVuZGVyZXIoKS5wYXJlbnQoKTsKICAgICAgICAgaWYgKEVs
ZW1lbnQqIHBhcmVudFJlbmRlcmVyRWxlbWVudCA9IGVsZW1lbnRSZW5kZXJlci5lbGVtZW50KCkp
IHsKLSAgICAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJlckVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmFsdEdseXBoVGFnKSkKKyAgICAgICAgICAgIGlmIChpczxTVkdBbHRHbHlwaEVsZW1l
bnQ+KCpwYXJlbnRSZW5kZXJlckVsZW1lbnQpKQogICAgICAgICAgICAgICAgIGdseXBoRGF0YS5m
b250RGF0YSA9IHByaW1hcnlGb250OwogICAgICAgICB9CiAgICAgfQpAQCAtMzI2LDggKzMyNiw4
IEBAIEdseXBoRGF0YSBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6Z2x5cGhEYXRhRm9yQ2hh
cmFjdGVyKGNvbnN0IEZvbnQmIGZvbnQsIFdpCiAgICAgICAgIGlmICghZm9udERhdGEtPmlzU1ZH
Rm9udCgpKQogICAgICAgICAgICAgcmV0dXJuIGdseXBoRGF0YTsKIAotICAgICAgICBTVkdGb250
RWxlbWVudCogZm9udEVsZW1lbnQgPSAwOwotICAgICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZv
bnRGYWNlRWxlbWVudCA9IDA7CisgICAgICAgIFNWR0ZvbnRFbGVtZW50KiBmb250RWxlbWVudCA9
IG51bGxwdHI7CisgICAgICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZm9udEZhY2VFbGVtZW50ID0g
bnVsbHB0cjsKIAogICAgICAgICBjb25zdCBTVkdGb250RGF0YSogc3ZnRm9udERhdGEgPSBzdmdG
b250QW5kRm9udEZhY2VFbGVtZW50Rm9yRm9udERhdGEoZm9udERhdGEsIGZvbnRGYWNlRWxlbWVu
dCwgZm9udEVsZW1lbnQpOwogICAgICAgICBpZiAoIWZvbnRFbGVtZW50IHx8ICFmb250RmFjZUVs
ZW1lbnQpCkBAIC0zNDcsNyArMzQ3LDcgQEAgR2x5cGhEYXRhIFNWR1RleHRSdW5SZW5kZXJpbmdD
b250ZXh0OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udCYgZm9udCwgV2kKICAgICAv
LyBObyBzdWl0YWJsZSBnbHlwaCBmb3VuZCB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgcmVx
dWlybWVudHMgKHNhbWUgbGFuZ3VhZ2UsIGFyYWJpYy1mb3JtLCBvcmllbnRhdGlvbiBldGMuKQog
ICAgIC8vIEV2ZW4gdGhvdWdoIG91ciBHbHlwaFBhZ2UgY29udGFpbnMgYW4gZW50cnkgZm9yIGVn
LiBnbHlwaCAiYSIsIGl0J3Mgbm90IGNvbXBhdGlibGUuIFNvIHdlIGhhdmUgdG8gdGVtcG9yYXJp
bHkKICAgICAvLyByZW1vdmUgdGhlIGdseXBoIGRhdGEgaW5mb3JtYXRpb24gZnJvbSB0aGUgR2x5
cGhQYWdlLCBhbmQgcmV0cnkgdGhlIGxvb2t1cCwgd2hpY2ggaGFuZGxlcyBmb250IGZhbGxiYWNr
cyBjb3JyZWN0bHkuCi0gICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3Rl
ciwgMCwgMCk7CisgICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3Rlciwg
MCwgbnVsbHB0cik7CiAKICAgICAvLyBBc3N1cmUgdGhhdCB0aGUgZm9udCBmYWxsYmFjayBnbHlw
aCBzZWxlY3Rpb24gd29ya2VkLCBha2EuIHRoZSBmYWxsYmFja0dseXBoRGF0YSBmb250IGRhdGEg
aXMgbm90IHRoZSBzYW1lIGFzIGJlZm9yZS4KICAgICBHbHlwaERhdGEgZmFsbGJhY2tHbHlwaERh
dGEgPSBmb250LmdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIG1pcnJvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAppbmRleCA2M2JmNTRkNDlmYTVkNzY4ZDMzMDIyODcxOWM3
YTBkNzAwMDU0MWVlLi4wYjhmZDAzOGZkYzFjOTAzMjZhYmFiOGQ1MTc3ZTg5ZjFiYWExNGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBib29sIFNW
R0ZvbnREYXRhOjphcHBseVNWR0dseXBoU2VsZWN0aW9uKFdpZHRoSXRlcmF0b3ImIGl0ZXJhdG9y
LCBHbHlwaERhdGEmIGdseQogICAgIFNWR0ZvbnRFbGVtZW50KiBhc3NvY2lhdGVkRm9udEVsZW1l
bnQgPSBzdmdGb250RmFjZUVsZW1lbnQtPmFzc29jaWF0ZWRGb250RWxlbWVudCgpOwogICAgIEFT
U0VSVChhc3NvY2lhdGVkRm9udEVsZW1lbnQpOwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJP
YmplY3QgPSAwOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gbnVsbHB0cjsKICAg
ICBpZiAoVGV4dFJ1bjo6UmVuZGVyaW5nQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCA9IHJ1bi5y
ZW5kZXJpbmdDb250ZXh0KCkpCiAgICAgICAgIHJlbmRlck9iamVjdCA9ICZzdGF0aWNfY2FzdDxT
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dCo+KHJlbmRlcmluZ0NvbnRleHQpLT5yZW5kZXJlcigp
OwogCkBAIC0xNTIsMTEgKzE1MiwxMCBAQCBib29sIFNWR0ZvbnREYXRhOjphcHBseVNWR0dseXBo
U2VsZWN0aW9uKFdpZHRoSXRlcmF0b3ImIGl0ZXJhdG9yLCBHbHlwaERhdGEmIGdseQogICAgIFZl
Y3RvcjxTdHJpbmc+IGFsdEdseXBoTmFtZXM7CiAKICAgICBpZiAocmVuZGVyT2JqZWN0KSB7Ci0g
ICAgICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudFJlbmRlcmVyID0gcmVuZGVyT2JqZWN0LT5pc1Jl
bmRlckVsZW1lbnQoKSA/IHRvUmVuZGVyRWxlbWVudChyZW5kZXJPYmplY3QpIDogcmVuZGVyT2Jq
ZWN0LT5wYXJlbnQoKTsKLSAgICAgICAgQVNTRVJUKHBhcmVudFJlbmRlcmVyKTsKKyAgICAgICAg
UmVuZGVyRWxlbWVudCYgcGFyZW50UmVuZGVyZXIgPSBpczxSZW5kZXJFbGVtZW50PigqcmVuZGVy
T2JqZWN0KSA/IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJPYmplY3QpIDogKnJlbmRl
ck9iamVjdC0+cGFyZW50KCk7CiAKLSAgICAgICAgaXNWZXJ0aWNhbFRleHQgPSBwYXJlbnRSZW5k
ZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmlzVmVydGljYWxXcml0aW5nTW9kZSgpOwotICAgICAg
ICBpZiAoRWxlbWVudCogcGFyZW50UmVuZGVyZXJFbGVtZW50ID0gcGFyZW50UmVuZGVyZXItPmVs
ZW1lbnQoKSkgeworICAgICAgICBpc1ZlcnRpY2FsVGV4dCA9IHBhcmVudFJlbmRlcmVyLnN0eWxl
KCkuc3ZnU3R5bGUoKS5pc1ZlcnRpY2FsV3JpdGluZ01vZGUoKTsKKyAgICAgICAgaWYgKEVsZW1l
bnQqIHBhcmVudFJlbmRlcmVyRWxlbWVudCA9IHBhcmVudFJlbmRlcmVyLmVsZW1lbnQoKSkgewog
ICAgICAgICAgICAgbGFuZ3VhZ2UgPSBwYXJlbnRSZW5kZXJlckVsZW1lbnQtPmdldEF0dHJpYnV0
ZShYTUxOYW1lczo6bGFuZ0F0dHIpOwogCiAgICAgICAgICAgICBpZiAoaXM8U1ZHQWx0R2x5cGhF
bGVtZW50PigqcGFyZW50UmVuZGVyZXJFbGVtZW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmlu
ZGV4IDY4ZWQ3MDViNTVjMWI1OTUxOGExNzgxZTY0NzhmMjBmNjI3NGRjY2UuLjVkMjFmZDBjNmE2
NzViMzVjNTAzYTYwNzExMDBhZDcyNDM3ZDdiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAg
LTExODEsNyArMTE4MSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnBhdXNlQW5pbWF0aW9uKEJTVFIg
YW5pbWF0aW9uTmFtZSwgSURPTU5vZGUqIG5vZGUsIGRvdWJsZSBzZWNvCiAgICAgaWYgKCFkb21O
b2RlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmFuaW1hdGlvbldhc1J1bm5pbmcg
PSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VBbmltYXRpb25BdFRpbWUodG9SZW5kZXJFbGVtZW50
KGRvbU5vZGUtPm5vZGUoKS0+cmVuZGVyZXIoKSksIFN0cmluZyhhbmltYXRpb25OYW1lLCBTeXNT
dHJpbmdMZW4oYW5pbWF0aW9uTmFtZSkpLCBzZWNvbmRzRnJvbU5vdyk7CisgICAgKmFuaW1hdGlv
bldhc1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VBbmltYXRpb25BdFRpbWUoZG93
bmNhc3Q8UmVuZGVyRWxlbWVudD4oZG9tTm9kZS0+bm9kZSgpLT5yZW5kZXJlcigpKSwgU3RyaW5n
KGFuaW1hdGlvbk5hbWUsIFN5c1N0cmluZ0xlbihhbmltYXRpb25OYW1lKSksIHNlY29uZHNGcm9t
Tm93KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTIwMCw3ICsxMjAwLDcgQEAgSFJFU1VM
VCBXZWJGcmFtZTo6cGF1c2VUcmFuc2l0aW9uKEJTVFIgcHJvcGVydHlOYW1lLCBJRE9NTm9kZSog
bm9kZSwgZG91YmxlIHNlY28KICAgICBpZiAoIWRvbU5vZGUpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICAqdHJhbnNpdGlvbldhc1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1
c2VUcmFuc2l0aW9uQXRUaW1lKHRvUmVuZGVyRWxlbWVudChkb21Ob2RlLT5ub2RlKCktPnJlbmRl
cmVyKCkpLCBTdHJpbmcocHJvcGVydHlOYW1lLCBTeXNTdHJpbmdMZW4ocHJvcGVydHlOYW1lKSks
IHNlY29uZHNGcm9tTm93KTsKKyAgICAqdHJhbnNpdGlvbldhc1J1bm5pbmcgPSBmcmFtZS0+YW5p
bWF0aW9uKCkucGF1c2VUcmFuc2l0aW9uQXRUaW1lKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGRv
bU5vZGUtPm5vZGUoKS0+cmVuZGVyZXIoKSksIFN0cmluZyhwcm9wZXJ0eU5hbWUsIFN5c1N0cmlu
Z0xlbihwcm9wZXJ0eU5hbWUpKSwgc2Vjb25kc0Zyb21Ob3cpOwogICAgIHJldHVybiBTX09LOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239654</attachid>
            <date>2014-10-10 15:28:46 -0700</date>
            <delta_ts>2014-10-10 16:06:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137622-20141010152849.patch</filename>
            <type>text/plain</type>
            <size>73858</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEyMGM4OTYwNTY0YzJh
MjM5MjhhNjgzOGNjNTJmNTQ2OTkxNDcxNy4uYzc3MjliMmVkMDZmZDVjYjU3NGJmMGI1YzBiY2Y2
MzM2NGI2MWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExOSBAQAogMjAxNC0xMC0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3du
Y2FzdDw+KCkgZm9yIFJlbmRlckVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNzYyMgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWlu
IFBvdWxhaW4uCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVy
RWxlbWVudCBhbmQgY2xlYW4gdXAgdGhlCisgICAgICAgIHN1cnJvdW5kaW5nIGNvZGUuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6aW1hZ2VNYXBMaW5rUmVuZGVyZXIpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJp
bGl0eUlzSWdub3JlZCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eSk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bWF0ZXJp
YWxpemVSYXJlRGF0YSk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzTm9uVGV4dExlYWZDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hBaGVh
ZEZvckJldHRlck1hdGNoKToKKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpkaWRSZWNhbGNTdHlsZSk6CisgICAgICAgICog
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaENvbnRlbnRzVG9OZXdCbG9ja0lmTmVjZXNz
YXJ5KToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzRW1wdHlUYWJsZUNlbGwpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6YmlkaU5leHRTaGFyZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Z2V0
Rmlyc3RMZXR0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6OnJlbmRlcmVy
UmVtb3ZlZEZyb21UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6OnJlbmRl
cmVyU3VidHJlZUF0dGFjaGVkKToKKyAgICAgICAgKHNob3dDb3VudGVyUmVuZGVyZXJUcmVlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjppbnNlcnRDaGlsZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnJlbW92ZUNoaWxkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6ZmluZE5leHRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQm94TW9kZWxPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1JlbmRlckJsb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJCbG9ja0Zsb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0Ojppc1JlbmRlclJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6aXNSZW5kZXJJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0OjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpcnN0TGluZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbmRlcmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRnJhbWVTZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojpjb21wdXRlQ2hpbGRyZW5TdHlsZUlu
UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRP
YmplY3RTdHlsZUluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50OjpyZXN0b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpjbGVhck5lZWRzTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6d2ls
bEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29sbGVjdEFu
bm90YXRlZFJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjppbml0aWFsaXplTGF5b3V0UGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6OnJlcG9zaXRpb25HZW5lcmljQ3Vl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjphZGRDaGlsZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNZW5jbG9zZTo6YWRkQ2hpbGQpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnJlYnVpbGRUb2tlbkNvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVwZGF0ZVN0eWxlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MUm9vdDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MUm9vdDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjphZGRDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlVG9rZW5Db250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVTdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpsYXlvdXQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFs
aWRhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbmRQcmV2aW91c0FuZE5leHRBdHRyaWJ1dGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnN1YnRyZWVTdHlsZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjp1cGRhdGVGb250SW5BbGxEZXNjZW5kYW50cyk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
clN1cHBvcnQ6OmxheW91dENoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0NhY2hlOjpj
bGllbnRXYXNBZGRlZFRvVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNo
ZTo6Y2xpZW50V2lsbEJlUmVtb3ZlZEZyb21UcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvclRl
eHRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1
aWxkZXI6OmJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvckZvclN1YnRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpyZWJ1aWxkTWV0cmljc0ZvclRl
eHRSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmli
dXRlc0J1aWxkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVp
bGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRp
YWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRNZXRyaWNzQnVpbGRlcjo6d2Fsa1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpidWlsZE1ldHJpY3NBbmRMYXlvdXRBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUdseXBoVG9QYXRo
VHJhbnNsYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dDo6ZHJhd1NWR0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UnVuUmVuZGVyaW5n
Q29udGV4dDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udERhdGE6OmFwcGx5U1ZHR2x5cGhTZWxl
Y3Rpb24pOgorCisyMDE0LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgRHJvcCBSRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoKSBmb3IgYSBsb3Qgb2YgUmVu
ZGVyT2JqZWN0IHN1YmNsYXNzZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNzU5NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggODMwM2QzYTg1Zjc3OTRl
MmU0ZmEwNWEwYzY2ZThiNzNiZWYzZjM1ZS4uMjVlYTllOTI3NGQ4NTk3MDQwODA2MWY2MzczYjcw
NWUwNGM0NDU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTEwLTEw
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAv
IGRvd25jYXN0PD4oKSBmb3IgUmVuZGVyRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVu
amFtaW4gUG91bGFpbi4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBS
ZW5kZXJFbGVtZW50IGFuZCBjbGVhbiB1cCB0aGUKKyAgICAgICAgc3Vycm91bmRpbmcgY29kZS4K
KworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpwYXVzZUFuaW1h
dGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6cGF1c2VUcmFuc2l0aW9uKToKKwogMjAxNC0xMC0w
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBpczw+KCkg
LyBkb3duY2FzdDw+KCkgZm9yIFdpZGdldCBzdWJjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApp
bmRleCBhYmMwMGRiYTM4NDljNjgxM2U2M2JlNWFmNDZmYTliOTc1YTllODA0Li5hZTk1N2YwOGQy
NjU5YTk1ZTQ1NWFjNmZjYTJmNjNhZWFmYjQwZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKQEAg
LTE0MSw3ICsxNDEsNyBAQCBSZW5kZXJFbGVtZW50KiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
OjppbWFnZU1hcExpbmtSZW5kZXJlcigpIGNvbnN0CiAKICAgICBSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciA9IG51bGxwdHI7CiAgICAgaWYgKG1fcGFyZW50ICYmIG1fcGFyZW50LT5pc0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QoKSkKLSAgICAgICAgcmVuZGVyZXIgPSB0b1JlbmRlckVsZW1lbnQo
dG9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KG1fcGFyZW50KS0+cmVuZGVyZXIoKSk7CisgICAg
ICAgIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4odG9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KG1fcGFyZW50KS0+cmVuZGVyZXIoKSk7CiAgICAgZWxzZQogICAgICAgICByZW5k
ZXJlciA9IG1fbWFwRWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CmluZGV4IDY0ZGYxM2Q3MTdiYTY4ODhiYzM0MmY1YTRlZTRiNTI0YTc3MjZhMzEuLmNjYjQwODM2
NjgyODkyODhiZTRjYzhiMGRmM2FjMTMwNzcxZjFkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApA
QCAtMTMxOCw3ICsxMzE4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIC8vIGNoZWNrIHdoZXRoZXIgcmVuZGVyZWQgaW1hZ2Ugd2FzIHN0cmV0Y2hlZCBmcm9tIG9u
ZS1kaW1lbnNpb25hbCBmaWxlIGltYWdlCiAgICAgICAgICAgICBpZiAoaW1hZ2UuY2FjaGVkSW1h
Z2UoKSkgewotICAgICAgICAgICAgICAgIExheW91dFNpemUgaW1hZ2VTaXplID0gaW1hZ2UuY2Fj
aGVkSW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIodG9SZW5kZXJFbGVtZW50KG1fcmVuZGVy
ZXIpLCBpbWFnZS52aWV3KCkuem9vbUZhY3RvcigpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRT
aXplIGltYWdlU2l6ZSA9IGltYWdlLmNhY2hlZEltYWdlKCktPmltYWdlU2l6ZUZvclJlbmRlcmVy
KCZpbWFnZSwgaW1hZ2UudmlldygpLnpvb21GYWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGltYWdlU2l6ZS5oZWlnaHQoKSA8PSAxIHx8IGltYWdlU2l6ZS53aWR0aCgpIDw9IDE7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggOWM3ZmFiN2RmN2E3NDkzYmFkMWQ3MWNj
Y2E1YTRkZTllYjRlYjhkMi4uZjljNGJhNWEzZDA1YzA0ZDFkNDgyZGQzZjY0ZTc2MTBkZjc4YjNk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKQEAgLTE2NjQsNyArMTY2NCw3IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkoTm9kZSogc3R5bGVkCiAK
ICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQ29tcG9zaXRlZCgpICYmIEFuaW1hdGlv
bkNvbnRyb2xsZXI6OnN1cHBvcnRzQWNjZWxlcmF0ZWRBbmltYXRpb25PZlByb3BlcnR5KHByb3Bl
cnR5SUQpKSB7CiAgICAgICAgIEFuaW1hdGlvblVwZGF0ZUJsb2NrIGFuaW1hdGlvblVwZGF0ZUJs
b2NrKCZyZW5kZXJlci0+YW5pbWF0aW9uKCkpOwotICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IHN0eWxlID0gcmVuZGVyZXItPmFuaW1hdGlvbigpLmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJl
cih0b1JlbmRlckVsZW1lbnQocmVuZGVyZXIpKTsKKyAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxl
PiBzdHlsZSA9IHJlbmRlcmVyLT5hbmltYXRpb24oKS5nZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVy
ZXIoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKTsKICAgICAgICAgaWYgKHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIgJiYgIXN0eWxlZE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWNoZWQgcHNldWRvIHN0eWxlIHdpbGwgb25seSBl
eGlzdCBpZiB0aGUgYW5pbWF0aW9uIGhhcyBiZWVuIHJ1biBhdCBsZWFzdCBvbmNlLgogICAgICAg
ICAgICAgcmV0dXJuIHN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9FbGVtZW50U3Bl
Y2lmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBjMDgzN2EyMmE2YWMwZDFiZGRjNDRjZWMxZDhm
NGQ2MTEzNGMyNTM3Li5iZGFkNjliYzlkMWE3OTliYmI2MTJjN2Q0ZmJhMTJkNGVmOGJjMzg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCkBAIC0zNDksOCArMzQ5LDggQEAgdm9pZCBOb2RlOjp3aWxsQmVEZWxl
dGVkRnJvbShEb2N1bWVudCYgZG9jdW1lbnQpCiB2b2lkIE5vZGU6Om1hdGVyaWFsaXplUmFyZURh
dGEoKQogewogICAgIE5vZGVSYXJlRGF0YSogZGF0YTsKLSAgICBpZiAoaXNFbGVtZW50Tm9kZSgp
KQotICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFyZURhdGE+KHRvUmVu
ZGVyRWxlbWVudChtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKKyAgICBpZiAoaXM8RWxl
bWVudD4oKnRoaXMpKQorICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFy
ZURhdGE+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFz
ZSgpOwogICAgIGVsc2UKICAgICAgICAgZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVJhcmVE
YXRhPihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOwogICAgIEFTU0VSVChkYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDc5OGE5YzQ0NzYyYjZiMGZmNzVmOTljODRmMzVjNGZk
M2Y3NzExODcuLmYxZmM1YmQzOTI1N2U1NDg0MjAxN2I1ZjAxNDQ2ZjFkNDIwZmY5ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMTA5NSwxMyArMTA5NSwxMSBAQCB2b2lkIFBvc2l0aW9u
OjpnZXRJbmxpbmVCb3hBbmRPZmZzZXQoRUFmZmluaXR5IGFmZmluaXR5LCBJbmxpbmVCb3gqJiBp
bmxpbmVCb3gsCiAgICAgZ2V0SW5saW5lQm94QW5kT2Zmc2V0KGFmZmluaXR5LCBwcmltYXJ5RGly
ZWN0aW9uKCksIGlubGluZUJveCwgY2FyZXRPZmZzZXQpOwogfQogCi1zdGF0aWMgYm9vbCBpc05v
blRleHRMZWFmQ2hpbGQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCitzdGF0aWMgYm9vbCBpc05vblRl
eHRMZWFmQ2hpbGQoUmVuZGVyT2JqZWN0JiBvYmplY3QpCiB7Ci0gICAgaWYgKG9iamVjdC0+aXNU
ZXh0KCkpCisgICAgaWYgKGlzPFJlbmRlclRleHQ+KG9iamVjdCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAodG9SZW5kZXJFbGVtZW50KG9iamVjdCktPmZpcnN0Q2hpbGQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAhZG93bmNh
c3Q8UmVuZGVyRWxlbWVudD4ob2JqZWN0KS5maXJzdENoaWxkKCk7CiB9CiAKIHN0YXRpYyBJbmxp
bmVUZXh0Qm94KiBzZWFyY2hBaGVhZEZvckJldHRlck1hdGNoKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCkBAIC0xMTEzLDcgKzExMTEsNyBAQCBzdGF0aWMgSW5saW5lVGV4dEJveCogc2VhcmNoQWhl
YWRGb3JCZXR0ZXJNYXRjaChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIGlmIChuZXh0LT5pc0JSKCkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgaWYgKGlzTm9uVGV4dExlYWZDaGlsZChuZXh0KSkKKyAgICAg
ICAgaWYgKGlzTm9uVGV4dExlYWZDaGlsZCgqbmV4dCkpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpuZXh0KSkgewogICAgICAgICAgICAg
SW5saW5lVGV4dEJveCogbWF0Y2ggPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1l
bnQuY3BwCmluZGV4IGM2ODE0NDY5ZjI3MzZhZjRjNmFkODkzOTA4ZGE3YjIwNDQ5OGY3ZWIuLjNj
ZDRmMDg0MjkyMmI2MDczZmViZTI1ZmFlMzZhMWM0YzVkYWRlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UHNldWRvRWxlbWVudC5jcHAKQEAgLTEwNywxMyArMTA3LDEzIEBAIHZvaWQgUHNldWRvRWxlbWVu
dDo6ZGlkUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkKIAogICAgIC8vIFRoZSByZW5kZXJlcnMg
aW5zaWRlIHBzZXVkbyBlbGVtZW50cyBhcmUgYW5vbnltb3VzIHNvIHRoZXkgZG9uJ3QgZ2V0IG5v
dGlmaWVkIG9mIHJlY2FsY1N0eWxlIGFuZCBtdXN0IGhhdmUKICAgICAvLyB0aGUgc3R5bGUgcHJv
cGFnYXRlZCBkb3dud2FyZCBtYW51YWxseSBzaW1pbGFyIHRvIFJlbmRlck9iamVjdDo6cHJvcGFn
YXRlU3R5bGVUb0Fub255bW91c0NoaWxkcmVuLgotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOwotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHJlbmRl
cmVyLT5uZXh0SW5QcmVPcmRlcihyZW5kZXJlcik7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
SW5QcmVPcmRlcihyZW5kZXJlcikpIHsKKyAgICBSZW5kZXJFbGVtZW50JiByZW5kZXJlciA9ICp0
aGlzLT5yZW5kZXJlcigpOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHJlbmRlcmVy
Lm5leHRJblByZU9yZGVyKCZyZW5kZXJlcik7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0SW5Q
cmVPcmRlcigmcmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIFdlIG9ubHkgbWFuYWdlIHRoZSBzdHls
ZSBmb3IgdGhlIGdlbmVyYXRlZCBjb250ZW50IHdoaWNoIG11c3QgYmUgaW1hZ2VzIG9yIHRleHQu
Ci0gICAgICAgIGlmICghY2hpbGQtPmlzUmVuZGVySW1hZ2UoKSAmJiAhY2hpbGQtPmlzUXVvdGUo
KSkKKyAgICAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oKmNoaWxkKSAmJiAhaXM8UmVuZGVyUXVv
dGU+KCpjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gY3JlYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGlu
Z0Zyb21Qc2V1ZG9TdHlsZShyZW5kZXJlci0+c3R5bGUoKSk7Ci0gICAgICAgIHRvUmVuZGVyRWxl
bWVudCgqY2hpbGQpLnNldFN0eWxlKFdURjo6bW92ZShjcmVhdGVkU3R5bGUpKTsKKyAgICAgICAg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVN0
eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShyZW5kZXJlci5zdHlsZSgpKTsKKyAgICAgICAg
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5zZXRTdHlsZShXVEY6Om1vdmUoY3JlYXRl
ZFN0eWxlKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDU4NDk0OGEzOTU0MWE1ZTBiNzk2NTNhNWVhZDgwMDc4
Njk3YWE5MmMuLjA2NjU0ZWEyY2E1MjBmNjYyY2E3ZThlOTNlMTUwZDg2NTRhYTNjM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC05
NzMsNyArOTczLDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5z
ZXJ0TmV3RGVmYXVsdFBhcmFncmFwaEVsZW1lbnRBdChjb25zdAogUGFzc1JlZlB0cjxOb2RlPiBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaENvbnRlbnRzVG9OZXdCbG9ja0lmTmVj
ZXNzYXJ5KGNvbnN0IFBvc2l0aW9uJiBwb3MpCiB7CiAgICAgaWYgKHBvcy5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGRvY3Vt
ZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgCkBAIC05
OTEsNyArOTkxLDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92
ZVBhcmFncmFwaENvbnRlbnRzVG9OZXdCbG9ja0lmTmVjZXNzYXIKICAgICAvLyBJZiB0aGVyZSBh
cmUgbm8gVmlzaWJsZVBvc2l0aW9ucyBpbiB0aGUgc2FtZSBibG9jayBhcyBwb3MgdGhlbiAKICAg
ICAvLyB1cHN0cmVhbVN0YXJ0IHdpbGwgYmUgb3V0c2lkZSB0aGUgcGFyYWdyYXBoCiAgICAgaWYg
KGNvbXBhcmVQb3NpdGlvbnMocG9zLCB1cHN0cmVhbVN0YXJ0KSA8IDApCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBlcmZvcm0gc29tZSBjaGVj
a3MgdG8gc2VlIGlmIHdlIG5lZWQgdG8gcGVyZm9ybSB3b3JrIGluIHRoaXMgZnVuY3Rpb24uCiAg
ICAgaWYgKGlzQmxvY2sodXBzdHJlYW1TdGFydC5kZXByZWNhdGVkTm9kZSgpKSkgewpAQCAtMTAw
MCwyMiArMTAwMCwyMiBAQCBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3NhcgogICAgICAgICBpZiAodXBz
dHJlYW1TdGFydC5kZXByZWNhdGVkTm9kZSgpID09IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKHVw
c3RyZWFtU3RhcnQpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgYmxvY2sgaXMgdGhlIHJvb3Qg
ZWRpdGFibGUgZWxlbWVudCBhbmQgaXQgY29udGFpbnMgbm8gdmlzaWJsZSBjb250ZW50LCBjcmVh
dGUgYSBuZXcKICAgICAgICAgICAgIC8vIGJsb2NrIGJ1dCBkb24ndCB0cnkgYW5kIG1vdmUgY29u
dGVudCBpbnRvIGl0LCBzaW5jZSB0aGVyZSdzIG5vdGhpbmcgZm9yIG1vdmVQYXJhZ3JhcGhzIHRv
IG1vdmUuCi0gICAgICAgICAgICBpZiAoIVBvc2l0aW9uOjpoYXNSZW5kZXJlZE5vbkFub255bW91
c0Rlc2NlbmRhbnRzV2l0aEhlaWdodCh0b1JlbmRlckVsZW1lbnQoKnVwc3RyZWFtU3RhcnQuZGVw
cmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkpKQorICAgICAgICAgICAgaWYgKCFQb3NpdGlvbjo6
aGFzUmVuZGVyZWROb25Bbm9ueW1vdXNEZXNjZW5kYW50c1dpdGhIZWlnaHQoZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4oKnVwc3RyZWFtU3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkp
KQogICAgICAgICAgICAgICAgIHJldHVybiBpbnNlcnROZXdEZWZhdWx0UGFyYWdyYXBoRWxlbWVu
dEF0KHVwc3RyZWFtU3RhcnQpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQmxvY2sodXBzdHJlYW1F
bmQuZGVwcmVjYXRlZE5vZGUoKSkpIHsKICAgICAgICAgICAgIGlmICghdXBzdHJlYW1FbmQuZGVw
cmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YodXBzdHJlYW1TdGFydC5kZXByZWNhdGVkTm9k
ZSgpKSkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXJhZ3JhcGggZW5kIGlzIGEgZGVz
Y2VuZGFudCBvZiBwYXJhZ3JhcGggc3RhcnQsIHRoZW4gd2UgbmVlZCB0byBydW4KICAgICAgICAg
ICAgICAgICAvLyB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uLiBJZiBub3QsIHdlIGNhbiBiYWls
IGhlcmUuCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoZW5jbG9zaW5nQmxv
Y2sodXBzdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkgIT0gdXBzdHJlYW1TdGFydC5kZXByZWNh
dGVkTm9kZSgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgdmlzaWJsZUVuZC4gIEl0IG11c3QgYmUg
YW4gYW5jZXN0b3Igb2YgdGhlIHBhcmFncmFwaCBzdGFydC4KICAgICAgICAgICAgIC8vIFdlIGNh
biBiYWlsIGFzIHdlIGhhdmUgYSBmdWxsIGJsb2NrIHRvIHdvcmsgd2l0aC4KICAgICAgICAgICAg
IEFTU0VSVCh1cHN0cmVhbVN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKGVu
Y2xvc2luZ0Jsb2NrKHVwc3RyZWFtRW5kLmRlcHJlY2F0ZWROb2RlKCkpKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9IGVsc2Ug
aWYgKGlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KHZpc2libGVFbmQpKSB7CiAg
ICAgICAgICAgICAvLyBBdCB0aGUgZW5kIG9mIHRoZSBlZGl0YWJsZSByZWdpb24uIFdlIGNhbiBi
YWlsIGhlcmUgYXMgd2VsbC4KLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAKaW5kZXggMTYzZDEwZjlkZmM1ZGExMzg2YWU1Nzk3YmMxMTdkYjUxOTQxMmIy
ZC4uNDdjNjUyOGQ4MjlmNjQzZjQ4ZTA1ZGE1YmU5ZmI2MmRmOTFiODQ2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJQ
b3NpdGlvbkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJS
ZW5kZXJFbGVtZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKQEAgLTg0OSwxMSArODUwLDExIEBAIGJvb2wgaXNFbXB0eVRhYmxlQ2VsbChjb25zdCBOb2Rl
KiBub2RlKQogICAgICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICBpZiAoIXJlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQorICAgIGlmICghaXM8
UmVuZGVyVGFibGVDZWxsPigqcmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBDaGVjayB0aGF0IHRoZSB0YWJsZSBjZWxsIGNvbnRhaW5zIG5vIGNoaWxkIHJlbmRlcmVy
cyBleGNlcHQgZm9yIHBlcmhhcHMgYSBzaW5nbGUgPGJyPi4KLSAgICBSZW5kZXJPYmplY3QqIGNo
aWxkUmVuZGVyZXIgPSB0b1JlbmRlckVsZW1lbnQocmVuZGVyZXIpLT5maXJzdENoaWxkKCk7Cisg
ICAgUmVuZGVyT2JqZWN0KiBjaGlsZFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxs
PigqcmVuZGVyZXIpLmZpcnN0Q2hpbGQoKTsKICAgICBpZiAoIWNoaWxkUmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGlmICghY2hpbGRSZW5kZXJlci0+aXNCUigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRleCBmMDg2ODFhMzY3ZmMzNWU1
MTk2OGI4YTM1ZDc4ZjRkYjg1ZGQyMTFkLi44YjYwNDE1MjdhODQ1NGYxZTRkN2NhMjgyZWJiNjBl
MTYzODM4MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRl
cmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaApA
QCAtMjE0LDIyICsyMTQsMjIgQEAgc3RhdGljIGJvb2wgaXNFbXB0eUlubGluZShjb25zdCBSZW5k
ZXJJbmxpbmUmIHJlbmRlcmVyKQogdGVtcGxhdGUgPGNsYXNzIE9ic2VydmVyPgogc3RhdGljIGlu
bGluZSBSZW5kZXJPYmplY3QqIGJpZGlOZXh0U2hhcmVkKFJlbmRlckVsZW1lbnQmIHJvb3QsIFJl
bmRlck9iamVjdCogY3VycmVudCwgT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCwgRW1wdHlJbmxpbmVC
ZWhhdmlvciBlbXB0eUlubGluZUJlaGF2aW9yID0gU2tpcEVtcHR5SW5saW5lcywgYm9vbCogZW5k
T2ZJbmxpbmVQdHIgPSAwKQogewotICAgIFJlbmRlck9iamVjdCogbmV4dCA9IDA7CisgICAgUmVu
ZGVyT2JqZWN0KiBuZXh0ID0gbnVsbHB0cjsKICAgICAvLyBvbGRFbmRPZklubGluZSBkZW5vdGVz
IGlmIHdoZW4gd2UgbGFzdCBzdG9wcGVkIGl0ZXJhdGluZyBpZiB3ZSB3ZXJlIGF0IHRoZSBlbmQg
b2YgYW4gaW5saW5lLgogICAgIGJvb2wgb2xkRW5kT2ZJbmxpbmUgPSBlbmRPZklubGluZVB0ciA/
ICplbmRPZklubGluZVB0ciA6IGZhbHNlOwogICAgIGJvb2wgZW5kT2ZJbmxpbmUgPSBmYWxzZTsK
IAogICAgIHdoaWxlIChjdXJyZW50KSB7Ci0gICAgICAgIG5leHQgPSAwOworICAgICAgICBuZXh0
ID0gbnVsbHB0cjsKICAgICAgICAgaWYgKCFvbGRFbmRPZklubGluZSAmJiAhaXNJdGVyYXRvclRh
cmdldChjdXJyZW50KSkgewotICAgICAgICAgICAgbmV4dCA9IHRvUmVuZGVyRWxlbWVudChjdXJy
ZW50KS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgbmV4dCA9IGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KCpjdXJyZW50KS5maXJzdENoaWxkKCk7CiAgICAgICAgICAgICBub3RpZnlPYnNlcnZl
ckVudGVyZWRPYmplY3Qob2JzZXJ2ZXIsIG5leHQpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
V2UgaGl0IHRoaXMgd2hlbiBlaXRoZXIgY3VycmVudCBoYXMgbm8gY2hpbGRyZW4sIG9yIHdoZW4g
Y3VycmVudCBpcyBub3QgYSByZW5kZXJlciB3ZSBjYXJlIGFib3V0LgogICAgICAgICBpZiAoIW5l
eHQpIHsKICAgICAgICAgICAgIC8vIElmIGl0IGlzIGEgcmVuZGVyZXIgd2UgY2FyZSBhYm91dCwg
YW5kIHdlJ3JlIGRvaW5nIG91ciBpbmxpbmUtd2FsaywgcmV0dXJuIGl0LgotICAgICAgICAgICAg
aWYgKGVtcHR5SW5saW5lQmVoYXZpb3IgPT0gSW5jbHVkZUVtcHR5SW5saW5lcyAmJiAhb2xkRW5k
T2ZJbmxpbmUgJiYgY3VycmVudC0+aXNSZW5kZXJJbmxpbmUoKSkgeworICAgICAgICAgICAgaWYg
KGVtcHR5SW5saW5lQmVoYXZpb3IgPT0gSW5jbHVkZUVtcHR5SW5saW5lcyAmJiAhb2xkRW5kT2ZJ
bmxpbmUgJiYgaXM8UmVuZGVySW5saW5lPigqY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBu
ZXh0ID0gY3VycmVudDsKICAgICAgICAgICAgICAgICBlbmRPZklubGluZSA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIGlubGluZSBSZW5k
ZXJPYmplY3QqIGJpZGlOZXh0U2hhcmVkKFJlbmRlckVsZW1lbnQmIHJvb3QsIFJlbmRlck9iamVj
dCogY3UKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3Vy
cmVudC0+cGFyZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVtcHR5SW5saW5lQmVoYXZpb3Ig
PT0gSW5jbHVkZUVtcHR5SW5saW5lcyAmJiBjdXJyZW50ICYmIGN1cnJlbnQgIT0gJnJvb3QgJiYg
Y3VycmVudC0+aXNSZW5kZXJJbmxpbmUoKSkgeworICAgICAgICAgICAgICAgIGlmIChlbXB0eUlu
bGluZUJlaGF2aW9yID09IEluY2x1ZGVFbXB0eUlubGluZXMgJiYgY3VycmVudCAmJiBjdXJyZW50
ICE9ICZyb290ICYmIGlzPFJlbmRlcklubGluZT4oKmN1cnJlbnQpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIG5leHQgPSBjdXJyZW50OwogICAgICAgICAgICAgICAgICAgICBlbmRPZklubGluZSA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0
YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBiaWRpTmV4dFNoYXJlZChSZW5kZXJFbGVtZW50JiBy
b290LCBSZW5kZXJPYmplY3QqIGN1CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAo
aXNJdGVyYXRvclRhcmdldChuZXh0KQotICAgICAgICAgICAgfHwgKG5leHQtPmlzUmVuZGVySW5s
aW5lKCkgJiYgKGVtcHR5SW5saW5lQmVoYXZpb3IgPT0gSW5jbHVkZUVtcHR5SW5saW5lcyB8fCBp
c0VtcHR5SW5saW5lKHRvUmVuZGVySW5saW5lKCpuZXh0KSkpKSkKKyAgICAgICAgICAgIHx8IChp
czxSZW5kZXJJbmxpbmU+KCpuZXh0KSAmJiAoZW1wdHlJbmxpbmVCZWhhdmlvciA9PSBJbmNsdWRl
RW1wdHlJbmxpbmVzIHx8IGlzRW1wdHlJbmxpbmUoZG93bmNhc3Q8UmVuZGVySW5saW5lPigqbmV4
dCkpKSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY3VycmVudCA9IG5leHQ7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggOWY0ZjBjNjVm
MTM3ODg1Y2JjYjY1MTAyZjQ1ZjVlZWE5MjA5MTAxNC4uODI0MTI4NzNhODUwNTU5N2U1NjQ4Yjll
NzY4YjRlM2U2NGFhYzg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC00NywxMiArNDcsMTUgQEAKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9ja0Zsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJCb3hSZWdpb25JbmZvLmgiCisj
aW5jbHVkZSAiUmVuZGVyQnV0dG9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQuaCIK
ICNpbmNsdWRlICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJGbGV4aWJsZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJl
bmRlckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5k
ZXJMaXN0TWFya2VyLmgiCisjaW5jbHVkZSAiUmVuZGVyTWVudUxpc3QuaCIKICNpbmNsdWRlICJS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVh
ZC5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgpAQCAtMzE5MSw3ICszMTk0LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6Z2V0Rmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiYgZmlyc3RMZXR0ZXIs
IFJlbmRlckVsZW1lbnQqJiBmaXIKICAgICAvLyBEcmlsbCBpbnRvIGlubGluZXMgbG9va2luZyBm
b3Igb3VyIGZpcnN0IHRleHQgZGVzY2VuZGFudC4KICAgICBmaXJzdExldHRlciA9IGZpcnN0TGV0
dGVyQ29udGFpbmVyLT5maXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKGZpcnN0TGV0dGVyKSB7Ci0g
ICAgICAgIGlmIChmaXJzdExldHRlci0+aXNUZXh0KCkpIHsKKyAgICAgICAgaWYgKGlzPFJlbmRl
clRleHQ+KCpmaXJzdExldHRlcikpIHsKICAgICAgICAgICAgIGlmIChmaXJzdExldHRlciA9PSBz
a2lwT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgZmlyc3RMZXR0ZXIgPSBmaXJzdExldHRlci0+
bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMyMDAsOCArMzIw
Myw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmdldEZpcnN0TGV0dGVyKFJlbmRlck9iamVjdComIGZp
cnN0TGV0dGVyLCBSZW5kZXJFbGVtZW50KiYgZmlyCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCi0gICAgICAgIFJlbmRlckVsZW1lbnQmIGN1cnJlbnQgPSB0b1JlbmRlckVsZW1lbnQo
KmZpcnN0TGV0dGVyKTsKLSAgICAgICAgaWYgKGN1cnJlbnQuaXNMaXN0TWFya2VyKCkpCisgICAg
ICAgIFJlbmRlckVsZW1lbnQmIGN1cnJlbnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqZmly
c3RMZXR0ZXIpOworICAgICAgICBpZiAoaXM8UmVuZGVyTGlzdE1hcmtlcj4oY3VycmVudCkpCiAg
ICAgICAgICAgICBmaXJzdExldHRlciA9IGN1cnJlbnQubmV4dFNpYmxpbmcoKTsKICAgICAgICAg
ZWxzZSBpZiAoY3VycmVudC5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAg
ICAgICAgICAgIGlmIChjdXJyZW50LnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVS
KSB7CkBAIC0zMjA5LDcgKzMyMTIsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRl
cihSZW5kZXJPYmplY3QqJiBmaXJzdExldHRlciwgUmVuZGVyRWxlbWVudComIGZpcgogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZmlyc3RMZXR0ZXIg
PSBjdXJyZW50Lm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5pc1Jl
cGxhY2VkKCkgfHwgY3VycmVudC5pc1JlbmRlckJ1dHRvbigpIHx8IGN1cnJlbnQuaXNNZW51TGlz
dCgpKQorICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQuaXNSZXBsYWNlZCgpIHx8IGlzPFJlbmRl
ckJ1dHRvbj4oY3VycmVudCkgfHwgaXM8UmVuZGVyTWVudUxpc3Q+KGN1cnJlbnQpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuc3R5bGUoKS5oYXNQc2V1ZG9T
dHlsZShGSVJTVF9MRVRURVIpICYmIGN1cnJlbnQuY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkp
ICB7CiAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIGxvd2VyLWxldmVsIG5vZGUgd2l0aCBmaXJz
dC1sZXR0ZXIsIHdoaWNoIHN1cGVyc2VkZXMgdGhlIGhpZ2hlci1sZXZlbCBzdHlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA1ZGJjMmQxYWZjMWM2ZThiYjVlY2Yz
ODYxN2JjYTdiYjljMmYzNmZmLi5kNmIzMTQwN2U4MThkMjViZWMwYjZiNTdkNGMxZDYxMDYyYmNj
MDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNTAxLDcgKzUw
MSw3IEBAIHZvaWQgUmVuZGVyQm94OjpsYXlvdXQoKQogICAgIExheW91dFN0YXRlTWFpbnRhaW5l
ciBzdGF0ZVB1c2hlcih2aWV3KCksICp0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBzdHlsZSgpLmlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpOwogICAgIHdoaWxlIChjaGlsZCkgewogICAgICAg
ICBpZiAoY2hpbGQtPm5lZWRzTGF5b3V0KCkpCi0gICAgICAgICAgICB0b1JlbmRlckVsZW1lbnQo
Y2hpbGQpLT5sYXlvdXQoKTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpj
aGlsZCkubGF5b3V0KCk7CiAgICAgICAgIEFTU0VSVCghY2hpbGQtPm5lZWRzTGF5b3V0KCkpOwog
ICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBhZTAyMGRlOWNjNTdjNWI2ZmVk
ZDlhNmZkZDdiMzM3MGMzYWU2Y2ZjLi40ODc4YjZmMWQyZWViNTIwNWIyNWY2ZThhNzYwNmZmZmE1
NTczZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBA
IC00OTYsOCArNDk2LDggQEAgdm9pZCBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclJlbW92ZWRGcm9t
VHJlZShSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAgICBpZiAoIWN1cnJlbnRSZW5kZXJlcikK
ICAgICAgICAgY3VycmVudFJlbmRlcmVyID0gJnJlbmRlcmVyOwogICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgIGlmIChjdXJyZW50UmVuZGVyZXItPmlzUmVuZGVyRWxlbWVudCgpKQotICAgICAg
ICAgICAgZGVzdHJveUNvdW50ZXJOb2Rlcyh0b1JlbmRlckVsZW1lbnQoKmN1cnJlbnRSZW5kZXJl
cikpOworICAgICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKmN1cnJlbnRSZW5kZXJlcikpCisg
ICAgICAgICAgICBkZXN0cm95Q291bnRlck5vZGVzKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpj
dXJyZW50UmVuZGVyZXIpKTsKICAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlciA9PSAmcmVuZGVy
ZXIpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY3VycmVudFJlbmRlcmVyID0gY3VycmVu
dFJlbmRlcmVyLT5wcmV2aW91c0luUHJlT3JkZXIoKTsKQEAgLTU1MSw4ICs1NTEsOCBAQCB2b2lk
IFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3VidHJlZUF0dGFjaGVkKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyKQogICAgIGlmIChlbGVtZW50ICYmICFlbGVtZW50LT5yZW5kZXJlcigpKQogICAgICAg
ICByZXR1cm47IC8vIE5vIG5lZWQgdG8gdXBkYXRlIGlmIHRoZSBwYXJlbnQgaXMgbm90IGF0dGFj
aGVkIHlldAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBkZXNjZW5kYW50ID0gJnJlbmRlcmVyOyBk
ZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+bmV4dEluUHJlT3JkZXIoJnJlbmRl
cmVyKSkgewotICAgICAgICBpZiAoZGVzY2VuZGFudC0+aXNSZW5kZXJFbGVtZW50KCkpCi0gICAg
ICAgICAgICB1cGRhdGVDb3VudGVycyh0b1JlbmRlckVsZW1lbnQoKmRlc2NlbmRhbnQpKTsKKyAg
ICAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+KCpkZXNjZW5kYW50KSkKKyAgICAgICAgICAgIHVw
ZGF0ZUNvdW50ZXJzKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpkZXNjZW5kYW50KSk7CiAgICAg
fQogfQogCkBAIC02MTMsMTUgKzYxMywxNSBAQCB2b2lkIHNob3dDb3VudGVyUmVuZGVyZXJUcmVl
KGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IGNoYXIqCiAKICAg
ICBBdG9taWNTdHJpbmcgaWRlbnRpZmllcihjb3VudGVyTmFtZSk7CiAgICAgZm9yIChjb25zdCBX
ZWJDb3JlOjpSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSByb290OyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+bmV4dEluUHJlT3JkZXIoKSkgewotICAgICAgICBpZiAoIWN1cnJlbnQtPmlzUmVu
ZGVyRWxlbWVudCgpKQorICAgICAgICBpZiAoIWlzPFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ+KCpj
dXJyZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IiVjIiwgKGN1cnJlbnQgPT0gcmVuZGVyZXIpID8gJyonIDogJyAnKTsKICAgICAgICAgZm9yIChj
b25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHBhcmVudCA9IGN1cnJlbnQ7IHBhcmVudCAmJiBw
YXJlbnQgIT0gcm9vdDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnQoKSkKICAgICAgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiICAgICIpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwIE46JXAg
UDolcCBQUzolcCBOUzolcCBDOiVwXG4iLAogICAgICAgICAgICAgY3VycmVudCwgY3VycmVudC0+
bm9kZSgpLCBjdXJyZW50LT5wYXJlbnQoKSwgY3VycmVudC0+cHJldmlvdXNTaWJsaW5nKCksCi0g
ICAgICAgICAgICBjdXJyZW50LT5uZXh0U2libGluZygpLCB0b1JlbmRlckVsZW1lbnQoY3VycmVu
dCktPmhhc0NvdW50ZXJOb2RlTWFwKCkgPwotICAgICAgICAgICAgY291bnRlck5hbWUgPyBXZWJD
b3JlOjpjb3VudGVyTWFwcygpLmdldCh0b1JlbmRlckVsZW1lbnQoY3VycmVudCkpLT5nZXQoaWRl
bnRpZmllcikgOiAoV2ViQ29yZTo6Q291bnRlck5vZGUqKTEgOiAoV2ViQ29yZTo6Q291bnRlck5v
ZGUqKTApOworICAgICAgICAgICAgY3VycmVudC0+bmV4dFNpYmxpbmcoKSwgZG93bmNhc3Q8V2Vi
Q29yZTo6UmVuZGVyRWxlbWVudD4oKmN1cnJlbnQpLmhhc0NvdW50ZXJOb2RlTWFwKCkgPworICAg
ICAgICAgICAgY291bnRlck5hbWUgPyBXZWJDb3JlOjpjb3VudGVyTWFwcygpLmdldChkb3duY2Fz
dDxXZWJDb3JlOjpSZW5kZXJFbGVtZW50PihjdXJyZW50KSktPmdldChpZGVudGlmaWVyKSA6IChX
ZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMCk7CiAgICAg
fQogICAgIGZmbHVzaChzdGRlcnIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCmluZGV4IDA4MjdjYWE3MGU1NGQ3ZmRiOTU1MGQ3OThjMWI0ODQ0YTY4OGVj
MGYuLjEzMDkyM2UyMmUzMWJiMWI3NjhlM2RiMTU4MDE1NWFmNzc2OGM0ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTU2OSw4ICs1NjksOCBAQCB2
b2lkIFJlbmRlckVsZW1lbnQ6Omluc2VydENoaWxkSW50ZXJuYWwoUmVuZGVyT2JqZWN0KiBuZXdD
aGlsZCwgUmVuZGVyT2JqZWN0KiBiZQogICAgIGlmICghZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgp
KSB7CiAgICAgICAgIGlmIChub3RpZnlDaGlsZHJlbiA9PSBOb3RpZnlDaGlsZHJlbikKICAgICAg
ICAgICAgIG5ld0NoaWxkLT5pbnNlcnRlZEludG9UcmVlKCk7Ci0gICAgICAgIGlmIChuZXdDaGls
ZC0+aXNSZW5kZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBSZW5kZXJDb3VudGVyOjpyZW5kZXJl
clN1YnRyZWVBdHRhY2hlZCh0b1JlbmRlckVsZW1lbnQoKm5ld0NoaWxkKSk7CisgICAgICAgIGlm
IChpczxSZW5kZXJFbGVtZW50PigqbmV3Q2hpbGQpKQorICAgICAgICAgICAgUmVuZGVyQ291bnRl
cjo6cmVuZGVyZXJTdWJ0cmVlQXR0YWNoZWQoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKm5ld0No
aWxkKSk7CiAgICAgfQogCiAgICAgbmV3Q2hpbGQtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRo
c1JlY2FsYygpOwpAQCAtNjM4LDggKzYzOCw4IEBAIFJlbmRlck9iamVjdCogUmVuZGVyRWxlbWVu
dDo6cmVtb3ZlQ2hpbGRJbnRlcm5hbChSZW5kZXJPYmplY3QmIG9sZENoaWxkLCBOb3RpZnlDCiAK
ICAgICAvLyByZW5kZXJlclJlbW92ZWRGcm9tVHJlZSB3YWxrcyB0aGUgd2hvbGUgc3VidHJlZS4g
V2UgY2FuIGltcHJvdmUgcGVyZm9ybWFuY2UKICAgICAvLyBieSBza2lwcGluZyB0aGlzIHN0ZXAg
d2hlbiBkZXN0cm95aW5nIHRoZSBlbnRpcmUgdHJlZS4KLSAgICBpZiAoIWRvY3VtZW50QmVpbmdE
ZXN0cm95ZWQoKSAmJiBvbGRDaGlsZC5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgUmVuZGVy
Q291bnRlcjo6cmVuZGVyZXJSZW1vdmVkRnJvbVRyZWUodG9SZW5kZXJFbGVtZW50KG9sZENoaWxk
KSk7CisgICAgaWYgKCFkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkgJiYgaXM8UmVuZGVyRWxlbWVu
dD4ob2xkQ2hpbGQpKQorICAgICAgICBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclJlbW92ZWRGcm9t
VHJlZShkb3duY2FzdDxSZW5kZXJFbGVtZW50PihvbGRDaGlsZCkpOwogCiAgICAgaWYgKEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAg
ICAgICAgY2FjaGUtPmNoaWxkcmVuQ2hhbmdlZCh0aGlzKTsKQEAgLTcxNCw3ICs3MTQsNyBAQCBS
ZW5kZXJMYXllciogUmVuZGVyRWxlbWVudDo6ZmluZE5leHRMYXllcihSZW5kZXJMYXllciogcGFy
ZW50TGF5ZXIsIFJlbmRlck9iamVjdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8v
IFN0ZXAgMTogSWYgb3VyIGxheWVyIGlzIGEgY2hpbGQgb2YgdGhlIGRlc2lyZWQgcGFyZW50LCB0
aGVuIHJldHVybiBvdXIgbGF5ZXIuCi0gICAgUmVuZGVyTGF5ZXIqIG91ckxheWVyID0gaGFzTGF5
ZXIoKSA/IHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKSA6IG51bGxwdHI7
CisgICAgUmVuZGVyTGF5ZXIqIG91ckxheWVyID0gaGFzTGF5ZXIoKSA/IGRvd25jYXN0PFJlbmRl
ckxheWVyTW9kZWxPYmplY3Q+KCp0aGlzKS5sYXllcigpIDogbnVsbHB0cjsKICAgICBpZiAob3Vy
TGF5ZXIgJiYgb3VyTGF5ZXItPnBhcmVudCgpID09IHBhcmVudExheWVyKQogICAgICAgICByZXR1
cm4gb3VyTGF5ZXI7CiAKQEAgLTcyMiw5ICs3MjIsOSBAQCBSZW5kZXJMYXllciogUmVuZGVyRWxl
bWVudDo6ZmluZE5leHRMYXllcihSZW5kZXJMYXllciogcGFyZW50TGF5ZXIsIFJlbmRlck9iamVj
dAogICAgIC8vIGludG8gb3VyIHNpYmxpbmdzIHRyeWluZyB0byBmaW5kIHRoZSBuZXh0IGxheWVy
IHdob3NlIHBhcmVudCBpcyB0aGUgZGVzaXJlZCBwYXJlbnQuCiAgICAgaWYgKCFvdXJMYXllciB8
fCBvdXJMYXllciA9PSBwYXJlbnRMYXllcikgewogICAgICAgICBmb3IgKFJlbmRlck9iamVjdCog
Y2hpbGQgPSBzdGFydFBvaW50ID8gc3RhcnRQb2ludC0+bmV4dFNpYmxpbmcoKSA6IGZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAg
IGlmICghY2hpbGQtPmlzUmVuZGVyRWxlbWVudCgpKQorICAgICAgICAgICAgaWYgKCFpczxSZW5k
ZXJFbGVtZW50PigqY2hpbGQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgUmVuZGVyTGF5ZXIqIG5leHRMYXllciA9IHRvUmVuZGVyRWxlbWVudChjaGlsZCktPmZpbmRO
ZXh0TGF5ZXIocGFyZW50TGF5ZXIsIG51bGxwdHIsIGZhbHNlKTsKKyAgICAgICAgICAgIFJlbmRl
ckxheWVyKiBuZXh0TGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLmZpbmRO
ZXh0TGF5ZXIocGFyZW50TGF5ZXIsIG51bGxwdHIsIGZhbHNlKTsKICAgICAgICAgICAgIGlmIChu
ZXh0TGF5ZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRMYXllcjsKICAgICAgICAgfQpA
QCAtMTEwOSw3ICsxMTA5LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpsYXlvdXQoKQogICAgIFJl
bmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKGNoaWxkKSB7CiAg
ICAgICAgIGlmIChjaGlsZC0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyRWxl
bWVudChjaGlsZCktPmxheW91dCgpOworICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKmNoaWxkKS5sYXlvdXQoKTsKICAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQo
KSk7CiAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggOWM3MTJhYWE4NDllZDhjNmM3
MDUxZWMxODM0ZTE3MTIwNDQyMmJmYS4uMzZjMzQzNTAyODU2MWY0MGMyMjdiZTZhMGRjYTAwNmUz
N2Y0NzdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0y
NDUsOCArMjQ1LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzX25vTG9uZ2VyQWZmZWN0
c1BhcmVudEJsb2NrOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlckVsZW1l
bnQsIGlzUmVuZGVyRWxlbWVudCgpKQotCiBpbmxpbmUgdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRB
bmltYXRhYmxlU3R5bGUoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgc2V0U3R5
bGUoYW5pbWF0aW9uKCkudXBkYXRlQW5pbWF0aW9ucygqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSkp
OwpAQCAtMzIzLDUxICszMjEsNTEgQEAgaW5saW5lIEVsZW1lbnQqIFJlbmRlckVsZW1lbnQ6Omdl
bmVyYXRpbmdFbGVtZW50KCkgY29uc3QKIAogaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc1Jl
bmRlckxheWVyTW9kZWxPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBpc1JlbmRlckVsZW1l
bnQoKSAmJiB0b1JlbmRlckVsZW1lbnQodGhpcyktPmlzUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCgp
OworICAgIHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVuZGVy
RWxlbWVudD4oKnRoaXMpLmlzUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCgpOwogfQogCiBpbmxpbmUg
Ym9vbCBSZW5kZXJPYmplY3Q6OmlzQm94TW9kZWxPYmplY3QoKSBjb25zdAogewotICAgIHJldHVy
biBpc1JlbmRlckVsZW1lbnQoKSAmJiB0b1JlbmRlckVsZW1lbnQodGhpcyktPmlzQm94TW9kZWxP
YmplY3QoKTsKKyAgICByZXR1cm4gaXM8UmVuZGVyRWxlbWVudD4oKnRoaXMpICYmIGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KCp0aGlzKS5pc0JveE1vZGVsT2JqZWN0KCk7CiB9CiAKIGlubGluZSBi
b29sIFJlbmRlck9iamVjdDo6aXNSZW5kZXJCbG9jaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlz
UmVuZGVyRWxlbWVudCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJCbG9jaygp
OworICAgIHJldHVybiBpczxSZW5kZXJFbGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8UmVuZGVy
RWxlbWVudD4oKnRoaXMpLmlzUmVuZGVyQmxvY2soKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVy
T2JqZWN0Ojppc1JlbmRlckJsb2NrRmxvdygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVuZGVy
RWxlbWVudCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNSZW5kZXJCbG9ja0Zsb3coKTsK
KyAgICByZXR1cm4gaXM8UmVuZGVyRWxlbWVudD4oKnRoaXMpICYmIGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KCp0aGlzKS5pc1JlbmRlckJsb2NrRmxvdygpOwogfQogCiBpbmxpbmUgYm9vbCBSZW5k
ZXJPYmplY3Q6OmlzUmVuZGVyUmVwbGFjZWQoKSBjb25zdAogewotICAgIHJldHVybiBpc1JlbmRl
ckVsZW1lbnQoKSAmJiB0b1JlbmRlckVsZW1lbnQodGhpcyktPmlzUmVuZGVyUmVwbGFjZWQoKTsK
KyAgICByZXR1cm4gaXM8UmVuZGVyRWxlbWVudD4oKnRoaXMpICYmIGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KCp0aGlzKS5pc1JlbmRlclJlcGxhY2VkKCk7CiB9CiAKIGlubGluZSBib29sIFJlbmRl
ck9iamVjdDo6aXNSZW5kZXJJbmxpbmUoKSBjb25zdAogewotICAgIHJldHVybiBpc1JlbmRlckVs
ZW1lbnQoKSAmJiB0b1JlbmRlckVsZW1lbnQodGhpcyktPmlzUmVuZGVySW5saW5lKCk7CisgICAg
cmV0dXJuIGlzPFJlbmRlckVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxSZW5kZXJFbGVtZW50
PigqdGhpcykuaXNSZW5kZXJJbmxpbmUoKTsKIH0KIAogaW5saW5lIFJlbmRlclN0eWxlJiBSZW5k
ZXJPYmplY3Q6OnN0eWxlKCkgY29uc3QKIHsKICAgICBpZiAoaXNUZXh0KCkpCiAgICAgICAgIHJl
dHVybiBtX3BhcmVudC0+c3R5bGUoKTsKLSAgICByZXR1cm4gdG9SZW5kZXJFbGVtZW50KHRoaXMp
LT5zdHlsZSgpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGhpcykuc3R5
bGUoKTsKIH0KIAogaW5saW5lIFJlbmRlclN0eWxlJiBSZW5kZXJPYmplY3Q6OmZpcnN0TGluZVN0
eWxlKCkgY29uc3QKIHsKICAgICBpZiAoaXNUZXh0KCkpCiAgICAgICAgIHJldHVybiBtX3BhcmVu
dC0+Zmlyc3RMaW5lU3R5bGUoKTsKLSAgICByZXR1cm4gdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5m
aXJzdExpbmVTdHlsZSgpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGhp
cykuZmlyc3RMaW5lU3R5bGUoKTsKIH0KIAogaW5saW5lIFJlbmRlckVsZW1lbnQqIENvbnRhaW5l
ck5vZGU6OnJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9SZW5kZXJFbGVtZW50KE5v
ZGU6OnJlbmRlcmVyKCkpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihOb2Rl
OjpyZW5kZXJlcigpKTsKIH0KIAogaW5saW5lIGludCBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oaW50
IHZhbHVlLCBjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCmluZGV4IDE3NzE3ZDgwZWJkYTNkZGNhNDcwOTM1
NjgyY2IzYmU3ZmIxZGZjYzQuLjUyNmExYzA1MmEyZjU1NjRmMDI4YTk1YmRhNmI0MTAxNDllZDYw
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcApAQCAt
MTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgZm9yIChzaXplX3Qg
ciA9IDA7IHIgPCByb3dzOyByKyspIHsKICAgICAgICAgTGF5b3V0VW5pdCB4UG9zID0gMDsKICAg
ICAgICAgZm9yIChzaXplX3QgYyA9IDA7IGMgPCBjb2xzOyBjKyspIHsKLSAgICAgICAgICAgIHRv
UmVuZGVyRWxlbWVudChjaGlsZCktPnBhaW50KHBhaW50SW5mbywgYWRqdXN0ZWRQYWludE9mZnNl
dCk7CisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLnBhaW50KHBh
aW50SW5mbywgYWRqdXN0ZWRQYWludE9mZnNldCk7CiAgICAgICAgICAgICB4UG9zICs9IG1fY29s
cy5tX3NpemVzW2NdOwogICAgICAgICAgICAgaWYgKGJvcmRlclRoaWNrbmVzcyAmJiBtX2NvbHMu
bV9hbGxvd0JvcmRlcltjICsgMV0pIHsKICAgICAgICAgICAgICAgICBwYWludENvbHVtbkJvcmRl
cihwYWludEluZm8sIHNuYXBwZWRJbnRSZWN0KExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNl
dC54KCkgKyB4UG9zLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHlQb3MsIGJvcmRlclRoaWNr
bmVzcywgaGVpZ2h0KCkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAppbmRleCA3NjljMjllZGE3ZmUyYTZiZGYzMDMzZTM2ZjgzMjk0YzIzOWMzNzNiLi5iZDg2YWVh
YTNmYzY3YTRjMDg4Y2Q3YWYzNzNlZGU2MWM4YTJmYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTYyOTcsMTMgKzYyOTcsMTMgQEAgc3RhdGljIGJvb2wg
aGFzUGFpbnRpbmdOb25MYXllckRlc2NlbmRhbnRzKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBpbnQgZGUKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRl
ckVsZW1lbnRDaGlsZCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkKTsKIAotICAgICAg
ICBpZiAocmVuZGVyRWxlbWVudENoaWxkLmlzUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCgpICYmIHRv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChyZW5kZXJFbGVtZW50Q2hpbGQpLmhhc1NlbGZQYWludGlu
Z0xheWVyKCkpCisgICAgICAgIGlmIChpczxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihyZW5kZXJF
bGVtZW50Q2hpbGQpICYmIGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KHJlbmRlckVs
ZW1lbnRDaGlsZCkuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGlmIChoYXNCb3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZChyZW5kZXJFbGVt
ZW50Q2hpbGQpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgICAgICBp
ZiAocmVuZGVyRWxlbWVudENoaWxkLmlzUmVuZGVyUmVwbGFjZWQoKSkKKyAgICAgICAgaWYgKGlz
PFJlbmRlclJlcGxhY2VkPihyZW5kZXJFbGVtZW50Q2hpbGQpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAgICAgaWYgKGhhc1BhaW50aW5nTm9uTGF5ZXJEZXNjZW5kYW50cyhyZW5k
ZXJFbGVtZW50Q2hpbGQsIGRlcHRoICsgMSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAppbmRleCA3MDE5NmU1NGQ3OWUwM2Y4
NDA4ODIyZDlkZmEyMzQ5YzY2NDVlZTVmLi5hMDJiNmQ0OWNhNzE3Y2M5MTMwNTIxNjNlMDMyM2Rk
OWViNTFiOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dGcmFnbWVudC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJG
bG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogCkBAIC0zNzEs
MTYgKzM3MiwxNiBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojpjb21wdXRlQ2hpbGRy
ZW5TdHlsZUluUmVnaW9uKFJlbmRlckVsZW1lbnQmIHJlbmRlcgogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKGNoaWxkLmlzQW5vbnltb3VzKCkgfHwgY2hpbGQuaXNJbkZsb3dSZW5k
ZXJGbG93VGhyZWFkKCkpCiAgICAgICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVnaW9uID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnJlbmRlcmVyLnN0eWxl
KCksIGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxk
LmlzVGV4dCgpKQorICAgICAgICAgICAgZWxzZSBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQpKQog
ICAgICAgICAgICAgICAgIGNoaWxkU3R5bGVJblJlZ2lvbiA9IFJlbmRlclN0eWxlOjpjbG9uZSgm
cmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2hp
bGRTdHlsZUluUmVnaW9uID0gY29tcHV0ZVN0eWxlSW5SZWdpb24odG9SZW5kZXJFbGVtZW50KGNo
aWxkKSwgcmVuZGVyZXIuc3R5bGUoKSk7CisgICAgICAgICAgICAgICAgY2hpbGRTdHlsZUluUmVn
aW9uID0gY29tcHV0ZVN0eWxlSW5SZWdpb24oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGQp
LCByZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHNldE9iamVjdFN0eWxl
SW5SZWdpb24oJmNoaWxkLCBjaGlsZFN0eWxlSW5SZWdpb24sIG9iamVjdFJlZ2lvblN0eWxlQ2Fj
aGVkKTsKIAotICAgICAgICBpZiAoY2hpbGQuaXNSZW5kZXJFbGVtZW50KCkpCi0gICAgICAgICAg
ICBjb21wdXRlQ2hpbGRyZW5TdHlsZUluUmVnaW9uKHRvUmVuZGVyRWxlbWVudChjaGlsZCkpOwor
ICAgICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oY2hpbGQpKQorICAgICAgICAgICAgY29tcHV0
ZUNoaWxkcmVuU3R5bGVJblJlZ2lvbihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZCkpOwog
ICAgIH0KIH0KIApAQCAtMzg5LDExICszOTAsMTEgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDo6c2V0T2JqZWN0U3R5bGVJblJlZ2lvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgUGFzc1IK
ICAgICBBU1NFUlQob2JqZWN0LT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkpOwogCiAgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiBvYmplY3RPcmlnaW5hbFN0eWxlID0gJm9iamVjdC0+c3R5bGUo
KTsKLSAgICBpZiAob2JqZWN0LT5pc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgdG9SZW5kZXJF
bGVtZW50KG9iamVjdCktPnNldFN0eWxlSW50ZXJuYWwoKnN0eWxlSW5SZWdpb24pOworICAgIGlm
IChpczxSZW5kZXJFbGVtZW50Pigqb2JqZWN0KSkKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxl
bWVudD4oKm9iamVjdCkuc2V0U3R5bGVJbnRlcm5hbCgqc3R5bGVJblJlZ2lvbik7CiAKLSAgICBp
ZiAob2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkgJiYgIW9iamVjdC0+aGFzQm94RGVjb3JhdGlv
bnMoKSkgewotICAgICAgICBib29sIGhhc0JveERlY29yYXRpb25zID0gb2JqZWN0LT5pc1RhYmxl
Q2VsbCgpCisgICAgaWYgKGlzPFJlbmRlckJveE1vZGVsT2JqZWN0Pigqb2JqZWN0KSAmJiAhb2Jq
ZWN0LT5oYXNCb3hEZWNvcmF0aW9ucygpKSB7CisgICAgICAgIGJvb2wgaGFzQm94RGVjb3JhdGlv
bnMgPSBpczxSZW5kZXJUYWJsZUNlbGw+KCpvYmplY3QpCiAgICAgICAgIHx8IG9iamVjdC0+c3R5
bGUoKS5oYXNCYWNrZ3JvdW5kKCkKICAgICAgICAgfHwgb2JqZWN0LT5zdHlsZSgpLmhhc0JvcmRl
cigpCiAgICAgICAgIHx8IG9iamVjdC0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkKQEAgLTQ2NSw4
ICs0NjYsOCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVnaW9uT2Jq
ZWN0c09yaWdpbmFsU3R5bGUoKQogICAgICAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IGNvbnN0
X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4ob2JqZWN0UGFpci5rZXkpOwogICAgICAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IG9iamVjdFJlZ2lvblN0eWxlID0gJm9iamVjdC0+c3R5bGUoKTsKICAgICAgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiBvYmplY3RPcmlnaW5hbFN0eWxlID0gb2JqZWN0UGFpci52YWx1
ZS5zdHlsZTsKLSAgICAgICAgaWYgKG9iamVjdC0+aXNSZW5kZXJFbGVtZW50KCkpCi0gICAgICAg
ICAgICB0b1JlbmRlckVsZW1lbnQob2JqZWN0KS0+c2V0U3R5bGVJbnRlcm5hbCgqb2JqZWN0T3Jp
Z2luYWxTdHlsZSk7CisgICAgICAgIGlmIChpczxSZW5kZXJFbGVtZW50Pigqb2JqZWN0KSkKKyAg
ICAgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpvYmplY3QpLnNldFN0eWxlSW50ZXJu
YWwoKm9iamVjdE9yaWdpbmFsU3R5bGUpOwogCiAgICAgICAgIGJvb2wgc2hvdWxkQ2FjaGVSZWdp
b25TdHlsZSA9IG9iamVjdFBhaXIudmFsdWUuY2FjaGVkOwogICAgICAgICBpZiAoIXNob3VsZENh
Y2hlUmVnaW9uU3R5bGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKaW5kZXggZWQ4OTVlNDA3ZWMzNTc5MjJmZGQ5MjY5YzNlMzI1MTcyYTY1YjVjOC4uMzg3YzFj
OTIyMTc4ZmI0ZDE5YmIyMjZjNzkyNTFiMzVjYTMwNTQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTU5Miw4ICs1OTIsOCBAQCB2b2lkIFJlbmRlck9i
amVjdDo6Y2xlYXJOZWVkc0xheW91dCgpCiAgICAgc2V0TmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxv
d0xheW91dEJpdChmYWxzZSk7CiAgICAgc2V0Tm9ybWFsQ2hpbGROZWVkc0xheW91dEJpdChmYWxz
ZSk7CiAgICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXRCaXQoZmFsc2UpOwotICAg
IGlmIChpc1JlbmRlckVsZW1lbnQoKSkKLSAgICAgICAgdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5z
ZXRBbmNlc3RvckxpbmVCb3hEaXJ0eShmYWxzZSk7CisgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+
KCp0aGlzKSkKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnRoaXMpLnNldEFuY2Vz
dG9yTGluZUJveERpcnR5KGZhbHNlKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tCbG9ja1Bv
c2l0aW9uZWRPYmplY3RzTmVlZExheW91dCgpOwogI2VuZGlmCkBAIC0yMDI1LDcgKzIwMjUsNyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKIAogICAgIHJlbW92ZUZyb21Q
YXJlbnQoKTsKIAotICAgIEFTU0VSVChkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkgfHwgIWlzUmVu
ZGVyRWxlbWVudCgpIHx8ICF2aWV3KCkuZnJhbWVWaWV3KCkuaGFzU2xvd1JlcGFpbnRPYmplY3Qo
dG9SZW5kZXJFbGVtZW50KHRoaXMpKSk7CisgICAgQVNTRVJUKGRvY3VtZW50QmVpbmdEZXN0cm95
ZWQoKSB8fCAhaXM8UmVuZGVyRWxlbWVudD4oKnRoaXMpIHx8ICF2aWV3KCkuZnJhbWVWaWV3KCku
aGFzU2xvd1JlcGFpbnRPYmplY3QoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4odGhpcykpKTsKIAog
ICAgIC8vIFRoZSByZW1vdmUoKSBjYWxsIGFib3ZlIG1heSBpbnZva2UgYXhPYmplY3RDYWNoZSgp
LT5jaGlsZHJlbkNoYW5nZWQoKSBvbiB0aGUgcGFyZW50LCB3aGljaCBtYXkgcmVxdWlyZSB0aGUg
QVggcmVuZGVyCiAgICAgLy8gb2JqZWN0IGZvciB0aGlzIHJlbmRlcmVyLiBTbyB3ZSByZW1vdmUg
dGhlIEFYIHJlbmRlciBvYmplY3Qgbm93LCBhZnRlciB0aGUgcmVuZGVyZXIgaXMgcmVtb3ZlZC4K
QEAgLTIzNTYsMTIgKzIzNTYsMTIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNvbGxlY3RBbm5vdGF0
ZWRSZWdpb25zKFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMKIHsKICAgICAv
LyBSZW5kZXJUZXh0cyBkb24ndCBoYXZlIHRoZWlyIG93biBzdHlsZSwgdGhleSBqdXN0IHVzZSB0
aGVpciBwYXJlbnQncyBzdHlsZSwKICAgICAvLyBzbyB3ZSBkb24ndCB3YW50IHRvIGluY2x1ZGUg
dGhlbS4KLSAgICBpZiAoaXNUZXh0KCkpCisgICAgaWYgKGlzPFJlbmRlclRleHQ+KCp0aGlzKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYWRkQW5ub3RhdGVkUmVnaW9ucyhyZWdpb25zKTsKLSAg
ICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+Zmlyc3RD
aGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY3Vyci0+
Y29sbGVjdEFubm90YXRlZFJlZ2lvbnMocmVnaW9ucyk7CisgICAgZm9yIChSZW5kZXJPYmplY3Qq
IGN1cnJlbnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGhpcykuZmlyc3RDaGlsZCgpOyBj
dXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY3VycmVu
dC0+Y29sbGVjdEFubm90YXRlZFJlZ2lvbnMocmVnaW9ucyk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcAppbmRleCA0Y2NmYjM0YTk4YTAxMjIx
ZjYwNTA4NGFhOTVlMzgzNzY5MmVhOGIwLi5kNDNmOTk2ZjdiZjRjNjgzNGIyZTFlZTdhMWJhZDFh
MjQxMjAxNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRU
Q3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcApA
QCAtNzcsMTAgKzc3LDEwIEBAIGJvb2wgUmVuZGVyVlRUQ3VlOjppbml0aWFsaXplTGF5b3V0UGFy
YW1ldGVycyhJbmxpbmVGbG93Qm94KiYgZmlyc3RMaW5lQm94LCBMYXlvCiAKICAgICAvLyBmaXJz
dENoaWxkKCkgcmV0dXJucyB0aGUgd3JhcHBpbmcgKGJhY2tkcm9wKSA8ZGl2Pi4gVGhlIGN1ZSBv
YmplY3QgaXMKICAgICAvLyB0aGUgPGRpdj4ncyBmaXJzdCBjaGlsZC4KLSAgICBSZW5kZXJPYmpl
Y3QqIGZpcnN0Q2hpbGQgPSB0aGlzLT5maXJzdENoaWxkKCk7Ci0gICAgUmVuZGVyRWxlbWVudCog
YmFja2Ryb3BFbGVtZW50ID0gdG9SZW5kZXJFbGVtZW50KGZpcnN0Q2hpbGQpOworICAgIFJlbmRl
ck9iamVjdCYgZmlyc3RDaGlsZCA9ICp0aGlzLT5maXJzdENoaWxkKCk7CisgICAgUmVuZGVyRWxl
bWVudCYgYmFja2Ryb3BFbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RDaGls
ZCk7CiAgICAgCi0gICAgZmlyc3RMaW5lQm94ID0gdG9SZW5kZXJJbmxpbmUoYmFja2Ryb3BFbGVt
ZW50LT5maXJzdENoaWxkKCkpLT5maXJzdExpbmVCb3goKTsKKyAgICBmaXJzdExpbmVCb3ggPSBk
b3duY2FzdDxSZW5kZXJJbmxpbmU+KCpiYWNrZHJvcEVsZW1lbnQuZmlyc3RDaGlsZCgpKS5maXJz
dExpbmVCb3goKTsKICAgICBpZiAoIWZpcnN0TGluZUJveCkKICAgICAgICAgZmlyc3RMaW5lQm94
ID0gdGhpcy0+Zmlyc3RSb290Qm94KCk7CiAKQEAgLTM0MywxMCArMzQzLDEwIEBAIHZvaWQgUmVu
ZGVyVlRUQ3VlOjpyZXBvc2l0aW9uR2VuZXJpY0N1ZSgpCiAKICAgICAvLyBmaXJzdENoaWxkKCkg
cmV0dXJucyB0aGUgd3JhcHBpbmcgKGJhY2tkcm9wKSA8ZGl2Pi4gVGhlIGN1ZSBvYmplY3QgaXMK
ICAgICAvLyB0aGUgPGRpdj4ncyBmaXJzdCBjaGlsZC4KLSAgICBSZW5kZXJPYmplY3QqIGZpcnN0
Q2hpbGQgPSB0aGlzLT5maXJzdENoaWxkKCk7Ci0gICAgUmVuZGVyRWxlbWVudCogYmFja2Ryb3BF
bGVtZW50ID0gdG9SZW5kZXJFbGVtZW50KGZpcnN0Q2hpbGQpOworICAgIFJlbmRlck9iamVjdCYg
Zmlyc3RDaGlsZCA9ICp0aGlzLT5maXJzdENoaWxkKCk7CisgICAgUmVuZGVyRWxlbWVudCYgYmFj
a2Ryb3BFbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RDaGlsZCk7CiAgICAg
Ci0gICAgSW5saW5lRmxvd0JveCogZmlyc3RMaW5lQm94ID0gdG9SZW5kZXJJbmxpbmUoYmFja2Ry
b3BFbGVtZW50LT5maXJzdENoaWxkKCkpLT5maXJzdExpbmVCb3goKTsKKyAgICBJbmxpbmVGbG93
Qm94KiBmaXJzdExpbmVCb3ggPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpiYWNrZHJvcEVsZW1l
bnQuZmlyc3RDaGlsZCgpKS5maXJzdExpbmVCb3goKTsKICAgICBpZiAoc3RhdGljX2Nhc3Q8VGV4
dFRyYWNrQ3VlR2VuZXJpYyo+KG1fY3VlKS0+dXNlRGVmYXVsdFBvc2l0aW9uKCkgJiYgZmlyc3RM
aW5lQm94KSB7CiAgICAgICAgIExheW91dFVuaXQgcGFyZW50V2lkdGggPSBjb250YWluaW5nQmxv
Y2soKS0+bG9naWNhbFdpZHRoKCk7CiAgICAgICAgIExheW91dFVuaXQgd2lkdGggPSBmaXJzdExp
bmVCb3gtPndpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCmluZGV4IGI1ZWYyN2ZlZDM2MzU4YTEzOWI1
MTEzYmVlOTQ4MGMxZmUxZDI4ZGEuLjVjZDNhNjAzOTYzMjNmMThkZWYzMDcyMzRiN2ViMjcxZWU4
YjAwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC0xMDAsOSArMTAwLDkgQEAgdm9pZCBSZW5kZXJN
YXRoTUxGcmFjdGlvbjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0
KiAvKiBiZWZvcmUKICAgICB9CiAgICAgCiAgICAgaWYgKGZpcnN0Q2hpbGQoKS0+aXNFbXB0eSgp
KQotICAgICAgICB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgpKS0+YWRkQ2hpbGQoY2hpbGQp
OworICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqZmlyc3RDaGlsZCgpKS5hZGRDaGls
ZChjaGlsZCk7CiAgICAgZWxzZQotICAgICAgICB0b1JlbmRlckVsZW1lbnQobGFzdENoaWxkKCkp
LT5hZGRDaGlsZChjaGlsZCk7CisgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpsYXN0
Q2hpbGQoKSkuYWRkQ2hpbGQoY2hpbGQpOwogICAgIAogICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE1lbmNsb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWVuY2xvc2UuY3BwCmluZGV4IGEyNmFjNDhjZTg4ODU0ZDFhZGZkMWY3YjIzZGY2YTdh
OWNhNmU4YWMuLmY1Y2FhZTc5MGNjZjMyZDZhYTg2ZmRhNDc3N2Y5NjA3NGVkMjI4NmUgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xv
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVuY2xvc2U6
OmFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlCiAg
ICAgCiAgICAgaWYgKG5ld0NoaWxkKSB7CiAgICAgICAgIGlmIChmaXJzdENoaWxkKCkgJiYgbWVu
Y2xvc2UtPmlzUmFkaWNhbCgpKQotICAgICAgICAgICAgdG9SZW5kZXJFbGVtZW50KGZpcnN0Q2hp
bGQoKSktPmFkZENoaWxkKG5ld0NoaWxkLCBiZWZvcmVDaGlsZCAmJiBiZWZvcmVDaGlsZC0+cGFy
ZW50KCkgPT0gZmlyc3RDaGlsZCgpID8gYmVmb3JlQ2hpbGQgOiBudWxscHRyKTsKKyAgICAgICAg
ICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpmaXJzdENoaWxkKCkpLmFkZENoaWxkKG5ld0No
aWxkLCBiZWZvcmVDaGlsZCAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCkgPT0gZmlyc3RDaGlsZCgp
ID8gYmVmb3JlQ2hpbGQgOiBudWxscHRyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgUmVu
ZGVyTWF0aE1MQmxvY2s6OmFkZENoaWxkKG5ld0NoaWxkLCBiZWZvcmVDaGlsZCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxP
cGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE9wZXJhdG9yLmNwcAppbmRleCBjY2FlMmI5NGM0YTJmY2VkYzUwODZhYzZhMjRhZDE0Zjk4YmFj
ODY4Li5jNTQxMzMwZThkNTlmNDhjYmIyZjVjMTg5NTlhYTM2ZGVlNTI4YjJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmNwcApAQCAtMTM3OSwxMCArMTM3OSwxMCBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9y
OjpyZWJ1aWxkVG9rZW5Db250ZW50KGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcpCiAgICAg
Ly8gV2UgZGVzdHJveSB0aGUgd3JhcHBlciBhbmQgcmVidWlsZCBpdC4KICAgICAvLyBGSVhNRTog
VXNpbmcgdGhpcyBSZW5kZXJUZXh0IG1ha2UgdGhlIHRleHQgaW5hY2Nlc3NpYmxlIHRvIHRoZSBk
dW1wQXNUZXh0L3NlbGVjdGlvbiBjb2RlIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI1NTk3KS4KICAgICBpZiAoZmlyc3RDaGlsZCgpKQotICAgICAgICB0b1JlbmRl
ckVsZW1lbnQoZmlyc3RDaGlsZCgpKS0+ZGVzdHJveSgpOworICAgICAgICBkb3duY2FzdDxSZW5k
ZXJFbGVtZW50PigqZmlyc3RDaGlsZCgpKS5kZXN0cm95KCk7CiAgICAgY3JlYXRlV3JhcHBlcklm
TmVlZGVkKCk7CiAgICAgUmVuZGVyUHRyPFJlbmRlclRleHQ+IHRleHQgPSBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJUZXh0Pihkb2N1bWVudCgpLCB0ZXh0Q29udGVudCk7Ci0gICAgdG9SZW5kZXJFbGVt
ZW50KGZpcnN0Q2hpbGQoKSktPmFkZENoaWxkKHRleHQubGVha1B0cigpKTsKKyAgICBkb3duY2Fz
dDxSZW5kZXJFbGVtZW50PigqZmlyc3RDaGlsZCgpKS5hZGRDaGlsZCh0ZXh0LmxlYWtQdHIoKSk7
CiAKICAgICAvLyBXZSB2ZXJpZnkgd2hldGhlciB0aGUgb3BlcmF0b3IgdGV4dCBjYW4gYmUgcmVw
cmVzZW50ZWQgYnkgYSBzaW5nbGUgVUNoYXIuCiAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3Qg
aGFuZGxlIHN1cnJvZ2F0ZSBwYWlycyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMjI5NikuCkBAIC0xNjU0LDcgKzE2NTQsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9w
ZXJhdG9yOjp1cGRhdGVTdHlsZSgpCiAgICAgLy8gV2UgYWRkIHNwYWNpbmcgYXJvdW5kIHRoZSBv
cGVyYXRvci4KICAgICAvLyBGSVhNRTogVGhlIHNwYWNpbmcgc2hvdWxkIGJlIGFkZGVkIHRvIHRo
ZSB3aG9sZSBlbWJlbGxpc2hlZCBvcGVyYXRvciAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNDgzMSkuCiAgICAgLy8gRklYTUU6IFRoZSBzcGFjaW5nIHNob3VsZCBv
bmx5IGJlIGFkZGVkIGluc2lkZSAocGVyaGFwcyBpbmZlcnJlZCkgbXJvdyAoaHR0cDovL3d3dy53
My5vcmcvVFIvTWF0aE1ML2NoYXB0ZXIzLmh0bWwjcHJlc20ub3BzcGFjaW5nKS4KLSAgICBjb25z
dCBhdXRvJiB3cmFwcGVyID0gdG9SZW5kZXJFbGVtZW50KGZpcnN0Q2hpbGQoKSk7CisgICAgY29u
c3QgYXV0byYgd3JhcHBlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0Q2hpbGQoKSk7
CiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KCZzdHlsZSgpLCBGTEVYKTsKICAgICBuZXdTdHlsZS5nZXQoKS5zZXRNYXJnaW5T
dGFydChMZW5ndGgobV9sZWFkaW5nU3BhY2UsIEZpeGVkKSk7CiAgICAgbmV3U3R5bGUuZ2V0KCku
c2V0TWFyZ2luRW5kKExlbmd0aChtX3RyYWlsaW5nU3BhY2UsIEZpeGVkKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAppbmRl
eCBiNjNhY2Y0MTFjY2FkMzViMzA4NjUxZTE5MDkzYzJhMDU2NzA3YmVjLi5lZDIwOWFkMWE2OGUw
NjQ3ZGY1NDk4OGU2MzA3ZmQwODEyNWEyYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKQEAgLTE1OCwxOCArMTU4LDE4
IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsCiAgICAgYXV0byBpbmRleCA9IGluZGV4V3JhcHBl
cigpOwogICAgIFJlbmRlckVsZW1lbnQqIGFjdHVhbFBhcmVudDsKICAgICBSZW5kZXJFbGVtZW50
KiBhY3R1YWxCZWZvcmVDaGlsZDsKLSAgICBpZiAoaXNSZW5kZXJNYXRoTUxTcXVhcmVSb290KCkp
IHsKKyAgICBpZiAoaXM8UmVuZGVyTWF0aE1MU3F1YXJlUm9vdD4oKnRoaXMpKSB7CiAgICAgICAg
IC8vIEZvciBzcXVhcmUgcm9vdCwgd2UgYWx3YXlzIGluc2VydCB0aGUgY2hpbGQgaW50byB0aGUg
YmFzZSB3cmFwcGVyLgogICAgICAgICBhY3R1YWxQYXJlbnQgPSBiYXNlOwogICAgICAgICBpZiAo
YmVmb3JlQ2hpbGQgJiYgYmVmb3JlQ2hpbGQtPnBhcmVudCgpID09IGJhc2UpCi0gICAgICAgICAg
ICBhY3R1YWxCZWZvcmVDaGlsZCA9IHRvUmVuZGVyRWxlbWVudChiZWZvcmVDaGlsZCk7CisgICAg
ICAgICAgICBhY3R1YWxCZWZvcmVDaGlsZCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGJlZm9y
ZUNoaWxkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYWN0dWFsQmVmb3JlQ2hpbGQgPSBu
dWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZvciBtcm9vdCwgd2UgaW5zZXJ0IHRo
ZSBjaGlsZCBpbnRvIHRoZSBwYXJlbnQgb2YgYmVmb3JlQ2hpbGQsIG9yIGF0IHRoZSBlbmQgb2Yg
dGhlIGluZGV4LiBUaGUgd3JhcHBlciBzdHJ1Y3R1cmUgaXMgcmVvcmdhbml6ZSBiZWxvdy4KICAg
ICAgICAgYWN0dWFsUGFyZW50ID0gYmVmb3JlQ2hpbGQgPyBiZWZvcmVDaGlsZC0+cGFyZW50KCkg
OiBudWxscHRyOwogICAgICAgICBpZiAoYWN0dWFsUGFyZW50ID09IGJhc2UgfHwgYWN0dWFsUGFy
ZW50ID09IGluZGV4KQotICAgICAgICAgICAgYWN0dWFsQmVmb3JlQ2hpbGQgPSB0b1JlbmRlckVs
ZW1lbnQoYmVmb3JlQ2hpbGQpOworICAgICAgICAgICAgYWN0dWFsQmVmb3JlQ2hpbGQgPSBkb3du
Y2FzdDxSZW5kZXJFbGVtZW50PihiZWZvcmVDaGlsZCk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgYWN0dWFsUGFyZW50ID0gaW5kZXg7CiAgICAgICAgICAgICBhY3R1YWxCZWZvcmVDaGls
ZCA9IG51bGxwdHI7CkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290Ojps
YXlvdXQoKQogICAgIC8vIFdlIGxheW91dCB0aGUgY2hpbGRyZW4uCiAgICAgZm9yIChSZW5kZXJP
YmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQtPm5lZWRzTGF5b3V0KCkpCi0gICAgICAgICAg
ICB0b1JlbmRlckVsZW1lbnQoY2hpbGQpLT5sYXlvdXQoKTsKKyAgICAgICAgICAgIGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkubGF5b3V0KCk7CiAgICAgfQogCiAgICAgYXV0byByYWRp
Y2FsID0gcmFkaWNhbE9wZXJhdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IGRjNGJhNTc2YWI2M2YzMGQ5
M2JhN2RlZmQ4YzI1ZTMzMDgzMWJhMDYuLjk5YTVlYjE0MDhkMzk3MjUyZjQ4MzBmODQzZTZlZDNk
ODg5YjY5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC01MSw3ICs1MSw3IEBAIFJlbmRlck1hdGhNTFRva2Vu
OjpSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0CiB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5l
d0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogewogICAgIGNyZWF0ZVdyYXBwZXJJ
Zk5lZWRlZCgpOwotICAgIHRvUmVuZGVyRWxlbWVudChmaXJzdENoaWxkKCkpLT5hZGRDaGlsZChu
ZXdDaGlsZCwgYmVmb3JlQ2hpbGQpOworICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpmaXJz
dENoaWxkKCkpLmFkZENoaWxkKG5ld0NoaWxkLCBiZWZvcmVDaGlsZCk7CiB9CiAKIHZvaWQgUmVu
ZGVyTWF0aE1MVG9rZW46OmNyZWF0ZVdyYXBwZXJJZk5lZWRlZCgpCkBAIC02OSw4ICs2OSw4IEBA
IHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZVRva2VuQ29udGVudCgpCiAgICAgICAgIC8v
IFRoZSByZW5kZXJlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgY2hpbGRyZW4gb2YgdGhlIHRva2Vu
IGVsZW1lbnQgYXJlIHdyYXBwZWQgaW5zaWRlIGFuIGFub255bW91cyBSZW5kZXJNYXRoTUxCbG9j
ay4KICAgICAgICAgLy8gV2hlbiBvbmUgb2YgdGhlc2UgcmVuZGVyZXJzIGlzIGEgUmVuZGVyRWxl
bWVudCwgd2UgaGFuZGxlIHRoZSBSZW5kZXJNYXRoTUxUb2tlbiBkaWZmZXJlbnRseS4KICAgICAg
ICAgLy8gRm9yIHNvbWUgcmVhc29uLCBhbiBhZGRpdGlvbmFsIGFub255bW91cyBSZW5kZXJCbG9j
ayBpcyBjcmVhdGVkIGFzIGEgY2hpbGQgb2YgdGhlIFJlbmRlck1hdGhNTFRva2VuIGFuZCB0aGUg
cmVuZGVyZXJzIGFyZSBhY3R1YWxseSBpbnNlcnRlZCBpbnRvIHRoYXQgUmVuZGVyQmxvY2sgc28g
d2UgbmVlZCB0byBkaWcgZG93biBvbmUgYWRkaXRpb25hbCBsZXZlbCBoZXJlLgotICAgICAgICBj
b25zdCBhdXRvJiB3cmFwcGVyID0gdG9SZW5kZXJFbGVtZW50KGZpcnN0Q2hpbGQoKSk7Ci0gICAg
ICAgIGlmIChjb25zdCBhdXRvJiBibG9jayA9IHRvUmVuZGVyRWxlbWVudCh3cmFwcGVyLT5maXJz
dENoaWxkKCkpKQorICAgICAgICBjb25zdCBhdXRvJiB3cmFwcGVyID0gZG93bmNhc3Q8UmVuZGVy
RWxlbWVudD4oZmlyc3RDaGlsZCgpKTsKKyAgICAgICAgaWYgKGNvbnN0IGF1dG8mIGJsb2NrID0g
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4od3JhcHBlci0+Zmlyc3RDaGlsZCgpKSkKICAgICAgICAg
ICAgIG1fY29udGFpbnNFbGVtZW50ID0gY2hpbGRyZW5PZlR5cGU8UmVuZGVyRWxlbWVudD4oKmJs
b2NrKS5maXJzdCgpOwogICAgICAgICB1cGRhdGVTdHlsZSgpOwogICAgIH0KQEAgLTgxLDcgKzgx
LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlU3R5bGUoKQogewogICAgIGNvbnN0
IGF1dG8mIHRva2VuRWxlbWVudCA9IGVsZW1lbnQoKTsKIAotICAgIGNvbnN0IGF1dG8mIHdyYXBw
ZXIgPSB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgpKTsKKyAgICBjb25zdCBhdXRvJiB3cmFw
cGVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RDaGlsZCgpKTsKICAgICBhdXRvIG5l
d1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0
eWxlKCksIEZMRVgpOwogCiAgICAgaWYgKHRva2VuRWxlbWVudC5oYXNUYWdOYW1lKE1hdGhNTE5h
bWVzOjptaVRhZykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAppbmRleCA1NGFkZTVmZTY2MzE4N2E0NTRi
YmE1ZmNiNDY0NDM5YTAyZWFmNzY2Li44MWRiN2I1ZTJjZWFiZjI1ZjVjMmMxZTMwZjY1MWQ2Mjcz
NTA5NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFVuZGVyT3Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgUmVuZGVy
TWF0aE1MVW5kZXJPdmVyOjpsYXlvdXQoKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgdG9SZW5kZXJFbGVtZW50KGNoaWxkKS0+bGF5b3V0KCk7CisgICAg
ICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLmxheW91dCgpOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gU2tpcHBpbmcgdGhlIGVtYmVsbGlzaGVkIG9wIGRvZXMgbm90IHdv
cmsgZm9yIG5lc3RlZCBzdHJ1Y3R1cmVzIGxpa2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKaW5kZXggNzViN2MwYzcyYmQ3NjMxODg3
MGE2N2E5ZmIxNTY1NWRjZDk0N2ZjOS4uMTExZGM1NzcxYTdkOWU1Zjg5MWFjOTk2MjZmZGY2Mzdj
ODc4YmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZS5jcHAKQEAgLTE4NSwxNyArMTg1LDE3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihSZW5kZXJPYmpl
Y3QmCiAgICAgaWYgKG5lZWRzTGF5b3V0ICYmICFvYmplY3QuZG9jdW1lbnRCZWluZ0Rlc3Ryb3ll
ZCgpKQogICAgICAgICBvYmplY3Quc2V0TmVlZHNMYXlvdXQoKTsKIAotICAgIGlmIChvYmplY3Qu
aXNSZW5kZXJFbGVtZW50KCkpCi0gICAgICAgIHJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVE
ZXBlbmRlbmNpZXModG9SZW5kZXJFbGVtZW50KG9iamVjdCksIG5lZWRzTGF5b3V0KTsKKyAgICBp
ZiAoaXM8UmVuZGVyRWxlbWVudD4ob2JqZWN0KSkKKyAgICAgICAgcmVtb3ZlRnJvbUNhY2hlQW5k
SW52YWxpZGF0ZURlcGVuZGVuY2llcyhkb3duY2FzdDxSZW5kZXJFbGVtZW50PihvYmplY3QpLCBu
ZWVkc0xheW91dCk7CiAKICAgICAvLyBJbnZhbGlkYXRlIHJlc291cmNlcyBpbiBhbmNlc3RvciBj
aGFpbiwgaWYgbmVlZGVkLgogICAgIGF1dG8gY3VycmVudCA9IG9iamVjdC5wYXJlbnQoKTsKICAg
ICB3aGlsZSAoY3VycmVudCkgewogICAgICAgICByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRl
RGVwZW5kZW5jaWVzKCpjdXJyZW50LCBuZWVkc0xheW91dCk7CiAKLSAgICAgICAgaWYgKGN1cnJl
bnQtPmlzU1ZHUmVzb3VyY2VDb250YWluZXIoKSkgeworICAgICAgICBpZiAoaXM8UmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXI+KCpjdXJyZW50KSkgewogICAgICAgICAgICAgLy8gVGhpcyB3aWxs
IHByb2Nlc3MgdGhlIHJlc3Qgb2YgdGhlIGFuY2VzdG9ycy4KLSAgICAgICAgICAgIHRvUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIoKmN1cnJlbnQpLnJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUo
KTsKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyPigqY3Vy
cmVudCkucmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5jcHAKaW5kZXggOGU3NTkwNmM1NTE2N2JmYzJiZDA5ZTM2ZTJkY2RmNGM3NTI2ZDM5Mi4uNTEw
ZDEwMDk4MDM5ODFhNmMzNDBhMzZkNTM0NDcwYTYzNDU0NTEyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgiCiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50c0hpdFJ1
bGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVySXRlcmF0b3IuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdJ
bmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCkBAIC0xMjcsMTUg
KzEyOCwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZmluZFByZXZpb3VzQW5kTmV4dEF0dHJpYnV0
ZXMoUmVuZGVyRWxlbWVudCogc3RhcnQsIFJlbmRlclNWRwogICAgIEFTU0VSVChsb2NhdGVFbGVt
ZW50KTsKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGl0ZXJhdGl2ZS4KICAgICBmb3IgKFJlbmRl
ck9iamVjdCogY2hpbGQgPSBzdGFydC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGQtPmlzU1ZHSW5saW5lVGV4dCgp
KSB7Ci0gICAgICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0ID0gdG9SZW5kZXJTVkdJ
bmxpbmVUZXh0KGNoaWxkKTsKLSAgICAgICAgICAgIGlmIChsb2NhdGVFbGVtZW50ICE9IHRleHQp
IHsKKyAgICAgICAgaWYgKGlzPFJlbmRlclNWR0lubGluZVRleHQ+KCpjaGlsZCkpIHsKKyAgICAg
ICAgICAgIFJlbmRlclNWR0lubGluZVRleHQmIHRleHQgPSBkb3duY2FzdDxSZW5kZXJTVkdJbmxp
bmVUZXh0PigqY2hpbGQpOworICAgICAgICAgICAgaWYgKGxvY2F0ZUVsZW1lbnQgIT0gJnRleHQp
IHsKICAgICAgICAgICAgICAgICBpZiAoc3RvcEFmdGVyTmV4dCkgewotICAgICAgICAgICAgICAg
ICAgICBuZXh0ID0gdGV4dC0+bGF5b3V0QXR0cmlidXRlcygpOworICAgICAgICAgICAgICAgICAg
ICBuZXh0ID0gdGV4dC5sYXlvdXRBdHRyaWJ1dGVzKCk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHByZXZpb3Vz
ID0gdGV4dC0+bGF5b3V0QXR0cmlidXRlcygpOworICAgICAgICAgICAgICAgIHByZXZpb3VzID0g
dGV4dC5sYXlvdXRBdHRyaWJ1dGVzKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAKQEAgLTE0MywxMCArMTQ0LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBmaW5k
UHJldmlvdXNBbmROZXh0QXR0cmlidXRlcyhSZW5kZXJFbGVtZW50KiBzdGFydCwgUmVuZGVyU1ZH
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghY2hpbGQt
PmlzU1ZHSW5saW5lKCkpCisgICAgICAgIGlmICghaXM8UmVuZGVyU1ZHSW5saW5lPigqY2hpbGQp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGZpbmRQcmV2aW91c0FuZE5l
eHRBdHRyaWJ1dGVzKHRvUmVuZGVyRWxlbWVudChjaGlsZCksIGxvY2F0ZUVsZW1lbnQsIHN0b3BB
ZnRlck5leHQsIHByZXZpb3VzLCBuZXh0KSkKKyAgICAgICAgaWYgKGZpbmRQcmV2aW91c0FuZE5l
eHRBdHRyaWJ1dGVzKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkKSwgbG9jYXRlRWxlbWVu
dCwgc3RvcEFmdGVyTmV4dCwgcHJldmlvdXMsIG5leHQpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC0yOTYsOCArMjk3LDggQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpzdWJ0
cmVlU3R5bGVEaWRDaGFuZ2UoUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCkKICAgICAvLyBub3Ig
dGhlIGxheW91dCBhdHRyaWJ1dGVzIGNhY2hlZCBpbiB0aGUgbGVhZiAjdGV4dCByZW5kZXJlcnMu
CiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENhY2hlUHVyZ2VQcmV2ZW50ZXI7CiAg
ICAgZm9yIChSZW5kZXJPYmplY3QqIGRlc2NlbmRhbnQgPSB0ZXh0OyBkZXNjZW5kYW50OyBkZXNj
ZW5kYW50ID0gZGVzY2VuZGFudC0+bmV4dEluUHJlT3JkZXIodGV4dCkpIHsKLSAgICAgICAgaWYg
KGRlc2NlbmRhbnQtPmlzU1ZHSW5saW5lVGV4dCgpKQotICAgICAgICAgICAgbV9sYXlvdXRBdHRy
aWJ1dGVzQnVpbGRlci5yZWJ1aWxkTWV0cmljc0ZvclRleHRSZW5kZXJlcih0b1JlbmRlclNWR0lu
bGluZVRleHQoZGVzY2VuZGFudCkpOworICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHSW5saW5lVGV4
dD4oKmRlc2NlbmRhbnQpKQorICAgICAgICAgICAgbV9sYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5y
ZWJ1aWxkTWV0cmljc0ZvclRleHRSZW5kZXJlcihkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0
PigqZGVzY2VuZGFudCkpOwogICAgIH0KIH0KIApAQCAtMzM4LDcgKzMzOSw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCB1cGRhdGVGb250SW5BbGxEZXNjZW5kYW50cyhSZW5kZXJPYmplY3QqIHN0YXJ0
LCBTVkdUZXh0TGF5b3V0CiAgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQmIHRleHQgPSB0b1Jl
bmRlclNWR0lubGluZVRleHQoKmRlc2NlbmRhbnQpOwogICAgICAgICB0ZXh0LnVwZGF0ZVNjYWxl
ZEZvbnQoKTsKICAgICAgICAgaWYgKGJ1aWxkZXIpCi0gICAgICAgICAgICBidWlsZGVyLT5yZWJ1
aWxkTWV0cmljc0ZvclRleHRSZW5kZXJlcigmdGV4dCk7CisgICAgICAgICAgICBidWlsZGVyLT5y
ZWJ1aWxkTWV0cmljc0ZvclRleHRSZW5kZXJlcih0ZXh0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDNj
NDgzYTM4NGQ2MDFjNGM5NDU1YmY2YTQwYzFjNjA1ZmU1OWJmYjEuLjQxNWQ3NTc3ZmNlOWEyZDBj
ZTkzMWViZGY3NzE2NDlkNjJhNDk1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtMjQ2LDIxICsyNDYsMjIgQEAgdm9pZCBT
VkdSZW5kZXJTdXBwb3J0OjpsYXlvdXRDaGlsZHJlbihSZW5kZXJFbGVtZW50JiBzdGFydCwgYm9v
bCBzZWxmTmVlZHNMYXlvdXQKIAogICAgICAgICBpZiAodHJhbnNmb3JtQ2hhbmdlZCkgewogICAg
ICAgICAgICAgLy8gSWYgdGhlIHRyYW5zZm9ybSBjaGFuZ2VkIHdlIG5lZWQgdG8gdXBkYXRlIHRo
ZSB0ZXh0IG1ldHJpY3MgKG5vdGU6IHRoaXMgYWxzbyBoYXBwZW5zIGZvciBsYXlvdXRTaXplQ2hh
bmdlZD10cnVlKS4KLSAgICAgICAgICAgIGlmIChjaGlsZC0+aXNTVkdUZXh0KCkpCi0gICAgICAg
ICAgICAgICAgdG9SZW5kZXJTVkdUZXh0KGNoaWxkKS0+c2V0TmVlZHNUZXh0TWV0cmljc1VwZGF0
ZSgpOworICAgICAgICAgICAgaWYgKGlzPFJlbmRlclNWR1RleHQ+KCpjaGlsZCkpCisgICAgICAg
ICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4oKmNoaWxkKS5zZXROZWVkc1RleHRNZXRy
aWNzVXBkYXRlKCk7CiAgICAgICAgICAgICBuZWVkc0xheW91dCA9IHRydWU7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobGF5b3V0U2l6ZUNoYW5nZWQpIHsKICAgICAgICAgICAgIC8vIFdoZW4g
c2VsZk5lZWRzTGF5b3V0IGlzIGZhbHNlIGFuZCB0aGUgbGF5b3V0IHNpemUgY2hhbmdlZCwgd2Ug
aGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoaXMgY2hpbGQgdXNlcyByZWxhdGl2ZSBsZW5ndGhzCi0g
ICAgICAgICAgICBpZiAoU1ZHRWxlbWVudCogZWxlbWVudCA9IGNoaWxkLT5ub2RlKCktPmlzU1ZH
RWxlbWVudCgpID8gZG93bmNhc3Q8U1ZHRWxlbWVudD4oY2hpbGQtPm5vZGUoKSkgOiBudWxscHRy
KSB7CisgICAgICAgICAgICBpZiAoU1ZHRWxlbWVudCogZWxlbWVudCA9IGlzPFNWR0VsZW1lbnQ+
KCpjaGlsZC0+bm9kZSgpKSA/IGRvd25jYXN0PFNWR0VsZW1lbnQ+KGNoaWxkLT5ub2RlKCkpIDog
bnVsbHB0cikgewogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNSZWxhdGl2ZUxlbmd0
aHMoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBsYXlvdXQgc2l6ZSBjaGFu
Z2VkIGFuZCB3aGVuIHVzaW5nIHJlbGF0aXZlIHZhbHVlcyB0ZWxsIHRoZSBSZW5kZXJTVkdTaGFw
ZSB0byB1cGRhdGUgaXRzIHNoYXBlIG9iamVjdAotICAgICAgICAgICAgICAgICAgICBpZiAoY2hp
bGQtPmlzU1ZHU2hhcGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvUmVuZGVyU1ZHU2hh
cGUoY2hpbGQpLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGNoaWxkLT5pc1NWR1RleHQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9S
ZW5kZXJTVkdUZXh0KGNoaWxkKS0+c2V0TmVlZHNUZXh0TWV0cmljc1VwZGF0ZSgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgdG9SZW5kZXJTVkdUZXh0KGNoaWxkKS0+c2V0TmVlZHNQb3NpdGlv
bmluZ1ZhbHVlc1VwZGF0ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyU1ZH
U2hhcGU+KCpjaGlsZCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJT
VkdTaGFwZT4oKmNoaWxkKS5zZXROZWVkc1NoYXBlVXBkYXRlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGlzPFJlbmRlclNWR1RleHQ+KCpjaGlsZCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFJlbmRlclNWR1RleHQmIHN2Z1RleHQgPSBkb3duY2FzdDxSZW5kZXJTVkdUZXh0
PigqY2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgc3ZnVGV4dC5zZXROZWVkc1RleHRN
ZXRyaWNzVXBkYXRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdmdUZXh0LnNldE5lZWRz
UG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgICAgIG5lZWRzTGF5b3V0ID0gdHJ1ZTsKQEAgLTI3MiwxNSArMjczLDE1IEBA
IHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bGF5b3V0Q2hpbGRyZW4oUmVuZGVyRWxlbWVudCYgc3Rh
cnQsIGJvb2wgc2VsZk5lZWRzTGF5b3V0CiAgICAgICAgICAgICBjaGlsZC0+c2V0TmVlZHNMYXlv
dXQoTWFya09ubHlUaGlzKTsKIAogICAgICAgICBpZiAoY2hpbGQtPm5lZWRzTGF5b3V0KCkpIHsK
LSAgICAgICAgICAgIHRvUmVuZGVyRWxlbWVudChjaGlsZCktPmxheW91dCgpOworICAgICAgICAg
ICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5sYXlvdXQoKTsKICAgICAgICAgICAg
IC8vIFJlbmRlcmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHJlcGFpbnRpbmcgdGhlbXNlbHZlcyB3
aGVuIGNoYW5naW5nLCBleGNlcHQKICAgICAgICAgICAgIC8vIGZvciB0aGUgaW5pdGlhbCBwYWlu
dCB0byBhdm9pZCBwb3RlbnRpYWwgZG91YmxlLXBhaW50aW5nIGNhdXNlZCBieSBub24tc2Vuc2lj
YWwgIm9sZCIgYm91bmRzLgogICAgICAgICAgICAgLy8gV2UgY291bGQgaGFuZGxlIHRoaXMgaW4g
dGhlIGluZGl2aWR1YWwgb2JqZWN0cywgYnV0IGZvciBub3cgaXQncyBlYXNpZXIgdG8gaGF2ZQog
ICAgICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lcnMgY2FsbCByZXBhaW50KCkuICAoUmVuZGVy
QmxvY2s6OmxheW91dCogaGFzIHNpbWlsYXIgbG9naWMuKQogICAgICAgICAgICAgaWYgKCFjaGls
ZEV2ZXJIYWRMYXlvdXQpCiAgICAgICAgICAgICAgICAgY2hpbGQtPnJlcGFpbnQoKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChsYXlvdXRTaXplQ2hhbmdlZCAmJiBjaGlsZC0+aXNSZW5kZXJFbGVtZW50
KCkpCi0gICAgICAgICAgICBlbGVtZW50c1RoYXREaWROb3RSZWNlaXZlTGF5b3V0LmFkZCh0b1Jl
bmRlckVsZW1lbnQoY2hpbGQpKTsKKyAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRTaXplQ2hhbmdl
ZCAmJiBpczxSZW5kZXJFbGVtZW50PigqY2hpbGQpKQorICAgICAgICAgICAgZWxlbWVudHNUaGF0
RGlkTm90UmVjZWl2ZUxheW91dC5hZGQoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGQpKTsK
IAogICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCmluZGV4
IGE5NTBjNDBjZGY4ZTRjODY5YWVkOWExZjAwZWEwOWMzNTQ3ZjcyMmIuLjg1NTZlY2RlMjYyZjIx
MjQ4NWRlMjJjZWVhODk0YWQ3OTFlYWRiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9p
ZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2FzQWRkZWRUb1RyZWUoUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlcikKIAogICAgIGlmICghcmVuZGVyZXJDYW5IYXZlUmVzb3VyY2VzKHJlbmRlcmVyKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlckVsZW1lbnQmIGVsZW1lbnRSZW5kZXJlciA9IHRv
UmVuZGVyRWxlbWVudChyZW5kZXJlcik7CisgICAgUmVuZGVyRWxlbWVudCYgZWxlbWVudFJlbmRl
cmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpOwogICAgIHJlc291cmNlc0Nh
Y2hlRnJvbVJlbmRlcmVyKGVsZW1lbnRSZW5kZXJlcikuYWRkUmVzb3VyY2VzRnJvbVJlbmRlcmVy
KGVsZW1lbnRSZW5kZXJlciwgZWxlbWVudFJlbmRlcmVyLnN0eWxlKCkpOwogfQogCkBAIC0xNDgs
NyArMTQ4LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2lsbEJlUmVtb3ZlZEZy
b21UcmVlKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiAKICAgICBpZiAoIXJlbmRlcmVyQ2FuSGF2
ZVJlc291cmNlcyhyZW5kZXJlcikpCiAgICAgICAgIHJldHVybjsKLSAgICBSZW5kZXJFbGVtZW50
JiBlbGVtZW50UmVuZGVyZXIgPSB0b1JlbmRlckVsZW1lbnQocmVuZGVyZXIpOworICAgIFJlbmRl
ckVsZW1lbnQmIGVsZW1lbnRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRl
cmVyKTsKICAgICByZXNvdXJjZXNDYWNoZUZyb21SZW5kZXJlcihlbGVtZW50UmVuZGVyZXIpLnJl
bW92ZVJlc291cmNlc0Zyb21SZW5kZXJlcihlbGVtZW50UmVuZGVyZXIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzQnVpbGRlci5jcHAKaW5kZXggNDY3YzIxNTgxYjIxZDUxNTA1ZjcyYjU2NmFhNDVh
YmM0OGM0ZWU5YS4uMTZlMjdjYzFmODE3OWJmZWI5NzFlMmU0MDc2ZWU4ZDQ5ODhhMTdhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmli
dXRlc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yVGV4dFJl
bmRlcmVyKFJlbmRlcgogICAgICAgICBidWlsZENoYXJhY3RlckRhdGFNYXAoKnRleHRSb290KTsK
ICAgICB9CiAKLSAgICBtX21ldHJpY3NCdWlsZGVyLmJ1aWxkTWV0cmljc0FuZExheW91dEF0dHJp
YnV0ZXModGV4dFJvb3QsICZ0ZXh0LCBtX2NoYXJhY3RlckRhdGFNYXApOworICAgIG1fbWV0cmlj
c0J1aWxkZXIuYnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRlcygqdGV4dFJvb3QsICZ0ZXh0
LCBtX2NoYXJhY3RlckRhdGFNYXApOwogfQogCiBib29sIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
QnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZShSZW5kZXJTVkdUZXh0
JiB0ZXh0Um9vdCkKQEAgLTY4LDEzICs2OCwxMiBAQCBib29sIFNWR1RleHRMYXlvdXRBdHRyaWJ1
dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZShSZW5kZXJTVgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBidWlsZENoYXJhY3RlckRhdGFNYXAodGV4dFJv
b3QpOwotICAgIG1fbWV0cmljc0J1aWxkZXIuYnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRl
cygmdGV4dFJvb3QsIG51bGxwdHIsIG1fY2hhcmFjdGVyRGF0YU1hcCk7CisgICAgbV9tZXRyaWNz
QnVpbGRlci5idWlsZE1ldHJpY3NBbmRMYXlvdXRBdHRyaWJ1dGVzKHRleHRSb290LCBudWxscHRy
LCBtX2NoYXJhY3RlckRhdGFNYXApOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6cmVidWlsZE1ldHJpY3NGb3JUZXh0UmVuZGVyZXIo
UmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCkKK3ZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNC
dWlsZGVyOjpyZWJ1aWxkTWV0cmljc0ZvclRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0
JiB0ZXh0KQogewotICAgIEFTU0VSVCh0ZXh0KTsKICAgICBtX21ldHJpY3NCdWlsZGVyLm1lYXN1
cmVUZXh0UmVuZGVyZXIodGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oCmluZGV4
IDYxYWZjMWNmNTM3NjhmNjY2Y2Y0OWZiMWRiZmE5YjcxMWZlZGJmNzkuLmRmMzlhZjhhMTFhYjA5
MmE0Njk0YWExMzQyMjRmYTNkZjc3ZDcxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuaApA
QCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBidWlsZExheW91dEF0dHJpYnV0ZXNG
b3JGb3JTdWJ0cmVlKFJlbmRlclNWR1RleHQmKTsKICAgICB2b2lkIGJ1aWxkTGF5b3V0QXR0cmli
dXRlc0ZvclRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0Jik7CiAKLSAgICB2b2lkIHJl
YnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqKTsKKyAgICB2
b2lkIHJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQmKTsK
IAogICAgIC8vIEludm9rZWQgd2hlbmV2ZXIgdGhlIHVuZGVybHlpbmcgRE9NIHRyZWUgY2hhbmdl
cywgc28gdGhhdCBtX3RleHRQb3NpdGlvbnMgaXMgcmVidWlsZC4KICAgICB2b2lkIGNsZWFyVGV4
dFBvc2l0aW9uaW5nRWxlbWVudHMoKSB7IG1fdGV4dFBvc2l0aW9ucy5jbGVhcigpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRl
ci5jcHAKaW5kZXggZTU0MjcyZjQyMmQzYWM0MDg3NTliNmFkNWQ2YjZhNDQ3ZTMyM2U5NC4uODE4
OTZkOWRjNzEyMzdiNTZhZmViNmNkYjFjOTdlMjQ1NDg2YTE2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApAQCAt
MjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR1RleHRNZXRy
aWNzQnVpbGRlci5oIgogCisjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lLmgiCiAjaW5jbHVkZSAi
UmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQuaCIKICNpbmNs
dWRlICJTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oIgpAQCAtOTEsMTYgKzkyLDE2IEBAIHZv
aWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjphZHZhbmNlQ29tcGxleFRleHQoKQogICAgIG1fdG90
YWxXaWR0aCA9IG1fY29tcGxleFN0YXJ0VG9DdXJyZW50TWV0cmljcy53aWR0aCgpOwogfQogCi12
b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRS
ZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0KQordm9pZCBTVkdUZXh0TWV0cmljc0J1
aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5s
aW5lVGV4dCYgdGV4dCkKIHsKLSAgICBtX3RleHQgPSB0ZXh0OworICAgIG1fdGV4dCA9ICZ0ZXh0
OwogICAgIG1fdGV4dFBvc2l0aW9uID0gMDsKICAgICBtX2N1cnJlbnRNZXRyaWNzID0gU1ZHVGV4
dE1ldHJpY3MoKTsKICAgICBtX2NvbXBsZXhTdGFydFRvQ3VycmVudE1ldHJpY3MgPSBTVkdUZXh0
TWV0cmljcygpOwogICAgIG1fdG90YWxXaWR0aCA9IDA7CiAKLSAgICBjb25zdCBGb250JiBzY2Fs
ZWRGb250ID0gdGV4dC0+c2NhbGVkRm9udCgpOwotICAgIG1fcnVuID0gU1ZHVGV4dE1ldHJpY3M6
OmNvbnN0cnVjdFRleHRSdW4oKnRleHQpOworICAgIGNvbnN0IEZvbnQmIHNjYWxlZEZvbnQgPSB0
ZXh0LnNjYWxlZEZvbnQoKTsKKyAgICBtX3J1biA9IFNWR1RleHRNZXRyaWNzOjpjb25zdHJ1Y3RU
ZXh0UnVuKHRleHQpOwogICAgIG1faXNDb21wbGV4VGV4dCA9IHNjYWxlZEZvbnQuY29kZVBhdGgo
bV9ydW4pID09IEZvbnQ6OkNvbXBsZXg7CiAKICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQpAQCAt
MTI2LDExICsxMjcsOSBAQCBzdHJ1Y3QgTWVhc3VyZVRleHREYXRhIHsKICAgICB1bnNpZ25lZCBz
a2lwcGVkQ2hhcmFjdGVyczsKIH07CiAKLXZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFz
dXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqIHRleHQsIE1lYXN1cmVUZXh0RGF0
YSogZGF0YSkKK3ZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVy
KFJlbmRlclNWR0lubGluZVRleHQmIHRleHQsIE1lYXN1cmVUZXh0RGF0YSogZGF0YSkKIHsKLSAg
ICBBU1NFUlQodGV4dCk7Ci0KLSAgICBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyogYXR0cmlidXRl
cyA9IHRleHQtPmxheW91dEF0dHJpYnV0ZXMoKTsKKyAgICBTVkdUZXh0TGF5b3V0QXR0cmlidXRl
cyogYXR0cmlidXRlcyA9IHRleHQubGF5b3V0QXR0cmlidXRlcygpOwogICAgIFZlY3RvcjxTVkdU
ZXh0TWV0cmljcz4qIHRleHRNZXRyaWNzVmFsdWVzID0gJmF0dHJpYnV0ZXMtPnRleHRNZXRyaWNz
VmFsdWVzKCk7CiAgICAgaWYgKGRhdGEtPnByb2Nlc3NSZW5kZXJlcikgewogICAgICAgICBpZiAo
ZGF0YS0+YWxsQ2hhcmFjdGVyc01hcCkKQEAgLTE0MCw3ICsxMzksNyBAQCB2b2lkIFNWR1RleHRN
ZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0KiB0
ZXh0LCBNZWFzdQogICAgIH0KIAogICAgIGluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVu
ZGVyZXIodGV4dCk7Ci0gICAgYm9vbCBwcmVzZXJ2ZVdoaXRlU3BhY2UgPSB0ZXh0LT5zdHlsZSgp
LndoaXRlU3BhY2UoKSA9PSBQUkU7CisgICAgYm9vbCBwcmVzZXJ2ZVdoaXRlU3BhY2UgPSB0ZXh0
LnN0eWxlKCkud2hpdGVTcGFjZSgpID09IFBSRTsKICAgICBpbnQgc3Vycm9nYXRlUGFpckNoYXJh
Y3RlcnMgPSAwOwogCiAgICAgd2hpbGUgKGFkdmFuY2UoKSkgewpAQCAtMTc4LDkgKzE3Nyw5IEBA
IHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNW
R0lubGluZVRleHQqIHRleHQsIE1lYXN1CiB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6d2Fs
a1RyZWUoUmVuZGVyRWxlbWVudCYgc3RhcnQsIFJlbmRlclNWR0lubGluZVRleHQqIHN0b3BBdExl
YWYsIE1lYXN1cmVUZXh0RGF0YSogZGF0YSkKIHsKICAgICBmb3IgKGF1dG8gY2hpbGQgPSBzdGFy
dC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0g
ICAgICAgIGlmIChjaGlsZC0+aXNTVkdJbmxpbmVUZXh0KCkpIHsKLSAgICAgICAgICAgIFJlbmRl
clNWR0lubGluZVRleHQqIHRleHQgPSB0b1JlbmRlclNWR0lubGluZVRleHQoY2hpbGQpOwotICAg
ICAgICAgICAgaWYgKHN0b3BBdExlYWYgJiYgc3RvcEF0TGVhZiAhPSB0ZXh0KSB7CisgICAgICAg
IGlmIChpczxSZW5kZXJTVkdJbmxpbmVUZXh0PigqY2hpbGQpKSB7CisgICAgICAgICAgICBSZW5k
ZXJTVkdJbmxpbmVUZXh0JiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmNo
aWxkKTsKKyAgICAgICAgICAgIGlmIChzdG9wQXRMZWFmICYmIHN0b3BBdExlYWYgIT0gJnRleHQp
IHsKICAgICAgICAgICAgICAgICBkYXRhLT5wcm9jZXNzUmVuZGVyZXIgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICBtZWFzdXJlVGV4dFJlbmRlcmVyKHRleHQsIGRhdGEpOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMTk0LDMwICsxOTMsMjcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1
aWxkZXI6OndhbGtUcmVlKFJlbmRlckVsZW1lbnQmIHN0YXJ0LCBSZW5kZXJTVkdJbmxpbmVUZXh0
KgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWNoaWxk
LT5pc1NWR0lubGluZSgpKQorICAgICAgICBpZiAoIWlzPFJlbmRlclNWR0lubGluZT4oKmNoaWxk
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHdhbGtUcmVlKHRvUmVuZGVyRWxl
bWVudCgqY2hpbGQpLCBzdG9wQXRMZWFmLCBkYXRhKTsKKyAgICAgICAgd2Fsa1RyZWUoZG93bmNh
c3Q8UmVuZGVyU1ZHSW5saW5lPigqY2hpbGQpLCBzdG9wQXRMZWFmLCBkYXRhKTsKICAgICB9CiB9
CiAKLXZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRl
clNWR0lubGluZVRleHQqIHRleHQpCit2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6bWVhc3Vy
ZVRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0KQogewotICAgIEFTU0VSVCh0
ZXh0KTsKLQotICAgIGF1dG8qIHRleHRSb290ID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVy
U1ZHVGV4dEFuY2VzdG9yKCp0ZXh0KTsKKyAgICBhdXRvKiB0ZXh0Um9vdCA9IFJlbmRlclNWR1Rl
eHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcih0ZXh0KTsKICAgICBpZiAoIXRleHRSb290
KQogICAgICAgICByZXR1cm47CiAKLSAgICBNZWFzdXJlVGV4dERhdGEgZGF0YSgwKTsKLSAgICB3
YWxrVHJlZSgqdGV4dFJvb3QsIHRleHQsICZkYXRhKTsKKyAgICBNZWFzdXJlVGV4dERhdGEgZGF0
YShudWxscHRyKTsKKyAgICB3YWxrVHJlZSgqdGV4dFJvb3QsICZ0ZXh0LCAmZGF0YSk7CiB9CiAK
LXZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpidWlsZE1ldHJpY3NBbmRMYXlvdXRBdHRyaWJ1
dGVzKFJlbmRlclNWR1RleHQqIHRleHRSb290LCBSZW5kZXJTVkdJbmxpbmVUZXh0KiBzdG9wQXRM
ZWFmLCBTVkdDaGFyYWN0ZXJEYXRhTWFwJiBhbGxDaGFyYWN0ZXJzTWFwKQordm9pZCBTVkdUZXh0
TWV0cmljc0J1aWxkZXI6OmJ1aWxkTWV0cmljc0FuZExheW91dEF0dHJpYnV0ZXMoUmVuZGVyU1ZH
VGV4dCYgdGV4dFJvb3QsIFJlbmRlclNWR0lubGluZVRleHQqIHN0b3BBdExlYWYsIFNWR0NoYXJh
Y3RlckRhdGFNYXAmIGFsbENoYXJhY3RlcnNNYXApCiB7Ci0gICAgQVNTRVJUKHRleHRSb290KTsK
ICAgICBNZWFzdXJlVGV4dERhdGEgZGF0YSgmYWxsQ2hhcmFjdGVyc01hcCk7Ci0gICAgd2Fsa1Ry
ZWUoKnRleHRSb290LCBzdG9wQXRMZWFmLCAmZGF0YSk7CisgICAgd2Fsa1RyZWUodGV4dFJvb3Qs
IHN0b3BBdExlYWYsICZkYXRhKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmgKaW5kZXggZTljMmU0NGE3NTdkMjFm
YTBmNjljMzUzMTM2MmJkM2Q5MmViN2IxNC4uMDhlMDdlZWIxOTJiM2IxMDQ1ZWEyMTQzYzdlYjM2
ODZiNDViZjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljc0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzQnVpbGRlci5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFNWR1RleHRNZXRy
aWNzQnVpbGRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1ZHVGV4dE1ldHJpY3NCdWls
ZGVyKTsKIHB1YmxpYzoKICAgICBTVkdUZXh0TWV0cmljc0J1aWxkZXIoKTsKLSAgICB2b2lkIG1l
YXN1cmVUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCopOwotICAgIHZvaWQgYnVpbGRN
ZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRlcyhSZW5kZXJTVkdUZXh0KiwgUmVuZGVyU1ZHSW5saW5l
VGV4dCogc3RvcEF0TGVhZiwgU1ZHQ2hhcmFjdGVyRGF0YU1hcCYgYWxsQ2hhcmFjdGVyc01hcCk7
CisgICAgdm9pZCBtZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQmKTsKKyAg
ICB2b2lkIGJ1aWxkTWV0cmljc0FuZExheW91dEF0dHJpYnV0ZXMoUmVuZGVyU1ZHVGV4dCYsIFJl
bmRlclNWR0lubGluZVRleHQqIHN0b3BBdExlYWYsIFNWR0NoYXJhY3RlckRhdGFNYXAmIGFsbENo
YXJhY3RlcnNNYXApOwogCiBwcml2YXRlOgogICAgIGJvb2wgYWR2YW5jZSgpOwpAQCAtNDQsOSAr
NDQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWR2YW5jZUNvbXBsZXhUZXh0KCk7CiAgICAgYm9v
bCBjdXJyZW50Q2hhcmFjdGVyU3RhcnRzU3Vycm9nYXRlUGFpcigpIGNvbnN0OwogCi0gICAgdm9p
ZCBpbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRl
eHQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVu
ZGVyU1ZHSW5saW5lVGV4dCYpOwogICAgIHZvaWQgd2Fsa1RyZWUoUmVuZGVyRWxlbWVudCYsIFJl
bmRlclNWR0lubGluZVRleHQqIHN0b3BBdExlYWYsIE1lYXN1cmVUZXh0RGF0YSopOwotICAgIHZv
aWQgbWVhc3VyZVRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbmVUZXh0KiwgTWVhc3VyZVRleHRE
YXRhKik7CisgICAgdm9pZCBtZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQm
LCBNZWFzdXJlVGV4dERhdGEqKTsKIAogICAgIFJlbmRlclNWR0lubGluZVRleHQqIG1fdGV4dDsK
ICAgICBUZXh0UnVuIG1fcnVuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0MjE4YWY0OTUz
NjQ0MTUwNzlkYjgzYTJlYWY2Yzg5YjBlMTNkNzJlLi4xZmNjNDA5OWI4MDQzOTFmOTRkYzE4M2U2
ZTNhZDRmMGYzNjYzMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjQ2LDE0ICsyNDYs
MTQgQEAgY2xhc3MgRHVtbXlHbHlwaFRvUGF0aFRyYW5zbGF0b3IgZmluYWwgOiBwdWJsaWMgR2x5
cGhUb1BhdGhUcmFuc2xhdG9yIHsKIAogc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9QYXRoVHJhbnNs
YXRvcj4gU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUdseXBoVG9QYXRoVHJhbnNs
YXRvcihjb25zdCBTaW1wbGVGb250RGF0YSYgZm9udERhdGEsIGNvbnN0IFRleHRSdW4qIHRleHRS
dW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIFNWR0ZvbnRFbGVtZW50
KiBmb250RWxlbWVudCA9IDA7Ci0gICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmb250RmFjZUVsZW1l
bnQgPSAwOworICAgIFNWR0ZvbnRFbGVtZW50KiBmb250RWxlbWVudCA9IG51bGxwdHI7CisgICAg
U1ZHRm9udEZhY2VFbGVtZW50KiBmb250RmFjZUVsZW1lbnQgPSBudWxscHRyOwogCiAgICAgY29u
c3QgU1ZHRm9udERhdGEqIHN2Z0ZvbnREYXRhID0gc3ZnRm9udEFuZEZvbnRGYWNlRWxlbWVudEZv
ckZvbnREYXRhKCZmb250RGF0YSwgZm9udEZhY2VFbGVtZW50LCBmb250RWxlbWVudCk7CiAgICAg
aWYgKCFmb250RWxlbWVudCB8fCAhZm9udEZhY2VFbGVtZW50KQogICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxEdW1teUdseXBoVG9QYXRoVHJhbnNsYXRvcj4oKTsKIAotICAgIGF1dG8m
IGVsZW1lbnRSZW5kZXJlciA9IHJlbmRlcmVyKCkuaXNSZW5kZXJFbGVtZW50KCkgPyB0b1JlbmRl
ckVsZW1lbnQocmVuZGVyZXIoKSkgOiAqcmVuZGVyZXIoKS5wYXJlbnQoKTsKKyAgICBhdXRvJiBl
bGVtZW50UmVuZGVyZXIgPSBpczxSZW5kZXJFbGVtZW50PihyZW5kZXJlcigpKSA/IGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKCkpIDogKnJlbmRlcmVyKCkucGFyZW50KCk7CiAgICAg
UmVuZGVyU3R5bGUmIHN0eWxlID0gZWxlbWVudFJlbmRlcmVyLnN0eWxlKCk7CiAgICAgYm9vbCBp
c1ZlcnRpY2FsVGV4dCA9IHN0eWxlLnN2Z1N0eWxlKCkuaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKCk7
CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0Ojpk
cmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgUwogICAgICAgICBh
Y3RpdmVQYWludGluZ1Jlc291cmNlID0gc29saWRQYWludGluZ1Jlc291cmNlOwogICAgIH0KIAot
ICAgIGF1dG8mIGVsZW1lbnRSZW5kZXJlciA9IHJlbmRlcmVyKCkuaXNSZW5kZXJFbGVtZW50KCkg
PyB0b1JlbmRlckVsZW1lbnQocmVuZGVyZXIoKSkgOiAqcmVuZGVyZXIoKS5wYXJlbnQoKTsKKyAg
ICBhdXRvJiBlbGVtZW50UmVuZGVyZXIgPSBpczxSZW5kZXJFbGVtZW50PihyZW5kZXJlcigpKSA/
IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKCkpIDogKnJlbmRlcmVyKCkucGFyZW50
KCk7CiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0gZWxlbWVudFJlbmRlcmVyLnN0eWxlKCk7CiAK
ICAgICBBU1NFUlQoYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSk7CkBAIC0yODIsOSArMjgyLDkgQEAg
dm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFMKICAgICAgICAgUGF0aCBnbHlwaFBhdGggPSB0cmFuc2xh
dG9yLT5wYXRoKCk7CiAgICAgICAgIGlmIChhY3RpdmVQYWludGluZ1Jlc291cmNlLT5hcHBseVJl
c291cmNlKGVsZW1lbnRSZW5kZXJlciwgc3R5bGUsIGNvbnRleHQsIHJlc291cmNlTW9kZSkpIHsK
ICAgICAgICAgICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQtPnN0cm9rZVRoaWNr
bmVzcygpOwotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkuaXNTVkdJbmxpbmVUZXh0KCkpCi0g
ICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVz
cyAqIHRvUmVuZGVyU1ZHSW5saW5lVGV4dChyZW5kZXJlcigpKS5zY2FsaW5nRmFjdG9yKCkpOwot
ICAgICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+cG9zdEFwcGx5UmVzb3VyY2UoZWxl
bWVudFJlbmRlcmVyLCBjb250ZXh0LCByZXNvdXJjZU1vZGUsICZnbHlwaFBhdGgsIDApOworICAg
ICAgICAgICAgaWYgKGlzPFJlbmRlclNWR0lubGluZVRleHQ+KHJlbmRlcmVyKCkpKQorICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MgKiBk
b3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0PihyZW5kZXJlcigpKS5zY2FsaW5nRmFjdG9yKCkp
OworICAgICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+cG9zdEFwcGx5UmVzb3VyY2Uo
ZWxlbWVudFJlbmRlcmVyLCBjb250ZXh0LCByZXNvdXJjZU1vZGUsICZnbHlwaFBhdGgsIG51bGxw
dHIpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNr
bmVzcyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTQsOSArMzE0LDkgQEAgR2x5cGhEYXRhIFNW
R1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9u
dCYgZm9udCwgV2kKICAgICAvLyBDaGFyYWN0ZXJzIGVuY2xvc2VkIGJ5IGFuIDxhbHRHbHlwaD4g
ZWxlbWVudCwgbWF5IG5vdCBiZSByZWdpc3RlcmVkIGluIHRoZSBHbHlwaFBhZ2UuCiAgICAgY29u
c3QgU2ltcGxlRm9udERhdGEqIG9yaWdpbmFsRm9udERhdGEgPSBnbHlwaERhdGEuZm9udERhdGE7
CiAgICAgaWYgKGdseXBoRGF0YS5mb250RGF0YSAmJiAhZ2x5cGhEYXRhLmZvbnREYXRhLT5pc1NW
R0ZvbnQoKSkgewotICAgICAgICBhdXRvJiBlbGVtZW50UmVuZGVyZXIgPSByZW5kZXJlcigpLmlz
UmVuZGVyRWxlbWVudCgpID8gdG9SZW5kZXJFbGVtZW50KHJlbmRlcmVyKCkpIDogKnJlbmRlcmVy
KCkucGFyZW50KCk7CisgICAgICAgIGF1dG8mIGVsZW1lbnRSZW5kZXJlciA9IGlzPFJlbmRlckVs
ZW1lbnQ+KHJlbmRlcmVyKCkpID8gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIoKSkg
OiAqcmVuZGVyZXIoKS5wYXJlbnQoKTsKICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudFJlbmRl
cmVyRWxlbWVudCA9IGVsZW1lbnRSZW5kZXJlci5lbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGlm
IChwYXJlbnRSZW5kZXJlckVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFsdEdseXBoVGFn
KSkKKyAgICAgICAgICAgIGlmIChpczxTVkdBbHRHbHlwaEVsZW1lbnQ+KCpwYXJlbnRSZW5kZXJl
ckVsZW1lbnQpKQogICAgICAgICAgICAgICAgIGdseXBoRGF0YS5mb250RGF0YSA9IHByaW1hcnlG
b250OwogICAgICAgICB9CiAgICAgfQpAQCAtMzI2LDggKzMyNiw4IEBAIEdseXBoRGF0YSBTVkdU
ZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnQm
IGZvbnQsIFdpCiAgICAgICAgIGlmICghZm9udERhdGEtPmlzU1ZHRm9udCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGdseXBoRGF0YTsKIAotICAgICAgICBTVkdGb250RWxlbWVudCogZm9udEVsZW1l
bnQgPSAwOwotICAgICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZvbnRGYWNlRWxlbWVudCA9IDA7
CisgICAgICAgIFNWR0ZvbnRFbGVtZW50KiBmb250RWxlbWVudCA9IG51bGxwdHI7CisgICAgICAg
IFNWR0ZvbnRGYWNlRWxlbWVudCogZm9udEZhY2VFbGVtZW50ID0gbnVsbHB0cjsKIAogICAgICAg
ICBjb25zdCBTVkdGb250RGF0YSogc3ZnRm9udERhdGEgPSBzdmdGb250QW5kRm9udEZhY2VFbGVt
ZW50Rm9yRm9udERhdGEoZm9udERhdGEsIGZvbnRGYWNlRWxlbWVudCwgZm9udEVsZW1lbnQpOwog
ICAgICAgICBpZiAoIWZvbnRFbGVtZW50IHx8ICFmb250RmFjZUVsZW1lbnQpCkBAIC0zNDcsNyAr
MzQ3LDcgQEAgR2x5cGhEYXRhIFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpnbHlwaERhdGFG
b3JDaGFyYWN0ZXIoY29uc3QgRm9udCYgZm9udCwgV2kKICAgICAvLyBObyBzdWl0YWJsZSBnbHlw
aCBmb3VuZCB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgcmVxdWlybWVudHMgKHNhbWUgbGFu
Z3VhZ2UsIGFyYWJpYy1mb3JtLCBvcmllbnRhdGlvbiBldGMuKQogICAgIC8vIEV2ZW4gdGhvdWdo
IG91ciBHbHlwaFBhZ2UgY29udGFpbnMgYW4gZW50cnkgZm9yIGVnLiBnbHlwaCAiYSIsIGl0J3Mg
bm90IGNvbXBhdGlibGUuIFNvIHdlIGhhdmUgdG8gdGVtcG9yYXJpbHkKICAgICAvLyByZW1vdmUg
dGhlIGdseXBoIGRhdGEgaW5mb3JtYXRpb24gZnJvbSB0aGUgR2x5cGhQYWdlLCBhbmQgcmV0cnkg
dGhlIGxvb2t1cCwgd2hpY2ggaGFuZGxlcyBmb250IGZhbGxiYWNrcyBjb3JyZWN0bHkuCi0gICAg
cGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgMCwgMCk7CisgICAgcGFn
ZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgMCwgbnVsbHB0cik7CiAKICAg
ICAvLyBBc3N1cmUgdGhhdCB0aGUgZm9udCBmYWxsYmFjayBnbHlwaCBzZWxlY3Rpb24gd29ya2Vk
LCBha2EuIHRoZSBmYWxsYmFja0dseXBoRGF0YSBmb250IGRhdGEgaXMgbm90IHRoZSBzYW1lIGFz
IGJlZm9yZS4KICAgICBHbHlwaERhdGEgZmFsbGJhY2tHbHlwaERhdGEgPSBmb250LmdseXBoRGF0
YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIG1pcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRh
LmNwcAppbmRleCA2M2JmNTRkNDlmYTVkNzY4ZDMzMDIyODcxOWM3YTBkNzAwMDU0MWVlLi4wYjhm
ZDAzOGZkYzFjOTAzMjZhYmFiOGQ1MTc3ZTg5ZjFiYWExNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RGF0YS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBib29sIFNWR0ZvbnREYXRhOjphcHBseVNW
R0dseXBoU2VsZWN0aW9uKFdpZHRoSXRlcmF0b3ImIGl0ZXJhdG9yLCBHbHlwaERhdGEmIGdseQog
ICAgIFNWR0ZvbnRFbGVtZW50KiBhc3NvY2lhdGVkRm9udEVsZW1lbnQgPSBzdmdGb250RmFjZUVs
ZW1lbnQtPmFzc29jaWF0ZWRGb250RWxlbWVudCgpOwogICAgIEFTU0VSVChhc3NvY2lhdGVkRm9u
dEVsZW1lbnQpOwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSAwOworICAgIFJl
bmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoVGV4dFJ1bjo6UmVu
ZGVyaW5nQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCA9IHJ1bi5yZW5kZXJpbmdDb250ZXh0KCkp
CiAgICAgICAgIHJlbmRlck9iamVjdCA9ICZzdGF0aWNfY2FzdDxTVkdUZXh0UnVuUmVuZGVyaW5n
Q29udGV4dCo+KHJlbmRlcmluZ0NvbnRleHQpLT5yZW5kZXJlcigpOwogCkBAIC0xNTIsMTEgKzE1
MiwxMCBAQCBib29sIFNWR0ZvbnREYXRhOjphcHBseVNWR0dseXBoU2VsZWN0aW9uKFdpZHRoSXRl
cmF0b3ImIGl0ZXJhdG9yLCBHbHlwaERhdGEmIGdseQogICAgIFZlY3RvcjxTdHJpbmc+IGFsdEds
eXBoTmFtZXM7CiAKICAgICBpZiAocmVuZGVyT2JqZWN0KSB7Ci0gICAgICAgIFJlbmRlckVsZW1l
bnQqIHBhcmVudFJlbmRlcmVyID0gcmVuZGVyT2JqZWN0LT5pc1JlbmRlckVsZW1lbnQoKSA/IHRv
UmVuZGVyRWxlbWVudChyZW5kZXJPYmplY3QpIDogcmVuZGVyT2JqZWN0LT5wYXJlbnQoKTsKLSAg
ICAgICAgQVNTRVJUKHBhcmVudFJlbmRlcmVyKTsKKyAgICAgICAgUmVuZGVyRWxlbWVudCYgcGFy
ZW50UmVuZGVyZXIgPSBpczxSZW5kZXJFbGVtZW50PigqcmVuZGVyT2JqZWN0KSA/IGRvd25jYXN0
PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJPYmplY3QpIDogKnJlbmRlck9iamVjdC0+cGFyZW50KCk7
CiAKLSAgICAgICAgaXNWZXJ0aWNhbFRleHQgPSBwYXJlbnRSZW5kZXJlci0+c3R5bGUoKS5zdmdT
dHlsZSgpLmlzVmVydGljYWxXcml0aW5nTW9kZSgpOwotICAgICAgICBpZiAoRWxlbWVudCogcGFy
ZW50UmVuZGVyZXJFbGVtZW50ID0gcGFyZW50UmVuZGVyZXItPmVsZW1lbnQoKSkgeworICAgICAg
ICBpc1ZlcnRpY2FsVGV4dCA9IHBhcmVudFJlbmRlcmVyLnN0eWxlKCkuc3ZnU3R5bGUoKS5pc1Zl
cnRpY2FsV3JpdGluZ01vZGUoKTsKKyAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudFJlbmRlcmVy
RWxlbWVudCA9IHBhcmVudFJlbmRlcmVyLmVsZW1lbnQoKSkgewogICAgICAgICAgICAgbGFuZ3Vh
Z2UgPSBwYXJlbnRSZW5kZXJlckVsZW1lbnQtPmdldEF0dHJpYnV0ZShYTUxOYW1lczo6bGFuZ0F0
dHIpOwogCiAgICAgICAgICAgICBpZiAoaXM8U1ZHQWx0R2x5cGhFbGVtZW50PigqcGFyZW50UmVu
ZGVyZXJFbGVtZW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDY4ZWQ3MDViNTVjMWI1
OTUxOGExNzgxZTY0NzhmMjBmNjI3NGRjY2UuLjVkMjFmZDBjNmE2NzViMzVjNTAzYTYwNzExMDBh
ZDcyNDM3ZDdiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTExODEsNyArMTE4MSw3IEBA
IEhSRVNVTFQgV2ViRnJhbWU6OnBhdXNlQW5pbWF0aW9uKEJTVFIgYW5pbWF0aW9uTmFtZSwgSURP
TU5vZGUqIG5vZGUsIGRvdWJsZSBzZWNvCiAgICAgaWYgKCFkb21Ob2RlKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgKmFuaW1hdGlvbldhc1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9u
KCkucGF1c2VBbmltYXRpb25BdFRpbWUodG9SZW5kZXJFbGVtZW50KGRvbU5vZGUtPm5vZGUoKS0+
cmVuZGVyZXIoKSksIFN0cmluZyhhbmltYXRpb25OYW1lLCBTeXNTdHJpbmdMZW4oYW5pbWF0aW9u
TmFtZSkpLCBzZWNvbmRzRnJvbU5vdyk7CisgICAgKmFuaW1hdGlvbldhc1J1bm5pbmcgPSBmcmFt
ZS0+YW5pbWF0aW9uKCkucGF1c2VBbmltYXRpb25BdFRpbWUoZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oZG9tTm9kZS0+bm9kZSgpLT5yZW5kZXJlcigpKSwgU3RyaW5nKGFuaW1hdGlvbk5hbWUsIFN5
c1N0cmluZ0xlbihhbmltYXRpb25OYW1lKSksIHNlY29uZHNGcm9tTm93KTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApAQCAtMTIwMCw3ICsxMjAwLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6cGF1c2VU
cmFuc2l0aW9uKEJTVFIgcHJvcGVydHlOYW1lLCBJRE9NTm9kZSogbm9kZSwgZG91YmxlIHNlY28K
ICAgICBpZiAoIWRvbU5vZGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAqdHJhbnNp
dGlvbldhc1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VUcmFuc2l0aW9uQXRUaW1l
KHRvUmVuZGVyRWxlbWVudChkb21Ob2RlLT5ub2RlKCktPnJlbmRlcmVyKCkpLCBTdHJpbmcocHJv
cGVydHlOYW1lLCBTeXNTdHJpbmdMZW4ocHJvcGVydHlOYW1lKSksIHNlY29uZHNGcm9tTm93KTsK
KyAgICAqdHJhbnNpdGlvbldhc1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VUcmFu
c2l0aW9uQXRUaW1lKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGRvbU5vZGUtPm5vZGUoKS0+cmVu
ZGVyZXIoKSksIFN0cmluZyhwcm9wZXJ0eU5hbWUsIFN5c1N0cmluZ0xlbihwcm9wZXJ0eU5hbWUp
KSwgc2Vjb25kc0Zyb21Ob3cpOwogICAgIHJldHVybiBTX09LOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>